From 7e09fad64e455d9d409d31c8f3235a3085cf4bf3 Mon Sep 17 00:00:00 2001 From: andyeisenberg <125768484+andyeisenberg@users.noreply.github.com> Date: Sun, 28 Dec 2025 17:55:29 +0000 Subject: [PATCH] Latest build deployed. --- .mapping.json | 1 + .nojekyll | 0 _static/._009b407a9881be10.ttf | Bin 0 -> 163 bytes _static/._009b407a9881be10.ttf.gz | Bin 0 -> 163 bytes _static/._115.648ff4b5650f4c7c.js | Bin 0 -> 163 bytes _static/._115.648ff4b5650f4c7c.js.gz | Bin 0 -> 163 bytes _static/._115.648ff4b5650f4c7c.js.map | Bin 0 -> 163 bytes _static/._115.648ff4b5650f4c7c.js.map.gz | Bin 0 -> 163 bytes _static/._126.a976f62852f30b51.js | Bin 0 -> 163 bytes _static/._126.a976f62852f30b51.js.gz | Bin 0 -> 163 bytes _static/._126.a976f62852f30b51.js.map | Bin 0 -> 163 bytes _static/._126.a976f62852f30b51.js.map.gz | Bin 0 -> 163 bytes _static/._128.5bed857c54ac4e8b.js | Bin 0 -> 163 bytes _static/._128.5bed857c54ac4e8b.js.gz | Bin 0 -> 163 bytes _static/._128.5bed857c54ac4e8b.js.map | Bin 0 -> 163 bytes _static/._128.5bed857c54ac4e8b.js.map.gz | Bin 0 -> 163 bytes _static/._131.ee437eeefadd750d.js | Bin 0 -> 163 bytes _static/._131.ee437eeefadd750d.js.gz | Bin 0 -> 163 bytes _static/._131.ee437eeefadd750d.js.map | Bin 0 -> 163 bytes _static/._131.ee437eeefadd750d.js.map.gz | Bin 0 -> 163 bytes _static/._168.fe63e6dec2d06468.js | Bin 0 -> 163 bytes _static/._168.fe63e6dec2d06468.js.gz | Bin 0 -> 163 bytes _static/._168.fe63e6dec2d06468.js.map | Bin 0 -> 163 bytes _static/._168.fe63e6dec2d06468.js.map.gz | Bin 0 -> 163 bytes _static/._186.be52164d57f4b7e4.js | Bin 0 -> 163 bytes _static/._186.be52164d57f4b7e4.js.gz | Bin 0 -> 163 bytes _static/._186.be52164d57f4b7e4.js.map | Bin 0 -> 163 bytes _static/._186.be52164d57f4b7e4.js.map.gz | Bin 0 -> 163 bytes _static/._249.7ec032cf0b3ede9a.js | Bin 0 -> 163 bytes _static/._249.7ec032cf0b3ede9a.js.LICENSE.txt | Bin 0 -> 163 bytes .../._249.7ec032cf0b3ede9a.js.LICENSE.txt.gz | Bin 0 -> 163 bytes _static/._249.7ec032cf0b3ede9a.js.gz | Bin 0 -> 163 bytes _static/._249.7ec032cf0b3ede9a.js.map | Bin 0 -> 163 bytes _static/._249.7ec032cf0b3ede9a.js.map.gz | Bin 0 -> 163 bytes _static/._28.bb005543f41af5fb.js | Bin 0 -> 163 bytes _static/._28.bb005543f41af5fb.js.LICENSE.txt | Bin 0 -> 163 bytes _static/._28.bb005543f41af5fb.js.gz | Bin 0 -> 163 bytes _static/._28.bb005543f41af5fb.js.map | Bin 0 -> 163 bytes _static/._28.bb005543f41af5fb.js.map.gz | Bin 0 -> 163 bytes _static/._296.37eb8c05642d8ef9.js | Bin 0 -> 163 bytes _static/._296.37eb8c05642d8ef9.js.gz | Bin 0 -> 163 bytes _static/._296.37eb8c05642d8ef9.js.map | Bin 0 -> 163 bytes _static/._296.37eb8c05642d8ef9.js.map.gz | Bin 0 -> 163 bytes _static/._340.c525bd899366c5f9.js | Bin 0 -> 163 bytes _static/._340.c525bd899366c5f9.js.gz | Bin 0 -> 163 bytes _static/._340.c525bd899366c5f9.js.map | Bin 0 -> 163 bytes _static/._340.c525bd899366c5f9.js.map.gz | Bin 0 -> 163 bytes _static/._357.a6fa55aea0c38a63.js | Bin 0 -> 163 bytes _static/._357.a6fa55aea0c38a63.js.LICENSE.txt | Bin 0 -> 163 bytes .../._357.a6fa55aea0c38a63.js.LICENSE.txt.gz | Bin 0 -> 163 bytes _static/._357.a6fa55aea0c38a63.js.gz | Bin 0 -> 163 bytes _static/._357.a6fa55aea0c38a63.js.map | Bin 0 -> 163 bytes _static/._357.a6fa55aea0c38a63.js.map.gz | Bin 0 -> 163 bytes _static/._39.dc45aaf5abca8027.js | Bin 0 -> 163 bytes _static/._39.dc45aaf5abca8027.js.LICENSE.txt | Bin 0 -> 163 bytes _static/._39.dc45aaf5abca8027.js.gz | Bin 0 -> 163 bytes _static/._39.dc45aaf5abca8027.js.map | Bin 0 -> 163 bytes _static/._39.dc45aaf5abca8027.js.map.gz | Bin 0 -> 163 bytes _static/._412.5965503d81003593.js | Bin 0 -> 163 bytes _static/._412.5965503d81003593.js.gz | Bin 0 -> 163 bytes _static/._412.5965503d81003593.js.map | Bin 0 -> 163 bytes _static/._412.5965503d81003593.js.map.gz | Bin 0 -> 163 bytes _static/._420.8dae5ad08a4e52ad.js | Bin 0 -> 163 bytes _static/._420.8dae5ad08a4e52ad.js.LICENSE.txt | Bin 0 -> 163 bytes _static/._420.8dae5ad08a4e52ad.js.gz | Bin 0 -> 163 bytes _static/._420.8dae5ad08a4e52ad.js.map | Bin 0 -> 163 bytes _static/._420.8dae5ad08a4e52ad.js.map.gz | Bin 0 -> 163 bytes _static/._442.f48919e396acaa18.js | Bin 0 -> 163 bytes _static/._442.f48919e396acaa18.js.gz | Bin 0 -> 163 bytes _static/._442.f48919e396acaa18.js.map | Bin 0 -> 163 bytes _static/._442.f48919e396acaa18.js.map.gz | Bin 0 -> 163 bytes _static/._460.bae9001422d7a484.js | Bin 0 -> 163 bytes _static/._460.bae9001422d7a484.js.gz | Bin 0 -> 163 bytes _static/._460.bae9001422d7a484.js.map | Bin 0 -> 163 bytes _static/._460.bae9001422d7a484.js.map.gz | Bin 0 -> 163 bytes _static/._466.4e1a3fb09520281a.js | Bin 0 -> 163 bytes _static/._466.4e1a3fb09520281a.js.gz | Bin 0 -> 163 bytes _static/._466.4e1a3fb09520281a.js.map | Bin 0 -> 163 bytes _static/._466.4e1a3fb09520281a.js.map.gz | Bin 0 -> 163 bytes _static/._486.78d96ffc5c65634b.js | Bin 0 -> 163 bytes _static/._486.78d96ffc5c65634b.js.gz | Bin 0 -> 163 bytes _static/._486.78d96ffc5c65634b.js.map | Bin 0 -> 163 bytes _static/._486.78d96ffc5c65634b.js.map.gz | Bin 0 -> 163 bytes _static/._4ba85deaf3670942.woff | Bin 0 -> 163 bytes _static/._529.115400ffea03835d.js | Bin 0 -> 163 bytes _static/._529.115400ffea03835d.js.gz | Bin 0 -> 163 bytes _static/._529.115400ffea03835d.js.map | Bin 0 -> 163 bytes _static/._529.115400ffea03835d.js.map.gz | Bin 0 -> 163 bytes _static/._566.0e38ac5442cc38c2.js | Bin 0 -> 163 bytes _static/._566.0e38ac5442cc38c2.js.gz | Bin 0 -> 163 bytes _static/._566.0e38ac5442cc38c2.js.map | Bin 0 -> 163 bytes _static/._566.0e38ac5442cc38c2.js.map.gz | Bin 0 -> 163 bytes _static/._576.f923ab1e9910a1be.js | Bin 0 -> 163 bytes _static/._576.f923ab1e9910a1be.js.gz | Bin 0 -> 163 bytes _static/._576.f923ab1e9910a1be.js.map | Bin 0 -> 163 bytes _static/._576.f923ab1e9910a1be.js.map.gz | Bin 0 -> 163 bytes _static/._580.f387819ad2e14f0a.js | Bin 0 -> 163 bytes _static/._580.f387819ad2e14f0a.js.gz | Bin 0 -> 163 bytes _static/._580.f387819ad2e14f0a.js.map | Bin 0 -> 163 bytes _static/._580.f387819ad2e14f0a.js.map.gz | Bin 0 -> 163 bytes _static/._616.89f80a32caf41aef.js | Bin 0 -> 163 bytes _static/._616.89f80a32caf41aef.js.gz | Bin 0 -> 163 bytes _static/._616.89f80a32caf41aef.js.map | Bin 0 -> 163 bytes _static/._616.89f80a32caf41aef.js.map.gz | Bin 0 -> 163 bytes _static/._625.120987bdd5293ae3.js | Bin 0 -> 163 bytes _static/._625.120987bdd5293ae3.js.LICENSE.txt | Bin 0 -> 163 bytes .../._625.120987bdd5293ae3.js.LICENSE.txt.gz | Bin 0 -> 163 bytes _static/._625.120987bdd5293ae3.js.gz | Bin 0 -> 163 bytes _static/._625.120987bdd5293ae3.js.map | Bin 0 -> 163 bytes _static/._625.120987bdd5293ae3.js.map.gz | Bin 0 -> 163 bytes _static/._640.cbc8d3a34deb8837.js | Bin 0 -> 163 bytes _static/._640.cbc8d3a34deb8837.js.map | Bin 0 -> 163 bytes _static/._640.cbc8d3a34deb8837.js.map.gz | Bin 0 -> 163 bytes _static/._662.1bb5065279414751.js | Bin 0 -> 163 bytes _static/._662.1bb5065279414751.js.gz | Bin 0 -> 163 bytes _static/._662.1bb5065279414751.js.map | Bin 0 -> 163 bytes _static/._662.1bb5065279414751.js.map.gz | Bin 0 -> 163 bytes _static/._669.05a3639d12541567.js | Bin 0 -> 163 bytes _static/._669.05a3639d12541567.js.LICENSE.txt | Bin 0 -> 163 bytes _static/._669.05a3639d12541567.js.gz | Bin 0 -> 163 bytes _static/._669.05a3639d12541567.js.map | Bin 0 -> 163 bytes _static/._669.05a3639d12541567.js.map.gz | Bin 0 -> 163 bytes _static/._680.ec85c3ce31480628.js | Bin 0 -> 163 bytes _static/._680.ec85c3ce31480628.js.gz | Bin 0 -> 163 bytes _static/._680.ec85c3ce31480628.js.map | Bin 0 -> 163 bytes _static/._680.ec85c3ce31480628.js.map.gz | Bin 0 -> 163 bytes _static/._759.f27ff66e7ad33076.js | Bin 0 -> 163 bytes _static/._759.f27ff66e7ad33076.js.gz | Bin 0 -> 163 bytes _static/._759.f27ff66e7ad33076.js.map | Bin 0 -> 163 bytes _static/._759.f27ff66e7ad33076.js.map.gz | Bin 0 -> 163 bytes _static/._764.c33a81cafe63d2b6.js | Bin 0 -> 163 bytes _static/._764.c33a81cafe63d2b6.js.LICENSE.txt | Bin 0 -> 163 bytes .../._764.c33a81cafe63d2b6.js.LICENSE.txt.gz | Bin 0 -> 163 bytes _static/._764.c33a81cafe63d2b6.js.gz | Bin 0 -> 163 bytes _static/._764.c33a81cafe63d2b6.js.map | Bin 0 -> 163 bytes _static/._764.c33a81cafe63d2b6.js.map.gz | Bin 0 -> 163 bytes _static/._770.7bd6d39128dde910.js | Bin 0 -> 163 bytes _static/._770.7bd6d39128dde910.js.LICENSE.txt | Bin 0 -> 163 bytes .../._770.7bd6d39128dde910.js.LICENSE.txt.gz | Bin 0 -> 163 bytes _static/._770.7bd6d39128dde910.js.gz | Bin 0 -> 163 bytes _static/._770.7bd6d39128dde910.js.map | Bin 0 -> 163 bytes _static/._770.7bd6d39128dde910.js.map.gz | Bin 0 -> 163 bytes _static/._7a0f4b092e86cb52.eot | Bin 0 -> 163 bytes _static/._817.3438cd0f1b0f98bc.js | Bin 0 -> 163 bytes _static/._817.3438cd0f1b0f98bc.js.gz | Bin 0 -> 163 bytes _static/._817.3438cd0f1b0f98bc.js.map | Bin 0 -> 163 bytes _static/._817.3438cd0f1b0f98bc.js.map.gz | Bin 0 -> 163 bytes _static/._819.3e20e27de12f3abf.js | Bin 0 -> 163 bytes _static/._819.3e20e27de12f3abf.js.gz | Bin 0 -> 163 bytes _static/._819.3e20e27de12f3abf.js.map | Bin 0 -> 163 bytes _static/._819.3e20e27de12f3abf.js.map.gz | Bin 0 -> 163 bytes _static/._824.4343b78afc34c12f.js | Bin 0 -> 163 bytes _static/._824.4343b78afc34c12f.js.gz | Bin 0 -> 163 bytes _static/._824.4343b78afc34c12f.js.map | Bin 0 -> 163 bytes _static/._824.4343b78afc34c12f.js.map.gz | Bin 0 -> 163 bytes _static/._85f0466cb4ab3a4d.svg | Bin 0 -> 163 bytes _static/._85f0466cb4ab3a4d.svg.gz | Bin 0 -> 163 bytes _static/._877.fc49cc812ccc4937.js | Bin 0 -> 163 bytes _static/._877.fc49cc812ccc4937.js.gz | Bin 0 -> 163 bytes _static/._877.fc49cc812ccc4937.js.map | Bin 0 -> 163 bytes _static/._877.fc49cc812ccc4937.js.map.gz | Bin 0 -> 163 bytes _static/._915.8f500bccc86f901d.js | Bin 0 -> 163 bytes _static/._915.8f500bccc86f901d.js.gz | Bin 0 -> 163 bytes _static/._915.8f500bccc86f901d.js.map | Bin 0 -> 163 bytes _static/._915.8f500bccc86f901d.js.map.gz | Bin 0 -> 163 bytes _static/._919.237aced0c044e4b6.js | Bin 0 -> 163 bytes _static/._919.237aced0c044e4b6.js.gz | Bin 0 -> 163 bytes _static/._919.237aced0c044e4b6.js.map | Bin 0 -> 163 bytes _static/._919.237aced0c044e4b6.js.map.gz | Bin 0 -> 163 bytes _static/._b70781972ce7320b.woff2 | Bin 0 -> 163 bytes _static/._prefix-115.83df5da0966564d5.css | Bin 0 -> 163 bytes _static/._prefix-115.83df5da0966564d5.css.gz | Bin 0 -> 163 bytes _static/._prefix-115.83df5da0966564d5.css.map | Bin 0 -> 163 bytes .../._prefix-115.83df5da0966564d5.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-131.b184379d0dc5871b.css | Bin 0 -> 163 bytes _static/._prefix-131.b184379d0dc5871b.css.gz | Bin 0 -> 163 bytes _static/._prefix-131.b184379d0dc5871b.css.map | Bin 0 -> 163 bytes .../._prefix-131.b184379d0dc5871b.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-168.1c4deaed00ca1f5e.css | Bin 0 -> 163 bytes _static/._prefix-168.1c4deaed00ca1f5e.css.gz | Bin 0 -> 163 bytes _static/._prefix-168.1c4deaed00ca1f5e.css.map | Bin 0 -> 163 bytes .../._prefix-168.1c4deaed00ca1f5e.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-186.0d47de180767fda9.css | Bin 0 -> 163 bytes _static/._prefix-186.0d47de180767fda9.css.map | Bin 0 -> 163 bytes .../._prefix-186.0d47de180767fda9.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-198.86b6b2a70a576922.css | Bin 0 -> 163 bytes _static/._prefix-198.86b6b2a70a576922.css.gz | Bin 0 -> 163 bytes _static/._prefix-198.86b6b2a70a576922.css.map | Bin 0 -> 163 bytes .../._prefix-198.86b6b2a70a576922.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-249.6ca19da539a8ed1a.css | Bin 0 -> 163 bytes _static/._prefix-249.6ca19da539a8ed1a.css.gz | Bin 0 -> 163 bytes _static/._prefix-249.6ca19da539a8ed1a.css.map | Bin 0 -> 163 bytes .../._prefix-249.6ca19da539a8ed1a.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-294.986bf74bfa4ccbd4.css | Bin 0 -> 163 bytes _static/._prefix-294.986bf74bfa4ccbd4.css.gz | Bin 0 -> 163 bytes _static/._prefix-294.986bf74bfa4ccbd4.css.map | Bin 0 -> 163 bytes .../._prefix-294.986bf74bfa4ccbd4.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-350.dbca9271f6e2dfbf.css | Bin 0 -> 163 bytes _static/._prefix-350.dbca9271f6e2dfbf.css.gz | Bin 0 -> 163 bytes _static/._prefix-350.dbca9271f6e2dfbf.css.map | Bin 0 -> 163 bytes .../._prefix-350.dbca9271f6e2dfbf.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-380.67748940131a4a84.css | Bin 0 -> 163 bytes _static/._prefix-380.67748940131a4a84.css.map | Bin 0 -> 163 bytes .../._prefix-380.67748940131a4a84.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-39.89cf817b9a35aeca.css | Bin 0 -> 163 bytes _static/._prefix-39.89cf817b9a35aeca.css.gz | Bin 0 -> 163 bytes _static/._prefix-39.89cf817b9a35aeca.css.map | Bin 0 -> 163 bytes .../._prefix-39.89cf817b9a35aeca.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-412.25f3c4ff23eb9893.css | Bin 0 -> 163 bytes _static/._prefix-412.25f3c4ff23eb9893.css.gz | Bin 0 -> 163 bytes _static/._prefix-412.25f3c4ff23eb9893.css.map | Bin 0 -> 163 bytes .../._prefix-412.25f3c4ff23eb9893.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-442.6ae0ea584f8e75c5.css | Bin 0 -> 163 bytes _static/._prefix-442.6ae0ea584f8e75c5.css.gz | Bin 0 -> 163 bytes _static/._prefix-442.6ae0ea584f8e75c5.css.map | Bin 0 -> 163 bytes .../._prefix-442.6ae0ea584f8e75c5.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-460.7c0b70502d117f7d.css | Bin 0 -> 163 bytes _static/._prefix-460.7c0b70502d117f7d.css.map | Bin 0 -> 163 bytes _static/._prefix-486.990aca82e7ba3e1c.css | Bin 0 -> 163 bytes _static/._prefix-486.990aca82e7ba3e1c.css.gz | Bin 0 -> 163 bytes _static/._prefix-486.990aca82e7ba3e1c.css.map | Bin 0 -> 163 bytes .../._prefix-486.990aca82e7ba3e1c.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-576.9b1852878840651d.css | Bin 0 -> 163 bytes _static/._prefix-576.9b1852878840651d.css.gz | Bin 0 -> 163 bytes _static/._prefix-576.9b1852878840651d.css.map | Bin 0 -> 163 bytes .../._prefix-576.9b1852878840651d.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-580.22958d4327b0425a.css | Bin 0 -> 163 bytes _static/._prefix-580.22958d4327b0425a.css.gz | Bin 0 -> 163 bytes _static/._prefix-580.22958d4327b0425a.css.map | Bin 0 -> 163 bytes .../._prefix-580.22958d4327b0425a.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-616.5c78f604ddad1ec0.css | Bin 0 -> 163 bytes _static/._prefix-616.5c78f604ddad1ec0.css.gz | Bin 0 -> 163 bytes _static/._prefix-616.5c78f604ddad1ec0.css.map | Bin 0 -> 163 bytes .../._prefix-616.5c78f604ddad1ec0.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-621.8c109e297bdd8ce7.css | Bin 0 -> 163 bytes _static/._prefix-621.8c109e297bdd8ce7.css.gz | Bin 0 -> 163 bytes _static/._prefix-621.8c109e297bdd8ce7.css.map | Bin 0 -> 163 bytes .../._prefix-621.8c109e297bdd8ce7.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-723.3bccd435914aa0ff.css | Bin 0 -> 163 bytes _static/._prefix-723.3bccd435914aa0ff.css.gz | Bin 0 -> 163 bytes _static/._prefix-723.3bccd435914aa0ff.css.map | Bin 0 -> 163 bytes .../._prefix-723.3bccd435914aa0ff.css.map.gz | Bin 0 -> 163 bytes .../._prefix-723.3e6434f80549315a.bundle.js | Bin 0 -> 163 bytes ...723.3e6434f80549315a.bundle.js.LICENSE.txt | Bin 0 -> 163 bytes ....3e6434f80549315a.bundle.js.LICENSE.txt.gz | Bin 0 -> 163 bytes ...._prefix-723.3e6434f80549315a.bundle.js.gz | Bin 0 -> 163 bytes ..._prefix-723.3e6434f80549315a.bundle.js.map | Bin 0 -> 163 bytes ...efix-723.3e6434f80549315a.bundle.js.map.gz | Bin 0 -> 163 bytes _static/._prefix-737.cf869b6ea8bfad2f.css | Bin 0 -> 163 bytes _static/._prefix-737.cf869b6ea8bfad2f.css.gz | Bin 0 -> 163 bytes _static/._prefix-737.cf869b6ea8bfad2f.css.map | Bin 0 -> 163 bytes .../._prefix-737.cf869b6ea8bfad2f.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-819.6edefe408d7482c2.css | Bin 0 -> 163 bytes _static/._prefix-819.6edefe408d7482c2.css.gz | Bin 0 -> 163 bytes _static/._prefix-819.6edefe408d7482c2.css.map | Bin 0 -> 163 bytes .../._prefix-819.6edefe408d7482c2.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-824.271ae6cff6401ed5.css | Bin 0 -> 163 bytes _static/._prefix-824.271ae6cff6401ed5.css.gz | Bin 0 -> 163 bytes _static/._prefix-824.271ae6cff6401ed5.css.map | Bin 0 -> 163 bytes .../._prefix-824.271ae6cff6401ed5.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-877.fa7c46f756cd5a82.css | Bin 0 -> 163 bytes _static/._prefix-877.fa7c46f756cd5a82.css.gz | Bin 0 -> 163 bytes _static/._prefix-877.fa7c46f756cd5a82.css.map | Bin 0 -> 163 bytes .../._prefix-877.fa7c46f756cd5a82.css.map.gz | Bin 0 -> 163 bytes _static/._prefix-915.882512b642b7fffa.css | Bin 0 -> 163 bytes _static/._prefix-915.882512b642b7fffa.css.gz | Bin 0 -> 163 bytes _static/._prefix-915.882512b642b7fffa.css.map | Bin 0 -> 163 bytes .../._prefix-915.882512b642b7fffa.css.map.gz | Bin 0 -> 163 bytes ...refix-runestone.7e141ad8414abf4a.bundle.js | Bin 0 -> 163 bytes ...one.7e141ad8414abf4a.bundle.js.LICENSE.txt | Bin 0 -> 163 bytes ....7e141ad8414abf4a.bundle.js.LICENSE.txt.gz | Bin 0 -> 163 bytes ...ix-runestone.7e141ad8414abf4a.bundle.js.gz | Bin 0 -> 163 bytes ...x-runestone.7e141ad8414abf4a.bundle.js.map | Bin 0 -> 163 bytes ...unestone.7e141ad8414abf4a.bundle.js.map.gz | Bin 0 -> 163 bytes .../._prefix-runestone.f4ab138da65f4203.css | Bin 0 -> 163 bytes ...._prefix-runestone.f4ab138da65f4203.css.gz | Bin 0 -> 163 bytes ..._prefix-runestone.f4ab138da65f4203.css.map | Bin 0 -> 163 bytes ...efix-runestone.f4ab138da65f4203.css.map.gz | Bin 0 -> 163 bytes ..._prefix-runtime.42217a82c75796c8.bundle.js | Bin 0 -> 163 bytes ...efix-runtime.42217a82c75796c8.bundle.js.gz | Bin 0 -> 163 bytes ...fix-runtime.42217a82c75796c8.bundle.js.map | Bin 0 -> 163 bytes ...-runtime.42217a82c75796c8.bundle.js.map.gz | Bin 0 -> 163 bytes _static/._sql-wasm.wasm | Bin 0 -> 163 bytes _static/._sql-wasm.wasm.gz | Bin 0 -> 163 bytes _static/._webpack_static_imports.json | Bin 0 -> 163 bytes _static/._webpack_static_imports.json.gz | Bin 0 -> 163 bytes _static/._webpack_static_imports.xml | Bin 0 -> 163 bytes _static/009b407a9881be10.ttf | Bin 0 -> 45404 bytes _static/009b407a9881be10.ttf.gz | Bin 0 -> 23360 bytes _static/115.648ff4b5650f4c7c.js | 2 + _static/115.648ff4b5650f4c7c.js.gz | Bin 0 -> 8978 bytes _static/115.648ff4b5650f4c7c.js.map | 1 + _static/115.648ff4b5650f4c7c.js.map.gz | Bin 0 -> 27562 bytes _static/126.a976f62852f30b51.js | 2 + _static/126.a976f62852f30b51.js.gz | Bin 0 -> 1764 bytes _static/126.a976f62852f30b51.js.map | 1 + _static/126.a976f62852f30b51.js.map.gz | Bin 0 -> 10346 bytes _static/128.5bed857c54ac4e8b.js | 2 + _static/128.5bed857c54ac4e8b.js.gz | Bin 0 -> 803 bytes _static/128.5bed857c54ac4e8b.js.map | 1 + _static/128.5bed857c54ac4e8b.js.map.gz | Bin 0 -> 2814 bytes _static/131.ee437eeefadd750d.js | 2 + _static/131.ee437eeefadd750d.js.gz | Bin 0 -> 70886 bytes _static/131.ee437eeefadd750d.js.map | 1 + _static/131.ee437eeefadd750d.js.map.gz | Bin 0 -> 224003 bytes _static/168.fe63e6dec2d06468.js | 2 + _static/168.fe63e6dec2d06468.js.gz | Bin 0 -> 2073 bytes _static/168.fe63e6dec2d06468.js.map | 1 + _static/168.fe63e6dec2d06468.js.map.gz | Bin 0 -> 5511 bytes _static/186.be52164d57f4b7e4.js | 2 + _static/186.be52164d57f4b7e4.js.gz | Bin 0 -> 1762 bytes _static/186.be52164d57f4b7e4.js.map | 1 + _static/186.be52164d57f4b7e4.js.map.gz | Bin 0 -> 4232 bytes _static/249.7ec032cf0b3ede9a.js | 3 + _static/249.7ec032cf0b3ede9a.js.LICENSE.txt | 20 + .../249.7ec032cf0b3ede9a.js.LICENSE.txt.gz | Bin 0 -> 303 bytes _static/249.7ec032cf0b3ede9a.js.gz | Bin 0 -> 359953 bytes _static/249.7ec032cf0b3ede9a.js.map | 1 + _static/249.7ec032cf0b3ede9a.js.map.gz | Bin 0 -> 1298702 bytes _static/28.bb005543f41af5fb.js | 3 + _static/28.bb005543f41af5fb.js.LICENSE.txt | 1 + _static/28.bb005543f41af5fb.js.gz | Bin 0 -> 20147 bytes _static/28.bb005543f41af5fb.js.map | 1 + _static/28.bb005543f41af5fb.js.map.gz | Bin 0 -> 39462 bytes _static/296.37eb8c05642d8ef9.js | 2 + _static/296.37eb8c05642d8ef9.js.gz | Bin 0 -> 86270 bytes _static/296.37eb8c05642d8ef9.js.map | 1 + _static/296.37eb8c05642d8ef9.js.map.gz | Bin 0 -> 265223 bytes _static/340.c525bd899366c5f9.js | 2 + _static/340.c525bd899366c5f9.js.gz | Bin 0 -> 793 bytes _static/340.c525bd899366c5f9.js.map | 1 + _static/340.c525bd899366c5f9.js.map.gz | Bin 0 -> 2953 bytes _static/357.a6fa55aea0c38a63.js | 3 + _static/357.a6fa55aea0c38a63.js.LICENSE.txt | 19 + .../357.a6fa55aea0c38a63.js.LICENSE.txt.gz | Bin 0 -> 193 bytes _static/357.a6fa55aea0c38a63.js.gz | Bin 0 -> 14192 bytes _static/357.a6fa55aea0c38a63.js.map | 1 + _static/357.a6fa55aea0c38a63.js.map.gz | Bin 0 -> 55075 bytes _static/39.dc45aaf5abca8027.js | 3 + _static/39.dc45aaf5abca8027.js.LICENSE.txt | 5 + _static/39.dc45aaf5abca8027.js.gz | Bin 0 -> 29481 bytes _static/39.dc45aaf5abca8027.js.map | 1 + _static/39.dc45aaf5abca8027.js.map.gz | Bin 0 -> 89959 bytes _static/412.5965503d81003593.js | 2 + _static/412.5965503d81003593.js.gz | Bin 0 -> 1037 bytes _static/412.5965503d81003593.js.map | 1 + _static/412.5965503d81003593.js.map.gz | Bin 0 -> 2899 bytes _static/420.8dae5ad08a4e52ad.js | 3 + _static/420.8dae5ad08a4e52ad.js.LICENSE.txt | 5 + _static/420.8dae5ad08a4e52ad.js.gz | Bin 0 -> 29475 bytes _static/420.8dae5ad08a4e52ad.js.map | 1 + _static/420.8dae5ad08a4e52ad.js.map.gz | Bin 0 -> 89959 bytes _static/442.f48919e396acaa18.js | 2 + _static/442.f48919e396acaa18.js.gz | Bin 0 -> 960 bytes _static/442.f48919e396acaa18.js.map | 1 + _static/442.f48919e396acaa18.js.map.gz | Bin 0 -> 2970 bytes _static/460.bae9001422d7a484.js | 2 + _static/460.bae9001422d7a484.js.gz | Bin 0 -> 1401 bytes _static/460.bae9001422d7a484.js.map | 1 + _static/460.bae9001422d7a484.js.map.gz | Bin 0 -> 3953 bytes _static/466.4e1a3fb09520281a.js | 2 + _static/466.4e1a3fb09520281a.js.gz | Bin 0 -> 5697 bytes _static/466.4e1a3fb09520281a.js.map | 1 + _static/466.4e1a3fb09520281a.js.map.gz | Bin 0 -> 23415 bytes _static/486.78d96ffc5c65634b.js | 2 + _static/486.78d96ffc5c65634b.js.gz | Bin 0 -> 8591 bytes _static/486.78d96ffc5c65634b.js.map | 1 + _static/486.78d96ffc5c65634b.js.map.gz | Bin 0 -> 23473 bytes _static/4ba85deaf3670942.woff | Bin 0 -> 23424 bytes _static/529.115400ffea03835d.js | 2 + _static/529.115400ffea03835d.js.gz | Bin 0 -> 2764 bytes _static/529.115400ffea03835d.js.map | 1 + _static/529.115400ffea03835d.js.map.gz | Bin 0 -> 8286 bytes _static/566.0e38ac5442cc38c2.js | 2 + _static/566.0e38ac5442cc38c2.js.gz | Bin 0 -> 4256 bytes _static/566.0e38ac5442cc38c2.js.map | 1 + _static/566.0e38ac5442cc38c2.js.map.gz | Bin 0 -> 12032 bytes _static/576.f923ab1e9910a1be.js | 2 + _static/576.f923ab1e9910a1be.js.gz | Bin 0 -> 2802 bytes _static/576.f923ab1e9910a1be.js.map | 1 + _static/576.f923ab1e9910a1be.js.map.gz | Bin 0 -> 10133 bytes _static/580.f387819ad2e14f0a.js | 2 + _static/580.f387819ad2e14f0a.js.gz | Bin 0 -> 770 bytes _static/580.f387819ad2e14f0a.js.map | 1 + _static/580.f387819ad2e14f0a.js.map.gz | Bin 0 -> 2094 bytes _static/616.89f80a32caf41aef.js | 2 + _static/616.89f80a32caf41aef.js.gz | Bin 0 -> 1366 bytes _static/616.89f80a32caf41aef.js.map | 1 + _static/616.89f80a32caf41aef.js.map.gz | Bin 0 -> 3462 bytes _static/625.120987bdd5293ae3.js | 3 + _static/625.120987bdd5293ae3.js.LICENSE.txt | 14 + .../625.120987bdd5293ae3.js.LICENSE.txt.gz | Bin 0 -> 438 bytes _static/625.120987bdd5293ae3.js.gz | Bin 0 -> 264964 bytes _static/625.120987bdd5293ae3.js.map | 1 + _static/625.120987bdd5293ae3.js.map.gz | Bin 0 -> 929221 bytes _static/640.cbc8d3a34deb8837.js | 2 + _static/640.cbc8d3a34deb8837.js.map | 1 + _static/640.cbc8d3a34deb8837.js.map.gz | Bin 0 -> 756 bytes _static/662.1bb5065279414751.js | 2 + _static/662.1bb5065279414751.js.gz | Bin 0 -> 2781 bytes _static/662.1bb5065279414751.js.map | 1 + _static/662.1bb5065279414751.js.map.gz | Bin 0 -> 8687 bytes _static/669.05a3639d12541567.js | 3 + _static/669.05a3639d12541567.js.LICENSE.txt | 6 + _static/669.05a3639d12541567.js.gz | Bin 0 -> 29062 bytes _static/669.05a3639d12541567.js.map | 1 + _static/669.05a3639d12541567.js.map.gz | Bin 0 -> 99882 bytes _static/680.ec85c3ce31480628.js | 2 + _static/680.ec85c3ce31480628.js.gz | Bin 0 -> 1373 bytes _static/680.ec85c3ce31480628.js.map | 1 + _static/680.ec85c3ce31480628.js.map.gz | Bin 0 -> 4246 bytes _static/759.f27ff66e7ad33076.js | 2 + _static/759.f27ff66e7ad33076.js.gz | Bin 0 -> 4308 bytes _static/759.f27ff66e7ad33076.js.map | 1 + _static/759.f27ff66e7ad33076.js.map.gz | Bin 0 -> 12882 bytes _static/764.c33a81cafe63d2b6.js | 3 + _static/764.c33a81cafe63d2b6.js.LICENSE.txt | 167 + .../764.c33a81cafe63d2b6.js.LICENSE.txt.gz | Bin 0 -> 771 bytes _static/764.c33a81cafe63d2b6.js.gz | Bin 0 -> 222110 bytes _static/764.c33a81cafe63d2b6.js.map | 1 + _static/764.c33a81cafe63d2b6.js.map.gz | Bin 0 -> 596465 bytes _static/770.7bd6d39128dde910.js | 3 + _static/770.7bd6d39128dde910.js.LICENSE.txt | 14 + .../770.7bd6d39128dde910.js.LICENSE.txt.gz | Bin 0 -> 244 bytes _static/770.7bd6d39128dde910.js.gz | Bin 0 -> 43946 bytes _static/770.7bd6d39128dde910.js.map | 1 + _static/770.7bd6d39128dde910.js.map.gz | Bin 0 -> 104257 bytes _static/7a0f4b092e86cb52.eot | Bin 0 -> 20127 bytes _static/817.3438cd0f1b0f98bc.js | 2 + _static/817.3438cd0f1b0f98bc.js.gz | Bin 0 -> 1887 bytes _static/817.3438cd0f1b0f98bc.js.map | 1 + _static/817.3438cd0f1b0f98bc.js.map.gz | Bin 0 -> 6886 bytes _static/819.3e20e27de12f3abf.js | 2 + _static/819.3e20e27de12f3abf.js.gz | Bin 0 -> 3244 bytes _static/819.3e20e27de12f3abf.js.map | 1 + _static/819.3e20e27de12f3abf.js.map.gz | Bin 0 -> 9105 bytes _static/824.4343b78afc34c12f.js | 2 + _static/824.4343b78afc34c12f.js.gz | Bin 0 -> 1334 bytes _static/824.4343b78afc34c12f.js.map | 1 + _static/824.4343b78afc34c12f.js.map.gz | Bin 0 -> 3995 bytes _static/85f0466cb4ab3a4d.svg | 288 + _static/85f0466cb4ab3a4d.svg.gz | Bin 0 -> 26508 bytes _static/877.fc49cc812ccc4937.js | 2 + _static/877.fc49cc812ccc4937.js.gz | Bin 0 -> 351180 bytes _static/877.fc49cc812ccc4937.js.map | 1 + _static/877.fc49cc812ccc4937.js.map.gz | Bin 0 -> 589725 bytes _static/915.8f500bccc86f901d.js | 2 + _static/915.8f500bccc86f901d.js.gz | Bin 0 -> 915 bytes _static/915.8f500bccc86f901d.js.map | 1 + _static/915.8f500bccc86f901d.js.map.gz | Bin 0 -> 2190 bytes _static/919.237aced0c044e4b6.js | 2 + _static/919.237aced0c044e4b6.js.gz | Bin 0 -> 4549 bytes _static/919.237aced0c044e4b6.js.map | 1 + _static/919.237aced0c044e4b6.js.map.gz | Bin 0 -> 13893 bytes _static/_runestone-services.xml | 14 + _static/b70781972ce7320b.woff2 | Bin 0 -> 18028 bytes _static/prefix-115.83df5da0966564d5.css | 2 + _static/prefix-115.83df5da0966564d5.css.gz | Bin 0 -> 5505 bytes _static/prefix-115.83df5da0966564d5.css.map | 1 + .../prefix-115.83df5da0966564d5.css.map.gz | Bin 0 -> 8780 bytes _static/prefix-131.b184379d0dc5871b.css | 2 + _static/prefix-131.b184379d0dc5871b.css.gz | Bin 0 -> 17613 bytes _static/prefix-131.b184379d0dc5871b.css.map | 1 + .../prefix-131.b184379d0dc5871b.css.map.gz | Bin 0 -> 28378 bytes _static/prefix-168.1c4deaed00ca1f5e.css | 2 + _static/prefix-168.1c4deaed00ca1f5e.css.gz | Bin 0 -> 379 bytes _static/prefix-168.1c4deaed00ca1f5e.css.map | 1 + .../prefix-168.1c4deaed00ca1f5e.css.map.gz | Bin 0 -> 651 bytes _static/prefix-186.0d47de180767fda9.css | 2 + _static/prefix-186.0d47de180767fda9.css.map | 1 + .../prefix-186.0d47de180767fda9.css.map.gz | Bin 0 -> 264 bytes _static/prefix-198.86b6b2a70a576922.css | 2 + _static/prefix-198.86b6b2a70a576922.css.gz | Bin 0 -> 414 bytes _static/prefix-198.86b6b2a70a576922.css.map | 1 + .../prefix-198.86b6b2a70a576922.css.map.gz | Bin 0 -> 692 bytes _static/prefix-249.6ca19da539a8ed1a.css | 58 + _static/prefix-249.6ca19da539a8ed1a.css.gz | Bin 0 -> 8245 bytes _static/prefix-249.6ca19da539a8ed1a.css.map | 1 + .../prefix-249.6ca19da539a8ed1a.css.map.gz | Bin 0 -> 14059 bytes _static/prefix-294.986bf74bfa4ccbd4.css | 2 + _static/prefix-294.986bf74bfa4ccbd4.css.gz | Bin 0 -> 290 bytes _static/prefix-294.986bf74bfa4ccbd4.css.map | 1 + .../prefix-294.986bf74bfa4ccbd4.css.map.gz | Bin 0 -> 473 bytes _static/prefix-350.dbca9271f6e2dfbf.css | 2 + _static/prefix-350.dbca9271f6e2dfbf.css.gz | Bin 0 -> 295 bytes _static/prefix-350.dbca9271f6e2dfbf.css.map | 1 + .../prefix-350.dbca9271f6e2dfbf.css.map.gz | Bin 0 -> 540 bytes _static/prefix-380.67748940131a4a84.css | 2 + _static/prefix-380.67748940131a4a84.css.map | 1 + .../prefix-380.67748940131a4a84.css.map.gz | Bin 0 -> 428 bytes _static/prefix-39.89cf817b9a35aeca.css | 2 + _static/prefix-39.89cf817b9a35aeca.css.gz | Bin 0 -> 2713 bytes _static/prefix-39.89cf817b9a35aeca.css.map | 1 + _static/prefix-39.89cf817b9a35aeca.css.map.gz | Bin 0 -> 3919 bytes _static/prefix-412.25f3c4ff23eb9893.css | 2 + _static/prefix-412.25f3c4ff23eb9893.css.gz | Bin 0 -> 2557 bytes _static/prefix-412.25f3c4ff23eb9893.css.map | 1 + .../prefix-412.25f3c4ff23eb9893.css.map.gz | Bin 0 -> 6591 bytes _static/prefix-442.6ae0ea584f8e75c5.css | 2 + _static/prefix-442.6ae0ea584f8e75c5.css.gz | Bin 0 -> 285 bytes _static/prefix-442.6ae0ea584f8e75c5.css.map | 1 + .../prefix-442.6ae0ea584f8e75c5.css.map.gz | Bin 0 -> 483 bytes _static/prefix-460.7c0b70502d117f7d.css | 2 + _static/prefix-460.7c0b70502d117f7d.css.map | 1 + _static/prefix-486.990aca82e7ba3e1c.css | 2 + _static/prefix-486.990aca82e7ba3e1c.css.gz | Bin 0 -> 1061 bytes _static/prefix-486.990aca82e7ba3e1c.css.map | 1 + .../prefix-486.990aca82e7ba3e1c.css.map.gz | Bin 0 -> 1810 bytes _static/prefix-576.9b1852878840651d.css | 2 + _static/prefix-576.9b1852878840651d.css.gz | Bin 0 -> 1627 bytes _static/prefix-576.9b1852878840651d.css.map | 1 + .../prefix-576.9b1852878840651d.css.map.gz | Bin 0 -> 3704 bytes _static/prefix-580.22958d4327b0425a.css | 2 + _static/prefix-580.22958d4327b0425a.css.gz | Bin 0 -> 373 bytes _static/prefix-580.22958d4327b0425a.css.map | 1 + .../prefix-580.22958d4327b0425a.css.map.gz | Bin 0 -> 727 bytes _static/prefix-616.5c78f604ddad1ec0.css | 2 + _static/prefix-616.5c78f604ddad1ec0.css.gz | Bin 0 -> 2162 bytes _static/prefix-616.5c78f604ddad1ec0.css.map | 1 + .../prefix-616.5c78f604ddad1ec0.css.map.gz | Bin 0 -> 3872 bytes _static/prefix-621.8c109e297bdd8ce7.css | 2 + _static/prefix-621.8c109e297bdd8ce7.css.gz | Bin 0 -> 841 bytes _static/prefix-621.8c109e297bdd8ce7.css.map | 1 + .../prefix-621.8c109e297bdd8ce7.css.map.gz | Bin 0 -> 1534 bytes _static/prefix-723.3bccd435914aa0ff.css | 185 + _static/prefix-723.3bccd435914aa0ff.css.gz | Bin 0 -> 12455 bytes _static/prefix-723.3bccd435914aa0ff.css.map | 1 + .../prefix-723.3bccd435914aa0ff.css.map.gz | Bin 0 -> 9101 bytes _static/prefix-723.3e6434f80549315a.bundle.js | 3 + ...723.3e6434f80549315a.bundle.js.LICENSE.txt | 21 + ....3e6434f80549315a.bundle.js.LICENSE.txt.gz | Bin 0 -> 495 bytes .../prefix-723.3e6434f80549315a.bundle.js.gz | Bin 0 -> 70203 bytes .../prefix-723.3e6434f80549315a.bundle.js.map | 1 + ...efix-723.3e6434f80549315a.bundle.js.map.gz | Bin 0 -> 237949 bytes _static/prefix-737.cf869b6ea8bfad2f.css | 2 + _static/prefix-737.cf869b6ea8bfad2f.css.gz | Bin 0 -> 1495 bytes _static/prefix-737.cf869b6ea8bfad2f.css.map | 1 + .../prefix-737.cf869b6ea8bfad2f.css.map.gz | Bin 0 -> 2582 bytes _static/prefix-819.6edefe408d7482c2.css | 2 + _static/prefix-819.6edefe408d7482c2.css.gz | Bin 0 -> 508 bytes _static/prefix-819.6edefe408d7482c2.css.map | 1 + .../prefix-819.6edefe408d7482c2.css.map.gz | Bin 0 -> 811 bytes _static/prefix-824.271ae6cff6401ed5.css | 2 + _static/prefix-824.271ae6cff6401ed5.css.gz | Bin 0 -> 328 bytes _static/prefix-824.271ae6cff6401ed5.css.map | 1 + .../prefix-824.271ae6cff6401ed5.css.map.gz | Bin 0 -> 592 bytes _static/prefix-877.fa7c46f756cd5a82.css | 2 + _static/prefix-877.fa7c46f756cd5a82.css.gz | Bin 0 -> 4406 bytes _static/prefix-877.fa7c46f756cd5a82.css.map | 1 + .../prefix-877.fa7c46f756cd5a82.css.map.gz | Bin 0 -> 8188 bytes _static/prefix-915.882512b642b7fffa.css | 2 + _static/prefix-915.882512b642b7fffa.css.gz | Bin 0 -> 239 bytes _static/prefix-915.882512b642b7fffa.css.map | 1 + .../prefix-915.882512b642b7fffa.css.map.gz | Bin 0 -> 406 bytes ...refix-runestone.7e141ad8414abf4a.bundle.js | 3 + ...one.7e141ad8414abf4a.bundle.js.LICENSE.txt | 83 + ....7e141ad8414abf4a.bundle.js.LICENSE.txt.gz | Bin 0 -> 594 bytes ...ix-runestone.7e141ad8414abf4a.bundle.js.gz | Bin 0 -> 21867 bytes ...x-runestone.7e141ad8414abf4a.bundle.js.map | 1 + ...unestone.7e141ad8414abf4a.bundle.js.map.gz | Bin 0 -> 67581 bytes _static/prefix-runestone.f4ab138da65f4203.css | 9 + .../prefix-runestone.f4ab138da65f4203.css.gz | Bin 0 -> 37877 bytes .../prefix-runestone.f4ab138da65f4203.css.map | 1 + ...efix-runestone.f4ab138da65f4203.css.map.gz | Bin 0 -> 52866 bytes .../prefix-runtime.42217a82c75796c8.bundle.js | 2 + ...efix-runtime.42217a82c75796c8.bundle.js.gz | Bin 0 -> 3113 bytes ...fix-runtime.42217a82c75796c8.bundle.js.map | 1 + ...-runtime.42217a82c75796c8.bundle.js.map.gz | Bin 0 -> 8473 bytes _static/pretext/css/print-worksheet.css | 3 + _static/pretext/css/print-worksheet.css.map | 7 + _static/pretext/css/theme.css | 3 + _static/pretext/css/theme.css.map | 7 + _static/pretext/js/answer.js | 552 ++ _static/pretext/js/diagcess/diagcess.js | 1 + _static/pretext/js/edit.js | 4988 +++++++++++++++++ _static/pretext/js/highlight.js | 480 ++ _static/pretext/js/instructor.js | 131 + _static/pretext/js/lib/jquery.espy.min.js | 195 + _static/pretext/js/lib/jquery.min.js | 2 + _static/pretext/js/lib/jquery.sticky.js | 161 + _static/pretext/js/lib/knowl.js | 338 ++ _static/pretext/js/lib/mathjaxknowl.js | 109 + _static/pretext/js/lib/mathjaxknowl3.js | 48 + _static/pretext/js/login.js | 322 ++ _static/pretext/js/lti_iframe_resizer.js | 48 + .../pretext/js/pretext-stack/stackapicalls.js | 515 ++ .../pretext/js/pretext-stack/stackjsvle.js | 652 +++ .../pretext-webwork/2.16/pretext-webwork.js | 753 +++ .../pretext-webwork/2.17/pretext-webwork.js | 1058 ++++ .../pretext-webwork/2.18/pretext-webwork.js | 1058 ++++ .../pretext-webwork/2.19/pretext-webwork.js | 677 +++ .../pretext-webwork/2.20/pretext-webwork.js | 686 +++ _static/pretext/js/pretext.js | 257 + _static/pretext/js/pretext_add_on.js | 1264 +++++ _static/pretext/js/pretext_search.js | 315 ++ _static/pretext/js/ptx_search.js | 112 + _static/pretext/js/user_preferences.js | 510 ++ _static/sql-wasm.wasm | Bin 0 -> 1183841 bytes _static/sql-wasm.wasm.gz | Bin 0 -> 449355 bytes _static/webpack_static_imports.json | 1 + _static/webpack_static_imports.json.gz | Bin 0 -> 153 bytes _static/webpack_static_imports.xml | 14 + backmatter-2.html | 168 + backmatter.html | 163 + ch-Confidence-Intervals.html | 167 + ch-Expected-Value.html | 167 + ch-Hypothesis-Testing.html | 167 + ch-Linear-Regression.html | 167 + ch-Probability.html | 167 + ch-Random-Variables.html | 167 + ch-chapter-title.html | 162 + front-colophon.html | 172 + frontmatter.html | 169 + index.html | 20 + lunr-pretext-search-index.js | 86 + my-great-book.html | 172 + sec-section-name.html | 168 + 617 files changed, 18659 insertions(+) create mode 100644 .mapping.json create mode 100644 .nojekyll create mode 100644 _static/._009b407a9881be10.ttf create mode 100644 _static/._009b407a9881be10.ttf.gz create mode 100644 _static/._115.648ff4b5650f4c7c.js create mode 100644 _static/._115.648ff4b5650f4c7c.js.gz create mode 100644 _static/._115.648ff4b5650f4c7c.js.map create mode 100644 _static/._115.648ff4b5650f4c7c.js.map.gz create mode 100644 _static/._126.a976f62852f30b51.js create mode 100644 _static/._126.a976f62852f30b51.js.gz create mode 100644 _static/._126.a976f62852f30b51.js.map create mode 100644 _static/._126.a976f62852f30b51.js.map.gz create mode 100644 _static/._128.5bed857c54ac4e8b.js create mode 100644 _static/._128.5bed857c54ac4e8b.js.gz create mode 100644 _static/._128.5bed857c54ac4e8b.js.map create mode 100644 _static/._128.5bed857c54ac4e8b.js.map.gz create mode 100644 _static/._131.ee437eeefadd750d.js create mode 100644 _static/._131.ee437eeefadd750d.js.gz create mode 100644 _static/._131.ee437eeefadd750d.js.map create mode 100644 _static/._131.ee437eeefadd750d.js.map.gz create mode 100644 _static/._168.fe63e6dec2d06468.js create mode 100644 _static/._168.fe63e6dec2d06468.js.gz create mode 100644 _static/._168.fe63e6dec2d06468.js.map create mode 100644 _static/._168.fe63e6dec2d06468.js.map.gz create mode 100644 _static/._186.be52164d57f4b7e4.js create mode 100644 _static/._186.be52164d57f4b7e4.js.gz create mode 100644 _static/._186.be52164d57f4b7e4.js.map create mode 100644 _static/._186.be52164d57f4b7e4.js.map.gz create mode 100644 _static/._249.7ec032cf0b3ede9a.js create mode 100644 _static/._249.7ec032cf0b3ede9a.js.LICENSE.txt create mode 100644 _static/._249.7ec032cf0b3ede9a.js.LICENSE.txt.gz create mode 100644 _static/._249.7ec032cf0b3ede9a.js.gz create mode 100644 _static/._249.7ec032cf0b3ede9a.js.map create mode 100644 _static/._249.7ec032cf0b3ede9a.js.map.gz create mode 100644 _static/._28.bb005543f41af5fb.js create mode 100644 _static/._28.bb005543f41af5fb.js.LICENSE.txt create mode 100644 _static/._28.bb005543f41af5fb.js.gz create mode 100644 _static/._28.bb005543f41af5fb.js.map create mode 100644 _static/._28.bb005543f41af5fb.js.map.gz create mode 100644 _static/._296.37eb8c05642d8ef9.js create mode 100644 _static/._296.37eb8c05642d8ef9.js.gz create mode 100644 _static/._296.37eb8c05642d8ef9.js.map create mode 100644 _static/._296.37eb8c05642d8ef9.js.map.gz create mode 100644 _static/._340.c525bd899366c5f9.js create mode 100644 _static/._340.c525bd899366c5f9.js.gz create mode 100644 _static/._340.c525bd899366c5f9.js.map create mode 100644 _static/._340.c525bd899366c5f9.js.map.gz create mode 100644 _static/._357.a6fa55aea0c38a63.js create mode 100644 _static/._357.a6fa55aea0c38a63.js.LICENSE.txt create mode 100644 _static/._357.a6fa55aea0c38a63.js.LICENSE.txt.gz create mode 100644 _static/._357.a6fa55aea0c38a63.js.gz create mode 100644 _static/._357.a6fa55aea0c38a63.js.map create mode 100644 _static/._357.a6fa55aea0c38a63.js.map.gz create mode 100644 _static/._39.dc45aaf5abca8027.js create mode 100644 _static/._39.dc45aaf5abca8027.js.LICENSE.txt create mode 100644 _static/._39.dc45aaf5abca8027.js.gz create mode 100644 _static/._39.dc45aaf5abca8027.js.map create mode 100644 _static/._39.dc45aaf5abca8027.js.map.gz create mode 100644 _static/._412.5965503d81003593.js create mode 100644 _static/._412.5965503d81003593.js.gz create mode 100644 _static/._412.5965503d81003593.js.map create mode 100644 _static/._412.5965503d81003593.js.map.gz create mode 100644 _static/._420.8dae5ad08a4e52ad.js create mode 100644 _static/._420.8dae5ad08a4e52ad.js.LICENSE.txt create mode 100644 _static/._420.8dae5ad08a4e52ad.js.gz create mode 100644 _static/._420.8dae5ad08a4e52ad.js.map create mode 100644 _static/._420.8dae5ad08a4e52ad.js.map.gz create mode 100644 _static/._442.f48919e396acaa18.js create mode 100644 _static/._442.f48919e396acaa18.js.gz create mode 100644 _static/._442.f48919e396acaa18.js.map create mode 100644 _static/._442.f48919e396acaa18.js.map.gz create mode 100644 _static/._460.bae9001422d7a484.js create mode 100644 _static/._460.bae9001422d7a484.js.gz create mode 100644 _static/._460.bae9001422d7a484.js.map create mode 100644 _static/._460.bae9001422d7a484.js.map.gz create mode 100644 _static/._466.4e1a3fb09520281a.js create mode 100644 _static/._466.4e1a3fb09520281a.js.gz create mode 100644 _static/._466.4e1a3fb09520281a.js.map create mode 100644 _static/._466.4e1a3fb09520281a.js.map.gz create mode 100644 _static/._486.78d96ffc5c65634b.js create mode 100644 _static/._486.78d96ffc5c65634b.js.gz create mode 100644 _static/._486.78d96ffc5c65634b.js.map create mode 100644 _static/._486.78d96ffc5c65634b.js.map.gz create mode 100644 _static/._4ba85deaf3670942.woff create mode 100644 _static/._529.115400ffea03835d.js create mode 100644 _static/._529.115400ffea03835d.js.gz create mode 100644 _static/._529.115400ffea03835d.js.map create mode 100644 _static/._529.115400ffea03835d.js.map.gz create mode 100644 _static/._566.0e38ac5442cc38c2.js create mode 100644 _static/._566.0e38ac5442cc38c2.js.gz create mode 100644 _static/._566.0e38ac5442cc38c2.js.map create mode 100644 _static/._566.0e38ac5442cc38c2.js.map.gz create mode 100644 _static/._576.f923ab1e9910a1be.js create mode 100644 _static/._576.f923ab1e9910a1be.js.gz create mode 100644 _static/._576.f923ab1e9910a1be.js.map create mode 100644 _static/._576.f923ab1e9910a1be.js.map.gz create mode 100644 _static/._580.f387819ad2e14f0a.js create mode 100644 _static/._580.f387819ad2e14f0a.js.gz create mode 100644 _static/._580.f387819ad2e14f0a.js.map create mode 100644 _static/._580.f387819ad2e14f0a.js.map.gz create mode 100644 _static/._616.89f80a32caf41aef.js create mode 100644 _static/._616.89f80a32caf41aef.js.gz create mode 100644 _static/._616.89f80a32caf41aef.js.map create mode 100644 _static/._616.89f80a32caf41aef.js.map.gz create mode 100644 _static/._625.120987bdd5293ae3.js create mode 100644 _static/._625.120987bdd5293ae3.js.LICENSE.txt create mode 100644 _static/._625.120987bdd5293ae3.js.LICENSE.txt.gz create mode 100644 _static/._625.120987bdd5293ae3.js.gz create mode 100644 _static/._625.120987bdd5293ae3.js.map create mode 100644 _static/._625.120987bdd5293ae3.js.map.gz create mode 100644 _static/._640.cbc8d3a34deb8837.js create mode 100644 _static/._640.cbc8d3a34deb8837.js.map create mode 100644 _static/._640.cbc8d3a34deb8837.js.map.gz create mode 100644 _static/._662.1bb5065279414751.js create mode 100644 _static/._662.1bb5065279414751.js.gz create mode 100644 _static/._662.1bb5065279414751.js.map create mode 100644 _static/._662.1bb5065279414751.js.map.gz create mode 100644 _static/._669.05a3639d12541567.js create mode 100644 _static/._669.05a3639d12541567.js.LICENSE.txt create mode 100644 _static/._669.05a3639d12541567.js.gz create mode 100644 _static/._669.05a3639d12541567.js.map create mode 100644 _static/._669.05a3639d12541567.js.map.gz create mode 100644 _static/._680.ec85c3ce31480628.js create mode 100644 _static/._680.ec85c3ce31480628.js.gz create mode 100644 _static/._680.ec85c3ce31480628.js.map create mode 100644 _static/._680.ec85c3ce31480628.js.map.gz create mode 100644 _static/._759.f27ff66e7ad33076.js create mode 100644 _static/._759.f27ff66e7ad33076.js.gz create mode 100644 _static/._759.f27ff66e7ad33076.js.map create mode 100644 _static/._759.f27ff66e7ad33076.js.map.gz create mode 100644 _static/._764.c33a81cafe63d2b6.js create mode 100644 _static/._764.c33a81cafe63d2b6.js.LICENSE.txt create mode 100644 _static/._764.c33a81cafe63d2b6.js.LICENSE.txt.gz create mode 100644 _static/._764.c33a81cafe63d2b6.js.gz create mode 100644 _static/._764.c33a81cafe63d2b6.js.map create mode 100644 _static/._764.c33a81cafe63d2b6.js.map.gz create mode 100644 _static/._770.7bd6d39128dde910.js create mode 100644 _static/._770.7bd6d39128dde910.js.LICENSE.txt create mode 100644 _static/._770.7bd6d39128dde910.js.LICENSE.txt.gz create mode 100644 _static/._770.7bd6d39128dde910.js.gz create mode 100644 _static/._770.7bd6d39128dde910.js.map create mode 100644 _static/._770.7bd6d39128dde910.js.map.gz create mode 100644 _static/._7a0f4b092e86cb52.eot create mode 100644 _static/._817.3438cd0f1b0f98bc.js create mode 100644 _static/._817.3438cd0f1b0f98bc.js.gz create mode 100644 _static/._817.3438cd0f1b0f98bc.js.map create mode 100644 _static/._817.3438cd0f1b0f98bc.js.map.gz create mode 100644 _static/._819.3e20e27de12f3abf.js create mode 100644 _static/._819.3e20e27de12f3abf.js.gz create mode 100644 _static/._819.3e20e27de12f3abf.js.map create mode 100644 _static/._819.3e20e27de12f3abf.js.map.gz create mode 100644 _static/._824.4343b78afc34c12f.js create mode 100644 _static/._824.4343b78afc34c12f.js.gz create mode 100644 _static/._824.4343b78afc34c12f.js.map create mode 100644 _static/._824.4343b78afc34c12f.js.map.gz create mode 100644 _static/._85f0466cb4ab3a4d.svg create mode 100644 _static/._85f0466cb4ab3a4d.svg.gz create mode 100644 _static/._877.fc49cc812ccc4937.js create mode 100644 _static/._877.fc49cc812ccc4937.js.gz create mode 100644 _static/._877.fc49cc812ccc4937.js.map create mode 100644 _static/._877.fc49cc812ccc4937.js.map.gz create mode 100644 _static/._915.8f500bccc86f901d.js create mode 100644 _static/._915.8f500bccc86f901d.js.gz create mode 100644 _static/._915.8f500bccc86f901d.js.map create mode 100644 _static/._915.8f500bccc86f901d.js.map.gz create mode 100644 _static/._919.237aced0c044e4b6.js create mode 100644 _static/._919.237aced0c044e4b6.js.gz create mode 100644 _static/._919.237aced0c044e4b6.js.map create mode 100644 _static/._919.237aced0c044e4b6.js.map.gz create mode 100644 _static/._b70781972ce7320b.woff2 create mode 100644 _static/._prefix-115.83df5da0966564d5.css create mode 100644 _static/._prefix-115.83df5da0966564d5.css.gz create mode 100644 _static/._prefix-115.83df5da0966564d5.css.map create mode 100644 _static/._prefix-115.83df5da0966564d5.css.map.gz create mode 100644 _static/._prefix-131.b184379d0dc5871b.css create mode 100644 _static/._prefix-131.b184379d0dc5871b.css.gz create mode 100644 _static/._prefix-131.b184379d0dc5871b.css.map create mode 100644 _static/._prefix-131.b184379d0dc5871b.css.map.gz create mode 100644 _static/._prefix-168.1c4deaed00ca1f5e.css create mode 100644 _static/._prefix-168.1c4deaed00ca1f5e.css.gz create mode 100644 _static/._prefix-168.1c4deaed00ca1f5e.css.map create mode 100644 _static/._prefix-168.1c4deaed00ca1f5e.css.map.gz create mode 100644 _static/._prefix-186.0d47de180767fda9.css create mode 100644 _static/._prefix-186.0d47de180767fda9.css.map create mode 100644 _static/._prefix-186.0d47de180767fda9.css.map.gz create mode 100644 _static/._prefix-198.86b6b2a70a576922.css create mode 100644 _static/._prefix-198.86b6b2a70a576922.css.gz create mode 100644 _static/._prefix-198.86b6b2a70a576922.css.map create mode 100644 _static/._prefix-198.86b6b2a70a576922.css.map.gz create mode 100644 _static/._prefix-249.6ca19da539a8ed1a.css create mode 100644 _static/._prefix-249.6ca19da539a8ed1a.css.gz create mode 100644 _static/._prefix-249.6ca19da539a8ed1a.css.map create mode 100644 _static/._prefix-249.6ca19da539a8ed1a.css.map.gz create mode 100644 _static/._prefix-294.986bf74bfa4ccbd4.css create mode 100644 _static/._prefix-294.986bf74bfa4ccbd4.css.gz create mode 100644 _static/._prefix-294.986bf74bfa4ccbd4.css.map create mode 100644 _static/._prefix-294.986bf74bfa4ccbd4.css.map.gz create mode 100644 _static/._prefix-350.dbca9271f6e2dfbf.css create mode 100644 _static/._prefix-350.dbca9271f6e2dfbf.css.gz create mode 100644 _static/._prefix-350.dbca9271f6e2dfbf.css.map create mode 100644 _static/._prefix-350.dbca9271f6e2dfbf.css.map.gz create mode 100644 _static/._prefix-380.67748940131a4a84.css create mode 100644 _static/._prefix-380.67748940131a4a84.css.map create mode 100644 _static/._prefix-380.67748940131a4a84.css.map.gz create mode 100644 _static/._prefix-39.89cf817b9a35aeca.css create mode 100644 _static/._prefix-39.89cf817b9a35aeca.css.gz create mode 100644 _static/._prefix-39.89cf817b9a35aeca.css.map create mode 100644 _static/._prefix-39.89cf817b9a35aeca.css.map.gz create mode 100644 _static/._prefix-412.25f3c4ff23eb9893.css create mode 100644 _static/._prefix-412.25f3c4ff23eb9893.css.gz create mode 100644 _static/._prefix-412.25f3c4ff23eb9893.css.map create mode 100644 _static/._prefix-412.25f3c4ff23eb9893.css.map.gz create mode 100644 _static/._prefix-442.6ae0ea584f8e75c5.css create mode 100644 _static/._prefix-442.6ae0ea584f8e75c5.css.gz create mode 100644 _static/._prefix-442.6ae0ea584f8e75c5.css.map create mode 100644 _static/._prefix-442.6ae0ea584f8e75c5.css.map.gz create mode 100644 _static/._prefix-460.7c0b70502d117f7d.css create mode 100644 _static/._prefix-460.7c0b70502d117f7d.css.map create mode 100644 _static/._prefix-486.990aca82e7ba3e1c.css create mode 100644 _static/._prefix-486.990aca82e7ba3e1c.css.gz create mode 100644 _static/._prefix-486.990aca82e7ba3e1c.css.map create mode 100644 _static/._prefix-486.990aca82e7ba3e1c.css.map.gz create mode 100644 _static/._prefix-576.9b1852878840651d.css create mode 100644 _static/._prefix-576.9b1852878840651d.css.gz create mode 100644 _static/._prefix-576.9b1852878840651d.css.map create mode 100644 _static/._prefix-576.9b1852878840651d.css.map.gz create mode 100644 _static/._prefix-580.22958d4327b0425a.css create mode 100644 _static/._prefix-580.22958d4327b0425a.css.gz create mode 100644 _static/._prefix-580.22958d4327b0425a.css.map create mode 100644 _static/._prefix-580.22958d4327b0425a.css.map.gz create mode 100644 _static/._prefix-616.5c78f604ddad1ec0.css create mode 100644 _static/._prefix-616.5c78f604ddad1ec0.css.gz create mode 100644 _static/._prefix-616.5c78f604ddad1ec0.css.map create mode 100644 _static/._prefix-616.5c78f604ddad1ec0.css.map.gz create mode 100644 _static/._prefix-621.8c109e297bdd8ce7.css create mode 100644 _static/._prefix-621.8c109e297bdd8ce7.css.gz create mode 100644 _static/._prefix-621.8c109e297bdd8ce7.css.map create mode 100644 _static/._prefix-621.8c109e297bdd8ce7.css.map.gz create mode 100644 _static/._prefix-723.3bccd435914aa0ff.css create mode 100644 _static/._prefix-723.3bccd435914aa0ff.css.gz create mode 100644 _static/._prefix-723.3bccd435914aa0ff.css.map create mode 100644 _static/._prefix-723.3bccd435914aa0ff.css.map.gz create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt.gz create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js.gz create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js.map create mode 100644 _static/._prefix-723.3e6434f80549315a.bundle.js.map.gz create mode 100644 _static/._prefix-737.cf869b6ea8bfad2f.css create mode 100644 _static/._prefix-737.cf869b6ea8bfad2f.css.gz create mode 100644 _static/._prefix-737.cf869b6ea8bfad2f.css.map create mode 100644 _static/._prefix-737.cf869b6ea8bfad2f.css.map.gz create mode 100644 _static/._prefix-819.6edefe408d7482c2.css create mode 100644 _static/._prefix-819.6edefe408d7482c2.css.gz create mode 100644 _static/._prefix-819.6edefe408d7482c2.css.map create mode 100644 _static/._prefix-819.6edefe408d7482c2.css.map.gz create mode 100644 _static/._prefix-824.271ae6cff6401ed5.css create mode 100644 _static/._prefix-824.271ae6cff6401ed5.css.gz create mode 100644 _static/._prefix-824.271ae6cff6401ed5.css.map create mode 100644 _static/._prefix-824.271ae6cff6401ed5.css.map.gz create mode 100644 _static/._prefix-877.fa7c46f756cd5a82.css create mode 100644 _static/._prefix-877.fa7c46f756cd5a82.css.gz create mode 100644 _static/._prefix-877.fa7c46f756cd5a82.css.map create mode 100644 _static/._prefix-877.fa7c46f756cd5a82.css.map.gz create mode 100644 _static/._prefix-915.882512b642b7fffa.css create mode 100644 _static/._prefix-915.882512b642b7fffa.css.gz create mode 100644 _static/._prefix-915.882512b642b7fffa.css.map create mode 100644 _static/._prefix-915.882512b642b7fffa.css.map.gz create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt.gz create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js.gz create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map create mode 100644 _static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map.gz create mode 100644 _static/._prefix-runestone.f4ab138da65f4203.css create mode 100644 _static/._prefix-runestone.f4ab138da65f4203.css.gz create mode 100644 _static/._prefix-runestone.f4ab138da65f4203.css.map create mode 100644 _static/._prefix-runestone.f4ab138da65f4203.css.map.gz create mode 100644 _static/._prefix-runtime.42217a82c75796c8.bundle.js create mode 100644 _static/._prefix-runtime.42217a82c75796c8.bundle.js.gz create mode 100644 _static/._prefix-runtime.42217a82c75796c8.bundle.js.map create mode 100644 _static/._prefix-runtime.42217a82c75796c8.bundle.js.map.gz create mode 100644 _static/._sql-wasm.wasm create mode 100644 _static/._sql-wasm.wasm.gz create mode 100644 _static/._webpack_static_imports.json create mode 100644 _static/._webpack_static_imports.json.gz create mode 100644 _static/._webpack_static_imports.xml create mode 100644 _static/009b407a9881be10.ttf create mode 100644 _static/009b407a9881be10.ttf.gz create mode 100644 _static/115.648ff4b5650f4c7c.js create mode 100644 _static/115.648ff4b5650f4c7c.js.gz create mode 100644 _static/115.648ff4b5650f4c7c.js.map create mode 100644 _static/115.648ff4b5650f4c7c.js.map.gz create mode 100644 _static/126.a976f62852f30b51.js create mode 100644 _static/126.a976f62852f30b51.js.gz create mode 100644 _static/126.a976f62852f30b51.js.map create mode 100644 _static/126.a976f62852f30b51.js.map.gz create mode 100644 _static/128.5bed857c54ac4e8b.js create mode 100644 _static/128.5bed857c54ac4e8b.js.gz create mode 100644 _static/128.5bed857c54ac4e8b.js.map create mode 100644 _static/128.5bed857c54ac4e8b.js.map.gz create mode 100644 _static/131.ee437eeefadd750d.js create mode 100644 _static/131.ee437eeefadd750d.js.gz create mode 100644 _static/131.ee437eeefadd750d.js.map create mode 100644 _static/131.ee437eeefadd750d.js.map.gz create mode 100644 _static/168.fe63e6dec2d06468.js create mode 100644 _static/168.fe63e6dec2d06468.js.gz create mode 100644 _static/168.fe63e6dec2d06468.js.map create mode 100644 _static/168.fe63e6dec2d06468.js.map.gz create mode 100644 _static/186.be52164d57f4b7e4.js create mode 100644 _static/186.be52164d57f4b7e4.js.gz create mode 100644 _static/186.be52164d57f4b7e4.js.map create mode 100644 _static/186.be52164d57f4b7e4.js.map.gz create mode 100644 _static/249.7ec032cf0b3ede9a.js create mode 100644 _static/249.7ec032cf0b3ede9a.js.LICENSE.txt create mode 100644 _static/249.7ec032cf0b3ede9a.js.LICENSE.txt.gz create mode 100644 _static/249.7ec032cf0b3ede9a.js.gz create mode 100644 _static/249.7ec032cf0b3ede9a.js.map create mode 100644 _static/249.7ec032cf0b3ede9a.js.map.gz create mode 100644 _static/28.bb005543f41af5fb.js create mode 100644 _static/28.bb005543f41af5fb.js.LICENSE.txt create mode 100644 _static/28.bb005543f41af5fb.js.gz create mode 100644 _static/28.bb005543f41af5fb.js.map create mode 100644 _static/28.bb005543f41af5fb.js.map.gz create mode 100644 _static/296.37eb8c05642d8ef9.js create mode 100644 _static/296.37eb8c05642d8ef9.js.gz create mode 100644 _static/296.37eb8c05642d8ef9.js.map create mode 100644 _static/296.37eb8c05642d8ef9.js.map.gz create mode 100644 _static/340.c525bd899366c5f9.js create mode 100644 _static/340.c525bd899366c5f9.js.gz create mode 100644 _static/340.c525bd899366c5f9.js.map create mode 100644 _static/340.c525bd899366c5f9.js.map.gz create mode 100644 _static/357.a6fa55aea0c38a63.js create mode 100644 _static/357.a6fa55aea0c38a63.js.LICENSE.txt create mode 100644 _static/357.a6fa55aea0c38a63.js.LICENSE.txt.gz create mode 100644 _static/357.a6fa55aea0c38a63.js.gz create mode 100644 _static/357.a6fa55aea0c38a63.js.map create mode 100644 _static/357.a6fa55aea0c38a63.js.map.gz create mode 100644 _static/39.dc45aaf5abca8027.js create mode 100644 _static/39.dc45aaf5abca8027.js.LICENSE.txt create mode 100644 _static/39.dc45aaf5abca8027.js.gz create mode 100644 _static/39.dc45aaf5abca8027.js.map create mode 100644 _static/39.dc45aaf5abca8027.js.map.gz create mode 100644 _static/412.5965503d81003593.js create mode 100644 _static/412.5965503d81003593.js.gz create mode 100644 _static/412.5965503d81003593.js.map create mode 100644 _static/412.5965503d81003593.js.map.gz create mode 100644 _static/420.8dae5ad08a4e52ad.js create mode 100644 _static/420.8dae5ad08a4e52ad.js.LICENSE.txt create mode 100644 _static/420.8dae5ad08a4e52ad.js.gz create mode 100644 _static/420.8dae5ad08a4e52ad.js.map create mode 100644 _static/420.8dae5ad08a4e52ad.js.map.gz create mode 100644 _static/442.f48919e396acaa18.js create mode 100644 _static/442.f48919e396acaa18.js.gz create mode 100644 _static/442.f48919e396acaa18.js.map create mode 100644 _static/442.f48919e396acaa18.js.map.gz create mode 100644 _static/460.bae9001422d7a484.js create mode 100644 _static/460.bae9001422d7a484.js.gz create mode 100644 _static/460.bae9001422d7a484.js.map create mode 100644 _static/460.bae9001422d7a484.js.map.gz create mode 100644 _static/466.4e1a3fb09520281a.js create mode 100644 _static/466.4e1a3fb09520281a.js.gz create mode 100644 _static/466.4e1a3fb09520281a.js.map create mode 100644 _static/466.4e1a3fb09520281a.js.map.gz create mode 100644 _static/486.78d96ffc5c65634b.js create mode 100644 _static/486.78d96ffc5c65634b.js.gz create mode 100644 _static/486.78d96ffc5c65634b.js.map create mode 100644 _static/486.78d96ffc5c65634b.js.map.gz create mode 100644 _static/4ba85deaf3670942.woff create mode 100644 _static/529.115400ffea03835d.js create mode 100644 _static/529.115400ffea03835d.js.gz create mode 100644 _static/529.115400ffea03835d.js.map create mode 100644 _static/529.115400ffea03835d.js.map.gz create mode 100644 _static/566.0e38ac5442cc38c2.js create mode 100644 _static/566.0e38ac5442cc38c2.js.gz create mode 100644 _static/566.0e38ac5442cc38c2.js.map create mode 100644 _static/566.0e38ac5442cc38c2.js.map.gz create mode 100644 _static/576.f923ab1e9910a1be.js create mode 100644 _static/576.f923ab1e9910a1be.js.gz create mode 100644 _static/576.f923ab1e9910a1be.js.map create mode 100644 _static/576.f923ab1e9910a1be.js.map.gz create mode 100644 _static/580.f387819ad2e14f0a.js create mode 100644 _static/580.f387819ad2e14f0a.js.gz create mode 100644 _static/580.f387819ad2e14f0a.js.map create mode 100644 _static/580.f387819ad2e14f0a.js.map.gz create mode 100644 _static/616.89f80a32caf41aef.js create mode 100644 _static/616.89f80a32caf41aef.js.gz create mode 100644 _static/616.89f80a32caf41aef.js.map create mode 100644 _static/616.89f80a32caf41aef.js.map.gz create mode 100644 _static/625.120987bdd5293ae3.js create mode 100644 _static/625.120987bdd5293ae3.js.LICENSE.txt create mode 100644 _static/625.120987bdd5293ae3.js.LICENSE.txt.gz create mode 100644 _static/625.120987bdd5293ae3.js.gz create mode 100644 _static/625.120987bdd5293ae3.js.map create mode 100644 _static/625.120987bdd5293ae3.js.map.gz create mode 100644 _static/640.cbc8d3a34deb8837.js create mode 100644 _static/640.cbc8d3a34deb8837.js.map create mode 100644 _static/640.cbc8d3a34deb8837.js.map.gz create mode 100644 _static/662.1bb5065279414751.js create mode 100644 _static/662.1bb5065279414751.js.gz create mode 100644 _static/662.1bb5065279414751.js.map create mode 100644 _static/662.1bb5065279414751.js.map.gz create mode 100644 _static/669.05a3639d12541567.js create mode 100644 _static/669.05a3639d12541567.js.LICENSE.txt create mode 100644 _static/669.05a3639d12541567.js.gz create mode 100644 _static/669.05a3639d12541567.js.map create mode 100644 _static/669.05a3639d12541567.js.map.gz create mode 100644 _static/680.ec85c3ce31480628.js create mode 100644 _static/680.ec85c3ce31480628.js.gz create mode 100644 _static/680.ec85c3ce31480628.js.map create mode 100644 _static/680.ec85c3ce31480628.js.map.gz create mode 100644 _static/759.f27ff66e7ad33076.js create mode 100644 _static/759.f27ff66e7ad33076.js.gz create mode 100644 _static/759.f27ff66e7ad33076.js.map create mode 100644 _static/759.f27ff66e7ad33076.js.map.gz create mode 100644 _static/764.c33a81cafe63d2b6.js create mode 100644 _static/764.c33a81cafe63d2b6.js.LICENSE.txt create mode 100644 _static/764.c33a81cafe63d2b6.js.LICENSE.txt.gz create mode 100644 _static/764.c33a81cafe63d2b6.js.gz create mode 100644 _static/764.c33a81cafe63d2b6.js.map create mode 100644 _static/764.c33a81cafe63d2b6.js.map.gz create mode 100644 _static/770.7bd6d39128dde910.js create mode 100644 _static/770.7bd6d39128dde910.js.LICENSE.txt create mode 100644 _static/770.7bd6d39128dde910.js.LICENSE.txt.gz create mode 100644 _static/770.7bd6d39128dde910.js.gz create mode 100644 _static/770.7bd6d39128dde910.js.map create mode 100644 _static/770.7bd6d39128dde910.js.map.gz create mode 100644 _static/7a0f4b092e86cb52.eot create mode 100644 _static/817.3438cd0f1b0f98bc.js create mode 100644 _static/817.3438cd0f1b0f98bc.js.gz create mode 100644 _static/817.3438cd0f1b0f98bc.js.map create mode 100644 _static/817.3438cd0f1b0f98bc.js.map.gz create mode 100644 _static/819.3e20e27de12f3abf.js create mode 100644 _static/819.3e20e27de12f3abf.js.gz create mode 100644 _static/819.3e20e27de12f3abf.js.map create mode 100644 _static/819.3e20e27de12f3abf.js.map.gz create mode 100644 _static/824.4343b78afc34c12f.js create mode 100644 _static/824.4343b78afc34c12f.js.gz create mode 100644 _static/824.4343b78afc34c12f.js.map create mode 100644 _static/824.4343b78afc34c12f.js.map.gz create mode 100644 _static/85f0466cb4ab3a4d.svg create mode 100644 _static/85f0466cb4ab3a4d.svg.gz create mode 100644 _static/877.fc49cc812ccc4937.js create mode 100644 _static/877.fc49cc812ccc4937.js.gz create mode 100644 _static/877.fc49cc812ccc4937.js.map create mode 100644 _static/877.fc49cc812ccc4937.js.map.gz create mode 100644 _static/915.8f500bccc86f901d.js create mode 100644 _static/915.8f500bccc86f901d.js.gz create mode 100644 _static/915.8f500bccc86f901d.js.map create mode 100644 _static/915.8f500bccc86f901d.js.map.gz create mode 100644 _static/919.237aced0c044e4b6.js create mode 100644 _static/919.237aced0c044e4b6.js.gz create mode 100644 _static/919.237aced0c044e4b6.js.map create mode 100644 _static/919.237aced0c044e4b6.js.map.gz create mode 100644 _static/_runestone-services.xml create mode 100644 _static/b70781972ce7320b.woff2 create mode 100644 _static/prefix-115.83df5da0966564d5.css create mode 100644 _static/prefix-115.83df5da0966564d5.css.gz create mode 100644 _static/prefix-115.83df5da0966564d5.css.map create mode 100644 _static/prefix-115.83df5da0966564d5.css.map.gz create mode 100644 _static/prefix-131.b184379d0dc5871b.css create mode 100644 _static/prefix-131.b184379d0dc5871b.css.gz create mode 100644 _static/prefix-131.b184379d0dc5871b.css.map create mode 100644 _static/prefix-131.b184379d0dc5871b.css.map.gz create mode 100644 _static/prefix-168.1c4deaed00ca1f5e.css create mode 100644 _static/prefix-168.1c4deaed00ca1f5e.css.gz create mode 100644 _static/prefix-168.1c4deaed00ca1f5e.css.map create mode 100644 _static/prefix-168.1c4deaed00ca1f5e.css.map.gz create mode 100644 _static/prefix-186.0d47de180767fda9.css create mode 100644 _static/prefix-186.0d47de180767fda9.css.map create mode 100644 _static/prefix-186.0d47de180767fda9.css.map.gz create mode 100644 _static/prefix-198.86b6b2a70a576922.css create mode 100644 _static/prefix-198.86b6b2a70a576922.css.gz create mode 100644 _static/prefix-198.86b6b2a70a576922.css.map create mode 100644 _static/prefix-198.86b6b2a70a576922.css.map.gz create mode 100644 _static/prefix-249.6ca19da539a8ed1a.css create mode 100644 _static/prefix-249.6ca19da539a8ed1a.css.gz create mode 100644 _static/prefix-249.6ca19da539a8ed1a.css.map create mode 100644 _static/prefix-249.6ca19da539a8ed1a.css.map.gz create mode 100644 _static/prefix-294.986bf74bfa4ccbd4.css create mode 100644 _static/prefix-294.986bf74bfa4ccbd4.css.gz create mode 100644 _static/prefix-294.986bf74bfa4ccbd4.css.map create mode 100644 _static/prefix-294.986bf74bfa4ccbd4.css.map.gz create mode 100644 _static/prefix-350.dbca9271f6e2dfbf.css create mode 100644 _static/prefix-350.dbca9271f6e2dfbf.css.gz create mode 100644 _static/prefix-350.dbca9271f6e2dfbf.css.map create mode 100644 _static/prefix-350.dbca9271f6e2dfbf.css.map.gz create mode 100644 _static/prefix-380.67748940131a4a84.css create mode 100644 _static/prefix-380.67748940131a4a84.css.map create mode 100644 _static/prefix-380.67748940131a4a84.css.map.gz create mode 100644 _static/prefix-39.89cf817b9a35aeca.css create mode 100644 _static/prefix-39.89cf817b9a35aeca.css.gz create mode 100644 _static/prefix-39.89cf817b9a35aeca.css.map create mode 100644 _static/prefix-39.89cf817b9a35aeca.css.map.gz create mode 100644 _static/prefix-412.25f3c4ff23eb9893.css create mode 100644 _static/prefix-412.25f3c4ff23eb9893.css.gz create mode 100644 _static/prefix-412.25f3c4ff23eb9893.css.map create mode 100644 _static/prefix-412.25f3c4ff23eb9893.css.map.gz create mode 100644 _static/prefix-442.6ae0ea584f8e75c5.css create mode 100644 _static/prefix-442.6ae0ea584f8e75c5.css.gz create mode 100644 _static/prefix-442.6ae0ea584f8e75c5.css.map create mode 100644 _static/prefix-442.6ae0ea584f8e75c5.css.map.gz create mode 100644 _static/prefix-460.7c0b70502d117f7d.css create mode 100644 _static/prefix-460.7c0b70502d117f7d.css.map create mode 100644 _static/prefix-486.990aca82e7ba3e1c.css create mode 100644 _static/prefix-486.990aca82e7ba3e1c.css.gz create mode 100644 _static/prefix-486.990aca82e7ba3e1c.css.map create mode 100644 _static/prefix-486.990aca82e7ba3e1c.css.map.gz create mode 100644 _static/prefix-576.9b1852878840651d.css create mode 100644 _static/prefix-576.9b1852878840651d.css.gz create mode 100644 _static/prefix-576.9b1852878840651d.css.map create mode 100644 _static/prefix-576.9b1852878840651d.css.map.gz create mode 100644 _static/prefix-580.22958d4327b0425a.css create mode 100644 _static/prefix-580.22958d4327b0425a.css.gz create mode 100644 _static/prefix-580.22958d4327b0425a.css.map create mode 100644 _static/prefix-580.22958d4327b0425a.css.map.gz create mode 100644 _static/prefix-616.5c78f604ddad1ec0.css create mode 100644 _static/prefix-616.5c78f604ddad1ec0.css.gz create mode 100644 _static/prefix-616.5c78f604ddad1ec0.css.map create mode 100644 _static/prefix-616.5c78f604ddad1ec0.css.map.gz create mode 100644 _static/prefix-621.8c109e297bdd8ce7.css create mode 100644 _static/prefix-621.8c109e297bdd8ce7.css.gz create mode 100644 _static/prefix-621.8c109e297bdd8ce7.css.map create mode 100644 _static/prefix-621.8c109e297bdd8ce7.css.map.gz create mode 100644 _static/prefix-723.3bccd435914aa0ff.css create mode 100644 _static/prefix-723.3bccd435914aa0ff.css.gz create mode 100644 _static/prefix-723.3bccd435914aa0ff.css.map create mode 100644 _static/prefix-723.3bccd435914aa0ff.css.map.gz create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt.gz create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js.gz create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js.map create mode 100644 _static/prefix-723.3e6434f80549315a.bundle.js.map.gz create mode 100644 _static/prefix-737.cf869b6ea8bfad2f.css create mode 100644 _static/prefix-737.cf869b6ea8bfad2f.css.gz create mode 100644 _static/prefix-737.cf869b6ea8bfad2f.css.map create mode 100644 _static/prefix-737.cf869b6ea8bfad2f.css.map.gz create mode 100644 _static/prefix-819.6edefe408d7482c2.css create mode 100644 _static/prefix-819.6edefe408d7482c2.css.gz create mode 100644 _static/prefix-819.6edefe408d7482c2.css.map create mode 100644 _static/prefix-819.6edefe408d7482c2.css.map.gz create mode 100644 _static/prefix-824.271ae6cff6401ed5.css create mode 100644 _static/prefix-824.271ae6cff6401ed5.css.gz create mode 100644 _static/prefix-824.271ae6cff6401ed5.css.map create mode 100644 _static/prefix-824.271ae6cff6401ed5.css.map.gz create mode 100644 _static/prefix-877.fa7c46f756cd5a82.css create mode 100644 _static/prefix-877.fa7c46f756cd5a82.css.gz create mode 100644 _static/prefix-877.fa7c46f756cd5a82.css.map create mode 100644 _static/prefix-877.fa7c46f756cd5a82.css.map.gz create mode 100644 _static/prefix-915.882512b642b7fffa.css create mode 100644 _static/prefix-915.882512b642b7fffa.css.gz create mode 100644 _static/prefix-915.882512b642b7fffa.css.map create mode 100644 _static/prefix-915.882512b642b7fffa.css.map.gz create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt.gz create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js.gz create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js.map create mode 100644 _static/prefix-runestone.7e141ad8414abf4a.bundle.js.map.gz create mode 100644 _static/prefix-runestone.f4ab138da65f4203.css create mode 100644 _static/prefix-runestone.f4ab138da65f4203.css.gz create mode 100644 _static/prefix-runestone.f4ab138da65f4203.css.map create mode 100644 _static/prefix-runestone.f4ab138da65f4203.css.map.gz create mode 100644 _static/prefix-runtime.42217a82c75796c8.bundle.js create mode 100644 _static/prefix-runtime.42217a82c75796c8.bundle.js.gz create mode 100644 _static/prefix-runtime.42217a82c75796c8.bundle.js.map create mode 100644 _static/prefix-runtime.42217a82c75796c8.bundle.js.map.gz create mode 100644 _static/pretext/css/print-worksheet.css create mode 100644 _static/pretext/css/print-worksheet.css.map create mode 100644 _static/pretext/css/theme.css create mode 100644 _static/pretext/css/theme.css.map create mode 100644 _static/pretext/js/answer.js create mode 100644 _static/pretext/js/diagcess/diagcess.js create mode 100644 _static/pretext/js/edit.js create mode 100644 _static/pretext/js/highlight.js create mode 100644 _static/pretext/js/instructor.js create mode 100644 _static/pretext/js/lib/jquery.espy.min.js create mode 100644 _static/pretext/js/lib/jquery.min.js create mode 100644 _static/pretext/js/lib/jquery.sticky.js create mode 100644 _static/pretext/js/lib/knowl.js create mode 100644 _static/pretext/js/lib/mathjaxknowl.js create mode 100644 _static/pretext/js/lib/mathjaxknowl3.js create mode 100644 _static/pretext/js/login.js create mode 100644 _static/pretext/js/lti_iframe_resizer.js create mode 100644 _static/pretext/js/pretext-stack/stackapicalls.js create mode 100644 _static/pretext/js/pretext-stack/stackjsvle.js create mode 100644 _static/pretext/js/pretext-webwork/2.16/pretext-webwork.js create mode 100644 _static/pretext/js/pretext-webwork/2.17/pretext-webwork.js create mode 100644 _static/pretext/js/pretext-webwork/2.18/pretext-webwork.js create mode 100644 _static/pretext/js/pretext-webwork/2.19/pretext-webwork.js create mode 100644 _static/pretext/js/pretext-webwork/2.20/pretext-webwork.js create mode 100644 _static/pretext/js/pretext.js create mode 100644 _static/pretext/js/pretext_add_on.js create mode 100644 _static/pretext/js/pretext_search.js create mode 100644 _static/pretext/js/ptx_search.js create mode 100644 _static/pretext/js/user_preferences.js create mode 100644 _static/sql-wasm.wasm create mode 100644 _static/sql-wasm.wasm.gz create mode 100644 _static/webpack_static_imports.json create mode 100644 _static/webpack_static_imports.json.gz create mode 100644 _static/webpack_static_imports.xml create mode 100644 backmatter-2.html create mode 100644 backmatter.html create mode 100644 ch-Confidence-Intervals.html create mode 100644 ch-Expected-Value.html create mode 100644 ch-Hypothesis-Testing.html create mode 100644 ch-Linear-Regression.html create mode 100644 ch-Probability.html create mode 100644 ch-Random-Variables.html create mode 100644 ch-chapter-title.html create mode 100644 front-colophon.html create mode 100644 frontmatter.html create mode 100644 index.html create mode 100644 lunr-pretext-search-index.js create mode 100644 my-great-book.html create mode 100644 sec-section-name.html diff --git a/.mapping.json b/.mapping.json new file mode 100644 index 0000000..f274a1b --- /dev/null +++ b/.mapping.json @@ -0,0 +1 @@ +{"source/main.ptx": ["my-great-book"], "source/frontmatter.ptx": ["frontmatter", "front-colophon"], "source/ch-1-Probability.ptx": ["ch-Probability"], "source/sec-section-name.ptx": ["sec-section-name"], "source/ch-2-Random-Variables.ptx": ["ch-Random-Variables"], "source/ch-3-Expected-Value.ptx": ["ch-Expected-Value"], "source/ch-4-Confidence-Intervals.ptx": ["ch-Confidence-Intervals"], "source/ch-5-Hypothesis-Testing.ptx": ["ch-Hypothesis-Testing"], "source/ch-6-Linear-Regression.ptx": ["ch-Linear-Regression"], "source/backmatter.ptx": ["backmatter"]} \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_static/._009b407a9881be10.ttf b/_static/._009b407a9881be10.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._009b407a9881be10.ttf.gz b/_static/._009b407a9881be10.ttf.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._115.648ff4b5650f4c7c.js b/_static/._115.648ff4b5650f4c7c.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._115.648ff4b5650f4c7c.js.gz b/_static/._115.648ff4b5650f4c7c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._115.648ff4b5650f4c7c.js.map b/_static/._115.648ff4b5650f4c7c.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._115.648ff4b5650f4c7c.js.map.gz b/_static/._115.648ff4b5650f4c7c.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._126.a976f62852f30b51.js b/_static/._126.a976f62852f30b51.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._126.a976f62852f30b51.js.gz b/_static/._126.a976f62852f30b51.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._126.a976f62852f30b51.js.map b/_static/._126.a976f62852f30b51.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._126.a976f62852f30b51.js.map.gz b/_static/._126.a976f62852f30b51.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._128.5bed857c54ac4e8b.js b/_static/._128.5bed857c54ac4e8b.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._128.5bed857c54ac4e8b.js.gz b/_static/._128.5bed857c54ac4e8b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._128.5bed857c54ac4e8b.js.map b/_static/._128.5bed857c54ac4e8b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._128.5bed857c54ac4e8b.js.map.gz b/_static/._128.5bed857c54ac4e8b.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._131.ee437eeefadd750d.js b/_static/._131.ee437eeefadd750d.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._131.ee437eeefadd750d.js.gz b/_static/._131.ee437eeefadd750d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._131.ee437eeefadd750d.js.map b/_static/._131.ee437eeefadd750d.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._131.ee437eeefadd750d.js.map.gz b/_static/._131.ee437eeefadd750d.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._168.fe63e6dec2d06468.js b/_static/._168.fe63e6dec2d06468.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._168.fe63e6dec2d06468.js.gz b/_static/._168.fe63e6dec2d06468.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._168.fe63e6dec2d06468.js.map b/_static/._168.fe63e6dec2d06468.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._168.fe63e6dec2d06468.js.map.gz b/_static/._168.fe63e6dec2d06468.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._186.be52164d57f4b7e4.js b/_static/._186.be52164d57f4b7e4.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._186.be52164d57f4b7e4.js.gz b/_static/._186.be52164d57f4b7e4.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._186.be52164d57f4b7e4.js.map b/_static/._186.be52164d57f4b7e4.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._186.be52164d57f4b7e4.js.map.gz b/_static/._186.be52164d57f4b7e4.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js b/_static/._249.7ec032cf0b3ede9a.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js.LICENSE.txt b/_static/._249.7ec032cf0b3ede9a.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js.LICENSE.txt.gz b/_static/._249.7ec032cf0b3ede9a.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js.gz b/_static/._249.7ec032cf0b3ede9a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js.map b/_static/._249.7ec032cf0b3ede9a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._249.7ec032cf0b3ede9a.js.map.gz b/_static/._249.7ec032cf0b3ede9a.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._28.bb005543f41af5fb.js b/_static/._28.bb005543f41af5fb.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._28.bb005543f41af5fb.js.LICENSE.txt b/_static/._28.bb005543f41af5fb.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._28.bb005543f41af5fb.js.gz b/_static/._28.bb005543f41af5fb.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._28.bb005543f41af5fb.js.map b/_static/._28.bb005543f41af5fb.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._28.bb005543f41af5fb.js.map.gz b/_static/._28.bb005543f41af5fb.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._296.37eb8c05642d8ef9.js b/_static/._296.37eb8c05642d8ef9.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._296.37eb8c05642d8ef9.js.gz b/_static/._296.37eb8c05642d8ef9.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._296.37eb8c05642d8ef9.js.map b/_static/._296.37eb8c05642d8ef9.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._296.37eb8c05642d8ef9.js.map.gz b/_static/._296.37eb8c05642d8ef9.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._340.c525bd899366c5f9.js b/_static/._340.c525bd899366c5f9.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._340.c525bd899366c5f9.js.gz b/_static/._340.c525bd899366c5f9.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._340.c525bd899366c5f9.js.map b/_static/._340.c525bd899366c5f9.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._340.c525bd899366c5f9.js.map.gz b/_static/._340.c525bd899366c5f9.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js b/_static/._357.a6fa55aea0c38a63.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js.LICENSE.txt b/_static/._357.a6fa55aea0c38a63.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js.LICENSE.txt.gz b/_static/._357.a6fa55aea0c38a63.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js.gz b/_static/._357.a6fa55aea0c38a63.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js.map b/_static/._357.a6fa55aea0c38a63.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._357.a6fa55aea0c38a63.js.map.gz b/_static/._357.a6fa55aea0c38a63.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._39.dc45aaf5abca8027.js b/_static/._39.dc45aaf5abca8027.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._39.dc45aaf5abca8027.js.LICENSE.txt b/_static/._39.dc45aaf5abca8027.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._39.dc45aaf5abca8027.js.gz b/_static/._39.dc45aaf5abca8027.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._39.dc45aaf5abca8027.js.map b/_static/._39.dc45aaf5abca8027.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._39.dc45aaf5abca8027.js.map.gz b/_static/._39.dc45aaf5abca8027.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._412.5965503d81003593.js b/_static/._412.5965503d81003593.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._412.5965503d81003593.js.gz b/_static/._412.5965503d81003593.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._412.5965503d81003593.js.map b/_static/._412.5965503d81003593.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._412.5965503d81003593.js.map.gz b/_static/._412.5965503d81003593.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._420.8dae5ad08a4e52ad.js b/_static/._420.8dae5ad08a4e52ad.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._420.8dae5ad08a4e52ad.js.LICENSE.txt b/_static/._420.8dae5ad08a4e52ad.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._420.8dae5ad08a4e52ad.js.gz b/_static/._420.8dae5ad08a4e52ad.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._420.8dae5ad08a4e52ad.js.map b/_static/._420.8dae5ad08a4e52ad.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._420.8dae5ad08a4e52ad.js.map.gz b/_static/._420.8dae5ad08a4e52ad.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._442.f48919e396acaa18.js b/_static/._442.f48919e396acaa18.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._442.f48919e396acaa18.js.gz b/_static/._442.f48919e396acaa18.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._442.f48919e396acaa18.js.map b/_static/._442.f48919e396acaa18.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._442.f48919e396acaa18.js.map.gz b/_static/._442.f48919e396acaa18.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._460.bae9001422d7a484.js b/_static/._460.bae9001422d7a484.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._460.bae9001422d7a484.js.gz b/_static/._460.bae9001422d7a484.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._460.bae9001422d7a484.js.map b/_static/._460.bae9001422d7a484.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._460.bae9001422d7a484.js.map.gz b/_static/._460.bae9001422d7a484.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._466.4e1a3fb09520281a.js b/_static/._466.4e1a3fb09520281a.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._466.4e1a3fb09520281a.js.gz b/_static/._466.4e1a3fb09520281a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._466.4e1a3fb09520281a.js.map b/_static/._466.4e1a3fb09520281a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._466.4e1a3fb09520281a.js.map.gz b/_static/._466.4e1a3fb09520281a.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._486.78d96ffc5c65634b.js b/_static/._486.78d96ffc5c65634b.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._486.78d96ffc5c65634b.js.gz b/_static/._486.78d96ffc5c65634b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._486.78d96ffc5c65634b.js.map b/_static/._486.78d96ffc5c65634b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._486.78d96ffc5c65634b.js.map.gz b/_static/._486.78d96ffc5c65634b.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._4ba85deaf3670942.woff b/_static/._4ba85deaf3670942.woff new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._529.115400ffea03835d.js b/_static/._529.115400ffea03835d.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._529.115400ffea03835d.js.gz b/_static/._529.115400ffea03835d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._529.115400ffea03835d.js.map b/_static/._529.115400ffea03835d.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._529.115400ffea03835d.js.map.gz b/_static/._529.115400ffea03835d.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._566.0e38ac5442cc38c2.js b/_static/._566.0e38ac5442cc38c2.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._566.0e38ac5442cc38c2.js.gz b/_static/._566.0e38ac5442cc38c2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._566.0e38ac5442cc38c2.js.map b/_static/._566.0e38ac5442cc38c2.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._566.0e38ac5442cc38c2.js.map.gz b/_static/._566.0e38ac5442cc38c2.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._576.f923ab1e9910a1be.js b/_static/._576.f923ab1e9910a1be.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._576.f923ab1e9910a1be.js.gz b/_static/._576.f923ab1e9910a1be.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._576.f923ab1e9910a1be.js.map b/_static/._576.f923ab1e9910a1be.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._576.f923ab1e9910a1be.js.map.gz b/_static/._576.f923ab1e9910a1be.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._580.f387819ad2e14f0a.js b/_static/._580.f387819ad2e14f0a.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._580.f387819ad2e14f0a.js.gz b/_static/._580.f387819ad2e14f0a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._580.f387819ad2e14f0a.js.map b/_static/._580.f387819ad2e14f0a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._580.f387819ad2e14f0a.js.map.gz b/_static/._580.f387819ad2e14f0a.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._616.89f80a32caf41aef.js b/_static/._616.89f80a32caf41aef.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._616.89f80a32caf41aef.js.gz b/_static/._616.89f80a32caf41aef.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._616.89f80a32caf41aef.js.map b/_static/._616.89f80a32caf41aef.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._616.89f80a32caf41aef.js.map.gz b/_static/._616.89f80a32caf41aef.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js b/_static/._625.120987bdd5293ae3.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js.LICENSE.txt b/_static/._625.120987bdd5293ae3.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js.LICENSE.txt.gz b/_static/._625.120987bdd5293ae3.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js.gz b/_static/._625.120987bdd5293ae3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js.map b/_static/._625.120987bdd5293ae3.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._625.120987bdd5293ae3.js.map.gz b/_static/._625.120987bdd5293ae3.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._640.cbc8d3a34deb8837.js b/_static/._640.cbc8d3a34deb8837.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._640.cbc8d3a34deb8837.js.map b/_static/._640.cbc8d3a34deb8837.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._640.cbc8d3a34deb8837.js.map.gz b/_static/._640.cbc8d3a34deb8837.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._662.1bb5065279414751.js b/_static/._662.1bb5065279414751.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._662.1bb5065279414751.js.gz b/_static/._662.1bb5065279414751.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._662.1bb5065279414751.js.map b/_static/._662.1bb5065279414751.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._662.1bb5065279414751.js.map.gz b/_static/._662.1bb5065279414751.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._669.05a3639d12541567.js b/_static/._669.05a3639d12541567.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._669.05a3639d12541567.js.LICENSE.txt b/_static/._669.05a3639d12541567.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._669.05a3639d12541567.js.gz b/_static/._669.05a3639d12541567.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._669.05a3639d12541567.js.map b/_static/._669.05a3639d12541567.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._669.05a3639d12541567.js.map.gz b/_static/._669.05a3639d12541567.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._680.ec85c3ce31480628.js b/_static/._680.ec85c3ce31480628.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._680.ec85c3ce31480628.js.gz b/_static/._680.ec85c3ce31480628.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._680.ec85c3ce31480628.js.map b/_static/._680.ec85c3ce31480628.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._680.ec85c3ce31480628.js.map.gz b/_static/._680.ec85c3ce31480628.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._759.f27ff66e7ad33076.js b/_static/._759.f27ff66e7ad33076.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._759.f27ff66e7ad33076.js.gz b/_static/._759.f27ff66e7ad33076.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._759.f27ff66e7ad33076.js.map b/_static/._759.f27ff66e7ad33076.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._759.f27ff66e7ad33076.js.map.gz b/_static/._759.f27ff66e7ad33076.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js b/_static/._764.c33a81cafe63d2b6.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js.LICENSE.txt b/_static/._764.c33a81cafe63d2b6.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js.LICENSE.txt.gz b/_static/._764.c33a81cafe63d2b6.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js.gz b/_static/._764.c33a81cafe63d2b6.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js.map b/_static/._764.c33a81cafe63d2b6.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._764.c33a81cafe63d2b6.js.map.gz b/_static/._764.c33a81cafe63d2b6.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js b/_static/._770.7bd6d39128dde910.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js.LICENSE.txt b/_static/._770.7bd6d39128dde910.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js.LICENSE.txt.gz b/_static/._770.7bd6d39128dde910.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js.gz b/_static/._770.7bd6d39128dde910.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js.map b/_static/._770.7bd6d39128dde910.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._770.7bd6d39128dde910.js.map.gz b/_static/._770.7bd6d39128dde910.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._7a0f4b092e86cb52.eot b/_static/._7a0f4b092e86cb52.eot new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._817.3438cd0f1b0f98bc.js b/_static/._817.3438cd0f1b0f98bc.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._817.3438cd0f1b0f98bc.js.gz b/_static/._817.3438cd0f1b0f98bc.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._817.3438cd0f1b0f98bc.js.map b/_static/._817.3438cd0f1b0f98bc.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._817.3438cd0f1b0f98bc.js.map.gz b/_static/._817.3438cd0f1b0f98bc.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._819.3e20e27de12f3abf.js b/_static/._819.3e20e27de12f3abf.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._819.3e20e27de12f3abf.js.gz b/_static/._819.3e20e27de12f3abf.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._819.3e20e27de12f3abf.js.map b/_static/._819.3e20e27de12f3abf.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._819.3e20e27de12f3abf.js.map.gz b/_static/._819.3e20e27de12f3abf.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._824.4343b78afc34c12f.js b/_static/._824.4343b78afc34c12f.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._824.4343b78afc34c12f.js.gz b/_static/._824.4343b78afc34c12f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._824.4343b78afc34c12f.js.map b/_static/._824.4343b78afc34c12f.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._824.4343b78afc34c12f.js.map.gz b/_static/._824.4343b78afc34c12f.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._85f0466cb4ab3a4d.svg b/_static/._85f0466cb4ab3a4d.svg new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._85f0466cb4ab3a4d.svg.gz b/_static/._85f0466cb4ab3a4d.svg.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._877.fc49cc812ccc4937.js b/_static/._877.fc49cc812ccc4937.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._877.fc49cc812ccc4937.js.gz b/_static/._877.fc49cc812ccc4937.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._877.fc49cc812ccc4937.js.map b/_static/._877.fc49cc812ccc4937.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._877.fc49cc812ccc4937.js.map.gz b/_static/._877.fc49cc812ccc4937.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._915.8f500bccc86f901d.js b/_static/._915.8f500bccc86f901d.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._915.8f500bccc86f901d.js.gz b/_static/._915.8f500bccc86f901d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._915.8f500bccc86f901d.js.map b/_static/._915.8f500bccc86f901d.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._915.8f500bccc86f901d.js.map.gz b/_static/._915.8f500bccc86f901d.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._919.237aced0c044e4b6.js b/_static/._919.237aced0c044e4b6.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._919.237aced0c044e4b6.js.gz b/_static/._919.237aced0c044e4b6.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._919.237aced0c044e4b6.js.map b/_static/._919.237aced0c044e4b6.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._919.237aced0c044e4b6.js.map.gz b/_static/._919.237aced0c044e4b6.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._b70781972ce7320b.woff2 b/_static/._b70781972ce7320b.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-115.83df5da0966564d5.css b/_static/._prefix-115.83df5da0966564d5.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-115.83df5da0966564d5.css.gz b/_static/._prefix-115.83df5da0966564d5.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-115.83df5da0966564d5.css.map b/_static/._prefix-115.83df5da0966564d5.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-115.83df5da0966564d5.css.map.gz b/_static/._prefix-115.83df5da0966564d5.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-131.b184379d0dc5871b.css b/_static/._prefix-131.b184379d0dc5871b.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-131.b184379d0dc5871b.css.gz b/_static/._prefix-131.b184379d0dc5871b.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-131.b184379d0dc5871b.css.map b/_static/._prefix-131.b184379d0dc5871b.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-131.b184379d0dc5871b.css.map.gz b/_static/._prefix-131.b184379d0dc5871b.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-168.1c4deaed00ca1f5e.css b/_static/._prefix-168.1c4deaed00ca1f5e.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-168.1c4deaed00ca1f5e.css.gz b/_static/._prefix-168.1c4deaed00ca1f5e.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-168.1c4deaed00ca1f5e.css.map b/_static/._prefix-168.1c4deaed00ca1f5e.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-168.1c4deaed00ca1f5e.css.map.gz b/_static/._prefix-168.1c4deaed00ca1f5e.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-186.0d47de180767fda9.css b/_static/._prefix-186.0d47de180767fda9.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-186.0d47de180767fda9.css.map b/_static/._prefix-186.0d47de180767fda9.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-186.0d47de180767fda9.css.map.gz b/_static/._prefix-186.0d47de180767fda9.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-198.86b6b2a70a576922.css b/_static/._prefix-198.86b6b2a70a576922.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-198.86b6b2a70a576922.css.gz b/_static/._prefix-198.86b6b2a70a576922.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-198.86b6b2a70a576922.css.map b/_static/._prefix-198.86b6b2a70a576922.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-198.86b6b2a70a576922.css.map.gz b/_static/._prefix-198.86b6b2a70a576922.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-249.6ca19da539a8ed1a.css b/_static/._prefix-249.6ca19da539a8ed1a.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-249.6ca19da539a8ed1a.css.gz b/_static/._prefix-249.6ca19da539a8ed1a.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-249.6ca19da539a8ed1a.css.map b/_static/._prefix-249.6ca19da539a8ed1a.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-249.6ca19da539a8ed1a.css.map.gz b/_static/._prefix-249.6ca19da539a8ed1a.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-294.986bf74bfa4ccbd4.css b/_static/._prefix-294.986bf74bfa4ccbd4.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-294.986bf74bfa4ccbd4.css.gz b/_static/._prefix-294.986bf74bfa4ccbd4.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-294.986bf74bfa4ccbd4.css.map b/_static/._prefix-294.986bf74bfa4ccbd4.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-294.986bf74bfa4ccbd4.css.map.gz b/_static/._prefix-294.986bf74bfa4ccbd4.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-350.dbca9271f6e2dfbf.css b/_static/._prefix-350.dbca9271f6e2dfbf.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-350.dbca9271f6e2dfbf.css.gz b/_static/._prefix-350.dbca9271f6e2dfbf.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-350.dbca9271f6e2dfbf.css.map b/_static/._prefix-350.dbca9271f6e2dfbf.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-350.dbca9271f6e2dfbf.css.map.gz b/_static/._prefix-350.dbca9271f6e2dfbf.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-380.67748940131a4a84.css b/_static/._prefix-380.67748940131a4a84.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-380.67748940131a4a84.css.map b/_static/._prefix-380.67748940131a4a84.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-380.67748940131a4a84.css.map.gz b/_static/._prefix-380.67748940131a4a84.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-39.89cf817b9a35aeca.css b/_static/._prefix-39.89cf817b9a35aeca.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-39.89cf817b9a35aeca.css.gz b/_static/._prefix-39.89cf817b9a35aeca.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-39.89cf817b9a35aeca.css.map b/_static/._prefix-39.89cf817b9a35aeca.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-39.89cf817b9a35aeca.css.map.gz b/_static/._prefix-39.89cf817b9a35aeca.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-412.25f3c4ff23eb9893.css b/_static/._prefix-412.25f3c4ff23eb9893.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-412.25f3c4ff23eb9893.css.gz b/_static/._prefix-412.25f3c4ff23eb9893.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-412.25f3c4ff23eb9893.css.map b/_static/._prefix-412.25f3c4ff23eb9893.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-412.25f3c4ff23eb9893.css.map.gz b/_static/._prefix-412.25f3c4ff23eb9893.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-442.6ae0ea584f8e75c5.css b/_static/._prefix-442.6ae0ea584f8e75c5.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-442.6ae0ea584f8e75c5.css.gz b/_static/._prefix-442.6ae0ea584f8e75c5.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-442.6ae0ea584f8e75c5.css.map b/_static/._prefix-442.6ae0ea584f8e75c5.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-442.6ae0ea584f8e75c5.css.map.gz b/_static/._prefix-442.6ae0ea584f8e75c5.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-460.7c0b70502d117f7d.css b/_static/._prefix-460.7c0b70502d117f7d.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-460.7c0b70502d117f7d.css.map b/_static/._prefix-460.7c0b70502d117f7d.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-486.990aca82e7ba3e1c.css b/_static/._prefix-486.990aca82e7ba3e1c.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-486.990aca82e7ba3e1c.css.gz b/_static/._prefix-486.990aca82e7ba3e1c.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-486.990aca82e7ba3e1c.css.map b/_static/._prefix-486.990aca82e7ba3e1c.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-486.990aca82e7ba3e1c.css.map.gz b/_static/._prefix-486.990aca82e7ba3e1c.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-576.9b1852878840651d.css b/_static/._prefix-576.9b1852878840651d.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-576.9b1852878840651d.css.gz b/_static/._prefix-576.9b1852878840651d.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-576.9b1852878840651d.css.map b/_static/._prefix-576.9b1852878840651d.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-576.9b1852878840651d.css.map.gz b/_static/._prefix-576.9b1852878840651d.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-580.22958d4327b0425a.css b/_static/._prefix-580.22958d4327b0425a.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-580.22958d4327b0425a.css.gz b/_static/._prefix-580.22958d4327b0425a.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-580.22958d4327b0425a.css.map b/_static/._prefix-580.22958d4327b0425a.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-580.22958d4327b0425a.css.map.gz b/_static/._prefix-580.22958d4327b0425a.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-616.5c78f604ddad1ec0.css b/_static/._prefix-616.5c78f604ddad1ec0.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-616.5c78f604ddad1ec0.css.gz b/_static/._prefix-616.5c78f604ddad1ec0.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-616.5c78f604ddad1ec0.css.map b/_static/._prefix-616.5c78f604ddad1ec0.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-616.5c78f604ddad1ec0.css.map.gz b/_static/._prefix-616.5c78f604ddad1ec0.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-621.8c109e297bdd8ce7.css b/_static/._prefix-621.8c109e297bdd8ce7.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-621.8c109e297bdd8ce7.css.gz b/_static/._prefix-621.8c109e297bdd8ce7.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-621.8c109e297bdd8ce7.css.map b/_static/._prefix-621.8c109e297bdd8ce7.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-621.8c109e297bdd8ce7.css.map.gz b/_static/._prefix-621.8c109e297bdd8ce7.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3bccd435914aa0ff.css b/_static/._prefix-723.3bccd435914aa0ff.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3bccd435914aa0ff.css.gz b/_static/._prefix-723.3bccd435914aa0ff.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3bccd435914aa0ff.css.map b/_static/._prefix-723.3bccd435914aa0ff.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3bccd435914aa0ff.css.map.gz b/_static/._prefix-723.3bccd435914aa0ff.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js b/_static/._prefix-723.3e6434f80549315a.bundle.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt b/_static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt.gz b/_static/._prefix-723.3e6434f80549315a.bundle.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js.gz b/_static/._prefix-723.3e6434f80549315a.bundle.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js.map b/_static/._prefix-723.3e6434f80549315a.bundle.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-723.3e6434f80549315a.bundle.js.map.gz b/_static/._prefix-723.3e6434f80549315a.bundle.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-737.cf869b6ea8bfad2f.css b/_static/._prefix-737.cf869b6ea8bfad2f.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-737.cf869b6ea8bfad2f.css.gz b/_static/._prefix-737.cf869b6ea8bfad2f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-737.cf869b6ea8bfad2f.css.map b/_static/._prefix-737.cf869b6ea8bfad2f.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-737.cf869b6ea8bfad2f.css.map.gz b/_static/._prefix-737.cf869b6ea8bfad2f.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-819.6edefe408d7482c2.css b/_static/._prefix-819.6edefe408d7482c2.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-819.6edefe408d7482c2.css.gz b/_static/._prefix-819.6edefe408d7482c2.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-819.6edefe408d7482c2.css.map b/_static/._prefix-819.6edefe408d7482c2.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-819.6edefe408d7482c2.css.map.gz b/_static/._prefix-819.6edefe408d7482c2.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-824.271ae6cff6401ed5.css b/_static/._prefix-824.271ae6cff6401ed5.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-824.271ae6cff6401ed5.css.gz b/_static/._prefix-824.271ae6cff6401ed5.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-824.271ae6cff6401ed5.css.map b/_static/._prefix-824.271ae6cff6401ed5.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-824.271ae6cff6401ed5.css.map.gz b/_static/._prefix-824.271ae6cff6401ed5.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-877.fa7c46f756cd5a82.css b/_static/._prefix-877.fa7c46f756cd5a82.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-877.fa7c46f756cd5a82.css.gz b/_static/._prefix-877.fa7c46f756cd5a82.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-877.fa7c46f756cd5a82.css.map b/_static/._prefix-877.fa7c46f756cd5a82.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-877.fa7c46f756cd5a82.css.map.gz b/_static/._prefix-877.fa7c46f756cd5a82.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-915.882512b642b7fffa.css b/_static/._prefix-915.882512b642b7fffa.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-915.882512b642b7fffa.css.gz b/_static/._prefix-915.882512b642b7fffa.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-915.882512b642b7fffa.css.map b/_static/._prefix-915.882512b642b7fffa.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-915.882512b642b7fffa.css.map.gz b/_static/._prefix-915.882512b642b7fffa.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt.gz b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.LICENSE.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.gz b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map.gz b/_static/._prefix-runestone.7e141ad8414abf4a.bundle.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.f4ab138da65f4203.css b/_static/._prefix-runestone.f4ab138da65f4203.css new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.f4ab138da65f4203.css.gz b/_static/._prefix-runestone.f4ab138da65f4203.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.f4ab138da65f4203.css.map b/_static/._prefix-runestone.f4ab138da65f4203.css.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runestone.f4ab138da65f4203.css.map.gz b/_static/._prefix-runestone.f4ab138da65f4203.css.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runtime.42217a82c75796c8.bundle.js b/_static/._prefix-runtime.42217a82c75796c8.bundle.js new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runtime.42217a82c75796c8.bundle.js.gz b/_static/._prefix-runtime.42217a82c75796c8.bundle.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runtime.42217a82c75796c8.bundle.js.map b/_static/._prefix-runtime.42217a82c75796c8.bundle.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._prefix-runtime.42217a82c75796c8.bundle.js.map.gz b/_static/._prefix-runtime.42217a82c75796c8.bundle.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._sql-wasm.wasm b/_static/._sql-wasm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._sql-wasm.wasm.gz b/_static/._sql-wasm.wasm.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._webpack_static_imports.json b/_static/._webpack_static_imports.json new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._webpack_static_imports.json.gz b/_static/._webpack_static_imports.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/._webpack_static_imports.xml b/_static/._webpack_static_imports.xml new file mode 100644 index 0000000000000000000000000000000000000000..d4c638481f3a3a657f36d188ef835324080a1acd GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S oBE&_L^K!kB^sueM$V05C2SK>z>% literal 0 HcmV?d00001 diff --git a/_static/009b407a9881be10.ttf b/_static/009b407a9881be10.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 literal 0 HcmV?d00001 diff --git a/_static/115.648ff4b5650f4c7c.js b/_static/115.648ff4b5650f4c7c.js new file mode 100644 index 0000000..7a7615a --- /dev/null +++ b/_static/115.648ff4b5650f4c7c.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[115,198,294,350,380,621,737,819],{46424:(t,e,i)=>{i.r(e),i.d(e,{default:()=>o});var s=i(78673),n=(i(64466),i(9919),i(48819),i(73565),i(58529),i(56759),i(52420),i(14566));class r extends n.MatchingProblem{constructor(t){super(t),this.renderTimedIcon(this.containerDiv),this.hideButtons(),this.needsReinitialization=!0}hideButtons(){this.gradeBtn.style.display="none",this.helpBtn.style.display="none"}renderTimedIcon(t){var e=document.createElement("div"),i=document.createElement("img");i.src="../_static/clock.png",i.style.width="15px",i.style.height="15px",e.className="timeTip",e.title="",e.appendChild(i),t.prepend(e)}checkCorrectTimed(){switch(this.correct){case!0:return"T";case!1:return"F";default:return null}}hideFeedback(){this.connList.style.display="none"}reinitializeListeners(){}}void 0===window.component_factory&&(window.component_factory={}),window.component_factory.matching=function(t){return t.timed?new r(t):new n.MatchingProblem(t)};var a=i(10662);class o extends s.A{constructor(t){super(t);var e=t.orig;this.origElem=e,this.divid=e.id,this.children=this.origElem.childNodes,this.visited=[],this.timeLimit=0,this.limitedTime=!1,isNaN($(this.origElem).data("time"))||(this.timeLimit=60*parseInt($(this.origElem).data("time"),10),this.startingTime=this.timeLimit,this.limitedTime=!0),this.showFeedback=!0,this.origElem.hasAttribute("data-no-feedback")&&(this.showFeedback=!1),this.origElem.hasAttribute("data-show-feedback")&&("yes"===this.origElem.getAttribute("data-show-feedback")?this.showFeedback=!0:this.showFeedback=!1),this.showResults=!1,this.origElem.hasAttribute("data-result")&&(this.showResults=!1),this.random=!1,this.origElem.hasAttribute("data-random")&&(this.random=!0),this.showTimer=!0,this.origElem.hasAttribute("data-no-timer")&&(this.showTimer=!1),this.origElem.hasAttribute("data-timer")&&("yes"===this.origElem.getAttribute("data-timer")?this.showTimer=!0:this.showTimer=!1),this.fullwidth=!1,this.origElem.hasAttribute("data-fullwidth")&&(this.fullwidth=!0),this.nopause=!1,this.origElem.hasAttribute("data-no-pause")&&(this.nopause=!0),this.origElem.hasAttribute("data-pause")&&("yes"===this.origElem.getAttribute("data-pause")?this.nopause=!1:this.nopause=!0),eBookConfig.enableScratchAC=!1,this.running=0,this.paused=0,this.done=0,this.taken=0,this.score=0,this.incorrect=0,this.correctStr="",this.incorrectStr="",this.skippedStr="",this.skipped=0,this.currentQuestionIndex=0,this.renderedQuestionArray=[],this.getNewChildren(),eBookConfig.enableDebug||(document.body.oncontextmenu=function(){return!1}),this.checkAssessmentStatus().then(function(){this.renderTimedAssess()}.bind(this))}getNewChildren(){this.newChildren=[];let t=this.origElem.querySelectorAll(".runestone");for(var e=0;e1&&this.renderNavControls(),this.renderSubmitButton(),this.renderFeedbackContainer(),this.useRunestoneServices=eBookConfig.useRunestoneServices,$(this.origElem).replaceWith(this.containerDiv),this.styleExamElements(),this.checkServer("timedExam",!0)}disableCutCopyPaste(){document.addEventListener("cut",(function(t){t.preventDefault()})),document.addEventListener("copy",(function(t){t.preventDefault()})),document.addEventListener("paste",(function(t){t.preventDefault()}))}renderContainer(){this.containerDiv=document.createElement("div"),this.fullwidth&&$(this.containerDiv).attr({style:"max-width:none"}),this.containerDiv.classList.add("runestone-sphinx"),this.containerDiv.id=this.divid,this.timedDiv=document.createElement("div"),this.navDiv=document.createElement("div"),$(this.navDiv).attr({style:"text-align:center"}),this.flagDiv=document.createElement("div"),$(this.flagDiv).attr({style:"text-align: center"}),this.switchContainer=document.createElement("div"),this.switchContainer.classList.add("switchcontainer"),this.switchDiv=document.createElement("div"),this.timedDiv.appendChild(this.navDiv),this.timedDiv.appendChild(this.flagDiv),this.timedDiv.appendChild(this.switchContainer),this.switchContainer.appendChild(this.switchDiv),$(this.timedDiv).attr({id:"timed_Test",style:"display:none"})}renderTimer(){this.wrapperDiv=document.createElement("div"),this.timerContainer=document.createElement("P"),this.wrapperDiv.id=this.divid+"-startWrapper",this.timerContainer.id=this.divid+"-output",this.wrapperDiv.appendChild(this.timerContainer),this.showTime()}renderControlButtons(){this.controlDiv=document.createElement("div"),$(this.controlDiv).attr({id:"controls",style:"text-align: center"}),this.startBtn=document.createElement("button"),this.pauseBtn=document.createElement("button"),$(this.startBtn).attr({class:"btn btn-success",id:"start",tabindex:"0",role:"button"}),this.startBtn.textContent="Start",this.startBtn.addEventListener("click",async function(){$(this.finishButton).hide(),$(this.flagButton).show();let t=document.createElement("p");t.innerHTML="Warning: You will not be able to continue the exam if you close this tab, close the window, or navigate away from this page! Make sure you click the Finish Exam button when you are done to submit your work!",this.controlDiv.appendChild(t),t.classList.add("examwarning"),await this.renderTimedQuestion(),this.startAssessment()}.bind(this),!1),$(this.pauseBtn).attr({class:"btn btn-default",id:"pause",disabled:"true",tabindex:"0",role:"button"}),this.pauseBtn.textContent="Pause",this.pauseBtn.addEventListener("click",function(){this.pauseAssessment()}.bind(this),!1),this.taken||this.controlDiv.appendChild(this.startBtn),this.nopause||this.controlDiv.appendChild(this.pauseBtn),this.containerDiv.appendChild(this.wrapperDiv),this.containerDiv.appendChild(this.controlDiv)}renderNavControls(){var t,e;this.pagNavList=document.createElement("ul"),$(this.pagNavList).addClass("pagination"),this.leftContainer=document.createElement("li"),this.leftNavButton=document.createElement("button"),this.leftNavButton.innerHTML="‹ Prev",$(this.leftNavButton).attr("aria-label","Previous"),$(this.leftNavButton).attr("tabindex","0"),$(this.leftNavButton).attr("role","button"),$(this.rightNavButton).attr("id","prev"),$(this.leftNavButton).css("cursor","pointer"),this.leftContainer.appendChild(this.leftNavButton),this.pagNavList.appendChild(this.leftContainer),this.flaggingPlace=document.createElement("ul"),$(this.flaggingPlace).addClass("pagination"),this.flagContainer=document.createElement("li"),this.flagButton=document.createElement("button"),$(this.flagButton).addClass("flagBtn"),this.flagButton.innerHTML="Flag Question",$(this.flagButton).attr("aria-labelledby","Flag"),$(this.flagButton).attr("tabindex","5"),$(this.flagButton).attr("role","button"),$(this.flagButton).attr("id","flag"),$(this.flagButton).css("cursor","pointer"),this.flagContainer.appendChild(this.flagButton),this.flaggingPlace.appendChild(this.flagContainer),this.rightContainer=document.createElement("li"),this.rightNavButton=document.createElement("button"),$(this.rightNavButton).attr("aria-label","Next"),$(this.rightNavButton).attr("tabindex","0"),$(this.rightNavButton).attr("role","button"),$(this.rightNavButton).attr("id","next"),this.rightNavButton.innerHTML="Next ›",$(this.rightNavButton).css("cursor","pointer"),this.rightContainer.appendChild(this.rightNavButton),this.pagNavList.appendChild(this.rightContainer),this.ensureButtonSafety(),this.navDiv.appendChild(this.pagNavList),this.flagDiv.appendChild(this.flaggingPlace),this.break=document.createElement("br"),this.navDiv.appendChild(this.break),this.qNumList=document.createElement("ul"),$(this.qNumList).attr("id","pageNums"),this.qNumWrapperList=document.createElement("ul"),$(this.qNumWrapperList).addClass("pagination");for(var i=0;i ul > li:eq("+this.currentQuestionIndex+")").addClass("broken"),"exam_ended"==this.renderedQuestionArray[this.currentQuestionIndex].state&&$("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").addClass("toolate"),this.renderedQuestionArray[this.currentQuestionIndex].question.isAnswered&&($("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").addClass("answered"),await this.renderedQuestionArray[this.currentQuestionIndex].question.checkCurrentAnswer(),this.done||await this.renderedQuestionArray[this.currentQuestionIndex].question.logCurrentAnswer())}async handleNextPrev(t){this.taken||await this.navigateAway();var e=$(t.target).text();if(e.match(/Next/)){if($(this.rightContainer).hasClass("disabled"))return;this.currentQuestionIndex++}else if(e.match(/Prev/)){if($(this.leftContainer).hasClass("disabled"))return;this.currentQuestionIndex--}await this.renderTimedQuestion(),this.ensureButtonSafety();for(var i=0;i ul > li:eq("+this.currentQuestionIndex+")").addClass("active"),$("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").hasClass("flagcolor")?this.flagButton.innerHTML="Unflag Question":this.flagButton.innerHTML="Flag Question"}async handleFlag(t){$(t.target).text().match(/Flag Question/)?($("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").addClass("flagcolor"),this.flagButton.innerHTML="Unflag Question"):($("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").removeClass("flagcolor"),this.flagButton.innerHTML="Flag Question")}async handleNumberedNav(t){this.taken||await this.navigateAway();for(var e=0;ethis.renderedQuestionArray.length&&(console.log(`Error: bad index for ${s}`),this.currentQuestionIndex=n),$("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").addClass("active"),$("ul#pageNums > ul > li:eq("+this.currentQuestionIndex+")").hasClass("flagcolor")?this.flagButton.innerHTML="Unflag Question":this.flagButton.innerHTML="Flag Question",await this.renderTimedQuestion(),this.ensureButtonSafety()}navBtnListeners(){this.pagNavList.addEventListener("click",this.handleNextPrev.bind(this),!1),this.qNumList.addEventListener("click",this.handleNumberedNav.bind(this),!1)}flagBtnListener(){this.flaggingPlace.addEventListener("click",this.handleFlag.bind(this),!1)}renderSubmitButton(){this.buttonContainer=document.createElement("div"),$(this.buttonContainer).attr({style:"text-align:center"}),this.finishButton=document.createElement("button"),$(this.finishButton).attr({id:"finish",class:"btn btn-primary"}),this.finishButton.textContent="Finish Exam",this.finishButton.addEventListener("click",async function(){let t=this.renderedQuestionArray.filter((t=>!t.question.isAnswered)).length,e=t>0?`You have skipped ${t} question(s).`:"";window.confirm(`${e} Clicking OK means you are ready to submit your answers and are finished with this assessment.`)&&(await this.finishAssessment(),$(this.flagButton).hide())}.bind(this),!1),this.controlDiv.appendChild(this.finishButton),$(this.finishButton).hide(),this.timedDiv.appendChild(this.buttonContainer)}ensureButtonSafety(){0===this.currentQuestionIndex&&(1!=this.renderedQuestionArray.length&&$(this.rightContainer).removeClass("disabled"),$(this.leftContainer).addClass("disabled")),this.currentQuestionIndex>=this.renderedQuestionArray.length-1&&(1!=this.renderedQuestionArray.length&&$(this.leftContainer).removeClass("disabled"),$(this.rightContainer).addClass("disabled")),this.currentQuestionIndex>0&&this.currentQuestionIndexYou have already taken this exam",this.scoreDiv.style.display="block"):(this.scoreDiv.id=this.divid+"results",this.scoreDiv.style.display="none"),this.containerDiv.appendChild(this.scoreDiv)}createRenderedQuestionArray(){for(var t,e=0;e0&&(i=$(i).children("[data-component]")[0],t.orig=i),$(i).is("[data-component]")&&this.renderedQuestionArray.push(t)}}randomizeRQA(){for(var t,e,i=this.renderedQuestionArray.length;0!==i;)e=Math.floor(Math.random()*i),i-=1,t=this.renderedQuestionArray[i],this.renderedQuestionArray[i]=this.renderedQuestionArray[e],this.renderedQuestionArray[e]=t}async renderTimedQuestion(){if(this.currentQuestionIndex>=this.renderedQuestionArray.length)return;let t,e=this.renderedQuestionArray[this.currentQuestionIndex];if("prepared"===e.state||"forreview"===e.state||"broken_exam"===e.state&&e.initAttempts<3){let t=e.orig;if($(t).is("[data-component=selectquestion]"))if(this.done&&"prepared"==e.state)this.renderedQuestionArray[this.currentQuestionIndex].state="exam_ended";else{e.rqa=this.renderedQuestionArray;let t=new a.default(e);this.renderedQuestionArray[this.currentQuestionIndex]={question:t};try{await t.initialize(),"broken_exam"==e.state&&$(`ul#pageNums > ul > li:eq(${this.currentQuestionIndex})`).removeClass("broken")}catch(t){e.state="broken_exam",this.renderedQuestionArray[this.currentQuestionIndex]=e,console.log(`Error initializing question: Details ${t}`)}}else if($(t).is("[data-component]")){let i=$(t).data("component");this.renderedQuestionArray[this.currentQuestionIndex]={question:window.component_factory[i](e),state:e.state}}}else if("broken_exam"===e.state)return;t=this.renderedQuestionArray[this.currentQuestionIndex].question,"forreview"===e.state&&(await t.component_ready_promise,await t.checkCurrentAnswer(),t.renderFeedback(),t.disableInteraction()),this.visited.includes(this.currentQuestionIndex)||(this.visited.push(this.currentQuestionIndex),this.visited.length!==this.renderedQuestionArray.length||this.done||$(this.finishButton).show()),t.containerDiv&&(0==t.containerDiv.classList.contains("runestone")&&t.containerDiv.classList.add("runestone"),$(this.switchDiv).replaceWith(t.containerDiv),this.switchDiv=t.containerDiv),t.needsReinitialization&&t.reinitializeListeners(this.taken)}handlePrevAssessment(){$(this.startBtn).hide(),$(this.pauseBtn).attr("disabled",!0),$(this.finishButton).attr("disabled",!0),this.running=0,this.done=1,this.showResults&&this.showFeedback?($(this.timedDiv).show(),this.restoreAnsweredQuestions()):($(this.pauseBtn).hide(),$(this.timerContainer).hide())}startAssessment(){if(this.taken)this.handlePrevAssessment();else{if($("#relations-next").hide(),$("#relations-prev").hide(),$(this.startBtn).hide(),$(this.pauseBtn).attr("disabled",!1),0===this.running&&0===this.paused){this.running=1,this.lastTime=Date.now(),$(this.timedDiv).show(),this.increment(),this.logBookEvent({event:"timedExam",act:"start",div_id:this.divid});var t=new Date,e={answer:[0,0,this.renderedQuestionArray.length,0],timestamp:t};localStorage.setItem(this.localStorageKey(),JSON.stringify(e))}$(window).on("beforeunload",function(t){if(!this.done)return t.preventDefault(),t.returnValue="Are you sure you want to leave? Your work will be lost! And you will need your instructor to reset the exam!","Are you sure you want to leave? Your work will be lost!"}.bind(this)),window.addEventListener("pagehide",async function(t){this.done||(await this.finishAssessment(),console.log("Exam exited by leaving page"))}.bind(this))}}pauseAssessment(){0===this.done&&(1===this.running?(this.logBookEvent({event:"timedExam",act:"pause",div_id:this.divid}),this.running=0,this.paused=1,this.pauseBtn.innerHTML="Resume",$(this.timedDiv).hide()):(this.logBookEvent({event:"timedExam",act:"resume",div_id:this.divid}),this.running=1,this.paused=0,this.increment(),this.pauseBtn.innerHTML="Pause",$(this.timedDiv).show()))}showTime(){if(this.showTimer){var t=Math.floor(this.timeLimit/60),e=Math.floor(this.timeLimit)%60,i=t,s=e;t<10&&(i="0"+t),e<10&&(s="0"+e);var n="Time Remaining ";this.limitedTime||(n="Time Taken ");var r=n+i+":"+s;if(this.done||this.taken){var a=Math.floor(this.timeTaken/60),o=Math.floor(this.timeTaken%60);a<10&&(a="0"+a),o<10&&(o="0"+o),r="Time taken: "+a+":"+o}this.timerContainer.innerHTML=r;for(var h=document.getElementsByClassName("timeTip"),d=0;d<=h.length-1;d++)h[d].title=r}else $(this.timerContainer).hide()}increment(){1!==this.running||this.taken||setTimeout(function(){let t=Date.now();if(this.limitedTime?this.timeLimit=this.timeLimit-Math.floor((t-this.lastTime)/1e3):this.timeLimit=this.timeLimit+Math.floor((t-this.lastTime)/1e3),this.lastTime=t,localStorage.setItem(eBookConfig.email+":"+this.divid+"-time",this.timeLimit),this.showTime(),this.timeLimit>0)this.increment();else if($(this.startBtn).attr({disabled:"true"}),$(this.finishButton).attr({disabled:"true"}),this.running=0,this.done=1,!this.taken){this.taken=!0;let t=document.createElement("h1");t.innerHTML="Sorry but you ran out of time. Your answers are being submitted",this.controlDiv.appendChild(t),this.finishAssessment()}}.bind(this),1e3)}styleExamElements(){$(this.timerContainer).css({width:"50%",margin:"0 auto","background-color":"#DFF0D8","text-align":"center",border:"2px solid #DFF0D8","border-radius":"25px"}),$(this.scoreDiv).css({width:"50%",margin:"0 auto","background-color":"#DFF0D8","text-align":"center",border:"2px solid #DFF0D8","border-radius":"25px"}),$(".tooltipTime").css({margin:"0",padding:"0","background-color":"black",color:"white"})}async finishAssessment(){$("#relations-next").show(),$("#relations-prev").show(),this.showFeedback||($(this.timedDiv).hide(),$(this.pauseBtn).hide(),$(this.timerContainer).hide()),this.findTimeTaken(),this.running=0,this.done=1,this.taken=1,await this.finalizeProblems(),this.checkScore(),this.displayScore(),this.storeScore(),this.logScore(),$(this.pauseBtn).attr("disabled",!0),this.finishButton.disabled=!0,$(window).off("beforeunload");let t=this.divid;setTimeout((function(){jQuery.ajax({url:eBookConfig.app+"/assignments/student_autograde",type:"POST",dataType:"JSON",data:{assignment_id:t,is_timed:!0},success:function(t){0==t.success?console.log(t.message):console.log("Autograder completed")}})}),2e3)}async finalizeProblems(){var t=this.renderedQuestionArray[this.currentQuestionIndex].question;await t.checkCurrentAnswer(),await t.logCurrentAnswer(),t.renderFeedback(),t.disableInteraction();for(var e=0;e0?this.correctStr=this.correctStr.substring(0,this.correctStr.length-2):this.correctStr="None",this.skippedStr.length>0?this.skippedStr=this.skippedStr.substring(0,this.skippedStr.length-2):this.skippedStr="None",this.incorrectStr.length>0?this.incorrectStr=this.incorrectStr.substring(0,this.incorrectStr.length-2):this.incorrectStr="None"}findTimeTaken(){this.limitedTime?this.timeTaken=this.startingTime-this.timeLimit:this.timeTaken=this.timeLimit}storeScore(){var t=[];t.push(this.score,this.correctStr,this.incorrect,this.incorrectStr,this.skipped,this.skippedStr,this.timeTaken);var e=new Date,i=JSON.stringify({answer:t,timestamp:e});localStorage.setItem(this.localStorageKey(),i)}logScore(){this.logBookEvent({event:"timedExam",act:"finish",div_id:this.divid,correct:this.score,incorrect:this.incorrect,skipped:this.skipped,time_taken:this.timeTaken})}shouldUseServer(t){var e;if(0===localStorage.length)return!0;var i=localStorage.getItem(this.localStorageKey());if(null===i)return!0;try{var s=JSON.parse(i).answer;if(4==s.length){if(t.correct==s[0]&&t.incorrect==s[1]&&t.skipped==s[2]&&t.timeTaken==s[3])return!0}else if(7==s.length&&t.correct==s[0]&&t.incorrect==s[2]&&t.skipped==s[4]&&t.timeTaken==s[6])return!1;e=new Date(JSON.parse(i[1]).timestamp)}catch(t){return console.log(t.message),localStorage.removeItem(this.localStorageKey()),!0}return!(new Date(t.timestamp)0&&null!==localStorage.getItem(this.localStorageKey())?(this.taken=1,this.restoreAnswers("")):this.taken=0}async restoreAnswers(t){var e;if(this.taken=1,""===t)try{e=JSON.parse(localStorage.getItem(this.localStorageKey())).answer}catch(t){return console.log(t.message),localStorage.removeItem(this.localStorageKey()),void(this.taken=0)}else e=[parseInt(t.correct),parseInt(t.incorrect),parseInt(t.skipped),parseInt(t.time_taken),t.reset],this.setLocalStorage(e);if(1==e.length)return this.reset=!0,void(this.taken=0);4==e.length||5==e.length?(this.score=e[0],this.incorrect=e[1],this.skipped=e[2],this.timeTaken=e[3]):7==e.length?(this.score=e[0],this.correctStr=e[1],this.incorrect=e[2],this.incorrectStr=e[3],this.skipped=e[4],this.skippedStr=e[5],this.timeTaken=e[6]):(this.score=0,this.incorrect=0,this.skipped=this.renderedQuestionArray.length,this.timeTaken=0),this.taken&&(this.skipped===this.renderedQuestionArray.length&&(this.showFeedback=!1),this.handlePrevAssessment()),await this.renderTimedQuestion(),this.displayScore(),this.showTime()}setLocalStorage(t){var e={answer:t,timestamp:new Date};localStorage.setItem(this.localStorageKey(),JSON.stringify(e))}displayScore(){if(this.showResults){var t,e="";this.correctStr.length>0||this.incorrectStr.length>0||this.skippedStr.length>0?(e=`Num Correct: ${this.score}. Questions: ${this.correctStr}
Num Wrong: ${this.incorrect}. Questions: ${this.incorrectStr}
Num Skipped: ${this.skipped}. Questions: ${this.skippedStr}
`,t=this.score+this.incorrect+this.skipped,e+="Percent Correct: "+(this.score/t*100).toFixed(2)+"%",$(this.scoreDiv).html(e),this.scoreDiv.style.display="block"):(e=`Num Correct: ${this.score}
Num Wrong: ${this.incorrect}
Num Skipped: ${this.skipped}
`,t=this.score+this.incorrect+this.skipped,e+="Percent Correct: "+(this.score/t*100).toFixed(2)+"%",$(this.scoreDiv).html(e),this.scoreDiv.style.display="block"),this.highlightNumberedList()}else $(this.scoreDiv).html("Thank you for taking the exam. Your answers have been recorded."),this.scoreDiv.style.display="block"}highlightNumberedList(){var t=this.correctStr,e=this.incorrectStr,i=this.skippedStr;t=t.replace(/ /g,"").split(","),e=e.replace(/ /g,"").split(","),i=i.replace(/ /g,"").split(","),$((function(){var s=$("ul#pageNums > ul > li");s.hasClass("answered")&&s.removeClass("answered");for(var n=0;n{i.r(e),i.d(e,{default:()=>a});var s=i(78673),n=i(83057);class r extends s.A{constructor(t){if(super(t),t){var e=t.orig;this.useRunestoneServices=t.useRunestoneServices||eBookConfig.useRunestoneServices,this.origElem=e,this.divid=e.id,this.question=this.origElem.innerHTML,this.optional=!1,this.attachURL=t.attachURL,this.origElem.hasAttribute("data-optional")&&(this.optional=!0),this.origElem.hasAttribute("data-attachment")&&(this.attachment=!0),this.placeholder=this.origElem.getAttribute("data-placeholder")||"Write your answer here",this.renderHTML(),this.caption="shortanswer",this.addCaption("runestone"),this.checkServer("shortanswer",!0),"undefined"!=typeof Prism&&Prism.highlightAllUnder(this.containerDiv),this.attachment&&this.getAttachmentName()}}renderHTML(){this.containerDiv=document.createElement("div"),this.containerDiv.id=this.divid,this.containerDiv.classList.add(...(this.origElem.getAttribute("class")||"").split(" ").filter(Boolean)),this.newForm=document.createElement("form"),this.newForm.id=this.divid+"_journal",this.newForm.name=this.newForm.id,this.newForm.action="",this.containerDiv.appendChild(this.newForm),this.fieldSet=document.createElement("fieldset"),this.newForm.appendChild(this.fieldSet),this.firstLegendDiv=document.createElement("div"),this.firstLegendDiv.innerHTML=this.question,this.firstLegendDiv.classList.add("journal-question"),this.firstLegendDiv.classList.add("exercise-statement"),this.fieldSet.appendChild(this.firstLegendDiv),this.jInputDiv=document.createElement("div"),this.jInputDiv.id=this.divid+"_journal_input",this.fieldSet.appendChild(this.jInputDiv),this.jOptionsDiv=document.createElement("div"),this.jOptionsDiv.classList.add("journal-options"),this.jInputDiv.appendChild(this.jOptionsDiv),this.jTextArea=document.createElement("textarea");let t=this;if(this.jTextArea.onchange=function(){t.isAnswered=!0},this.jTextArea.id=this.divid+"_solution",this.jTextArea.setAttribute("aria-label","textarea"),this.jTextArea.placeholder=this.placeholder,this.jTextArea.style.display="inline",this.jTextArea.style.width="530px",this.jTextArea.classList.add("form-control"),this.jTextArea.rows=4,this.jTextArea.cols=50,this.jOptionsDiv.appendChild(this.jTextArea),this.jTextArea.onchange=function(){this.isAnswered=!0,this.isTimed?this.feedbackDiv.innerHTML="Your answer is automatically saved.":this.feedbackDiv.innerHTML="Your answer has not been saved yet!",this.feedbackDiv.classList.remove("alert-success"),this.feedbackDiv.classList.add("alert","alert-danger")}.bind(this),this.jTextArea.addEventListener("input",(()=>{this.jTextArea.style.height="auto",this.jTextArea.style.height=`${this.jTextArea.scrollHeight}px`,this.renderMath(this.jTextArea.value)})),this.buttonDiv=document.createElement("div"),this.fieldSet.appendChild(this.buttonDiv),this.submitButton=document.createElement("button"),this.submitButton.classList.add("btn","btn-success"),this.submitButton.type="button",this.submitButton.textContent="Save",this.submitButton.onclick=function(){this.checkCurrentAnswer(),this.logCurrentAnswer(),this.renderFeedback()}.bind(this),this.buttonDiv.appendChild(this.submitButton),this.otherOptionsDiv=document.createElement("div"),this.otherOptionsDiv.style.paddingLeft="20px",this.otherOptionsDiv.classList.add("journal-options"),this.fieldSet.appendChild(this.otherOptionsDiv),this.feedbackDiv=document.createElement("div"),this.feedbackDiv.style.width="530px",this.feedbackDiv.style.fontStyle="italic",this.feedbackDiv.id=this.divid+"_feedback",this.feedbackDiv.style.display="none",this.fieldSet.appendChild(this.feedbackDiv),this.attachment){let t=document.createElement("div");if(this.attachDiv=t,this.graderactive){let e=document.createElement("button");e.type="button",e.innerHTML="View Attachment",e.onclick=this.viewFile.bind(this),t.appendChild(e)}else this.fileUpload=document.createElement("input"),this.fileUpload.type="file",this.fileUpload.id=`${this.divid}_fileme`,t.appendChild(this.fileUpload);this.containerDiv.appendChild(t)}this.origElem.replaceWith(this.containerDiv),"undefined"!=typeof MathJax&&this.queueMathJax(this.containerDiv)}renderMath(t){(0,n.u)(t)?(this.renderedAnswer||(this.renderedAnswerLabel=document.createElement("label"),this.renderedAnswerLabel.innerHTML="Rendered Answer:",this.renderedAnswerLabel.id=this.divid+"_rendered_answer_label",this.renderedAnswerLabel.style.display="none",this.fieldSet.appendChild(this.renderedAnswerLabel),this.renderedAnswer=document.createElement("div"),this.renderedAnswer.classList.add("latexoutput"),this.renderedAnswer.setAttribute("aria-labelledby",this.renderedAnswerLabel.id),this.renderedAnswer.setAttribute("aria-live","polite"),this.renderedAnswer.style.display="none",this.fieldSet.appendChild(this.renderedAnswer)),t=(t=(t=t.replace(/\$\$(.*?)\$\$/g,"\\[ $1 \\]")).replace(/\$(.*?)\$/g,"\\( $1 \\)")).replace(/\n/g,"
"),this.renderedAnswer.innerHTML=t,this.renderedAnswer.style.display="block",this.renderedAnswerLabel.style.display="block",this.queueMathJax(this.renderedAnswer)):this.renderedAnswer&&(this.renderedAnswer.style.display="none",this.renderedAnswerLabel.style.display="none")}async checkCurrentAnswer(){let t=document.getElementById(this.divid+"_solution").value;this.renderMath(t),this.setLocalStorage({answer:t,timestamp:new Date})}async logCurrentAnswer(t){let e=document.getElementById(this.divid+"_solution").value;this.renderMath(e),this.setLocalStorage({answer:e,timestamp:new Date});let i={event:"shortanswer",act:e,answer:e,div_id:this.divid};void 0!==t&&(i.sid=t),await this.logBookEvent(i),this.attachment&&await this.uploadFile()}renderFeedback(){this.feedbackDiv.innerHTML="Your answer has been saved.",this.feedbackDiv.classList.remove("alert-danger"),this.feedbackDiv.classList.add("alert","alert-success"),this.feedbackDiv.style.display="block"}setLocalStorage(t){if(!this.graderactive){let e=this.localStorageKey();localStorage.setItem(e,JSON.stringify(t))}}checkLocalStorage(){var t="";if(!this.graderactive&&localStorage.length>0){var e=localStorage.getItem(this.localStorageKey());if(null!==e){try{t=JSON.parse(e).answer}catch(t){return console.log(t.message),void localStorage.removeItem(this.localStorageKey())}let i=document.getElementById(this.divid+"_solution");i&&(i.value=t),this.renderMath(t)}}}restoreAnswers(t){t.answer||(t.answer=""),this.answer=t.answer,this.jTextArea.value=this.answer,this.renderMath(this.answer);let e=document.createElement("p");e.classList.add("shortanswer__timestamp"),this.jInputDiv.appendChild(e);var i;if(i=t.timestamp?new Date(t.timestamp).toLocaleString():"",e.textContent=i,this.jTextArea.style.height="auto",this.jTextArea.style.height=`${this.jTextArea.scrollHeight}px`,t.last_answer){this.current_answer="ontime";let s=document.createElement("button");s.type="button",s.textContent="Show Late Answer",s.classList.add("btn","btn-warning"),s.style.marginLeft="5px",s.addEventListener("click",function(){var n,r;"ontime"===this.current_answer?(this.jTextArea.value=t.last_answer,this.answer=t.last_answer,n=new Date(t.last_timestamp).toLocaleString(),r="Show on-Time Answer",this.current_answer="late"):(this.jTextArea.value=t.answer,this.answer=t.answer,n=i,r="Show Late Answer",this.current_answer="ontime"),this.renderMath(this.answer),e.textContent=`Submitted: ${n}`,s.textContent=r}.bind(this)),this.buttonDiv.appendChild(s)}let s="";void 0!==t.score&&(s=`Score: ${t.score}`),t.comment&&(s+=` -- ${t.comment}`),""!==s&&(this.feedbackDiv.innerHTML=s,this.feedbackDiv.style.display="block",this.feedbackDiv.classList.add("alert","alert-success"))}disableInteraction(){this.jTextArea.disabled=!0}async getAttachmentName(){let t=`/ns/assessment/has_attachment/${this.divid}`;this.sid&&(t+=`?sid=${this.sid}`);const e=await fetch(t);if(!e.ok)return console.error("Error fetching attachment name:",e.statusText),null;const i=await e.json();if(i.detail.hasAttachment){let t=i.detail.hasAttachment;t=t.substring(t.lastIndexOf("/")+1);let e=document.createElement("span");e.innerHTML=`Attachment: ${t}`,this.attachDiv.appendChild(e)}}async uploadFile(){const t=this.fileUpload.files,e=t[0].name.split(".").pop();if(!["jpg","jpeg","png","gif","pdf"].includes(e))return void alert("File type not allowed. Please upload a jpg, jpeg, png, gif, or pdf file.");if(t[0].size>5242880)return void alert("File size exceeds 5MB limit. Please upload a smaller file.");const i=new FormData;this.fileUpload.files.length>0&&(i.append("file",t[0]),fetch(`/ns/logger/upload/${this.divid}`,{method:"POST",body:i}).then((t=>t.json())).then((t=>{console.log(t)})).catch((t=>{console.error(t)})))}viewFile(){if(this.attachURL){const t=window.open("","_blank");if(-1!==this.attachURL.indexOf(".pdf?")){const e=t.document.createElement("object");e.setAttribute("data",this.attachURL),e.setAttribute("type","application/pdf"),e.setAttribute("width","800px"),e.setAttribute("height","1040px"),t.document.body.appendChild(e);let i=t.document.createElement("a");i.setAttribute("href",this.attachURL),i.innerText="Download PDF",e.appendChild(i)}else{const e=t.document.createElement("img");e.setAttribute("src",this.attachURL),e.setAttribute("style","width:100%; height:auto;"),t.document.body.appendChild(e)}}else alert("No attachment for this student.")}}document.addEventListener("runestone:login-complete",(function(){document.querySelectorAll("[data-component=shortanswer]").forEach((function(t){if(!t.closest("[data-component=timedAssessment]"))try{window.componentMap[t.id]=new r({orig:t,useRunestoneServices:eBookConfig.useRunestoneServices})}catch(e){console.log(`Error rendering ShortAnswer Problem ${t.id}\n Details: ${e}`)}}))}));class a extends r{constructor(t){super(t),this.renderTimedIcon(this.containerDiv),this.isTimed=!0,this.hideButtons()}hideButtons(){this.submitButton&&(this.submitButton.style.display="none")}renderTimedIcon(t){var e=document.createElement("div"),i=document.createElement("img");i.src="../_static/clock.png",i.style.width="15px",i.style.height="15px",e.className="timeTip",e.title="",e.appendChild(i),t.insertBefore(e,t.firstChild)}checkCorrectTimed(){return"I"}hideFeedback(){this.feedbackDiv&&(this.feedbackDiv.style.display="none")}}void 0===window.component_factory&&(window.component_factory={}),window.component_factory.shortanswer=function(t){return t.timed?new a(t):new r(t)}}}]); +//# sourceMappingURL=115.648ff4b5650f4c7c.js.map \ No newline at end of file diff --git a/_static/115.648ff4b5650f4c7c.js.gz b/_static/115.648ff4b5650f4c7c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e56520eb0f7289251391b602d3dd438706a90a7c GIT binary patch literal 8978 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 sZV9^pgXxCDi_@% literal 0 HcmV?d00001 diff --git a/_static/115.648ff4b5650f4c7c.js.map b/_static/115.648ff4b5650f4c7c.js.map new file mode 100644 index 0000000..4f5259a --- /dev/null +++ b/_static/115.648ff4b5650f4c7c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"115.648ff4b5650f4c7c.js","mappings":"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","sources":["webpack://WebComponents/./runestone/matching/js/timed_matching.js","webpack://WebComponents/./runestone/timed/js/timed.js","webpack://WebComponents/./runestone/shortanswer/js/shortanswer.js","webpack://WebComponents/./runestone/shortanswer/js/timed_shortanswer.js"],"sourcesContent":["import {MatchingProblem} from \"./matching.js\";\n\nexport default class TimedMatching extends MatchingProblem {\n constructor(opts) {\n super(opts);\n this.renderTimedIcon(this.containerDiv);\n this.hideButtons();\n this.needsReinitialization = true;\n }\n\n hideButtons() {\n this.gradeBtn.style.display = \"none\";\n this.helpBtn.style.display = \"none\";\n }\n\n renderTimedIcon(component) {\n // renders the clock icon on timed components. The component parameter\n // is the element that the icon should be appended to.\n var timeIconDiv = document.createElement(\"div\");\n var timeIcon = document.createElement(\"img\");\n timeIcon.src = \"../_static/clock.png\";\n timeIcon.style.width = \"15px\";\n timeIcon.style.height = \"15px\";\n\n timeIconDiv.className = \"timeTip\";\n timeIconDiv.title = \"\";\n timeIconDiv.appendChild(timeIcon);\n component.prepend(timeIconDiv);\n }\n\n checkCorrectTimed() {\n // Returns if the question was correct, incorrect, or skipped (return null in the last case)\n switch (this.correct) {\n case true:\n return \"T\";\n case false:\n return \"F\";\n default:\n return null;\n }\n }\n\n hideFeedback() {\n this.connList.style.display = \"none\";\n }\n\n reinitializeListeners() {\n // maybe need to reinitialize the listeners\n }\n}\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\nwindow.component_factory.matching = function (opts) {\n if (opts.timed) {\n return new TimedMatching(opts);\n }\n return new MatchingProblem(opts);\n};\n","/*==========================================\n======== Master timed.js =========\n============================================\n=== This file contains the JS for ===\n=== the Runestone timed component. ===\n============================================\n=== Created By ===\n=== Kirby Olson ===\n=== 6/11/15 ===\n==========================================*/\n\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase.js\";\nimport TimedFITB from \"../../fitb/js/timedfitb.js\";\nimport TimedMC from \"../../mchoice/js/timedmc.js\";\nimport TimedShortAnswer from \"../../shortanswer/js/timed_shortanswer.js\";\nimport ACFactory from \"../../activecode/js/acfactory.js\";\nimport TimedClickableArea from \"../../clickableArea/js/timedclickable\";\nimport TimedDragNDrop from \"../../dragndrop/js/timeddnd.js\";\nimport TimedParsons from \"../../parsons/js/timedparsons.js\";\nimport TimedMatching from \"../../matching/js/timed_matching.js\";\nimport SelectOne from \"../../selectquestion/js/selectone\";\nimport \"../css/timed.less\";\n\n// Timed constructor\nexport default class Timed extends RunestoneBase {\n constructor(opts) {\n super(opts);\n var orig = opts.orig;\n this.origElem = orig; // the entire element of this timed assessment and all of its children\n this.divid = orig.id;\n this.children = this.origElem.childNodes;\n this.visited = [];\n this.timeLimit = 0;\n this.limitedTime = false;\n if (!isNaN($(this.origElem).data(\"time\"))) {\n this.timeLimit = parseInt($(this.origElem).data(\"time\"), 10) * 60; // time in seconds to complete the exam\n this.startingTime = this.timeLimit;\n this.limitedTime = true;\n }\n this.showFeedback = true;\n if (this.origElem.hasAttribute(\"data-no-feedback\")) {\n this.showFeedback = false;\n }\n // check for attribute data-show-feedback = yes\n if (this.origElem.hasAttribute(\"data-show-feedback\")) {\n if (this.origElem.getAttribute(\"data-show-feedback\") === \"yes\") {\n this.showFeedback = true;\n } else {\n this.showFeedback = false;\n }\n }\n this.showResults = false;\n if (this.origElem.hasAttribute(\"data-result\")) {\n this.showResults = false;\n }\n this.random = false;\n if (this.origElem.hasAttribute(\"data-random\")) {\n this.random = true;\n }\n this.showTimer = true;\n if (this.origElem.hasAttribute(\"data-no-timer\")) {\n this.showTimer = false;\n }\n if (this.origElem.hasAttribute(\"data-timer\")) {\n if (\n this.origElem.getAttribute(\"data-timer\") === \"yes\"\n ) {\n this.showTimer = true;\n } else {\n this.showTimer = false;\n }\n }\n this.fullwidth = false;\n if (this.origElem.hasAttribute(\"data-fullwidth\")) {\n this.fullwidth = true;\n }\n this.nopause = false;\n if (this.origElem.hasAttribute(\"data-no-pause\")) {\n this.nopause = true;\n }\n if (this.origElem.hasAttribute(\"data-pause\")) {\n if (this.origElem.getAttribute(\"data-pause\") === \"yes\") {\n this.nopause = false;\n } else {\n this.nopause = true;\n }\n }\n eBookConfig.enableScratchAC = false;\n this.running = 0;\n this.paused = 0;\n this.done = 0;\n this.taken = 0;\n this.score = 0;\n this.incorrect = 0;\n this.correctStr = \"\";\n this.incorrectStr = \"\";\n this.skippedStr = \"\";\n this.skipped = 0;\n this.currentQuestionIndex = 0; // Which question is currently displaying on the page\n this.renderedQuestionArray = []; // list of all problems\n this.getNewChildren();\n // One small step to eliminate students from doing view source\n // this won't stop anyone with determination but may prevent casual peeking\n if (!eBookConfig.enableDebug) {\n document.body.oncontextmenu = function () {\n return false;\n };\n }\n this.checkAssessmentStatus().then(\n function () {\n this.renderTimedAssess();\n }.bind(this)\n );\n }\n\n getNewChildren() {\n this.newChildren = [];\n let runestoneChildren = this.origElem.querySelectorAll(\".runestone\");\n for (var i = 0; i < runestoneChildren.length; i++) {\n this.newChildren.push(runestoneChildren[i]);\n }\n }\n\n async checkAssessmentStatus() {\n // Has the user taken this exam? Inquiring minds want to know\n // If a user has not taken this exam then we want to make sure\n // that if a question has been seen by the student before we do\n // not populate previous answers.\n let sendInfo = {\n div_id: this.divid,\n course_name: eBookConfig.course,\n };\n console.log(sendInfo);\n if (eBookConfig.useRunestoneServices) {\n let request = new Request(\n `${eBookConfig.new_server_prefix}/assessment/tookTimedAssessment`,\n {\n method: \"POST\",\n headers: this.jsonHeaders,\n body: JSON.stringify(sendInfo),\n }\n );\n let response = await fetch(request);\n let data = await response.json();\n data = data.detail;\n this.taken = data.tookAssessment;\n this.assessmentTaken = this.taken;\n if (!this.taken) {\n localStorage.clear();\n }\n console.log(\"done with check status\");\n return response;\n } else {\n this.taken = false;\n this.assessmentTaken = false;\n return Promise.resolve();\n }\n }\n\n /*===============================\n === Generating new Timed HTML ===\n ===============================*/\n async renderTimedAssess() {\n console.log(\"rendering timed \");\n // create renderedQuestionArray returns a promise\n //\n this.createRenderedQuestionArray();\n if (this.random) {\n this.randomizeRQA();\n }\n this.renderContainer();\n this.renderTimer();\n await this.renderControlButtons();\n // If we decide to disable cut/copy/paste, uncomment the line below \n // this.disableCutCopyPaste();\n this.containerDiv.appendChild(this.timedDiv); // This can't be appended in renderContainer because then it renders above the timer and control buttons.\n if (this.renderedQuestionArray.length > 1) this.renderNavControls();\n this.renderSubmitButton();\n this.renderFeedbackContainer();\n this.useRunestoneServices = eBookConfig.useRunestoneServices;\n // Replace intermediate HTML with rendered HTML\n $(this.origElem).replaceWith(this.containerDiv);\n // check if already taken and if so show results\n this.styleExamElements(); // rename to renderPossibleResults\n this.checkServer(\"timedExam\", true);\n }\n\n disableCutCopyPaste() {\n document.addEventListener(\"cut\", function (e) {\n e.preventDefault();\n });\n document.addEventListener(\"copy\", function (e) {\n e.preventDefault();\n });\n document.addEventListener(\"paste\", function (e) {\n e.preventDefault();\n });\n }\n\n renderContainer() {\n this.containerDiv = document.createElement(\"div\"); // container for the entire Timed Component\n if (this.fullwidth) {\n // allow the container to fill the width - barb\n $(this.containerDiv).attr({\n style: \"max-width:none\",\n });\n }\n this.containerDiv.classList.add(\"runestone-sphinx\");\n this.containerDiv.id = this.divid;\n this.timedDiv = document.createElement(\"div\"); // div that will hold the questions for the timed assessment\n this.navDiv = document.createElement(\"div\"); // For navigation control\n $(this.navDiv).attr({\n style: \"text-align:center\",\n });\n this.flagDiv = document.createElement(\"div\"); // div that will hold the \"Flag Question\" button\n $(this.flagDiv).attr({\n style: \"text-align: center\",\n });\n this.switchContainer = document.createElement(\"div\");\n this.switchContainer.classList.add(\"switchcontainer\");\n this.switchDiv = document.createElement(\"div\"); // is replaced by the questions\n this.timedDiv.appendChild(this.navDiv);\n this.timedDiv.appendChild(this.flagDiv); // add flagDiv to timedDiv, which holds components for navigation and questions for timed assessment\n this.timedDiv.appendChild(this.switchContainer);\n this.switchContainer.appendChild(this.switchDiv);\n $(this.timedDiv).attr({\n id: \"timed_Test\",\n style: \"display:none\",\n });\n }\n\n renderTimer() {\n this.wrapperDiv = document.createElement(\"div\");\n this.timerContainer = document.createElement(\"P\");\n this.wrapperDiv.id = this.divid + \"-startWrapper\";\n this.timerContainer.id = this.divid + \"-output\";\n this.wrapperDiv.appendChild(this.timerContainer);\n this.showTime();\n }\n\n renderControlButtons() {\n this.controlDiv = document.createElement(\"div\");\n $(this.controlDiv).attr({\n id: \"controls\",\n style: \"text-align: center\",\n });\n this.startBtn = document.createElement(\"button\");\n this.pauseBtn = document.createElement(\"button\");\n $(this.startBtn).attr({\n class: \"btn btn-success\",\n id: \"start\",\n tabindex: \"0\",\n role: \"button\",\n });\n this.startBtn.textContent = \"Start\";\n this.startBtn.addEventListener(\n \"click\",\n async function () {\n $(this.finishButton).hide(); // hide the finish button for now\n $(this.flagButton).show();\n let mess = document.createElement(\"p\");\n mess.innerHTML =\n \"Warning: You will not be able to continue the exam if you close this tab, close the window, or navigate away from this page! Make sure you click the Finish Exam button when you are done to submit your work!\";\n this.controlDiv.appendChild(mess);\n mess.classList.add(\"examwarning\");\n await this.renderTimedQuestion();\n this.startAssessment();\n }.bind(this),\n false\n );\n $(this.pauseBtn).attr({\n class: \"btn btn-default\",\n id: \"pause\",\n disabled: \"true\",\n tabindex: \"0\",\n role: \"button\",\n });\n this.pauseBtn.textContent = \"Pause\";\n this.pauseBtn.addEventListener(\n \"click\",\n function () {\n this.pauseAssessment();\n }.bind(this),\n false\n );\n if (!this.taken) {\n this.controlDiv.appendChild(this.startBtn);\n }\n if (!this.nopause) {\n this.controlDiv.appendChild(this.pauseBtn);\n }\n this.containerDiv.appendChild(this.wrapperDiv);\n this.containerDiv.appendChild(this.controlDiv);\n }\n\n renderNavControls() {\n // making \"Prev\" button\n this.pagNavList = document.createElement(\"ul\");\n $(this.pagNavList).addClass(\"pagination\");\n this.leftContainer = document.createElement(\"li\");\n this.leftNavButton = document.createElement(\"button\");\n this.leftNavButton.innerHTML = \"‹ Prev\";\n $(this.leftNavButton).attr(\"aria-label\", \"Previous\");\n $(this.leftNavButton).attr(\"tabindex\", \"0\");\n $(this.leftNavButton).attr(\"role\", \"button\");\n $(this.rightNavButton).attr(\"id\", \"prev\");\n $(this.leftNavButton).css(\"cursor\", \"pointer\");\n this.leftContainer.appendChild(this.leftNavButton);\n this.pagNavList.appendChild(this.leftContainer);\n // making \"Flag Question\" button\n this.flaggingPlace = document.createElement(\"ul\");\n $(this.flaggingPlace).addClass(\"pagination\");\n this.flagContainer = document.createElement(\"li\");\n this.flagButton = document.createElement(\"button\");\n $(this.flagButton).addClass(\"flagBtn\");\n this.flagButton.innerHTML = \"Flag Question\"; // name on button\n $(this.flagButton).attr(\"aria-labelledby\", \"Flag\");\n $(this.flagButton).attr(\"tabindex\", \"5\");\n $(this.flagButton).attr(\"role\", \"button\");\n $(this.flagButton).attr(\"id\", \"flag\");\n $(this.flagButton).css(\"cursor\", \"pointer\");\n this.flagContainer.appendChild(this.flagButton); // adding button to container\n this.flaggingPlace.appendChild(this.flagContainer); // adding container to flaggingPlace\n // making \"Next\" button\n this.rightContainer = document.createElement(\"li\");\n this.rightNavButton = document.createElement(\"button\");\n $(this.rightNavButton).attr(\"aria-label\", \"Next\");\n $(this.rightNavButton).attr(\"tabindex\", \"0\");\n $(this.rightNavButton).attr(\"role\", \"button\");\n $(this.rightNavButton).attr(\"id\", \"next\");\n this.rightNavButton.innerHTML = \"Next ›\";\n $(this.rightNavButton).css(\"cursor\", \"pointer\");\n this.rightContainer.appendChild(this.rightNavButton);\n this.pagNavList.appendChild(this.rightContainer);\n this.ensureButtonSafety();\n this.navDiv.appendChild(this.pagNavList);\n this.flagDiv.appendChild(this.flaggingPlace); // adds flaggingPlace to the flagDiv\n this.break = document.createElement(\"br\");\n this.navDiv.appendChild(this.break);\n // render the question number jump buttons\n this.qNumList = document.createElement(\"ul\");\n $(this.qNumList).attr(\"id\", \"pageNums\");\n this.qNumWrapperList = document.createElement(\"ul\");\n $(this.qNumWrapperList).addClass(\"pagination\");\n var tmpLi, tmpA;\n for (var i = 0; i < this.renderedQuestionArray.length; i++) {\n tmpLi = document.createElement(\"li\");\n tmpA = document.createElement(\"a\");\n tmpA.innerHTML = i + 1;\n $(tmpA).css(\"cursor\", \"pointer\");\n if (i === 0) {\n $(tmpLi).addClass(\"active\");\n }\n tmpLi.appendChild(tmpA);\n this.qNumWrapperList.appendChild(tmpLi);\n }\n this.qNumList.appendChild(this.qNumWrapperList);\n this.navDiv.appendChild(this.qNumList);\n this.navBtnListeners();\n this.flagBtnListener(); // listens for click on flag button\n $(this.flagButton).hide();\n }\n\n // when moving off of a question in an active exam:\n // 1. show that the question has been seen, or mark it broken if it is in error.\n // 2. check and log the current answer\n async navigateAway() {\n if (\n this.renderedQuestionArray[this.currentQuestionIndex].state ==\n \"broken_exam\"\n ) {\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"broken\");\n }\n if (\n this.renderedQuestionArray[this.currentQuestionIndex].state ==\n \"exam_ended\"\n ) {\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"toolate\");\n }\n if (\n this.renderedQuestionArray[this.currentQuestionIndex].question\n .isAnswered\n ) {\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"answered\");\n await this.renderedQuestionArray[\n this.currentQuestionIndex\n ].question.checkCurrentAnswer();\n if (!this.done) {\n await this.renderedQuestionArray[\n this.currentQuestionIndex\n ].question.logCurrentAnswer();\n }\n }\n }\n async handleNextPrev(event) {\n if (!this.taken) {\n await this.navigateAway();\n }\n var target = $(event.target).text();\n if (target.match(/Next/)) {\n // checks given text to match \"Next\"\n if ($(this.rightContainer).hasClass(\"disabled\")) {\n return;\n }\n this.currentQuestionIndex++;\n } else if (target.match(/Prev/)) {\n // checks given text to match \"Prev\"\n if ($(this.leftContainer).hasClass(\"disabled\")) {\n return;\n }\n this.currentQuestionIndex--;\n }\n await this.renderTimedQuestion();\n this.ensureButtonSafety();\n for (var i = 0; i < this.qNumList.childNodes.length; i++) {\n for (\n var j = 0;\n j < this.qNumList.childNodes[i].childNodes.length;\n j++\n ) {\n $(this.qNumList.childNodes[i].childNodes[j]).removeClass(\n \"active\"\n );\n }\n }\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"active\");\n if (\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).hasClass(\"flagcolor\")\n ) {\n // checking for class\n this.flagButton.innerHTML = \"Unflag Question\"; // changes text on button\n } else {\n this.flagButton.innerHTML = \"Flag Question\"; // changes text on button\n }\n }\n\n async handleFlag(event) {\n // called when flag button is clicked\n var target = $(event.target).text();\n if (target.match(/Flag Question/)) {\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"flagcolor\"); // class will change color of question block\n this.flagButton.innerHTML = \"Unflag Question\";\n } else {\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).removeClass(\"flagcolor\"); // will restore current color of question block\n this.flagButton.innerHTML = \"Flag Question\"; // also sets name back\n }\n }\n\n async handleNumberedNav(event) {\n if (!this.taken) {\n await this.navigateAway();\n }\n for (var i = 0; i < this.qNumList.childNodes.length; i++) {\n for (\n var j = 0;\n j < this.qNumList.childNodes[i].childNodes.length;\n j++\n ) {\n $(this.qNumList.childNodes[i].childNodes[j]).removeClass(\n \"active\"\n );\n }\n }\n\n var target = $(event.target).text();\n let oldIndex = this.currentQuestionIndex;\n this.currentQuestionIndex = parseInt(target) - 1;\n if (this.currentQuestionIndex > this.renderedQuestionArray.length) {\n console.log(`Error: bad index for ${target}`);\n this.currentQuestionIndex = oldIndex;\n }\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\"\n ).addClass(\"active\");\n if (\n $(\n \"ul#pageNums > ul > li:eq(\" + this.currentQuestionIndex + \")\" // checking for flagcolor class\n ).hasClass(\"flagcolor\")\n ) {\n this.flagButton.innerHTML = \"Unflag Question\";\n } else {\n this.flagButton.innerHTML = \"Flag Question\";\n }\n await this.renderTimedQuestion();\n this.ensureButtonSafety();\n }\n\n // set up events for navigation\n navBtnListeners() {\n // Next and Prev Listener\n this.pagNavList.addEventListener(\n \"click\",\n this.handleNextPrev.bind(this),\n false\n );\n\n // Numbered Listener\n this.qNumList.addEventListener(\n \"click\",\n this.handleNumberedNav.bind(this),\n false\n );\n }\n\n // set up event for flag\n flagBtnListener() {\n this.flaggingPlace.addEventListener(\n \"click\",\n this.handleFlag.bind(this), // calls this to take action\n false\n );\n }\n\n renderSubmitButton() {\n this.buttonContainer = document.createElement(\"div\");\n $(this.buttonContainer).attr({\n style: \"text-align:center\",\n });\n this.finishButton = document.createElement(\"button\");\n $(this.finishButton).attr({\n id: \"finish\",\n class: \"btn btn-primary\",\n });\n this.finishButton.textContent = \"Finish Exam\";\n this.finishButton.addEventListener(\n \"click\",\n async function () {\n let skipped =\n this.renderedQuestionArray.filter((x) => !x.question.isAnswered).length;\n let skipstr = skipped > 0 ? `You have skipped ${skipped} question(s).` : \"\";\n if (\n window.confirm(\n `${skipstr} Clicking OK means you are ready to submit your answers and are finished with this assessment.`\n )\n ) {\n await this.finishAssessment();\n $(this.flagButton).hide();\n }\n }.bind(this),\n false\n );\n this.controlDiv.appendChild(this.finishButton);\n $(this.finishButton).hide();\n this.timedDiv.appendChild(this.buttonContainer);\n }\n ensureButtonSafety() {\n if (this.currentQuestionIndex === 0) {\n if (this.renderedQuestionArray.length != 1) {\n $(this.rightContainer).removeClass(\"disabled\");\n }\n $(this.leftContainer).addClass(\"disabled\");\n }\n if (\n this.currentQuestionIndex >=\n this.renderedQuestionArray.length - 1\n ) {\n if (this.renderedQuestionArray.length != 1) {\n $(this.leftContainer).removeClass(\"disabled\");\n }\n $(this.rightContainer).addClass(\"disabled\");\n }\n if (\n this.currentQuestionIndex > 0 &&\n this.currentQuestionIndex < this.renderedQuestionArray.length - 1\n ) {\n $(this.rightContainer).removeClass(\"disabled\");\n $(this.leftContainer).removeClass(\"disabled\");\n }\n }\n renderFeedbackContainer() {\n this.scoreDiv = document.createElement(\"P\");\n if (this.taken) {\n this.scoreDiv.innerHTML = \"

You have already taken this exam

\";\n this.scoreDiv.style.display = \"block\";\n } else {\n this.scoreDiv.id = this.divid + \"results\";\n this.scoreDiv.style.display = \"none\";\n }\n this.containerDiv.appendChild(this.scoreDiv);\n }\n\n createRenderedQuestionArray() {\n // this finds all the assess questions in this timed assessment\n // We need to make a list of all the questions up front so we can set up navigation\n // but we do not want to render the questions until the student has navigated\n // Also adds them to this.renderedQuestionArray\n\n // todo: This needs to be updated to account for the runestone div wrapper.\n\n // To accommodate the selectquestion type -- which is async! we need to wrap\n // all of this in a promise, so that we don't continue to render the timed\n // exam until all of the questions have been realized.\n var opts;\n for (var i = 0; i < this.newChildren.length; i++) {\n var tmpChild = this.newChildren[i];\n opts = {\n state: \"prepared\",\n orig: tmpChild,\n question: {},\n useRunestoneServices: eBookConfig.useRunestoneServices,\n timed: true,\n assessmentTaken: this.taken,\n timedWrapper: this.divid,\n initAttempts: 0,\n };\n if ($(tmpChild).children(\"[data-component]\").length > 0) {\n tmpChild = $(tmpChild).children(\"[data-component]\")[0];\n opts.orig = tmpChild;\n }\n if ($(tmpChild).is(\"[data-component]\")) {\n this.renderedQuestionArray.push(opts);\n }\n }\n }\n\n randomizeRQA() {\n var currentIndex = this.renderedQuestionArray.length,\n temporaryValue,\n randomIndex;\n // While there remain elements to shuffle...\n while (currentIndex !== 0) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = this.renderedQuestionArray[currentIndex];\n this.renderedQuestionArray[currentIndex] =\n this.renderedQuestionArray[randomIndex];\n this.renderedQuestionArray[randomIndex] = temporaryValue;\n }\n }\n\n async renderTimedQuestion() {\n if (this.currentQuestionIndex >= this.renderedQuestionArray.length) {\n // sometimes the user clicks in the event area for the qNumList\n // But misses a number in that case the text is the concatenation\n // of all the numbers in the list!\n return;\n }\n // check the renderedQuestionArray to see if it has been rendered.\n let opts = this.renderedQuestionArray[this.currentQuestionIndex];\n let currentQuestion;\n if (\n opts.state === \"prepared\" ||\n opts.state === \"forreview\" ||\n (opts.state === \"broken_exam\" && opts.initAttempts < 3)\n ) {\n let tmpChild = opts.orig;\n if ($(tmpChild).is(\"[data-component=selectquestion]\")) {\n if (this.done && opts.state == \"prepared\") {\n this.renderedQuestionArray[\n this.currentQuestionIndex\n ].state = \"exam_ended\";\n } else {\n // SelectOne is async and will replace itself in this array with\n // the actual selected question\n opts.rqa = this.renderedQuestionArray;\n let newq = new SelectOne(opts);\n this.renderedQuestionArray[this.currentQuestionIndex] = {\n question: newq,\n };\n try {\n await newq.initialize();\n if (opts.state == \"broken_exam\") {\n // remove the broken class from this question if we get here.\n $(\n `ul#pageNums > ul > li:eq(${this.currentQuestionIndex})`\n ).removeClass(\"broken\");\n }\n } catch (e) {\n opts.state = \"broken_exam\";\n this.renderedQuestionArray[this.currentQuestionIndex] =\n opts;\n console.log(\n `Error initializing question: Details ${e}`\n );\n }\n }\n } else if ($(tmpChild).is(\"[data-component]\")) {\n let componentKind = $(tmpChild).data(\"component\");\n this.renderedQuestionArray[this.currentQuestionIndex] = {\n question: window.component_factory[componentKind](opts),\n state: opts.state,\n };\n }\n } else if (opts.state === \"broken_exam\") {\n return;\n }\n\n currentQuestion =\n this.renderedQuestionArray[this.currentQuestionIndex].question;\n if (opts.state === \"forreview\") {\n await currentQuestion.component_ready_promise;\n await currentQuestion.checkCurrentAnswer();\n currentQuestion.renderFeedback();\n currentQuestion.disableInteraction();\n }\n\n if (!this.visited.includes(this.currentQuestionIndex)) {\n this.visited.push(this.currentQuestionIndex);\n if (\n this.visited.length === this.renderedQuestionArray.length &&\n !this.done\n ) {\n $(this.finishButton).show();\n }\n }\n\n if (currentQuestion.containerDiv) {\n if (\n currentQuestion.containerDiv.classList.contains(\"runestone\") ==\n false\n ) {\n currentQuestion.containerDiv.classList.add(\"runestone\");\n }\n $(this.switchDiv).replaceWith(currentQuestion.containerDiv);\n this.switchDiv = currentQuestion.containerDiv;\n }\n\n // If the timed component has listeners, those might need to be reinitialized\n // This flag will only be set in the elements that need it--it will be undefined in the others and thus evaluate to false\n if (currentQuestion.needsReinitialization) {\n currentQuestion.reinitializeListeners(this.taken);\n }\n }\n\n /*=================================\n === Timer and control Functions ===\n =================================*/\n handlePrevAssessment() {\n $(this.startBtn).hide();\n $(this.pauseBtn).attr(\"disabled\", true);\n $(this.finishButton).attr(\"disabled\", true);\n this.running = 0;\n this.done = 1;\n // showFeedback sand showResults should both be true before we show the\n // questions and their state of correctness.\n if (this.showResults && this.showFeedback) {\n $(this.timedDiv).show();\n this.restoreAnsweredQuestions(); // do not log these results\n } else {\n $(this.pauseBtn).hide();\n $(this.timerContainer).hide();\n }\n }\n startAssessment() {\n if (!this.taken) {\n $(\"#relations-next\").hide(); // hide the next page button for now\n $(\"#relations-prev\").hide(); // hide the previous button for now\n $(this.startBtn).hide();\n $(this.pauseBtn).attr(\"disabled\", false);\n if (this.running === 0 && this.paused === 0) {\n this.running = 1;\n this.lastTime = Date.now();\n $(this.timedDiv).show();\n this.increment();\n this.logBookEvent({\n event: \"timedExam\",\n act: \"start\",\n div_id: this.divid,\n });\n var timeStamp = new Date();\n var storageObj = {\n answer: [0, 0, this.renderedQuestionArray.length, 0],\n timestamp: timeStamp,\n };\n localStorage.setItem(\n this.localStorageKey(),\n JSON.stringify(storageObj)\n );\n }\n $(window).on(\n \"beforeunload\",\n function (event) {\n // this actual value gets ignored by newer browsers\n if (this.done) {\n return;\n }\n event.preventDefault();\n event.returnValue =\n \"Are you sure you want to leave? Your work will be lost! And you will need your instructor to reset the exam!\";\n return \"Are you sure you want to leave? Your work will be lost!\";\n }.bind(this)\n );\n window.addEventListener(\n \"pagehide\",\n async function (event) {\n if (!this.done) {\n await this.finishAssessment();\n console.log(\"Exam exited by leaving page\");\n }\n }.bind(this)\n );\n } else {\n this.handlePrevAssessment();\n }\n }\n pauseAssessment() {\n if (this.done === 0) {\n if (this.running === 1) {\n this.logBookEvent({\n event: \"timedExam\",\n act: \"pause\",\n div_id: this.divid,\n });\n this.running = 0;\n this.paused = 1;\n this.pauseBtn.innerHTML = \"Resume\";\n $(this.timedDiv).hide();\n } else {\n this.logBookEvent({\n event: \"timedExam\",\n act: \"resume\",\n div_id: this.divid,\n });\n this.running = 1;\n this.paused = 0;\n this.increment();\n this.pauseBtn.innerHTML = \"Pause\";\n $(this.timedDiv).show();\n }\n }\n }\n\n showTime() {\n if (this.showTimer) {\n var mins = Math.floor(this.timeLimit / 60);\n var secs = Math.floor(this.timeLimit) % 60;\n var minsString = mins;\n var secsString = secs;\n if (mins < 10) {\n minsString = \"0\" + mins;\n }\n if (secs < 10) {\n secsString = \"0\" + secs;\n }\n var beginning = \"Time Remaining \";\n if (!this.limitedTime) {\n beginning = \"Time Taken \";\n }\n var timeString = beginning + minsString + \":\" + secsString;\n if (this.done || this.taken) {\n var minutes = Math.floor(this.timeTaken / 60);\n var seconds = Math.floor(this.timeTaken % 60);\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n timeString = \"Time taken: \" + minutes + \":\" + seconds;\n }\n this.timerContainer.innerHTML = timeString;\n var timeTips = document.getElementsByClassName(\"timeTip\");\n for (var i = 0; i <= timeTips.length - 1; i++) {\n timeTips[i].title = timeString;\n }\n } else {\n $(this.timerContainer).hide();\n }\n }\n\n increment() {\n // if running (not paused) and not taken\n if (this.running === 1 && !this.taken) {\n setTimeout(\n function () {\n // When a browser loses focus, setTimeout may not be called on the\n // schedule expected. Browsers are free to save power by lengthening\n // the interval to some longer time. So we cannot just subtract 1\n // from the timeLimit we need to measure the elapsed time from the last\n // call to the current call and subtract that number of seconds.\n let currentTime = Date.now();\n if (this.limitedTime) {\n // If there's a time limit, count down to 0\n this.timeLimit =\n this.timeLimit -\n Math.floor((currentTime - this.lastTime) / 1000);\n } else {\n // Else count up to keep track of how long it took to complete\n this.timeLimit =\n this.timeLimit +\n Math.floor((currentTime - this.lastTime) / 1000);\n }\n this.lastTime = currentTime;\n localStorage.setItem(\n eBookConfig.email + \":\" + this.divid + \"-time\",\n this.timeLimit\n );\n this.showTime();\n if (this.timeLimit > 0) {\n this.increment();\n // ran out of time\n } else {\n $(this.startBtn).attr({\n disabled: \"true\",\n });\n $(this.finishButton).attr({\n disabled: \"true\",\n });\n this.running = 0;\n this.done = 1;\n if (!this.taken) {\n this.taken = true;\n // embed the message in the page -- an alert actually prevents\n // the answers from being submitted and if a student closes their\n // laptop then the answers will not be submitted ever! Even when they\n // reopen the laptop their session cookie is likely invalid.\n let mess = document.createElement(\"h1\");\n mess.innerHTML =\n \"Sorry but you ran out of time. Your answers are being submitted\";\n this.controlDiv.appendChild(mess);\n this.finishAssessment();\n }\n }\n }.bind(this),\n 1000\n );\n }\n }\n\n styleExamElements() {\n // Checks if this exam has been taken before\n $(this.timerContainer).css({\n width: \"50%\",\n margin: \"0 auto\",\n \"background-color\": \"#DFF0D8\",\n \"text-align\": \"center\",\n border: \"2px solid #DFF0D8\",\n \"border-radius\": \"25px\",\n });\n $(this.scoreDiv).css({\n width: \"50%\",\n margin: \"0 auto\",\n \"background-color\": \"#DFF0D8\",\n \"text-align\": \"center\",\n border: \"2px solid #DFF0D8\",\n \"border-radius\": \"25px\",\n });\n $(\".tooltipTime\").css({\n margin: \"0\",\n padding: \"0\",\n \"background-color\": \"black\",\n color: \"white\",\n });\n }\n\n async finishAssessment() {\n $(\"#relations-next\").show(); // show the next page button for now\n $(\"#relations-prev\").show(); // show the previous button for now\n if (!this.showFeedback) {\n // bje - changed from showResults\n $(this.timedDiv).hide();\n $(this.pauseBtn).hide();\n $(this.timerContainer).hide();\n }\n this.findTimeTaken();\n this.running = 0;\n this.done = 1;\n this.taken = 1;\n await this.finalizeProblems();\n this.checkScore();\n this.displayScore();\n this.storeScore();\n this.logScore();\n $(this.pauseBtn).attr(\"disabled\", true);\n this.finishButton.disabled = true;\n $(window).off(\"beforeunload\");\n // turn off the pagehide listener\n let assignment_id = this.divid;\n setTimeout(function () {\n jQuery.ajax({\n url: eBookConfig.app + \"/assignments/student_autograde\",\n type: \"POST\",\n dataType: \"JSON\",\n data: {\n assignment_id: assignment_id,\n is_timed: true,\n },\n success: function (retdata) {\n if (retdata.success == false) {\n console.log(retdata.message);\n } else {\n console.log(\"Autograder completed\");\n }\n },\n });\n }, 2000);\n }\n\n // finalizeProblems\n // ----------------\n async finalizeProblems() {\n // Because we have submitted each question as we navigate we only need to\n // send the final version of the question the student is on when they press the\n // finish exam button.\n\n var currentQuestion =\n this.renderedQuestionArray[this.currentQuestionIndex].question;\n await currentQuestion.checkCurrentAnswer();\n await currentQuestion.logCurrentAnswer();\n currentQuestion.renderFeedback();\n currentQuestion.disableInteraction();\n\n for (var i = 0; i < this.renderedQuestionArray.length; i++) {\n let currentQuestion = this.renderedQuestionArray[i];\n // set the state to forreview so we know that feedback may be appropriate\n if (currentQuestion.state !== \"broken_exam\") {\n currentQuestion.state = \"forreview\";\n currentQuestion.question.disableInteraction();\n }\n }\n\n if (!this.showFeedback) {\n this.hideTimedFeedback();\n }\n }\n\n // restoreAnsweredQuestions\n // ------------------------\n restoreAnsweredQuestions() {\n for (var i = 0; i < this.renderedQuestionArray.length; i++) {\n var currentQuestion = this.renderedQuestionArray[i];\n if (currentQuestion.state === \"prepared\") {\n currentQuestion.state = \"forreview\";\n }\n }\n }\n\n // hideTimedFeedback\n // -----------------\n hideTimedFeedback() {\n for (var i = 0; i < this.renderedQuestionArray.length; i++) {\n var currentQuestion = this.renderedQuestionArray[i].question;\n currentQuestion.hideFeedback();\n }\n }\n\n // checkScore\n // ----------\n // This is a simple all or nothing score of one point per question for\n // that includes our best guess if a question was skipped.\n checkScore() {\n this.correctStr = \"\";\n this.skippedStr = \"\";\n this.incorrectStr = \"\";\n // Gets the score of each problem\n for (var i = 0; i < this.renderedQuestionArray.length; i++) {\n var correct =\n this.renderedQuestionArray[i].question.checkCorrectTimed();\n if (correct == \"T\") {\n this.score++;\n this.correctStr = this.correctStr + (i + 1) + \", \";\n } else if (correct == \"F\") {\n this.incorrect++;\n this.incorrectStr = this.incorrectStr + (i + 1) + \", \";\n } else if (correct === null || correct === \"I\") {\n this.skipped++;\n this.skippedStr = this.skippedStr + (i + 1) + \", \";\n } else {\n // ignored question; just do nothing\n }\n }\n // remove extra comma and space at end if any\n if (this.correctStr.length > 0)\n this.correctStr = this.correctStr.substring(\n 0,\n this.correctStr.length - 2\n );\n else this.correctStr = \"None\";\n if (this.skippedStr.length > 0)\n this.skippedStr = this.skippedStr.substring(\n 0,\n this.skippedStr.length - 2\n );\n else this.skippedStr = \"None\";\n if (this.incorrectStr.length > 0)\n this.incorrectStr = this.incorrectStr.substring(\n 0,\n this.incorrectStr.length - 2\n );\n else this.incorrectStr = \"None\";\n }\n findTimeTaken() {\n if (this.limitedTime) {\n this.timeTaken = this.startingTime - this.timeLimit;\n } else {\n this.timeTaken = this.timeLimit;\n }\n }\n storeScore() {\n var storage_arr = [];\n storage_arr.push(\n this.score,\n this.correctStr,\n this.incorrect,\n this.incorrectStr,\n this.skipped,\n this.skippedStr,\n this.timeTaken\n );\n var timeStamp = new Date();\n var storageObj = JSON.stringify({\n answer: storage_arr,\n timestamp: timeStamp,\n });\n localStorage.setItem(this.localStorageKey(), storageObj);\n }\n // _`timed exam endpoint parameters`\n //----------------------------------\n logScore() {\n this.logBookEvent({\n event: \"timedExam\",\n act: \"finish\",\n div_id: this.divid,\n correct: this.score,\n incorrect: this.incorrect,\n skipped: this.skipped,\n time_taken: this.timeTaken,\n });\n }\n shouldUseServer(data) {\n // We override the RunestoneBase version because there is no \"correct\" attribute, and there are 2 possible localStorage schemas\n // --we also want to default to local storage because it contains more information specifically which questions are correct, incorrect, and skipped.\n var storageDate;\n if (localStorage.length === 0) return true;\n var storageObj = localStorage.getItem(this.localStorageKey());\n if (storageObj === null) return true;\n try {\n var storedData = JSON.parse(storageObj).answer;\n if (storedData.length == 4) {\n if (\n data.correct == storedData[0] &&\n data.incorrect == storedData[1] &&\n data.skipped == storedData[2] &&\n data.timeTaken == storedData[3]\n )\n return true;\n } else if (storedData.length == 7) {\n if (\n data.correct == storedData[0] &&\n data.incorrect == storedData[2] &&\n data.skipped == storedData[4] &&\n data.timeTaken == storedData[6]\n ) {\n return false; // In this case, because local storage has more info, we want to use that if it's consistent\n }\n }\n storageDate = new Date(JSON.parse(storageObj[1]).timestamp);\n } catch (err) {\n // error while parsing; likely due to bad value stored in storage\n console.log(err.message);\n localStorage.removeItem(this.localStorageKey());\n return true;\n }\n var serverDate = new Date(data.timestamp);\n if (serverDate < storageDate) {\n this.logScore();\n return false;\n }\n return true;\n }\n\n checkLocalStorage() {\n var len = localStorage.length;\n if (len > 0) {\n if (localStorage.getItem(this.localStorageKey()) !== null) {\n this.taken = 1;\n this.restoreAnswers(\"\");\n } else {\n this.taken = 0;\n }\n } else {\n this.taken = 0;\n }\n }\n async restoreAnswers(data) {\n this.taken = 1;\n var tmpArr;\n if (data === \"\") {\n try {\n tmpArr = JSON.parse(\n localStorage.getItem(this.localStorageKey())\n ).answer;\n } catch (err) {\n // error while parsing; likely due to bad value stored in storage\n console.log(err.message);\n localStorage.removeItem(this.localStorageKey());\n this.taken = 0;\n return;\n }\n } else {\n // Parse results from the database\n tmpArr = [\n parseInt(data.correct),\n parseInt(data.incorrect),\n parseInt(data.skipped),\n parseInt(data.time_taken),\n data.reset,\n ];\n this.setLocalStorage(tmpArr);\n }\n if (tmpArr.length == 1) {\n // Exam was previously reset\n this.reset = true;\n this.taken = 0;\n return;\n }\n if (tmpArr.length == 4) {\n // Accidental Reload OR Database Entry\n this.score = tmpArr[0];\n this.incorrect = tmpArr[1];\n this.skipped = tmpArr[2];\n this.timeTaken = tmpArr[3];\n } else if (tmpArr.length == 5) {\n this.score = tmpArr[0];\n this.incorrect = tmpArr[1];\n this.skipped = tmpArr[2];\n this.timeTaken = tmpArr[3];\n } else if (tmpArr.length == 7) {\n // Loaded Completed Exam\n this.score = tmpArr[0];\n this.correctStr = tmpArr[1];\n this.incorrect = tmpArr[2];\n this.incorrectStr = tmpArr[3];\n this.skipped = tmpArr[4];\n this.skippedStr = tmpArr[5];\n this.timeTaken = tmpArr[6];\n } else {\n // Set localStorage in case of \"accidental\" reload\n this.score = 0;\n this.incorrect = 0;\n this.skipped = this.renderedQuestionArray.length;\n this.timeTaken = 0;\n }\n if (this.taken) {\n if (this.skipped === this.renderedQuestionArray.length) {\n this.showFeedback = false;\n }\n this.handlePrevAssessment();\n }\n await this.renderTimedQuestion();\n this.displayScore();\n this.showTime();\n }\n setLocalStorage(parsedData) {\n var timeStamp = new Date();\n var storageObj = {\n answer: parsedData,\n timestamp: timeStamp,\n };\n localStorage.setItem(\n this.localStorageKey(),\n JSON.stringify(storageObj)\n );\n }\n displayScore() {\n if (this.showResults) {\n var scoreString = \"\";\n var numQuestions;\n var percentCorrect;\n // if we have some information\n if (\n this.correctStr.length > 0 ||\n this.incorrectStr.length > 0 ||\n this.skippedStr.length > 0\n ) {\n scoreString = `Num Correct: ${this.score}. Questions: ${this.correctStr}
Num Wrong: ${this.incorrect}. Questions: ${this.incorrectStr}
Num Skipped: ${this.skipped}. Questions: ${this.skippedStr}
`;\n numQuestions = this.score + this.incorrect + this.skipped;\n percentCorrect = (this.score / numQuestions) * 100;\n scoreString +=\n \"Percent Correct: \" + percentCorrect.toFixed(2) + \"%\";\n $(this.scoreDiv).html(scoreString);\n this.scoreDiv.style.display = \"block\";\n } else {\n scoreString = `Num Correct: ${this.score}
Num Wrong: ${this.incorrect}
Num Skipped: ${this.skipped}
`;\n numQuestions = this.score + this.incorrect + this.skipped;\n percentCorrect = (this.score / numQuestions) * 100;\n scoreString +=\n \"Percent Correct: \" + percentCorrect.toFixed(2) + \"%\";\n $(this.scoreDiv).html(scoreString);\n this.scoreDiv.style.display = \"block\";\n }\n this.highlightNumberedList();\n } else {\n $(this.scoreDiv).html(\n \"Thank you for taking the exam. Your answers have been recorded.\"\n );\n this.scoreDiv.style.display = \"block\";\n }\n }\n highlightNumberedList() {\n var correctCount = this.correctStr;\n var incorrectCount = this.incorrectStr;\n var skippedCount = this.skippedStr;\n correctCount = correctCount.replace(/ /g, \"\").split(\",\");\n incorrectCount = incorrectCount.replace(/ /g, \"\").split(\",\");\n skippedCount = skippedCount.replace(/ /g, \"\").split(\",\");\n $(function () {\n var numberedBtns = $(\"ul#pageNums > ul > li\");\n if (numberedBtns.hasClass(\"answered\")) {\n numberedBtns.removeClass(\"answered\");\n }\n for (var i = 0; i < correctCount.length; i++) {\n var test = parseInt(correctCount[i]) - 1;\n numberedBtns\n .eq(parseInt(correctCount[i]) - 1)\n .addClass(\"correctCount\");\n }\n for (var j = 0; j < incorrectCount.length; j++) {\n numberedBtns\n .eq(parseInt(incorrectCount[j]) - 1)\n .addClass(\"incorrectCount\");\n }\n for (var k = 0; k < skippedCount.length; k++) {\n numberedBtns\n .eq(parseInt(skippedCount[k]) - 1)\n .addClass(\"skippedCount\");\n }\n });\n }\n}\n\n/*=======================================================\n=== Function that calls the constructors on page load ===\n=======================================================*/\n$(document).on(\"runestone:login-complete\", function () {\n $(\"[data-component=timedAssessment]\").each(function (index) {\n window.componentMap[this.id] = new Timed({\n orig: this,\n useRunestoneServices: eBookConfig.useRunestoneServices,\n });\n });\n});\n","/*==========================================\n======= Master shortanswer.js ========\n============================================\n=== This file contains the JS for ===\n=== the Runestone shortanswer component. ===\n============================================\n=== Created by ===\n=== Isaiah Mayerchak ===\n=== 7/2/15 ===\n=== Brad Miller ===\n=== 2019 ===\n==========================================*/\n\nimport RunestoneBase from \"../../common/js/runestonebase.js\";\nimport { looksLikeLatexMath } from \"../../common/js/bookfuncs.js\";\nimport \"./../css/shortanswer.css\";\n\nexport default class ShortAnswer extends RunestoneBase {\n constructor(opts) {\n super(opts);\n if (opts) {\n var orig = opts.orig; // entire

element that will be replaced by new HTML\n this.useRunestoneServices =\n opts.useRunestoneServices || eBookConfig.useRunestoneServices;\n this.origElem = orig;\n this.divid = orig.id;\n this.question = this.origElem.innerHTML;\n this.optional = false;\n this.attachURL = opts.attachURL;\n if (this.origElem.hasAttribute(\"data-optional\")) {\n this.optional = true;\n }\n if (this.origElem.hasAttribute(\"data-attachment\")) {\n this.attachment = true;\n }\n this.placeholder =\n this.origElem.getAttribute(\"data-placeholder\") ||\n \"Write your answer here\";\n this.renderHTML();\n this.caption = \"shortanswer\";\n this.addCaption(\"runestone\");\n this.checkServer(\"shortanswer\", true);\n if (typeof Prism !== \"undefined\") {\n Prism.highlightAllUnder(this.containerDiv);\n }\n if (this.attachment) {\n this.getAttachmentName();\n }\n }\n }\n\n renderHTML() {\n this.containerDiv = document.createElement(\"div\");\n this.containerDiv.id = this.divid;\n this.containerDiv.classList.add(...(this.origElem.getAttribute(\"class\") || \"\").split(\" \").filter(Boolean));\n this.newForm = document.createElement(\"form\");\n this.newForm.id = this.divid + \"_journal\";\n this.newForm.name = this.newForm.id;\n this.newForm.action = \"\";\n this.containerDiv.appendChild(this.newForm);\n this.fieldSet = document.createElement(\"fieldset\");\n this.newForm.appendChild(this.fieldSet);\n this.firstLegendDiv = document.createElement(\"div\");\n this.firstLegendDiv.innerHTML = this.question;\n this.firstLegendDiv.classList.add(\"journal-question\");\n this.firstLegendDiv.classList.add(\"exercise-statement\");\n this.fieldSet.appendChild(this.firstLegendDiv);\n this.jInputDiv = document.createElement(\"div\");\n this.jInputDiv.id = this.divid + \"_journal_input\";\n this.fieldSet.appendChild(this.jInputDiv);\n this.jOptionsDiv = document.createElement(\"div\");\n this.jOptionsDiv.classList.add(\"journal-options\");\n this.jInputDiv.appendChild(this.jOptionsDiv);\n this.jTextArea = document.createElement(\"textarea\");\n let self = this;\n this.jTextArea.onchange = function () {\n self.isAnswered = true;\n };\n this.jTextArea.id = this.divid + \"_solution\";\n this.jTextArea.setAttribute(\"aria-label\", \"textarea\");\n this.jTextArea.placeholder = this.placeholder;\n this.jTextArea.style.display = \"inline\";\n this.jTextArea.style.width = \"530px\";\n this.jTextArea.classList.add(\"form-control\");\n this.jTextArea.rows = 4;\n this.jTextArea.cols = 50;\n this.jOptionsDiv.appendChild(this.jTextArea);\n this.jTextArea.onchange = function () {\n this.isAnswered = true;\n if (this.isTimed) {\n this.feedbackDiv.innerHTML = \"Your answer is automatically saved.\";\n } else {\n this.feedbackDiv.innerHTML = \"Your answer has not been saved yet!\";\n }\n this.feedbackDiv.classList.remove(\"alert-success\");\n this.feedbackDiv.classList.add(\"alert\", \"alert-danger\");\n }.bind(this);\n this.jTextArea.addEventListener(\"input\", () => {\n this.jTextArea.style.height = \"auto\";\n this.jTextArea.style.height = `${this.jTextArea.scrollHeight}px`;\n this.renderMath(this.jTextArea.value);\n });\n this.buttonDiv = document.createElement(\"div\");\n this.fieldSet.appendChild(this.buttonDiv);\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(\"btn\", \"btn-success\");\n this.submitButton.type = \"button\";\n this.submitButton.textContent = \"Save\";\n this.submitButton.onclick = function () {\n this.checkCurrentAnswer();\n this.logCurrentAnswer();\n this.renderFeedback();\n }.bind(this);\n this.buttonDiv.appendChild(this.submitButton);\n\n this.otherOptionsDiv = document.createElement(\"div\");\n this.otherOptionsDiv.style.paddingLeft = \"20px\";\n this.otherOptionsDiv.classList.add(\"journal-options\");\n this.fieldSet.appendChild(this.otherOptionsDiv);\n // add a feedback div to give user feedback\n this.feedbackDiv = document.createElement(\"div\");\n this.feedbackDiv.style.width = \"530px\";\n this.feedbackDiv.style.fontStyle = \"italic\";\n this.feedbackDiv.id = this.divid + \"_feedback\";\n this.feedbackDiv.style.display = \"none\";\n this.fieldSet.appendChild(this.feedbackDiv);\n if (this.attachment) {\n let attachDiv = document.createElement(\"div\")\n this.attachDiv = attachDiv;\n if (this.graderactive) {\n // If in grading mode make a button to create a popup with the image\n let viewButton = document.createElement(\"button\")\n viewButton.type = \"button\"\n viewButton.innerHTML = \"View Attachment\"\n viewButton.onclick = this.viewFile.bind(this);\n attachDiv.appendChild(viewButton);\n } else {\n // Otherwise make a button for the student to select a file to upload.\n this.fileUpload = document.createElement(\"input\")\n this.fileUpload.type = \"file\";\n this.fileUpload.id = `${this.divid}_fileme`;\n attachDiv.appendChild(this.fileUpload);\n }\n this.containerDiv.appendChild(attachDiv);\n }\n this.origElem.replaceWith(this.containerDiv);\n // This is a stopgap measure for when MathJax is not loaded at all. There is another\n // more difficult case that when MathJax is loaded asynchronously we will get here\n // before MathJax is loaded. In that case we will need to implement something\n // like `the solution described here `_\n if (typeof MathJax !== \"undefined\") {\n this.queueMathJax(this.containerDiv);\n }\n }\n\n renderMath(value) {\n if (looksLikeLatexMath(value)) {\n if (!this.renderedAnswer) {\n this.renderedAnswerLabel = document.createElement(\"label\");\n this.renderedAnswerLabel.innerHTML = \"Rendered Answer:\";\n this.renderedAnswerLabel.id = this.divid + \"_rendered_answer_label\";\n this.renderedAnswerLabel.style.display = \"none\";\n this.fieldSet.appendChild(this.renderedAnswerLabel);\n\n this.renderedAnswer = document.createElement(\"div\");\n this.renderedAnswer.classList.add(\"latexoutput\");\n this.renderedAnswer.setAttribute('aria-labelledby', this.renderedAnswerLabel.id);\n this.renderedAnswer.setAttribute('aria-live', \"polite\");\n this.renderedAnswer.style.display = \"none\";\n this.fieldSet.appendChild(this.renderedAnswer);\n }\n value = value.replace(/\\$\\$(.*?)\\$\\$/g, \"\\\\[ $1 \\\\]\");\n value = value.replace(/\\$(.*?)\\$/g, \"\\\\( $1 \\\\)\");\n value = value.replace(/\\n/g, \"
\");\n this.renderedAnswer.innerHTML = value;\n\n this.renderedAnswer.style.display = \"block\";\n this.renderedAnswerLabel.style.display = \"block\";\n this.queueMathJax(this.renderedAnswer);\n\n } else {\n if (this.renderedAnswer) {\n this.renderedAnswer.style.display = \"none\";\n this.renderedAnswerLabel.style.display = \"none\";\n }\n }\n }\n\n async checkCurrentAnswer() {\n let value = document.getElementById(this.divid + \"_solution\").value;\n this.renderMath(value);\n this.setLocalStorage({\n answer: value,\n timestamp: new Date(),\n });\n }\n\n async logCurrentAnswer(sid) {\n let value = document.getElementById(this.divid + \"_solution\").value;\n this.renderMath(value);\n this.setLocalStorage({\n answer: value,\n timestamp: new Date(),\n });\n let data = {\n event: \"shortanswer\",\n act: value,\n answer: value,\n div_id: this.divid,\n };\n if (typeof sid !== \"undefined\") {\n data.sid = sid;\n }\n await this.logBookEvent(data);\n if (this.attachment) {\n await this.uploadFile();\n }\n }\n\n renderFeedback() {\n this.feedbackDiv.innerHTML = \"Your answer has been saved.\";\n this.feedbackDiv.classList.remove(\"alert-danger\");\n this.feedbackDiv.classList.add(\"alert\", \"alert-success\");\n this.feedbackDiv.style.display = \"block\";\n }\n setLocalStorage(data) {\n if (!this.graderactive) {\n let key = this.localStorageKey();\n localStorage.setItem(key, JSON.stringify(data));\n }\n }\n checkLocalStorage() {\n // Repopulates the short answer text\n // which was stored into local storage.\n var answer = \"\";\n if (this.graderactive) {\n return;\n }\n var len = localStorage.length;\n if (len > 0) {\n var ex = localStorage.getItem(this.localStorageKey());\n if (ex !== null) {\n try {\n var storedData = JSON.parse(ex);\n answer = storedData.answer;\n } catch (err) {\n // error while parsing; likely due to bad value stored in storage\n console.log(err.message);\n localStorage.removeItem(this.localStorageKey());\n return;\n }\n let solution = document.getElementById(this.divid + \"_solution\");\n if (solution) {\n solution.value = answer;\n }\n this.renderMath(answer);\n }\n }\n }\n restoreAnswers(data) {\n // Restore answers from storage retrieval done in RunestoneBase\n // sometimes data.answer can be null\n if (!data.answer) {\n data.answer = \"\";\n }\n this.answer = data.answer;\n this.jTextArea.value = this.answer;\n this.renderMath(this.answer);\n\n let p = document.createElement(\"p\");\n p.classList.add(\"shortanswer__timestamp\");\n this.jInputDiv.appendChild(p);\n var tsString = \"\";\n if (data.timestamp) {\n tsString = new Date(data.timestamp).toLocaleString();\n } else {\n tsString = \"\";\n }\n p.textContent = tsString;\n this.jTextArea.style.height = \"auto\";\n this.jTextArea.style.height = `${this.jTextArea.scrollHeight}px`;\n\n if (data.last_answer) {\n this.current_answer = \"ontime\";\n let toggle_answer_button = document.createElement(\"button\");\n toggle_answer_button.type = \"button\";\n toggle_answer_button.textContent = \"Show Late Answer\";\n toggle_answer_button.classList.add(\"btn\", \"btn-warning\");\n toggle_answer_button.style.marginLeft = \"5px\";\n\n toggle_answer_button.addEventListener(\n \"click\",\n function () {\n var display_timestamp, button_text;\n if (this.current_answer === \"ontime\") {\n this.jTextArea.value = data.last_answer;\n this.answer = data.last_answer;\n display_timestamp = new Date(\n data.last_timestamp\n ).toLocaleString();\n button_text = \"Show on-Time Answer\";\n this.current_answer = \"late\";\n } else {\n this.jTextArea.value = data.answer;\n this.answer = data.answer;\n display_timestamp = tsString;\n button_text = \"Show Late Answer\";\n this.current_answer = \"ontime\";\n }\n this.renderMath(this.answer);\n p.textContent = `Submitted: ${display_timestamp}`;\n toggle_answer_button.textContent = button_text;\n }.bind(this)\n );\n\n this.buttonDiv.appendChild(toggle_answer_button);\n }\n let feedbackStr = \"\";\n if (typeof data.score !== \"undefined\") {\n feedbackStr = `Score: ${data.score}`;\n }\n if (data.comment) {\n feedbackStr += ` -- ${data.comment}`;\n }\n if (feedbackStr !== \"\") {\n this.feedbackDiv.innerHTML = feedbackStr;\n this.feedbackDiv.style.display = \"block\";\n this.feedbackDiv.classList.add(\"alert\", \"alert-success\");\n }\n }\n\n disableInteraction() {\n this.jTextArea.disabled = true;\n }\n\n async getAttachmentName() {\n // Get the attachment name from the /ns/assessment/has_attachment endpoint\n let requestUrl = `/ns/assessment/has_attachment/${this.divid}`;\n if (this.sid) {\n requestUrl += `?sid=${this.sid}`;\n }\n const response = await fetch(requestUrl);\n if (!response.ok) {\n console.error(\"Error fetching attachment name:\", response.statusText);\n return null;\n }\n const obj = await response.json();\n if (obj.detail.hasAttachment) {\n // Return the S3 key for the attachment\n let filename = obj.detail.hasAttachment;\n // filename is everthing after the last slash\n filename = filename.substring(filename.lastIndexOf(\"/\") + 1);\n let fmess = document.createElement(\"span\");\n fmess.innerHTML = `Attachment: ${filename}`;\n this.attachDiv.appendChild(fmess);\n }\n }\n\n async uploadFile() {\n const files = this.fileUpload.files\n // get the suffix from the file name\n const fileName = files[0].name;\n const suffix = fileName.split('.').pop();\n // if the suffix is not in the list of allowed suffixes, return\n if (!['jpg', 'jpeg', 'png', 'gif', 'pdf'].includes(suffix)) {\n alert(\"File type not allowed. Please upload a jpg, jpeg, png, gif, or pdf file.\");\n return;\n }\n // if the file size is greater than 5MB, return\n if (files[0].size > 5 * 1024 * 1024) {\n alert(\"File size exceeds 5MB limit. Please upload a smaller file.\");\n return;\n }\n const data = new FormData()\n if (this.fileUpload.files.length > 0) {\n data.append('file', files[0])\n fetch(`/ns/logger/upload/${this.divid}`, {\n method: 'POST',\n body: data\n })\n .then(response => response.json())\n .then(data => {\n console.log(data)\n })\n .catch(error => {\n console.error(error)\n })\n }\n }\n\n viewFile() {\n // Get the URL from the S3 API -- saved when we display in grader mode\n if (this.attachURL) {\n //window.open(this.attachURL, \"_blank\");\n //\n //switch to \n const image_window = window.open(\"\", \"_blank\")\n if (this.attachURL.indexOf('.pdf?') !== -1) {\n const embed = image_window.document.createElement(\"object\");\n embed.setAttribute(\"data\", this.attachURL);\n embed.setAttribute(\"type\", \"application/pdf\");\n embed.setAttribute(\"width\", \"800px\");\n embed.setAttribute(\"height\", \"1040px\");\n image_window.document.body.appendChild(embed);\n let alt = image_window.document.createElement(\"a\");\n alt.setAttribute(\"href\", this.attachURL);\n alt.innerText = \"Download PDF\";\n embed.appendChild(alt);\n }\n else {\n const img = image_window.document.createElement(\"img\");\n img.setAttribute(\"src\", this.attachURL);\n img.setAttribute(\"style\", \"width:100%; height:auto;\");\n image_window.document.body.appendChild(img);\n }\n } else {\n alert(\"No attachment for this student.\")\n }\n }\n}\n\n/*=================================\n== Find the custom HTML tags and ==\n== execute our code on them ==\n=================================*/\ndocument.addEventListener(\"runestone:login-complete\", function () {\n document.querySelectorAll(\"[data-component=shortanswer]\").forEach(function (el) {\n // If this element exists within a timed component, don't render it here\n if (!el.closest(\"[data-component=timedAssessment]\")) {\n try {\n window.componentMap[el.id] = new ShortAnswer({\n orig: el,\n useRunestoneServices: eBookConfig.useRunestoneServices,\n });\n } catch (err) {\n console.log(`Error rendering ShortAnswer Problem ${el.id}\n Details: ${err}`);\n }\n }\n });\n});\n","import ShortAnswer from \"./shortanswer.js\";\n\nexport default class TimedShortAnswer extends ShortAnswer {\n constructor(opts) {\n super(opts);\n this.renderTimedIcon(this.containerDiv);\n this.isTimed = true;\n this.hideButtons();\n }\n hideButtons() {\n if (this.submitButton) {\n this.submitButton.style.display = \"none\";\n }\n }\n renderTimedIcon(component) {\n // renders the clock icon on timed components. The component parameter\n // is the element that the icon should be appended to.\n var timeIconDiv = document.createElement(\"div\");\n var timeIcon = document.createElement(\"img\");\n\n timeIcon.src = \"../_static/clock.png\";\n timeIcon.style.width = \"15px\";\n timeIcon.style.height = \"15px\";\n\n timeIconDiv.className = \"timeTip\";\n timeIconDiv.title = \"\";\n timeIconDiv.appendChild(timeIcon);\n\n // If firstChild is null, insertBefore acts like appendChild\n component.insertBefore(timeIconDiv, component.firstChild);\n }\n checkCorrectTimed() {\n return \"I\"; // we ignore this in the grading\n }\n hideFeedback() {\n if (this.feedbackDiv) {\n this.feedbackDiv.style.display = \"none\";\n }\n }\n}\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\n\nwindow.component_factory.shortanswer = function (opts) {\n if (opts.timed) {\n return new TimedShortAnswer(opts);\n }\n return new ShortAnswer(opts);\n};\n"],"names":["TimedMatching","MatchingProblem","constructor","opts","super","this","renderTimedIcon","containerDiv","hideButtons","needsReinitialization","gradeBtn","style","display","helpBtn","component","timeIconDiv","document","createElement","timeIcon","src","width","height","className","title","appendChild","prepend","checkCorrectTimed","correct","hideFeedback","connList","reinitializeListeners","window","component_factory","matching","timed","Timed","orig","origElem","divid","id","children","childNodes","visited","timeLimit","limitedTime","isNaN","$","data","parseInt","startingTime","showFeedback","hasAttribute","getAttribute","showResults","random","showTimer","fullwidth","nopause","eBookConfig","enableScratchAC","running","paused","done","taken","score","incorrect","correctStr","incorrectStr","skippedStr","skipped","currentQuestionIndex","renderedQuestionArray","getNewChildren","enableDebug","body","oncontextmenu","checkAssessmentStatus","then","renderTimedAssess","bind","newChildren","runestoneChildren","querySelectorAll","i","length","push","sendInfo","div_id","course_name","course","console","log","useRunestoneServices","request","Request","new_server_prefix","method","headers","jsonHeaders","JSON","stringify","response","fetch","json","detail","tookAssessment","assessmentTaken","localStorage","clear","Promise","resolve","createRenderedQuestionArray","randomizeRQA","renderContainer","renderTimer","renderControlButtons","timedDiv","renderNavControls","renderSubmitButton","renderFeedbackContainer","replaceWith","styleExamElements","checkServer","disableCutCopyPaste","addEventListener","e","preventDefault","attr","classList","add","navDiv","flagDiv","switchContainer","switchDiv","wrapperDiv","timerContainer","showTime","controlDiv","startBtn","pauseBtn","class","tabindex","role","textContent","async","finishButton","hide","flagButton","show","mess","innerHTML","renderTimedQuestion","startAssessment","disabled","pauseAssessment","tmpLi","tmpA","pagNavList","addClass","leftContainer","leftNavButton","rightNavButton","css","flaggingPlace","flagContainer","rightContainer","ensureButtonSafety","break","qNumList","qNumWrapperList","navBtnListeners","flagBtnListener","navigateAway","state","question","isAnswered","checkCurrentAnswer","logCurrentAnswer","handleNextPrev","event","target","text","match","hasClass","j","removeClass","handleFlag","handleNumberedNav","oldIndex","buttonContainer","filter","x","skipstr","confirm","finishAssessment","scoreDiv","tmpChild","timedWrapper","initAttempts","is","temporaryValue","randomIndex","currentIndex","Math","floor","currentQuestion","rqa","newq","initialize","componentKind","component_ready_promise","renderFeedback","disableInteraction","includes","contains","handlePrevAssessment","restoreAnsweredQuestions","lastTime","Date","now","increment","logBookEvent","act","timeStamp","storageObj","answer","timestamp","setItem","localStorageKey","on","returnValue","mins","secs","minsString","secsString","beginning","timeString","minutes","timeTaken","seconds","timeTips","getElementsByClassName","setTimeout","currentTime","email","margin","border","padding","color","findTimeTaken","finalizeProblems","checkScore","displayScore","storeScore","logScore","off","assignment_id","jQuery","ajax","url","app","type","dataType","is_timed","success","retdata","message","hideTimedFeedback","substring","storage_arr","time_taken","shouldUseServer","storageDate","getItem","storedData","parse","err","removeItem","checkLocalStorage","restoreAnswers","tmpArr","reset","setLocalStorage","parsedData","numQuestions","scoreString","toFixed","html","highlightNumberedList","correctCount","incorrectCount","skippedCount","replace","split","numberedBtns","eq","k","each","index","componentMap","ShortAnswer","optional","attachURL","attachment","placeholder","renderHTML","caption","addCaption","Prism","highlightAllUnder","getAttachmentName","Boolean","newForm","name","action","fieldSet","firstLegendDiv","jInputDiv","jOptionsDiv","jTextArea","self","onchange","setAttribute","rows","cols","isTimed","feedbackDiv","remove","scrollHeight","renderMath","value","buttonDiv","submitButton","onclick","otherOptionsDiv","paddingLeft","fontStyle","attachDiv","graderactive","viewButton","viewFile","fileUpload","MathJax","queueMathJax","renderedAnswer","renderedAnswerLabel","getElementById","sid","uploadFile","key","ex","solution","p","tsString","toLocaleString","last_answer","current_answer","toggle_answer_button","marginLeft","display_timestamp","button_text","last_timestamp","feedbackStr","comment","requestUrl","ok","error","statusText","obj","hasAttachment","filename","lastIndexOf","fmess","files","suffix","pop","alert","size","FormData","append","catch","image_window","open","indexOf","embed","alt","innerText","img","forEach","el","closest","TimedShortAnswer","insertBefore","firstChild","shortanswer"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/115.648ff4b5650f4c7c.js.map.gz b/_static/115.648ff4b5650f4c7c.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..ea7b758a096df004ae51be25b483d35fabfb4478 GIT binary patch literal 27562 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 RHwz2j{~sgS-Z7oH0RT?+tL6Xz literal 0 HcmV?d00001 diff --git a/_static/126.a976f62852f30b51.js b/_static/126.a976f62852f30b51.js new file mode 100644 index 0000000..bde5c42 --- /dev/null +++ b/_static/126.a976f62852f30b51.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[126],{23053:()=>{Symbol("__sensor__");Event},50126:(e,t,r)=>{r.r(t),r.d(t,{SimpleAbsoluteOrientationSensor:()=>w,SimpleAccelerometer:()=>d,SimpleAmbientLightSensor:()=>l,SimpleGeolocationSensor:()=>u,SimpleGravitySensor:()=>p,SimpleGyroscope:()=>m,SimpleLinearAccelerationSensor:()=>h,SimpleMagnetometer:()=>v,SimpleRelativeOrientationSensor:()=>g}),r(52840),r(23053);let s;window.GeolocationSensor||Sensor,screen.orientation?s=screen.orientation:screen.msOrientation?s=screen.msOrientation:(s={},Object.defineProperty(s,"angle",{get:()=>window.orientation||0}));const n=(e,...t)=>class extends e{constructor(...e){super(e);for(const e of t)if(`on${e}`in window){this[slot].eventName=e;break}this[slot].activateCallback=()=>{window.addEventListener(this[slot].eventName,this[slot].handleEvent,{capture:!0})},this[slot].deactivateCallback=()=>{window.removeEventListener(this[slot].eventName,this[slot].handleEvent,{capture:!0})}}};window.RelativeOrientationSensor||n(Sensor,"deviceorientation"),window.AbsoluteOrientationSensor||n(Sensor,"deviceorientationabsolute","deviceorientation"),window.Gyroscope||n(Sensor,"devicemotion"),window.Accelerometer||n(Sensor,"devicemotion"),window.LinearAccelerationSensor||n(Sensor,"devicemotion"),window.GravitySensor||n(Sensor,"devicemotion");var o=r(65865);class i{constructor(){(0,o.e)(this),this.sensor=null}async start(e,t,r){if(this.sensor)throw"In use. Stop the sensor before starting another.";if("function"!=typeof e)throw"Not available.";if(navigator.permissions&&!(await Promise.all(t.map((e=>navigator.permissions.query({name:e}))))).every((e=>"granted"===e.state)))throw`Permission to use the ${t} sensor was denied.`;let s,n;this.sensor=null;let o=new Promise(((t,o)=>{try{this.sensor=new e(r);let i=this;s=e=>{i.sensor.removeEventListener("error",s),"NotAllowedError"===e.error.name?o("Access to this sensor is not allowed."):"NotReadableError"===e.error.name&&o("Cannot connect to the sensor."),o(`Unknown error: ${e.error.name}`)},this.sensor.addEventListener("error",s),n=e=>{i.sensor.removeEventListener("reading",n),t()},this.sensor.addEventListener("reading",n),this.sensor.start()}catch(e){"SecurityError"===e.name?o("Sensor construction was blocked by a feature policy."):"ReferenceError"===e.name?o("Sensor is not supported by the User Agent."):o(e)}}));try{console.log(`Await ${new Date}`),await o}catch(e){throw this.stop(),e}finally{console.log(`Done ${new Date}`),this.sensor.removeEventListener("error",s),this.sensor.removeEventListener("reading",n)}}get ready(){return this.sensor&&this.sensor.activated&&this.sensor.hasReading}stop(){this.sensor&&this.sensor.stop(),this.sensor=null}}class a extends i{get x(){return this.sensor.x}get y(){return this.sensor.y}get z(){return this.sensor.z}}class c extends i{get quaternion(){return this.sensor.quaternion}populateMatrix(e){return this.sensor.populateMatrix(e)}}class l extends i{async start(e){return super.start(window.AmbientLightSensor,["ambient-light-sensor"],e)}get illuminance(){return this.sensor.illuminance}}class u extends i{async start(e){return super.start(GeolocationSensor,["geolocation"],e)}get latitude(){return this.sensor.latitude}get longitude(){return this.sensor.longitude}get altitude(){return this.sensor.altitude}get accuracy(){return this.sensor.accuracy}get altitudeAccuracy(){return this.sensor.altitudeAccuracy}get heading(){return this.sensor.heading}get speed(){return this.sensor.speed}}class d extends a{async start(e){return super.start(Accelerometer,["accelerometer"],e)}}class m extends a{async start(e){return super.start(Gyroscope,["gyroscope"],e)}}class h extends a{async start(e){return super.start(LinearAccelerationSensor,["accelerometer"],e)}}class p extends a{async start(e){return super.start(GravitySensor,["accelerometer"],e)}}class v extends a{async start(e){return super.start(window.Magnetometer,["magnetometer"],e)}}class w extends c{async start(e){return super.start(AbsoluteOrientationSensor,["accelerometer","gyroscope","magnetometer"],e)}}class g extends c{async start(e){return super.start(RelativeOrientationSensor,["accelerometer","gyroscope"],e)}}},52840:()=>{navigator.permissions||"function"!=typeof DeviceMotionEvent.requestPermission||"function"!=typeof DeviceOrientationEvent.requestPermission||(navigator.permissions={query:e=>{switch(e.name){case"accelerometer":case"gyroscope":return new Promise(((e,t)=>{Promise.all([DeviceMotionEvent.requestPermission(),DeviceOrientationEvent.requestPermission()]).then((t=>e({state:t.every((e=>"granted"===e))?"granted":"denied"})))}));default:return Promise.resolve({state:"granted"})}}})},65865:(e,t,r)=>{r.d(t,{e:()=>n});const s=e=>{const t=new Set;do{for(const r of Reflect.ownKeys(e))t.add([e,r])}while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};function n(e){for(const[t,r]of s(e.constructor.prototype)){if("constructor"===r)continue;const s=Reflect.getOwnPropertyDescriptor(t,r);s&&"function"==typeof s.value&&(e[r]=e[r].bind(e))}}}}]); +//# sourceMappingURL=126.a976f62852f30b51.js.map \ No newline at end of file diff --git a/_static/126.a976f62852f30b51.js.gz b/_static/126.a976f62852f30b51.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7208528e60ee363121b168b6748f5c7e2f7da97 GIT binary patch literal 1764 zcmVnx~6kQT$Rv?&r4doYZI zmd>^onN&&2jw|cG??_6vY|BmptPhRNyZd;@`|fzOTS#!E5^1d5kVwcz!5oG;jUO&2 z1$+1hhL?Pra|TSw=&*RX><_#kFXV*u`)^Or2Yz|_?&R!Uk9g6C@^&#D@{G85cM_Q7 z;_lA%!p}1_to*YRRPPb+l`pie2n11{FM@<9zr0PSc?K6l$+JSiwMfy1s+6-^17zUm zeytV9kb&S+P+%oVBbg4h;Z-`GsFqHvpTI; zuTln7)Xr>!PHLqubj(1tT%FZ|8_3XRwkOnag(pMKPT&7_qCc1;_QDL5Bg1*h5|!@Uth)ofCYSw{1MZ-v)HSbrt-Q=b7Q$jWK>rE_3&SaRgl04WB(@bM1)!p>ARGT zGjRQK49cd;`qf50T(SV*@R6gubVTksdsRYppEAd8>XmAe%D&9F8U&!Z_mxf|f^aB+K2$9sjWGdK z!6nVIA+kL(9IjobNn(h5l}hvs_wPdWTZ23@ta5;(Z4fGMBB z|Fv;dHDuY#w&jwMnl^3%vowZQ&Roy0?e`YuL3>(Txd*XV)wPQ?PBeu-G_z6sbiH zST<1OedWrbGn!^}n1R)181vul2P+;IAwcF56-;SP2t*$` zje;Kqhy^JblC=j|`S?%M7uU3nI~J5FNZcrjAVAj@pn~!1{@V)0QCx>?f_+u0s)=|` zrIP?lAqnnnQ}kK5eXd5pBL?%vZ$j{<;kw$CSd<(3s02jV4x2_=6v_zwEYn)0voc)} zf(zHjtm@Oe$TB{MbLJS!9v)#Eq`I#=QxoA%$7_Yho^cr1UK8Y> z>oX)dc@lg>y`^aj!K?6UiznFiOZOJyLSQwv&Z0R|Tb9nM-ZW`6JBD~QK0x9O7Y=ns zKy^=aa-OB}!kq98j6eX3VLxV_7rcCOE|kU6C;VN4a4yCei$>z;VWlrNO)2dL$6Ctx znA~5Ol6h5XZhb<2<9YkGjQBb>!+6Jrk7Z3fA1b_CkqldCpK$!z0&5@I6YP9awUvyj z!b{xI3k&RB0`TaV(*ig?-pFfxncn>F?OR=mi!otYGU z8n4&ZuIOn*70Dhy8mU#~YqV$z5q*Uv%@PJ**(Y?mqQ*Kn6iM6Na963+T{cJ`8 z58qT0w!-b1wROn7`tUZVO`PU+@a?g=|BU$XHhgY0#2a`4P9+RS+vo$3(u~qQwQtn+ zypOBzJ=f0AuAa{I2!qdhT4bt;rEyyTa&Wf7UfG)mCXRXL?X&U2j`>B${#e4Q=FM;C zY5Q53iTf5*nDBD_su%iIkE20{6WTvO|_(=NTi-A|oCus&cvPKcRC%US* zCc^bd>mMJ(Q54lbR^*M$3!C0rg$;ikrkTI;ppPL8& class extends superclass {\n constructor(...args) {\n // @ts-ignore\n super(args);\n const eventTarget = document.createDocumentFragment();\n\n this.addEventListener = (type, ...args) => {\n return eventTarget.addEventListener(type, ...args);\n }\n\n this.removeEventListener = (...args) => {\n // @ts-ignore\n return eventTarget.removeEventListener(...args);\n }\n\n this.dispatchEvent = (event) => {\n defineProperties(event, { currentTarget: this });\n if (!event.target) {\n defineProperties(event, { target: this });\n }\n\n const methodName = `on${event.type}`;\n if (typeof this[methodName] == \"function\") {\n this[methodName](event);\n }\n\n const retValue = eventTarget.dispatchEvent(event);\n\n if (retValue && this.parentNode) {\n this.parentNode.dispatchEvent(event);\n }\n\n defineProperties(event, { currentTarget: null, target: null });\n\n return retValue;\n }\n }\n};\n\nclass EventTarget extends EventTargetMixin(Object) {};\n\nfunction defineReadonlyProperties(target, slot, descriptions) {\n const propertyBag = target[slot];\n for (const property in descriptions) {\n propertyBag[property] = descriptions[property];\n Object.defineProperty(target, property, {\n get: () => propertyBag[property]\n });\n }\n}\n\nclass SensorErrorEvent extends Event {\n constructor(type, errorEventInitDict) {\n super(type, errorEventInitDict);\n\n if (!errorEventInitDict || !(errorEventInitDict.error instanceof DOMException)) {\n throw TypeError(\n \"Failed to construct 'SensorErrorEvent':\" +\n \"2nd argument much contain 'error' property\"\n );\n }\n\n Object.defineProperty(this, \"error\", {\n configurable: false,\n writable: false,\n value: errorEventInitDict.error\n });\n }\n};\n\nfunction defineOnEventListener(target, name) {\n Object.defineProperty(target, `on${name}`, {\n enumerable: true,\n configurable: false,\n writable: true,\n value: null\n });\n}\n\nconst SensorState = {\n IDLE: 1,\n ACTIVATING: 2,\n ACTIVE: 3,\n}\n\nclass Sensor extends EventTarget {\n constructor(options) {\n super();\n this[slot] = new WeakMap;\n\n defineOnEventListener(this, \"reading\");\n defineOnEventListener(this, \"activate\");\n defineOnEventListener(this, \"error\");\n\n defineReadonlyProperties(this, slot, {\n activated: false,\n hasReading: false,\n timestamp: null\n })\n\n this[slot].state = SensorState.IDLE;\n\n this[slot].notifyError = (message, name) => {\n let error = new SensorErrorEvent(\"error\", {\n error: new DOMException(message, name)\n });\n this.dispatchEvent(error);\n this.stop();\n }\n\n this[slot].notifyActivatedState = () => {\n let activate = new Event(\"activate\");\n this[slot].activated = true;\n this.dispatchEvent(activate);\n this[slot].state = SensorState.ACTIVE;\n }\n\n this[slot].activateCallback = () => {};\n this[slot].deactivateCallback = () => {};\n\n this[slot].frequency = null;\n\n if (window && window.parent != window.top) {\n throw new DOMException(\"Only instantiable in a top-level browsing context\", \"SecurityError\");\n }\n\n if (options && typeof(options.frequency) == \"number\") {\n if (options.frequency > 60) {\n this.frequency = options.frequency;\n }\n }\n }\n\n start() {\n if (this[slot].state === SensorState.ACTIVATING || this[slot].state === SensorState.ACTIVE) {\n return;\n }\n this[slot].state = SensorState.ACTIVATING;\n this[slot].activateCallback();\n }\n\n stop() {\n if (this[slot].state === SensorState.IDLE) {\n return;\n }\n this[slot].activated = false;\n this[slot].hasReading = false;\n this[slot].timestamp = null;\n this[slot].deactivateCallback();\n\n this[slot].state = SensorState.IDLE;\n }\n}","// ***********************************\n// |docname| - Motion sensors polyfill\n// ***********************************\n// @ts-check\n\"use strict\";\n\nimport \"./sensor.js\";\n\n//const slot = __sensor__;\n\nlet orientation;\n\n// @ts-ignore\nif (screen.orientation) {\n // @ts-ignore\n orientation = screen.orientation;\n} else if (screen.msOrientation) {\n orientation = screen.msOrientation;\n} else {\n orientation = {};\n Object.defineProperty(orientation, \"angle\", {\n get: () => { return (window.orientation || 0) }\n });\n}\n\nconst DeviceOrientationMixin = (superclass, ...eventNames) => class extends superclass {\n constructor(...args) {\n // @ts-ignore\n super(args);\n\n for (const eventName of eventNames) {\n if (`on${eventName}` in window) {\n this[slot].eventName = eventName;\n break;\n }\n }\n\n this[slot].activateCallback = () => {\n window.addEventListener(this[slot].eventName, this[slot].handleEvent, { capture: true });\n }\n\n this[slot].deactivateCallback = () => {\n window.removeEventListener(this[slot].eventName, this[slot].handleEvent, { capture: true });\n }\n }\n};\n\nfunction toQuaternionFromEuler(alpha, beta, gamma) {\n const degToRad = Math.PI / 180\n\n const x = (beta || 0) * degToRad;\n const y = (gamma || 0) * degToRad;\n const z = (alpha || 0) * degToRad;\n\n const cZ = Math.cos(z * 0.5);\n const sZ = Math.sin(z * 0.5);\n const cY = Math.cos(y * 0.5);\n const sY = Math.sin(y * 0.5);\n const cX = Math.cos(x * 0.5);\n const sX = Math.sin(x * 0.5);\n\n const qx = sX * cY * cZ - cX * sY * sZ;\n const qy = cX * sY * cZ + sX * cY * sZ;\n const qz = cX * cY * sZ + sX * sY * cZ;\n const qw = cX * cY * cZ - sX * sY * sZ;\n\n return [qx, qy, qz, qw];\n}\n\nfunction rotateQuaternionByAxisAngle(quat, axis, angle) {\n const sHalfAngle = Math.sin(angle / 2);\n const cHalfAngle = Math.cos(angle / 2);\n\n const transformQuat = [\n axis[0] * sHalfAngle,\n axis[1] * sHalfAngle,\n axis[2] * sHalfAngle,\n cHalfAngle\n ];\n\n function multiplyQuaternion(a, b) {\n const qx = a[0] * b[3] + a[3] * b[0] + a[1] * b[2] - a[2] * b[1];\n const qy = a[1] * b[3] + a[3] * b[1] + a[2] * b[0] - a[0] * b[2];\n const qz = a[2] * b[3] + a[3] * b[2] + a[0] * b[1] - a[1] * b[0];\n const qw = a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2];\n\n return [qx, qy, qz, qw];\n }\n\n function normalizeQuaternion(quat) {\n const length = Math.sqrt(quat[0] ** 2 + quat[1] ** 2 + quat[2] ** 2 + quat[3] ** 2);\n if (length === 0) {\n return [0, 0, 0, 1];\n }\n\n return quat.map(v => v / length);\n }\n\n return normalizeQuaternion(multiplyQuaternion(quat, transformQuat));\n}\n\nfunction toMat4FromQuat(mat, q) {\n const typed = mat instanceof Float32Array || mat instanceof Float64Array;\n\n if (typed && mat.length >= 16) {\n mat[0] = 1 - 2 * (q[1] ** 2 + q[2] ** 2);\n mat[1] = 2 * (q[0] * q[1] - q[2] * q[3]);\n mat[2] = 2 * (q[0] * q[2] + q[1] * q[3]);\n mat[3] = 0;\n\n mat[4] = 2 * (q[0] * q[1] + q[2] * q[3]);\n mat[5] = 1 - 2 * (q[0] ** 2 + q[2] ** 2);\n mat[6] = 2 * (q[1] * q[2] - q[0] * q[3]);\n mat[7] = 0;\n\n mat[8] = 2 * (q[0] * q[2] - q[1] * q[3]);\n mat[9] = 2 * (q[1] * q[2] + q[0] * q[3]);\n mat[10] = 1 - 2 * (q[0] ** 2 + q[1] ** 2);\n mat[11] = 0;\n\n mat[12] = 0;\n mat[13] = 0;\n mat[14] = 0;\n mat[15] = 1;\n }\n\n return mat;\n}\n\nfunction worldToScreen(quaternion) {\n return !quaternion ? null :\n rotateQuaternionByAxisAngle(\n quaternion,\n [0, 0, 1],\n - orientation.angle * Math.PI / 180\n );\n}\n\n// @ts-ignore\nconst RelativeOrientationSensor = window.RelativeOrientationSensor ||\nclass RelativeOrientationSensor extends DeviceOrientationMixin(Sensor, \"deviceorientation\") {\n constructor(options = {}) {\n super(options);\n\n switch (options.coordinateSystem || 'world') {\n case 'screen':\n Object.defineProperty(this, \"quaternion\", {\n get: () => worldToScreen(this[slot].quaternion)\n });\n break;\n case 'world':\n default:\n Object.defineProperty(this, \"quaternion\", {\n get: () => this[slot].quaternion\n });\n }\n\n this[slot].handleEvent = event => {\n // If there is no sensor we will get values equal to null.\n if (event.absolute || event.alpha === null) {\n // Spec: The implementation can still decide to provide\n // absolute orientation if relative is not available or\n // the resulting data is more accurate. In either case,\n // the absolute property must be set accordingly to reflect\n // the choice.\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = performance.now();\n\n this[slot].quaternion = toQuaternionFromEuler(\n event.alpha,\n event.beta,\n event.gamma\n );\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n this[slot].deactivateCallback = () => {\n this[slot].quaternion = null;\n }\n }\n\n populateMatrix(mat) {\n toMat4FromQuat(mat, this.quaternion);\n }\n}\n\n// @ts-ignore\nconst AbsoluteOrientationSensor = window.AbsoluteOrientationSensor ||\nclass AbsoluteOrientationSensor extends DeviceOrientationMixin(\n Sensor, \"deviceorientationabsolute\", \"deviceorientation\") {\n constructor(options = {}) {\n super(options);\n\n switch (options.coordinateSystem || 'world') {\n case 'screen':\n Object.defineProperty(this, \"quaternion\", {\n get: () => worldToScreen(this[slot].quaternion)\n });\n break;\n case 'world':\n default:\n Object.defineProperty(this, \"quaternion\", {\n get: () => this[slot].quaternion\n });\n }\n\n this[slot].handleEvent = event => {\n // If absolute is set, or webkitCompassHeading exists,\n // absolute values should be available.\n const isAbsolute = event.absolute === true || \"webkitCompassHeading\" in event;\n const hasValue = event.alpha !== null || event.webkitCompassHeading !== undefined;\n\n if (!isAbsolute || !hasValue) {\n // Spec: If an implementation can never provide absolute\n // orientation information, the event should be fired with\n // the alpha, beta and gamma attributes set to null.\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].hasReading = true;\n this[slot].timestamp = performance.now();\n\n const heading = event.webkitCompassHeading != null ? 360 - event.webkitCompassHeading : event.alpha;\n\n this[slot].quaternion = toQuaternionFromEuler(\n heading,\n event.beta,\n event.gamma\n );\n\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n this[slot].deactivateCallback = () => {\n this[slot].quaternion = null;\n }\n }\n\n populateMatrix(mat) {\n toMat4FromQuat(mat, this.quaternion);\n }\n}\n\n// @ts-ignore\nconst Gyroscope = window.Gyroscope ||\nclass Gyroscope extends DeviceOrientationMixin(Sensor, \"devicemotion\") {\n constructor(options) {\n super(options);\n this[slot].handleEvent = event => {\n // If there is no sensor we will get values equal to null.\n if (event.rotationRate.alpha === null) {\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = performance.now();\n\n this[slot].x = event.rotationRate.alpha;\n this[slot].y = event.rotationRate.beta;\n this[slot].z = event.rotationRate.gamma;\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n defineReadonlyProperties(this, slot, {\n x: null,\n y: null,\n z: null\n });\n\n this[slot].deactivateCallback = () => {\n this[slot].x = null;\n this[slot].y = null;\n this[slot].z = null;\n }\n }\n}\n\n// @ts-ignore\nconst Accelerometer = window.Accelerometer ||\nclass Accelerometer extends DeviceOrientationMixin(Sensor, \"devicemotion\") {\n constructor(options) {\n super(options);\n this[slot].handleEvent = event => {\n // If there is no sensor we will get values equal to null.\n if (event.accelerationIncludingGravity.x === null) {\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = performance.now();\n\n this[slot].x = event.accelerationIncludingGravity.x;\n this[slot].y = event.accelerationIncludingGravity.y;\n this[slot].z = event.accelerationIncludingGravity.z;\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n defineReadonlyProperties(this, slot, {\n x: null,\n y: null,\n z: null\n });\n\n this[slot].deactivateCallback = () => {\n this[slot].x = null;\n this[slot].y = null;\n this[slot].z = null;\n }\n }\n}\n\n// @ts-ignore\nconst LinearAccelerationSensor = window.LinearAccelerationSensor ||\nclass LinearAccelerationSensor extends DeviceOrientationMixin(Sensor, \"devicemotion\") {\n constructor(options) {\n super(options);\n this[slot].handleEvent = event => {\n // If there is no sensor we will get values equal to null.\n if (event.acceleration.x === null) {\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = performance.now();\n\n this[slot].x = event.acceleration.x;\n this[slot].y = event.acceleration.y;\n this[slot].z = event.acceleration.z;\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n defineReadonlyProperties(this, slot, {\n x: null,\n y: null,\n z: null\n });\n\n this[slot].deactivateCallback = () => {\n this[slot].x = null;\n this[slot].y = null;\n this[slot].z = null;\n }\n }\n}\n\n// @ts-ignore\nconst GravitySensor = window.GravitySensor ||\n class GravitySensor extends DeviceOrientationMixin(Sensor, \"devicemotion\") {\n constructor(options) {\n super(options);\n this[slot].handleEvent = event => {\n // If there is no sensor we will get values equal to null.\n if (event.acceleration.x === null || event.accelerationIncludingGravity.x === null) {\n this[slot].notifyError(\"Could not connect to a sensor\", \"NotReadableError\");\n return;\n }\n\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = performance.now();\n\n this[slot].x = event.accelerationIncludingGravity.x - event.acceleration.x;\n this[slot].y = event.accelerationIncludingGravity.y - event.acceleration.y;\n this[slot].z = event.accelerationIncludingGravity.z - event.acceleration.z;\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n defineReadonlyProperties(this, slot, {\n x: null,\n y: null,\n z: null\n });\n\n this[slot].deactivateCallback = () => {\n this[slot].x = null;\n this[slot].y = null;\n this[slot].z = null;\n }\n }\n}","// ***************************************\n// |docname| - Geolocation sensor polyfill\n// ***************************************\n// @ts-check\n\"use strict\";\n\nimport \"./sensor.js\";\n\n//const slot = __sensor__;\n\nclass GeolocationSensorSingleton {\n constructor() {\n if (!this.constructor.instance) {\n this.constructor.instance = this;\n }\n\n this.sensors = new Set();\n this.watchId = null;\n this.accuracy = null;\n this.lastPosition = null;\n\n return this.constructor.instance;\n }\n\n async obtainPermission() {\n let state = \"prompt\"; // Default for geolocation.\n // @ts-ignore\n if (navigator.permissions) {\n // @ts-ignore\n const permission = await navigator.permissions.query({ name:\"geolocation\"});\n state = permission.state;\n }\n\n return new Promise(resolve => {\n const successFn = position => {\n this.lastPosition = position;\n resolve(\"granted\");\n }\n\n const errorFn = err => {\n if (err.code === err.PERMISSION_DENIED) {\n resolve(\"denied\");\n } else {\n resolve(state);\n }\n }\n\n const options = { maximumAge: Infinity, timeout: 10 };\n navigator.geolocation.getCurrentPosition(successFn, errorFn, options);\n });\n }\n\n calculateAccuracy() {\n let enableHighAccuracy = false;\n\n for (const sensor of this.sensors) {\n if (sensor[slot].options.accuracy === \"high\") {\n enableHighAccuracy = true;\n break;\n }\n }\n return enableHighAccuracy;\n }\n\n async register(sensor) {\n const permission = await this.obtainPermission();\n if (permission !== \"granted\") {\n sensor[slot].notifyError(\"Permission denied.\", \"NowAllowedError\");\n return;\n }\n\n if (this.lastPosition) {\n const age = performance.now() - this.lastPosition.timeStamp;\n const maxAge = sensor[slot].options.maxAge;\n if (maxAge == null || age <= maxAge) {\n sensor[slot].handleEvent(age, this.lastPosition.coords);\n }\n }\n\n this.sensors.add(sensor);\n\n // Check whether we need to reconfigure our navigation.geolocation\n // watch, ie. tear it down and recreate.\n const accuracy = this.calculateAccuracy();\n if (this.watchId && this.accuracy === accuracy) {\n // We don't need to reset, return.\n return;\n }\n\n if (this.watchId) {\n navigator.geolocation.clearWatch(this.watchId);\n }\n\n const handleEvent = position => {\n this.lastPosition = position;\n\n const timestamp = position.timestamp - performance.timing.navigationStart;\n const coords = position.coords;\n\n for (const sensor of this.sensors) {\n sensor[slot].handleEvent(timestamp, coords);\n }\n }\n\n const handleError = error => {\n let type;\n switch(error.code) {\n case error.TIMEOUT:\n type = \"TimeoutError\";\n break;\n case error.PERMISSION_DENIED:\n type = \"NotAllowedError\";\n break;\n case error.POSITION_UNAVAILABLE:\n type = \"NotReadableError\";\n break;\n default:\n type = \"UnknownError\";\n }\n for (const sensor of this.sensors) {\n sensor[slot].handleError(error.message, type);\n }\n }\n\n const options = {\n enableHighAccuracy: accuracy,\n maximumAge: 0,\n timeout: Infinity\n }\n\n this.watchId = navigator.geolocation.watchPosition(\n handleEvent, handleError, options\n );\n }\n\n deregister(sensor) {\n this.sensors.delete(sensor);\n if (!this.sensors.size && this.watchId) {\n navigator.geolocation.clearWatch(this.watchId);\n this.watchId = null;\n }\n }\n}\n\n// @ts-ignore\nconst GeolocationSensor = window.GeolocationSensor ||\nclass GeolocationSensor extends Sensor {\n constructor(options = {}) {\n super(options);\n\n this[slot].options = options;\n\n const props = {\n latitude: null,\n longitude: null,\n altitude: null,\n accuracy: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n }\n\n const propertyBag = this[slot];\n for (const propName in props) {\n propertyBag[propName] = props[propName];\n Object.defineProperty(this, propName, {\n get: () => propertyBag[propName]\n });\n }\n\n this[slot].handleEvent = (timestamp, coords) => {\n if (!this[slot].activated) {\n this[slot].notifyActivatedState();\n }\n\n this[slot].timestamp = timestamp;\n\n this[slot].accuracy = coords.accuracy;\n this[slot].altitude = coords.altitude;\n this[slot].altitudeAccuracy = coords.altitudeAccuracy;\n this[slot].heading = coords.heading;\n this[slot].latitude = coords.latitude;\n this[slot].longitude = coords.longitude;\n this[slot].speed = coords.speed;\n\n this[slot].hasReading = true;\n this.dispatchEvent(new Event(\"reading\"));\n }\n\n this[slot].handleError = (message, type) => {\n this[slot].notifyError(message, type);\n }\n\n this[slot].activateCallback = () => {\n (new GeolocationSensorSingleton()).register(this);\n }\n\n this[slot].deactivateCallback = () => {\n (new GeolocationSensorSingleton()).deregister(this);\n }\n }\n}","// .. Copyright (C) 2012-2020 Bryan A. Jones.\n//\n// This file is part of the CellBotics system.\n//\n// The CellBotics system is free software: you can redistribute it and/or\n// modify it under the terms of the GNU General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// The CellBotics system is distributed in the hope that it will be\n// useful, but WITHOUT ANY WARRANTY; without even the implied warranty\n// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n// General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with the CellBotics system. If not, see\n// .\n//\n// **********************************\n// |docname| - Interface with sensors\n// **********************************\n// This provides code to access `sensor APIs `_.\n\"use strict\";\n\nimport \"./permissions_polyfill.js\";\nimport \"./sensor_polyfill/geolocation-sensor.js\";\nimport \"./sensor_polyfill/motion-sensors.js\";\nimport { auto_bind } from \"./auto-bind.js\";\n\n// SimpleSensor\n// ============\n// This class wraps a `Sensor `_ with simple ``start``, ``ready``, and ``stop`` functions.\nclass SimpleSensor {\n constructor() {\n auto_bind(this);\n\n this.sensor = null;\n }\n\n // This was initially based on the MDN Sensor API docs.\n async start(\n // The class to use for the sensor to start. It must be based on the Sensor interface.\n sensor_class,\n // An array of strings, giving the name of the API to ask permissions of for this sensor. See https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query.\n sensor_permission,\n // Options to pass to this sensor's constructor.\n sensor_options\n ) {\n if (this.sensor) {\n throw \"In use. Stop the sensor before starting another.\";\n }\n if (typeof sensor_class !== \"function\") {\n throw \"Not available.\";\n }\n\n // Get permission to use these sensors, if the API is supported.\n if (navigator.permissions) {\n let result = await Promise.all(sensor_permission.map(x => navigator.permissions.query({ name: x })));\n if (!result.every(val => val.state === \"granted\")) {\n throw `Permission to use the ${sensor_permission} sensor was denied.`;\n }\n }\n\n // To access a sensor:\n //\n // #. Create it, then start it, synchronously checking for errors in this process.\n // #. Await for a response from the sensor: an acceptance indicating the sensor works, or a rejection indicating a failure.\n //\n // Since the event handlers to accept or reject the promise must be set up in the synchronous phase, wrap everything in a promise. All the operations above therefore start when the promise is awaited.\n this.sensor = null;\n let on_error;\n let on_reading;\n let p = new Promise((resolve, reject) => {\n try {\n this.sensor = new sensor_class(sensor_options);\n\n // Handle callback errors by rejecting the promise.\n let that = this;\n on_error = event => {\n that.sensor.removeEventListener(\"error\", on_error);\n // Handle runtime errors.\n if (event.error.name === 'NotAllowedError') {\n reject(\"Access to this sensor is not allowed.\");\n } else if (event.error.name === 'NotReadableError' ) {\n reject('Cannot connect to the sensor.');\n }\n reject(`Unknown error: ${event.error.name}`);\n\n }\n this.sensor.addEventListener('error', on_error);\n\n // Wait for the first sensor reading to accept the promise.\n on_reading = event => {\n\n that.sensor.removeEventListener(\"reading\", on_reading);\n resolve();\n }\n this.sensor.addEventListener(\"reading\", on_reading);\n\n this.sensor.start();\n } catch (error) {\n // Handle construction errors.\n if (error.name === 'SecurityError') {\n // See the note above about feature policy.\n reject(\"Sensor construction was blocked by a feature policy.\");\n } else if (error.name === 'ReferenceError') {\n reject(\"Sensor is not supported by the User Agent.\");\n } else {\n reject(error);\n }\n }\n });\n\n // Start the sensor, waiting until it produces a reading or an error.\n try {\n console.log(`Await ${new Date()}`);\n await p;\n } catch (err) {\n this.stop();\n throw err;\n } finally {\n console.log(`Done ${new Date()}`);\n this.sensor.removeEventListener(\"error\", on_error);\n this.sensor.removeEventListener(\"reading\", on_reading);\n }\n }\n\n // True if the sensor is activated and has a reading.\n get ready() {\n return this.sensor && this.sensor.activated && this.sensor.hasReading;\n }\n\n // To save device power, be sure to stop the sensor as soon as the readings are no longer needed.\n stop() {\n this.sensor && this.sensor.stop();\n this.sensor = null;\n }\n}\n\n\n// Abstract helper classes\n// =======================\n// Several sensors return x, y, and z values. Collect the common code here.\nclass SimpleXYZSensor extends SimpleSensor {\n get x() {\n return this.sensor.x;\n }\n\n get y() {\n return this.sensor.y;\n }\n\n get z() {\n return this.sensor.z;\n }\n}\n\n\n// Two sensors return a quaternion or rotation matrix.\nclass SimpleOrientationSensor extends SimpleSensor {\n get quaternion() {\n return this.sensor.quaternion;\n }\n\n populateMatrix(targetMatrix) {\n return this.sensor.populateMatrix(targetMatrix);\n }\n}\n\n\n// Concrete classes\n// ================\n// Note the use of ``window.SensorName`` instead of ``SensorName`` for non-polyfills. This avoids exceptions if the particular sensor isn't defined, producing an ``undefined`` instead. For polyfills, we must use ``SensorName`` instead of ``window.SensorName``.\nexport class SimpleAmbientLightSensor extends SimpleSensor {\n async start(als_options) {\n return super.start(window.AmbientLightSensor, [\"ambient-light-sensor\"], als_options);\n }\n\n get illuminance() {\n return this.sensor.illuminance;\n }\n}\n\n\n// See the `W3C draft spec `_.\nexport class SimpleGeolocationSensor extends SimpleSensor {\n async start(geo_options) {\n return super.start(GeolocationSensor, [\"geolocation\"], geo_options);\n }\n\n get latitude() {\n return this.sensor.latitude;\n }\n\n get longitude() {\n return this.sensor.longitude;\n }\n\n get altitude() {\n return this.sensor.altitude;\n }\n\n get accuracy() {\n return this.sensor.accuracy;\n }\n\n get altitudeAccuracy() {\n return this.sensor.altitudeAccuracy;\n }\n\n get heading() {\n return this.sensor.heading;\n }\n\n get speed() {\n return this.sensor.speed;\n }\n}\n\n\nexport class SimpleAccelerometer extends SimpleXYZSensor {\n async start(accelerometer_options) {\n return super.start(Accelerometer, [\"accelerometer\"], accelerometer_options);\n }\n}\n\n\nexport class SimpleGyroscope extends SimpleXYZSensor {\n async start(gyro_options) {\n return super.start(Gyroscope, [\"gyroscope\"], gyro_options);\n }\n}\n\n\nexport class SimpleLinearAccelerationSensor extends SimpleXYZSensor {\n async start(accel_options) {\n return super.start(LinearAccelerationSensor, [\"accelerometer\"], accel_options);\n }\n}\n\n\nexport class SimpleGravitySensor extends SimpleXYZSensor {\n async start(grav_options) {\n return super.start(GravitySensor, [\"accelerometer\"], grav_options);\n }\n}\n\n\nexport class SimpleMagnetometer extends SimpleXYZSensor {\n async start(mag_options) {\n return super.start(window.Magnetometer, [\"magnetometer\"], mag_options);\n }\n}\n\n\nexport class SimpleAbsoluteOrientationSensor extends SimpleOrientationSensor {\n async start(orient_options) {\n return super.start(AbsoluteOrientationSensor, [\"accelerometer\", \"gyroscope\", \"magnetometer\"], orient_options);\n }\n}\n\n\nexport class SimpleRelativeOrientationSensor extends SimpleOrientationSensor {\n async start(orient_options) {\n return super.start(RelativeOrientationSensor, [\"accelerometer\", \"gyroscope\"], orient_options);\n }\n}\n","// .. Copyright (C) 2012-2020 Bryan A. Jones.\n//\n// This file is part of the CellBotics system.\n//\n// The CellBotics system is free software: you can redistribute it and/or\n// modify it under the terms of the GNU General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// The CellBotics system is distributed in the hope that it will be\n// useful, but WITHOUT ANY WARRANTY; without even the implied warranty\n// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n// General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with the CellBotics system. If not, see\n// .\n//\n// ********************************************\n// |docname| - Polyfill for the Permissions API\n// ********************************************\n// This is primarily for iOS devices that don't provide Permissions, but use another method to allow access to various sensors.\n\n\"use strict\";\n\n// Only supply this if there's not Permissions and we have tne iOS flavor available. See sample code in https://dev.to/li/how-to-requestpermission-for-devicemotion-and-deviceorientation-events-in-ios-13-46g2 or the `W3C working draft `_.\nif (\n !navigator.permissions &&\n (typeof DeviceMotionEvent.requestPermission === \"function\") &&\n (typeof DeviceOrientationEvent.requestPermission === \"function\")\n) {\n navigator.permissions = {\n query: options => {\n // Ignore everything but the name, since our use case is only for SimpleSensor.\n switch (options.name) {\n case \"accelerometer\":\n case \"gyroscope\":\n // The requested permissions doesn't allow us to determine which of the following two permissions we need, so ask for both.\n return new Promise((resolve, reject) => {\n Promise.all([\n // The polyfill for the accelerometer, gyro, and related classes needs just this.\n DeviceMotionEvent.requestPermission(),\n // The polyfill for the orientation sensors needs just this.\n DeviceOrientationEvent.requestPermission()\n ]).then(\n // We now have an array of strings, the result of the requestPermission calls. If all are \"granted\", then return {state: \"granted\"}, else return {state: \"denied\"}.\n vals => resolve({state:\n (vals.every(x => x === \"granted\") ? \"granted\" : \"denied\")\n })\n )\n });\n\n // There's nothing else that needs permission to work.\n default:\n return Promise.resolve({state: \"granted\"});\n }\n }\n };\n}\n","// .. Copyright (C) 2012-2020 Bryan A. Jones.\n//\n// This file is part of the CellBotics system.\n//\n// The CellBotics system is free software: you can redistribute it and/or\n// modify it under the terms of the GNU General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// The CellBotics system is distributed in the hope that it will be\n// useful, but WITHOUT ANY WARRANTY; without even the implied warranty\n// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n// General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with the CellBotics system. If not, see\n// .\n//\n// *********************************************************\n// |docname| - Automatically bind methods to their instances\n// *********************************************************\n\n\"use strict\";\n\n\n// The following two functions were taken from https://github.com/sindresorhus/auto-bind/blob/master/index.js and lightly modified. They provide an easy way to bind all callable methods to their instance. See `Binding Methods to Class Instance Objects `_ for more discussion on this crazy JavaScript necessity.\n//\n// Gets all non-builtin properties up the prototype chain\nconst getAllProperties = object => {\n\tconst properties = new Set();\n\n\tdo {\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tproperties.add([object, key]);\n\t\t}\n\t} while ((object = Reflect.getPrototypeOf(object)) && object !== Object.prototype);\n\n\treturn properties;\n};\n\n\n// Invoke this in the constructor of an object.\nexport function auto_bind(self) {\n for (const [object, key] of getAllProperties(self.constructor.prototype)) {\n if (key === 'constructor') {\n continue;\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(object, key);\n if (descriptor && typeof descriptor.value === 'function') {\n self[key] = self[key].bind(self);\n }\n }\n}\n"],"names":["Symbol","Event","orientation","window","GeolocationSensor","Sensor","screen","msOrientation","Object","defineProperty","get","DeviceOrientationMixin","superclass","eventNames","constructor","args","super","eventName","this","slot","activateCallback","addEventListener","handleEvent","capture","deactivateCallback","removeEventListener","RelativeOrientationSensor","AbsoluteOrientationSensor","Gyroscope","Accelerometer","LinearAccelerationSensor","GravitySensor","SimpleSensor","auto_bind","sensor","start","sensor_class","sensor_permission","sensor_options","navigator","permissions","Promise","all","map","x","query","name","every","val","state","on_error","on_reading","p","resolve","reject","that","event","error","console","log","Date","err","stop","ready","activated","hasReading","SimpleXYZSensor","y","z","SimpleOrientationSensor","quaternion","populateMatrix","targetMatrix","SimpleAmbientLightSensor","als_options","AmbientLightSensor","illuminance","SimpleGeolocationSensor","geo_options","latitude","longitude","altitude","accuracy","altitudeAccuracy","heading","speed","SimpleAccelerometer","accelerometer_options","SimpleGyroscope","gyro_options","SimpleLinearAccelerationSensor","accel_options","SimpleGravitySensor","grav_options","SimpleMagnetometer","mag_options","Magnetometer","SimpleAbsoluteOrientationSensor","orient_options","SimpleRelativeOrientationSensor","DeviceMotionEvent","requestPermission","DeviceOrientationEvent","options","then","vals","getAllProperties","object","properties","Set","key","Reflect","ownKeys","add","getPrototypeOf","prototype","self","descriptor","getOwnPropertyDescriptor","value","bind"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/126.a976f62852f30b51.js.map.gz b/_static/126.a976f62852f30b51.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..63d81aac51a2cd4cc4a72b648c59e5cca58d8dae GIT binary patch literal 10346 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 Iu}!A{0Pp1dKmY&$ literal 0 HcmV?d00001 diff --git a/_static/128.5bed857c54ac4e8b.js b/_static/128.5bed857c54ac4e8b.js new file mode 100644 index 0000000..1630594 --- /dev/null +++ b/_static/128.5bed857c54ac4e8b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[128],{34128:(i,e,t)=>{t.r(e),t.d(e,{default:()=>s});var n=t(78673);class s extends n.A{constructor(i){super(i);var e=i.orig;this.origElem=e,this.divid=e.id,this.resultsViewer=$(e).data("results"),this.getIFrameAndQuizname(),this.renderQuizly(),this.caption="Quizly",this.addCaption("runestone")}getIFrameAndQuizname(){var i=$(this.origElem).html(),e=i.search("");this.iframe=i.slice(e,t+8),e=i.search("quizname="),t=i.search("hints"),this.quizname=i.slice(e+9,t-5)}renderQuizly(){this.containerDiv=document.createElement("div"),this.containerDiv.id=this.divid,$(this.containerDiv).addClass(this.origElem.getAttribute("class")),$(this.containerDiv).html(this.iframe),$(this.origElem).replaceWith(this.containerDiv)}submitQuizly(i){var e=i.xml,t=1==i.result?"T":"F",n={event:"quizly",act:"answer:"+("T"==t?"correct":"no"),answer:e,correct:t,div_id:this.divid};this.logBookEvent(n),localStorage.setItem(this.divid,"true")}}$(document).on("runestone:login-complete",(function(){$("[data-component=quizly").each((function(i){try{var e=new s({orig:this});window.componentMap[this.id]=e,function(i,e){void 0===window.component_factory&&(window.component_factory={});var t="quizly_"+e;window.component_factory[t]=function(e){i.submitQuizly(e)}}(e,e.quizname)}catch(i){console.log(`Error rendering Quizly Exercise ${this.id}\n Details: ${i}`),console.log(i.stack)}}))}))}}]); +//# sourceMappingURL=128.5bed857c54ac4e8b.js.map \ No newline at end of file diff --git a/_static/128.5bed857c54ac4e8b.js.gz b/_static/128.5bed857c54ac4e8b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..241f7ad5423a7865e2f1b9ba89d9e3ebcc2651a6 GIT binary patch literal 803 zcmV+;1Kj){iwFP!000026MdBHZ`(Eyz`yse5ZE9f5mi~2Wbx!NLz)K=VEfQL+7F(Q z(&X9ZB9SUd#mN-??>kD0A4O6_fXUFM1xY$JcI44}0+$VLgq08#M|o0pW*((XOGdgLnRosiig>7;B}qp@W~( z@a}}QyC|9-g*8EF1MX7ab7f^+Vwq&pfd~)-!W|`;muKtS`j{ua$y++0*w$bj)L0|C zm}17x16K5`4nRp)MTD`JO>{)J2(8sN&>d8TknmZDrOGHTA2;;F5b8!_e z)aISUZZ9AJN$I>cvMXrT>`^j_&C?xs!+;N=u?z%O(MA~w1@|~mGO$WKZ6fO~2Alya zZIoSQYeT<_YSQONO|g|Xc2YprR;%O(&iS{uZs#J7h{yeX`q~k1hKUpSkcV4x0OQxx zCt=Fh&e1hCz;@yR*i#!W#c!8hi?;aYbODLR_OTeKYrsl ho3oP{sL{!(JUJHf7)G<~U!Rqt`X7(|L=P7R002h@haLa` literal 0 HcmV?d00001 diff --git a/_static/128.5bed857c54ac4e8b.js.map b/_static/128.5bed857c54ac4e8b.js.map new file mode 100644 index 0000000..87adaef --- /dev/null +++ b/_static/128.5bed857c54ac4e8b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"128.5bed857c54ac4e8b.js","mappings":"2JAsBe,MAAMA,UAAe,IAChC,WAAAC,CAAYC,GACRC,MAAMD,GACN,IAAIE,EAAOF,EAAKE,KAKhBC,KAAKC,SAAWF,EAChBC,KAAKE,MAAQH,EAAKI,GAGlBH,KAAKI,cAAgBC,EAAEN,GAAMO,KAAK,WAClCN,KAAKO,uBACLP,KAAKQ,eAGLR,KAAKS,QAAU,SACfT,KAAKU,WAAW,YACpB,CAGA,oBAAAH,GACI,IAAII,EAAON,EAAEL,KAAKC,UAAUU,OACxBC,EAAKD,EAAKE,OAAO,WACjBC,EAAKH,EAAKE,OAAO,aACrBb,KAAKe,OAASJ,EAAKK,MAAMJ,EAAIE,EAAK,GAGlCF,EAAKD,EAAKE,OAAO,aACjBC,EAAKH,EAAKE,OAAO,SACjBb,KAAKiB,SAAWN,EAAKK,MAAMJ,EAAK,EAAGE,EAAK,EAE5C,CAGA,YAAAN,GAGIR,KAAKkB,aAAeC,SAASC,cAAc,OAE3CpB,KAAKkB,aAAaf,GAAKH,KAAKE,MAC5BG,EAAEL,KAAKkB,cAAcG,SAASrB,KAAKC,SAASqB,aAAa,UACzDjB,EAAEL,KAAKkB,cAAcP,KAAKX,KAAKe,QAC/BV,EAAEL,KAAKC,UAAUsB,YAAYvB,KAAKkB,aAKtC,CAIA,YAAAM,CAAaC,GAKT,IAAIC,EAASD,EAAY,IACrBE,EAA8B,GAApBF,EAAe,OAAY,IAAM,IAE3CG,EAAY,CACZC,MAAO,SACPC,IAHY,WAAwB,KAAXH,EAAiB,UAAY,MAItDD,OAAQA,EACRC,QAASA,EACTI,OAAQ/B,KAAKE,OAGjBF,KAAKgC,aAAaJ,GAOlBK,aAAaC,QAAQlC,KAAKE,MAAO,OACrC,EAOJG,EAAEc,UAAUgB,GAAG,4BAA4B,WACvC9B,EAAE,0BAA0B+B,MAAK,SAAUC,GACvC,IACI,IAAIC,EAAS,IAAI3C,EAAO,CAAEI,KAAMC,OAChCuC,OAAOC,aAAaxC,KAAKG,IAAMmC,EAe3C,SAAuBA,EAAQrB,QACa,IAA7BsB,OAAOE,oBACdF,OAAOE,kBAAoB,CAAC,GAEhC,IAAIC,EAAU,UAAYzB,EAC1BsB,OAAOE,kBAAkBC,GAAW,SAAUjB,GAC1Ca,EAAOd,aAAaC,EACxB,CACJ,CApBYkB,CAAcL,EAAQA,EAAOrB,SACjC,CAAE,MAAO2B,GACLC,QAAQC,IAAI,mCAAmC9C,KAAKG,0CAC3ByC,KACzBC,QAAQC,IAAIF,EAAIG,MACpB,CACJ,GACJ,G","sources":["webpack://WebComponents/./runestone/quizly/js/quizly.js"],"sourcesContent":["/*\n__author__ = Ralph Morelli\n__date__ = 4/9/2021 */\n\n/* **********\n This script renders the quizly HTML code and sets up functions\n to process the quiz when the user clicks on the quizly 'Check me'\n button. \n\n It gets the data it needs from the Quizly node created by quizly.py\n during the runestone build step.\n\n NOTE: An entry for quizly.js script must be added to the webpack.config.js.\n ************** */\n\n\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase.js\";\n//import \"../css/poll.css\";\n\nvar DEBUG = false;\n\nexport default class Quizly extends RunestoneBase {\n constructor(opts) {\n super(opts);\n var orig = opts.orig; // Looks something like: {\"orig\":{\"jQuery351095558298548049562\":{\"question_label\":\"1.1.2\"}}}\n if (DEBUG)\n console.log(\n \"DEBUG: Quizly constructor, opts=\" + JSON.stringify(opts)\n );\n this.origElem = orig;\n this.divid = orig.id;\n if (DEBUG)\n console.log(\"DEBUG: Quizly constructor, divid= \" + this.divid);\n this.resultsViewer = $(orig).data(\"results\");\n this.getIFrameAndQuizname();\n this.renderQuizly(); //generates HTML\n // Checks localStorage to see if this quizly has already been completed by this user.\n // this.checkQuizlyStorage();\n this.caption = \"Quizly\";\n this.addCaption(\"runestone\");\n }\n\n // The main content of the quizly node is the iframe.\n getIFrameAndQuizname() {\n var html = $(this.origElem).html();\n var p1 = html.search(\"\");\n this.iframe = html.slice(p1, p2 + 8);\n if (DEBUG) console.log(\"DEBUG: getIFrame() html = \" + html);\n if (DEBUG) console.log(\"DEBUG: getIFrame() iframe = \" + this.iframe);\n p1 = html.search(\"quizname=\");\n p2 = html.search(\"hints\");\n this.quizname = html.slice(p1 + 9, p2 - 5); // Grab the quizname from iframe\n if (DEBUG) console.log(\"DEBUG quizname= \", this.quizname);\n }\n\n // Generates the HTML that the user interacts with\n renderQuizly() {\n var _this = this;\n if (DEBUG) console.log(\"DEBUG: renderQuizly()\");\n this.containerDiv = document.createElement(\"div\");\n // this.quizlyFrame = document.createElement(\"iframe\");\n this.containerDiv.id = this.divid;\n $(this.containerDiv).addClass(this.origElem.getAttribute(\"class\"));\n $(this.containerDiv).html(this.iframe);\n $(this.origElem).replaceWith(this.containerDiv);\n if (DEBUG)\n console.log(\n \"DEBUG: renderQuizly(), this = \" + JSON.stringify(this)\n );\n }\n\n // Called from the exercise when user clicks submit button\n // Checks for the result, sets localstorage and submits to the server\n submitQuizly(result) {\n if (DEBUG)\n console.log(\n \"DEBUG: submitQuizly result = \" + JSON.stringify(result)\n );\n var answer = result[\"xml\"];\n var correct = result[\"result\"] == true ? \"T\" : \"F\";\n var loganswer = \"answer:\" + (correct == \"T\" ? \"correct\" : \"no\"); // backward compatible\n var eventInfo = {\n event: \"quizly\",\n act: loganswer,\n answer: answer,\n correct: correct,\n div_id: this.divid,\n };\n // Log the response to the database\n this.logBookEvent(eventInfo); // in bookfuncs.js\n if (DEBUG)\n console.log(\n \"DEBUG: submitquizly logbookevent = \" +\n JSON.stringify(eventInfo)\n );\n // Log the fact that the user has attempted this quizly exercise to local storage\n localStorage.setItem(this.divid, \"true\");\n }\n}\n\n/*=================================\n== Find the custom HTML tags and ==\n== execute our code on them ==\n=================================*/\n$(document).on(\"runestone:login-complete\", function () {\n $(\"[data-component=quizly\").each(function (index) {\n try {\n var quizly = new Quizly({ orig: this });\n window.componentMap[this.id] = quizly;\n if (DEBUG)\n console.log(\"DEBUG: Quizly rendering, this.id = \" + this.id);\n setupCallback(quizly, quizly.quizname);\n } catch (err) {\n console.log(`Error rendering Quizly Exercise ${this.id}\n Details: ${err}`);\n console.log(err.stack);\n }\n });\n});\n\n// Sets up a unique callback function on the window containing the quizly component\n// The quizly param is a reference to this quizly object so that it can be use during callback.\n// The quizname param is used to construct a unique callback function name\nfunction setupCallback(quizly, quizname) {\n if (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n }\n var fn_name = \"quizly_\" + quizname; // Unique function name\n window.component_factory[fn_name] = function (result) {\n quizly.submitQuizly(result);\n };\n}\n"],"names":["Quizly","constructor","opts","super","orig","this","origElem","divid","id","resultsViewer","$","data","getIFrameAndQuizname","renderQuizly","caption","addCaption","html","p1","search","p2","iframe","slice","quizname","containerDiv","document","createElement","addClass","getAttribute","replaceWith","submitQuizly","result","answer","correct","eventInfo","event","act","div_id","logBookEvent","localStorage","setItem","on","each","index","quizly","window","componentMap","component_factory","fn_name","setupCallback","err","console","log","stack"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/128.5bed857c54ac4e8b.js.map.gz b/_static/128.5bed857c54ac4e8b.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..ffefdff0eabf05134d040d57e4a39d3177bd7b20 GIT binary patch literal 2814 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 o=[],r=0;r0&&(e.url.indexOf("?")<0&&(e.url+="?"),e.url+=o.join("&"))}var u=new XMLHttpRequest;return u.open(e.method,e.url,!0),u.setRequestHeader("X-Requested-With","XMLHttpRequest"),"POST"==e.method?(u.setRequestHeader("Accept","application/json"),u.setRequestHeader("Content-Type","application/x-www-form-urlencoded")):"json"==e.dataType&&u.setRequestHeader("Content-Type","text/json"),1!=e.cache&&(u.setRequestHeader("pragma","no-cache"),u.setRequestHeader("cache-control","no-cache")),1==e.withCredentials&&(u.withCredentials=!0),"function"==typeof e.beforeSend&&e.beforeSend(u),u.onload=function(){if(200===u.status)if("json"==e.dataType)try{var o=JSON.parse(u.responseText);e.success&&"function"==typeof e.success&&e.success(o)}catch(t){e.error&&"function"==typeof e.error&&e.error(o)}else o=u.responseText,e.success&&"function"==typeof e.success&&e.success(o);else e.error&&"function"==typeof e.error&&e.error(u.responseText);if(t.ajax.requests&&t.ajax.requests.length){var r=t.ajax.requests.indexOf(u);t.ajax.requests.splice(r,1),t.ajax.requests.length||e.complete&&"function"==typeof e.complete&&e.complete(o)}},o?u.send(o.join("&")):u.send(),t.ajax.requests.push(u),u}};t.ajax.requests=[],t.slideLeft=function(e,t,o){1==t?(e.classList.add("slide-left-in"),setTimeout((function(){e.classList.remove("slide-left-in"),"function"==typeof o&&o()}),400)):(e.classList.add("slide-left-out"),setTimeout((function(){e.classList.remove("slide-left-out"),"function"==typeof o&&o()}),400))},t.slideRight=function(e,t,o){1==t?(e.classList.add("slide-right-in"),setTimeout((function(){e.classList.remove("slide-right-in"),"function"==typeof o&&o()}),400)):(e.classList.add("slide-right-out"),setTimeout((function(){e.classList.remove("slide-right-out"),"function"==typeof o&&o()}),400))},t.slideTop=function(e,t,o){1==t?(e.classList.add("slide-top-in"),setTimeout((function(){e.classList.remove("slide-top-in"),"function"==typeof o&&o()}),400)):(e.classList.add("slide-top-out"),setTimeout((function(){e.classList.remove("slide-top-out"),"function"==typeof o&&o()}),400))},t.slideBottom=function(e,t,o){1==t?(e.classList.add("slide-bottom-in"),setTimeout((function(){e.classList.remove("slide-bottom-in"),"function"==typeof o&&o()}),400)):(e.classList.add("slide-bottom-out"),setTimeout((function(){e.classList.remove("slide-bottom-out"),"function"==typeof o&&o()}),100))},t.fadeIn=function(e,t){e.classList.add("fade-in"),setTimeout((function(){e.classList.remove("fade-in"),"function"==typeof t&&t()}),2e3)},t.fadeOut=function(e,t){e.classList.add("fade-out"),setTimeout((function(){e.classList.remove("fade-out"),"function"==typeof t&&t()}),1e3)},t.keyDownControls=function(e){if(27==e.which){var t=document.querySelectorAll(".jslider");if(t.length>0)for(var o=0;o11?(o.date[0]=parseInt(o.date[0])+1,o.date[1]=1):o.date[1]=parseInt(o.date[1])+1,o.getDays())},o.setValue=function(t){t||(t=""+t);var r=t,n=o.options.value;o.setLabel(r,o.options.format),(s=r.split(" "))[1]||(s[1]="00:00:00");var i=s[1].split(":"),s=s[0].split("-"),l=parseInt(s[0]),a=parseInt(s[1]),u=parseInt(s[2]),c=parseInt(i[0]),d=parseInt(i[1]);o.date=[l,a,u,c,d,0],t=o.setLabel(r,o.options.format),n!=r&&("INPUT"==e.tagName&&(e.value=t),o.options.value=r,"function"==typeof o.options.onchange&&o.options.onchange(e,r,n)),o.getDays()},o.getValue=function(){return o.date?o.options.time?p(o.date[0])+"-"+p(o.date[1])+"-"+p(o.date[2])+" "+p(o.date[3])+":"+p(o.date[4])+":"+p(0):p(o.date[0])+"-"+p(o.date[1])+"-"+p(o.date[2])+" "+p(0)+":"+p(0)+":"+p(0):""},o.update=function(e){if(e.classList.contains("jcalendar-disabled"));else{o.date[2]=e.innerText,o.options.time?(o.date[3]=S.value,o.date[4]=T.value):o.close();var t=v.querySelector(".jcalendar-selected");t&&t.classList.remove("jcalendar-selected"),e.classList.add("jcalendar-selected")}B()},o.reset=function(){o.close(!1,"")},o.getDays=function(){o.options.mode="days";var e=new Date,t=o.date&&o.date[0]?o.date[0]:parseInt(e.getFullYear()),r=o.date&&o.date[1]?o.date[1]:parseInt(e.getMonth())+1,n=o.date&&o.date[2]?o.date[2]:parseInt(e.getDay()),i=o.date&&o.date[3]?o.date[3]:parseInt(e.getHours()),s=o.date&&o.date[4]?o.date[4]:parseInt(e.getMinutes());o.date=[t,r,n,i,s,0],C.innerHTML=t,x.innerHTML=o.options.months[r-1];var l=e.getMonth()==r-1&&e.getFullYear()==t,a=e.getDate(),u=(e=new Date(t,r,0,0,0)).getDate(),c=(e=new Date(t,r-1,0,0,0)).getDay()+1;c-=p=o.options.startingDay||0,L.innerHTML="",(m=document.createElement("tr")).setAttribute("align","center"),L.appendChild(m);for(var d=0;d<7;d++)(h=document.createElement("td")).classList.add("jcalendar-weekday"),h.innerHTML=o.options.weekdays_short[p],m.appendChild(h),++p>6&&(p=0);for(var p=0,b=0,f=0;f<5;f++){var m;(m=document.createElement("tr")).setAttribute("align","center");var j=!0;for(d=0;d<7;d++){var h;if((h=document.createElement("td")).classList.add("jcalendar-set-day"),p>=c&&p=o.options.validRange[0])var v=!0;else v=!1;if(!o.options.validRange[1]||g<=o.options.validRange[1])var y=!0;else y=!1;v&&y||h.classList.add("jcalendar-disabled")}j=!1}m.appendChild(h),p++}0==j&&L.appendChild(m)}o.options.time?O.style.display="":O.style.display="none",B()},o.getMonths=function(){o.options.mode="months";var e=o.options.months;C.innerHTML=o.date[0],x.innerHTML="";var t='';for(d=0;d<12;d++)d>0&&!(d%4)&&(t+=''),t+='";t+="
'+e[d]+"
",L.innerHTML=t},o.getYears=function(){o.options.mode="years";var e=[];for(d=0;d<25;d++)e[d]=parseInt(o.date[0])+(d-12);var t='';for(d=0;d<25;d++)d>0&&!(d%5)&&(t+=''),t+='";t+="
'+e[d]+"
",L.innerHTML=t},o.setLabel=function(e,t){return jSuites.calendar.getDateString(e,t)},o.fromFormatted=function(e,t){return jSuites.calendar.extractDateFromString(e,t)};var P=function(e){var t=e.target.className;"jcalendar-prev"==t?(o.prev(),e.stopPropagation(),e.preventDefault()):"jcalendar-next"==t?(o.next(),e.stopPropagation(),e.preventDefault()):"jcalendar-month"==t?(o.getMonths(),e.stopPropagation(),e.preventDefault()):"jcalendar-year"==t?(o.getYears(),e.stopPropagation(),e.preventDefault()):"jcalendar-set-year"==t?(o.date[0]=e.target.innerText,o.getDays(),e.stopPropagation(),e.preventDefault()):"jcalendar-set-month"==t?(o.date[1]=parseInt(e.target.getAttribute("data-value")),o.getDays(),e.stopPropagation(),e.preventDefault()):"jcalendar-confirm"==t||"jcalendar-update"==t||"jcalendar-close"==t?(o.close(),e.stopPropagation(),e.preventDefault()):"jcalendar-backdrop"==t?(o.close(!1,!1),e.stopPropagation(),e.preventDefault()):"jcalendar-reset"==t?(o.reset(),e.stopPropagation(),e.preventDefault()):e.target.classList.contains("jcalendar-set-day")&&e.target.innerText&&(o.update(e.target),e.stopPropagation(),e.preventDefault())};return e.addEventListener("keyup",(function(e){if(e.target.value&&e.target.value.length>3){var t=jSuites.calendar.extractDateFromString(e.target.value,o.options.format);t&&"true"==e.target.getAttribute("data-completed")&&o.setValue(t)}})),v.addEventListener("swipeleft",(function(e){jSuites.slideLeft(M,0,(function(){o.next(),jSuites.slideRight(M,1)})),e.preventDefault(),e.stopPropagation()})),v.addEventListener("swiperight",(function(e){jSuites.slideRight(M,0,(function(){o.prev(),jSuites.slideLeft(M,1)})),e.preventDefault(),e.stopPropagation()})),"ontouchend"in document.documentElement==1?(v.addEventListener("touchend",P),e.addEventListener("touchend",(function(e){o.open()}))):(v.addEventListener("mouseup",P),e.addEventListener("mouseup",(function(e){o.open()}))),"INPUT"==e.tagName&&(e.parentNode.insertBefore(v,e.nextSibling),e.setAttribute("autocomplete","off"),e.setAttribute("data-mask",o.options.format.toLowerCase()),o.options.readonly&&e.setAttribute("readonly","readonly"),o.options.placeholder&&e.setAttribute("placeholder",o.options.placeholder),e.classList.add("jcalendar-input"),e.value=o.setLabel(o.getValue(),o.options.format)),e.calendar=o,1==o.options.opened&&o.open(),o},jSuites.calendar.prettify=function(e,t){t||(t={justNow:"Just now",xMinutesAgo:"{0}m ago",xHoursAgo:"{0}h ago",xDaysAgo:"{0}d ago",xWeeksAgo:"{0}w ago",xMonthsAgo:"{0} mon ago",xYearsAgo:"{0}y ago"});var o=new Date,r=new Date(e),n=parseInt((o-r)/1e3/60);if(String.prototype.format=function(e){return this.replace("{0}",e)},0==n)var i=t.justNow;else i=n<90?t.xMinutesAgo.format(n):n<1440?t.xHoursAgo.format(Math.round(n/60)):n<20160?t.xDaysAgo.format(Math.round(n/1440)):n<43200?t.xWeeksAgo.format(Math.round(n/10080)):n<1036800?t.xMonthsAgo.format(Math.round(n/43200)):t.xYearsAgo.format(Math.round(n/525600));return i},jSuites.calendar.prettifyAll=function(){for(var e=document.querySelectorAll(".prettydate"),t=0;t12)&&(n=0);var l=r.search("DD");l=o.substr(l,2),(parseInt(l)!=l||l>31)&&(n=0);var a=r.search("HH");a>=0?(a=o.substr(a,2),(!parseInt(a)||a>23)&&(a="00")):a="00";var u=r.search("MI");u>=0?(u=o.substr(u,2),(!parseInt(u)||u>59)&&(u="00")):u="00";var c=r.search("SS");return c>=0?(c=o.substr(c,2),(!parseInt(c)||c>59)&&(c="00")):c="00",1==n&&e.length==r.length?i+"-"+s+"-"+l+" "+a+":"+u+":"+c:""},jSuites.calendar.getDateString=function(e,t){if(t||(t="DD/MM/YYYY"),e){var o=""+e,r="",n="",i="";if((o=o.split(" "))[1]?(n=(r=o[1].split(":"))[1]?r[1]:"00",i=r[2]?r[2]:"00",r=r[0]?r[0]:"00"):(r="00",n="00",i="00"),(o=o[0].split("-"))[0]&&o[1]&&o[2]&&o[0]>0&&o[1]>0&&o[1]<13&&o[2]>0&&o[2]<32){var s=new Date(o[0],o[1]-1,o[2]),l=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"),a=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");o[1]=(o[1].length<2?"0":"")+o[1],o[2]=(o[2].length<2?"0":"")+o[2],r=(r.length<2?"0":"")+r,n=(n.length<2?"0":"")+n,i=(i.length<2?"0":"")+i,e=(e=(e=(e=(e=(e=(e=t).replace("WD",l[s.getDay()])).replace("DD",o[2])).replace("MM",o[1])).replace("YYYY",o[0])).replace("YY",o[0].substring(2,4))).replace("MON",a[parseInt(o[1])-1].toUpperCase()),r&&(e=e.replace("HH24",r)),e=(e=(e=(e=r>12?(e=e.replace("HH12",r-12)).replace("HH",r):(e=e.replace("HH12",r)).replace("HH",r)).replace("MI",n)).replace("MM",n)).replace("SS",i)}else e=""}return e},jSuites.calendar.isOpen=function(e){jSuites.calendar.current&&(e.target.className&&-1!=e.target.className.indexOf("jcalendar")||jSuites.calendar.current.close(!1,!1))},"ontouchstart"in document.documentElement==1?document.addEventListener("touchstart",jSuites.calendar.isOpen):document.addEventListener("mousedown",jSuites.calendar.isOpen),jSuites.color=function(e,t){var o={options:{},values:[]};jSuites.color.current||(jSuites.color.current=null);var r={placeholder:"",value:null,onclose:null,onchange:null,closeOnChange:!0};for(var n in r)t&&t.hasOwnProperty(n)?o.options[n]=t[n]:o.options[n]=r[n];for(var i={red:{50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c"},pink:{50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f"},purple:{50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c"},indigo:{50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e"},blue:{50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1"},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20"},lightgreen:{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100"},deeporange:{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c"},brown:{50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121"},bluegrey:{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238"}},s=[],l=Object.keys(i),a=Object.keys(i[l[0]]),u=0;u0?e.style.left=n-s.width+"px":e.style.left="10px":e.style.left=n+"px"},o.close=function(){e.classList.contains("jcontextmenu-focus")&&e.classList.remove("jcontextmenu-focus")},o.create=function(t){e.innerHTML="";for(var o=0;o65&&o.open()}))}else l.setAttribute("readonly","readonly");return!o.options.placeholder&&e.getAttribute("placeholder")&&(o.options.placeholder=e.getAttribute("placeholder")),o.options.placeholder&&l.setAttribute("placeholder",o.options.placeholder),s.appendChild(l),"searchbar"==o.options.type?s.appendChild(c):a.appendChild(c),a.appendChild(u),e.appendChild(s),e.appendChild(a),e.appendChild(d),o.init=function(){o.options.url?jSuites.ajax({url:o.options.url,method:"GET",dataType:"json",success:function(t){t&&(o.setData(t),null!=o.options.value&&o.setValue(o.options.value),"function"==typeof o.options.onload&&o.options.onload(e,o,t))}}):(o.setData(),null!=o.options.value&&o.setValue(o.options.value),"function"==typeof o.options.onload&&o.options.onload(e,o,data)),1==o.options.opened&&o.open()},o.getUrl=function(){return o.options.url},o.setUrl=function(e){o.options.url=e,jSuites.ajax({url:o.options.url,method:"GET",dataType:"json",success:function(e){o.setData(e)}})},o.createItem=function(e){var t={};if(t.element=document.createElement("div"),t.element.className="jdropdown-item",t.value=e.id,t.text=e.name,t.textLowerCase=""+e.name.toLowerCase(),e.image){var o=document.createElement("img");o.className="jdropdown-image",o.src=e.image,e.title||o.classList.add("jdropdown-image-small"),t.element.appendChild(o)}var r=document.createElement("div");if(r.className="jdropdown-description",r.innerHTML=e.name,e.title){var n=document.createElement("div");n.className="jdropdown-title",n.innerHTML=e.title,r.appendChild(n)}return t.element.appendChild(r),t},o.setData=function(e){e&&(o.options.data=e),e=o.options.data,a.removeChild(u),u.innerHTML="",o.reset(),o.items=[];var t=[],r=[];if(e.length){for(var n=0;n0)for(n=0;n=0;t--)"none"!=o.items[t].element.style.display&&(e=t);if(null==e)return!1;o.updateCursor(e)},o.last=function(){for(var e=null,t=o.currentIndex+1;t=0;t--)if("none"!=o.items[t].element.style.display){e=t;break}if(null==e)return!1;o.updateCursor(e)},jSuites.dropdown.hasEvents||("ontouchsend"in document.documentElement==1?document.addEventListener("touchsend",jSuites.dropdown.mouseup):document.addEventListener("mouseup",jSuites.dropdown.mouseup),document.addEventListener("keydown",jSuites.dropdown.onkeydown),jSuites.dropdown.hasEvents=!0),o.init(),e.dropdown=o,o},jSuites.dropdown.hasEvents=!1,jSuites.dropdown.mouseup=function(e){var t=jSuites.getElement(e.target,"jdropdown");if(t){var o=t.dropdown;if(e.target.classList.contains("jdropdown-header"))t.classList.contains("jdropdown-focus")&&t.classList.contains("jdropdown-default")?o.close():o.open();else if(e.target.classList.contains("jdropdown-group-name")){var r=e.target.nextSibling.children;if("none"!=e.target.nextSibling.style.display)for(var n=0;n0&&t.prev():40==e.which?null==o?t.firstVisible():o+1");var d=function(e){var t=document.createElement("div");t.innerHTML=e;var r=t.querySelectorAll("img");if(r.length)for(var n=0;n150&&(o.description=o.description.substr(0,150)+"...")),t.items[0].snippet.thumbnails.medium.url&&(o.image=t.items[0].snippet.thumbnails.medium.url),b(o)}}}):console.error("The youtubeKey is not defined")},o.getWebsite=function(e){o.options.remoteParser?jSuites.ajax({url:o.options.remoteParser+encodeURI(e.trim()),method:"GET",dataType:"json",success:function(t){var o={title:"",description:"",image:"",host:e,url:e};t.title&&(o.title=t.title),t.description&&(o.description=t.description),t.image?o.image=t.image:t["og:image"]&&(o.image=t["og:image"]),t.host&&(o.host=t.host),t.url&&(o.url=t.url),b(o)}}):console.log("The remoteParser is not defined")},o.setData=function(e){u.innerHTML=e,cursor()},o.getData=function(e){if(e){s={content:""};var t=u.querySelectorAll(".post-tag");if(t.length){s.users=[];for(var o=0;o/g,"\n")).replace(/<\/div>/g,"\n")).replace(/<(?:.|\n)*?>/gm,""),s.content=i.trim(),s=JSON.stringify(s)}else var s=u.innerHTML;return s},o.reset=function(){u.innerHTML=""},o.addPdf=function(e){if("data"!=e.result.substr(0,4))console.error("Invalid source");else{var t=document.createElement("canvas");t.width=60,t.height=60;var o=new Image;t.getContext("2d").drawImage(o,0,0,t.width,t.height),t.toBlob((function(t){var o=document.createElement("img");o.src=window.URL.createObjectURL(t),o.setAttribute("data-extension","pdf"),e.name&&o.setAttribute("data-name",e.name),e.size&&o.setAttribute("data-size",e.size),e.date&&o.setAttribute("data-date",e.date),o.className="jfile pdf",p(o),jSuites.files[o.src]=e.result.substr(e.result.indexOf(",")+1)}))}},o.addImage=function(e,t,r,n){if("data"==e.substr(0,4)||o.options.remoteParser){if("data"==e.substr(0,4))i=(i=(i=e.split(";"))[0].split("/"))[1];else{var i=e.substr(e.lastIndexOf(".")+1);e=o.options.remoteParser+e}var s=new Image;s.onload=function(){var e=document.createElement("canvas");e.width=s.width,e.height=s.height,e.getContext("2d").drawImage(s,0,0,e.width,e.height),e.toBlob((function(o){var s=document.createElement("img");s.src=window.URL.createObjectURL(o),s.setAttribute("tabindex","900"),s.setAttribute("data-extension",i),t&&s.setAttribute("data-name",t),r&&s.setAttribute("data-size",r),n&&s.setAttribute("data-date",n),s.className="jfile";var l=e.toDataURL();p(s),jSuites.files[s.src]=l.substr(l.indexOf(",")+1)}))},s.src=e}else console.error("remoteParser not defined in your initialization")},o.addFile=function(e){for(var t=[],r=0;ro.options.maxFileSize)alert("The file is too big");else{var n=e[r].type.split("/");(n="image"==n[0]?1:"pdf"==n[1]?2:0)?(t[r]=new FileReader,t[r].index=r,t[r].type=n,t[r].name=e[r].name,t[r].date=e[r].lastModified,t[r].size=e[r].size,t[r].addEventListener("load",(function(e){2==e.target.type?1==o.options.acceptFiles&&o.addPdf(e.target):o.addImage(e.target.result,e.target.name,e.total,e.target.lastModified)}),!1),t[r].readAsDataURL(e[r])):alert("The extension is not allowed")}},o.destroy=function(){u.removeEventListener("mouseup",m),u.removeEventListener("mousedown",j),u.removeEventListener("mousemove",h),u.removeEventListener("keyup",g),u.removeEventListener("keydown",v),u.removeEventListener("dragstart",C),u.removeEventListener("dragenter",x),u.removeEventListener("dragover",w),u.removeEventListener("drop",E),u.removeEventListener("paste",y),"function"==typeof o.options.onblur&&u.removeEventListener("blur",A),"function"==typeof o.options.onfocus&&u.removeEventListener("focus",N),e.editor=null,e.classList.remove("jeditor-container"),a.remove(),l.remove(),u.remove()};var m=function(e){s=!1},j=function(e){var t=function(t){var o=t.getBoundingClientRect();o.width-(e.clientX-o.left)<40&&e.clientY-o.top<40&&(t.innerHTML="",t.remove())};if("IMG"==e.target.tagName)if(e.target.style.cursor){var o=e.target.getBoundingClientRect();s={e:e.target,x:e.clientX,y:e.clientY,w:o.width,h:o.height,d:e.target.style.cursor},e.target.style.width||(e.target.style.width=o.width+"px"),e.target.style.height||(e.target.style.height=o.height+"px");var r=window.getSelection();if(r.rangeCount)for(var n=0;n
"),"function"==typeof o.options.onkeyup&&o.options.onkeyup(t,e)},v=function(t){if(1==o.options.parseURL&&f(),"function"==typeof o.options.onenter&&13==t.which){var r=o.getData();o.options.onenter(o,e,r,t)}"function"==typeof o.options.onkeydown&&o.options.onkeydown(t,e)},y=function(e){if(e.clipboardData||e.originalEvent.clipboardData)var t=(e.originalEvent||e).clipboardData.getData("text/html"),r=(e.originalEvent||e).clipboardData.getData("text/plain"),n=(e.originalEvent||e).clipboardData.files;else window.clipboardData&&(t=window.clipboardData.getData("Html"),r=window.clipboardData.getData("Text"),n=window.clipboardData.files);if(n.length)o.addFile(n);else{r=r.split("\r\n");var i="";if("DIV"!=e.target.nodeName||e.target.classList.contains("jeditor"))for(s=0;s"+r[s]+"":i+="


";else for(var s=0;s\r\n");document.execCommand("insertHtml",!1,i),1==o.options.acceptImages&&d(t)}e.preventDefault()},C=function(e){s&&s.e&&e.preventDefault()},x=function(t){s||0==o.options.dropZone||e.classList.add("jeditor-dragging")},w=function(t){s||0==o.options.dropZone||(i&&clearTimeout(i),i=setTimeout((function(){e.classList.remove("jeditor-dragging")}),100))},E=function(t){if(s||0==o.options.dropZone);else{var r=null;document.caretRangeFromPoint?r=document.caretRangeFromPoint(t.clientX,t.clientY):t.rangeParent&&(r=document.createRange()).setStart(t.rangeParent,t.rangeOffset);var n=window.getSelection();n.removeAllRanges(),n.addRange(r),n.anchorNode.parentNode.focus();var i=(t.originalEvent||t).dataTransfer.getData("text/html"),l=(t.originalEvent||t).dataTransfer.getData("text/plain"),a=(t.originalEvent||t).dataTransfer.files;a.length?o.addFile(a):l&&d(i),e.classList.remove("jeditor-dragging"),t.preventDefault()}},A=function(){o.options.onblur(o,e,o.getData())},N=function(){o.options.onfocus(o,e,o.getData())};if(u.addEventListener("mouseup",m),u.addEventListener("mousedown",j),u.addEventListener("mousemove",h),u.addEventListener("keyup",g),u.addEventListener("keydown",v),u.addEventListener("dragstart",C),u.addEventListener("dragenter",x),u.addEventListener("dragover",w),u.addEventListener("drop",E),u.addEventListener("paste",y),"function"==typeof o.options.onblur&&u.addEventListener("blur",A),"function"==typeof o.options.onfocus&&u.addEventListener("focus",N),"function"==typeof o.options.onload&&o.options.onload(e,u),u.innerHTML=c,e.appendChild(u),o.options.snippet&&b(o.options.snippet),null==o.options.toolbar&&(o.options.toolbar=jSuites.editor.getDefaultToolbar()),o.options.toolbar){for(var L=0;L 800px"}};for(var n in r)t&&t.hasOwnProperty(n)?o.options[n]=t[n]:o.options[n]=r[n];e.classList.add("jupload"),o.addImage=function(e){e.date||(e.date="");var t=document.createElement("img");return t.setAttribute("data-date",e.lastmodified?e.lastmodified:e.date),t.setAttribute("data-name",e.name),t.setAttribute("data-size",e.size),t.setAttribute("data-small",e.small?e.small:""),t.setAttribute("data-cover",e.cover?1:0),t.setAttribute("data-extension",e.extension),t.setAttribute("src",e.file),t.className="jfile",t.style.width="100%",t},o.addImages=function(t){1==o.options.singleFile&&(e.innerHTML="");for(var r=0;r=0)var e=!0;l.innerHTML="",l.appendChild(a),l.appendChild(j),l.appendChild(A),e&&l.appendChild(_),l.appendChild(H),l.appendChild(B),F.value="Request a new password",m.value=1,s="requestNewPassword"},o.codeConfirmation=function(){l.innerHTML="",l.appendChild(a),l.appendChild(f),l.appendChild(p),l.appendChild(H),l.appendChild(B),F.value="Confirm code",m.value=2,s="codeConfirmation"},o.changeMyPassword=function(e){l.innerHTML="",l.appendChild(a),l.appendChild(f),l.appendChild(I),l.appendChild(T),l.appendChild(H),l.appendChild(B),F.value="Change my password",b.value=e,s="changeMyPassword"},o.requestAccess=function(){l.innerHTML="",l.appendChild(a),l.appendChild(A),l.appendChild(I),l.appendChild(H),1==o.options.facebookAuthentication&&l.appendChild(z),l.appendChild(q),l.appendChild(O),l.appendChild(q),1==o.options.newProfile&&l.appendChild(G),F.value="Login",L.value="",window.localStorage.getItem("username")?(E.value=window.localStorage.getItem("username"),L.focus()):E.focus(),s="requestAccess"},o.requestLoginViaFacebook=function(){"undefined"==typeof deviceNotificationToken?FB.getLoginStatus((function(e){e.status&&"connected"==e.status?o.execute({f:e.authResponse.accessToken}):FB.login((function(e){e.authResponse?o.execute({f:e.authResponse.accessToken}):o.showMessage("Not authorized by facebook")}),{scope:"public_profile,email"})}),!0):(jDestroy=function(){fbLogin.removeEventListener("loadstart",jStart),fbLogin.removeEventListener("loaderror",jError),fbLogin.removeEventListener("exit",jExit),fbLogin.close(),fbLogin=null},jStart=function(e){var t=e.url;t.indexOf("access_token")>=0&&setTimeout((function(){var e=t.match(/=(.*?)&/);e[1].length>32&&o.execute({f:e[1]}),jDestroy()}),500),t.indexOf("error=access_denied")>=0&&(setTimeout(jDestroy,500),o.showMessage("Not authorized by facebook"))},jError=function(e){jDestroy()},jExit=function(e){jDestroy()},fbLogin=window.open(o.options.facebookUrl,"_blank","location=no,closebuttoncaption=Exit,disallowoverscroll=yes,toolbar=no"),fbLogin.addEventListener("loadstart",jStart),fbLogin.addEventListener("loaderror",jError),fbLogin.addEventListener("exit",jExit)),s="requestLoginViaFacebook"},o.execute=function(t){if("newProfile"==s){var r=new RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/);if(!E.value||!r.test(E.value))var n="Invalid e-mail address";if(r=new RegExp(/^[a-zA-Z0-9\_\-\.\s+]+$/),g.value&&r.test(g.value)||(n="Invalid username, please use only characters and numbers"),n)return o.showMessage(n),!1}else if("changeMyPassword"==s){if(L.value.length<3)n="Password is too short";else if(L.value!=S.value)n="Password should match";else if("function"==typeof o.options.newPasswordValidation){var i=o.options.newPasswordValidation(o,L.value,L.value);null!=i&&(n=i)}if(n)return o.showMessage(n),!1}if(""!=E.value&&window.localStorage.setItem("username",E.value),Array.prototype.indexOf.call(l.children,_)>=0&&""==V.value)return o.showMessage("Please enter the captch code below"),!1;var a=o.options.url;o.options.deviceToken&&(a+="?token="+o.options.deviceToken),t||((t=jSuites.getFormElements(e)).password&&(t.password=jSuites.login.sha512(t.password)),Array.prototype.indexOf.call(l.children,p)>=0&&d.value&&(t.h=jSuites.login.sha512(d.value))),e.classList.add("jlogin-loading"),a="newProfile"==s&&o.options.newProfileUrl?o.options.newProfileUrl:o.options.url,jSuites.ajax({url:a,method:"POST",dataType:"json",data:t,success:function(t){e.classList.remove("jlogin-loading"),function(e){e&&(1==e.success&&("requestNewPassword"==s?o.codeConfirmation():"codeConfirmation"==s?o.requestAccess():"newProfile"==s&&(o.requestAccess(),e.newProfile=!0),e.token&&(o.options.accessToken=e.token,window.localStorage.setItem("Access-Token",e.token))),e.message&&o.showMessage(e.message),e.data?(l.insertBefore(_,H),U.setAttribute("src","data:image/png;base64,"+e.data)):Array.prototype.indexOf.call(l.children,_)>=0&&_.remove(),e.hash?o.changeMyPassword(e.hash):e.url&&(1==e.success?"function"==typeof o.options.onsuccess?o.options.onsuccess(e):e.message?setTimeout((function(){window.location.href=e.url}),2e3):window.location.href=e.url:"function"==typeof o.options.onerror&&o.options.onerror(e)))}(t)},error:function(t){e.classList.remove("jlogin-loading"),"function"==typeof o.options.onerror&&o.options.onerror(t)}})};var K=window.location.href.split("?");return K[1]&&130==K[1].length&&"h="==K[1].substr(0,2)?o.changeMyPassword(K[1].substr(2)):o.requestAccess(),o},jSuites.login.sha512=function(e){function t(e,t){this.highOrder=e,this.lowOrder=t}var o,r,n,i,s,l,a,u,c,d,p=[new t(1779033703,4089235720),new t(3144134277,2227873595),new t(1013904242,4271175723),new t(2773480762,1595750129),new t(1359893119,2917565137),new t(2600822924,725511199),new t(528734635,4215389547),new t(1541459225,327033209)],b=[new t(1116352408,3609767458),new t(1899447441,602891725),new t(3049323471,3964484399),new t(3921009573,2173295548),new t(961987163,4081628472),new t(1508970993,3053834265),new t(2453635748,2937671579),new t(2870763221,3664609560),new t(3624381080,2734883394),new t(310598401,1164996542),new t(607225278,1323610764),new t(1426881987,3590304994),new t(1925078388,4068182383),new t(2162078206,991336113),new t(2614888103,633803317),new t(3248222580,3479774868),new t(3835390401,2666613458),new t(4022224774,944711139),new t(264347078,2341262773),new t(604807628,2007800933),new t(770255983,1495990901),new t(1249150122,1856431235),new t(1555081692,3175218132),new t(1996064986,2198950837),new t(2554220882,3999719339),new t(2821834349,766784016),new t(2952996808,2566594879),new t(3210313671,3203337956),new t(3336571891,1034457026),new t(3584528711,2466948901),new t(113926993,3758326383),new t(338241895,168717936),new t(666307205,1188179964),new t(773529912,1546045734),new t(1294757372,1522805485),new t(1396182291,2643833823),new t(1695183700,2343527390),new t(1986661051,1014477480),new t(2177026350,1206759142),new t(2456956037,344077627),new t(2730485921,1290863460),new t(2820302411,3158454273),new t(3259730800,3505952657),new t(3345764771,106217008),new t(3516065817,3606008344),new t(3600352804,1432725776),new t(4094571909,1467031594),new t(275423344,851169720),new t(430227734,3100823752),new t(506948616,1363258195),new t(659060556,3750685593),new t(883997877,3785050280),new t(958139571,3318307427),new t(1322822218,3812723403),new t(1537002063,2003034995),new t(1747873779,3602036899),new t(1955562222,1575990012),new t(2024104815,1125592928),new t(2227730452,2716904306),new t(2361852424,442776044),new t(2428436474,593698344),new t(2756734187,3733110249),new t(3204031479,2999351573),new t(3329325298,3815920427),new t(3391569614,3928383900),new t(3515267271,566280711),new t(3940187606,3454069534),new t(4118630271,4000239992),new t(116418474,1914138554),new t(174292421,2731055270),new t(289380356,3203993006),new t(460393269,320620315),new t(685471733,587496836),new t(852142971,1086792851),new t(1017036298,365543100),new t(1126000580,2618297676),new t(1288033470,3409855158),new t(1501505948,4234509866),new t(1607167915,987167468),new t(1816402316,1246189591)],f=new Array(64);function m(e,o){var r,n,i;return r=(65535&e.lowOrder)+(65535&o.lowOrder),i=(65535&(n=(e.lowOrder>>>16)+(o.lowOrder>>>16)+(r>>>16)))<<16|65535&r,r=(65535&e.highOrder)+(65535&o.highOrder)+(n>>>16),new t((65535&(n=(e.highOrder>>>16)+(o.highOrder>>>16)+(r>>>16)))<<16|65535&r,i)}function j(e,o,r,n){var i,s,l;return i=(65535&e.lowOrder)+(65535&o.lowOrder)+(65535&r.lowOrder)+(65535&n.lowOrder),l=(65535&(s=(e.lowOrder>>>16)+(o.lowOrder>>>16)+(r.lowOrder>>>16)+(n.lowOrder>>>16)+(i>>>16)))<<16|65535&i,i=(65535&e.highOrder)+(65535&o.highOrder)+(65535&r.highOrder)+(65535&n.highOrder)+(s>>>16),new t((65535&(s=(e.highOrder>>>16)+(o.highOrder>>>16)+(r.highOrder>>>16)+(n.highOrder>>>16)+(i>>>16)))<<16|65535&i,l)}function h(e,o,r,n,i){var s,l,a;return s=(65535&e.lowOrder)+(65535&o.lowOrder)+(65535&r.lowOrder)+(65535&n.lowOrder)+(65535&i.lowOrder),a=(65535&(l=(e.lowOrder>>>16)+(o.lowOrder>>>16)+(r.lowOrder>>>16)+(n.lowOrder>>>16)+(i.lowOrder>>>16)+(s>>>16)))<<16|65535&s,s=(65535&e.highOrder)+(65535&o.highOrder)+(65535&r.highOrder)+(65535&n.highOrder)+(65535&i.highOrder)+(l>>>16),new t((65535&(l=(e.highOrder>>>16)+(o.highOrder>>>16)+(r.highOrder>>>16)+(n.highOrder>>>16)+(i.highOrder>>>16)+(s>>>16)))<<16|65535&s,a)}function g(e,o,r){return new t(e.highOrder&o.highOrder^e.highOrder&r.highOrder^o.highOrder&r.highOrder,e.lowOrder&o.lowOrder^e.lowOrder&r.lowOrder^o.lowOrder&r.lowOrder)}function v(e,o,r){return new t(e.highOrder&o.highOrder^~e.highOrder&r.highOrder,e.lowOrder&o.lowOrder^~e.lowOrder&r.lowOrder)}function y(e,o){return o<=32?new t(e.highOrder>>>o|e.lowOrder<<32-o,e.lowOrder>>>o|e.highOrder<<32-o):new t(e.lowOrder>>>o|e.highOrder<<32-o,e.highOrder>>>o|e.lowOrder<<32-o)}function C(e){var o=y(e,28),r=y(e,34),n=y(e,39);return new t(o.highOrder^r.highOrder^n.highOrder,o.lowOrder^r.lowOrder^n.lowOrder)}function x(e){var o=y(e,14),r=y(e,18),n=y(e,41);return new t(o.highOrder^r.highOrder^n.highOrder,o.lowOrder^r.lowOrder^n.lowOrder)}function w(e){var o=y(e,1),r=y(e,8),n=E(e,7);return new t(o.highOrder^r.highOrder^n.highOrder,o.lowOrder^r.lowOrder^n.lowOrder)}function E(e,o){return o<=32?new t(e.highOrder>>>o,e.lowOrder>>>o|e.highOrder<<32-o):new t(0,e.highOrder<<32-o)}var A,N,L,I,M=8*(e=function(e){return unescape(encodeURIComponent(e))}(e)).length;e=function(e){for(var t=[],o=8*e.length,r=0;r>5]|=(255&e.charCodeAt(r/8))<<24-r%32;return t}(e),e[M>>5]|=128<<24-M%32,e[31+(M+128>>10<<5)]=M;for(var S=0;S>2]>>8*(3-i%4),r+=o.charAt(t>>4&15)+o.charAt(15&t);return r}(D)},jSuites.mask=function(){var e={},t=0,o=[],r=[];return e.run=function(r,n,i){if(r&&n){if(i||(i="."),r==Number(r))var s=(""+r).split("."),l=(r=s[0],s[1]);else r=""+r;var a;if(t=0,o=[],e.prepare(n),a=r)for(var u=0;u46){if(t=0,o=[],e.prepare(i),n.target.selectionStart1&&parseInt(e)<10?(o[t]="0"+e,t++,!0):parseInt(e)<10&&(o[t]=e,!0):(1==o[t]&&o[t]<2&&parseInt(e)<3||0==o[t]&&o[t]<10)&&(o[t]+=e,t++,!0);if("dd"==r[t])return null==o[t]||""==o[t]?parseInt(e)>3&&parseInt(e)<10?(o[t]="0"+e,t++,!0):parseInt(e)<10&&(o[t]=e,!0):(3==o[t]&&parseInt(e)<2||o[t]<3&&parseInt(e)<10)&&(o[t]+=e,t++,!0);if("hh24"==r[t])return null==o[t]||""==o[t]?parseInt(e)>2&&parseInt(e)<10?(o[t]="0"+e,t++,!0):parseInt(e)<10&&(o[t]=e,!0):(2==o[t]&&parseInt(e)<4||o[t]<2&&parseInt(e)<10)&&(o[t]+=e,t++,!0);if("hh"==r[t])return null==o[t]||""==o[t]?parseInt(e)>1&&parseInt(e)<10?(o[t]="0"+e,t++,!0):parseInt(e)<10&&(o[t]=e,!0):(1==o[t]&&parseInt(e)<3||o[t]<1&&parseInt(e)<10)&&(o[t]+=e,t++,!0);if("mi"==r[t]||"ss"==r[t])return null==o[t]||""==o[t]?parseInt(e)>5&&parseInt(e)<10?(o[t]="0"+e,t++,!0):parseInt(e)<10&&(o[t]=e,!0):parseInt(e)<10&&(o[t]+=e,t++,!0);if("yy"==r[t]||"yyyy"==r[t])return parseInt(e)<10&&(null==o[t]||""==o[t]?o[t]=e:o[t]+=e,o[t].length==r[t].length&&t++,!0);if("#"==r[t]||"#.##"==r[t]||"#,##"==r[t]||"# ##"==r[t]){if(e.match(/[0-9]/g)){if("#.##"==r[t])var n=".";else n="#,##"==r[t]?",":"# ##"==r[t]?" ":"";if(null==o[t]||""==o[t])o[t]=e;else if(o[t]+=e,n){o[t]=o[t].match(/[0-9]/g).join("");for(var i=[],s=0,l=o[t].length-1;l>=0;l--)i.push(o[t][l]),++s%3||i.push(n);i=i.reverse(),o[t]=i.join(""),o[t].substr(0,1)==n&&(o[t]=o[t].substr(1))}return!0}if("#.##"==r[t]&&"."==e);else if("#,##"==r[t]&&","==e);else if("# ##"==r[t]&&" "==e);else if(o[t]&&(t++,r[t])){if(r[t]==e)return o[t]=e,!0;if("0"==r[t]&&r[t+1]==e)return t++,o[t]=e,!0}return!1}if("0"==r[t])return!!e.match(/[0-9]/g)&&(o[t]=e,t++,!0);if("a"==r[t])return!!e.match(/[a-zA-Z]/g)&&(o[t]=e,t++,!0);if(null!=r[t]){if("\\a"==r[t])var a="a";else a="\\0"==r[t]?"0":"[-]"==r[t]?"-"==e||"+"==e?e:" ":r[t];if(o[t]=a,e==a)return t++,!0}t++}while(r[t])},e.prepare=function(e){r=[];for(var t=0;t",47:"?"},r=e.which;return t.hasOwnProperty(r)&&(r=t[r]),!e.shiftKey&&r>=65&&r<=90?String.fromCharCode(r+32):e.shiftKey&&o.hasOwnProperty(r)?o[r]:96<=r&&r<=105?String.fromCharCode(r-48):String.fromCharCode(r)},e}(),jSuites.mobile=(jSuites.el&&jSuites.el.addEventListener("mousedown",(function(e){e.target.classList.contains("option-title")&&(e.target.classList.contains("selected")?e.target.classList.remove("selected"):e.target.classList.add("selected"))})),{options:{}}),jSuites.pages=function(){var container=null,current=null,createPage=function(options,callback){var page=document.createElement("div");return page.classList.add("page"),page.style.display="none",page.options=options||{},current?container.insertBefore(page,current.nextSibling):container.appendChild(page),jSuites.ajax({url:page.options.url,method:"GET",success:function(result){jSuites.refresh(page,page.options.onpush),page.innerHTML=result;for(var script=page.getElementsByTagName("script"),i=0;i800?jSuites.fadeIn(n):jSuites.slideTop(n,1)},t.hide=function(){jSuites.getWindowWidth()>800?jSuites.fadeOut(n,(function(){n.parentNode.removeChild(n)})):jSuites.slideTop(n,0,(function(){n.parentNode.removeChild(n)}))},t.show(),1==t.options.autoHide&&setTimeout((function(){t.hide()}),t.options.timeout),jSuites.getWindowWidth()<800&&n.addEventListener("swipeup",(function(e){t.hide(),e.preventDefault(),e.stopPropagation()})),t},jSuites.rating=function(e,t){var o={options:{}},r={number:5,value:0,tooltip:["Very bad","Bad","Average","Good","Very good"],onchange:null};for(var n in r)t&&t.hasOwnProperty(n)?o.options[n]=t[n]:o.options[n]=r[n];e.classList.add("jrating");for(var i=0;i0)for(var n=0;n0)for(n=0;ne.offsetY?(e.path[0].style.borderTop="1px dotted #ccc",e.path[0].style.borderBottom=""):(e.path[0].style.borderTop="",e.path[0].style.borderBottom="1px dotted #ccc")})),e.addEventListener("dragleave",(function(e){e.path[0].style.borderTop="",e.path[0].style.borderBottom=""})),e.addEventListener("dragend",(function(e){e.path[1].querySelector(".dragging").classList.remove("dragging")})),e.addEventListener("drop",(function(e){var t=e.path[1].querySelector(".dragging");e.target.clientHeight/2>e.offsetY?e.path[1].insertBefore(t,e.path[0]):e.path[1].insertBefore(t,e.path[0].nextSibling),e.path[0].style.borderTop="",e.path[0].style.borderBottom=""}));for(var o=0;o=0&&o.open(t)},o.create=function(t,r){"function"==typeof o.options.create?o.options.create():(o.appendElement(t,r),"function"==typeof o.options.oncreate&&o.options.oncreate(e,r))},o.appendElement=function(e,t){if(e||(1==o.options.autoName?(e=o.options.prefixName,e+=" "+(parseInt(a.children.length)+1)):e=prompt("Title?","")),e){var r=document.createElement("div");r.innerHTML=e,o.options.allowCreate?l.insertBefore(r,l.lastChild):l.appendChild(r),t||(t=document.createElement("div")),a.appendChild(t),o.selectIndex(r)}},o.options.data){e.innerHTML="";var l=document.createElement("div"),a=document.createElement("div");l.classList.add("jtabs-headers"),a.classList.add("jtabs-content"),e.appendChild(l),e.appendChild(a);for(var u=0;u0&&e.children.length>=o.options.limit)alert(o.options.limitMessage+" "+o.options.limit);else{var s=d();if(t&&"string"!=typeof t){s&&s.parentNode.classList.contains("jtags")&&(s.innerText.replace("\n","")||e.removeChild(s));for(var l=0;l<=t.length;l++)(!o.options.limit||e.children.length",e.appendChild(a))}else{var a;(a=document.createElement("div")).innerHTML=t||"
",s&&s.parentNode.classList.contains("jtags")?e.insertBefore(a,s.nextSibling):e.appendChild(a)}r&&setTimeout((function(){c(a)}),0),u(),"function"==typeof o.options.onchange&&o.options.onchange(e,o,t||"")}},o.getData=function(){for(var t=[],r=0;r
"},o.isValid=function(){for(var t=0,o=0;o",e.appendChild(r)}9==t.which||186==t.which||188==t.which?(window.getSelection().anchorOffset>1&&(!o.options.limit||e.children.length1&&(!o.options.limit||e.children.length0&&l--,i.children[l].classList.add("selected"),t.preventDefault()):40==t.which&&i&&""!=i.style.display&&(i.children[l].classList.remove("selected"),l<9&&l++,i.children[l].classList.add("selected"),t.preventDefault())},m=function(e){if(39==e.which){var t=window.getSelection().anchorOffset;t>1&&t==b&&o.add()}else 13==e.which||38==e.which||40==e.which?e.preventDefault():(a&&clearTimeout(a),a=setTimeout((function(){var e=window.getSelection();o.options.search&&o.search(e),a=null}),300));u()},j=function(e){if(e.clipboardData||e.originalEvent.clipboardData){(e.originalEvent||e).clipboardData.getData("text/html");var t=(e.originalEvent||e).clipboardData.getData("text/plain")}else window.clipboardData&&(window.clipboardData.getData("Html"),t=window.clipboardData.getData("Text"));o.setValue(t),e.preventDefault()},h=function(t){if(t.target.parentNode&&t.target.parentNode.classList.contains("jtags")&&(t.target.classList.contains("jtags_label")||t.target.classList.contains("jtags_error"))){const o=t.target.getBoundingClientRect();o.width-(t.clientX-o.left)<16&&(e.removeChild(t.target),e.focus())}i&&(i.style.display="")},g=function(t){if((!e.children.length||o.getValue(e.children.length-1))&&(!o.options.limit||e.children.length",e.appendChild(r)}"function"==typeof o.options.onfocus&&o.options.onfocus(e,o,o.getValue())},v=function(t){i&&setTimeout((function(){i.style.display=""}),200);for(var r=0;r
","function"==typeof o.options.onload&&o.options.onload(e,o),e.tags=o,o},jSuites.tracker=function(e,t){var o={options:{}},r={url:null,message:"Are you sure? There are unsaved information in your form",ignore:!1,currentHash:null,submitButton:null,onload:null,onbeforesave:null,onsave:null};for(var n in r)t&&t.hasOwnProperty(n)?o.options[n]=t[n]:o.options[n]=r[n];return o.setUrl=function(e){o.options.url=e},o.load=function(){jSuites.ajax({url:o.options.url,method:"GET",dataType:"json",success:function(t){for(var r=e.querySelectorAll("input, select, textarea"),n=0;n\r\n"),t+=o.validateElement(r[n]));return t},o.getError=function(){return!!o.validation()},o.setHash=function(){return o.getHash(o.getElements())},o.getHash=function(e){var t,o=0;if(0===e.length)return o;for(t=0;t\nWebsite: https://bossanova.uk/jexcel/v3"};for(var property in defaults)if(options&&options.hasOwnProperty(property))if("text"===property)for(var textKey in obj.options[property]=defaults[property],options[property])options[property].hasOwnProperty(textKey)&&(obj.options[property][textKey]=options[property][textKey]);else obj.options[property]=options[property];else obj.options[property]=defaults[property];obj.el=el,obj.corner=null,obj.contextMenu=null,obj.textarea=null,obj.ads=null,obj.content=null,obj.table=null,obj.thead=null,obj.tbody=null,obj.rows=[],obj.results=null,obj.searchInput=null,obj.toolbar=null,obj.pagination=null,obj.pageNumber=null,obj.headerContainer=null,obj.colgroupContainer=null,obj.headers=[],obj.records=[],obj.history=[],obj.formula=[],obj.colgroup=[],obj.selection=[],obj.highlighted=[],obj.selectedCell=null,obj.selectedContainer=null,obj.style=[],obj.data=null,obj.cursor=null,obj.historyIndex=-1,obj.ignoreEvents=!1,obj.ignoreHistory=!1,obj.edition=null,obj.hashString=null,obj.resizing=null,obj.dragging=null,1==obj.options.lazyLoading&&0==obj.options.tableOverflow&&0==obj.options.fullscreen&&(console.error("JEXCEL: The lazyloading only works when tableOverflow = yes or fullscreen = yes"),obj.options.lazyLoading=!1),obj.fullscreen=function(e){null==e&&(e=!obj.options.fullscreen),obj.options.fullscreen!=e&&(obj.options.fullscreen=e,1==e?el.classList.add("fullscreen"):el.classList.remove("fullscreen"))},obj.prepareTable=function(){var e=obj.options.columns.length;if(obj.options.data&&void 0!==obj.options.data[0]){var t=Object.keys(obj.options.data[0]);t.length>e&&(e=t.length)}obj.options.minDimensions[0]>e&&(e=obj.options.minDimensions[0]);for(var o=[],r=0;r0&&obj.options.paginationOptions&&obj.options.paginationOptions.length>0){obj.paginationDropdown=document.createElement("select"),obj.paginationDropdown.classList.add("jexcel_pagination_dropdown"),obj.paginationDropdown.onchange=function(){obj.options.pagination=parseInt(this.value),obj.page(0)};for(var n=0;n0)if(obj.options.nestedHeaders[0]&&obj.options.nestedHeaders[0][0])for(var s=0;sn?s:n,u=l>i?l:i;for(t=0;t=c&&t0&&n++}return o},obj.getJson=function(e){for(var t=[],o=obj.options.columns.length,r=obj.options.data.length,n=0;n200)&&(r.style.whiteSpace="pre-wrap"),e>0&&(o||r.innerHTML?obj.records[t][e-1].style.overflow="hidden":e==obj.options.columns.length-1&&(r.style.overflow="hidden")),r},obj.createCellHeader=function(e){var t=obj.options.columns[e].width?obj.options.columns[e].width:obj.options.defaultColWidth,o=obj.options.columns[e].align?obj.options.columns[e].align:obj.options.defaultColAlign;obj.headers[e]=document.createElement("td"),obj.headers[e].innerHTML=obj.options.columns[e].title?obj.options.columns[e].title:jexcel.getColumnName(e),obj.headers[e].setAttribute("data-x",e),obj.headers[e].style.textAlign=o,obj.options.columns[e].title&&obj.headers[e].setAttribute("title",obj.options.columns[e].title),obj.colgroup[e]=document.createElement("col"),obj.colgroup[e].setAttribute("width",t),"hidden"==obj.options.columns[e].type&&(obj.headers[e].style.display="none",obj.colgroup[e].style.display="none")},obj.createNestedHeader=function(e){var t=document.createElement("tr");t.classList.add("jexcel_nested");var o=document.createElement("td");t.appendChild(o);for(var r=0,n=0;n1?obj.records[u[1]][u[0]].setAttribute("colspan",t):t=1,o>1?obj.records[u[1]][u[0]].setAttribute("rowspan",o):o=1,obj.options.mergeCells[e]=[t,o,[]],obj.records[u[1]][u[0]].setAttribute("data-merged","true"),obj.records[u[1]][u[0]].style.overflow="hidden";for(var p=[],b=u[1];b0||l>0)&&(obj.records[r[1]+s][r[0]+l]=n[2][i],obj.records[r[1]+s][r[0]+l].style.display="",t&&t[i]&&obj.updateCell(r[0]+l,r[1]+s,t[i]),i++);obj.updateSelection(obj.records[r[1]][r[0]],obj.records[r[1]+s-1][r[0]+l-1]),o||delete obj.options.mergeCells[e]}},obj.destroyMerged=function(e){if(obj.options.mergeCells){obj.options.mergeCells;for(var t=Object.keys(obj.options.mergeCells),o=0;o1?s-1:0);null==t?l<=e&&a>=e&&o.push(r[n]):t?l=e&&o.push(r[n]):l<=e&&a>e&&o.push(r[n])}return o},obj.isRowMerged=function(e,t){var o=[];if(obj.options.mergeCells)for(var r=Object.keys(obj.options.mergeCells),n=0;n1?s-1:0);null==t?l<=e&&a>=e&&o.push(r[n]):t?l=e&&o.push(r[n]):l<=e&&a>e&&o.push(r[n])}return o},obj.openEditor=function(e,t,o){var r=e.getAttribute("data-y"),n=e.getAttribute("data-x");obj.ignoreEvents||"function"==typeof obj.options.oneditionstart&&obj.options.oneditionstart(el,e,n,r),n>0&&(obj.records[r][n-1].style.overflow="hidden");var i=function(t){var o=e.getBoundingClientRect(),r=document.createElement(t);return r.style.width=o.width+"px",r.style.height=o.height-2+"px",r.style.minHeight=o.height-2+"px",e.classList.add("editor"),e.innerHTML="",e.appendChild(r),r};if(1==e.classList.contains("readonly"));else if(obj.edition=[obj.records[r][n],obj.records[r][n].innerHTML,n,r],obj.options.columns[n].editor)obj.options.columns[n].editor.openEditor(e,el,t,o);else if("hidden"==obj.options.columns[n].type);else if("checkbox"==obj.options.columns[n].type||"radio"==obj.options.columns[n].type){var s=!e.children[0].checked;obj.setValue(e,s),obj.edition=null}else if("dropdown"==obj.options.columns[n].type||"autocomplete"==obj.options.columns[n].type){if(s=obj.options.data[r][n],"function"==typeof obj.options.columns[n].filter)var l=obj.options.columns[n].filter(el,e,n,r,obj.options.columns[n].source);else l=obj.options.columns[n].source;var a=i("div"),u={data:l,multiple:!!obj.options.columns[n].multiple,autocomplete:!(!obj.options.columns[n].autocomplete&&"autocomplete"!=obj.options.columns[n].type),opened:!0,value:obj.options.columns[n].multiple?s.split(";"):s,width:"100%",height:a.style.minHeight,position:1==obj.options.tableOverflow||1==obj.options.fullscreen,onclose:function(){obj.closeEditor(e,!0)}};obj.options.columns[n].options&&obj.options.columns[n].options.type&&(u.type=obj.options.columns[n].options.type),jSuites.dropdown(a,u)}else if("calendar"==obj.options.columns[n].type||"color"==obj.options.columns[n].type)s=obj.options.data[r][n],(a=i("input")).value=s,1!=obj.options.tableOverflow&&1!=obj.options.fullscreen||(obj.options.columns[n].options.position=!0),obj.options.columns[n].options.value=obj.options.data[r][n],obj.options.columns[n].options.opened=!0,obj.options.columns[n].options.onclose=function(t,o){obj.closeEditor(e,!0)},"color"==obj.options.columns[n].type?jSuites.color(a,obj.options.columns[n].options):jSuites.calendar(a,obj.options.columns[n].options).setValue(s),a.focus();else if("image"==obj.options.columns[n].type){var c=e.children[0];(a=i("div")).style.position="relative";var d=document.createElement("div");d.classList.add("jclose"),c&&c.src&&d.appendChild(c),a.appendChild(d),jSuites.image(d,obj.options.imageOptions);const t=e.getBoundingClientRect(),o=d.getBoundingClientRect();window.innerHeight0)for(var l=0;l200)?obj.records[t][e].style.whiteSpace="pre-wrap":obj.records[t][e].style.whiteSpace=""}e>0&&(obj.records[t][e-1].style.overflow=o?"hidden":""),obj.ignoreEvents||"function"==typeof obj.options.onchange&&obj.options.onchange(el,obj.records[t]&&obj.records[t][e]?obj.records[t][e]:null,e,t,o,c.oldValue)}else var c={x:e,y:t,col:e,row:t};return c},obj.copyData=function(e,t){var o=obj.getData(!0,!0),r=obj.selectedContainer,n=parseInt(e.getAttribute("data-x")),i=parseInt(e.getAttribute("data-y")),s=parseInt(t.getAttribute("data-x")),l=parseInt(t.getAttribute("data-y")),a=[],u=!1;if(r[0]==n){if(i=obj.selectedCell[1]&&t<=obj.selectedCell[3]||o>=obj.selectedCell[1]&&o<=obj.selectedCell[3]))return void obj.resetSelection()}else if(obj.selectedCell&&(t>=obj.selectedCell[0]&&t<=obj.selectedCell[2]||o>=obj.selectedCell[0]&&o<=obj.selectedCell[2]))return void obj.resetSelection()},obj.resetSelection=function(e){if(obj.highlighted.length){u=1;for(var t=0;t0?o+(n-1):o,l=i>0?r+(i-1):r;else s=o,l=r;for(var a=o;a<=s;a++)obj.headers[a]&&obj.headers[a].classList.remove("selected");for(a=r;a<=l;a++)obj.rows[a]&&obj.rows[a].classList.remove("selected")}}else var u=0;return obj.highlighted=[],obj.selectedCell=null,obj.corner.style.top="-2000px",obj.corner.style.left="-2000px",1!=obj.ignoreEvents&&1==e&&obj.options.onblur&&"function"==typeof obj.options.onblur&&1==u&&obj.options.onblur(el),u},obj.updateSelection=function(e,t,o){var r=e.getAttribute("data-x"),n=e.getAttribute("data-y");if(t)var i=t.getAttribute("data-x"),s=t.getAttribute("data-y");else i=r,s=n;obj.updateSelectionFromCoords(r,n,i,s,o)},obj.updateSelectionFromCoords=function(e,t,o,r,n){var i=obj.resetSelection();if(null==o&&(o=e),null==r&&(r=t),e>=obj.headers.length&&(e=obj.headers.length-1),t>=obj.rows.length&&(t=obj.rows.length-1),o>=obj.headers.length&&(o=obj.headers.length-1),r>=obj.rows.length&&(r=obj.rows.length-1),obj.selectedCell=[e,t,o,r],null!=e){if(obj.records[t][e]&&obj.records[t][e].classList.add("highlight-selected"),parseInt(e)1&&(pl&&(l=p+f-1)),m&&(bu&&(u=b+m-1))}var j=null,h=null,g=null,v=null;for(d=a;d<=u;d++)"none"!=obj.rows[d].style.display&&(null==g&&(g=d),v=d);for(c=s;c<=l;c++){for(d=a;d<=u;d++)"none"!=obj.rows[d].style.display&&"none"!=obj.records[d][c].style.display&&(obj.records[d][c].classList.add("highlight"),obj.highlighted.push(obj.records[d][c]));"hidden"!=obj.options.columns[c].type&&(null==j&&(j=c),h=c)}for(j||(j=0),h||(h=0),c=j;c<=h;c++)"hidden"!=obj.options.columns[c].type&&(obj.records[g][c]&&obj.records[g][c].classList.add("highlight-top"),obj.records[v][c]&&obj.records[v][c].classList.add("highlight-bottom"),obj.headers[c].classList.add("selected"));for(d=g;d<=v;d++)"none"!=obj.rows[d].style.display&&(obj.records[d][j].classList.add("highlight-left"),obj.records[d][h].classList.add("highlight-right"),obj.rows[d].classList.add("selected"));obj.selectedContainer=[j,g,h,v]}1!=obj.ignoreEvents&&(obj.options.onfocus&&"function"==typeof obj.options.onfocus&&0==i&&obj.options.onfocus(el),"function"==typeof obj.options.onselection&&obj.options.onselection(el,j,g,h,v,n)),obj.updateCornerPosition()},obj.removeCopySelection=function(){for(var e=0;e0)var s=parseInt(n)+1,l=parseInt(e);else s=parseInt(e),l=parseInt(o)-1;if(t-i>0)var a=parseInt(i)+1,u=parseInt(t);else a=parseInt(t),u=parseInt(r)-1;l-sobj.content.scrollTop+30&&pobj.content.scrollLeft&&d0&&("object"==typeof e&&(e=e.getAttribute("data-x")),o||(o=obj.colgroup[e].getAttribute("width")),obj.colgroup[e].setAttribute("width",t),obj.options.columns[e].width=t,obj.setHistory({action:"setWidth",column:e,oldValue:o,newValue:t}),1!=obj.ignoreEvents&&"function"==typeof obj.options.onresizecolumn&&obj.options.onresizecolumn(el,e,t,o),obj.updateCornerPosition())},obj.setHeight=function(e,t,o){t>0&&("object"==typeof e&&(e=e.getAttribute("data-y")),o||(o=obj.rows[e].getAttribute("height"))||(o=obj.rows[e].getBoundingClientRect().height),t=parseInt(t),obj.rows[e].style.height=t+"px",obj.options.rows[e]||(obj.options.rows[e]={}),obj.options.rows[e].height=t,obj.setHistory({action:"setHeight",row:e,oldValue:o,newValue:t}),1!=obj.ignoreEvents&&"function"==typeof obj.options.onresizerow&&obj.options.onresizerow(el,e,t,o),obj.updateCornerPosition())},obj.getHeight=function(e){if(e)"object"==typeof e&&(e=$(e).getAttribute("data-y")),t=obj.rows[e].style.height;else for(var t=[],o=0;o=0){if(Object.keys(obj.options.mergeCells).length>0){if(!confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure))return!1;obj.destroyMerged()}t=null==t?obj.headers[e].classList.contains("arrow-down")?1:0:t?1:0,Array.prototype.orderBy=function(e,t){return this.slice(0).sort((function(o,r){var n=""==o[e]?"":Number(o[e])==o[e]?Number(o[e]):o[e].toLowerCase(),i=""==r[e]?"":Number(r[e])==r[e]?Number(r[e]):r[e].toLowerCase();return t?""==n&&""!=i?1:""!=n&&""==i||n>i?-1:ni?1:n0)obj.page(0);else if(1==obj.options.lazyLoading)obj.loadPage(0);else for(o=0;o0){if(e>t)var r=1;else r=0;if(obj.isRowMerged(e).length||obj.isRowMerged(t,r).length){if(!confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure))return!1;obj.destroyMerged()}}if(1==obj.options.search){if(obj.results&&obj.results.length!=obj.rows.length){if(!confirm(obj.options.text.thisActionWillClearYourSearchResultsAreYouSure))return!1;obj.resetSearch()}obj.results=null}o||(Array.prototype.indexOf.call(obj.tbody.children,obj.rows[t])>=0?e>t?obj.tbody.insertBefore(obj.rows[e],obj.rows[t]):obj.tbody.insertBefore(obj.rows[e],obj.rows[t].nextSibling):obj.tbody.removeChild(obj.rows[e])),obj.rows.splice(t,0,obj.rows.splice(e,1)[0]),obj.records.splice(t,0,obj.records.splice(e,1)[0]),obj.options.data.splice(t,0,obj.options.data.splice(e,1)[0]),obj.options.pagination>0&&obj.tbody.children.length!=obj.options.pagination&&obj.page(obj.pageNumber),obj.setHistory({action:"moveRow",oldValue:e,newValue:t}),obj.updateTableReferences(),1!=obj.ignoreEvents&&"function"==typeof obj.options.onmoverow&&obj.options.onmoverow(el,e,t)},obj.insertRow=function(e,t,o){if(1==obj.options.allowInsertRow){var r=[];if(e>0)var n=e;else n=1,e&&(r=e);o=!!o;var i=obj.options.data.length-1;if((null==t||t>=parseInt(i)||t<0)&&(t=i),"function"==typeof obj.options.onbeforeinsertrow&&!obj.options.onbeforeinsertrow(el,t,n,o))return console.log("onbeforeinsertrow returned false"),!1;if(Object.keys(obj.options.mergeCells).length>0&&obj.isRowMerged(t,o).length){if(!confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure))return!1;obj.destroyMerged()}if(1==obj.options.search){if(obj.results&&obj.results.length!=obj.rows.length){if(!confirm(obj.options.text.thisActionWillClearYourSearchResultsAreYouSure))return!1;obj.resetSearch()}obj.results=null}for(var s=o?t:t+1,l=obj.records.splice(s),a=obj.options.data.splice(s),u=obj.rows.splice(s),c=[],d=[],p=[],b=s;b=0&&obj.tbody.insertBefore(m,u[0]):Array.prototype.indexOf.call(obj.tbody.children,obj.rows[t])>=0&&obj.tbody.appendChild(m),c.push(obj.records[b]),d.push(obj.options.data[b]),p.push(m)}Array.prototype.push.apply(obj.records,l),Array.prototype.push.apply(obj.options.data,a),Array.prototype.push.apply(obj.rows,u),obj.options.pagination>0&&obj.page(obj.pageNumber),obj.setHistory({action:"insertRow",rowNumber:t,numOfRows:n,insertBefore:o,rowRecords:c,rowData:d,rowNode:p}),obj.updateTableReferences(),1!=obj.ignoreEvents&&"function"==typeof obj.options.oninsertrow&&obj.options.oninsertrow(el,t,n,c,o)}},obj.deleteRow=function(e,t){if(1==obj.options.allowDeleteRow)if(1==obj.options.allowDeletingAllRows||obj.options.data.length>1){if(null==e){var o=obj.getSelectedRows();o[0]?(e=parseInt(o[0].getAttribute("data-y")),t=o.length):(e=obj.options.data.length-1,t=1)}var r=obj.options.data.length-1;if((null==e||e>r||e<0)&&(e=r),t||(t=1),e+t>=obj.options.data.length&&(t=obj.options.data.length-e),"function"==typeof obj.options.onbeforedeleterow&&!obj.options.onbeforedeleterow(el,e,t))return console.log("onbeforedeleterow returned false"),!1;if(parseInt(e)>-1){var n=!1;if(Object.keys(obj.options.mergeCells).length>0)for(var i=e;i=0&&(obj.rows[i].className="",obj.rows[i].parentNode.removeChild(obj.rows[i]));var s=obj.records.splice(e,t),l=obj.options.data.splice(e,t),a=obj.rows.splice(e,t);obj.options.pagination>0&&obj.tbody.children.length!=obj.options.pagination&&obj.page(obj.pageNumber),obj.conditionalSelectionUpdate(1,e,e+t-1),obj.setHistory({action:"deleteRow",rowNumber:e,numOfRows:t,insertBefore:1,rowRecords:s,rowData:l,rowNode:a}),obj.updateTableReferences(),1!=obj.ignoreEvents&&"function"==typeof obj.options.ondeleterow&&obj.options.ondeleterow(el,e,t,s)}}else console.error("JEXCEL. It is not possible to delete the last row")},obj.moveColumn=function(e,t){if(Object.keys(obj.options.mergeCells).length>0){if(e>t)var o=1;else o=0;if(obj.isColMerged(e).length||obj.isColMerged(t,o).length){if(!confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure))return!1;obj.destroyMerged()}}if((e=parseInt(e))>(t=parseInt(t))){obj.headerContainer.insertBefore(obj.headers[e],obj.headers[t]),obj.colgroupContainer.insertBefore(obj.colgroup[e],obj.colgroup[t]);for(var r=0;r0)var i=e;else i=1,e&&(n=e);o=!!o;var s=obj.options.columns.length-1;if((null==t||t>=parseInt(s)||t<0)&&(t=s),"function"==typeof obj.options.onbeforeinsertcolumn&&!obj.options.onbeforeinsertcolumn(el,t,i,o))return console.log("onbeforeinsertcolumn returned false"),!1;if(Object.keys(obj.options.mergeCells).length>0&&obj.isColMerged(t,o).length){if(!confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure))return!1;obj.destroyMerged()}r||(r=[]);for(var l=0;l0)if(obj.options.nestedHeaders[0]&&obj.options.nestedHeaders[0][0])for(var C=0;C1){if(null==e){var o=obj.getSelectedColumns(!0);o.length?(e=parseInt(o[0]),t=parseInt(o.length)):(e=obj.headers.length-1,t=1)}var r=obj.options.data[0].length-1;if((null==e||e>r||e<0)&&(e=r),t||(t=1),t>obj.options.data[0].length-e&&(t=obj.options.data[0].length-e),"function"==typeof obj.options.onbeforedeletecolumn&&!obj.options.onbeforedeletecolumn(el,e,t))return console.log("onbeforedeletecolumn returned false"),!1;if(parseInt(e)>-1){var n=!1;if(Object.keys(obj.options.mergeCells).length>0)for(var i=e;i0)if(obj.options.nestedHeaders[0]&&obj.options.nestedHeaders[0][0])for(var p=0;p0){for(var e=0,t=obj.rows.length-1;t>=0;t--){for(var o=!1,r=0;r0&&obj.insertRow(obj.options.minSpareRows-e)}if(obj.options.minSpareCols>0){var n=0;for(r=obj.headers.length-1;r>=0;r--){for(o=!1,t=0;t0&&obj.insertColumn(obj.options.minSpareCols-n)}if("function"==typeof obj.options.updateTable){for(obj.options.detachForUpdates&&el.removeChild(obj.content),t=0;t0)if(chainLoopProtection[r])obj.records[t][e].innerHTML="#ERROR",obj.formula[r]="";else{chainLoopProtection[r]=!0;for(var n=0;n-1)return console.error("Self Reference detected"),"#ERROR";if(tokens)for(var i=0;i=0)if(r[1])e=Number(r[0]+"."+r[1]);else e=Number(r[0]+".00");else e=null;return e},obj.row=function(e){},obj.col=function(e){},obj.up=function(e,t){if(e?obj.selectedCell[3]>0&&obj.up.visible(1,t?0:1):(obj.selectedCell[1]>0&&obj.up.visible(0,t?0:1),obj.selectedCell[2]=obj.selectedCell[0],obj.selectedCell[3]=obj.selectedCell[1]),obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]),1==obj.options.lazyLoading)if(0==obj.selectedCell[1]||0==obj.selectedCell[3])obj.loadPage(0),obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]);else if(obj.loadValidation())obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]);else{var o=parseInt(obj.tbody.firstChild.getAttribute("data-y"));obj.selectedCell[1]-o<30&&(obj.loadUp(),obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]))}else if(obj.options.pagination>0){var r=obj.whichPage(obj.selectedCell[3]);r!=obj.pageNumber&&obj.page(r)}obj.updateScroll(1)},obj.up.visible=function(e,t){if(0==e)var o=parseInt(obj.selectedCell[0]),r=parseInt(obj.selectedCell[1]);else o=parseInt(obj.selectedCell[2]),r=parseInt(obj.selectedCell[3]);if(0==t){for(var n=0;n=0;o--)if("none"!=obj.records[o][e].style.display&&"none"!=obj.rows[o].style.display){if(obj.records[o][e].getAttribute("data-merged")&&obj.records[o][e]==obj.records[t][e])continue;t=o;break}return t},obj.down=function(e,t){if(e?obj.selectedCell[3]0){var o=obj.whichPage(obj.selectedCell[3]);o!=obj.pageNumber&&obj.page(o)}obj.updateScroll(3)},obj.down.visible=function(e,t){if(0==e)var o=parseInt(obj.selectedCell[0]),r=parseInt(obj.selectedCell[1]);else o=parseInt(obj.selectedCell[2]),r=parseInt(obj.selectedCell[3]);if(0==t){for(var n=obj.rows.length-1;n>r;n--)if("none"!=obj.records[n][o].style.display&&"none"!=obj.rows[n].style.display){r=n;break}}else r=obj.down.get(o,r);0==e?(obj.selectedCell[0]=o,obj.selectedCell[1]=r):(obj.selectedCell[2]=o,obj.selectedCell[3]=r)},obj.down.get=function(e,t){e=parseInt(e);for(var o=(t=parseInt(t))+1;oo;n--)if("none"!=obj.records[r][n].style.display){o=n;break}}else o=obj.right.get(o,r);0==e?(obj.selectedCell[0]=o,obj.selectedCell[1]=r):(obj.selectedCell[2]=o,obj.selectedCell[3]=r)},obj.right.get=function(e,t){e=parseInt(e),t=parseInt(t);for(var o=e+1;o0&&obj.left.visible(1,t?0:1):(obj.selectedCell[0]>0&&obj.left.visible(0,t?0:1),obj.selectedCell[2]=obj.selectedCell[0],obj.selectedCell[3]=obj.selectedCell[1]),obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]),obj.updateScroll(0)},obj.left.visible=function(e,t){if(0==e)var o=parseInt(obj.selectedCell[0]),r=parseInt(obj.selectedCell[1]);else o=parseInt(obj.selectedCell[2]),r=parseInt(obj.selectedCell[3]);if(0==t){for(var n=0;n=0;o--)if("none"!=obj.records[t][o].style.display){if(obj.records[t][o].getAttribute("data-merged")&&obj.records[t][o]==obj.records[t][e])continue;e=o;break}return e},obj.first=function(e,t){if(e?t?obj.selectedCell[3]=0:obj.left.visible(1,0):(t?obj.selectedCell[1]=0:obj.left.visible(0,0),obj.selectedCell[2]=obj.selectedCell[0],obj.selectedCell[3]=obj.selectedCell[1]),1!=obj.options.lazyLoading||0!=obj.selectedCell[1]&&0!=obj.selectedCell[3]){if(obj.options.pagination>0){var o=obj.whichPage(obj.selectedCell[3]);o!=obj.pageNumber&&obj.page(o)}}else obj.loadPage(0);obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]),obj.updateScroll(1)},obj.last=function(e,t){if(e?t?obj.selectedCell[3]=obj.records.length-1:obj.right.visible(1,0):(t?obj.selectedCell[1]=obj.records.length-1:obj.right.visible(0,0),obj.selectedCell[2]=obj.selectedCell[0],obj.selectedCell[3]=obj.selectedCell[1]),1!=obj.options.lazyLoading||obj.selectedCell[1]!=obj.records.length-1&&obj.selectedCell[3]!=obj.records.length-1){if(obj.options.pagination>0){var o=obj.whichPage(obj.selectedCell[3]);o!=obj.pageNumber&&obj.page(o)}}else obj.loadPage(-1);obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3]),obj.updateScroll(3)},obj.selectAll=function(){obj.selectedCell||(obj.selectedCell=[]),obj.selectedCell[0]=0,obj.selectedCell[1]=0,obj.selectedCell[2]=obj.headers.length-1,obj.selectedCell[3]=obj.records.length-1,obj.updateSelectionFromCoords(obj.selectedCell[0],obj.selectedCell[1],obj.selectedCell[2],obj.selectedCell[3])},obj.loadPage=function(e){if(1==obj.options.search&&obj.results)var t=obj.results;else t=obj.rows;var o=100;null!=e&&-1!=e||(e=Math.ceil(t.length/o));var r=e*o,n=e*o+o;n>t.length&&(n=t.length),(r=n-100)<0&&(r=0);for(var i=r;io&&obj.tbody.removeChild(obj.tbody.firstChild)},obj.loadUp=function(){if(1==obj.options.search&&obj.results)var e=obj.results;else e=obj.rows;var t=0;if(e.length>100){var o=parseInt(obj.tbody.firstChild.getAttribute("data-y"));if(1==obj.options.search&&obj.results&&(o=e.indexOf(o)),o>0)for(var r=0;r<30;r++)(o-=1)>-1&&(1==obj.options.search&&obj.results?obj.tbody.insertBefore(obj.rows[e[o]],obj.tbody.firstChild):obj.tbody.insertBefore(obj.rows[o],obj.tbody.firstChild),obj.tbody.children.length>100&&(obj.tbody.removeChild(obj.tbody.lastChild),t=1))}return t},obj.loadDown=function(){if(1==obj.options.search&&obj.results)var e=obj.results;else e=obj.rows;var t=0;if(e.length>100){var o=parseInt(obj.tbody.lastChild.getAttribute("data-y"));if(1==obj.options.search&&obj.results&&(o=e.indexOf(o)),o100&&(obj.tbody.removeChild(obj.tbody.firstChild),t=1)),o+=1}return t},obj.loadValidation=function(){if(obj.selectedCell){var e=parseInt(obj.tbody.firstChild.getAttribute("data-y"))/100,t=parseInt(obj.selectedCell[3]/100),o=parseInt(obj.rows.length/100);if(e!=t&&t<=o&&!Array.prototype.indexOf.call(obj.tbody.children,obj.rows[obj.selectedCell[3]]))return obj.loadPage(t),!0}return!1},obj.resetSearch=function(){obj.searchInput.value="",obj.search(""),obj.results=null},obj.search=function(e){if(e&&(e=e.toLowerCase()),obj.resetSelection(),obj.pageNumber=0,obj.results=[],e){var t=function(e){-1==obj.results.indexOf(e)&&obj.results.push(e)};obj.options.data.filter((function(o,r){if(function(e,t,o){for(var r=0;r=0||(""+obj.records[o][r].innerHTML).toLowerCase().search(t)>=0)return!0;return!1}(o,e,r)){var n=obj.isRowMerged(r);if(n.length)for(var i=0;i0?obj.options.pagination:obj.results?obj.results.length:obj.rows.length;obj.tbody.firstChild;)obj.tbody.removeChild(obj.tbody.firstChild);for(var n=0;n-1?(r0&&obj.updatePagination(),o},obj.whichPage=function(e){return 1==obj.options.search&&obj.results&&(e=obj.results.indexOf(e)),Math.ceil((parseInt(e)+1)/parseInt(obj.options.pagination))-1},obj.page=function(e){var t=obj.pageNumber;if(1==obj.options.search&&obj.results)var o=obj.results;else o=obj.rows;var r=parseInt(obj.options.pagination);null!=e&&-1!=e||(e=Math.ceil(o.length/r)),obj.pageNumber=e;var n=e*r,i=e*r+r;for(i>o.length&&(i=o.length),n<0&&(n=0);obj.tbody.firstChild;)obj.tbody.removeChild(obj.tbody.firstChild);for(var s=n;s0&&obj.updatePagination(),obj.updateCornerPosition(),"function"==typeof obj.options.onchangepage&&obj.options.onchangepage(el,e,t)},obj.updatePagination=function(){if(obj.pagination.children[0].innerHTML="",obj.pagination.children[1].innerHTML="",obj.options.pagination){if(1==obj.options.search&&obj.results)var e=obj.results.length;else e=obj.rows.length;if(e){var t=Math.ceil(e/obj.options.pagination);if(obj.pageNumber<6)var o=1,r=t<10?t:10;else t-obj.pageNumber<5?(r=t,(o=t-9)<1&&(o=1)):(o=obj.pageNumber-4,r=obj.pageNumber+5);o>1&&((i=document.createElement("div")).className="jexcel_page",i.innerHTML="<",i.title=1,obj.pagination.children[1].appendChild(i));for(var n=o;n<=r;n++){var i;(i=document.createElement("div")).className="jexcel_page",i.innerHTML=n,obj.pagination.children[1].appendChild(i),obj.pageNumber==n-1&&i.classList.add("jexcel_page_selected")}r",i.title=t,obj.pagination.children[1].appendChild(i)),obj.pagination.children[0].innerHTML=function(e){var t=Array.prototype.slice.call(arguments,1);return e.replace(/{(\d+)}/g,(function(e,o){return void 0!==t[o]?t[o]:e}))}(obj.options.text.showingPage,obj.pageNumber+1,t)}else obj.pagination.children[0].innerHTML=obj.options.text.noRecordsFound}},obj.download=function(e){if(0==obj.options.allowExport)console.error("Export not allowed");else{var t="";1!=e&&1!=obj.options.includeHeadersOnDownload||(t+=obj.getHeaders(),t+="\r\n"),t+=obj.copy(!1,obj.options.csvDelimiter,!0);var o=new Blob(["\ufeff"+t],{type:"text/csv;charset=utf-8;"});if(window.navigator&&window.navigator.msSaveOrOpenBlob)window.navigator.msSaveOrOpenBlob(o,options.csvFileName+".csv");else{var r=document.createElement("a"),n=URL.createObjectURL(o);r.href=n,r.setAttribute("download",obj.options.csvFileName+".csv"),document.body.appendChild(r),r.click(),r.parentNode.removeChild(r)}}},obj.setHistory=function(e){if(1!=obj.ignoreHistory){var t=++obj.historyIndex;obj.history=obj.history=obj.history.slice(0,t+1),obj.history[t]=e}},obj.copy=function(e,t,o){t||(t="\t");var r=[],n=[],i=[],s=[],l=obj.options.data[0].length,a=obj.options.data.length,u="";obj.style=[];for(var c=0;c=obj.headers.length-1&&obj.insertColumn(),d=obj.right.get(d,p))}o[++s]&&(p>=obj.rows.length-1&&obj.insertRow(),p=obj.down.get(e,p))}obj.updateSelectionFromCoords(e,t,d,p),obj.setHistory({action:"setValue",records:l,selection:obj.selectedCell,newStyle:a,oldStyle:u}),obj.updateTable(),"function"==typeof obj.options.onpaste&&obj.options.onpaste(el,l),obj.onafterchanges(el,l)}},obj.historyProcessRow=function(e,t){var o=t.insertBefore?t.rowNumber:t.rowNumber+1;if(1==obj.options.search&&obj.results&&obj.results.length!=obj.rows.length&&obj.resetSearch(),1==e){for(var r=t.numOfRows,n=o;n0&&obj.page(obj.pageNumber),obj.updateTableReferences()},obj.historyProcessColumn=function(e,t){var o=t.insertBefore?t.columnNumber:t.columnNumber+1;if(1==e){var r=t.numOfColumns;obj.options.columns.splice(o,r);for(var n=o;n0)if(obj.options.nestedHeaders[0]&&obj.options.nestedHeaders[0][0])for(i=0;i=0){var r=obj.history[obj.historyIndex--];if("insertRow"==r.action)obj.historyProcessRow(1,r);else if("deleteRow"==r.action)obj.historyProcessRow(0,r);else if("insertColumn"==r.action)obj.historyProcessColumn(1,r);else if("deleteColumn"==r.action)obj.historyProcessColumn(0,r);else if("moveRow"==r.action)obj.moveRow(r.newValue,r.oldValue);else if("moveColumn"==r.action)obj.moveColumn(r.newValue,r.oldValue);else if("setMerge"==r.action)obj.removeMerge(r.column,r.data);else if("setStyle"==r.action)obj.setStyle(r.oldValue,null,null,1);else if("setWidth"==r.action)obj.setWidth(r.column,r.oldValue);else if("setHeight"==r.action)obj.setHeight(r.row,r.oldValue);else if("setHeader"==r.action)obj.setHeader(r.column,r.oldValue);else if("setComments"==r.action)obj.setComments(r.column,r.oldValue[0],r.oldValue[1]);else if("orderBy"==r.action){for(var n=[],i=0;i0?o.join("; "):""},obj.parseCSV=function(e,t){9==(e=e.replace(/\r?\n$|\r$|\n$/g,"")).charCodeAt(e.length-1)&&(e+="\0"),t=t||",";for(var o=[],r=!1,n=0,i=0,s=0;s0)for(var o=t.shift(),r=0;r=obj.content.scrollHeight?obj.loadDown()&&(obj.content.scrollTop+obj.content.clientHeight>obj.content.scrollHeight-10&&(obj.content.scrollTop=obj.content.scrollTop-obj.content.clientHeight),obj.updateCornerPosition()):obj.content.scrollTop<=obj.content.clientHeight&&obj.loadUp()&&(obj.content.scrollTop<10&&(obj.content.scrollTop=obj.content.scrollTop+obj.content.clientHeight),obj.updateCornerPosition()),jexcel.timeControlLoading=null}),100)),1!=obj.options.lazyLoading&&1!=obj.options.tableOverflow||obj.edition&&"jdropdown"!=e.target.className.substr(0,9)&&obj.closeEditor(obj.edition[0],!0)},el.addEventListener("DOMMouseScroll",obj.scrollControls),el.addEventListener("mousewheel",obj.scrollControls),el.jexcel=obj,obj.init(),obj};jexcel.current=null,jexcel.timeControl=null,jexcel.timeControlLoading=null,jexcel.destroy=function(e,t){e.jexcel&&(e.removeEventListener("DOMMouseScroll",e.jexcel.scrollControls),e.removeEventListener("mousewheel",e.jexcel.scrollControls),e.jexcel=null,e.innerHTML="",t&&(document.removeEventListener("keydown",jexcel.keyDownControls),document.removeEventListener("mouseup",jexcel.mouseUpControls),document.removeEventListener("mousedown",jexcel.mouseDownControls),document.removeEventListener("mousemove",jexcel.mouseMoveControls),document.removeEventListener("mouseover",jexcel.mouseOverControls),document.removeEventListener("dblclick",jexcel.doubleClickControls),document.removeEventListener("paste",jexcel.pasteControls),document.removeEventListener("contextmenu",jexcel.contextMenuControls),document.removeEventListener("touchstart",jexcel.touchStartControls),document.removeEventListener("touchend",jexcel.touchEndControls),document.removeEventListener("touchcancel",jexcel.touchEndControls),jexcel=null))},jexcel.build=function(){document.addEventListener("keydown",jexcel.keyDownControls),document.addEventListener("mouseup",jexcel.mouseUpControls),document.addEventListener("mousedown",jexcel.mouseDownControls),document.addEventListener("mousemove",jexcel.mouseMoveControls),document.addEventListener("mouseover",jexcel.mouseOverControls),document.addEventListener("dblclick",jexcel.doubleClickControls),document.addEventListener("paste",jexcel.pasteControls),document.addEventListener("contextmenu",jexcel.contextMenuControls),document.addEventListener("touchstart",jexcel.touchStartControls),document.addEventListener("touchend",jexcel.touchEndControls),document.addEventListener("touchcancel",jexcel.touchEndControls),document.addEventListener("touchmove",jexcel.touchEndControls)},jexcel.keyDownControls=function(e){if(jexcel.current){if(jexcel.current.edition)if(27==e.which)jexcel.current.edition&&jexcel.current.closeEditor(jexcel.current.edition[0],!1),e.preventDefault();else if(13==e.which)if("calendar"==jexcel.current.options.columns[jexcel.current.edition[2]].type)jexcel.current.editor[0].children[0].calendar.close(1);else if("dropdown"==jexcel.current.options.columns[jexcel.current.edition[2]].type||"autocomplete"==jexcel.current.options.columns[jexcel.current.edition[2]].type);else if((1==jexcel.current.options.wordWrap||1==jexcel.current.options.columns[jexcel.current.edition[2]].wordWrap||jexcel.current.options.data[jexcel.current.edition[3]][jexcel.current.edition[2]].length>200)&&e.altKey){var t=jexcel.current.edition[0].children[0],o=jexcel.current.edition[0].children[0].value,r=t.selectionStart;o=o.slice(0,r)+"\n"+o.slice(r),t.value=o,t.focus(),t.selectionStart=r+1,t.selectionEnd=r+1}else jexcel.current.edition[0].children[0].blur();else 9==e.which&&("calendar"==jexcel.current.options.columns[jexcel.current.edition[2]].type?jexcel.current.edition[0].children[0].calendar.close(1):jexcel.current.edition[0].children[0].blur());if(!jexcel.current.edition&&jexcel.current.selectedCell)if(37==e.which)jexcel.current.left(e.shiftKey,e.ctrlKey),e.preventDefault();else if(39==e.which)jexcel.current.right(e.shiftKey,e.ctrlKey),e.preventDefault();else if(38==e.which)jexcel.current.up(e.shiftKey,e.ctrlKey),e.preventDefault();else if(40==e.which)jexcel.current.down(e.shiftKey,e.ctrlKey),e.preventDefault();else if(36==e.which)jexcel.current.first(e.shiftKey,e.ctrlKey),e.preventDefault();else if(35==e.which)jexcel.current.last(e.shiftKey,e.ctrlKey),e.preventDefault();else if(32==e.which)1==jexcel.current.options.editable&&jexcel.current.setCheckRadioValue(),e.preventDefault();else if(46==e.which)1==jexcel.current.options.editable&&(jexcel.current.selectedRow?1==jexcel.current.options.allowDeleteRow&&confirm(jexcel.current.options.text.areYouSureToDeleteTheSelectedRows)&&jexcel.current.deleteRow():jexcel.current.selectedHeader?1==jexcel.current.options.allowDeleteColumn&&confirm(jexcel.current.options.text.areYouSureToDeleteTheSelectedColumns)&&jexcel.current.deleteColumn():jexcel.current.setValue(jexcel.current.highlighted,""));else if(13==e.which)e.shiftKey?jexcel.current.up():(1==jexcel.current.options.allowInsertRow&&1==jexcel.current.options.allowManualInsertRow&&jexcel.current.selectedCell[1]==jexcel.current.options.data.length-1&&jexcel.current.insertRow(),jexcel.current.down()),e.preventDefault();else if(9==e.which)e.shiftKey?jexcel.current.left():(1==jexcel.current.options.allowInsertColumn&&1==jexcel.current.options.allowManualInsertColumn&&jexcel.current.selectedCell[0]==jexcel.current.options.data[0].length-1&&jexcel.current.insertColumn(),jexcel.current.right()),e.preventDefault();else if(!e.ctrlKey&&!e.metaKey||e.shiftKey){if(jexcel.current.selectedCell&&1==jexcel.current.options.editable){var n=jexcel.current.selectedCell[1],i=jexcel.current.selectedCell[0];"readonly"!=jexcel.current.options.columns[i].type&&(32==e.keyCode?"checkbox"==jexcel.current.options.columns[i].type||"radio"==jexcel.current.options.columns[i].type?e.preventDefault():jexcel.current.openEditor(jexcel.current.records[n][i],!0):113==e.keyCode?jexcel.current.openEditor(jexcel.current.records[n][i],!1):(8==e.keyCode||e.keyCode>=48&&e.keyCode<=57||e.keyCode>=96&&e.keyCode<=111||187==e.keyCode||189==e.keyCode||(String.fromCharCode(e.keyCode)==e.key||String.fromCharCode(e.keyCode).toLowerCase()==e.key.toLowerCase())&&jexcel.validLetter(String.fromCharCode(e.keyCode)))&&(jexcel.current.openEditor(jexcel.current.records[n][i],!0),"calendar"==jexcel.current.options.columns[i].type&&e.preventDefault()))}}else 65==e.which?(jexcel.current.selectAll(),e.preventDefault()):83==e.which?(jexcel.current.download(),e.preventDefault()):89==e.which?(jexcel.current.redo(),e.preventDefault()):90==e.which?(jexcel.current.undo(),e.preventDefault()):67==e.which||67==e.which?(jexcel.current.copy(!0),e.preventDefault()):88==e.which?(1==jexcel.current.options.editable?jexcel.cutControls():jexcel.copyControls(),e.preventDefault()):86==e.which&&jexcel.pasteControls();else e.target.classList.contains("jexcel_search")&&(jexcel.timeControl&&clearTimeout(jexcel.timeControl),jexcel.timeControl=setTimeout((function(){jexcel.current.search(e.target.value)}),200))}},jexcel.isMouseAction=!1,jexcel.mouseDownControls=function(e){if((e=e||window.event).buttons)var t=e.buttons;else t=e.button?e.button:e.which;var o=jexcel.getElement(e.target);if(o[0]?jexcel.current!=o[0].jexcel&&(jexcel.current&&jexcel.current.resetSelection(),jexcel.current=o[0].jexcel):jexcel.current&&(jexcel.current.resetSelection(!0),jexcel.current=null),jexcel.current&&1==t){if(e.target.classList.contains("jexcel_selectall"))jexcel.current&&jexcel.current.selectAll();else if(e.target.classList.contains("jexcel_corner"))1==jexcel.current.options.editable&&(jexcel.current.selectedCorner=!0);else{if(1==o[1]){if(b=e.target.getAttribute("data-x")){var r=e.target.getBoundingClientRect();if(1==jexcel.current.options.columnResize&&r.width-e.offsetX<6){jexcel.current.resizing={mousePosition:e.pageX,column:b,width:r.width},jexcel.current.headers[b].classList.add("resizing");for(var n=0;n"==e.target.innerText?jexcel.current.page(e.target.getAttribute("title")-1):jexcel.current.page(e.target.innerText-1))}jexcel.current.edition?jexcel.isMouseAction=!1:jexcel.isMouseAction=!0}else jexcel.isMouseAction=!1},jexcel.mouseUpControls=function(e){if(jexcel.current)if(jexcel.current.resizing){if(jexcel.current.resizing.column){jexcel.current.headers[jexcel.current.resizing.column].classList.remove("resizing");var t=jexcel.current.colgroup[jexcel.current.resizing.column].getAttribute("width");jexcel.current.setWidth(jexcel.current.resizing.column,t,jexcel.current.resizing.width),jexcel.current.headers[jexcel.current.resizing.column].classList.remove("resizing");for(var o=0;o0&&(jexcel.current.copyData(jexcel.current.selection[0],jexcel.current.selection[jexcel.current.selection.length-1]),jexcel.current.removeCopySelection()));jexcel.timeControl&&(clearTimeout(jexcel.timeControl),jexcel.timeControl=null),jexcel.isMouseAction=!1},jexcel.mouseMoveControls=function(e){if((e=e||window.event).buttons)var t=e.buttons;else t=e.button?e.button:e.which;if(t||(jexcel.isMouseAction=!1),jexcel.current)if(1==jexcel.isMouseAction){if(jexcel.current.resizing)if(jexcel.current.resizing.column){var o=e.pageX-jexcel.current.resizing.mousePosition;if(jexcel.current.resizing.width+o>0){var r=jexcel.current.resizing.width+o;jexcel.current.colgroup[jexcel.current.resizing.column].setAttribute("width",r),jexcel.current.updateCornerPosition()}}else{var n=e.pageY-jexcel.current.resizing.mousePosition;if(jexcel.current.resizing.height+n>0){var i=jexcel.current.resizing.height+n;jexcel.current.rows[jexcel.current.resizing.row].setAttribute("height",i),jexcel.current.updateCornerPosition()}}}else{var s=e.target.getAttribute("data-x"),l=e.target.getAttribute("data-y"),a=e.target.getBoundingClientRect();jexcel.current.cursor&&(jexcel.current.cursor.style.cursor="",jexcel.current.cursor=null),e.target.parentNode.parentNode&&e.target.parentNode.parentNode.className&&(e.target.parentNode.parentNode.classList.contains("resizable")&&(e.target&&s&&!l&&a.width-(e.clientX-a.left)<6?(jexcel.current.cursor=e.target,jexcel.current.cursor.style.cursor="col-resize"):e.target&&!s&&l&&a.height-(e.clientY-a.top)<6&&(jexcel.current.cursor=e.target,jexcel.current.cursor.style.cursor="row-resize")),e.target.parentNode.parentNode.classList.contains("draggable")&&(e.target&&!s&&l&&a.width-(e.clientX-a.left)<6||e.target&&s&&!l&&a.height-(e.clientY-a.top)<6)&&(jexcel.current.cursor=e.target,jexcel.current.cursor.style.cursor="move"))}},jexcel.mouseOverControls=function(e){if((e=e||window.event).buttons)var t=e.buttons;else t=e.button?e.button:e.which;if(t||(jexcel.isMouseAction=!1),jexcel.current&&1==jexcel.isMouseAction){var o=jexcel.getElement(e.target);if(o[0]){if(jexcel.current!=o[0].jexcel&&jexcel.current)return!1;var r=e.target.getAttribute("data-x"),n=e.target.getAttribute("data-y");if(jexcel.current.dragging){if(jexcel.current.dragging.column){if(r)if(jexcel.current.isColMerged(r).length)console.error("JEXCEL: This column is part of a merged cell.");else{for(var i=0;ie.offsetX?(jexcel.current.dragging.columne.offsetY?e.target.parentNode.nextSibling:e.target.parentNode;e.target.parentNode.parentNode.insertBefore(jexcel.current.dragging.element,s)}}else if(jexcel.current.resizing);else{if(1==o[1]&&jexcel.current.selectedHeader){r=e.target.getAttribute("data-x");var l=jexcel.current.selectedHeader,a=r;jexcel.current.updateSelectionFromCoords(l,0,a,jexcel.current.options.data.length-1)}2==o[1]&&(e.target.classList.contains("jexcel_row")?jexcel.current.selectedRow&&(l=jexcel.current.selectedRow,a=n,jexcel.current.updateSelectionFromCoords(0,l,jexcel.current.options.data[0].length-1,a)):jexcel.current.edition||r&&n&&(jexcel.current.selectedCorner?jexcel.current.updateCopySelection(r,n):jexcel.current.selectedCell&&jexcel.current.updateSelectionFromCoords(jexcel.current.selectedCell[0],jexcel.current.selectedCell[1],r,n)))}}}jexcel.timeControl&&(clearTimeout(jexcel.timeControl),jexcel.timeControl=null)},jexcel.doubleClickControls=function(e){if(jexcel.current)if(e.target.classList.contains("jexcel_corner")){if(jexcel.current.highlighted.length>0){var t=jexcel.current.highlighted[0].getAttribute("data-x"),o=parseInt(jexcel.current.highlighted[jexcel.current.highlighted.length-1].getAttribute("data-y"))+1,r=jexcel.current.highlighted[jexcel.current.highlighted.length-1].getAttribute("data-x"),n=jexcel.current.records.length-1;jexcel.current.copyData(jexcel.current.records[o][t],jexcel.current.records[n][r])}}else{var i=jexcel.getElement(e.target);if(1==i[1]&&1==jexcel.current.options.columnSorting){var s=e.target.getAttribute("data-x");s&&jexcel.current.orderBy(s)}if(2==i[1]&&1==jexcel.current.options.editable&&!jexcel.current.edition){var l=function(e){if(e.parentNode){var t=e.getAttribute("data-x"),o=e.getAttribute("data-y");return t&&o?e:l(e.parentNode)}},a=l(e.target);a&&a.classList.contains("highlight")&&jexcel.current.openEditor(a)}}},jexcel.copyControls=function(e){jexcel.current&&jexcel.copyControls.enabled&&(jexcel.current.edition||jexcel.current.copy(!0))},jexcel.cutControls=function(e){jexcel.current&&(jexcel.current.edition||(jexcel.current.copy(!0),1==jexcel.current.options.editable&&jexcel.current.setValue(jexcel.current.highlighted,"")))},jexcel.pasteControls=function(e){jexcel.current&&jexcel.current.selectedCell&&(jexcel.current.edition||1==jexcel.current.options.editable&&(e&&e.clipboardData?(jexcel.current.paste(jexcel.current.selectedCell[0],jexcel.current.selectedCell[1],e.clipboardData.getData("text")),e.preventDefault()):window.clipboardData&&jexcel.current.paste(jexcel.current.selectedCell[0],jexcel.current.selectedCell[1],window.clipboardData.getData("text"))))},jexcel.contextMenuControls=function(e){if("buttons"in(e=e||window.event)?e.buttons:e.which||e.button,jexcel.current)if(jexcel.current.edition)e.preventDefault();else if(jexcel.current.options.contextMenu&&(jexcel.current.contextMenu.contextmenu.close(),jexcel.current)){var t=e.target.getAttribute("data-x"),o=e.target.getAttribute("data-y");if(t||o){var r=jexcel.current.options.contextMenu(jexcel.current,t,o,e);jexcel.current.contextMenu.contextmenu.open(e,r),e.preventDefault()}}},jexcel.touchStartControls=function(e){var t=jexcel.getElement(e.target);if(t[0]?jexcel.current!=t[0].jexcel&&(jexcel.current&&jexcel.current.resetSelection(),jexcel.current=t[0].jexcel):jexcel.current&&(jexcel.current.resetSelection(),jexcel.current=null),jexcel.current&&!jexcel.current.edition){var o=e.target.getAttribute("data-x"),r=e.target.getAttribute("data-y");o&&r&&(jexcel.current.updateSelectionFromCoords(o,r),jexcel.timeControl=setTimeout((function(){"color"==jexcel.current.options.columns[o].type?jexcel.tmpElement=null:jexcel.tmpElement=e.target,jexcel.current.openEditor(e.target,!1,e)}),500))}},jexcel.touchEndControls=function(e){jexcel.timeControl&&(clearTimeout(jexcel.timeControl),jexcel.timeControl=null,jexcel.tmpElement&&"INPUT"==jexcel.tmpElement.children[0].tagName&&jexcel.tmpElement.children[0].focus(),jexcel.tmpElement=null)},jexcel.createTabs=function(e,t){e.innerHTML="",e.classList.add("jexcel_tabs");for(var o=[],r=[],n=0;n0)for(r.mergeCells=[],n=0;n0&&(r.style[p[n]]=b.style),b.s&&b.s.fgColor&&(r.style[p[n]]&&(r.style[p[n]]+=";"),r.style[p[n]]+="background-color:#"+b.s.fgColor.rgb)}for(var m=r.columns,j=0;j<=d;j++)for(n=0;n<=c;n++)r.data[j]||(r.data[j]=[]),r.data[j][n]||m701?(t+=String.fromCharCode(64+parseInt(e/676)),t+=String.fromCharCode(64+parseInt(e%676/26))):e>25&&(t+=String.fromCharCode(64+parseInt(e/26))),t+String.fromCharCode(65+e%26)},jexcel.getIdFromColumnName=function(e,t){var o=/^[a-zA-Z]+/.exec(e);if(o){for(var r=0,n=0;n0&&i--,e=1==t?[r,i]:r+"-"+i}return e},jexcel.getColumnNameFromId=function(e){return Array.isArray(e)||(e=e.split("-")),jexcel.getColumnName(parseInt(e[0]))+(parseInt(e[1])+1)},jexcel.getElement=function(e){var t=0,o=0;return function e(r){r.className&&r.classList.contains("jexcel_container")&&(o=r),"THEAD"==r.tagName?t=1:"TBODY"==r.tagName&&(t=2),r.parentNode&&e(r.parentNode)}(e),[o,t]},jexcel.doubleDigitFormat=function(e){return 1==(e=""+e).length&&(e="0"+e),e},"undefined"!=typeof jQuery&&function(e){e.fn.jexcel=function(t){var o=e(this).get(0);return o.jexcel?o.jexcel[t].apply(this,Array.prototype.slice.call(arguments,1)):jexcel(e(this).get(0),arguments[0])}}(jQuery);var error=(exports={},exports.nil=new Error("#NULL!"),exports.div0=new Error("#DIV/0!"),exports.value=new Error("#VALUE!"),exports.ref=new Error("#REF!"),exports.name=new Error("#NAME?"),exports.num=new Error("#NUM!"),exports.na=new Error("#N/A"),exports.error=new Error("#ERROR!"),exports.data=new Error("#GETTING_DATA"),exports),exports,utils=function(){var e={flattenShallow:function(e){return e&&e.reduce?e.reduce((function(e,t){var o=Array.isArray(e),r=Array.isArray(t);return o&&r?e.concat(t):o?(e.push(t),e):r?[e].concat(t):[e,t]})):e},isFlat:function(e){if(!e)return!1;for(var t=0;t-22038912e5?2:1)}return e.DATE=function(e,t,o){return e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:e<0||t<0||o<0?error.num:new Date(e,t-1,o)},e.DATEVALUE=function(e){if("string"!=typeof e)return error.value;var o=Date.parse(e);return isNaN(o)?error.value:o<=-22038912e5?(o-t)/864e5+1:(o-t)/864e5+2},e.DAY=function(e){var t=utils.parseDate(e);return t instanceof Error?t:t.getDate()},e.DAYS=function(e,t){return e=utils.parseDate(e),t=utils.parseDate(t),e instanceof Error?e:t instanceof Error?t:r(e)-r(t)},e.DAYS360=function(e,t,o){},e.EDATE=function(e,t){return(e=utils.parseDate(e))instanceof Error?e:isNaN(t)?error.value:(t=parseInt(t,10),e.setMonth(e.getMonth()+t),r(e))},e.EOMONTH=function(e,t){return(e=utils.parseDate(e))instanceof Error?e:isNaN(t)?error.value:(t=parseInt(t,10),r(new Date(e.getFullYear(),e.getMonth()+t+1,0)))},e.HOUR=function(e){return(e=utils.parseDate(e))instanceof Error?e:e.getHours()},e.INTERVAL=function(e){if("number"!=typeof e&&"string"!=typeof e)return error.value;e=parseInt(e,10);var t=Math.floor(e/94608e4);e%=94608e4;var o=Math.floor(e/2592e3);e%=2592e3;var r=Math.floor(e/86400);e%=86400;var n=Math.floor(e/3600);e%=3600;var i=Math.floor(e/60),s=e%=60;return"P"+(t=t>0?t+"Y":"")+(o=o>0?o+"M":"")+(r=r>0?r+"D":"")+"T"+(n=n>0?n+"H":"")+(i=i>0?i+"M":"")+(s>0?s+"S":"")},e.ISOWEEKNUM=function(e){if((e=utils.parseDate(e))instanceof Error)return e;e.setHours(0,0,0),e.setDate(e.getDate()+4-(e.getDay()||7));var t=new Date(e.getFullYear(),0,1);return Math.ceil(((e-t)/864e5+1)/7)},e.MINUTE=function(e){return(e=utils.parseDate(e))instanceof Error?e:e.getMinutes()},e.MONTH=function(e){return(e=utils.parseDate(e))instanceof Error?e:e.getMonth()+1},e.NETWORKDAYS=function(e,t,o){},e.NETWORKDAYS.INTL=function(e,t,o,r){},e.NOW=function(){return new Date},e.SECOND=function(e){return(e=utils.parseDate(e))instanceof Error?e:e.getSeconds()},e.TIME=function(e,t,o){return e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:e<0||t<0||o<0?error.num:(3600*e+60*t+o)/86400},e.TIMEVALUE=function(e){return(e=utils.parseDate(e))instanceof Error?e:(3600*e.getHours()+60*e.getMinutes()+e.getSeconds())/86400},e.TODAY=function(){return new Date},e.WEEKDAY=function(e,t){if((e=utils.parseDate(e))instanceof Error)return e;void 0===t&&(t=1);var r=e.getDay();return o[t][r]},e.WEEKNUM=function(e,t){},e.WORKDAY=function(e,t,o){},e.WORKDAY.INTL=function(e,t,o,r){},e.YEAR=function(e){return(e=utils.parseDate(e))instanceof Error?e:e.getFullYear()},e.YEARFRAC=function(e,t,o){},e}(),jexcel.methods.database=function(){var exports={};function compact(e){if(!e)return e;for(var t=[],o=0;omaxCriteriaLength&&(maxCriteriaLength=criterias[i].length);for(var k=1;k1?error.num:n[r[0]]},exports.DMAX=function(e,t,o){if(isNaN(t)&&"string"!=typeof t)return error.value;var r=findResultIndex(e,o),n=[];if("string"==typeof t){var i=exports.FINDFIELD(e,t);n=utils.rest(e[i])}else n=utils.rest(e[t]);for(var s=n[r[0]],l=1;ln[r[l]]&&(s=n[r[l]]);return s},exports.DPRODUCT=function(e,t,o){if(isNaN(t)&&"string"!=typeof t)return error.value;var r=findResultIndex(e,o),n=[];if("string"==typeof t){var i=exports.FINDFIELD(e,t);n=utils.rest(e[i])}else n=utils.rest(e[t]);for(var s=[],l=0;ln&&(r=i+1,n=t[i]):(r=i+1,n=t[i]))}else if(0===o){if("string"==typeof e){if(e=e.replace(/\?/g,"."),t[i].toLowerCase().match(e.toLowerCase()))return i+1}else if(t[i]===e)return i+1}else if(-1===o){if(t[i]===e)return i+1;t[i]>e&&(n?t[i]=n.length?REPT("0",o-n.length)+n:error.num},e.BIN2OCT=function(e,o){if(!t(e))return error.num;var r=e.toString();if(10===r.length&&"1"===r.substring(0,1))return(1073741312+parseInt(r.substring(1),2)).toString(8);var n=parseInt(e,2).toString(8);return void 0===o?n:isNaN(o)?error.value:o<0?error.num:(o=Math.floor(o))>=n.length?REPT("0",o-n.length)+n:error.num},e.BITAND=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?error.num:e&t},e.BITLSHIFT=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?error.num:t>=0?e<>-t},e.BITOR=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?error.num:e|t},e.BITRSHIFT=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<0||Math.floor(e)!==e||e>0xffffffffffff||Math.abs(t)>53?error.num:t>=0?e>>t:e<<-t},e.BITXOR=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<0||t<0||Math.floor(e)!==e||Math.floor(t)!==t||e>0xffffffffffff||t>0xffffffffffff?error.num:e^t},e.COMPLEX=function(e,t,o){if(e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t))return e;if("i"!==(o=void 0===o?"i":o)&&"j"!==o)return error.value;if(0===e&&0===t)return 0;if(0===e)return 1===t?o:t.toString()+o;if(0===t)return e.toString();var r=t>0?"+":"";return e.toString()+r+(1===t?o:t.toString()+o)},e.CONVERT=function(e,t,o){if((e=utils.parseNumber(e))instanceof Error)return e;for(var r,n=[["a.u. of action","?",null,"action",!1,!1,105457168181818e-48],["a.u. of charge","e",null,"electric_charge",!1,!1,160217653141414e-33],["a.u. of energy","Eh",null,"energy",!1,!1,435974417757576e-32],["a.u. of length","a?",null,"length",!1,!1,529177210818182e-25],["a.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["a.u. of time","?/Eh",null,"time",!1,!1,241888432650516e-31],["admiralty knot","admkn",null,"speed",!1,!0,.514773333],["ampere","A",null,"electric_current",!0,!1,1],["ampere per meter","A/m",null,"magnetic_field_intensity",!0,!1,1],["ångström","Å",["ang"],"length",!1,!0,1e-10],["are","ar",null,"area",!1,!0,100],["astronomical unit","ua",null,"length",!1,!1,149597870691667e-25],["bar","bar",null,"pressure",!1,!1,1e5],["barn","b",null,"area",!1,!1,1e-28],["becquerel","Bq",null,"radioactivity",!0,!1,1],["bit","bit",["b"],"information",!1,!0,1],["btu","BTU",["btu"],"energy",!1,!0,1055.05585262],["byte","byte",null,"information",!1,!0,8],["candela","cd",null,"luminous_intensity",!0,!1,1],["candela per square metre","cd/m?",null,"luminance",!0,!1,1],["coulomb","C",null,"electric_charge",!0,!1,1],["cubic ångström","ang3",["ang^3"],"volume",!1,!0,1e-30],["cubic foot","ft3",["ft^3"],"volume",!1,!0,.028316846592],["cubic inch","in3",["in^3"],"volume",!1,!0,16387064e-12],["cubic light-year","ly3",["ly^3"],"volume",!1,!0,846786664623715e-61],["cubic metre","m?",null,"volume",!0,!0,1],["cubic mile","mi3",["mi^3"],"volume",!1,!0,4168181825.44058],["cubic nautical mile","Nmi3",["Nmi^3"],"volume",!1,!0,6352182208],["cubic Pica","Pica3",["Picapt3","Pica^3","Picapt^3"],"volume",!1,!0,7.58660370370369e-8],["cubic yard","yd3",["yd^3"],"volume",!1,!0,.764554857984],["cup","cup",null,"volume",!1,!0,.0002365882365],["dalton","Da",["u"],"mass",!1,!1,166053886282828e-41],["day","d",["day"],"time",!1,!0,86400],["degree","°",null,"angle",!1,!1,.0174532925199433],["degrees Rankine","Rank",null,"temperature",!1,!0,.555555555555556],["dyne","dyn",["dy"],"force",!1,!0,1e-5],["electronvolt","eV",["ev"],"energy",!1,!0,1.60217656514141],["ell","ell",null,"length",!1,!0,1.143],["erg","erg",["e"],"energy",!1,!0,1e-7],["farad","F",null,"electric_capacitance",!0,!1,1],["fluid ounce","oz",null,"volume",!1,!0,295735295625e-16],["foot","ft",null,"length",!1,!0,.3048],["foot-pound","flb",null,"energy",!1,!0,1.3558179483314],["gal","Gal",null,"acceleration",!1,!1,.01],["gallon","gal",null,"volume",!1,!0,.003785411784],["gauss","G",["ga"],"magnetic_flux_density",!1,!0,1],["grain","grain",null,"mass",!1,!0,647989e-10],["gram","g",null,"mass",!1,!0,.001],["gray","Gy",null,"absorbed_dose",!0,!1,1],["gross registered ton","GRT",["regton"],"volume",!1,!0,2.8316846592],["hectare","ha",null,"area",!1,!0,1e4],["henry","H",null,"inductance",!0,!1,1],["hertz","Hz",null,"frequency",!0,!1,1],["horsepower","HP",["h"],"power",!1,!0,745.69987158227],["horsepower-hour","HPh",["hh","hph"],"energy",!1,!0,2684519.538],["hour","h",["hr"],"time",!1,!0,3600],["imperial gallon (U.K.)","uk_gal",null,"volume",!1,!0,.00454609],["imperial hundredweight","lcwt",["uk_cwt","hweight"],"mass",!1,!0,50.802345],["imperial quart (U.K)","uk_qt",null,"volume",!1,!0,.0011365225],["imperial ton","brton",["uk_ton","LTON"],"mass",!1,!0,1016.046909],["inch","in",null,"length",!1,!0,.0254],["international acre","uk_acre",null,"area",!1,!0,4046.8564224],["IT calorie","cal",null,"energy",!1,!0,4.1868],["joule","J",null,"energy",!0,!0,1],["katal","kat",null,"catalytic_activity",!0,!1,1],["kelvin","K",["kel"],"temperature",!0,!0,1],["kilogram","kg",null,"mass",!0,!0,1],["knot","kn",null,"speed",!1,!0,.514444444444444],["light-year","ly",null,"length",!1,!0,9460730472580800],["litre","L",["l","lt"],"volume",!1,!0,.001],["lumen","lm",null,"luminous_flux",!0,!1,1],["lux","lx",null,"illuminance",!0,!1,1],["maxwell","Mx",null,"magnetic_flux",!1,!1,1e-18],["measurement ton","MTON",null,"volume",!1,!0,1.13267386368],["meter per hour","m/h",["m/hr"],"speed",!1,!0,.00027777777777778],["meter per second","m/s",["m/sec"],"speed",!0,!0,1],["meter per second squared","m?s??",null,"acceleration",!0,!1,1],["parsec","pc",["parsec"],"length",!1,!0,0x6da012f958ee1c],["meter squared per second","m?/s",null,"kinematic_viscosity",!0,!1,1],["metre","m",null,"length",!0,!0,1],["miles per hour","mph",null,"speed",!1,!0,.44704],["millimetre of mercury","mmHg",null,"pressure",!1,!1,133.322],["minute","?",null,"angle",!1,!1,.000290888208665722],["minute","min",["mn"],"time",!1,!0,60],["modern teaspoon","tspm",null,"volume",!1,!0,5e-6],["mole","mol",null,"amount_of_substance",!0,!1,1],["morgen","Morgen",null,"area",!1,!0,2500],["n.u. of action","?",null,"action",!1,!1,105457168181818e-48],["n.u. of mass","m?",null,"mass",!1,!1,910938261616162e-45],["n.u. of speed","c?",null,"speed",!1,!1,299792458],["n.u. of time","?/(me?c??)",null,"time",!1,!1,128808866778687e-35],["nautical mile","M",["Nmi"],"length",!1,!0,1852],["newton","N",null,"force",!0,!0,1],["œrsted","Oe ",null,"magnetic_field_intensity",!1,!1,79.5774715459477],["ohm","Ω",null,"electric_resistance",!0,!1,1],["ounce mass","ozm",null,"mass",!1,!0,.028349523125],["pascal","Pa",null,"pressure",!0,!1,1],["pascal second","Pa?s",null,"dynamic_viscosity",!0,!1,1],["pferdestärke","PS",null,"power",!1,!0,735.49875],["phot","ph",null,"illuminance",!1,!1,1e-4],["pica (1/6 inch)","pica",null,"length",!1,!0,.00035277777777778],["pica (1/72 inch)","Pica",["Picapt"],"length",!1,!0,.00423333333333333],["poise","P",null,"dynamic_viscosity",!1,!1,.1],["pond","pond",null,"force",!1,!0,.00980665],["pound force","lbf",null,"force",!1,!0,4.4482216152605],["pound mass","lbm",null,"mass",!1,!0,.45359237],["quart","qt",null,"volume",!1,!0,.000946352946],["radian","rad",null,"angle",!0,!1,1],["second","?",null,"angle",!1,!1,484813681109536e-20],["second","s",["sec"],"time",!0,!0,1],["short hundredweight","cwt",["shweight"],"mass",!1,!0,45.359237],["siemens","S",null,"electrical_conductance",!0,!1,1],["sievert","Sv",null,"equivalent_dose",!0,!1,1],["slug","sg",null,"mass",!1,!0,14.59390294],["square ångström","ang2",["ang^2"],"area",!1,!0,1e-20],["square foot","ft2",["ft^2"],"area",!1,!0,.09290304],["square inch","in2",["in^2"],"area",!1,!0,64516e-8],["square light-year","ly2",["ly^2"],"area",!1,!0,895054210748189e17],["square meter","m?",null,"area",!0,!0,1],["square mile","mi2",["mi^2"],"area",!1,!0,2589988.110336],["square nautical mile","Nmi2",["Nmi^2"],"area",!1,!0,3429904],["square Pica","Pica2",["Picapt2","Pica^2","Picapt^2"],"area",!1,!0,1792111111111e-17],["square yard","yd2",["yd^2"],"area",!1,!0,.83612736],["statute mile","mi",null,"length",!1,!0,1609.344],["steradian","sr",null,"solid_angle",!0,!1,1],["stilb","sb",null,"luminance",!1,!1,1e-4],["stokes","St",null,"kinematic_viscosity",!1,!1,1e-4],["stone","stone",null,"mass",!1,!0,6.35029318],["tablespoon","tbs",null,"volume",!1,!0,147868e-10],["teaspoon","tsp",null,"volume",!1,!0,492892e-11],["tesla","T",null,"magnetic_flux_density",!0,!0,1],["thermodynamic calorie","c",null,"energy",!1,!0,4.184],["ton","ton",null,"mass",!1,!0,907.18474],["tonne","t",null,"mass",!1,!1,1e3],["U.K. pint","uk_pt",null,"volume",!1,!0,.00056826125],["U.S. bushel","bushel",null,"volume",!1,!0,.03523907],["U.S. oil barrel","barrel",null,"volume",!1,!0,.158987295],["U.S. pint","pt",["us_pt"],"volume",!1,!0,.000473176473],["U.S. survey mile","survey_mi",null,"length",!1,!0,1609.347219],["U.S. survey/statute acre","us_acre",null,"area",!1,!0,4046.87261],["volt","V",null,"voltage",!0,!1,1],["watt","W",null,"power",!0,!0,1],["watt-hour","Wh",["wh"],"energy",!1,!0,3600],["weber","Wb",null,"magnetic_flux",!0,!1,1],["yard","yd",null,"length",!1,!0,.9144],["year","yr",null,"time",!1,!0,31557600]],i={Yi:["yobi",80,12089258196146292e8,"Yi","yotta"],Zi:["zebi",70,11805916207174113e5,"Zi","zetta"],Ei:["exbi",60,0x1000000000000000,"Ei","exa"],Pi:["pebi",50,0x4000000000000,"Pi","peta"],Ti:["tebi",40,1099511627776,"Ti","tera"],Gi:["gibi",30,1073741824,"Gi","giga"],Mi:["mebi",20,1048576,"Mi","mega"],ki:["kibi",10,1024,"ki","kilo"]},s={Y:["yotta",1e24,"Y"],Z:["zetta",1e21,"Z"],E:["exa",1e18,"E"],P:["peta",1e15,"P"],T:["tera",1e12,"T"],G:["giga",1e9,"G"],M:["mega",1e6,"M"],k:["kilo",1e3,"k"],h:["hecto",100,"h"],e:["dekao",10,"e"],d:["deci",.1,"d"],c:["centi",.01,"c"],m:["milli",.001,"m"],u:["micro",1e-6,"u"],n:["nano",1e-9,"n"],p:["pico",1e-12,"p"],f:["femto",1e-15,"f"],a:["atto",1e-18,"a"],z:["zepto",1e-21,"z"],y:["yocto",1e-24,"y"]},l=null,a=null,u=t,c=o,d=1,p=1,b=0;b=0)&&(l=n[b]),(n[b][1]===c||r.indexOf(c)>=0)&&(a=n[b]);if(null===l){var f=i[t.substring(0,2)],m=s[t.substring(0,1)];"da"===t.substring(0,2)&&(m=["dekao",10,"da"]),f?(d=f[2],u=t.substring(2)):m&&(d=m[1],u=t.substring(m[2].length));for(var j=0;j=0)&&(l=n[j])}if(null===a){var h=i[o.substring(0,2)],g=s[o.substring(0,1)];"da"===o.substring(0,2)&&(g=["dekao",10,"da"]),h?(p=h[2],c=o.substring(2)):g&&(p=g[1],c=o.substring(g[2].length));for(var v=0;v=0)&&(a=n[v])}return null===l||null===a||l[3]!==a[3]?error.na:e*l[6]*d/(a[6]*p)},e.DEC2BIN=function(e,t){if((e=utils.parseNumber(e))instanceof Error)return e;if(!/^-?[0-9]{1,3}$/.test(e)||e<-512||e>511)return error.num;if(e<0)return"1"+REPT("0",9-(512+e).toString(2).length)+(512+e).toString(2);var o=parseInt(e,10).toString(2);return void 0===t?o:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=o.length?REPT("0",t-o.length)+o:error.num},e.DEC2HEX=function(e,t){if((e=utils.parseNumber(e))instanceof Error)return e;if(!/^-?[0-9]{1,12}$/.test(e)||e<-549755813888||e>549755813887)return error.num;if(e<0)return(1099511627776+e).toString(16);var o=parseInt(e,10).toString(16);return void 0===t?o:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=o.length?REPT("0",t-o.length)+o:error.num},e.DEC2OCT=function(e,t){if((e=utils.parseNumber(e))instanceof Error)return e;if(!/^-?[0-9]{1,9}$/.test(e)||e<-536870912||e>536870911)return error.num;if(e<0)return(1073741824+e).toString(8);var o=parseInt(e,10).toString(8);return void 0===t?o:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=o.length?REPT("0",t-o.length)+o:error.num},e.DELTA=function(e,t){return t=void 0===t?0:t,e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e===t?1:0},e.ERF=function(e,t){},e.ERF.PRECISE=function(){},e.ERFC=function(e){},e.ERFC.PRECISE=function(){},e.GESTEP=function(e,t){return t=t||0,e=utils.parseNumber(e),utils.anyIsError(t,e)?e:e>=t?1:0},e.HEX2BIN=function(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return error.num;var o=10===e.length&&"f"===e.substring(0,1).toLowerCase(),r=o?parseInt(e,16)-1099511627776:parseInt(e,16);if(r<-512||r>511)return error.num;if(o)return"1"+REPT("0",9-(512+r).toString(2).length)+(512+r).toString(2);var n=r.toString(2);return void 0===t?n:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=n.length?REPT("0",t-n.length)+n:error.num},e.HEX2DEC=function(e){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return error.num;var t=parseInt(e,16);return t>=549755813888?t-1099511627776:t},e.HEX2OCT=function(e,t){if(!/^[0-9A-Fa-f]{1,10}$/.test(e))return error.num;var o=parseInt(e,16);if(o>536870911&&o<0xffe0000000)return error.num;if(o>=0xffe0000000)return(o-0xffc0000000).toString(8);var r=o.toString(8);return void 0===t?r:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=r.length?REPT("0",t-r.length)+r:error.num},e.IMABS=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.value:Math.sqrt(Math.pow(o,2)+Math.pow(r,2))},e.IMAGINARY=function(e){if(void 0===e||!0===e||!1===e)return error.value;if(0===e||"0"===e)return 0;if(["i","j"].indexOf(e)>=0)return 1;var t=(e=e.replace("+i","+1i").replace("-i","-1i").replace("+j","+1j").replace("-j","-1j")).indexOf("+"),o=e.indexOf("-");0===t&&(t=e.indexOf("+",1)),0===o&&(o=e.indexOf("-",1));var r=e.substring(e.length-1,e.length),n="i"===r||"j"===r;return t>=0||o>=0?n?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?error.num:Number(e.substring(t+1,e.length-1)):isNaN(e.substring(0,o))||isNaN(e.substring(o+1,e.length-1))?error.num:-Number(e.substring(o+1,e.length-1)):error.num:n?isNaN(e.substring(0,e.length-1))?error.num:e.substring(0,e.length-1):isNaN(e)?error.num:0},e.IMARGUMENT=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.value:0===o&&0===r?error.div0:0===o&&r>0?Math.PI/2:0===o&&r<0?-Math.PI/2:0===r&&o>0?0:0===r&&o<0?-Math.PI:o>0?Math.atan(r/o):o<0&&r>=0?Math.atan(r/o)+Math.PI:Math.atan(r/o)-Math.PI},e.IMCONJUGATE=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",0!==r?e.COMPLEX(o,-r,n):t},e.IMCOS=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.cos(o)*(Math.exp(r)+Math.exp(-r))/2,-Math.sin(o)*(Math.exp(r)-Math.exp(-r))/2,n)},e.IMCOSH=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.cos(r)*(Math.exp(o)+Math.exp(-o))/2,Math.sin(r)*(Math.exp(o)-Math.exp(-o))/2,n)},e.IMCOT=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.value:e.IMDIV(e.IMCOS(t),e.IMSIN(t))},e.IMDIV=function(t,o){var r=e.IMREAL(t),n=e.IMAGINARY(t),i=e.IMREAL(o),s=e.IMAGINARY(o);if(utils.anyIsError(r,n,i,s))return error.value;var l=t.substring(t.length-1),a=o.substring(o.length-1),u="i";if(("j"===l||"j"===a)&&(u="j"),0===i&&0===s)return error.num;var c=i*i+s*s;return e.COMPLEX((r*i+n*s)/c,(n*i-r*s)/c,u)},e.IMEXP=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);n="i"===n||"j"===n?n:"i";var i=Math.exp(o);return e.COMPLEX(i*Math.cos(r),i*Math.sin(r),n)},e.IMLN=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.log(Math.sqrt(o*o+r*r)),Math.atan(r/o),n)},e.IMLOG10=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.log(Math.sqrt(o*o+r*r))/Math.log(10),Math.atan(r/o)/Math.log(10),n)},e.IMLOG2=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.log(Math.sqrt(o*o+r*r))/Math.log(2),Math.atan(r/o)/Math.log(2),n)},e.IMPOWER=function(t,o){o=utils.parseNumber(o);var r=e.IMREAL(t),n=e.IMAGINARY(t);if(utils.anyIsError(o,r,n))return error.value;var i=t.substring(t.length-1);i="i"===i||"j"===i?i:"i";var s=Math.pow(e.IMABS(t),o),l=e.IMARGUMENT(t);return e.COMPLEX(s*Math.cos(o*l),s*Math.sin(o*l),i)},e.IMPRODUCT=function(){for(var t=arguments[0],o=1;o=0)return 0;var t=e.indexOf("+"),o=e.indexOf("-");0===t&&(t=e.indexOf("+",1)),0===o&&(o=e.indexOf("-",1));var r=e.substring(e.length-1,e.length),n="i"===r||"j"===r;return t>=0||o>=0?n?t>=0?isNaN(e.substring(0,t))||isNaN(e.substring(t+1,e.length-1))?error.num:Number(e.substring(0,t)):isNaN(e.substring(0,o))||isNaN(e.substring(o+1,e.length-1))?error.num:Number(e.substring(0,o)):error.num:n?isNaN(e.substring(0,e.length-1))?error.num:0:isNaN(e)?error.num:e},e.IMSEC=function(t){if(!0===t||!1===t)return error.value;var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.value:e.IMDIV("1",e.IMCOS(t))},e.IMSECH=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.value:e.IMDIV("1",e.IMCOSH(t))},e.IMSIN=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.sin(o)*(Math.exp(r)+Math.exp(-r))/2,Math.cos(o)*(Math.exp(r)-Math.exp(-r))/2,n)},e.IMSINH=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);return n="i"===n||"j"===n?n:"i",e.COMPLEX(Math.cos(r)*(Math.exp(o)-Math.exp(-o))/2,Math.sin(r)*(Math.exp(o)+Math.exp(-o))/2,n)},e.IMSQRT=function(t){var o=e.IMREAL(t),r=e.IMAGINARY(t);if(utils.anyIsError(o,r))return error.value;var n=t.substring(t.length-1);n="i"===n||"j"===n?n:"i";var i=Math.sqrt(e.IMABS(t)),s=e.IMARGUMENT(t);return e.COMPLEX(i*Math.cos(s/2),i*Math.sin(s/2),n)},e.IMCSC=function(t){if(!0===t||!1===t)return error.value;var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.num:e.IMDIV("1",e.IMSIN(t))},e.IMCSCH=function(t){if(!0===t||!1===t)return error.value;var o=e.IMREAL(t),r=e.IMAGINARY(t);return utils.anyIsError(o,r)?error.num:e.IMDIV("1",e.IMSINH(t))},e.IMSUB=function(e,t){var o=this.IMREAL(e),r=this.IMAGINARY(e),n=this.IMREAL(t),i=this.IMAGINARY(t);if(utils.anyIsError(o,r,n,i))return error.value;var s=e.substring(e.length-1),l=t.substring(t.length-1),a="i";return("j"===s||"j"===l)&&(a="j"),this.COMPLEX(o-n,r-i,a)},e.IMSUM=function(){for(var e=utils.flatten(arguments),t=e[0],o=1;o511)return error.num;if(o)return"1"+REPT("0",9-(512+r).toString(2).length)+(512+r).toString(2);var n=r.toString(2);return void 0===t?n:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=n.length?REPT("0",t-n.length)+n:error.num},e.OCT2DEC=function(e){if(!/^[0-7]{1,10}$/.test(e))return error.num;var t=parseInt(e,8);return t>=536870912?t-1073741824:t},e.OCT2HEX=function(e,t){if(!/^[0-7]{1,10}$/.test(e))return error.num;var o=parseInt(e,8);if(o>=536870912)return"ff"+(o+3221225472).toString(16);var r=o.toString(16);return void 0===t?r:isNaN(t)?error.value:t<0?error.num:(t=Math.floor(t))>=r.length?REPT("0",t-r.length)+r:error.num},e}(),jexcel.methods.financial=function(){var e={};function t(e){return e&&e.getTime&&!isNaN(e.getTime())}function o(e){return e instanceof Date?e:new Date(e)}return e.ACCRINT=function(e,r,n,i,s,l,a){return e=o(e),r=o(r),n=o(n),t(e)&&t(r)&&t(n)?i<=0||s<=0||-1===[1,2,4].indexOf(l)||-1===[0,1,2,3,4].indexOf(a)||n<=e?"#NUM!":(a=a||0,(s=s||0)*i*YEARFRAC(e,n,a)):"#VALUE!"},e.ACCRINTM=null,e.AMORDEGRC=null,e.AMORLINC=null,e.COUPDAYBS=null,e.COUPDAYS=null,e.COUPDAYSNC=null,e.COUPNCD=null,e.COUPNUM=null,e.COUPPCD=null,e.CUMIPMT=function(t,o,r,n,i,s){if(t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),utils.anyIsError(t,o,r))return error.value;if(t<=0||o<=0||r<=0)return error.num;if(n<1||i<1||n>i)return error.num;if(0!==s&&1!==s)return error.num;var l=e.PMT(t,o,r,0,s),a=0;1===n&&0===s&&(a=-r,n++);for(var u=n;u<=i;u++)a+=1===s?e.FV(t,u-2,l,r,1)-l:e.FV(t,u-1,l,r,0);return a*t},e.CUMPRINC=function(t,o,r,n,i,s){if(t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),utils.anyIsError(t,o,r))return error.value;if(t<=0||o<=0||r<=0)return error.num;if(n<1||i<1||n>i)return error.num;if(0!==s&&1!==s)return error.num;var l=e.PMT(t,o,r,0,s),a=0;1===n&&(a=0===s?l+r*t:l,n++);for(var u=n;u<=i;u++)a+=s>0?l-(e.FV(t,u-2,l,r,1)-l)*t:l-e.FV(t,u-1,l,r,0)*t;return a},e.DB=function(e,t,o,r,n){if(n=void 0===n?12:n,e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),n=utils.parseNumber(n),utils.anyIsError(e,t,o,r,n))return error.value;if(e<0||t<0||o<0||r<0)return error.num;if(-1===[1,2,3,4,5,6,7,8,9,10,11,12].indexOf(n))return error.num;if(r>o)return error.num;if(t>=e)return 0;for(var i=(1-Math.pow(t/e,1/o)).toFixed(3),s=e*i*n/12,l=s,a=0,u=r===o?o-1:r,c=2;c<=u;c++)l+=a=(e-l)*i;return 1===r?s:r===o?(e-l)*i:a},e.DDB=function(e,t,o,r,n){if(n=void 0===n?2:n,e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),n=utils.parseNumber(n),utils.anyIsError(e,t,o,r,n))return error.value;if(e<0||t<0||o<0||r<0||n<=0)return error.num;if(r>o)return error.num;if(t>=e)return 0;for(var i=0,s=0,l=1;l<=r;l++)i+=s=Math.min(n/o*(e-i),e-t-i);return s},e.DISC=null,e.DOLLARDE=function(e,t){if(e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;if(t<0)return error.num;if(t>=0&&t<1)return error.div0;t=parseInt(t,10);var o=parseInt(e,10);o+=e%1*Math.pow(10,Math.ceil(Math.log(t)/Math.LN10))/t;var r=Math.pow(10,Math.ceil(Math.log(t)/Math.LN2)+1);return Math.round(o*r)/r},e.DOLLARFR=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:t<0?error.num:t>=0&&t<1?error.div0:(t=parseInt(t,10),parseInt(e,10)+e%1*Math.pow(10,-Math.ceil(Math.log(t)/Math.LN10))*t)},e.DURATION=null,e.EFFECT=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e<=0||t<1?error.num:(t=parseInt(t,10),Math.pow(1+e/t,t)-1)},e.FV=function(e,t,o,r,n){if(r=r||0,n=n||0,e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),n=utils.parseNumber(n),utils.anyIsError(e,t,o,r,n))return error.value;var i;if(0===e)i=r+o*t;else{var s=Math.pow(1+e,t);i=1===n?r*s+o*(1+e)*(s-1)/e:r*s+o*(s-1)/e}return-i},e.FVSCHEDULE=function(e,t){if(e=utils.parseNumber(e),t=utils.parseNumberArray(utils.flatten(t)),utils.anyIsError(e,t))return error.value;for(var o=t.length,r=e,n=0;n0&&(i=!0),e[l]<0&&(s=!0);if(!i||!s)return error.num;var a,u,c,d=t=void 0===t?.1:t,p=!0;do{a=d-(c=o(e,n,d))/r(e,n,d),u=Math.abs(a-d),d=a,p=u>1e-10&&Math.abs(c)>1e-10}while(p);return d},e.ISPMT=function(e,t,o,r){return e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumber(r),utils.anyIsError(e,t,o,r)?error.value:r*e*(t/o-1)},e.MDURATION=null,e.MIRR=function(t,o,r){if(t=utils.parseNumberArray(utils.flatten(t)),o=utils.parseNumber(o),r=utils.parseNumber(r),utils.anyIsError(t,o,r))return error.value;for(var n=t.length,i=[],s=[],l=0;lo?error.num:(e-t)*(o-(r=parseInt(r,10))+1)*2/(o*(o+1))},e.TBILLEQ=function(e,t,o){return e=utils.parseDate(e),t=utils.parseDate(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:o<=0||e>t||t-e>31536e6?error.num:365*o/(360-o*DAYS360(e,t,!1))},e.TBILLPRICE=function(e,t,o){return e=utils.parseDate(e),t=utils.parseDate(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:o<=0||e>t||t-e>31536e6?error.num:100*(1-o*DAYS360(e,t,!1)/360)},e.TBILLYIELD=function(e,t,o){return e=utils.parseDate(e),t=utils.parseDate(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:o<=0||e>t||t-e>31536e6?error.num:360*(100-o)/(o*DAYS360(e,t,!1))},e.VDB=null,e.XIRR=function(e,t,o){if(e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseDateArray(utils.flatten(t)),o=utils.parseNumber(o),utils.anyIsError(e,t,o))return error.value;for(var r=function(e,t,o){for(var r=o+1,n=e[0],i=1;i0&&(i=!0),e[l]<0&&(s=!0);if(!i||!s)return error.num;var a,u,c,d=o=o||.1,p=!0;do{a=d-(c=r(e,t,d))/n(e,t,d),u=Math.abs(a-d),d=a,p=u>1e-10&&Math.abs(c)>1e-10}while(p);return d},e.XNPV=function(e,t,o){if(e=utils.parseNumber(e),t=utils.parseNumberArray(utils.flatten(t)),o=utils.parseDateArray(utils.flatten(o)),utils.anyIsError(e,t,o))return error.value;for(var r=0,n=0;n=0||"number"==typeof e&&(isNaN(e)||!isFinite(e))},e.ISERROR=function(t){return e.ISERR(t)||t===error.na},e.ISEVEN=function(e){return!(1&Math.floor(Math.abs(e)))},e.ISFORMULA=null,e.ISLOGICAL=function(e){return!0===e||!1===e},e.ISNA=function(e){return e===error.na},e.ISNONTEXT=function(e){return"string"!=typeof e},e.ISNUMBER=function(e){return"number"==typeof e&&!isNaN(e)&&isFinite(e)},e.ISODD=function(e){return!!(1&Math.floor(Math.abs(e)))},e.ISREF=null,e.ISTEXT=function(e){return"string"==typeof e},e.N=function(e){return this.ISNUMBER(e)?e:e instanceof Date?e.getTime():!0===e?1:!1===e?0:this.ISERROR(e)?e:0},e.NA=function(){return error.na},e.SHEET=null,e.SHEETS=null,e.TYPE=function(e){return this.ISNUMBER(e)?1:this.ISTEXT(e)?2:this.ISLOGICAL(e)?4:this.ISERROR(e)?16:Array.isArray(e)?64:void 0},e}(),jexcel.methods.logical=function(){var e={AND:function(){for(var e=utils.flatten(arguments),t=!0,o=0;o254||arguments.length0){var t=arguments[0],o=arguments.length-1,r=Math.floor(o/2),n=!1,i=o%2==0?null:arguments[arguments.length-1];if(r)for(var s=0;s=0?Math.ceil(e/t)*t:0===o?-1*Math.floor(Math.abs(e)/t)*t:-1*Math.ceil(Math.abs(e)/t)*t)}};exports.CEILING.MATH=exports.CEILING,exports.CEILING.PRECISE=exports.CEILING,exports.COMBIN=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:exports.FACT(e)/(exports.FACT(t)*exports.FACT(e-t))},exports.COMBINA=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:0===e&&0===t?1:exports.COMBIN(e+t-1,e-1)},exports.COS=function(e){return(e=utils.parseNumber(e))instanceof Error?e:Math.cos(e)},exports.COSH=function(e){return(e=utils.parseNumber(e))instanceof Error?e:(Math.exp(e)+Math.exp(-e))/2},exports.COT=function(e){return(e=utils.parseNumber(e))instanceof Error?e:1/Math.tan(e)},exports.COTH=function(e){if((e=utils.parseNumber(e))instanceof Error)return e;var t=Math.exp(2*e);return(t+1)/(t-1)},exports.CSC=function(e){return(e=utils.parseNumber(e))instanceof Error?e:1/Math.sin(e)},exports.CSCH=function(e){return(e=utils.parseNumber(e))instanceof Error?e:2/(Math.exp(e)-Math.exp(-e))},exports.DECIMAL=function(e,t){return arguments.length<1?error.value:parseInt(e,t)},exports.DEGREES=function(e){return(e=utils.parseNumber(e))instanceof Error?e:180*e/Math.PI},exports.EVEN=function(e){return(e=utils.parseNumber(e))instanceof Error?e:exports.CEILING(e,-2,-1)},exports.EXP=Math.exp;var MEMOIZED_FACT=[];return exports.FACT=function(e){if((e=utils.parseNumber(e))instanceof Error)return e;var t=Math.floor(e);return 0===t||1===t?1:(MEMOIZED_FACT[t]>0||(MEMOIZED_FACT[t]=exports.FACT(t-1)*t),MEMOIZED_FACT[t])},exports.FACTDOUBLE=function(e){if((e=utils.parseNumber(e))instanceof Error)return e;var t=Math.floor(e);return t<=0?1:t*exports.FACTDOUBLE(t-2)},exports.FLOOR=function(e,t,o){return t=void 0===t?1:t,o=void 0===o?0:o,e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:0===t?0:(t=Math.abs(t),e>=0?Math.floor(e/t)*t:0===o?-1*Math.ceil(Math.abs(e)/t)*t:-1*Math.floor(Math.abs(e)/t)*t)},exports.FLOOR.MATH=exports.FLOOR,exports.GCD=null,exports.INT=function(e){return(e=utils.parseNumber(e))instanceof Error?e:Math.floor(e)},exports.LCM=function(){var e=utils.parseNumberArray(utils.flatten(arguments));if(e instanceof Error)return e;for(var t,o,r,n,i=1;void 0!==(r=e.pop());)for(;r>1;){if(r%2){for(t=3,o=Math.floor(Math.sqrt(r));t<=o&&r%t;t+=2);n=t<=o?t:r}else n=2;for(r/=n,i*=n,t=e.length;t;e[--t]%n==0&&1==(e[t]/=n)&&e.splice(t,1));}return i},exports.LN=function(e){return(e=utils.parseNumber(e))instanceof Error?e:Math.log(e)},exports.LOG=function(e,t){return e=utils.parseNumber(e),t=void 0===t?10:utils.parseNumber(t),utils.anyIsError(e,t)?error.value:Math.log(e)/Math.log(t)},exports.LOG10=function(e){return(e=utils.parseNumber(e))instanceof Error?e:Math.log(e)/Math.log(10)},exports.MDETERM=null,exports.MINVERSE=null,exports.MMULT=null,exports.MOD=function(e,t){if(e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;if(0===t)return error.div0;var o=Math.abs(e%t);return t>0?o:-o},exports.MROUND=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:e*t<0?error.num:Math.round(e/t)*t},exports.MULTINOMIAL=function(){var e=utils.parseNumberArray(utils.flatten(arguments));if(e instanceof Error)return e;for(var t=0,o=1,r=0;r0?t:-t},exports.PI=function(){return Math.PI},exports.POWER=function(e,t){if(e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;var o=Math.pow(e,t);return isNaN(o)?error.num:o},exports.PRODUCT=function(){var e=utils.parseNumberArray(utils.flatten(arguments));if(e instanceof Error)return e;for(var t=1,o=0;o0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)},exports.ROUNDUP=function(e,t){return e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.value:(e>0?1:-1)*Math.ceil(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)},exports.SEC=function(e){return(e=utils.parseNumber(e))instanceof Error?e:1/Math.cos(e)},exports.SECH=function(e){return(e=utils.parseNumber(e))instanceof Error?e:2/(Math.exp(e)+Math.exp(-e))},exports.SERIESSUM=function(e,t,o,r){if(e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),r=utils.parseNumberArray(r),utils.anyIsError(e,t,o,r))return error.value;for(var n=r[0]*Math.pow(e,t),i=1;i=t)},exports.LT=function(e,t){return 2!==arguments.length?error.na:(e=utils.parseNumber(e),t=utils.parseNumber(t),utils.anyIsError(e,t)?error.error:e0?1:-1)*Math.floor(Math.abs(e)*Math.pow(10,t))/Math.pow(10,t)},exports}(),jexcel.methods.misc=function(){var e={UNIQUE:function(){for(var e=[],t=0;t-1;)e[t]="TRUE";for(var o=0;(o=e.indexOf(!1))>-1;)e[o]="FALSE";return e.join("")},DBCS:null,DOLLAR:null,EXACT:function(e,t){return e===t},FIND:function(e,t,o){return o=void 0===o?0:o,t?t.indexOf(e,o-1)+1:null},FIXED:null,HTML2TEXT:function(e){var t="";return e&&(e instanceof Array?e.forEach((function(e){""!==t&&(t+="\n"),t+=e.replace(/<(?:.|\n)*?>/gm,"")})):t=e.replace(/<(?:.|\n)*?>/gm,"")),t},LEFT:function(e,t){return t=void 0===t?1:t,(t=utils.parseNumber(t))instanceof Error||"string"!=typeof e?error.value:e?e.substring(0,t):null},LEN:function(e){return 0===arguments.length?error.error:"string"==typeof e?e?e.length:0:e.length?e.length:error.value},LOWER:function(e){return"string"!=typeof e?error.value:e?e.toLowerCase():e},MID:function(e,t,o){if(t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(t,o)||"string"!=typeof e)return o;var r=t-1,n=r+o;return e.substring(r,n)},NUMBERVALUE:null,PRONETIC:null,PROPER:function(e){return void 0===e||0===e.length?error.value:(!0===e&&(e="TRUE"),!1===e&&(e="FALSE"),isNaN(e)&&"number"==typeof e?error.value:("number"==typeof e&&(e=""+e),e.replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))))},REGEXEXTRACT:function(e,t){var o=e.match(new RegExp(t));return o?o[o.length>1?o.length-1:0]:null},REGEXMATCH:function(e,t,o){var r=e.match(new RegExp(t));return o?r:!!r},REGEXREPLACE:function(e,t,o){return e.replace(new RegExp(t),o)},REPLACE:function(e,t,o,r){return t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(t,o)||"string"!=typeof e||"string"!=typeof r?error.value:e.substr(0,t-1)+r+e.substr(t-1+o)},REPT:function(e,t){return(t=utils.parseNumber(t))instanceof Error?t:new Array(t+1).join(e)},RIGHT:function(e,t){return t=void 0===t?1:t,(t=utils.parseNumber(t))instanceof Error?t:e?e.substring(e.length-t):null},SEARCH:function(e,t,o){var r;return"string"!=typeof e||"string"!=typeof t?error.value:(o=void 0===o?0:o,0===(r=t.toLowerCase().indexOf(e.toLowerCase(),o-1)+1)?error.value:r)},SPLIT:function(e,t){return e.split(t)},SUBSTITUTE:function(e,t,o,r){if(!(e&&t&&o))return e;if(void 0===r)return e.replace(new RegExp(t,"g"),o);for(var n=0,i=0;e.indexOf(t,n)>0;)if(n=e.indexOf(t,n+1),++i===r)return e.substring(0,n)+o+e.substring(n+t.length)},T:function(e){return"string"==typeof e?e:""},TEXT:null,TRIM:function(e){return"string"!=typeof e?error.value:e.replace(/ +/g," ").trim()}};return e.UNICHAR=e.CHAR,e.UNICODE=e.CODE,e.UPPER=function(e){return"string"!=typeof e?error.value:e.toUpperCase()},e.VALUE=null,e}(),jexcel.methods.stats=function(){var exports={},SQRT2PI=2.5066282746310002;return exports.AVEDEV=null,exports.AVERAGE=function(){for(var e=utils.numbers(utils.flatten(arguments)),t=e.length,o=0,r=0,n=0;n=!]/.test(criteria)||(criteria='=="'+criteria+'"');for(var matches=0,i=0;i=!]/.test(criteria)||(criteria='=="'+criteria+'"');for(var j=0;jt[i-1]&&e[s]<=t[i]&&(n[i]+=1):i===r&&e[s]>t[r-1]&&(n[r]+=1)}return n},exports.LARGE=function(e,t){return e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t)?e:e.sort((function(e,t){return t-e}))[t-1]},exports.MAX=function(){var e=utils.numbers(utils.flatten(arguments));return 0===e.length?0:Math.max.apply(Math,e)},exports.MAXA=function(){var e=utils.arrayValuesToNumbers(utils.flatten(arguments));return 0===e.length?0:Math.max.apply(Math,e)},exports.MIN=function(){var e=utils.numbers(utils.flatten(arguments));return 0===e.length?0:Math.min.apply(Math,e)},exports.MINA=function(){var e=utils.arrayValuesToNumbers(utils.flatten(arguments));return 0===e.length?0:Math.min.apply(Math,e)},exports.MODE={},exports.MODE.MULT=function(){var e=utils.parseNumberArray(utils.flatten(arguments));if(e instanceof Error)return e;for(var t,o=e.length,r={},n=[],i=0,s=0;si&&(i=r[t],n=[]),r[t]===i&&(n[n.length]=t);return n},exports.MODE.SNGL=function(){var e=utils.parseNumberArray(utils.flatten(arguments));return e instanceof Error?e:exports.MODE.MULT(e).sort((function(e,t){return e-t}))[0]},exports.PERCENTILE={},exports.PERCENTILE.EXC=function(e,t){if(e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;var o=(e=e.sort((function(e,t){return e-t}))).length;if(t<1/(o+1)||t>1-1/(o+1))return error.num;var r=t*(o+1)-1,n=Math.floor(r);return utils.cleanFloat(r===n?e[r]:e[n]+(r-n)*(e[n+1]-e[n]))},exports.PERCENTILE.INC=function(e,t){if(e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;var o=t*((e=e.sort((function(e,t){return e-t}))).length-1),r=Math.floor(o);return utils.cleanFloat(o===r?e[o]:e[r]+(o-r)*(e[r+1]-e[r]))},exports.PERCENTRANK={},exports.PERCENTRANK.EXC=function(e,t,o){if(o=void 0===o?3:o,e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o))return error.value;e=e.sort((function(e,t){return e-t}));for(var r=UNIQUE.apply(null,e),n=e.length,i=r.length,s=Math.pow(10,o),l=0,a=!1,u=0;!a&&u=r[u]&&(t=r[u]&&(t=0?t[e.indexOf(o)]:0;for(var n=e.sort((function(e,t){return e-t})),i=n.length,s=0,l=0;l=o&&n[l]<=r&&(s+=t[e.indexOf(n[l])]);return s},exports.QUARTILE={},exports.QUARTILE.EXC=function(e,t){if(e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;switch(t){case 1:return exports.PERCENTILE.EXC(e,.25);case 2:return exports.PERCENTILE.EXC(e,.5);case 3:return exports.PERCENTILE.EXC(e,.75);default:return error.num}},exports.QUARTILE.INC=function(e,t){if(e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t))return error.value;switch(t){case 1:return exports.PERCENTILE.INC(e,.25);case 2:return exports.PERCENTILE.INC(e,.5);case 3:return exports.PERCENTILE.INC(e,.75);default:return error.num}},exports.RANK={},exports.RANK.AVG=function(e,t,o){if(e=utils.parseNumber(e),t=utils.parseNumberArray(utils.flatten(t)),utils.anyIsError(e,t))return error.value;for(var r=(o=o||!1)?function(e,t){return e-t}:function(e,t){return t-e},n=(t=(t=utils.flatten(t)).sort(r)).length,i=0,s=0;s1?(2*t.indexOf(e)+i+1)/2:t.indexOf(e)+1},exports.RANK.EQ=function(e,t,o){if(e=utils.parseNumber(e),t=utils.parseNumberArray(utils.flatten(t)),utils.anyIsError(e,t))return error.value;var r=(o=o||!1)?function(e,t){return e-t}:function(e,t){return t-e};return(t=t.sort(r)).indexOf(e)+1},exports.RSQ=function(e,t){return e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumberArray(utils.flatten(t)),utils.anyIsError(e,t)?error.value:Math.pow(exports.PEARSON(e,t),2)},exports.SMALL=function(e,t){return e=utils.parseNumberArray(utils.flatten(e)),t=utils.parseNumber(t),utils.anyIsError(e,t)?e:e.sort((function(e,t){return e-t}))[t-1]},exports.STANDARDIZE=function(e,t,o){return e=utils.parseNumber(e),t=utils.parseNumber(t),o=utils.parseNumber(o),utils.anyIsError(e,t,o)?error.value:(e-t)/o},exports.STDEV={},exports.STDEV.P=function(){var e=exports.VAR.P.apply(this,arguments);return Math.sqrt(e)},exports.STDEV.S=function(){var e=exports.VAR.S.apply(this,arguments);return Math.sqrt(e)},exports.STDEVA=function(){var e=exports.VARA.apply(this,arguments);return Math.sqrt(e)},exports.STDEVPA=function(){var e=exports.VARPA.apply(this,arguments);return Math.sqrt(e)},exports.VAR={},exports.VAR.P=function(){for(var e=utils.numbers(utils.flatten(arguments)),t=e.length,o=0,r=exports.AVERAGE(e),n=0;n{"use strict";o.r(t)}}]); +//# sourceMappingURL=131.ee437eeefadd750d.js.map \ No newline at end of file diff --git a/_static/131.ee437eeefadd750d.js.gz b/_static/131.ee437eeefadd750d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..07a29155477ab7a9d19095f0a77d9b4381b5e77a GIT binary patch literal 70886 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\r\n * Website: https://bossanova.uk/jsuites/\r\n * Description: Create amazing web based applications.\r\n *\r\n * MIT License\r\n *\r\n */\r\n;(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n global.jSuites = factory();\r\n}(this, (function () {\r\n\r\n 'use strict';\r\n\r\nvar jSuites = function(options) {\n var obj = {}\n\n obj.init = function() {\n // Find root element\n var app = document.querySelector('.japp');\n\n // Root element\n if (app) {\n obj.el = app;\n } else {\n obj.el = document.body;\n }\n\n // Loading modules\n var modules = document.querySelectorAll('[data-autoload]');\n for (var i = 0; i < modules.length; i++) {\n var m = modules[i].getAttribute('data-autoload');\n if (typeof(window[m]) == 'function') {\n window[m](modules[i]);\n }\n }\n }\n\n obj.guid = function() {\n var guid = '';\n for (var i = 0; i < 32; i++) {\n guid += Math.floor(Math.random()*0xF).toString(0xF);\n }\n return guid;\n }\n\n obj.getWindowWidth = function() {\n var w = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n x = w.innerWidth || e.clientWidth || g.clientWidth;\n return x;\n }\n\n obj.getWindowHeight = function() {\n var w = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n y = w.innerHeight|| e.clientHeight|| g.clientHeight;\n return y;\n }\n\n obj.getPosition = function(e) {\n if (e.changedTouches && e.changedTouches[0]) {\n var x = e.changedTouches[0].pageX;\n var y = e.changedTouches[0].pageY;\n } else {\n var x = (window.Event) ? e.pageX : e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);\n var y = (window.Event) ? e.pageY : e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);\n }\n\n return [ x, y ];\n }\n\n obj.click = function(el) {\n if (el.click) {\n el.click();\n } else {\n var evt = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n el.dispatchEvent(evt);\n }\n }\n\n obj.getElement = function(element, className) {\n var foundElement = false;\n\n function path (element) {\n if (element.className) {\n if (element.classList.contains(className)) {\n foundElement = element;\n }\n }\n\n if (element.parentNode) {\n path(element.parentNode);\n }\n }\n\n path(element);\n\n return foundElement;\n }\n\n obj.getLinkElement = function(element) {\n var targetElement = false;\n\n function path (element) {\n if ((element.tagName == 'A' || element.tagName == 'DIV') && element.getAttribute('data-href')) {\n targetElement = element;\n }\n\n if (element.parentNode) {\n path(element.parentNode);\n }\n }\n\n path(element);\n\n return targetElement;\n }\n\n obj.getFormElements = function(formObject) {\n var ret = {};\n\n if (formObject) {\n var elements = formObject.querySelectorAll(\"input, select, textarea\");\n } else {\n var elements = document.querySelectorAll(\"input, select, textarea\");\n }\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var name = element.name;\n var value = element.value;\n\n if (name) {\n ret[name] = value;\n }\n }\n\n return ret;\n }\n\n obj.exists = function(url, __callback) {\n var http = new XMLHttpRequest();\n http.open('HEAD', url, false);\n http.send();\n if (http.status) {\n __callback(http.status);\n }\n }\n\n obj.getFiles = function(element) {\n if (! element) {\n console.error('No element defined in the arguments of your method');\n }\n\n // Get attachments\n var files = element.querySelectorAll('.jfile');\n\n if (files.length > 0) {\n var data = [];\n for (var i = 0; i < files.length; i++) {\n var file = {};\n\n var src = files[i].getAttribute('src');\n\n if (files[i].classList.contains('jremove')) {\n file.remove = 1;\n } else {\n if (src.substr(0,4) == 'data') {\n file.content = src.substr(src.indexOf(',') + 1);\n file.extension = files[i].getAttribute('data-extension');\n } else {\n file.file = src;\n file.extension = files[i].getAttribute('data-extension');\n if (! file.extension) {\n file.extension = src.substr(src.lastIndexOf('.') + 1);\n }\n if (jSuites.files[file.file]) {\n file.content = jSuites.files[file.file];\n }\n }\n\n // Optional file information\n if (files[i].getAttribute('data-name')) {\n file.name = files[i].getAttribute('data-name');\n }\n\n if (files[i].getAttribute('data-file')) {\n file.file = files[i].getAttribute('data-file');\n }\n\n if (files[i].getAttribute('data-size')) {\n file.size = files[i].getAttribute('data-size');\n }\n\n if (files[i].getAttribute('data-date')) {\n file.date = files[i].getAttribute('data-date');\n }\n\n if (files[i].getAttribute('data-cover')) {\n file.cover = files[i].getAttribute('data-cover');\n }\n }\n\n // TODO SMALL thumbs?\n\n data[i] = file;\n }\n\n return data;\n }\n }\n\n obj.ajax = function(options) {\n if (! options.data) {\n options.data = {};\n }\n\n if (options.type) {\n options.method = options.type;\n }\n\n if (options.data) {\n var data = [];\n var keys = Object.keys(options.data);\n\n if (keys.length) {\n for (var i = 0; i < keys.length; i++) {\n if (typeof(options.data[keys[i]]) == 'object') {\n var o = options.data[keys[i]];\n for (var j = 0; j < o.length; j++) {\n if (typeof(o[j]) == 'string') {\n data.push(keys[i] + '[' + j + ']=' + encodeURIComponent(o[j]));\n } else {\n var prop = Object.keys(o[j]);\n for (var z = 0; z < prop.length; z++) {\n data.push(keys[i] + '[' + j + '][' + prop[z] + ']=' + encodeURIComponent(o[j][prop[z]]));\n }\n }\n }\n } else {\n data.push(keys[i] + '=' + encodeURIComponent(options.data[keys[i]]));\n }\n }\n }\n\n if (options.method == 'GET' && data.length > 0) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?';\n }\n options.url += data.join('&');\n }\n }\n\n var httpRequest = new XMLHttpRequest();\n httpRequest.open(options.method, options.url, true);\n httpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n\n if (options.method == 'POST') {\n httpRequest.setRequestHeader('Accept', 'application/json');\n httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n } else {\n if (options.dataType == 'json') {\n httpRequest.setRequestHeader('Content-Type', 'text/json');\n }\n }\n\n // No cache\n if (options.cache != true) {\n httpRequest.setRequestHeader('pragma', 'no-cache');\n httpRequest.setRequestHeader('cache-control', 'no-cache');\n }\n\n // Authentication\n if (options.withCredentials == true) {\n httpRequest.withCredentials = true\n }\n\n // Before send\n if (typeof(options.beforeSend) == 'function') {\n options.beforeSend(httpRequest);\n }\n\n httpRequest.onload = function() {\n if (httpRequest.status === 200) {\n if (options.dataType == 'json') {\n try {\n var result = JSON.parse(httpRequest.responseText);\n\n if (options.success && typeof(options.success) == 'function') {\n options.success(result);\n }\n } catch(err) {\n if (options.error && typeof(options.error) == 'function') {\n options.error(result);\n }\n }\n } else {\n var result = httpRequest.responseText;\n\n if (options.success && typeof(options.success) == 'function') {\n options.success(result);\n }\n }\n } else {\n if (options.error && typeof(options.error) == 'function') {\n options.error(httpRequest.responseText);\n }\n }\n\n // Global complete method\n if (obj.ajax.requests && obj.ajax.requests.length) {\n // Get index of this request in the container\n var index = obj.ajax.requests.indexOf(httpRequest)\n // Remove from the ajax requests container\n obj.ajax.requests.splice(index, 1);\n // Last one?\n if (! obj.ajax.requests.length) {\n if (options.complete && typeof(options.complete) == 'function') {\n options.complete(result);\n }\n }\n }\n }\n\n if (data) {\n httpRequest.send(data.join('&'));\n } else {\n httpRequest.send();\n }\n\n obj.ajax.requests.push(httpRequest);\n\n return httpRequest;\n }\n\n obj.ajax.requests = [];\n\n obj.slideLeft = function(element, direction, done) {\n if (direction == true) {\n element.classList.add('slide-left-in');\n setTimeout(function() {\n element.classList.remove('slide-left-in');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n } else {\n element.classList.add('slide-left-out');\n setTimeout(function() {\n element.classList.remove('slide-left-out');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n }\n }\n\n obj.slideRight = function(element, direction, done) {\n if (direction == true) {\n element.classList.add('slide-right-in');\n setTimeout(function() {\n element.classList.remove('slide-right-in');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n } else {\n element.classList.add('slide-right-out');\n setTimeout(function() {\n element.classList.remove('slide-right-out');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n }\n }\n\n obj.slideTop = function(element, direction, done) {\n if (direction == true) {\n element.classList.add('slide-top-in');\n setTimeout(function() {\n element.classList.remove('slide-top-in');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n } else {\n element.classList.add('slide-top-out');\n setTimeout(function() {\n element.classList.remove('slide-top-out');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n }\n }\n\n obj.slideBottom = function(element, direction, done) {\n if (direction == true) {\n element.classList.add('slide-bottom-in');\n setTimeout(function() {\n element.classList.remove('slide-bottom-in');\n if (typeof(done) == 'function') {\n done();\n }\n }, 400);\n } else {\n element.classList.add('slide-bottom-out');\n setTimeout(function() {\n element.classList.remove('slide-bottom-out');\n if (typeof(done) == 'function') {\n done();\n }\n }, 100);\n }\n }\n\n obj.fadeIn = function(element, done) {\n element.classList.add('fade-in');\n setTimeout(function() {\n element.classList.remove('fade-in');\n if (typeof(done) == 'function') {\n done();\n }\n }, 2000);\n }\n\n obj.fadeOut = function(element, done) {\n element.classList.add('fade-out');\n setTimeout(function() {\n element.classList.remove('fade-out');\n if (typeof(done) == 'function') {\n done();\n }\n }, 1000);\n }\n\n obj.keyDownControls = function(e) {\n if (e.which == 27) {\n var nodes = document.querySelectorAll('.jslider');\n if (nodes.length > 0) {\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].slider.close();\n }\n }\n\n if (document.querySelector('.jdialog')) {\n jSuites.dialog.close();\n }\n } else if (e.which == 13) {\n if (document.querySelector('.jdialog')) {\n if (typeof(jSuites.dialog.options.onconfirm) == 'function') {\n jSuites.dialog.options.onconfirm();\n }\n jSuites.dialog.close();\n }\n }\n\n // Verify mask\n if (jSuites.mask) {\n jSuites.mask.apply(e);\n }\n }\n\n var actionUpControl = function(e) {\n var element = null;\n if (element = jSuites.getLinkElement(e.target)) {\n var link = element.getAttribute('data-href');\n if (link == '#back') {\n window.history.back();\n } else if (link == '#panel') {\n jSuites.panel();\n } else {\n jSuites.pages(link);\n }\n }\n }\n\n var controlSwipeLeft = function(e) {\n var element = jSuites.getElement(e.target, 'option');\n\n if (element && element.querySelector('.option-actions')) {\n element.scrollTo({\n left: 100,\n behavior: 'smooth'\n });\n } else {\n var element = jSuites.getElement(e.target, 'jcalendar');\n if (element && jSuites.calendar.current) {\n jSuites.calendar.current.prev();\n } else {\n if (jSuites.panel) {\n var element = jSuites.panel.get();\n if (element) {\n if (element.style.display != 'none') {\n jSuites.panel.close();\n }\n }\n }\n }\n }\n }\n\n var controlSwipeRight = function(e) {\n var element = jSuites.getElement(e.target, 'option');\n if (element && element.querySelector('.option-actions')) {\n element.scrollTo({\n left: 0,\n behavior: 'smooth'\n });\n } else {\n var element = jSuites.getElement(e.target, 'jcalendar');\n if (element && jSuites.calendar.current) {\n jSuites.calendar.current.next();\n } else {\n if (jSuites.panel) {\n var element = jSuites.panel.get();\n if (element) {\n if (element.style.display == 'none') {\n jSuites.panel();\n }\n }\n }\n }\n }\n }\n\n var actionOverControl = function(e) {\n // Tooltip\n if (jSuites.tooltip) {\n jSuites.tooltip(e);\n }\n }\n\n var actionOutControl = function(e) {\n // Tooltip\n if (jSuites.tooltip) {\n jSuites.tooltip.hide();\n }\n }\n\n // Create page container\n document.addEventListener('swipeleft', controlSwipeLeft);\n document.addEventListener('swiperight', controlSwipeRight);\n document.addEventListener('keydown', obj.keyDownControls);\n\n if ('ontouchend' in document.documentElement === true) {\n document.addEventListener('touchend', actionUpControl);\n } else {\n document.addEventListener('mouseup', actionUpControl);\n }\n\n // Onmouseover\n document.addEventListener('mouseover', actionOverControl);\n document.addEventListener('mouseout', actionOutControl);\n document.addEventListener('DOMContentLoaded', function() {\n obj.init();\n });\n\n // Pop state control\n window.onpopstate = function(e) {\n if (e.state && e.state.route) {\n if (jSuites.pages.get(e.state.route)) {\n jSuites.pages(e.state.route, { ignoreHistory:true });\n }\n }\n }\n\n return obj;\n}();\n\njSuites.files = [];\r\n\r\njSuites.calendar = (function(el, options) {\n var obj = {};\n obj.options = {};\n\n // Global container\n if (! jSuites.calendar.current) {\n jSuites.calendar.current = null;\n }\n\n // Default configuration\n var defaults = {\n // Data\n data: null,\n // Inline or not\n type: null,\n // Restrictions\n validRange: null,\n // Starting weekday - 0 for sunday, 6 for saturday\n startingDay: null, \n // Date format\n format: 'DD/MM/YYYY',\n // Allow keyboard date entry\n readonly: true,\n // Today is default\n today: false,\n // Show timepicker\n time: false,\n // Show the reset button\n resetButton: true,\n // Placeholder\n placeholder: '',\n // Translations can be done here\n months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n weekdays_short: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n // Value\n value: null,\n // Events\n onclose: null,\n onchange: null,\n // Fullscreen (this is automatic set for screensize < 800)\n fullscreen: false,\n // Internal mode controller\n mode: null,\n position: null,\n // Create the calendar closed as default\n opened: false,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Value\n if (! obj.options.value) {\n if (el.tagName == 'INPUT' && el.value) {\n obj.options.value = el.value;\n }\n }\n\n // Make sure use upper case in the format\n obj.options.format = obj.options.format.toUpperCase();\n\n if (obj.options.value) {\n var date = obj.options.value.split(' ');\n var time = date[1];\n var date = date[0].split('-');\n var y = parseInt(date[0]);\n var m = parseInt(date[1]);\n var d = parseInt(date[2]);\n\n if (time) {\n var time = time.split(':');\n var h = parseInt(time[0]);\n var i = parseInt(time[1]);\n } else {\n var h = 0;\n var i = 0;\n }\n } else {\n var date = new Date();\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var i = date.getMinutes();\n }\n\n // Current value\n obj.date = [ y, m, d, h, i, 0 ];\n\n // Two digits\n var two = function(value) {\n value = '' + value;\n if (value.length == 1) {\n value = '0' + value;\n }\n return value;\n }\n\n // Calendar elements\n var calendarReset = document.createElement('div');\n calendarReset.className = 'jcalendar-reset';\n calendarReset.innerHTML = 'Reset';\n\n var calendarConfirm = document.createElement('div');\n calendarConfirm.className = 'jcalendar-confirm';\n calendarConfirm.innerHTML = 'Done';\n\n var calendarControls = document.createElement('div');\n calendarControls.className = 'jcalendar-controls'\n if (obj.options.resetButton) {\n calendarControls.appendChild(calendarReset);\n }\n calendarControls.appendChild(calendarConfirm);\n\n var calendarContainer = document.createElement('div');\n calendarContainer.className = 'jcalendar-container';\n\n var calendarContent = document.createElement('div');\n calendarContent.className = 'jcalendar-content';\n calendarContent.appendChild(calendarControls);\n calendarContainer.appendChild(calendarContent);\n\n // Table container\n var calendarTableContainer = document.createElement('div');\n calendarTableContainer.className = 'jcalendar-table';\n calendarContent.appendChild(calendarTableContainer);\n\n // Main element\n if (el.tagName == 'INPUT') {\n var calendar = document.createElement('div');\n } else {\n var calendar = el;\n }\n calendar.className = 'jcalendar';\n calendar.appendChild(calendarContainer);\n\n // Previous button\n var calendarHeaderPrev = document.createElement('td');\n calendarHeaderPrev.setAttribute('colspan', '2');\n calendarHeaderPrev.className = 'jcalendar-prev';\n\n // Header with year and month\n var calendarLabelYear = document.createElement('span');\n calendarLabelYear.className = 'jcalendar-year';\n\n var calendarLabelMonth = document.createElement('span');\n calendarLabelMonth.className = 'jcalendar-month';\n\n var calendarHeaderTitle = document.createElement('td');\n calendarHeaderTitle.className = 'jcalendar-header';\n calendarHeaderTitle.setAttribute('colspan', '3');\n calendarHeaderTitle.appendChild(calendarLabelMonth);\n calendarHeaderTitle.appendChild(calendarLabelYear);\n\n var calendarHeaderNext = document.createElement('td');\n calendarHeaderNext.setAttribute('colspan', '2');\n calendarHeaderNext.className = 'jcalendar-next';\n\n var calendarHeaderRow = document.createElement('tr');\n calendarHeaderRow.appendChild(calendarHeaderPrev);\n calendarHeaderRow.appendChild(calendarHeaderTitle);\n calendarHeaderRow.appendChild(calendarHeaderNext);\n\n var calendarHeader = document.createElement('thead');\n calendarHeader.appendChild(calendarHeaderRow);\n\n var calendarBody = document.createElement('tbody');\n var calendarFooter = document.createElement('tfoot');\n\n // Calendar table\n var calendarTable = document.createElement('table');\n calendarTable.setAttribute('cellpadding', '0');\n calendarTable.setAttribute('cellspacing', '0');\n calendarTable.appendChild(calendarHeader);\n calendarTable.appendChild(calendarBody);\n calendarTable.appendChild(calendarFooter);\n calendarTableContainer.appendChild(calendarTable);\n\n var calendarSelectHour = document.createElement('select');\n calendarSelectHour.className = 'jcalendar-select';\n calendarSelectHour.onchange = function() {\n obj.date[3] = this.value; \n }\n\n for (var i = 0; i < 24; i++) {\n var element = document.createElement('option');\n element.value = i;\n element.innerHTML = two(i);\n calendarSelectHour.appendChild(element);\n }\n\n var calendarSelectMin = document.createElement('select');\n calendarSelectMin.className = 'jcalendar-select';\n calendarSelectMin.onchange = function() {\n obj.date[4] = this.value; \n }\n\n for (var i = 0; i < 60; i++) {\n var element = document.createElement('option');\n element.value = i;\n element.innerHTML = two(i);\n calendarSelectMin.appendChild(element);\n }\n\n // Footer controls\n var calendarControlsFooter = document.createElement('div');\n calendarControlsFooter.className = 'jcalendar-controls';\n\n var calendarControlsTime = document.createElement('div');\n calendarControlsTime.className = 'jcalendar-time';\n calendarControlsTime.style.maxWidth = '140px';\n calendarControlsTime.appendChild(calendarSelectHour);\n calendarControlsTime.appendChild(calendarSelectMin);\n\n var calendarControlsUpdateButton = document.createElement('input');\n calendarControlsUpdateButton.setAttribute('type', 'button');\n calendarControlsUpdateButton.className = 'jcalendar-update';\n calendarControlsUpdateButton.value = 'Update';\n\n var calendarControlsUpdate = document.createElement('div');\n calendarControlsUpdate.style.flexGrow = '10';\n calendarControlsUpdate.appendChild(calendarControlsUpdateButton);\n calendarControlsFooter.appendChild(calendarControlsTime);\n calendarControlsFooter.appendChild(calendarControlsUpdate);\n calendarContent.appendChild(calendarControlsFooter);\n\n var calendarBackdrop = document.createElement('div');\n calendarBackdrop.className = 'jcalendar-backdrop';\n calendar.appendChild(calendarBackdrop);\n\n // Update actions button\n var updateActions = function() {\n var currentDay = calendar.querySelector('.jcalendar-selected');\n\n if (currentDay && currentDay.classList.contains('jcalendar-disabled')) {\n calendarControlsUpdateButton.setAttribute('disabled', 'disabled');\n calendarSelectHour.setAttribute('disabled', 'disabled');\n calendarSelectMin.setAttribute('disabled', 'disabled');\n } else {\n calendarControlsUpdateButton.removeAttribute('disabled');\n calendarSelectHour.removeAttribute('disabled');\n calendarSelectMin.removeAttribute('disabled');\n }\n }\n\n // Methods\n obj.open = function (value) {\n if (! calendar.classList.contains('jcalendar-focus')) {\n if (jSuites.calendar.current) {\n jSuites.calendar.current.close();\n }\n // Current\n jSuites.calendar.current = obj;\n // Show calendar\n calendar.classList.add('jcalendar-focus');\n // Get days\n obj.getDays();\n // Hour\n if (obj.options.time) {\n calendarSelectHour.value = obj.date[3];\n calendarSelectMin.value = obj.date[4];\n }\n\n // Get the position of the corner helper\n if (jSuites.getWindowWidth() < 800 || obj.options.fullscreen) {\n // Full\n calendar.classList.add('jcalendar-fullsize');\n // Animation\n jSuites.slideBottom(calendarContent, 1);\n } else {\n const rect = el.getBoundingClientRect();\n const rectContent = calendarContent.getBoundingClientRect();\n\n if (obj.options.position) {\n calendarContainer.style.position = 'fixed';\n if (window.innerHeight < rect.bottom + rectContent.height) {\n calendarContainer.style.top = (rect.top - (rectContent.height + 2)) + 'px';\n } else {\n calendarContainer.style.top = (rect.top + rect.height + 2) + 'px';\n }\n calendarContainer.style.left = rect.left + 'px';\n } else {\n if (window.innerHeight < rect.bottom + rectContent.height) {\n calendarContainer.style.bottom = (1 * rect.height + rectContent.height + 2) + 'px';\n } else {\n calendarContainer.style.top = 2 + 'px'; \n }\n }\n }\n }\n }\n\n obj.close = function (ignoreEvents, update) {\n if (jSuites.calendar.current) {\n // Current\n jSuites.calendar.current = null;\n\n if (update !== false) {\n var element = calendar.querySelector('.jcalendar-selected');\n\n if (typeof(update) == 'string') {\n var value = update;\n } else if (element && element.classList.contains('jcalendar-disabled')) {\n var value = obj.options.value\n } else {\n var value = obj.getValue();\n }\n\n obj.setValue(value);\n }\n\n // Events\n if (! ignoreEvents && typeof(obj.options.onclose) == 'function') {\n obj.options.onclose(el);\n }\n\n // Hide\n calendar.classList.remove('jcalendar-focus');\n }\n\n return obj.options.value;\n }\n\n obj.prev = function() {\n // Check if the visualization is the days picker or years picker\n if (obj.options.mode == 'years') {\n obj.date[0] = obj.date[0] - 12;\n\n // Update picker table of days\n obj.getYears();\n } else {\n // Go to the previous month\n if (obj.date[1] < 2) {\n obj.date[0] = obj.date[0] - 1;\n obj.date[1] = 12;\n } else {\n obj.date[1] = obj.date[1] - 1;\n }\n\n // Update picker table of days\n obj.getDays();\n }\n }\n\n obj.next = function() {\n // Check if the visualization is the days picker or years picker\n if (obj.options.mode == 'years') {\n obj.date[0] = parseInt(obj.date[0]) + 12;\n\n // Update picker table of days\n obj.getYears();\n } else {\n // Go to the previous month\n if (obj.date[1] > 11) {\n obj.date[0] = parseInt(obj.date[0]) + 1;\n obj.date[1] = 1;\n } else {\n obj.date[1] = parseInt(obj.date[1]) + 1;\n }\n\n // Update picker table of days\n obj.getDays();\n }\n }\n\n obj.setValue = function(val) {\n if (! val) {\n val = '' + val;\n }\n // Values\n var newValue = val;\n var oldValue = obj.options.value;\n // Set label\n var value = obj.setLabel(newValue, obj.options.format);\n var date = newValue.split(' ');\n if (! date[1]) {\n date[1] = '00:00:00';\n }\n var time = date[1].split(':')\n var date = date[0].split('-');\n var y = parseInt(date[0]);\n var m = parseInt(date[1]);\n var d = parseInt(date[2]);\n var h = parseInt(time[0]);\n var i = parseInt(time[1]);\n obj.date = [ y, m, d, h, i, 0 ];\n var val = obj.setLabel(newValue, obj.options.format);\n\n if (oldValue != newValue) {\n // Input value\n if (el.tagName == 'INPUT') {\n el.value = val;\n }\n // New value\n obj.options.value = newValue;\n // On change\n if (typeof(obj.options.onchange) == 'function') {\n obj.options.onchange(el, newValue, oldValue);\n }\n }\n\n obj.getDays();\n }\n\n obj.getValue = function() {\n if (obj.date) {\n if (obj.options.time) {\n return two(obj.date[0]) + '-' + two(obj.date[1]) + '-' + two(obj.date[2]) + ' ' + two(obj.date[3]) + ':' + two(obj.date[4]) + ':' + two(0);\n } else {\n return two(obj.date[0]) + '-' + two(obj.date[1]) + '-' + two(obj.date[2]) + ' ' + two(0) + ':' + two(0) + ':' + two(0);\n }\n } else {\n return \"\";\n }\n }\n\n /**\n * Calendar\n */\n obj.update = function(element) {\n if (element.classList.contains('jcalendar-disabled')) {\n // Do nothing\n } else {\n obj.date[2] = element.innerText;\n\n if (! obj.options.time) {\n obj.close();\n } else {\n obj.date[3] = calendarSelectHour.value;\n obj.date[4] = calendarSelectMin.value;\n }\n\n var elements = calendar.querySelector('.jcalendar-selected');\n if (elements) {\n elements.classList.remove('jcalendar-selected');\n }\n element.classList.add('jcalendar-selected');\n }\n\n // Update\n updateActions();\n }\n\n /**\n * Set to blank\n */\n obj.reset = function() {\n // Close calendar\n obj.close(false, '');\n }\n\n /**\n * Get calendar days\n */\n obj.getDays = function() {\n // Mode\n obj.options.mode = 'days';\n\n // Setting current values in case of NULLs\n var date = new Date();\n\n // Current selection\n var year = obj.date && obj.date[0] ? obj.date[0] : parseInt(date.getFullYear());\n var month = obj.date && obj.date[1] ? obj.date[1] : parseInt(date.getMonth()) + 1;\n var day = obj.date && obj.date[2] ? obj.date[2] : parseInt(date.getDay());\n var hour = obj.date && obj.date[3] ? obj.date[3] : parseInt(date.getHours());\n var min = obj.date && obj.date[4] ? obj.date[4] : parseInt(date.getMinutes());\n\n // Selection container\n obj.date = [year, month, day, hour, min, 0 ];\n\n // Update title\n calendarLabelYear.innerHTML = year;\n calendarLabelMonth.innerHTML = obj.options.months[month - 1];\n\n // Current month and Year\n var isCurrentMonthAndYear = (date.getMonth() == month - 1) && (date.getFullYear() == year) ? true : false;\n var currentDay = date.getDate();\n\n // Number of days in the month\n var date = new Date(year, month, 0, 0, 0);\n var numberOfDays = date.getDate();\n\n // First day\n var date = new Date(year, month-1, 0, 0, 0);\n var firstDay = date.getDay() + 1;\n\n // Index value\n var index = obj.options.startingDay || 0;\n\n // First of day relative to the starting calendar weekday\n firstDay = firstDay - index;\n\n // Reset table\n calendarBody.innerHTML = '';\n\n // Weekdays Row\n var row = document.createElement('tr');\n row.setAttribute('align', 'center');\n calendarBody.appendChild(row);\n\n // Create weekdays row\n for (var i = 0; i < 7; i++) {\n var cell = document.createElement('td');\n cell.classList.add('jcalendar-weekday')\n cell.innerHTML = obj.options.weekdays_short[index];\n row.appendChild(cell);\n // Next week day\n index++;\n // Restart index\n if (index > 6) {\n index = 0;\n }\n }\n\n // Index of days\n var index = 0;\n var d = 0;\n \n // Calendar table\n for (var j = 0; j < 5; j++) {\n // Reset cells container\n var row = document.createElement('tr');\n row.setAttribute('align', 'center');\n // Data control\n var emptyRow = true;\n // Create cells\n for (var i = 0; i < 7; i++) {\n // Create cell\n var cell = document.createElement('td');\n cell.classList.add('jcalendar-set-day');\n\n if (index >= firstDay && index < (firstDay + numberOfDays)) {\n // Day cell\n d++;\n cell.innerHTML = d;\n\n // Selected\n if (d == day) {\n cell.classList.add('jcalendar-selected');\n }\n\n // Current selection day is today\n if (isCurrentMonthAndYear && currentDay == d) {\n cell.style.fontWeight = 'bold';\n }\n\n // Current selection day\n var current = jSuites.calendar.now(new Date(year, month-1, d), true);\n\n // Available ranges\n if (obj.options.validRange) {\n if (! obj.options.validRange[0] || current >= obj.options.validRange[0]) {\n var test1 = true;\n } else {\n var test1 = false;\n }\n\n if (! obj.options.validRange[1] || current <= obj.options.validRange[1]) {\n var test2 = true;\n } else {\n var test2 = false;\n }\n\n if (! (test1 && test2)) {\n cell.classList.add('jcalendar-disabled');\n }\n }\n\n // Control\n emptyRow = false;\n }\n // Day cell\n row.appendChild(cell);\n // Index\n index++;\n }\n\n // Add cell to the calendar body\n if (emptyRow == false) {\n calendarBody.appendChild(row);\n }\n }\n\n // Show time controls\n if (obj.options.time) {\n calendarControlsTime.style.display = '';\n } else {\n calendarControlsTime.style.display = 'none';\n }\n\n // Update\n updateActions();\n }\n\n obj.getMonths = function() {\n // Mode\n obj.options.mode = 'months';\n\n // Loading month labels\n var months = obj.options.months;\n\n // Update title\n calendarLabelYear.innerHTML = obj.date[0];\n calendarLabelMonth.innerHTML = '';\n\n // Create months table\n var html = '';\n\n for (i = 0; i < 12; i++) {\n if ((i > 0) && (!(i % 4))) {\n html += '';\n }\n\n var month = parseInt(i) + 1;\n html += '';\n }\n\n html += '
' + months[i] +'
';\n\n calendarBody.innerHTML = html;\n }\n\n obj.getYears = function() { \n // Mode\n obj.options.mode = 'years';\n\n // Array of years\n var y = [];\n for (i = 0; i < 25; i++) {\n y[i] = parseInt(obj.date[0]) + (i - 12);\n }\n\n // Assembling the year tables\n var html = '';\n\n for (i = 0; i < 25; i++) {\n if ((i > 0) && (!(i % 5))) {\n html += '';\n }\n html += '';\n }\n\n html += '
'+ y[i] +'
';\n\n calendarBody.innerHTML = html;\n }\n\n obj.setLabel = function(value, format) {\n return jSuites.calendar.getDateString(value, format);\n }\n\n obj.fromFormatted = function (value, format) {\n return jSuites.calendar.extractDateFromString(value, format);\n }\n\n var mouseUpControls = function(e) {\n var action = e.target.className;\n\n // Object id\n if (action == 'jcalendar-prev') {\n obj.prev();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-next') {\n obj.next();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-month') {\n obj.getMonths();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-year') {\n obj.getYears();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-set-year') {\n obj.date[0] = e.target.innerText;\n obj.getDays();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-set-month') {\n obj.date[1] = parseInt(e.target.getAttribute('data-value'));\n obj.getDays();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-confirm' || action == 'jcalendar-update') {\n obj.close();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-close') {\n obj.close();\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-backdrop') {\n obj.close(false, false);\n e.stopPropagation();\n e.preventDefault();\n } else if (action == 'jcalendar-reset') {\n obj.reset();\n e.stopPropagation();\n e.preventDefault();\n } else if (e.target.classList.contains('jcalendar-set-day')) {\n if (e.target.innerText) {\n obj.update(e.target);\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n\n var keyUpControls = function(e) {\n if (e.target.value && e.target.value.length > 3) {\n var test = jSuites.calendar.extractDateFromString(e.target.value, obj.options.format);\n if (test) {\n if (e.target.getAttribute('data-completed') == 'true') {\n obj.setValue(test);\n }\n }\n }\n }\n\n // Handle events\n el.addEventListener(\"keyup\", keyUpControls);\n\n // Add global events\n calendar.addEventListener(\"swipeleft\", function(e) {\n jSuites.slideLeft(calendarTable, 0, function() {\n obj.next();\n jSuites.slideRight(calendarTable, 1);\n });\n e.preventDefault();\n e.stopPropagation();\n });\n\n calendar.addEventListener(\"swiperight\", function(e) {\n jSuites.slideRight(calendarTable, 0, function() {\n obj.prev();\n jSuites.slideLeft(calendarTable, 1);\n });\n e.preventDefault();\n e.stopPropagation();\n });\n\n if ('ontouchend' in document.documentElement === true) {\n calendar.addEventListener(\"touchend\", mouseUpControls);\n\n el.addEventListener(\"touchend\", function(e) {\n obj.open();\n });\n } else {\n calendar.addEventListener(\"mouseup\", mouseUpControls);\n\n el.addEventListener(\"mouseup\", function(e) {\n obj.open();\n });\n }\n\n // Append element to the DOM\n if (el.tagName == 'INPUT') {\n el.parentNode.insertBefore(calendar, el.nextSibling);\n // Add properties\n el.setAttribute('autocomplete', 'off');\n el.setAttribute('data-mask', obj.options.format.toLowerCase());\n\n if (obj.options.readonly) {\n el.setAttribute('readonly', 'readonly');\n }\n if (obj.options.placeholder) {\n el.setAttribute('placeholder', obj.options.placeholder);\n }\n // Element\n el.classList.add('jcalendar-input');\n // Value\n el.value = obj.setLabel(obj.getValue(), obj.options.format);\n }\n\n // Keep object available from the node\n el.calendar = obj;\n\n if (obj.options.opened == true) {\n obj.open();\n }\n\n return obj;\n});\n\njSuites.calendar.prettify = function(d, texts) {\n if (! texts) {\n var texts = {\n justNow: 'Just now',\n xMinutesAgo: '{0}m ago',\n xHoursAgo: '{0}h ago',\n xDaysAgo: '{0}d ago',\n xWeeksAgo: '{0}w ago',\n xMonthsAgo: '{0} mon ago',\n xYearsAgo: '{0}y ago',\n }\n }\n\n var d1 = new Date();\n var d2 = new Date(d);\n var total = parseInt((d1 - d2) / 1000 / 60);\n\n String.prototype.format = function(o) {\n return this.replace('{0}', o);\n }\n\n if (total == 0) {\n var text = texts.justNow;\n } else if (total < 90) {\n var text = texts.xMinutesAgo.format(total);\n } else if (total < 1440) { // One day\n var text = texts.xHoursAgo.format(Math.round(total/60));\n } else if (total < 20160) { // 14 days\n var text = texts.xDaysAgo.format(Math.round(total / 1440));\n } else if (total < 43200) { // 30 days\n var text = texts.xWeeksAgo.format(Math.round(total / 10080));\n } else if (total < 1036800) { // 24 months\n var text = texts.xMonthsAgo.format(Math.round(total / 43200));\n } else { // 24 months+\n var text = texts.xYearsAgo.format(Math.round(total / 525600));\n }\n\n return text;\n}\n\njSuites.calendar.prettifyAll = function() {\n var elements = document.querySelectorAll('.prettydate');\n for (var i = 0; i < elements.length; i++) {\n if (elements[i].getAttribute('data-date')) {\n elements[i].innerHTML = jSuites.calendar.prettify(elements[i].getAttribute('data-date'));\n } else {\n elements[i].setAttribute('data-date', elements[i].innerHTML);\n elements[i].innerHTML = jSuites.calendar.prettify(elements[i].innerHTML);\n }\n }\n}\n\njSuites.calendar.now = function(date, dateOnly) {\n if (! date) {\n var date = new Date();\n }\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var i = date.getMinutes();\n var s = date.getSeconds();\n\n // Two digits\n var two = function(value) {\n value = '' + value;\n if (value.length == 1) {\n value = '0' + value;\n }\n return value;\n }\n\n if (dateOnly == true) {\n return two(y) + '-' + two(m) + '-' + two(d);\n } else {\n return two(y) + '-' + two(m) + '-' + two(d) + ' ' + two(h) + ':' + two(i) + ':' + two(s);\n }\n}\n\n// Helper to extract date from a string\njSuites.calendar.extractDateFromString = function(date, format) {\n var v1 = '' + date;\n var v2 = format.replace(/[0-9]/g,'');\n\n var test = 1;\n\n // Get year\n var y = v2.search(\"YYYY\");\n y = v1.substr(y,4);\n if (parseInt(y) != y) {\n test = 0;\n }\n\n // Get month\n var m = v2.search(\"MM\");\n m = v1.substr(m,2);\n if (parseInt(m) != m || d > 12) {\n test = 0;\n }\n\n // Get day\n var d = v2.search(\"DD\");\n d = v1.substr(d,2);\n if (parseInt(d) != d || d > 31) {\n test = 0;\n }\n\n // Get hour\n var h = v2.search(\"HH\");\n if (h >= 0) {\n h = v1.substr(h,2);\n if (! parseInt(h) || h > 23) {\n h = '00';\n }\n } else {\n h = '00';\n }\n \n // Get minutes\n var i = v2.search(\"MI\");\n if (i >= 0) {\n i = v1.substr(i,2);\n if (! parseInt(i) || i > 59) {\n i = '00';\n }\n } else {\n i = '00';\n }\n\n // Get seconds\n var s = v2.search(\"SS\");\n if (s >= 0) {\n s = v1.substr(s,2);\n if (! parseInt(s) || s > 59) {\n s = '00';\n }\n } else {\n s = '00';\n }\n\n if (test == 1 && date.length == v2.length) {\n // Update source\n var data = y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;\n\n return data;\n }\n\n return '';\n}\n\n// Helper to convert date into string\njSuites.calendar.getDateString = function(value, format) {\n // Default calendar\n if (! format) {\n var format = 'DD/MM/YYYY';\n }\n\n if (value) {\n var d = ''+value;\n d = d.split(' ');\n\n var h = '';\n var m = '';\n var s = '';\n\n if (d[1]) {\n h = d[1].split(':');\n m = h[1] ? h[1] : '00';\n s = h[2] ? h[2] : '00';\n h = h[0] ? h[0] : '00';\n } else {\n h = '00';\n m = '00';\n s = '00';\n }\n\n d = d[0].split('-');\n\n if (d[0] && d[1] && d[2] && d[0] > 0 && d[1] > 0 && d[1] < 13 && d[2] > 0 && d[2] < 32) {\n var calendar = new Date(d[0], d[1]-1, d[2]);\n var weekday = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');\n var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');\n\n d[1] = (d[1].length < 2 ? '0' : '') + d[1];\n d[2] = (d[2].length < 2 ? '0' : '') + d[2];\n h = (h.length < 2 ? '0' : '') + h;\n m = (m.length < 2 ? '0' : '') + m;\n s = (s.length < 2 ? '0' : '') + s;\n\n value = format;\n value = value.replace('WD', weekday[calendar.getDay()]);\n value = value.replace('DD', d[2]);\n value = value.replace('MM', d[1]);\n value = value.replace('YYYY', d[0]);\n value = value.replace('YY', d[0].substring(2,4));\n value = value.replace('MON', months[parseInt(d[1])-1].toUpperCase());\n\n if (h) {\n value = value.replace('HH24', h);\n }\n\n if (h > 12) {\n value = value.replace('HH12', h - 12);\n value = value.replace('HH', h);\n } else {\n value = value.replace('HH12', h);\n value = value.replace('HH', h);\n }\n\n value = value.replace('MI', m);\n value = value.replace('MM', m);\n value = value.replace('SS', s);\n } else {\n value = '';\n }\n }\n\n return value;\n}\n\njSuites.calendar.isOpen = function(e) {\n if (jSuites.calendar.current) {\n if (! e.target.className || e.target.className.indexOf('jcalendar') == -1) {\n jSuites.calendar.current.close(false, false);\n }\n }\n}\n\nif ('ontouchstart' in document.documentElement === true) {\n document.addEventListener(\"touchstart\", jSuites.calendar.isOpen);\n} else {\n document.addEventListener(\"mousedown\", jSuites.calendar.isOpen);\n}\r\n\r\njSuites.color = (function(el, options) {\n var obj = {};\n obj.options = {};\n obj.values = [];\n\n // Global container\n if (! jSuites.color.current) {\n jSuites.color.current = null;\n }\n\n /**\n * @typedef {Object} defaults\n * @property {(string|Array)} value - Initial value of the compontent\n * @property {string} placeholder - The default instruction text on the element\n * @property {requestCallback} onchange - Method to be execute after any changes on the element\n * @property {requestCallback} onclose - Method to be execute when the element is closed\n */\n var defaults = {\n placeholder: '',\n value: null,\n onclose: null,\n onchange: null,\n closeOnChange: true,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n var palette = {\n \"red\": {\n \"50\": \"#ffebee\",\n \"100\": \"#ffcdd2\",\n \"200\": \"#ef9a9a\",\n \"300\": \"#e57373\",\n \"400\": \"#ef5350\",\n \"500\": \"#f44336\",\n \"600\": \"#e53935\",\n \"700\": \"#d32f2f\",\n \"800\": \"#c62828\",\n \"900\": \"#b71c1c\",\n },\n \"pink\": {\n \"50\": \"#fce4ec\",\n \"100\": \"#f8bbd0\",\n \"200\": \"#f48fb1\",\n \"300\": \"#f06292\",\n \"400\": \"#ec407a\",\n \"500\": \"#e91e63\",\n \"600\": \"#d81b60\",\n \"700\": \"#c2185b\",\n \"800\": \"#ad1457\",\n \"900\": \"#880e4f\",\n },\n \"purple\": {\n \"50\": \"#f3e5f5\",\n \"100\": \"#e1bee7\",\n \"200\": \"#ce93d8\",\n \"300\": \"#ba68c8\",\n \"400\": \"#ab47bc\",\n \"500\": \"#9c27b0\",\n \"600\": \"#8e24aa\",\n \"700\": \"#7b1fa2\",\n \"800\": \"#6a1b9a\",\n \"900\": \"#4a148c\",\n },\n \"indigo\": {\n \"50\": \"#e8eaf6\",\n \"100\": \"#c5cae9\",\n \"200\": \"#9fa8da\",\n \"300\": \"#7986cb\",\n \"400\": \"#5c6bc0\",\n \"500\": \"#3f51b5\",\n \"600\": \"#3949ab\",\n \"700\": \"#303f9f\",\n \"800\": \"#283593\",\n \"900\": \"#1a237e\",\n },\n \"blue\": {\n \"50\": \"#e3f2fd\",\n \"100\": \"#bbdefb\",\n \"200\": \"#90caf9\",\n \"300\": \"#64b5f6\",\n \"400\": \"#42a5f5\",\n \"500\": \"#2196f3\",\n \"600\": \"#1e88e5\",\n \"700\": \"#1976d2\",\n \"800\": \"#1565c0\",\n \"900\": \"#0d47a1\",\n },\n \"cyan\": {\n \"50\": \"#e0f7fa\",\n \"100\": \"#b2ebf2\",\n \"200\": \"#80deea\",\n \"300\": \"#4dd0e1\",\n \"400\": \"#26c6da\",\n \"500\": \"#00bcd4\",\n \"600\": \"#00acc1\",\n \"700\": \"#0097a7\",\n \"800\": \"#00838f\",\n \"900\": \"#006064\",\n },\n \"teal\": {\n \"50\": \"#e0f2f1\",\n \"100\": \"#b2dfdb\",\n \"200\": \"#80cbc4\",\n \"300\": \"#4db6ac\",\n \"400\": \"#26a69a\",\n \"500\": \"#009688\",\n \"600\": \"#00897b\",\n \"700\": \"#00796b\",\n \"800\": \"#00695c\",\n \"900\": \"#004d40\",\n },\n \"green\": {\n \"50\": \"#e8f5e9\",\n \"100\": \"#c8e6c9\",\n \"200\": \"#a5d6a7\",\n \"300\": \"#81c784\",\n \"400\": \"#66bb6a\",\n \"500\": \"#4caf50\",\n \"600\": \"#43a047\",\n \"700\": \"#388e3c\",\n \"800\": \"#2e7d32\",\n \"900\": \"#1b5e20\",\n },\n \"lightgreen\": {\n \"50\": \"#f1f8e9\",\n \"100\": \"#dcedc8\",\n \"200\": \"#c5e1a5\",\n \"300\": \"#aed581\",\n \"400\": \"#9ccc65\",\n \"500\": \"#8bc34a\",\n \"600\": \"#7cb342\",\n \"700\": \"#689f38\",\n \"800\": \"#558b2f\",\n \"900\": \"#33691e\",\n },\n \"lime\": {\n \"50\": \"#f9fbe7\",\n \"100\": \"#f0f4c3\",\n \"200\": \"#e6ee9c\",\n \"300\": \"#dce775\",\n \"400\": \"#d4e157\",\n \"500\": \"#cddc39\",\n \"600\": \"#c0ca33\",\n \"700\": \"#afb42b\",\n \"800\": \"#9e9d24\",\n \"900\": \"#827717\",\n },\n \"yellow\": {\n \"50\": \"#fffde7\",\n \"100\": \"#fff9c4\",\n \"200\": \"#fff59d\",\n \"300\": \"#fff176\",\n \"400\": \"#ffee58\",\n \"500\": \"#ffeb3b\",\n \"600\": \"#fdd835\",\n \"700\": \"#fbc02d\",\n \"800\": \"#f9a825\",\n \"900\": \"#f57f17\",\n },\n \"amber\": {\n \"50\": \"#fff8e1\",\n \"100\": \"#ffecb3\",\n \"200\": \"#ffe082\",\n \"300\": \"#ffd54f\",\n \"400\": \"#ffca28\",\n \"500\": \"#ffc107\",\n \"600\": \"#ffb300\",\n \"700\": \"#ffa000\",\n \"800\": \"#ff8f00\",\n \"900\": \"#ff6f00\",\n },\n \"orange\": {\n \"50\": \"#fff3e0\",\n \"100\": \"#ffe0b2\",\n \"200\": \"#ffcc80\",\n \"300\": \"#ffb74d\",\n \"400\": \"#ffa726\",\n \"500\": \"#ff9800\",\n \"600\": \"#fb8c00\",\n \"700\": \"#f57c00\",\n \"800\": \"#ef6c00\",\n \"900\": \"#e65100\",\n },\n \"deeporange\": {\n \"50\": \"#fbe9e7\",\n \"100\": \"#ffccbc\",\n \"200\": \"#ffab91\",\n \"300\": \"#ff8a65\",\n \"400\": \"#ff7043\",\n \"500\": \"#ff5722\",\n \"600\": \"#f4511e\",\n \"700\": \"#e64a19\",\n \"800\": \"#d84315\",\n \"900\": \"#bf360c\",\n },\n \"brown\": {\n \"50\": \"#efebe9\",\n \"100\": \"#d7ccc8\",\n \"200\": \"#bcaaa4\",\n \"300\": \"#a1887f\",\n \"400\": \"#8d6e63\",\n \"500\": \"#795548\",\n \"600\": \"#6d4c41\",\n \"700\": \"#5d4037\",\n \"800\": \"#4e342e\",\n \"900\": \"#3e2723\"\n },\n \"grey\": {\n \"50\": \"#fafafa\",\n \"100\": \"#f5f5f5\",\n \"200\": \"#eeeeee\",\n \"300\": \"#e0e0e0\",\n \"400\": \"#bdbdbd\",\n \"500\": \"#9e9e9e\",\n \"600\": \"#757575\",\n \"700\": \"#616161\",\n \"800\": \"#424242\",\n \"900\": \"#212121\"\n },\n \"bluegrey\": {\n \"50\": \"#eceff1\",\n \"100\": \"#cfd8dc\",\n \"200\": \"#b0bec5\",\n \"300\": \"#90a4ae\",\n \"400\": \"#78909c\",\n \"500\": \"#607d8b\",\n \"600\": \"#546e7a\",\n \"700\": \"#455a64\",\n \"800\": \"#37474f\",\n \"900\": \"#263238\"\n }\n };\n\n var x = 0;\n var y = 0;\n var colors = [];\n\n var col = Object.keys(palette);\n var shade = Object.keys(palette[col[0]]);\n\n for (var i = 0; i < col.length; i++) {\n for (var j = 0; j < shade.length; j++) {\n if (! colors[j]) {\n colors[j] = [];\n }\n colors[j][i] = palette[col[i]][shade[j]];\n }\n };\n\n // Value\n if (obj.options.value) {\n el.value = obj.options.value;\n }\n\n // Table container\n var container = document.createElement('div');\n container.className = 'jcolor';\n\n // Table container\n var backdrop = document.createElement('div');\n backdrop.className = 'jcolor-backdrop';\n container.appendChild(backdrop);\n\n // Content\n var content = document.createElement('div');\n content.className = 'jcolor-content';\n\n // Close button\n var closeButton = document.createElement('div');\n closeButton.className = 'jcolor-close';\n closeButton.innerHTML = 'Done';\n closeButton.onclick = function() {\n obj.close();\n }\n content.appendChild(closeButton);\n\n // Table pallete\n var table = document.createElement('table');\n table.setAttribute('cellpadding', '7');\n table.setAttribute('cellspacing', '0');\n\n for (var i = 0; i < colors.length; i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < colors[i].length; j++) {\n var td = document.createElement('td');\n td.style.backgroundColor = colors[i][j];\n td.setAttribute('data-value', colors[i][j]);\n td.innerHTML = '';\n tr.appendChild(td);\n\n // Selected color\n if (obj.options.value == colors[i][j]) {\n td.classList.add('jcolor-selected');\n }\n\n // Possible values\n obj.values[colors[i][j]] = td;\n }\n table.appendChild(tr);\n }\n\n /**\n * Open color pallete\n */\n obj.open = function() {\n if (jSuites.color.current) {\n if (jSuites.color.current != obj) {\n jSuites.color.current.close();\n }\n }\n\n if (! jSuites.color.current) {\n // Persist element\n jSuites.color.current = obj;\n // Show colorpicker\n container.classList.add('jcolor-focus');\n\n const rectContent = content.getBoundingClientRect();\n\n if (jSuites.getWindowWidth() < 800) {\n content.style.top = '';\n content.classList.add('jcolor-fullscreen');\n jSuites.slideBottom(content, 1);\n backdrop.style.display = 'block';\n } else {\n if (content.classList.contains('jcolor-fullscreen')) {\n content.classList.remove('jcolor-fullscreen');\n backdrop.style.display = '';\n }\n\n const rect = el.getBoundingClientRect();\n\n if (window.innerHeight < rect.bottom + rectContent.height) {\n content.style.top = -1 * (rectContent.height + rect.height + 2) + 'px';\n } else {\n content.style.top = '2px';\n }\n }\n\n container.focus();\n }\n }\n\n /**\n * Close color pallete\n */\n obj.close = function(ignoreEvents) {\n if (jSuites.color.current) {\n jSuites.color.current = null;\n if (! ignoreEvents && typeof(obj.options.onclose) == 'function') {\n obj.options.onclose(el);\n }\n container.classList.remove('jcolor-focus');\n }\n\n // Make sure backdrop is hidden\n backdrop.style.display = '';\n\n return obj.options.value;\n }\n\n /**\n * Set value\n */\n obj.setValue = function(color) {\n if (color) {\n el.value = color;\n obj.options.value = color;\n }\n\n // Remove current selecded mark\n var selected = container.querySelector('.jcolor-selected');\n if (selected) {\n selected.classList.remove('jcolor-selected');\n }\n\n // Mark cell as selected\n obj.values[color].classList.add('jcolor-selected');\n\n // Onchange\n if (typeof(obj.options.onchange) == 'function') {\n obj.options.onchange(el, color);\n }\n\r\n if (obj.options.closeOnChange == true) {\r\n obj.close();\r\n }\n }\n\n /**\n * Get value\n */\n obj.getValue = function() {\n return obj.options.value;\n }\n\n /**\n * If element is focus open the picker\n */\n el.addEventListener(\"focus\", function(e) {\n obj.open();\n });\n\n el.addEventListener(\"mousedown\", function(e) {\n if (! jSuites.color.current) {\r\n setTimeout(function() {\r\n obj.open();\n e.preventDefault();\r\n }, 200);\r\n }\n });\n\n // Select color\n container.addEventListener(\"mouseup\", function(e) {\n if (e.target.tagName == 'TD') {\n jSuites.color.current.setValue(e.target.getAttribute('data-value'));\n\r\n if (jSuites.color.current) {\n jSuites.color.current.close();\n }\n }\n });\n\n // Close controller\n document.addEventListener(\"mousedown\", function(e) {\n if (jSuites.color.current) {\n var element = jSuites.getElement(e.target, 'jcolor');\n if (! element) {\n jSuites.color.current.close();\n }\n }\n });\n\n // Possible to focus the container\n container.setAttribute('tabindex', '900');\n\n // Placeholder\n if (obj.options.placeholder) {\n el.setAttribute('placeholder', obj.options.placeholder);\n }\n\n // Append to the table\n content.appendChild(table);\n container.appendChild(content);\n\n // Insert picker after the element\n if (el.tagName == 'INPUT') {\n el.parentNode.insertBefore(container, el.nextSibling);\n } else {\n el.appendChild(container);\n }\n\n // Keep object available from the node\n el.color = obj;\n\n return obj;\n});\n\r\n\r\njSuites.contextmenu = (function(el, options) {\n var obj = {};\n obj.options = {};\n\n // Default configuration\n var defaults = {\n items: null,\n onclick: null,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Class definition\n el.classList.add('jcontextmenu');\n // Focusable\n el.setAttribute('tabindex', '900');\n\n /**\n * Open contextmenu\n */\n obj.open = function(e, items) {\n if (items) {\n // Update content\n obj.options.items = items;\n // Create items\n obj.create(items);\n }\n // Coordinates\n if (e.target) {\n var x = e.clientX;\n var y = e.clientY;\n } else {\n var x = e.x;\n var y = e.y;\n }\n\n el.classList.add('jcontextmenu-focus');\n el.focus();\n\n const rect = el.getBoundingClientRect();\n\n if (window.innerHeight < y + rect.height) {\n el.style.top = (y - rect.height) + 'px';\n } else {\n el.style.top = y + 'px';\n }\n\n if (window.innerWidth < x + rect.width) {\n if (x - rect.width > 0) {\n el.style.left = (x - rect.width) + 'px';\n } else {\n el.style.left = '10px';\n }\n } else {\n el.style.left = x + 'px';\n }\n }\n\n /**\n * Close menu\n */\n obj.close = function() {\n if (el.classList.contains('jcontextmenu-focus')) {\n el.classList.remove('jcontextmenu-focus');\n }\n }\n\n /**\n * Create items based on the declared objectd\n * @param {object} items - List of object\n */\n obj.create = function(items) {\n // Update content\n el.innerHTML = '';\n\n // Append items\n for (var i = 0; i < items.length; i++) {\n if (items[i].type && items[i].type == 'line') {\n var itemContainer = document.createElement('hr');\n } else {\n var itemContainer = document.createElement('div');\n var itemText = document.createElement('a');\n itemText.innerHTML = items[i].title;\n\n if (items[i].disabled) {\n itemContainer.className = 'jcontextmenu-disabled';\n } else if (items[i].onclick) {\n itemContainer.method = items[i].onclick;\n itemContainer.addEventListener(\"mouseup\", function() {\n // Execute method\n this.method(this);\n });\n }\n itemContainer.appendChild(itemText);\n\n if (items[i].shortcut) {\n var itemShortCut = document.createElement('span');\n itemShortCut.innerHTML = items[i].shortcut;\n itemContainer.appendChild(itemShortCut);\n }\n }\n\n el.appendChild(itemContainer);\n }\n }\n\n if (typeof(obj.options.onclick) == 'function') {\n el.addEventListener('click', function(e) {\n obj.options.onclick(obj);\n });\n }\n\n el.addEventListener('blur', function(e) {\n setTimeout(function() {\n obj.close();\n }, 120);\n });\n\n window.addEventListener(\"mousewheel\", function() {\n obj.close();\n });\n\n // Create items\n if (obj.options.items) {\n obj.create(obj.options.items);\n }\n\n el.contextmenu = obj;\n\n return obj;\n});\n\njSuites.contextmenu.getElement = function(element) {\n var foundId = 0;\n\n function path (element) {\n if (element.parentNode && element.getAttribute('aria-contextmenu-id')) {\n foundId = element.getAttribute('aria-contextmenu-id')\n } else {\n if (element.parentNode) {\n path(element.parentNode);\n }\n }\n }\n\n path(element);\n\n return foundId;\n}\n\ndocument.addEventListener(\"contextmenu\", function(e) {\n var id = jSuites.contextmenu.getElement(e.target);\n if (id) {\n var element = document.querySelector('#' + id);\n if (! element) {\n console.error('JSUITES: Contextmenu id not found');\n } else {\n element.contextmenu.open(e);\n e.preventDefault();\n }\n }\n});\r\n\r\n/**\n * Dialog v1.0.1\n * Author: paul.hodel@gmail.com\n * https://github.com/paulhodel/jtools\n */\n \njSuites.dialog = (function() {\n var obj = {};\n obj.options = {};\n\n var dialog = document.createElement('div');\n dialog.setAttribute('tabindex', '901');\n dialog.className = 'jdialog';\n dialog.id = 'dialog';\n\n var dialogHeader = document.createElement('div');\n dialogHeader.className = 'jdialog-header';\n\n var dialogTitle = document.createElement('div');\n dialogTitle.className = 'jdialog-title';\n dialogHeader.appendChild(dialogTitle);\n\n var dialogMessage = document.createElement('div');\n dialogMessage.className = 'jdialog-message';\n dialogHeader.appendChild(dialogMessage);\n\n var dialogFooter = document.createElement('div');\n dialogFooter.className = 'jdialog-footer';\n\n var dialogContainer = document.createElement('div');\n dialogContainer.className = 'jdialog-container';\n dialogContainer.appendChild(dialogHeader);\n dialogContainer.appendChild(dialogFooter);\n\n // Confirm\n var dialogConfirm = document.createElement('div');\n var dialogConfirmButton = document.createElement('input');\n dialogConfirmButton.value = obj.options.confirmLabel;\n dialogConfirmButton.type = 'button';\n dialogConfirmButton.onclick = function() {\n if (typeof(obj.options.onconfirm) == 'function') {\n obj.options.onconfirm();\n }\n obj.close();\n };\n dialogConfirm.appendChild(dialogConfirmButton);\n dialogFooter.appendChild(dialogConfirm);\n\n // Cancel\n var dialogCancel = document.createElement('div');\n var dialogCancelButton = document.createElement('input');\n dialogCancelButton.value = obj.options.cancelLabel;\n dialogCancelButton.type = 'button';\n dialogCancelButton.onclick = function() {\n if (typeof(obj.options.oncancel) == 'function') {\n obj.options.oncancel();\n }\n obj.close();\n }\n dialogCancel.appendChild(dialogCancelButton);\n dialogFooter.appendChild(dialogCancel);\n\n // Dialog\n dialog.appendChild(dialogContainer);\n\n obj.open = function(options) {\n obj.options = options;\n\n if (obj.options.title) {\n dialogTitle.innerHTML = obj.options.title;\n }\n\n if (obj.options.message) {\n dialogMessage.innerHTML = obj.options.message;\n }\n\n if (! obj.options.confirmLabel) {\n obj.options.confirmLabel = 'OK';\n }\n dialogConfirmButton.value = obj.options.confirmLabel;\n\n if (! obj.options.cancelLabel) {\n obj.options.cancelLabel = 'Cancel';\n }\n dialogCancelButton.value = obj.options.cancelLabel;\n\n if (obj.options.type == 'confirm') {\n dialogCancelButton.parentNode.style.display = '';\n } else {\n dialogCancelButton.parentNode.style.display = 'none';\n }\n\n // Append element to the app\n dialog.style.opacity = 100;\n\n // Append to the page\n if (jSuites.el) {\n jSuites.el.appendChild(dialog);\n } else {\n document.body.appendChild(dialog);\n }\n\n // Focus\n dialog.focus();\n\n // Show\n setTimeout(function() {\n dialogContainer.style.opacity = 100;\n }, 0);\n };\n\n obj.close = function() {\n dialog.style.opacity = 0;\n dialogContainer.style.opacity = 0;\n setTimeout(function() {\n dialog.remove();\n }, 100);\n };\n\n return obj;\n})();\n\njSuites.confirm = (function(message, onconfirm) {\n if (jSuites.getWindowWidth() < 800) {\n jSuites.dialog.open({\n type: 'confirm',\n message: message,\n title: 'Confirmation',\n onconfirm: onconfirm,\n });\n } else {\n if (confirm(message)) {\n onconfirm();\n }\n }\n});\n\njSuites.alert = function(message) {\n if (jSuites.getWindowWidth() < 800) {\n jSuites.dialog.open({\n title:'Alert',\n message:message,\n });\n } else {\n alert(message);\n }\n}\n\r\n\r\njSuites.dropdown = (function(el, options) {\n var obj = {};\n obj.options = {};\n\n // If the element is a SELECT tag, create a configuration object\n if (el.tagName == 'SELECT') {\n var ret = jSuites.dropdown.extractFromDom(el, options);\n el = ret.el;\n options = ret.options;\n }\n\n // Default configuration\n var defaults = {\n url: null,\n data: [],\n multiple: false,\n autocomplete: false,\n type: null,\n width: null,\n opened: false,\n value: null,\n placeholder: '',\n position: false,\n onchange: null,\n onload: null,\n onopen: null,\n onclose: null,\n onblur: null,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Global container\n if (! jSuites.dropdown.current) {\n jSuites.dropdown.current = null;\n }\n\n // Containers\n obj.items = [];\n obj.groups = [];\n obj.selected = [];\n\n // Create dropdown\n el.classList.add('jdropdown');\n \n if (obj.options.type == 'searchbar') {\n el.classList.add('jdropdown-searchbar');\n } else if (obj.options.type == 'list') {\n el.classList.add('jdropdown-list');\n } else if (obj.options.type == 'picker') {\n el.classList.add('jdropdown-picker');\n } else {\n if (jSuites.getWindowWidth() < 800) {\n el.classList.add('jdropdown-picker');\n obj.options.type = 'picker';\n } else {\n if (obj.options.width) {\n el.style.width = obj.options.width;\n el.style.minWidth = obj.options.width;\n }\n el.classList.add('jdropdown-default');\n obj.options.type = 'default';\n }\n }\n\n // Header container\n var containerHeader = document.createElement('div');\n containerHeader.className = 'jdropdown-container-header';\n\n // Header\n var header = document.createElement('input');\n header.className = 'jdropdown-header';\n if (typeof(obj.options.onblur) == 'function') {\n header.onblur = function() {\n obj.options.onblur(el);\n }\n }\n\n // Container\n var container = document.createElement('div');\n container.className = 'jdropdown-container';\n\n // Dropdown content\n var content = document.createElement('div');\n content.className = 'jdropdown-content';\n\n // Close button\n var closeButton = document.createElement('div');\n closeButton.className = 'jdropdown-close';\n closeButton.innerHTML = 'Done';\n\n // Create backdrop\n var backdrop = document.createElement('div');\n backdrop.className = 'jdropdown-backdrop';\n\n // Autocomplete\n if (obj.options.autocomplete == true) {\n el.setAttribute('data-autocomplete', true);\n\n // Handler\n var keyTimer = null;\n header.addEventListener('keyup', function(e) {\n if (keyTimer) {\n clearTimeout(keyTimer);\n }\n keyTimer = setTimeout(function() {\n obj.find(header.value);\n keyTimer = null;\n }, 500);\n\n if (! el.classList.contains('jdropdown-focus')) {\n if (e.which > 65) {\n obj.open();\n }\n }\n });\n } else {\n header.setAttribute('readonly', 'readonly');\n }\n\n // Place holder\n if (! obj.options.placeholder && el.getAttribute('placeholder')) {\n obj.options.placeholder = el.getAttribute('placeholder');\n }\n\n if (obj.options.placeholder) {\n header.setAttribute('placeholder', obj.options.placeholder);\n }\n\n // Append elements\n containerHeader.appendChild(header);\n if (obj.options.type == 'searchbar') {\n containerHeader.appendChild(closeButton);\n } else {\n container.appendChild(closeButton);\n }\n container.appendChild(content);\n el.appendChild(containerHeader);\n el.appendChild(container);\n el.appendChild(backdrop);\n\n /**\n * Init dropdown\n */\n obj.init = function() {\n if (obj.options.url) {\n jSuites.ajax({\n url: obj.options.url,\n method: 'GET',\n dataType: 'json',\n success: function(data) {\n if (data) {\n // Set data\n obj.setData(data);\n // Set value\n if (obj.options.value != null) {\n obj.setValue(obj.options.value);\n }\n // Onload method\n if (typeof(obj.options.onload) == 'function') {\n obj.options.onload(el, obj, data);\n }\n }\n }\n });\n } else {\n // Set data\n obj.setData();\n // Set value\n if (obj.options.value != null) {\n obj.setValue(obj.options.value);\n }\n // Onload\n if (typeof(obj.options.onload) == 'function') {\n obj.options.onload(el, obj, data);\n }\n }\n\n // Open dropdown\n if (obj.options.opened == true) {\n obj.open();\n }\n }\n\n obj.getUrl = function() {\n return obj.options.url;\n }\n\n obj.setUrl = function(url) {\n obj.options.url = url;\n\n jSuites.ajax({\n url: obj.options.url,\n method: 'GET',\n dataType: 'json',\n success: function(data) {\n obj.setData(data);\n }\n });\n }\n\n /**\n * Create a new item\n */\n obj.createItem = function(data) {\n // Create item\n var item = {};\n item.element = document.createElement('div');\n item.element.className = 'jdropdown-item';\n item.value = data.id;\n item.text = data.name;\n item.textLowerCase = '' + data.name.toLowerCase();\n\n // Image\n if (data.image) {\n var image = document.createElement('img');\n image.className = 'jdropdown-image';\n image.src = data.image;\n if (! data.title) {\n image.classList.add('jdropdown-image-small');\n }\n item.element.appendChild(image);\n }\n\n // Set content\n var node = document.createElement('div');\n node.className = 'jdropdown-description';\n node.innerHTML = data.name;\n\n // Title\n if (data.title) {\n var title = document.createElement('div');\n title.className = 'jdropdown-title';\n title.innerHTML = data.title;\n node.appendChild(title);\n }\n\n // Add node to item\n item.element.appendChild(node);\n\n return item;\n }\n\n obj.setData = function(data) {\n // Update data\n if (data) {\n obj.options.data = data;\n }\n\n // Data\n var data = obj.options.data;\n\n // Remove content from the DOM\n container.removeChild(content);\n\n // Make sure the content container is blank\n content.innerHTML = '';\n\n // Reset\n obj.reset();\n\n // Reset items\n obj.items = [];\n\n // Helpers\n var items = [];\n var groups = [];\n\n // Create elements\n if (data.length) {\n // Prepare data\n for (var i = 0; i < data.length; i++) {\n // Compatibility\n if (typeof(data[i]) != 'object') {\n // Correct format\n obj.options.data[i] = data[i] = { id: data[i], name: data[i] };\n }\n\n // Process groups\n if (data[i].group) {\n if (! groups[data[i].group]) {\n groups[data[i].group] = [];\n }\n groups[data[i].group].push(i);\n } else {\n items.push(i);\n }\n }\n\n // Groups\n var groupNames = Object.keys(groups);\n\n // Append groups in case exists\n if (groupNames.length > 0) {\n for (var i = 0; i < groupNames.length; i++) {\n // Group container\n var group = document.createElement('div');\n group.className = 'jdropdown-group';\n // Group name\n var groupName = document.createElement('div');\n groupName.className = 'jdropdown-group-name';\n groupName.innerHTML = groupNames[i];\n // Group arrow\n var groupArrow = document.createElement('i');\n groupArrow.className = 'jdropdown-group-arrow jdropdown-group-arrow-down';\n groupName.appendChild(groupArrow);\n // Group items\n var groupContent = document.createElement('div');\n groupContent.className = 'jdropdown-group-items';\n for (var j = 0; j < groups[groupNames[i]].length; j++) {\n var item = obj.createItem(data[groups[groupNames[i]][j]]);\n groupContent.appendChild(item.element);\n // Items\n obj.items.push(item);\n }\n // Group itens\n group.appendChild(groupName);\n group.appendChild(groupArrow);\n group.appendChild(groupContent);\n content.appendChild(group);\n }\n }\n\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n var item = obj.createItem(data[items[i]]);\n obj.items.push(item);\n content.appendChild(item.element);\n }\n }\n\n // Create the Indexes\n for (var i = 0; i < obj.items.length; i++) {\n obj.items[i].element.setAttribute('data-index', i);\n }\n }\n\n // Re-insert the content to the container\n container.appendChild(content);\n }\n\n obj.getText = function(asArray) {\n // Result\n var result = [];\n // Append options\n for (var i = 0; i < obj.selected.length; i++) {\n if (obj.items[obj.selected[i]]) {\n result.push(obj.items[obj.selected[i]].text);\n }\n }\n\n if (asArray) {\n return result;\n } else {\n return result.join('; ');\n }\n }\n\n obj.getValue = function(asArray) {\n // Result\n var result = [];\n // Append options\n for (var i = 0; i < obj.selected.length; i++) {\n if (obj.items[obj.selected[i]]) {\n result.push(obj.items[obj.selected[i]].value);\n }\n }\n\n if (asArray) {\n return result;\n } else {\n return result.join(';');\n }\n }\n\n obj.setValue = function(value) {\n // Remove values\n for (var i = 0; i < obj.selected.length; i++) {\n obj.items[obj.selected[i]].element.classList.remove('jdropdown-selected')\n } \n\n // Reset selected\n obj.selected = [];\n\n // Set values\n if (value != null) {\n if (Array.isArray(value)) {\n for (var i = 0; i < obj.items.length; i++) {\n for (var j = 0; j < value.length; j++) {\n if (obj.items[i].value == value[j]) {\n // Keep index of the selected item\n obj.selected.push(i);\n // Visual selection\n obj.items[i].element.classList.add('jdropdown-selected');\n }\n }\n }\n } else {\n for (var i = 0; i < obj.items.length; i++) {\n if (obj.items[i].value == value) {\n // Keep index of the selected item\n obj.selected.push(i);\n // Visual selection\n obj.items[i].element.classList.add('jdropdown-selected');\n }\n }\n }\n }\n\n // Update labels\n obj.updateLabel();\n }\n\n obj.selectIndex = function(index) {\n // Only select those existing elements\n if (obj.items && obj.items[index]) {\n var index = index = parseInt(index);\n // Current selection\n var oldValue = obj.getValue();\n var oldLabel = obj.getText();\n\n // Remove cursor style\n if (obj.currentIndex != null) {\n obj.items[obj.currentIndex].element.classList.remove('jdropdown-cursor');\n }\n // Set cursor style\n obj.items[index].element.classList.add('jdropdown-cursor');\n\n // Update cursor position\n obj.currentIndex = index;\n\n // Focus behaviour\n if (! obj.options.multiple) {\n // Unselect option\n if (obj.items[index].element.classList.contains('jdropdown-selected')) {\n // Reset selected\n obj.resetSelected();\n } else {\n // Reset selected\n obj.resetSelected();\n // Update selected item\n obj.items[index].element.classList.add('jdropdown-selected');\n // Add to the selected list\n obj.selected.push(index);\n // Close\n obj.close();\n }\n } else {\n // Toggle option\n if (obj.items[index].element.classList.contains('jdropdown-selected')) {\n obj.items[index].element.classList.remove('jdropdown-selected');\n // Remove from selected list\n var indexToRemove = obj.selected.indexOf(index);\n // Remove select\n obj.selected.splice(indexToRemove, 1);\n } else {\n // Select element\n obj.items[index].element.classList.add('jdropdown-selected');\n // Add to the selected list\n obj.selected.push(index);\n }\n\n // Update labels for multiple dropdown\n if (! obj.options.autocomplete) {\n obj.updateLabel();\n }\n }\n\n // Current selection\n var newValue = obj.getValue();\n var newLabel = obj.getText();\n\n // Events\n if (typeof(obj.options.onchange) == 'function') {\n obj.options.onchange(el, index, oldValue, newValue, oldLabel, newLabel);\n }\n }\n }\n\n obj.selectItem = function(item) {\n if (jSuites.dropdown.current) {\n var index = item.getAttribute('data-index');\n if (index != null) {\n obj.selectIndex(index);\n }\n }\n }\n\n obj.find = function(str) {\n // Force lowercase\n var str = str ? str.toLowerCase() : null;\n\n // Append options\n for (var i = 0; i < obj.items.length; i++) {\n if (str == null || obj.items[i].textLowerCase.indexOf(str) != -1) {\n obj.items[i].element.style.display = '';\n } else {\n if (obj.selected.indexOf(i) == -1) {\n obj.items[i].element.style.display = 'none';\n } else {\n obj.items[i].element.style.display = '';\n }\n }\n }\n\n var numVisibleItems = function(items) {\n var visible = 0;\n for (var j = 0; j < items.length; j++) {\n if (items[j].style.display != 'none') {\n visible++;\n }\n }\n return visible;\n }\n\n // Hide groups\n /*for (var i = 0; i < obj.groups.length; i++) {\n if (numVisibleItems(obj.groups[i].querySelectorAll('.jdropdown-item'))) {\n obj.groups[i].children[0].style.display = '';\n } else {\n obj.groups[i].children[0].style.display = 'none';\n }\n }*/\n }\n\n obj.updateLabel = function() {\n // Update label\n header.value = obj.getText();\n }\n\n obj.open = function() {\n if (jSuites.dropdown.current != el) {\n if (jSuites.dropdown.current) {\n jSuites.dropdown.current.dropdown.close();\n }\n jSuites.dropdown.current = el;\n }\n\n // Focus\n if (! el.classList.contains('jdropdown-focus')) {\n // Add focus\n el.classList.add('jdropdown-focus');\n\n // Animation\n if (jSuites.getWindowWidth() < 800) {\n if (obj.options.type == null || obj.options.type == 'picker') {\n jSuites.slideBottom(container, 1);\n }\n }\n\n // Filter\n if (obj.options.autocomplete == true) {\n // Redo search\n obj.find();\n // Clear search field\n header.value = '';\n header.focus();\n }\n\n // Set cursor for the first or first selected element\n var cursor = (obj.selected && obj.selected[0]) ? obj.selected[0] : 0;\n obj.updateCursor(cursor);\n\n // Container Size\n if (! obj.options.type || obj.options.type == 'default') {\n const rect = el.getBoundingClientRect();\n const rectContainer = container.getBoundingClientRect();\n\n if (obj.options.position) {\n container.style.position = 'fixed';\n if (window.innerHeight < rect.bottom + rectContainer.height) {\n container.style.top = '';\n container.style.bottom = (window.innerHeight - rect.top ) + 1 + 'px';\n } else {\n container.style.top = rect.bottom + 'px';\n container.style.bottom = '';\n }\n container.style.left = rect.left + 'px';\n } else {\n if (window.innerHeight < rect.bottom + rectContainer.height) {\n container.style.top = '';\n container.style.bottom = rect.height + 1 + 'px';\n } else {\n container.style.top = '';\n container.style.bottom = '';\n }\n }\n\n container.style.minWidth = rect.width + 'px';\n }\n }\n\n // Events\n if (typeof(obj.options.onopen) == 'function') {\n obj.options.onopen(el);\n }\n }\n\n obj.close = function(ignoreEvents) {\n if (jSuites.dropdown.current) {\n // Remove controller\n jSuites.dropdown.current = null\n // Remove cursor\n obj.resetCursor();\n // Update labels\n obj.updateLabel();\n // Events\n if (! ignoreEvents && typeof(obj.options.onclose) == 'function') {\n obj.options.onclose(el);\n }\n // Blur\n if (header.blur) {\n header.blur();\n }\n // Remove focus\n el.classList.remove('jdropdown-focus');\n }\n\n return obj.getValue();\n }\n\n /**\n * Update position cursor\n */\n obj.updateCursor = function(index) {\n // Set new cursor\n if (obj.items && obj.items[index] && obj.items[index].element) {\n // Reset cursor\n obj.resetCursor();\n\n // Set new cursor\n obj.items[index].element.classList.add('jdropdown-cursor');\n\n // Update position\n obj.currentIndex = parseInt(index);\n \n // Update scroll to the cursor element\n var container = content.scrollTop;\n var element = obj.items[obj.currentIndex].element;\n content.scrollTop = element.offsetTop - element.scrollTop + element.clientTop - 95;\n }\n }\n\n /**\n * Reset cursor\n */\n obj.resetCursor = function() {\n // Remove current cursor\n if (obj.currentIndex != null) {\n // Remove visual cursor\n if (obj.items && obj.items[obj.currentIndex]) {\n obj.items[obj.currentIndex].element.classList.remove('jdropdown-cursor');\n }\n // Reset cursor\n obj.currentIndex = null;\n }\n }\n\n /**\n * Reset cursor\n */\n obj.resetSelected = function() {\n // Unselected all\n if (obj.selected) {\n // Remove visual selection\n for (var i = 0; i < obj.selected.length; i++) {\n if (obj.items[obj.selected[i]]) {\n obj.items[obj.selected[i]].element.classList.remove('jdropdown-selected');\n }\n }\n // Reset current selected items\n obj.selected = [];\n }\n }\n\n /**\n * Reset cursor and selected items\n */\n obj.reset = function() {\n // Reset cursor\n obj.resetCursor();\n\n // Reset selected\n obj.resetSelected();\n\n // Update labels\n obj.updateLabel();\n }\n\n /**\n * First visible item\n */\n obj.firstVisible = function() {\n var newIndex = null;\n for (var i = 0; i < obj.items.length; i++) {\n if (obj.items[i].element.style.display != 'none') {\n newIndex = i;\n break;\n }\n }\n\n if (newIndex == null) {\n return false;\n }\n\n obj.updateCursor(newIndex);\n }\n\n /**\n * Navigation\n */\n obj.first = function() {\n var newIndex = null;\n for (var i = obj.currentIndex - 1; i >= 0; i--) {\n if (obj.items[i].element.style.display != 'none') {\n newIndex = i;\n }\n }\n\n if (newIndex == null) {\n return false;\n }\n\n obj.updateCursor(newIndex);\n }\n\n obj.last = function() {\n var newIndex = null;\n for (var i = obj.currentIndex + 1; i < obj.items.length; i++) {\n if (obj.items[i].element.style.display != 'none') {\n newIndex = i;\n }\n }\n\n if (newIndex == null) {\n return false;\n }\n\n obj.updateCursor(newIndex);\n }\n\n obj.next = function() {\n var newIndex = null;\n for (var i = obj.currentIndex + 1; i < obj.items.length; i++) {\n if (obj.items[i].element.style.display != 'none') {\n newIndex = i;\n break;\n }\n }\n\n if (newIndex == null) {\n return false;\n }\n\n obj.updateCursor(newIndex);\n }\n\n obj.prev = function() {\n var newIndex = null;\n for (var i = obj.currentIndex - 1; i >= 0; i--) {\n if (obj.items[i].element.style.display != 'none') {\n newIndex = i;\n break;\n }\n }\n\n if (newIndex == null) {\n return false;\n }\n\n obj.updateCursor(newIndex);\n }\n\n if (! jSuites.dropdown.hasEvents) {\n if ('ontouchsend' in document.documentElement === true) {\n document.addEventListener('touchsend', jSuites.dropdown.mouseup);\n } else {\n document.addEventListener('mouseup', jSuites.dropdown.mouseup);\n }\n document.addEventListener('keydown', jSuites.dropdown.onkeydown);\n\n jSuites.dropdown.hasEvents = true;\n }\n\n // Start dropdown\n obj.init();\n\n // Keep object available from the node\n el.dropdown = obj;\n\n return obj;\n});\n\njSuites.dropdown.hasEvents = false;\n\njSuites.dropdown.mouseup = function(e) {\n var element = jSuites.getElement(e.target, 'jdropdown');\n if (element) {\n var dropdown = element.dropdown;\n if (e.target.classList.contains('jdropdown-header')) {\n if (element.classList.contains('jdropdown-focus') && element.classList.contains('jdropdown-default')) {\n dropdown.close();\n } else {\n dropdown.open();\n }\n } else if (e.target.classList.contains('jdropdown-group-name')) {\n var items = e.target.nextSibling.children;\n if (e.target.nextSibling.style.display != 'none') {\n for (var i = 0; i < items.length; i++) {\n if (items[i].style.display != 'none') {\n dropdown.selectItem(items[i]);\n }\n }\n }\n } else if (e.target.classList.contains('jdropdown-group-arrow')) {\n if (e.target.classList.contains('jdropdown-group-arrow-down')) {\n e.target.classList.remove('jdropdown-group-arrow-down');\n e.target.classList.add('jdropdown-group-arrow-up');\n e.target.parentNode.nextSibling.style.display = 'none';\n } else {\n e.target.classList.remove('jdropdown-group-arrow-up');\n e.target.classList.add('jdropdown-group-arrow-down');\n e.target.parentNode.nextSibling.style.display = '';\n }\n } else if (e.target.classList.contains('jdropdown-item')) {\n dropdown.selectItem(e.target);\n } else if (e.target.classList.contains('jdropdown-image')) {\n dropdown.selectIndex(e.target.parentNode.getAttribute('data-index'));\n } else if (e.target.classList.contains('jdropdown-description')) {\n dropdown.selectIndex(e.target.parentNode.getAttribute('data-index'));\n } else if (e.target.classList.contains('jdropdown-title')) {\n dropdown.selectIndex(e.target.parentNode.parentNode.getAttribute('data-index'));\n } else if (e.target.classList.contains('jdropdown-close') || e.target.classList.contains('jdropdown-backdrop')) {\n // Close\n dropdown.close();\n }\n\n e.stopPropagation();\n e.preventDefault();\n } else {\n if (jSuites.dropdown.current) {\n jSuites.dropdown.current.dropdown.close();\n }\n }\n}\n\n\n// Keydown controls\njSuites.dropdown.onkeydown = function(e) {\n if (jSuites.dropdown.current) {\n // Element\n var element = jSuites.dropdown.current.dropdown;\n // Index\n var index = element.currentIndex;\n\n if (e.shiftKey) {\n\n } else {\n if (e.which == 13 || e.which == 27 || e.which == 35 || e.which == 36 || e.which == 38 || e.which == 40) {\n // Move cursor\n if (e.which == 13) {\n element.selectIndex(index)\n } else if (e.which == 38) {\n if (index == null) {\n element.firstVisible();\n } else if (index > 0) {\n element.prev();\n }\n } else if (e.which == 40) {\n if (index == null) {\n element.firstVisible();\n } else if (index + 1 < element.options.data.length) {\n element.next();\n }\n } else if (e.which == 36) {\n element.first();\n } else if (e.which == 35) {\n element.last();\n } else if (e.which == 27) {\n element.close();\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n}\n\njSuites.dropdown.extractFromDom = function(el, options) {\n // Keep reference\n var select = el;\n if (! options) {\n options = {};\n }\n // Prepare configuration\n if (el.getAttribute('multiple') && (! options || options.multiple == undefined)) {\n options.multiple = true;\n }\n if (el.getAttribute('placeholder') && (! options || options.placeholder == undefined)) {\n options.placeholder = el.getAttribute('placeholder');\n }\n if (el.getAttribute('data-autocomplete') && (! options || options.autocomplete == undefined)) {\n options.autocomplete = true;\n }\n if (! options || options.width == undefined) {\n options.width = el.offsetWidth;\n }\n if (el.value && (! options || options.value == undefined)) {\n options.value = el.value;\n }\n if (! options || options.data == undefined) {\n options.data = [];\n for (var j = 0; j < el.children.length; j++) {\n if (el.children[j].tagName == 'OPTGROUP') {\n for (var i = 0; i < el.children[j].children.length; i++) {\n options.data.push({\n id: el.children[j].children[i].value,\n name: el.children[j].children[i].innerHTML,\n group: el.children[j].getAttribute('label'),\n });\n }\n } else {\n options.data.push({\n id: el.children[j].value,\n name: el.children[j].innerHTML,\n });\n }\n }\n }\n if (! options || options.onchange == undefined) {\n options.onchange = function(a,b,c,d) {\n if (options.multiple == true) {\n if (obj.items[b].classList.contains('jdropdown-selected')) {\n select.options[b].setAttribute('selected', 'selected');\n } else {\n select.options[b].removeAttribute('selected');\n }\n } else {\n select.value = d;\n }\n }\n }\n // Create DIV\n var div = document.createElement('div');\n el.parentNode.insertBefore(div, el);\n el.style.display = 'none';\n el = div;\n\n return { el:el, options:options };\n}\r\n\r\n/**\n * (c) jTools Text Editor\n * https://github.com/paulhodel/jtools\n *\n * @author: Paul Hodel \n * @description: Inline richtext editor\n */\n\njSuites.editor = (function(el, options) {\n var obj = {};\n obj.options = {};\n\n // Default configuration\n var defaults = {\n // Initial HTML content\n value: null,\n // Initial snippet\n snippet: null,\n // Add toolbar\n toolbar: null,\n // Max height\n maxHeight: null,\n // Website parser is to read websites and images from cross domain\n remoteParser: null,\n // Key from youtube to read properties from URL\n youtubeKey: null,\n // User list\n userSearch: null,\n // Parse URL\n parseURL: false,\n // Accept drop files\n dropZone: true,\n dropAsAttachment: false,\n acceptImages: true,\n acceptFiles: false,\n maxFileSize: 5000000, \n // Border\n border: true,\n padding: true,\n focus: false,\n // Events\n onclick: null,\n onfocus: null,\n onblur: null,\n onload: null,\n onenter: null,\n onkeyup: null,\n onkeydown: null,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Private controllers\n var imageResize = 0;\n var editorTimer = null;\n var editorAction = null;\n\n // Make sure element is empty\n el.innerHTML = '';\n\n // Prepare container\n el.classList.add('jeditor-container');\n\n // Padding\n if (obj.options.padding == true) {\n el.classList.add('jeditor-padding');\n }\n\n // Border\n if (obj.options.border == false) {\n el.style.border = '0px';\n }\n\n // Snippet\n var snippet = document.createElement('div');\n snippet.className = 'snippet';\n snippet.setAttribute('contenteditable', false);\n\n // Toolbar\n var toolbar = document.createElement('div');\n toolbar.className = 'jeditor-toolbar';\n\n // Create editor\n var editor = document.createElement('div');\n editor.setAttribute('contenteditable', true);\n editor.setAttribute('spellcheck', false);\n editor.className = 'jeditor';\n\n // Max height\n if (obj.options.maxHeight) {\n editor.style.overflowY = 'auto';\n editor.style.maxHeight = obj.options.maxHeight;\n }\n\n // Set editor initial value\n if (obj.options.value) {\n var value = obj.options.value;\n } else {\n var value = el.innerHTML ? el.innerHTML : ''; \n }\n\n if (! value) {\n var value = '
';\n }\n\n /**\n * Extract images from a HTML string\n */\n var extractImageFromHtml = function(html) {\n // Create temp element\n var div = document.createElement('div');\n div.innerHTML = html;\n\n // Extract images\n var img = div.querySelectorAll('img');\n\n if (img.length) {\n for (var i = 0; i < img.length; i++) {\n obj.addImage(img[i].src);\n }\n }\n }\n\n /**\n * Insert node at caret\n */\n var insertNodeAtCaret = function(newNode) {\n var sel, range;\n\n if (window.getSelection) {\n sel = window.getSelection();\n if (sel.rangeCount) {\n range = sel.getRangeAt(0);\n var selectedText = range.toString();\n range.deleteContents();\n range.insertNode(newNode); \n // move the cursor after element\n range.setStartAfter(newNode);\n range.setEndAfter(newNode); \n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n\n /**\n * Append snippet or thumbs in the editor\n * @Param object data\n */\n var appendElement = function(data) {\n // Reset snippet\n snippet.innerHTML = '';\n\n if (data.image) {\n var div = document.createElement('div');\n div.className = 'snippet-image';\n div.setAttribute('data-k', 'image');\n snippet.appendChild(div);\n\n var image = document.createElement('img');\n image.src = data.image;\n div.appendChild(image);\n }\n\n var div = document.createElement('div');\n div.className = 'snippet-title';\n div.setAttribute('data-k', 'title');\n div.innerHTML = data.title;\n snippet.appendChild(div);\n\n var div = document.createElement('div');\n div.className = 'snippet-description';\n div.setAttribute('data-k', 'description');\n div.innerHTML = data.description;\n snippet.appendChild(div);\n\n var div = document.createElement('div');\n div.className = 'snippet-host';\n div.setAttribute('data-k', 'host');\n div.innerHTML = data.host;\n snippet.appendChild(div);\n\n var div = document.createElement('div');\n div.className = 'snippet-url';\n div.setAttribute('data-k', 'url');\n div.innerHTML = data.url;\n snippet.appendChild(div);\n\n editor.appendChild(snippet);\n }\n\n var verifyEditor = function() {\n clearTimeout(editorTimer);\n editorTimer = setTimeout(function() {\n var snippet = editor.querySelector('.snippet');\n var thumbsContainer = el.querySelector('.jeditor-thumbs-container');\n\n if (! snippet && ! thumbsContainer) {\n var html = editor.innerHTML.replace(/\\n/g, ' ');\n var container = document.createElement('div');\n container.innerHTML = html;\n var thumbsContainer = container.querySelector('.jeditor-thumbs-container');\n if (thumbsContainer) {\n thumbsContainer.remove();\n }\n var text = container.innerText; \n var url = jSuites.editor.detectUrl(text);\n\n if (url) {\n if (url[0].substr(-3) == 'jpg' || url[0].substr(-3) == 'png' || url[0].substr(-3) == 'gif') {\n if (jSuites.editor.getDomain(url[0]) == window.location.hostname) {\n obj.importImage(url[0], '');\n } else {\n obj.importImage(obj.options.remoteParser + url[0], '');\n }\n } else {\n var id = jSuites.editor.youtubeParser(url[0]);\n\n if (id) {\n obj.getYoutube(id);\n } else {\n obj.getWebsite(url[0]);\n }\n }\n }\n }\n }, 1000);\n }\n\n obj.parseContent = function() {\n verifyEditor();\n }\n\n /**\n * Get metadata from a youtube video\n */\n obj.getYoutube = function(id) {\n if (! obj.options.youtubeKey) {\n console.error('The youtubeKey is not defined');\n } else {\n jSuites.ajax({\n url: 'https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&key=' + obj.options.youtubeKey + '&id=' + id,\n method: 'GET',\n dataType: 'json',\n success: function(result) {\n // Only valid elements to be appended\n if (result.items && result.items[0]) {\n var p = {\n title: '',\n description: '',\n image: '',\n host: 'www.youtube.com',\n url: 'https://www.youtube.com?watch=' + id,\n }\n if (result.items[0].snippet.title) {\n p.title = result.items[0].snippet.title;\n }\n if (result.items[0].snippet.description) {\n p.description = result.items[0].snippet.description;\n\n if (p.description.length > 150) {\n p.description = p.description.substr(0, 150) + '...';\n }\n }\n if (result.items[0].snippet.thumbnails.medium.url) {\n p.image = result.items[0].snippet.thumbnails.medium.url;\n }\n\n appendElement(p);\n }\n }\n });\n }\n }\n\n /**\n * Get meta information from a website\n */\n obj.getWebsite = function(url) {\n if (! obj.options.remoteParser) {\n console.log('The remoteParser is not defined');\n } else {\n jSuites.ajax({\n url: obj.options.remoteParser + encodeURI(url.trim()),\n method: 'GET',\n dataType: 'json',\n success: function(result) {\n var p = {\n title: '',\n description: '',\n image: '',\n host: url,\n url: url,\n }\n\n if (result.title) {\n p.title = result.title;\n }\n if (result.description) {\n p.description = result.description;\n }\n if (result.image) {\n p.image = result.image;\n } else if (result['og:image']) {\n p.image = result['og:image'];\n }\n if (result.host) {\n p.host = result.host;\n }\n if (result.url) {\n p.url = result.url;\n }\n\n appendElement(p);\n }\n });\n }\n }\n\n /**\n * Set editor value\n */\n obj.setData = function(html) {\n editor.innerHTML = html;\n cursor();\n }\n\n /**\n * Get editor data\n */\n obj.getData = function(json) {\n if (! json) {\n var data = editor.innerHTML;\n } else {\n var data = {\n content : '',\n }\n\n // Get tag users\n var tagged = editor.querySelectorAll('.post-tag');\n if (tagged.length) {\n data.users = [];\n for (var i = 0; i < tagged.length; i++) {\n var userId = tagged[i].getAttribute('data-user');\n if (userId) {\n data.users.push(userId);\n }\n }\n data.users = data.users.join(',');\n }\n\n if (snippet.innerHTML) {\n var index = 0;\n data.snippet = {};\n for (var i = 0; i < snippet.children.length; i++) {\n // Get key from element\n var key = snippet.children[i].getAttribute('data-k');\n if (key) {\n if (key == 'image') {\n data.snippet.image = snippet.children[i].children[0].getAttribute('src');\n } else {\n data.snippet[key] = snippet.children[i].innerHTML;\n }\n }\n }\n\n snippet.innerHTML = '';\n snippet.remove();\n }\n\n var text = editor.innerHTML;\n text = text.replace(/
/g, \"\\n\");\n text = text.replace(/<\\/div>/g, \"<\\/div>\\n\");\n text = text.replace(/<(?:.|\\n)*?>/gm, \"\");\n data.content = text.trim();\n data = JSON.stringify(data);\n }\n\n return data;\n }\n\n // Reset\n obj.reset = function() {\n editor.innerHTML = '';\n }\n\n obj.addPdf = function(data) {\n if (data.result.substr(0,4) != 'data') {\n console.error('Invalid source');\n } else {\n var canvas = document.createElement('canvas');\n canvas.width = 60;\n canvas.height = 60;\n\n var img = new Image();\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\n canvas.toBlob(function(blob) {\n var newImage = document.createElement('img');\n newImage.src = window.URL.createObjectURL(blob);\n newImage.setAttribute('data-extension', 'pdf');\n if (data.name) {\n newImage.setAttribute('data-name', data.name);\n }\n if (data.size) {\n newImage.setAttribute('data-size', data.size);\n }\n if (data.date) {\n newImage.setAttribute('data-date', data.date);\n }\n newImage.className = 'jfile pdf';\n\n insertNodeAtCaret(newImage);\n jSuites.files[newImage.src] = data.result.substr(data.result.indexOf(',') + 1);\n });\n }\n }\n\n obj.addImage = function(src, name, size, date) {\n if (src.substr(0,4) != 'data' && ! obj.options.remoteParser) {\n console.error('remoteParser not defined in your initialization');\n } else {\n // This is to process cross domain images\n if (src.substr(0,4) == 'data') {\n var extension = src.split(';')\n extension = extension[0].split('/');\n extension = extension[1];\n } else {\n var extension = src.substr(src.lastIndexOf('.') + 1);\n // Work for cross browsers\n src = obj.options.remoteParser + src;\n }\n\n var img = new Image();\n\n img.onload = function onload() {\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\n canvas.toBlob(function(blob) {\n var newImage = document.createElement('img');\n newImage.src = window.URL.createObjectURL(blob);\n newImage.setAttribute('tabindex', '900');\n newImage.setAttribute('data-extension', extension);\n if (name) {\n newImage.setAttribute('data-name', name);\n }\n if (size) {\n newImage.setAttribute('data-size', size);\n }\n if (date) {\n newImage.setAttribute('data-date', date);\n }\n newImage.className = 'jfile';\n var content = canvas.toDataURL();\n insertNodeAtCaret(newImage);\n\n jSuites.files[newImage.src] = content.substr(content.indexOf(',') + 1);\n });\n };\n\n img.src = src;\n }\n }\n\n obj.addFile = function(files) {\n var reader = [];\n\n for (var i = 0; i < files.length; i++) {\n if (files[i].size > obj.options.maxFileSize) {\n alert('The file is too big');\n } else {\n // Only PDF or Images\n var type = files[i].type.split('/');\n\n if (type[0] == 'image') {\n type = 1;\n } else if (type[1] == 'pdf') {\n type = 2;\n } else {\n type = 0;\n }\n\n if (type) {\n // Create file\n reader[i] = new FileReader();\n reader[i].index = i;\n reader[i].type = type;\n reader[i].name = files[i].name;\n reader[i].date = files[i].lastModified;\n reader[i].size = files[i].size;\n reader[i].addEventListener(\"load\", function (data) {\n // Get result\n if (data.target.type == 2) {\n if (obj.options.acceptFiles == true) {\n obj.addPdf(data.target);\n }\n } else {\n obj.addImage(data.target.result, data.target.name, data.total, data.target.lastModified);\n }\n }, false);\n\n reader[i].readAsDataURL(files[i])\n } else {\n alert('The extension is not allowed');\n }\n }\n }\n }\n\n // Destroy\n obj.destroy = function() {\n editor.removeEventListener('mouseup', editorMouseUp);\n editor.removeEventListener('mousedown', editorMouseDown);\n editor.removeEventListener('mousemove', editorMouseMove);\n editor.removeEventListener('keyup', editorKeyUp);\n editor.removeEventListener('keydown', editorKeyDown);\n editor.removeEventListener('dragstart', editorDragStart);\n editor.removeEventListener('dragenter', editorDragEnter);\n editor.removeEventListener('dragover', editorDragOver);\n editor.removeEventListener('drop', editorDrop);\n editor.removeEventListener('paste', editorPaste);\n\n if (typeof(obj.options.onblur) == 'function') {\n editor.removeEventListener('blur', editorBlur);\n }\n if (typeof(obj.options.onfocus) == 'function') {\n editor.removeEventListener('focus', editorFocus);\n }\n\n el.editor = null;\n el.classList.remove('jeditor-container');\n\n toolbar.remove();\n snippet.remove();\n editor.remove();\n }\n\n var isLetter = function (str) {\n var regex = /([\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]+)/g;\n return str.match(regex) ? 1 : 0;\n }\n\n // Event handlers\n var editorMouseUp = function(e) {\n editorAction = false;\n }\n\n var editorMouseDown = function(e) {\n var close = function(snippet) {\n var rect = snippet.getBoundingClientRect();\n if (rect.width - (e.clientX - rect.left) < 40 && e.clientY - rect.top < 40) {\n snippet.innerHTML = '';\n snippet.remove();\n }\n }\n\n if (e.target.tagName == 'IMG') {\n if (e.target.style.cursor) {\n var rect = e.target.getBoundingClientRect();\n editorAction = {\n e: e.target,\n x: e.clientX,\n y: e.clientY,\n w: rect.width,\n h: rect.height,\n d: e.target.style.cursor,\n }\n\n if (! e.target.style.width) {\n e.target.style.width = rect.width + 'px';\n }\n\n if (! e.target.style.height) {\n e.target.style.height = rect.height + 'px';\n }\n\n var s = window.getSelection();\n if (s.rangeCount) {\n for (var i = 0; i < s.rangeCount; i++) {\n s.removeRange(s.getRangeAt(i));\n }\n }\n } else {\n editorAction = true;\n }\n } else { \n if (e.target.classList.contains('snippet')) {\n close(e.target);\n } else if (e.target.parentNode.classList.contains('snippet')) {\n close(e.target.parentNode);\n }\n\n editorAction = true;\n }\n }\n\n var editorMouseMove = function(e) {\n if (e.target.tagName == 'IMG') {\n if (e.target.getAttribute('tabindex')) {\n var rect = e.target.getBoundingClientRect();\n if (e.clientY - rect.top < 5) {\n if (rect.width - (e.clientX - rect.left) < 5) {\n e.target.style.cursor = 'ne-resize';\n } else if (e.clientX - rect.left < 5) {\n e.target.style.cursor = 'nw-resize';\n } else {\n e.target.style.cursor = 'n-resize';\n }\n } else if (rect.height - (e.clientY - rect.top) < 5) {\n if (rect.width - (e.clientX - rect.left) < 5) {\n e.target.style.cursor = 'se-resize';\n } else if (e.clientX - rect.left < 5) {\n e.target.style.cursor = 'sw-resize';\n } else {\n e.target.style.cursor = 's-resize';\n }\n } else if (rect.width - (e.clientX - rect.left) < 5) {\n e.target.style.cursor = 'e-resize';\n } else if (e.clientX - rect.left < 5) {\n e.target.style.cursor = 'w-resize';\n } else {\n e.target.style.cursor = '';\n }\n }\n }\n\n // Move\n if (e.which == 1 && editorAction && editorAction.d) {\n if (editorAction.d == 'e-resize' || editorAction.d == 'ne-resize' || editorAction.d == 'se-resize') {\n editorAction.e.style.width = (editorAction.w + (e.clientX - editorAction.x)) + 'px';\n\n if (e.shiftKey) {\n var newHeight = (e.clientX - editorAction.x) * (editorAction.h / editorAction.w);\n editorAction.e.style.height = editorAction.h + newHeight + 'px';\n } else {\n var newHeight = null;\n }\n }\n\n if (! newHeight) {\n if (editorAction.d == 's-resize' || editorAction.d == 'se-resize' || editorAction.d == 'sw-resize') {\n if (! e.shiftKey) {\n editorAction.e.style.height = editorAction.h + (e.clientY - editorAction.y);\n }\n }\n }\n }\n }\n\n var editorKeyUp = function(e) {\n if (! editor.innerHTML) {\n editor.innerHTML = '

';\n }\n\n if (typeof(obj.options.onkeyup) == 'function') { \n obj.options.onkeyup(e, el);\n }\n }\n\n\n var editorKeyDown = function(e) {\n // Check for URL\n if (obj.options.parseURL == true) {\n verifyEditor();\n }\n\n // Closable\n if (typeof(obj.options.onenter) == 'function' && e.which == 13) {\n var data = obj.getData();\n obj.options.onenter(obj, el, data, e);\n }\n\n if (typeof(obj.options.onkeydown) == 'function') { \n obj.options.onkeydown(e, el);\n }\n }\n\n var editorPaste = function(e) {\n if (e.clipboardData || e.originalEvent.clipboardData) {\n var html = (e.originalEvent || e).clipboardData.getData('text/html');\n var text = (e.originalEvent || e).clipboardData.getData('text/plain');\n var file = (e.originalEvent || e).clipboardData.files\n } else if (window.clipboardData) {\n var html = window.clipboardData.getData('Html');\n var text = window.clipboardData.getData('Text');\n var file = window.clipboardData.files\n }\n\n if (file.length) {\n // Paste a image from the clipboard\n obj.addFile(file);\n } else {\n // Paste text\n text = text.split('\\r\\n');\n var str = '';\n if (e.target.nodeName == 'DIV' && ! e.target.classList.contains('jeditor')) {\n for (var i = 0; i < text.length; i++) {\n if (text[i]) {\n str += text[i] + \"
\\r\\n\";\n }\n }\n } else {\n for (var i = 0; i < text.length; i++) {\n if (text[i]) {\n str += '
' + text[i] + '
';\n } else {\n str += '

';\n }\n }\n }\n // Insert text\n document.execCommand('insertHtml', false, str);\n\n // Extra images from the paste\n if (obj.options.acceptImages == true) {\n extractImageFromHtml(html);\n }\n }\n\n e.preventDefault();\n }\n\n var editorDragStart = function(e) {\n if (editorAction && editorAction.e) {\n e.preventDefault();\n }\n }\n\n var editorDragEnter = function(e) {\n if (editorAction || obj.options.dropZone == false) {\n // Do nothing\n } else {\n el.classList.add('jeditor-dragging');\n }\n }\n\n var editorDragOver = function(e) {\n if (editorAction || obj.options.dropZone == false) {\n // Do nothing\n } else {\n if (editorTimer) {\n clearTimeout(editorTimer);\n }\n\n editorTimer = setTimeout(function() {\n el.classList.remove('jeditor-dragging');\n }, 100);\n }\n }\n\n var editorDrop = function(e) {\n if (editorAction || obj.options.dropZone == false) {\n // Do nothing\n } else {\n // Position caret on the drop\n var range = null;\n if (document.caretRangeFromPoint) {\n range=document.caretRangeFromPoint(e.clientX, e.clientY);\n } else if (e.rangeParent) {\n range=document.createRange();\n range.setStart(e.rangeParent,e.rangeOffset);\n }\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n sel.anchorNode.parentNode.focus();\n\n var html = (e.originalEvent || e).dataTransfer.getData('text/html');\n var text = (e.originalEvent || e).dataTransfer.getData('text/plain');\n var file = (e.originalEvent || e).dataTransfer.files;\n \n if (file.length) {\n obj.addFile(file);\n } else if (text) {\n extractImageFromHtml(html);\n }\n\n el.classList.remove('jeditor-dragging');\n e.preventDefault();\n }\n }\n\n var editorBlur = function() {\n obj.options.onblur(obj, el, obj.getData());\n }\n\n var editorFocus = function() {\n obj.options.onfocus(obj, el, obj.getData());\n }\n\n editor.addEventListener('mouseup', editorMouseUp);\n editor.addEventListener('mousedown', editorMouseDown);\n editor.addEventListener('mousemove', editorMouseMove);\n editor.addEventListener('keyup', editorKeyUp);\n editor.addEventListener('keydown', editorKeyDown);\n editor.addEventListener('dragstart', editorDragStart);\n editor.addEventListener('dragenter', editorDragEnter);\n editor.addEventListener('dragover', editorDragOver);\n editor.addEventListener('drop', editorDrop);\n editor.addEventListener('paste', editorPaste);\n\n // Blur\n if (typeof(obj.options.onblur) == 'function') {\n editor.addEventListener('blur', editorBlur);\n }\n\n // Focus\n if (typeof(obj.options.onfocus) == 'function') {\n editor.addEventListener('focus', editorFocus);\n }\n\n // Onload\n if (typeof(obj.options.onload) == 'function') {\n obj.options.onload(el, editor);\n }\n\n // Set value to the editor\n editor.innerHTML = value;\n\n // Append editor to the containre\n el.appendChild(editor);\n\n // Snippet\n if (obj.options.snippet) {\n appendElement(obj.options.snippet);\n }\n\n // Default toolbar\n if (obj.options.toolbar == null) {\n obj.options.toolbar = jSuites.editor.getDefaultToolbar();\n }\n\n // Add toolbar\n if (obj.options.toolbar) {\n for (var i = 0; i < obj.options.toolbar.length; i++) {\n if (obj.options.toolbar[i].icon) {\n var item = document.createElement('div');\n item.style.userSelect = 'none';\n var itemIcon = document.createElement('i');\n itemIcon.className = 'material-icons';\n itemIcon.innerHTML = obj.options.toolbar[i].icon;\n itemIcon.onclick = (function (a) {\n var b = a;\n return function () {\n obj.options.toolbar[b].onclick(el, obj, this)\n };\n })(i);\n item.appendChild(itemIcon);\n toolbar.appendChild(item);\n } else {\n if (obj.options.toolbar[i].type == 'divisor') {\n var item = document.createElement('div');\n item.className = 'jeditor-toolbar-divisor';\n toolbar.appendChild(item);\n } else if (obj.options.toolbar[i].type == 'button') {\n var item = document.createElement('div');\n item.classList.add('jeditor-toolbar-button');\n item.innerHTML = obj.options.toolbar[i].value;\n toolbar.appendChild(item);\n }\n }\n }\n\n el.appendChild(toolbar);\n }\n\n // Focus to the editor\n if (obj.options.focus) {\n jSuites.editor.setCursor(editor, obj.options.focus == 'initial' ? true : false);\n }\n\n el.editor = obj;\n\n return obj;\n});\n\njSuites.editor.setCursor = function(element, first) {\n element.focus();\n document.execCommand('selectAll');\n var sel = window.getSelection();\n var range = sel.getRangeAt(0);\n if (first == true) {\n var node = range.startContainer;\n var size = 0;\n } else {\n var node = range.endContainer;\n var size = node.length;\n }\n range.setStart(node, size);\n range.setEnd(node, size);\n sel.removeAllRanges();\n sel.addRange(range);\n}\n\njSuites.editor.getDomain = function(url) {\n return url.replace('http://','').replace('https://','').replace('www.','').split(/[/?#]/)[0].split(/:/g)[0];\n}\n\njSuites.editor.detectUrl = function(text) {\n var expression = /(((https?:\\/\\/)|(www\\.))[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|]+)/ig;\n var links = text.match(expression);\n\n if (links) {\n if (links[0].substr(0,3) == 'www') {\n links[0] = 'http://' + links[0];\n }\n }\n\n return links;\n}\n\njSuites.editor.youtubeParser = function(url) {\n var regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*/;\n var match = url.match(regExp);\n\n return (match && match[7].length == 11) ? match[7] : false;\n}\n\njSuites.editor.getDefaultToolbar = function() { \n return [\n {\n icon:'undo',\n onclick: function() {\n document.execCommand('undo');\n }\n },\n {\n icon:'redo',\n onclick: function() {\n document.execCommand('redo');\n }\n },\n {\n type:'divisor'\n },\n {\n icon:'format_bold',\n onclick: function(a,b,c) {\n document.execCommand('bold');\n\n if (document.queryCommandState(\"bold\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_italic',\n onclick: function(a,b,c) {\n document.execCommand('italic');\n\n if (document.queryCommandState(\"italic\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_underline',\n onclick: function(a,b,c) {\n document.execCommand('underline');\n\n if (document.queryCommandState(\"underline\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n type:'divisor'\n },\n {\n icon:'format_list_bulleted',\n onclick: function(a,b,c) {\n document.execCommand('insertUnorderedList');\n\n if (document.queryCommandState(\"insertUnorderedList\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_list_numbered',\n onclick: function(a,b,c) {\n document.execCommand('insertOrderedList');\n\n if (document.queryCommandState(\"insertOrderedList\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_indent_increase',\n onclick: function(a,b,c) {\n document.execCommand('indent', true, null);\n\n if (document.queryCommandState(\"indent\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_indent_decrease',\n onclick: function(a,b,c) {\n document.execCommand('outdent');\n\n if (document.queryCommandState(\"outdent\")) {\n c.classList.add('selected');\n } else {\n c.classList.remove('selected');\n }\n }\n }\n /*{\n type:'select',\n items: ['Verdana','Arial','Courier New'],\n onchange: function() {\n }\n },\n {\n type:'select',\n items: ['10px','12px','14px','16px','18px','20px','22px'],\n onchange: function() {\n }\n },\n {\n icon:'format_align_left',\n onclick: function() {\n document.execCommand('JustifyLeft');\n\n if (document.queryCommandState(\"JustifyLeft\")) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_align_center',\n onclick: function() {\n document.execCommand('justifyCenter');\n\n if (document.queryCommandState(\"justifyCenter\")) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_align_right',\n onclick: function() {\n document.execCommand('justifyRight');\n\n if (document.queryCommandState(\"justifyRight\")) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_align_justify',\n onclick: function() {\n document.execCommand('justifyFull');\n\n if (document.queryCommandState(\"justifyFull\")) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n }\n },\n {\n icon:'format_list_bulleted',\n onclick: function() {\n document.execCommand('insertUnorderedList');\n\n if (document.queryCommandState(\"insertUnorderedList\")) {\n this.classList.add('selected');\n } else {\n this.classList.remove('selected');\n }\n }\n }*/\n ];\n}\n\r\n\r\njSuites.image = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n minWidth: false,\r\n onchange: null,\r\n singleFile: true,\r\n remoteParser: null,\r\n text:{\r\n extensionNotAllowed:'The extension is not allowed',\r\n imageTooSmall:'The resolution is too low, try a image with a better resolution. width > 800px',\r\n }\r\n };\r\n\r\n // Loop through our object\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n // Upload icon\r\n el.classList.add('jupload');\r\n\r\n // Add image\r\n obj.addImage = function(file) {\r\n if (! file.date) {\r\n file.date = '';\r\n }\r\n var img = document.createElement('img');\r\n img.setAttribute('data-date', file.lastmodified ? file.lastmodified : file.date);\r\n img.setAttribute('data-name', file.name);\r\n img.setAttribute('data-size', file.size);\r\n img.setAttribute('data-small', file.small ? file.small : '');\r\n img.setAttribute('data-cover', file.cover ? 1 : 0);\r\n img.setAttribute('data-extension', file.extension);\r\n img.setAttribute('src', file.file);\r\n img.className = 'jfile';\r\n img.style.width = '100%';\r\n\r\n return img;\r\n }\r\n\r\n // Add image\r\n obj.addImages = function(files) {\r\n if (obj.options.singleFile == true) {\r\n el.innerHTML = '';\r\n }\r\n\r\n for (var i = 0; i < files.length; i++) {\r\n el.appendChild(obj.addImage(files[i]));\r\n }\r\n }\r\n\r\n obj.addFromFile = function(file) {\r\n var type = file.type.split('/');\r\n if (type[0] == 'image') {\r\n if (obj.options.singleFile == true) {\r\n el.innerHTML = '';\r\n }\r\n\r\n var imageFile = new FileReader();\r\n imageFile.addEventListener(\"load\", function (v) {\r\n\r\n var img = new Image();\r\n\r\n img.onload = function onload() {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n\r\n var data = {\r\n file: canvas.toDataURL(),\r\n extension: file.name.substr(file.name.lastIndexOf('.') + 1),\r\n name: file.name,\r\n size: file.size,\r\n lastmodified: file.lastModified,\r\n }\r\n var newImage = obj.addImage(data);\r\n el.appendChild(newImage);\r\n\r\n // Onchange\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(newImage);\r\n }\r\n };\r\n\r\n img.src = v.srcElement.result;\r\n });\r\n\r\n imageFile.readAsDataURL(file);\r\n } else {\r\n alert(text.extentionNotAllowed);\r\n }\r\n }\r\n\r\n obj.addFromUrl = function(src) {\r\n if (src.substr(0,4) != 'data' && ! obj.options.remoteParser) {\r\n console.error('remoteParser not defined in your initialization');\r\n } else {\r\n // This is to process cross domain images\r\n if (src.substr(0,4) == 'data') {\r\n var extension = src.split(';')\r\n extension = extension[0].split('/');\r\n extension = extension[1];\r\n } else {\r\n var extension = src.substr(src.lastIndexOf('.') + 1);\r\n // Work for cross browsers\r\n src = obj.options.remoteParser + src;\r\n }\r\n\r\n var img = new Image();\r\n\r\n img.onload = function onload() {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n\r\n canvas.toBlob(function(blob) {\r\n var data = {\r\n file: window.URL.createObjectURL(blob),\r\n extension: extension\r\n }\r\n var newImage = obj.addImage(data);\r\n el.appendChild(newImage);\r\n\r\n // Keep base64 ready to go\r\n var content = canvas.toDataURL();\r\n jSuites.files[data.file] = content.substr(content.indexOf(',') + 1);\r\n\r\n // Onchange\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(newImage);\r\n }\r\n });\r\n };\r\n\r\n img.src = src;\r\n }\r\n }\r\n\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.setAttribute('accept', 'image/*');\r\n attachmentInput.onchange = function() {\r\n for (var i = 0; i < this.files.length; i++) {\r\n obj.addFromFile(this.files[i]);\r\n }\r\n }\r\n\r\n el.addEventListener(\"dblclick\", function(e) {\r\n jSuites.click(attachmentInput);\r\n });\r\n\r\n el.addEventListener('dragenter', function(e) {\r\n el.style.border = '1px dashed #000';\r\n });\r\n\r\n el.addEventListener('dragleave', function(e) {\r\n el.style.border = '1px solid #eee';\r\n });\r\n\r\n el.addEventListener('dragstop', function(e) {\r\n el.style.border = '1px solid #eee';\r\n });\r\n\r\n el.addEventListener('dragover', function(e) {\r\n e.preventDefault();\r\n });\r\n\r\n el.addEventListener('drop', function(e) {\r\n e.preventDefault(); \r\n e.stopPropagation();\r\n\r\n\r\n var html = (e.originalEvent || e).dataTransfer.getData('text/html');\r\n var file = (e.originalEvent || e).dataTransfer.files;\r\n\r\n if (file.length) {\r\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\r\n obj.addFromFile(e.dataTransfer.files[i]);\r\n }\r\n } else if (html) {\r\n if (obj.options.singleFile == true) {\r\n el.innerHTML = '';\r\n }\r\n\r\n // Create temp element\r\n var div = document.createElement('div');\r\n div.innerHTML = html;\r\n\r\n // Extract images\r\n var img = div.querySelectorAll('img');\r\n\r\n if (img.length) {\r\n for (var i = 0; i < img.length; i++) {\r\n obj.addFromUrl(img[i].src);\r\n }\r\n }\r\n }\r\n\r\n el.style.border = '1px solid #eee';\r\n\r\n return false;\r\n });\r\n\r\n el.image = obj;\r\n\r\n return obj;\r\n});\r\n\r\n/**\n * (c) jLoading\n * https://github.com/paulhodel/jtools\n *\n * @author: Paul Hodel \n * @description: Page loading spin\n */\n\njSuites.loading = (function() {\n var obj = {};\n\n var loading = document.createElement('div');\n loading.className = 'jloading';\n\n obj.show = function() {\n document.body.appendChild(loading);\n };\n\n obj.hide = function() {\n document.body.removeChild(loading);\n };\n\n return obj;\n})();\r\n\r\n/**\n * (c) jLogin\n * https://github.com/paulhodel/jtools\n *\n * @author: Paul Hodel \n * @description: Login helper\n */\n\njSuites.login = (function(el, options) {\n var obj = {};\n obj.options = {};\n\n // Default configuration\n var defaults = {\n url: window.location.href,\n prepareRequest: null,\n accessToken: null,\n deviceToken: null,\n facebookUrl: null,\n facebookAuthentication: null,\n maxHeight: null,\n onload: null,\n onsuccess: null,\n onerror: null,\n message: null,\n logo: null,\n newProfile: false,\n newProfileUrl: false,\n newProfileLogin: false,\n fullscreen: false,\n newPasswordValidation: null,\n };\n\n // Loop through our object\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n obj.options[property] = options[property];\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Message console container\n if (! obj.options.message) {\n var messageElement = document.querySelector('.message');\n if (messageElement) {\n obj.options.message = messageElement;\n }\n }\n\n // Action\n var action = null;\n\n // Container\n var container = document.createElement('form');\n el.appendChild(container);\n\n // Logo\n var divLogo = document.createElement('div');\n divLogo.className = 'jlogin-logo'\n container.appendChild(divLogo);\n\n if (obj.options.logo) {\n var logo = document.createElement('img');\n logo.src = obj.options.logo;\n divLogo.appendChild(logo);\n }\n\n // Code\n var labelCode = document.createElement('label');\n labelCode.innerHTML = 'Please enter here the code received';\n var inputCode = document.createElement('input');\n inputCode.type = 'number';\n inputCode.id = 'code';\n inputCode.setAttribute('maxlength', 6);\n var divCode = document.createElement('div');\n divCode.appendChild(labelCode);\n divCode.appendChild(inputCode);\n\n // Hash\n var inputHash = document.createElement('input');\n inputHash.type = 'hidden';\n inputHash.name = 'h';\n var divHash = document.createElement('div');\n divHash.appendChild(inputHash);\n\n // Recovery\n var inputRecovery = document.createElement('input');\n inputRecovery.type = 'hidden';\n inputRecovery.name = 'recovery';\n inputRecovery.value = '1';\n var divRecovery = document.createElement('div');\n divRecovery.appendChild(inputRecovery);\n\n // Login\n var labelLogin = document.createElement('label');\n labelLogin.innerHTML = 'Login';\n var inputLogin = document.createElement('input');\n inputLogin.type = 'text';\n inputLogin.name = 'login';\n inputLogin.setAttribute('autocomplete', 'off');\n inputLogin.onkeyup = function() {\n this.value = this.value.toLowerCase().replace(/[^a-zA-Z0-9_+]+/gi, '');\n } \n var divLogin = document.createElement('div');\n divLogin.appendChild(labelLogin);\n divLogin.appendChild(inputLogin);\n\n // Name\n var labelName = document.createElement('label');\n labelName.innerHTML = 'Name';\n var inputName = document.createElement('input');\n inputName.type = 'text';\n inputName.name = 'name';\n var divName = document.createElement('div');\n divName.appendChild(labelName);\n divName.appendChild(inputName);\n\n // Email\n var labelUsername = document.createElement('label');\n labelUsername.innerHTML = 'E-mail';\n var inputUsername = document.createElement('input');\n inputUsername.type = 'text';\n inputUsername.name = 'username';\n inputUsername.setAttribute('autocomplete', 'new-username');\n var divUsername = document.createElement('div');\n divUsername.appendChild(labelUsername);\n divUsername.appendChild(inputUsername);\n\n // Password\n var labelPassword = document.createElement('label');\n labelPassword.innerHTML = 'New password';\n var inputPassword = document.createElement('input');\n inputPassword.type = 'password';\n inputPassword.name = 'password';\n inputPassword.setAttribute('autocomplete', 'new-password');\n var divPassword = document.createElement('div');\n divPassword.appendChild(labelPassword);\n divPassword.appendChild(inputPassword);\n divPassword.onkeydown = function(e) {\n if (e.keyCode == 13) {\n obj.execute();\n }\n }\n\n // Repeat password\n var labelRepeatPassword = document.createElement('label');\n labelRepeatPassword.innerHTML = 'Repeat the new password';\n var inputRepeatPassword = document.createElement('input');\n inputRepeatPassword.type = 'password';\n inputRepeatPassword.name = 'password';\n var divRepeatPassword = document.createElement('div');\n divRepeatPassword.appendChild(labelRepeatPassword);\n divRepeatPassword.appendChild(inputRepeatPassword);\n\n // Remember checkbox\n var labelRemember = document.createElement('label');\n labelRemember.innerHTML = 'Remember me on this device';\n var inputRemember = document.createElement('input');\n inputRemember.type = 'checkbox';\n inputRemember.name = 'remember';\n inputRemember.value = '1';\n labelRemember.appendChild(inputRemember);\n var divRememberButton = document.createElement('div');\n divRememberButton.className = 'rememberButton';\n divRememberButton.appendChild(labelRemember);\n\n // Login button\n var actionButton = document.createElement('input');\n actionButton.type = 'button';\n actionButton.value = 'Log In';\n actionButton.onclick = function() {\n obj.execute();\n }\n var divActionButton = document.createElement('div');\n divActionButton.appendChild(actionButton);\n\n // Cancel button\n var cancelButton = document.createElement('div');\n cancelButton.innerHTML = 'Cancel';\n cancelButton.className = 'cancelButton';\n cancelButton.onclick = function() {\n obj.requestAccess();\n }\n var divCancelButton = document.createElement('div');\n divCancelButton.appendChild(cancelButton);\n\n // Captcha\n var labelCaptcha = document.createElement('label');\n labelCaptcha.innerHTML = 'Please type here the code below';\n var inputCaptcha = document.createElement('input');\n inputCaptcha.type = 'text';\n inputCaptcha.name = 'captcha';\n var imageCaptcha = document.createElement('img');\n var divCaptcha = document.createElement('div');\n divCaptcha.className = 'jlogin-captcha';\n divCaptcha.appendChild(labelCaptcha);\n divCaptcha.appendChild(inputCaptcha);\n divCaptcha.appendChild(imageCaptcha);\n\n // Facebook\n var facebookButton = document.createElement('div');\n facebookButton.innerHTML = 'Login with Facebook';\n facebookButton.className = 'facebookButton';\n var divFacebookButton = document.createElement('div');\n divFacebookButton.appendChild(facebookButton);\n divFacebookButton.onclick = function() {\n obj.requestLoginViaFacebook();\n }\n // Forgot password\n var inputRequest = document.createElement('span');\n inputRequest.innerHTML = 'Request a new password';\n var divRequestButton = document.createElement('div');\n divRequestButton.className = 'requestButton';\n divRequestButton.appendChild(inputRequest);\n divRequestButton.onclick = function() {\n obj.requestNewPassword();\n }\n // Create a new Profile\n var inputNewProfile = document.createElement('span');\n inputNewProfile.innerHTML = 'Create a new profile';\n var divNewProfileButton = document.createElement('div');\n divNewProfileButton.className = 'newProfileButton';\n divNewProfileButton.appendChild(inputNewProfile);\n divNewProfileButton.onclick = function() {\n obj.newProfile();\n }\n\n el.className = 'jlogin';\n\n if (obj.options.fullscreen == true) {\n el.classList.add('jlogin-fullscreen');\n }\n\n /** \n * Show message\n */\n obj.showMessage = function(data) {\n var message = (typeof(data) == 'object') ? data.message : data;\n\n if (typeof(obj.options.showMessage) == 'function') {\n obj.options.showMessage(data);\n } else {\n jSuites.alert(data);\n }\n }\n\n /**\n * New profile\n */\n obj.newProfile = function() {\n container.innerHTML = '';\n container.appendChild(divLogo);\n if (obj.options.newProfileLogin) {\n container.appendChild(divLogin);\n }\n container.appendChild(divName);\n container.appendChild(divUsername);\n container.appendChild(divActionButton);\n if (obj.options.facebookAuthentication == true) {\n container.appendChild(divFacebookButton);\n }\n container.appendChild(divCancelButton);\n\n // Reset inputs\n inputLogin.value = '';\n inputUsername.value = '';\n inputPassword.value = '';\n\n // Button\n actionButton.value = 'Create new profile';\n\n // Action\n action = 'newProfile';\n }\n\n /**\n * Request the email with the recovery instructions\n */\n obj.requestNewPassword = function() {\n if (Array.prototype.indexOf.call(container.children, divCaptcha) >= 0) {\n var captcha = true;\n }\n\n container.innerHTML = '';\n container.appendChild(divLogo);\n container.appendChild(divRecovery);\n container.appendChild(divUsername);\n if (captcha) {\n container.appendChild(divCaptcha);\n }\n container.appendChild(divActionButton);\n container.appendChild(divCancelButton);\n actionButton.value = 'Request a new password';\n inputRecovery.value = 1;\n\n // Action\n action = 'requestNewPassword';\n }\n\n /**\n * Confirm recovery code\n */\n obj.codeConfirmation = function() {\n container.innerHTML = '';\n container.appendChild(divLogo);\n container.appendChild(divHash);\n container.appendChild(divCode);\n container.appendChild(divActionButton);\n container.appendChild(divCancelButton);\n actionButton.value = 'Confirm code';\n inputRecovery.value = 2;\n\n // Action\n action = 'codeConfirmation';\n }\n\n /**\n * Update my password\n */\n obj.changeMyPassword = function(hash) {\n container.innerHTML = '';\n container.appendChild(divLogo);\n container.appendChild(divHash);\n container.appendChild(divPassword);\n container.appendChild(divRepeatPassword);\n container.appendChild(divActionButton);\n container.appendChild(divCancelButton);\n actionButton.value = 'Change my password';\n inputHash.value = hash;\n\n // Action\n action = 'changeMyPassword';\n }\n\n /**\n * Request access default method\n */\n obj.requestAccess = function() {\n container.innerHTML = '';\n container.appendChild(divLogo);\n container.appendChild(divUsername);\n container.appendChild(divPassword);\n container.appendChild(divActionButton);\n if (obj.options.facebookAuthentication == true) {\n container.appendChild(divFacebookButton);\n }\n container.appendChild(divRequestButton);\n container.appendChild(divRememberButton);\n container.appendChild(divRequestButton);\n if (obj.options.newProfile == true) {\n container.appendChild(divNewProfileButton);\n }\n\n // Button\n actionButton.value = 'Login';\n\n // Password\n inputPassword.value = '';\n\n // Email persistence\n if (window.localStorage.getItem('username')) {\n inputUsername.value = window.localStorage.getItem('username');\n inputPassword.focus();\n } else {\n inputUsername.focus();\n }\n\n // Action\n action = 'requestAccess';\n }\n\n /**\n * Request login via facebook\n */\n obj.requestLoginViaFacebook = function() {\n if (typeof(deviceNotificationToken) == 'undefined') {\n FB.getLoginStatus(function(response) {\n if (! response.status || response.status != 'connected') {\n FB.login(function(response) {\n if (response.authResponse) {\n obj.execute({ f:response.authResponse.accessToken });\n } else {\n obj.showMessage('Not authorized by facebook');\n }\n }, {scope: 'public_profile,email'});\n } else {\n obj.execute({ f:response.authResponse.accessToken });\n }\n }, true);\n } else {\n jDestroy = function() {\n fbLogin.removeEventListener('loadstart', jStart);\n fbLogin.removeEventListener('loaderror', jError);\n fbLogin.removeEventListener('exit', jExit);\n fbLogin.close();\n fbLogin = null;\n }\n\n jStart = function(event) {\n var url = event.url;\n if (url.indexOf(\"access_token\") >= 0) {\n setTimeout(function(){\n var u = url.match(/=(.*?)&/);\n if (u[1].length > 32) {\n obj.execute({ f:u[1] });\n }\n jDestroy();\n },500);\n }\n\n if (url.indexOf(\"error=access_denied\") >= 0) {\n setTimeout(jDestroy ,500);\n // Not authorized by facebook\n obj.showMessage('Not authorized by facebook');\n }\n }\n\n jError = function(event) {\n jDestroy();\n }\n \n jExit = function(event) {\n jDestroy();\n }\n\n fbLogin = window.open(obj.options.facebookUrl, \"_blank\", \"location=no,closebuttoncaption=Exit,disallowoverscroll=yes,toolbar=no\");\n fbLogin.addEventListener('loadstart', jStart);\n fbLogin.addEventListener('loaderror', jError);\n fbLogin.addEventListener('exit', jExit);\n }\n\n // Action\n action = 'requestLoginViaFacebook';\n }\n\n // Perform request\n obj.execute = function(data) {\n // New profile\n if (action == 'newProfile') {\n var pattern = new RegExp(/^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/);\n if (! inputUsername.value || ! pattern.test(inputUsername.value)) {\n var message = 'Invalid e-mail address'; \n }\n\n var pattern = new RegExp(/^[a-zA-Z0-9\\_\\-\\.\\s+]+$/);\n if (! inputLogin.value || ! pattern.test(inputLogin.value)) {\n var message = 'Invalid username, please use only characters and numbers';\n }\n\n if (message) {\n obj.showMessage(message);\n return false;\n }\n } else if (action == 'changeMyPassword') {\r\n if (inputPassword.value.length < 3) {\r\n var message = 'Password is too short';\r\n } else if (inputPassword.value != inputRepeatPassword.value) {\r\n var message = 'Password should match';\r\n } else {\r\n if (typeof(obj.options.newPasswordValidation) == 'function') {\r\n var val = obj.options.newPasswordValidation(obj, inputPassword.value, inputPassword.value);\r\n if (val != undefined) {\r\n message = val;\r\n }\r\n }\r\n }\n\n if (message) {\r\n obj.showMessage(message);\r\n return false;\r\n }\r\n }\n\n // Keep email\n if (inputUsername.value != '') {\n window.localStorage.setItem('username', inputUsername.value);\n }\n\n // Captcha\n if (Array.prototype.indexOf.call(container.children, divCaptcha) >= 0) {\n if (inputCaptcha.value == '') {\n obj.showMessage('Please enter the captch code below');\n return false;\n }\n }\n\n // Url\n var url = obj.options.url;\n\n // Device token\n if (obj.options.deviceToken) {\n url += '?token=' + obj.options.deviceToken;\n }\n\n // Callback\n var onsuccess = function(result) {\n if (result) {\n // Successfully response\n if (result.success == 1) {\n // Recovery process\n if (action == 'requestNewPassword') {\n obj.codeConfirmation();\n } else if (action == 'codeConfirmation') {\n obj.requestAccess();\n } else if (action == 'newProfile') {\n obj.requestAccess();\n // New profile\n result.newProfile = true;\n }\n\n // Token\n if (result.token) {\n // Set token\n obj.options.accessToken = result.token;\n // Save token\n window.localStorage.setItem('Access-Token', result.token);\n }\n }\n\n // Show message\n if (result.message) {\n // Show message\n obj.showMessage(result.message)\n }\n\n // Request captcha code\n if (! result.data) {\n if (Array.prototype.indexOf.call(container.children, divCaptcha) >= 0) {\n divCaptcha.remove();\n }\n } else {\n container.insertBefore(divCaptcha, divActionButton);\n imageCaptcha.setAttribute('src', 'data:image/png;base64,' + result.data);\n }\n\n // Give time to user see the message\n if (result.hash) {\n // Change password\n obj.changeMyPassword(result.hash);\n } else if (result.url) {\n // App initialization\n if (result.success == 1) {\n if (typeof(obj.options.onsuccess) == 'function') {\n obj.options.onsuccess(result);\n } else {\n if (result.message) {\n setTimeout(function() { window.location.href = result.url; }, 2000);\n } else {\n window.location.href = result.url;\n }\n }\n } else {\n if (typeof(obj.options.onerror) == 'function') {\n obj.options.onerror(result);\n }\n }\n }\n }\n }\n\n // Password\n if (! data) {\n var data = jSuites.getFormElements(el);\n // Encode passworfd\n if (data.password) {\n data.password = jSuites.login.sha512(data.password);\n }\n // Recovery code\n if (Array.prototype.indexOf.call(container.children, divCode) >= 0 && inputCode.value) {\n data.h = jSuites.login.sha512(inputCode.value);\n }\n }\n\n // Loading\n el.classList.add('jlogin-loading');\n\n // Url\n var url = (action == 'newProfile' && obj.options.newProfileUrl) ? obj.options.newProfileUrl : obj.options.url;\n\n // Remote call\n jSuites.ajax({\n url: url,\n method: 'POST',\n dataType: 'json',\n data: data,\n success: function(result) {\n // Remove loading\n el.classList.remove('jlogin-loading');\n // Callback\n onsuccess(result);\n },\n error: function(result) {\n // Error\n el.classList.remove('jlogin-loading');\n\n if (typeof(obj.options.onerror) == 'function') {\n obj.options.onerror(result);\n }\n }\n });\n }\n\n var queryString = window.location.href.split('?');\r\n if (queryString[1] && queryString[1].length == 130 && queryString[1].substr(0,2) == 'h=') {\r\n obj.changeMyPassword(queryString[1].substr(2));\r\n } else {\n obj.requestAccess();\n }\n\n return obj;\n});\n\njSuites.login.sha512 = (function(str) {\n function int64(msint_32, lsint_32) {\n this.highOrder = msint_32;\n this.lowOrder = lsint_32;\n }\n\n var H = [new int64(0x6a09e667, 0xf3bcc908), new int64(0xbb67ae85, 0x84caa73b),\n new int64(0x3c6ef372, 0xfe94f82b), new int64(0xa54ff53a, 0x5f1d36f1),\n new int64(0x510e527f, 0xade682d1), new int64(0x9b05688c, 0x2b3e6c1f),\n new int64(0x1f83d9ab, 0xfb41bd6b), new int64(0x5be0cd19, 0x137e2179)];\n\n var K = [new int64(0x428a2f98, 0xd728ae22), new int64(0x71374491, 0x23ef65cd),\n new int64(0xb5c0fbcf, 0xec4d3b2f), new int64(0xe9b5dba5, 0x8189dbbc),\n new int64(0x3956c25b, 0xf348b538), new int64(0x59f111f1, 0xb605d019),\n new int64(0x923f82a4, 0xaf194f9b), new int64(0xab1c5ed5, 0xda6d8118),\n new int64(0xd807aa98, 0xa3030242), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, 0xd5ffb4e2),\n new int64(0x72be5d74, 0xf27b896f), new int64(0x80deb1fe, 0x3b1696b1),\n new int64(0x9bdc06a7, 0x25c71235), new int64(0xc19bf174, 0xcf692694),\n new int64(0xe49b69c1, 0x9ef14ad2), new int64(0xefbe4786, 0x384f25e3),\n new int64(0x0fc19dc6, 0x8b8cd5b5), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, 0xbd41fbd4), new int64(0x76f988da, 0x831153b5),\n new int64(0x983e5152, 0xee66dfab), new int64(0xa831c66d, 0x2db43210),\n new int64(0xb00327c8, 0x98fb213f), new int64(0xbf597fc7, 0xbeef0ee4),\n new int64(0xc6e00bf3, 0x3da88fc2), new int64(0xd5a79147, 0x930aa725),\n new int64(0x06ca6351, 0xe003826f), new int64(0x14292967, 0x0a0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, 0x9d95b3df),\n new int64(0x650a7354, 0x8baf63de), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(0x81c2c92e, 0x47edaee6), new int64(0x92722c85, 0x1482353b),\n new int64(0xa2bfe8a1, 0x4cf10364), new int64(0xa81a664b, 0xbc423001),\n new int64(0xc24b8b70, 0xd0f89791), new int64(0xc76c51a3, 0x0654be30),\n new int64(0xd192e819, 0xd6ef5218), new int64(0xd6990624, 0x5565a910),\n new int64(0xf40e3585, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, 0xb8d2d0c8), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, 0xdf8eeb99), new int64(0x34b0bcb5, 0xe19b48a8),\n new int64(0x391c0cb3, 0xc5c95a63), new int64(0x4ed8aa4a, 0xe3418acb),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, 0xd6b2b8a3),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(0x84c87814, 0xa1f0ab72), new int64(0x8cc70208, 0x1a6439ec),\n new int64(0x90befffa, 0x23631e28), new int64(0xa4506ceb, 0xde82bde9),\n new int64(0xbef9a3f7, 0xb2c67915), new int64(0xc67178f2, 0xe372532b),\n new int64(0xca273ece, 0xea26619c), new int64(0xd186b8c7, 0x21c0c207),\n new int64(0xeada7dd6, 0xcde0eb1e), new int64(0xf57d4f7f, 0xee6ed178),\n new int64(0x06f067aa, 0x72176fba), new int64(0x0a637dc5, 0xa2c898a6),\n new int64(0x113f9804, 0xbef90dae), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, 0x9c100d4c),\n new int64(0x4cc5d4be, 0xcb3e42b6), new int64(0x597f299c, 0xfc657e2a),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)];\n\n var W = new Array(64);\n var a, b, c, d, e, f, g, h, i, j;\n var T1, T2;\n var charsize = 8;\n\n function utf8_encode(str) {\n return unescape(encodeURIComponent(str));\n }\n\n function str2binb(str) {\n var bin = [];\n var mask = (1 << charsize) - 1;\n var len = str.length * charsize;\n \n for (var i = 0; i < len; i += charsize) {\n bin[i >> 5] |= (str.charCodeAt(i / charsize) & mask) << (32 - charsize - (i % 32));\n }\n \n return bin;\n }\n\n function binb2hex(binarray) {\n var hex_tab = \"0123456789abcdef\";\n var str = \"\";\n var length = binarray.length * 4;\n var srcByte;\n\n for (var i = 0; i < length; i += 1) {\n srcByte = binarray[i >> 2] >> ((3 - (i % 4)) * 8);\n str += hex_tab.charAt((srcByte >> 4) & 0xF) + hex_tab.charAt(srcByte & 0xF);\n }\n\n return str;\n }\n\n function safe_add_2(x, y) {\n var lsw, msw, lowOrder, highOrder;\n\n lsw = (x.lowOrder & 0xFFFF) + (y.lowOrder & 0xFFFF);\n msw = (x.lowOrder >>> 16) + (y.lowOrder >>> 16) + (lsw >>> 16);\n lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n lsw = (x.highOrder & 0xFFFF) + (y.highOrder & 0xFFFF) + (msw >>> 16);\n msw = (x.highOrder >>> 16) + (y.highOrder >>> 16) + (lsw >>> 16);\n highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n return new int64(highOrder, lowOrder);\n }\n\n function safe_add_4(a, b, c, d) {\n var lsw, msw, lowOrder, highOrder;\n\n lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) + (c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF);\n msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) + (c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (lsw >>> 16);\n lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n lsw = (a.highOrder & 0xFFFF) + (b.highOrder & 0xFFFF) + (c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (msw >>> 16);\n msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) + (c.highOrder >>> 16) + (d.highOrder >>> 16) + (lsw >>> 16);\n highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n return new int64(highOrder, lowOrder);\n }\n\n function safe_add_5(a, b, c, d, e) {\n var lsw, msw, lowOrder, highOrder;\n\n lsw = (a.lowOrder & 0xFFFF) + (b.lowOrder & 0xFFFF) + (c.lowOrder & 0xFFFF) + (d.lowOrder & 0xFFFF) + (e.lowOrder & 0xFFFF);\n msw = (a.lowOrder >>> 16) + (b.lowOrder >>> 16) + (c.lowOrder >>> 16) + (d.lowOrder >>> 16) + (e.lowOrder >>> 16) + (lsw >>> 16);\n lowOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n lsw = (a.highOrder & 0xFFFF) + (b.highOrder & 0xFFFF) + (c.highOrder & 0xFFFF) + (d.highOrder & 0xFFFF) + (e.highOrder & 0xFFFF) + (msw >>> 16);\n msw = (a.highOrder >>> 16) + (b.highOrder >>> 16) + (c.highOrder >>> 16) + (d.highOrder >>> 16) + (e.highOrder >>> 16) + (lsw >>> 16);\n highOrder = ((msw & 0xFFFF) << 16) | (lsw & 0xFFFF);\n\n return new int64(highOrder, lowOrder);\n }\n\n function maj(x, y, z) {\n return new int64(\n (x.highOrder & y.highOrder) ^ (x.highOrder & z.highOrder) ^ (y.highOrder & z.highOrder),\n (x.lowOrder & y.lowOrder) ^ (x.lowOrder & z.lowOrder) ^ (y.lowOrder & z.lowOrder)\n );\n }\n\n function ch(x, y, z) {\n return new int64(\n (x.highOrder & y.highOrder) ^ (~x.highOrder & z.highOrder),\n (x.lowOrder & y.lowOrder) ^ (~x.lowOrder & z.lowOrder)\n );\n }\n\n function rotr(x, n) {\n if (n <= 32) {\n return new int64(\n (x.highOrder >>> n) | (x.lowOrder << (32 - n)),\n (x.lowOrder >>> n) | (x.highOrder << (32 - n))\n );\n } else {\n return new int64(\n (x.lowOrder >>> n) | (x.highOrder << (32 - n)),\n (x.highOrder >>> n) | (x.lowOrder << (32 - n))\n );\n }\n }\n\n function sigma0(x) {\n var rotr28 = rotr(x, 28);\n var rotr34 = rotr(x, 34);\n var rotr39 = rotr(x, 39);\n\n return new int64(\n rotr28.highOrder ^ rotr34.highOrder ^ rotr39.highOrder,\n rotr28.lowOrder ^ rotr34.lowOrder ^ rotr39.lowOrder\n );\n }\n\n function sigma1(x) {\n var rotr14 = rotr(x, 14);\n var rotr18 = rotr(x, 18);\n var rotr41 = rotr(x, 41);\n\n return new int64(\n rotr14.highOrder ^ rotr18.highOrder ^ rotr41.highOrder,\n rotr14.lowOrder ^ rotr18.lowOrder ^ rotr41.lowOrder\n );\n }\n\n function gamma0(x) {\n var rotr1 = rotr(x, 1), rotr8 = rotr(x, 8), shr7 = shr(x, 7);\n\n return new int64(\n rotr1.highOrder ^ rotr8.highOrder ^ shr7.highOrder,\n rotr1.lowOrder ^ rotr8.lowOrder ^ shr7.lowOrder\n );\n }\n\n function gamma1(x) {\n var rotr19 = rotr(x, 19);\n var rotr61 = rotr(x, 61);\n var shr6 = shr(x, 6);\n\n return new int64(\n rotr19.highOrder ^ rotr61.highOrder ^ shr6.highOrder,\n rotr19.lowOrder ^ rotr61.lowOrder ^ shr6.lowOrder\n );\n }\n\n function shr(x, n) {\n if (n <= 32) {\n return new int64(\n x.highOrder >>> n,\n x.lowOrder >>> n | (x.highOrder << (32 - n))\n );\n } else {\n return new int64(\n 0,\n x.highOrder << (32 - n)\n );\n }\n }\n\n var str = utf8_encode(str);\n var strlen = str.length*charsize;\n str = str2binb(str);\n\n str[strlen >> 5] |= 0x80 << (24 - strlen % 32);\n str[(((strlen + 128) >> 10) << 5) + 31] = strlen;\n\n for (var i = 0; i < str.length; i += 32) {\n a = H[0];\n b = H[1];\n c = H[2];\n d = H[3];\n e = H[4];\n f = H[5];\n g = H[6];\n h = H[7];\n\n for (var j = 0; j < 80; j++) {\n if (j < 16) {\n W[j] = new int64(str[j*2 + i], str[j*2 + i + 1]);\n } else {\n W[j] = safe_add_4(gamma1(W[j - 2]), W[j - 7], gamma0(W[j - 15]), W[j - 16]);\n }\n\n T1 = safe_add_5(h, sigma1(e), ch(e, f, g), K[j], W[j]);\n T2 = safe_add_2(sigma0(a), maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add_2(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add_2(T1, T2);\n }\n\n H[0] = safe_add_2(a, H[0]);\n H[1] = safe_add_2(b, H[1]);\n H[2] = safe_add_2(c, H[2]);\n H[3] = safe_add_2(d, H[3]);\n H[4] = safe_add_2(e, H[4]);\n H[5] = safe_add_2(f, H[5]);\n H[6] = safe_add_2(g, H[6]);\n H[7] = safe_add_2(h, H[7]);\n }\n\n var binarray = [];\n for (var i = 0; i < H.length; i++) {\n binarray.push(H[i].highOrder);\n binarray.push(H[i].lowOrder);\n }\n\n return binb2hex(binarray);\n});\r\n\r\n/**\r\n * (c) jTools Input Mask\r\n * https://github.com/paulhodel/jtools\r\n *\r\n * @author: Paul Hodel \r\n * @description: Input mask\r\n */\r\n\r\njSuites.mask = (function() {\r\n var obj = {};\r\n var index = 0;\r\n var values = []\r\n var pieces = [];\r\n\r\n obj.run = function(value, mask, decimal) {\r\n if (value && mask) {\r\n if (! decimal) {\r\n decimal = '.';\r\n }\r\n if (value == Number(value)) {\r\n var number = (''+value).split('.');\r\n var value = number[0];\r\n var valueDecimal = number[1];\r\n } else {\r\n value = '' + value;\r\n }\r\n index = 0;\r\n values = [];\r\n // Create mask token\r\n obj.prepare(mask);\r\n // Current value\r\n var currentValue = value;\r\n if (currentValue) {\r\n // Checking current value\r\n for (var i = 0; i < currentValue.length; i++) {\r\n if (currentValue[i] != null) {\r\n obj.process(currentValue[i]);\r\n }\r\n }\r\n }\r\n if (valueDecimal) {\r\n obj.process(decimal);\r\n var currentValue = valueDecimal;\r\n if (currentValue) {\r\n // Checking current value\r\n for (var i = 0; i < currentValue.length; i++) {\r\n if (currentValue[i] != null) {\r\n obj.process(currentValue[i]);\r\n }\r\n }\r\n }\r\n }\r\n // Formatted value\r\n return values.join('');\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n obj.apply = function(e) {\r\n if (e.target && ! e.target.getAttribute('readonly')) {\r\n var mask = e.target.getAttribute('data-mask');\r\n if (mask && e.keyCode > 46) {\r\n index = 0;\r\n values = [];\r\n // Create mask token\r\n obj.prepare(mask);\r\n // Current value\r\n if (e.target.selectionStart < e.target.selectionEnd) {\r\n var currentValue = e.target.value.substring(0, e.target.selectionStart); \r\n } else {\r\n var currentValue = e.target.value;\r\n }\r\n if (currentValue) {\r\n // Checking current value\r\n for (var i = 0; i < currentValue.length; i++) {\r\n if (currentValue[i] != null) {\r\n obj.process(currentValue[i]);\r\n }\r\n }\r\n }\r\n // New input\r\n obj.process(obj.fromKeyCode(e));\r\n // Update value to the element\r\n e.target.value = values.join('');\r\n if (pieces.length == values.length && pieces[pieces.length-1].length == values[values.length-1].length) {\r\n e.target.setAttribute('data-completed', 'true');\r\n } else {\r\n e.target.setAttribute('data-completed', 'false');\r\n }\r\n // Prevent default\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Process inputs and save to values\r\n */\r\n obj.process = function(input) {\r\n do {\r\n if (pieces[index] == 'mm') {\r\n if (values[index] == null || values[index] == '') {\r\n if (parseInt(input) > 1 && parseInt(input) < 10) {\r\n values[index] = '0' + input;\r\n index++;\r\n return true;\r\n } else if (parseInt(input) < 10) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (values[index] == 1 && values[index] < 2 && parseInt(input) < 3) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else if (values[index] == 0 && values[index] < 10) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else {\r\n return false\r\n }\r\n }\r\n } else if (pieces[index] == 'dd') {\r\n if (values[index] == null || values[index] == '') {\r\n if (parseInt(input) > 3 && parseInt(input) < 10) {\r\n values[index] = '0' + input;\r\n index++;\r\n return true;\r\n } else if (parseInt(input) < 10) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (values[index] == 3 && parseInt(input) < 2) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else if (values[index] < 3 && parseInt(input) < 10) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else {\r\n return false\r\n }\r\n }\r\n } else if (pieces[index] == 'hh24') {\r\n if (values[index] == null || values[index] == '') {\r\n if (parseInt(input) > 2 && parseInt(input) < 10) {\r\n values[index] = '0' + input;\r\n index++;\r\n return true;\r\n } else if (parseInt(input) < 10) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (values[index] == 2 && parseInt(input) < 4) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else if (values[index] < 2 && parseInt(input) < 10) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else {\r\n return false\r\n }\r\n }\r\n } else if (pieces[index] == 'hh') {\r\n if (values[index] == null || values[index] == '') {\r\n if (parseInt(input) > 1 && parseInt(input) < 10) {\r\n values[index] = '0' + input;\r\n index++;\r\n return true;\r\n } else if (parseInt(input) < 10) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (values[index] == 1 && parseInt(input) < 3) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else if (values[index] < 1 && parseInt(input) < 10) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else {\r\n return false\r\n }\r\n }\r\n } else if (pieces[index] == 'mi' || pieces[index] == 'ss') {\r\n if (values[index] == null || values[index] == '') {\r\n if (parseInt(input) > 5 && parseInt(input) < 10) {\r\n values[index] = '0' + input;\r\n index++;\r\n return true;\r\n } else if (parseInt(input) < 10) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (parseInt(input) < 10) {\r\n values[index] += input;\r\n index++;\r\n return true;\r\n } else {\r\n return false\r\n }\r\n }\r\n } else if (pieces[index] == 'yy' || pieces[index] == 'yyyy') {\r\n if (parseInt(input) < 10) {\r\n if (values[index] == null || values[index] == '') {\r\n values[index] = input;\r\n } else {\r\n values[index] += input;\r\n }\r\n \r\n if (values[index].length == pieces[index].length) {\r\n index++;\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else if (pieces[index] == '#' || pieces[index] == '#.##' || pieces[index] == '#,##' || pieces[index] == '# ##') {\r\n if (input.match(/[0-9]/g)) {\r\n if (pieces[index] == '#.##') {\r\n var separator = '.';\r\n } else if (pieces[index] == '#,##') {\r\n var separator = ',';\r\n } else if (pieces[index] == '# ##') {\r\n var separator = ' ';\r\n } else {\r\n var separator = '';\r\n }\r\n if (values[index] == null || values[index] == '') {\r\n values[index] = input;\r\n } else {\r\n values[index] += input;\r\n if (separator) {\r\n values[index] = values[index].match(/[0-9]/g).join('');\r\n var t = [];\r\n var s = 0;\r\n for (var j = values[index].length - 1; j >= 0 ; j--) {\r\n t.push(values[index][j]);\r\n s++;\r\n if (! (s % 3)) {\r\n t.push(separator);\r\n }\r\n }\r\n t = t.reverse();\r\n values[index] = t.join('');\r\n if (values[index].substr(0,1) == separator) {\r\n values[index] = values[index].substr(1);\r\n } \r\n }\r\n }\r\n return true;\r\n } else {\r\n if (pieces[index] == '#.##' && input == '.') {\r\n // Do nothing\r\n } else if (pieces[index] == '#,##' && input == ',') {\r\n // Do nothing\r\n } else if (pieces[index] == '# ##' && input == ' ') {\r\n // Do nothing\r\n } else {\r\n if (values[index]) {\r\n index++;\r\n if (pieces[index]) {\r\n if (pieces[index] == input) {\r\n values[index] = input;\r\n return true;\r\n } else {\r\n if (pieces[index] == '0' && pieces[index+1] == input) {\r\n index++;\r\n values[index] = input;\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n } else if (pieces[index] == '0') {\r\n if (input.match(/[0-9]/g)) {\r\n values[index] = input;\r\n index++;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else if (pieces[index] == 'a') {\r\n if (input.match(/[a-zA-Z]/g)) {\r\n values[index] = input;\r\n index++;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (pieces[index] != null) {\r\n if (pieces[index] == '\\\\a') {\r\n var v = 'a';\r\n } else if (pieces[index] == '\\\\0') {\r\n var v = '0';\r\n } else if (pieces[index] == '[-]') {\r\n if (input == '-' || input == '+') {\r\n var v = input;\r\n } else {\r\n var v = ' ';\r\n }\r\n } else {\r\n var v = pieces[index];\r\n }\r\n values[index] = v;\r\n if (input == v) {\r\n index++;\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n index++;\r\n } while (pieces[index]);\r\n }\r\n\r\n /**\r\n * Create tokens for the mask\r\n */\r\n obj.prepare = function(mask) {\r\n pieces = [];\r\n for (var i = 0; i < mask.length; i++) {\r\n if (mask[i].match(/[0-9]|[a-z]|\\\\/g)) {\r\n if (mask[i] == 'y' && mask[i+1] == 'y' && mask[i+2] == 'y' && mask[i+3] == 'y') {\r\n pieces.push('yyyy');\r\n i += 3;\r\n } else if (mask[i] == 'y' && mask[i+1] == 'y') {\r\n pieces.push('yy');\r\n i++;\r\n } else if (mask[i] == 'm' && mask[i+1] == 'm' && mask[i+2] == 'm' && mask[i+3] == 'm') {\r\n pieces.push('mmmm');\r\n i += 3;\r\n } else if (mask[i] == 'm' && mask[i+1] == 'm' && mask[i+2] == 'm') {\r\n pieces.push('mmm');\r\n i += 2;\r\n } else if (mask[i] == 'm' && mask[i+1] == 'm') {\r\n pieces.push('mm');\r\n i++;\r\n } else if (mask[i] == 'd' && mask[i+1] == 'd') {\r\n pieces.push('dd');\r\n i++;\r\n } else if (mask[i] == 'h' && mask[i+1] == 'h' && mask[i+2] == '2' && mask[i+3] == '4') {\r\n pieces.push('hh24');\r\n i += 3;\r\n } else if (mask[i] == 'h' && mask[i+1] == 'h') {\r\n pieces.push('hh');\r\n i++;\r\n } else if (mask[i] == 'm' && mask[i+1] == 'i') {\r\n pieces.push('mi');\r\n i++;\r\n } else if (mask[i] == 's' && mask[i+1] == 's') {\r\n pieces.push('ss');\r\n i++;\r\n } else if (mask[i] == 'a' && mask[i+1] == 'm') {\r\n pieces.push('am');\r\n i++;\r\n } else if (mask[i] == 'p' && mask[i+1] == 'm') {\r\n pieces.push('pm');\r\n i++;\r\n } else if (mask[i] == '\\\\' && mask[i+1] == '0') {\r\n pieces.push('\\\\0');\r\n i++;\r\n } else if (mask[i] == '\\\\' && mask[i+1] == 'a') {\r\n pieces.push('\\\\a');\r\n i++;\r\n } else {\r\n pieces.push(mask[i]);\r\n }\r\n } else {\r\n if (mask[i] == '#' && mask[i+1] == '.' && mask[i+2] == '#' && mask[i+3] == '#') {\r\n pieces.push('#.##');\r\n i += 3;\r\n } else if (mask[i] == '#' && mask[i+1] == ',' && mask[i+2] == '#' && mask[i+3] == '#') {\r\n pieces.push('#,##');\r\n i += 3;\r\n } else if (mask[i] == '#' && mask[i+1] == ' ' && mask[i+2] == '#' && mask[i+3] == '#') {\r\n pieces.push('# ##');\r\n i += 3;\r\n } else if (mask[i] == '[' && mask[i+1] == '-' && mask[i+2] == ']') {\r\n pieces.push('[-]');\r\n i += 2;\r\n } else {\r\n pieces.push(mask[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** \r\n * Thanks for the collaboration\r\n */\r\n obj.fromKeyCode = function(e) {\r\n var _to_ascii = {\r\n '188': '44',\r\n '109': '45',\r\n '190': '46',\r\n '191': '47',\r\n '192': '96',\r\n '220': '92',\r\n '222': '39',\r\n '221': '93',\r\n '219': '91',\r\n '173': '45',\r\n '187': '61', //IE Key codes\r\n '186': '59', //IE Key codes\r\n '189': '45' //IE Key codes\r\n }\r\n\r\n var shiftUps = {\r\n \"96\": \"~\",\r\n \"49\": \"!\",\r\n \"50\": \"@\",\r\n \"51\": \"#\",\r\n \"52\": \"$\",\r\n \"53\": \"%\",\r\n \"54\": \"^\",\r\n \"55\": \"&\",\r\n \"56\": \"*\",\r\n \"57\": \"(\",\r\n \"48\": \")\",\r\n \"45\": \"_\",\r\n \"61\": \"+\",\r\n \"91\": \"{\",\r\n \"93\": \"}\",\r\n \"92\": \"|\",\r\n \"59\": \":\",\r\n \"39\": \"\\\"\",\r\n \"44\": \"<\",\r\n \"46\": \">\",\r\n \"47\": \"?\"\r\n };\r\n\r\n var c = e.which;\r\n\r\n if (_to_ascii.hasOwnProperty(c)) {\r\n c = _to_ascii[c];\r\n }\r\n\r\n if (!e.shiftKey && (c >= 65 && c <= 90)) {\r\n c = String.fromCharCode(c + 32);\r\n } else if (e.shiftKey && shiftUps.hasOwnProperty(c)) {\r\n c = shiftUps[c];\r\n } else if (96 <= c && c <= 105) {\r\n c = String.fromCharCode(c - 48);\r\n } else {\r\n c = String.fromCharCode(c);\r\n }\r\n\r\n return c;\r\n }\r\n\r\n return obj;\r\n})();\r\n\r\njSuites.mobile = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n if (jSuites.el) {\r\n jSuites.el.addEventListener('mousedown', function(e) {\r\n if (e.target.classList.contains('option-title')) {\r\n if (e.target.classList.contains('selected')) {\r\n e.target.classList.remove('selected');\r\n } else {\r\n e.target.classList.add('selected');\r\n }\r\n }\r\n });\r\n }\r\n\r\n return obj;\r\n})();\r\n\r\njSuites.pages = (function() {\r\n var container = null;\r\n var current = null;\r\n\r\n // Create a page\r\n var createPage = function(options, callback) {\r\n // Create page\r\n var page = document.createElement('div');\r\n page.classList.add('page');\r\n\r\n // Always hidden\r\n page.style.display = 'none';\r\n\r\n // Keep options\r\n page.options = options ? options : {};\r\n\r\n if (! current) {\r\n container.appendChild(page);\r\n } else {\r\n container.insertBefore(page, current.nextSibling);\r\n }\r\n\r\n jSuites.ajax({\r\n url: page.options.url,\r\n method: 'GET',\r\n success: function(result) {\r\n // Push to refresh controls\r\n jSuites.refresh(page, page.options.onpush);\r\n\n // Open page\r\n page.innerHTML = result;\r\n // Get javascript\r\n var script = page.getElementsByTagName('script');\r\n // Run possible inline scripts\r\n for (var i = 0; i < script.length; i++) {\r\n // Get type\r\n var type = script[i].getAttribute('type');\r\n if (! type || type == 'text/javascript') {\r\n eval(script[i].innerHTML);\r\n }\r\n }\r\n // Set title\r\n page.setTitle = function(text) {\r\n this.children[0].children[0].children[1].innerHTML = text;\r\n }\r\n // Show page\r\n if (! page.options.closed) {\r\n showPage(page);\r\n }\r\n // Onload callback\r\n if (typeof(page.options.onload) == 'function') {\r\n page.options.onload(page);\r\n }\r\n // Force callback\r\n if (typeof(callback) == 'function') {\r\n callback(page);\r\n }\r\n }\r\n });\r\n\r\n return page;\r\n }\r\n\r\n var showPage = function(page, ignoreHistory, callback) {\r\n if (current) {\r\n if (current == page) {\r\n current = page;\r\n } else {\r\n // Keep scroll in the top\r\n window.scrollTo({ top: 0 });\r\n\r\n // Show page\r\n page.style.display = '';\r\n\r\n var a = Array.prototype.indexOf.call(container.children, current);\r\n var b = Array.prototype.indexOf.call(container.children, page);\r\n\r\n // Leave\r\n if (typeof(current.options.onleave) == 'function') {\r\n current.options.onleave(current, page, ignoreHistory);\r\n }\r\n\r\n jSuites.slideLeft(container, (a < b ? 0 : 1), function() {\r\n current.style.display = 'none';\r\n current = page;\r\n });\r\n\r\n // Enter\r\n if (typeof(page.options.onenter) == 'function') {\r\n page.options.onenter(page, current, ignoreHistory);\r\n }\r\n }\r\n } else {\r\n // Show\r\n page.style.display = '';\r\n\r\n // Keep current\r\n current = page;\r\n\r\n // Enter\r\n if (typeof(page.options.onenter) == 'function') {\r\n page.options.onenter(page);\r\n }\r\n }\r\n\r\n // Add history\r\n if (! ignoreHistory) {\r\n // Add history\r\n window.history.pushState({ route: page.options.route }, page.options.title, page.options.route);\r\n }\r\n\r\n // Callback\r\n if (typeof(callback) == 'function') {\r\n callback(page);\r\n }\r\n }\r\n\r\n // Init method\r\n var obj = function(route, mixed) {\r\n\r\n // Create page container\r\n if (! container) {\r\n container = document.querySelector('.pages');\r\n if (! container) {\r\n container = document.createElement('div');\r\n container.className = 'pages';\r\n }\r\n\r\n // Append container to the application\r\n if (jSuites.el) {\r\n jSuites.el.appendChild(container);\r\n } else {\r\n document.body.appendChild(container);\r\n }\r\n }\r\n\r\n if (! obj.pages[route]) {\r\n if (! route) {\r\n alert('Error, no route provided');\r\n } else {\r\n if (typeof(mixed) == 'function') {\r\n var options = {};\r\n var callback = mixed;\r\n } else {\r\n // Page options\r\n var options = mixed ? mixed : {};\r\n }\r\n\r\n // Closed\r\n options.closed = mixed && mixed.closed ? 1 : 0;\r\n // Keep Route\r\n options.route = route;\r\n\r\n // New page url\r\n if (! options.url) {\r\n var routePath = route.split('#');\r\n options.url = jSuites.pages.path + routePath[0] + '.html';\r\n }\r\n // Title\r\n if (! options.title) {\r\n options.title = 'Untitled';\r\n }\r\n\r\n // Create new page\r\n obj.pages[route] = createPage(options, callback ? callback : null);\r\n }\r\n } else {\r\n // Update config\r\n if (mixed) {\r\n // History\r\n var ignoreHistory = 0;\r\n\r\n if (typeof(mixed) == 'function') {\r\n var callback = mixed;\r\n } else {\r\n if (typeof(mixed.onenter) == 'function') {\r\n obj.pages[route].options.onenter = mixed.onenter;\r\n }\r\n if (typeof(mixed.onleave) == 'function') {\r\n obj.pages[route].options.onleave = mixed.onleave;\r\n }\r\n\r\n // Ignore history\r\n ignoreHistory = mixed.ignoreHistory ? 1 : 0; \r\n }\r\n }\r\n\r\n showPage(obj.pages[route], ignoreHistory, callback ? callback : null);\r\n }\r\n }\r\n\r\n obj.pages = {};\r\n\r\n // Get page\r\n obj.get = function(route) {\r\n if (obj.pages[route]) {\r\n return obj.pages[route]; \r\n }\r\n }\r\n\r\n obj.getContainer = function() {\r\n return container;\r\n }\r\n\r\n obj.destroy = function() {\r\n // Current is null\r\n current = null;\r\n // Destroy containers\r\n obj.pages = {};\r\n // Reset container\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n }\r\n\r\n return obj;\r\n})();\r\n\r\n// Path\r\njSuites.pages.path = 'pages';\r\n\r\n// Panel\r\njSuites.panel = (function() {\r\n // No initial panel declared\r\n var panel = null;\r\n\r\n var obj = function(route) {\r\n if (! panel) {\r\n obj.create(jSuites.pages.path + route + '.html');\r\n }\r\n\r\n // Show panel\r\n panel.style.display = '';\r\n\r\n // Add animation\r\n if (panel.classList.contains('panel-left')) {\r\n jSuites.slideLeft(panel, 1);\r\n } else {\r\n jSuites.slideRight(panel, 1);\r\n }\r\n }\r\n\r\n obj.create = function(route) {\r\n if (! panel) {\r\n // Create element\r\n panel = document.createElement('div');\r\n panel.classList.add('panel');\r\n panel.classList.add('panel-left');\r\n panel.style.display = 'none';\r\n\r\n // Bind to the app\r\n if (jSuites.el) {\r\n jSuites.el.appendChild(panel);\r\n } else {\r\n document.body.appendChild(panel);\r\n }\r\n }\r\n\r\n // Remote content\r\n if (route) {\r\n\t var url = jSuites.pages.path + route + '.html';\r\n\r\n jSuites.ajax({\r\n url: url,\r\n method: 'GET',\r\n success: function(result) {\r\n // Set content\r\n panel.innerHTML = result;\r\n // Get javascript\r\n var script = panel.getElementsByTagName('script');\r\n // Run possible inline scripts\r\n for (var i = 0; i < script.length; i++) {\r\n // Get type\r\n var type = script[i].getAttribute('type');\r\n if (! type || type == 'text/javascript') {\r\n eval(script[i].innerHTML);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n obj.close = function() {\r\n if (panel) {\r\n // Animation\r\n if (panel.classList.contains('panel-left')) {\r\n jSuites.slideLeft(panel, 0, function() {\r\n panel.style.display = 'none';\r\n });\r\n } else {\r\n jSuites.slideRight(panel, 0, function() {\r\n panel.style.display = 'none';\r\n });\r\n }\r\n }\r\n }\r\n\r\n obj.get = function() {\r\n return panel;\r\n }\r\n\r\n obj.destroy = function() {\r\n panel.remove();\r\n panel = null;\r\n }\r\n\r\n return obj;\r\n})();\r\n\r\njSuites.toolbar = (function(el, options) {\r\n var obj = {};\r\n obj.options = options;\r\n\r\n obj.selectItem = function(element) {\r\n var elements = toolbarContent.children;\r\n for (var i = 0; i < elements.length; i++) {\r\n elements[i].classList.remove('selected');\r\n }\r\n element.classList.add('selected');\r\n }\r\n\r\n obj.hide = function() {\r\n jSuites.slideBottom(toolbar, 0, function() {\r\n toolbar.style.display = 'none';\r\n });\r\n }\r\n\r\n obj.show = function() {\r\n toolbar.style.display = '';\r\n jSuites.slideBottom(toolbar, 1);\r\n }\r\n\r\n obj.get = function() {\r\n return toolbar;\r\n }\r\n\r\n obj.setBadge = function(index, value) {\r\n toolbarContent.children[index].children[1].firstChild.innerHTML = value;\r\n }\r\n\r\n obj.destroy = function() {\r\n toolbar.remove();\r\n toolbar = null;\r\n }\r\n\r\n var toolbar = document.createElement('div');\r\n toolbar.classList.add('jtoolbar');\r\n toolbar.onclick = function(e) {\r\n var element = jSuites.getElement(e.target, 'jtoolbar-item');\r\n if (element) {\r\n obj.selectItem(element);\r\n }\r\n }\r\n\r\n var toolbarContent = document.createElement('div');\r\n toolbar.appendChild(toolbarContent);\r\n\r\n for (var i = 0; i < options.items.length; i++) {\r\n var toolbarItem = document.createElement('div');\r\n toolbarItem.classList.add('jtoolbar-item');\r\n if (options.items[i].route) {\r\n toolbarItem.setAttribute('data-href', options.items[i].route);\r\n jSuites.pages(options.items[i].route, {\r\n closed: true,\r\n onenter: function() {\r\n obj.selectItem(toolbarItem);\r\n }\r\n });\r\n }\r\n\r\n if (options.items[i].icon) {\r\n var toolbarIcon = document.createElement('i');\r\n toolbarIcon.classList.add('material-icons');\r\n toolbarIcon.innerHTML = options.items[i].icon;\r\n toolbarItem.appendChild(toolbarIcon);\r\n }\r\n\r\n var toolbarBadge = document.createElement('div');\r\n toolbarBadge.classList.add('jbadge');\r\n var toolbarBadgeContent = document.createElement('div');\r\n toolbarBadgeContent.innerHTML = options.items[i].badge ? options.items[i].badge : '';\r\n toolbarBadge.appendChild(toolbarBadgeContent);\r\n toolbarItem.appendChild(toolbarBadge);\r\n\r\n if (options.items[i].title) {\r\n var toolbarTitle = document.createElement('span');\r\n toolbarTitle.innerHTML = options.items[i].title;\r\n toolbarItem.appendChild(toolbarTitle);\r\n }\r\n\r\n toolbarContent.appendChild(toolbarItem);\r\n }\r\n\r\n el.toolbar = obj;\r\n\r\n el.appendChild(toolbar);\r\n\r\n return obj;\r\n});\r\n\r\njSuites.actionsheet = (function() {\r\n var actionsheet = document.createElement('div');\r\n actionsheet.className = 'jactionsheet';\r\n actionsheet.style.display = 'none';\r\n\r\n var actionContent = document.createElement('div');\r\n actionContent.className = 'jactionsheet-content';\r\n actionsheet.appendChild(actionContent);\r\n\r\n var obj = function(options) {\r\n if (options) {\r\n obj.options = options;\r\n }\r\n\r\n // Reset container\r\n actionContent.innerHTML = '';\r\n\r\n // Create new elements\r\n for (var i = 0; i < obj.options.length; i++) {\r\n var actionGroup = document.createElement('div');\r\n actionGroup.className = 'jactionsheet-group';\r\n\r\n for (var j = 0; j < obj.options[i].length; j++) {\r\n var v = obj.options[i][j];\r\n var actionItem = document.createElement('div');\r\n var actionInput = document.createElement('input');\r\n actionInput.type = 'button';\r\n actionInput.value = v.title;\r\n if (v.className) {\r\n actionInput.className = v.className; \r\n }\r\n if (v.onclick) {\r\n actionInput.onclick = v.onclick; \r\n }\r\n if (v.action == 'cancel') {\r\n actionInput.style.color = 'red';\r\n }\r\n actionItem.appendChild(actionInput);\r\n actionGroup.appendChild(actionItem);\r\n }\r\n\r\n actionContent.appendChild(actionGroup);\r\n }\r\n\r\n // Show\r\n actionsheet.style.display = '';\r\n\r\n // Append\r\n jSuites.el.appendChild(actionsheet);\r\n\r\n // Animation\r\n jSuites.slideBottom(actionContent, true);\r\n }\r\n\r\n obj.close = function() {\r\n if (actionsheet.style.display != 'none') {\r\n // Remove any existing actionsheet\r\n jSuites.slideBottom(actionContent, false, function() {\r\n actionsheet.remove();\r\n actionsheet.style.display = 'none';\r\n });\r\n }\r\n }\r\n\r\n var mouseUp = function(e) {\r\n obj.close();\r\n }\r\n\r\n actionsheet.addEventListener('mouseup', mouseUp);\r\n\r\n obj.options = {};\r\n\r\n return obj;\r\n})();\r\n\r\n/**\r\n * (c) jSuites modal\r\n * https://github.com/paulhodel/jsuites\r\n *\r\n * @author: Paul Hodel \r\n * @description: Modal\r\n */\r\n\r\njSuites.modal = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n url: null,\r\n onopen: null,\r\n onclose: null,\r\n closed: false,\r\n width: null,\r\n height: null,\r\n title: null,\r\n };\r\n\r\n // Loop through our object\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n // Title\r\n if (! obj.options.title && el.getAttribute('title')) {\r\n obj.options.title = el.getAttribute('title');\r\n }\r\n\r\n var temp = document.createElement('div');\r\n for (var i = 0; i < el.children.length; i++) {\r\n temp.appendChild(el.children[i]);\r\n }\r\n\r\n obj.content = document.createElement('div');\r\n obj.content.className = 'jmodal_content';\r\n obj.content.innerHTML = el.innerHTML;\r\n\r\n for (var i = 0; i < temp.children.length; i++) {\r\n obj.content.appendChild(temp.children[i]);\r\n }\r\n\r\n obj.container = document.createElement('div');\r\n obj.container.className = 'jmodal';\r\n obj.container.appendChild(obj.content);\r\n\r\n if (obj.options.width) {\r\n obj.container.style.width = obj.options.width;\r\n }\r\n if (obj.options.height) {\r\n obj.container.style.height = obj.options.height;\r\n }\r\n if (obj.options.title) {\r\n obj.container.setAttribute('title', obj.options.title);\r\n } else {\r\n obj.container.classList.add('no-title');\r\n }\r\n el.innerHTML = '';\r\n el.style.display = 'none';\r\n el.appendChild(obj.container);\r\n\r\n // Backdrop\r\n var backdrop = document.createElement('div');\r\n backdrop.className = 'jmodal_backdrop';\r\n el.appendChild(backdrop);\r\n\r\n obj.open = function() {\r\n el.style.display = 'block';\r\n // Fullscreen\r\n const rect = obj.container.getBoundingClientRect();\r\n if (jSuites.getWindowWidth() < rect.width) {\r\n obj.container.style.top = '';\r\n obj.container.style.left = '';\r\n obj.container.classList.add('jmodal_fullscreen');\r\n jSuites.slideBottom(obj.container, 1);\r\n } else {\r\n backdrop.style.display = 'block';\r\n }\r\n // Current\r\n jSuites.modal.current = obj;\r\n // Event\r\n if (typeof(obj.options.onopen) == 'function') {\r\n obj.options.onopen(el, obj);\r\n }\r\n }\r\n\r\n obj.resetPosition = function() {\r\n obj.container.style.top = '';\r\n obj.container.style.left = '';\r\n }\r\n\r\n obj.isOpen = function() {\r\n return el.style.display != 'none' ? true : false;\r\n }\r\n\r\n obj.close = function() {\r\n el.style.display = 'none';\r\n // Backdrop\r\n backdrop.style.display = '';\r\n // Current\r\n jSuites.modal.current = null;\r\n // Remove fullscreen class\r\n obj.container.classList.remove('jmodal_fullscreen');\r\n // Event\r\n if (typeof(obj.options.onclose) == 'function') {\r\n obj.options.onclose(el, obj);\r\n }\r\n }\r\n\r\n if (! jSuites.modal.hasEvents) {\r\n jSuites.modal.current = obj;\r\n\r\n if ('ontouchstart' in document.documentElement === true) {\r\n document.addEventListener(\"touchstart\", jSuites.modal.mouseDownControls);\r\n } else {\r\n document.addEventListener('mousedown', jSuites.modal.mouseDownControls);\r\n document.addEventListener('mousemove', jSuites.modal.mouseMoveControls);\r\n document.addEventListener('mouseup', jSuites.modal.mouseUpControls);\r\n }\r\n\r\n document.addEventListener('keydown', jSuites.modal.keyDownControls);\r\n\r\n jSuites.modal.hasEvents = true;\r\n }\r\n\r\n if (obj.options.url) {\r\n jSuites.ajax({\r\n url: obj.options.url,\r\n method: 'GET',\r\n success: function(data) {\r\n obj.content.innerHTML = data;\r\n\r\n if (! obj.options.closed) {\r\n obj.open();\r\n }\r\n }\r\n });\r\n } else {\r\n if (! obj.options.closed) {\r\n obj.open();\r\n }\r\n }\r\n\r\n // Keep object available from the node\r\n el.modal = obj;\r\n\r\n return obj;\r\n});\r\n\r\njSuites.modal.current = null;\r\njSuites.modal.position = null;\r\n\r\njSuites.modal.keyDownControls = function(e) {\r\n if (e.which == 27) {\r\n if (jSuites.modal.current) {\r\n jSuites.modal.current.close();\r\n }\r\n }\r\n}\r\n\r\njSuites.modal.mouseUpControls = function(e) {\r\n if (jSuites.modal.current) {\r\n jSuites.modal.current.container.style.cursor = 'auto';\r\n }\r\n jSuites.modal.position = null;\r\n}\r\n\r\njSuites.modal.mouseMoveControls = function(e) {\r\n if (jSuites.modal.current && jSuites.modal.position) {\r\n if (e.which == 1 || e.which == 3) {\r\n var position = jSuites.modal.position;\r\n jSuites.modal.current.container.style.top = (position[1] + (e.clientY - position[3]) + (position[5] / 2)) + 'px';\r\n jSuites.modal.current.container.style.left = (position[0] + (e.clientX - position[2]) + (position[4] / 2)) + 'px';\r\n jSuites.modal.current.container.style.cursor = 'move';\r\n } else {\r\n jSuites.modal.current.container.style.cursor = 'auto';\r\n }\r\n }\r\n}\r\n\r\njSuites.modal.mouseDownControls = function(e) {\r\n jSuites.modal.position = [];\r\n\r\n if (e.target.classList.contains('jmodal')) {\r\n setTimeout(function() {\r\n // Get target info\r\n var rect = e.target.getBoundingClientRect();\r\n\r\n if (e.changedTouches && e.changedTouches[0]) {\r\n var x = e.changedTouches[0].clientX;\r\n var y = e.changedTouches[0].clientY;\r\n } else {\r\n var x = e.clientX;\r\n var y = e.clientY;\r\n }\r\n\r\n if (rect.width - (x - rect.left) < 50 && (y - rect.top) < 50) {\r\n setTimeout(function() {\r\n jSuites.modal.current.close();\r\n }, 100);\r\n } else {\r\n if (e.target.getAttribute('title') && (y - rect.top) < 50) {\r\n if (document.selection) {\r\n document.selection.empty();\r\n } else if ( window.getSelection ) {\r\n window.getSelection().removeAllRanges();\r\n }\r\n\r\n jSuites.modal.position = [\r\n rect.left,\r\n rect.top,\r\n e.clientX,\r\n e.clientY,\r\n rect.width,\r\n rect.height,\r\n ];\r\n }\r\n }\r\n }, 100);\r\n }\r\n}\r\n\r\n\r\njSuites.notification = (function(options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n icon: null,\r\n name: 'Notification',\r\n date: null,\r\n title: null,\r\n message: null,\r\n timeout: 4000,\r\n autoHide: true,\r\n closeable: true,\r\n };\r\n\r\n // Loop through our object\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n var notification = document.createElement('div');\r\n notification.className = 'jnotification';\r\n\r\n var notificationContainer = document.createElement('div');\r\n notificationContainer.className = 'jnotification-container';\r\n notification.appendChild(notificationContainer);\r\n\r\n var notificationHeader = document.createElement('div');\r\n notificationHeader.className = 'jnotification-header';\r\n notificationContainer.appendChild(notificationHeader);\r\n\r\n var notificationImage = document.createElement('div');\r\n notificationImage.className = 'jnotification-image';\r\n notificationHeader.appendChild(notificationImage);\r\n\r\n if (obj.options.icon) {\r\n var notificationIcon = document.createElement('img');\r\n notificationIcon.src = obj.options.icon;\r\n notificationImage.appendChild(notificationIcon);\r\n }\r\n\r\n var notificationName = document.createElement('div');\r\n notificationName.className = 'jnotification-name';\r\n notificationName.innerHTML = obj.options.name;\r\n notificationHeader.appendChild(notificationName);\r\n\r\n if (obj.options.closeable == true) {\r\n var notificationClose = document.createElement('div');\r\n notificationClose.className = 'jnotification-close';\r\n notificationClose.onclick = function() {\r\n obj.hide();\r\n }\r\n notificationHeader.appendChild(notificationClose);\r\n }\r\n\r\n var notificationDate = document.createElement('div');\r\n notificationDate.className = 'jnotification-date';\r\n notificationHeader.appendChild(notificationDate);\r\n\r\n var notificationContent = document.createElement('div');\r\n notificationContent.className = 'jnotification-content';\r\n notificationContainer.appendChild(notificationContent);\r\n\r\n if (obj.options.title) {\r\n var notificationTitle = document.createElement('div');\r\n notificationTitle.className = 'jnotification-title';\r\n notificationTitle.innerHTML = obj.options.title;\r\n notificationContent.appendChild(notificationTitle);\r\n }\r\n\r\n var notificationMessage = document.createElement('div');\r\n notificationMessage.className = 'jnotification-message';\r\n notificationMessage.innerHTML = obj.options.message;\r\n notificationContent.appendChild(notificationMessage);\r\n\r\n obj.show = function() {\r\n document.body.appendChild(notification);\r\n if (jSuites.getWindowWidth() > 800) { \r\n jSuites.fadeIn(notification);\r\n } else {\r\n jSuites.slideTop(notification, 1);\r\n }\r\n }\r\n\r\n obj.hide = function() {\r\n if (jSuites.getWindowWidth() > 800) { \r\n jSuites.fadeOut(notification, function() {\r\n notification.parentNode.removeChild(notification);\r\n });\r\n } else {\r\n jSuites.slideTop(notification, 0, function() {\r\n notification.parentNode.removeChild(notification);\r\n });\r\n }\r\n };\r\n\r\n obj.show();\r\n\r\n if (obj.options.autoHide == true) {\r\n setTimeout(function() {\r\n obj.hide();\r\n }, obj.options.timeout);\r\n }\r\n\r\n if (jSuites.getWindowWidth() < 800) {\r\n notification.addEventListener(\"swipeup\", function(e) {\r\n obj.hide();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n return obj;\r\n});\r\n\r\njSuites.rating = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n number: 5,\r\n value: 0,\r\n tooltip: [ 'Very bad', 'Bad', 'Average', 'Good', 'Very good' ],\r\n onchange: null,\r\n };\r\n\r\n // Loop through the initial configuration\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n // Class\r\n el.classList.add('jrating');\r\n\r\n // Add elements\r\n for (var i = 0; i < obj.options.number; i++) {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-index', (i + 1))\r\n div.setAttribute('title', obj.options.tooltip[i])\r\n el.appendChild(div);\r\n }\r\n\r\n // Set value\r\n obj.setValue = function(index) {\r\n for (var i = 0; i < obj.options.number; i++) {\r\n if (i < index) {\r\n el.children[i].classList.add('jrating-selected');\r\n } else {\r\n el.children[i].classList.remove('jrating-over');\r\n el.children[i].classList.remove('jrating-selected');\r\n }\r\n }\r\n\r\n obj.options.value = index;\r\n\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(el, index);\r\n }\r\n }\r\n\r\n obj.getValue = function() {\r\n return obj.options.value;\r\n }\r\n\r\n if (obj.options.value) {\r\n for (var i = 0; i < obj.options.number; i++) {\r\n if (i < obj.options.value) {\r\n el.children[i].classList.add('jrating-selected');\r\n }\r\n }\r\n }\r\n\r\n // Events\r\n el.addEventListener(\"click\", function(e) {\r\n var index = e.target.getAttribute('data-index');\r\n if (index != undefined) {\r\n if (index == obj.options.value) {\r\n obj.setValue(0);\r\n } else {\r\n obj.setValue(index);\r\n }\r\n }\r\n });\r\n\r\n el.addEventListener(\"mouseover\", function(e) {\r\n var index = e.target.getAttribute('data-index');\r\n for (var i = 0; i < obj.options.number; i++) {\r\n if (i < index) {\r\n el.children[i].classList.add('jrating-over');\r\n } else {\r\n el.children[i].classList.remove('jrating-over');\r\n }\r\n }\r\n });\r\n\r\n el.addEventListener(\"mouseout\", function(e) {\r\n for (var i = 0; i < obj.options.number; i++) {\r\n el.children[i].classList.remove('jrating-over');\r\n }\r\n });\r\n\r\n el.rating = obj;\r\n\r\n return obj;\r\n});\r\n\r\n\r\n/**\r\n * (c) Image slider\r\n * https://github.com/paulhodel/jtools\r\n *\r\n * @author: Paul Hodel \r\n * @description: Image Slider\r\n */\r\n\r\njSuites.slider = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n obj.currentImage = null;\r\n\r\n if (options) {\r\n obj.options = options;\r\n }\r\n\r\n // Items\r\n obj.options.items = [];\r\n\r\n if (! el.classList.contains('jslider')) {\r\n el.classList.add('jslider');\r\n\r\n // Create container\r\n var container = document.createElement('div');\r\n container.className = 'jslider-container';\r\n\r\n // Move children inside\r\n if (el.children.length > 0) {\r\n // Keep children items\r\n for (var i = 0; i < el.children.length; i++) {\r\n obj.options.items.push(el.children[i]);\r\n }\r\n }\r\n if (obj.options.items.length > 0) {\r\n for (var i = 0; i < obj.options.items.length; i++) {\r\n obj.options.items[i].classList.add('jfile');\r\n var index = obj.options.items[i].src.lastIndexOf('/');\r\n if (index < 0) {\r\n obj.options.items[i].setAttribute('data-name', obj.options.items[i].src);\r\n } else {\r\n obj.options.items[i].setAttribute('data-name', obj.options.items[i].src.substr(index + 1));\r\n }\r\n var index = obj.options.items[i].src.lastIndexOf('/');\r\n\r\n container.appendChild(obj.options.items[i]);\r\n }\r\n }\r\n el.appendChild(container);\r\n // Add close buttom\r\n var close = document.createElement('div');\r\n close.className = 'jslider-close';\r\n close.innerHTML = '';\r\n close.onclick = function() {\r\n obj.close();\r\n }\r\n el.appendChild(close);\r\n } else {\r\n var container = el.querySelector('slider-container');\r\n }\r\n\r\n obj.show = function(target) {\r\n if (! target) {\r\n var target = container.children[0];\r\n }\r\n\r\n if (! container.classList.contains('jslider-preview')) {\r\n container.classList.add('jslider-preview');\r\n close.style.display = 'block';\r\n }\r\n\r\n // Hide all images\r\n for (var i = 0; i < container.children.length; i++) {\r\n container.children[i].style.display = 'none';\r\n }\r\n\r\n // Show clicked only\r\n target.style.display = 'block';\r\n\r\n // Is there any previous\r\n if (target.previousSibling) {\r\n container.classList.add('jslider-left');\r\n } else {\r\n container.classList.remove('jslider-left');\r\n }\r\n\r\n // Is there any next\r\n if (target.nextSibling) {\r\n container.classList.add('jslider-right');\r\n } else {\r\n container.classList.remove('jslider-right');\r\n }\r\n\r\n obj.currentImage = target;\r\n }\r\n\r\n obj.open = function() {\r\n obj.show();\r\n\r\n // Event\r\n if (typeof(obj.options.onopen) == 'function') {\r\n obj.options.onopen(el);\r\n }\r\n }\r\n\r\n obj.close = function() {\r\n container.classList.remove('jslider-preview');\r\n container.classList.remove('jslider-left');\r\n container.classList.remove('jslider-right');\r\n\r\n for (var i = 0; i < container.children.length; i++) {\r\n container.children[i].style.display = '';\r\n }\r\n\r\n close.style.display = '';\r\n\r\n obj.currentImage = null;\r\n\r\n // Event\r\n if (typeof(obj.options.onclose) == 'function') {\r\n obj.options.onclose(el);\r\n }\r\n }\r\n\r\n obj.reset = function() {\r\n container.innerHTML = '';\r\n }\r\n\r\n obj.addFile = function(v, ignoreEvents) {\r\n var img = document.createElement('img');\r\n img.setAttribute('data-lastmodified', v.lastmodified);\r\n img.setAttribute('data-name', v.name);\r\n img.setAttribute('data-size', v.size);\r\n img.setAttribute('data-extension', v.extension);\r\n img.setAttribute('data-cover', v.cover);\r\n img.setAttribute('src', v.file);\r\n img.className = 'jfile';\r\n container.appendChild(img);\r\n obj.options.items.push(img);\r\n\r\n // Onchange\r\n if (! ignoreEvents) {\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(el, v);\r\n }\r\n }\r\n }\r\n\r\n obj.addFiles = function(files) {\r\n for (var i = 0; i < files.length; i++) {\r\n obj.addFile(files[i]);\r\n }\r\n }\r\n\r\n obj.next = function() {\r\n if (obj.currentImage.nextSibling) {\r\n obj.show(obj.currentImage.nextSibling);\r\n }\r\n }\r\n \r\n obj.prev = function() {\r\n if (obj.currentImage.previousSibling) {\r\n obj.show(obj.currentImage.previousSibling);\r\n }\r\n }\r\n\r\n obj.getData = function() {\r\n return jSuites.getFiles(container);\r\n }\r\n\r\n // Append data\r\n if (obj.options.data && obj.options.data.length) {\r\n for (var i = 0; i < obj.options.data.length; i++) {\r\n if (obj.options.data[i]) {\r\n obj.addFile(obj.options.data[i]);\r\n }\r\n }\r\n }\r\n\r\n // Allow insert\r\n if (obj.options.allowAttachment) {\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.className = 'slider-attachment';\r\n attachmentInput.setAttribute('accept', 'image/*');\r\n attachmentInput.style.display = 'none';\r\n attachmentInput.onchange = function() {\r\n var reader = [];\r\n\r\n for (var i = 0; i < this.files.length; i++) {\r\n var type = this.files[i].type.split('/');\r\n\r\n if (type[0] == 'image') {\r\n var extension = this.files[i].name;\r\n extension = extension.split('.');\r\n extension = extension[extension.length-1];\r\n\r\n var file = {\r\n size: this.files[i].size,\r\n name: this.files[i].name,\r\n extension: extension,\r\n cover: 0,\r\n lastmodified: this.files[i].lastModified,\r\n }\r\n\r\n reader[i] = new FileReader();\r\n reader[i].addEventListener(\"load\", function (e) {\r\n file.file = e.target.result;\r\n obj.addFile(file);\r\n }, false);\r\n\r\n reader[i].readAsDataURL(this.files[i]);\r\n } else {\r\n alert('The extension is not allowed');\r\n }\r\n };\r\n }\r\n\r\n var attachmentIcon = document.createElement('i');\r\n attachmentIcon.innerHTML = 'attachment';\r\n attachmentIcon.className = 'jslider-attach material-icons';\r\n attachmentIcon.onclick = function() {\r\n jSuites.click(attachmentInput);\r\n }\r\n\r\n el.appendChild(attachmentInput);\r\n el.appendChild(attachmentIcon);\r\n }\r\n\r\n // Push to refresh\r\n var longTouchTimer = null;\r\n\r\n var mouseDown = function(e) {\r\n if (e.target.tagName == 'IMG') {\r\n // Remove\r\n var targetImage = e.target;\r\n longTouchTimer = setTimeout(function() {\r\n if (e.target.src.substr(0,4) == 'data') {\r\n e.target.remove();\r\n } else {\r\n if (e.target.classList.contains('jremove')) {\r\n e.target.classList.remove('jremove');\r\n } else {\r\n e.target.classList.add('jremove');\r\n }\r\n }\r\n\r\n // Onchange\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(el, e.target);\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n var mouseUp = function(e) {\r\n if (longTouchTimer) {\r\n clearTimeout(longTouchTimer);\r\n }\r\n\r\n // Open slider\r\n if (e.target.tagName == 'IMG') {\r\n if (! e.target.classList.contains('jremove')) {\r\n obj.show(e.target);\r\n }\r\n } else {\r\n // Arrow controls\r\n if (e.target.clientWidth - e.offsetX < 40) {\r\n // Show next image\r\n obj.next();\r\n } else if (e.offsetX < 40) {\r\n // Show previous image\r\n obj.prev();\r\n }\r\n }\r\n }\r\n\r\n container.addEventListener('mousedown', mouseDown);\r\n container.addEventListener('touchstart', mouseDown);\r\n container.addEventListener('mouseup', mouseUp);\r\n container.addEventListener('touchend', mouseUp);\r\n\r\n // Add global events\r\n el.addEventListener(\"swipeleft\", function(e) {\r\n obj.next();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n el.addEventListener(\"swiperight\", function(e) {\r\n obj.prev();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n\r\n el.slider = obj;\r\n\r\n return obj;\r\n});\r\n\r\n/**\n * (c) jTools v1.0.1 - Element sorting\n * https://github.com/paulhodel/jtools\n *\n * @author: Paul Hodel \n * @description: Element drag and drop sorting\n */\n\njSuites.sorting = (function(el, options) {\n el.classList.add('jsorting');\n\n el.addEventListener('dragstart', function(e) {\n e.target.classList.add('dragging');\n });\n\n el.addEventListener('dragover', function(e) {\n e.preventDefault();\n\n if (e.target.clientHeight / 2 > e.offsetY) {\n e.path[0].style.borderTop = '1px dotted #ccc';\n e.path[0].style.borderBottom = '';\n } else {\n e.path[0].style.borderTop = '';\n e.path[0].style.borderBottom = '1px dotted #ccc';\n }\n });\n\n el.addEventListener('dragleave', function(e) {\n e.path[0].style.borderTop = '';\n e.path[0].style.borderBottom = '';\n });\n\n el.addEventListener('dragend', function(e) {\n e.path[1].querySelector('.dragging').classList.remove('dragging');\n });\n\n el.addEventListener('drop', function(e) {\n var element = e.path[1].querySelector('.dragging');\n\n if (e.target.clientHeight / 2 > e.offsetY) {\n e.path[1].insertBefore(element, e.path[0]);\n } else {\n e.path[1].insertBefore(element, e.path[0].nextSibling);\n }\n\n e.path[0].style.borderTop = '';\n e.path[0].style.borderBottom = '';\n });\n\n for (var i = 0; i < el.children.length; i++) {\n el.children[i].setAttribute('draggable', 'true');\n };\n\n return el;\n});\r\n\r\njSuites.tabs = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n data: null,\r\n allowCreate: false,\r\n onload: null,\r\n onchange: null,\r\n oncreate: null,\r\n animation: false,\r\n create: null,\r\n autoName: false,\r\n prefixName: '',\r\n hideHeaders: false,\r\n };\r\n\r\n // Loop through the initial configuration\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n // Class\r\n el.classList.add('jtabs');\r\n\r\n if (obj.options.animation == true) {\r\n // Border\r\n var border = document.createElement('div');\r\n border.className = 'jtabs-border';\r\n el.appendChild(border);\r\n\r\n var setBorder = function(index) {\r\n var rect = headers.children[index].getBoundingClientRect();\r\n var rectContent = content.children[index].getBoundingClientRect();\r\n border.style.width = rect.width + 'px';\r\n border.style.left = (rect.left - rectContent.left) + 'px';\r\n border.style.top = rect.height + 'px';\r\n }\r\n }\r\n\r\n // Set value\r\n obj.open = function(index) {\r\n for (var i = 0; i < headers.children.length; i++) {\r\n headers.children[i].classList.remove('jtabs-selected');\r\n if (content.children[i]) {\r\n content.children[i].classList.remove('jtabs-selected');\r\n }\r\n }\r\n\r\n headers.children[index].classList.add('jtabs-selected');\r\n if (content.children[index]) {\r\n content.children[index].classList.add('jtabs-selected');\r\n }\r\n\r\n // Hide\r\n if (obj.options.hideHeaders == true && (headers.children.length < 2 && obj.options.allowCreate == false)) {\r\n headers.style.display = 'none';\r\n } else {\r\n headers.style.display = '';\r\n // Set border\r\n if (obj.options.animation == true) {\r\n setTimeout(function() {\r\n setBorder(index);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n obj.selectIndex = function(a) {\r\n var index = Array.prototype.indexOf.call(headers.children, a);\r\n if (index >= 0) {\r\n obj.open(index);\r\n }\r\n }\r\n\r\n obj.create = function(title, div) {\r\n if (typeof(obj.options.create) == 'function') {\r\n obj.options.create();\r\n } else {\r\n obj.appendElement(title, div);\r\n\r\n if (typeof(obj.options.oncreate) == 'function') {\r\n obj.options.oncreate(el, div)\r\n }\r\n }\r\n }\r\n\r\n obj.appendElement = function(title, div) {\r\n if (! title) {\r\n if (obj.options.autoName == true) {\r\n var title = obj.options.prefixName;\r\n title += ' ' + (parseInt(content.children.length) + 1);\r\n } else {\r\n var title = prompt('Title?', '');\r\n }\r\n }\r\n\r\n if (title) {\r\n // Add headers\r\n var header = document.createElement('div');\r\n header.innerHTML = title;\r\n if (obj.options.allowCreate) {\r\n headers.insertBefore(header, headers.lastChild);\r\n } else {\r\n headers.appendChild(header);\r\n }\r\n\r\n // Add content\r\n if (! div) {\r\n var div = document.createElement('div');\r\n }\r\n content.appendChild(div);\r\n\r\n // Open new tab\r\n obj.selectIndex(header);\r\n }\r\n }\r\n\r\n // Create from data\r\n if (obj.options.data) {\r\n // Make sure the component is blank\r\n el.innerHTML = '';\r\n var headers = document.createElement('div');\r\n var content = document.createElement('div');\r\n headers.classList.add('jtabs-headers');\r\n content.classList.add('jtabs-content');\r\n el.appendChild(headers);\r\n el.appendChild(content);\r\n\r\n for (var i = 0; i < obj.options.data.length; i++) {\r\n var headersItem = document.createElement('div');\r\n headers.appendChild(headersItem);\r\n var contentItem = document.createElement('div');\r\n content.appendChild(contentItem);\r\n\r\n headersItem.innerHTML = obj.options.data[i].title;\r\n if (obj.options.data[i].content) {\r\n contentItem.innerHTML = obj.options.data[i].content;\r\n } else if (obj.options.data[i].url) {\r\n jSuites.ajax({\r\n url: obj.options.data[i].url,\r\n type: 'GET',\r\n success: function(result) {\r\n contentItem.innerHTML = result;\r\n },\r\n complete: function() {\r\n if (typeof(obj.options.onload) == 'function') {\r\n obj.options.onload(el);\r\n\r\n obj.open(0);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n } else if (el.children[0] && el.children[1]) {\r\n // Create from existing elements\r\n var headers = el.children[0];\r\n var content = el.children[1];\r\n headers.classList.add('jtabs-headers');\r\n content.classList.add('jtabs-content');\r\n } else {\r\n el.innerHTML = '';\r\n var headers = document.createElement('div');\r\n var content = document.createElement('div');\r\n headers.classList.add('jtabs-headers');\r\n content.classList.add('jtabs-content');\r\n el.appendChild(headers);\r\n el.appendChild(content);\r\n }\r\n\r\n // New\r\n if (obj.options.allowCreate == true) {\r\n var add = document.createElement('i');\r\n add.className = 'jtabs-add';\r\n headers.appendChild(add);\r\n }\r\n\r\n // Events\r\n headers.addEventListener(\"click\", function(e) {\r\n if (e.target.tagName == 'DIV') {\r\n obj.selectIndex(e.target);\r\n } else {\r\n obj.create();\r\n }\r\n });\r\n\r\n if (headers.children.length) {\r\n obj.open(0);\r\n }\r\n\r\n el.tabs = obj;\r\n\r\n return obj;\r\n});\r\n\r\njSuites.tags = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n /**\r\n * @typedef {Object} defaults\r\n * @property {(string|Array)} value - Initial value of the compontent\r\n * @property {number} limit - Max number of tags inside the element\r\n * @property {string} search - The URL for suggestions\r\n * @property {string} placeholder - The default instruction text on the element\r\n * @property {validation} validation - Method to validate the tags\r\n * @property {requestCallback} onbeforechange - Method to be execute before any changes on the element\r\n * @property {requestCallback} onchange - Method to be execute after any changes on the element\r\n * @property {requestCallback} onfocus - Method to be execute when on focus\r\n * @property {requestCallback} onblur - Method to be execute when on blur\r\n * @property {requestCallback} onload - Method to be execute when the element is loaded\r\n */\r\n var defaults = {\r\n value: null,\r\n limit: null,\r\n limitMessage: 'The limit of entries is: ',\r\n search: null,\r\n placeholder: null,\r\n validation: null,\r\n onbeforechange: null,\r\n onchange: null,\r\n onfocus: null,\r\n onblur: null,\r\n onload: null,\r\n colors: null,\r\n };\r\n\r\n // Loop through though the default configuration\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n // Search helpers\r\n var searchContainer = null;\r\n var searchTerms = null;\r\n var searchIndex = 0;\r\n var searchTimer = 0;\r\n\r\n /**\r\n * Add a new tag to the element\r\n * @param {(?string|Array)} value - The value of the new element\r\n */\r\n obj.add = function(value, focus) {\r\n if (typeof(obj.options.onbeforechange) == 'function') {\r\n var v = obj.options.onbeforechange(el, obj, value);\r\n if (v != null) {\r\n value = v;\r\n }\r\n }\r\n\r\n // Close search\r\n if (searchContainer) {\r\n searchContainer.style.display = '';\r\n }\r\n\r\n if (obj.options.limit > 0 && el.children.length >= obj.options.limit) {\r\n alert(obj.options.limitMessage + ' ' + obj.options.limit);\r\n } else {\r\n // Get node\r\n var node = getSelectionStart();\r\n\r\n // Mix argument string or array\r\n if (! value || typeof(value) == 'string') {\r\n var div = document.createElement('div');\r\n div.innerHTML = value ? value : '
';\r\n if (node && node.parentNode.classList.contains('jtags')) {\r\n el.insertBefore(div, node.nextSibling);\r\n } else {\r\n el.appendChild(div);\r\n }\r\n } else {\r\n if (node && node.parentNode.classList.contains('jtags')) {\r\n if (! node.innerText.replace(\"\\n\", \"\")) {\r\n el.removeChild(node);\r\n }\r\n }\r\n\r\n for (var i = 0; i <= value.length; i++) {\r\n if (! obj.options.limit || el.children.length < obj.options.limit) {\r\n var div = document.createElement('div');\r\n div.innerHTML = value[i] ? value[i] : '
';\r\n el.appendChild(div);\r\n }\r\n }\r\n }\r\n\r\n // Place caret\r\n if (focus) {\r\n setTimeout(function() {\r\n caret(div);\r\n }, 0);\r\n }\r\n\r\n // Filter\r\n filter();\r\n\r\n if (typeof(obj.options.onchange) == 'function') {\r\n obj.options.onchange(el, obj, value ? value : '');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get all tags in the element\r\n * @return {Array} data - All tags as an array\r\n */\r\n obj.getData = function() {\r\n var data = [];\r\n for (var i = 0; i < el.children.length; i++) {\r\n var value = obj.getValue(i);\r\n if (value) {\r\n var id = el.children[i].getAttribute('data-id');\r\n if (! id) {\r\n id = value;\r\n }\r\n data.push({ id: id, value: value });\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Get the value of one tag. Null for all tags\r\n * @param {?number} index - Tag index number. Null for all tags.\r\n * @return {string} value - All tags separated by comma\r\n */\r\n obj.getValue = function(index) {\r\n var value = null;\r\n\r\n if (index != null) {\r\n // Get one individual value\r\n value = el.children[index].innerText.replace(\"\\n\", \"\");\r\n } else {\r\n // Get all\r\n var data = [];\r\n for (var i = 0; i < el.children.length; i++) {\r\n value = el.children[i].innerText.replace(\"\\n\", \"\");\r\n if (value) {\r\n data.push(obj.getValue(i));\r\n }\r\n }\r\n value = data.join(',');\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Set the value of the element based on a string separeted by (,|;|\\r\\n)\r\n * @param {string} value - A string with the tags\r\n */\r\n obj.setValue = function(text) {\r\n // Remove whitespaces\r\n text = text.trim();\r\n\r\n if (text) {\r\n // Tags\r\n var data = extractTags(text);\r\n // Add tags to the element\r\n obj.add(data);\r\n }\r\n }\r\n\r\n obj.reset = function() {\r\n el.innerHTML = '

';\r\n }\r\n\r\n /**\r\n * Verify if all tags in the element are valid\r\n * @return {boolean}\r\n */\r\n obj.isValid = function() {\r\n var test = 0;\r\n for (var i = 0; i < el.children.length; i++) {\r\n if (el.children[i].classList.contains('jtags_error')) {\r\n test++;\r\n }\r\n }\r\n return test == 0 ? true : false;\r\n }\r\n\r\n /**\r\n * Add one element from the suggestions to the element\r\n * @param {object} item - Node element in the suggestions container\r\n */ \r\n obj.selectIndex = function(item) {\r\n // Reset terms\r\n searchTerms = '';\r\n var node = getSelectionStart();\r\n // Append text to the caret\r\n node.innerText = item.children[1].innerText;\r\n // Set node id\r\n if (item.children[1].getAttribute('data-id')) {\r\n node.setAttribute('data-id', item.children[1].getAttribute('data-id'));\r\n }\r\n // Close container\r\n if (searchContainer) {\r\n searchContainer.style.display = '';\r\n searchContainer.innerHTML = '';\r\n }\r\n // Remove any error\r\n node.classList.remove('jtags_error');\r\n // Add new item\r\n obj.add();\r\n }\r\n\r\n /**\r\n * Search for suggestions\r\n * @param {object} node - Target node for any suggestions\r\n */\r\n obj.search = function(node) {\r\n // Create and append search container to the DOM\r\n if (! searchContainer) {\r\n var div = document.createElement('div');\r\n div.style.position = 'relative';\r\n el.parentNode.insertBefore(div, el.nextSibling);\r\n\r\n // Create container\r\n searchContainer = document.createElement('div');\r\n searchContainer.classList.add('jtags_search');\r\n div.appendChild(searchContainer);\r\n }\r\n\r\n // Search for\r\n var terms = node.anchorNode.nodeValue;\r\n\r\n // Search\r\n if (node.anchorNode.nodeValue && terms != searchTerms) {\r\n // Terms\r\n searchTerms = node.anchorNode.nodeValue;\r\n // Reset index\r\n searchIndex = 0;\r\n // Get remove results\r\n jSuites.ajax({\r\n url: obj.options.search + searchTerms,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function(data) {\r\n // Reset container\r\n searchContainer.innerHTML = '';\r\n\r\n // Print results\r\n if (! data.length) {\r\n // Show container\r\n searchContainer.style.display = '';\r\n } else {\r\n // Show container\r\n searchContainer.style.display = 'block';\r\n\r\n // Show items\r\n var len = data.length < 11 ? data.length : 10;\r\n for (var i = 0; i < len; i++) {\r\n var div = document.createElement('div');\r\n if (i == 0) {\r\n div.classList.add('selected');\r\n }\r\n var img = document.createElement('img');\r\n if (data[i].image) {\r\n img.src = data[i].image;\r\n } else {\r\n img.style.display = 'none';\r\n }\r\n div.appendChild(img);\r\n\r\n var item = document.createElement('div');\r\n item.setAttribute('data-id', data[i].id);\r\n item.innerHTML = data[i].name;\r\n div.onclick = function() {\r\n // Add item\r\n obj.selectIndex(this);\r\n }\r\n div.appendChild(item);\r\n // Append item to the container\r\n searchContainer.appendChild(div);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Destroy tags element\r\n obj.destroy = function() {\r\n // Bind events\r\n el.removeEventListener('mouseup', tagsMouseUp);\r\n el.removeEventListener('keydown', tagsKeyDown);\r\n el.removeEventListener('keyup', tagsKeyUp);\r\n el.removeEventListener('paste', tagsPaste);\r\n el.removeEventListener('focus', tagsFocus);\r\n el.removeEventListener('blur', tagsBlur);\r\n // Remove element\r\n el.parentNode.removeChild(el);\r\n }\r\n\r\n var getRandomColor = function(index) {\r\n var rand = function(min, max) {\r\n return min + Math.random() * (max - min);\r\n }\r\n return 'hsl(' + rand(1, 360) + ',' + rand(40, 70) + '%,' + rand(65, 72) + '%)';\r\n }\r\n\r\n /**\r\n * Filter tags\r\n */\r\n var filter = function() {\r\n for (var i = 0; i < el.children.length; i++) {\r\n // Create label design\r\n if (! obj.getValue(i)) {\r\n el.children[i].classList.remove('jtags_label');\r\n } else {\r\n el.children[i].classList.add('jtags_label');\r\n\r\n // Validation in place\r\n if (typeof(obj.options.validation) == 'function') {\r\n if (obj.getValue(i)) {\r\n if (! obj.options.validation(el.children[i], el.children[i].innerText, el.children[i].getAttribute('data-id'))) {\r\n el.children[i].classList.add('jtags_error');\r\n } else {\r\n el.children[i].classList.remove('jtags_error');\r\n }\r\n } else {\r\n el.children[i].classList.remove('jtags_error');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Place caret in the element node\r\n */\r\n var caret = function(e) {\r\n var range = document.createRange();\r\n var sel = window.getSelection();\r\n range.setStart(e, e.innerText.length);\r\n range.collapse(true);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n\r\n /**\r\n * Selection\r\n */\r\n var getSelectionStart = function() {\r\n var node = document.getSelection().anchorNode;\r\n if (node) {\r\n return (node.nodeType == 3 ? node.parentNode : node);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Extract tags from a string\r\n * @param {string} text - Raw string\r\n * @return {Array} data - Array with extracted tags\r\n */\r\n var extractTags = function(text) {\r\n /** @type {Array} */\r\n var data = [];\r\n\r\n /** @type {string} */\r\n var word = '';\r\n\r\n // Remove whitespaces\r\n text = text.trim();\r\n\r\n if (text) {\r\n for (var i = 0; i < text.length; i++) {\r\n if (text[i] == ',' || text[i] == ';' || text[i] == '\\r\\n') {\r\n if (word) {\r\n data.push(word);\r\n word = '';\r\n }\r\n } else {\r\n word += text[i];\r\n }\r\n }\r\n\r\n if (word) {\r\n data.push(word);\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /** @type {number} */\r\n var anchorOffset = 0;\r\n\r\n /**\r\n * Processing event keydown on the element\r\n * @param e {object}\r\n */\r\n var tagsKeyDown = function(e) {\r\n // Anchoroffset\r\n anchorOffset = window.getSelection().anchorOffset;\r\n\r\n // Verify content\r\n if (! el.children.length) {\r\n var div = document.createElement('div');\r\n div.innerHTML = '
';\r\n el.appendChild(div);\r\n }\r\n // Comma\r\n if (e.which == 9 || e.which == 186 || e.which == 188) {\r\n var n = window.getSelection().anchorOffset;\r\n if (n > 1) {\r\n if (! obj.options.limit || el.children.length < obj.options.limit) {\r\n obj.add('', true);\r\n }\r\n }\r\n e.preventDefault();\r\n } else if (e.which == 13) {\r\n // Enter\r\n if (searchContainer && searchContainer.style.display != '') {\r\n obj.selectIndex(searchContainer.children[searchIndex]);\r\n } else {\r\n var n = window.getSelection().anchorOffset;\r\n if (n > 1) {\r\n if (! obj.options.limit || el.children.length < obj.options.limit) {\r\n obj.add('', true);\r\n }\r\n }\r\n }\r\n e.preventDefault();\r\n } else if (e.which == 38) {\r\n // Up\r\n if (searchContainer && searchContainer.style.display != '') {\r\n searchContainer.children[searchIndex].classList.remove('selected');\r\n if (searchIndex > 0) {\r\n searchIndex--;\r\n }\r\n searchContainer.children[searchIndex].classList.add('selected');\r\n e.preventDefault();\r\n }\r\n } else if (e.which == 40) {\r\n // Down\r\n if (searchContainer && searchContainer.style.display != '') {\r\n searchContainer.children[searchIndex].classList.remove('selected');\r\n if (searchIndex < 9) {\r\n searchIndex++;\r\n }\r\n searchContainer.children[searchIndex].classList.add('selected');\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Processing event keyup on the element\r\n * @param e {object}\r\n */\r\n var tagsKeyUp = function(e) {\r\n if (e.which == 39) {\r\n var n = window.getSelection().anchorOffset;\r\n if (n > 1 && n == anchorOffset) {\r\n obj.add();\r\n }\r\n } else if (e.which == 13 || e.which == 38 || e.which == 40) {\r\n e.preventDefault();\r\n } else {\r\n if (searchTimer) {\r\n clearTimeout(searchTimer);\r\n }\r\n\r\n searchTimer = setTimeout(function() {\r\n // Current node\r\n var node = window.getSelection();\r\n // Search\r\n if (obj.options.search) {\r\n obj.search(node);\r\n }\r\n searchTimer = null;\r\n }, 300);\r\n }\r\n\r\n filter();\r\n }\r\n\r\n /**\r\n * Processing event paste on the element\r\n * @param e {object}\r\n */\r\n var tagsPaste = function(e) {\r\n if (e.clipboardData || e.originalEvent.clipboardData) {\r\n var html = (e.originalEvent || e).clipboardData.getData('text/html');\r\n var text = (e.originalEvent || e).clipboardData.getData('text/plain');\r\n } else if (window.clipboardData) {\r\n var html = window.clipboardData.getData('Html');\r\n var text = window.clipboardData.getData('Text');\r\n }\r\n\r\n obj.setValue(text);\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Processing event mouseup on the element\r\n * @param e {object}\r\n */\r\n var tagsMouseUp = function(e) {\r\n if (e.target.parentNode && e.target.parentNode.classList.contains('jtags')) {\r\n if (e.target.classList.contains('jtags_label') || e.target.classList.contains('jtags_error')) {\r\n const rect = e.target.getBoundingClientRect();\r\n if (rect.width - (e.clientX - rect.left) < 16) {\r\n el.removeChild(e.target);\r\n el.focus();\r\n }\r\n }\r\n }\r\n\r\n if (searchContainer) {\r\n searchContainer.style.display = '';\r\n }\r\n }\r\n\r\n /**\r\n * Processing event focus on the element\r\n * @param e {object}\r\n */\r\n var tagsFocus = function(e) {\r\n if (! el.children.length || obj.getValue(el.children.length - 1)) {\r\n if (! obj.options.limit || el.children.length < obj.options.limit) {\r\n var div = document.createElement('div');\r\n div.innerHTML = '
';\r\n el.appendChild(div);\r\n }\r\n }\r\n\r\n if (typeof(obj.options.onfocus) == 'function') {\r\n obj.options.onfocus(el, obj, obj.getValue());\r\n }\r\n }\r\n\r\n /**\r\n * Processing event blur on the element\r\n * @param e {object}\r\n */\r\n var tagsBlur = function(e) {\r\n if (searchContainer) {\r\n setTimeout(function() {\r\n searchContainer.style.display = '';\r\n }, 200);\r\n }\r\n\r\n for (var i = 0; i < el.children.length - 1; i++) {\r\n // Create label design\r\n if (! obj.getValue(i)) {\r\n el.removeChild(el.children[i]);\r\n }\r\n }\r\n\r\n if (typeof(obj.options.onblur) == 'function') {\r\n obj.options.onblur(el, obj, obj.getValue());\r\n }\r\n }\r\n\r\n // Bind events\r\n el.addEventListener('mouseup', tagsMouseUp);\r\n el.addEventListener('keydown', tagsKeyDown);\r\n el.addEventListener('keyup', tagsKeyUp);\r\n el.addEventListener('paste', tagsPaste);\r\n el.addEventListener('focus', tagsFocus);\r\n el.addEventListener('blur', tagsBlur);\r\n\r\n // Prepare container\r\n el.classList.add('jtags');\r\n el.setAttribute('contenteditable', true);\r\n el.setAttribute('spellcheck', false);\r\n\r\n if (obj.options.placeholder) {\r\n el.placeholder = obj.options.placeholder;\r\n }\r\n\r\n // Make sure element is empty\r\n if (obj.options.value) {\r\n obj.setValue(obj.options.value);\r\n } else {\r\n el.innerHTML = '

';\r\n }\r\n\r\n if (typeof(obj.options.onload) == 'function') {\r\n obj.options.onload(el, obj);\r\n }\r\n\r\n el.tags = obj;\r\n\r\n return obj;\r\n});\r\n\r\njSuites.tracker = (function(el, options) {\r\n var obj = {};\r\n obj.options = {};\r\n\r\n // Default configuration\r\n var defaults = {\r\n url: null,\r\n message: 'Are you sure? There are unsaved information in your form',\r\n ignore: false,\r\n currentHash: null,\r\n submitButton:null,\r\n onload: null,\r\n onbeforesave: null,\r\n onsave: null,\r\n };\r\n\r\n // Loop through our object\r\n for (var property in defaults) {\r\n if (options && options.hasOwnProperty(property)) {\r\n obj.options[property] = options[property];\r\n } else {\r\n obj.options[property] = defaults[property];\r\n }\r\n }\r\n\r\n obj.setUrl = function(url) {\r\n obj.options.url = url;\r\n }\r\n\r\n obj.load = function() {\r\n jSuites.ajax({\r\n url: obj.options.url,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function(data) {\r\n var elements = el.querySelectorAll(\"input, select, textarea\");\r\n \r\n for (var i = 0; i < elements.length; i++) {\r\n var name = elements[i].getAttribute('name');\r\n if (data[name]) {\r\n elements[i].value = data[name];\r\n }\r\n }\r\n\r\n if (typeof(obj.options.onload) == 'function') {\r\n obj.options.onload(el, data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n obj.save = function() {\r\n var test = obj.validate();\r\n\r\n if (test) {\r\n jSuites.alert(test);\r\n } else {\r\n var data = obj.getElements(true);\r\n\r\n if (typeof(obj.options.onbeforesave) == 'function') {\r\n var data = obj.options.onbeforesave(el, data);\r\n\r\n if (data === false) {\r\n console.log('Onbeforesave returned false');\r\n return; \r\n }\r\n }\r\n\r\n jSuites.ajax({\r\n url: obj.options.url,\r\n method: 'POST',\r\n dataType: 'json',\r\n data: data,\r\n success: function(result) {\r\n jSuites.alert(result.message);\r\n\r\n if (typeof(obj.options.onsave) == 'function') {\r\n var data = obj.options.onsave(el, result);\r\n }\r\n\r\n obj.reset();\r\n }\r\n });\r\n }\r\n }\r\n\r\n obj.validateElement = function(element) {\r\n var emailChecker = function(data) {\r\n var pattern = new RegExp(/^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/);\r\n return pattern.test(data) ? true : false; \r\n }\r\n\r\n var passwordChecker = function(data) {\r\n return (data.length > 5) ? true : false;\r\n }\r\n\r\n var addError = function(element) {\r\n // Add error in the element\r\n element.classList.add('error');\r\n // Submit button\r\n if (obj.options.submitButton) {\r\n obj.options.submitButton.setAttribute('disabled', true);\r\n }\r\n // Return error message\r\n return element.getAttribute('data-error') || 'There is an error in the form';\r\n }\r\n\r\n var delError = function(element) {\r\n var error = false;\r\n // Remove class from this element\r\n element.classList.remove('error');\r\n // Get elements in the form\r\n var elements = el.querySelectorAll(\"input, select, textarea\");\r\n // Run all elements \r\n for (var i = 0; i < elements.length; i++) {\r\n if (elements[i].getAttribute('data-validation')) {\r\n if (elements[i].classList.contains('error')) {\r\n error = true;\r\n }\r\n }\r\n }\r\n\r\n if (obj.options.submitButton) {\r\n if (error) {\r\n obj.options.submitButton.setAttribute('disabled', true);\r\n } else {\r\n obj.options.submitButton.removeAttribute('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Blank\r\n var test = '';\r\n if (! element.value) {\r\n test = addError(element);\r\n } else if (element.getAttribute('data-email') && ! emailChecker(element.value)) {\r\n test = addError(element);\r\n } else if (element.getAttribute('data-password') && ! emailChecker(element.value)) {\r\n test = addError(element);\r\n } else {\r\n if (element.classList.contains('error')) {\r\n delError(element);\r\n }\r\n }\r\n\r\n return test;\r\n }\r\n\r\n // Run form validation\r\n obj.validate = function() {\r\n var test = '';\r\n // Get elements in the form\r\n var elements = el.querySelectorAll(\"input, select, textarea\");\r\n // Run all elements \r\n for (var i = 0; i < elements.length; i++) {\r\n if (elements[i].getAttribute('data-validation')) {\r\n if (test) {\r\n test += \"
\\r\\n\";\r\n }\r\n test += obj.validateElement(elements[i]);\r\n }\r\n }\r\n return test;\r\n }\r\n\r\n // Check the form\r\n obj.getError = function() {\r\n // Validation\r\n return obj.validation() ? true : false;\r\n }\r\n\r\n // Return the form hash\r\n obj.setHash = function() {\r\n return obj.getHash(obj.getElements());\r\n }\r\n\r\n // Get the form hash\r\n obj.getHash = function(str) {\r\n var hash = 0, i, chr;\r\n\r\n if (str.length === 0) {\r\n return hash;\r\n } else {\r\n for (i = 0; i < str.length; i++) {\r\n chr = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0;\r\n }\r\n }\r\n\r\n return hash;\r\n }\r\n\r\n // Is there any change in the form since start tracking?\r\n obj.isChanged = function() {\r\n var hash = obj.setHash();\r\n return (obj.options.currentHash != hash);\r\n }\r\n\r\n // Restart tracking\r\n obj.resetTracker = function() {\r\n obj.options.currentHash = obj.setHash();\r\n obj.options.ignore = false;\r\n }\r\n\r\n obj.reset = function() {\r\n obj.options.currentHash = obj.setHash();\r\n obj.options.ignore = false;\r\n }\r\n\r\n // Ignore flag\r\n obj.setIgnore = function(ignoreFlag) {\r\n obj.options.ignore = ignoreFlag ? true : false;\r\n }\r\n\r\n // Get form elements\r\n obj.getElements = function(asArray) {\r\n var data = {};\r\n var elements = el.querySelectorAll(\"input, select, textarea\");\r\n\r\n for (var i = 0; i < elements.length; i++) {\r\n var element = elements[i];\r\n var name = element.name;\r\n var value = element.value;\r\n\r\n if (name) {\r\n data[name] = value;\r\n }\r\n }\r\n\r\n return asArray == true ? data : JSON.stringify(data);\r\n }\r\n\r\n // Start tracking in one second\r\n setTimeout(function() {\r\n obj.options.currentHash = obj.setHash();\r\n }, 1000);\r\n\r\n // Alert\r\n window.addEventListener(\"beforeunload\", function (e) {\r\n if (obj.isChanged() && obj.options.ignore == false) {\r\n var confirmationMessage = obj.options.message? obj.options.message : \"\\o/\";\r\n\r\n if (confirmationMessage) {\r\n if (typeof e == 'undefined') {\r\n e = window.event;\r\n }\r\n\r\n if (e) {\r\n e.returnValue = confirmationMessage;\r\n }\r\n\r\n return confirmationMessage;\r\n } else {\r\n return void(0);\r\n }\r\n }\r\n });\r\n\r\n // Validations\r\n el.addEventListener(\"keyup\", function(e) {\r\n if (e.target.getAttribute('data-validation')) {\r\n obj.validateElement(e.target);\r\n }\r\n });\r\n\r\n el.tracker = obj;\r\n\r\n return obj;\r\n});\r\n\r\n\r\n\r\n return jSuites;\r\n\r\n})));","\r\n/**\r\n * jExcel v3.9.1\r\n *\r\n * Author: Paul Hodel \r\n * Website: https://bossanova.uk/jexcel/\r\n * Description: Create amazing web based spreadsheets.\r\n *\r\n * This software is distribute under MIT License\r\n */\r\n\r\n if (! jSuites && typeof(require) === 'function') {\r\n var jSuites = require('jsuites');\r\n require('jsuites/dist/jsuites.css');\r\n}\r\n\r\n;(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n global.jexcel = factory();\r\n}(this, (function () {\r\n\r\n 'use strict';\r\n\r\n// Jexcel core object\n\nvar jexcel = (function(el, options) {\n // Create jexcel object\n var obj = {};\n obj.options = {};\n\n if (! (el instanceof Element || el instanceof HTMLDocument)) {\r\n console.error('JEXCEL: el is not a valid DOM element');\r\n return false;\r\n }\r\n\n // Loading default configuration\n var defaults = {\n // External data\n url:null,\n // Data\n data:null,\n // Copy behavior\n copyCompatibility:false,\n // Rows and columns definitions\n rows:[],\n columns:[],\n // Deprected legacy options\n colHeaders:[],\n colWidths:[],\n colAlignments:[],\n nestedHeaders:null,\n // Column width that is used by default\n defaultColWidth:50,\n defaultColAlign:'center',\n // Spare rows and columns\n minSpareRows:0,\n minSpareCols:0,\n // Minimal table dimensions\n minDimensions:[0,0],\n // Allow Export\n allowExport:true,\r\n // @type {boolean} - Include the header titles on download\n includeHeadersOnDownload:false,\n // Allow column sorting\n columnSorting:true,\n // Allow column dragging\n columnDrag:false,\n // Allow column resizing\n columnResize:true,\n // Allow row resizing\n rowResize:false,\n // Allow row dragging\n rowDrag:true,\n // Allow table edition\n editable:true,\n // Allow new rows\n allowInsertRow:true,\n // Allow new rows\n allowManualInsertRow:true,\n // Allow new columns\n allowInsertColumn:true,\n // Allow new rows\n allowManualInsertColumn:true,\n // Allow row delete\n allowDeleteRow:true,\n // Allow deleting of all rows\n allowDeletingAllRows:false,\n // Allow column delete\n allowDeleteColumn:true,\n // Allow rename column\n allowRenameColumn:true,\n // Allow comments\n allowComments:false,\n // Global wrap\n wordWrap:false,\n // Image options\n imageOptions: null,\n // CSV source\n csv:null,\n // Filename\n csvFileName:'jexcel',\n // Consider first line as header\n csvHeaders:true,\n // Delimiters\n csvDelimiter:',',\n // Disable corner selection\n selectionCopy:true,\n // Merged cells\n mergeCells:{},\n // Create toolbar\n toolbar:null,\n // Allow search\n search:false,\n // Create pagination\n pagination:false,\n paginationOptions:null,\n // Full screen\n fullscreen:false,\n // Lazy loading\n lazyLoading:false,\n loadingSpin:false,\n // Table overflow\n tableOverflow:false,\n tableHeight:'300px',\n tableWidth:null,\n // Meta\n meta: null,\n // Style\n style:null,\n // Execute formulas\n parseFormulas:true,\n autoIncrement:true,\n autoCasting:true,\n // Event handles\n onundo:null,\n onredo:null,\n onload:null,\n onchange:null,\n onbeforechange:null,\n onafterchanges:null,\n onbeforeinsertrow: null,\n oninsertrow:null,\n onbeforeinsertcolumn: null,\n oninsertcolumn:null,\n onbeforedeleterow:null,\n ondeleterow:null,\n onbeforedeletecolumn:null,\n ondeletecolumn:null,\n onmoverow:null,\n onmovecolumn:null,\n onresizerow:null,\n onresizecolumn:null,\n onsort:null,\n onselection:null,\n onpaste:null,\n onbeforepaste:null,\n onmerge:null,\n onfocus:null,\n onblur:null,\n onchangeheader:null,\n oneditionstart:null,\n oneditionend:null,\n onchangestyle:null,\n onchangemeta:null,\n onchangepage:null,\n // Customize any cell behavior\n updateTable:null,\n // Detach the HTML table when calling updateTable\r\n detachForUpdates: false,\n // Texts\n text:{\n noRecordsFound: 'No records found',\n showingPage: 'Showing page {0} of {1} entries',\n show: 'Show ',\n search: 'Search',\n entries: ' entries',\n columnName: 'Column name',\n insertANewColumnBefore: 'Insert a new column before',\n insertANewColumnAfter: 'Insert a new column after',\n deleteSelectedColumns: 'Delete selected columns',\n renameThisColumn: 'Rename this column',\n orderAscending: 'Order ascending',\n orderDescending: 'Order descending',\n insertANewRowBefore: 'Insert a new row before',\n insertANewRowAfter: 'Insert a new row after',\n deleteSelectedRows: 'Delete selected rows',\n editComments: 'Edit comments',\n addComments: 'Add comments',\n comments: 'Comments',\n clearComments: 'Clear comments',\n copy: 'Copy...',\n paste: 'Paste...',\n saveAs: 'Save as...',\n about: 'About',\n areYouSureToDeleteTheSelectedRows: 'Are you sure to delete the selected rows?',\n areYouSureToDeleteTheSelectedColumns: 'Are you sure to delete the selected columns?',\n thisActionWillDestroyAnyExistingMergedCellsAreYouSure: 'This action will destroy any existing merged cells. Are you sure?',\n thisActionWillClearYourSearchResultsAreYouSure: 'This action will clear your search results. Are you sure?',\n thereIsAConflictWithAnotherMergedCell: 'There is a conflict with another merged cell',\n invalidMergeProperties: 'Invalid merged properties',\n cellAlreadyMerged: 'Cell already merged',\n noCellsSelected: 'No cells selected',\n },\n // About message\n about:\"jExcel CE Spreadsheet\\nVersion 3.9.1\\nAuthor: Paul Hodel \\nWebsite: https://bossanova.uk/jexcel/v3\",\n };\n\n // Loading initial configuration from user\n for (var property in defaults) {\n if (options && options.hasOwnProperty(property)) {\n if (property === 'text') {\r\n obj.options[property] = defaults[property];\r\n for (var textKey in options[property]) {\r\n if (options[property].hasOwnProperty(textKey)){\r\n obj.options[property][textKey] = options[property][textKey];\r\n }\r\n }\r\n } else {\r\n obj.options[property] = options[property];\n }\n } else {\n obj.options[property] = defaults[property];\n }\n }\n\n // Global elements\n obj.el = el;\n obj.corner = null;\n obj.contextMenu = null;\n obj.textarea = null;\n obj.ads = null;\n obj.content = null;\n obj.table = null;\n obj.thead = null;\n obj.tbody = null;\n obj.rows = [];\n obj.results = null;\n obj.searchInput = null;\n obj.toolbar = null;\n obj.pagination = null;\n obj.pageNumber = null;\n obj.headerContainer = null;\n obj.colgroupContainer = null;\n\n // Containers\n obj.headers = [];\n obj.records = [];\n obj.history = [];\n obj.formula = [];\n obj.colgroup = [];\n obj.selection = [];\n obj.highlighted = [];\n obj.selectedCell = null;\n obj.selectedContainer = null;\n obj.style = [];\n obj.data = null;\n\n // Internal controllers\n obj.cursor = null;\n obj.historyIndex = -1;\n obj.ignoreEvents = false;\n obj.ignoreHistory = false;\n obj.edition = null;\n obj.hashString = null;\n obj.resizing = null;\n obj.dragging = null;\n\n // Lazy loading\n if (obj.options.lazyLoading == true && (obj.options.tableOverflow == false && obj.options.fullscreen == false)) {\n console.error('JEXCEL: The lazyloading only works when tableOverflow = yes or fullscreen = yes');\n obj.options.lazyLoading = false;\n }\n \n /**\n * Activate/Disable fullscreen \n * use programmatically : table.fullscreen(); or table.fullscreen(true); or table.fullscreen(false);\n * @Param {boolean} activate\n */\n obj.fullscreen = function(activate) {\n // If activate not defined, get reverse options.fullscreen\n if (activate == null) {\n activate = ! obj.options.fullscreen;\n }\n\n // If change\n if (obj.options.fullscreen != activate) {\n obj.options.fullscreen = activate;\n\n // Test LazyLoading conflict\n if (activate == true) {\n el.classList.add('fullscreen');\n } else {\n el.classList.remove('fullscreen');\n }\n } \n }\n\n /**\n * Prepare the jexcel table\n * \n * @Param config\n */\n obj.prepareTable = function() {\n // Loading initial data from remote sources\n var results = [];\n\n // Number of columns\n var size = obj.options.columns.length;\n\n if (obj.options.data && typeof(obj.options.data[0]) !== 'undefined') {\n // Data keys\n var keys = Object.keys(obj.options.data[0]);\n\n if (keys.length > size) {\n size = keys.length;\n }\n }\n\n // Minimal dimensions\n if (obj.options.minDimensions[0] > size) {\n size = obj.options.minDimensions[0];\n }\n\n // Requests\n var multiple = [];\n\n // Preparations\n for (var i = 0; i < size; i++) {\n // Deprected options. You should use only columns\n if (! obj.options.colHeaders[i]) {\n obj.options.colHeaders[i] = '';\n }\n if (! obj.options.colWidths[i]) {\n obj.options.colWidths[i] = obj.options.defaultColWidth;\n }\n if (! obj.options.colAlignments[i]) {\n obj.options.colAlignments[i] = obj.options.defaultColAlign;\n }\n\n // Default column description\n if (! obj.options.columns[i]) {\n obj.options.columns[i] = { type:'text' };\n } else if (! obj.options.columns[i].type) {\n obj.options.columns[i].type = 'text';\n }\n if (! obj.options.columns[i].name) {\n obj.options.columns[i].name = keys && keys[i] ? keys[i] : i;\n }\n if (! obj.options.columns[i].source) {\n obj.options.columns[i].source = [];\n }\n if (! obj.options.columns[i].options) {\n obj.options.columns[i].options = [];\n }\n if (! obj.options.columns[i].editor) {\n obj.options.columns[i].editor = null;\n }\n if (! obj.options.columns[i].allowEmpty) {\n obj.options.columns[i].allowEmpty = false;\n }\n if (! obj.options.columns[i].title) {\n obj.options.columns[i].title = obj.options.colHeaders[i] ? obj.options.colHeaders[i] : '';\n }\n if (! obj.options.columns[i].width) {\n obj.options.columns[i].width = obj.options.colWidths[i] ? obj.options.colWidths[i] : obj.options.defaultColWidth;\n }\n if (! obj.options.columns[i].align) {\n obj.options.columns[i].align = obj.options.colAlignments[i] ? obj.options.colAlignments[i] : 'center';\n }\n\n // Pre-load initial source for json autocomplete\n if (obj.options.columns[i].type == 'autocomplete' || obj.options.columns[i].type == 'dropdown') {\n // if remote content\n if (obj.options.columns[i].url) {\n multiple.push(jSuites.ajax({\n url: obj.options.columns[i].url,\n index: i,\n method: 'GET',\n dataType: 'json',\n multiple: multiple,\n success: function(data) {\n var source = [];\n for (var i = 0; i < data.length; i++) {\n obj.options.columns[this.index].source.push(data[i]);\n }\n },\n complete: function() {\n obj.createTable();\n }\n }));\n }\n } else if (obj.options.columns[i].type == 'calendar') {\n // Default format for date columns\n if (! obj.options.columns[i].options.format) {\n obj.options.columns[i].options.format = 'DD/MM/YYYY';\n }\n }\n }\n\n // On complete\n if (! multiple.length) {\n obj.createTable();\n }\n }\n\n obj.createTable = function() {\n // Elements\n obj.table = document.createElement('table');\n obj.thead = document.createElement('thead');\n obj.tbody = document.createElement('tbody');\n\n // Create headers controllers\n obj.headers = [];\n obj.colgroup = [];\n\n // Create table container\n obj.content = document.createElement('div');\n obj.content.classList.add('jexcel_content');\n\n // Create toolbar object\n obj.toolbar = document.createElement('div');\n obj.toolbar.classList.add('jexcel_toolbar');\n\n // Search\n var searchContainer = document.createElement('div');\n var searchText = document.createTextNode((obj.options.text.search) + ': ');\n obj.searchInput = document.createElement('input');\n obj.searchInput.classList.add('jexcel_search');\n searchContainer.appendChild(searchText);\n searchContainer.appendChild(obj.searchInput);\n obj.searchInput.onfocus = function() {\n obj.resetSelection();\n }\n\n // Pagination select option\n var paginationUpdateContainer = document.createElement('div');\n\n if (obj.options.pagination > 0 && obj.options.paginationOptions && obj.options.paginationOptions.length > 0) {\n obj.paginationDropdown = document.createElement('select');\n obj.paginationDropdown.classList.add('jexcel_pagination_dropdown');\n obj.paginationDropdown.onchange = function() {\n obj.options.pagination = parseInt(this.value);\n obj.page(0);\n }\n\n for (var i = 0; i < obj.options.paginationOptions.length; i++) {\n var temp = document.createElement('option');\n temp.value = obj.options.paginationOptions[i];\n temp.innerHTML = obj.options.paginationOptions[i];\n obj.paginationDropdown.appendChild(temp);\n }\n\n paginationUpdateContainer.appendChild(document.createTextNode(obj.options.text.show));\n paginationUpdateContainer.appendChild(obj.paginationDropdown);\n paginationUpdateContainer.appendChild(document.createTextNode(obj.options.text.entries));\n }\n\n // Filter and pagination container\n obj.filter = document.createElement('div');\n obj.filter.classList.add('jexcel_filter');\n obj.filter.appendChild(paginationUpdateContainer);\n obj.filter.appendChild(searchContainer);\n\n // Colsgroup\n obj.colgroupContainer = document.createElement('colgroup');\n var tempCol = document.createElement('col');\n tempCol.setAttribute('width', '50');\n obj.colgroupContainer.appendChild(tempCol);\n\n // Nested\n if (obj.options.nestedHeaders && obj.options.nestedHeaders.length > 0) {\n // Flexible way to handle nestedheaders\n if (obj.options.nestedHeaders[0] && obj.options.nestedHeaders[0][0]) {\n for (var j = 0; j < obj.options.nestedHeaders.length; j++) {\n obj.thead.appendChild(obj.createNestedHeader(obj.options.nestedHeaders[j]));\n }\n } else {\n obj.thead.appendChild(obj.createNestedHeader(obj.options.nestedHeaders));\n }\n }\n\n // Row\n obj.headerContainer = document.createElement('tr');\n var tempCol = document.createElement('td');\n tempCol.classList.add('jexcel_selectall');\n obj.headerContainer.appendChild(tempCol);\n\n for (var i = 0; i < obj.options.columns.length; i++) {\n // Create header\n obj.createCellHeader(i);\n // Append cell to the container\n obj.headerContainer.appendChild(obj.headers[i]);\n obj.colgroupContainer.appendChild(obj.colgroup[i]);\n }\n\n obj.thead.appendChild(obj.headerContainer);\n\n // Content table\n obj.table = document.createElement('table');\n obj.table.classList.add('jexcel');\n obj.table.setAttribute('cellpadding', '0');\n obj.table.setAttribute('cellspacing', '0');\n obj.table.setAttribute('unselectable', 'yes');\n obj.table.setAttribute('onselectstart', 'return false');\n obj.table.appendChild(obj.colgroupContainer);\n obj.table.appendChild(obj.thead);\n obj.table.appendChild(obj.tbody);\n\n // Spreadsheet corner\n obj.corner = document.createElement('div');\n obj.corner.className = 'jexcel_corner';\n obj.corner.setAttribute('unselectable', 'on');\n obj.corner.setAttribute('onselectstart', 'return false');\n\n if (obj.options.selectionCopy == false) {\n obj.corner.style.display = 'none';\n }\n\n // Textarea helper\n obj.textarea = document.createElement('textarea');\n obj.textarea.className = 'jexcel_textarea';\n obj.textarea.id = 'jexcel_textarea';\n obj.textarea.tabIndex = '-1';\r\n\n // Contextmenu container\n obj.contextMenu = document.createElement('div');\n obj.contextMenu.className = 'jexcel_contextmenu';\n\n // Create element\n jSuites.contextmenu(obj.contextMenu, {\n onclick:function() {\n obj.contextMenu.contextmenu.close(false);\n }\n });\n\n // Powered by jExcel\r\n var ads = document.createElement('a');\r\n ads.setAttribute('href', 'https://bossanova.uk/jexcel/');\r\n obj.ads = document.createElement('div');\r\n obj.ads.className = 'jexcel_about';\r\n if (typeof(sessionStorage) !== \"undefined\" && ! sessionStorage.getItem('jexcel')) {\r\n sessionStorage.setItem('jexcel', true);\r\n var img = document.createElement('img');\r\n img.src = '//bossanova.uk/jexcel/logo.png';\r\n ads.appendChild(img);\r\n }\r\n var span = document.createElement('span');\r\n span.innerHTML = 'Jexcel spreadsheet';\r\n ads.appendChild(span);\r\n obj.ads.appendChild(ads);\n\n // Create table container TODO: frozen columns\n var container = document.createElement('div');\n container.classList.add('jexcel_table');\n\n // Pagination\n obj.pagination = document.createElement('div');\n obj.pagination.classList.add('jexcel_pagination');\n var paginationInfo = document.createElement('div');\n var paginationPages = document.createElement('div');\n obj.pagination.appendChild(paginationInfo);\n obj.pagination.appendChild(paginationPages);\n\n // Hide pagination if not in use\r\n if (! obj.options.pagination) {\r\n obj.pagination.style.display = 'none';\r\n }\r\n\n // Append containers to the table\n if (obj.options.search == true) {\n el.appendChild(obj.filter);\n }\n\n // Elements\n obj.content.appendChild(obj.table);\n obj.content.appendChild(obj.corner);\n obj.content.appendChild(obj.textarea);\n\n el.appendChild(obj.toolbar);\n el.appendChild(obj.content);\n el.appendChild(obj.pagination);\n el.appendChild(obj.contextMenu);\n el.appendChild(obj.ads);\n el.classList.add('jexcel_container');\n\n // Create toolbar\n if (obj.options.toolbar && obj.options.toolbar.length) {\n obj.createToolbar();\n }\n\n // Fullscreen\n if (obj.options.fullscreen == true) {\n el.classList.add('fullscreen');\n } else {\n // Overflow\n if (obj.options.tableOverflow == true) {\n if (obj.options.tableHeight) {\n obj.content.style['overflow-y'] = 'auto';\n obj.content.style.maxHeight = obj.options.tableHeight;\n }\n if (obj.options.tableWidth) {\n obj.content.style['overflow-x'] = 'auto';\n obj.content.style.width = obj.options.tableWidth;\n }\n }\n }\n\n // With toolbars\n if (obj.options.tableOverflow != true && obj.options.toolbar) {\n el.classList.add('with-toolbar');\n }\n\n // Actions\n if (obj.options.columnDrag == true) {\n obj.thead.classList.add('draggable');\n }\n if (obj.options.columnResize == true) {\n obj.thead.classList.add('resizable');\n }\n if (obj.options.rowDrag == true) {\n obj.tbody.classList.add('draggable');\n }\n if (obj.options.rowResize == true) {\n obj.tbody.classList.add('resizable');\n }\n\n // Load data\n obj.setData();\n\n // Style\n if (obj.options.style) {\n obj.setStyle(obj.options.style, null, null, 1, 1);\n }\n }\n\r\n /**\r\n * Refresh the data\r\n * \r\n * @return void\r\n */\r\n obj.refresh = function() {\r\n if (obj.options.url) {\r\n // Loading\r\n if (obj.options.loadingSpin == true) {\r\n jSuites.loading.show();\r\n }\r\n\r\n jSuites.ajax({\r\n url: obj.options.url,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function(result) {\r\n // Data\r\n obj.options.data = (result.data) ? result.data : result;\r\n // Prepare table\r\n obj.setData();\r\n // Hide spin\r\n if (obj.options.loadingSpin == true) {\r\n jSuites.loading.hide();\r\n }\r\n }\r\n });\r\n } else {\r\n obj.setData();\r\n }\r\n }\r\n\n /**\n * Set data\n * \n * @param array data In case no data is sent, default is reloaded\n * @return void\n */\n obj.setData = function(data) {\n // Update data\n if (data) {\n if (typeof(data) == 'string') {\n data = JSON.parse(data);\n }\n\n obj.options.data = data;\n }\n\n // Data\n if (! obj.options.data) {\n obj.options.data = [];\n }\n\n // Prepare data\n if (obj.options.data) {\n var data = [];\n for (var j = 0; j < obj.options.data.length; j++) {\n var row = [];\n for (var i = 0; i < obj.options.columns.length; i++) {\n row[i] = obj.options.data[j][obj.options.columns[i].name];\n }\n data.push(row);\n }\n\n obj.options.data = data;\n }\n\n // Adjust minimal dimensions\n var j = 0;\n var i = 0;\n var size_i = obj.options.columns.length;\n var size_j = obj.options.data.length;\n var min_i = obj.options.minDimensions[0];\n var min_j = obj.options.minDimensions[1];\n var max_i = min_i > size_i ? min_i : size_i;\n var max_j = min_j > size_j ? min_j : size_j;\n\n for (j = 0; j < max_j; j++) {\n for (i = 0; i < max_i; i++) {\n if (obj.options.data[j] == undefined) {\n obj.options.data[j] = [];\n }\n\n if (obj.options.data[j][i] == undefined) {\n obj.options.data[j][i] = '';\n }\n }\n }\n\n // Reset containers\n obj.rows = [];\n obj.results = null;\n obj.records = [];\n obj.history = [];\n\n // Reset internal controllers\n obj.historyIndex = -1;\n\n // Reset data\n obj.tbody.innerHTML = '';\n\n // Lazy loading\n if (obj.options.lazyLoading == true) {\n // Load only 100 records\n var startNumber = 0\n var finalNumber = obj.options.data.length < 100 ? obj.options.data.length : 100;\n\n if (obj.options.pagination) {\n obj.options.pagination = false;\n console.error('JEXCEL: Pagination will be disable due the lazyLoading');\n }\n } else if (obj.options.pagination) {\n // Pagination\n if (! obj.pageNumber) {\n obj.pageNumber = 0;\n }\n var quantityPerPage = obj.options.pagination;\n startNumber = (obj.options.pagination * obj.pageNumber);\n finalNumber = (obj.options.pagination * obj.pageNumber) + obj.options.pagination;\n\n if (obj.options.data.length < finalNumber) {\n finalNumber = obj.options.data.length;\n }\n } else {\n var startNumber = 0;\n var finalNumber = obj.options.data.length;\n }\n\n // Append nodes to the HTML\n for (j = 0; j < obj.options.data.length; j++) {\n // Create row\n var tr = obj.createRow(j, obj.options.data[j]);\n // Append line to the table\n if (j >= startNumber && j < finalNumber) {\n obj.tbody.appendChild(tr);\n }\n }\n\n if (obj.options.lazyLoading == true) {\n // Do not create pagination with lazyloading activated\n } else if (obj.options.pagination) {\n obj.updatePagination();\n }\n\n // Merge cells\n if (obj.options.mergeCells) {\n var keys = Object.keys(obj.options.mergeCells);\n for (var i = 0; i < keys.length; i++) {\n var num = obj.options.mergeCells[keys[i]];\n obj.setMerge(keys[i], num[0], num[1], 1);\n }\n }\n\n // Updata table with custom configurations if applicable\n obj.updateTable();\n\n // Onload\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.onload) == 'function') {\n obj.options.onload(el, obj);\n }\n }\n }\n\n /**\n * Get the whole table data\n * \n * @param bool get highlighted cells only\n * @return array data\n */\n obj.getData = function(highlighted, dataOnly) {\n // Control vars\n var dataset = [];\n var px = 0;\n var py = 0;\n\n // Data type\r\n var dataType = dataOnly == true || obj.options.copyCompatibility == false ? true : false;\r\n\n // Column and row length\n var x = obj.options.columns.length\n var y = obj.options.data.length\n\n // Go through the columns to get the data\n for (var j = 0; j < y; j++) {\n px = 0;\n for (var i = 0; i < x; i++) {\n // Cell selected or fullset\n if (! highlighted || obj.records[j][i].classList.contains('highlight')) {\n // Get value\n if (! dataset[py]) {\n dataset[py] = [];\n }\n if (! dataType) {\n dataset[py][px] = obj.records[j][i].innerHTML;\n } else {\n dataset[py][px] = obj.options.data[j][i];\n }\n px++;\n }\n }\n if (px > 0) {\n py++;\n }\n }\n\n return dataset;\n }\n\n /**\n * Get the whole table data\n * \n * @param integer row number\n * @return string value\n */\n obj.getJson = function(highlighted) {\n // Control vars\n var data = [];\n\n // Column and row length\n var x = obj.options.columns.length\n var y = obj.options.data.length\n\n // Go through the columns to get the data\n for (var j = 0; j < y; j++) {\n var row = null;\n for (var i = 0; i < x; i++) {\n if (! highlighted || obj.records[j][i].classList.contains('highlight')) {\n if (row == null) {\n row = {};\n }\n row[obj.options.columns[i].name] = obj.options.data[j][i];\n }\n }\n\n if (row != null) {\n data.push(row);\n }\n }\n\n return data;\n }\n\n /**\n * Get a row data by rowNumber\n */\n obj.getRowData = function(rowNumber) {\n return obj.options.data[rowNumber];\n }\n\n /**\n * Set a row data by rowNumber\n */\n obj.setRowData = function(rowNumber, data) {\n for (var i = 0; i < obj.headers.length; i++) {\n // Update cell\n var columnName = jexcel.getColumnNameFromId([ i, rowNumber ]);\n // Set value\n if (data[i] != null) {\n obj.setValue(columnName, data[i]);\n }\n }\n }\n\n /**\n * Get a column data by columnNumber\n */\n obj.getColumnData = function(columnNumber) {\n var dataset = [];\n // Go through the rows to get the data\n for (var j = 0; j < obj.options.data.length; j++) {\n dataset.push(obj.options.data[j][columnNumber]);\n }\n return dataset;\n }\n\n /**\n * Set a column data by colNumber\n */\n obj.setColumnData = function(colNumber, data) {\n for (var j = 0; j < obj.rows.length; j++) {\n // Update cell\n var columnName = jexcel.getColumnNameFromId([ colNumber, j ]);\n // Set value\n if (data[j] != null) {\n obj.setValue(columnName, data[j]);\n }\n }\n }\n\n /**\n * Create row\n */\n obj.createRow = function(j, data) {\n // Create container\n if (! obj.records[j]) {\n obj.records[j] = [];\n }\n // Default data\n if (! data) {\n var data = obj.options.data[j];\n }\n // New line of data to be append in the table\n obj.rows[j] = document.createElement('tr');\n obj.rows[j].setAttribute('data-y', j);\n // Definitions\n if (obj.options.rows[j]) {\n if (obj.options.rows[j].height) {\n obj.rows[j].style.height = obj.options.rows[j].height;\n }\n }\n // Row number label\n var td = document.createElement('td');\n td.innerHTML = parseInt(j + 1);\n td.setAttribute('data-y', j);\n td.className = 'jexcel_row';\n obj.rows[j].appendChild(td);\n\n // Data columns\n for (i = 0; i < obj.options.columns.length; i++) {\n // New column of data to be append in the line\n obj.records[j][i] = obj.createCell(i, j, data[i]);\n // Add column to the row\n obj.rows[j].appendChild(obj.records[j][i]);\n }\n\n // Add row to the table body\n return obj.rows[j];\n }\n\n /**\n * Create cell\n */\n obj.createCell = function(i, j, value) {\n // Create cell and properties\n var td = document.createElement('td');\n td.setAttribute('data-x', i);\n td.setAttribute('data-y', j);\n // Hidden column\n if (obj.options.columns[i].type == 'hidden') {\n td.style.display = 'none';\n td.innerHTML = value;\n } else if (obj.options.columns[i].type == 'checkbox' || obj.options.columns[i].type == 'radio') {\n // Create input\n var element = document.createElement('input');\n element.type = obj.options.columns[i].type;\n element.name = 'c' + i;\n element.checked = (value == 1 || value == true || value == 'true') ? true : false;\n element.onclick = function() {\n obj.setValue(td, this.checked);\n }\n\n if (obj.options.columns[i].readOnly == true) {\n element.setAttribute('disabled', 'disabled');\n }\n\n // Append to the table\n td.appendChild(element);\n // Make sure the values are correct\n obj.options.data[j][i] = element.checked;\n } else if (obj.options.columns[i].type == 'calendar') {\n // Try formatted date\n var formatted = jSuites.calendar.extractDateFromString(value, obj.options.columns[i].options.format);\n // Create calendar cell\n td.innerHTML = jSuites.calendar.getDateString(formatted ? formatted : value, obj.options.columns[i].options.format);\n } else if (obj.options.columns[i].type == 'dropdown' || obj.options.columns[i].type == 'autocomplete') {\n // Create dropdown cell\n td.classList.add('jexcel_dropdown');\n td.innerHTML = obj.getDropDownValue(i, value);\n } else if (obj.options.columns[i].type == 'color') {\n if (obj.options.columns[i].render == 'square') {\n var color = document.createElement('div');\n color.className = 'color';\n color.style.backgroundColor = value;\n td.appendChild(color);\n } else {\n td.style.color = value;\n td.innerHTML = value;\n }\n } else if (obj.options.columns[i].type == 'image') {\n if (value && value.substr(0, 10) == 'data:image') {\n var img = document.createElement('img');\n img.src = value;\n td.appendChild(img);\n }\n } else {\n if ((''+value).substr(0,1) == '=' && obj.options.parseFormulas == true) {\n value = obj.executeFormula(value, i, j)\n }\n if (obj.options.columns[i].mask) {\n var decimal = obj.options.columns[i].decimal || '.';\n value = '' + jSuites.mask.run(value, obj.options.columns[i].mask, decimal);\n }\n\n td.innerHTML = value;\n }\n\n // Readonly\n if (obj.options.columns[i].readOnly == true) {\n td.className = 'readonly';\n }\n\n // Text align\n var colAlign = obj.options.columns[i].align ? obj.options.columns[i].align : 'center';\n td.style.textAlign = colAlign;\n\n // Wrap option\n if (obj.options.columns[i].wordWrap != false && (obj.options.wordWrap == true || obj.options.columns[i].wordWrap == true || td.innerHTML.length > 200)) {\n td.style.whiteSpace = 'pre-wrap';\n }\n\n // Overflow\n if (i > 0) {\n if (value || td.innerHTML) {\n obj.records[j][i-1].style.overflow = 'hidden';\n } else {\n if (i == obj.options.columns.length - 1) {\n td.style.overflow = 'hidden';\n }\n }\n }\n\n return td;\n }\n\n obj.createCellHeader = function(colNumber) {\n // Create col global control\n var colWidth = obj.options.columns[colNumber].width ? obj.options.columns[colNumber].width : obj.options.defaultColWidth;\n var colAlign = obj.options.columns[colNumber].align ? obj.options.columns[colNumber].align : obj.options.defaultColAlign;\n\n // Create header cell\n obj.headers[colNumber] = document.createElement('td');\n obj.headers[colNumber].innerHTML = obj.options.columns[colNumber].title ? obj.options.columns[colNumber].title : jexcel.getColumnName(colNumber);\n obj.headers[colNumber].setAttribute('data-x', colNumber);\n obj.headers[colNumber].style.textAlign = colAlign;\n if (obj.options.columns[colNumber].title) {\n obj.headers[colNumber].setAttribute('title', obj.options.columns[colNumber].title);\n }\n\n // Width control\n obj.colgroup[colNumber] = document.createElement('col');\n obj.colgroup[colNumber].setAttribute('width', colWidth);\n\n // Hidden column\n if (obj.options.columns[colNumber].type == 'hidden') {\n obj.headers[colNumber].style.display = 'none';\n obj.colgroup[colNumber].style.display = 'none';\n }\n }\n\n obj.createNestedHeader = function(nestedInformation) {\n var tr = document.createElement('tr');\n tr.classList.add('jexcel_nested');\n var td = document.createElement('td');\n tr.appendChild(td);\n\n var headerIndex = 0;\n for (var i = 0; i < nestedInformation.length; i++) {\n // Default values\n if (! nestedInformation[i].colspan) {\n nestedInformation[i].colspan = 1;\n }\n if (! nestedInformation[i].align) {\n nestedInformation[i].align = 'center';\n }\n if (! nestedInformation[i].title) {\n nestedInformation[i].title = '';\n }\n\n // Number of columns\n var numberOfColumns = nestedInformation[i].colspan;\n\n // Classes container\n var column = [];\n // Header classes for this cell\n for (var x = 0; x < numberOfColumns; x++) {\n if (obj.options.columns[headerIndex] && obj.options.columns[headerIndex].type == 'hidden') {\n numberOfColumns++;\n }\n column.push(headerIndex);\n headerIndex++;\n }\n\n // Created the nested cell\n var td = document.createElement('td');\n td.setAttribute('data-column', column.join(','));\n td.setAttribute('colspan', nestedInformation[i].colspan);\n td.setAttribute('align', nestedInformation[i].align);\n td.innerHTML = nestedInformation[i].title;\n tr.appendChild(td);\n }\n\n return tr;\n }\n\n /**\n * Create toolbar\n */\n obj.createToolbar = function(toolbar) {\n if (toolbar) {\n obj.options.toolbar = toolbar;\n } else {\n var toolbar = obj.options.toolbar;\n }\n\n for (var i = 0; i < toolbar.length; i++) {\n if (toolbar[i].type == 'i') {\n var toolbarItem = document.createElement('i');\n toolbarItem.classList.add('jexcel_toolbar_item');\n toolbarItem.classList.add('material-icons');\n toolbarItem.setAttribute('data-k', toolbar[i].k);\n toolbarItem.setAttribute('data-v', toolbar[i].v);\n // Tooltip\n if (toolbar[i].tooltip) {\n toolbarItem.setAttribute('title', toolbar[i].tooltip);\n }\n // Handle click\n if (toolbar[i].onclick && typeof(toolbar[i].onclick)) {\n toolbarItem.onclick = toolbar[i].onclick;\n } else {\n toolbarItem.onclick = function() {\n var k = this.getAttribute('data-k');\n var v = this.getAttribute('data-v');\n obj.setStyle(obj.highlighted, k, v);\n }\n }\n // Append element\n toolbarItem.innerHTML = toolbar[i].content;\n obj.toolbar.appendChild(toolbarItem);\n } else if (toolbar[i].type == 'select') {\n var toolbarItem = document.createElement('select');\n toolbarItem.classList.add('jexcel_toolbar_item');\n toolbarItem.setAttribute('data-k', toolbar[i].k);\n // Tooltip\n if (toolbar[i].tooltip) {\n toolbarItem.setAttribute('title', toolbar[i].tooltip);\n }\n // Handle onchange\n if (toolbar[i].onchange && typeof(toolbar[i].onchange)) {\n toolbarItem.onchange = toolbar[i].onchange;\n } else {\n toolbarItem.onchange = function() {\n var k = this.getAttribute('data-k');\n obj.setStyle(obj.highlighted, k, this.value);\n }\n }\n // Add options to the dropdown\n for(var j = 0; j < toolbar[i].v.length; j++) {\n var toolbarDropdownOption = document.createElement('option');\n toolbarDropdownOption.value = toolbar[i].v[j];\n toolbarDropdownOption.innerHTML = toolbar[i].v[j];\n toolbarItem.appendChild(toolbarDropdownOption);\n }\n obj.toolbar.appendChild(toolbarItem);\n } else if (toolbar[i].type == 'color') {\n var toolbarItem = document.createElement('i');\n toolbarItem.classList.add('jexcel_toolbar_item');\n toolbarItem.classList.add('material-icons');\n toolbarItem.setAttribute('data-k', toolbar[i].k);\n toolbarItem.setAttribute('data-v', '');\n // Tooltip\n if (toolbar[i].tooltip) {\n toolbarItem.setAttribute('title', toolbar[i].tooltip);\n }\n obj.toolbar.appendChild(toolbarItem);\n toolbarItem.onclick = function() {\n this.color.open();\n }\n toolbarItem.innerHTML = toolbar[i].content;\n jSuites.color(toolbarItem, {\n onchange:function(o, v) {\n var k = o.getAttribute('data-k');\n obj.setStyle(obj.highlighted, k, v);\n }\n });\n }\n }\n }\n\n /**\n * Merge cells\n * @param cellName\n * @param colspan\n * @param rowspan\n * @param ignoreHistoryAndEvents\n */\n obj.setMerge = function(cellName, colspan, rowspan, ignoreHistoryAndEvents) {\n var test = false;\n\n if (! cellName) {\n if (! obj.highlighted.length) {\n alert(obj.options.text.noCellsSelected);\n return null;\n } else {\n var x1 = parseInt(obj.highlighted[0].getAttribute('data-x'));\n var y1 = parseInt(obj.highlighted[0].getAttribute('data-y'));\n var x2 = parseInt(obj.highlighted[obj.highlighted.length-1].getAttribute('data-x'));\n var y2 = parseInt(obj.highlighted[obj.highlighted.length-1].getAttribute('data-y'));\n var cellName = jexcel.getColumnNameFromId([ x1, y1 ]);\n var colspan = (x2 - x1) + 1;\n var rowspan = (y2 - y1) + 1;\n }\n }\n\n var cell = jexcel.getIdFromColumnName(cellName, true);\n\n if (obj.options.mergeCells[cellName]) {\n if (obj.records[cell[1]][cell[0]].getAttribute('data-merged')) {\n test = obj.options.text.cellAlreadyMerged;\n }\n } else if ((! colspan || colspan < 2) && (! rowspan || rowspan < 2)) {\n test = obj.options.text.invalidMergeProperties;\n } else {\n var cells = [];\n for (var j = cell[1]; j < cell[1] + rowspan; j++) {\n for (var i = cell[0]; i < cell[0] + colspan; i++) {\n var columnName = jexcel.getColumnNameFromId([i, j]);\n if (obj.records[j][i].getAttribute('data-merged')) {\n test = obj.options.text.thereIsAConflictWithAnotherMergedCell;\n }\n }\n }\n }\n\n if (test) {\n alert(test);\n } else {\n // Add property\n if (colspan > 1) {\n obj.records[cell[1]][cell[0]].setAttribute('colspan', colspan);\n } else {\n colspan = 1;\n }\n if (rowspan > 1) {\n obj.records[cell[1]][cell[0]].setAttribute('rowspan', rowspan);\n } else {\n rowspan = 1;\n }\n // Keep links to the existing nodes\n obj.options.mergeCells[cellName] = [ colspan, rowspan, [] ];\n // Mark cell as merged\n obj.records[cell[1]][cell[0]].setAttribute('data-merged', 'true');\n // Overflow\n obj.records[cell[1]][cell[0]].style.overflow = 'hidden';\n // History data\n var data = [];\n // Adjust the nodes\n for (var y = cell[1]; y < cell[1] + rowspan; y++) {\n for (var x = cell[0]; x < cell[0] + colspan; x++) {\n if (! (cell[0] == x && cell[1] == y)) {\n data.push(obj.options.data[y][x]);\n obj.updateCell(x, y, '', true);\n obj.options.mergeCells[cellName][2].push(obj.records[y][x]);\n obj.records[y][x].style.display = 'none';\n obj.records[y][x] = obj.records[cell[1]][cell[0]];\n }\n }\n }\n // In the initialization is not necessary keep the history\n obj.updateSelection(obj.records[cell[1]][cell[0]]);\n\n if (! ignoreHistoryAndEvents) {\n obj.setHistory({\n action:'setMerge',\n column:cellName,\n colspan:colspan,\n rowspan:rowspan,\n data:data,\n });\n\n if (typeof(obj.options.onmerge) == 'function') {\n obj.options.onmerge(el, cellName, colspan, rowspan);\n }\n }\n }\n }\n\n /**\n * Merge cells\n * @param cellName\n * @param colspan\n * @param rowspan\n * @param ignoreHistoryAndEvents\n */\n obj.getMerge = function(cellName) {\n var data = {};\n if (cellName) {\n if (obj.options.mergeCells[cellName]) {\n data = [ obj.options.mergeCells[cellName][0], obj.options.mergeCells[cellName][1] ];\n } else {\n data = null;\n }\n } else {\n if (obj.options.mergeCells) {\n var mergedCells = obj.options.mergeCells;\n var keys = Object.keys(obj.options.mergeCells);\n for (var i = 0; i < keys.length; i++) {\n data[keys[i]] = [ obj.options.mergeCells[keys[i]][0], obj.options.mergeCells[keys[i]][1] ];\n }\n }\n }\n\n return data;\n }\n\n /**\n * Remove merge by cellname\n * @param cellName\n */\n obj.removeMerge = function(cellName, data, keepOptions) {\n if (obj.options.mergeCells[cellName]) {\n var cell = jexcel.getIdFromColumnName(cellName, true);\n obj.records[cell[1]][cell[0]].removeAttribute('colspan');\n obj.records[cell[1]][cell[0]].removeAttribute('rowspan');\n obj.records[cell[1]][cell[0]].removeAttribute('data-merged');\n var info = obj.options.mergeCells[cellName];\n\n var index = 0;\n for (var j = 0; j < info[1]; j++) {\n for (var i = 0; i < info[0]; i++) {\n if (j > 0 || i > 0) {\n obj.records[cell[1]+j][cell[0]+i] = info[2][index];\n obj.records[cell[1]+j][cell[0]+i].style.display = '';\n // Recover data\n if (data && data[index]) {\n obj.updateCell(cell[0]+i, cell[1]+j, data[index]);\n }\n index++;\n }\n }\n }\n\n // Update selection\n obj.updateSelection(obj.records[cell[1]][cell[0]], obj.records[cell[1]+j-1][cell[0]+i-1]);\n\n if (! keepOptions) {\n delete(obj.options.mergeCells[cellName]);\n }\n }\n }\n\n /**\n * Remove all merged cells\n */\n obj.destroyMerged = function(keepOptions) {\n // Remove any merged cells\n if (obj.options.mergeCells) {\n var mergedCells = obj.options.mergeCells;\n var keys = Object.keys(obj.options.mergeCells);\n for (var i = 0; i < keys.length; i++) {\n obj.removeMerge(keys[i], null, keepOptions);\n }\n }\n }\n\n /**\n * Is column merged\n */\n obj.isColMerged = function(x, insertBefore) {\n var cols = [];\n // Remove any merged cells\n if (obj.options.mergeCells) {\n var keys = Object.keys(obj.options.mergeCells);\n for (var i = 0; i < keys.length; i++) {\n var info = jexcel.getIdFromColumnName(keys[i], true);\n var colspan = obj.options.mergeCells[keys[i]][0];\n var x1 = info[0];\n var x2 = info[0] + (colspan > 1 ? colspan - 1 : 0);\n\n if (insertBefore == null) {\n if ((x1 <= x && x2 >= x)) {\n cols.push(keys[i]);\n }\n } else {\n if (insertBefore) {\n if ((x1 < x && x2 >= x)) {\n cols.push(keys[i]);\n }\n } else {\n if ((x1 <= x && x2 > x)) {\n cols.push(keys[i]);\n }\n }\n }\n }\n }\n\n return cols;\n }\n\n /**\n * Is rows merged\n */\n obj.isRowMerged = function(y, insertBefore) {\n var rows = [];\n // Remove any merged cells\n if (obj.options.mergeCells) {\n var keys = Object.keys(obj.options.mergeCells);\n for (var i = 0; i < keys.length; i++) {\n var info = jexcel.getIdFromColumnName(keys[i], true);\n var rowspan = obj.options.mergeCells[keys[i]][1];\n var y1 = info[1];\n var y2 = info[1] + (rowspan > 1 ? rowspan - 1 : 0);\n\n if (insertBefore == null) {\n if ((y1 <= y && y2 >= y)) {\n rows.push(keys[i]);\n }\n } else {\n if (insertBefore) {\n if ((y1 < y && y2 >= y)) {\n rows.push(keys[i]);\n }\n } else {\n if ((y1 <= y && y2 > y)) {\n rows.push(keys[i]);\n }\n }\n }\n }\n }\n\n return rows;\n }\n\n /**\n * Open the editor\n * \n * @param object cell\n * @return void\n */\n obj.openEditor = function(cell, empty, e) {\n // Get cell position\n var y = cell.getAttribute('data-y');\n var x = cell.getAttribute('data-x');\n\n // On edition start\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.oneditionstart) == 'function') {\n obj.options.oneditionstart(el, cell, x, y);\n }\n }\n\n // Overflow\n if (x > 0) {\n obj.records[y][x-1].style.overflow = 'hidden';\n }\n\n // Create editor\n var createEditor = function(type) {\n // Cell information\n var info = cell.getBoundingClientRect();\n\n // Create dropdown\n var editor = document.createElement(type);\n editor.style.width = (info.width) + 'px';\n editor.style.height = (info.height - 2) + 'px';\n editor.style.minHeight = (info.height - 2) + 'px';\n\n // Edit cell\n cell.classList.add('editor');\n cell.innerHTML = '';\n cell.appendChild(editor);\n\n return editor;\n }\n\n // Readonly\n if (cell.classList.contains('readonly') == true) {\n // Do nothing\n } else {\n // Holder\n obj.edition = [ obj.records[y][x], obj.records[y][x].innerHTML, x, y ];\n\n // If there is a custom editor for it\n if (obj.options.columns[x].editor) {\n // Custom editors\n obj.options.columns[x].editor.openEditor(cell, el, empty, e);\n } else {\n // Native functions\n if (obj.options.columns[x].type == 'hidden') {\n // Do nothing\n } else if (obj.options.columns[x].type == 'checkbox' || obj.options.columns[x].type == 'radio') {\n // Get value\n var value = cell.children[0].checked ? false : true;\n // Toogle value\n obj.setValue(cell, value);\n // Do not keep edition open\n obj.edition = null;\n } else if (obj.options.columns[x].type == 'dropdown' || obj.options.columns[x].type == 'autocomplete') {\n // Get current value\n var value = obj.options.data[y][x];\n\n // Create dropdown\n if (typeof(obj.options.columns[x].filter) == 'function') {\n var source = obj.options.columns[x].filter(el, cell, x, y, obj.options.columns[x].source);\n } else {\n var source = obj.options.columns[x].source;\n }\n\n // Create editor\n var editor = createEditor('div');\n var options = {\n data: source,\n multiple: obj.options.columns[x].multiple ? true : false,\n autocomplete: obj.options.columns[x].autocomplete || obj.options.columns[x].type == 'autocomplete' ? true : false,\n opened:true,\n value: obj.options.columns[x].multiple ? value.split(';') : value,\n width:'100%',\n height:editor.style.minHeight,\n position: (obj.options.tableOverflow == true || obj.options.fullscreen == true) ? true : false,\n onclose:function() {\n obj.closeEditor(cell, true);\n }\n };\n if (obj.options.columns[x].options && obj.options.columns[x].options.type) {\n options.type = obj.options.columns[x].options.type;\n }\n jSuites.dropdown(editor, options);\n } else if (obj.options.columns[x].type == 'calendar' || obj.options.columns[x].type == 'color') {\n // Value\n var value = obj.options.data[y][x];\n // Create editor\n var editor = createEditor('input');\n editor.value = value;\n\n if (obj.options.tableOverflow == true || obj.options.fullscreen == true) {\n obj.options.columns[x].options.position = true;\n }\n obj.options.columns[x].options.value = obj.options.data[y][x];\n obj.options.columns[x].options.opened = true;\n obj.options.columns[x].options.onclose = function(el, value) {\n obj.closeEditor(cell, true);\n }\n // Current value\n if (obj.options.columns[x].type == 'color') {\n jSuites.color(editor, obj.options.columns[x].options);\n } else {\n var calendar = jSuites.calendar(editor, obj.options.columns[x].options);\n calendar.setValue(value);\n }\n // Focus on editor\n editor.focus();\n } else if (obj.options.columns[x].type == 'image') {\n // Value\n var img = cell.children[0];\n // Create editor\n var editor = createEditor('div');\n editor.style.position = 'relative';\n var div = document.createElement('div');\n div.classList.add('jclose');\n if (img && img.src) {\n div.appendChild(img);\n }\n editor.appendChild(div);\n jSuites.image(div, obj.options.imageOptions);\n const rect = cell.getBoundingClientRect();\n const rectContent = div.getBoundingClientRect();\n if (window.innerHeight < rect.bottom + rectContent.height) {\n div.style.top = (rect.top - (rectContent.height + 2)) + 'px';\n } else {\n div.style.top = (rect.top) + 'px';\n }\n } else {\n // Value\n var value = empty == true ? '' : obj.options.data[y][x];\n\n // Basic editor\n if (obj.options.columns[x].wordWrap != false && (obj.options.wordWrap == true || obj.options.columns[x].wordWrap == true)) {\n var editor = createEditor('textarea');\n } else {\n var editor = createEditor('input');\n // Mask\n if (obj.options.columns[x].mask) {\n editor.setAttribute('data-mask', obj.options.columns[x].mask);\n }\n }\n\n editor.value = value;\n editor.onblur = function() {\n obj.closeEditor(cell, true);\n };\n editor.focus();\n }\n }\n }\n }\n\n /**\n * Close the editor and save the information\n * \n * @param object cell\n * @param boolean save\n * @return void\n */\n obj.closeEditor = function(cell, save) {\n var x = parseInt(cell.getAttribute('data-x'));\n var y = parseInt(cell.getAttribute('data-y'));\n\n // Get cell properties\n if (save == true) {\n // If custom editor\n if (obj.options.columns[x].editor) {\n // Custom editor\n var value = obj.options.columns[x].editor.closeEditor(cell, save);\n } else {\n // Native functions\n if (obj.options.columns[x].type == 'checkbox' || obj.options.columns[x].type == 'radio' || obj.options.columns[x].type == 'hidden') {\n // Do nothing\n } else if (obj.options.columns[x].type == 'dropdown' || obj.options.columns[x].type == 'autocomplete') {\n var value = cell.children[0].dropdown.close(true);\n } else if (obj.options.columns[x].type == 'calendar') {\n var value = cell.children[0].calendar.close(true);\n } else if (obj.options.columns[x].type == 'color') {\n var value = cell.children[1].color.close(true);\n } else if (obj.options.columns[x].type == 'image') {\n var img = cell.children[0].children[0].children[0];\n var value = img && img.tagName == 'IMG' ? img.src : '';\n } else if (obj.options.columns[x].type == 'numeric') {\n var value = cell.children[0].value;\n if (value.substr(0,1) != '=') {\n if (value == '') {\n value = obj.options.columns[x].allowEmpty ? '' : 0;\n }\n }\n cell.children[0].onblur = null;\n } else {\n var value = cell.children[0].value;\n cell.children[0].onblur = null;\n }\n }\n\n // Ignore changes if the value is the same\n if (obj.options.data[y][x] == value) {\n cell.innerHTML = obj.edition[1];\n } else {\n obj.setValue(cell, value);\n }\n } else {\n if (obj.options.columns[x].editor) {\n // Custom editor\n obj.options.columns[x].editor.closeEditor(cell, save);\n } else {\n if (obj.options.columns[x].type == 'dropdown' || obj.options.columns[x].type == 'autocomplete') {\n cell.children[0].dropdown.close(true);\n } else if (obj.options.columns[x].type == 'calendar') {\n cell.children[0].calendar.close(true);\n } else if (obj.options.columns[x].type == 'color') {\n cell.children[1].color.close(true);\n } else {\n cell.children[0].onblur = null;\n }\n }\n\n // Restore value\n cell.innerHTML = obj.edition && obj.edition[1] ? obj.edition[1] : '';\n }\n\n // On edition end\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.oneditionend) == 'function') {\n obj.options.oneditionend(el, cell, x, y, value, save);\n }\n }\n\n // Remove editor class\n cell.classList.remove('editor');\n\n // Finish edition\n obj.edition = null;\n }\n\n /**\n * Get the cell object\n * \n * @param object cell\n * @return string value\n */\n obj.getCell = function(cell) {\n // Convert in case name is excel liked ex. A10, BB92\n cell = jexcel.getIdFromColumnName(cell, true);\n var x = cell[0];\n var y = cell[1];\n\n return obj.records[y][x];\n }\n\n /**\n * Get the cell object from coords\n * \n * @param object cell\n * @return string value\n */\n obj.getCellFromCoords = function(x, y) {\n return obj.records[y][x];\n }\n\n /**\n * Get label\n * \n * @param object cell\n * @return string value\n */\n obj.getLabel = function(cell) {\n // Convert in case name is excel liked ex. A10, BB92\n cell = jexcel.getIdFromColumnName(cell, true);\n var x = cell[0];\n var y = cell[1];\n\n return obj.records[y][x].innerHTML;\n }\n\n /**\n * Get labelfrom coords\n * \n * @param object cell\n * @return string value\n */\n obj.getLabelFromCoords = function(x, y) {\n return obj.records[y][x].innerHTML;\n }\n\n /**\n * Get the value from a cell\n * \n * @param object cell\n * @return string value\n */\n obj.getValue = function(cell, processedValue) {\n if (typeof(cell) == 'object') {\n var x = cell.getAttribute('data-x');\n var y = cell.getAttribute('data-y');\n } else {\n cell = jexcel.getIdFromColumnName(cell, true);\n var x = cell[0];\n var y = cell[1];\n }\n\n var value = null;\n\n if (x != null && y != null) {\n if (obj.records[y] && obj.records[y][x] && (processedValue || obj.options.copyCompatibility == true)) {\n value = obj.records[y][x].innerHTML;\n } else {\n if (obj.options.data[y] && obj.options.data[y][x] != 'undefined') {\n value = obj.options.data[y][x];\n }\n }\n }\n\n return value;\n }\n\n /**\n * Get the value from a coords\n * \n * @param int x\n * @param int y\n * @return string value\n */\n obj.getValueFromCoords = function(x, y, processedValue) {\n var value = null;\n\n if (x != null && y != null) {\n if ((obj.records[y] && obj.records[y][x]) && processedValue || obj.options.copyCompatibility == true) {\n value = obj.records[y][x].innerHTML;\n } else {\n if (obj.options.data[y] && obj.options.data[y][x] != 'undefined') {\n value = obj.options.data[y][x];\n }\n }\n }\n\n return value;\n }\n\n /**\n * Set a cell value\n * \n * @param mixed cell destination cell\n * @param string value value\n * @return void\n */\n obj.setValue = function(cell, value, force) {\n var records = [];\n\n if (typeof(cell) == 'string') {\n var columnId = jexcel.getIdFromColumnName(cell, true);\n var x = columnId[0];\n var y = columnId[1];\n\n // Update cell\n records.push(obj.updateCell(x, y, value, force));\n\n // Update all formulas in the chain\n obj.updateFormulaChain(x, y, records);\n } else {\n var x = null;\n var y = null;\n if (cell && cell.getAttribute) {\n var x = cell.getAttribute('data-x');\n var y = cell.getAttribute('data-y');\n }\n\n // Update cell\n if (x != null && y != null) {\n records.push(obj.updateCell(x, y, value, force));\n\n // Update all formulas in the chain\n obj.updateFormulaChain(x, y, records);\n } else {\n var keys = Object.keys(cell);\n if (keys.length > 0) {\n for (var i = 0; i < keys.length; i++) {\n if (typeof(cell[i]) == 'string') {\n var columnId = jexcel.getIdFromColumnName(cell[i], true);\n var x = columnId[0];\n var y = columnId[1];\n } else {\n var x = cell[i].getAttribute('data-x');\n var y = cell[i].getAttribute('data-y');\n }\n\n // Update cell\n if (x != null && y != null) {\n records.push(obj.updateCell(x, y, value, force));\n\n // Update all formulas in the chain\n obj.updateFormulaChain(x, y, records);\n }\n }\n }\n }\n }\n\n // Update history\n obj.setHistory({\n action:'setValue',\n records:records,\n selection:obj.selectedCell,\n });\n\n // Update table with custom configurations if applicable\n obj.updateTable();\n\n // On after changes\n obj.onafterchanges(el, records);\n }\n\n /**\n * Set a cell value based on coordinates\n * \n * @param int x destination cell\n * @param int y destination cell\n * @param string value\n * @return void\n */\n obj.setValueFromCoords = function(x, y, value, force) {\n var records = [];\n records.push(obj.updateCell(x, y, value, force));\n\n // Update all formulas in the chain\n obj.updateFormulaChain(x, y, records);\n\n // Update history\n obj.setHistory({\n action:'setValue',\n records:records,\n selection:obj.selectedCell,\n });\n\n // Update table with custom configurations if applicable\n obj.updateTable();\n\n // On after changes\n obj.onafterchanges(el, records);\n }\n\n /**\n * Toogle\n */\n obj.setCheckRadioValue = function() {\n var records = [];\n var keys = Object.keys(obj.highlighted);\n for (var i = 0; i < keys.length; i++) {\n var x = obj.highlighted[i].getAttribute('data-x');\n var y = obj.highlighted[i].getAttribute('data-y');\n\n if (obj.options.columns[x].type == 'checkbox' || obj.options.columns[x].type == 'radio') {\n // Update cell\n records.push(obj.updateCell(x, y, ! obj.options.data[y][x]));\n }\n }\n\n if (records.length) {\n // Update history\n obj.setHistory({\n action:'setValue',\n records:records,\n selection:obj.selectedCell,\n });\n\n // On after changes\n obj.onafterchanges(el, records);\n }\n }\n\n /**\n * Update cell content\n * \n * @param object cell\n * @return void\n */\n obj.updateCell = function(x, y, value, force) {\n // Changing value depending on the column type\n if (obj.records[y][x].classList.contains('readonly') == true && ! force) {\n // Do nothing\r\n var record = {\r\n x: x,\r\n y: y,\r\n col: x,\r\n row: y\r\n }\n } else {\n // On change\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.onbeforechange) == 'function') {\n // Overwrite a value\n var val = obj.options.onbeforechange(el, obj.records[y][x], x, y, value);\n\n // If you return something this will overwrite the value\n if (val != undefined) {\n value = val;\n }\n }\n }\n\n // History format\n var record = {\n x: x,\r\n y: y,\n col: x,\n row: y,\n newValue: value,\n oldValue: obj.options.data[y][x],\n }\n\n if (obj.options.columns[x].editor) {\n // Update data and cell\n obj.options.data[y][x] = value;\n obj.options.columns[x].editor.setValue(obj.records[y][x], value, force);\n } else {\n // Native functions\n if (obj.options.columns[x].type == 'checkbox' || obj.options.columns[x].type == 'radio') {\n // Unchecked all options\n if (obj.options.columns[x].type == 'radio') {\n for (var j = 0; j < obj.options.data.length; j++) {\n obj.options.data[j][x] = false;\n }\n }\n\n // Update data and cell\n obj.records[y][x].children[0].checked = (value == 1 || value == true || value == 'true' || value == 'TRUE') ? true : false;\n obj.options.data[y][x] = obj.records[y][x].children[0].checked;\n } else if (obj.options.columns[x].type == 'dropdown' || obj.options.columns[x].type == 'autocomplete') {\n // Update data and cell\n obj.options.data[y][x] = value;\n obj.records[y][x].innerHTML = obj.getDropDownValue(x, value);\n } else if (obj.options.columns[x].type == 'calendar') {\n // Update calendar\n var formatted = jSuites.calendar.extractDateFromString(value, obj.options.columns[x].options.format);\n // Update data and cell\n obj.options.data[y][x] = value;\n obj.records[y][x].innerHTML = jSuites.calendar.getDateString(formatted ? formatted : value, obj.options.columns[x].options.format);\n } else if (obj.options.columns[x].type == 'color') {\n // Update color\n obj.options.data[y][x] = value;\n // Render\n if (obj.options.columns[x].render == 'square') {\n var color = document.createElement('div');\n color.className = 'color';\n color.style.backgroundColor = value;\n obj.records[y][x].innerHTML = '';\n obj.records[y][x].appendChild(color);\n } else {\n obj.records[y][x].style.color = value;\n obj.records[y][x].innerHTML = value;\n }\n } else if (obj.options.columns[x].type == 'image') {\n value = ''+value;\n obj.options.data[y][x] = value;\n obj.records[y][x].innerHTML = '';\n if (value && value.substr(0, 10) == 'data:image') {\n var img = document.createElement('img');\n img.src = value;\n obj.records[y][x].appendChild(img);\n }\n } else {\n // Update data and cell\n obj.options.data[y][x] = value;\n // Label\n if (('' + value).substr(0,1) == '=' && obj.options.parseFormulas == true) {\n value = obj.executeFormula(value, x, y);\n }\n if (obj.options.columns[x].mask) {\n var decimal = obj.options.columns[x].decimal || '.';\n value = '' + jSuites.mask.run(value, obj.options.columns[x].mask, decimal);\n }\n obj.records[y][x].innerHTML = value;\n\n // Handle big text inside a cell\n if (obj.options.columns[x].wordWrap != false && (obj.options.wordWrap == true || obj.options.columns[x].wordWrap == true || obj.records[y][x].innerHTML.length > 200)) {\n obj.records[y][x].style.whiteSpace = 'pre-wrap';\n } else {\n obj.records[y][x].style.whiteSpace = '';\n }\n }\n }\n\n // Overflow\n if (x > 0) {\n if (value) {\n obj.records[y][x-1].style.overflow = 'hidden';\n } else {\n obj.records[y][x-1].style.overflow = '';\n }\n }\n\n // On change\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.onchange) == 'function') {\n obj.options.onchange(el, (obj.records[y] && obj.records[y][x] ? obj.records[y][x] : null), x, y, value, record.oldValue);\n }\n }\n }\n\n return record;\n }\n\n /**\n * Helper function to copy data using the corner icon\n */\n obj.copyData = function(o, d) {\n // Get data from all selected cells\n var data = obj.getData(true, true);\n\n // Selected cells\r\n var h = obj.selectedContainer;\n\n // Cells\n var x1 = parseInt(o.getAttribute('data-x'));\n var y1 = parseInt(o.getAttribute('data-y'));\n var x2 = parseInt(d.getAttribute('data-x'));\n var y2 = parseInt(d.getAttribute('data-y'));\n\n // Records\n var records = [];\n var breakControl = false;\n\n if (h[0] == x1) {\r\n // Vertical copy\r\n if (y1 < h[1]) {\r\n var rowNumber = y1 - h[1];\r\n } else {\r\n var rowNumber = 1;\r\n }\r\n var colNumber = 0;\r\n } else {\r\n if (x1 < h[0]) {\r\n var colNumber = x1 - h[0];\r\n } else {\r\n var colNumber = 1;\r\n }\r\n var rowNumber = 0;\r\n }\r\n\n // Copy data procedure\n var posx = 0;\n var posy = 0;\n\n for (var j = y1; j <= y2; j++) {\n // Skip hidden rows\n if (obj.rows[j] && obj.rows[j].style.display == 'none') {\n continue;\n }\n\n // Controls\n if (data[posy] == undefined) {\n posy = 0;\n }\n posx = 0;\n\n // Data columns\n if (h[0] != x1) {\r\n if (x1 < h[0]) {\r\n var colNumber = x1 - h[0];\r\n } else {\r\n var colNumber = 1;\r\n }\r\n }\n // Data columns\n for (var i = x1; i <= x2; i++) {\n // Update non-readonly\n if (obj.records[j][i] && ! obj.records[j][i].classList.contains('readonly') && obj.records[j][i].style.display != 'none' && breakControl == false) {\n // Stop if contains value\n if (! obj.selection.length) {\n if (obj.options.data[j][i] != '') {\n breakControl = true;\n continue;\n }\n }\n\n // Column\n if (data[posy] == undefined) {\n posx = 0;\n } else if (data[posy][posx] == undefined) {\n posx = 0;\n }\r\n\r\n // Value\r\n var value = data[posy][posx];\n\n if (value && ! data[1] && obj.options.autoIncrement == true) {\n if (obj.options.columns[i].type == 'text' || obj.options.columns[i].type == 'number') {\n if ((''+value).substr(0,1) == '=') {\n var tokens = value.match(/([A-Z]+[0-9]+)/g);\n\n if (tokens) {\n var affectedTokens = [];\n for (var index = 0; index < tokens.length; index++) {\n var position = jexcel.getIdFromColumnName(tokens[index], 1);\n position[0] += colNumber;\r\n position[1] += rowNumber;\r\n if (position[1] < 0) {\r\n position[1] = 0;\r\n }\n var token = jexcel.getColumnNameFromId([position[0], position[1]]);\n\n if (token != tokens[index]) {\n affectedTokens[tokens[index]] = token;\n }\n }\n // Update formula\n if (affectedTokens) {\n value = obj.updateFormula(value, affectedTokens)\n }\n }\n } else {\n if (value == Number(value)) {\n value = Number(value) + rowNumber;\n }\n }\n } else if (obj.options.columns[i].type == 'calendar') {\n var date = new Date(value);\n date.setDate(date.getDate() + rowNumber);\n value = date.getFullYear() + '-' + jexcel.doubleDigitFormat(parseInt(date.getMonth() + 1)) + '-' + jexcel.doubleDigitFormat(date.getDate()) + ' ' + '00:00:00';\n }\n }\n\n records.push(obj.updateCell(i, j, value));\n\n // Update all formulas in the chain\n obj.updateFormulaChain(i, j, records);\n }\n posx++;\n if (h[0] != x1) {\r\n colNumber++;\r\n }\n }\n posy++;\n rowNumber++;\n }\n\n // Update history\n obj.setHistory({\n action:'setValue',\n records:records,\n selection:obj.selectedCell,\n });\n\n // Update table with custom configuration if applicable\n obj.updateTable();\n\n // On after changes\n obj.onafterchanges(el, records);\n }\n\n /**\n * Refresh current selection\n */\n obj.refreshSelection = function() {\n if (obj.selectedCell) {\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n }\n }\n\n /**\n * Move coords to A1 in case ovelaps with an excluded cell\n */\n obj.conditionalSelectionUpdate = function(type, o, d) {\n if (type == 1) {\n if (obj.selectedCell && ((o >= obj.selectedCell[1] && o <= obj.selectedCell[3]) || (d >= obj.selectedCell[1] && d <= obj.selectedCell[3]))) {\n obj.resetSelection();\n return;\n }\n } else {\n if (obj.selectedCell && ((o >= obj.selectedCell[0] && o <= obj.selectedCell[2]) || (d >= obj.selectedCell[0] && d <= obj.selectedCell[2]))) {\n obj.resetSelection();\n return;\n }\n }\n }\n\n /**\n * Clear table selection\n */\n obj.resetSelection = function(blur) {\n // Remove style\n if (! obj.highlighted.length) {\n var previousStatus = 0;\n } else {\n var previousStatus = 1;\n\n for (var i = 0; i < obj.highlighted.length; i++) {\n obj.highlighted[i].classList.remove('highlight');\n obj.highlighted[i].classList.remove('highlight-left');\n obj.highlighted[i].classList.remove('highlight-right');\n obj.highlighted[i].classList.remove('highlight-top');\n obj.highlighted[i].classList.remove('highlight-bottom');\n obj.highlighted[i].classList.remove('highlight-selected');\n\n var px = parseInt(obj.highlighted[i].getAttribute('data-x'));\n var py = parseInt(obj.highlighted[i].getAttribute('data-y'));\n\n // Check for merged cells\n if (obj.highlighted[i].getAttribute('data-merged')) {\n var colspan = parseInt(obj.highlighted[i].getAttribute('colspan'));\n var rowspan = parseInt(obj.highlighted[i].getAttribute('rowspan'));\n var ux = colspan > 0 ? px + (colspan - 1) : px;\n var uy = rowspan > 0 ? py + (rowspan - 1): py;\n } else {\n var ux = px;\n var uy = py;\n }\n\n // Remove selected from headers\n for (var j = px; j <= ux; j++) {\n if (obj.headers[j]) {\n obj.headers[j].classList.remove('selected');\n }\n }\n\n // Remove selected from rows\n for (var j = py; j <= uy; j++) {\n if (obj.rows[j]) {\n obj.rows[j].classList.remove('selected');\n }\n }\n }\n }\n\n // Reset highlighed cells\n obj.highlighted = [];\n\n // Reset\n obj.selectedCell = null;\n\n // Hide corner\n obj.corner.style.top = '-2000px';\n obj.corner.style.left = '-2000px';\n\n if (obj.ignoreEvents != true && blur == true) {\n if (obj.options.onblur) {\n if (typeof(obj.options.onblur) == 'function') {\n if (previousStatus == 1) {\n obj.options.onblur(el);\n }\n }\n }\n }\n\n return previousStatus;\n }\n\n /**\n * Update selection based on two cells\n */\n obj.updateSelection = function(el1, el2, origin) {\n var x1 = el1.getAttribute('data-x');\n var y1 = el1.getAttribute('data-y');\n if (el2) {\n var x2 = el2.getAttribute('data-x');\n var y2 = el2.getAttribute('data-y');\n } else {\n var x2 = x1;\n var y2 = y1;\n }\n\n obj.updateSelectionFromCoords(x1, y1, x2, y2, origin);\n }\n\n /**\n * Update selection from coords\n */\n obj.updateSelectionFromCoords = function(x1, y1, x2, y2, origin) {\n // Reset Selection\n var updated = null;\n var previousState = obj.resetSelection();\n\n // Same element\n if (x2 == null) {\n x2 = x1;\n }\n if (y2 == null) {\n y2 = y1;\n }\n\n // Selection must be within the existing data\n if (x1 >= obj.headers.length) {\n x1 = obj.headers.length - 1;\n }\n if (y1 >= obj.rows.length) {\n y1 = obj.rows.length - 1;\n }\n if (x2 >= obj.headers.length) {\n x2 = obj.headers.length - 1;\n }\n if (y2 >= obj.rows.length) {\n y2 = obj.rows.length - 1;\n }\n\n // Keep selected cell\n obj.selectedCell = [x1, y1, x2, y2];\n\n // Select cells\n if (x1 != null) {\n // Add selected cell\n if (obj.records[y1][x1]) {\n obj.records[y1][x1].classList.add('highlight-selected');\n }\n\n // Origin & Destination\n if (parseInt(x1) < parseInt(x2)) {\n var px = parseInt(x1);\n var ux = parseInt(x2);\n } else {\n var px = parseInt(x2);\n var ux = parseInt(x1);\n }\n\n if (parseInt(y1) < parseInt(y2)) {\n var py = parseInt(y1);\n var uy = parseInt(y2);\n } else {\n var py = parseInt(y2);\n var uy = parseInt(y1);\n }\n\n // Verify merged columns\n for (var i = px; i <= ux; i++) {\n for (var j = py; j <= uy; j++) {\n if (obj.records[j][i] && obj.records[j][i].getAttribute('data-merged')) {\n var x = parseInt(obj.records[j][i].getAttribute('data-x'));\n var y = parseInt(obj.records[j][i].getAttribute('data-y'));\n var colspan = parseInt(obj.records[j][i].getAttribute('colspan'));\n var rowspan = parseInt(obj.records[j][i].getAttribute('rowspan'));\n\n if (colspan > 1) {\n if (x < px) {\n px = x;\n }\n if (x + colspan > ux) {\n ux = x + colspan - 1;\n }\n }\n\n if (rowspan) {\n if (y < py) {\n py = y;\n\n }\n if (y + rowspan > uy) {\n uy = y + rowspan - 1;\n }\n }\n }\n }\n }\n\n // Limits\n var borderLeft = null;\n var borderRight = null;\n var borderTop = null;\n var borderBottom = null;\n\n // Vertical limits\n for (var j = py; j <= uy; j++) {\n if (obj.rows[j].style.display != 'none') {\n if (borderTop == null) {\n borderTop = j;\n }\n borderBottom = j;\n }\n }\n\n // Redefining styles\n for (var i = px; i <= ux; i++) {\n for (var j = py; j <= uy; j++) {\n if (obj.rows[j].style.display != 'none' && obj.records[j][i].style.display != 'none') {\n obj.records[j][i].classList.add('highlight');\n obj.highlighted.push(obj.records[j][i]);\n }\n }\n\n // Horizontal limits\n if (obj.options.columns[i].type != 'hidden') {\n if (borderLeft == null) {\n borderLeft = i;\n }\n borderRight = i;\n }\n }\n\n // Create borders\n if (! borderLeft) {\n borderLeft = 0;\n }\n if (! borderRight) {\n borderRight = 0;\n }\n for (var i = borderLeft; i <= borderRight; i++) {\n if (obj.options.columns[i].type != 'hidden') {\n // Top border\n if (obj.records[borderTop][i]) {\n obj.records[borderTop][i].classList.add('highlight-top');\n }\n // Bottom border\n if (obj.records[borderBottom][i]) {\n obj.records[borderBottom][i].classList.add('highlight-bottom');\n }\n // Add selected from headers\n obj.headers[i].classList.add('selected');\n }\n }\n\n for (var j = borderTop; j <= borderBottom; j++) {\n if (obj.rows[j].style.display != 'none') {\n // Left border\n obj.records[j][borderLeft].classList.add('highlight-left');\n // Right border\n obj.records[j][borderRight].classList.add('highlight-right');\n // Add selected from rows\n obj.rows[j].classList.add('selected');\n }\n }\n\n obj.selectedContainer = [ borderLeft, borderTop, borderRight, borderBottom ];\n }\n\n // Handle events\n if (obj.ignoreEvents != true) {\n if (obj.options.onfocus) {\n if (typeof(obj.options.onfocus) == 'function') {\n if (previousState == 0) {\n obj.options.onfocus(el);\n }\n }\n }\n\n if (typeof(obj.options.onselection) == 'function') {\n obj.options.onselection(el, borderLeft, borderTop, borderRight, borderBottom, origin);\n }\n }\n\n // Find corner cell\n obj.updateCornerPosition();\n }\n\n /**\n * Remove copy selection\n * \n * @return void\n */\n obj.removeCopySelection = function() {\n // Remove current selection\n for (var i = 0; i < obj.selection.length; i++) {\n obj.selection[i].classList.remove('selection');\n obj.selection[i].classList.remove('selection-left');\n obj.selection[i].classList.remove('selection-right');\n obj.selection[i].classList.remove('selection-top');\n obj.selection[i].classList.remove('selection-bottom');\n }\n\n obj.selection = [];\n }\n\n /**\n * Update copy selection\n * \n * @param int x, y\n * @return void\n */\n obj.updateCopySelection = function(x3, y3) {\n // Remove selection\n obj.removeCopySelection();\n\n // Get elements first and last\n var x1 = obj.selectedContainer[0];\n var y1 = obj.selectedContainer[1];\n var x2 = obj.selectedContainer[2];\n var y2 = obj.selectedContainer[3];\n\n if (x3 != null && y3 != null) {\n if (x3 - x2 > 0) {\n var px = parseInt(x2) + 1;\n var ux = parseInt(x3);\n } else {\n var px = parseInt(x3);\n var ux = parseInt(x1) - 1;\n }\n\n if (y3 - y2 > 0) {\n var py = parseInt(y2) + 1;\n var uy = parseInt(y3);\n } else {\n var py = parseInt(y3);\n var uy = parseInt(y1) - 1;\n }\n\n if (ux - px < uy - py) {\n var px = parseInt(x1);\n var ux = parseInt(x2);\n } else {\n var py = parseInt(y1);\n var uy = parseInt(y2);\n }\n\n for (var j = py; j <= uy; j++) {\n for (var i = px; i <= ux; i++) {\n if (obj.records[j][i] && obj.rows[j].style.display != 'none' && obj.records[j][i].style.display != 'none') {\n obj.records[j][i].classList.add('selection');\n obj.records[py][i].classList.add('selection-top');\n obj.records[uy][i].classList.add('selection-bottom');\n obj.records[j][px].classList.add('selection-left');\n obj.records[j][ux].classList.add('selection-right');\n\n // Persist selected elements\n obj.selection.push(obj.records[j][i]);\n }\n }\n }\n }\n }\n\n /**\n * Update corner position\n * \n * @return void\n */\n obj.updateCornerPosition = function() {\n // If any selected cells\n if (! obj.highlighted.length) {\n obj.corner.style.top = '-2000px';\n obj.corner.style.left = '-2000px';\n } else {\n // Get last cell\n var last = obj.highlighted[obj.highlighted.length-1];\n\r\n const contentRect = obj.content.getBoundingClientRect();\r\n var x1 = contentRect.left;\r\n var y1 = contentRect.top;\r\n\r\n const lastRect = last.getBoundingClientRect();\r\n var x2 = lastRect.left;\r\n var y2 = lastRect.top;\r\n var w2 = lastRect.width;\r\n var h2 = lastRect.height;\r\n\n var x = (x2 - x1) + obj.content.scrollLeft + w2 - 4;\n var y = (y2 - y1) + obj.content.scrollTop + h2 - 4;\n\n // Place the corner in the correct place\n obj.corner.style.top = y + 'px';\n obj.corner.style.left = x + 'px';\n }\n }\n\n /**\n * Update scroll position based on the selection\n */\n obj.updateScroll = function(direction) {\n // jExcel Container information\n const contentRect = obj.content.getBoundingClientRect();\r\n var x1 = contentRect.left;\r\n var y1 = contentRect.top;\r\n var w1 = contentRect.width;\r\n var h1 = contentRect.height;\r\n\n // Direction Left or Up\n var reference = obj.records[obj.selectedCell[3]][obj.selectedCell[2]];\n\n // Reference\r\n const referenceRect = reference.getBoundingClientRect();\r\n var x2 = referenceRect.left;\r\n var y2 = referenceRect.top;\r\n var w2 = referenceRect.width;\r\n var h2 = referenceRect.height;\n\n // Direction\n if (direction == 0 || direction == 1) {\n var x = (x2 - x1) + obj.content.scrollLeft;\n var y = (y2 - y1) + obj.content.scrollTop - 2;\n } else {\n var x = (x2 - x1) + obj.content.scrollLeft + w2;\n var y = (y2 - y1) + obj.content.scrollTop + h2;\n }\n\n // Top position check\n if (y > (obj.content.scrollTop + 30) && y < (obj.content.scrollTop + h1)) {\n // In the viewport\n } else {\n // Out of viewport\n if (y < obj.content.scrollTop + 30) {\n obj.content.scrollTop = y - h2;\n } else {\n obj.content.scrollTop = y - (h1 - 2);\n }\n }\n\n // Left position check - TODO: change that to the bottom border of the element\n if (x > (obj.content.scrollLeft) && x < (obj.content.scrollLeft + w1)) {\n // In the viewport\n } else {\n // Out of viewport\n if (x < obj.content.scrollLeft + 30) {\n obj.content.scrollLeft = x;\n if (obj.content.scrollLeft < 50) {\n obj.content.scrollLeft = 0;\n }\n } else {\n obj.content.scrollLeft = x - (w1 - 20);\n }\n }\n }\n\n /**\n * Get the column width\n * \n * @param int column column number (first column is: 0)\n * @return int current width\n */\n obj.getWidth = function(column) {\n if (! column) {\n // Get all headers\n var data = [];\n for (var i = 0; i < obj.headers.length; i++) {\n data.push(obj.options.columns[i].width);\n }\n } else {\n // In case the column is an object\n if (typeof(column) == 'object') {\n column = $(column).getAttribute('data-x');\n }\n\n data = obj.colgroup[column].getAttribute('width')\n }\n\n return data;\n }\n\n /**\n * Set the column width\n * \n * @param int column number (first column is: 0)\n * @param int new column width\n * @param int old column width\n */\n obj.setWidth = function (column, width, oldWidth) {\n if (width > 0) {\n // In case the column is an object\n if (typeof(column) == 'object') {\n column = column.getAttribute('data-x');\n }\n\n // Oldwidth\n if (! oldWidth) {\n oldWidth = obj.colgroup[column].getAttribute('width');\n }\n\n // Set width\n obj.colgroup[column].setAttribute('width', width);\n obj.options.columns[column].width = width;\n\n // Keeping history of changes\n obj.setHistory({\n action:'setWidth',\n column:column,\n oldValue:oldWidth,\n newValue:width,\n });\n\n // On resize column\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onresizecolumn) == 'function') {\n obj.options.onresizecolumn(el, column, width, oldWidth);\n }\n }\n\n // Update corner position\n obj.updateCornerPosition();\n }\n }\n\n /**\n * Set the row height\n * \n * @param row - row number (first row is: 0)\n * @param height - new row height\n * @param oldHeight - old row height\n */\n obj.setHeight = function (row, height, oldHeight) {\n if (height > 0) {\n // In case the column is an object\n if (typeof(row) == 'object') {\n row = row.getAttribute('data-y');\n }\n\n // Oldwidth\n if (! oldHeight) {\n oldHeight = obj.rows[row].getAttribute('height');\r\n\r\n if (! oldHeight) {\r\n var rect = obj.rows[row].getBoundingClientRect();\r\n oldHeight = rect.height;\r\n }\n }\n\n // Integer\r\n height = parseInt(height);\r\n\n // Set width\n obj.rows[row].style.height = height + 'px';\n\n // Keep options updated\n if (! obj.options.rows[row]) {\n obj.options.rows[row] = {};\n }\n obj.options.rows[row].height = height;\n\n // Keeping history of changes\n obj.setHistory({\n action:'setHeight',\n row:row,\n oldValue:oldHeight,\n newValue:height,\n });\n\n // On resize column\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onresizerow) == 'function') {\n obj.options.onresizerow(el, row, height, oldHeight);\n }\n }\n\n // Update corner position\n obj.updateCornerPosition();\n }\n }\n\n /**\n * Get the row height\n * \n * @param row - row number (first row is: 0)\n * @return height - current row height\n */\n obj.getHeight = function(row) {\n if (! row) {\n // Get height of all rows\n var data = [];\n for (var j = 0; j < obj.rows.length; j++) {\n var h = obj.rows[j].style.height;\n if (h) {\n data[j] = h;\n }\n }\n } else {\n // In case the row is an object\n if (typeof(row) == 'object') {\n row = $(row).getAttribute('data-y');\n }\n\n var data = obj.rows[row].style.height;\n }\n\n return data;\n }\n\n /**\n * Get the column title\n * \n * @param column - column number (first column is: 0)\n * @param title - new column title\n */\n obj.getHeader = function(column) {\n return obj.headers[column].innerText;\n }\n\n /**\n * Set the column title\n * \n * @param column - column number (first column is: 0)\n * @param title - new column title\n */\n obj.setHeader = function(column, newValue) {\n if (obj.headers[column]) {\n var oldValue = obj.headers[column].innerText;\n\n if (! newValue) {\n newValue = prompt(obj.options.text.columnName, oldValue)\n }\n\n if (newValue) {\n obj.headers[column].innerHTML = newValue;\n // Keep the title property\r\n obj.headers[column].setAttribute('title', newValue);\n }\n\n obj.setHistory({\n action: 'setHeader',\n column: column,\n oldValue: oldValue,\n newValue: newValue\n });\n\n // On change\n if (! obj.ignoreEvents) {\n if (typeof(obj.options.onchangeheader) == 'function') {\n obj.options.onchangeheader(el, column, oldValue, newValue);\n }\n }\n }\n }\n\n /**\n * Get the headers\n * \n * @param asArray\n * @return mixed\n */\n obj.getHeaders = function (asArray) {\n var title = [];\n\n for (var i = 0; i < obj.headers.length; i++) {\n title.push(obj.getHeader(i));\n }\n\n return asArray ? title : title.join(obj.options.csvDelimiter);\n }\n\n /**\n * Get meta information from cell(s)\n * \n * @return integer\n */\n obj.getMeta = function(cell, key) {\n if (! cell) {\n return obj.options.meta;\n } else {\n if (key) {\n return obj.options.meta[cell] && obj.options.meta[cell][key] ? obj.options.meta[cell][key] : null;\n } else {\n return obj.options.meta[cell] ? obj.options.meta[cell] : null;\n }\n }\n }\n\n /**\n * Set meta information to cell(s)\n * \n * @return integer\n */\n obj.setMeta = function(o, k, v) {\n if (! obj.options.meta) {\n obj.options.meta = {}\n }\n\n if (k && v) {\n // Set data value\n if (! obj.options.meta[o]) {\n obj.options.meta[o] = {};\n }\n obj.options.meta[o][k] = v;\n } else {\n // Apply that for all cells\n var keys = Object.keys(o);\n for (var i = 0; i < keys.length; i++) {\n if (! obj.options.meta[keys[i]]) {\n obj.options.meta[keys[i]] = {};\n }\n\n var prop = Object.keys(o[keys[i]]);\n for (var j = 0; j < prop.length; j++) {\n obj.options.meta[keys[i]][prop[j]] = o[keys[i]][prop[j]];\n }\n }\n }\n\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onchangemeta) == 'function') {\n obj.options.onchangemeta(el, o, k, v);\n }\n }\n }\n\n /**\n * Update meta information\n * \n * @return integer\n */\n obj.updateMeta = function(affectedCells) {\n if (obj.options.meta) {\n var newMeta = {};\n var keys = Object.keys(obj.options.meta);\n for (var i = 0; i < keys.length; i++) {\n if (affectedCells[keys[i]]) {\n newMeta[affectedCells[keys[i]]] = obj.options.meta[keys[i]];\n } else {\n newMeta[keys[i]] = obj.options.meta[keys[i]];\n }\n }\n // Update meta information\n obj.options.meta = newMeta;\n }\n }\n\n /**\n * Get style information from cell(s)\n * \n * @return integer\n */\n obj.getStyle = function(cell, key) {\n // Cell\n if (! cell) {\n // Control vars\n var data = {};\n\n // Column and row length\n var x = obj.options.data[0].length;\n var y = obj.options.data.length;\n\n // Go through the columns to get the data\n for (var j = 0; j < y; j++) {\n for (var i = 0; i < x; i++) {\n // Value\n var v = key ? obj.records[j][i].style[key] : obj.records[j][i].getAttribute('style');\n\n // Any meta data for this column?\n if (v) {\n // Column name\n var k = jexcel.getColumnNameFromId([i, j]);\n // Value\n data[k] = v;\n }\n }\n }\n\n return data;\n } else {\n cell = jexcel.getIdFromColumnName(cell, true);\n\n return key ? obj.records[cell[1]][cell[0]].style[key] : obj.records[cell[1]][cell[0]].getAttribute('style');\n }\n },\n\n obj.resetStyle = function(o, ignoreHistoryAndEvents) {\n var keys = Object.keys(o);\n for (var i = 0; i < keys.length; i++) {\n // Position\n var cell = jexcel.getIdFromColumnName(keys[i], true);\n if (obj.records[cell[1]] && obj.records[cell[1]][cell[0]]) {\n obj.records[cell[1]][cell[0]].setAttribute('style', '');\n }\n }\n obj.setStyle(o, null, null, null, ignoreHistoryAndEvents);\n }\n\n /**\n * Set meta information to cell(s)\n * \n * @return integer\n */\n obj.setStyle = function(o, k, v, force, ignoreHistoryAndEvents) {\n var newValue = {};\n var oldValue = {};\n\n // Apply style\n var applyStyle = function(cellId, key, value) {\n // Position\n var cell = jexcel.getIdFromColumnName(cellId, true);\n\n if (obj.records[cell[1]] && obj.records[cell[1]][cell[0]]) {\n // Current value\n var currentValue = obj.records[cell[1]][cell[0]].style[key];\n\n // Change layout\n if (currentValue == value && ! force) {\n value = '';\n obj.records[cell[1]][cell[0]].style[key] = '';\n } else {\n obj.records[cell[1]][cell[0]].style[key] = value;\n }\n\n // History\n if (! oldValue[cellId]) {\n oldValue[cellId] = [];\n }\n if (! newValue[cellId]) {\n newValue[cellId] = [];\n }\n\n oldValue[cellId].push([key + ':' + currentValue]);\n newValue[cellId].push([key + ':' + value]);\n }\n }\n\n if (k && v) {\n // Get object from string\n if (typeof(o) == 'string') {\n applyStyle(o, k, v);\n } else {\n // Avoid duplications\n var oneApplication = [];\n // Apply that for all cells\n for (var i = 0; i < o.length; i++) {\n var x = o[i].getAttribute('data-x');\n var y = o[i].getAttribute('data-y');\n var cellName = jexcel.getColumnNameFromId([x, y]);\n // This happens when is a merged cell\n if (! oneApplication[cellName]) {\n applyStyle(cellName, k, v);\n oneApplication[cellName] = true;\n }\n }\n }\n } else {\n var keys = Object.keys(o);\n for (var i = 0; i < keys.length; i++) {\n var style = o[keys[i]];\n if (typeof(style) == 'string') {\n style = style.split(';');\n }\n for (var j = 0; j < style.length; j++) {\n if (typeof(style[j]) == 'string') {\n style[j] = style[j].split(':');\n }\n // Apply value\n if (style[j][0].trim()) {\n applyStyle(keys[i], style[j][0].trim(), style[j][1]);\n }\n }\n }\n }\n\n var keys = Object.keys(oldValue);\n for (var i = 0; i < keys.length; i++) {\n oldValue[keys[i]] = oldValue[keys[i]].join(';');\n }\n var keys = Object.keys(newValue);\n for (var i = 0; i < keys.length; i++) {\n newValue[keys[i]] = newValue[keys[i]].join(';');\n }\n\n if (! ignoreHistoryAndEvents) {\n // Keeping history of changes\n obj.setHistory({\n action: 'setStyle',\n oldValue: oldValue,\n newValue: newValue,\n });\n }\n\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onchangestyle) == 'function') {\n obj.options.onchangestyle(el, o, k, v);\n }\n }\n }\n\n /**\n * Get cell comments, null cell for all\n */\n obj.getComments = function(cell, withAuthor) {\n if (cell) {\r\n if (typeof(cell) == 'string') {\r\n var cell = jexcel.getIdFromColumnName(cell, true);\r\n }\r\n\r\n if (withAuthor) {\r\n return [obj.records[cell[1]][cell[0]].getAttribute('title'), obj.records[cell[1]][cell[0]].getAttribute('author')];\r\n } else {\r\n return obj.records[cell[1]][cell[0]].getAttribute('title') || '';\r\n }\r\n } else {\r\n var data = {};\r\n for (var j = 0; j < obj.options.data.length; j++) {\r\n for (var i = 0; i < obj.options.columns.length; i++) {\r\n var comments = obj.records[j][i].getAttribute('title');\r\n if (comments) {\r\n var cell = jexcel.getColumnNameFromId([i, j]);\r\n data[cell] = comments;\r\n }\r\n }\r\n }\r\n return data;\r\n }\n }\n\n /**\n * Set cell comments\n */\n obj.setComments = function(cellId, comments, author) {\n if (typeof(cellId) == 'string') {\n var cell = jexcel.getIdFromColumnName(cellId, true);\n } else {\n var cell = cellId;\n }\n\n // Keep old value\n var title = obj.records[cell[1]][cell[0]].getAttribute('title');\n var author = obj.records[cell[1]][cell[0]].getAttribute('data-author');\n var oldValue = [ title, author ];\n\n // Set new values\n obj.records[cell[1]][cell[0]].setAttribute('title', comments ? comments : '');\n obj.records[cell[1]][cell[0]].setAttribute('data-author', author ? author : '');\n\n // Remove class if there is no comment\n if (comments) {\n obj.records[cell[1]][cell[0]].classList.add('jexcel_comments');\n } else {\n obj.records[cell[1]][cell[0]].classList.remove('jexcel_comments');\n }\n\n // Save history\n obj.setHistory({\n action:'setComments',\n column: cellId,\n newValue: [ comments, author ],\n oldValue: oldValue,\n });\n }\n\n /**\n * Get table config information\n */\n obj.getConfig = function() {\n var options = obj.options;\n options.style = obj.getStyle();\n options.mergeCells = obj.getMerge();\r\n options.comments = obj.getComments();\n\n return options;\n }\n\n /**\n * Sort data and reload table\n */\n obj.orderBy = function(column, order) {\n if (column >= 0) {\n // Merged cells\n if (Object.keys(obj.options.mergeCells).length > 0) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n // Remove merged cells\n obj.destroyMerged();\n }\n }\n\n // Direction\n if (order == null) {\n order = obj.headers[column].classList.contains('arrow-down') ? 1 : 0;\n } else {\n order = order ? 1 : 0;\n }\n\n // Filter\n Array.prototype.orderBy = function(p, o) {\n return this.slice(0).sort(function(a, b) {\n var valueA = a[p] == '' ? '' : Number(a[p]) == a[p] ? Number(a[p]) : a[p].toLowerCase();\n var valueB = b[p] == '' ? '' : Number(b[p]) == b[p] ? Number(b[p]) : b[p].toLowerCase();\n\n if (! o) {\n return (valueA == '' && valueB != '') ? 1 : (valueA != '' && valueB == '') ? -1 : (valueA > valueB) ? 1 : (valueA < valueB) ? -1 : 0;\n } else {\n return (valueA == '' && valueB != '') ? 1 : (valueA != '' && valueB == '') ? -1 : (valueA > valueB) ? -1 : (valueA < valueB) ? 1 : 0;\n }\n });\n }\n\n // Test order\n var temp = [];\n if (obj.options.columns[column].type == 'calendar' ||\n obj.options.columns[column].type == 'checkbox' ||\n obj.options.columns[column].type == 'radio') {\n for (var j = 0; j < obj.options.data.length; j++) {\n temp[j] = [ j, obj.options.data[j][column] ];\n }\n } else {\n for (var j = 0; j < obj.options.data.length; j++) {\n temp[j] = [ j, obj.records[j][column].innerHTML ];\n }\n }\n temp = temp.orderBy(1, order);\n\n // Save history\n var newValue = [];\n for (var j = 0; j < temp.length; j++) {\n newValue[j] = temp[j][0];\n }\n\n // Save history\n obj.setHistory({\n action: 'orderBy',\n rows: newValue,\n column: column,\n order: order,\n });\n\n // Update order\n obj.updateOrderArrow(column, order);\n obj.updateOrder(newValue);\n\n // On sort event\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onsort) == 'function') {\n obj.options.onsort(el, column, order);\n }\n }\n\n return true;\n }\n }\n\n /**\n * Update order arrow\n */\n obj.updateOrderArrow = function(column, order) {\n // Remove order\n for (var i = 0; i < obj.headers.length; i++) {\n obj.headers[i].classList.remove('arrow-up');\n obj.headers[i].classList.remove('arrow-down');\n }\n\n // No order specified then toggle order\n if (order) {\n obj.headers[column].classList.add('arrow-up');\n } else {\n obj.headers[column].classList.add('arrow-down');\n }\n }\n\n /**\n * Update rows position\n */\n obj.updateOrder = function(rows) {\n // History\n var data = []\n for (var j = 0; j < rows.length; j++) {\n data[j] = obj.options.data[rows[j]];\n }\n obj.options.data = data;\n\n var data = []\n for (var j = 0; j < rows.length; j++) {\n data[j] = obj.records[rows[j]];\n }\n obj.records = data;\n\n var data = []\n for (var j = 0; j < rows.length; j++) {\n data[j] = obj.rows[rows[j]];\n }\n obj.rows = data;\n\n // Update references\n obj.updateTableReferences();\n\n // Redo search\n if (obj.searchInput.value) {\n obj.search(obj.searchInput.value);\n } else {\n // Create page\n obj.results = null;\n obj.pageNumber = 0;\n\n if (obj.options.pagination > 0) {\n obj.page(0);\n } else if (obj.options.lazyLoading == true) {\n obj.loadPage(0);\n } else {\n for (var j = 0; j < obj.rows.length; j++) {\n obj.tbody.appendChild(obj.rows[j]);\n }\n }\n }\n }\n\n /**\n * Move row\n * \n * @return void\n */\n obj.moveRow = function(o, d, ignoreDom) {\n if (Object.keys(obj.options.mergeCells).length > 0) {\n if (o > d) {\r\n var insertBefore = 1;\r\n } else {\r\n var insertBefore = 0;\r\n }\r\n\r\n if (obj.isRowMerged(o).length || obj.isRowMerged(d, insertBefore).length) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n }\n\n if (obj.options.search == true) {\n if (obj.results && obj.results.length != obj.rows.length) {\n if (confirm(obj.options.text.thisActionWillClearYourSearchResultsAreYouSure)) {\n obj.resetSearch();\n } else {\n return false;\n }\n }\n\n obj.results = null;\n }\n\n if (! ignoreDom) {\n if (Array.prototype.indexOf.call(obj.tbody.children, obj.rows[d]) >= 0) {\n if (o > d) {\n obj.tbody.insertBefore(obj.rows[o], obj.rows[d]);\n } else {\n obj.tbody.insertBefore(obj.rows[o], obj.rows[d].nextSibling);\n }\n } else {\n obj.tbody.removeChild(obj.rows[o]);\n }\n }\n\n // Place references in the correct position\n obj.rows.splice(d, 0, obj.rows.splice(o, 1)[0]);\n obj.records.splice(d, 0, obj.records.splice(o, 1)[0]);\n obj.options.data.splice(d, 0, obj.options.data.splice(o, 1)[0]);\n\n // Respect pagination\n if (obj.options.pagination > 0 && obj.tbody.children.length != obj.options.pagination) {\n obj.page(obj.pageNumber);\n }\n\n // Keeping history of changes\n obj.setHistory({\n action:'moveRow',\n oldValue: o,\n newValue: d,\n });\n\n // Update table references\n obj.updateTableReferences();\n\n // Events\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onmoverow) == 'function') {\n obj.options.onmoverow(el, o, d);\n }\n }\n }\n\n /**\n * Insert a new row\n * \n * @param mixed - number of blank lines to be insert or a single array with the data of the new row\n * @param rowNumber\n * @param insertBefore\n * @return void\n */\n obj.insertRow = function(mixed, rowNumber, insertBefore) {\n // Configuration\n if (obj.options.allowInsertRow == true) {\n // Records\n var records = [];\n\n // Data to be insert\n var data = [];\n\n // The insert could be lead by number of rows or the array of data\n if (mixed > 0) {\n var numOfRows = mixed;\n } else {\n var numOfRows = 1;\n\n if (mixed) {\n data = mixed;\n }\n }\n\n // Direction\n var insertBefore = insertBefore ? true : false;\n\n // Current column number\n var lastRow = obj.options.data.length - 1;\n\n if (rowNumber == undefined || rowNumber >= parseInt(lastRow) || rowNumber < 0) {\n rowNumber = lastRow;\n }\n\n // Onbeforeinsertrow\n if (typeof(obj.options.onbeforeinsertrow) == 'function') {\n if (! obj.options.onbeforeinsertrow(el, rowNumber, numOfRows, insertBefore)) {\n console.log('onbeforeinsertrow returned false');\n\n return false;\n }\n }\n\n // Merged cells\n if (Object.keys(obj.options.mergeCells).length > 0) {\n if (obj.isRowMerged(rowNumber, insertBefore).length) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n }\n\n // Clear any search\n if (obj.options.search == true) {\n if (obj.results && obj.results.length != obj.rows.length) {\n if (confirm(obj.options.text.thisActionWillClearYourSearchResultsAreYouSure)) {\n obj.resetSearch();\n } else {\n return false;\n }\n }\n\n obj.results = null;\n }\n\n // Insertbefore\n var rowIndex = (! insertBefore) ? rowNumber + 1 : rowNumber;\n\n // Keep the current data\n var currentRecords = obj.records.splice(rowIndex);\n var currentData = obj.options.data.splice(rowIndex);\n var currentRows = obj.rows.splice(rowIndex);\n\n // Adding lines\n var rowRecords = [];\n var rowData = [];\n var rowNode = [];\n\n for (var row = rowIndex; row < (numOfRows + rowIndex); row++) {\n // Push data to the data container\n obj.options.data[row] = [];\n for (var col = 0; col < obj.options.columns.length; col++) {\n obj.options.data[row][col] = data[col] ? data[col] : '';\n }\n // Create row\n var tr = obj.createRow(row, obj.options.data[row]);\n // Append node\n if (currentRows[0]) {\r\n if (Array.prototype.indexOf.call(obj.tbody.children, currentRows[0]) >= 0) {\r\n obj.tbody.insertBefore(tr, currentRows[0]);\n }\n } else {\r\n if (Array.prototype.indexOf.call(obj.tbody.children, obj.rows[rowNumber]) >= 0) {\r\n obj.tbody.appendChild(tr);\r\n }\r\n }\n // Record History\n rowRecords.push(obj.records[row]);\n rowData.push(obj.options.data[row]);\n rowNode.push(tr);\n }\n\n // Copy the data back to the main data\n Array.prototype.push.apply(obj.records, currentRecords);\n Array.prototype.push.apply(obj.options.data, currentData);\n Array.prototype.push.apply(obj.rows, currentRows);\n\n // Respect pagination\n if (obj.options.pagination > 0) {\n obj.page(obj.pageNumber);\n }\n\n // Keep history\n obj.setHistory({\n action: 'insertRow',\n rowNumber: rowNumber,\n numOfRows: numOfRows,\n insertBefore: insertBefore,\n rowRecords: rowRecords,\n rowData: rowData,\n rowNode: rowNode,\n });\n\n // Remove table references\n obj.updateTableReferences();\n\n // Events\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.oninsertrow) == 'function') {\n obj.options.oninsertrow(el, rowNumber, numOfRows, rowRecords, insertBefore);\n }\n }\n }\n }\n\n /**\n * Delete a row by number\n * \n * @param integer rowNumber - row number to be excluded\n * @param integer numOfRows - number of lines\n * @return void\n */\n obj.deleteRow = function(rowNumber, numOfRows) {\n // Global Configuration\n if (obj.options.allowDeleteRow == true) {\n if (obj.options.allowDeletingAllRows == true || obj.options.data.length > 1) {\n // Delete row definitions\n if (rowNumber == undefined) {\n var number = obj.getSelectedRows();\n\n if (! number[0]) {\n rowNumber = obj.options.data.length - 1;\n numOfRows = 1;\n } else {\n rowNumber = parseInt(number[0].getAttribute('data-y'));\n numOfRows = number.length;\n }\n }\n\n // Last column\n var lastRow = obj.options.data.length - 1;\n\n if (rowNumber == undefined || rowNumber > lastRow || rowNumber < 0) {\n rowNumber = lastRow;\n }\n\n if (! numOfRows) {\n numOfRows = 1;\n }\n\n // Do not delete more than the number of recoreds\n if (rowNumber + numOfRows >= obj.options.data.length) {\n numOfRows = obj.options.data.length - rowNumber;\n }\n\n // Onbeforedeleterow\n if (typeof(obj.options.onbeforedeleterow) == 'function') {\n if (! obj.options.onbeforedeleterow(el, rowNumber, numOfRows)) {\n console.log('onbeforedeleterow returned false');\n return false;\n }\n }\n\n if (parseInt(rowNumber) > -1) {\n // Merged cells\n var mergeExists = false;\n if (Object.keys(obj.options.mergeCells).length > 0) {\n for (var row = rowNumber; row < rowNumber + numOfRows; row++) {\n if (obj.isRowMerged(row, false).length) {\n mergeExists = true;\n }\n }\n }\n if (mergeExists) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n\n // Clear any search\n if (obj.options.search == true) {\n if (obj.results && obj.results.length != obj.rows.length) {\n if (confirm(obj.options.text.thisActionWillClearYourSearchResultsAreYouSure)) {\n obj.resetSearch();\n } else {\n return false;\n }\n }\n\n obj.results = null;\n }\n\n // Remove node\n for (var row = rowNumber; row < rowNumber + numOfRows; row++) {\n if (Array.prototype.indexOf.call(obj.tbody.children, obj.rows[row]) >= 0) {\n obj.rows[row].className = '';\n obj.rows[row].parentNode.removeChild(obj.rows[row]);\n }\n }\n\n // Remove data\n var rowRecords = obj.records.splice(rowNumber, numOfRows);\n var rowData = obj.options.data.splice(rowNumber, numOfRows);\n var rowNode = obj.rows.splice(rowNumber, numOfRows);\n\n // Respect pagination\n if (obj.options.pagination > 0 && obj.tbody.children.length != obj.options.pagination) {\n obj.page(obj.pageNumber);\n }\n\n // Remove selection\n obj.conditionalSelectionUpdate(1, rowNumber, (rowNumber + numOfRows) - 1);\n\n // Keep history\n obj.setHistory({\n action: 'deleteRow',\n rowNumber: rowNumber,\n numOfRows: numOfRows,\n insertBefore: 1,\n rowRecords: rowRecords,\n rowData: rowData,\n rowNode: rowNode\n });\n\n // Remove table references\n obj.updateTableReferences();\n\n // Events\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.ondeleterow) == 'function') {\n obj.options.ondeleterow(el, rowNumber, numOfRows, rowRecords);\n }\n }\n }\n } else {\n console.error('JEXCEL. It is not possible to delete the last row');\n }\n }\n }\n\n\n /**\n * Move column\n * \n * @return void\n */\n obj.moveColumn = function(o, d) {\n if (Object.keys(obj.options.mergeCells).length > 0) {\n if (o > d) {\r\n var insertBefore = 1;\r\n } else {\r\n var insertBefore = 0;\r\n }\r\n\r\n if (obj.isColMerged(o).length || obj.isColMerged(d, insertBefore).length) {\r\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n }\n\n var o = parseInt(o);\n var d = parseInt(d);\n\n if (o > d) {\n obj.headerContainer.insertBefore(obj.headers[o], obj.headers[d]);\n obj.colgroupContainer.insertBefore(obj.colgroup[o], obj.colgroup[d]);\n\n for (var j = 0; j < obj.rows.length; j++) {\n obj.rows[j].insertBefore(obj.records[j][o], obj.records[j][d]);\n }\n } else {\n obj.headerContainer.insertBefore(obj.headers[o], obj.headers[d].nextSibling);\n obj.colgroupContainer.insertBefore(obj.colgroup[o], obj.colgroup[d].nextSibling);\n\n for (var j = 0; j < obj.rows.length; j++) {\n obj.rows[j].insertBefore(obj.records[j][o], obj.records[j][d].nextSibling);\n }\n }\n\n obj.options.columns.splice(d, 0, obj.options.columns.splice(o, 1)[0]);\n obj.headers.splice(d, 0, obj.headers.splice(o, 1)[0]);\n obj.colgroup.splice(d, 0, obj.colgroup.splice(o, 1)[0]);\n\n for (var j = 0; j < obj.rows.length; j++) {\n obj.options.data[j].splice(d, 0, obj.options.data[j].splice(o, 1)[0]);\n obj.records[j].splice(d, 0, obj.records[j].splice(o, 1)[0]);\n }\n\n // Keeping history of changes\n obj.setHistory({\n action:'moveColumn',\n oldValue: o,\n newValue: d,\n });\n\n // Update table references\n obj.updateTableReferences();\n\n // Events\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.onmovecolumn) == 'function') {\n obj.options.onmovecolumn(el, o, d);\n }\n }\n }\n\n\n /**\n * Insert a new column\n * \n * @param mixed - num of columns to be added or data to be added in one single column\n * @param int columnNumber - number of columns to be created\n * @param bool insertBefore\n * @param object properties - column properties\n * @return void\n */\n obj.insertColumn = function(mixed, columnNumber, insertBefore, properties) {\n // Configuration\n if (obj.options.allowInsertColumn == true) {\n // Records\n var records = [];\n\n // Data to be insert\n var data = [];\n\n // The insert could be lead by number of rows or the array of data\n if (mixed > 0) {\n var numOfColumns = mixed;\n } else {\n var numOfColumns = 1;\n\n if (mixed) {\n data = mixed;\n }\n }\n\n // Direction\n var insertBefore = insertBefore ? true : false;\n\n // Current column number\n var lastColumn = obj.options.columns.length - 1;\n\n // Confirm position\n if (columnNumber == undefined || columnNumber >= parseInt(lastColumn) || columnNumber < 0) {\n columnNumber = lastColumn;\n }\n\n // Onbeforeinsertcolumn\n if (typeof(obj.options.onbeforeinsertcolumn) == 'function') {\n if (! obj.options.onbeforeinsertcolumn(el, columnNumber, numOfColumns, insertBefore)) {\n console.log('onbeforeinsertcolumn returned false');\n\n return false;\n }\n }\n\n // Merged cells\n if (Object.keys(obj.options.mergeCells).length > 0) {\n if (obj.isColMerged(columnNumber, insertBefore).length) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n }\n\n // Create default properties\n if (! properties) {\n properties = [];\n }\n\n for (var i = 0; i < numOfColumns; i++) {\n if (! properties[i]) {\n properties[i] = { type:'text', source:[], options:[], width:obj.options.defaultColWidth, align:obj.options.defaultColAlign };\n }\n }\n\n // Insert before\n var columnIndex = (! insertBefore) ? columnNumber + 1 : columnNumber;\n obj.options.columns = jexcel.injectArray(obj.options.columns, columnIndex, properties);\n\n // Open space in the containers\n var currentHeaders = obj.headers.splice(columnIndex);\n var currentColgroup = obj.colgroup.splice(columnIndex);\n\n // History\n var historyHeaders = [];\n var historyColgroup = [];\n var historyRecords = [];\n var historyData = [];\n\n // Add new headers\n for (var col = columnIndex; col < (numOfColumns + columnIndex); col++) {\n obj.createCellHeader(col);\n obj.headerContainer.insertBefore(obj.headers[col], obj.headerContainer.children[col+1]);\n obj.colgroupContainer.insertBefore(obj.colgroup[col], obj.colgroupContainer.children[col+1]);\n\n historyHeaders.push(obj.headers[col]);\n historyColgroup.push(obj.colgroup[col]);\n }\n\n // Adding visual columns\n for (var row = 0; row < obj.options.data.length; row++) {\n // Keep the current data\n var currentData = obj.options.data[row].splice(columnIndex);\n var currentRecord = obj.records[row].splice(columnIndex);\n\n // History\n historyData[row] = [];\n historyRecords[row] = [];\n\n for (var col = columnIndex; col < (numOfColumns + columnIndex); col++) {\n // New value\n var value = data[row] ? data[row] : '';\n obj.options.data[row][col] = value;\n // New cell\n var td = obj.createCell(col, row, obj.options.data[row][col]);\n obj.records[row][col] = td;\n // Add cell to the row\n if (obj.rows[row]) {\n obj.rows[row].insertBefore(td, obj.rows[row].children[col+1]);\n }\n\n // Record History\n historyData[row].push(value);\n historyRecords[row].push(td);\n }\n\n // Copy the data back to the main data\n Array.prototype.push.apply(obj.options.data[row], currentData);\n Array.prototype.push.apply(obj.records[row], currentRecord);\n }\n\n Array.prototype.push.apply(obj.headers, currentHeaders);\n Array.prototype.push.apply(obj.colgroup, currentColgroup);\n\n // Adjust nested headers\n if (obj.options.nestedHeaders && obj.options.nestedHeaders.length > 0) {\n // Flexible way to handle nestedheaders\n if (obj.options.nestedHeaders[0] && obj.options.nestedHeaders[0][0]) {\n for (var j = 0; j < obj.options.nestedHeaders.length; j++) {\n var colspan = parseInt(obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan) + numOfColumns;\n obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan = colspan;\n obj.thead.children[j].children[obj.thead.children[j].children.length-1].setAttribute('colspan', colspan);\n }\n } else {\n var colspan = parseInt(obj.options.nestedHeaders[0].colspan) + numOfColumns;\n obj.options.nestedHeaders[0].colspan = colspan;\n obj.thead.children[0].children[obj.thead.children[0].children.length-1].setAttribute('colspan', colspan);\n }\n }\n\n // Keep history\n obj.setHistory({\n action: 'insertColumn',\n columnNumber:columnNumber,\n numOfColumns:numOfColumns,\n insertBefore:insertBefore,\n columns:properties,\n headers:historyHeaders,\n colgroup:historyColgroup,\n records:historyRecords,\n data:historyData,\n });\n\n // Remove table references\n obj.updateTableReferences();\n\n // Events\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.oninsertcolumn) == 'function') {\n obj.options.oninsertcolumn(el, columnNumber, numOfColumns, historyRecords, insertBefore);\n }\n }\n }\n }\n\n /**\n * Delete a column by number\n * \n * @param integer columnNumber - reference column to be excluded\n * @param integer numOfColumns - number of columns to be excluded from the reference column\n * @return void\n */\n obj.deleteColumn = function(columnNumber, numOfColumns) {\n // Global Configuration\n if (obj.options.allowDeleteColumn == true) {\n if (obj.headers.length > 1) {\n // Delete column definitions\n if (columnNumber == undefined) {\n var number = obj.getSelectedColumns(true);\n\n if (! number.length) {\n // Remove last column\n columnNumber = obj.headers.length - 1;\n numOfColumns = 1;\n } else {\n // Remove selected\n columnNumber = parseInt(number[0]);\n numOfColumns = parseInt(number.length);\n }\n }\n\n // Lasat column\n var lastColumn = obj.options.data[0].length - 1;\n\n if (columnNumber == undefined || columnNumber > lastColumn || columnNumber < 0) {\n columnNumber = lastColumn;\n }\n\n // Minimum of columns to be delete is 1\n if (! numOfColumns) {\n numOfColumns = 1;\n }\n\n\n\n // Can't delete more than the limit of the table\n if (numOfColumns > obj.options.data[0].length - columnNumber) {\n numOfColumns = obj.options.data[0].length - columnNumber;\n }\n\n // onbeforedeletecolumn\n if (typeof(obj.options.onbeforedeletecolumn) == 'function') {\n if (! obj.options.onbeforedeletecolumn(el, columnNumber, numOfColumns)) {\n console.log('onbeforedeletecolumn returned false');\n return false;\n }\n }\n\n // Can't remove the last column\n if (parseInt(columnNumber) > -1) {\n // Merged cells\n var mergeExists = false;\n if (Object.keys(obj.options.mergeCells).length > 0) {\n for (var col = columnNumber; col < columnNumber + numOfColumns; col++) {\n if (obj.isColMerged(col, false).length) {\n mergeExists = true;\n }\n }\n }\n if (mergeExists) {\n if (! confirm(obj.options.text.thisActionWillDestroyAnyExistingMergedCellsAreYouSure)) {\n return false;\n } else {\n obj.destroyMerged();\n }\n }\n\n // Delete the column properties\n var columns = obj.options.columns.splice(columnNumber, numOfColumns);\n\n for (var col = columnNumber; col < columnNumber + numOfColumns; col++) {\n obj.colgroup[col].className = '';\n obj.headers[col].className = '';\n obj.colgroup[col].parentNode.removeChild(obj.colgroup[col]);\n obj.headers[col].parentNode.removeChild(obj.headers[col]);\n }\n\n var historyHeaders = obj.headers.splice(columnNumber, numOfColumns);\n var historyColgroup = obj.colgroup.splice(columnNumber, numOfColumns);\n var historyRecords = [];\n var historyData = [];\n\n for (var row = 0; row < obj.options.data.length; row++) {\n for (var col = columnNumber; col < columnNumber + numOfColumns; col++) {\n obj.records[row][col].className = '';\n obj.records[row][col].parentNode.removeChild(obj.records[row][col]);\n }\n }\n\n // Delete headers\n for (var row = 0; row < obj.options.data.length; row++) {\n // History\n historyData[row] = obj.options.data[row].splice(columnNumber, numOfColumns);\n historyRecords[row] = obj.records[row].splice(columnNumber, numOfColumns);\n }\n\n // Remove selection\n obj.conditionalSelectionUpdate(0, columnNumber, (columnNumber + numOfColumns) - 1);\n\n // Adjust nested headers\n if (obj.options.nestedHeaders && obj.options.nestedHeaders.length > 0) {\n // Flexible way to handle nestedheaders\n if (obj.options.nestedHeaders[0] && obj.options.nestedHeaders[0][0]) {\n for (var j = 0; j < obj.options.nestedHeaders.length; j++) {\n var colspan = parseInt(obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan) - numOfColumns;\n obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan = colspan;\n obj.thead.children[j].children[obj.thead.children[j].children.length-1].setAttribute('colspan', colspan);\n }\n } else {\n var colspan = parseInt(obj.options.nestedHeaders[0].colspan) - numOfColumns;\n obj.options.nestedHeaders[0].colspan = colspan;\n obj.thead.children[0].children[obj.thead.children[0].children.length-1].setAttribute('colspan', colspan);\n }\n }\n\n // Keeping history of changes\n obj.setHistory({\n action:'deleteColumn',\n columnNumber:columnNumber,\n numOfColumns:numOfColumns,\n insertBefore: 1,\n columns:columns,\n headers:historyHeaders,\n colgroup:historyColgroup,\n records:historyRecords,\n data:historyData,\n });\n\n // Update table references\n obj.updateTableReferences();\n\n // Delete\n if (obj.ignoreEvents != true) {\n if (typeof(obj.options.ondeletecolumn) == 'function') {\n obj.options.ondeletecolumn(el, columnNumber, numOfColumns, historyRecords);\n }\n }\n }\n } else {\n console.error('JEXCEL. It is not possible to delete the last column');\n }\n }\n }\n\n /**\n * Get seleted rows numbers\n * \n * @return array\n */\n obj.getSelectedRows = function(asIds) {\n var rows = [];\n // Get all selected rows\n for (var j = 0; j < obj.rows.length; j++) {\n if (obj.rows[j].classList.contains('selected')) {\n if (asIds) {\n rows.push(j);\n } else {\n rows.push(obj.rows[j]);\n }\n }\n }\n\n return rows;\n },\n\n /**\n * Get seleted column numbers\n * \n * @return array\n */\n obj.getSelectedColumns = function() {\n var cols = [];\n // Get all selected cols\n for (var i = 0; i < obj.headers.length; i++) {\n if (obj.headers[i].classList.contains('selected')) {\n cols.push(i);\n }\n }\n\n return cols;\n }\n\n /**\n * Get highlighted\n * \n * @return array\n */\n obj.getHighlighted = function() {\n return obj.highlighted;\n }\n\n /**\n * Update cell references\n * \n * @return void\n */\n obj.updateTableReferences = function() {\n // Update headers\n for (var i = 0; i < obj.headers.length; i++) {\n var x = obj.headers[i].getAttribute('data-x');\n\n if (x != i) {\n // Update coords\n obj.headers[i].setAttribute('data-x', i);\n // Title\n if (! obj.headers[i].getAttribute('title')) {\n obj.headers[i].innerHTML = jexcel.getColumnName(i);\n }\n }\n }\n\n // Update all rows\n for (var j = 0; j < obj.rows.length; j++) {\n if (obj.rows[j]) {\n var y = obj.rows[j].getAttribute('data-y');\n\n if (y != j) {\n // Update coords\n obj.rows[j].setAttribute('data-y', j);\n obj.rows[j].children[0].setAttribute('data-y', j);\n // Row number\n obj.rows[j].children[0].innerHTML = j + 1;\n }\n }\n }\n\n // Regular cells affected by this change\n var affectedTokens = [];\n var mergeCellUpdates = [];\n\n // Update cell\n var updatePosition = function(x,y,i,j) {\n if (x != i) {\n obj.records[j][i].setAttribute('data-x', i);\n }\n if (y != j) {\n obj.records[j][i].setAttribute('data-y', j);\n }\n\n // Other updates\n if (x != i || y != j) {\n var columnIdFrom = jexcel.getColumnNameFromId([x, y]);\n var columnIdTo = jexcel.getColumnNameFromId([i, j]);\n affectedTokens[columnIdFrom] = columnIdTo;\n }\n }\n\n for (var j = 0; j < obj.records.length; j++) {\n for (var i = 0; i < obj.records[0].length; i++) {\n if (obj.records[j][i]) {\n // Current values\n var x = obj.records[j][i].getAttribute('data-x');\n var y = obj.records[j][i].getAttribute('data-y');\n\n // Update column\n if (obj.records[j][i].getAttribute('data-merged')) {\n var columnIdFrom = jexcel.getColumnNameFromId([x, y]);\n var columnIdTo = jexcel.getColumnNameFromId([i, j]);\n if (mergeCellUpdates[columnIdFrom] == null) {\n if (columnIdFrom == columnIdTo) {\n mergeCellUpdates[columnIdFrom] = false;\n } else {\n var totalX = parseInt(i - x);\n var totalY = parseInt(j - y);\n mergeCellUpdates[columnIdFrom] = [ columnIdTo, totalX, totalY ];\n }\n }\n } else {\n updatePosition(x,y,i,j);\n }\n }\n }\n }\n\n // Update merged if applicable\n var keys = Object.keys(mergeCellUpdates);\n if (keys.length) {\n for (var i = 0; i < keys.length; i++) {\n if (mergeCellUpdates[keys[i]]) {\n var info = jexcel.getIdFromColumnName(keys[i], true)\n var x = info[0];\n var y = info[1];\n updatePosition(x,y,x + mergeCellUpdates[keys[i]][1],y + mergeCellUpdates[keys[i]][2]);\n\n var columnIdFrom = keys[i];\n var columnIdTo = mergeCellUpdates[keys[i]][0];\n for (var j = 0; j < obj.options.mergeCells[columnIdFrom][2].length; j++) {\n var x = parseInt(obj.options.mergeCells[columnIdFrom][2][j].getAttribute('data-x'));\n var y = parseInt(obj.options.mergeCells[columnIdFrom][2][j].getAttribute('data-y'));\n obj.options.mergeCells[columnIdFrom][2][j].setAttribute('data-x', x + mergeCellUpdates[keys[i]][1]);\n obj.options.mergeCells[columnIdFrom][2][j].setAttribute('data-y', y + mergeCellUpdates[keys[i]][2]);\n }\n\n obj.options.mergeCells[columnIdTo] = obj.options.mergeCells[columnIdFrom];\n delete(obj.options.mergeCells[columnIdFrom]);\n }\n }\n }\n\n // Update formulas\n obj.updateFormulas(affectedTokens);\n\n // Update meta data\n obj.updateMeta(affectedTokens);\n\n // Refresh selection\n obj.refreshSelection();\n\n // Update table with custom configuration if applicable\n obj.updateTable();\n }\n\n /**\n * Custom settings for the cells\n */\n obj.updateTable = function() {\n // Check for spare\n if (obj.options.minSpareRows > 0) {\n var numBlankRows = 0;\n for (var j = obj.rows.length - 1; j >= 0; j--) {\n var test = false;\n for (var i = 0; i < obj.headers.length; i++) {\n if (obj.options.data[j][i]) {\n test = true;\n }\n }\n if (test) {\n break;\n } else {\n numBlankRows++;\n }\n }\n\n if (obj.options.minSpareRows - numBlankRows > 0) {\n obj.insertRow(obj.options.minSpareRows - numBlankRows)\n }\n }\n\n if (obj.options.minSpareCols > 0) {\n var numBlankCols = 0;\n for (var i = obj.headers.length - 1; i >= 0 ; i--) {\n var test = false;\n for (var j = 0; j < obj.rows.length; j++) {\n if (obj.options.data[j][i]) {\n test = true;\n }\n }\n if (test) {\n break;\n } else {\n numBlankCols++;\n }\n }\n\n if (obj.options.minSpareCols - numBlankCols > 0) {\n obj.insertColumn(obj.options.minSpareCols - numBlankCols)\n }\n }\n\n // Customizations by the developer\n if (typeof(obj.options.updateTable) == 'function') {\n if (obj.options.detachForUpdates) {\r\n el.removeChild(obj.content);\r\n }\r\n\n for (var j = 0; j < obj.rows.length; j++) {\n for (var i = 0; i < obj.headers.length; i++) {\n obj.options.updateTable(el, obj.records[j][i], i, j, obj.options.data[j][i], obj.records[j][i].innerText, jexcel.getColumnNameFromId([i, j]));\n }\n }\n\r\n if (obj.options.detachForUpdates) {\r\n el.insertBefore(obj.content, obj.pagination);\r\n }\n }\n\n // Update corner position\n setTimeout(function() {\n obj.updateCornerPosition();\n },0);\n }\n\r\n /**\r\n * Show column\r\n */\r\n obj.showColumn = function(colNumber) {\r\n obj.headers[colNumber].style.display = '';\r\n obj.colgroup[colNumber].style.display = '';\r\n for (var j = 0; j < obj.options.data.length; j++) {\r\n obj.records[j][colNumber].style.display = '';\r\n }\r\n }\r\n\r\n /**\r\n * Hide column\r\n */\r\n obj.hideColumn = function(colNumber) {\r\n obj.headers[colNumber].style.display = 'none';\r\n obj.colgroup[colNumber].style.display = 'none';\r\n for (var j = 0; j < obj.options.data.length; j++) {\r\n obj.records[j][colNumber].style.display = 'none';\r\n }\r\n }\r\n\n /**\n * Show index column\n */\n obj.showIndex = function() {\n obj.table.classList.remove('jexcel_hidden_index');\n }\n\n /**\n * Hide index column\n */\n obj.hideIndex = function() {\n obj.table.classList.add('jexcel_hidden_index');\n }\n\n /**\n * Update all related cells in the chain\n */\n var chainLoopProtection = [];\n\n obj.updateFormulaChain = function(x, y, records) {\n var cellId = jexcel.getColumnNameFromId([x, y]);\n if (obj.formula[cellId] && obj.formula[cellId].length > 0) {\n if (chainLoopProtection[cellId]) {\n obj.records[y][x].innerHTML = '#ERROR';\n obj.formula[cellId] = '';\n } else {\n // Protection\n chainLoopProtection[cellId] = true;\n\n for (var i = 0; i < obj.formula[cellId].length; i++) {\n var cell = jexcel.getIdFromColumnName(obj.formula[cellId][i], true);\n // Update cell\n var value = ''+obj.options.data[cell[1]][cell[0]];\n if (value.substr(0,1) == '=') {\n records.push(obj.updateCell(cell[0], cell[1], value, true));\n } else {\n // No longer a formula, remove from the chain\n Object.keys(obj.formula)[i] = null;\n }\n obj.updateFormulaChain(cell[0], cell[1], records);\n }\n }\n }\n\n chainLoopProtection = [];\n }\n\n /**\n * Update formulas\n */\n obj.updateFormulas = function(referencesToUpdate) {\n // Update formulas\n for (var j = 0; j < obj.options.data.length; j++) {\n for (var i = 0; i < obj.options.data[0].length; i++) {\n var value = '' + obj.options.data[j][i];\n // Is formula\n if (value.substr(0,1) == '=') {\n // Replace tokens\n var newFormula = obj.updateFormula(value, referencesToUpdate);\n if (newFormula != value) {\n obj.options.data[j][i] = newFormula;\n }\n }\n }\n }\n\n // Update formula chain\n var formula = [];\n var keys = Object.keys(obj.formula);\n for (var j = 0; j < keys.length; j++) {\n // Current key and values\n var key = keys[j];\n var value = obj.formula[key];\n // Update key\n if (referencesToUpdate[key]) {\n key = referencesToUpdate[key];\n }\n // Update values\n formula[key] = [];\n for (var i = 0; i < value.length; i++) {\n var letter = value[i];\n if (referencesToUpdate[letter]) {\n letter = referencesToUpdate[letter];\n }\n formula[key].push(letter);\n }\n }\n obj.formula = formula;\n }\n\n /**\n * Update formula\n */\n obj.updateFormula = function(formula, referencesToUpdate) {\n var testLetter = /[A-Z]/;\n var testNumber = /[0-9]/;\n\n var newFormula = '';\n var letter = null;\n var number = null;\n var token = '';\n\n for (var index = 0; index < formula.length; index++) {\n if (testLetter.exec(formula[index])) {\n letter = 1;\n number = 0;\n token += formula[index];\n } else if (testNumber.exec(formula[index])) {\n number = letter ? 1 : 0;\n token += formula[index];\n } else {\n if (letter && number) {\n token = referencesToUpdate[token] ? referencesToUpdate[token] : token;\n }\n newFormula += token;\n newFormula += formula[index];\n letter = 0;\n number = 0;\n token = '';\n }\n }\n\n if (token) {\n if (letter && number) {\n token = referencesToUpdate[token] ? referencesToUpdate[token] : token;\n }\n newFormula += token;\n }\n\n return newFormula;\n }\n\n /**\n * Parse formulas\n */\n obj.executeFormula = function(expression, x, y) {\n\n var formulaResults = [];\n var formulaLoopProtection = [];\n\n // Execute formula with loop protection\n var execute = function(expression, x, y) {\n // Parent column identification\n var parentId = jexcel.getColumnNameFromId([x, y]);\n\n // Code protection\n if (formulaLoopProtection[parentId]) {\n console.error('Reference loop detected');\n return '#ERROR';\n }\n\n formulaLoopProtection[parentId] = true;\n\n // Convert range tokens\n var tokensUpdate = function(tokens) {\n for (var index = 0; index < tokens.length; index++) {\n var f = [];\n var token = tokens[index].split(':');\n var e1 = jexcel.getIdFromColumnName(token[0], true);\n var e2 = jexcel.getIdFromColumnName(token[1], true);\n\n if (e1[0] <= e2[0]) {\n var x1 = e1[0];\n var x2 = e2[0];\n } else {\n var x1 = e2[0];\n var x2 = e1[0];\n }\n\n if (e1[1] <= e2[1]) {\n var y1 = e1[1];\n var y2 = e2[1];\n } else {\n var y1 = e2[1];\n var y2 = e1[1];\n }\n\n for (var j = y1; j <= y2; j++) {\n for (var i = x1; i <= x2; i++) {\n f.push(jexcel.getColumnNameFromId([i, j]));\n }\n }\n\n expression = expression.replace(tokens[index], f.join(','));\n }\n }\n\n var tokens = expression.match(/([A-Z]+[0-9]+)\\:([A-Z]+[0-9]+)/g);\n if (tokens && tokens.length) {\n tokensUpdate(tokens);\n }\n\n // String\n var evalstring = '';\n\n // Get tokens\n var tokens = expression.match(/([A-Z]+[0-9]+)/g);\n\n // Direct self-reference protection\n if (tokens && tokens.indexOf(parentId) > -1) {\n console.error('Self Reference detected');\n return '#ERROR';\n } else {\n if (tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // Keep chain\n if (! obj.formula[tokens[i]]) {\n obj.formula[tokens[i]] = [];\n }\n // Is already in the register\n if (obj.formula[tokens[i]].indexOf(parentId) < 0) {\n obj.formula[tokens[i]].push(parentId);\n }\n\n // Do not calculate again\n if (eval('typeof(' + tokens[i] + ') == \"undefined\"')) {\n // Coords\n var position = jexcel.getIdFromColumnName(tokens[i], 1);\n // Get value\n if (typeof(obj.options.data[position[1]]) != 'undefined' && typeof(obj.options.data[position[1]][position[0]]) != 'undefined') {\n var value = obj.options.data[position[1]][position[0]];\n } else {\n var value = '';\n }\n // Get column data\n if ((''+value).substr(0,1) == '=') {\n if (formulaResults[tokens[i]]) {\n value = formulaResults[tokens[i]];\n } else {\n value = execute(value, position[0], position[1]);\n formulaResults[tokens[i]] = value;\n }\n }\n // Type!\n if ((''+value).trim() == '') {\n // Null\n evalstring += \"var \" + tokens[i] + \" = null;\";\n } else {\n if (value == Number(value) && obj.options.autoCasting == true) {\n // Number\n evalstring += \"var \" + tokens[i] + \" = \" + Number(value) + \";\";\n } else {\n // Trying any formatted number\n var number = obj.parseNumber(value, position[0])\n if (obj.options.autoCasting == true && number) {\n // Render as number\n evalstring += \"var \" + tokens[i] + \" = \" + number + \";\";\n } else {\n // Render as string\n evalstring += \"var \" + tokens[i] + \" = '\" + value + \"';\";\n }\n }\n }\n }\n }\n }\n\n // Convert formula to javascript\n try {\n evalstring += \"function COLUMN() { return parseInt(x) + 1; }; function ROW() { return parseInt(y) + 1; }; function CELL() { return parentId; };\";\n\n var res = eval(evalstring + expression.substr(1));\n } catch (e) {\n var res = '#ERROR';\n }\n\n return res;\n }\n }\n\n return execute(expression, x, y);\n }\n\n /**\n * Trying to extract a number from a string\n */\n obj.parseNumber = function(value, columnNumber) {\n // Decimal point\n var decimal = columnNumber && obj.options.columns[columnNumber].decimal ? obj.options.columns[columnNumber].decimal : '.';\n\n // Parse both parts of the number\n var number = ('' + value);\n number = number.split(decimal);\n number[0] = number[0].match(/[+-]?[0-9]/g);\n if (number[0]) {\n number[0] = number[0].join('');\n }\n if (number[1]) {\n number[1] = number[1].match(/[0-9]*/g).join('');\n }\n\n // Is a valid number\n if (number[0] && Number(number[0]) >= 0) {\n if (! number[1]) {\n var value = Number(number[0] + '.00');\n } else {\n var value = Number(number[0] + '.' + number[1]);\n }\n } else {\n var value = null;\n }\n\n return value;\n }\n\n /**\n * Get row number\n */\n obj.row = function(cell) {\n }\n\n /**\n * Get col number\n */\n obj.col = function(cell) {\n }\n\n obj.up = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (obj.selectedCell[3] > 0) {\n obj.up.visible(1, ctrlKey ? 0 : 1)\n }\n } else {\n if (obj.selectedCell[1] > 0) {\n obj.up.visible(0, ctrlKey ? 0 : 1)\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n // Update selection\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n\n // Change page\n if (obj.options.lazyLoading == true) {\n if (obj.selectedCell[1] == 0 || obj.selectedCell[3] == 0) {\n obj.loadPage(0);\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n } else {\n if (obj.loadValidation()) {\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n } else {\n var item = parseInt(obj.tbody.firstChild.getAttribute('data-y'));\n if (obj.selectedCell[1] - item < 30) {\n obj.loadUp();\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n }\n }\n }\n } else if (obj.options.pagination > 0) {\n var pageNumber = obj.whichPage(obj.selectedCell[3]);\n if (pageNumber != obj.pageNumber) {\n obj.page(pageNumber);\n }\n }\n\n obj.updateScroll(1);\n }\n\n obj.up.visible = function(group, direction) {\n if (group == 0) {\n var x = parseInt(obj.selectedCell[0]);\n var y = parseInt(obj.selectedCell[1]);\n } else {\n var x = parseInt(obj.selectedCell[2]);\n var y = parseInt(obj.selectedCell[3]);\n }\n\n if (direction == 0) {\n for (var j = 0; j < y; j++) {\n if (obj.records[j][x].style.display != 'none' && obj.rows[j].style.display != 'none') {\n y = j;\n break;\n }\n }\n } else {\n y = obj.up.get(x, y);\n }\n\n if (group == 0) {\n obj.selectedCell[0] = x;\n obj.selectedCell[1] = y;\n } else {\n obj.selectedCell[2] = x;\n obj.selectedCell[3] = y;\n }\n }\n\n obj.up.get = function(x, y) {\n var x = parseInt(x);\n var y = parseInt(y);\n for (var j = (y - 1); j >= 0; j--) {\n if (obj.records[j][x].style.display != 'none' && obj.rows[j].style.display != 'none') {\n if (obj.records[j][x].getAttribute('data-merged')) {\n if (obj.records[j][x] == obj.records[y][x]) {\n continue;\n }\n }\n y = j;\n break;\n }\n }\n\n return y;\n }\n\n obj.down = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (obj.selectedCell[3] < obj.records.length - 1) {\n obj.down.visible(1, ctrlKey ? 0 : 1)\n }\n } else {\n if (obj.selectedCell[1] < obj.records.length - 1) {\n obj.down.visible(0, ctrlKey ? 0 : 1)\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n\n // Change page\n if (obj.options.lazyLoading == true) {\n if ((obj.selectedCell[1] == obj.records.length - 1 || obj.selectedCell[3] == obj.records.length - 1)) {\n obj.loadPage(-1);\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n } else {\n if (obj.loadValidation()) {\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n } else {\n var item = parseInt(obj.tbody.lastChild.getAttribute('data-y'));\n if (item - obj.selectedCell[3] < 30) {\n obj.loadDown();\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n }\n }\n }\n } else if (obj.options.pagination > 0) {\n var pageNumber = obj.whichPage(obj.selectedCell[3]);\n if (pageNumber != obj.pageNumber) {\n obj.page(pageNumber);\n }\n }\n\n obj.updateScroll(3);\n }\n\n obj.down.visible = function(group, direction) {\n if (group == 0) {\n var x = parseInt(obj.selectedCell[0]);\n var y = parseInt(obj.selectedCell[1]);\n } else {\n var x = parseInt(obj.selectedCell[2]);\n var y = parseInt(obj.selectedCell[3]);\n }\n\n if (direction == 0) {\n for (var j = obj.rows.length - 1; j > y; j--) {\n if (obj.records[j][x].style.display != 'none' && obj.rows[j].style.display != 'none') {\n y = j;\n break;\n }\n }\n } else {\n y = obj.down.get(x, y);\n }\n\n if (group == 0) {\n obj.selectedCell[0] = x;\n obj.selectedCell[1] = y;\n } else {\n obj.selectedCell[2] = x;\n obj.selectedCell[3] = y;\n }\n }\n\n obj.down.get = function(x, y) {\n var x = parseInt(x);\n var y = parseInt(y);\n for (var j = (y + 1); j < obj.rows.length; j++) {\n if (obj.records[j][x].style.display != 'none' && obj.rows[j].style.display != 'none') {\n if (obj.records[j][x].getAttribute('data-merged')) {\n if (obj.records[j][x] == obj.records[y][x]) {\n continue;\n }\n }\n y = j;\n break;\n }\n }\n\n return y;\n }\n\n obj.right = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (obj.selectedCell[2] < obj.headers.length - 1) {\n obj.right.visible(1, ctrlKey ? 0 : 1)\n }\n } else {\n if (obj.selectedCell[0] < obj.headers.length - 1) {\n obj.right.visible(0, ctrlKey ? 0 : 1)\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n obj.updateScroll(2);\n }\n\n obj.right.visible = function(group, direction) {\n if (group == 0) {\n var x = parseInt(obj.selectedCell[0]);\n var y = parseInt(obj.selectedCell[1]);\n } else {\n var x = parseInt(obj.selectedCell[2]);\n var y = parseInt(obj.selectedCell[3]);\n }\n\n if (direction == 0) {\n for (var i = obj.headers.length - 1; i > x; i--) {\n if (obj.records[y][i].style.display != 'none') {\n x = i;\n break;\n }\n }\n } else {\n x = obj.right.get(x, y);\n }\n\n if (group == 0) {\n obj.selectedCell[0] = x;\n obj.selectedCell[1] = y;\n } else {\n obj.selectedCell[2] = x;\n obj.selectedCell[3] = y;\n }\n }\n\n obj.right.get = function(x, y) {\n var x = parseInt(x);\n var y = parseInt(y);\n\n for (var i = (x + 1); i < obj.headers.length; i++) {\n if (obj.records[y][i].style.display != 'none') {\n if (obj.records[y][i].getAttribute('data-merged')) {\n if (obj.records[y][i] == obj.records[y][x]) {\n continue;\n }\n }\n x = i;\n break;\n }\n }\n\n return x;\n }\n\n obj.left = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (obj.selectedCell[2] > 0) {\n obj.left.visible(1, ctrlKey ? 0 : 1)\n }\n } else {\n if (obj.selectedCell[0] > 0) {\n obj.left.visible(0, ctrlKey ? 0 : 1)\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n obj.updateScroll(0);\n }\n\n obj.left.visible = function(group, direction) {\n if (group == 0) {\n var x = parseInt(obj.selectedCell[0]);\n var y = parseInt(obj.selectedCell[1]);\n } else {\n var x = parseInt(obj.selectedCell[2]);\n var y = parseInt(obj.selectedCell[3]);\n }\n\n if (direction == 0) {\n for (var i = 0; i < x; i++) {\n if (obj.records[y][i].style.display != 'none') {\n x = i;\n break;\n }\n }\n } else {\n x = obj.left.get(x, y);\n }\n\n if (group == 0) {\n obj.selectedCell[0] = x;\n obj.selectedCell[1] = y;\n } else {\n obj.selectedCell[2] = x;\n obj.selectedCell[3] = y;\n }\n }\n\n obj.left.get = function(x, y) {\n var x = parseInt(x);\n var y = parseInt(y);\n for (var i = (x - 1); i >= 0; i--) {\n if (obj.records[y][i].style.display != 'none') {\n if (obj.records[y][i].getAttribute('data-merged')) {\n if (obj.records[y][i] == obj.records[y][x]) {\n continue;\n }\n }\n x = i;\n break;\n }\n }\n\n return x;\n }\n\n obj.first = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (ctrlKey) {\n obj.selectedCell[3] = 0;\n } else {\n obj.left.visible(1, 0);\n }\n } else {\n if (ctrlKey) {\n obj.selectedCell[1] = 0;\n } else {\n obj.left.visible(0, 0);\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n // Change page\n if (obj.options.lazyLoading == true && (obj.selectedCell[1] == 0 || obj.selectedCell[3] == 0)) {\n obj.loadPage(0);\n } else if (obj.options.pagination > 0) {\n var pageNumber = obj.whichPage(obj.selectedCell[3]);\n if (pageNumber != obj.pageNumber) {\n obj.page(pageNumber);\n }\n }\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n obj.updateScroll(1);\n }\n\n obj.last = function(shiftKey, ctrlKey) {\n if (shiftKey) {\n if (ctrlKey) {\n obj.selectedCell[3] = obj.records.length - 1;\n } else {\n obj.right.visible(1, 0);\n }\n } else {\n if (ctrlKey) {\n obj.selectedCell[1] = obj.records.length - 1;\n } else {\n obj.right.visible(0, 0);\n }\n obj.selectedCell[2] = obj.selectedCell[0];\n obj.selectedCell[3] = obj.selectedCell[1];\n }\n\n // Change page\n if (obj.options.lazyLoading == true && (obj.selectedCell[1] == obj.records.length - 1 || obj.selectedCell[3] == obj.records.length - 1)) {\n obj.loadPage(-1);\n } else if (obj.options.pagination > 0) {\n var pageNumber = obj.whichPage(obj.selectedCell[3]);\n if (pageNumber != obj.pageNumber) {\n obj.page(pageNumber);\n }\n }\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n obj.updateScroll(3);\n }\n\n obj.selectAll = function() {\n if (! obj.selectedCell) {\n obj.selectedCell = [];\n }\n\n obj.selectedCell[0] = 0;\n obj.selectedCell[1] = 0;\n obj.selectedCell[2] = obj.headers.length - 1;\n obj.selectedCell[3] = obj.records.length - 1;\n\n obj.updateSelectionFromCoords(obj.selectedCell[0], obj.selectedCell[1], obj.selectedCell[2], obj.selectedCell[3]);\n }\n\n /**\n * Go to a page in a lazyLoading\n */\n obj.loadPage = function(pageNumber) {\n // Search\n if (obj.options.search == true && obj.results) {\n var results = obj.results;\n } else {\n var results = obj.rows;\n }\n\n // Per page\n var quantityPerPage = 100;\n\n // pageNumber\n if (pageNumber == null || pageNumber == -1) {\n // Last page\n pageNumber = Math.ceil(results.length / quantityPerPage); \n }\n\n var startRow = (pageNumber * quantityPerPage);\n var finalRow = (pageNumber * quantityPerPage) + quantityPerPage;\n if (finalRow > results.length) {\n finalRow = results.length;\n }\n startRow = finalRow - 100;\n if (startRow < 0) {\n startRow = 0;\n }\n\n // Appeding items\n for (var j = startRow; j < finalRow; j++) {\n if (obj.options.search == true && obj.results) {\n obj.tbody.appendChild(obj.rows[results[j]]);\n } else {\n obj.tbody.appendChild(obj.rows[j]);\n }\n\n if (obj.tbody.children.length > quantityPerPage) {\n obj.tbody.removeChild(obj.tbody.firstChild);\n }\n }\n }\n\n obj.loadUp = function() {\n // Search\n if (obj.options.search == true && obj.results) {\n var results = obj.results;\n } else {\n var results = obj.rows;\n }\n var test = 0;\n if (results.length > 100) {\n // Get the first element in the page\n var item = parseInt(obj.tbody.firstChild.getAttribute('data-y'));\n if (obj.options.search == true && obj.results) {\n item = results.indexOf(item);\n }\n if (item > 0) {\n for (var j = 0; j < 30; j++) {\n item = item - 1;\n if (item > -1) {\n if (obj.options.search == true && obj.results) {\n obj.tbody.insertBefore(obj.rows[results[item]], obj.tbody.firstChild);\n } else {\n obj.tbody.insertBefore(obj.rows[item], obj.tbody.firstChild);\n }\n if (obj.tbody.children.length > 100) {\n obj.tbody.removeChild(obj.tbody.lastChild);\n test = 1;\n }\n }\n }\n }\n }\n return test;\n }\n\n obj.loadDown = function() {\n // Search\n if (obj.options.search == true && obj.results) {\n var results = obj.results;\n } else {\n var results = obj.rows;\n }\n var test = 0;\n if (results.length > 100) {\n // Get the last element in the page\n var item = parseInt(obj.tbody.lastChild.getAttribute('data-y'));\n if (obj.options.search == true && obj.results) {\n item = results.indexOf(item);\n }\n if (item < obj.rows.length - 1) {\n for (var j = 0; j <= 30; j++) {\n if (item < results.length) {\n if (obj.options.search == true && obj.results) {\n obj.tbody.appendChild(obj.rows[results[item]]);\n } else {\n obj.tbody.appendChild(obj.rows[item]);\n }\n if (obj.tbody.children.length > 100) {\n obj.tbody.removeChild(obj.tbody.firstChild);\n test = 1;\n }\n }\n item = item + 1;\n }\n }\n }\n\n return test;\n }\n\n obj.loadValidation = function() {\n if (obj.selectedCell) {\n var currentPage = parseInt(obj.tbody.firstChild.getAttribute('data-y')) / 100;\n var selectedPage = parseInt(obj.selectedCell[3] / 100);\n var totalPages = parseInt(obj.rows.length / 100);\n\n if (currentPage != selectedPage && selectedPage <= totalPages) {\n if (! Array.prototype.indexOf.call(obj.tbody.children, obj.rows[obj.selectedCell[3]])) {\n obj.loadPage(selectedPage);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Reset search\n */\n obj.resetSearch = function() {\n obj.searchInput.value = '';\n obj.search('');\n obj.results = null;\n }\n\n /**\n * Search\n */\n obj.search = function(query) {\n // Query\n if (query) {\n var query = query.toLowerCase();\n }\n\n // Reset selection\n obj.resetSelection();\n\n // Total of results\n obj.pageNumber = 0;\n obj.results = [];\n\n if (query) {\n // Search filter\n var search = function(item, query, index) {\n for (var i = 0; i < item.length; i++) {\n if ((''+item[i]).toLowerCase().search(query) >= 0 ||\n (''+obj.records[index][i].innerHTML).toLowerCase().search(query) >= 0) {\n return true;\n }\n }\n return false;\n }\n\n // Result\n var addToResult = function(k) {\n if (obj.results.indexOf(k) == -1) {\n obj.results.push(k);\n }\n }\n\n // Filter\n var data = obj.options.data.filter(function(v, k) {\n if (search(v, query, k)) {\n // Merged rows found\n var rows = obj.isRowMerged(k);\n if (rows.length) {\n for (var i = 0; i < rows.length; i++) {\n var row = jexcel.getIdFromColumnName(rows[i], true);\n for (var j = 0; j < obj.options.mergeCells[rows[i]][1]; j++) {\n addToResult(row[1]+j);\n }\n }\n } else {\n // Normal row found\n addToResult(k);\n }\n return true;\n } else {\n return false;\n }\n });\n } else {\n obj.results = null;\n }\n\n var total = 0;\n var index = 0;\n\n // Page 1\n if (obj.options.lazyLoading == true) {\n total = 100;\n } else if (obj.options.pagination > 0) {\n total = obj.options.pagination;\n } else {\n if (obj.results) {\n total = obj.results.length;\n } else {\n total = obj.rows.length;\n }\n }\n\n // Reset current nodes\n while (obj.tbody.firstChild) {\n obj.tbody.removeChild(obj.tbody.firstChild);\n }\n\n // Hide all records from the table\n for (var j = 0; j < obj.rows.length; j++) {\n if (! obj.results || obj.results.indexOf(j) > -1) {\n if (index < total) {\n obj.tbody.appendChild(obj.rows[j]);\n index++;\n }\n obj.rows[j].style.display = '';\n } else {\n obj.rows[j].style.display = 'none';\n }\n }\n\n // Update pagination\n if (obj.options.pagination > 0) {\n obj.updatePagination();\n }\n\n return total;\n }\n\n /**\n * Which page the cell is\n */\n obj.whichPage = function(cell) {\n // Search\n if (obj.options.search == true && obj.results) {\n cell = obj.results.indexOf(cell);\n }\n\n return (Math.ceil((parseInt(cell) + 1) / parseInt(obj.options.pagination))) - 1;\n }\n\n /**\n * Go to page\n */\n obj.page = function(pageNumber) {\n var oldPage = obj.pageNumber;\r\n\n // Search\n if (obj.options.search == true && obj.results) {\n var results = obj.results;\n } else {\n var results = obj.rows;\n }\n\n // Per page\n var quantityPerPage = parseInt(obj.options.pagination);\n\n // pageNumber\n if (pageNumber == null || pageNumber == -1) {\n // Last page\n pageNumber = Math.ceil(results.length / quantityPerPage); \n }\n\n // Page number\n obj.pageNumber = pageNumber;\n\n var startRow = (pageNumber * quantityPerPage);\n var finalRow = (pageNumber * quantityPerPage) + quantityPerPage;\n if (finalRow > results.length) {\n finalRow = results.length;\n }\n if (startRow < 0) {\n startRow = 0;\n }\n\n // Reset container\n while (obj.tbody.firstChild) {\n obj.tbody.removeChild(obj.tbody.firstChild);\n }\n\n // Appeding items\n for (var j = startRow; j < finalRow; j++) {\n if (obj.options.search == true && obj.results) {\n obj.tbody.appendChild(obj.rows[results[j]]);\n } else {\n obj.tbody.appendChild(obj.rows[j]);\n }\n }\n\n if (obj.options.pagination > 0) {\n obj.updatePagination();\n }\n\n // Update corner position\n obj.updateCornerPosition();\n\r\n if (typeof(obj.options.onchangepage) == 'function') {\r\n obj.options.onchangepage(el, pageNumber, oldPage);\r\n }\n }\n\n /**\n * Update the pagination\n */\n obj.updatePagination = function() {\n // Reset container\n obj.pagination.children[0].innerHTML = '';\n obj.pagination.children[1].innerHTML = '';\n\n // Start pagination\n if (obj.options.pagination) {\n // Searchable\n if (obj.options.search == true && obj.results) {\n var results = obj.results.length;\n } else {\n var results = obj.rows.length;\n }\n\n if (! results) {\n // No records found\n obj.pagination.children[0].innerHTML = obj.options.text.noRecordsFound;\n } else {\n // Pagination container\n var quantyOfPages = Math.ceil(results / obj.options.pagination);\n\n if (obj.pageNumber < 6) {\n var startNumber = 1;\n var finalNumber = quantyOfPages < 10 ? quantyOfPages : 10;\n } else if (quantyOfPages - obj.pageNumber < 5) {\n var startNumber = quantyOfPages - 9;\n var finalNumber = quantyOfPages;\n if (startNumber < 1) {\n startNumber = 1;\n }\n } else {\n var startNumber = obj.pageNumber - 4;\n var finalNumber = obj.pageNumber + 5;\n }\n\n // First\n if (startNumber > 1) {\n var paginationItem = document.createElement('div');\n paginationItem.className = 'jexcel_page';\n paginationItem.innerHTML = '<';\n paginationItem.title = 1;\n obj.pagination.children[1].appendChild(paginationItem);\n }\n\n // Get page links\n for (var i = startNumber; i <= finalNumber; i++) {\n var paginationItem = document.createElement('div');\n paginationItem.className = 'jexcel_page';\n paginationItem.innerHTML = i;\n obj.pagination.children[1].appendChild(paginationItem);\n\n if (obj.pageNumber == (i-1)) {\n paginationItem.classList.add('jexcel_page_selected');\n }\n }\n\n // Last\n if (finalNumber < quantyOfPages) {\n var paginationItem = document.createElement('div');\n paginationItem.className = 'jexcel_page';\n paginationItem.innerHTML = '>';\n paginationItem.title = quantyOfPages;\n obj.pagination.children[1].appendChild(paginationItem);\n }\n\n // Text\n var format = function(format) {\n var args = Array.prototype.slice.call(arguments, 1);\n return format.replace(/{(\\d+)}/g, function(match, number) {\n return typeof args[number] != 'undefined'\n ? args[number]\n : match\n ;\n });\n };\n\n obj.pagination.children[0].innerHTML = format(obj.options.text.showingPage, obj.pageNumber + 1, quantyOfPages)\n }\n }\n }\n\n /**\n * Download CSV table\n * \n * @return null\n */\n obj.download = function(includeHeaders) {\n if (obj.options.allowExport == false) {\n console.error('Export not allowed');\n } else {\n // Data\n var data = '';\n if (includeHeaders == true || obj.options.includeHeadersOnDownload == true) {\n data += obj.getHeaders();\n data += \"\\r\\n\";\n }\n\r\n // Get data\n data += obj.copy(false, obj.options.csvDelimiter, true);\r\n\n // Download element\n var blob = new Blob([\"\\uFEFF\"+data], {type: 'text/csv;charset=utf-8;'});\n\r\n // IE Compatibility\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, options.csvFileName + '.csv');\r\n } else {\n // Download element\n var pom = document.createElement('a');\n var url = URL.createObjectURL(blob);\n pom.href = url;\n pom.setAttribute('download', obj.options.csvFileName + '.csv');\n document.body.appendChild(pom);\n pom.click();\n pom.parentNode.removeChild(pom);\n }\n }\n }\n\n /**\n * Initializes a new history record for undo/redo\n * \n * @return null\n */\n obj.setHistory = function(changes) {\n if (obj.ignoreHistory != true) {\n // Increment and get the current history index\n var index = ++obj.historyIndex;\n\n // Slice the array to discard undone changes\n obj.history = (obj.history = obj.history.slice(0, index + 1));\n\n // Keep history\n obj.history[index] = changes;\n }\n }\n\n /**\n * Copy method\n * \n * @param bool highlighted - Get only highlighted cells\n * @param delimiter - \\t default to keep compatibility with excel\n * @return string value\n */\n obj.copy = function(highlighted, delimiter, returnData) {\n if (! delimiter) {\n delimiter = \"\\t\";\n }\n\n // Controls\n var col = [];\n var colLabel = [];\n var row = [];\n var rowLabel = [];\n var x = obj.options.data[0].length\n var y = obj.options.data.length\n var tmp = '';\n\n // Reset container\n obj.style = [];\n\n // Go through the columns to get the data\n for (var j = 0; j < y; j++) {\n col = [];\n colLabel = [];\n\n for (var i = 0; i < x; i++) {\n // If cell is highlighted\n if (! highlighted || obj.records[j][i].classList.contains('highlight')) {\n // Values\n var value = obj.options.data[j][i];\n if (value.match && (value.match(/,/g) || value.match(/\\n/) || value.match(/\\\"/))) {\n value = value.replace(new RegExp('\"', 'g'), '\"\"');\n value = '\"' + value + '\"';\n }\n col.push(value);\n\n // Labels\n if (obj.options.columns[i].type == 'checkbox' || obj.options.columns[i].type == 'radio') {\r\n var label = value;\n } else {\r\n var label = obj.records[j][i].innerHTML;\n if (label.match && (label.match(/,/g) || label.match(/\\n/) || label.match(/\\\"/))) {\n // Scape double quotes\n label = label.replace(new RegExp('\"', 'g'), '\"\"');\n label = '\"' + label + '\"';\n }\r\n }\n colLabel.push(label);\n\n // Get style\n tmp = obj.records[j][i].getAttribute('style');\n obj.style.push(tmp ? tmp : '');\n }\n }\n\n if (col.length) {\n row.push(col.join(delimiter));\n }\n if (colLabel.length) {\n rowLabel.push(colLabel.join(delimiter));\n }\n }\n\n // Final string\n var str = row.join(\"\\r\\n\");\n var strLabel = rowLabel.join(\"\\r\\n\");\n\n // Create a hidden textarea to copy the values\n if (! returnData) {\n if (obj.options.copyCompatibility == true) {\n obj.textarea.value = strLabel;\n } else {\n obj.textarea.value = str;\n }\n obj.textarea.select();\n document.execCommand(\"copy\");\n }\n\n // Keep data\n if (obj.options.copyCompatibility == true) {\n obj.data = strLabel;\n } else {\n obj.data = str;\n }\n // Keep non visible information\n obj.hashString = obj.hash(obj.data);\n\n return obj.data;\n }\n\n /**\n * jExcel paste method\n * \n * @param integer row number\n * @return string value\n */\n obj.paste = function(x, y, data) {\n // Paste filter\n if (typeof(obj.options.onbeforepaste) == 'function') {\n var data = obj.options.onbeforepaste(el, data);\n }\n\n // Controls\n var hash = obj.hash(data);\n var style = (hash == obj.hashString) ? obj.style : null;\n\n // Depending on the behavior\n if (obj.options.copyCompatibility == true && hash == obj.hashString) {\n var data = obj.data;\n }\n\n // Split new line\n var data = obj.parseCSV(data, \"\\t\");\n\n if (x != null && y != null && data) {\n // Records\n var i = 0;\n var j = 0;\n var records = [];\n var newStyle = {};\n var oldStyle = {};\n var styleIndex = 0;\n\n // Index\n var colIndex = parseInt(x);\n var rowIndex = parseInt(y);\n var row = null;\n\n // Go through the columns to get the data\n while (row = data[j]) {\n i = 0;\n colIndex = parseInt(x);\n\n while (row[i] != null) {\n // Update and keep history\n var record = obj.updateCell(colIndex, rowIndex, row[i]);\n // Keep history\n records.push(record);\n // Update all formulas in the chain\n obj.updateFormulaChain(colIndex, rowIndex, records);\n // Style\n if (style && style[styleIndex]) {\n var columnName = jexcel.getColumnNameFromId([colIndex, rowIndex]);\n newStyle[columnName] = style[styleIndex];\n oldStyle[columnName] = obj.getStyle(columnName);\n obj.records[rowIndex][colIndex].setAttribute('style', style[styleIndex]);\n styleIndex++\n }\n i++;\n if (row[i] != null) {\n if (colIndex >= obj.headers.length - 1) {\n obj.insertColumn();\n }\n colIndex = obj.right.get(colIndex, rowIndex);\n }\n }\n\n j++;\n if (data[j]) {\n if (rowIndex >= obj.rows.length-1) {\n obj.insertRow();\n }\n rowIndex = obj.down.get(x, rowIndex);\n }\n }\n\n // Select the new cells\n obj.updateSelectionFromCoords(x, y, colIndex, rowIndex);\n\n // Update history\n obj.setHistory({\n action:'setValue',\n records:records,\n selection:obj.selectedCell,\n newStyle:newStyle,\n oldStyle:oldStyle,\n });\n\n // Update table\n obj.updateTable();\n\n // Paste event\n if (typeof(obj.options.onpaste) == 'function') {\n obj.options.onpaste(el, records);\n }\n\n // On after changes\n obj.onafterchanges(el, records);\n }\n }\n\n /**\n * Process row\n */\n obj.historyProcessRow = function(type, historyRecord) {\n var rowIndex = (! historyRecord.insertBefore) ? historyRecord.rowNumber + 1 : historyRecord.rowNumber;\n\n if (obj.options.search == true) {\n if (obj.results && obj.results.length != obj.rows.length) {\n obj.resetSearch();\n }\n }\n\n // Remove row\n if (type == 1) {\n var numOfRows = historyRecord.numOfRows;\n // Remove nodes\n for (var j = rowIndex; j < (numOfRows + rowIndex); j++) {\n obj.rows[j].parentNode.removeChild(obj.rows[j]);\n }\n // Remove references\n obj.records.splice(rowIndex, numOfRows);\n obj.options.data.splice(rowIndex, numOfRows);\n obj.rows.splice(rowIndex, numOfRows);\n\n obj.conditionalSelectionUpdate(1, rowIndex, (numOfRows + rowIndex) - 1);\n } else {\n // Insert data\n obj.records = jexcel.injectArray(obj.records, rowIndex, historyRecord.rowRecords);\n obj.options.data = jexcel.injectArray(obj.options.data, rowIndex, historyRecord.rowData);\n obj.rows = jexcel.injectArray(obj.rows, rowIndex, historyRecord.rowNode);\n // Insert nodes\n var index = 0\n for (var j = rowIndex; j < (historyRecord.numOfRows + rowIndex); j++) {\n obj.tbody.insertBefore(historyRecord.rowNode[index], obj.tbody.children[j]);\n index++;\n }\n }\n\n // Respect pagination\n if (obj.options.pagination > 0) {\n obj.page(obj.pageNumber);\n }\n\n obj.updateTableReferences();\n }\n\n /**\n * Process column\n */\n obj.historyProcessColumn = function(type, historyRecord) {\n var columnIndex = (! historyRecord.insertBefore) ? historyRecord.columnNumber + 1 : historyRecord.columnNumber;\n\n // Remove column\n if (type == 1) {\n var numOfColumns = historyRecord.numOfColumns;\n\n obj.options.columns.splice(columnIndex, numOfColumns);\n for (var i = columnIndex; i < (numOfColumns + columnIndex); i++) {\n obj.headers[i].parentNode.removeChild(obj.headers[i]);\n obj.colgroup[i].parentNode.removeChild(obj.colgroup[i]);\n }\n obj.headers.splice(columnIndex, numOfColumns);\n obj.colgroup.splice(columnIndex, numOfColumns);\n for (var j = 0; j < historyRecord.data.length; j++) {\n for (var i = columnIndex; i < (numOfColumns + columnIndex); i++) {\n obj.records[j][i].parentNode.removeChild(obj.records[j][i]);\n }\n obj.records[j].splice(columnIndex, numOfColumns);\n obj.options.data[j].splice(columnIndex, numOfColumns);\n }\n\n obj.conditionalSelectionUpdate(0, columnIndex, (numOfColumns + columnIndex) - 1);\n } else {\n // Insert data\n obj.options.columns = jexcel.injectArray(obj.options.columns, columnIndex, historyRecord.columns);\n obj.headers = jexcel.injectArray(obj.headers, columnIndex, historyRecord.headers);\n obj.colgroup = jexcel.injectArray(obj.colgroup, columnIndex, historyRecord.colgroup);\n\n var index = 0\n for (var i = columnIndex; i < (historyRecord.numOfColumns + columnIndex); i++) {\n obj.headerContainer.insertBefore(historyRecord.headers[index], obj.headerContainer.children[i+1]);\n obj.colgroupContainer.insertBefore(historyRecord.colgroup[index], obj.colgroupContainer.children[i+1]);\n index++;\n }\n\n for (var j = 0; j < historyRecord.data.length; j++) {\n obj.options.data[j] = jexcel.injectArray(obj.options.data[j], columnIndex, historyRecord.data[j]);\n obj.records[j] = jexcel.injectArray(obj.records[j], columnIndex, historyRecord.records[j]);\n var index = 0\n for (var i = columnIndex; i < (historyRecord.numOfColumns + columnIndex); i++) {\n obj.rows[j].insertBefore(historyRecord.records[j][index], obj.rows[j].children[i+1]);\n index++;\n }\n }\n }\n\n // Adjust nested headers\n if (obj.options.nestedHeaders && obj.options.nestedHeaders.length > 0) {\n // Flexible way to handle nestedheaders\n if (obj.options.nestedHeaders[0] && obj.options.nestedHeaders[0][0]) {\n for (var j = 0; j < obj.options.nestedHeaders.length; j++) {\n if (type == 1) {\n var colspan = parseInt(obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan) - historyRecord.numOfColumns;\n } else {\n var colspan = parseInt(obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan) + historyRecord.numOfColumns;\n }\n obj.options.nestedHeaders[j][obj.options.nestedHeaders[j].length-1].colspan = colspan;\n obj.thead.children[j].children[obj.thead.children[j].children.length-1].setAttribute('colspan', colspan);\n }\n } else {\n if (type == 1) {\n var colspan = parseInt(obj.options.nestedHeaders[0].colspan) - historyRecord.numOfColumns;\n } else {\n var colspan = parseInt(obj.options.nestedHeaders[0].colspan) + historyRecord.numOfColumns;\n }\n obj.options.nestedHeaders[0].colspan = colspan;\n obj.thead.children[0].children[obj.thead.children[0].children.length-1].setAttribute('colspan', colspan);\n }\n }\n\n obj.updateTableReferences();\n }\n\n /**\n * Undo last action\n */\n obj.undo = function() {\n // Ignore events and history\n var ignoreEvents = obj.ignoreEvents ? true : false;\n var ignoreHistory = obj.ignoreHistory ? true : false;\n\n obj.ignoreEvents = true;\n obj.ignoreHistory = true;\n\n // Records\n var records = [];\n\n // Update cells\n if (obj.historyIndex >= 0) {\n // History\n var historyRecord = obj.history[obj.historyIndex--];\n\n if (historyRecord.action == 'insertRow') {\n obj.historyProcessRow(1, historyRecord);\n } else if (historyRecord.action == 'deleteRow') {\n obj.historyProcessRow(0, historyRecord);\n } else if (historyRecord.action == 'insertColumn') {\n obj.historyProcessColumn(1, historyRecord);\n } else if (historyRecord.action == 'deleteColumn') {\n obj.historyProcessColumn(0, historyRecord);\n } else if (historyRecord.action == 'moveRow') {\n obj.moveRow(historyRecord.newValue, historyRecord.oldValue);\n } else if (historyRecord.action == 'moveColumn') {\n obj.moveColumn(historyRecord.newValue, historyRecord.oldValue);\n } else if (historyRecord.action == 'setMerge') {\n obj.removeMerge(historyRecord.column, historyRecord.data);\n } else if (historyRecord.action == 'setStyle') {\n obj.setStyle(historyRecord.oldValue, null, null, 1);\n } else if (historyRecord.action == 'setWidth') {\n obj.setWidth(historyRecord.column, historyRecord.oldValue);\n } else if (historyRecord.action == 'setHeight') {\n obj.setHeight(historyRecord.row, historyRecord.oldValue);\n } else if (historyRecord.action == 'setHeader') {\n obj.setHeader(historyRecord.column, historyRecord.oldValue);\n } else if (historyRecord.action == 'setComments') {\n obj.setComments(historyRecord.column, historyRecord.oldValue[0], historyRecord.oldValue[1]);\n } else if (historyRecord.action == 'orderBy') {\n var rows = [];\n for (var j = 0; j < historyRecord.rows.length; j++) {\n rows[historyRecord.rows[j]] = j;\n }\n obj.updateOrderArrow(historyRecord.column, historyRecord.order ? 0 : 1);\n obj.updateOrder(rows);\n } else if (historyRecord.action == 'setValue') {\n // Redo for changes in cells\n for (var i = 0; i < historyRecord.records.length; i++) {\n obj.updateCell(historyRecord.records[i].col, historyRecord.records[i].row, historyRecord.records[i].oldValue);\n obj.updateFormulaChain(historyRecord.records[i].col, historyRecord.records[i].row, records);\n if (historyRecord.oldStyle) {\n obj.resetStyle(historyRecord.oldStyle, true);\n }\n }\n // Update selection\n if (! historyRecord.selection) {\n historyRecord.selection = [historyRecord.records[0].col, historyRecord.records[0].row];\n }\n obj.updateSelectionFromCoords(historyRecord.selection[0], historyRecord.selection[1], historyRecord.selection[2], historyRecord.selection[3]);\n // Update table\n obj.updateTable();\n }\n }\n obj.ignoreEvents = ignoreEvents;\n obj.ignoreHistory = ignoreHistory;\n\n if (typeof(obj.options.onundo) == 'function') {\n obj.options.onundo(el, historyRecord);\n }\n }\n\n /**\n * Redo previously undone action\n */\n obj.redo = function() {\n // Ignore events and history\n var ignoreEvents = obj.ignoreEvents ? true : false;\n var ignoreHistory = obj.ignoreHistory ? true : false;\n\n obj.ignoreEvents = true;\n obj.ignoreHistory = true;\n\n // Records\n var records = [];\n\n // Update cells\n if (obj.historyIndex < obj.history.length - 1) {\n // History\n var historyRecord = obj.history[++obj.historyIndex];\n\n if (historyRecord.action == 'insertRow') {\n obj.historyProcessRow(0, historyRecord);\n } else if (historyRecord.action == 'deleteRow') {\n obj.historyProcessRow(1, historyRecord);\n } else if (historyRecord.action == 'insertColumn') {\n obj.historyProcessColumn(0, historyRecord);\n } else if (historyRecord.action == 'deleteColumn') {\n obj.historyProcessColumn(1, historyRecord);\n } else if (historyRecord.action == 'moveRow') {\n obj.moveRow(historyRecord.oldValue, historyRecord.newValue);\n } else if (historyRecord.action == 'moveColumn') {\n obj.moveColumn(historyRecord.oldValue, historyRecord.newValue);\n } else if (historyRecord.action == 'setMerge') {\n obj.setMerge(historyRecord.column, historyRecord.colspan, historyRecord.rowspan, 1);\n } else if (historyRecord.action == 'setStyle') {\n obj.setStyle(historyRecord.newValue, null, null, 1);\n } else if (historyRecord.action == 'setWidth') {\n obj.setWidth(historyRecord.column, historyRecord.newValue);\n } else if (historyRecord.action == 'setHeight') {\n obj.setHeight(historyRecord.row, historyRecord.newValue);\n } else if (historyRecord.action == 'setHeader') {\n obj.setHeader(historyRecord.column, historyRecord.newValue);\n } else if (historyRecord.action == 'setComments') {\n obj.setComments(historyRecord.column, historyRecord.newValue[0], historyRecord.newValue[1]);\n } else if (historyRecord.action == 'orderBy') {\n obj.updateOrderArrow(historyRecord.column, historyRecord.order);\n obj.updateOrder(historyRecord.rows);\n } else if (historyRecord.action == 'setValue') {\n // Redo for changes in cells\n for (var i = 0; i < historyRecord.records.length; i++) {\n obj.updateCell(historyRecord.records[i].col, historyRecord.records[i].row, historyRecord.records[i].newValue);\n obj.updateFormulaChain(historyRecord.records[i].col, historyRecord.records[i].row, records);\n if (historyRecord.newStyle) {\n obj.resetStyle(historyRecord.newStyle, true);\n }\n }\n\n // Update selection\n if (! historyRecord.selection) {\n historyRecord.selection = [historyRecord.records[0].col, historyRecord.records[0].row];\n }\n obj.updateSelectionFromCoords(historyRecord.selection[0], historyRecord.selection[1], historyRecord.selection[2], historyRecord.selection[3]);\n // Update table\n obj.updateTable();\n }\n }\n obj.ignoreEvents = ignoreEvents;\n obj.ignoreHistory = ignoreHistory;\n\n if (typeof(obj.options.onredo) == 'function') {\n obj.options.onredo(el, historyRecord);\n }\n }\n\n /**\n * Get dropdown value from key\n */\n obj.getDropDownValue = function(column, key) {\n var value = [];\n\n if (obj.options.columns[column] && obj.options.columns[column].source) {\n // Create array from source\n var combo = [];\n var source = obj.options.columns[column].source;\n\n for (var i = 0; i < source.length; i++) {\n if (typeof(source[i]) == 'object') {\n combo[source[i].id] = source[i].name;\n } else {\n combo[source[i]] = source[i];\n }\n }\n\n // Garante single multiple compatibily\n var keys = ('' + key).split(';')\n\n for (var i = 0; i < keys.length; i++) {\n if (combo[keys[i]]) {\n value.push(combo[keys[i]]);\n }\n }\n } else {\n console.error('Invalid column');\n }\n\n return (value.length > 0) ? value.join('; ') : '';\n }\n\n /**\n * From starckoverflow contributions\n */\n obj.parseCSV = function(str, delimiter) {\n // Remove last line break\n str = str.replace(/\\r?\\n$|\\r$|\\n$/g, \"\");\n // Last caracter is the delimiter\n if (str.charCodeAt(str.length-1) == 9) {\n str += \"\\0\";\n }\n // user-supplied delimeter or default comma\n delimiter = (delimiter || \",\");\n\n var arr = [];\n var quote = false; // true means we're inside a quoted field\n // iterate over each character, keep track of current row and column (of the returned array)\n for (var row = 0, col = 0, c = 0; c < str.length; c++) {\n var cc = str[c], nc = str[c+1];\n arr[row] = arr[row] || [];\n arr[row][col] = arr[row][col] || '';\n\n // If the current character is a quotation mark, and we're inside a quoted field, and the next character is also a quotation mark, add a quotation mark to the current column and skip the next character\n if (cc == '\"' && quote && nc == '\"') { arr[row][col] += cc; ++c; continue; } \n\n // If it's just one quotation mark, begin/end quoted field\n if (cc == '\"') { quote = !quote; continue; }\n\n // If it's a comma and we're not in a quoted field, move on to the next column\n if (cc == delimiter && !quote) { ++col; continue; }\n\n // If it's a newline (CRLF) and we're not in a quoted field, skip the next character and move on to the next row and move to column 0 of that new row\n if (cc == '\\r' && nc == '\\n' && !quote) { ++row; col = 0; ++c; continue; }\n\n // If it's a newline (LF or CR) and we're not in a quoted field, move on to the next row and move to column 0 of that new row\n if (cc == '\\n' && !quote) { ++row; col = 0; continue; }\n if (cc == '\\r' && !quote) { ++row; col = 0; continue; }\n\n // Otherwise, append the current character to the current column\n arr[row][col] += cc;\n }\n return arr;\n }\n\n obj.hash = function(str) {\n var hash = 0, i, chr;\n\n if (str.length === 0) {\n return hash;\n } else {\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n }\n return hash;\n }\n\n obj.onafterchanges = function(el, records) {\n if (! obj.ignoreEvents) {\n // On after changes\n if (typeof(obj.options.onafterchanges) == 'function') {\n obj.options.onafterchanges(el, records);\n }\n }\n }\r\n\n obj.destroy = function() {\r\n jexcel.destroy(el);\r\n }\r\n\n /**\n * Initialization method\n */\n obj.init = function() {\n jexcel.current = obj;\n\n // Build handlers\n if (typeof(jexcel.build) == 'function') {\n jexcel.build();\n jexcel.build = null;\n }\n\n // Load the table data based on an CSV file\n if (obj.options.csv) {\n // Loading\n if (obj.options.loadingSpin == true) {\n jSuites.loading.show();\n }\n\n // Load CSV file\n jSuites.ajax({\n url: obj.options.csv,\n method: 'GET',\n dataType: 'text',\n success: function(result) {\n // Convert data\n var newData = obj.parseCSV(result, obj.options.csvDelimiter)\n\n // Headers\n if (obj.options.csvHeaders == true && newData.length > 0) {\n var headers = newData.shift();\n for(var i = 0; i < headers.length; i++) {\n if (! obj.options.columns[i]) {\n obj.options.columns[i] = { type:'text', align:obj.options.defaultColAlign, width:obj.options.defaultColWidth };\n }\n // Precedence over pre-configurated titles\n if (typeof obj.options.columns[i].title === 'undefined') {\n obj.options.columns[i].title = headers[i];\n }\n }\n }\n // Data\n obj.options.data = newData;\n // Prepare table\n obj.prepareTable();\n // Hide spin\n if (obj.options.loadingSpin == true) {\n jSuites.loading.hide();\n }\n }\n });\n } else if (obj.options.url) {\n // Loading\n if (obj.options.loadingSpin == true) {\n jSuites.loading.show();\n }\n\n jSuites.ajax({\n url: obj.options.url,\n method: 'GET',\n dataType: 'json',\n success: function(result) {\n // Data\n obj.options.data = (result.data) ? result.data : result;\n // Prepare table\n obj.prepareTable();\n // Hide spin\n if (obj.options.loadingSpin == true) {\n jSuites.loading.hide();\n }\n }\n });\n } else {\n // Prepare table\n obj.prepareTable();\n }\n }\n\n // Context menu\n if (options && options.contextMenu != null) {\n obj.options.contextMenu = options.contextMenu;\n } else {\n obj.options.contextMenu = function(el, x, y, e) {\n var items = [];\n\n if (y == null) {\n // Insert a new column\n if (obj.options.allowInsertColumn == true) {\n items.push({\n title:obj.options.text.insertANewColumnBefore,\n onclick:function() {\n obj.insertColumn(1, parseInt(x), 1);\n }\n });\n }\n\n if (obj.options.allowInsertColumn == true) {\n items.push({\n title:obj.options.text.insertANewColumnAfter,\n onclick:function() {\n obj.insertColumn(1, parseInt(x), 0);\n }\n });\n }\n\n // Delete a column\n if (obj.options.allowDeleteColumn == true) {\n items.push({\n title:obj.options.text.deleteSelectedColumns,\n onclick:function() {\n obj.deleteColumn(obj.getSelectedColumns().length ? undefined : parseInt(x));\n }\n });\n }\n\n // Rename column\n if (obj.options.allowRenameColumn == true) {\n items.push({\n title:obj.options.text.renameThisColumn,\n onclick:function() {\n obj.setHeader(x);\n }\n });\n }\n\n // Sorting\n if (obj.options.columnSorting == true) {\n // Line\n items.push({ type:'line' });\n\n items.push({\n title:obj.options.text.orderAscending,\n onclick:function() {\n obj.orderBy(x, 0);\n }\n });\n items.push({\n title:obj.options.text.orderDescending,\n onclick:function() {\n obj.orderBy(x, 1);\n }\n });\n }\n } else {\n // Insert new row\n if (obj.options.allowInsertRow == true) {\n items.push({\n title:obj.options.text.insertANewRowBefore,\n onclick:function() {\n obj.insertRow(1, parseInt(y), 1);\n }\n });\n\n items.push({\n title:obj.options.text.insertANewRowAfter,\n onclick:function() {\n obj.insertRow(1, parseInt(y));\n }\n });\n }\n\n if (obj.options.allowDeleteRow == true) {\n items.push({\n title:obj.options.text.deleteSelectedRows,\n onclick:function() {\n obj.deleteRow(obj.getSelectedRows().length ? undefined : parseInt(y));\n }\n });\n }\n\n if (x) {\n if (obj.options.allowComments == true) {\n items.push({ type:'line' });\n\n var title = obj.records[y][x].getAttribute('title') || '';\n\n items.push({\n title: title ? obj.options.text.editComments : obj.options.text.addComments,\n onclick:function() {\n var comment = prompt(obj.options.text.comments, title);\r\n if (comment) {\r\n obj.setComments([ x, y ], comment);\r\n }\n }\n });\n\n if (title) {\n items.push({\n title:obj.options.text.clearComments,\n onclick:function() {\n obj.setComments([ x, y ], '');\n }\n });\n }\n }\n }\n }\n\n // Line\n items.push({ type:'line' });\n\n // Copy\n items.push({\n title:obj.options.text.copy,\n shortcut:'Ctrl + C',\n onclick:function() {\n obj.copy(true);\n }\n });\n\n // Paste\n if (navigator && navigator.clipboard) {\n items.push({\n title:obj.options.text.paste,\n shortcut:'Ctrl + V',\n onclick:function() {\n if (obj.selectedCell) {\n navigator.clipboard.readText().then(function(text) {\n if (text) {\n jexcel.current.paste(obj.selectedCell[0], obj.selectedCell[1], text);\n }\n });\n }\n }\n });\n }\n\n // Save\n if (obj.options.allowExport) {\n items.push({\n title: obj.options.text.saveAs,\n shortcut: 'Ctrl + S',\n onclick: function () {\n obj.download();\n }\n });\n }\n\n // About\n if (obj.options.about) {\n items.push({\n title:obj.options.text.about,\n onclick:function() {\n alert(obj.options.about);\n }\n });\n }\n\n return items;\n }\n }\n\n obj.scrollControls = function(e) {\n if (obj.options.lazyLoading == true) {\n if (jexcel.timeControlLoading == null) {\n jexcel.timeControlLoading = setTimeout(function() {\n if (obj.content.scrollTop + obj.content.clientHeight >= obj.content.scrollHeight) {\n if (obj.loadDown()) {\n if (obj.content.scrollTop + obj.content.clientHeight > obj.content.scrollHeight - 10) {\n obj.content.scrollTop = obj.content.scrollTop - obj.content.clientHeight;\n }\n obj.updateCornerPosition();\n }\n } else if (obj.content.scrollTop <= obj.content.clientHeight) {\n if (obj.loadUp()) {\n if (obj.content.scrollTop < 10) {\n obj.content.scrollTop = obj.content.scrollTop + obj.content.clientHeight;\n }\n obj.updateCornerPosition();\n }\n }\n\n jexcel.timeControlLoading = null;\n }, 100);\n }\n }\n\n // Close editor\n if (obj.options.lazyLoading == true || obj.options.tableOverflow == true) {\n if (obj.edition && e.target.className.substr(0,9) != 'jdropdown') {\n obj.closeEditor(obj.edition[0], true);\n }\n }\n }\n\n el.addEventListener(\"DOMMouseScroll\", obj.scrollControls);\n el.addEventListener(\"mousewheel\", obj.scrollControls);\n\n el.jexcel = obj;\n\n obj.init();\n\n return obj;\n});\n\njexcel.current = null;\njexcel.timeControl = null;\njexcel.timeControlLoading = null;\n\njexcel.destroy = function(element, destroyEventHandlers) {\n if (element.jexcel) {\n element.removeEventListener(\"DOMMouseScroll\", element.jexcel.scrollControls);\n element.removeEventListener(\"mousewheel\", element.jexcel.scrollControls);\n element.jexcel = null;\n element.innerHTML = '';\n\n if (destroyEventHandlers) {\n document.removeEventListener(\"keydown\", jexcel.keyDownControls);\n document.removeEventListener(\"mouseup\", jexcel.mouseUpControls);\n document.removeEventListener(\"mousedown\", jexcel.mouseDownControls);\n document.removeEventListener(\"mousemove\", jexcel.mouseMoveControls);\n document.removeEventListener(\"mouseover\", jexcel.mouseOverControls);\n document.removeEventListener(\"dblclick\", jexcel.doubleClickControls);\n document.removeEventListener(\"paste\", jexcel.pasteControls);\n document.removeEventListener(\"contextmenu\", jexcel.contextMenuControls);\n document.removeEventListener(\"touchstart\", jexcel.touchStartControls);\n document.removeEventListener(\"touchend\", jexcel.touchEndControls);\n document.removeEventListener(\"touchcancel\", jexcel.touchEndControls);\n jexcel = null;\n }\n }\n}\n\njexcel.build = function() {\n document.addEventListener(\"keydown\", jexcel.keyDownControls);\n document.addEventListener(\"mouseup\", jexcel.mouseUpControls);\n document.addEventListener(\"mousedown\", jexcel.mouseDownControls);\n document.addEventListener(\"mousemove\", jexcel.mouseMoveControls);\n document.addEventListener(\"mouseover\", jexcel.mouseOverControls);\n document.addEventListener(\"dblclick\", jexcel.doubleClickControls);\n document.addEventListener(\"paste\", jexcel.pasteControls);\n document.addEventListener(\"contextmenu\", jexcel.contextMenuControls);\n document.addEventListener(\"touchstart\", jexcel.touchStartControls);\n document.addEventListener(\"touchend\", jexcel.touchEndControls);\n document.addEventListener(\"touchcancel\", jexcel.touchEndControls);\n document.addEventListener(\"touchmove\", jexcel.touchEndControls);\n}\n\n/**\n * Events\n */\njexcel.keyDownControls = function(e) {\n if (jexcel.current) {\n if (jexcel.current.edition) {\n if (e.which == 27) {\n // Escape\n if (jexcel.current.edition) {\n // Exit without saving\n jexcel.current.closeEditor(jexcel.current.edition[0], false);\n }\n e.preventDefault();\n } else if (e.which == 13) {\n // Enter\n if (jexcel.current.options.columns[jexcel.current.edition[2]].type == 'calendar') {\n jexcel.current.editor[0].children[0].calendar.close(1);\n } else if (jexcel.current.options.columns[jexcel.current.edition[2]].type == 'dropdown' ||\n jexcel.current.options.columns[jexcel.current.edition[2]].type == 'autocomplete') {\n // Do nothing\n } else {\n // Alt enter -> do not close editor\n if ((jexcel.current.options.wordWrap == true ||\n jexcel.current.options.columns[jexcel.current.edition[2]].wordWrap == true ||\n jexcel.current.options.data[jexcel.current.edition[3]][jexcel.current.edition[2]].length > 200) && e.altKey) {\n // Add new line to the editor\n var editorTextarea = jexcel.current.edition[0].children[0];\n var editorValue = jexcel.current.edition[0].children[0].value;\n var editorIndexOf = editorTextarea.selectionStart;\n editorValue = editorValue.slice(0, editorIndexOf) + \"\\n\" + editorValue.slice(editorIndexOf);\n editorTextarea.value = editorValue;\n editorTextarea.focus();\n editorTextarea.selectionStart = editorIndexOf + 1;\n editorTextarea.selectionEnd = editorIndexOf + 1;\n } else {\n jexcel.current.edition[0].children[0].blur();\n }\n }\n } else if (e.which == 9) {\n // Tab\n if (jexcel.current.options.columns[jexcel.current.edition[2]].type == 'calendar') {\n jexcel.current.edition[0].children[0].calendar.close(1);\n } else {\n jexcel.current.edition[0].children[0].blur();\n }\n }\n }\n\n if (! jexcel.current.edition && jexcel.current.selectedCell) {\n // Which key\n if (e.which == 37) {\n jexcel.current.left(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 39) {\n jexcel.current.right(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 38) {\n jexcel.current.up(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 40) {\n jexcel.current.down(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 36) {\n jexcel.current.first(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 35) {\n jexcel.current.last(e.shiftKey, e.ctrlKey);\n e.preventDefault();\n } else if (e.which == 32) {\n if (jexcel.current.options.editable == true) {\n jexcel.current.setCheckRadioValue();\n }\n e.preventDefault();\n } else if (e.which == 46) {\n // Delete\n if (jexcel.current.options.editable == true) {\n if (jexcel.current.selectedRow) {\n if (jexcel.current.options.allowDeleteRow == true) {\n if (confirm(jexcel.current.options.text.areYouSureToDeleteTheSelectedRows)) {\n jexcel.current.deleteRow();\n }\n }\n } else if (jexcel.current.selectedHeader) {\n if (jexcel.current.options.allowDeleteColumn == true) {\n if (confirm(jexcel.current.options.text.areYouSureToDeleteTheSelectedColumns)) {\n jexcel.current.deleteColumn();\n }\n }\n } else {\n // Change value\n jexcel.current.setValue(jexcel.current.highlighted, '');\n }\n }\n } else if (e.which == 13) {\n // Move cursor\n if (e.shiftKey) {\n jexcel.current.up();\n } else {\n if (jexcel.current.options.allowInsertRow == true) {\n if (jexcel.current.options.allowManualInsertRow == true) {\n if (jexcel.current.selectedCell[1] == jexcel.current.options.data.length - 1) {\n // New record in case selectedCell in the last row\n jexcel.current.insertRow();\n }\n }\n }\n\n jexcel.current.down();\n }\n e.preventDefault();\n } else if (e.which == 9) {\n // Tab\n if (e.shiftKey) {\n jexcel.current.left();\n } else {\n if (jexcel.current.options.allowInsertColumn == true) {\n if (jexcel.current.options.allowManualInsertColumn == true) {\n if (jexcel.current.selectedCell[0] == jexcel.current.options.data[0].length - 1) {\n // New record in case selectedCell in the last column\n jexcel.current.insertColumn();\n }\n }\n }\n\n jexcel.current.right();\n }\n e.preventDefault();\n } else {\n if ((e.ctrlKey || e.metaKey) && ! e.shiftKey) {\n if (e.which == 65) {\n // Ctrl + A\n jexcel.current.selectAll();\n e.preventDefault();\n } else if (e.which == 83) {\n // Ctrl + S\n jexcel.current.download();\n e.preventDefault();\n } else if (e.which == 89) {\n // Ctrl + Y\n jexcel.current.redo();\n e.preventDefault();\n } else if (e.which == 90) {\n // Ctrl + Z\n jexcel.current.undo();\n e.preventDefault();\n } else if (e.which == 67) {\n // Ctrl + C\n jexcel.current.copy(true);\n e.preventDefault();\n } else if (e.which == 67) {\n // Ctrl + C\n jexcel.current.copy(true);\n e.preventDefault();\n } else if (e.which == 88) {\n // Ctrl + X\n if (jexcel.current.options.editable == true) {\n jexcel.cutControls();\n } else {\n jexcel.copyControls();\n }\n e.preventDefault();\n } else if (e.which == 86) {\n // Ctrl + V\n jexcel.pasteControls();\n }\n } else {\n if (jexcel.current.selectedCell) {\n if (jexcel.current.options.editable == true) {\n var rowId = jexcel.current.selectedCell[1];\n var columnId = jexcel.current.selectedCell[0];\n\n // If is not readonly\n if (jexcel.current.options.columns[columnId].type != 'readonly') {\n // Characters able to start a edition\n if (e.keyCode == 32) {\n // Space\n if (jexcel.current.options.columns[columnId].type == 'checkbox' ||\n jexcel.current.options.columns[columnId].type == 'radio') {\n e.preventDefault();\n } else {\n // Start edition\n jexcel.current.openEditor(jexcel.current.records[rowId][columnId], true);\n }\n } else if (e.keyCode == 113) {\n // Start edition with current content F2\n jexcel.current.openEditor(jexcel.current.records[rowId][columnId], false);\n } else if ((e.keyCode == 8) ||\n (e.keyCode >= 48 && e.keyCode <= 57) ||\n (e.keyCode >= 96 && e.keyCode <= 111) ||\n (e.keyCode == 187) ||\n (e.keyCode == 189) ||\n ((String.fromCharCode(e.keyCode) == e.key || String.fromCharCode(e.keyCode).toLowerCase() == e.key.toLowerCase()) && jexcel.validLetter(String.fromCharCode(e.keyCode)))) {\n // Start edition\n jexcel.current.openEditor(jexcel.current.records[rowId][columnId], true);\n // Prevent entries in the calendar\n if (jexcel.current.options.columns[columnId].type == 'calendar') {\n e.preventDefault();\n }\n }\n }\n }\n }\n }\n }\n } else {\n if (e.target.classList.contains('jexcel_search')) {\n if (jexcel.timeControl) {\n clearTimeout(jexcel.timeControl);\n }\n\n jexcel.timeControl = setTimeout(function() {\n jexcel.current.search(e.target.value);\n }, 200);\n }\n }\n }\n}\n\njexcel.isMouseAction = false;\n\njexcel.mouseDownControls = function(e) {\n e = e || window.event;\n if (e.buttons) {\n var mouseButton = e.buttons;\n } else if (e.button) {\n var mouseButton = e.button;\n } else {\n var mouseButton = e.which;\n }\n\n // Get elements\n var jexcelTable = jexcel.getElement(e.target);\n\n if (jexcelTable[0]) {\n if (jexcel.current != jexcelTable[0].jexcel) {\n if (jexcel.current) {\n jexcel.current.resetSelection();\n }\n jexcel.current = jexcelTable[0].jexcel;\n }\n } else {\n if (jexcel.current) {\n jexcel.current.resetSelection(true);\n jexcel.current = null;\n }\n }\n\n if (jexcel.current && mouseButton == 1) {\n if (e.target.classList.contains('jexcel_selectall')) {\n if (jexcel.current) {\n jexcel.current.selectAll();\n }\n } else if (e.target.classList.contains('jexcel_corner')) {\n if (jexcel.current.options.editable == true) {\n jexcel.current.selectedCorner = true;\n }\n } else {\n // Header found\n if (jexcelTable[1] == 1) {\n var columnId = e.target.getAttribute('data-x');\n if (columnId) {\n // Update cursor\n var info = e.target.getBoundingClientRect();\n if (jexcel.current.options.columnResize == true && info.width - e.offsetX < 6) {\n // Resize helper\n jexcel.current.resizing = {\n mousePosition: e.pageX,\n column: columnId,\n width: info.width,\n };\n\n // Border indication\n jexcel.current.headers[columnId].classList.add('resizing');\n for (var j = 0; j < jexcel.current.records.length; j++) {\n if (jexcel.current.records[j][columnId]) {\n jexcel.current.records[j][columnId].classList.add('resizing');\n }\n }\n } else if (jexcel.current.options.columnDrag == true && info.height - e.offsetY < 6) {\n if (jexcel.current.isColMerged(columnId).length) {\n console.error('JEXCEL: This column is part of a merged cell.');\n } else {\n // Reset selection\n jexcel.current.resetSelection();\n // Drag helper\n jexcel.current.dragging = {\n element: e.target,\n column:columnId,\n destination:columnId,\n };\n // Border indication\n jexcel.current.headers[columnId].classList.add('dragging');\n for (var j = 0; j < jexcel.current.records.length; j++) {\n if (jexcel.current.records[j][columnId]) {\n jexcel.current.records[j][columnId].classList.add('dragging');\n }\n }\n }\n } else {\n if (jexcel.current.selectedHeader && (e.shiftKey || e.ctrlKey)) {\n var o = jexcel.current.selectedHeader;\n var d = columnId;\n } else {\n // Press to rename\n if (jexcel.current.selectedHeader == columnId && jexcel.current.options.allowRenameColumn == true) {\n jexcel.timeControl = setTimeout(function() {\n jexcel.current.setHeader(columnId);\n }, 800);\n }\n\n // Keep track of which header was selected first\n jexcel.current.selectedHeader = columnId;\n\n // Update selection single column\n var o = columnId;\n var d = columnId;\n }\n\n // Update selection\n jexcel.current.updateSelectionFromCoords(o, 0, d, jexcel.current.options.data.length - 1);\n }\n } else {\n if (e.target.parentNode.classList.contains('jexcel_nested')) {\n if (e.target.getAttribute('data-column')) {\n var column = e.target.getAttribute('data-column').split(',');\n var c1 = parseInt(column[0]);\n var c2 = parseInt(column[column.length-1]);\n } else {\r\n var c1 = 0;\r\n var c2 = jexcel.current.options.columns.length - 1;\r\n }\n jexcel.current.updateSelectionFromCoords(c1, 0, c2, jexcel.current.options.data.length - 1);\n }\n }\n } else {\n jexcel.current.selectedHeader = false;\n }\n\n // Body found\n if (jexcelTable[1] == 2) {\n var rowId = e.target.getAttribute('data-y');\n\n if (e.target.classList.contains('jexcel_row')) {\n var info = e.target.getBoundingClientRect();\n if (jexcel.current.options.rowResize == true && info.height - e.offsetY < 6) {\n // Resize helper\n jexcel.current.resizing = {\n element: e.target.parentNode,\n mousePosition: e.pageY,\n row: rowId,\n height: info.height,\n };\n // Border indication\n e.target.parentNode.classList.add('resizing');\n } else if (jexcel.current.options.rowDrag == true && info.width - e.offsetX < 6) {\n if (jexcel.current.isRowMerged(rowId).length) {\n console.error('JEXCEL: This row is part of a merged cell');\n } else if (jexcel.current.options.search == true && jexcel.current.results) {\n console.error('JEXCEL: Please clear your search before perform this action');\n } else {\n // Reset selection\n jexcel.current.resetSelection();\n // Drag helper\n jexcel.current.dragging = {\n element: e.target.parentNode,\n row:rowId,\n destination:rowId,\n };\n // Border indication\n e.target.parentNode.classList.add('dragging');\n }\n } else {\n if (jexcel.current.selectedRow && (e.shiftKey || e.ctrlKey)) {\n var o = jexcel.current.selectedRow;\n var d = rowId;\n } else {\n // Keep track of which header was selected first\n jexcel.current.selectedRow = rowId;\n\n // Update selection single column\n var o = rowId;\n var d = rowId;\n }\n\n // Update selection\n jexcel.current.updateSelectionFromCoords(0, o, jexcel.current.options.data[0].length - 1, d);\n }\n } else {\n // Jclose\n if (e.target.classList.contains('jclose') && e.target.clientWidth - e.offsetX < 50 && e.offsetY < 50) {\n jexcel.current.closeEditor(jexcel.current.edition[0], true);\n } else {\n var getCellCoords = function(element) {\n var x = element.getAttribute('data-x');\n var y = element.getAttribute('data-y');\n if (x && y) {\n return [x, y];\n } else {\n if (element.parentNode) {\n return getCellCoords(element.parentNode);\n }\n }\n };\n\n var position = getCellCoords(e.target);\n if (position) {\n var columnId = position[0];\n var rowId = position[1];\n // Close edition\n if (jexcel.current.edition) {\n if (jexcel.current.edition[2] != columnId || jexcel.current.edition[3] != rowId) {\n jexcel.current.closeEditor(jexcel.current.edition[0], true);\n }\n }\n\n if (! jexcel.current.edition) {\n // Update cell selection\n if (e.shiftKey) {\n jexcel.current.updateSelectionFromCoords(jexcel.current.selectedCell[0], jexcel.current.selectedCell[1], columnId, rowId);\n } else {\n jexcel.current.updateSelectionFromCoords(columnId, rowId);\n }\n }\n\n // No full row selected\n jexcel.current.selectedHeader = null;\n jexcel.current.selectedRow = null;\n }\n }\n }\n } else {\n jexcel.current.selectedRow = false;\n }\n\n // Pagination\n if (e.target.classList.contains('jexcel_page')) {\n if (e.target.innerText == '<') {\n jexcel.current.page(0);\n } else if (e.target.innerText == '>') {\n jexcel.current.page(e.target.getAttribute('title') - 1);\n } else {\n jexcel.current.page(e.target.innerText - 1);\n }\n }\n }\n\n if (jexcel.current.edition) {\n jexcel.isMouseAction = false;\n } else {\n jexcel.isMouseAction = true;\n }\n } else {\n jexcel.isMouseAction = false;\n }\n}\n\njexcel.mouseUpControls = function(e) {\n if (jexcel.current) {\n // Update cell size\n if (jexcel.current.resizing) {\n // Columns to be updated\n if (jexcel.current.resizing.column) {\n // Remove Class\n jexcel.current.headers[jexcel.current.resizing.column].classList.remove('resizing');\n var newWidth = jexcel.current.colgroup[jexcel.current.resizing.column].getAttribute('width');\n jexcel.current.setWidth(jexcel.current.resizing.column, newWidth, jexcel.current.resizing.width);\n // Remove border\n jexcel.current.headers[jexcel.current.resizing.column].classList.remove('resizing');\n for (var j = 0; j < jexcel.current.records.length; j++) {\n if (jexcel.current.records[j][jexcel.current.resizing.column]){\n jexcel.current.records[j][jexcel.current.resizing.column].classList.remove('resizing');\n }\n }\n } else {\n // Remove Class\n jexcel.current.rows[jexcel.current.resizing.row].children[0].classList.remove('resizing');\n var newHeight = jexcel.current.rows[jexcel.current.resizing.row].getAttribute('height');\n jexcel.current.setHeight(jexcel.current.resizing.row, newHeight, jexcel.current.resizing.height);\n // Remove border\n jexcel.current.resizing.element.classList.remove('resizing');\n }\n // Reset resizing helper\n jexcel.current.resizing = null;\n } else if (jexcel.current.dragging) {\n // Reset dragging helper\n if (jexcel.current.dragging) {\n if (jexcel.current.dragging.column) {\n // Target\n var columnId = e.target.getAttribute('data-x');\n // Remove move style\n jexcel.current.headers[jexcel.current.dragging.column].classList.remove('dragging');\n for (var j = 0; j < jexcel.current.rows.length; j++) {\n if (jexcel.current.records[j][jexcel.current.dragging.column]) {\n jexcel.current.records[j][jexcel.current.dragging.column].classList.remove('dragging');\n }\n }\n for (var i = 0; i < jexcel.current.headers.length; i++) {\n jexcel.current.headers[i].classList.remove('dragging-left');\n jexcel.current.headers[i].classList.remove('dragging-right');\n }\n // Update position\n if (columnId) {\n if (jexcel.current.dragging.column != jexcel.current.dragging.destination) {\n jexcel.current.moveColumn(jexcel.current.dragging.column, jexcel.current.dragging.destination);\n }\n }\n } else {\n var position = Array.prototype.indexOf.call(jexcel.current.dragging.element.parentNode.children, jexcel.current.dragging.element);\n if (jexcel.current.dragging.row != position) {\n jexcel.current.moveRow(jexcel.current.dragging.row, position, true);\n }\n jexcel.current.dragging.element.classList.remove('dragging');\n }\n jexcel.current.dragging = null;\n }\n } else {\n // Close any corner selection\n if (jexcel.current.selectedCorner) {\n jexcel.current.selectedCorner = false;\n\n // Data to be copied\n if (jexcel.current.selection.length > 0) {\n // Copy data\n jexcel.current.copyData(jexcel.current.selection[0], jexcel.current.selection[jexcel.current.selection.length - 1]);\n\n // Remove selection\n jexcel.current.removeCopySelection();\n }\n }\n }\n }\n\n // Clear any time control\n if (jexcel.timeControl) {\n clearTimeout(jexcel.timeControl);\n jexcel.timeControl = null;\n }\n\n // Mouse up\n jexcel.isMouseAction = false;\n}\n\n// Mouse move controls\njexcel.mouseMoveControls = function(e) {\n e = e || window.event;\n if (e.buttons) {\n var mouseButton = e.buttons;\n } else if (e.button) {\n var mouseButton = e.button;\n } else {\n var mouseButton = e.which;\n }\n\n if (! mouseButton) {\n jexcel.isMouseAction = false;\n }\n\n if (jexcel.current) {\n if (jexcel.isMouseAction == true) {\n // Resizing is ongoing\n if (jexcel.current.resizing) {\n if (jexcel.current.resizing.column) {\n var width = e.pageX - jexcel.current.resizing.mousePosition;\n\n if (jexcel.current.resizing.width + width > 0) {\n var tempWidth = jexcel.current.resizing.width + width;\n jexcel.current.colgroup[jexcel.current.resizing.column].setAttribute('width', tempWidth);\n\n jexcel.current.updateCornerPosition();\n }\n } else {\n var height = e.pageY - jexcel.current.resizing.mousePosition;\n\n if (jexcel.current.resizing.height + height > 0) {\n var tempHeight = jexcel.current.resizing.height + height;\n jexcel.current.rows[jexcel.current.resizing.row].setAttribute('height', tempHeight);\n\n jexcel.current.updateCornerPosition();\n }\n }\n }\n } else {\n var x = e.target.getAttribute('data-x');\n var y = e.target.getAttribute('data-y');\n var rect = e.target.getBoundingClientRect();\n\n if (jexcel.current.cursor) {\n jexcel.current.cursor.style.cursor = '';\n jexcel.current.cursor = null;\n }\n\n if (e.target.parentNode.parentNode && e.target.parentNode.parentNode.className) {\n if (e.target.parentNode.parentNode.classList.contains('resizable')) {\n if (e.target && x && ! y && (rect.width - (e.clientX - rect.left) < 6)) {\n jexcel.current.cursor = e.target;\n jexcel.current.cursor.style.cursor = 'col-resize';\n } else if (e.target && ! x && y && (rect.height - (e.clientY - rect.top) < 6)) {\n jexcel.current.cursor = e.target;\n jexcel.current.cursor.style.cursor = 'row-resize';\n }\n }\n\n if (e.target.parentNode.parentNode.classList.contains('draggable')) {\n if (e.target && ! x && y && (rect.width - (e.clientX - rect.left) < 6)) {\n jexcel.current.cursor = e.target;\n jexcel.current.cursor.style.cursor = 'move';\n } else if (e.target && x && ! y && (rect.height - (e.clientY - rect.top) < 6)) {\n jexcel.current.cursor = e.target;\n jexcel.current.cursor.style.cursor = 'move';\n }\n }\n }\n }\n }\n}\n\njexcel.mouseOverControls = function(e) {\n e = e || window.event;\n if (e.buttons) {\n var mouseButton = e.buttons;\n } else if (e.button) {\n var mouseButton = e.button;\n } else {\n var mouseButton = e.which;\n }\n\n if (! mouseButton) {\n jexcel.isMouseAction = false;\n }\n\n if (jexcel.current && jexcel.isMouseAction == true) {\n // Get elements\n var jexcelTable = jexcel.getElement(e.target);\n\n if (jexcelTable[0]) {\n // Avoid cross reference\n if (jexcel.current != jexcelTable[0].jexcel) {\n if (jexcel.current) {\n return false;\n }\n }\n\n var columnId = e.target.getAttribute('data-x');\n var rowId = e.target.getAttribute('data-y');\n\n if (jexcel.current.dragging) {\n if (jexcel.current.dragging.column) {\n if (columnId) {\n if (jexcel.current.isColMerged(columnId).length) {\n console.error('JEXCEL: This column is part of a merged cell.');\n } else {\n for (var i = 0; i < jexcel.current.headers.length; i++) {\n jexcel.current.headers[i].classList.remove('dragging-left');\n jexcel.current.headers[i].classList.remove('dragging-right');\n }\n\n if (jexcel.current.dragging.column == columnId) {\n jexcel.current.dragging.destination = parseInt(columnId);\n } else {\n if (e.target.clientWidth / 2 > e.offsetX) {\n if (jexcel.current.dragging.column < columnId) {\n jexcel.current.dragging.destination = parseInt(columnId) - 1;\n } else {\n jexcel.current.dragging.destination = parseInt(columnId);\n }\n jexcel.current.headers[columnId].classList.add('dragging-left');\n } else {\n if (jexcel.current.dragging.column < columnId) {\n jexcel.current.dragging.destination = parseInt(columnId);\n } else {\n jexcel.current.dragging.destination = parseInt(columnId) + 1;\n }\n jexcel.current.headers[columnId].classList.add('dragging-right');\n }\n }\n }\n }\n } else {\n if (rowId) {\n if (jexcel.current.isRowMerged(rowId).length) {\n console.error('JEXCEL: This row is part of a merged cell.');\n } else {\n var target = (e.target.clientHeight / 2 > e.offsetY) ? e.target.parentNode.nextSibling : e.target.parentNode;\n e.target.parentNode.parentNode.insertBefore(jexcel.current.dragging.element, target);\n }\n }\n }\n } else if (jexcel.current.resizing) {\n } else {\n // Header found\n if (jexcelTable[1] == 1) {\n if (jexcel.current.selectedHeader) {\n var columnId = e.target.getAttribute('data-x');\n var o = jexcel.current.selectedHeader;\n var d = columnId;\n // Update selection\n jexcel.current.updateSelectionFromCoords(o, 0, d, jexcel.current.options.data.length - 1);\n }\n }\n\n // Body found\n if (jexcelTable[1] == 2) {\n if (e.target.classList.contains('jexcel_row')) {\n if (jexcel.current.selectedRow) {\n var o = jexcel.current.selectedRow;\n var d = rowId;\n // Update selection\n jexcel.current.updateSelectionFromCoords(0, o, jexcel.current.options.data[0].length - 1, d);\n }\n } else {\n // Do not select edtion is in progress\n if (! jexcel.current.edition) {\n if (columnId && rowId) {\n if (jexcel.current.selectedCorner) {\n jexcel.current.updateCopySelection(columnId, rowId);\n } else {\n if (jexcel.current.selectedCell) {\n jexcel.current.updateSelectionFromCoords(jexcel.current.selectedCell[0], jexcel.current.selectedCell[1], columnId, rowId);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n // Clear any time control\n if (jexcel.timeControl) {\n clearTimeout(jexcel.timeControl);\n jexcel.timeControl = null;\n }\n}\n\n/**\n * Double click event handler: controls the double click in the corner, cell edition or column re-ordering.\n */\njexcel.doubleClickControls = function(e) {\n // Jexcel is selected\n if (jexcel.current) {\n // Corner action\n if (e.target.classList.contains('jexcel_corner')) {\n // Any selected cells\n if (jexcel.current.highlighted.length > 0) {\n // Copy from this\n var x1 = jexcel.current.highlighted[0].getAttribute('data-x');\n var y1 = parseInt(jexcel.current.highlighted[jexcel.current.highlighted.length - 1].getAttribute('data-y')) + 1;\n // Until this\n var x2 = jexcel.current.highlighted[jexcel.current.highlighted.length - 1].getAttribute('data-x');\n var y2 = jexcel.current.records.length - 1\n // Execute copy\n jexcel.current.copyData(jexcel.current.records[y1][x1], jexcel.current.records[y2][x2]);\n }\n } else {\n // Get table\n var jexcelTable = jexcel.getElement(e.target);\n\n // Double click over header\n if (jexcelTable[1] == 1 && jexcel.current.options.columnSorting == true) {\n // Check valid column header coords\n var columnId = e.target.getAttribute('data-x');\n if (columnId) {\n jexcel.current.orderBy(columnId);\n }\n }\n\n // Double click over body\n if (jexcelTable[1] == 2 && jexcel.current.options.editable == true) {\n if (! jexcel.current.edition) {\n var getCellCoords = function(element) {\n if (element.parentNode) {\n var x = element.getAttribute('data-x');\n var y = element.getAttribute('data-y');\n if (x && y) {\n return element;\n } else {\n return getCellCoords(element.parentNode);\n }\n }\n }\n var cell = getCellCoords(e.target);\n if (cell && cell.classList.contains('highlight')) {\n jexcel.current.openEditor(cell);\n }\n }\n }\n }\n }\n}\n\njexcel.copyControls = function(e) {\n if (jexcel.current && jexcel.copyControls.enabled) {\n if (! jexcel.current.edition) {\n jexcel.current.copy(true);\n }\n }\n}\n\njexcel.cutControls = function(e) {\n if (jexcel.current) {\n if (! jexcel.current.edition) {\n jexcel.current.copy(true);\n if (jexcel.current.options.editable == true) {\n jexcel.current.setValue(jexcel.current.highlighted, '');\n }\n }\n }\n}\n\njexcel.pasteControls = function(e) {\n if (jexcel.current && jexcel.current.selectedCell) {\n if (! jexcel.current.edition) {\n if (jexcel.current.options.editable == true) {\n if (e && e.clipboardData) {\n jexcel.current.paste(jexcel.current.selectedCell[0], jexcel.current.selectedCell[1], e.clipboardData.getData('text'));\n e.preventDefault();\n } else if (window.clipboardData) {\n jexcel.current.paste(jexcel.current.selectedCell[0], jexcel.current.selectedCell[1], window.clipboardData.getData('text'));\n }\n }\n }\n }\n}\n\njexcel.contextMenuControls = function(e) {\n e = e || window.event;\n if (\"buttons\" in e) {\n var mouseButton = e.buttons;\n } else {\n var mouseButton = e.which || e.button;\n }\n\n if (jexcel.current) {\n if (jexcel.current.edition) {\n e.preventDefault();\n } else if (jexcel.current.options.contextMenu) {\n jexcel.current.contextMenu.contextmenu.close();\n\n if (jexcel.current) {\n var x = e.target.getAttribute('data-x');\n var y = e.target.getAttribute('data-y');\n\n if (x || y) {\n // Table found\n var items = jexcel.current.options.contextMenu(jexcel.current, x, y, e);\n // The id is depending on header and body\n jexcel.current.contextMenu.contextmenu.open(e, items);\n // Avoid the real one\n e.preventDefault();\n }\n }\n }\n }\n}\n\njexcel.touchStartControls = function(e) {\n var jexcelTable = jexcel.getElement(e.target);\n\n if (jexcelTable[0]) {\n if (jexcel.current != jexcelTable[0].jexcel) {\n if (jexcel.current) {\n jexcel.current.resetSelection();\n }\n jexcel.current = jexcelTable[0].jexcel;\n }\n } else {\n if (jexcel.current) {\n jexcel.current.resetSelection();\n jexcel.current = null;\n }\n }\n\n if (jexcel.current) {\n if (! jexcel.current.edition) {\n var columnId = e.target.getAttribute('data-x');\n var rowId = e.target.getAttribute('data-y');\n\n if (columnId && rowId) {\n jexcel.current.updateSelectionFromCoords(columnId, rowId);\n\n jexcel.timeControl = setTimeout(function() {\n // Keep temporary reference to the element\r\n if (jexcel.current.options.columns[columnId].type == 'color') {\r\n jexcel.tmpElement = null;\r\n } else {\r\n jexcel.tmpElement = e.target;\r\n }\r\n jexcel.current.openEditor(e.target, false, e);\n }, 500);\n }\n }\n }\n}\n\njexcel.touchEndControls = function(e) {\n // Clear any time control\n if (jexcel.timeControl) {\n clearTimeout(jexcel.timeControl);\n jexcel.timeControl = null;\n // Element\r\n if (jexcel.tmpElement && jexcel.tmpElement.children[0].tagName == 'INPUT') {\r\n jexcel.tmpElement.children[0].focus();\r\n }\n jexcel.tmpElement = null;\n }\r\n}\r\n\r\n/**\r\n * Jexcel extensions\r\n */\r\n\r\njexcel.createTabs = function(tabs, result) {\r\n // Create tab container\r\n tabs.innerHTML = '';\r\n tabs.classList.add('jexcel_tabs');\r\n var spreadsheet = []\r\n var link = [];\r\n for (var i = 0; i < result.length; i++) {\r\n // Spreadsheet container\r\n spreadsheet[i] = document.createElement('div');\r\n spreadsheet[i].classList.add('jexcel_tab');\r\n // Tab link\r\n link[i] = document.createElement('div');\r\n link[i].classList.add('jexcel_tab_link');\r\n link[i].setAttribute('data-spreadsheet', i);\r\n link[i].innerHTML = result[i].sheetName;\r\n link[i].onclick = function() {\r\n for (var j = 0; j < spreadsheet.length; j++) {\r\n spreadsheet[j].style.display = 'none';\r\n link[j].classList.remove('selected');\r\n }\r\n var i = this.getAttribute('data-spreadsheet');\r\n spreadsheet[i].style.display = 'block';\r\n link[i].classList.add('selected')\r\n }\r\n tabs.appendChild(link[i]);\r\n }\r\n\r\n // Append spreadsheet\r\n for (var i = 0; i < spreadsheet.length - 1; i++) {\r\n tabs.appendChild(spreadsheet[i]);\r\n jexcel(spreadsheet[i], result[i]);\r\n }\r\n\r\n // First tab\r\n spreadsheet[0].style.display = 'block';\r\n link[0].classList.add('selected')\r\n}\r\n\r\njexcel.fromSpreadsheet = function(file, __callback) {\r\n var convert = function(workbook) {\r\n var spreadsheets = [];\r\n workbook.SheetNames.forEach(function(sheetName) {\r\n var spreadsheet = {};\r\n spreadsheet.rows = [];\r\n spreadsheet.columns = [];\r\n spreadsheet.data = [];\r\n spreadsheet.style = {};\r\n spreadsheet.sheetName = sheetName;\r\n\r\n // Column widths\r\n var temp = workbook.Sheets[sheetName]['!cols'];\r\n if (temp && temp.length) {\r\n for (var i = 0; i < temp.length; i++) {\r\n spreadsheet.columns[i] = {};\r\n if (temp[i] && temp[i].wpx) {\r\n spreadsheet.columns[i].width = temp[i].wpx + 'px';\r\n }\r\n }\r\n }\r\n // Rows heights\r\n var temp = workbook.Sheets[sheetName]['!rows'];\r\n if (temp && temp.length) {\r\n for (var i = 0; i < temp.length; i++) {\r\n if (temp[i] && temp[i].hpx) {\r\n spreadsheet.rows[i] = {};\r\n spreadsheet.rows[i].height = temp[i].hpx + 'px';\r\n }\r\n }\r\n }\r\n // Merge cells\r\n var temp = workbook.Sheets[sheetName]['!merges'];\r\n if (temp && temp.length > 0) {\r\n spreadsheet.mergeCells = [];\r\n for (var i = 0; i < temp.length; i++) {\r\n var x1 = temp[i].s.c;\r\n var y1 = temp[i].s.r;\r\n var x2 = temp[i].e.c;\r\n var y2 = temp[i].e.r;\r\n var key = jexcel.getColumnNameFromId([x1,y1]);\r\n spreadsheet.mergeCells[key] = [ x2-x1+1, y2-y1+1 ];\r\n }\r\n }\r\n // Data container\r\n var max_x = 0;\r\n var max_y = 0;\r\n var temp = Object.keys(workbook.Sheets[sheetName]);\r\n for (var i = 0; i < temp.length; i++) {\r\n if (temp[i].substr(0,1) != '!') {\r\n var cell = workbook.Sheets[sheetName][temp[i]];\r\n var info = jexcel.getIdFromColumnName(temp[i], true);\r\n if (! spreadsheet.data[info[1]]) {\r\n spreadsheet.data[info[1]] = [];\r\n }\r\n spreadsheet.data[info[1]][info[0]] = cell.f ? '=' + cell.f : cell.w;\r\n if (max_x < info[0]) {\r\n max_x = info[0];\r\n }\r\n if (max_y < info[1]) {\r\n max_y = info[1];\r\n }\r\n // Style\r\n if (cell.style && Object.keys(cell.style).length > 0) {\r\n spreadsheet.style[temp[i]] = cell.style;\r\n }\r\n if (cell.s && cell.s.fgColor) {\r\n if (spreadsheet.style[temp[i]]) {\r\n spreadsheet.style[temp[i]] += ';';\r\n }\r\n spreadsheet.style[temp[i]] += 'background-color:#' + cell.s.fgColor.rgb;\r\n }\r\n }\r\n }\r\n var numColumns = spreadsheet.columns;\r\n for (var j = 0; j <= max_y; j++) {\r\n for (var i = 0; i <= max_x; i++) {\r\n if (! spreadsheet.data[j]) {\r\n spreadsheet.data[j] = [];\r\n }\r\n if (! spreadsheet.data[j][i]) {\r\n if (numColumns < i) {\r\n spreadsheet.data[j][i] = '';\r\n }\r\n }\r\n }\r\n }\r\n spreadsheets.push(spreadsheet);\r\n });\r\n\r\n return spreadsheets;\r\n }\r\n\r\n var oReq;\r\n oReq = new XMLHttpRequest();\r\n oReq.open(\"GET\", file, true);\r\n\r\n if(typeof Uint8Array !== 'undefined') {\r\n oReq.responseType = \"arraybuffer\";\r\n oReq.onload = function(e) {\r\n var arraybuffer = oReq.response;\r\n var data = new Uint8Array(arraybuffer);\r\n var wb = XLSX.read(data, {type:\"array\", cellFormula:true, cellStyles:true });\r\n __callback(convert(wb))\r\n };\r\n } else {\r\n oReq.setRequestHeader(\"Accept-Charset\", \"x-user-defined\"); \r\n oReq.onreadystatechange = function() { if(oReq.readyState == 4 && oReq.status == 200) {\r\n var ff = convertResponseBodyToText(oReq.responseBody);\r\n var wb = XLSX.read(ff, {type:\"binary\", cellFormula:true, cellStyles:true });\r\n __callback(convert(wb))\r\n }};\r\n }\r\n\r\n oReq.send();\r\n}\r\n\r\n/**\r\n * Valid international letter\r\n */\r\n\r\njexcel.validLetter = function (text) {\r\n var regex = /([\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC-\\u0400-\\u04FF']+)/g;\r\n return text.match(regex) ? 1 : 0;\r\n}\r\n\r\n/**\r\n * Helper injectArray\r\n */\r\njexcel.injectArray = function(o, idx, arr) {\r\n return o.slice(0, idx).concat(arr).concat(o.slice(idx));\r\n}\r\n\r\n/**\r\n * Get letter based on a number\r\n * \r\n * @param integer i\r\n * @return string letter\r\n */\r\njexcel.getColumnName = function(i) {\r\n var letter = '';\r\n if (i > 701) {\r\n letter += String.fromCharCode(64 + parseInt(i / 676));\r\n letter += String.fromCharCode(64 + parseInt((i % 676) / 26));\r\n } else if (i > 25) {\r\n letter += String.fromCharCode(64 + parseInt(i / 26));\r\n }\r\n letter += String.fromCharCode(65 + (i % 26));\r\n\r\n return letter;\r\n}\r\n\r\n/**\r\n * Convert excel like column to jexcel id\r\n * \r\n * @param string id\r\n * @return string id\r\n */\r\njexcel.getIdFromColumnName = function (id, arr) {\r\n // Get the letters\r\n var t = /^[a-zA-Z]+/.exec(id);\r\n\r\n if (t) {\r\n // Base 26 calculation\r\n var code = 0;\r\n for (var i = 0; i < t[0].length; i++) {\r\n code += parseInt(t[0].charCodeAt(i) - 64) * Math.pow(26, (t[0].length - 1 - i));\r\n }\r\n code--;\r\n // Make sure jexcel starts on zero\r\n if (code < 0) {\r\n code = 0;\r\n }\r\n\r\n // Number\r\n var number = parseInt(/[0-9]+$/.exec(id));\r\n if (number > 0) {\r\n number--;\r\n }\r\n\r\n if (arr == true) {\r\n id = [ code, number ];\r\n } else {\r\n id = code + '-' + number;\r\n }\r\n }\r\n\r\n return id;\r\n}\r\n\r\n/**\r\n * Convert jexcel id to excel like column name\r\n * \r\n * @param string id\r\n * @return string id\r\n */\r\njexcel.getColumnNameFromId = function (cellId) {\r\n if (! Array.isArray(cellId)) {\r\n cellId = cellId.split('-');\r\n }\r\n\r\n return jexcel.getColumnName(parseInt(cellId[0])) + (parseInt(cellId[1]) + 1);\r\n}\r\n\r\n/**\r\n * Verify element inside jexcel table\r\n * \r\n * @param string id\r\n * @return string id\r\n */\r\njexcel.getElement = function(element) {\r\n var jexcelSection = 0;\r\n var jexcelElement = 0;\r\n\r\n function path (element) {\r\n if (element.className) {\r\n if (element.classList.contains('jexcel_container')) {\r\n jexcelElement = element;\r\n }\r\n }\r\n\r\n if (element.tagName == 'THEAD') {\r\n jexcelSection = 1;\r\n } else if (element.tagName == 'TBODY') {\r\n jexcelSection = 2;\r\n }\r\n\r\n if (element.parentNode) {\r\n path(element.parentNode);\r\n }\r\n }\r\n\r\n path(element);\r\n\r\n return [ jexcelElement, jexcelSection ];\r\n}\r\n\r\njexcel.doubleDigitFormat = function(v) {\r\n v = ''+v;\r\n if (v.length == 1) {\r\n v = '0'+v;\r\n }\r\n return v;\r\n}\r\n\r\n/**\r\n * Jquery Support\r\n */\r\nif (typeof(jQuery) != 'undefined') {\r\n (function($){\r\n $.fn.jexcel = function(method) {\r\n var spreadsheetContainer = $(this).get(0);\r\n if (! spreadsheetContainer.jexcel) {\r\n return jexcel($(this).get(0), arguments[0]);\r\n } else {\r\n return spreadsheetContainer.jexcel[method].apply(this, Array.prototype.slice.call( arguments, 1 ));\r\n }\r\n };\r\n\r\n })(jQuery);\r\n}\r\n\r\n\r\n// Based on sutoiku work (https://github.com/sutoiku)\r\n\r\nvar error = (function() {\r\n var exports = {};\r\n\r\n exports.nil = new Error('#NULL!');\r\n exports.div0 = new Error('#DIV/0!');\r\n exports.value = new Error('#VALUE!');\r\n exports.ref = new Error('#REF!');\r\n exports.name = new Error('#NAME?');\r\n exports.num = new Error('#NUM!');\r\n exports.na = new Error('#N/A');\r\n exports.error = new Error('#ERROR!');\r\n exports.data = new Error('#GETTING_DATA');\r\n\r\n return exports;\r\n})();\r\n\r\nvar utils = (function() {\r\n var exports = {};\r\n\r\n exports.flattenShallow = function(array) {\r\n if (!array || !array.reduce) {\r\n return array;\r\n }\r\n\r\n return array.reduce(function(a, b) {\r\n var aIsArray = Array.isArray(a);\r\n var bIsArray = Array.isArray(b);\r\n\r\n if (aIsArray && bIsArray) {\r\n return a.concat(b);\r\n }\r\n if (aIsArray) {\r\n a.push(b);\r\n\r\n return a;\r\n }\r\n if (bIsArray) {\r\n return [ a ].concat(b);\r\n }\r\n\r\n return [ a, b ];\r\n });\r\n };\r\n\r\n exports.isFlat = function(array) {\r\n if (!array) {\r\n return false;\r\n }\r\n\r\n for (var i = 0; i < array.length; ++i) {\r\n if (Array.isArray(array[i])) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n exports.flatten = function() {\r\n var result = exports.argsToArray.apply(null, arguments);\r\n\r\n while (!exports.isFlat(result)) {\r\n result = exports.flattenShallow(result);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n exports.argsToArray = function(args) {\r\n var result = [];\r\n\r\n exports.arrayEach(args, function(value) {\r\n result.push(value);\r\n });\r\n\r\n return result;\r\n };\r\n\r\n exports.numbers = function() {\r\n var possibleNumbers = this.flatten.apply(null, arguments);\r\n return possibleNumbers.filter(function(el) {\r\n return typeof el === 'number';\r\n });\r\n };\r\n\r\n exports.cleanFloat = function(number) {\r\n var power = 1e14;\r\n return Math.round(number * power) / power;\r\n };\r\n\r\n exports.parseBool = function(bool) {\r\n if (typeof bool === 'boolean') {\r\n return bool;\r\n }\r\n\r\n if (bool instanceof Error) {\r\n return bool;\r\n }\r\n\r\n if (typeof bool === 'number') {\r\n return bool !== 0;\r\n }\r\n\r\n if (typeof bool === 'string') {\r\n var up = bool.toUpperCase();\r\n if (up === 'TRUE') {\r\n return true;\r\n }\r\n\r\n if (up === 'FALSE') {\r\n return false;\r\n }\r\n }\r\n\r\n if (bool instanceof Date && !isNaN(bool)) {\r\n return true;\r\n }\r\n\r\n return error.value;\r\n };\r\n\r\n exports.parseNumber = function(string) {\r\n if (string === undefined || string === '') {\r\n return error.value;\r\n }\r\n if (!isNaN(string)) {\r\n return parseFloat(string);\r\n }\r\n\r\n return error.value;\r\n };\r\n\r\n exports.parseNumberArray = function(arr) {\r\n var len;\r\n\r\n if (!arr || (len = arr.length) === 0) {\r\n return error.value;\r\n }\r\n\r\n var parsed;\r\n\r\n while (len--) {\r\n parsed = exports.parseNumber(arr[len]);\r\n if (parsed === error.value) {\r\n return parsed;\r\n }\r\n arr[len] = parsed;\r\n }\r\n\r\n return arr;\r\n };\r\n\r\n exports.parseMatrix = function(matrix) {\r\n var n;\r\n\r\n if (!matrix || (n = matrix.length) === 0) {\r\n return error.value;\r\n }\r\n var pnarr;\r\n\r\n for (var i = 0; i < matrix.length; i++) {\r\n pnarr = exports.parseNumberArray(matrix[i]);\r\n matrix[i] = pnarr;\r\n\r\n if (pnarr instanceof Error) {\r\n return pnarr;\r\n }\r\n }\r\n\r\n return matrix;\r\n };\r\n\r\n var d1900 = new Date(Date.UTC(1900, 0, 1));\r\n exports.parseDate = function(date) {\r\n if (!isNaN(date)) {\r\n if (date instanceof Date) {\r\n return new Date(date);\r\n }\r\n var d = parseInt(date, 10);\r\n if (d < 0) {\r\n return error.num;\r\n }\r\n if (d <= 60) {\r\n return new Date(d1900.getTime() + (d - 1) * 86400000);\r\n }\r\n return new Date(d1900.getTime() + (d - 2) * 86400000);\r\n }\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n if (!isNaN(date)) {\r\n return date;\r\n }\r\n }\r\n return error.value;\r\n };\r\n\r\n exports.parseDateArray = function(arr) {\r\n var len = arr.length;\r\n var parsed;\r\n while (len--) {\r\n parsed = this.parseDate(arr[len]);\r\n if (parsed === error.value) {\r\n return parsed;\r\n }\r\n arr[len] = parsed;\r\n }\r\n return arr;\r\n };\r\n\r\n exports.anyIsError = function() {\r\n var n = arguments.length;\r\n while (n--) {\r\n if (arguments[n] instanceof Error) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n exports.arrayValuesToNumbers = function(arr) {\r\n var n = arr.length;\r\n var el;\r\n while (n--) {\r\n el = arr[n];\r\n if (typeof el === 'number') {\r\n continue;\r\n }\r\n if (el === true) {\r\n arr[n] = 1;\r\n continue;\r\n }\r\n if (el === false) {\r\n arr[n] = 0;\r\n continue;\r\n }\r\n if (typeof el === 'string') {\r\n var number = this.parseNumber(el);\r\n if (number instanceof Error) {\r\n arr[n] = 0;\r\n } else {\r\n arr[n] = number;\r\n }\r\n }\r\n }\r\n return arr;\r\n };\r\n\r\n exports.rest = function(array, idx) {\r\n idx = idx || 1;\r\n if (!array || typeof array.slice !== 'function') {\r\n return array;\r\n }\r\n return array.slice(idx);\r\n };\r\n\r\n exports.initial = function(array, idx) {\r\n idx = idx || 1;\r\n if (!array || typeof array.slice !== 'function') {\r\n return array;\r\n }\r\n return array.slice(0, array.length - idx);\r\n };\r\n\r\n exports.arrayEach = function(array, iteratee) {\r\n var index = -1, length = array.length;\r\n\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n\r\n return array;\r\n };\r\n\r\n exports.transpose = function(matrix) {\r\n if (!matrix) {\r\n return error.value;\r\n }\r\n\r\n return matrix[0].map(function(col, i) {\r\n return matrix.map(function(row) {\r\n return row[i];\r\n });\r\n });\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods = {};\r\n\r\njexcel.methods.datetime = (function() {\r\n var exports = {};\r\n\r\n var d1900 = new Date(1900, 0, 1);\r\n var WEEK_STARTS = [\r\n undefined,\r\n 0,\r\n 1,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 0\r\n ];\r\n var WEEK_TYPES = [\r\n [],\r\n [1, 2, 3, 4, 5, 6, 7],\r\n [7, 1, 2, 3, 4, 5, 6],\r\n [6, 0, 1, 2, 3, 4, 5],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [7, 1, 2, 3, 4, 5, 6],\r\n [6, 7, 1, 2, 3, 4, 5],\r\n [5, 6, 7, 1, 2, 3, 4],\r\n [4, 5, 6, 7, 1, 2, 3],\r\n [3, 4, 5, 6, 7, 1, 2],\r\n [2, 3, 4, 5, 6, 7, 1],\r\n [1, 2, 3, 4, 5, 6, 7]\r\n ];\r\n var WEEKEND_TYPES = [\r\n [],\r\n [6, 0],\r\n [0, 1],\r\n [1, 2],\r\n [2, 3],\r\n [3, 4],\r\n [4, 5],\r\n [5, 6],\r\n undefined,\r\n undefined,\r\n undefined, [0, 0],\r\n [1, 1],\r\n [2, 2],\r\n [3, 3],\r\n [4, 4],\r\n [5, 5],\r\n [6, 6]\r\n ];\r\n\r\n exports.DATE = function(year, month, day) {\r\n year = utils.parseNumber(year);\r\n month = utils.parseNumber(month);\r\n day = utils.parseNumber(day);\r\n if (utils.anyIsError(year, month, day)) {\r\n return error.value;\r\n }\r\n if (year < 0 || month < 0 || day < 0) {\r\n return error.num;\r\n }\r\n var date = new Date(year, month - 1, day);\r\n return date;\r\n };\r\n\r\n exports.DATEVALUE = function(date_text) {\r\n if (typeof date_text !== 'string') {\r\n return error.value;\r\n }\r\n var date = Date.parse(date_text);\r\n if (isNaN(date)) {\r\n return error.value;\r\n }\r\n if (date <= -2203891200000) {\r\n return (date - d1900) / 86400000 + 1;\r\n }\r\n return (date - d1900) / 86400000 + 2;\r\n };\r\n\r\n exports.DAY = function(serial_number) {\r\n var date = utils.parseDate(serial_number);\r\n if (date instanceof Error) {\r\n return date;\r\n }\r\n return date.getDate();\r\n };\r\n\r\n exports.DAYS = function(end_date, start_date) {\r\n end_date = utils.parseDate(end_date);\r\n start_date = utils.parseDate(start_date);\r\n if (end_date instanceof Error) {\r\n return end_date;\r\n }\r\n if (start_date instanceof Error) {\r\n return start_date;\r\n }\r\n return serial(end_date) - serial(start_date);\r\n };\r\n\r\n exports.DAYS360 = function(start_date, end_date, method) {\r\n };\r\n\r\n exports.EDATE = function(start_date, months) {\r\n start_date = utils.parseDate(start_date);\r\n if (start_date instanceof Error) {\r\n return start_date;\r\n }\r\n if (isNaN(months)) {\r\n return error.value;\r\n }\r\n months = parseInt(months, 10);\r\n start_date.setMonth(start_date.getMonth() + months);\r\n return serial(start_date);\r\n };\r\n\r\n exports.EOMONTH = function(start_date, months) {\r\n start_date = utils.parseDate(start_date);\r\n if (start_date instanceof Error) {\r\n return start_date;\r\n }\r\n if (isNaN(months)) {\r\n return error.value;\r\n }\r\n months = parseInt(months, 10);\r\n return serial(new Date(start_date.getFullYear(), start_date.getMonth() + months + 1, 0));\r\n };\r\n\r\n exports.HOUR = function(serial_number) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n return serial_number.getHours();\r\n };\r\n\r\n exports.INTERVAL = function(second) {\r\n if (typeof second !== 'number' && typeof second !== 'string') {\r\n return error.value;\r\n } else {\r\n second = parseInt(second, 10);\r\n }\r\n\r\n var year = Math.floor(second/946080000);\r\n second = second%946080000;\r\n var month = Math.floor(second/2592000);\r\n second = second%2592000;\r\n var day = Math.floor(second/86400);\r\n second = second%86400;\r\n\r\n var hour = Math.floor(second/3600);\r\n second = second%3600;\r\n var min = Math.floor(second/60);\r\n second = second%60;\r\n var sec = second;\r\n\r\n year = (year > 0) ? year + 'Y' : '';\r\n month = (month > 0) ? month + 'M' : '';\r\n day = (day > 0) ? day + 'D' : '';\r\n hour = (hour > 0) ? hour + 'H' : '';\r\n min = (min > 0) ? min + 'M' : '';\r\n sec = (sec > 0) ? sec + 'S' : '';\r\n\r\n return 'P' + year + month + day + 'T' + hour + min + sec;\r\n };\r\n\r\n exports.ISOWEEKNUM = function(date) {\r\n date = utils.parseDate(date);\r\n if (date instanceof Error) {\r\n return date;\r\n }\r\n\r\n date.setHours(0, 0, 0);\r\n date.setDate(date.getDate() + 4 - (date.getDay() || 7));\r\n var yearStart = new Date(date.getFullYear(), 0, 1);\r\n return Math.ceil((((date - yearStart) / 86400000) + 1) / 7);\r\n };\r\n\r\n exports.MINUTE = function(serial_number) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n return serial_number.getMinutes();\r\n };\r\n\r\n exports.MONTH = function(serial_number) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n return serial_number.getMonth() + 1;\r\n };\r\n\r\n exports.NETWORKDAYS = function(start_date, end_date, holidays) {\r\n };\r\n\r\n exports.NETWORKDAYS.INTL = function(start_date, end_date, weekend, holidays) {\r\n };\r\n\r\n exports.NOW = function() {\r\n return new Date();\r\n };\r\n\r\n exports.SECOND = function(serial_number) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n return serial_number.getSeconds();\r\n };\r\n\r\n exports.TIME = function(hour, minute, second) {\r\n hour = utils.parseNumber(hour);\r\n minute = utils.parseNumber(minute);\r\n second = utils.parseNumber(second);\r\n if (utils.anyIsError(hour, minute, second)) {\r\n return error.value;\r\n }\r\n if (hour < 0 || minute < 0 || second < 0) {\r\n return error.num;\r\n }\r\n return (3600 * hour + 60 * minute + second) / 86400;\r\n };\r\n\r\n exports.TIMEVALUE = function(time_text) {\r\n time_text = utils.parseDate(time_text);\r\n if (time_text instanceof Error) {\r\n return time_text;\r\n }\r\n return (3600 * time_text.getHours() + 60 * time_text.getMinutes() + time_text.getSeconds()) / 86400;\r\n };\r\n\r\n exports.TODAY = function() {\r\n return new Date();\r\n };\r\n\r\n exports.WEEKDAY = function(serial_number, return_type) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n if (return_type === undefined) {\r\n return_type = 1;\r\n }\r\n var day = serial_number.getDay();\r\n return WEEK_TYPES[return_type][day];\r\n };\r\n\r\n exports.WEEKNUM = function(serial_number, return_type) {\r\n };\r\n\r\n exports.WORKDAY = function(start_date, days, holidays) {\r\n };\r\n\r\n exports.WORKDAY.INTL = function(start_date, days, weekend, holidays) {\r\n };\r\n\r\n exports.YEAR = function(serial_number) {\r\n serial_number = utils.parseDate(serial_number);\r\n if (serial_number instanceof Error) {\r\n return serial_number;\r\n }\r\n return serial_number.getFullYear();\r\n };\r\n\r\n function isLeapYear(year) {\r\n return new Date(year, 1, 29).getMonth() === 1;\r\n }\r\n\r\n exports.YEARFRAC = function(start_date, end_date, basis) {\r\n };\r\n\r\n function serial(date) {\r\n var addOn = (date > -2203891200000)?2:1;\r\n return (date - d1900) / 86400000 + addOn;\r\n }\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.database = (function() {\r\n var exports = {};\r\n\r\n function compact(array) {\r\n if (!array) {\r\n return array;\r\n }\r\n var result = [];\r\n for (var i = 0; i < array.length; ++i) {\r\n if (!array[i]) {\r\n continue;\r\n }\r\n result.push(array[i]);\r\n }\r\n return result;\r\n }\r\n\r\n exports.FINDFIELD = function(database, title) {\r\n var index = null;\r\n for (var i = 0; i < database.length; i++) {\r\n if (database[i][0] === title) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n // Return error if the input field title is incorrect\r\n if (index == null) {\r\n return error.value;\r\n }\r\n return index;\r\n };\r\n\r\n function findResultIndex(database, criterias) {\r\n var matches = {};\r\n for (var i = 1; i < database[0].length; ++i) {\r\n matches[i] = true;\r\n }\r\n var maxCriteriaLength = criterias[0].length;\r\n for (i = 1; i < criterias.length; ++i) {\r\n if (criterias[i].length > maxCriteriaLength) {\r\n maxCriteriaLength = criterias[i].length;\r\n }\r\n }\r\n\r\n for (var k = 1; k < database.length; ++k) {\r\n for (var l = 1; l < database[k].length; ++l) {\r\n var currentCriteriaResult = false;\r\n var hasMatchingCriteria = false;\r\n for (var j = 0; j < criterias.length; ++j) {\r\n var criteria = criterias[j];\r\n if (criteria.length < maxCriteriaLength) {\r\n continue;\r\n }\r\n\r\n var criteriaField = criteria[0];\r\n if (database[k][0] !== criteriaField) {\r\n continue;\r\n }\r\n hasMatchingCriteria = true;\r\n for (var p = 1; p < criteria.length; ++p) {\r\n currentCriteriaResult = currentCriteriaResult\r\n || eval(database[k][l] + criteria[p]); // jshint\r\n // ignore:line\r\n }\r\n }\r\n if (hasMatchingCriteria) {\r\n matches[l] = matches[l] && currentCriteriaResult;\r\n }\r\n }\r\n }\r\n\r\n var result = [];\r\n for (var n = 0; n < database[0].length; ++n) {\r\n if (matches[n]) {\r\n result.push(n - 1);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n // Database functions\r\n exports.DAVERAGE = function(database, field, criteria) {\r\n // Return error if field is not a number and not a string\r\n if (isNaN(field) && (typeof field !== \"string\")) {\r\n return error.value;\r\n }\r\n var resultIndexes = findResultIndex(database, criteria);\r\n var targetFields = [];\r\n if (typeof field === \"string\") {\r\n var index = exports.FINDFIELD(database, field);\r\n targetFields = utils.rest(database[index]);\r\n } else {\r\n targetFields = utils.rest(database[field]);\r\n }\r\n var sum = 0;\r\n for (var i = 0; i < resultIndexes.length; i++) {\r\n sum += targetFields[resultIndexes[i]];\r\n }\r\n return resultIndexes.length === 0 ? error.div0 : sum / resultIndexes.length;\r\n };\r\n\r\n exports.DCOUNT = function(database, field, criteria) {\r\n };\r\n\r\n exports.DCOUNTA = function(database, field, criteria) {\r\n };\r\n\r\n exports.DGET = function(database, field, criteria) {\r\n // Return error if field is not a number and not a string\r\n if (isNaN(field) && (typeof field !== \"string\")) {\r\n return error.value;\r\n }\r\n var resultIndexes = findResultIndex(database, criteria);\r\n var targetFields = [];\r\n if (typeof field === \"string\") {\r\n var index = exports.FINDFIELD(database, field);\r\n targetFields = utils.rest(database[index]);\r\n } else {\r\n targetFields = utils.rest(database[field]);\r\n }\r\n // Return error if no record meets the criteria\r\n if (resultIndexes.length === 0) {\r\n return error.value;\r\n }\r\n // Returns the #NUM! error value because more than one record meets the\r\n // criteria\r\n if (resultIndexes.length > 1) {\r\n return error.num;\r\n }\r\n\r\n return targetFields[resultIndexes[0]];\r\n };\r\n\r\n exports.DMAX = function(database, field, criteria) {\r\n // Return error if field is not a number and not a string\r\n if (isNaN(field) && (typeof field !== \"string\")) {\r\n return error.value;\r\n }\r\n var resultIndexes = findResultIndex(database, criteria);\r\n var targetFields = [];\r\n if (typeof field === \"string\") {\r\n var index = exports.FINDFIELD(database, field);\r\n targetFields = utils.rest(database[index]);\r\n } else {\r\n targetFields = utils.rest(database[field]);\r\n }\r\n var maxValue = targetFields[resultIndexes[0]];\r\n for (var i = 1; i < resultIndexes.length; i++) {\r\n if (maxValue < targetFields[resultIndexes[i]]) {\r\n maxValue = targetFields[resultIndexes[i]];\r\n }\r\n }\r\n return maxValue;\r\n };\r\n\r\n exports.DMIN = function(database, field, criteria) {\r\n // Return error if field is not a number and not a string\r\n if (isNaN(field) && (typeof field !== \"string\")) {\r\n return error.value;\r\n }\r\n var resultIndexes = findResultIndex(database, criteria);\r\n var targetFields = [];\r\n if (typeof field === \"string\") {\r\n var index = exports.FINDFIELD(database, field);\r\n targetFields = utils.rest(database[index]);\r\n } else {\r\n targetFields = utils.rest(database[field]);\r\n }\r\n var minValue = targetFields[resultIndexes[0]];\r\n for (var i = 1; i < resultIndexes.length; i++) {\r\n if (minValue > targetFields[resultIndexes[i]]) {\r\n minValue = targetFields[resultIndexes[i]];\r\n }\r\n }\r\n return minValue;\r\n };\r\n\r\n exports.DPRODUCT = function(database, field, criteria) {\r\n // Return error if field is not a number and not a string\r\n if (isNaN(field) && (typeof field !== \"string\")) {\r\n return error.value;\r\n }\r\n var resultIndexes = findResultIndex(database, criteria);\r\n var targetFields = [];\r\n if (typeof field === \"string\") {\r\n var index = exports.FINDFIELD(database, field);\r\n targetFields = utils.rest(database[index]);\r\n } else {\r\n targetFields = utils.rest(database[field]);\r\n }\r\n var targetValues = [];\r\n for (var i = 0; i < resultIndexes.length; i++) {\r\n targetValues[i] = targetFields[resultIndexes[i]];\r\n }\r\n targetValues = compact(targetValues);\r\n var result = 1;\r\n for (i = 0; i < targetValues.length; i++) {\r\n result *= targetValues[i];\r\n }\r\n return result;\r\n };\r\n\r\n exports.DSTDEV = function(database, field, criteria) {\r\n };\r\n\r\n exports.DSTDEVP = function(database, field, criteria) {\r\n };\r\n\r\n exports.DSUM = function(database, field, criteria) {\r\n };\r\n\r\n exports.DVAR = function(database, field, criteria) {\r\n };\r\n\r\n exports.DVARP = function(database, field, criteria) {\r\n };\r\n\r\n exports.MATCH = function(lookupValue, lookupArray, matchType) {\r\n if (!lookupValue && !lookupArray) {\r\n return error.na;\r\n }\r\n if (arguments.length === 2) {\r\n matchType = 1;\r\n }\r\n if (!(lookupArray instanceof Array)) {\r\n return error.na;\r\n }\r\n if (matchType !== -1 && matchType !== 0 && matchType !== 1) {\r\n return error.na;\r\n }\r\n\r\n var index;\r\n var indexValue;\r\n\r\n for (var idx = 0; idx < lookupArray.length; idx++) {\r\n if (matchType === 1) {\r\n if (lookupArray[idx] === lookupValue) {\r\n return idx + 1;\r\n } else if (lookupArray[idx] < lookupValue) {\r\n if (!indexValue) {\r\n index = idx + 1;\r\n indexValue = lookupArray[idx];\r\n } else if (lookupArray[idx] > indexValue) {\r\n index = idx + 1;\r\n indexValue = lookupArray[idx];\r\n }\r\n }\r\n } else if (matchType === 0) {\r\n if (typeof lookupValue === 'string') {\r\n lookupValue = lookupValue.replace(/\\?/g, '.');\r\n if (lookupArray[idx].toLowerCase().match(lookupValue.toLowerCase())) {\r\n return idx + 1;\r\n }\r\n } else {\r\n if (lookupArray[idx] === lookupValue) {\r\n return idx + 1;\r\n }\r\n }\r\n } else if (matchType === -1) {\r\n if (lookupArray[idx] === lookupValue) {\r\n return idx + 1;\r\n } else if (lookupArray[idx] > lookupValue) {\r\n if (!indexValue) {\r\n index = idx + 1;\r\n indexValue = lookupArray[idx];\r\n } else if (lookupArray[idx] < indexValue) {\r\n index = idx + 1;\r\n indexValue = lookupArray[idx];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return index ? index : error.na;\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.engineering = (function() {\r\n var exports = {};\r\n\r\n function isValidBinaryNumber(number) {\r\n return (/^[01]{1,10}$/).test(number);\r\n }\r\n\r\n exports.BESSELI = function(x, n) {\r\n };\r\n\r\n exports.BESSELJ = function(x, n) {\r\n };\r\n\r\n exports.BESSELK = function(x, n) {\r\n };\r\n\r\n exports.BESSELY = function(x, n) {\r\n };\r\n\r\n exports.BIN2DEC = function(number) {\r\n // Return error if number is not binary or contains more than 10\r\n // characters (10 digits)\r\n if (!isValidBinaryNumber(number)) {\r\n return error.num;\r\n }\r\n\r\n // Convert binary number to decimal\r\n var result = parseInt(number, 2);\r\n\r\n // Handle negative numbers\r\n var stringified = number.toString();\r\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\r\n return parseInt(stringified.substring(1), 2) - 512;\r\n } else {\r\n return result;\r\n }\r\n };\r\n\r\n exports.BIN2HEX = function(number, places) {\r\n // Return error if number is not binary or contains more than 10\r\n // characters (10 digits)\r\n if (!isValidBinaryNumber(number)) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character hexadecimal number if number\r\n // is negative\r\n var stringified = number.toString();\r\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\r\n return (1099511627264 + parseInt(stringified.substring(1), 2)).toString(16);\r\n }\r\n\r\n // Convert binary number to hexadecimal\r\n var result = parseInt(number, 2).toString(16);\r\n\r\n // Return hexadecimal number using the minimum number of characters\r\n // necessary if places is undefined\r\n if (places === undefined) {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.BIN2OCT = function(number, places) {\r\n // Return error if number is not binary or contains more than 10\r\n // characters (10 digits)\r\n if (!isValidBinaryNumber(number)) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character octal number if number is\r\n // negative\r\n var stringified = number.toString();\r\n if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\r\n return (1073741312 + parseInt(stringified.substring(1), 2)).toString(8);\r\n }\r\n\r\n // Convert binary number to octal\r\n var result = parseInt(number, 2).toString(8);\r\n\r\n // Return octal number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (places === undefined) {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.BITAND = function(number1, number2) {\r\n // Return error if either number is a non-numeric value\r\n number1 = utils.parseNumber(number1);\r\n number2 = utils.parseNumber(number2);\r\n if (utils.anyIsError(number1, number2)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if either number is less than 0\r\n if (number1 < 0 || number2 < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is a non-integer\r\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is greater than (2^48)-1\r\n if (number1 > 281474976710655 || number2 > 281474976710655) {\r\n return error.num;\r\n }\r\n\r\n // Return bitwise AND of two numbers\r\n return number1 & number2;\r\n };\r\n\r\n exports.BITLSHIFT = function(number, shift) {\r\n number = utils.parseNumber(number);\r\n shift = utils.parseNumber(shift);\r\n if (utils.anyIsError(number, shift)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if number is less than 0\r\n if (number < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if number is a non-integer\r\n if (Math.floor(number) !== number) {\r\n return error.num;\r\n }\r\n\r\n // Return error if number is greater than (2^48)-1\r\n if (number > 281474976710655) {\r\n return error.num;\r\n }\r\n\r\n // Return error if the absolute value of shift is greater than 53\r\n if (Math.abs(shift) > 53) {\r\n return error.num;\r\n }\r\n\r\n // Return number shifted by shift bits to the left or to the right if\r\n // shift is negative\r\n return (shift >= 0) ? number << shift : number >> -shift;\r\n };\r\n\r\n exports.BITOR = function(number1, number2) {\r\n number1 = utils.parseNumber(number1);\r\n number2 = utils.parseNumber(number2);\r\n if (utils.anyIsError(number1, number2)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if either number is less than 0\r\n if (number1 < 0 || number2 < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is a non-integer\r\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is greater than (2^48)-1\r\n if (number1 > 281474976710655 || number2 > 281474976710655) {\r\n return error.num;\r\n }\r\n\r\n // Return bitwise OR of two numbers\r\n return number1 | number2;\r\n };\r\n\r\n exports.BITRSHIFT = function(number, shift) {\r\n number = utils.parseNumber(number);\r\n shift = utils.parseNumber(shift);\r\n if (utils.anyIsError(number, shift)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if number is less than 0\r\n if (number < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if number is a non-integer\r\n if (Math.floor(number) !== number) {\r\n return error.num;\r\n }\r\n\r\n // Return error if number is greater than (2^48)-1\r\n if (number > 281474976710655) {\r\n return error.num;\r\n }\r\n\r\n // Return error if the absolute value of shift is greater than 53\r\n if (Math.abs(shift) > 53) {\r\n return error.num;\r\n }\r\n\r\n // Return number shifted by shift bits to the right or to the left if\r\n // shift is negative\r\n return (shift >= 0) ? number >> shift : number << -shift;\r\n };\r\n\r\n exports.BITXOR = function(number1, number2) {\r\n number1 = utils.parseNumber(number1);\r\n number2 = utils.parseNumber(number2);\r\n if (utils.anyIsError(number1, number2)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if either number is less than 0\r\n if (number1 < 0 || number2 < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is a non-integer\r\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\r\n return error.num;\r\n }\r\n\r\n // Return error if either number is greater than (2^48)-1\r\n if (number1 > 281474976710655 || number2 > 281474976710655) {\r\n return error.num;\r\n }\r\n\r\n // Return bitwise XOR of two numbers\r\n return number1 ^ number2;\r\n };\r\n\r\n exports.COMPLEX = function(real, imaginary, suffix) {\r\n real = utils.parseNumber(real);\r\n imaginary = utils.parseNumber(imaginary);\r\n if (utils.anyIsError(real, imaginary)) {\r\n return real;\r\n }\r\n\r\n // Set suffix\r\n suffix = (suffix === undefined) ? 'i' : suffix;\r\n\r\n // Return error if suffix is neither \"i\" nor \"j\"\r\n if (suffix !== 'i' && suffix !== 'j') {\r\n return error.value;\r\n }\r\n\r\n // Return complex number\r\n if (real === 0 && imaginary === 0) {\r\n return 0;\r\n } else if (real === 0) {\r\n return (imaginary === 1) ? suffix : imaginary.toString() + suffix;\r\n } else if (imaginary === 0) {\r\n return real.toString();\r\n } else {\r\n var sign = (imaginary > 0) ? '+' : '';\r\n return real.toString() + sign + ((imaginary === 1) ? suffix : imaginary.toString() + suffix);\r\n }\r\n };\r\n\r\n exports.CONVERT = function(number, from_unit, to_unit) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n\r\n // List of units supported by CONVERT and units defined by the\r\n // International System of Units\r\n // [Name, Symbol, Alternate symbols, Quantity, ISU, CONVERT, Conversion\r\n // ratio]\r\n var units = [\r\n [\"a.u. of action\", \"?\", null, \"action\", false, false, 1.05457168181818e-34],\r\n [\"a.u. of charge\", \"e\", null, \"electric_charge\", false, false, 1.60217653141414e-19],\r\n [\"a.u. of energy\", \"Eh\", null, \"energy\", false, false, 4.35974417757576e-18],\r\n [\"a.u. of length\", \"a?\", null, \"length\", false, false, 5.29177210818182e-11],\r\n [\"a.u. of mass\", \"m?\", null, \"mass\", false, false, 9.10938261616162e-31],\r\n [\"a.u. of time\", \"?/Eh\", null, \"time\", false, false, 2.41888432650516e-17],\r\n [\"admiralty knot\", \"admkn\", null, \"speed\", false, true, 0.514773333],\r\n [\"ampere\", \"A\", null, \"electric_current\", true, false, 1],\r\n [\"ampere per meter\", \"A/m\", null, \"magnetic_field_intensity\", true, false, 1],\r\n [\"ångström\", \"Å\", [\"ang\"], \"length\", false, true, 1e-10],\r\n [\"are\", \"ar\", null, \"area\", false, true, 100],\r\n [\"astronomical unit\", \"ua\", null, \"length\", false, false, 1.49597870691667e-11],\r\n [\"bar\", \"bar\", null, \"pressure\", false, false, 100000],\r\n [\"barn\", \"b\", null, \"area\", false, false, 1e-28],\r\n [\"becquerel\", \"Bq\", null, \"radioactivity\", true, false, 1],\r\n [\"bit\", \"bit\", [\"b\"], \"information\", false, true, 1],\r\n [\"btu\", \"BTU\", [\"btu\"], \"energy\", false, true, 1055.05585262],\r\n [\"byte\", \"byte\", null, \"information\", false, true, 8],\r\n [\"candela\", \"cd\", null, \"luminous_intensity\", true, false, 1],\r\n [\"candela per square metre\", \"cd/m?\", null, \"luminance\", true, false, 1],\r\n [\"coulomb\", \"C\", null, \"electric_charge\", true, false, 1],\r\n [\"cubic ångström\", \"ang3\", [\"ang^3\"], \"volume\", false, true, 1e-30],\r\n [\"cubic foot\", \"ft3\", [\"ft^3\"], \"volume\", false, true, 0.028316846592],\r\n [\"cubic inch\", \"in3\", [\"in^3\"], \"volume\", false, true, 0.000016387064],\r\n [\"cubic light-year\", \"ly3\", [\"ly^3\"], \"volume\", false, true, 8.46786664623715e-47],\r\n [\"cubic metre\", \"m?\", null, \"volume\", true, true, 1],\r\n [\"cubic mile\", \"mi3\", [\"mi^3\"], \"volume\", false, true, 4168181825.44058],\r\n [\"cubic nautical mile\", \"Nmi3\", [\"Nmi^3\"], \"volume\", false, true, 6352182208],\r\n [\"cubic Pica\", \"Pica3\", [\"Picapt3\", \"Pica^3\", \"Picapt^3\"], \"volume\", false, true, 7.58660370370369e-8],\r\n [\"cubic yard\", \"yd3\", [\"yd^3\"], \"volume\", false, true, 0.764554857984],\r\n [\"cup\", \"cup\", null, \"volume\", false, true, 0.0002365882365],\r\n [\"dalton\", \"Da\", [\"u\"], \"mass\", false, false, 1.66053886282828e-27],\r\n [\"day\", \"d\", [\"day\"], \"time\", false, true, 86400],\r\n [\"degree\", \"°\", null, \"angle\", false, false, 0.0174532925199433],\r\n [\"degrees Rankine\", \"Rank\", null, \"temperature\", false, true, 0.555555555555556],\r\n [\"dyne\", \"dyn\", [\"dy\"], \"force\", false, true, 0.00001],\r\n [\"electronvolt\", \"eV\", [\"ev\"], \"energy\", false, true, 1.60217656514141],\r\n [\"ell\", \"ell\", null, \"length\", false, true, 1.143],\r\n [\"erg\", \"erg\", [\"e\"], \"energy\", false, true, 1e-7],\r\n [\"farad\", \"F\", null, \"electric_capacitance\", true, false, 1],\r\n [\"fluid ounce\", \"oz\", null, \"volume\", false, true, 0.0000295735295625],\r\n [\"foot\", \"ft\", null, \"length\", false, true, 0.3048],\r\n [\"foot-pound\", \"flb\", null, \"energy\", false, true, 1.3558179483314],\r\n [\"gal\", \"Gal\", null, \"acceleration\", false, false, 0.01],\r\n [\"gallon\", \"gal\", null, \"volume\", false, true, 0.003785411784],\r\n [\"gauss\", \"G\", [\"ga\"], \"magnetic_flux_density\", false, true, 1],\r\n [\"grain\", \"grain\", null, \"mass\", false, true, 0.0000647989],\r\n [\"gram\", \"g\", null, \"mass\", false, true, 0.001],\r\n [\"gray\", \"Gy\", null, \"absorbed_dose\", true, false, 1],\r\n [\"gross registered ton\", \"GRT\", [\"regton\"], \"volume\", false, true, 2.8316846592],\r\n [\"hectare\", \"ha\", null, \"area\", false, true, 10000],\r\n [\"henry\", \"H\", null, \"inductance\", true, false, 1],\r\n [\"hertz\", \"Hz\", null, \"frequency\", true, false, 1],\r\n [\"horsepower\", \"HP\", [\"h\"], \"power\", false, true, 745.69987158227],\r\n [\"horsepower-hour\", \"HPh\", [\"hh\", \"hph\"], \"energy\", false, true, 2684519.538],\r\n [\"hour\", \"h\", [\"hr\"], \"time\", false, true, 3600],\r\n [\"imperial gallon (U.K.)\", \"uk_gal\", null, \"volume\", false, true, 0.00454609],\r\n [\"imperial hundredweight\", \"lcwt\", [\"uk_cwt\", \"hweight\"], \"mass\", false, true, 50.802345],\r\n [\"imperial quart (U.K)\", \"uk_qt\", null, \"volume\", false, true, 0.0011365225],\r\n [\"imperial ton\", \"brton\", [\"uk_ton\", \"LTON\"], \"mass\", false, true, 1016.046909],\r\n [\"inch\", \"in\", null, \"length\", false, true, 0.0254],\r\n [\"international acre\", \"uk_acre\", null, \"area\", false, true, 4046.8564224],\r\n [\"IT calorie\", \"cal\", null, \"energy\", false, true, 4.1868],\r\n [\"joule\", \"J\", null, \"energy\", true, true, 1],\r\n [\"katal\", \"kat\", null, \"catalytic_activity\", true, false, 1],\r\n [\"kelvin\", \"K\", [\"kel\"], \"temperature\", true, true, 1],\r\n [\"kilogram\", \"kg\", null, \"mass\", true, true, 1],\r\n [\"knot\", \"kn\", null, \"speed\", false, true, 0.514444444444444],\r\n [\"light-year\", \"ly\", null, \"length\", false, true, 9460730472580800],\r\n [\"litre\", \"L\", [\"l\", \"lt\"], \"volume\", false, true, 0.001],\r\n [\"lumen\", \"lm\", null, \"luminous_flux\", true, false, 1],\r\n [\"lux\", \"lx\", null, \"illuminance\", true, false, 1],\r\n [\"maxwell\", \"Mx\", null, \"magnetic_flux\", false, false, 1e-18],\r\n [\"measurement ton\", \"MTON\", null, \"volume\", false, true, 1.13267386368],\r\n [\"meter per hour\", \"m/h\", [\"m/hr\"], \"speed\", false, true, 0.00027777777777778],\r\n [\"meter per second\", \"m/s\", [\"m/sec\"], \"speed\", true, true, 1],\r\n [\"meter per second squared\", \"m?s??\", null, \"acceleration\", true, false, 1],\r\n [\"parsec\", \"pc\", [\"parsec\"], \"length\", false, true, 30856775814671900],\r\n [\"meter squared per second\", \"m?/s\", null, \"kinematic_viscosity\", true, false, 1],\r\n [\"metre\", \"m\", null, \"length\", true, true, 1],\r\n [\"miles per hour\", \"mph\", null, \"speed\", false, true, 0.44704],\r\n [\"millimetre of mercury\", \"mmHg\", null, \"pressure\", false, false, 133.322],\r\n [\"minute\", \"?\", null, \"angle\", false, false, 0.000290888208665722],\r\n [\"minute\", \"min\", [\"mn\"], \"time\", false, true, 60],\r\n [\"modern teaspoon\", \"tspm\", null, \"volume\", false, true, 0.000005],\r\n [\"mole\", \"mol\", null, \"amount_of_substance\", true, false, 1],\r\n [\"morgen\", \"Morgen\", null, \"area\", false, true, 2500],\r\n [\"n.u. of action\", \"?\", null, \"action\", false, false, 1.05457168181818e-34],\r\n [\"n.u. of mass\", \"m?\", null, \"mass\", false, false, 9.10938261616162e-31],\r\n [\"n.u. of speed\", \"c?\", null, \"speed\", false, false, 299792458],\r\n [\"n.u. of time\", \"?/(me?c??)\", null, \"time\", false, false, 1.28808866778687e-21],\r\n [\"nautical mile\", \"M\", [\"Nmi\"], \"length\", false, true, 1852],\r\n [\"newton\", \"N\", null, \"force\", true, true, 1],\r\n [\"œrsted\", \"Oe \", null, \"magnetic_field_intensity\", false, false, 79.5774715459477],\r\n [\"ohm\", \"Ω\", null, \"electric_resistance\", true, false, 1],\r\n [\"ounce mass\", \"ozm\", null, \"mass\", false, true, 0.028349523125],\r\n [\"pascal\", \"Pa\", null, \"pressure\", true, false, 1],\r\n [\"pascal second\", \"Pa?s\", null, \"dynamic_viscosity\", true, false, 1],\r\n [\"pferdestärke\", \"PS\", null, \"power\", false, true, 735.49875],\r\n [\"phot\", \"ph\", null, \"illuminance\", false, false, 0.0001],\r\n [\"pica (1/6 inch)\", \"pica\", null, \"length\", false, true, 0.00035277777777778],\r\n [\"pica (1/72 inch)\", \"Pica\", [\"Picapt\"], \"length\", false, true, 0.00423333333333333],\r\n [\"poise\", \"P\", null, \"dynamic_viscosity\", false, false, 0.1],\r\n [\"pond\", \"pond\", null, \"force\", false, true, 0.00980665],\r\n [\"pound force\", \"lbf\", null, \"force\", false, true, 4.4482216152605],\r\n [\"pound mass\", \"lbm\", null, \"mass\", false, true, 0.45359237],\r\n [\"quart\", \"qt\", null, \"volume\", false, true, 0.000946352946],\r\n [\"radian\", \"rad\", null, \"angle\", true, false, 1],\r\n [\"second\", \"?\", null, \"angle\", false, false, 0.00000484813681109536],\r\n [\"second\", \"s\", [\"sec\"], \"time\", true, true, 1],\r\n [\"short hundredweight\", \"cwt\", [\"shweight\"], \"mass\", false, true, 45.359237],\r\n [\"siemens\", \"S\", null, \"electrical_conductance\", true, false, 1],\r\n [\"sievert\", \"Sv\", null, \"equivalent_dose\", true, false, 1],\r\n [\"slug\", \"sg\", null, \"mass\", false, true, 14.59390294],\r\n [\"square ångström\", \"ang2\", [\"ang^2\"], \"area\", false, true, 1e-20],\r\n [\"square foot\", \"ft2\", [\"ft^2\"], \"area\", false, true, 0.09290304],\r\n [\"square inch\", \"in2\", [\"in^2\"], \"area\", false, true, 0.00064516],\r\n [\"square light-year\", \"ly2\", [\"ly^2\"], \"area\", false, true, 8.95054210748189e+31],\r\n [\"square meter\", \"m?\", null, \"area\", true, true, 1],\r\n [\"square mile\", \"mi2\", [\"mi^2\"], \"area\", false, true, 2589988.110336],\r\n [\"square nautical mile\", \"Nmi2\", [\"Nmi^2\"], \"area\", false, true, 3429904],\r\n [\"square Pica\", \"Pica2\", [\"Picapt2\", \"Pica^2\", \"Picapt^2\"], \"area\", false, true, 0.00001792111111111],\r\n [\"square yard\", \"yd2\", [\"yd^2\"], \"area\", false, true, 0.83612736],\r\n [\"statute mile\", \"mi\", null, \"length\", false, true, 1609.344],\r\n [\"steradian\", \"sr\", null, \"solid_angle\", true, false, 1],\r\n [\"stilb\", \"sb\", null, \"luminance\", false, false, 0.0001],\r\n [\"stokes\", \"St\", null, \"kinematic_viscosity\", false, false, 0.0001],\r\n [\"stone\", \"stone\", null, \"mass\", false, true, 6.35029318],\r\n [\"tablespoon\", \"tbs\", null, \"volume\", false, true, 0.0000147868],\r\n [\"teaspoon\", \"tsp\", null, \"volume\", false, true, 0.00000492892],\r\n [\"tesla\", \"T\", null, \"magnetic_flux_density\", true, true, 1],\r\n [\"thermodynamic calorie\", \"c\", null, \"energy\", false, true, 4.184],\r\n [\"ton\", \"ton\", null, \"mass\", false, true, 907.18474],\r\n [\"tonne\", \"t\", null, \"mass\", false, false, 1000],\r\n [\"U.K. pint\", \"uk_pt\", null, \"volume\", false, true, 0.00056826125],\r\n [\"U.S. bushel\", \"bushel\", null, \"volume\", false, true, 0.03523907],\r\n [\"U.S. oil barrel\", \"barrel\", null, \"volume\", false, true, 0.158987295],\r\n [\"U.S. pint\", \"pt\", [\"us_pt\"], \"volume\", false, true, 0.000473176473],\r\n [\"U.S. survey mile\", \"survey_mi\", null, \"length\", false, true, 1609.347219],\r\n [\"U.S. survey/statute acre\", \"us_acre\", null, \"area\", false, true, 4046.87261],\r\n [\"volt\", \"V\", null, \"voltage\", true, false, 1],\r\n [\"watt\", \"W\", null, \"power\", true, true, 1],\r\n [\"watt-hour\", \"Wh\", [\"wh\"], \"energy\", false, true, 3600],\r\n [\"weber\", \"Wb\", null, \"magnetic_flux\", true, false, 1],\r\n [\"yard\", \"yd\", null, \"length\", false, true, 0.9144],\r\n [\"year\", \"yr\", null, \"time\", false, true, 31557600]\r\n ];\r\n\r\n // Binary prefixes\r\n // [Name, Prefix power of 2 value, Previx value, Abbreviation, Derived\r\n // from]\r\n var binary_prefixes = {\r\n Yi: [\"yobi\", 80, 1208925819614629174706176, \"Yi\", \"yotta\"],\r\n Zi: [\"zebi\", 70, 1180591620717411303424, \"Zi\", \"zetta\"],\r\n Ei: [\"exbi\", 60, 1152921504606846976, \"Ei\", \"exa\"],\r\n Pi: [\"pebi\", 50, 1125899906842624, \"Pi\", \"peta\"],\r\n Ti: [\"tebi\", 40, 1099511627776, \"Ti\", \"tera\"],\r\n Gi: [\"gibi\", 30, 1073741824, \"Gi\", \"giga\"],\r\n Mi: [\"mebi\", 20, 1048576, \"Mi\", \"mega\"],\r\n ki: [\"kibi\", 10, 1024, \"ki\", \"kilo\"]\r\n };\r\n\r\n // Unit prefixes\r\n // [Name, Multiplier, Abbreviation]\r\n var unit_prefixes = {\r\n Y: [\"yotta\", 1e+24, \"Y\"],\r\n Z: [\"zetta\", 1e+21, \"Z\"],\r\n E: [\"exa\", 1e+18, \"E\"],\r\n P: [\"peta\", 1e+15, \"P\"],\r\n T: [\"tera\", 1e+12, \"T\"],\r\n G: [\"giga\", 1e+09, \"G\"],\r\n M: [\"mega\", 1e+06, \"M\"],\r\n k: [\"kilo\", 1e+03, \"k\"],\r\n h: [\"hecto\", 1e+02, \"h\"],\r\n e: [\"dekao\", 1e+01, \"e\"],\r\n d: [\"deci\", 1e-01, \"d\"],\r\n c: [\"centi\", 1e-02, \"c\"],\r\n m: [\"milli\", 1e-03, \"m\"],\r\n u: [\"micro\", 1e-06, \"u\"],\r\n n: [\"nano\", 1e-09, \"n\"],\r\n p: [\"pico\", 1e-12, \"p\"],\r\n f: [\"femto\", 1e-15, \"f\"],\r\n a: [\"atto\", 1e-18, \"a\"],\r\n z: [\"zepto\", 1e-21, \"z\"],\r\n y: [\"yocto\", 1e-24, \"y\"]\r\n };\r\n\r\n // Initialize units and multipliers\r\n var from = null;\r\n var to = null;\r\n var base_from_unit = from_unit;\r\n var base_to_unit = to_unit;\r\n var from_multiplier = 1;\r\n var to_multiplier = 1;\r\n var alt;\r\n\r\n // Lookup from and to units\r\n for (var i = 0; i < units.length; i++) {\r\n alt = (units[i][2] === null) ? [] : units[i][2];\r\n if (units[i][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\r\n from = units[i];\r\n }\r\n if (units[i][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\r\n to = units[i];\r\n }\r\n }\r\n\r\n // Lookup from prefix\r\n if (from === null) {\r\n var from_binary_prefix = binary_prefixes[from_unit.substring(0, 2)];\r\n var from_unit_prefix = unit_prefixes[from_unit.substring(0, 1)];\r\n\r\n // Handle dekao unit prefix (only unit prefix with two characters)\r\n if (from_unit.substring(0, 2) === 'da') {\r\n from_unit_prefix = [\"dekao\", 1e+01, \"da\"];\r\n }\r\n\r\n // Handle binary prefixes first (so that 'Yi' is processed before\r\n // 'Y')\r\n if (from_binary_prefix) {\r\n from_multiplier = from_binary_prefix[2];\r\n base_from_unit = from_unit.substring(2);\r\n } else if (from_unit_prefix) {\r\n from_multiplier = from_unit_prefix[1];\r\n base_from_unit = from_unit.substring(from_unit_prefix[2].length);\r\n }\r\n\r\n // Lookup from unit\r\n for (var j = 0; j < units.length; j++) {\r\n alt = (units[j][2] === null) ? [] : units[j][2];\r\n if (units[j][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\r\n from = units[j];\r\n }\r\n }\r\n }\r\n\r\n // Lookup to prefix\r\n if (to === null) {\r\n var to_binary_prefix = binary_prefixes[to_unit.substring(0, 2)];\r\n var to_unit_prefix = unit_prefixes[to_unit.substring(0, 1)];\r\n\r\n // Handle dekao unit prefix (only unit prefix with two characters)\r\n if (to_unit.substring(0, 2) === 'da') {\r\n to_unit_prefix = [\"dekao\", 1e+01, \"da\"];\r\n }\r\n\r\n // Handle binary prefixes first (so that 'Yi' is processed before\r\n // 'Y')\r\n if (to_binary_prefix) {\r\n to_multiplier = to_binary_prefix[2];\r\n base_to_unit = to_unit.substring(2);\r\n } else if (to_unit_prefix) {\r\n to_multiplier = to_unit_prefix[1];\r\n base_to_unit = to_unit.substring(to_unit_prefix[2].length);\r\n }\r\n\r\n // Lookup to unit\r\n for (var k = 0; k < units.length; k++) {\r\n alt = (units[k][2] === null) ? [] : units[k][2];\r\n if (units[k][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\r\n to = units[k];\r\n }\r\n }\r\n }\r\n\r\n // Return error if a unit does not exist\r\n if (from === null || to === null) {\r\n return error.na;\r\n }\r\n\r\n // Return error if units represent different quantities\r\n if (from[3] !== to[3]) {\r\n return error.na;\r\n }\r\n\r\n // Return converted number\r\n return number * from[6] * from_multiplier / (to[6] * to_multiplier);\r\n };\r\n\r\n exports.DEC2BIN = function(number, places) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n\r\n // Return error if number is not decimal, is lower than -512, or is\r\n // greater than 511\r\n if (!/^-?[0-9]{1,3}$/.test(number) || number < -512 || number > 511) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character binary number if number is\r\n // negative\r\n if (number < 0) {\r\n return '1' + REPT('0', 9 - (512 + number).toString(2).length) + (512 + number).toString(2);\r\n }\r\n\r\n // Convert decimal number to binary\r\n var result = parseInt(number, 10).toString(2);\r\n\r\n // Return binary number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (typeof places === 'undefined') {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.DEC2HEX = function(number, places) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n\r\n // Return error if number is not decimal, is lower than -549755813888,\r\n // or is greater than 549755813887\r\n if (!/^-?[0-9]{1,12}$/.test(number) || number < -549755813888 || number > 549755813887) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character hexadecimal number if number\r\n // is negative\r\n if (number < 0) {\r\n return (1099511627776 + number).toString(16);\r\n }\r\n\r\n // Convert decimal number to hexadecimal\r\n var result = parseInt(number, 10).toString(16);\r\n\r\n // Return hexadecimal number using the minimum number of characters\r\n // necessary if places is undefined\r\n if (typeof places === 'undefined') {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.DEC2OCT = function(number, places) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n\r\n // Return error if number is not decimal, is lower than -549755813888,\r\n // or is greater than 549755813887\r\n if (!/^-?[0-9]{1,9}$/.test(number) || number < -536870912 || number > 536870911) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character octal number if number is\r\n // negative\r\n if (number < 0) {\r\n return (1073741824 + number).toString(8);\r\n }\r\n\r\n // Convert decimal number to octal\r\n var result = parseInt(number, 10).toString(8);\r\n\r\n // Return octal number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (typeof places === 'undefined') {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.DELTA = function(number1, number2) {\r\n // Set number2 to zero if undefined\r\n number2 = (number2 === undefined) ? 0 : number2;\r\n number1 = utils.parseNumber(number1);\r\n number2 = utils.parseNumber(number2);\r\n if (utils.anyIsError(number1, number2)) {\r\n return error.value;\r\n }\r\n\r\n // Return delta\r\n return (number1 === number2) ? 1 : 0;\r\n };\r\n\r\n exports.ERF = function(lower_bound, upper_bound) {\r\n };\r\n\r\n exports.ERF.PRECISE = function() {\r\n };\r\n\r\n exports.ERFC = function(x) {\r\n };\r\n\r\n exports.ERFC.PRECISE = function() {\r\n };\r\n\r\n exports.GESTEP = function(number, step) {\r\n step = step || 0;\r\n number = utils.parseNumber(number);\r\n if (utils.anyIsError(step, number)) {\r\n return number;\r\n }\r\n\r\n // Return delta\r\n return (number >= step) ? 1 : 0;\r\n };\r\n\r\n exports.HEX2BIN = function(number, places) {\r\n // Return error if number is not hexadecimal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Check if number is negative\r\n var negative = (number.length === 10 && number.substring(0, 1).toLowerCase() === 'f') ? true : false;\r\n\r\n // Convert hexadecimal number to decimal\r\n var decimal = (negative) ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);\r\n\r\n // Return error if number is lower than -512 or greater than 511\r\n if (decimal < -512 || decimal > 511) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character binary number if number is\r\n // negative\r\n if (negative) {\r\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2);\r\n }\r\n\r\n // Convert decimal number to binary\r\n var result = decimal.toString(2);\r\n\r\n // Return binary number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (places === undefined) {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.HEX2DEC = function(number) {\r\n // Return error if number is not hexadecimal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Convert hexadecimal number to decimal\r\n var decimal = parseInt(number, 16);\r\n\r\n // Return decimal number\r\n return (decimal >= 549755813888) ? decimal - 1099511627776 : decimal;\r\n };\r\n\r\n exports.HEX2OCT = function(number, places) {\r\n // Return error if number is not hexadecimal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Convert hexadecimal number to decimal\r\n var decimal = parseInt(number, 16);\r\n\r\n // Return error if number is positive and greater than 0x1fffffff\r\n // (536870911)\r\n if (decimal > 536870911 && decimal < 1098974756864) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character octal number if number is\r\n // negative\r\n if (decimal >= 1098974756864) {\r\n return (decimal - 1098437885952).toString(8);\r\n }\r\n\r\n // Convert decimal number to octal\r\n var result = decimal.toString(8);\r\n\r\n // Return octal number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (places === undefined) {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.IMABS = function(inumber) {\r\n // Lookup real and imaginary coefficients using exports.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n // Return error if either coefficient is not a number\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return absolute value of complex number\r\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n };\r\n\r\n exports.IMAGINARY = function(inumber) {\r\n if (inumber === undefined || inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Return 0 if inumber is equal to 0\r\n if (inumber === 0 || inumber === '0') {\r\n return 0;\r\n }\r\n\r\n // Handle special cases\r\n if (['i', 'j'].indexOf(inumber) >= 0) {\r\n return 1;\r\n }\r\n\r\n // Normalize imaginary coefficient\r\n inumber = inumber.replace('+i', '+1i').replace('-i', '-1i').replace('+j', '+1j').replace('-j', '-1j');\r\n\r\n // Lookup sign\r\n var plus = inumber.indexOf('+');\r\n var minus = inumber.indexOf('-');\r\n if (plus === 0) {\r\n plus = inumber.indexOf('+', 1);\r\n }\r\n\r\n if (minus === 0) {\r\n minus = inumber.indexOf('-', 1);\r\n }\r\n\r\n // Lookup imaginary unit\r\n var last = inumber.substring(inumber.length - 1, inumber.length);\r\n var unit = (last === 'i' || last === 'j');\r\n\r\n if (plus >= 0 || minus >= 0) {\r\n // Return error if imaginary unit is neither i nor j\r\n if (!unit) {\r\n return error.num;\r\n }\r\n\r\n // Return imaginary coefficient of complex number\r\n if (plus >= 0) {\r\n return (isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))) ?\r\n error.num :\r\n Number(inumber.substring(plus + 1, inumber.length - 1));\r\n } else {\r\n return (isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))) ?\r\n error.num :\r\n -Number(inumber.substring(minus + 1, inumber.length - 1));\r\n }\r\n } else {\r\n if (unit) {\r\n return (isNaN(inumber.substring(0, inumber.length - 1))) ? error.num : inumber.substring(0, inumber.length - 1);\r\n } else {\r\n return (isNaN(inumber)) ? error.num : 0;\r\n }\r\n }\r\n };\r\n\r\n exports.IMARGUMENT = function(inumber) {\r\n // Lookup real and imaginary coefficients using exports.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n // Return error if either coefficient is not a number\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if inumber is equal to zero\r\n if (x === 0 && y === 0) {\r\n return error.div0;\r\n }\r\n\r\n // Return PI/2 if x is equal to zero and y is positive\r\n if (x === 0 && y > 0) {\r\n return Math.PI / 2;\r\n }\r\n\r\n // Return -PI/2 if x is equal to zero and y is negative\r\n if (x === 0 && y < 0) {\r\n return -Math.PI / 2;\r\n }\r\n\r\n // Return zero if x is negative and y is equal to zero\r\n if (y === 0 && x > 0) {\r\n return 0;\r\n }\r\n\r\n // Return zero if x is negative and y is equal to zero\r\n if (y === 0 && x < 0) {\r\n return -Math.PI;\r\n }\r\n\r\n // Return argument of complex number\r\n if (x > 0) {\r\n return Math.atan(y / x);\r\n } else if (x < 0 && y >= 0) {\r\n return Math.atan(y / x) + Math.PI;\r\n } else {\r\n return Math.atan(y / x) - Math.PI;\r\n }\r\n };\r\n\r\n exports.IMCONJUGATE = function(inumber) {\r\n // Lookup real and imaginary coefficients using exports.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return conjugate of complex number\r\n return (y !== 0) ? exports.COMPLEX(x, -y, unit) : inumber;\r\n };\r\n\r\n exports.IMCOS = function(inumber) {\r\n // Lookup real and imaginary coefficients using exports.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return cosine of complex number\r\n return exports.COMPLEX(Math.cos(x) * (Math.exp(y) + Math.exp(-y)) / 2, -Math.sin(x) * (Math.exp(y) - Math.exp(-y)) / 2, unit);\r\n };\r\n\r\n exports.IMCOSH = function(inumber) {\r\n // Lookup real and imaginary coefficients using exports.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return hyperbolic cosine of complex number\r\n return exports.COMPLEX(Math.cos(y) * (Math.exp(x) + Math.exp(-x)) / 2, Math.sin(y) * (Math.exp(x) - Math.exp(-x)) / 2, unit);\r\n };\r\n\r\n exports.IMCOT = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return cotangent of complex number\r\n return exports.IMDIV(exports.IMCOS(inumber), exports.IMSIN(inumber));\r\n };\r\n\r\n exports.IMDIV = function(inumber1, inumber2) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var a = exports.IMREAL(inumber1);\r\n var b = exports.IMAGINARY(inumber1);\r\n var c = exports.IMREAL(inumber2);\r\n var d = exports.IMAGINARY(inumber2);\r\n\r\n if (utils.anyIsError(a, b, c, d)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit1 = inumber1.substring(inumber1.length - 1);\r\n var unit2 = inumber2.substring(inumber2.length - 1);\r\n var unit = 'i';\r\n if (unit1 === 'j') {\r\n unit = 'j';\r\n } else if (unit2 === 'j') {\r\n unit = 'j';\r\n }\r\n\r\n // Return error if inumber2 is null\r\n if (c === 0 && d === 0) {\r\n return error.num;\r\n }\r\n\r\n // Return exponential of complex number\r\n var den = c * c + d * d;\r\n return exports.COMPLEX((a * c + b * d) / den, (b * c - a * d) / den, unit);\r\n };\r\n\r\n exports.IMEXP = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return exponential of complex number\r\n var e = Math.exp(x);\r\n return exports.COMPLEX(e * Math.cos(y), e * Math.sin(y), unit);\r\n };\r\n\r\n exports.IMLN = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return exponential of complex number\r\n return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)), Math.atan(y / x), unit);\r\n };\r\n\r\n exports.IMLOG10 = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return exponential of complex number\r\n return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(10), Math.atan(y / x) / Math.log(10), unit);\r\n };\r\n\r\n exports.IMLOG2 = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return exponential of complex number\r\n return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(2), Math.atan(y / x) / Math.log(2), unit);\r\n };\r\n\r\n exports.IMPOWER = function(inumber, number) {\r\n number = utils.parseNumber(number);\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n if (utils.anyIsError(number, x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Calculate power of modulus\r\n var p = Math.pow(exports.IMABS(inumber), number);\r\n\r\n // Calculate argument\r\n var t = exports.IMARGUMENT(inumber);\r\n\r\n // Return exponential of complex number\r\n return exports.COMPLEX(p * Math.cos(number * t), p * Math.sin(number * t), unit);\r\n };\r\n\r\n exports.IMPRODUCT = function() {\r\n // Initialize result\r\n var result = arguments[0];\r\n\r\n // Loop on all numbers\r\n for (var i = 1; i < arguments.length; i++) {\r\n // Lookup coefficients of two complex numbers\r\n var a = exports.IMREAL(result);\r\n var b = exports.IMAGINARY(result);\r\n var c = exports.IMREAL(arguments[i]);\r\n var d = exports.IMAGINARY(arguments[i]);\r\n\r\n if (utils.anyIsError(a, b, c, d)) {\r\n return error.value;\r\n }\r\n\r\n // Complute product of two complex numbers\r\n result = exports.COMPLEX(a * c - b * d, a * d + b * c);\r\n }\r\n\r\n // Return product of complex numbers\r\n return result;\r\n };\r\n\r\n exports.IMREAL = function(inumber) {\r\n if (inumber === undefined || inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Return 0 if inumber is equal to 0\r\n if (inumber === 0 || inumber === '0') {\r\n return 0;\r\n }\r\n\r\n // Handle special cases\r\n if (['i', '+i', '1i', '+1i', '-i', '-1i', 'j', '+j', '1j', '+1j', '-j', '-1j'].indexOf(inumber) >= 0) {\r\n return 0;\r\n }\r\n\r\n // Lookup sign\r\n var plus = inumber.indexOf('+');\r\n var minus = inumber.indexOf('-');\r\n if (plus === 0) {\r\n plus = inumber.indexOf('+', 1);\r\n }\r\n if (minus === 0) {\r\n minus = inumber.indexOf('-', 1);\r\n }\r\n\r\n // Lookup imaginary unit\r\n var last = inumber.substring(inumber.length - 1, inumber.length);\r\n var unit = (last === 'i' || last === 'j');\r\n\r\n if (plus >= 0 || minus >= 0) {\r\n // Return error if imaginary unit is neither i nor j\r\n if (!unit) {\r\n return error.num;\r\n }\r\n\r\n // Return real coefficient of complex number\r\n if (plus >= 0) {\r\n return (isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))) ?\r\n error.num :\r\n Number(inumber.substring(0, plus));\r\n } else {\r\n return (isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))) ?\r\n error.num :\r\n Number(inumber.substring(0, minus));\r\n }\r\n } else {\r\n if (unit) {\r\n return (isNaN(inumber.substring(0, inumber.length - 1))) ? error.num : 0;\r\n } else {\r\n return (isNaN(inumber)) ? error.num : inumber;\r\n }\r\n }\r\n };\r\n\r\n exports.IMSEC = function(inumber) {\r\n // Return error if inumber is a logical value\r\n if (inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return secant of complex number\r\n return exports.IMDIV('1', exports.IMCOS(inumber));\r\n };\r\n\r\n exports.IMSECH = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return hyperbolic secant of complex number\r\n return exports.IMDIV('1', exports.IMCOSH(inumber));\r\n };\r\n\r\n exports.IMSIN = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return sine of complex number\r\n return exports.COMPLEX(Math.sin(x) * (Math.exp(y) + Math.exp(-y)) / 2, Math.cos(x) * (Math.exp(y) - Math.exp(-y)) / 2, unit);\r\n };\r\n\r\n exports.IMSINH = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Return hyperbolic sine of complex number\r\n return exports.COMPLEX(Math.cos(y) * (Math.exp(x) - Math.exp(-x)) / 2, Math.sin(y) * (Math.exp(x) + Math.exp(-x)) / 2, unit);\r\n };\r\n\r\n exports.IMSQRT = function(inumber) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit = inumber.substring(inumber.length - 1);\r\n unit = (unit === 'i' || unit === 'j') ? unit : 'i';\r\n\r\n // Calculate power of modulus\r\n var s = Math.sqrt(exports.IMABS(inumber));\r\n\r\n // Calculate argument\r\n var t = exports.IMARGUMENT(inumber);\r\n\r\n // Return exponential of complex number\r\n return exports.COMPLEX(s * Math.cos(t / 2), s * Math.sin(t / 2), unit);\r\n };\r\n\r\n exports.IMCSC = function (inumber) {\r\n // Return error if inumber is a logical value\r\n if (inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n // Return error if either coefficient is not a number\r\n if (utils.anyIsError(x, y)) {\r\n return error.num;\r\n }\r\n\r\n // Return cosecant of complex number\r\n return exports.IMDIV('1', exports.IMSIN(inumber));\r\n };\r\n\r\n exports.IMCSCH = function (inumber) {\r\n // Return error if inumber is a logical value\r\n if (inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n // Return error if either coefficient is not a number\r\n if (utils.anyIsError(x, y)) {\r\n return error.num;\r\n }\r\n\r\n // Return hyperbolic cosecant of complex number\r\n return exports.IMDIV('1', exports.IMSINH(inumber));\r\n };\r\n\r\n exports.IMSUB = function(inumber1, inumber2) {\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var a = this.IMREAL(inumber1);\r\n var b = this.IMAGINARY(inumber1);\r\n var c = this.IMREAL(inumber2);\r\n var d = this.IMAGINARY(inumber2);\r\n\r\n if (utils.anyIsError(a, b, c, d)) {\r\n return error.value;\r\n }\r\n\r\n // Lookup imaginary unit\r\n var unit1 = inumber1.substring(inumber1.length - 1);\r\n var unit2 = inumber2.substring(inumber2.length - 1);\r\n var unit = 'i';\r\n if (unit1 === 'j') {\r\n unit = 'j';\r\n } else if (unit2 === 'j') {\r\n unit = 'j';\r\n }\r\n\r\n // Return _ of two complex numbers\r\n return this.COMPLEX(a - c, b - d, unit);\r\n };\r\n\r\n exports.IMSUM = function() {\r\n var args = utils.flatten(arguments);\r\n\r\n // Initialize result\r\n var result = args[0];\r\n\r\n // Loop on all numbers\r\n for (var i = 1; i < args.length; i++) {\r\n // Lookup coefficients of two complex numbers\r\n var a = this.IMREAL(result);\r\n var b = this.IMAGINARY(result);\r\n var c = this.IMREAL(args[i]);\r\n var d = this.IMAGINARY(args[i]);\r\n\r\n if (utils.anyIsError(a, b, c, d)) {\r\n return error.value;\r\n }\r\n\r\n // Complute product of two complex numbers\r\n result = this.COMPLEX(a + c, b + d);\r\n }\r\n\r\n // Return sum of complex numbers\r\n return result;\r\n };\r\n\r\n exports.IMTAN = function(inumber) {\r\n // Return error if inumber is a logical value\r\n if (inumber === true || inumber === false) {\r\n return error.value;\r\n }\r\n\r\n // Lookup real and imaginary coefficients using Formula.js\r\n // [http://formulajs.org]\r\n var x = exports.IMREAL(inumber);\r\n var y = exports.IMAGINARY(inumber);\r\n\r\n if (utils.anyIsError(x, y)) {\r\n return error.value;\r\n }\r\n\r\n // Return tangent of complex number\r\n return this.IMDIV(this.IMSIN(inumber), this.IMCOS(inumber));\r\n };\r\n\r\n exports.OCT2BIN = function(number, places) {\r\n // Return error if number is not hexadecimal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-7]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Check if number is negative\r\n var negative = (number.length === 10 && number.substring(0, 1) === '7') ? true : false;\r\n\r\n // Convert octal number to decimal\r\n var decimal = (negative) ? parseInt(number, 8) - 1073741824 : parseInt(number, 8);\r\n\r\n // Return error if number is lower than -512 or greater than 511\r\n if (decimal < -512 || decimal > 511) {\r\n return error.num;\r\n }\r\n\r\n // Ignore places and return a 10-character binary number if number is\r\n // negative\r\n if (negative) {\r\n return '1' + REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2);\r\n }\r\n\r\n // Convert decimal number to binary\r\n var result = decimal.toString(2);\r\n\r\n // Return binary number using the minimum number of characters necessary\r\n // if places is undefined\r\n if (typeof places === 'undefined') {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n exports.OCT2DEC = function(number) {\r\n // Return error if number is not octal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-7]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Convert octal number to decimal\r\n var decimal = parseInt(number, 8);\r\n\r\n // Return decimal number\r\n return (decimal >= 536870912) ? decimal - 1073741824 : decimal;\r\n };\r\n\r\n exports.OCT2HEX = function(number, places) {\r\n // Return error if number is not octal or contains more than ten\r\n // characters (10 digits)\r\n if (!/^[0-7]{1,10}$/.test(number)) {\r\n return error.num;\r\n }\r\n\r\n // Convert octal number to decimal\r\n var decimal = parseInt(number, 8);\r\n\r\n // Ignore places and return a 10-character octal number if number is\r\n // negative\r\n if (decimal >= 536870912) {\r\n return 'ff' + (decimal + 3221225472).toString(16);\r\n }\r\n\r\n // Convert decimal number to hexadecimal\r\n var result = decimal.toString(16);\r\n\r\n // Return hexadecimal number using the minimum number of characters\r\n // necessary if places is undefined\r\n if (places === undefined) {\r\n return result;\r\n } else {\r\n // Return error if places is nonnumeric\r\n if (isNaN(places)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if places is negative\r\n if (places < 0) {\r\n return error.num;\r\n }\r\n\r\n // Truncate places in case it is not an integer\r\n places = Math.floor(places);\r\n\r\n // Pad return value with leading 0s (zeros) if necessary (using\r\n // Underscore.string)\r\n return (places >= result.length) ? REPT('0', places - result.length) + result : error.num;\r\n }\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.financial = (function() {\r\n var exports = {};\r\n\r\n function validDate(d) {\r\n return d && d.getTime && !isNaN(d.getTime());\r\n }\r\n\r\n function ensureDate(d) {\r\n return (d instanceof Date)?d:new Date(d);\r\n }\r\n\r\n exports.ACCRINT = function(issue, first, settlement, rate, par, frequency, basis) {\r\n // Return error if either date is invalid\r\n issue = ensureDate(issue);\r\n first = ensureDate(first);\r\n settlement = ensureDate(settlement);\r\n if (!validDate(issue) || !validDate(first) || !validDate(settlement)) {\r\n return '#VALUE!';\r\n }\r\n\r\n // Return error if either rate or par are lower than or equal to zero\r\n if (rate <= 0 || par <= 0) {\r\n return '#NUM!';\r\n }\r\n\r\n // Return error if frequency is neither 1, 2, or 4\r\n if ([1, 2, 4].indexOf(frequency) === -1) {\r\n return '#NUM!';\r\n }\r\n\r\n // Return error if basis is neither 0, 1, 2, 3, or 4\r\n if ([0, 1, 2, 3, 4].indexOf(basis) === -1) {\r\n return '#NUM!';\r\n }\r\n\r\n // Return error if settlement is before or equal to issue\r\n if (settlement <= issue) {\r\n return '#NUM!';\r\n }\r\n\r\n // Set default values\r\n par = par || 0;\r\n basis = basis || 0;\r\n\r\n // Compute accrued interest\r\n return par * rate * YEARFRAC(issue, settlement, basis);\r\n };\r\n\r\n exports.ACCRINTM = null;\r\n\r\n exports.AMORDEGRC = null;\r\n\r\n exports.AMORLINC = null;\r\n\r\n exports.COUPDAYBS = null;\r\n\r\n exports.COUPDAYS = null;\r\n\r\n exports.COUPDAYSNC = null;\r\n\r\n exports.COUPNCD = null;\r\n\r\n exports.COUPNUM = null;\r\n\r\n exports.COUPPCD = null;\r\n\r\n exports.CUMIPMT = function(rate, periods, value, start, end, type) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n // Credits: Hannes Stiebitzhofer for the translations of function and\r\n // variable names\r\n // Requires exports.FV() and exports.PMT() from exports.js\r\n // [http://stoic.com/exports/]\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n value = utils.parseNumber(value);\r\n if (utils.anyIsError(rate, periods, value)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if either rate, periods, or value are lower than or\r\n // equal to zero\r\n if (rate <= 0 || periods <= 0 || value <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if start < 1, end < 1, or start > end\r\n if (start < 1 || end < 1 || start > end) {\r\n return error.num;\r\n }\r\n\r\n // Return error if type is neither 0 nor 1\r\n if (type !== 0 && type !== 1) {\r\n return error.num;\r\n }\r\n\r\n // Compute cumulative interest\r\n var payment = exports.PMT(rate, periods, value, 0, type);\r\n var interest = 0;\r\n\r\n if (start === 1) {\r\n if (type === 0) {\r\n interest = -value;\r\n start++;\r\n }\r\n }\r\n\r\n for (var i = start; i <= end; i++) {\r\n if (type === 1) {\r\n interest += exports.FV(rate, i - 2, payment, value, 1) - payment;\r\n } else {\r\n interest += exports.FV(rate, i - 1, payment, value, 0);\r\n }\r\n }\r\n interest *= rate;\r\n\r\n // Return cumulative interest\r\n return interest;\r\n };\r\n\r\n exports.CUMPRINC = function(rate, periods, value, start, end, type) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n // Credits: Hannes Stiebitzhofer for the translations of function and\r\n // variable names\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n value = utils.parseNumber(value);\r\n if (utils.anyIsError(rate, periods, value)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if either rate, periods, or value are lower than or\r\n // equal to zero\r\n if (rate <= 0 || periods <= 0 || value <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if start < 1, end < 1, or start > end\r\n if (start < 1 || end < 1 || start > end) {\r\n return error.num;\r\n }\r\n\r\n // Return error if type is neither 0 nor 1\r\n if (type !== 0 && type !== 1) {\r\n return error.num;\r\n }\r\n\r\n // Compute cumulative principal\r\n var payment = exports.PMT(rate, periods, value, 0, type);\r\n var principal = 0;\r\n if (start === 1) {\r\n if (type === 0) {\r\n principal = payment + value * rate;\r\n } else {\r\n principal = payment;\r\n }\r\n start++;\r\n }\r\n for (var i = start; i <= end; i++) {\r\n if (type > 0) {\r\n principal += payment - (exports.FV(rate, i - 2, payment, value, 1) - payment) * rate;\r\n } else {\r\n principal += payment - exports.FV(rate, i - 1, payment, value, 0) * rate;\r\n }\r\n }\r\n\r\n // Return cumulative principal\r\n return principal;\r\n };\r\n\r\n exports.DB = function(cost, salvage, life, period, month) {\r\n // Initialize month\r\n month = (month === undefined) ? 12 : month;\r\n\r\n cost = utils.parseNumber(cost);\r\n salvage = utils.parseNumber(salvage);\r\n life = utils.parseNumber(life);\r\n period = utils.parseNumber(period);\r\n month = utils.parseNumber(month);\r\n if (utils.anyIsError(cost, salvage, life, period, month)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if any of the parameters is negative\r\n if (cost < 0 || salvage < 0 || life < 0 || period < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if month is not an integer between 1 and 12\r\n if ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(month) === -1) {\r\n return error.num;\r\n }\r\n\r\n // Return error if period is greater than life\r\n if (period > life) {\r\n return error.num;\r\n }\r\n\r\n // Return 0 (zero) if salvage is greater than or equal to cost\r\n if (salvage >= cost) {\r\n return 0;\r\n }\r\n\r\n // Rate is rounded to three decimals places\r\n var rate = (1 - Math.pow(salvage / cost, 1 / life)).toFixed(3);\r\n\r\n // Compute initial depreciation\r\n var initial = cost * rate * month / 12;\r\n\r\n // Compute total depreciation\r\n var total = initial;\r\n var current = 0;\r\n var ceiling = (period === life) ? life - 1 : period;\r\n for (var i = 2; i <= ceiling; i++) {\r\n current = (cost - total) * rate;\r\n total += current;\r\n }\r\n\r\n // Depreciation for the first and last periods are special cases\r\n if (period === 1) {\r\n // First period\r\n return initial;\r\n } else if (period === life) {\r\n // Last period\r\n return (cost - total) * rate;\r\n } else {\r\n return current;\r\n }\r\n };\r\n\r\n exports.DDB = function(cost, salvage, life, period, factor) {\r\n // Initialize factor\r\n factor = (factor === undefined) ? 2 : factor;\r\n\r\n cost = utils.parseNumber(cost);\r\n salvage = utils.parseNumber(salvage);\r\n life = utils.parseNumber(life);\r\n period = utils.parseNumber(period);\r\n factor = utils.parseNumber(factor);\r\n if (utils.anyIsError(cost, salvage, life, period, factor)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if any of the parameters is negative or if factor is\r\n // null\r\n if (cost < 0 || salvage < 0 || life < 0 || period < 0 || factor <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if period is greater than life\r\n if (period > life) {\r\n return error.num;\r\n }\r\n\r\n // Return 0 (zero) if salvage is greater than or equal to cost\r\n if (salvage >= cost) {\r\n return 0;\r\n }\r\n\r\n // Compute depreciation\r\n var total = 0;\r\n var current = 0;\r\n for (var i = 1; i <= period; i++) {\r\n current = Math.min((cost - total) * (factor / life), (cost - salvage - total));\r\n total += current;\r\n }\r\n\r\n // Return depreciation\r\n return current;\r\n };\r\n\r\n exports.DISC = null;\r\n\r\n exports.DOLLARDE = function(dollar, fraction) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n dollar = utils.parseNumber(dollar);\r\n fraction = utils.parseNumber(fraction);\r\n if (utils.anyIsError(dollar, fraction)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if fraction is negative\r\n if (fraction < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if fraction is greater than or equal to 0 and less than\r\n // 1\r\n if (fraction >= 0 && fraction < 1) {\r\n return error.div0;\r\n }\r\n\r\n // Truncate fraction if it is not an integer\r\n fraction = parseInt(fraction, 10);\r\n\r\n // Compute integer part\r\n var result = parseInt(dollar, 10);\r\n\r\n // Add decimal part\r\n result += (dollar % 1) * Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN10)) / fraction;\r\n\r\n // Round result\r\n var power = Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN2) + 1);\r\n result = Math.round(result * power) / power;\r\n\r\n // Return converted dollar price\r\n return result;\r\n };\r\n\r\n exports.DOLLARFR = function(dollar, fraction) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n dollar = utils.parseNumber(dollar);\r\n fraction = utils.parseNumber(fraction);\r\n if (utils.anyIsError(dollar, fraction)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if fraction is negative\r\n if (fraction < 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if fraction is greater than or equal to 0 and less than\r\n // 1\r\n if (fraction >= 0 && fraction < 1) {\r\n return error.div0;\r\n }\r\n\r\n // Truncate fraction if it is not an integer\r\n fraction = parseInt(fraction, 10);\r\n\r\n // Compute integer part\r\n var result = parseInt(dollar, 10);\r\n\r\n // Add decimal part\r\n result += (dollar % 1) * Math.pow(10, -Math.ceil(Math.log(fraction) / Math.LN10)) * fraction;\r\n\r\n // Return converted dollar price\r\n return result;\r\n };\r\n\r\n exports.DURATION = null;\r\n\r\n exports.EFFECT = function(rate, periods) {\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n if (utils.anyIsError(rate, periods)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if rate <=0 or periods < 1\r\n if (rate <= 0 || periods < 1) {\r\n return error.num;\r\n }\r\n\r\n // Truncate periods if it is not an integer\r\n periods = parseInt(periods, 10);\r\n\r\n // Return effective annual interest rate\r\n return Math.pow(1 + rate / periods, periods) - 1;\r\n };\r\n\r\n exports.FV = function(rate, periods, payment, value, type) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n value = value || 0;\r\n type = type || 0;\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n payment = utils.parseNumber(payment);\r\n value = utils.parseNumber(value);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, periods, payment, value, type)) {\r\n return error.value;\r\n }\r\n\r\n // Return future value\r\n var result;\r\n if (rate === 0) {\r\n result = value + payment * periods;\r\n } else {\r\n var term = Math.pow(1 + rate, periods);\r\n if (type === 1) {\r\n result = value * term + payment * (1 + rate) * (term - 1) / rate;\r\n } else {\r\n result = value * term + payment * (term - 1) / rate;\r\n }\r\n }\r\n return -result;\r\n };\r\n\r\n exports.FVSCHEDULE = function(principal, schedule) {\r\n principal = utils.parseNumber(principal);\r\n schedule = utils.parseNumberArray(utils.flatten(schedule));\r\n if (utils.anyIsError(principal, schedule)) {\r\n return error.value;\r\n }\r\n\r\n var n = schedule.length;\r\n var future = principal;\r\n\r\n // Apply all interests in schedule\r\n for (var i = 0; i < n; i++) {\r\n // Apply scheduled interest\r\n future *= 1 + schedule[i];\r\n }\r\n\r\n // Return future value\r\n return future;\r\n };\r\n\r\n exports.INTRATE = null;\r\n\r\n exports.IPMT = function(rate, period, periods, present, future, type) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n future = future || 0;\r\n type = type || 0;\r\n\r\n rate = utils.parseNumber(rate);\r\n period = utils.parseNumber(period);\r\n periods = utils.parseNumber(periods);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, period, periods, present, future, type)) {\r\n return error.value;\r\n }\r\n\r\n // Compute payment\r\n var payment = exports.PMT(rate, periods, present, future, type);\r\n\r\n // Compute interest\r\n var interest;\r\n if (period === 1) {\r\n if (type === 1) {\r\n interest = 0;\r\n } else {\r\n interest = -present;\r\n }\r\n } else {\r\n if (type === 1) {\r\n interest = exports.FV(rate, period - 2, payment, present, 1) - payment;\r\n } else {\r\n interest = exports.FV(rate, period - 1, payment, present, 0);\r\n }\r\n }\r\n\r\n // Return interest\r\n return interest * rate;\r\n };\r\n\r\n exports.IRR = function(values, guess) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n guess = guess || 0;\r\n\r\n values = utils.parseNumberArray(utils.flatten(values));\r\n guess = utils.parseNumber(guess);\r\n if (utils.anyIsError(values, guess)) {\r\n return error.value;\r\n }\r\n\r\n // Calculates the resulting amount\r\n var irrResult = function(values, dates, rate) {\r\n var r = rate + 1;\r\n var result = values[0];\r\n for (var i = 1; i < values.length; i++) {\r\n result += values[i] / Math.pow(r, (dates[i] - dates[0]) / 365);\r\n }\r\n return result;\r\n };\r\n\r\n // Calculates the first derivation\r\n var irrResultDeriv = function(values, dates, rate) {\r\n var r = rate + 1;\r\n var result = 0;\r\n for (var i = 1; i < values.length; i++) {\r\n var frac = (dates[i] - dates[0]) / 365;\r\n result -= frac * values[i] / Math.pow(r, frac + 1);\r\n }\r\n return result;\r\n };\r\n\r\n // Initialize dates and check that values contains at least one positive\r\n // value and one negative value\r\n var dates = [];\r\n var positive = false;\r\n var negative = false;\r\n for (var i = 0; i < values.length; i++) {\r\n dates[i] = (i === 0) ? 0 : dates[i - 1] + 365;\r\n if (values[i] > 0) {\r\n positive = true;\r\n }\r\n if (values[i] < 0) {\r\n negative = true;\r\n }\r\n }\r\n\r\n // Return error if values does not contain at least one positive value\r\n // and one negative value\r\n if (!positive || !negative) {\r\n return error.num;\r\n }\r\n\r\n // Initialize guess and resultRate\r\n guess = (guess === undefined) ? 0.1 : guess;\r\n var resultRate = guess;\r\n\r\n // Set maximum epsilon for end of iteration\r\n var epsMax = 1e-10;\r\n\r\n // Implement Newton's method\r\n var newRate, epsRate, resultValue;\r\n var contLoop = true;\r\n do {\r\n resultValue = irrResult(values, dates, resultRate);\r\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\r\n epsRate = Math.abs(newRate - resultRate);\r\n resultRate = newRate;\r\n contLoop = (epsRate > epsMax) && (Math.abs(resultValue) > epsMax);\r\n } while (contLoop);\r\n\r\n // Return internal rate of return\r\n return resultRate;\r\n };\r\n\r\n exports.ISPMT = function(rate, period, periods, value) {\r\n rate = utils.parseNumber(rate);\r\n period = utils.parseNumber(period);\r\n periods = utils.parseNumber(periods);\r\n value = utils.parseNumber(value);\r\n if (utils.anyIsError(rate, period, periods, value)) {\r\n return error.value;\r\n }\r\n\r\n // Return interest\r\n return value * rate * (period / periods - 1);\r\n };\r\n\r\n exports.MDURATION = null;\r\n\r\n exports.MIRR = function(values, finance_rate, reinvest_rate) {\r\n values = utils.parseNumberArray(utils.flatten(values));\r\n finance_rate = utils.parseNumber(finance_rate);\r\n reinvest_rate = utils.parseNumber(reinvest_rate);\r\n if (utils.anyIsError(values, finance_rate, reinvest_rate)) {\r\n return error.value;\r\n }\r\n\r\n // Initialize number of values\r\n var n = values.length;\r\n\r\n // Lookup payments (negative values) and incomes (positive values)\r\n var payments = [];\r\n var incomes = [];\r\n for (var i = 0; i < n; i++) {\r\n if (values[i] < 0) {\r\n payments.push(values[i]);\r\n } else {\r\n incomes.push(values[i]);\r\n }\r\n }\r\n\r\n // Return modified internal rate of return\r\n var num = -exports.NPV(reinvest_rate, incomes) * Math.pow(1 + reinvest_rate, n - 1);\r\n var den = exports.NPV(finance_rate, payments) * (1 + finance_rate);\r\n return Math.pow(num / den, 1 / (n - 1)) - 1;\r\n };\r\n\r\n exports.NOMINAL = function(rate, periods) {\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n if (utils.anyIsError(rate, periods)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if rate <=0 or periods < 1\r\n if (rate <= 0 || periods < 1) {\r\n return error.num;\r\n }\r\n\r\n // Truncate periods if it is not an integer\r\n periods = parseInt(periods, 10);\r\n\r\n // Return nominal annual interest rate\r\n return (Math.pow(rate + 1, 1 / periods) - 1) * periods;\r\n };\r\n\r\n exports.NPER = function(rate, payment, present, future, type) {\r\n type = (type === undefined) ? 0 : type;\r\n future = (future === undefined) ? 0 : future;\r\n\r\n rate = utils.parseNumber(rate);\r\n payment = utils.parseNumber(payment);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, payment, present, future, type)) {\r\n return error.value;\r\n }\r\n\r\n // Return number of periods\r\n var num = payment * (1 + rate * type) - future * rate;\r\n var den = (present * rate + payment * (1 + rate * type));\r\n return Math.log(num / den) / Math.log(1 + rate);\r\n };\r\n\r\n exports.NPV = function() {\r\n var args = utils.parseNumberArray(utils.flatten(arguments));\r\n if (args instanceof Error) {\r\n return args;\r\n }\r\n\r\n // Lookup rate\r\n var rate = args[0];\r\n\r\n // Initialize net present value\r\n var value = 0;\r\n\r\n // Loop on all values\r\n for (var j = 1; j < args.length; j++) {\r\n value += args[j] / Math.pow(1 + rate, j);\r\n }\r\n\r\n // Return net present value\r\n return value;\r\n };\r\n\r\n exports.ODDFPRICE = null;\r\n\r\n exports.ODDFYIELD = null;\r\n\r\n exports.ODDLPRICE = null;\r\n\r\n exports.ODDLYIELD = null;\r\n\r\n exports.PDURATION = function(rate, present, future) {\r\n rate = utils.parseNumber(rate);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n if (utils.anyIsError(rate, present, future)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if rate <=0\r\n if (rate <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return number of periods\r\n return (Math.log(future) - Math.log(present)) / Math.log(1 + rate);\r\n };\r\n\r\n exports.PMT = function(rate, periods, present, future, type) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n future = future || 0;\r\n type = type || 0;\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, periods, present, future, type)) {\r\n return error.value;\r\n }\r\n\r\n // Return payment\r\n var result;\r\n if (rate === 0) {\r\n result = (present + future) / periods;\r\n } else {\r\n var term = Math.pow(1 + rate, periods);\r\n if (type === 1) {\r\n result = (future * rate / (term - 1) + present * rate / (1 - 1 / term)) / (1 + rate);\r\n } else {\r\n result = future * rate / (term - 1) + present * rate / (1 - 1 / term);\r\n }\r\n }\r\n return -result;\r\n };\r\n\r\n exports.PPMT = function(rate, period, periods, present, future, type) {\r\n future = future || 0;\r\n type = type || 0;\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, periods, present, future, type)) {\r\n return error.value;\r\n }\r\n\r\n return exports.PMT(rate, periods, present, future, type) - exports.IPMT(rate, period, periods, present, future, type);\r\n };\r\n\r\n exports.PRICE = null;\r\n\r\n exports.PRICEDISC = null;\r\n\r\n exports.PRICEMAT = null;\r\n\r\n exports.PV = function(rate, periods, payment, future, type) {\r\n future = future || 0;\r\n type = type || 0;\r\n\r\n rate = utils.parseNumber(rate);\r\n periods = utils.parseNumber(periods);\r\n payment = utils.parseNumber(payment);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n if (utils.anyIsError(rate, periods, payment, future, type)) {\r\n return error.value;\r\n }\r\n\r\n // Return present value\r\n if (rate === 0) {\r\n return -payment * periods - future;\r\n } else {\r\n return (((1 - Math.pow(1 + rate, periods)) / rate) * payment * (1 + rate * type) - future) / Math.pow(1 + rate, periods);\r\n }\r\n };\r\n\r\n exports.RATE = function(periods, payment, present, future, type, guess) {\r\n // Credits: rabugento\r\n\r\n guess = (guess === undefined) ? 0.01 : guess;\r\n future = (future === undefined) ? 0 : future;\r\n type = (type === undefined) ? 0 : type;\r\n\r\n periods = utils.parseNumber(periods);\r\n payment = utils.parseNumber(payment);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n type = utils.parseNumber(type);\r\n guess = utils.parseNumber(guess);\r\n if (utils.anyIsError(periods, payment, present, future, type, guess)) {\r\n return error.value;\r\n }\r\n\r\n // Set maximum epsilon for end of iteration\r\n var epsMax = 1e-6;\r\n\r\n // Set maximum number of iterations\r\n var iterMax = 100;\r\n var iter = 0;\r\n var close = false;\r\n var rate = guess;\r\n\r\n while (iter < iterMax && !close) {\r\n var t1 = Math.pow(rate + 1, periods);\r\n var t2 = Math.pow(rate + 1, periods - 1);\r\n\r\n var f1 = future + t1 * present + payment * (t1 - 1) * (rate * type + 1) / rate;\r\n var f2 = periods * t2 * present - payment * (t1 - 1) *(rate * type + 1) / Math.pow(rate,2);\r\n var f3 = periods * payment * t2 * (rate * type + 1) / rate + payment * (t1 - 1) * type / rate;\r\n\r\n var newRate = rate - f1 / (f2 + f3);\r\n\r\n if (Math.abs(newRate - rate) < epsMax) close = true;\r\n iter++\r\n rate = newRate;\r\n }\r\n\r\n if (!close) return Number.NaN + rate;\r\n return rate;\r\n };\r\n\r\n // TODO\r\n exports.RECEIVED = null;\r\n\r\n exports.RRI = function(periods, present, future) {\r\n periods = utils.parseNumber(periods);\r\n present = utils.parseNumber(present);\r\n future = utils.parseNumber(future);\r\n if (utils.anyIsError(periods, present, future)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if periods or present is equal to 0 (zero)\r\n if (periods === 0 || present === 0) {\r\n return error.num;\r\n }\r\n\r\n // Return equivalent interest rate\r\n return Math.pow(future / present, 1 / periods) - 1;\r\n };\r\n\r\n exports.SLN = function(cost, salvage, life) {\r\n cost = utils.parseNumber(cost);\r\n salvage = utils.parseNumber(salvage);\r\n life = utils.parseNumber(life);\r\n if (utils.anyIsError(cost, salvage, life)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if life equal to 0 (zero)\r\n if (life === 0) {\r\n return error.num;\r\n }\r\n\r\n // Return straight-line depreciation\r\n return (cost - salvage) / life;\r\n };\r\n\r\n exports.SYD = function(cost, salvage, life, period) {\r\n // Return error if any of the parameters is not a number\r\n cost = utils.parseNumber(cost);\r\n salvage = utils.parseNumber(salvage);\r\n life = utils.parseNumber(life);\r\n period = utils.parseNumber(period);\r\n if (utils.anyIsError(cost, salvage, life, period)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if life equal to 0 (zero)\r\n if (life === 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if period is lower than 1 or greater than life\r\n if (period < 1 || period > life) {\r\n return error.num;\r\n }\r\n\r\n // Truncate period if it is not an integer\r\n period = parseInt(period, 10);\r\n\r\n // Return straight-line depreciation\r\n return ((cost - salvage) * (life - period + 1) * 2) / (life * (life + 1));\r\n };\r\n\r\n exports.TBILLEQ = function(settlement, maturity, discount) {\r\n settlement = utils.parseDate(settlement);\r\n maturity = utils.parseDate(maturity);\r\n discount = utils.parseNumber(discount);\r\n if (utils.anyIsError(settlement, maturity, discount)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if discount is lower than or equal to zero\r\n if (discount <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if settlement is greater than maturity\r\n if (settlement > maturity) {\r\n return error.num;\r\n }\r\n\r\n // Return error if maturity is more than one year after settlement\r\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\r\n return error.num;\r\n }\r\n\r\n // Return bond-equivalent yield\r\n return (365 * discount) / (360 - discount * DAYS360(settlement, maturity, false));\r\n };\r\n\r\n exports.TBILLPRICE = function(settlement, maturity, discount) {\r\n settlement = utils.parseDate(settlement);\r\n maturity = utils.parseDate(maturity);\r\n discount = utils.parseNumber(discount);\r\n if (utils.anyIsError(settlement, maturity, discount)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if discount is lower than or equal to zero\r\n if (discount <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if settlement is greater than maturity\r\n if (settlement > maturity) {\r\n return error.num;\r\n }\r\n\r\n // Return error if maturity is more than one year after settlement\r\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\r\n return error.num;\r\n }\r\n\r\n // Return bond-equivalent yield\r\n return 100 * (1 - discount * DAYS360(settlement, maturity, false) / 360);\r\n };\r\n\r\n exports.TBILLYIELD = function(settlement, maturity, price) {\r\n settlement = utils.parseDate(settlement);\r\n maturity = utils.parseDate(maturity);\r\n price = utils.parseNumber(price);\r\n if (utils.anyIsError(settlement, maturity, price)) {\r\n return error.value;\r\n }\r\n\r\n // Return error if price is lower than or equal to zero\r\n if (price <= 0) {\r\n return error.num;\r\n }\r\n\r\n // Return error if settlement is greater than maturity\r\n if (settlement > maturity) {\r\n return error.num;\r\n }\r\n\r\n // Return error if maturity is more than one year after settlement\r\n if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\r\n return error.num;\r\n }\r\n\r\n // Return bond-equivalent yield\r\n return (100 - price) * 360 / (price * DAYS360(settlement, maturity, false));\r\n };\r\n\r\n exports.VDB = null;\r\n\r\n exports.XIRR = function(values, dates, guess) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n\r\n values = utils.parseNumberArray(utils.flatten(values));\r\n dates = utils.parseDateArray(utils.flatten(dates));\r\n guess = utils.parseNumber(guess);\r\n if (utils.anyIsError(values, dates, guess)) {\r\n return error.value;\r\n }\r\n\r\n // Calculates the resulting amount\r\n var irrResult = function(values, dates, rate) {\r\n var r = rate + 1;\r\n var result = values[0];\r\n for (var i = 1; i < values.length; i++) {\r\n result += values[i] / Math.pow(r, DAYS(dates[i], dates[0]) / 365);\r\n }\r\n return result;\r\n };\r\n\r\n // Calculates the first derivation\r\n var irrResultDeriv = function(values, dates, rate) {\r\n var r = rate + 1;\r\n var result = 0;\r\n for (var i = 1; i < values.length; i++) {\r\n var frac = DAYS(dates[i], dates[0]) / 365;\r\n result -= frac * values[i] / Math.pow(r, frac + 1);\r\n }\r\n return result;\r\n };\r\n\r\n // Check that values contains at least one positive value and one\r\n // negative value\r\n var positive = false;\r\n var negative = false;\r\n for (var i = 0; i < values.length; i++) {\r\n if (values[i] > 0) {\r\n positive = true;\r\n }\r\n if (values[i] < 0) {\r\n negative = true;\r\n }\r\n }\r\n\r\n // Return error if values does not contain at least one positive value\r\n // and one negative value\r\n if (!positive || !negative) {\r\n return error.num;\r\n }\r\n\r\n // Initialize guess and resultRate\r\n guess = guess || 0.1;\r\n var resultRate = guess;\r\n\r\n // Set maximum epsilon for end of iteration\r\n var epsMax = 1e-10;\r\n\r\n // Implement Newton's method\r\n var newRate, epsRate, resultValue;\r\n var contLoop = true;\r\n do {\r\n resultValue = irrResult(values, dates, resultRate);\r\n newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\r\n epsRate = Math.abs(newRate - resultRate);\r\n resultRate = newRate;\r\n contLoop = (epsRate > epsMax) && (Math.abs(resultValue) > epsMax);\r\n } while (contLoop);\r\n\r\n // Return internal rate of return\r\n return resultRate;\r\n };\r\n\r\n exports.XNPV = function(rate, values, dates) {\r\n rate = utils.parseNumber(rate);\r\n values = utils.parseNumberArray(utils.flatten(values));\r\n dates = utils.parseDateArray(utils.flatten(dates));\r\n if (utils.anyIsError(rate, values, dates)) {\r\n return error.value;\r\n }\r\n\r\n var result = 0;\r\n for (var i = 0; i < values.length; i++) {\r\n result += values[i] / Math.pow(1 + rate, DAYS(dates[i], dates[0]) / 365);\r\n }\r\n return result;\r\n };\r\n\r\n exports.YIELD = null;\r\n\r\n exports.YIELDDISC = null;\r\n\r\n exports.YIELDMAT = null;\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.information = (function() {\r\n var exports = {};\r\n exports.CELL = null;\r\n\r\n exports.ERROR = {};\r\n exports.ERROR.TYPE = function(error_val) {\r\n switch (error_val) {\r\n case error.nil: return 1;\r\n case error.div0: return 2;\r\n case error.value: return 3;\r\n case error.ref: return 4;\r\n case error.name: return 5;\r\n case error.num: return 6;\r\n case error.na: return 7;\r\n case error.data: return 8;\r\n }\r\n return error.na;\r\n };\r\n\r\n exports.INFO = null;\r\n\r\n exports.ISBLANK = function(value) {\r\n return value === null;\r\n };\r\n\r\n exports.ISBINARY = function (number) {\r\n return (/^[01]{1,10}$/).test(number);\r\n };\r\n\r\n exports.ISERR = function(value) {\r\n return ([error.value, error.ref, error.div0, error.num, error.name, error.nil]).indexOf(value) >= 0 ||\r\n (typeof value === 'number' && (isNaN(value) || !isFinite(value)));\r\n };\r\n\r\n exports.ISERROR = function(value) {\r\n return exports.ISERR(value) || value === error.na;\r\n };\r\n\r\n exports.ISEVEN = function(number) {\r\n return (Math.floor(Math.abs(number)) & 1) ? false : true;\r\n };\r\n\r\n // TODO\r\n exports.ISFORMULA = null;\r\n\r\n exports.ISLOGICAL = function(value) {\r\n return value === true || value === false;\r\n };\r\n\r\n exports.ISNA = function(value) {\r\n return value === error.na;\r\n };\r\n\r\n exports.ISNONTEXT = function(value) {\r\n return typeof(value) !== 'string';\r\n };\r\n\r\n exports.ISNUMBER = function(value) {\r\n return typeof(value) === 'number' && !isNaN(value) && isFinite(value);\r\n };\r\n\r\n exports.ISODD = function(number) {\r\n return (Math.floor(Math.abs(number)) & 1) ? true : false;\r\n };\r\n\r\n exports.ISREF = null;\r\n\r\n exports.ISTEXT = function(value) {\r\n return typeof(value) === 'string';\r\n };\r\n\r\n exports.N = function(value) {\r\n if (this.ISNUMBER(value)) {\r\n return value;\r\n }\r\n if (value instanceof Date) {\r\n return value.getTime();\r\n }\r\n if (value === true) {\r\n return 1;\r\n }\r\n if (value === false) {\r\n return 0;\r\n }\r\n if (this.ISERROR(value)) {\r\n return value;\r\n }\r\n return 0;\r\n };\r\n\r\n exports.NA = function() {\r\n return error.na;\r\n };\r\n\r\n exports.SHEET = null;\r\n\r\n exports.SHEETS = null;\r\n\r\n exports.TYPE = function(value) {\r\n if (this.ISNUMBER(value)) {\r\n return 1;\r\n }\r\n if (this.ISTEXT(value)) {\r\n return 2;\r\n }\r\n if (this.ISLOGICAL(value)) {\r\n return 4;\r\n }\r\n if (this.ISERROR(value)) {\r\n return 16;\r\n }\r\n if (Array.isArray(value)) {\r\n return 64;\r\n }\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.logical = (function() {\r\n var exports = {};\r\n\r\n exports.AND = function() {\r\n var args = utils.flatten(arguments);\r\n var result = true;\r\n for (var i = 0; i < args.length; i++) {\r\n if (!args[i]) {\r\n result = false;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.CHOOSE = function() {\r\n if (arguments.length < 2) {\r\n return error.na;\r\n }\r\n\r\n var index = arguments[0];\r\n if (index < 1 || index > 254) {\r\n return error.value;\r\n }\r\n\r\n if (arguments.length < index + 1) {\r\n return error.value;\r\n }\r\n\r\n return arguments[index];\r\n };\r\n\r\n exports.FALSE = function() {\r\n return false;\r\n };\r\n\r\n exports.IF = function(test, then_value, otherwise_value) {\r\n return test ? then_value : otherwise_value;\r\n };\r\n\r\n exports.IFERROR = function(value, valueIfError) {\r\n if (ISERROR(value)) {\r\n return valueIfError;\r\n }\r\n return value;\r\n };\r\n\r\n exports.IFNA = function(value, value_if_na) {\r\n return value === error.na ? value_if_na : value;\r\n };\r\n\r\n exports.NOT = function(logical) {\r\n return !logical;\r\n };\r\n\r\n exports.OR = function() {\r\n var args = utils.flatten(arguments);\r\n var result = false;\r\n for (var i = 0; i < args.length; i++) {\r\n if (args[i]) {\r\n result = true;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.TRUE = function() {\r\n return true;\r\n };\r\n\r\n exports.XOR = function() {\r\n var args = utils.flatten(arguments);\r\n var result = 0;\r\n for (var i = 0; i < args.length; i++) {\r\n if (args[i]) {\r\n result++;\r\n }\r\n }\r\n return (Math.floor(Math.abs(result)) & 1) ? true : false;\r\n };\r\n\r\n exports.SWITCH = function() {\r\n var result;\r\n if (arguments.length > 0) {\r\n var targetValue = arguments[0];\r\n var argc = arguments.length - 1;\r\n var switchCount = Math.floor(argc / 2);\r\n var switchSatisfied = false;\r\n var defaultClause = argc % 2 === 0 ? null : arguments[arguments.length - 1];\r\n\r\n if (switchCount) {\r\n for (var index = 0; index < switchCount; index++) {\r\n if (targetValue === arguments[index * 2 + 1]) {\r\n result = arguments[index * 2 + 2];\r\n switchSatisfied = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!switchSatisfied && defaultClause) {\r\n result = defaultClause;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.math = (function() {\r\n var exports = {};\r\n\r\n exports.ABS = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.abs(utils.parseNumber(number));\r\n };\r\n\r\n exports.ACOS = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.acos(number);\r\n };\r\n\r\n exports.ACOSH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.log(number + Math.sqrt(number * number - 1));\r\n };\r\n\r\n exports.ACOT = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.atan(1 / number);\r\n };\r\n\r\n exports.ACOTH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 0.5 * Math.log((number + 1) / (number - 1));\r\n };\r\n\r\n exports.AGGREGATE = null\r\n\r\n exports.ARABIC = function(text) {\r\n // Credits: Rafa? Kukawski\r\n if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {\r\n return error.value;\r\n }\r\n var r = 0;\r\n text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function(i) {\r\n r += {\r\n M: 1000,\r\n CM: 900,\r\n D: 500,\r\n CD: 400,\r\n C: 100,\r\n XC: 90,\r\n L: 50,\r\n XL: 40,\r\n X: 10,\r\n IX: 9,\r\n V: 5,\r\n IV: 4,\r\n I: 1\r\n }[i];\r\n });\r\n return r;\r\n };\r\n\r\n exports.ASIN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.asin(number);\r\n };\r\n\r\n exports.ASINH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.log(number + Math.sqrt(number * number + 1));\r\n };\r\n\r\n exports.ATAN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.atan(number);\r\n };\r\n\r\n exports.ATAN2 = function(number_x, number_y) {\r\n number_x = utils.parseNumber(number_x);\r\n number_y = utils.parseNumber(number_y);\r\n if (utils.anyIsError(number_x, number_y)) {\r\n return error.value;\r\n }\r\n return Math.atan2(number_x, number_y);\r\n };\r\n\r\n exports.ATANH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.log((1 + number) / (1 - number)) / 2;\r\n };\r\n\r\n exports.BASE = function(number, radix, min_length) {\r\n min_length = min_length || 0;\r\n\r\n number = utils.parseNumber(number);\r\n radix = utils.parseNumber(radix);\r\n min_length = utils.parseNumber(min_length);\r\n if (utils.anyIsError(number, radix, min_length)) {\r\n return error.value;\r\n }\r\n min_length = (min_length === undefined) ? 0 : min_length;\r\n var result = number.toString(radix);\r\n return new Array(Math.max(min_length + 1 - result.length, 0)).join('0') + result;\r\n };\r\n\r\n exports.CEILING = function(number, significance, mode) {\r\n significance = (significance === undefined) ? 1 : significance;\r\n mode = (mode === undefined) ? 0 : mode;\r\n\r\n number = utils.parseNumber(number);\r\n significance = utils.parseNumber(significance);\r\n mode = utils.parseNumber(mode);\r\n if (utils.anyIsError(number, significance, mode)) {\r\n return error.value;\r\n }\r\n if (significance === 0) {\r\n return 0;\r\n }\r\n\r\n significance = Math.abs(significance);\r\n if (number >= 0) {\r\n return Math.ceil(number / significance) * significance;\r\n } else {\r\n if (mode === 0) {\r\n return -1 * Math.floor(Math.abs(number) / significance) * significance;\r\n } else {\r\n return -1 * Math.ceil(Math.abs(number) / significance) * significance;\r\n }\r\n }\r\n };\r\n\r\n exports.CEILING.MATH = exports.CEILING;\r\n\r\n exports.CEILING.PRECISE = exports.CEILING;\r\n\r\n exports.COMBIN = function(number, number_chosen) {\r\n number = utils.parseNumber(number);\r\n number_chosen = utils.parseNumber(number_chosen);\r\n if (utils.anyIsError(number, number_chosen)) {\r\n return error.value;\r\n }\r\n return exports.FACT(number) / (exports.FACT(number_chosen) * exports.FACT(number - number_chosen));\r\n };\r\n\r\n exports.COMBINA = function(number, number_chosen) {\r\n number = utils.parseNumber(number);\r\n number_chosen = utils.parseNumber(number_chosen);\r\n if (utils.anyIsError(number, number_chosen)) {\r\n return error.value;\r\n }\r\n return (number === 0 && number_chosen === 0) ? 1 : exports.COMBIN(number + number_chosen - 1, number - 1);\r\n };\r\n\r\n exports.COS = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.cos(number);\r\n };\r\n\r\n exports.COSH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return (Math.exp(number) + Math.exp(-number)) / 2;\r\n };\r\n\r\n exports.COT = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 1 / Math.tan(number);\r\n };\r\n\r\n exports.COTH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n var e2 = Math.exp(2 * number);\r\n return (e2 + 1) / (e2 - 1);\r\n };\r\n\r\n exports.CSC = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 1 / Math.sin(number);\r\n };\r\n\r\n exports.CSCH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 2 / (Math.exp(number) - Math.exp(-number));\r\n };\r\n\r\n exports.DECIMAL = function(number, radix) {\r\n if (arguments.length < 1) {\r\n return error.value;\r\n }\r\n\r\n\r\n return parseInt(number, radix);\r\n };\r\n\r\n exports.DEGREES = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return number * 180 / Math.PI;\r\n };\r\n\r\n exports.EVEN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return exports.CEILING(number, -2, -1);\r\n };\r\n\r\n exports.EXP = Math.exp;\r\n\r\n var MEMOIZED_FACT = [];\r\n exports.FACT = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n var n = Math.floor(number);\r\n if (n === 0 || n === 1) {\r\n return 1;\r\n } else if (MEMOIZED_FACT[n] > 0) {\r\n return MEMOIZED_FACT[n];\r\n } else {\r\n MEMOIZED_FACT[n] = exports.FACT(n - 1) * n;\r\n return MEMOIZED_FACT[n];\r\n }\r\n };\r\n\r\n exports.FACTDOUBLE = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n var n = Math.floor(number);\r\n if (n <= 0) {\r\n return 1;\r\n } else {\r\n return n * exports.FACTDOUBLE(n - 2);\r\n }\r\n };\r\n\r\n exports.FLOOR = function(number, significance, mode) {\r\n significance = (significance === undefined) ? 1 : significance;\r\n mode = (mode === undefined) ? 0 : mode;\r\n\r\n number = utils.parseNumber(number);\r\n significance = utils.parseNumber(significance);\r\n mode = utils.parseNumber(mode);\r\n if (utils.anyIsError(number, significance, mode)) {\r\n return error.value;\r\n }\r\n if (significance === 0) {\r\n return 0;\r\n }\r\n\r\n significance = Math.abs(significance);\r\n if (number >= 0) {\r\n return Math.floor(number / significance) * significance;\r\n } else {\r\n if (mode === 0) {\r\n return -1 * Math.ceil(Math.abs(number) / significance) * significance;\r\n } else {\r\n return -1 * Math.floor(Math.abs(number) / significance) * significance;\r\n }\r\n }\r\n };\r\n\r\n exports.FLOOR.MATH = exports.FLOOR;\r\n\r\n exports.GCD = null;\r\n\r\n exports.INT = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.floor(number);\r\n };\r\n\r\n exports.LCM = function() {\r\n // Credits: Jonas Raoni Soares Silva\r\n var o = utils.parseNumberArray(utils.flatten(arguments));\r\n if (o instanceof Error) {\r\n return o;\r\n }\r\n for (var i, j, n, d, r = 1;\r\n (n = o.pop()) !== undefined;) {\r\n while (n > 1) {\r\n if (n % 2) {\r\n for (i = 3, j = Math.floor(Math.sqrt(n)); i <= j && n % i; i += 2) {\r\n //empty\r\n }\r\n d = (i <= j) ? i : n;\r\n } else {\r\n d = 2;\r\n }\r\n for (n /= d, r *= d, i = o.length; i;\r\n (o[--i] % d) === 0 && (o[i] /= d) === 1 && o.splice(i, 1)) {\r\n //empty\r\n }\r\n }\r\n }\r\n return r;\r\n };\r\n\r\n exports.LN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.log(number);\r\n };\r\n\r\n exports.LOG = function(number, base) {\r\n number = utils.parseNumber(number);\r\n base = (base === undefined) ? 10 : utils.parseNumber(base);\r\n\r\n if (utils.anyIsError(number, base)) {\r\n return error.value;\r\n }\r\n\r\n return Math.log(number) / Math.log(base);\r\n };\r\n\r\n exports.LOG10 = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.log(number) / Math.log(10);\r\n };\r\n\r\n exports.MDETERM = null;\r\n\r\n exports.MINVERSE = null;\r\n\r\n exports.MMULT = null;\r\n\r\n exports.MOD = function(dividend, divisor) {\r\n dividend = utils.parseNumber(dividend);\r\n divisor = utils.parseNumber(divisor);\r\n if (utils.anyIsError(dividend, divisor)) {\r\n return error.value;\r\n }\r\n if (divisor === 0) {\r\n return error.div0;\r\n }\r\n var modulus = Math.abs(dividend % divisor);\r\n return (divisor > 0) ? modulus : -modulus;\r\n };\r\n\r\n exports.MROUND = function(number, multiple) {\r\n number = utils.parseNumber(number);\r\n multiple = utils.parseNumber(multiple);\r\n if (utils.anyIsError(number, multiple)) {\r\n return error.value;\r\n }\r\n if (number * multiple < 0) {\r\n return error.num;\r\n }\r\n\r\n return Math.round(number / multiple) * multiple;\r\n };\r\n\r\n exports.MULTINOMIAL = function() {\r\n var args = utils.parseNumberArray(utils.flatten(arguments));\r\n if (args instanceof Error) {\r\n return args;\r\n }\r\n var sum = 0;\r\n var divisor = 1;\r\n for (var i = 0; i < args.length; i++) {\r\n sum += args[i];\r\n divisor *= exports.FACT(args[i]);\r\n }\r\n return exports.FACT(sum) / divisor;\r\n };\r\n\r\n exports.MUNIT = null;\r\n\r\n exports.ODD = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n var temp = Math.ceil(Math.abs(number));\r\n temp = (temp & 1) ? temp : temp + 1;\r\n return (number > 0) ? temp : -temp;\r\n };\r\n\r\n exports.PI = function() {\r\n return Math.PI;\r\n };\r\n\r\n exports.POWER = function(number, power) {\r\n number = utils.parseNumber(number);\r\n power = utils.parseNumber(power);\r\n if (utils.anyIsError(number, power)) {\r\n return error.value;\r\n }\r\n var result = Math.pow(number, power);\r\n if (isNaN(result)) {\r\n return error.num;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n exports.PRODUCT = function() {\r\n var args = utils.parseNumberArray(utils.flatten(arguments));\r\n if (args instanceof Error) {\r\n return args;\r\n }\r\n var result = 1;\r\n for (var i = 0; i < args.length; i++) {\r\n result *= args[i];\r\n }\r\n return result;\r\n };\r\n\r\n exports.QUOTIENT = function(numerator, denominator) {\r\n numerator = utils.parseNumber(numerator);\r\n denominator = utils.parseNumber(denominator);\r\n if (utils.anyIsError(numerator, denominator)) {\r\n return error.value;\r\n }\r\n return parseInt(numerator / denominator, 10);\r\n };\r\n\r\n exports.RADIANS = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return number * Math.PI / 180;\r\n };\r\n\r\n exports.RAND = function() {\r\n return Math.random();\r\n };\r\n\r\n exports.RANDBETWEEN = function(bottom, top) {\r\n bottom = utils.parseNumber(bottom);\r\n top = utils.parseNumber(top);\r\n if (utils.anyIsError(bottom, top)) {\r\n return error.value;\r\n }\r\n // Creative Commons Attribution 3.0 License\r\n // Copyright (c) 2012 eqcode\r\n return bottom + Math.ceil((top - bottom + 1) * Math.random()) - 1;\r\n };\r\n\r\n exports.ROMAN = null;\r\n\r\n exports.ROUND = function(number, digits) {\r\n number = utils.parseNumber(number);\r\n digits = utils.parseNumber(digits);\r\n if (utils.anyIsError(number, digits)) {\r\n return error.value;\r\n }\r\n return Math.round(number * Math.pow(10, digits)) / Math.pow(10, digits);\r\n };\r\n\r\n exports.ROUNDDOWN = function(number, digits) {\r\n number = utils.parseNumber(number);\r\n digits = utils.parseNumber(digits);\r\n if (utils.anyIsError(number, digits)) {\r\n return error.value;\r\n }\r\n var sign = (number > 0) ? 1 : -1;\r\n return sign * (Math.floor(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\r\n };\r\n\r\n exports.ROUNDUP = function(number, digits) {\r\n number = utils.parseNumber(number);\r\n digits = utils.parseNumber(digits);\r\n if (utils.anyIsError(number, digits)) {\r\n return error.value;\r\n }\r\n var sign = (number > 0) ? 1 : -1;\r\n return sign * (Math.ceil(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\r\n };\r\n\r\n exports.SEC = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 1 / Math.cos(number);\r\n };\r\n\r\n exports.SECH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return 2 / (Math.exp(number) + Math.exp(-number));\r\n };\r\n\r\n exports.SERIESSUM = function(x, n, m, coefficients) {\r\n x = utils.parseNumber(x);\r\n n = utils.parseNumber(n);\r\n m = utils.parseNumber(m);\r\n coefficients = utils.parseNumberArray(coefficients);\r\n if (utils.anyIsError(x, n, m, coefficients)) {\r\n return error.value;\r\n }\r\n var result = coefficients[0] * Math.pow(x, n);\r\n for (var i = 1; i < coefficients.length; i++) {\r\n result += coefficients[i] * Math.pow(x, n + i * m);\r\n }\r\n return result;\r\n };\r\n\r\n exports.SIGN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n if (number < 0) {\r\n return -1;\r\n } else if (number === 0) {\r\n return 0;\r\n } else {\r\n return 1;\r\n }\r\n };\r\n\r\n exports.SIN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.sin(number);\r\n };\r\n\r\n exports.SINH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return (Math.exp(number) - Math.exp(-number)) / 2;\r\n };\r\n\r\n exports.SQRT = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n if (number < 0) {\r\n return error.num;\r\n }\r\n return Math.sqrt(number);\r\n };\r\n\r\n exports.SQRTPI = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.sqrt(number * Math.PI);\r\n };\r\n\r\n exports.SUBTOTAL = null;\r\n\r\n exports.ADD = function (num1, num2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n num1 = utils.parseNumber(num1);\r\n num2 = utils.parseNumber(num2);\r\n if (utils.anyIsError(num1, num2)) {\r\n return error.value;\r\n }\r\n\r\n return num1 + num2;\r\n };\r\n\r\n exports.MINUS = function (num1, num2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n num1 = utils.parseNumber(num1);\r\n num2 = utils.parseNumber(num2);\r\n if (utils.anyIsError(num1, num2)) {\r\n return error.value;\r\n }\r\n\r\n return num1 - num2;\r\n };\r\n\r\n exports.DIVIDE = function (dividend, divisor) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n dividend = utils.parseNumber(dividend);\r\n divisor = utils.parseNumber(divisor);\r\n if (utils.anyIsError(dividend, divisor)) {\r\n return error.value;\r\n }\r\n\r\n if (divisor === 0) {\r\n return error.div0;\r\n }\r\n\r\n return dividend / divisor;\r\n };\r\n\r\n exports.MULTIPLY = function (factor1, factor2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n factor1 = utils.parseNumber(factor1);\r\n factor2 = utils.parseNumber(factor2);\r\n if (utils.anyIsError(factor1, factor2)) {\r\n return error.value;\r\n }\r\n\r\n return factor1 * factor2;\r\n };\r\n\r\n exports.GTE = function (num1, num2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n num1 = utils.parseNumber(num1);\r\n num2 = utils.parseNumber(num2);\r\n if (utils.anyIsError(num1, num2)) {\r\n return error.error;\r\n }\r\n\r\n return num1 >= num2;\r\n };\r\n\r\n exports.LT = function (num1, num2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n num1 = utils.parseNumber(num1);\r\n num2 = utils.parseNumber(num2);\r\n if (utils.anyIsError(num1, num2)) {\r\n return error.error;\r\n }\r\n\r\n return num1 < num2;\r\n };\r\n\r\n exports.LTE = function (num1, num2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n num1 = utils.parseNumber(num1);\r\n num2 = utils.parseNumber(num2);\r\n if (utils.anyIsError(num1, num2)) {\r\n return error.error;\r\n }\r\n\r\n return num1 <= num2;\r\n };\r\n\r\n exports.EQ = function (value1, value2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n return value1 === value2;\r\n };\r\n\r\n exports.NE = function (value1, value2) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n return value1 !== value2;\r\n };\r\n\r\n exports.POW = function (base, exponent) {\r\n if (arguments.length !== 2) {\r\n return error.na;\r\n }\r\n\r\n base = utils.parseNumber(base);\r\n exponent = utils.parseNumber(exponent);\r\n if (utils.anyIsError(base, exponent)) {\r\n return error.error;\r\n }\r\n\r\n return exports.POWER(base, exponent);\r\n };\r\n\r\n exports.SUM = function() {\r\n var result = 0;\r\n var argsKeys = Object.keys(arguments);\r\n for (var i = 0; i < argsKeys.length; ++i) {\r\n var elt = arguments[argsKeys[i]];\r\n if (typeof elt === 'number') {\r\n result += elt;\r\n } else if (typeof elt === 'string') {\r\n var parsed = parseFloat(elt);\r\n !isNaN(parsed) && (result += parsed);\r\n } else if (Array.isArray(elt)) {\r\n result += exports.SUM.apply(null, elt);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMIF = function(range, criteria) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n if (range instanceof Error) {\r\n return range;\r\n }\r\n var result = 0;\r\n for (var i = 0; i < range.length; i++) {\r\n result += (eval(range[i] + criteria)) ? range[i] : 0; // jshint ignore:line\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMIFS = function() {\r\n var args = utils.argsToArray(arguments);\r\n var range = utils.parseNumberArray(utils.flatten(args.shift()));\r\n if (range instanceof Error) {\r\n return range;\r\n }\r\n var criteria = args;\r\n\r\n var n_range_elements = range.length;\r\n var n_criterias = criteria.length;\r\n\r\n var result = 0;\r\n for (var i = 0; i < n_range_elements; i++) {\r\n var el = range[i];\r\n var condition = '';\r\n for (var c = 0; c < n_criterias; c++) {\r\n condition += el + criteria[c];\r\n if (c !== n_criterias - 1) {\r\n condition += '&&';\r\n }\r\n }\r\n if (eval(condition)) { // jshint ignore:line\r\n result += el;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMPRODUCT = null;\r\n\r\n exports.SUMSQ = function() {\r\n var numbers = utils.parseNumberArray(utils.flatten(arguments));\r\n if (numbers instanceof Error) {\r\n return numbers;\r\n }\r\n var result = 0;\r\n var length = numbers.length;\r\n for (var i = 0; i < length; i++) {\r\n result += (ISNUMBER(numbers[i])) ? numbers[i] * numbers[i] : 0;\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMX2MY2 = function(array_x, array_y) {\r\n array_x = utils.parseNumberArray(utils.flatten(array_x));\r\n array_y = utils.parseNumberArray(utils.flatten(array_y));\r\n if (utils.anyIsError(array_x, array_y)) {\r\n return error.value;\r\n }\r\n var result = 0;\r\n for (var i = 0; i < array_x.length; i++) {\r\n result += array_x[i] * array_x[i] - array_y[i] * array_y[i];\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMX2PY2 = function(array_x, array_y) {\r\n array_x = utils.parseNumberArray(utils.flatten(array_x));\r\n array_y = utils.parseNumberArray(utils.flatten(array_y));\r\n if (utils.anyIsError(array_x, array_y)) {\r\n return error.value;\r\n }\r\n var result = 0;\r\n array_x = utils.parseNumberArray(utils.flatten(array_x));\r\n array_y = utils.parseNumberArray(utils.flatten(array_y));\r\n for (var i = 0; i < array_x.length; i++) {\r\n result += array_x[i] * array_x[i] + array_y[i] * array_y[i];\r\n }\r\n return result;\r\n };\r\n\r\n exports.SUMXMY2 = function(array_x, array_y) {\r\n array_x = utils.parseNumberArray(utils.flatten(array_x));\r\n array_y = utils.parseNumberArray(utils.flatten(array_y));\r\n if (utils.anyIsError(array_x, array_y)) {\r\n return error.value;\r\n }\r\n var result = 0;\r\n array_x = utils.flatten(array_x);\r\n array_y = utils.flatten(array_y);\r\n for (var i = 0; i < array_x.length; i++) {\r\n result += Math.pow(array_x[i] - array_y[i], 2);\r\n }\r\n return result;\r\n };\r\n\r\n exports.TAN = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return Math.tan(number);\r\n };\r\n\r\n exports.TANH = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n var e2 = Math.exp(2 * number);\r\n return (e2 - 1) / (e2 + 1);\r\n };\r\n\r\n exports.TRUNC = function(number, digits) {\r\n digits = (digits === undefined) ? 0 : digits;\r\n number = utils.parseNumber(number);\r\n digits = utils.parseNumber(digits);\r\n if (utils.anyIsError(number, digits)) {\r\n return error.value;\r\n }\r\n var sign = (number > 0) ? 1 : -1;\r\n return sign * (Math.floor(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.misc = (function() {\r\n var exports = {};\r\n\r\n exports.UNIQUE = function () {\r\n var result = [];\r\n for (var i = 0; i < arguments.length; ++i) {\r\n var hasElement = false;\r\n var element = arguments[i];\r\n\r\n // Check if we've already seen this element.\r\n for (var j = 0; j < result.length; ++j) {\r\n hasElement = result[j] === element;\r\n if (hasElement) { break; }\r\n }\r\n\r\n // If we did not find it, add it to the result.\r\n if (!hasElement) {\r\n result.push(element);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.FLATTEN = utils.flatten;\r\n\r\n exports.ARGS2ARRAY = function () {\r\n return Array.prototype.slice.call(arguments, 0);\r\n };\r\n\r\n exports.REFERENCE = function (context, reference) {\r\n try {\r\n var path = reference.split('.');\r\n var result = context;\r\n for (var i = 0; i < path.length; ++i) {\r\n var step = path[i];\r\n if (step[step.length - 1] === ']') {\r\n var opening = step.indexOf('[');\r\n var index = step.substring(opening + 1, step.length - 1);\r\n result = result[step.substring(0, opening)][index];\r\n } else {\r\n result = result[step];\r\n }\r\n }\r\n return result;\r\n } catch (error) {}\r\n };\r\n\r\n exports.JOIN = function (array, separator) {\r\n return array.join(separator);\r\n };\r\n\r\n exports.NUMBERS = function () {\r\n var possibleNumbers = utils.flatten(arguments);\r\n return possibleNumbers.filter(function (el) {\r\n return typeof el === 'number';\r\n });\r\n };\r\n\r\n exports.NUMERAL = null;\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.text = (function() {\r\n var exports = {};\r\n\r\n exports.ASC = null;\r\n\r\n exports.BAHTTEXT = null;\r\n\r\n exports.CHAR = function(number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return String.fromCharCode(number);\r\n };\r\n\r\n exports.CLEAN = function(text) {\r\n text = text || '';\r\n var re = /[\\0-\\x1F]/g;\r\n return text.replace(re, \"\");\r\n };\r\n\r\n exports.CODE = function(text) {\r\n text = text || '';\r\n return text.charCodeAt(0);\r\n };\r\n\r\n exports.CONCATENATE = function() {\r\n var args = utils.flatten(arguments);\r\n\r\n var trueFound = 0;\r\n while ((trueFound = args.indexOf(true)) > -1) {\r\n args[trueFound] = 'TRUE';\r\n }\r\n\r\n var falseFound = 0;\r\n while ((falseFound = args.indexOf(false)) > -1) {\r\n args[falseFound] = 'FALSE';\r\n }\r\n\r\n return args.join('');\r\n };\r\n\r\n exports.DBCS = null;\r\n\r\n exports.DOLLAR = null;\r\n\r\n exports.EXACT = function(text1, text2) {\r\n return text1 === text2;\r\n };\r\n\r\n exports.FIND = function(find_text, within_text, position) {\r\n position = (position === undefined) ? 0 : position;\r\n return within_text ? within_text.indexOf(find_text, position - 1) + 1 : null;\r\n };\r\n\r\n exports.FIXED = null;\r\n\r\n exports.HTML2TEXT = function (value) {\r\n var result = '';\r\n\r\n if (value) {\r\n if (value instanceof Array) {\r\n value.forEach(function (line) {\r\n if (result !== '') {\r\n result += '\\n';\r\n }\r\n result += (line.replace(/<(?:.|\\n)*?>/gm, ''));\r\n });\r\n } else {\r\n result = value.replace(/<(?:.|\\n)*?>/gm, '');\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n exports.LEFT = function(text, number) {\r\n number = (number === undefined) ? 1 : number;\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error || typeof text !== 'string') {\r\n return error.value;\r\n }\r\n return text ? text.substring(0, number) : null;\r\n };\r\n\r\n exports.LEN = function(text) {\r\n if (arguments.length === 0) {\r\n return error.error;\r\n }\r\n\r\n if (typeof text === 'string') {\r\n return text ? text.length : 0;\r\n }\r\n\r\n if (text.length) {\r\n return text.length;\r\n }\r\n\r\n return error.value;\r\n };\r\n\r\n exports.LOWER = function(text) {\r\n if (typeof text !== 'string') {\r\n return error.value;\r\n }\r\n return text ? text.toLowerCase() : text;\r\n };\r\n\r\n exports.MID = function(text, start, number) {\r\n start = utils.parseNumber(start);\r\n number = utils.parseNumber(number);\r\n if (utils.anyIsError(start, number) || typeof text !== 'string') {\r\n return number;\r\n }\r\n\r\n var begin = start - 1;\r\n var end = begin + number;\r\n\r\n return text.substring(begin, end);\r\n };\r\n\r\n exports.NUMBERVALUE = null;\r\n\r\n exports.PRONETIC = null;\r\n\r\n exports.PROPER = function(text) {\r\n if (text === undefined || text.length === 0) {\r\n return error.value;\r\n }\r\n if (text === true) {\r\n text = 'TRUE';\r\n }\r\n if (text === false) {\r\n text = 'FALSE';\r\n }\r\n if (isNaN(text) && typeof text === 'number') {\r\n return error.value;\r\n }\r\n if (typeof text === 'number') {\r\n text = '' + text;\r\n }\r\n\r\n return text.replace(/\\w\\S*/g, function(txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n };\r\n\r\n exports.REGEXEXTRACT = function (text, regular_expression) {\r\n var match = text.match(new RegExp(regular_expression));\r\n return match ? (match[match.length > 1 ? match.length - 1 : 0]) : null;\r\n };\r\n\r\n exports.REGEXMATCH = function (text, regular_expression, full) {\r\n var match = text.match(new RegExp(regular_expression));\r\n return full ? match : !!match;\r\n };\r\n\r\n exports.REGEXREPLACE = function (text, regular_expression, replacement) {\r\n return text.replace(new RegExp(regular_expression), replacement);\r\n };\r\n\r\n exports.REPLACE = function(text, position, length, new_text) {\r\n position = utils.parseNumber(position);\r\n length = utils.parseNumber(length);\r\n if (utils.anyIsError(position, length) ||\r\n typeof text !== 'string' ||\r\n typeof new_text !== 'string') {\r\n return error.value;\r\n }\r\n return text.substr(0, position - 1) + new_text + text.substr(position - 1 + length);\r\n };\r\n\r\n exports.REPT = function(text, number) {\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return new Array(number + 1).join(text);\r\n };\r\n\r\n exports.RIGHT = function(text, number) {\r\n number = (number === undefined) ? 1 : number;\r\n number = utils.parseNumber(number);\r\n if (number instanceof Error) {\r\n return number;\r\n }\r\n return text ? text.substring(text.length - number) : null;\r\n };\r\n\r\n exports.SEARCH = function(find_text, within_text, position) {\r\n var foundAt;\r\n if (typeof find_text !== 'string' || typeof within_text !== 'string') {\r\n return error.value;\r\n }\r\n position = (position === undefined) ? 0 : position;\r\n foundAt = within_text.toLowerCase().indexOf(find_text.toLowerCase(), position - 1)+1;\r\n return (foundAt === 0)?error.value:foundAt;\r\n };\r\n\r\n exports.SPLIT = function (text, separator) {\r\n return text.split(separator);\r\n };\r\n\r\n exports.SUBSTITUTE = function(text, old_text, new_text, occurrence) {\r\n if (!text || !old_text || !new_text) {\r\n return text;\r\n } else if (occurrence === undefined) {\r\n return text.replace(new RegExp(old_text, 'g'), new_text);\r\n } else {\r\n var index = 0;\r\n var i = 0;\r\n while (text.indexOf(old_text, index) > 0) {\r\n index = text.indexOf(old_text, index + 1);\r\n i++;\r\n if (i === occurrence) {\r\n return text.substring(0, index) + new_text + text.substring(index + old_text.length);\r\n }\r\n }\r\n }\r\n };\r\n\r\n exports.T = function(value) {\r\n return (typeof value === \"string\") ? value : '';\r\n };\r\n\r\n exports.TEXT = null;\r\n\r\n exports.TRIM = function(text) {\r\n if (typeof text !== 'string') {\r\n return error.value;\r\n }\r\n return text.replace(/ +/g, ' ').trim();\r\n };\r\n\r\n exports.UNICHAR = exports.CHAR;\r\n\r\n exports.UNICODE = exports.CODE;\r\n\r\n exports.UPPER = function(text) {\r\n if (typeof text !== 'string') {\r\n return error.value;\r\n }\r\n return text.toUpperCase();\r\n };\r\n\r\n exports.VALUE = null;\r\n\r\n return exports;\r\n})();\r\n\r\njexcel.methods.stats = (function() {\r\n var exports = {};\r\n\r\n var SQRT2PI = 2.5066282746310002;\r\n\r\n exports.AVEDEV = null;\r\n\r\n exports.AVERAGE = function() {\r\n var range = utils.numbers(utils.flatten(arguments));\r\n var n = range.length;\r\n var sum = 0;\r\n var count = 0;\r\n for (var i = 0; i < n; i++) {\r\n sum += range[i];\r\n count += 1;\r\n }\r\n return sum / count;\r\n };\r\n\r\n exports.AVERAGEA = function() {\r\n var range = utils.flatten(arguments);\r\n var n = range.length;\r\n var sum = 0;\r\n var count = 0;\r\n for (var i = 0; i < n; i++) {\r\n var el = range[i];\r\n if (typeof el === 'number') {\r\n sum += el;\r\n }\r\n if (el === true) {\r\n sum++;\r\n }\r\n if (el !== null) {\r\n count++;\r\n }\r\n }\r\n return sum / count;\r\n };\r\n\r\n exports.AVERAGEIF = function(range, criteria, average_range) {\r\n average_range = average_range || range;\r\n range = utils.flatten(range);\r\n average_range = utils.parseNumberArray(utils.flatten(average_range));\r\n if (average_range instanceof Error) {\r\n return average_range;\r\n }\r\n var average_count = 0;\r\n var result = 0;\r\n for (var i = 0; i < range.length; i++) {\r\n if (eval(range[i] + criteria)) { // jshint ignore:line\r\n result += average_range[i];\r\n average_count++;\r\n }\r\n }\r\n return result / average_count;\r\n };\r\n\r\n exports.AVERAGEIFS = null;\r\n\r\n exports.COUNT = function() {\r\n return utils.numbers(utils.flatten(arguments)).length;\r\n };\r\n\r\n exports.COUNTA = function() {\r\n var range = utils.flatten(arguments);\r\n return range.length - exports.COUNTBLANK(range);\r\n };\r\n\r\n exports.COUNTIN = function (range, value) {\r\n var result = 0;\r\n for (var i = 0; i < range.length; i++) {\r\n if (range[i] === value) {\r\n result++;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.COUNTBLANK = function() {\r\n var range = utils.flatten(arguments);\r\n var blanks = 0;\r\n var element;\r\n for (var i = 0; i < range.length; i++) {\r\n element = range[i];\r\n if (element === null || element === '') {\r\n blanks++;\r\n }\r\n }\r\n return blanks;\r\n };\r\n\r\n exports.COUNTIF = function(range, criteria) {\r\n range = utils.flatten(range);\r\n if (!/[<>=!]/.test(criteria)) {\r\n criteria = '==\"' + criteria + '\"';\r\n }\r\n var matches = 0;\r\n for (var i = 0; i < range.length; i++) {\r\n if (typeof range[i] !== 'string') {\r\n if (eval(range[i] + criteria)) { // jshint ignore:line\r\n matches++;\r\n }\r\n } else {\r\n if (eval('\"' + range[i] + '\"' + criteria)) { // jshint ignore:line\r\n matches++;\r\n }\r\n }\r\n }\r\n return matches;\r\n };\r\n\r\n exports.COUNTIFS = function() {\r\n var args = utils.argsToArray(arguments);\r\n var results = new Array(utils.flatten(args[0]).length);\r\n for (var i = 0; i < results.length; i++) {\r\n results[i] = true;\r\n }\r\n for (i = 0; i < args.length; i += 2) {\r\n var range = utils.flatten(args[i]);\r\n var criteria = args[i + 1];\r\n if (!/[<>=!]/.test(criteria)) {\r\n criteria = '==\"' + criteria + '\"';\r\n }\r\n for (var j = 0; j < range.length; j++) {\r\n if (typeof range[j] !== 'string') {\r\n results[j] = results[j] && eval(range[j] + criteria); // jshint ignore:line\r\n } else {\r\n results[j] = results[j] && eval('\"' + range[j] + '\"' + criteria); // jshint ignore:line\r\n }\r\n }\r\n }\r\n var result = 0;\r\n for (i = 0; i < results.length; i++) {\r\n if (results[i]) {\r\n result++;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.COUNTUNIQUE = function () {\r\n return UNIQUE.apply(null, utils.flatten(arguments)).length;\r\n };\r\n\r\n exports.FISHER = function(x) {\r\n x = utils.parseNumber(x);\r\n if (x instanceof Error) {\r\n return x;\r\n }\r\n return Math.log((1 + x) / (1 - x)) / 2;\r\n };\r\n\r\n exports.FISHERINV = function(y) {\r\n y = utils.parseNumber(y);\r\n if (y instanceof Error) {\r\n return y;\r\n }\r\n var e2y = Math.exp(2 * y);\r\n return (e2y - 1) / (e2y + 1);\r\n };\r\n\r\n exports.FREQUENCY = function(data, bins) {\r\n data = utils.parseNumberArray(utils.flatten(data));\r\n bins = utils.parseNumberArray(utils.flatten(bins));\r\n if (utils.anyIsError(data, bins)) {\r\n return error.value;\r\n }\r\n var n = data.length;\r\n var b = bins.length;\r\n var r = [];\r\n for (var i = 0; i <= b; i++) {\r\n r[i] = 0;\r\n for (var j = 0; j < n; j++) {\r\n if (i === 0) {\r\n if (data[j] <= bins[0]) {\r\n r[0] += 1;\r\n }\r\n } else if (i < b) {\r\n if (data[j] > bins[i - 1] && data[j] <= bins[i]) {\r\n r[i] += 1;\r\n }\r\n } else if (i === b) {\r\n if (data[j] > bins[b - 1]) {\r\n r[b] += 1;\r\n }\r\n }\r\n }\r\n }\r\n return r;\r\n };\r\n\r\n exports.LARGE = function(range, k) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n k = utils.parseNumber(k);\r\n if (utils.anyIsError(range, k)) {\r\n return range;\r\n }\r\n return range.sort(function(a, b) {\r\n return b - a;\r\n })[k - 1];\r\n };\r\n\r\n exports.MAX = function() {\r\n var range = utils.numbers(utils.flatten(arguments));\r\n return (range.length === 0) ? 0 : Math.max.apply(Math, range);\r\n };\r\n\r\n exports.MAXA = function() {\r\n var range = utils.arrayValuesToNumbers(utils.flatten(arguments));\r\n return (range.length === 0) ? 0 : Math.max.apply(Math, range);\r\n };\r\n\r\n exports.MIN = function() {\r\n var range = utils.numbers(utils.flatten(arguments));\r\n return (range.length === 0) ? 0 : Math.min.apply(Math, range);\r\n };\r\n\r\n exports.MINA = function() {\r\n var range = utils.arrayValuesToNumbers(utils.flatten(arguments));\r\n return (range.length === 0) ? 0 : Math.min.apply(Math, range);\r\n };\r\n\r\n exports.MODE = {};\r\n\r\n exports.MODE.MULT = function() {\r\n // Credits: Roönaän\r\n var range = utils.parseNumberArray(utils.flatten(arguments));\r\n if (range instanceof Error) {\r\n return range;\r\n }\r\n var n = range.length;\r\n var count = {};\r\n var maxItems = [];\r\n var max = 0;\r\n var currentItem;\r\n\r\n for (var i = 0; i < n; i++) {\r\n currentItem = range[i];\r\n count[currentItem] = count[currentItem] ? count[currentItem] + 1 : 1;\r\n if (count[currentItem] > max) {\r\n max = count[currentItem];\r\n maxItems = [];\r\n }\r\n if (count[currentItem] === max) {\r\n maxItems[maxItems.length] = currentItem;\r\n }\r\n }\r\n return maxItems;\r\n };\r\n\r\n exports.MODE.SNGL = function() {\r\n var range = utils.parseNumberArray(utils.flatten(arguments));\r\n if (range instanceof Error) {\r\n return range;\r\n }\r\n return exports.MODE.MULT(range).sort(function(a, b) {\r\n return a - b;\r\n })[0];\r\n };\r\n\r\n exports.PERCENTILE = {};\r\n\r\n exports.PERCENTILE.EXC = function(array, k) {\r\n array = utils.parseNumberArray(utils.flatten(array));\r\n k = utils.parseNumber(k);\r\n if (utils.anyIsError(array, k)) {\r\n return error.value;\r\n }\r\n array = array.sort(function(a, b) {\r\n {\r\n return a - b;\r\n }\r\n });\r\n var n = array.length;\r\n if (k < 1 / (n + 1) || k > 1 - 1 / (n + 1)) {\r\n return error.num;\r\n }\r\n var l = k * (n + 1) - 1;\r\n var fl = Math.floor(l);\r\n return utils.cleanFloat((l === fl) ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]));\r\n };\r\n\r\n exports.PERCENTILE.INC = function(array, k) {\r\n array = utils.parseNumberArray(utils.flatten(array));\r\n k = utils.parseNumber(k);\r\n if (utils.anyIsError(array, k)) {\r\n return error.value;\r\n }\r\n array = array.sort(function(a, b) {\r\n return a - b;\r\n });\r\n var n = array.length;\r\n var l = k * (n - 1);\r\n var fl = Math.floor(l);\r\n return utils.cleanFloat((l === fl) ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]));\r\n };\r\n\r\n exports.PERCENTRANK = {};\r\n\r\n exports.PERCENTRANK.EXC = function(array, x, significance) {\r\n significance = (significance === undefined) ? 3 : significance;\r\n array = utils.parseNumberArray(utils.flatten(array));\r\n x = utils.parseNumber(x);\r\n significance = utils.parseNumber(significance);\r\n if (utils.anyIsError(array, x, significance)) {\r\n return error.value;\r\n }\r\n array = array.sort(function(a, b) {\r\n return a - b;\r\n });\r\n var uniques = UNIQUE.apply(null, array);\r\n var n = array.length;\r\n var m = uniques.length;\r\n var power = Math.pow(10, significance);\r\n var result = 0;\r\n var match = false;\r\n var i = 0;\r\n while (!match && i < m) {\r\n if (x === uniques[i]) {\r\n result = (array.indexOf(uniques[i]) + 1) / (n + 1);\r\n match = true;\r\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\r\n result = (array.indexOf(uniques[i]) + 1 + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n + 1);\r\n match = true;\r\n }\r\n i++;\r\n }\r\n return Math.floor(result * power) / power;\r\n };\r\n\r\n exports.PERCENTRANK.INC = function(array, x, significance) {\r\n significance = (significance === undefined) ? 3 : significance;\r\n array = utils.parseNumberArray(utils.flatten(array));\r\n x = utils.parseNumber(x);\r\n significance = utils.parseNumber(significance);\r\n if (utils.anyIsError(array, x, significance)) {\r\n return error.value;\r\n }\r\n array = array.sort(function(a, b) {\r\n return a - b;\r\n });\r\n var uniques = UNIQUE.apply(null, array);\r\n var n = array.length;\r\n var m = uniques.length;\r\n var power = Math.pow(10, significance);\r\n var result = 0;\r\n var match = false;\r\n var i = 0;\r\n while (!match && i < m) {\r\n if (x === uniques[i]) {\r\n result = array.indexOf(uniques[i]) / (n - 1);\r\n match = true;\r\n } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\r\n result = (array.indexOf(uniques[i]) + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n - 1);\r\n match = true;\r\n }\r\n i++;\r\n }\r\n return Math.floor(result * power) / power;\r\n };\r\n\r\n exports.PERMUT = function(number, number_chosen) {\r\n number = utils.parseNumber(number);\r\n number_chosen = utils.parseNumber(number_chosen);\r\n if (utils.anyIsError(number, number_chosen)) {\r\n return error.value;\r\n }\r\n return FACT(number) / FACT(number - number_chosen);\r\n };\r\n\r\n exports.PERMUTATIONA = function(number, number_chosen) {\r\n number = utils.parseNumber(number);\r\n number_chosen = utils.parseNumber(number_chosen);\r\n if (utils.anyIsError(number, number_chosen)) {\r\n return error.value;\r\n }\r\n return Math.pow(number, number_chosen);\r\n };\r\n\r\n exports.PHI = function(x) {\r\n x = utils.parseNumber(x);\r\n if (x instanceof Error) {\r\n return error.value;\r\n }\r\n return Math.exp(-0.5 * x * x) / SQRT2PI;\r\n };\r\n\r\n exports.PROB = function(range, probability, lower, upper) {\r\n if (lower === undefined) {\r\n return 0;\r\n }\r\n upper = (upper === undefined) ? lower : upper;\r\n\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n probability = utils.parseNumberArray(utils.flatten(probability));\r\n lower = utils.parseNumber(lower);\r\n upper = utils.parseNumber(upper);\r\n if (utils.anyIsError(range, probability, lower, upper)) {\r\n return error.value;\r\n }\r\n\r\n if (lower === upper) {\r\n return (range.indexOf(lower) >= 0) ? probability[range.indexOf(lower)] : 0;\r\n }\r\n\r\n var sorted = range.sort(function(a, b) {\r\n return a - b;\r\n });\r\n var n = sorted.length;\r\n var result = 0;\r\n for (var i = 0; i < n; i++) {\r\n if (sorted[i] >= lower && sorted[i] <= upper) {\r\n result += probability[range.indexOf(sorted[i])];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n exports.QUARTILE = {};\r\n\r\n exports.QUARTILE.EXC = function(range, quart) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n quart = utils.parseNumber(quart);\r\n if (utils.anyIsError(range, quart)) {\r\n return error.value;\r\n }\r\n switch (quart) {\r\n case 1:\r\n return exports.PERCENTILE.EXC(range, 0.25);\r\n case 2:\r\n return exports.PERCENTILE.EXC(range, 0.5);\r\n case 3:\r\n return exports.PERCENTILE.EXC(range, 0.75);\r\n default:\r\n return error.num;\r\n }\r\n };\r\n\r\n exports.QUARTILE.INC = function(range, quart) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n quart = utils.parseNumber(quart);\r\n if (utils.anyIsError(range, quart)) {\r\n return error.value;\r\n }\r\n switch (quart) {\r\n case 1:\r\n return exports.PERCENTILE.INC(range, 0.25);\r\n case 2:\r\n return exports.PERCENTILE.INC(range, 0.5);\r\n case 3:\r\n return exports.PERCENTILE.INC(range, 0.75);\r\n default:\r\n return error.num;\r\n }\r\n };\r\n\r\n exports.RANK = {};\r\n\r\n exports.RANK.AVG = function(number, range, order) {\r\n number = utils.parseNumber(number);\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n if (utils.anyIsError(number, range)) {\r\n return error.value;\r\n }\r\n range = utils.flatten(range);\r\n order = order || false;\r\n var sort = (order) ? function(a, b) {\r\n return a - b;\r\n } : function(a, b) {\r\n return b - a;\r\n };\r\n range = range.sort(sort);\r\n\r\n var length = range.length;\r\n var count = 0;\r\n for (var i = 0; i < length; i++) {\r\n if (range[i] === number) {\r\n count++;\r\n }\r\n }\r\n\r\n return (count > 1) ? (2 * range.indexOf(number) + count + 1) / 2 : range.indexOf(number) + 1;\r\n };\r\n\r\n exports.RANK.EQ = function(number, range, order) {\r\n number = utils.parseNumber(number);\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n if (utils.anyIsError(number, range)) {\r\n return error.value;\r\n }\r\n order = order || false;\r\n var sort = (order) ? function(a, b) {\r\n return a - b;\r\n } : function(a, b) {\r\n return b - a;\r\n };\r\n range = range.sort(sort);\r\n return range.indexOf(number) + 1;\r\n };\r\n\r\n exports.RSQ = function(data_x, data_y) { // no need to flatten here, PEARSON will take care of that\r\n data_x = utils.parseNumberArray(utils.flatten(data_x));\r\n data_y = utils.parseNumberArray(utils.flatten(data_y));\r\n if (utils.anyIsError(data_x, data_y)) {\r\n return error.value;\r\n }\r\n return Math.pow(exports.PEARSON(data_x, data_y), 2);\r\n };\r\n\r\n exports.SMALL = function(range, k) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n k = utils.parseNumber(k);\r\n if (utils.anyIsError(range, k)) {\r\n return range;\r\n }\r\n return range.sort(function(a, b) {\r\n return a - b;\r\n })[k - 1];\r\n };\r\n\r\n exports.STANDARDIZE = function(x, mean, sd) {\r\n x = utils.parseNumber(x);\r\n mean = utils.parseNumber(mean);\r\n sd = utils.parseNumber(sd);\r\n if (utils.anyIsError(x, mean, sd)) {\r\n return error.value;\r\n }\r\n return (x - mean) / sd;\r\n };\r\n\r\n exports.STDEV = {};\r\n\r\n exports.STDEV.P = function() {\r\n var v = exports.VAR.P.apply(this, arguments);\r\n return Math.sqrt(v);\r\n };\r\n\r\n exports.STDEV.S = function() {\r\n var v = exports.VAR.S.apply(this, arguments);\r\n return Math.sqrt(v);\r\n };\r\n\r\n exports.STDEVA = function() {\r\n var v = exports.VARA.apply(this, arguments);\r\n return Math.sqrt(v);\r\n };\r\n\r\n exports.STDEVPA = function() {\r\n var v = exports.VARPA.apply(this, arguments);\r\n return Math.sqrt(v);\r\n };\r\n\r\n exports.VAR = {};\r\n\r\n exports.VAR.P = function() {\r\n var range = utils.numbers(utils.flatten(arguments));\r\n var n = range.length;\r\n var sigma = 0;\r\n var mean = exports.AVERAGE(range);\r\n for (var i = 0; i < n; i++) {\r\n sigma += Math.pow(range[i] - mean, 2);\r\n }\r\n return sigma / n;\r\n };\r\n\r\n exports.VAR.S = function() {\r\n var range = utils.numbers(utils.flatten(arguments));\r\n var n = range.length;\r\n var sigma = 0;\r\n var mean = exports.AVERAGE(range);\r\n for (var i = 0; i < n; i++) {\r\n sigma += Math.pow(range[i] - mean, 2);\r\n }\r\n return sigma / (n - 1);\r\n };\r\n\r\n exports.VARA = function() {\r\n var range = utils.flatten(arguments);\r\n var n = range.length;\r\n var sigma = 0;\r\n var count = 0;\r\n var mean = exports.AVERAGEA(range);\r\n for (var i = 0; i < n; i++) {\r\n var el = range[i];\r\n if (typeof el === 'number') {\r\n sigma += Math.pow(el - mean, 2);\r\n } else if (el === true) {\r\n sigma += Math.pow(1 - mean, 2);\r\n } else {\r\n sigma += Math.pow(0 - mean, 2);\r\n }\r\n\r\n if (el !== null) {\r\n count++;\r\n }\r\n }\r\n return sigma / (count - 1);\r\n };\r\n\r\n exports.VARPA = function() {\r\n var range = utils.flatten(arguments);\r\n var n = range.length;\r\n var sigma = 0;\r\n var count = 0;\r\n var mean = exports.AVERAGEA(range);\r\n for (var i = 0; i < n; i++) {\r\n var el = range[i];\r\n if (typeof el === 'number') {\r\n sigma += Math.pow(el - mean, 2);\r\n } else if (el === true) {\r\n sigma += Math.pow(1 - mean, 2);\r\n } else {\r\n sigma += Math.pow(0 - mean, 2);\r\n }\r\n\r\n if (el !== null) {\r\n count++;\r\n }\r\n }\r\n return sigma / count;\r\n };\r\n\r\n exports.WEIBULL = {};\r\n\r\n exports.WEIBULL.DIST = function(x, alpha, beta, cumulative) {\r\n x = utils.parseNumber(x);\r\n alpha = utils.parseNumber(alpha);\r\n beta = utils.parseNumber(beta);\r\n if (utils.anyIsError(x, alpha, beta)) {\r\n return error.value;\r\n }\r\n return (cumulative) ? 1 - Math.exp(-Math.pow(x / beta, alpha)) : Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha / Math.pow(beta, alpha);\r\n };\r\n\r\n exports.Z = {};\r\n\r\n exports.Z.TEST = function(range, x, sd) {\r\n range = utils.parseNumberArray(utils.flatten(range));\r\n x = utils.parseNumber(x);\r\n if (utils.anyIsError(range, x)) {\r\n return error.value;\r\n }\r\n\r\n sd = sd || exports.STDEV.S(range);\r\n var n = range.length;\r\n return 1 - exports.NORM.S.DIST((exports.AVERAGE(range) - x) / (sd / Math.sqrt(n)), true);\r\n };\r\n\r\n return exports;\r\n})();\r\n\r\nfor (var i = 0; i < Object.keys(jexcel.methods).length; i++) {\r\n var methods = jexcel.methods[Object.keys(jexcel.methods)[i]];\r\n for (var j = 0; j < Object.keys(methods).length; j++) {\r\n if (typeof(methods[Object.keys(methods)[j]]) == 'function') {\r\n window[Object.keys(methods)[j]] = methods[Object.keys(methods)[j]];\r\n } else {\r\n window[Object.keys(methods)[j]] = function() {\r\n return Object.keys(methods)[j] + 'Not implemented';\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n return jexcel;\r\n\r\n})));"],"names":["factory","jSuites","options","obj","app","document","querySelector","el","body","modules","querySelectorAll","i","length","m","getAttribute","window","guid","Math","floor","random","toString","w","d","e","documentElement","g","getElementsByTagName","innerWidth","clientWidth","innerHeight","clientHeight","changedTouches","x","pageX","y","pageY","clientX","scrollLeft","clientY","scrollTop","click","evt","MouseEvent","bubbles","cancelable","view","dispatchEvent","element","className","foundElement","path","classList","contains","parentNode","targetElement","tagName","formObject","ret","elements","name","value","url","__callback","http","XMLHttpRequest","open","send","status","console","error","files","data","file","src","remove","substr","content","indexOf","extension","lastIndexOf","size","date","cover","type","method","keys","Object","o","j","push","encodeURIComponent","prop","z","join","httpRequest","setRequestHeader","dataType","cache","withCredentials","beforeSend","onload","result","JSON","parse","responseText","success","err","ajax","requests","index","splice","complete","slideLeft","direction","done","add","setTimeout","slideRight","slideTop","slideBottom","fadeIn","fadeOut","keyDownControls","which","nodes","slider","close","dialog","onconfirm","mask","apply","actionUpControl","getLinkElement","target","link","history","back","panel","pages","addEventListener","getElement","scrollTo","left","behavior","calendar","current","prev","get","style","display","next","tooltip","hide","init","onpopstate","state","route","ignoreHistory","defaults","validRange","startingDay","format","readonly","today","time","resetButton","placeholder","months","weekdays","weekdays_short","onclose","onchange","fullscreen","mode","position","opened","property","hasOwnProperty","toUpperCase","split","parseInt","h","Date","getFullYear","getMonth","getDate","getHours","getMinutes","two","calendarReset","createElement","innerHTML","calendarConfirm","calendarControls","appendChild","calendarContainer","calendarContent","calendarTableContainer","calendarHeaderPrev","setAttribute","calendarLabelYear","calendarLabelMonth","calendarHeaderTitle","calendarHeaderNext","calendarHeaderRow","calendarHeader","calendarBody","calendarFooter","calendarTable","calendarSelectHour","this","calendarSelectMin","calendarControlsFooter","calendarControlsTime","maxWidth","calendarControlsUpdateButton","calendarControlsUpdate","flexGrow","calendarBackdrop","updateActions","currentDay","removeAttribute","getDays","getWindowWidth","rect","getBoundingClientRect","rectContent","bottom","height","top","ignoreEvents","update","getValue","setValue","getYears","val","newValue","oldValue","setLabel","innerText","reset","year","month","day","getDay","hour","min","isCurrentMonthAndYear","numberOfDays","firstDay","row","cell","emptyRow","fontWeight","now","test1","test2","getMonths","html","getDateString","fromFormatted","extractDateFromString","mouseUpControls","action","stopPropagation","preventDefault","test","insertBefore","nextSibling","toLowerCase","prettify","texts","justNow","xMinutesAgo","xHoursAgo","xDaysAgo","xWeeksAgo","xMonthsAgo","xYearsAgo","d1","d2","total","String","prototype","replace","text","round","prettifyAll","dateOnly","s","getSeconds","v1","v2","search","weekday","Array","substring","isOpen","color","closeOnChange","palette","colors","col","shade","container","backdrop","closeButton","onclick","table","tr","td","backgroundColor","values","focus","selected","contextmenu","items","create","width","itemContainer","itemText","title","disabled","shortcut","itemShortCut","foundId","id","dialogHeader","dialogTitle","dialogMessage","dialogFooter","dialogContainer","dialogConfirm","dialogConfirmButton","confirmLabel","dialogCancel","dialogCancelButton","cancelLabel","oncancel","message","opacity","confirm","alert","dropdown","extractFromDom","multiple","autocomplete","onopen","onblur","groups","minWidth","containerHeader","header","keyTimer","clearTimeout","find","setData","getUrl","setUrl","createItem","item","textLowerCase","image","node","removeChild","group","groupNames","groupName","groupArrow","groupContent","getText","asArray","isArray","updateLabel","selectIndex","oldLabel","currentIndex","indexToRemove","resetSelected","newLabel","selectItem","str","cursor","updateCursor","rectContainer","resetCursor","blur","offsetTop","clientTop","firstVisible","newIndex","first","last","hasEvents","mouseup","onkeydown","children","shiftKey","select","undefined","offsetWidth","a","b","c","div","editor","snippet","toolbar","maxHeight","remoteParser","youtubeKey","userSearch","parseURL","dropZone","dropAsAttachment","acceptImages","acceptFiles","maxFileSize","border","padding","onfocus","onenter","onkeyup","editorTimer","editorAction","overflowY","extractImageFromHtml","img","addImage","insertNodeAtCaret","newNode","sel","range","getSelection","rangeCount","getRangeAt","deleteContents","insertNode","setStartAfter","setEndAfter","removeAllRanges","addRange","appendElement","description","host","verifyEditor","thumbsContainer","detectUrl","getDomain","location","hostname","importImage","youtubeParser","getYoutube","getWebsite","parseContent","p","thumbnails","medium","encodeURI","trim","log","getData","json","tagged","users","userId","key","stringify","addPdf","canvas","Image","getContext","drawImage","toBlob","blob","newImage","URL","createObjectURL","toDataURL","addFile","reader","FileReader","lastModified","readAsDataURL","destroy","removeEventListener","editorMouseUp","editorMouseDown","editorMouseMove","editorKeyUp","editorKeyDown","editorDragStart","editorDragEnter","editorDragOver","editorDrop","editorPaste","editorBlur","editorFocus","removeRange","newHeight","clipboardData","originalEvent","nodeName","execCommand","caretRangeFromPoint","rangeParent","createRange","setStart","rangeOffset","anchorNode","dataTransfer","getDefaultToolbar","icon","userSelect","itemIcon","setCursor","startContainer","endContainer","setEnd","links","match","queryCommandState","singleFile","extensionNotAllowed","imageTooSmall","lastmodified","small","addImages","addFromFile","imageFile","v","srcElement","extentionNotAllowed","addFromUrl","attachmentInput","loading","show","login","href","prepareRequest","accessToken","deviceToken","facebookUrl","facebookAuthentication","onsuccess","onerror","logo","newProfile","newProfileUrl","newProfileLogin","newPasswordValidation","messageElement","divLogo","labelCode","inputCode","divCode","inputHash","divHash","inputRecovery","divRecovery","labelLogin","inputLogin","divLogin","labelName","inputName","divName","labelUsername","inputUsername","divUsername","labelPassword","inputPassword","divPassword","keyCode","execute","labelRepeatPassword","inputRepeatPassword","divRepeatPassword","labelRemember","inputRemember","divRememberButton","actionButton","divActionButton","cancelButton","requestAccess","divCancelButton","labelCaptcha","inputCaptcha","imageCaptcha","divCaptcha","facebookButton","divFacebookButton","requestLoginViaFacebook","inputRequest","divRequestButton","requestNewPassword","inputNewProfile","divNewProfileButton","showMessage","call","captcha","codeConfirmation","changeMyPassword","hash","localStorage","getItem","FB","getLoginStatus","response","f","authResponse","scope","jDestroy","fbLogin","jStart","jError","jExit","event","u","pattern","RegExp","setItem","getFormElements","password","sha512","token","queryString","int64","msint_32","lsint_32","highOrder","lowOrder","T1","T2","H","K","W","safe_add_2","lsw","msw","safe_add_4","safe_add_5","maj","ch","rotr","n","sigma0","rotr28","rotr34","rotr39","sigma1","rotr14","rotr18","rotr41","gamma0","rotr1","rotr8","shr7","shr","rotr19","rotr61","shr6","strlen","unescape","utf8_encode","bin","len","charCodeAt","str2binb","binarray","srcByte","hex_tab","charAt","binb2hex","pieces","run","decimal","Number","number","valueDecimal","currentValue","prepare","process","selectionStart","selectionEnd","fromKeyCode","input","separator","t","reverse","_to_ascii","shiftUps","fromCharCode","mobile","createPage","callback","page","refresh","onpush","script","eval","setTitle","closed","showPage","onleave","pushState","mixed","routePath","getContainer","toolbarContent","setBadge","firstChild","toolbarItem","toolbarIcon","toolbarBadge","toolbarBadgeContent","badge","toolbarTitle","actionsheet","actionContent","actionGroup","actionItem","actionInput","modal","temp","resetPosition","mouseDownControls","mouseMoveControls","selection","empty","notification","timeout","autoHide","closeable","notificationContainer","notificationHeader","notificationImage","notificationIcon","notificationName","notificationClose","notificationDate","notificationContent","notificationTitle","notificationMessage","rating","previousSibling","currentImage","addFiles","getFiles","allowAttachment","attachmentIcon","longTouchTimer","mouseDown","mouseUp","offsetX","sorting","offsetY","borderTop","borderBottom","tabs","allowCreate","oncreate","animation","autoName","prefixName","hideHeaders","setBorder","headers","prompt","lastChild","headersItem","contentItem","tags","limit","limitMessage","validation","onbeforechange","searchContainer","searchTerms","searchIndex","searchTimer","getSelectionStart","caret","filter","extractTags","isValid","terms","nodeValue","tagsMouseUp","tagsKeyDown","tagsKeyUp","tagsPaste","tagsFocus","tagsBlur","collapse","nodeType","word","anchorOffset","tracker","ignore","currentHash","submitButton","onbeforesave","onsave","load","save","validate","getElements","validateElement","emailChecker","addError","delError","getError","setHash","getHash","isChanged","resetTracker","setIgnore","ignoreFlag","confirmationMessage","returnValue","module","exports","jexcel","Element","HTMLDocument","copyCompatibility","rows","columns","colHeaders","colWidths","colAlignments","nestedHeaders","defaultColWidth","defaultColAlign","minSpareRows","minSpareCols","minDimensions","allowExport","includeHeadersOnDownload","columnSorting","columnDrag","columnResize","rowResize","rowDrag","editable","allowInsertRow","allowManualInsertRow","allowInsertColumn","allowManualInsertColumn","allowDeleteRow","allowDeletingAllRows","allowDeleteColumn","allowRenameColumn","allowComments","wordWrap","imageOptions","csv","csvFileName","csvHeaders","csvDelimiter","selectionCopy","mergeCells","pagination","paginationOptions","lazyLoading","loadingSpin","tableOverflow","tableHeight","tableWidth","meta","parseFormulas","autoIncrement","autoCasting","onundo","onredo","onafterchanges","onbeforeinsertrow","oninsertrow","onbeforeinsertcolumn","oninsertcolumn","onbeforedeleterow","ondeleterow","onbeforedeletecolumn","ondeletecolumn","onmoverow","onmovecolumn","onresizerow","onresizecolumn","onsort","onselection","onpaste","onbeforepaste","onmerge","onchangeheader","oneditionstart","oneditionend","onchangestyle","onchangemeta","onchangepage","updateTable","detachForUpdates","noRecordsFound","showingPage","entries","columnName","insertANewColumnBefore","insertANewColumnAfter","deleteSelectedColumns","renameThisColumn","orderAscending","orderDescending","insertANewRowBefore","insertANewRowAfter","deleteSelectedRows","editComments","addComments","comments","clearComments","copy","paste","saveAs","about","areYouSureToDeleteTheSelectedRows","areYouSureToDeleteTheSelectedColumns","thisActionWillDestroyAnyExistingMergedCellsAreYouSure","thisActionWillClearYourSearchResultsAreYouSure","thereIsAConflictWithAnotherMergedCell","invalidMergeProperties","cellAlreadyMerged","noCellsSelected","textKey","corner","contextMenu","textarea","ads","thead","tbody","results","searchInput","pageNumber","headerContainer","colgroupContainer","records","formula","colgroup","highlighted","selectedCell","selectedContainer","historyIndex","edition","hashString","resizing","dragging","activate","prepareTable","source","allowEmpty","align","createTable","searchText","createTextNode","resetSelection","tempCol","paginationUpdateContainer","paginationDropdown","createNestedHeader","createCellHeader","tabIndex","sessionStorage","span","paginationInfo","paginationPages","createToolbar","setStyle","size_i","size_j","min_i","min_j","max_i","max_j","startNumber","finalNumber","createRow","updatePagination","num","setMerge","dataOnly","dataset","px","py","getJson","getRowData","rowNumber","setRowData","getColumnNameFromId","getColumnData","columnNumber","setColumnData","colNumber","createCell","checked","readOnly","formatted","getDropDownValue","render","executeFormula","colAlign","textAlign","whiteSpace","overflow","colWidth","getColumnName","nestedInformation","headerIndex","colspan","numberOfColumns","column","k","toolbarDropdownOption","cellName","rowspan","ignoreHistoryAndEvents","x1","y1","x2","y2","getIdFromColumnName","updateCell","updateSelection","setHistory","getMerge","removeMerge","keepOptions","info","destroyMerged","isColMerged","cols","isRowMerged","openEditor","createEditor","minHeight","closeEditor","getCell","getCellFromCoords","getLabel","getLabelFromCoords","processedValue","getValueFromCoords","force","columnId","updateFormulaChain","setValueFromCoords","setCheckRadioValue","record","copyData","breakControl","posx","posy","tokens","affectedTokens","updateFormula","setDate","doubleDigitFormat","refreshSelection","updateSelectionFromCoords","conditionalSelectionUpdate","previousStatus","ux","uy","el1","el2","origin","previousState","borderLeft","borderRight","updateCornerPosition","removeCopySelection","updateCopySelection","x3","y3","contentRect","lastRect","w2","h2","updateScroll","w1","h1","referenceRect","getWidth","$","setWidth","oldWidth","setHeight","oldHeight","getHeight","getHeader","setHeader","getHeaders","getMeta","setMeta","updateMeta","affectedCells","newMeta","getStyle","resetStyle","applyStyle","cellId","oneApplication","getComments","withAuthor","setComments","author","getConfig","orderBy","order","slice","sort","valueA","valueB","updateOrderArrow","updateOrder","updateTableReferences","loadPage","moveRow","ignoreDom","resetSearch","insertRow","numOfRows","lastRow","rowIndex","currentRecords","currentData","currentRows","rowRecords","rowData","rowNode","deleteRow","getSelectedRows","mergeExists","moveColumn","insertColumn","properties","numOfColumns","lastColumn","columnIndex","injectArray","currentHeaders","currentColgroup","historyHeaders","historyColgroup","historyRecords","historyData","currentRecord","deleteColumn","getSelectedColumns","asIds","getHighlighted","mergeCellUpdates","updatePosition","columnIdFrom","columnIdTo","totalX","totalY","updateFormulas","numBlankRows","numBlankCols","showColumn","hideColumn","showIndex","hideIndex","chainLoopProtection","referencesToUpdate","newFormula","letter","testLetter","testNumber","exec","expression","formulaResults","formulaLoopProtection","parentId","tokensUpdate","e1","e2","evalstring","parseNumber","res","up","ctrlKey","visible","loadValidation","loadUp","whichPage","down","loadDown","right","selectAll","quantityPerPage","ceil","startRow","finalRow","currentPage","selectedPage","totalPages","query","addToResult","oldPage","quantyOfPages","paginationItem","args","arguments","download","includeHeaders","Blob","navigator","msSaveOrOpenBlob","pom","changes","delimiter","returnData","colLabel","rowLabel","tmp","label","strLabel","parseCSV","newStyle","oldStyle","styleIndex","colIndex","historyProcessRow","historyRecord","historyProcessColumn","undo","redo","combo","arr","quote","cc","nc","build","newData","shift","comment","clipboard","readText","then","scrollControls","timeControlLoading","scrollHeight","timeControl","destroyEventHandlers","mouseOverControls","doubleClickControls","pasteControls","contextMenuControls","touchStartControls","touchEndControls","altKey","editorTextarea","editorValue","editorIndexOf","selectedRow","selectedHeader","metaKey","rowId","validLetter","cutControls","copyControls","isMouseAction","buttons","mouseButton","button","jexcelTable","selectedCorner","mousePosition","destination","c1","c2","getCellCoords","newWidth","tempWidth","tempHeight","enabled","tmpElement","createTabs","spreadsheet","sheetName","fromSpreadsheet","oReq","convert","workbook","spreadsheets","SheetNames","forEach","Sheets","wpx","hpx","r","max_x","max_y","fgColor","rgb","numColumns","Uint8Array","responseType","arraybuffer","wb","XLSX","read","cellFormula","cellStyles","onreadystatechange","readyState","ff","convertResponseBodyToText","responseBody","idx","concat","code","pow","jexcelSection","jexcelElement","fn","spreadsheetContainer","jQuery","nil","Error","div0","ref","na","utils","array","reduce","aIsArray","bIsArray","argsToArray","isFlat","flattenShallow","arrayEach","flatten","power","bool","isNaN","string","parseFloat","parsed","matrix","pnarr","parseNumberArray","d1900","UTC","parseDate","getTime","parseDateArray","anyIsError","arrayValuesToNumbers","rest","initial","iteratee","transpose","map","methods","datetime","WEEK_TYPES","serial","DATE","DATEVALUE","date_text","DAY","serial_number","DAYS","end_date","start_date","DAYS360","EDATE","setMonth","EOMONTH","HOUR","INTERVAL","second","sec","ISOWEEKNUM","setHours","yearStart","MINUTE","MONTH","NETWORKDAYS","holidays","INTL","weekend","NOW","SECOND","TIME","minute","TIMEVALUE","time_text","TODAY","WEEKDAY","return_type","WEEKNUM","WORKDAY","days","YEAR","YEARFRAC","basis","database","compact","findResultIndex","criterias","matches","maxCriteriaLength","l","currentCriteriaResult","hasMatchingCriteria","criteria","criteriaField","FINDFIELD","DAVERAGE","field","resultIndexes","targetFields","sum","DCOUNT","DCOUNTA","DGET","DMAX","maxValue","DMIN","minValue","DPRODUCT","targetValues","DSTDEV","DSTDEVP","DSUM","DVAR","DVARP","MATCH","lookupValue","lookupArray","matchType","indexValue","engineering","isValidBinaryNumber","BESSELI","BESSELJ","BESSELK","BESSELY","BIN2DEC","stringified","BIN2HEX","places","REPT","BIN2OCT","BITAND","number1","number2","BITLSHIFT","abs","BITOR","BITRSHIFT","BITXOR","COMPLEX","real","imaginary","suffix","sign","CONVERT","from_unit","to_unit","alt","units","binary_prefixes","Yi","Zi","Ei","Pi","Ti","Gi","Mi","ki","unit_prefixes","Y","Z","E","P","T","G","M","from","to","base_from_unit","base_to_unit","from_multiplier","to_multiplier","from_binary_prefix","from_unit_prefix","to_binary_prefix","to_unit_prefix","DEC2BIN","DEC2HEX","DEC2OCT","DELTA","ERF","lower_bound","upper_bound","PRECISE","ERFC","GESTEP","step","HEX2BIN","negative","HEX2DEC","HEX2OCT","IMABS","inumber","IMREAL","IMAGINARY","sqrt","plus","minus","unit","IMARGUMENT","PI","atan","IMCONJUGATE","IMCOS","cos","exp","sin","IMCOSH","IMCOT","IMDIV","IMSIN","inumber1","inumber2","unit1","unit2","den","IMEXP","IMLN","IMLOG10","IMLOG2","IMPOWER","IMPRODUCT","IMSEC","IMSECH","IMSINH","IMSQRT","IMCSC","IMCSCH","IMSUB","IMSUM","IMTAN","OCT2BIN","OCT2DEC","OCT2HEX","financial","validDate","ensureDate","ACCRINT","issue","settlement","rate","par","frequency","ACCRINTM","AMORDEGRC","AMORLINC","COUPDAYBS","COUPDAYS","COUPDAYSNC","COUPNCD","COUPNUM","COUPPCD","CUMIPMT","periods","start","end","payment","PMT","interest","FV","CUMPRINC","principal","DB","cost","salvage","life","period","toFixed","ceiling","DDB","factor","DISC","DOLLARDE","dollar","fraction","LN10","LN2","DOLLARFR","DURATION","EFFECT","term","FVSCHEDULE","schedule","future","INTRATE","IPMT","present","IRR","guess","irrResult","dates","irrResultDeriv","frac","positive","newRate","epsRate","resultValue","resultRate","contLoop","ISPMT","MDURATION","MIRR","finance_rate","reinvest_rate","payments","incomes","NPV","NOMINAL","NPER","ODDFPRICE","ODDFYIELD","ODDLPRICE","ODDLYIELD","PDURATION","PPMT","PRICE","PRICEDISC","PRICEMAT","PV","RATE","iter","t1","t2","NaN","RECEIVED","RRI","SLN","SYD","TBILLEQ","maturity","discount","TBILLPRICE","TBILLYIELD","price","VDB","XIRR","XNPV","YIELD","YIELDDISC","YIELDMAT","information","ERROR","TYPE","error_val","INFO","ISBLANK","ISBINARY","ISERR","isFinite","ISERROR","ISEVEN","ISFORMULA","ISLOGICAL","ISNA","ISNONTEXT","ISNUMBER","ISODD","ISREF","ISTEXT","N","NA","SHEET","SHEETS","logical","then_value","otherwise_value","valueIfError","value_if_na","targetValue","argc","switchCount","switchSatisfied","defaultClause","math","acos","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I","asin","number_x","number_y","atan2","radix","min_length","max","significance","CEILING","MATH","COMBIN","number_chosen","FACT","COMBINA","COS","COSH","COT","tan","COTH","CSC","CSCH","DECIMAL","DEGREES","EVEN","EXP","MEMOIZED_FACT","FACTDOUBLE","FLOOR","GCD","INT","LCM","pop","LN","LOG","base","LOG10","MDETERM","MINVERSE","MMULT","MOD","dividend","divisor","modulus","MROUND","MULTINOMIAL","MUNIT","ODD","POWER","PRODUCT","QUOTIENT","numerator","denominator","RADIANS","RAND","RANDBETWEEN","ROMAN","ROUND","digits","ROUNDDOWN","ROUNDUP","SEC","SECH","SERIESSUM","coefficients","SIGN","SIN","SINH","SQRT","SQRTPI","SUBTOTAL","ADD","num1","num2","MINUS","DIVIDE","MULTIPLY","factor1","factor2","GTE","LT","LTE","EQ","value1","value2","NE","POW","exponent","SUM","argsKeys","elt","SUMIF","SUMIFS","n_range_elements","n_criterias","condition","SUMPRODUCT","SUMSQ","numbers","SUMX2MY2","array_x","array_y","SUMX2PY2","SUMXMY2","TAN","TANH","TRUNC","misc","hasElement","FLATTEN","ARGS2ARRAY","REFERENCE","context","reference","opening","JOIN","NUMBERS","NUMERAL","trueFound","falseFound","text1","text2","find_text","within_text","line","begin","txt","regular_expression","full","replacement","new_text","foundAt","old_text","occurrence","UNICHAR","CHAR","UNICODE","CODE","UPPER","VALUE","stats","SQRT2PI","AVEDEV","AVERAGE","count","AVERAGEA","AVERAGEIF","average_range","average_count","AVERAGEIFS","COUNT","COUNTA","COUNTBLANK","COUNTIN","blanks","COUNTIF","COUNTIFS","COUNTUNIQUE","UNIQUE","FISHER","FISHERINV","e2y","FREQUENCY","bins","LARGE","MAX","MAXA","MIN","MINA","MODE","MULT","currentItem","maxItems","SNGL","PERCENTILE","EXC","fl","cleanFloat","INC","PERCENTRANK","uniques","PERMUT","PERMUTATIONA","PHI","PROB","probability","lower","upper","sorted","QUARTILE","quart","RANK","AVG","RSQ","data_x","data_y","PEARSON","SMALL","STANDARDIZE","mean","sd","STDEV","VAR","S","STDEVA","VARA","STDEVPA","VARPA","sigma","WEIBULL","DIST","alpha","beta","cumulative","TEST","NORM"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/131.ee437eeefadd750d.js.map.gz b/_static/131.ee437eeefadd750d.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..36006be03ffabd941a916e5b00292bc9737e6b8a GIT binary patch literal 224003 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

I2*U2RO@S536|7LHVJ{eozM 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ʸ?~V#c6^Y4@Ar5`hD&E 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

8w^6^@?S0N~08-x0Fz320erWF^ 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 KnGLQmjS&Dp_N=-9 literal 0 HcmV?d00001 diff --git a/_static/168.fe63e6dec2d06468.js b/_static/168.fe63e6dec2d06468.js new file mode 100644 index 0000000..5d9bfd6 --- /dev/null +++ b/_static/168.fe63e6dec2d06468.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[168],{11168:(e,t,i)=>{i.r(t),i.d(t,{default:()=>o});var s=i(78673);class o extends s.A{constructor(e){super(e);var t=e.orig;this.origElem=t,this.divid=t.id,this.children=this.origElem.childNodes,this.optionList=[],this.optsArray=[],this.comment=!1,this.origElem.hasAttribute("data-comment")&&(this.comment=!0),this.resultsViewer=this.origElem.getAttribute("data-results"),this.getQuestionText(),this.getOptionText(),this.renderPoll(),this.checkPollStorage(),this.caption="Poll",this.addCaption("runestone")}getQuestionText(){for(var e,t=0;t${this.question}`,this.pollForm.id=this.divid+"_form",this.pollForm.method="get",this.pollForm.action="",this.pollForm.onsubmit=function(){return!1},this.pollFieldset=document.createElement("fieldset"),this.pollForm.appendChild(this.pollFieldset);for(var t=0;t${eBookConfig.useRunestoneServices?"Only Your last reponse is recorded":"Thanks, your answers are not recorded"}`;else{const e=document.createElement("span");e.id=`${this.divid}_sent`,e.innerHTML=`${eBookConfig.useRunestoneServices?"Thanks, your response has been recorded":"Thanks, your answers are not recorded"}`,this.pollForm.appendChild(e)}if("all"===this.resultsViewer){var o={};o.div_id=this.divid,o.course=eBookConfig.course;try{const e=new URLSearchParams(o),t=await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${e.toString()}`),i=await t.json();this.showPollResults(i)}catch(e){this.indicate_component_ready()}}}}showPollResults(e){var t=(e=e.detail).total,i=e.opt_counts,s=(e.div_id,e.my_vote);if(s>-1&&(this.optsArray[s].checked=!0),"all"===this.resultsViewer&&"true"===localStorage.getItem(this.divid)||eBookConfig.isInstructor){this.resultsDiv.innerHTML=`Results: ${t} responses

`;var o=document.createElement("div");o.classList.add("results-container");for(var n=0;n0?l=(r=i[n])/t*100:(r=0,l=0);var d=r+" ("+Math.round(10*l)/10+"%)";let e=document.createElement("div");e.className="progresscounter",e.innerText=`${n+1}. `;let s=document.createElement("div"),a="";a=l>10?`
`+d+"
":`
`+d+"
",s.innerHTML=a,o.appendChild(e),o.appendChild(s)}this.resultsDiv.appendChild(o)}this.indicate_component_ready()}disableOptions(){}async checkPollStorage(){if(localStorage.length>0){var e={};e.div_id=this.divid,e.course=eBookConfig.course;try{const t=new URLSearchParams(e),i=await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${t.toString()}`),s=await i.json();this.showPollResults(s)}catch(e){this.indicate_component_ready()}}else this.indicate_component_ready()}}document.addEventListener("runestone:login-complete",(function(){document.querySelectorAll("[data-component=poll]").forEach((function(e,t){try{window.componentMap[e.id]=new o({orig:e})}catch(t){console.log(`Error rendering Poll Problem ${e.id}\n Details: ${t}`),console.log(t.stack)}}))})),void 0===window.component_factory&&(window.component_factory={}),window.component_factory.poll=function(e){return new o(e)}}}]); +//# sourceMappingURL=168.fe63e6dec2d06468.js.map \ No newline at end of file diff --git a/_static/168.fe63e6dec2d06468.js.gz b/_static/168.fe63e6dec2d06468.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..edcf3fe2d8db32e03b7388408a6ac2dd7c454b4b GIT binary patch literal 2073 zcmV+!2n=yT5Fu3EwfKO6p*l8t8f|C=!dAJ+6(+V_3 zMgNP#1E`jHQ!s6Xl{l$Rqr^W7(AMft7&(8p{7c?mME6rrA7qwoR+1Sc_jch1Bh03- zU1#NCO6(qSYb;H#-Lg+qA@EMb0SVT77OWwpjr#ki_wPd83LY22?L<1yxbb=5pz?cV zE!D&B?Yb4Io$;l%=R9!c!y(&GPM`)SS13)vt%1S1o|;vK6JZ!ffgkyTrZOokYN7;v zH(=evZ-@xK*Z?8NvwxFnepD76o0BHyzEJf}Ix35_^atVK6MJbJk#)l(TZ7wjjLUMa zB6|$v(izTkc+UppkVm#-DP6|bxoE-mTEA^6J80l5fZUHN4Q;EB>H>mf_PH_HR#uHTm%0q1Dnlb_h)Pj zna$)u)Hs!B8|)I(p{?6&xw}F?b_o}GVLjB%RG^AG(lIf&Nz%wb0xPm9GF7t3dj$8) zG6zZ&OS!aP7c47K7C#-bJDEwI!0F~*Znxen&=xBP=!k_dPwuO%x>VZ2j>cTLcn8+$ zT!GC3cBTE4HZlZ3i-%k*;laAjCsnn$K4M#0smtH5;5KMC)q9|L590(86nu&B?#`e^ zljwQI68M#ynZKu~62{Ui;5{?5pV;F8q4l1lu3`-?l(>HuFir6a1NJ*8+BdivL)Q z#)<^Nn(3uTyd8iW$P)UX*YS70l%Usf&&vElX!L4EuZI;2lJybmGf;Et#LT|Uh^UIW-?)$Nh!iIeT#JA?+%6pM^&7N!fjZw=~prRVfi-oM-{EOYwk3zkAmQ=(abq4r4uNnqp zzj03C6z+`y#DC@56IBC&g(hJLDO!!LjTzp7RnpZumXU*3t=vP2=q;26TKCT_#YQc+ z;S})T{qy6y8(=D#ePD{swJ))nDSKetcoQ(m%z~t@2G3wj)dJKV^2>xjuFtS{fz~z? zX9zIsP-W~T9*vB=!O2TZ{a`&pGOKi(=r?W04p(e?CLe75e{|<8^CZk(4pq}dUgNj| zwvV~TA+icfm#7r~w2xQCY^aYRh*H3&o&{)#VOdxX^hn(p4(xJB>NqjG2qH-4%e#d% zSlbwVJvi-cUR1jVqPN|pd|n+-(aDLcRorY8^>nYOgU_Gq0p|Mc_C;EGU+2~ujK_n@ z;r_+hc;F%K*IS5c?_#V5_TMOWSb1^^M;Ns@sJioX%ZX$+wh3&?;@H?G?AT_dRG7tl zC~gPc%Z&Pp+Rwq6`L@^X_VH^s%xKqj(UhtV@qE&;Y#iaxghNZO`)wAS^|~GMO+ezO z$3W*oH3Zs+5hb~jQ*=R>X-4BW9l+ALZ4si=TSwlgRIHzQp)gAdjAnyg_p(0Mzua8% za&Tz%bd0XmzntnKNvwFu;FOdU-p9OU>u+Lj&c$i9@*T`$GPtl^ZL8D{hL(a}4n`d$ zbZjHIJ8-WC_g~Wge;Vg5K5U}rbiAB1HRYo3b<4j!oK)gN=95s@aLurNwT9E?g09BW zT2<7yWwrf8%SgFq;|$!RT;tGD4I=x$RjjZPG|Jb3e9(0e2it++KnI2|>cHk;2Zmjj z{9kln)9S#w(#@aj!1`-Cu;pm)S*dN2?LTL>Klb!-AVR3w(^#26LcjJx-73JzT`g}Q z1KT67aBL*Q%`ai@QffnRYv1cqy=@1;CPZxOS!cm6t>!1*gUPa*j(?VkS?7k<;xoaKK2s<4Z01Qq}Q DX7CU4 literal 0 HcmV?d00001 diff --git a/_static/168.fe63e6dec2d06468.js.map b/_static/168.fe63e6dec2d06468.js.map new file mode 100644 index 0000000..838ae43 --- /dev/null +++ b/_static/168.fe63e6dec2d06468.js.map @@ -0,0 +1 @@ +{"version":3,"file":"168.fe63e6dec2d06468.js","mappings":"2JASe,MAAMA,UAAa,IAC9B,WAAAC,CAAYC,GACRC,MAAMD,GACN,IAAIE,EAAOF,EAAKE,KAChBC,KAAKC,SAAWF,EAChBC,KAAKE,MAAQH,EAAKI,GAClBH,KAAKI,SAAWJ,KAAKC,SAASI,WAC9BL,KAAKM,WAAa,GAClBN,KAAKO,UAAY,GACjBP,KAAKQ,SAAU,EACXR,KAAKC,SAASQ,aAAa,kBAC3BT,KAAKQ,SAAU,GAEnBR,KAAKU,cAAgBV,KAAKC,SAASU,aAAa,gBAChDX,KAAKY,kBACLZ,KAAKa,gBACLb,KAAKc,aAELd,KAAKe,mBACLf,KAAKgB,QAAU,OACfhB,KAAKiB,WAAW,YACpB,CACA,eAAAL,GAII,IAFA,IACIM,EACKC,EAAI,EAAGA,EAAInB,KAAKI,SAASgB,OAAQD,IACtC,GAAgC,MAA5BnB,KAAKI,SAASe,GAAGE,QAAiB,CAClCH,EAJIlB,KAIgBI,SAASe,GAC7B,KACJ,CAEJ,IAAIG,EAAYJ,EAAYK,UAExBC,EADWxB,KAAKC,SAASwB,UACTC,MAAMJ,GAC1BtB,KAAK2B,SAAWH,EAAK,EACzB,CACA,aAAAX,GAGI,IADA,IAAIe,EAAQ5B,KACHmB,EAAI,EAAGA,EAAInB,KAAKI,SAASgB,OAAQD,IACL,MAA7BS,EAAMxB,SAASe,GAAGE,SAClBO,EAAMtB,WAAWuB,KAAKD,EAAMxB,SAASe,GAAGM,UAGpD,CACA,UAAAX,GAGId,KAAK8B,aAAeC,SAASC,cAAc,OAC3ChC,KAAKiC,SAAWF,SAASC,cAAc,QACvChC,KAAKkC,WAAaH,SAASC,cAAc,OACzChC,KAAKkC,WAAWC,UAAUC,IAAI,gBAC9BpC,KAAK8B,aAAa3B,GAAKH,KAAKE,MAC5B,MAAMmC,EAAYrC,KAAKC,SAASU,aAAa,SACzC0B,GACArC,KAAK8B,aAAaK,UAAUC,OAAOC,EAAUX,MAAM,KAAKY,OAAOC,UAEnEvC,KAAKiC,SAASR,UAAY,mCAAmCzB,KAAK2B,iBAClE3B,KAAKiC,SAAS9B,GAAKH,KAAKE,MAAQ,QAChCF,KAAKiC,SAASO,OAAS,MACvBxC,KAAKiC,SAASQ,OAAS,GACvBzC,KAAKiC,SAASS,SAAW,WAAc,OAAO,CAAO,EACrD1C,KAAK2C,aAAeZ,SAASC,cAAc,YAC3ChC,KAAKiC,SAASW,YAAY5C,KAAK2C,cAC/B,IAAK,IAAIxB,EAAI,EAAGA,EAAInB,KAAKM,WAAWc,OAAQD,IAAK,CAC7C,IAAI0B,EAAQd,SAASC,cAAc,SACnCa,EAAMV,UAAUC,IAAI,eACpBS,EAAMpB,WAAazB,KAAKM,WAAWa,GACnC,IAAI2B,EAAQf,SAASC,cAAc,SAC/Be,EAtBI/C,KAsBUE,MAAQ,QAAUiB,EACpC2B,EAAM3C,GAAK4C,EACXD,EAAME,KAAOhD,KAAKE,MAAQ,UAC1B4C,EAAMG,KAAO,QACbH,EAAMI,MAAQ/B,EACd2B,EAAMX,UAAUC,IAAI,qBACpBU,EAAMK,iBAAiB,QAASnD,KAAKoD,WAAWC,KAAKrD,OACrD6C,EAAMS,QAAQR,GACd9C,KAAK2C,aAAaC,YAAYC,GAC9B7C,KAAKO,UAAUsB,KAAKiB,EACxB,CAEI9C,KAAKQ,SACLR,KAAKuD,kBAETvD,KAAKkC,WAAW/B,GAAKH,KAAKE,MAAQ,WAClCF,KAAK8B,aAAac,YAAY5C,KAAKiC,UACnCjC,KAAK8B,aAAac,YAAY5C,KAAKkC,YACnClC,KAAKC,SAASuD,YAAYxD,KAAK8B,cAC/B9B,KAAKyD,aAAazD,KAAK8B,aAC3B,CACA,eAAAyB,GACIvD,KAAK0D,UAAY3B,SAASC,cAAc,SACxChC,KAAK0D,UAAUT,KAAO,OACtBjD,KAAK0D,UAAUvB,UAAUC,IAAI,gBAC7BpC,KAAK0D,UAAUC,MAAMC,MAAQ,QAC7B5D,KAAK0D,UAAUV,KAAOhD,KAAKE,MAAQ,WACnCF,KAAK0D,UAAUG,YAAc,gBAC7B7D,KAAKiC,SAASW,YAAY5C,KAAK0D,WAC/B1D,KAAKiC,SAASW,YAAYb,SAASC,cAAc,MACrD,CACA,gBAAMoB,GAGF,IADA,IAAIU,EAAW,KACN3C,EAAI,EAAGA,EAAInB,KAAKO,UAAUa,OAAQD,IACvC,GAAInB,KAAKO,UAAUY,GAAG4C,QAAS,CAC3BD,EAAW9D,KAAKO,UAAUY,GAAG+B,MAC7B,KACJ,CAEJ,GAAiB,OAAbY,EAAJ,CACA,IAAIE,EAAc,GACdhE,KAAKQ,UACLwD,EAAchE,KAAK0D,UAAUR,OAEjC,IAMIe,EAAY,CAAEC,MAAO,OAAQC,IALb,KAAhBH,EACMF,EAAW,IAAME,EAEjBF,EAEiCM,OAAQpE,KAAKE,OASxD,GAPAF,KAAKqE,aAAaJ,GAMlBK,aAAaC,QAAQvE,KAAKE,MAAO,QAC5B6B,SAASyC,eAAe,GAAGxE,KAAKE,cAMlB6B,SAASyC,eAAe,GAAGxE,KAAKE,cACxCuB,UAAY,WAAWgD,YAAYC,qBAV3B,qCACC,uDAEgC,CAChD,MAAMC,EAAO5C,SAASC,cAAc,QACpC2C,EAAKxE,GAAK,GAAGH,KAAKE,aAClByE,EAAKlD,UAAY,WAAWgD,YAAYC,qBARvB,0CACC,mDAQlB1E,KAAKiC,SAASW,YAAY+B,EAC9B,CAKA,GAA2B,QAAvB3E,KAAKU,cAAyB,CAC9B,IAAIkE,EAAO,CAAC,EACZA,EAAKR,OAASpE,KAAKE,MACnB0E,EAAKC,OAASJ,YAAYI,OAC1B,IACI,MAAMC,EAAS,IAAIC,gBAAgBH,GAC7BI,QAAaC,MAAM,GAAGR,YAAYS,+CAA+CJ,EAAOK,cACxFC,QAAaJ,EAAKI,OACxBpF,KAAKqF,gBAAgBD,EACzB,CAAE,MAAOE,GACLtF,KAAKuF,0BACT,CACJ,CA1C6B,CA2CjC,CACA,eAAAF,CAAgBG,GAGZ,IAAIC,GADJD,EAAUA,EAAQE,QACS,MACvBC,EAAYH,EAAoB,WAEhCI,GADSJ,EAAgB,OACfA,EAAiB,SAM/B,GAJII,GAAW,IACX5F,KAAKO,UAAUqF,GAAS7B,SAAU,GAIV,QAAvB/D,KAAKU,eACmC,SAArC4D,aAAauB,QAAQ7F,KAAKE,QAC9BuE,YAAYqB,aACd,CACE9F,KAAKkC,WAAWT,UAAY,mBAAmBgE,uBAC/C,IAAIM,EAAOhE,SAASC,cAAc,OAClC+D,EAAK5D,UAAUC,IAAI,qBACnB,IAAK,IAAIjB,EAAI,EAAGA,EAAInB,KAAKM,WAAWc,OAAQD,IAAK,CAC7C,IAAI6E,EACAC,EACAN,EAAUxE,GAAK,EAEf8E,GADAD,EAAQL,EAAUxE,IACCsE,EAAS,KAE5BO,EAAQ,EACRC,EAAU,GAEd,IAAIC,EAAOF,EAAQ,KAAOG,KAAKC,MAAM,GAAKH,GAAW,GAAK,KAC1D,IAAII,EAAoBtE,SAASC,cAAc,OAC/CqE,EAAkBC,UAAY,kBAC9BD,EAAkBE,UAAY,GAAGpF,EAAI,MACrC,IAAIqF,EAAgBzE,SAASC,cAAc,OACvCyE,EAAkB,GAElBA,EADAR,EAAU,GAIN,qFAAiBA,gDAEjBC,EACA,sBAKA,qFAAiBD,kFAEjBC,EACA,gBAERM,EAAc/E,UAAYgF,EAC1BV,EAAKnD,YAAYyD,GACjBN,EAAKnD,YAAY4D,EACrB,CACAxG,KAAKkC,WAAWU,YAAYmD,EAChC,CACA/F,KAAKuF,0BACT,CACA,cAAAmB,GAAmB,CACnB,sBAAM3F,GAIF,GADUuD,aAAalD,OACb,EAAG,CAET,IAAIwD,EAAO,CAAC,EACZA,EAAKR,OAASpE,KAAKE,MACnB0E,EAAKC,OAASJ,YAAYI,OAC1B,IACI,MAAMC,EAAS,IAAIC,gBAAgBH,GAC7BI,QAAaC,MAAM,GAAGR,YAAYS,+CAA+CJ,EAAOK,cACxFC,QAAaJ,EAAKI,OACxBpF,KAAKqF,gBAAgBD,EACzB,CAAE,MAAOE,GACLtF,KAAKuF,0BACT,CACJ,MACIvF,KAAKuF,0BAEb,EAIJxD,SAASoB,iBAAiB,4BAA4B,WAClDpB,SAAS4E,iBAAiB,yBAAyBC,SAAQ,SAAUC,EAAIC,GACrE,IACIC,OAAOC,aAAaH,EAAG1G,IAAM,IAAIR,EAAK,CAAEI,KAAM8G,GAClD,CAAE,MAAOI,GACLC,QAAQC,IAAI,gCAAgCN,EAAG1G,yCACvB8G,KACxBC,QAAQC,IAAIF,EAAIG,MACpB,CACJ,GACJ,SAEwC,IAA7BL,OAAOM,oBACdN,OAAOM,kBAAoB,CAAC,GAEhCN,OAAOM,kBAAkBC,KAAO,SAAUzH,GACtC,OAAO,IAAIF,EAAKE,EACpB,C","sources":["webpack://WebComponents/./runestone/poll/js/poll.js"],"sourcesContent":["/*\n__author__ = Kirby Olson\n__date__ = 6/12/2015 */\n\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase.js\";\nimport \"../css/poll.css\";\n\n\nexport default class Poll extends RunestoneBase {\n constructor(opts) {\n super(opts);\n var orig = opts.orig; //entire

element\n this.origElem = orig;\n this.divid = orig.id;\n this.children = this.origElem.childNodes;\n this.optionList = [];\n this.optsArray = [];\n this.comment = false;\n if (this.origElem.hasAttribute(\"data-comment\")) {\n this.comment = true;\n }\n this.resultsViewer = this.origElem.getAttribute(\"data-results\");\n this.getQuestionText();\n this.getOptionText(); //populates optionList\n this.renderPoll(); //generates HTML\n // Checks localStorage to see if this poll has already been completed by this user.\n this.checkPollStorage();\n this.caption = \"Poll\";\n this.addCaption(\"runestone\");\n }\n getQuestionText() {\n //finds the text inside the parent tag, but before the first

  • tag and sets it as the question\n var _this = this;\n var firstAnswer;\n for (var i = 0; i < this.children.length; i++) {\n if (this.children[i].tagName == \"LI\") {\n firstAnswer = _this.children[i];\n break;\n }\n }\n var delimiter = firstAnswer.outerHTML;\n var fulltext = this.origElem.innerHTML;\n var temp = fulltext.split(delimiter);\n this.question = temp[0];\n }\n getOptionText() {\n //Gets the text from each
  • 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

    auU1MYAstX{oEGyh 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

    ",{class:"select2-results__options select2-results__options--nested",role:"none"})).append(u),l.append(c),l.append(r)}else this.template(n,s);return t.StoreData(s,"data",n),s},n.prototype.bind=function(n,s){var i=this,o=n.id+"-results";this.$results.attr("id",o),n.on("results:all",(function(e){i.clear(),i.append(e.data),n.isOpen()&&(i.setClasses(),i.highlightFirstItem())})),n.on("results:append",(function(e){i.append(e.data),n.isOpen()&&i.setClasses()})),n.on("query",(function(e){i.hideMessages(),i.showLoading(e)})),n.on("select",(function(){n.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())})),n.on("unselect",(function(){n.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())})),n.on("open",(function(){i.$results.attr("aria-expanded","true"),i.$results.attr("aria-hidden","false"),i.setClasses(),i.ensureHighlightVisible()})),n.on("close",(function(){i.$results.attr("aria-expanded","false"),i.$results.attr("aria-hidden","true"),i.$results.removeAttr("aria-activedescendant")})),n.on("results:toggle",(function(){var e=i.getHighlightedResults();0!==e.length&&e.trigger("mouseup")})),n.on("results:select",(function(){var e,n=i.getHighlightedResults();0!==n.length&&(e=t.GetData(n[0],"data"),n.hasClass("select2-results__option--selected")?i.trigger("close",{}):i.trigger("select",{data:e}))})),n.on("results:previous",(function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t);s<=0||(e=s-1,0===t.length&&(e=0),(s=n.eq(e)).trigger("mouseenter"),t=i.$results.offset().top,n=s.offset().top,s=i.$results.scrollTop()+(n-t),0===e?i.$results.scrollTop(0):n-t<0&&i.$results.scrollTop(s))})),n.on("results:next",(function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t)+1;s>=n.length||((e=n.eq(s)).trigger("mouseenter"),t=i.$results.offset().top+i.$results.outerHeight(!1),n=e.offset().top+e.outerHeight(!1),e=i.$results.scrollTop()+n-t,0===s?i.$results.scrollTop(0):tthis.$results.outerHeight()||s<0)&&this.$results.scrollTop(n))},n.prototype.template=function(t,n){var s=this.options.get("templateResult"),i=this.options.get("escapeMarkup");null==(t=s(t,n))?n.style.display="none":"string"==typeof t?n.innerHTML=i(t):e(n).append(t)},n})),x.define("select2/keys",[],(function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}})),x.define("select2/selection/base",["jquery","../utils","../keys"],(function(e,t,n){function s(e,t){this.$element=e,this.options=t,s.__super__.constructor.call(this)}return t.Extend(s,t.Observable),s.prototype.render=function(){var n=e('');return this._tabindex=0,null!=t.GetData(this.$element[0],"old-tabindex")?this._tabindex=t.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),n.attr("title",this.$element.attr("title")),n.attr("tabindex",this._tabindex),n.attr("aria-disabled","false"),this.$selection=n},s.prototype.bind=function(e,t){var s=this,i=e.id+"-results";this.container=e,this.$selection.on("focus",(function(e){s.trigger("focus",e)})),this.$selection.on("blur",(function(e){s._handleBlur(e)})),this.$selection.on("keydown",(function(e){s.trigger("keypress",e),e.which===n.SPACE&&e.preventDefault()})),e.on("results:focus",(function(e){s.$selection.attr("aria-activedescendant",e.data._resultId)})),e.on("selection:update",(function(e){s.update(e.data)})),e.on("open",(function(){s.$selection.attr("aria-expanded","true"),s.$selection.attr("aria-owns",i),s._attachCloseHandler(e)})),e.on("close",(function(){s.$selection.attr("aria-expanded","false"),s.$selection.removeAttr("aria-activedescendant"),s.$selection.removeAttr("aria-owns"),s.$selection.trigger("focus"),s._detachCloseHandler(e)})),e.on("enable",(function(){s.$selection.attr("tabindex",s._tabindex),s.$selection.attr("aria-disabled","false")})),e.on("disable",(function(){s.$selection.attr("tabindex","-1"),s.$selection.attr("aria-disabled","true")}))},s.prototype._handleBlur=function(t){var n=this;window.setTimeout((function(){document.activeElement==n.$selection[0]||e.contains(n.$selection[0],document.activeElement)||n.trigger("blur",t)}),1)},s.prototype._attachCloseHandler=function(n){e(document.body).on("mousedown.select2."+n.id,(function(n){var s=e(n.target).closest(".select2");e(".select2.select2-container--open").each((function(){this!=s[0]&&t.GetData(this,"element").select2("close")}))}))},s.prototype._detachCloseHandler=function(t){e(document.body).off("mousedown.select2."+t.id)},s.prototype.position=function(e,t){t.find(".selection").append(e)},s.prototype.destroy=function(){this._detachCloseHandler(this.container)},s.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},s.prototype.isEnabled=function(){return!this.isDisabled()},s.prototype.isDisabled=function(){return this.options.get("disabled")},s})),x.define("select2/selection/single",["jquery","./base","../utils","../keys"],(function(e,t,n,s){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e[0].classList.add("select2-selection--single"),e.html(''),e},i.prototype.bind=function(e,t){var n=this;i.__super__.bind.apply(this,arguments);var s=e.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",s).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",s),this.$selection.attr("aria-controls",s),this.$selection.on("mousedown",(function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})})),this.$selection.on("focus",(function(e){})),this.$selection.on("blur",(function(e){})),e.on("focus",(function(t){e.isOpen()||n.$selection.trigger("focus")}))},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){var t,n;0!==e.length?(n=e[0],t=this.$selection.find(".select2-selection__rendered"),e=this.display(n,t),t.empty().append(e),(n=n.title||n.text)?t.attr("title",n):t.removeAttr("title")):this.clear()},i})),x.define("select2/selection/multiple",["jquery","./base","../utils"],(function(e,t,n){function s(e,t){s.__super__.constructor.apply(this,arguments)}return n.Extend(s,t),s.prototype.render=function(){var e=s.__super__.render.call(this);return e[0].classList.add("select2-selection--multiple"),e.html('
      '),e},s.prototype.bind=function(t,i){var o=this;s.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r),this.$selection.on("click",(function(e){o.trigger("toggle",{originalEvent:e})})),this.$selection.on("click",".select2-selection__choice__remove",(function(t){var s;o.isDisabled()||(s=e(this).parent(),s=n.GetData(s[0],"data"),o.trigger("unselect",{originalEvent:t,data:s}))})),this.$selection.on("keydown",".select2-selection__choice__remove",(function(e){o.isDisabled()||e.stopPropagation()}))},s.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},s.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},s.prototype.selectionContainer=function(){return e('
    • ')},s.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],s=this.$selection.find(".select2-selection__rendered").attr("id")+"-choice-",i=0;i')).attr("title",o()),t.attr("aria-label",o()),t.attr("aria-describedby",i),n.StoreData(t[0],"data",s),this.$selection.prepend(t),this.$selection[0].classList.add("select2-selection--clearable"))},s})),x.define("select2/selection/search",["jquery","../utils","../keys"],(function(e,t,n){function s(e,t,n){e.call(this,t,n)}return s.prototype.render=function(t){var n=this.options.get("translations").get("search"),s=e('');return this.$searchContainer=s,this.$search=s.find("textarea"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",n()),t=t.call(this),this._transferTabIndex(),t.append(this.$searchContainer),t},s.prototype.bind=function(e,s,i){var o=this,r=s.id+"-results",a=s.id+"-container";e.call(this,s,i),o.$search.attr("aria-describedby",a),s.on("open",(function(){o.$search.attr("aria-controls",r),o.$search.trigger("focus")})),s.on("close",(function(){o.$search.val(""),o.resizeSearch(),o.$search.removeAttr("aria-controls"),o.$search.removeAttr("aria-activedescendant"),o.$search.trigger("focus")})),s.on("enable",(function(){o.$search.prop("disabled",!1),o._transferTabIndex()})),s.on("disable",(function(){o.$search.prop("disabled",!0)})),s.on("focus",(function(e){o.$search.trigger("focus")})),s.on("results:focus",(function(e){e.data._resultId?o.$search.attr("aria-activedescendant",e.data._resultId):o.$search.removeAttr("aria-activedescendant")})),this.$selection.on("focusin",".select2-search--inline",(function(e){o.trigger("focus",e)})),this.$selection.on("focusout",".select2-search--inline",(function(e){o._handleBlur(e)})),this.$selection.on("keydown",".select2-search--inline",(function(e){var s;e.stopPropagation(),o.trigger("keypress",e),o._keyUpPrevented=e.isDefaultPrevented(),e.which!==n.BACKSPACE||""!==o.$search.val()||0<(s=o.$selection.find(".select2-selection__choice").last()).length&&(s=t.GetData(s[0],"data"),o.searchRemoveChoice(s),e.preventDefault())})),this.$selection.on("click",".select2-search--inline",(function(e){o.$search.val()&&e.stopPropagation()}));var l=(s=document.documentMode)&&s<=11;this.$selection.on("input.searchcheck",".select2-search--inline",(function(e){l?o.$selection.off("input.search input.searchcheck"):o.$selection.off("keyup.search")})),this.$selection.on("keyup.search input.search",".select2-search--inline",(function(e){var t;l&&"input"===e.type?o.$selection.off("input.search input.searchcheck"):(t=e.which)!=n.SHIFT&&t!=n.CTRL&&t!=n.ALT&&t!=n.TAB&&o.handleSearch(e)}))},s.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},s.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},s.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.resizeSearch(),n&&this.$search.trigger("focus")},s.prototype.handleSearch=function(){var e;this.resizeSearch(),this._keyUpPrevented||(e=this.$search.val(),this.trigger("query",{term:e})),this._keyUpPrevented=!1},s.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},s.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="100%";""===this.$search.attr("placeholder")&&(e=.75*(this.$search.val().length+1)+"em"),this.$search.css("width",e)},s})),x.define("select2/selection/selectionCss",["../utils"],(function(e){function t(){}return t.prototype.render=function(t){var n=t.call(this);return-1!==(t=this.options.get("selectionCssClass")||"").indexOf(":all:")&&(t=t.replace(":all:",""),e.copyNonInternalCssClasses(n[0],this.$element[0])),n.addClass(t),n},t})),x.define("select2/selection/eventRelay",["jquery"],(function(e){function t(){}return t.prototype.bind=function(t,n,s){var i=this,o=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],r=["opening","closing","selecting","unselecting","clearing"];t.call(this,n,s),n.on("*",(function(t,n){var s;-1!==o.indexOf(t)&&(n=n||{},s=e.Event("select2:"+t,{params:n}),i.$element.trigger(s),-1!==r.indexOf(t)&&(n.prevented=s.isDefaultPrevented()))}))},t})),x.define("select2/translation",["jquery","require"],(function(e,t){function n(e){this.dict=e||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(e){return this.dict[e]},n.prototype.extend=function(t){this.dict=e.extend({},t.all(),this.dict)},n._cache={},n.loadPath=function(e){var s;return e in n._cache||(s=t(e),n._cache[e]=s),new n(n._cache[e])},n})),x.define("select2/diacritics",[],(function(){return{"Ⓐ":"A",A:"A",À:"A",Á:"A",Â:"A",Ầ:"A",Ấ:"A",Ẫ:"A",Ẩ:"A",Ã:"A",Ā:"A",Ă:"A",Ằ:"A",Ắ:"A",Ẵ:"A",Ẳ:"A",Ȧ:"A",Ǡ:"A",Ä:"A",Ǟ:"A",Ả:"A",Å:"A",Ǻ:"A",Ǎ:"A",Ȁ:"A",Ȃ:"A",Ạ:"A",Ậ:"A",Ặ:"A",Ḁ:"A",Ą:"A",Ⱥ:"A",Ɐ:"A",Ꜳ:"AA",Æ:"AE",Ǽ:"AE",Ǣ:"AE",Ꜵ:"AO",Ꜷ:"AU",Ꜹ:"AV",Ꜻ:"AV",Ꜽ:"AY","Ⓑ":"B",B:"B",Ḃ:"B",Ḅ:"B",Ḇ:"B",Ƀ:"B",Ƃ:"B",Ɓ:"B","Ⓒ":"C",C:"C",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",Ç:"C",Ḉ:"C",Ƈ:"C",Ȼ:"C",Ꜿ:"C","Ⓓ":"D",D:"D",Ḋ:"D",Ď:"D",Ḍ:"D",Ḑ:"D",Ḓ:"D",Ḏ:"D",Đ:"D",Ƌ:"D",Ɗ:"D",Ɖ:"D",Ꝺ:"D",DZ:"DZ",DŽ:"DZ",Dz:"Dz",Dž:"Dz","Ⓔ":"E",E:"E",È:"E",É:"E",Ê:"E",Ề:"E",Ế:"E",Ễ:"E",Ể:"E",Ẽ:"E",Ē:"E",Ḕ:"E",Ḗ:"E",Ĕ:"E",Ė:"E",Ë:"E",Ẻ:"E",Ě:"E",Ȅ:"E",Ȇ:"E",Ẹ:"E",Ệ:"E",Ȩ:"E",Ḝ:"E",Ę:"E",Ḙ:"E",Ḛ:"E",Ɛ:"E",Ǝ:"E","Ⓕ":"F",F:"F",Ḟ:"F",Ƒ:"F",Ꝼ:"F","Ⓖ":"G",G:"G",Ǵ:"G",Ĝ:"G",Ḡ:"G",Ğ:"G",Ġ:"G",Ǧ:"G",Ģ:"G",Ǥ:"G",Ɠ:"G",Ꞡ:"G",Ᵹ:"G",Ꝿ:"G","Ⓗ":"H",H:"H",Ĥ:"H",Ḣ:"H",Ḧ:"H",Ȟ:"H",Ḥ:"H",Ḩ:"H",Ḫ:"H",Ħ:"H",Ⱨ:"H",Ⱶ:"H",Ɥ:"H","Ⓘ":"I",I:"I",Ì:"I",Í:"I",Î:"I",Ĩ:"I",Ī:"I",Ĭ:"I",İ:"I",Ï:"I",Ḯ:"I",Ỉ:"I",Ǐ:"I",Ȉ:"I",Ȋ:"I",Ị:"I",Į:"I",Ḭ:"I",Ɨ:"I","Ⓙ":"J",J:"J",Ĵ:"J",Ɉ:"J","Ⓚ":"K",K:"K",Ḱ:"K",Ǩ:"K",Ḳ:"K",Ķ:"K",Ḵ:"K",Ƙ:"K",Ⱪ:"K",Ꝁ:"K",Ꝃ:"K",Ꝅ:"K",Ꞣ:"K","Ⓛ":"L",L:"L",Ŀ:"L",Ĺ:"L",Ľ:"L",Ḷ:"L",Ḹ:"L",Ļ:"L",Ḽ:"L",Ḻ:"L",Ł:"L",Ƚ:"L",Ɫ:"L",Ⱡ:"L",Ꝉ:"L",Ꝇ:"L",Ꞁ:"L",LJ:"LJ",Lj:"Lj","Ⓜ":"M",M:"M",Ḿ:"M",Ṁ:"M",Ṃ:"M",Ɱ:"M",Ɯ:"M","Ⓝ":"N",N:"N",Ǹ:"N",Ń:"N",Ñ:"N",Ṅ:"N",Ň:"N",Ṇ:"N",Ņ:"N",Ṋ:"N",Ṉ:"N",Ƞ:"N",Ɲ:"N",Ꞑ:"N",Ꞥ:"N",NJ:"NJ",Nj:"Nj","Ⓞ":"O",O:"O",Ò:"O",Ó:"O",Ô:"O",Ồ:"O",Ố:"O",Ỗ:"O",Ổ:"O",Õ:"O",Ṍ:"O",Ȭ:"O",Ṏ:"O",Ō:"O",Ṑ:"O",Ṓ:"O",Ŏ:"O",Ȯ:"O",Ȱ:"O",Ö:"O",Ȫ:"O",Ỏ:"O",Ő:"O",Ǒ:"O",Ȍ:"O",Ȏ:"O",Ơ:"O",Ờ:"O",Ớ:"O",Ỡ:"O",Ở:"O",Ợ:"O",Ọ:"O",Ộ:"O",Ǫ:"O",Ǭ:"O",Ø:"O",Ǿ:"O",Ɔ:"O",Ɵ:"O",Ꝋ:"O",Ꝍ:"O",Œ:"OE",Ƣ:"OI",Ꝏ:"OO",Ȣ:"OU","Ⓟ":"P",P:"P",Ṕ:"P",Ṗ:"P",Ƥ:"P",Ᵽ:"P",Ꝑ:"P",Ꝓ:"P",Ꝕ:"P","Ⓠ":"Q",Q:"Q",Ꝗ:"Q",Ꝙ:"Q",Ɋ:"Q","Ⓡ":"R",R:"R",Ŕ:"R",Ṙ:"R",Ř:"R",Ȑ:"R",Ȓ:"R",Ṛ:"R",Ṝ:"R",Ŗ:"R",Ṟ:"R",Ɍ:"R",Ɽ:"R",Ꝛ:"R",Ꞧ:"R",Ꞃ:"R","Ⓢ":"S",S:"S",ẞ:"S",Ś:"S",Ṥ:"S",Ŝ:"S",Ṡ:"S",Š:"S",Ṧ:"S",Ṣ:"S",Ṩ:"S",Ș:"S",Ş:"S",Ȿ:"S",Ꞩ:"S",Ꞅ:"S","Ⓣ":"T",T:"T",Ṫ:"T",Ť:"T",Ṭ:"T",Ț:"T",Ţ:"T",Ṱ:"T",Ṯ:"T",Ŧ:"T",Ƭ:"T",Ʈ:"T",Ⱦ:"T",Ꞇ:"T",Ꜩ:"TZ","Ⓤ":"U",U:"U",Ù:"U",Ú:"U",Û:"U",Ũ:"U",Ṹ:"U",Ū:"U",Ṻ:"U",Ŭ:"U",Ü:"U",Ǜ:"U",Ǘ:"U",Ǖ:"U",Ǚ:"U",Ủ:"U",Ů:"U",Ű:"U",Ǔ:"U",Ȕ:"U",Ȗ:"U",Ư:"U",Ừ:"U",Ứ:"U",Ữ:"U",Ử:"U",Ự:"U",Ụ:"U",Ṳ:"U",Ų:"U",Ṷ:"U",Ṵ:"U",Ʉ:"U","Ⓥ":"V",V:"V",Ṽ:"V",Ṿ:"V",Ʋ:"V",Ꝟ:"V",Ʌ:"V",Ꝡ:"VY","Ⓦ":"W",W:"W",Ẁ:"W",Ẃ:"W",Ŵ:"W",Ẇ:"W",Ẅ:"W",Ẉ:"W",Ⱳ:"W","Ⓧ":"X",X:"X",Ẋ:"X",Ẍ:"X","Ⓨ":"Y",Y:"Y",Ỳ:"Y",Ý:"Y",Ŷ:"Y",Ỹ:"Y",Ȳ:"Y",Ẏ:"Y",Ÿ:"Y",Ỷ:"Y",Ỵ:"Y",Ƴ:"Y",Ɏ:"Y",Ỿ:"Y","Ⓩ":"Z",Z:"Z",Ź:"Z",Ẑ:"Z",Ż:"Z",Ž:"Z",Ẓ:"Z",Ẕ:"Z",Ƶ:"Z",Ȥ:"Z",Ɀ:"Z",Ⱬ:"Z",Ꝣ:"Z","ⓐ":"a",a:"a",ẚ:"a",à:"a",á:"a",â:"a",ầ:"a",ấ:"a",ẫ:"a",ẩ:"a",ã:"a",ā:"a",ă:"a",ằ:"a",ắ:"a",ẵ:"a",ẳ:"a",ȧ:"a",ǡ:"a",ä:"a",ǟ:"a",ả:"a",å:"a",ǻ:"a",ǎ:"a",ȁ:"a",ȃ:"a",ạ:"a",ậ:"a",ặ:"a",ḁ:"a",ą:"a",ⱥ:"a",ɐ:"a",ꜳ:"aa",æ:"ae",ǽ:"ae",ǣ:"ae",ꜵ:"ao",ꜷ:"au",ꜹ:"av",ꜻ:"av",ꜽ:"ay","ⓑ":"b",b:"b",ḃ:"b",ḅ:"b",ḇ:"b",ƀ:"b",ƃ:"b",ɓ:"b","ⓒ":"c",c:"c",ć:"c",ĉ:"c",ċ:"c",č:"c",ç:"c",ḉ:"c",ƈ:"c",ȼ:"c",ꜿ:"c",ↄ:"c","ⓓ":"d",d:"d",ḋ:"d",ď:"d",ḍ:"d",ḑ:"d",ḓ:"d",ḏ:"d",đ:"d",ƌ:"d",ɖ:"d",ɗ:"d",ꝺ:"d",dz:"dz",dž:"dz","ⓔ":"e",e:"e",è:"e",é:"e",ê:"e",ề:"e",ế:"e",ễ:"e",ể:"e",ẽ:"e",ē:"e",ḕ:"e",ḗ:"e",ĕ:"e",ė:"e",ë:"e",ẻ:"e",ě:"e",ȅ:"e",ȇ:"e",ẹ:"e",ệ:"e",ȩ:"e",ḝ:"e",ę:"e",ḙ:"e",ḛ:"e",ɇ:"e",ɛ:"e",ǝ:"e","ⓕ":"f",f:"f",ḟ:"f",ƒ:"f",ꝼ:"f","ⓖ":"g",g:"g",ǵ:"g",ĝ:"g",ḡ:"g",ğ:"g",ġ:"g",ǧ:"g",ģ:"g",ǥ:"g",ɠ:"g",ꞡ:"g",ᵹ:"g",ꝿ:"g","ⓗ":"h",h:"h",ĥ:"h",ḣ:"h",ḧ:"h",ȟ:"h",ḥ:"h",ḩ:"h",ḫ:"h",ẖ:"h",ħ:"h",ⱨ:"h",ⱶ:"h",ɥ:"h",ƕ:"hv","ⓘ":"i",i:"i",ì:"i",í:"i",î:"i",ĩ:"i",ī:"i",ĭ:"i",ï:"i",ḯ:"i",ỉ:"i",ǐ:"i",ȉ:"i",ȋ:"i",ị:"i",į:"i",ḭ:"i",ɨ:"i",ı:"i","ⓙ":"j",j:"j",ĵ:"j",ǰ:"j",ɉ:"j","ⓚ":"k",k:"k",ḱ:"k",ǩ:"k",ḳ:"k",ķ:"k",ḵ:"k",ƙ:"k",ⱪ:"k",ꝁ:"k",ꝃ:"k",ꝅ:"k",ꞣ:"k","ⓛ":"l",l:"l",ŀ:"l",ĺ:"l",ľ:"l",ḷ:"l",ḹ:"l",ļ:"l",ḽ:"l",ḻ:"l",ſ:"l",ł:"l",ƚ:"l",ɫ:"l",ⱡ:"l",ꝉ:"l",ꞁ:"l",ꝇ:"l",lj:"lj","ⓜ":"m",m:"m",ḿ:"m",ṁ:"m",ṃ:"m",ɱ:"m",ɯ:"m","ⓝ":"n",n:"n",ǹ:"n",ń:"n",ñ:"n",ṅ:"n",ň:"n",ṇ:"n",ņ:"n",ṋ:"n",ṉ:"n",ƞ:"n",ɲ:"n",ʼn:"n",ꞑ:"n",ꞥ:"n",nj:"nj","ⓞ":"o",o:"o",ò:"o",ó:"o",ô:"o",ồ:"o",ố:"o",ỗ:"o",ổ:"o",õ:"o",ṍ:"o",ȭ:"o",ṏ:"o",ō:"o",ṑ:"o",ṓ:"o",ŏ:"o",ȯ:"o",ȱ:"o",ö:"o",ȫ:"o",ỏ:"o",ő:"o",ǒ:"o",ȍ:"o",ȏ:"o",ơ:"o",ờ:"o",ớ:"o",ỡ:"o",ở:"o",ợ:"o",ọ:"o",ộ:"o",ǫ:"o",ǭ:"o",ø:"o",ǿ:"o",ɔ:"o",ꝋ:"o",ꝍ:"o",ɵ:"o",œ:"oe",ƣ:"oi",ȣ:"ou",ꝏ:"oo","ⓟ":"p",p:"p",ṕ:"p",ṗ:"p",ƥ:"p",ᵽ:"p",ꝑ:"p",ꝓ:"p",ꝕ:"p","ⓠ":"q",q:"q",ɋ:"q",ꝗ:"q",ꝙ:"q","ⓡ":"r",r:"r",ŕ:"r",ṙ:"r",ř:"r",ȑ:"r",ȓ:"r",ṛ:"r",ṝ:"r",ŗ:"r",ṟ:"r",ɍ:"r",ɽ:"r",ꝛ:"r",ꞧ:"r",ꞃ:"r","ⓢ":"s",s:"s",ß:"s",ś:"s",ṥ:"s",ŝ:"s",ṡ:"s",š:"s",ṧ:"s",ṣ:"s",ṩ:"s",ș:"s",ş:"s",ȿ:"s",ꞩ:"s",ꞅ:"s",ẛ:"s","ⓣ":"t",t:"t",ṫ:"t",ẗ:"t",ť:"t",ṭ:"t",ț:"t",ţ:"t",ṱ:"t",ṯ:"t",ŧ:"t",ƭ:"t",ʈ:"t",ⱦ:"t",ꞇ:"t",ꜩ:"tz","ⓤ":"u",u:"u",ù:"u",ú:"u",û:"u",ũ:"u",ṹ:"u",ū:"u",ṻ:"u",ŭ:"u",ü:"u",ǜ:"u",ǘ:"u",ǖ:"u",ǚ:"u",ủ:"u",ů:"u",ű:"u",ǔ:"u",ȕ:"u",ȗ:"u",ư:"u",ừ:"u",ứ:"u",ữ:"u",ử:"u",ự:"u",ụ:"u",ṳ:"u",ų:"u",ṷ:"u",ṵ:"u",ʉ:"u","ⓥ":"v",v:"v",ṽ:"v",ṿ:"v",ʋ:"v",ꝟ:"v",ʌ:"v",ꝡ:"vy","ⓦ":"w",w:"w",ẁ:"w",ẃ:"w",ŵ:"w",ẇ:"w",ẅ:"w",ẘ:"w",ẉ:"w",ⱳ:"w","ⓧ":"x",x:"x",ẋ:"x",ẍ:"x","ⓨ":"y",y:"y",ỳ:"y",ý:"y",ŷ:"y",ỹ:"y",ȳ:"y",ẏ:"y",ÿ:"y",ỷ:"y",ẙ:"y",ỵ:"y",ƴ:"y",ɏ:"y",ỿ:"y","ⓩ":"z",z:"z",ź:"z",ẑ:"z",ż:"z",ž:"z",ẓ:"z",ẕ:"z",ƶ:"z",ȥ:"z",ɀ:"z",ⱬ:"z",ꝣ:"z",Ά:"Α",Έ:"Ε",Ή:"Η",Ί:"Ι",Ϊ:"Ι",Ό:"Ο",Ύ:"Υ",Ϋ:"Υ",Ώ:"Ω",ά:"α",έ:"ε",ή:"η",ί:"ι",ϊ:"ι",ΐ:"ι",ό:"ο",ύ:"υ",ϋ:"υ",ΰ:"υ",ώ:"ω",ς:"σ","’":"'"}})),x.define("select2/data/base",["../utils"],(function(e){function t(e,n){t.__super__.constructor.call(this)}return e.Extend(t,e.Observable),t.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},t.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},t.prototype.bind=function(e,t){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,n){return t=t.id+"-result-",t+=e.generateChars(4),null!=n.id?t+="-"+n.id.toString():t+="-"+e.generateChars(4),t},t})),x.define("select2/data/select",["./base","../utils","jquery"],(function(e,t,n){function s(e,t){this.$element=e,this.options=t,s.__super__.constructor.call(this)}return t.Extend(s,e),s.prototype.current=function(e){var t=this;e(Array.prototype.map.call(this.$element[0].querySelectorAll(":checked"),(function(e){return t.item(n(e))})))},s.prototype.select=function(e){var t,n=this;if(e.selected=!0,null!=e.element&&"option"===e.element.tagName.toLowerCase())return e.element.selected=!0,void this.$element.trigger("input").trigger("change");this.$element.prop("multiple")?this.current((function(t){var s=[];(e=[e]).push.apply(e,t);for(var i=0;ithis.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),x.define("select2/data/maximumSelectionLength",[],(function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("select",(function(){s._checkIfMaximumSelected()}))},e.prototype.query=function(e,t,n){var s=this;this._checkIfMaximumSelected((function(){e.call(s,t,n)}))},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current((function(e){e=null!=e?e.length:0,0=n.maximumSelectionLength?n.trigger("results:message",{message:"maximumSelected",args:{maximum:n.maximumSelectionLength}}):t&&t()}))},e})),x.define("select2/dropdown",["jquery","./utils"],(function(e,t){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('');return t.attr("dir",this.options.get("dir")),this.$dropdown=t},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n})),x.define("select2/dropdown/search",["jquery"],(function(e){function t(){}return t.prototype.render=function(t){var n=t.call(this),s=this.options.get("translations").get("search");return t=e(''),this.$searchContainer=t,this.$search=t.find("input"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",s()),n.prepend(t),n},t.prototype.bind=function(t,n,s){var i=this,o=n.id+"-results";t.call(this,n,s),this.$search.on("keydown",(function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()})),this.$search.on("input",(function(t){e(this).off("keyup")})),this.$search.on("keyup input",(function(e){i.handleSearch(e)})),n.on("open",(function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",o),i.$search.trigger("focus"),window.setTimeout((function(){i.$search.trigger("focus")}),0)})),n.on("close",(function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")})),n.on("focus",(function(){n.isOpen()||i.$search.trigger("focus")})),n.on("results:all",(function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer[0].classList.remove("select2-search--hide"):i.$searchContainer[0].classList.add("select2-search--hide"))})),n.on("results:focus",(function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}))},t.prototype.handleSearch=function(e){var t;this._keyUpPrevented||(t=this.$search.val(),this.trigger("query",{term:t})),this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t})),x.define("select2/dropdown/hidePlaceholder",[],(function(){function e(e,t,n,s){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,s)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t?{id:"",text:t}:t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),s=t.length-1;0<=s;s--){var i=t[s];this.placeholder.id===i.id&&n.splice(s,1)}return n},e})),x.define("select2/dropdown/infiniteScroll",["jquery"],(function(e){function t(e,t,n,s){this.lastParams={},e.call(this,t,n,s),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return t.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},t.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("query",(function(e){s.lastParams=e,s.loading=!0})),t.on("query:append",(function(e){s.lastParams=e,s.loading=!0})),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},t.prototype.loadMoreIfNeeded=function(){var t=e.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&t&&(t=this.$results.offset().top+this.$results.outerHeight(!1),this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore())},t.prototype.loadMore=function(){this.loading=!0;var t=e.extend({},{page:1},this.lastParams);t.page++,this.trigger("query:append",t)},t.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=e('
    • '),n=this.options.get("translations").get("loadingMore");return t.html(n(this.lastParams)),t},t})),x.define("select2/dropdown/attachBody",["jquery","../utils"],(function(e,t){function n(t,n,s){this.$dropdownParent=e(s.get("dropdownParent")||document.body),t.call(this,n,s)}return n.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("open",(function(){s._showDropdown(),s._attachPositioningHandler(t),s._bindContainerResultHandlers(t)})),t.on("close",(function(){s._hideDropdown(),s._detachPositioningHandler(t)})),this.$dropdownContainer.on("mousedown",(function(e){e.stopPropagation()}))},n.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t[0].classList.remove("select2"),t[0].classList.add("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},n.prototype.render=function(t){var n=e("");return t=t.call(this),n.append(t),this.$dropdownContainer=n},n.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},n.prototype._bindContainerResultHandlers=function(e,t){var n;this._containerResultsHandlersBound||(n=this,t.on("results:all",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:append",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:message",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("select",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("unselect",(function(){n._positionDropdown(),n._resizeDropdown()})),this._containerResultsHandlersBound=!0)},n.prototype._attachPositioningHandler=function(n,s){var i=this,o="scroll.select2."+s.id,r="resize.select2."+s.id,a="orientationchange.select2."+s.id;(s=this.$container.parents().filter(t.hasScroll)).each((function(){t.StoreData(this,"select2-scroll-position",{x:e(this).scrollLeft(),y:e(this).scrollTop()})})),s.on(o,(function(n){var s=t.GetData(this,"select2-scroll-position");e(this).scrollTop(s.y)})),e(window).on(o+" "+r+" "+a,(function(e){i._positionDropdown(),i._resizeDropdown()}))},n.prototype._detachPositioningHandler=function(n,s){var i="scroll.select2."+s.id,o="resize.select2."+s.id;s="orientationchange.select2."+s.id,this.$container.parents().filter(t.hasScroll).off(i),e(window).off(i+" "+o+" "+s)},n.prototype._positionDropdown=function(){var t=e(window),n=this.$dropdown[0].classList.contains("select2-dropdown--above"),s=this.$dropdown[0].classList.contains("select2-dropdown--below"),i=null,o=this.$container.offset();o.bottom=o.top+this.$container.outerHeight(!1);var r={height:this.$container.outerHeight(!1)};r.top=o.top,r.bottom=o.top+r.height;var a=this.$dropdown.outerHeight(!1),l=t.scrollTop(),c=t.scrollTop()+t.height(),u=lo.bottom+a,l={left:o.left,top:r.bottom},"static"===(c=this.$dropdownParent).css("position")&&(c=c.offsetParent()),o={top:0,left:0},(e.contains(document.body,c[0])||c[0].isConnected)&&(o=c.offset()),l.top-=o.top,l.left-=o.left,n||s||(i="below"),t||!u||n?!u&&t&&n&&(i="below"):i="above",("above"==i||n&&"below"!==i)&&(l.top=r.top-o.top-a),null!=i&&(this.$dropdown[0].classList.remove("select2-dropdown--below"),this.$dropdown[0].classList.remove("select2-dropdown--above"),this.$dropdown[0].classList.add("select2-dropdown--"+i),this.$container[0].classList.remove("select2-container--below"),this.$container[0].classList.remove("select2-container--above"),this.$container[0].classList.add("select2-container--"+i)),this.$dropdownContainer.css(l)},n.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},n.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n})),x.define("select2/dropdown/minimumResultsForSearch",[],(function(){function e(e,t,n,s){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,s)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,s=0;s');return t.attr("dir",this.options.get("dir")),this.$container=t,this.$container[0].classList.add("select2-container--"+this.options.get("theme")),n.StoreData(t[0],"element",this.$element),t},i})),x.define("jquery-mousewheel",["jquery"],(function(e){return e})),x.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],(function(e,t,n,s,i){var o;return null==e.fn.select2&&(o=["open","close","destroy"],e.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each((function(){var s=e.extend(!0,{},t);new n(e(this),s)})),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var s,r=Array.prototype.slice.call(arguments,1);return this.each((function(){var e=i.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),s=e[t].apply(e,r)})),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 mKW#27OikT*;|\":\">\",'\"':\""\",\"'\":\"'\",\"/\":\"/\"};return\"string\"!=typeof e?e:String(e).replace(/[&<>\"'\\/\\\\]/g,function(e){return t[e]})},s.__cache={};var n=0;return s.GetUniqueElementId=function(e){var t=e.getAttribute(\"data-select2-id\");return null!=t||(t=e.id?\"select2-data-\"+e.id:\"select2-data-\"+(++n).toString()+\"-\"+s.generateChars(4),e.setAttribute(\"data-select2-id\",t)),t},s.StoreData=function(e,t,n){e=s.GetUniqueElementId(e);s.__cache[e]||(s.__cache[e]={}),s.__cache[e][t]=n},s.GetData=function(e,t){var n=s.GetUniqueElementId(e);return t?s.__cache[n]&&null!=s.__cache[n][t]?s.__cache[n][t]:r(e).data(t):s.__cache[n]},s.RemoveData=function(e){var t=s.GetUniqueElementId(e);null!=s.__cache[t]&&delete s.__cache[t],e.removeAttribute(\"data-select2-id\")},s.copyNonInternalCssClasses=function(e,t){var n=(n=e.getAttribute(\"class\").trim().split(/\\s+/)).filter(function(e){return 0===e.indexOf(\"select2-\")}),t=(t=t.getAttribute(\"class\").trim().split(/\\s+/)).filter(function(e){return 0!==e.indexOf(\"select2-\")}),t=n.concat(t);e.setAttribute(\"class\",t.join(\" \"))},s}),u.define(\"select2/results\",[\"jquery\",\"./utils\"],function(d,p){function s(e,t,n){this.$element=e,this.data=n,this.options=t,s.__super__.constructor.call(this)}return p.Extend(s,p.Observable),s.prototype.render=function(){var e=d('
        ');return this.options.get(\"multiple\")&&e.attr(\"aria-multiselectable\",\"true\"),this.$results=e},s.prototype.clear=function(){this.$results.empty()},s.prototype.displayMessage=function(e){var t=this.options.get(\"escapeMarkup\");this.clear(),this.hideLoading();var n=d('
      • '),s=this.options.get(\"translations\").get(e.message);n.append(t(s(e.args))),n[0].className+=\" select2-results__message\",this.$results.append(n)},s.prototype.hideMessages=function(){this.$results.find(\".select2-results__message\").remove()},s.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n\",{class:\"select2-results__options select2-results__options--nested\",role:\"none\"});i.append(l),o.append(a),o.append(i)}else this.template(e,t);return p.StoreData(t,\"data\",e),t},s.prototype.bind=function(t,e){var i=this,n=t.id+\"-results\";this.$results.attr(\"id\",n),t.on(\"results:all\",function(e){i.clear(),i.append(e.data),t.isOpen()&&(i.setClasses(),i.highlightFirstItem())}),t.on(\"results:append\",function(e){i.append(e.data),t.isOpen()&&i.setClasses()}),t.on(\"query\",function(e){i.hideMessages(),i.showLoading(e)}),t.on(\"select\",function(){t.isOpen()&&(i.setClasses(),i.options.get(\"scrollAfterSelect\")&&i.highlightFirstItem())}),t.on(\"unselect\",function(){t.isOpen()&&(i.setClasses(),i.options.get(\"scrollAfterSelect\")&&i.highlightFirstItem())}),t.on(\"open\",function(){i.$results.attr(\"aria-expanded\",\"true\"),i.$results.attr(\"aria-hidden\",\"false\"),i.setClasses(),i.ensureHighlightVisible()}),t.on(\"close\",function(){i.$results.attr(\"aria-expanded\",\"false\"),i.$results.attr(\"aria-hidden\",\"true\"),i.$results.removeAttr(\"aria-activedescendant\")}),t.on(\"results:toggle\",function(){var e=i.getHighlightedResults();0!==e.length&&e.trigger(\"mouseup\")}),t.on(\"results:select\",function(){var e,t=i.getHighlightedResults();0!==t.length&&(e=p.GetData(t[0],\"data\"),t.hasClass(\"select2-results__option--selected\")?i.trigger(\"close\",{}):i.trigger(\"select\",{data:e}))}),t.on(\"results:previous\",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(\".select2-results__option--selectable\"),s=n.index(t);s<=0||(e=s-1,0===t.length&&(e=0),(s=n.eq(e)).trigger(\"mouseenter\"),t=i.$results.offset().top,n=s.offset().top,s=i.$results.scrollTop()+(n-t),0===e?i.$results.scrollTop(0):n-t<0&&i.$results.scrollTop(s))}),t.on(\"results:next\",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(\".select2-results__option--selectable\"),s=n.index(t)+1;s>=n.length||((e=n.eq(s)).trigger(\"mouseenter\"),t=i.$results.offset().top+i.$results.outerHeight(!1),n=e.offset().top+e.outerHeight(!1),e=i.$results.scrollTop()+n-t,0===s?i.$results.scrollTop(0):tthis.$results.outerHeight()||s<0)&&this.$results.scrollTop(n))},s.prototype.template=function(e,t){var n=this.options.get(\"templateResult\"),s=this.options.get(\"escapeMarkup\"),e=n(e,t);null==e?t.style.display=\"none\":\"string\"==typeof e?t.innerHTML=s(e):d(t).append(e)},s}),u.define(\"select2/keys\",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),u.define(\"select2/selection/base\",[\"jquery\",\"../utils\",\"../keys\"],function(n,s,i){function r(e,t){this.$element=e,this.options=t,r.__super__.constructor.call(this)}return s.Extend(r,s.Observable),r.prototype.render=function(){var e=n('');return this._tabindex=0,null!=s.GetData(this.$element[0],\"old-tabindex\")?this._tabindex=s.GetData(this.$element[0],\"old-tabindex\"):null!=this.$element.attr(\"tabindex\")&&(this._tabindex=this.$element.attr(\"tabindex\")),e.attr(\"title\",this.$element.attr(\"title\")),e.attr(\"tabindex\",this._tabindex),e.attr(\"aria-disabled\",\"false\"),this.$selection=e},r.prototype.bind=function(e,t){var n=this,s=e.id+\"-results\";this.container=e,this.$selection.on(\"focus\",function(e){n.trigger(\"focus\",e)}),this.$selection.on(\"blur\",function(e){n._handleBlur(e)}),this.$selection.on(\"keydown\",function(e){n.trigger(\"keypress\",e),e.which===i.SPACE&&e.preventDefault()}),e.on(\"results:focus\",function(e){n.$selection.attr(\"aria-activedescendant\",e.data._resultId)}),e.on(\"selection:update\",function(e){n.update(e.data)}),e.on(\"open\",function(){n.$selection.attr(\"aria-expanded\",\"true\"),n.$selection.attr(\"aria-owns\",s),n._attachCloseHandler(e)}),e.on(\"close\",function(){n.$selection.attr(\"aria-expanded\",\"false\"),n.$selection.removeAttr(\"aria-activedescendant\"),n.$selection.removeAttr(\"aria-owns\"),n.$selection.trigger(\"focus\"),n._detachCloseHandler(e)}),e.on(\"enable\",function(){n.$selection.attr(\"tabindex\",n._tabindex),n.$selection.attr(\"aria-disabled\",\"false\")}),e.on(\"disable\",function(){n.$selection.attr(\"tabindex\",\"-1\"),n.$selection.attr(\"aria-disabled\",\"true\")})},r.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger(\"blur\",e)},1)},r.prototype._attachCloseHandler=function(e){n(document.body).on(\"mousedown.select2.\"+e.id,function(e){var t=n(e.target).closest(\".select2\");n(\".select2.select2-container--open\").each(function(){this!=t[0]&&s.GetData(this,\"element\").select2(\"close\")})})},r.prototype._detachCloseHandler=function(e){n(document.body).off(\"mousedown.select2.\"+e.id)},r.prototype.position=function(e,t){t.find(\".selection\").append(e)},r.prototype.destroy=function(){this._detachCloseHandler(this.container)},r.prototype.update=function(e){throw new Error(\"The `update` method must be defined in child classes.\")},r.prototype.isEnabled=function(){return!this.isDisabled()},r.prototype.isDisabled=function(){return this.options.get(\"disabled\")},r}),u.define(\"select2/selection/single\",[\"jquery\",\"./base\",\"../utils\",\"../keys\"],function(e,t,n,s){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e[0].classList.add(\"select2-selection--single\"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var s=t.id+\"-container\";this.$selection.find(\".select2-selection__rendered\").attr(\"id\",s).attr(\"role\",\"textbox\").attr(\"aria-readonly\",\"true\"),this.$selection.attr(\"aria-labelledby\",s),this.$selection.attr(\"aria-controls\",s),this.$selection.on(\"mousedown\",function(e){1===e.which&&n.trigger(\"toggle\",{originalEvent:e})}),this.$selection.on(\"focus\",function(e){}),this.$selection.on(\"blur\",function(e){}),t.on(\"focus\",function(e){t.isOpen()||n.$selection.trigger(\"focus\")})},i.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},i.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},i.prototype.selectionContainer=function(){return e(\"\")},i.prototype.update=function(e){var t,n;0!==e.length?(n=e[0],t=this.$selection.find(\".select2-selection__rendered\"),e=this.display(n,t),t.empty().append(e),(n=n.title||n.text)?t.attr(\"title\",n):t.removeAttr(\"title\")):this.clear()},i}),u.define(\"select2/selection/multiple\",[\"jquery\",\"./base\",\"../utils\"],function(i,e,c){function r(e,t){r.__super__.constructor.apply(this,arguments)}return c.Extend(r,e),r.prototype.render=function(){var e=r.__super__.render.call(this);return e[0].classList.add(\"select2-selection--multiple\"),e.html('
          '),e},r.prototype.bind=function(e,t){var n=this;r.__super__.bind.apply(this,arguments);var s=e.id+\"-container\";this.$selection.find(\".select2-selection__rendered\").attr(\"id\",s),this.$selection.on(\"click\",function(e){n.trigger(\"toggle\",{originalEvent:e})}),this.$selection.on(\"click\",\".select2-selection__choice__remove\",function(e){var t;n.isDisabled()||(t=i(this).parent(),t=c.GetData(t[0],\"data\"),n.trigger(\"unselect\",{originalEvent:e,data:t}))}),this.$selection.on(\"keydown\",\".select2-selection__choice__remove\",function(e){n.isDisabled()||e.stopPropagation()})},r.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},r.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},r.prototype.selectionContainer=function(){return i('
        • ')},r.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=this.$selection.find(\".select2-selection__rendered\").attr(\"id\")+\"-choice-\",s=0;s×')).attr(\"title\",s()),e.attr(\"aria-label\",s()),e.attr(\"aria-describedby\",n),a.StoreData(e[0],\"data\",t),this.$selection.prepend(e),this.$selection[0].classList.add(\"select2-selection--clearable\"))},e}),u.define(\"select2/selection/search\",[\"jquery\",\"../utils\",\"../keys\"],function(s,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=this.options.get(\"translations\").get(\"search\"),n=s('');this.$searchContainer=n,this.$search=n.find(\"textarea\"),this.$search.prop(\"autocomplete\",this.options.get(\"autocomplete\")),this.$search.attr(\"aria-label\",t());e=e.call(this);return this._transferTabIndex(),e.append(this.$searchContainer),e},e.prototype.bind=function(e,t,n){var s=this,i=t.id+\"-results\",r=t.id+\"-container\";e.call(this,t,n),s.$search.attr(\"aria-describedby\",r),t.on(\"open\",function(){s.$search.attr(\"aria-controls\",i),s.$search.trigger(\"focus\")}),t.on(\"close\",function(){s.$search.val(\"\"),s.resizeSearch(),s.$search.removeAttr(\"aria-controls\"),s.$search.removeAttr(\"aria-activedescendant\"),s.$search.trigger(\"focus\")}),t.on(\"enable\",function(){s.$search.prop(\"disabled\",!1),s._transferTabIndex()}),t.on(\"disable\",function(){s.$search.prop(\"disabled\",!0)}),t.on(\"focus\",function(e){s.$search.trigger(\"focus\")}),t.on(\"results:focus\",function(e){e.data._resultId?s.$search.attr(\"aria-activedescendant\",e.data._resultId):s.$search.removeAttr(\"aria-activedescendant\")}),this.$selection.on(\"focusin\",\".select2-search--inline\",function(e){s.trigger(\"focus\",e)}),this.$selection.on(\"focusout\",\".select2-search--inline\",function(e){s._handleBlur(e)}),this.$selection.on(\"keydown\",\".select2-search--inline\",function(e){var t;e.stopPropagation(),s.trigger(\"keypress\",e),s._keyUpPrevented=e.isDefaultPrevented(),e.which!==l.BACKSPACE||\"\"!==s.$search.val()||0<(t=s.$selection.find(\".select2-selection__choice\").last()).length&&(t=a.GetData(t[0],\"data\"),s.searchRemoveChoice(t),e.preventDefault())}),this.$selection.on(\"click\",\".select2-search--inline\",function(e){s.$search.val()&&e.stopPropagation()});var t=document.documentMode,o=t&&t<=11;this.$selection.on(\"input.searchcheck\",\".select2-search--inline\",function(e){o?s.$selection.off(\"input.search input.searchcheck\"):s.$selection.off(\"keyup.search\")}),this.$selection.on(\"keyup.search input.search\",\".select2-search--inline\",function(e){var t;o&&\"input\"===e.type?s.$selection.off(\"input.search input.searchcheck\"):(t=e.which)!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&s.handleSearch(e)})},e.prototype._transferTabIndex=function(e){this.$search.attr(\"tabindex\",this.$selection.attr(\"tabindex\")),this.$selection.attr(\"tabindex\",\"-1\")},e.prototype.createPlaceholder=function(e,t){this.$search.attr(\"placeholder\",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr(\"placeholder\",\"\"),e.call(this,t),this.resizeSearch(),n&&this.$search.trigger(\"focus\")},e.prototype.handleSearch=function(){var e;this.resizeSearch(),this._keyUpPrevented||(e=this.$search.val(),this.trigger(\"query\",{term:e})),this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger(\"unselect\",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css(\"width\",\"25px\");var e=\"100%\";\"\"===this.$search.attr(\"placeholder\")&&(e=.75*(this.$search.val().length+1)+\"em\"),this.$search.css(\"width\",e)},e}),u.define(\"select2/selection/selectionCss\",[\"../utils\"],function(n){function e(){}return e.prototype.render=function(e){var t=e.call(this),e=this.options.get(\"selectionCssClass\")||\"\";return-1!==e.indexOf(\":all:\")&&(e=e.replace(\":all:\",\"\"),n.copyNonInternalCssClasses(t[0],this.$element[0])),t.addClass(e),t},e}),u.define(\"select2/selection/eventRelay\",[\"jquery\"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var s=this,i=[\"open\",\"opening\",\"close\",\"closing\",\"select\",\"selecting\",\"unselect\",\"unselecting\",\"clear\",\"clearing\"],r=[\"opening\",\"closing\",\"selecting\",\"unselecting\",\"clearing\"];e.call(this,t,n),t.on(\"*\",function(e,t){var n;-1!==i.indexOf(e)&&(t=t||{},n=o.Event(\"select2:\"+e,{params:t}),s.$element.trigger(n),-1!==r.indexOf(e)&&(t.prevented=n.isDefaultPrevented()))})},e}),u.define(\"select2/translation\",[\"jquery\",\"require\"],function(t,n){function s(e){this.dict=e||{}}return s.prototype.all=function(){return this.dict},s.prototype.get=function(e){return this.dict[e]},s.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},s._cache={},s.loadPath=function(e){var t;return e in s._cache||(t=n(e),s._cache[e]=t),new s(s._cache[e])},s}),u.define(\"select2/diacritics\",[],function(){return{\"Ⓐ\":\"A\",\"A\":\"A\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ầ\":\"A\",\"Ấ\":\"A\",\"Ẫ\":\"A\",\"Ẩ\":\"A\",\"Ã\":\"A\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ằ\":\"A\",\"Ắ\":\"A\",\"Ẵ\":\"A\",\"Ẳ\":\"A\",\"Ȧ\":\"A\",\"Ǡ\":\"A\",\"Ä\":\"A\",\"Ǟ\":\"A\",\"Ả\":\"A\",\"Å\":\"A\",\"Ǻ\":\"A\",\"Ǎ\":\"A\",\"Ȁ\":\"A\",\"Ȃ\":\"A\",\"Ạ\":\"A\",\"Ậ\":\"A\",\"Ặ\":\"A\",\"Ḁ\":\"A\",\"Ą\":\"A\",\"Ⱥ\":\"A\",\"Ɐ\":\"A\",\"Ꜳ\":\"AA\",\"Æ\":\"AE\",\"Ǽ\":\"AE\",\"Ǣ\":\"AE\",\"Ꜵ\":\"AO\",\"Ꜷ\":\"AU\",\"Ꜹ\":\"AV\",\"Ꜻ\":\"AV\",\"Ꜽ\":\"AY\",\"Ⓑ\":\"B\",\"B\":\"B\",\"Ḃ\":\"B\",\"Ḅ\":\"B\",\"Ḇ\":\"B\",\"Ƀ\":\"B\",\"Ƃ\":\"B\",\"Ɓ\":\"B\",\"Ⓒ\":\"C\",\"C\":\"C\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"Ç\":\"C\",\"Ḉ\":\"C\",\"Ƈ\":\"C\",\"Ȼ\":\"C\",\"Ꜿ\":\"C\",\"Ⓓ\":\"D\",\"D\":\"D\",\"Ḋ\":\"D\",\"Ď\":\"D\",\"Ḍ\":\"D\",\"Ḑ\":\"D\",\"Ḓ\":\"D\",\"Ḏ\":\"D\",\"Đ\":\"D\",\"Ƌ\":\"D\",\"Ɗ\":\"D\",\"Ɖ\":\"D\",\"Ꝺ\":\"D\",\"DZ\":\"DZ\",\"DŽ\":\"DZ\",\"Dz\":\"Dz\",\"Dž\":\"Dz\",\"Ⓔ\":\"E\",\"E\":\"E\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ề\":\"E\",\"Ế\":\"E\",\"Ễ\":\"E\",\"Ể\":\"E\",\"Ẽ\":\"E\",\"Ē\":\"E\",\"Ḕ\":\"E\",\"Ḗ\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ë\":\"E\",\"Ẻ\":\"E\",\"Ě\":\"E\",\"Ȅ\":\"E\",\"Ȇ\":\"E\",\"Ẹ\":\"E\",\"Ệ\":\"E\",\"Ȩ\":\"E\",\"Ḝ\":\"E\",\"Ę\":\"E\",\"Ḙ\":\"E\",\"Ḛ\":\"E\",\"Ɛ\":\"E\",\"Ǝ\":\"E\",\"Ⓕ\":\"F\",\"F\":\"F\",\"Ḟ\":\"F\",\"Ƒ\":\"F\",\"Ꝼ\":\"F\",\"Ⓖ\":\"G\",\"G\":\"G\",\"Ǵ\":\"G\",\"Ĝ\":\"G\",\"Ḡ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ǧ\":\"G\",\"Ģ\":\"G\",\"Ǥ\":\"G\",\"Ɠ\":\"G\",\"Ꞡ\":\"G\",\"Ᵹ\":\"G\",\"Ꝿ\":\"G\",\"Ⓗ\":\"H\",\"H\":\"H\",\"Ĥ\":\"H\",\"Ḣ\":\"H\",\"Ḧ\":\"H\",\"Ȟ\":\"H\",\"Ḥ\":\"H\",\"Ḩ\":\"H\",\"Ḫ\":\"H\",\"Ħ\":\"H\",\"Ⱨ\":\"H\",\"Ⱶ\":\"H\",\"Ɥ\":\"H\",\"Ⓘ\":\"I\",\"I\":\"I\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"İ\":\"I\",\"Ï\":\"I\",\"Ḯ\":\"I\",\"Ỉ\":\"I\",\"Ǐ\":\"I\",\"Ȉ\":\"I\",\"Ȋ\":\"I\",\"Ị\":\"I\",\"Į\":\"I\",\"Ḭ\":\"I\",\"Ɨ\":\"I\",\"Ⓙ\":\"J\",\"J\":\"J\",\"Ĵ\":\"J\",\"Ɉ\":\"J\",\"Ⓚ\":\"K\",\"K\":\"K\",\"Ḱ\":\"K\",\"Ǩ\":\"K\",\"Ḳ\":\"K\",\"Ķ\":\"K\",\"Ḵ\":\"K\",\"Ƙ\":\"K\",\"Ⱪ\":\"K\",\"Ꝁ\":\"K\",\"Ꝃ\":\"K\",\"Ꝅ\":\"K\",\"Ꞣ\":\"K\",\"Ⓛ\":\"L\",\"L\":\"L\",\"Ŀ\":\"L\",\"Ĺ\":\"L\",\"Ľ\":\"L\",\"Ḷ\":\"L\",\"Ḹ\":\"L\",\"Ļ\":\"L\",\"Ḽ\":\"L\",\"Ḻ\":\"L\",\"Ł\":\"L\",\"Ƚ\":\"L\",\"Ɫ\":\"L\",\"Ⱡ\":\"L\",\"Ꝉ\":\"L\",\"Ꝇ\":\"L\",\"Ꞁ\":\"L\",\"LJ\":\"LJ\",\"Lj\":\"Lj\",\"Ⓜ\":\"M\",\"M\":\"M\",\"Ḿ\":\"M\",\"Ṁ\":\"M\",\"Ṃ\":\"M\",\"Ɱ\":\"M\",\"Ɯ\":\"M\",\"Ⓝ\":\"N\",\"N\":\"N\",\"Ǹ\":\"N\",\"Ń\":\"N\",\"Ñ\":\"N\",\"Ṅ\":\"N\",\"Ň\":\"N\",\"Ṇ\":\"N\",\"Ņ\":\"N\",\"Ṋ\":\"N\",\"Ṉ\":\"N\",\"Ƞ\":\"N\",\"Ɲ\":\"N\",\"Ꞑ\":\"N\",\"Ꞥ\":\"N\",\"NJ\":\"NJ\",\"Nj\":\"Nj\",\"Ⓞ\":\"O\",\"O\":\"O\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Ồ\":\"O\",\"Ố\":\"O\",\"Ỗ\":\"O\",\"Ổ\":\"O\",\"Õ\":\"O\",\"Ṍ\":\"O\",\"Ȭ\":\"O\",\"Ṏ\":\"O\",\"Ō\":\"O\",\"Ṑ\":\"O\",\"Ṓ\":\"O\",\"Ŏ\":\"O\",\"Ȯ\":\"O\",\"Ȱ\":\"O\",\"Ö\":\"O\",\"Ȫ\":\"O\",\"Ỏ\":\"O\",\"Ő\":\"O\",\"Ǒ\":\"O\",\"Ȍ\":\"O\",\"Ȏ\":\"O\",\"Ơ\":\"O\",\"Ờ\":\"O\",\"Ớ\":\"O\",\"Ỡ\":\"O\",\"Ở\":\"O\",\"Ợ\":\"O\",\"Ọ\":\"O\",\"Ộ\":\"O\",\"Ǫ\":\"O\",\"Ǭ\":\"O\",\"Ø\":\"O\",\"Ǿ\":\"O\",\"Ɔ\":\"O\",\"Ɵ\":\"O\",\"Ꝋ\":\"O\",\"Ꝍ\":\"O\",\"Œ\":\"OE\",\"Ƣ\":\"OI\",\"Ꝏ\":\"OO\",\"Ȣ\":\"OU\",\"Ⓟ\":\"P\",\"P\":\"P\",\"Ṕ\":\"P\",\"Ṗ\":\"P\",\"Ƥ\":\"P\",\"Ᵽ\":\"P\",\"Ꝑ\":\"P\",\"Ꝓ\":\"P\",\"Ꝕ\":\"P\",\"Ⓠ\":\"Q\",\"Q\":\"Q\",\"Ꝗ\":\"Q\",\"Ꝙ\":\"Q\",\"Ɋ\":\"Q\",\"Ⓡ\":\"R\",\"R\":\"R\",\"Ŕ\":\"R\",\"Ṙ\":\"R\",\"Ř\":\"R\",\"Ȑ\":\"R\",\"Ȓ\":\"R\",\"Ṛ\":\"R\",\"Ṝ\":\"R\",\"Ŗ\":\"R\",\"Ṟ\":\"R\",\"Ɍ\":\"R\",\"Ɽ\":\"R\",\"Ꝛ\":\"R\",\"Ꞧ\":\"R\",\"Ꞃ\":\"R\",\"Ⓢ\":\"S\",\"S\":\"S\",\"ẞ\":\"S\",\"Ś\":\"S\",\"Ṥ\":\"S\",\"Ŝ\":\"S\",\"Ṡ\":\"S\",\"Š\":\"S\",\"Ṧ\":\"S\",\"Ṣ\":\"S\",\"Ṩ\":\"S\",\"Ș\":\"S\",\"Ş\":\"S\",\"Ȿ\":\"S\",\"Ꞩ\":\"S\",\"Ꞅ\":\"S\",\"Ⓣ\":\"T\",\"T\":\"T\",\"Ṫ\":\"T\",\"Ť\":\"T\",\"Ṭ\":\"T\",\"Ț\":\"T\",\"Ţ\":\"T\",\"Ṱ\":\"T\",\"Ṯ\":\"T\",\"Ŧ\":\"T\",\"Ƭ\":\"T\",\"Ʈ\":\"T\",\"Ⱦ\":\"T\",\"Ꞇ\":\"T\",\"Ꜩ\":\"TZ\",\"Ⓤ\":\"U\",\"U\":\"U\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ũ\":\"U\",\"Ṹ\":\"U\",\"Ū\":\"U\",\"Ṻ\":\"U\",\"Ŭ\":\"U\",\"Ü\":\"U\",\"Ǜ\":\"U\",\"Ǘ\":\"U\",\"Ǖ\":\"U\",\"Ǚ\":\"U\",\"Ủ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ǔ\":\"U\",\"Ȕ\":\"U\",\"Ȗ\":\"U\",\"Ư\":\"U\",\"Ừ\":\"U\",\"Ứ\":\"U\",\"Ữ\":\"U\",\"Ử\":\"U\",\"Ự\":\"U\",\"Ụ\":\"U\",\"Ṳ\":\"U\",\"Ų\":\"U\",\"Ṷ\":\"U\",\"Ṵ\":\"U\",\"Ʉ\":\"U\",\"Ⓥ\":\"V\",\"V\":\"V\",\"Ṽ\":\"V\",\"Ṿ\":\"V\",\"Ʋ\":\"V\",\"Ꝟ\":\"V\",\"Ʌ\":\"V\",\"Ꝡ\":\"VY\",\"Ⓦ\":\"W\",\"W\":\"W\",\"Ẁ\":\"W\",\"Ẃ\":\"W\",\"Ŵ\":\"W\",\"Ẇ\":\"W\",\"Ẅ\":\"W\",\"Ẉ\":\"W\",\"Ⱳ\":\"W\",\"Ⓧ\":\"X\",\"X\":\"X\",\"Ẋ\":\"X\",\"Ẍ\":\"X\",\"Ⓨ\":\"Y\",\"Y\":\"Y\",\"Ỳ\":\"Y\",\"Ý\":\"Y\",\"Ŷ\":\"Y\",\"Ỹ\":\"Y\",\"Ȳ\":\"Y\",\"Ẏ\":\"Y\",\"Ÿ\":\"Y\",\"Ỷ\":\"Y\",\"Ỵ\":\"Y\",\"Ƴ\":\"Y\",\"Ɏ\":\"Y\",\"Ỿ\":\"Y\",\"Ⓩ\":\"Z\",\"Z\":\"Z\",\"Ź\":\"Z\",\"Ẑ\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"Ẓ\":\"Z\",\"Ẕ\":\"Z\",\"Ƶ\":\"Z\",\"Ȥ\":\"Z\",\"Ɀ\":\"Z\",\"Ⱬ\":\"Z\",\"Ꝣ\":\"Z\",\"ⓐ\":\"a\",\"a\":\"a\",\"ẚ\":\"a\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ầ\":\"a\",\"ấ\":\"a\",\"ẫ\":\"a\",\"ẩ\":\"a\",\"ã\":\"a\",\"ā\":\"a\",\"ă\":\"a\",\"ằ\":\"a\",\"ắ\":\"a\",\"ẵ\":\"a\",\"ẳ\":\"a\",\"ȧ\":\"a\",\"ǡ\":\"a\",\"ä\":\"a\",\"ǟ\":\"a\",\"ả\":\"a\",\"å\":\"a\",\"ǻ\":\"a\",\"ǎ\":\"a\",\"ȁ\":\"a\",\"ȃ\":\"a\",\"ạ\":\"a\",\"ậ\":\"a\",\"ặ\":\"a\",\"ḁ\":\"a\",\"ą\":\"a\",\"ⱥ\":\"a\",\"ɐ\":\"a\",\"ꜳ\":\"aa\",\"æ\":\"ae\",\"ǽ\":\"ae\",\"ǣ\":\"ae\",\"ꜵ\":\"ao\",\"ꜷ\":\"au\",\"ꜹ\":\"av\",\"ꜻ\":\"av\",\"ꜽ\":\"ay\",\"ⓑ\":\"b\",\"b\":\"b\",\"ḃ\":\"b\",\"ḅ\":\"b\",\"ḇ\":\"b\",\"ƀ\":\"b\",\"ƃ\":\"b\",\"ɓ\":\"b\",\"ⓒ\":\"c\",\"c\":\"c\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"ç\":\"c\",\"ḉ\":\"c\",\"ƈ\":\"c\",\"ȼ\":\"c\",\"ꜿ\":\"c\",\"ↄ\":\"c\",\"ⓓ\":\"d\",\"d\":\"d\",\"ḋ\":\"d\",\"ď\":\"d\",\"ḍ\":\"d\",\"ḑ\":\"d\",\"ḓ\":\"d\",\"ḏ\":\"d\",\"đ\":\"d\",\"ƌ\":\"d\",\"ɖ\":\"d\",\"ɗ\":\"d\",\"ꝺ\":\"d\",\"dz\":\"dz\",\"dž\":\"dz\",\"ⓔ\":\"e\",\"e\":\"e\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ề\":\"e\",\"ế\":\"e\",\"ễ\":\"e\",\"ể\":\"e\",\"ẽ\":\"e\",\"ē\":\"e\",\"ḕ\":\"e\",\"ḗ\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ë\":\"e\",\"ẻ\":\"e\",\"ě\":\"e\",\"ȅ\":\"e\",\"ȇ\":\"e\",\"ẹ\":\"e\",\"ệ\":\"e\",\"ȩ\":\"e\",\"ḝ\":\"e\",\"ę\":\"e\",\"ḙ\":\"e\",\"ḛ\":\"e\",\"ɇ\":\"e\",\"ɛ\":\"e\",\"ǝ\":\"e\",\"ⓕ\":\"f\",\"f\":\"f\",\"ḟ\":\"f\",\"ƒ\":\"f\",\"ꝼ\":\"f\",\"ⓖ\":\"g\",\"g\":\"g\",\"ǵ\":\"g\",\"ĝ\":\"g\",\"ḡ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ǧ\":\"g\",\"ģ\":\"g\",\"ǥ\":\"g\",\"ɠ\":\"g\",\"ꞡ\":\"g\",\"ᵹ\":\"g\",\"ꝿ\":\"g\",\"ⓗ\":\"h\",\"h\":\"h\",\"ĥ\":\"h\",\"ḣ\":\"h\",\"ḧ\":\"h\",\"ȟ\":\"h\",\"ḥ\":\"h\",\"ḩ\":\"h\",\"ḫ\":\"h\",\"ẖ\":\"h\",\"ħ\":\"h\",\"ⱨ\":\"h\",\"ⱶ\":\"h\",\"ɥ\":\"h\",\"ƕ\":\"hv\",\"ⓘ\":\"i\",\"i\":\"i\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"ï\":\"i\",\"ḯ\":\"i\",\"ỉ\":\"i\",\"ǐ\":\"i\",\"ȉ\":\"i\",\"ȋ\":\"i\",\"ị\":\"i\",\"į\":\"i\",\"ḭ\":\"i\",\"ɨ\":\"i\",\"ı\":\"i\",\"ⓙ\":\"j\",\"j\":\"j\",\"ĵ\":\"j\",\"ǰ\":\"j\",\"ɉ\":\"j\",\"ⓚ\":\"k\",\"k\":\"k\",\"ḱ\":\"k\",\"ǩ\":\"k\",\"ḳ\":\"k\",\"ķ\":\"k\",\"ḵ\":\"k\",\"ƙ\":\"k\",\"ⱪ\":\"k\",\"ꝁ\":\"k\",\"ꝃ\":\"k\",\"ꝅ\":\"k\",\"ꞣ\":\"k\",\"ⓛ\":\"l\",\"l\":\"l\",\"ŀ\":\"l\",\"ĺ\":\"l\",\"ľ\":\"l\",\"ḷ\":\"l\",\"ḹ\":\"l\",\"ļ\":\"l\",\"ḽ\":\"l\",\"ḻ\":\"l\",\"ſ\":\"l\",\"ł\":\"l\",\"ƚ\":\"l\",\"ɫ\":\"l\",\"ⱡ\":\"l\",\"ꝉ\":\"l\",\"ꞁ\":\"l\",\"ꝇ\":\"l\",\"lj\":\"lj\",\"ⓜ\":\"m\",\"m\":\"m\",\"ḿ\":\"m\",\"ṁ\":\"m\",\"ṃ\":\"m\",\"ɱ\":\"m\",\"ɯ\":\"m\",\"ⓝ\":\"n\",\"n\":\"n\",\"ǹ\":\"n\",\"ń\":\"n\",\"ñ\":\"n\",\"ṅ\":\"n\",\"ň\":\"n\",\"ṇ\":\"n\",\"ņ\":\"n\",\"ṋ\":\"n\",\"ṉ\":\"n\",\"ƞ\":\"n\",\"ɲ\":\"n\",\"ʼn\":\"n\",\"ꞑ\":\"n\",\"ꞥ\":\"n\",\"nj\":\"nj\",\"ⓞ\":\"o\",\"o\":\"o\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"ồ\":\"o\",\"ố\":\"o\",\"ỗ\":\"o\",\"ổ\":\"o\",\"õ\":\"o\",\"ṍ\":\"o\",\"ȭ\":\"o\",\"ṏ\":\"o\",\"ō\":\"o\",\"ṑ\":\"o\",\"ṓ\":\"o\",\"ŏ\":\"o\",\"ȯ\":\"o\",\"ȱ\":\"o\",\"ö\":\"o\",\"ȫ\":\"o\",\"ỏ\":\"o\",\"ő\":\"o\",\"ǒ\":\"o\",\"ȍ\":\"o\",\"ȏ\":\"o\",\"ơ\":\"o\",\"ờ\":\"o\",\"ớ\":\"o\",\"ỡ\":\"o\",\"ở\":\"o\",\"ợ\":\"o\",\"ọ\":\"o\",\"ộ\":\"o\",\"ǫ\":\"o\",\"ǭ\":\"o\",\"ø\":\"o\",\"ǿ\":\"o\",\"ɔ\":\"o\",\"ꝋ\":\"o\",\"ꝍ\":\"o\",\"ɵ\":\"o\",\"œ\":\"oe\",\"ƣ\":\"oi\",\"ȣ\":\"ou\",\"ꝏ\":\"oo\",\"ⓟ\":\"p\",\"p\":\"p\",\"ṕ\":\"p\",\"ṗ\":\"p\",\"ƥ\":\"p\",\"ᵽ\":\"p\",\"ꝑ\":\"p\",\"ꝓ\":\"p\",\"ꝕ\":\"p\",\"ⓠ\":\"q\",\"q\":\"q\",\"ɋ\":\"q\",\"ꝗ\":\"q\",\"ꝙ\":\"q\",\"ⓡ\":\"r\",\"r\":\"r\",\"ŕ\":\"r\",\"ṙ\":\"r\",\"ř\":\"r\",\"ȑ\":\"r\",\"ȓ\":\"r\",\"ṛ\":\"r\",\"ṝ\":\"r\",\"ŗ\":\"r\",\"ṟ\":\"r\",\"ɍ\":\"r\",\"ɽ\":\"r\",\"ꝛ\":\"r\",\"ꞧ\":\"r\",\"ꞃ\":\"r\",\"ⓢ\":\"s\",\"s\":\"s\",\"ß\":\"s\",\"ś\":\"s\",\"ṥ\":\"s\",\"ŝ\":\"s\",\"ṡ\":\"s\",\"š\":\"s\",\"ṧ\":\"s\",\"ṣ\":\"s\",\"ṩ\":\"s\",\"ș\":\"s\",\"ş\":\"s\",\"ȿ\":\"s\",\"ꞩ\":\"s\",\"ꞅ\":\"s\",\"ẛ\":\"s\",\"ⓣ\":\"t\",\"t\":\"t\",\"ṫ\":\"t\",\"ẗ\":\"t\",\"ť\":\"t\",\"ṭ\":\"t\",\"ț\":\"t\",\"ţ\":\"t\",\"ṱ\":\"t\",\"ṯ\":\"t\",\"ŧ\":\"t\",\"ƭ\":\"t\",\"ʈ\":\"t\",\"ⱦ\":\"t\",\"ꞇ\":\"t\",\"ꜩ\":\"tz\",\"ⓤ\":\"u\",\"u\":\"u\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ũ\":\"u\",\"ṹ\":\"u\",\"ū\":\"u\",\"ṻ\":\"u\",\"ŭ\":\"u\",\"ü\":\"u\",\"ǜ\":\"u\",\"ǘ\":\"u\",\"ǖ\":\"u\",\"ǚ\":\"u\",\"ủ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ǔ\":\"u\",\"ȕ\":\"u\",\"ȗ\":\"u\",\"ư\":\"u\",\"ừ\":\"u\",\"ứ\":\"u\",\"ữ\":\"u\",\"ử\":\"u\",\"ự\":\"u\",\"ụ\":\"u\",\"ṳ\":\"u\",\"ų\":\"u\",\"ṷ\":\"u\",\"ṵ\":\"u\",\"ʉ\":\"u\",\"ⓥ\":\"v\",\"v\":\"v\",\"ṽ\":\"v\",\"ṿ\":\"v\",\"ʋ\":\"v\",\"ꝟ\":\"v\",\"ʌ\":\"v\",\"ꝡ\":\"vy\",\"ⓦ\":\"w\",\"w\":\"w\",\"ẁ\":\"w\",\"ẃ\":\"w\",\"ŵ\":\"w\",\"ẇ\":\"w\",\"ẅ\":\"w\",\"ẘ\":\"w\",\"ẉ\":\"w\",\"ⱳ\":\"w\",\"ⓧ\":\"x\",\"x\":\"x\",\"ẋ\":\"x\",\"ẍ\":\"x\",\"ⓨ\":\"y\",\"y\":\"y\",\"ỳ\":\"y\",\"ý\":\"y\",\"ŷ\":\"y\",\"ỹ\":\"y\",\"ȳ\":\"y\",\"ẏ\":\"y\",\"ÿ\":\"y\",\"ỷ\":\"y\",\"ẙ\":\"y\",\"ỵ\":\"y\",\"ƴ\":\"y\",\"ɏ\":\"y\",\"ỿ\":\"y\",\"ⓩ\":\"z\",\"z\":\"z\",\"ź\":\"z\",\"ẑ\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"ẓ\":\"z\",\"ẕ\":\"z\",\"ƶ\":\"z\",\"ȥ\":\"z\",\"ɀ\":\"z\",\"ⱬ\":\"z\",\"ꝣ\":\"z\",\"Ά\":\"Α\",\"Έ\":\"Ε\",\"Ή\":\"Η\",\"Ί\":\"Ι\",\"Ϊ\":\"Ι\",\"Ό\":\"Ο\",\"Ύ\":\"Υ\",\"Ϋ\":\"Υ\",\"Ώ\":\"Ω\",\"ά\":\"α\",\"έ\":\"ε\",\"ή\":\"η\",\"ί\":\"ι\",\"ϊ\":\"ι\",\"ΐ\":\"ι\",\"ό\":\"ο\",\"ύ\":\"υ\",\"ϋ\":\"υ\",\"ΰ\":\"υ\",\"ώ\":\"ω\",\"ς\":\"σ\",\"’\":\"'\"}}),u.define(\"select2/data/base\",[\"../utils\"],function(n){function s(e,t){s.__super__.constructor.call(this)}return n.Extend(s,n.Observable),s.prototype.current=function(e){throw new Error(\"The `current` method must be defined in child classes.\")},s.prototype.query=function(e,t){throw new Error(\"The `query` method must be defined in child classes.\")},s.prototype.bind=function(e,t){},s.prototype.destroy=function(){},s.prototype.generateResultId=function(e,t){e=e.id+\"-result-\";return e+=n.generateChars(4),null!=t.id?e+=\"-\"+t.id.toString():e+=\"-\"+n.generateChars(4),e},s}),u.define(\"select2/data/select\",[\"./base\",\"../utils\",\"jquery\"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var t=this;e(Array.prototype.map.call(this.$element[0].querySelectorAll(\":checked\"),function(e){return t.item(l(e))}))},n.prototype.select=function(i){var e,r=this;if(i.selected=!0,null!=i.element&&\"option\"===i.element.tagName.toLowerCase())return i.element.selected=!0,void this.$element.trigger(\"input\").trigger(\"change\");this.$element.prop(\"multiple\")?this.current(function(e){var t=[];(i=[i]).push.apply(i,e);for(var n=0;nthis.maximumInputLength?this.trigger(\"results:message\",{message:\"inputTooLong\",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),u.define(\"select2/data/maximumSelectionLength\",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get(\"maximumSelectionLength\"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on(\"select\",function(){s._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var s=this;this._checkIfMaximumSelected(function(){e.call(s,t,n)})},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current(function(e){e=null!=e?e.length:0;0=n.maximumSelectionLength?n.trigger(\"results:message\",{message:\"maximumSelected\",args:{maximum:n.maximumSelectionLength}}):t&&t()})},e}),u.define(\"select2/dropdown\",[\"jquery\",\"./utils\"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr(\"dir\",this.options.get(\"dir\")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),u.define(\"select2/dropdown/search\",[\"jquery\"],function(r){function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get(\"translations\").get(\"search\"),e=r('');return this.$searchContainer=e,this.$search=e.find(\"input\"),this.$search.prop(\"autocomplete\",this.options.get(\"autocomplete\")),this.$search.attr(\"aria-label\",n()),t.prepend(e),t},e.prototype.bind=function(e,t,n){var s=this,i=t.id+\"-results\";e.call(this,t,n),this.$search.on(\"keydown\",function(e){s.trigger(\"keypress\",e),s._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on(\"input\",function(e){r(this).off(\"keyup\")}),this.$search.on(\"keyup input\",function(e){s.handleSearch(e)}),t.on(\"open\",function(){s.$search.attr(\"tabindex\",0),s.$search.attr(\"aria-controls\",i),s.$search.trigger(\"focus\"),window.setTimeout(function(){s.$search.trigger(\"focus\")},0)}),t.on(\"close\",function(){s.$search.attr(\"tabindex\",-1),s.$search.removeAttr(\"aria-controls\"),s.$search.removeAttr(\"aria-activedescendant\"),s.$search.val(\"\"),s.$search.trigger(\"blur\")}),t.on(\"focus\",function(){t.isOpen()||s.$search.trigger(\"focus\")}),t.on(\"results:all\",function(e){null!=e.query.term&&\"\"!==e.query.term||(s.showSearch(e)?s.$searchContainer[0].classList.remove(\"select2-search--hide\"):s.$searchContainer[0].classList.add(\"select2-search--hide\"))}),t.on(\"results:focus\",function(e){e.data._resultId?s.$search.attr(\"aria-activedescendant\",e.data._resultId):s.$search.removeAttr(\"aria-activedescendant\")})},e.prototype.handleSearch=function(e){var t;this._keyUpPrevented||(t=this.$search.val(),this.trigger(\"query\",{term:t})),this._keyUpPrevented=!1},e.prototype.showSearch=function(e,t){return!0},e}),u.define(\"select2/dropdown/hidePlaceholder\",[],function(){function e(e,t,n,s){this.placeholder=this.normalizePlaceholder(n.get(\"placeholder\")),e.call(this,t,n,s)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return t=\"string\"==typeof t?{id:\"\",text:t}:t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),s=t.length-1;0<=s;s--){var i=t[s];this.placeholder.id===i.id&&n.splice(s,1)}return n},e}),u.define(\"select2/dropdown/infiniteScroll\",[\"jquery\"],function(n){function e(e,t,n,s){this.lastParams={},e.call(this,t,n,s),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on(\"query\",function(e){s.lastParams=e,s.loading=!0}),t.on(\"query:append\",function(e){s.lastParams=e,s.loading=!0}),this.$results.on(\"scroll\",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&e&&(e=this.$results.offset().top+this.$results.outerHeight(!1),this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=e+50&&this.loadMore())},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger(\"query:append\",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
        • '),t=this.options.get(\"translations\").get(\"loadingMore\");return e.html(t(this.lastParams)),e},e}),u.define(\"select2/dropdown/attachBody\",[\"jquery\",\"../utils\"],function(u,o){function e(e,t,n){this.$dropdownParent=u(n.get(\"dropdownParent\")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on(\"open\",function(){s._showDropdown(),s._attachPositioningHandler(t),s._bindContainerResultHandlers(t)}),t.on(\"close\",function(){s._hideDropdown(),s._detachPositioningHandler(t)}),this.$dropdownContainer.on(\"mousedown\",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr(\"class\",n.attr(\"class\")),t[0].classList.remove(\"select2\"),t[0].classList.add(\"select2-container--open\"),t.css({position:\"absolute\",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=u(\"\"),e=e.call(this);return t.append(e),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){var n;this._containerResultsHandlersBound||(n=this,t.on(\"results:all\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"results:append\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"results:message\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"select\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"unselect\",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0)},e.prototype._attachPositioningHandler=function(e,t){var n=this,s=\"scroll.select2.\"+t.id,i=\"resize.select2.\"+t.id,r=\"orientationchange.select2.\"+t.id,t=this.$container.parents().filter(o.hasScroll);t.each(function(){o.StoreData(this,\"select2-scroll-position\",{x:u(this).scrollLeft(),y:u(this).scrollTop()})}),t.on(s,function(e){var t=o.GetData(this,\"select2-scroll-position\");u(this).scrollTop(t.y)}),u(window).on(s+\" \"+i+\" \"+r,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n=\"scroll.select2.\"+t.id,s=\"resize.select2.\"+t.id,t=\"orientationchange.select2.\"+t.id;this.$container.parents().filter(o.hasScroll).off(n),u(window).off(n+\" \"+s+\" \"+t)},e.prototype._positionDropdown=function(){var e=u(window),t=this.$dropdown[0].classList.contains(\"select2-dropdown--above\"),n=this.$dropdown[0].classList.contains(\"select2-dropdown--below\"),s=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var r={height:this.$container.outerHeight(!1)};r.top=i.top,r.bottom=i.top+r.height;var o=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+o,a={left:i.left,top:r.bottom},l=this.$dropdownParent;\"static\"===l.css(\"position\")&&(l=l.offsetParent());i={top:0,left:0};(u.contains(document.body,l[0])||l[0].isConnected)&&(i=l.offset()),a.top-=i.top,a.left-=i.left,t||n||(s=\"below\"),e||!c||t?!c&&e&&t&&(s=\"below\"):s=\"above\",(\"above\"==s||t&&\"below\"!==s)&&(a.top=r.top-i.top-o),null!=s&&(this.$dropdown[0].classList.remove(\"select2-dropdown--below\"),this.$dropdown[0].classList.remove(\"select2-dropdown--above\"),this.$dropdown[0].classList.add(\"select2-dropdown--\"+s),this.$container[0].classList.remove(\"select2-container--below\"),this.$container[0].classList.remove(\"select2-container--above\"),this.$container[0].classList.add(\"select2-container--\"+s)),this.$dropdownContainer.css(a)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+\"px\"};this.options.get(\"dropdownAutoWidth\")&&(e.minWidth=e.width,e.position=\"relative\",e.width=\"auto\"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),u.define(\"select2/dropdown/minimumResultsForSearch\",[],function(){function e(e,t,n,s){this.minimumResultsForSearch=n.get(\"minimumResultsForSearch\"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,s)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,s=0;s');return e.attr(\"dir\",this.options.get(\"dir\")),this.$container=e,this.$container[0].classList.add(\"select2-container--\"+this.options.get(\"theme\")),r.StoreData(e[0],\"element\",this.$element),e},o}),u.define(\"jquery-mousewheel\",[\"jquery\"],function(e){return e}),u.define(\"jquery.select2\",[\"jquery\",\"jquery-mousewheel\",\"./select2/core\",\"./select2/defaults\",\"./select2/utils\"],function(i,e,r,t,o){var a;return null==i.fn.select2&&(a=[\"open\",\"close\",\"destroy\"],i.fn.select2=function(t){if(\"object\"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new r(i(this),e)}),this;if(\"string\"!=typeof t)throw new Error(\"Invalid arguments for Select2: \"+t);var n,s=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=o.GetData(this,\"select2\");null==e&&window.console&&console.error&&console.error(\"The select2('\"+t+\"') method was called on an element that is not using Select2.\"),n=e[t].apply(e,s)}),-1uV?|HAF=s_uUJT|iQHmYK0n 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 literal 0 HcmV?d00001 diff --git a/_static/296.37eb8c05642d8ef9.js b/_static/296.37eb8c05642d8ef9.js new file mode 100644 index 0000000..371bb48 --- /dev/null +++ b/_static/296.37eb8c05642d8ef9.js @@ -0,0 +1,2 @@ +(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[296],{15237:function(e){e.exports=function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),a=n||i||o,s=a&&(n?document.documentMode||6:+(o||i)[1]),l=!o&&/WebKit\//.test(e),c=l&&/Qt\/\d+\.\d+/.test(e),u=!o&&/Chrome\/(\d+)/.exec(e),d=u&&+u[1],f=/Opera\//.test(e),p=/Apple Computer/.test(navigator.vendor),h=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),m=/PhantomJS/.test(e),g=p&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),v=/Android/.test(e),y=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),b=g||/Mac/.test(t),x=/\bCrOS\b/.test(e),w=/win/i.test(t),_=f&&e.match(/Version\/(\d*\.\d*)/);_&&(_=Number(_[1])),_&&_>=15&&(f=!1,l=!0);var k=b&&(c||f&&(null==_||_<12.11)),C=r||a&&s>=9;function S(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var L,T=function(e,t){var r=e.className,n=S(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function z(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return a+(t-o);a+=s-o,a+=r-a%r,o=s+1}}g?I=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:a&&(I=function(e){try{e.select()}catch(e){}});var j=function(){this.id=null,this.f=null,this.time=0,this.handler=R(this.onTimeout,this)};function B(e,t){for(var r=0;r=t)return n+Math.min(a,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var X=[""];function Y(e){for(;X.length<=e;)X.push(Q(X)+" ");return X[e]}function Q(e){return e[e.length-1]}function Z(e,t){for(var r=[],n=0;n"€"&&(e.toUpperCase()!=e.toLowerCase()||te.test(e))}function ne(e,t){return t?!!(t.source.indexOf("\\w")>-1&&re(e))||t.test(e):re(e)}function ie(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var oe=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ae(e){return e.charCodeAt(0)>=768&&oe.test(e)}function se(e,t,r){for(;(r<0?t>0:tr?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}var ce=null;function ue(e,t,r){var n;ce=null;for(var i=0;it)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:ce=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:ce=i)}return null!=n?n:ce}var de=function(){var e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,t=/[stwN]/,r=/[LRr]/,n=/[Lb1n]/,i=/[1n]/;function o(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,s){var l,c="ltr"==s?"L":"R";if(0==a.length||"ltr"==s&&!e.test(a))return!1;for(var u=a.length,d=[],f=0;f-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ve(e,t){var r=me(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i0}function we(e){e.prototype.on=function(e,t){he(this,e,t)},e.prototype.off=function(e,t){ge(this,e,t)}}function _e(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function ke(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ce(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Se(e){_e(e),ke(e)}function Le(e){return e.target||e.srcElement}function Te(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),b&&e.ctrlKey&&1==t&&(t=3),t}var Me,Ne,ze=function(){if(a&&s<9)return!1;var e=z("div");return"draggable"in e||"dragDrop"in e}();function Oe(e){if(null==Me){var t=z("span","​");N(e,z("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Me=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&s<8))}var r=Me?z("span","​"):z("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function Ae(e){if(null!=Ne)return Ne;var t=N(e,document.createTextNode("AخA")),r=L(t,0,1).getBoundingClientRect(),n=L(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(Ne=n.right-r.right<3)}var De,Ee=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(r.push(o.slice(0,a)),t+=a+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},Fe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Ie="oncopy"in(De=z("div"))||(De.setAttribute("oncopy","return;"),"function"==typeof De.oncopy),We=null;var Pe={},Re={};function He(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Pe[e]=t}function qe(e){if("string"==typeof e&&Re.hasOwnProperty(e))e=Re[e];else if(e&&"string"==typeof e.name&&Re.hasOwnProperty(e.name)){var t=Re[e.name];"string"==typeof t&&(t={name:t}),(e=ee(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return qe("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return qe("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function je(e,t){t=qe(t);var r=Pe[t.name];if(!r)return je(e,"text/plain");var n=r(e,t);if(Be.hasOwnProperty(t.name)){var i=Be[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)n[a]=t.modeProps[a];return n}var Be={};function Ue(e,t){H(t,Be.hasOwnProperty(e)?Be[e]:Be[e]={})}function Ve(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function $e(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Ge(e,t,r){return!e.startState||e.startState(t,r)}var Ke=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};function Xe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t=e.first&&tr?nt(r,Xe(e,r).text.length):function(e,t){var r=e.ch;return null==r||r>t?nt(e.line,t):r<0?nt(e.line,0):e}(t,Xe(e,t.line).text.length)}function dt(e,t){for(var r=[],n=0;n=this.string.length},Ke.prototype.sol=function(){return this.pos==this.lineStart},Ke.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ke.prototype.next=function(){if(this.post},Ke.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ke.prototype.skipToEnd=function(){this.pos=this.string.length},Ke.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Ke.prototype.backUp=function(e){this.pos-=e},Ke.prototype.column=function(){return this.lastColumnPos0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Ke.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ke.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ke.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ke.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ft=function(e,t){this.state=e,this.lookAhead=t},pt=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function ht(e,t,r,n){var i=[e.state.modeGen],o={};kt(e,t.text,e.doc.mode,r,(function(e,t){return i.push(e,t)}),o,n);for(var a=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],l=1,c=0;r.state=!0,kt(e,t.text,s.mode,r,(function(e,t){for(var r=l;ce&&i.splice(l,1,e,i[l+1],n),l+=2,c=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,l-r,e,"overlay "+t),l=r+2;else for(;re.options.maxHighlightLength&&Ve(e.doc.mode,n.state),o=ht(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function gt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new pt(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,a=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>a;--s){if(s<=o.first)return o.first;var l=Xe(o,s-1),c=l.stateAfter;if(c&&(!r||s+(c instanceof ft?c.lookAhead:0)<=o.modeFrontier))return s;var u=q(l.text,null,e.options.tabSize);(null==i||n>u)&&(i=s-1,n=u)}return i}(e,t,r),a=o>n.first&&Xe(n,o-1).stateAfter,s=a?pt.fromSaved(n,a,o):new pt(n,Ge(n.mode),o);return n.iter(o,t,(function(r){vt(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&nt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}pt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},pt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},pt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},pt.fromSaved=function(e,t,r){return t instanceof ft?new pt(e,Ve(e.mode,t.state),r,t.lookAhead):new pt(e,Ve(e.mode,t),r)},pt.prototype.save=function(e){var t=!1!==e?Ve(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ft(t,this.maxLookAhead):t};var xt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function wt(e,t,r,n){var i,o,a=e.doc,s=a.mode,l=Xe(a,(t=ut(a,t)).line),c=gt(e,t.line,r),u=new Ke(l.text,e.options.tabSize,c);for(n&&(o=[]);(n||u.pose.options.maxHighlightLength?(s=!1,a&&vt(e,t,n,d.pos),d.pos=t.length,l=null):l=_t(bt(r,d,n.state,f),o),f){var p=f[0].name;p&&(l="m-"+(l?p+" "+l:p))}if(!s||u!=l){for(;c=t:o.to>t);(n||(n=[])).push(new Lt(a,o.from,s?null:o.to))}}return n}(r,i,a),l=function(e,t,r){var n;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==a.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=t:o.from0&&s)for(var b=0;bt)&&(!r||Ft(r,o.marker)<0)&&(r=o.marker)}return r}function Ht(e,t,r,n,i){var o=Xe(e,t),a=St&&o.markedSpans;if(a)for(var s=0;s=0&&d<=0||u<=0&&d>=0)&&(u<=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?it(c.to,r)>=0:it(c.to,r)>0)||u>=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?it(c.from,n)<=0:it(c.from,n)<0)))return!0}}}function qt(e){for(var t;t=Wt(e);)e=t.find(-1,!0).line;return e}function jt(e,t){var r=Xe(e,t),n=qt(r);return r==n?t:Je(n)}function Bt(e,t){if(t>e.lastLine())return t;var r,n=Xe(e,t);if(!Ut(e,n))return t;for(;r=Pt(n);)n=r.find(1,!0).line;return Je(n)+1}function Ut(e,t){var r=St&&t.markedSpans;if(r)for(var n=void 0,i=0;it.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)}))}var Xt=function(e,t,r){this.text=e,At(this,t),this.height=r?r(this):1};function Yt(e){e.parent=null,Ot(e)}Xt.prototype.lineNo=function(){return Je(this)},we(Xt);var Qt={},Zt={};function Jt(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?Zt:Qt;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function er(e,t){var r=O("span",null,null,l?"padding-right: .1px":null),n={pre:O("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a=void 0;n.pos=0,n.addToken=rr,Ae(e.display.measure)&&(a=fe(o,e.doc.direction))&&(n.addToken=nr(n.addToken,a)),n.map=[],or(o,n,mt(e,o,t!=e.display.externalMeasured&&Je(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(Oe(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(l){var s=n.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return ve(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function tr(e){var t=z("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function rr(e,t,r,n,i,o,l){if(t){var c,u=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;ic&&d.from<=c);f++);if(d.to>=u)return e(r,n,i,o,a,s,l);e(r,n.slice(0,d.to-c),i,o,null,s,l),o=null,n=n.slice(d.to-c),c=d.to}}}function ir(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function or(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var a,s,l,c,u,d,f,p=i.length,h=0,m=1,g="",v=0;;){if(v==h){l=c=u=s="",f=null,d=null,v=1/0;for(var y=[],b=void 0,x=0;xh||_.collapsed&&w.to==h&&w.from==h)){if(null!=w.to&&w.to!=h&&v>w.to&&(v=w.to,c=""),_.className&&(l+=" "+_.className),_.css&&(s=(s?s+";":"")+_.css),_.startStyle&&w.from==h&&(u+=" "+_.startStyle),_.endStyle&&w.to==v&&(b||(b=[])).push(_.endStyle,w.to),_.title&&((f||(f={})).title=_.title),_.attributes)for(var k in _.attributes)(f||(f={}))[k]=_.attributes[k];_.collapsed&&(!d||Ft(d.marker,_)<0)&&(d=w)}else w.from>h&&v>w.from&&(v=w.from)}if(b)for(var C=0;C=p)break;for(var L=Math.min(p,v);;){if(g){var T=h+g.length;if(!d){var M=T>L?g.slice(0,L-h):g;t.addToken(t,M,a?a+l:l,u,h+M.length==v?c:"",s,f)}if(T>=L){g=g.slice(L-h),h=L;break}h=T,u=""}g=i.slice(o,o=r[m++]),a=Jt(r[m++],t.cm.options)}}else for(var N=1;Nr)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function Ar(e,t,r,n){return Fr(e,Er(e,t),r,n)}function Dr(e,t){if(t>=e.display.viewFrom&&t=r.lineN&&t2&&o.push((l.bottom+c.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Pr(t.map,r,n),l=o.node,c=o.start,u=o.end,d=o.collapse;if(3==l.nodeType){for(var f=0;f<4;f++){for(;c&&ae(t.line.text.charAt(o.coverStart+c));)--c;for(;o.coverStart+u1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var p;c>0&&(d=n="right"),i=e.options.lineWrapping&&(p=l.getClientRects()).length>1?p["right"==n?p.length-1:0]:l.getBoundingClientRect()}if(a&&s<9&&!c&&(!i||!i.left&&!i.right)){var h=l.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+sn(e.display),top:h.top,bottom:h.bottom}:Wr}for(var m=i.top-t.rect.top,g=i.bottom-t.rect.top,v=(m+g)/2,y=t.view.measure.heights,b=0;bt)&&(i=(o=l-s)-1,t>=l&&(a="right")),null!=i){if(n=e[c+2],s==l&&r==(n.insertLeft?"left":"right")&&(a=r),"left"==r&&0==i)for(;c&&e[c-2]==e[c-3]&&e[c-1].insertLeft;)n=e[2+(c-=3)],a="left";if("right"==r&&i==l-s)for(;c=0&&(r=e[i]).left==r.right;i--);return r}function Hr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t=n.text.length?(l=n.text.length,c="before"):l<=0&&(l=0,c="after"),!s)return a("before"==c?l-1:l,"before"==c);function u(e,t,r){return a(r?e-1:e,1==s[t].level!=r)}var d=ue(s,l,c),f=ce,p=u(l,d,"before"==c);return null!=f&&(p.other=u(l,f,"before"!=c)),p}function Yr(e,t){var r=0;t=ut(e.doc,t),e.options.lineWrapping||(r=sn(e.display)*t.ch);var n=Xe(e.doc,t.line),i=$t(n)+Sr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function Qr(e,t,r,n,i){var o=nt(e,t,r);return o.xRel=i,n&&(o.outside=n),o}function Zr(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return Qr(n.first,0,null,-1,-1);var i=et(n,r),o=n.first+n.size-1;if(i>o)return Qr(n.first+n.size-1,Xe(n,o).text.length,null,1,1);t<0&&(t=0);for(var a=Xe(n,i);;){var s=rn(e,a,i,t,r),l=Rt(a,s.ch+(s.xRel>0||s.outside>0?1:0));if(!l)return s;var c=l.find(1);if(c.line==i)return c;a=Xe(n,i=c.line)}}function Jr(e,t,r,n){n-=Vr(t);var i=t.text.length,o=le((function(t){return Fr(e,r,t-1).bottom<=n}),i,0);return{begin:o,end:i=le((function(t){return Fr(e,r,t).top>n}),o,i)}}function en(e,t,r,n){return r||(r=Er(e,t)),Jr(e,t,r,$r(e,t,Fr(e,r,n),"line").top)}function tn(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function rn(e,t,r,n,i){i-=$t(t);var o=Er(e,t),a=Vr(t),s=0,l=t.text.length,c=!0,u=fe(t,e.doc.direction);if(u){var d=(e.options.lineWrapping?on:nn)(e,t,r,o,u,n,i);s=(c=1!=d.level)?d.from:d.to-1,l=c?d.to:d.from-1}var f,p,h=null,m=null,g=le((function(t){var r=Fr(e,o,t);return r.top+=a,r.bottom+=a,!!tn(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(h=t,m=r),!0)}),s,l),v=!1;if(m){var y=n-m.left=x.bottom?1:0}return Qr(r,g=se(t.text,g,1),p,v,n-f)}function nn(e,t,r,n,i,o,a){var s=le((function(s){var l=i[s],c=1!=l.level;return tn(Xr(e,nt(r,c?l.to:l.from,c?"before":"after"),"line",t,n),o,a,!0)}),0,i.length-1),l=i[s];if(s>0){var c=1!=l.level,u=Xr(e,nt(r,c?l.from:l.to,c?"after":"before"),"line",t,n);tn(u,o,a,!0)&&u.top>a&&(l=i[s-1])}return l}function on(e,t,r,n,i,o,a){var s=Jr(e,t,n,a),l=s.begin,c=s.end;/\s/.test(t.text.charAt(c-1))&&c--;for(var u=null,d=null,f=0;f=c||p.to<=l)){var h=Fr(e,n,1!=p.level?Math.min(c,p.to)-1:Math.max(l,p.from)).right,m=hm)&&(u=p,d=m)}}return u||(u=i[i.length-1]),u.fromc&&(u={from:u.from,to:c,level:u.level}),u}function an(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Ir){Ir=z("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ir.appendChild(document.createTextNode("x")),Ir.appendChild(z("br"));Ir.appendChild(document.createTextNode("x"))}N(e.measure,Ir);var r=Ir.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function sn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=z("span","xxxxxxxxxx"),r=z("pre",[t],"CodeMirror-line-like");N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function ln(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var s=e.display.gutterSpecs[a].className;r[s]=o.offsetLeft+o.clientLeft+i,n[s]=o.clientWidth}return{fixedPos:cn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function cn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function un(e){var t=an(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/sn(e.display)-3);return function(i){if(Ut(e.doc,i))return 0;var o=0;if(i.widgets)for(var a=0;a0&&(l=Xe(e.doc,c.line).text).length==c.ch){var u=q(l,l.length,e.options.tabSize)-l.length;c=nt(c.line,Math.max(0,Math.round((o-Tr(e.display).left)/sn(e.display))-u))}return c}function pn(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;nt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)St&&jt(e.doc,t)i.viewFrom?gn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)gn(e);else if(t<=i.viewFrom){var o=vn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):gn(e)}else if(r>=i.viewTo){var a=vn(e,t,t,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):gn(e)}else{var s=vn(e,t,t,-1),l=vn(e,r,r+n,1);s&&l?(i.view=i.view.slice(0,s.index).concat(sr(e,s.lineN,l.lineN)).concat(i.view.slice(l.index)),i.viewTo+=n):gn(e)}var c=i.externalMeasured;c&&(r=i.lineN&&t=n.viewTo)){var o=n.view[pn(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==B(a,r)&&a.push(r)}}}function gn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function vn(e,t,r,n){var i,o=pn(e,t),a=e.display.view;if(!St||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,l=0;l0){if(o==a.length-1)return null;i=s+a[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;jt(e.doc,r)!=r;){if(o==(n<0?0:a.length-1))return null;r+=n*a[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function yn(e){for(var t=e.display.view,r=0,n=0;n=e.display.viewTo||l.to().line0?a:e.defaultCharWidth())+"px"}if(n.other){var s=r.appendChild(z("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=n.other.left+"px",s.style.top=n.other.top+"px",s.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function _n(e,t){return e.top-t.top||e.left-t.left}function kn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),a=Tr(e.display),s=a.left,l=Math.max(n.sizerWidth,Nr(e)-n.sizer.offsetLeft)-a.right,c="ltr"==i.direction;function u(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(z("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?l-e:r)+"px;\n height: "+(n-t)+"px"))}function d(t,r,n){var o,a,d=Xe(i,t),f=d.text.length;function p(r,n){return Kr(e,nt(t,r),"div",d,n)}function h(t,r,n){var i=en(e,d,null,t),o="ltr"==r==("after"==n)?"left":"right";return p("after"==n?i.begin:i.end-(/\s/.test(d.text.charAt(i.end-1))?2:1),o)[o]}var m=fe(d,i.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;ot||t==r&&a.to==t)&&(n(Math.max(a.from,t),Math.min(a.to,r),1==a.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(m,r||0,null==n?f:n,(function(e,t,i,d){var g="ltr"==i,v=p(e,g?"left":"right"),y=p(t-1,g?"right":"left"),b=null==r&&0==e,x=null==n&&t==f,w=0==d,_=!m||d==m.length-1;if(y.top-v.top<=3){var k=(c?x:b)&&_,C=(c?b:x)&&w?s:(g?v:y).left,S=k?l:(g?y:v).right;u(C,v.top,S-C,v.bottom)}else{var L,T,M,N;g?(L=c&&b&&w?s:v.left,T=c?l:h(e,i,"before"),M=c?s:h(t,i,"after"),N=c&&x&&_?l:y.right):(L=c?h(e,i,"before"):s,T=!c&&b&&w?l:v.right,M=!c&&x&&_?s:y.left,N=c?h(t,i,"after"):l),u(L,v.top,T-L,v.bottom),v.bottom0?t.blinker=setInterval((function(){e.hasFocus()||Mn(e),t.cursorDiv.style.visibility=(r=!r)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Sn(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Tn(e))}function Ln(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Mn(e))}),100)}function Tn(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ve(e,"focus",e,t),e.state.focused=!0,E(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),l&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),Cn(e))}function Mn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ve(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function Nn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,o=0,l=0;l.005||m<-.005)&&(ie.display.sizerWidth){var v=Math.ceil(f/sn(e.display));v>e.display.maxLineLength&&(e.display.maxLineLength=v,e.display.maxLine=c.line,e.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(t.scroller.scrollTop+=o)}function zn(e){if(e.widgets)for(var t=0;t=a&&(o=et(t,$t(Xe(t,l))-e.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function An(e,t){var r=e.display,n=an(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=zr(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+Lr(r),l=t.tops-n;if(t.topi+o){var u=Math.min(t.top,(c?s:t.bottom)-o);u!=i&&(a.scrollTop=u)}var d=e.options.fixedGutter?0:r.gutters.offsetWidth,f=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft-d,p=Nr(e)-r.gutters.offsetWidth,h=t.right-t.left>p;return h&&(t.right=t.left+p),t.left<10?a.scrollLeft=0:t.leftp+f-3&&(a.scrollLeft=t.right+(h?0:10)-p),a}function Dn(e,t){null!=t&&(In(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function En(e){In(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Fn(e,t,r){null==t&&null==r||In(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function In(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Wn(e,Yr(e,t.from),Yr(e,t.to),t.margin))}function Wn(e,t,r,n){var i=An(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Fn(e,i.scrollLeft,i.scrollTop)}function Pn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||fi(e,{top:t}),Rn(e,t,!0),r&&fi(e),ai(e,100))}function Rn(e,t,r){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Hn(e,t,r,n){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,mi(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function qn(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+Lr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Mr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var jn=function(e,t,r){this.cm=r;var n=this.vert=z("div",[z("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=z("div",[z("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),he(n,"scroll",(function(){n.clientHeight&&t(n.scrollTop,"vertical")})),he(i,"scroll",(function(){i.clientWidth&&t(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};jn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},jn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},jn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},jn.prototype.zeroWidthHack=function(){var e=b&&!h?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new j,this.disableVert=new j},jn.prototype.enableZeroWidthBar=function(e,t,r){e.style.visibility="",t.set(1e3,(function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.visibility="hidden":t.set(1e3,n)}))},jn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Bn=function(){};function Un(e,t){t||(t=qn(e));var r=e.display.barWidth,n=e.display.barHeight;Vn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&Nn(e),Vn(e,qn(e)),r=e.display.barWidth,n=e.display.barHeight}function Vn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Bn.prototype.update=function(){return{bottom:0,right:0}},Bn.prototype.setScrollLeft=function(){},Bn.prototype.setScrollTop=function(){},Bn.prototype.clear=function(){};var $n={native:jn,null:Bn};function Gn(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new $n[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),he(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,r){"horizontal"==r?Hn(e,t):Pn(e,t)}),e),e.display.scrollbars.addClass&&E(e.display.wrapper,e.display.scrollbars.addClass)}var Kn=0;function Xn(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Kn,markArrays:null},t=e.curOp,lr?lr.ops.push(t):t.ownsGroup=lr={ops:[t],delayedCallbacks:[]}}function Yn(e){var t=e.curOp;t&&function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new li(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Zn(e){e.updatedDisplay=e.mustUpdate&&ui(e.cm,e.update)}function Jn(e){var t=e.cm,r=t.display;e.updatedDisplay&&Nn(t),e.barMeasure=qn(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Ar(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Mr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Nr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function ei(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(o.defaultView.innerHeight||o.documentElement.clientHeight)&&(i=!1),null!=i&&!m){var a=z("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-Sr(e.display))+"px;\n height: "+(t.bottom-t.top+Mr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(a),a.scrollIntoView(i),e.display.lineSpace.removeChild(a)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==t.sticky?nt(t.line,t.ch+1,"before"):t,t=t.ch?nt(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var a=!1,s=Xr(e,t),l=r&&r!=t?Xr(e,r):s,c=An(e,i={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-n,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+n}),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=c.scrollTop&&(Pn(e,c.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(Hn(e,c.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(a=!0)),!a)break}return i}(t,ut(n,e.scrollToPos.from),ut(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var a=0;a=e.display.viewTo)){var r=+new Date+e.options.workTime,n=gt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(o){if(n.line>=e.display.viewFrom){var a=o.styles,s=o.text.length>e.options.maxHighlightLength?Ve(t.mode,n.state):null,l=ht(e,o,n,!0);s&&(n.state=s),o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var d=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),f=0;!d&&fr)return ai(e,e.options.workDelay),!0})),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&ri(e,(function(){for(var t=0;t=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==yn(e))return!1;gi(e)&&(gn(e),t.dims=ln(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFroma&&r.viewTo-a<20&&(a=Math.min(i,r.viewTo)),St&&(o=jt(e.doc,o),a=Bt(e.doc,a));var s=o!=r.viewFrom||a!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;(function(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=sr(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=sr(e,t,n.viewFrom).concat(n.view):n.viewFromr&&(n.view=n.view.slice(0,pn(e,r)))),n.viewTo=r})(e,o,a),r.viewOffset=$t(Xe(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var c=yn(e);if(!s&&0==c&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var u=ci(e);return c>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,a=o.firstChild;function s(t){var r=t.nextSibling;return l&&b&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var c=n.view,u=n.viewFrom,d=0;d-1&&(p=!1),fr(e,f,u,r)),p&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(rt(e.options,u)))),a=f.node.nextSibling}else{var h=br(e,f,u,r);o.insertBefore(h,a)}u+=f.size}for(;a;)a=s(a)}(e,r.updateLineNumbers,t.dims),c>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=D(e.activeElt.ownerDocument)&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&A(document.body,e.anchorNode)&&A(document.body,e.focusNode))){var t=e.activeElt.ownerDocument,r=t.defaultView.getSelection(),n=t.createRange();n.setEnd(e.anchorNode,e.anchorOffset),n.collapse(!1),r.removeAllRanges(),r.addRange(n),r.extend(e.focusNode,e.focusOffset)}}(u),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,s&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,ai(e,400)),r.updateLineNumbers=null,!0}function di(e,t){for(var r=t.viewport,n=!0;;n=!1){if(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Nr(e))n&&(t.visible=On(e.display,e.doc,r));else if(r&&null!=r.top&&(r={top:Math.min(e.doc.height+Lr(e.display)-zr(e),r.top)}),t.visible=On(e.display,e.doc,r),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!ui(e,t))break;Nn(e);var i=qn(e);bn(e),Un(e,i),hi(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function fi(e,t){var r=new li(e,t);if(ui(e,r)){Nn(e),di(e,r);var n=qn(e);bn(e),Un(e,n),hi(e,n),r.finish()}}function pi(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ur(e,"gutterChanged",e)}function hi(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Mr(e)+"px"}function mi(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=cn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",a=0;ac.clientWidth,h=c.scrollHeight>c.clientHeight;if(i&&p||o&&h){if(o&&b&&l)e:for(var m=t.target,g=s.view;m!=c;m=m.parentNode)for(var v=0;v=0&&it(e,n.to())<=0)return r}return-1};var Ti=function(e,t){this.anchor=e,this.head=t};function Mi(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort((function(e,t){return it(e.from(),t.from())})),r=B(t,i);for(var o=1;o0:l>=0){var c=lt(s.from(),a.from()),u=st(s.to(),a.to()),d=s.empty()?a.from()==a.head:s.from()==s.head;o<=r&&--r,t.splice(--o,2,new Ti(d?u:c,d?c:u))}}return new Li(t,r)}function Ni(e,t){return new Li([new Ti(e,t||e)],0)}function zi(e){return e.text?nt(e.from.line+e.text.length-1,Q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Oi(e,t){if(it(e,t.from)<0)return e;if(it(e,t.to)<=0)return zi(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=zi(t).ch-t.to.ch),nt(r,n)}function Ai(e,t){for(var r=[],n=0;n1&&e.remove(s.line+1,h-1),e.insert(s.line+1,v)}ur(e,"change",e,t)}function Pi(e,t,r){!function e(n,i,o){if(n.linked)for(var a=0;as-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=function(e,t){return t?(Bi(e.done),Q(e.done)):e.done.length&&!Q(e.done).ranges?Q(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),Q(e.done)):void 0}(i,i.lastOp==n)))a=Q(o.changes),0==it(t.from,t.to)&&0==it(t.from,a.to)?a.to=zi(t):o.changes.push(ji(e,t));else{var l=Q(i.done);for(l&&l.ranges||$i(e.sel,i.done),o={changes:[ji(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,a||ve(e,"historyAdded")}function Vi(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,Q(i.done),t))?i.done[i.done.length-1]=t:$i(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&Bi(i.undone)}function $i(e,t){var r=Q(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Gi(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),(function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o}))}function Ki(e){if(!e)return null;for(var t,r=0;r-1&&(Q(s)[d]=c[d],delete c[d])}}}return n}function Qi(e,t,r,n){if(n){var i=e.anchor;if(r){var o=it(t,i)<0;o!=it(r,i)<0?(i=t,t=r):o!=it(t,r)<0&&(t=r)}return new Ti(i,t)}return new Ti(r||t,t)}function Zi(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),no(e,new Li([Qi(e.sel.primary(),t,r,i)],0),n)}function Ji(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:s.to>t.ch))){if(i&&(ve(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(r){var d=l.find(n<0?1:-1),f=void 0;if((n<0?u:c)&&(d=uo(e,d,-n,d&&d.line==t.line?o:null)),d&&d.line==t.line&&(f=it(d,r))&&(n<0?f<0:f>0))return lo(e,d,t,n,i)}var p=l.find(n<0?-1:1);return(n<0?c:u)&&(p=uo(e,p,n,p.line==t.line?o:null)),p?lo(e,p,t,n,i):null}}return t}function co(e,t,r,n,i){var o=n||1;return lo(e,t,r,o,i)||!i&&lo(e,t,r,o,!0)||lo(e,t,r,-o,i)||!i&&lo(e,t,r,-o,!0)||(e.cantEdit=!0,nt(e.first,0))}function uo(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?ut(e,nt(t.line-1)):null:r>0&&t.ch==(n||Xe(e,t.line)).text.length?t.line0)){var u=[l,1],d=it(c.from,s.from),f=it(c.to,s.to);(d<0||!a.inclusiveLeft&&!d)&&u.push({from:c.from,to:s.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),i.splice.apply(i,u),l+=u.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)mo(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else mo(e,t)}}function mo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=it(t.from,t.to)){var r=Ai(e,t);Ui(e,t,r,e.cm?e.cm.curOp.id:NaN),yo(e,t,r,Nt(e,t));var n=[];Pi(e,(function(e,r){r||-1!=B(n,e.history)||(_o(e.history,t),n.push(e.history)),yo(e,t,null,Nt(e,t))}))}}function go(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,a=e.sel,s="undo"==t?o.done:o.undone,l="undo"==t?o.undone:o.done,c=0;c=0;--p){var h=f(p);if(h)return h.v}}}}function vo(e,t){if(0!=t&&(e.first+=t,e.sel=new Li(Z(e.sel.ranges,(function(e){return new Ti(nt(e.anchor.line+t,e.anchor.ch),nt(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){hn(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;ne.lastLine())){if(t.from.lineo&&(t={from:t.from,to:nt(o,Xe(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ye(e,t.from,t.to),r||(r=Ai(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,a=t.to,s=!1,l=o.line;e.options.lineWrapping||(l=Je(qt(Xe(n,o.line))),n.iter(l,a.line+1,(function(e){if(e==i.maxLine)return s=!0,!0}))),n.sel.contains(t.from,t.to)>-1&&be(e),Wi(n,t,r,un(e)),e.options.lineWrapping||(n.iter(l,o.line+t.text.length,(function(e){var t=Gt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)})),s&&(e.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontierr;n--){var i=Xe(e,n).stateAfter;if(i&&(!(i instanceof ft)||n+i.lookAhead1||!(this.children[0]instanceof Co))){var s=[];this.collapse(s),this.children=[new Co(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var a=i.lines.length%25+25,s=a;s10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n0||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=O("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Ht(e,t.line,t,r,o)||t.line!=r.line&&Ht(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");St=!0}o.addToHistory&&Ui(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,l=t.line,c=e.cm;if(e.iter(l,r.line+1,(function(n){c&&o.collapsed&&!c.options.lineWrapping&&qt(n)==c.display.maxLine&&(s=!0),o.collapsed&&l!=t.line&&Ze(n,0),function(e,t,r){var n=r&&window.WeakSet&&(r.markedSpans||(r.markedSpans=new WeakSet));n&&e.markedSpans&&n.has(e.markedSpans)?e.markedSpans.push(t):(e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],n&&n.add(e.markedSpans)),t.marker.attachLine(e)}(n,new Lt(o,l==t.line?t.ch:null,l==r.line?r.ch:null),e.cm&&e.cm.curOp),++l})),o.collapsed&&e.iter(t.line,r.line+1,(function(t){Ut(e,t)&&Ze(t,0)})),o.clearOnEnter&&he(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(Ct=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++Mo,o.atomic=!0),c){if(s&&(c.curOp.updateMaxLine=!0),o.collapsed)hn(c,t.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=t.line;u<=r.line;u++)mn(c,u,"text");o.atomic&&ao(c.doc),ur(c,"markerAdded",c,o)}return o}No.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Xn(e),xe(this,"clear")){var r=this.find();r&&ur(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=c,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&hn(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&ao(e.doc)),e&&ur(e,"markerCleared",e,this,n,i),t&&Yn(e),this.parent&&this.parent.clear()}},No.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=0;l--)ho(this,n[l]);s?ro(this,s):this.cm&&En(this.cm)})),undo:oi((function(){go(this,"undo")})),redo:oi((function(){go(this,"redo")})),undoSelection:oi((function(){go(this,"undo",!0)})),redoSelection:oi((function(){go(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=ut(this,e),t=ut(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,(function(o){var a=o.markedSpans;if(a)for(var s=0;s=l.to||null==l.from&&i!=e.line||null!=l.from&&i==t.line&&l.from>=t.ch||r&&!r(l.marker)||n.push(l.marker.parent||l.marker)}++i})),n},getAllMarks:function(){var e=[];return this.iter((function(t){var r=t.markedSpans;if(r)for(var n=0;ne)return t=e,!0;e-=o,++r})),ut(this,nt(r,t))},indexFromPos:function(e){var t=(e=ut(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var d=e.dataTransfer.getData("Text");if(d){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),io(t.doc,Ni(r,r)),f)for(var p=0;p=0;t--)bo(e.doc,"",n[t].from,n[t].to,"+delete");En(e)}))}function ra(e,t,r){var n=se(e.text,t+r,r);return n<0||n>e.text.length?null:n}function na(e,t,r){var n=ra(e,t.ch,r);return null==n?null:new nt(t.line,n,r<0?"after":"before")}function ia(e,t,r,n,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=fe(r,t.doc.direction);if(o){var a,s=i<0?Q(o):o[0],l=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var c=Er(t,r);a=i<0?r.text.length-1:0;var u=Fr(t,c,a).top;a=le((function(e){return Fr(t,c,e).top==u}),i<0==(1==s.level)?s.from:s.to-1,a),"before"==l&&(a=ra(r,a,1))}else a=i<0?s.to:s.from;return new nt(n,a,l)}}return new nt(n,i<0?r.text.length:0,i<0?"before":"after")}Go.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Go.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Go.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Go.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Go.default=b?Go.macDefault:Go.pcDefault;var oa={selectAll:fo,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return ta(e,(function(t){if(t.empty()){var r=Xe(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line0)i=new nt(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),nt(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var a=Xe(e.doc,i.line-1).text;a&&(i=new nt(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),nt(i.line-1,a.length-1),i,"+transpose"))}r.push(new Ti(i,i))}e.setSelections(r)}))},newlineAndIndent:function(e){return ri(e,(function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n-1&&(it((i=c.ranges[i]).from(),t)<0||t.xRel>0)&&(it(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,c=ni(e,(function(t){l&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Ln(e)),ge(i.wrapper.ownerDocument,"mouseup",c),ge(i.wrapper.ownerDocument,"mousemove",u),ge(i.scroller,"dragstart",d),ge(i.scroller,"drop",c),o||(_e(t),n.addNew||Zi(e.doc,r,null,null,n.extend),l&&!p||a&&9==s?setTimeout((function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()}),20):i.input.focus())})),u=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},d=function(){return o=!0};l&&(i.scroller.draggable=!0),e.state.draggingText=c,c.copy=!n.moveOnDrag,he(i.wrapper.ownerDocument,"mouseup",c),he(i.wrapper.ownerDocument,"mousemove",u),he(i.scroller,"dragstart",d),he(i.scroller,"drop",c),e.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}(e,n,t,o):function(e,t,r,n){a&&Ln(e);var i=e.display,o=e.doc;_e(t);var s,l,c=o.sel,u=c.ranges;if(n.addNew&&!n.extend?(l=o.sel.contains(r),s=l>-1?u[l]:new Ti(r,r)):(s=o.sel.primary(),l=o.sel.primIndex),"rectangle"==n.unit)n.addNew||(s=new Ti(r,r)),r=fn(e,t,!0,!0),l=-1;else{var d=wa(e,r,n.unit);s=n.extend?Qi(s,d.anchor,d.head,n.extend):d}n.addNew?-1==l?(l=u.length,no(o,Mi(e,u.concat([s]),l),{scroll:!1,origin:"*mouse"})):u.length>1&&u[l].empty()&&"char"==n.unit&&!n.extend?(no(o,Mi(e,u.slice(0,l).concat(u.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),c=o.sel):eo(o,l,s,$):(l=0,no(o,new Li([s],0),$),c=o.sel);var f=r;function p(t){if(0!=it(f,t))if(f=t,"rectangle"==n.unit){for(var i=[],a=e.options.tabSize,u=q(Xe(o,r.line).text,r.ch,a),d=q(Xe(o,t.line).text,t.ch,a),p=Math.min(u,d),h=Math.max(u,d),m=Math.min(r.line,t.line),g=Math.min(e.lastLine(),Math.max(r.line,t.line));m<=g;m++){var v=Xe(o,m).text,y=K(v,p,a);p==h?i.push(new Ti(nt(m,y),nt(m,y))):v.length>y&&i.push(new Ti(nt(m,y),nt(m,K(v,h,a))))}i.length||i.push(new Ti(r,r)),no(o,Mi(e,c.ranges.slice(0,l).concat(i),l),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,x=s,w=wa(e,t,n.unit),_=x.anchor;it(w.anchor,_)>0?(b=w.head,_=lt(x.from(),w.anchor)):(b=w.anchor,_=st(x.to(),w.head));var k=c.ranges.slice(0);k[l]=function(e,t){var r=t.anchor,n=t.head,i=Xe(e.doc,r.line);if(0==it(r,n)&&r.sticky==n.sticky)return t;var o=fe(i);if(!o)return t;var a=ue(o,r.ch,r.sticky),s=o[a];if(s.from!=r.ch&&s.to!=r.ch)return t;var l,c=a+(s.from==r.ch==(1!=s.level)?0:1);if(0==c||c==o.length)return t;if(n.line!=r.line)l=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var u=ue(o,n.ch,n.sticky),d=u-a||(n.ch-r.ch)*(1==s.level?-1:1);l=u==c-1||u==c?d<0:d>0}var f=o[c+(l?-1:0)],p=l==(1==f.level),h=p?f.from:f.to,m=p?"after":"before";return r.ch==h&&r.sticky==m?t:new Ti(new nt(r.line,h,m),n)}(e,new Ti(ut(o,_),b)),no(o,Mi(e,k,l),$)}}var h=i.wrapper.getBoundingClientRect(),m=0;function g(t){var r=++m,a=fn(e,t,!0,"rectangle"==n.unit);if(a)if(0!=it(a,f)){e.curOp.focus=D(W(e)),p(a);var s=On(i,o);(a.line>=s.to||a.lineh.bottom?20:0;l&&setTimeout(ni(e,(function(){m==r&&(i.scroller.scrollTop+=l,g(t))})),50)}}function v(t){e.state.selectingText=!1,m=1/0,t&&(_e(t),i.input.focus()),ge(i.wrapper.ownerDocument,"mousemove",y),ge(i.wrapper.ownerDocument,"mouseup",b),o.history.lastSelOrigin=null}var y=ni(e,(function(e){0!==e.buttons&&Te(e)?g(e):v(e)})),b=ni(e,v);e.state.selectingText=b,he(i.wrapper.ownerDocument,"mousemove",y),he(i.wrapper.ownerDocument,"mouseup",b)}(e,n,t,o)}(t,n,o,e):Le(e)==r.scroller&&_e(e):2==i?(n&&Zi(t.doc,n),setTimeout((function(){return r.input.focus()}),20)):3==i&&(C?t.display.input.onContextMenu(e):Ln(t)))}}function wa(e,t,r){if("char"==r)return new Ti(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new Ti(nt(t.line,0),ut(e.doc,nt(t.line+1,0)));var n=r(e,t);return new Ti(n.from,n.to)}function _a(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&_e(t);var a=e.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!xe(e,r))return Ce(t);o-=s.top-a.viewOffset;for(var l=0;l=i)return ve(e,r,e,et(e.doc,o),e.display.gutterSpecs[l].className,t),Ce(t)}}function ka(e,t){return _a(e,t,"gutterClick",!0)}function Ca(e,t){Cr(e.display,t)||function(e,t){return!!xe(e,"gutterContextMenu")&&_a(e,t,"gutterContextMenu",!1)}(e,t)||ye(e,t,"contextmenu")||C||e.display.input.onContextMenu(t)}function Sa(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),jr(e)}ba.prototype.compare=function(e,t,r){return this.time+400>e&&0==it(t,this.pos)&&r==this.button};var La={toString:function(){return"CodeMirror.Init"}},Ta={},Ma={};function Na(e,t,r){if(!t!=!(r&&r!=La)){var n=e.display.dragFunctions,i=t?he:ge;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function za(e){e.options.lineWrapping?(E(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Kt(e)),dn(e),hn(e),jr(e),setTimeout((function(){return Un(e)}),100)}function Oa(e,t){var r=this;if(!(this instanceof Oa))return new Oa(e,t);this.options=t=t?H(t):{},H(Ta,t,!1);var n=t.value;"string"==typeof n?n=new Fo(n,t.mode,null,t.lineSeparator,t.direction):t.mode&&(n.modeOption=t.mode),this.doc=n;var i=new Oa.inputStyles[t.inputStyle](this),o=this.display=new xi(e,n,i,t);for(var c in o.wrapper.CodeMirror=this,Sa(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Gn(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new j,keySeq:null,specialChars:null},t.autofocus&&!y&&o.input.focus(),a&&s<11&&setTimeout((function(){return r.display.input.reset(!0)}),20),function(e){var t=e.display;he(t.scroller,"mousedown",ni(e,xa)),he(t.scroller,"dblclick",a&&s<11?ni(e,(function(t){if(!ye(e,t)){var r=fn(e,t);if(r&&!ka(e,t)&&!Cr(e.display,t)){_e(t);var n=e.findWordAt(r);Zi(e.doc,n.anchor,n.head)}}})):function(t){return ye(e,t)||_e(t)}),he(t.scroller,"contextmenu",(function(t){return Ca(e,t)})),he(t.input.getField(),"contextmenu",(function(r){t.scroller.contains(r.target)||Ca(e,r)}));var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout((function(){return t.activeTouch=null}),1e3),(n=t.activeTouch).end=+new Date)}function o(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}function l(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}he(t.scroller,"touchstart",(function(i){if(!ye(e,i)&&!o(i)&&!ka(e,i)){t.input.ensurePolled(),clearTimeout(r);var a=+new Date;t.activeTouch={start:a,moved:!1,prev:a-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}})),he(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),he(t.scroller,"touchend",(function(r){var n=t.activeTouch;if(n&&!Cr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var o,a=e.coordsChar(t.activeTouch,"page");o=!n.prev||l(n,n.prev)?new Ti(a,a):!n.prev.prev||l(n,n.prev.prev)?e.findWordAt(a):new Ti(nt(a.line,0),ut(e.doc,nt(a.line+1,0))),e.setSelection(o.anchor,o.head),e.focus(),_e(r)}i()})),he(t.scroller,"touchcancel",i),he(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(Pn(e,t.scroller.scrollTop),Hn(e,t.scroller.scrollLeft,!0),ve(e,"scroll",e))})),he(t.scroller,"mousewheel",(function(t){return Si(e,t)})),he(t.scroller,"DOMMouseScroll",(function(t){return Si(e,t)})),he(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){ye(e,t)||Se(t)},over:function(t){ye(e,t)||(function(e,t){var r=fn(e,t);if(r){var n=document.createDocumentFragment();wn(e,r,n),e.display.dragCursor||(e.display.dragCursor=z("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),Se(t))},start:function(t){return function(e,t){if(a&&(!e.state.draggingText||+new Date-Io<100))Se(t);else if(!ye(e,t)&&!Cr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!p)){var r=z("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",f&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),f&&r.parentNode.removeChild(r)}}(e,t)},drop:ni(e,Wo),leave:function(t){ye(e,t)||Po(e)}};var c=t.input.getField();he(c,"keyup",(function(t){return ma.call(e,t)})),he(c,"keydown",ni(e,ha)),he(c,"keypress",ni(e,ga)),he(c,"focus",(function(t){return Tn(e,t)})),he(c,"blur",(function(t){return Mn(e,t)}))}(this),qo(),Xn(this),this.curOp.forceUpdate=!0,Ri(this,n),t.autofocus&&!y||this.hasFocus()?setTimeout((function(){r.hasFocus()&&!r.state.focused&&Tn(r)}),20):Mn(this),Ma)Ma.hasOwnProperty(c)&&Ma[c](this,t[c],La);gi(this),t.finishInit&&t.finishInit(this);for(var u=0;u150)){if(!n)return;r="prev"}}else c=0,r="not";"prev"==r?c=t>o.first?q(Xe(o,t-1).text,null,a):0:"add"==r?c=l+e.options.indentUnit:"subtract"==r?c=l-e.options.indentUnit:"number"==typeof r&&(c=l+r),c=Math.max(0,c);var d="",f=0;if(e.options.indentWithTabs)for(var p=Math.floor(c/a);p;--p)f+=a,d+="\t";if(fa,l=Ee(t),c=null;if(s&&n.ranges.length>1)if(Ea&&Ea.text.join("\n")==t){if(n.ranges.length%Ea.text.length==0){c=[];for(var u=0;u=0;f--){var p=n.ranges[f],h=p.from(),m=p.to();p.empty()&&(r&&r>0?h=nt(h.line,h.ch-r):e.state.overwrite&&!s?m=nt(m.line,Math.min(Xe(o,m.line).text.length,m.ch+Q(l).length)):s&&Ea&&Ea.lineWise&&Ea.text.join("\n")==l.join("\n")&&(h=m=nt(h.line,0)));var g={from:h,to:m,text:c?c[f%c.length]:l,origin:i||(s?"paste":e.state.cutIncoming>a?"cut":"+input")};ho(e.doc,g),ur(e,"inputRead",e,g)}t&&!s&&Pa(e,t),En(e),e.curOp.updateInput<2&&(e.curOp.updateInput=d),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Wa(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||!t.hasFocus()||ri(t,(function(){return Ia(t,r,0,null,"paste")})),!0}function Pa(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),a=!1;if(o.electricChars){for(var s=0;s-1){a=Da(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Xe(e.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Da(e,i.head.line,"smart"));a&&ur(e,"electricInput",e,i.head.line)}}}function Ra(e){for(var t=[],r=[],n=0;n0?0:-1));if(isNaN(u))a=null;else{var d=r>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new nt(t.line,Math.max(0,Math.min(s.text.length,t.ch+r*(d?2:1))),-r)}}else a=i?function(e,t,r,n){var i=fe(t,e.doc.direction);if(!i)return na(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=ue(i,r.ch,r.sticky),a=i[o];if("ltr"==e.doc.direction&&a.level%2==0&&(n>0?a.to>r.ch:a.from=a.from&&f>=u.begin)){var p=d?"before":"after";return new nt(r.line,f,p)}}var h=function(e,t,n){for(var o=function(e,t){return t?new nt(r.line,l(e,1),"before"):new nt(r.line,e,"after")};e>=0&&e0==(1!=a.level),c=s?n.begin:l(n.end,-1);if(a.from<=c&&c0?u.end:l(u.begin,-1);return null==g||n>0&&g==t.text.length||!(m=h(n>0?0:i.length-1,n,c(g)))?null:m}(e.cm,s,t,r):na(s,t,r);if(null==a){if(o||((c=t.line+l)=e.first+e.size||(t=new nt(c,t.ch,t.sticky),!(s=Xe(e,c)))))return!1;t=ia(i,e.cm,s,t.line,l)}else t=a;return!0}if("char"==n||"codepoint"==n)c();else if("column"==n)c(!0);else if("word"==n||"group"==n)for(var u=null,d="group"==n,f=e.cm&&e.cm.getHelper(t,"wordChars"),p=!0;!(r<0)||c(!p);p=!1){var h=s.text.charAt(t.ch)||"\n",m=ne(h,f)?"w":d&&"\n"==h?"n":!d||/\s/.test(h)?null:"p";if(!d||p||m||(m="s"),u&&u!=m){r<0&&(r=1,c(),t.sticky="after");break}if(m&&(u=m),r>0&&!c(!p))break}var g=co(e,t,o,a,!0);return ot(o,g)&&(g.hitSide=!0),g}function Ba(e,t,r,n){var i,o,a=e.doc,s=t.left;if("page"==n){var l=Math.min(e.display.wrapper.clientHeight,P(e).innerHeight||a(e).documentElement.clientHeight),c=Math.max(l-.5*an(e.display),3);i=(r>0?t.bottom:t.top)+r*c}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=Zr(e,s,i)).outside;){if(r<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*r}return o}var Ua=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new j,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Va(e,t){var r=Dr(e,t.line);if(!r||r.hidden)return null;var n=Xe(e.doc,t.line),i=Or(r,n,t.line),o=fe(n,e.doc.direction),a="left";o&&(a=ue(o,t.ch)%2?"right":"left");var s=Pr(i.map,t.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function $a(e,t){return t&&(e.bad=!0),e}function Ga(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return $a(e.clipPos(nt(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i=t.display.viewTo||o.line=t.display.viewFrom&&Va(t,i)||{node:l[0].measure.map[2],offset:0},u=o.linen.firstLine()&&(a=nt(a.line-1,Xe(n.doc,a.line-1).length)),s.ch==Xe(n.doc,s.line).text.length&&s.linei.viewTo-1)return!1;a.line==i.viewFrom||0==(e=pn(n,a.line))?(t=Je(i.view[0].line),r=i.view[0].node):(t=Je(i.view[e].line),r=i.view[e-1].node.nextSibling);var l,c,u=pn(n,s.line);if(u==i.view.length-1?(l=i.viewTo-1,c=i.lineDiv.lastChild):(l=Je(i.view[u+1].line)-1,c=i.view[u+1].node.previousSibling),!r)return!1;for(var d=n.doc.splitLines(function(e,t,r,n,i){var o="",a=!1,s=e.doc.lineSeparator(),l=!1;function c(){a&&(o+=s,l&&(o+=s),a=l=!1)}function u(e){e&&(c(),o+=e)}function d(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(r)return void u(r);var o,f=t.getAttribute("cm-marker");if(f){var p=e.findMarks(nt(n,0),nt(i+1,0),(g=+f,function(e){return e.id==g}));return void(p.length&&(o=p[0].find(0))&&u(Ye(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var h=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;h&&c();for(var m=0;m1&&f.length>1;)if(Q(d)==Q(f))d.pop(),f.pop(),l--;else{if(d[0]!=f[0])break;d.shift(),f.shift(),t++}for(var p=0,h=0,m=d[0],g=f[0],v=Math.min(m.length,g.length);pa.ch&&y.charCodeAt(y.length-h-1)==b.charCodeAt(b.length-h-1);)p--,h++;d[d.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),d[0]=d[0].slice(p).replace(/\u200b+$/,"");var w=nt(t,p),_=nt(l,f.length?Q(f).length-h:0);return d.length>1||d[0]||it(w,_)?(bo(n.doc,d,w,_,"+input"),!0):void 0},Ua.prototype.ensurePolled=function(){this.forceCompositionEnd()},Ua.prototype.reset=function(){this.forceCompositionEnd()},Ua.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Ua.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Ua.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||ri(this.cm,(function(){return hn(e.cm)}))},Ua.prototype.setUneditable=function(e){e.contentEditable="false"},Ua.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||ni(this.cm,Ia)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Ua.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Ua.prototype.onContextMenu=function(){},Ua.prototype.resetPosition=function(){},Ua.prototype.needsContentAttribute=!0;var Xa=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new j,this.hasSelection=!1,this.composing=null,this.resetting=!1};Xa.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!ye(n,e)){if(n.somethingSelected())Fa({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Ra(n);Fa({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),I(i))}"cut"==e.type&&(n.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),he(i,"input",(function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()})),he(i,"paste",(function(e){ye(n,e)||Wa(e,n)||(n.state.pasteIncoming=+new Date,r.fastPoll())})),he(i,"cut",o),he(i,"copy",o),he(e.scroller,"paste",(function(t){if(!Cr(e,t)&&!ye(n,t)){if(!i.dispatchEvent)return n.state.pasteIncoming=+new Date,void r.focus();var o=new Event("paste");o.clipboardData=t.clipboardData,i.dispatchEvent(o)}})),he(e.lineSpace,"selectstart",(function(t){Cr(e,t)||_e(t)})),he(i,"compositionstart",(function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}})),he(i,"compositionend",(function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)}))},Xa.prototype.createField=function(e){this.wrapper=qa(),this.textarea=this.wrapper.firstChild},Xa.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Xa.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=xn(e);if(e.options.moveInputWithCursor){var i=Xr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+a.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+a.left-o.left))}return n},Xa.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Xa.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&I(this.textarea),a&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null));this.resetting=!1}},Xa.prototype.getField=function(){return this.textarea},Xa.prototype.supportsTouch=function(){return!1},Xa.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!y||D(this.textarea.ownerDocument)!=this.textarea))try{this.textarea.focus()}catch(e){}},Xa.prototype.blur=function(){this.textarea.blur()},Xa.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Xa.prototype.receivedFocus=function(){this.slowPoll()},Xa.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},Xa.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,(function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))}))},Xa.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||Fe(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===i||b&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var l=0,c=Math.min(n.length,i.length);l1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},Xa.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Xa.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},Xa.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=fn(r,e),c=n.scroller.scrollTop;if(o&&!f){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&ni(r,no)(r.doc,Ni(o),V);var u,d=i.style.cssText,p=t.wrapper.style.cssText,h=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",l&&(u=i.ownerDocument.defaultView.scrollY),n.input.focus(),l&&i.ownerDocument.defaultView.scrollTo(null,u),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=v,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),a&&s>=9&&g(),C){Se(e);var m=function(){ge(window,"mouseup",m),setTimeout(v,20)};he(window,"mouseup",m)}else setTimeout(v,50)}function g(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function v(){if(t.contextMenuPending==v&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,i.style.cssText=d,a&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=c),null!=i.selectionStart)){(!a||a&&s<9)&&g();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?ni(r,fo)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Xa.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},Xa.prototype.setUneditable=function(){},Xa.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=La&&i(e,t,r)}:i)}e.defineOption=r,e.Init=La,r("value","",(function(e,t){return e.setValue(t)}),!0),r("mode",null,(function(e,t){e.doc.modeOption=t,Ei(e)}),!0),r("indentUnit",2,Ei,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,(function(e){Fi(e),jr(e),hn(e)}),!0),r("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter((function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(nt(n,o))}n++}));for(var i=r.length-1;i>=0;i--)bo(e.doc,t,r[i],nt(r[i].line,r[i].ch+t.length))}})),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,(function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=La&&e.refresh()})),r("specialCharPlaceholder",tr,(function(e){return e.refresh()}),!0),r("electricChars",!0),r("inputStyle",y?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),r("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),r("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),r("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",(function(e){Sa(e),bi(e)}),!0),r("keyMap","default",(function(e,t,r){var n=ea(t),i=r!=La&&ea(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)})),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,za,!0),r("gutters",[],(function(e,t){e.display.gutterSpecs=vi(t,e.options.lineNumbers),bi(e)}),!0),r("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?cn(e.display)+"px":"0",e.refresh()}),!0),r("coverGutterNextToScrollbar",!1,(function(e){return Un(e)}),!0),r("scrollbarStyle","native",(function(e){Gn(e),Un(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),r("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=vi(e.options.gutters,t),bi(e)}),!0),r("firstLineNumber",1,bi,!0),r("lineNumberFormatter",(function(e){return e}),bi,!0),r("showCursorWhenSelecting",!1,bn,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("selectionsMayTouch",!1),r("readOnly",!1,(function(e,t){"nocursor"==t&&(Mn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),r("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),r("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),r("dragDrop",!0,Na),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,bn,!0),r("singleCursorHeightPerLine",!0,bn,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Fi,!0),r("addModeClass",!1,Fi,!0),r("pollInterval",100),r("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),r("historyEventDelay",1250),r("viewportMargin",10,(function(e){return e.refresh()}),!0),r("maxHighlightLength",1e4,Fi,!0),r("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),r("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),r("autofocus",null),r("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),r("phrases",null)}(Oa),function(e){var t=e.optionHandlers,r=e.helpers={};e.prototype={constructor:e,focus:function(){P(this).focus(),this.display.input.focus()},setOption:function(e,r){var n=this.options,i=n[e];n[e]==r&&"mode"!=e||(n[e]=r,t.hasOwnProperty(e)&&ni(this,t[e])(this,r,i),ve(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](ea(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;rr&&(Da(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&En(this));else{var o=i.from(),a=i.to(),s=Math.max(r,o.line);r=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var l=s;l0&&eo(this.doc,n,new Ti(o,c[n].to()),V)}}})),getTokenAt:function(e,t){return wt(this,e,t)},getLineTokens:function(e,t){return wt(this,nt(e),t,!0)},getTokenTypeAt:function(e){e=ut(this.doc,e);var t,r=mt(this,Xe(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var a=n+i>>1;if((a?r[2*a-1]:0)>=o)i=a;else{if(!(r[2*a+1]o&&(e=o,i=!0),n=Xe(this.doc,e)}else n=e;return $r(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-$t(n):0)},defaultTextHeight:function(){return an(this.display)},defaultCharWidth:function(){return sn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,a,s,l=this.display,c=(e=Xr(this,ut(this.doc,e))).bottom,u=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),l.sizer.appendChild(t),"over"==n)c=e.top;else if("above"==n||"near"==n){var d=Math.max(l.wrapper.clientHeight,this.doc.height),f=Math.max(l.sizer.clientWidth,l.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>d)&&e.top>t.offsetHeight?c=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=d&&(c=e.bottom),u+t.offsetWidth>f&&(u=f-t.offsetWidth)}t.style.top=c+"px",t.style.left=t.style.right="","right"==i?(u=l.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?u=0:"middle"==i&&(u=(l.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+"px"),r&&(o=this,a={left:u,top:c,right:u+t.offsetWidth,bottom:c+t.offsetHeight},null!=(s=An(o,a)).scrollTop&&Pn(o,s.scrollTop),null!=s.scrollLeft&&Hn(o,s.scrollLeft))},triggerOnKeyDown:ii(ha),triggerOnKeyPress:ii(ga),triggerOnKeyUp:ma,triggerOnMouseDown:ii(xa),execCommand:function(e){if(oa.hasOwnProperty(e))return oa[e].call(null,this)},triggerElectric:ii((function(e){Pa(this,e)})),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=ut(this.doc,e),a=0;a0&&a(t.charAt(r-1));)--r;for(;n.5||this.options.lineWrapping)&&dn(this),ve(this,"refresh",this)})),swapDoc:ii((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Ri(this,e),jr(this),this.display.input.reset(),Fn(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,ur(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},we(e),e.registerHelper=function(t,n,i){r.hasOwnProperty(t)||(r[t]=e[t]={_global:[]}),r[t][n]=i},e.registerGlobalHelper=function(t,n,i,o){e.registerHelper(t,n,o),r[t]._global.push({pred:i,val:o})}}(Oa);var Ya="iter insert remove copy getEditor constructor".split(" ");for(var Qa in Fo.prototype)Fo.prototype.hasOwnProperty(Qa)&&B(Ya,Qa)<0&&(Oa.prototype[Qa]=function(e){return function(){return e.apply(this.doc,arguments)}}(Fo.prototype[Qa]));return we(Fo),Oa.inputStyles={textarea:Xa,contenteditable:Ua},Oa.defineMode=function(e){Oa.defaults.mode||"null"==e||(Oa.defaults.mode=e),He.apply(this,arguments)},Oa.defineMIME=function(e,t){Re[e]=t},Oa.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Oa.defineMIME("text/plain","null"),Oa.defineExtension=function(e,t){Oa.prototype[e]=t},Oa.defineDocExtension=function(e,t){Fo.prototype[e]=t},Oa.fromTextArea=function(e,t){if((t=t?H(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=D(e.ownerDocument);t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(he(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var a=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=a}}catch(e){}}t.finishInit=function(r){r.save=n,r.getTextArea=function(){return e},r.toTextArea=function(){r.toTextArea=isNaN,n(),e.parentNode.removeChild(r.getWrapperElement()),e.style.display="",e.form&&(ge(e.form,"submit",n),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=i))}},e.style.display="none";var s=Oa((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return s},function(e){e.off=ge,e.on=he,e.wheelEventPixels=Ci,e.Doc=Fo,e.splitLines=Ee,e.countColumn=q,e.findColumn=K,e.isWordChar=re,e.Pass=U,e.signal=ve,e.Line=Xt,e.changeEnd=zi,e.scrollbarModel=$n,e.Pos=nt,e.cmpPos=it,e.modes=Pe,e.mimeModes=Re,e.resolveMode=qe,e.getMode=je,e.modeExtensions=Be,e.extendMode=Ue,e.copyState=Ve,e.startState=Ge,e.innerMode=$e,e.commands=oa,e.keyMap=Go,e.keyName=Jo,e.isModifierKey=Qo,e.lookupKey=Yo,e.normalizeKeyMap=Xo,e.StringStream=Ke,e.SharedTextMarker=Oo,e.TextMarker=No,e.LineWidget=Lo,e.e_preventDefault=_e,e.e_stopPropagation=ke,e.e_stop=Se,e.addClass=E,e.contains=A,e.rmClass=T,e.keyNames=Bo}(Oa),Oa.version="5.65.8",Oa}()},16792:(e,t,r)=>{!function(e){"use strict";e.defineMode("javascript",(function(t,r){var n,i,o=t.indentUnit,a=r.statementIndent,s=r.jsonld,l=r.json||s,c=!1!==r.trackScope,u=r.typescript,d=r.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),i=e("keyword d"),o=e("operator"),a={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:i,break:i,continue:i,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:o,typeof:o,instanceof:o,true:a,false:a,null:a,undefined:a,NaN:a,Infinity:a,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),p=/[+\-*&%=<>!?|~^@]/,h=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e,t,r){return n=e,i=r,t}function g(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,i=!1;if(s&&"@"==e.peek()&&e.match(h))return t.tokenize=g,m("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||i);)i=!i&&"\\"==n;return i||(t.tokenize=g),m("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if("."==n&&e.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return m(n);if("="==n&&e.eat(">"))return m("=>","operator");if("0"==n&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(n))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if("/"==n)return e.eat("*")?(t.tokenize=v,v(e,t)):e.eat("/")?(e.skipToEnd(),m("comment","comment")):Je(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string-2")):(e.eat("="),m("operator","operator",e.current()));if("`"==n)return t.tokenize=y,y(e,t);if("#"==n&&"!"==e.peek())return e.skipToEnd(),m("meta","meta");if("#"==n&&e.eatWhile(d))return m("variable","property");if("<"==n&&e.match("!--")||"-"==n&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),m("comment","comment");if(p.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-|&?]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),"?"==n&&e.eat(".")?m("."):m("operator","operator",e.current());if(d.test(n)){e.eatWhile(d);var i=e.current();if("."!=t.lastType){if(f.propertyIsEnumerable(i)){var o=f[i];return m(o.type,o.style,i)}if("async"==i&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",i)}return m("variable","variable",i)}}function v(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=g;break}n="*"==r}return m("comment","comment")}function y(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=g;break}n=!n&&"\\"==r}return m("quasi","string-2",e.current())}function b(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(u){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var i=0,o=!1,a=r-1;a>=0;--a){var s=e.string.charAt(a),l="([{}])".indexOf(s);if(l>=0&&l<3){if(!i){++a;break}if(0==--i){"("==s&&(o=!0);break}}else if(l>=3&&l<6)++i;else if(d.test(s))o=!0;else if(/["'\/`]/.test(s))for(;;--a){if(0==a)return;if(e.string.charAt(a-1)==s&&"\\"!=e.string.charAt(a-2)){a--;break}}else if(o&&!i){++a;break}}o&&!i&&(t.fatArrowAt=a)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function w(e,t,r,n,i,o){this.indented=e,this.column=t,this.type=r,this.prev=i,this.info=o,null!=n&&(this.align=n)}function _(e,t){if(!c)return!1;for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function k(e,t,r,n,i){var o=e.cc;for(C.state=e,C.stream=i,C.marked=null,C.cc=o,C.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((o.length?o.pop():l?j:H)(r,n)){for(;o.length&&o[o.length-1].lex;)o.pop()();return C.marked?C.marked:"variable"==r&&_(e,n)?"variable-2":t}}var C={state:null,column:null,marked:null,cc:null};function S(){for(var e=arguments.length-1;e>=0;e--)C.cc.push(arguments[e])}function L(){return S.apply(null,arguments),!0}function T(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function M(e){var t=C.state;if(C.marked="def",c){if(t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var n=N(e,t.context);if(null!=n)return void(t.context=n)}else if(!T(e,t.localVars))return void(t.localVars=new A(e,t.localVars));r.globalVars&&!T(e,t.globalVars)&&(t.globalVars=new A(e,t.globalVars))}}function N(e,t){if(t){if(t.block){var r=N(e,t.prev);return r?r==t.prev?t:new O(r,t.vars,!0):null}return T(e,t.vars)?t:new O(t.prev,new A(e,t.vars),!1)}return null}function z(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function O(e,t,r){this.prev=e,this.vars=t,this.block=r}function A(e,t){this.name=e,this.next=t}var D=new A("this",new A("arguments",null));function E(){C.state.context=new O(C.state.context,C.state.localVars,!1),C.state.localVars=D}function F(){C.state.context=new O(C.state.context,C.state.localVars,!0),C.state.localVars=null}function I(){C.state.localVars=C.state.context.vars,C.state.context=C.state.context.prev}function W(e,t){var r=function(){var r=C.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var i=r.lexical;i&&")"==i.type&&i.align;i=i.prev)n=i.indented;r.lexical=new w(n,C.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function P(){var e=C.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function R(e){return function t(r){return r==e?L():";"==e||"}"==r||")"==r||"]"==r?S():L(t)}}function H(e,t){return"var"==e?L(W("vardef",t),Ce,R(";"),P):"keyword a"==e?L(W("form"),U,H,P):"keyword b"==e?L(W("form"),H,P):"keyword d"==e?C.stream.match(/^\s*$/,!1)?L():L(W("stat"),$,R(";"),P):"debugger"==e?L(R(";")):"{"==e?L(W("}"),F,le,P,I):";"==e?L():"if"==e?("else"==C.state.lexical.info&&C.state.cc[C.state.cc.length-1]==P&&C.state.cc.pop()(),L(W("form"),U,H,P,ze)):"function"==e?L(Ee):"for"==e?L(W("form"),F,Oe,H,I,P):"class"==e||u&&"interface"==t?(C.marked="keyword",L(W("form","class"==e?e:t),Re,P)):"variable"==e?u&&"declare"==t?(C.marked="keyword",L(H)):u&&("module"==t||"enum"==t||"type"==t)&&C.stream.match(/^\s*\w/,!1)?(C.marked="keyword","enum"==t?L(Qe):"type"==t?L(Ie,R("operator"),pe,R(";")):L(W("form"),Se,R("{"),W("}"),le,P,P)):u&&"namespace"==t?(C.marked="keyword",L(W("form"),j,H,P)):u&&"abstract"==t?(C.marked="keyword",L(H)):L(W("stat"),te):"switch"==e?L(W("form"),U,R("{"),W("}","switch"),F,le,P,P,I):"case"==e?L(j,R(":")):"default"==e?L(R(":")):"catch"==e?L(W("form"),E,q,H,P,I):"export"==e?L(W("stat"),Be,P):"import"==e?L(W("stat"),Ve,P):"async"==e?L(H):"@"==t?L(j,H):S(W("stat"),j,R(";"),P)}function q(e){if("("==e)return L(We,R(")"))}function j(e,t){return V(e,t,!1)}function B(e,t){return V(e,t,!0)}function U(e){return"("!=e?S():L(W(")"),$,R(")"),P)}function V(e,t,r){if(C.state.fatArrowAt==C.stream.start){var n=r?Z:Q;if("("==e)return L(E,W(")"),ae(We,")"),P,R("=>"),n,I);if("variable"==e)return S(E,Se,R("=>"),n,I)}var i=r?K:G;return x.hasOwnProperty(e)?L(i):"function"==e?L(Ee,i):"class"==e||u&&"interface"==t?(C.marked="keyword",L(W("form"),Pe,P)):"keyword c"==e||"async"==e?L(r?B:j):"("==e?L(W(")"),$,R(")"),P,i):"operator"==e||"spread"==e?L(r?B:j):"["==e?L(W("]"),Ye,P,i):"{"==e?se(ne,"}",null,i):"quasi"==e?S(X,i):"new"==e?L(function(e){return function(t){return"."==t?L(e?ee:J):"variable"==t&&u?L(we,e?K:G):S(e?B:j)}}(r)):L()}function $(e){return e.match(/[;\}\)\],]/)?S():S(j)}function G(e,t){return","==e?L($):K(e,t,!1)}function K(e,t,r){var n=0==r?G:K,i=0==r?j:B;return"=>"==e?L(E,r?Z:Q,I):"operator"==e?/\+\+|--/.test(t)||u&&"!"==t?L(n):u&&"<"==t&&C.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?L(W(">"),ae(pe,">"),P,n):"?"==t?L(j,R(":"),i):L(i):"quasi"==e?S(X,n):";"!=e?"("==e?se(B,")","call",n):"."==e?L(re,n):"["==e?L(W("]"),$,R("]"),P,n):u&&"as"==t?(C.marked="keyword",L(pe,n)):"regexp"==e?(C.state.lastType=C.marked="operator",C.stream.backUp(C.stream.pos-C.stream.start-1),L(i)):void 0:void 0}function X(e,t){return"quasi"!=e?S():"${"!=t.slice(t.length-2)?L(X):L($,Y)}function Y(e){if("}"==e)return C.marked="string-2",C.state.tokenize=y,L(X)}function Q(e){return b(C.stream,C.state),S("{"==e?H:j)}function Z(e){return b(C.stream,C.state),S("{"==e?H:B)}function J(e,t){if("target"==t)return C.marked="keyword",L(G)}function ee(e,t){if("target"==t)return C.marked="keyword",L(K)}function te(e){return":"==e?L(P,H):S(G,R(";"),P)}function re(e){if("variable"==e)return C.marked="property",L()}function ne(e,t){return"async"==e?(C.marked="property",L(ne)):"variable"==e||"keyword"==C.style?(C.marked="property","get"==t||"set"==t?L(ie):(u&&C.state.fatArrowAt==C.stream.start&&(r=C.stream.match(/^\s*:\s*/,!1))&&(C.state.fatArrowAt=C.stream.pos+r[0].length),L(oe))):"number"==e||"string"==e?(C.marked=s?"property":C.style+" property",L(oe)):"jsonld-keyword"==e?L(oe):u&&z(t)?(C.marked="keyword",L(ne)):"["==e?L(j,ce,R("]"),oe):"spread"==e?L(B,oe):"*"==t?(C.marked="keyword",L(ne)):":"==e?S(oe):void 0;var r}function ie(e){return"variable"!=e?S(oe):(C.marked="property",L(Ee))}function oe(e){return":"==e?L(B):"("==e?S(Ee):void 0}function ae(e,t,r){function n(i,o){if(r?r.indexOf(i)>-1:","==i){var a=C.state.lexical;return"call"==a.info&&(a.pos=(a.pos||0)+1),L((function(r,n){return r==t||n==t?S():S(e)}),n)}return i==t||o==t?L():r&&r.indexOf(";")>-1?S(e):L(R(t))}return function(r,i){return r==t||i==t?L():S(e,n)}}function se(e,t,r){for(var n=3;n"),pe):"quasi"==e?S(ve,xe):void 0}function he(e){if("=>"==e)return L(pe)}function me(e){return e.match(/[\}\)\]]/)?L():","==e||";"==e?L(me):S(ge,me)}function ge(e,t){return"variable"==e||"keyword"==C.style?(C.marked="property",L(ge)):"?"==t||"number"==e||"string"==e?L(ge):":"==e?L(pe):"["==e?L(R("variable"),ue,R("]"),ge):"("==e?S(Fe,ge):e.match(/[;\}\)\],]/)?void 0:L()}function ve(e,t){return"quasi"!=e?S():"${"!=t.slice(t.length-2)?L(ve):L(pe,ye)}function ye(e){if("}"==e)return C.marked="string-2",C.state.tokenize=y,L(ve)}function be(e,t){return"variable"==e&&C.stream.match(/^\s*[?:]/,!1)||"?"==t?L(be):":"==e?L(pe):"spread"==e?L(be):S(pe)}function xe(e,t){return"<"==t?L(W(">"),ae(pe,">"),P,xe):"|"==t||"."==e||"&"==t?L(pe):"["==e?L(pe,R("]"),xe):"extends"==t||"implements"==t?(C.marked="keyword",L(pe)):"?"==t?L(pe,R(":"),pe):void 0}function we(e,t){if("<"==t)return L(W(">"),ae(pe,">"),P,xe)}function _e(){return S(pe,ke)}function ke(e,t){if("="==t)return L(pe)}function Ce(e,t){return"enum"==t?(C.marked="keyword",L(Qe)):S(Se,ce,Me,Ne)}function Se(e,t){return u&&z(t)?(C.marked="keyword",L(Se)):"variable"==e?(M(t),L()):"spread"==e?L(Se):"["==e?se(Te,"]"):"{"==e?se(Le,"}"):void 0}function Le(e,t){return"variable"!=e||C.stream.match(/^\s*:/,!1)?("variable"==e&&(C.marked="property"),"spread"==e?L(Se):"}"==e?S():"["==e?L(j,R("]"),R(":"),Le):L(R(":"),Se,Me)):(M(t),L(Me))}function Te(){return S(Se,Me)}function Me(e,t){if("="==t)return L(B)}function Ne(e){if(","==e)return L(Ce)}function ze(e,t){if("keyword b"==e&&"else"==t)return L(W("form","else"),H,P)}function Oe(e,t){return"await"==t?L(Oe):"("==e?L(W(")"),Ae,P):void 0}function Ae(e){return"var"==e?L(Ce,De):"variable"==e?L(De):S(De)}function De(e,t){return")"==e?L():";"==e?L(De):"in"==t||"of"==t?(C.marked="keyword",L(j,De)):S(j,De)}function Ee(e,t){return"*"==t?(C.marked="keyword",L(Ee)):"variable"==e?(M(t),L(Ee)):"("==e?L(E,W(")"),ae(We,")"),P,de,H,I):u&&"<"==t?L(W(">"),ae(_e,">"),P,Ee):void 0}function Fe(e,t){return"*"==t?(C.marked="keyword",L(Fe)):"variable"==e?(M(t),L(Fe)):"("==e?L(E,W(")"),ae(We,")"),P,de,I):u&&"<"==t?L(W(">"),ae(_e,">"),P,Fe):void 0}function Ie(e,t){return"keyword"==e||"variable"==e?(C.marked="type",L(Ie)):"<"==t?L(W(">"),ae(_e,">"),P):void 0}function We(e,t){return"@"==t&&L(j,We),"spread"==e?L(We):u&&z(t)?(C.marked="keyword",L(We)):u&&"this"==e?L(ce,Me):S(Se,ce,Me)}function Pe(e,t){return"variable"==e?Re(e,t):He(e,t)}function Re(e,t){if("variable"==e)return M(t),L(He)}function He(e,t){return"<"==t?L(W(">"),ae(_e,">"),P,He):"extends"==t||"implements"==t||u&&","==e?("implements"==t&&(C.marked="keyword"),L(u?pe:j,He)):"{"==e?L(W("}"),qe,P):void 0}function qe(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||u&&z(t))&&C.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(C.marked="keyword",L(qe)):"variable"==e||"keyword"==C.style?(C.marked="property",L(je,qe)):"number"==e||"string"==e?L(je,qe):"["==e?L(j,ce,R("]"),je,qe):"*"==t?(C.marked="keyword",L(qe)):u&&"("==e?S(Fe,qe):";"==e||","==e?L(qe):"}"==e?L():"@"==t?L(j,qe):void 0}function je(e,t){if("!"==t)return L(je);if("?"==t)return L(je);if(":"==e)return L(pe,Me);if("="==t)return L(B);var r=C.state.lexical.prev;return S(r&&"interface"==r.info?Fe:Ee)}function Be(e,t){return"*"==t?(C.marked="keyword",L(Xe,R(";"))):"default"==t?(C.marked="keyword",L(j,R(";"))):"{"==e?L(ae(Ue,"}"),Xe,R(";")):S(H)}function Ue(e,t){return"as"==t?(C.marked="keyword",L(R("variable"))):"variable"==e?S(B,Ue):void 0}function Ve(e){return"string"==e?L():"("==e?S(j):"."==e?S(G):S($e,Ge,Xe)}function $e(e,t){return"{"==e?se($e,"}"):("variable"==e&&M(t),"*"==t&&(C.marked="keyword"),L(Ke))}function Ge(e){if(","==e)return L($e,Ge)}function Ke(e,t){if("as"==t)return C.marked="keyword",L($e)}function Xe(e,t){if("from"==t)return C.marked="keyword",L(j)}function Ye(e){return"]"==e?L():S(ae(B,"]"))}function Qe(){return S(W("form"),Se,R("{"),W("}"),ae(Ze,"}"),P,P)}function Ze(){return S(Se,Me)}function Je(e,t,r){return t.tokenize==g&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return E.lex=F.lex=!0,I.lex=!0,P.lex=!0,{startState:function(e){var t={tokenize:g,lastType:"sof",cc:[],lexical:new w((e||0)-o,0,"block",!1),localVars:r.localVars,context:r.localVars&&new O(null,null,!1),indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),b(e,t)),t.tokenize!=v&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=i&&"--"!=i?n:"incdec",k(t,r,n,i,e))},indent:function(t,n){if(t.tokenize==v||t.tokenize==y)return e.Pass;if(t.tokenize!=g)return 0;var i,s=n&&n.charAt(0),l=t.lexical;if(!/^\s*else\b/.test(n))for(var c=t.cc.length-1;c>=0;--c){var u=t.cc[c];if(u==P)l=l.prev;else if(u!=ze&&u!=I)break}for(;("stat"==l.type||"form"==l.type)&&("}"==s||(i=t.cc[t.cc.length-1])&&(i==G||i==K)&&!/^[,\.=+\-*:?[\(]/.test(n));)l=l.prev;a&&")"==l.type&&"stat"==l.prev.type&&(l=l.prev);var d=l.type,f=s==d;return"vardef"==d?l.indented+("operator"==t.lastType||","==t.lastType?l.info.length+1:0):"form"==d&&"{"==s?l.indented:"form"==d?l.indented+o:"stat"==d?l.indented+(function(e,t){return"operator"==e.lastType||","==e.lastType||p.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}(t,n)?a||o:0):"switch"!=l.info||f||0==r.doubleIndentSwitch?l.align?l.column+(f?0:1):l.indented+(f?0:o):l.indented+(/^(?:case|default)\b/.test(n)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:l?null:"/*",blockCommentEnd:l?null:"*/",blockCommentContinue:l?null:" * ",lineComment:l?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:l?"json":"javascript",jsonldMode:s,jsonMode:l,expressionAllowed:Je,skipExpression:function(t){k(t,"atom","atom","true",new e.StringStream("",2,null))}}})),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}(r(15237))},29532:(e,t,r)=>{!function(e){"use strict";function t(e){for(var t;null!=(t=e.next());)if("`"==t&&!e.eat("`"))return"variable-2";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"variable-2":null}function r(e){return e.eat("@")&&(e.match("session."),e.match("local."),e.match("global.")),e.eat("'")?(e.match(/^.*'/),"variable-2"):e.eat('"')?(e.match(/^.*"/),"variable-2"):e.eat("`")?(e.match(/^.*`/),"variable-2"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function n(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"variable-2":null}e.defineMode("sql",(function(t,r){var n=r.client||{},s=r.atoms||{false:!0,true:!0,null:!0},l=r.builtin||o(a),c=r.keywords||o(i),u=r.operatorChars||/^[*+\-%<>!=&|~^\/]/,d=r.support||{},f=r.hooks||{},p=r.dateSQL||{date:!0,time:!0,timestamp:!0},h=!1!==r.backslashStringEscapes,m=r.brackets||/^[\{}\(\)\[\]]/,g=r.punctuation||/^[;.,:]/;function v(e,t){var r=e.next();if(f[r]){var i=f[r](e,t);if(!1!==i)return i}if(d.hexNumber&&("0"==r&&e.match(/^[xX][0-9a-fA-F]+/)||("x"==r||"X"==r)&&e.match(/^'[0-9a-fA-F]*'/)))return"number";if(d.binaryNumber&&(("b"==r||"B"==r)&&e.match(/^'[01]*'/)||"0"==r&&e.match(/^b[01]+/)))return"number";if(r.charCodeAt(0)>47&&r.charCodeAt(0)<58)return e.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),d.decimallessFloat&&e.match(/^\.(?!\.)/),"number";if("?"==r&&(e.eatSpace()||e.eol()||e.eat(";")))return"variable-3";if("'"==r||'"'==r&&d.doubleQuote)return t.tokenize=y(r),t.tokenize(e,t);if((d.nCharCast&&("n"==r||"N"==r)||d.charsetCast&&"_"==r&&e.match(/[a-z][a-z0-9]*/i))&&("'"==e.peek()||'"'==e.peek()))return"keyword";if(d.escapeConstant&&("e"==r||"E"==r)&&("'"==e.peek()||'"'==e.peek()&&d.doubleQuote))return t.tokenize=function(e,t){return(t.tokenize=y(e.next(),!0))(e,t)},"keyword";if(d.commentSlashSlash&&"/"==r&&e.eat("/"))return e.skipToEnd(),"comment";if(d.commentHash&&"#"==r||"-"==r&&e.eat("-")&&(!d.commentSpaceRequired||e.eat(" ")))return e.skipToEnd(),"comment";if("/"==r&&e.eat("*"))return t.tokenize=b(1),t.tokenize(e,t);if("."!=r){if(u.test(r))return e.eatWhile(u),"operator";if(m.test(r))return"bracket";if(g.test(r))return e.eatWhile(g),"punctuation";if("{"==r&&(e.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||e.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";e.eatWhile(/^[_\w\d]/);var o=e.current().toLowerCase();return p.hasOwnProperty(o)&&(e.match(/^( )+'[^']*'/)||e.match(/^( )+"[^"]*"/))?"number":s.hasOwnProperty(o)?"atom":l.hasOwnProperty(o)?"type":c.hasOwnProperty(o)?"keyword":n.hasOwnProperty(o)?"builtin":null}return d.zerolessFloat&&e.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":e.match(/^\.+/)?null:d.ODBCdotTable&&e.match(/^[\w\d_$#]+/)?"variable-2":void 0}function y(e,t){return function(r,n){for(var i,o=!1;null!=(i=r.next());){if(i==e&&!o){n.tokenize=v;break}o=(h||t)&&!o&&"\\"==i}return"string"}}function b(e){return function(t,r){var n=t.match(/^.*?(\/\*|\*\/)/);return n?"/*"==n[1]?r.tokenize=b(e+1):r.tokenize=e>1?b(e-1):v:t.skipToEnd(),"comment"}}function x(e,t,r){t.context={prev:t.context,indent:e.indentation(),col:e.column(),type:r}}return{startState:function(){return{tokenize:v,context:null}},token:function(e,t){if(e.sol()&&t.context&&null==t.context.align&&(t.context.align=!1),t.tokenize==v&&e.eatSpace())return null;var r=t.tokenize(e,t);if("comment"==r)return r;t.context&&null==t.context.align&&(t.context.align=!0);var n=e.current();return"("==n?x(e,t,")"):"["==n?x(e,t,"]"):t.context&&t.context.type==n&&function(e){e.indent=e.context.indent,e.context=e.context.prev}(t),r},indent:function(r,n){var i=r.context;if(!i)return e.Pass;var o=n.charAt(0)==i.type;return i.align?i.col+(o?0:1):i.indent+(o?0:t.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:d.commentSlashSlash?"//":d.commentHash?"#":"--",closeBrackets:"()[]{}''\"\"``"}}));var i="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function o(e){for(var t={},r=e.split(" "),n=0;n!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:o("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":r}}),e.defineMIME("text/x-mysql",{name:"sql",client:o("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:o(i+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:o("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:o("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:o("date time timestamp"),support:o("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":n}}),e.defineMIME("text/x-mariadb",{name:"sql",client:o("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:o(i+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:o("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:o("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:o("date time timestamp"),support:o("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":n}}),e.defineMIME("text/x-sqlite",{name:"sql",client:o("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:o(i+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:o("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:o("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:o("date time timestamp datetime"),support:o("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":r,":":r,"?":r,$:r,'"':function(e){for(var t;null!=(t=e.next());)if('"'==t&&!e.eat('"'))return"variable-2";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"variable-2":null},"`":t}}),e.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:o("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:o("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:o("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:o("commentSlashSlash decimallessFloat"),hooks:{}}),e.defineMIME("text/x-plsql",{name:"sql",client:o("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:o("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:o("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:o("date time timestamp"),support:o("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),e.defineMIME("text/x-hive",{name:"sql",keywords:o("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:o("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:o("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:o("date timestamp"),support:o("ODBCdotTable doubleQuote binaryNumber hexNumber")}),e.defineMIME("text/x-pgsql",{name:"sql",client:o("source"),keywords:o(i+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:o("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:o("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:o("date time timestamp"),support:o("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),e.defineMIME("text/x-gql",{name:"sql",keywords:o("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:o("false true"),builtin:o("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),e.defineMIME("text/x-gpsql",{name:"sql",client:o("source"),keywords:o("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:o("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:o("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:o("date time timestamp"),support:o("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),e.defineMIME("text/x-sparksql",{name:"sql",keywords:o("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:o("abs acos acosh add_months aggregate and any approx_count_distinct approx_percentile array array_contains array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_repeat array_sort array_union arrays_overlap arrays_zip ascii asin asinh assert_true atan atan2 atanh avg base64 between bigint bin binary bit_and bit_count bit_get bit_length bit_or bit_xor bool_and bool_or boolean bround btrim cardinality case cast cbrt ceil ceiling char char_length character_length chr coalesce collect_list collect_set concat concat_ws conv corr cos cosh cot count count_if count_min_sketch covar_pop covar_samp crc32 cume_dist current_catalog current_database current_date current_timestamp current_timezone current_user date date_add date_format date_from_unix_date date_part date_sub date_trunc datediff day dayofmonth dayofweek dayofyear decimal decode degrees delimited dense_rank div double e element_at elt encode every exists exp explode explode_outer expm1 extract factorial filter find_in_set first first_value flatten float floor forall format_number format_string from_csv from_json from_unixtime from_utc_timestamp get_json_object getbit greatest grouping grouping_id hash hex hour hypot if ifnull in initcap inline inline_outer input_file_block_length input_file_block_start input_file_name inputformat instr int isnan isnotnull isnull java_method json_array_length json_object_keys json_tuple kurtosis lag last last_day last_value lcase lead least left length levenshtein like ln locate log log10 log1p log2 lower lpad ltrim make_date make_dt_interval make_interval make_timestamp make_ym_interval map map_concat map_entries map_filter map_from_arrays map_from_entries map_keys map_values map_zip_with max max_by md5 mean min min_by minute mod monotonically_increasing_id month months_between named_struct nanvl negative next_day not now nth_value ntile nullif nvl nvl2 octet_length or outputformat overlay parse_url percent_rank percentile percentile_approx pi pmod posexplode posexplode_outer position positive pow power printf quarter radians raise_error rand randn random rank rcfile reflect regexp regexp_extract regexp_extract_all regexp_like regexp_replace repeat replace reverse right rint rlike round row_number rpad rtrim schema_of_csv schema_of_json second sentences sequence sequencefile serde session_window sha sha1 sha2 shiftleft shiftright shiftrightunsigned shuffle sign signum sin sinh size skewness slice smallint some sort_array soundex space spark_partition_id split sqrt stack std stddev stddev_pop stddev_samp str_to_map string struct substr substring substring_index sum tan tanh textfile timestamp timestamp_micros timestamp_millis timestamp_seconds tinyint to_csv to_date to_json to_timestamp to_unix_timestamp to_utc_timestamp transform transform_keys transform_values translate trim trunc try_add try_divide typeof ucase unbase64 unhex uniontype unix_date unix_micros unix_millis unix_seconds unix_timestamp upper uuid var_pop var_samp variance version weekday weekofyear when width_bucket window xpath xpath_boolean xpath_double xpath_float xpath_int xpath_long xpath_number xpath_short xpath_string xxhash64 year zip_with"),atoms:o("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:o("date time timestamp"),support:o("ODBCdotTable doubleQuote zerolessFloat")}),e.defineMIME("text/x-esper",{name:"sql",client:o("source"),keywords:o("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:o("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:o("time"),support:o("decimallessFloat zerolessFloat binaryNumber hexNumber")}),e.defineMIME("text/x-trino",{name:"sql",keywords:o("abs absent acos add admin after all all_match alter analyze and any any_match approx_distinct approx_most_frequent approx_percentile approx_set arbitrary array_agg array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_sort array_union arrays_overlap as asc asin at at_timezone atan atan2 authorization avg bar bernoulli beta_cdf between bing_tile bing_tile_at bing_tile_coordinates bing_tile_polygon bing_tile_quadkey bing_tile_zoom_level bing_tiles_around bit_count bitwise_and bitwise_and_agg bitwise_left_shift bitwise_not bitwise_or bitwise_or_agg bitwise_right_shift bitwise_right_shift_arithmetic bitwise_xor bool_and bool_or both by call cardinality cascade case cast catalogs cbrt ceil ceiling char2hexint checksum chr classify coalesce codepoint column columns combinations comment commit committed concat concat_ws conditional constraint contains contains_sequence convex_hull_agg copartition corr cos cosh cosine_similarity count count_if covar_pop covar_samp crc32 create cross cube cume_dist current current_catalog current_date current_groups current_path current_role current_schema current_time current_timestamp current_timezone current_user data date_add date_diff date_format date_parse date_trunc day day_of_month day_of_week day_of_year deallocate default define definer degrees delete dense_rank deny desc describe descriptor distinct distributed dow doy drop e element_at else empty empty_approx_set encoding end error escape evaluate_classifier_predictions every except excluding execute exists exp explain extract false features fetch filter final first first_value flatten floor following for format format_datetime format_number from from_base from_base32 from_base64 from_base64url from_big_endian_32 from_big_endian_64 from_encoded_polyline from_geojson_geometry from_hex from_ieee754_32 from_ieee754_64 from_iso8601_date from_iso8601_timestamp from_iso8601_timestamp_nanos from_unixtime from_unixtime_nanos from_utf8 full functions geometric_mean geometry_from_hadoop_shape geometry_invalid_reason geometry_nearest_points geometry_to_bing_tiles geometry_union geometry_union_agg grant granted grants graphviz great_circle_distance greatest group grouping groups hamming_distance hash_counts having histogram hmac_md5 hmac_sha1 hmac_sha256 hmac_sha512 hour human_readable_seconds if ignore in including index infinity initial inner input insert intersect intersection_cardinality into inverse_beta_cdf inverse_normal_cdf invoker io is is_finite is_infinite is_json_scalar is_nan isolation jaccard_index join json_array json_array_contains json_array_get json_array_length json_exists json_extract json_extract_scalar json_format json_object json_parse json_query json_size json_value keep key keys kurtosis lag last last_day_of_month last_value lateral lead leading learn_classifier learn_libsvm_classifier learn_libsvm_regressor learn_regressor least left length level levenshtein_distance like limit line_interpolate_point line_interpolate_points line_locate_point listagg ln local localtime localtimestamp log log10 log2 logical lower lpad ltrim luhn_check make_set_digest map_agg map_concat map_entries map_filter map_from_entries map_keys map_union map_values map_zip_with match match_recognize matched matches materialized max max_by md5 measures merge merge_set_digest millisecond min min_by minute mod month multimap_agg multimap_from_entries murmur3 nan natural next nfc nfd nfkc nfkd ngrams no none none_match normal_cdf normalize not now nth_value ntile null nullif nulls numeric_histogram object objectid_timestamp of offset omit on one only option or order ordinality outer output over overflow parse_data_size parse_datetime parse_duration partition partitions passing past path pattern per percent_rank permute pi position pow power preceding prepare privileges properties prune qdigest_agg quarter quotes radians rand random range rank read recursive reduce reduce_agg refresh regexp_count regexp_extract regexp_extract_all regexp_like regexp_position regexp_replace regexp_split regr_intercept regr_slope regress rename render repeat repeatable replace reset respect restrict returning reverse revoke rgb right role roles rollback rollup round row_number rows rpad rtrim running scalar schema schemas second security seek select sequence serializable session set sets sha1 sha256 sha512 show shuffle sign simplify_geometry sin skewness skip slice some soundex spatial_partitioning spatial_partitions split split_part split_to_map split_to_multimap spooky_hash_v2_32 spooky_hash_v2_64 sqrt st_area st_asbinary st_astext st_boundary st_buffer st_centroid st_contains st_convexhull st_coorddim st_crosses st_difference st_dimension st_disjoint st_distance st_endpoint st_envelope st_envelopeaspts st_equals st_exteriorring st_geometries st_geometryfromtext st_geometryn st_geometrytype st_geomfrombinary st_interiorringn st_interiorrings st_intersection st_intersects st_isclosed st_isempty st_isring st_issimple st_isvalid st_length st_linefromtext st_linestring st_multipoint st_numgeometries st_numinteriorring st_numpoints st_overlaps st_point st_pointn st_points st_polygon st_relate st_startpoint st_symdifference st_touches st_union st_within st_x st_xmax st_xmin st_y st_ymax st_ymin start starts_with stats stddev stddev_pop stddev_samp string strpos subset substr substring sum system table tables tablesample tan tanh tdigest_agg text then ties timestamp_objectid timezone_hour timezone_minute to to_base to_base32 to_base64 to_base64url to_big_endian_32 to_big_endian_64 to_char to_date to_encoded_polyline to_geojson_geometry to_geometry to_hex to_ieee754_32 to_ieee754_64 to_iso8601 to_milliseconds to_spherical_geography to_timestamp to_unixtime to_utf8 trailing transaction transform transform_keys transform_values translate trim trim_array true truncate try try_cast type typeof uescape unbounded uncommitted unconditional union unique unknown unmatched unnest update upper url_decode url_encode url_extract_fragment url_extract_host url_extract_parameter url_extract_path url_extract_port url_extract_protocol url_extract_query use user using utf16 utf32 utf8 validate value value_at_quantile values values_at_quantiles var_pop var_samp variance verbose version view week week_of_year when where width_bucket wilson_interval_lower wilson_interval_upper window with with_timezone within without word_stem work wrapper write xxhash64 year year_of_week yow zip zip_with"),builtin:o("array bigint bingtile boolean char codepoints color date decimal double function geometry hyperloglog int integer interval ipaddress joniregexp json json2016 jsonpath kdbtree likepattern map model objectid p4hyperloglog precision qdigest re2jregexp real regressor row setdigest smallint sphericalgeography tdigest time timestamp tinyint uuid varbinary varchar zone"),atoms:o("false true null unknown"),operatorChars:/^[[\]|<>=!\-+*/%]/,dateSQL:o("date time timestamp zone"),support:o("ODBCdotTable decimallessFloat zerolessFloat hexNumber")})}(r(15237))},48712:(e,t,r)=>{!function(e){"use strict";function t(e,t,r,n,i,o){this.indented=e,this.column=t,this.type=r,this.info=n,this.align=i,this.prev=o}function r(e,r,n,i){var o=e.indented;return e.context&&"statement"==e.context.type&&"statement"!=n&&(o=e.context.indented),e.context=new t(o,r,n,i,null,e.context)}function n(e){var t=e.context.type;return")"!=t&&"]"!=t&&"}"!=t||(e.indented=e.context.indented),e.context=e.context.prev}function i(e,t,r){return"variable"==t.prevToken||"type"==t.prevToken||!!/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,r))||!(!t.typeAtEndOfLine||e.column()!=e.indentation())||void 0}function o(e){for(;;){if(!e||"top"==e.type)return!0;if("}"==e.type&&"namespace"!=e.prev.info)return!1;e=e.prev}}function a(e){for(var t={},r=e.split(" "),n=0;n!?|\/]/,N=l.isIdentifierChar||/[\w\$_\xa1-\uffff]/,z=l.isReservedIdentifier||!1;function O(e,t){var r,n=e.next();if(x[n]){var i=x[n](e,t);if(!1!==i)return i}if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){for(var n,i=!1,o=!1;null!=(n=e.next());){if(n==r&&!i){o=!0;break}i=!i&&"\\"==n}return(o||!i&&!w)&&(t.tokenize=null),"string"}),t.tokenize(e,t);if(L.test(n)){if(e.backUp(1),e.match(T))return"number";e.next()}if(S.test(n))return c=n,null;if("/"==n){if(e.eat("*"))return t.tokenize=A,A(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(M.test(n)){for(;!e.match(/^\/[\/*]/,!1)&&e.eat(M););return"operator"}if(e.eatWhile(N),C)for(;e.match(C);)e.eatWhile(N);var o=e.current();return s(h,o)?(s(v,o)&&(c="newstatement"),s(y,o)&&(u=!0),"keyword"):s(m,o)?"type":s(g,o)||z&&z(o)?(s(v,o)&&(c="newstatement"),"builtin"):s(b,o)?"atom":"variable"}function A(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=null;break}n="*"==r}return"comment"}function D(e,t){l.typeFirstDefinitions&&e.eol()&&o(t.context)&&(t.typeAtEndOfLine=i(e,t,e.pos))}return{startState:function(e){return{tokenize:null,context:new t((e||0)-d,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(e,t){var a=t.context;if(e.sol()&&(null==a.align&&(a.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return D(e,t),null;c=u=null;var s=(t.tokenize||O)(e,t);if("comment"==s||"meta"==s)return s;if(null==a.align&&(a.align=!0),";"==c||":"==c||","==c&&e.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==t.context.type;)n(t);else if("{"==c)r(t,e.column(),"}");else if("["==c)r(t,e.column(),"]");else if("("==c)r(t,e.column(),")");else if("}"==c){for(;"statement"==a.type;)a=n(t);for("}"==a.type&&(a=n(t));"statement"==a.type;)a=n(t)}else c==a.type?n(t):_&&(("}"==a.type||"top"==a.type)&&";"!=c||"statement"==a.type&&"newstatement"==c)&&r(t,e.column(),"statement",e.current());if("variable"==s&&("def"==t.prevToken||l.typeFirstDefinitions&&i(e,t,e.start)&&o(t.context)&&e.match(/^\s*\(/,!1))&&(s="def"),x.token){var d=x.token(e,t,s);void 0!==d&&(s=d)}return"def"==s&&!1===l.styleDefs&&(s="variable"),t.startOfLine=!1,t.prevToken=u?"def":s||c,D(e,t),s},indent:function(t,r){if(t.tokenize!=O&&null!=t.tokenize||t.typeAtEndOfLine)return e.Pass;var n=t.context,i=r&&r.charAt(0),o=i==n.type;if("statement"==n.type&&"}"==i&&(n=n.prev),l.dontIndentStatements)for(;"statement"==n.type&&l.dontIndentStatements.test(n.info);)n=n.prev;if(x.indent){var a=x.indent(t,n,r,d);if("number"==typeof a)return a}var s=n.prev&&"switch"==n.prev.info;if(l.allmanIndentation&&/[{(]/.test(i)){for(;"top"!=n.type&&"}"!=n.type;)n=n.prev;return n.indented}return"statement"==n.type?n.indented+("{"==i?0:f):!n.align||p&&")"==n.type?")"!=n.type||o?n.indented+(o?0:d)+(o||!s||/^(?:case|default)\b/.test(r)?0:d):n.indented+f:n.column+(o?0:1)},electricInput:k?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"brace"}}));var l="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile inline restrict asm fortran",c="alignas alignof and and_eq audit axiom bitand bitor catch class compl concept constexpr const_cast decltype delete dynamic_cast explicit export final friend import module mutable namespace new noexcept not not_eq operator or or_eq override private protected public reinterpret_cast requires static_assert static_cast template this thread_local throw try typeid typename using virtual xor xor_eq",u="bycopy byref in inout oneway out self super atomic nonatomic retain copy readwrite readonly strong weak assign typeof nullable nonnull null_resettable _cmd @interface @implementation @end @protocol @encode @property @synthesize @dynamic @class @public @package @private @protected @required @optional @try @catch @finally @import @selector @encode @defs @synchronized @autoreleasepool @compatibility_alias @available",d="FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS NS_REQUIRES_NIL_TERMINATION NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME NS_REFINED_FOR_SWIFT",f=a("int long char short double float unsigned signed void bool"),p=a("SEL instancetype id Class Protocol BOOL");function h(e){return s(f,e)||/.+_t$/.test(e)}function m(e){return h(e)||s(p,e)}var g="case do else for if switch while struct enum union",v="struct enum union";function y(e,t){if(!t.startOfLine)return!1;for(var r,n=null;r=e.peek();){if("\\"==r&&e.match(/^.$/)){n=y;break}if("/"==r&&e.match(/^\/[\/\*]/,!1))break;e.next()}return t.tokenize=n,"meta"}function b(e,t){return"type"==t.prevToken&&"type"}function x(e){return!(!e||e.length<2||"_"!=e[0]||"_"!=e[1]&&e[1]===e[1].toLowerCase())}function w(e){return e.eatWhile(/[\w\.']/),"number"}function _(e,t){if(e.backUp(1),e.match(/^(?:R|u8R|uR|UR|LR)/)){var r=e.match(/^"([^\s\\()]{0,16})\(/);return!!r&&(t.cpp11RawStringDelim=r[1],t.tokenize=S,S(e,t))}return e.match(/^(?:u8|u|U|L)/)?!!e.match(/^["']/,!1)&&"string":(e.next(),!1)}function k(e){var t=/(\w+)::~?(\w+)$/.exec(e);return t&&t[1]==t[2]}function C(e,t){for(var r;null!=(r=e.next());)if('"'==r&&!e.eat('"')){t.tokenize=null;break}return"string"}function S(e,t){var r=t.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");return e.match(new RegExp(".*?\\)"+r+'"'))?t.tokenize=null:e.skipToEnd(),"string"}function L(t,r){"string"==typeof t&&(t=[t]);var n=[];function i(e){if(e)for(var t in e)e.hasOwnProperty(t)&&n.push(t)}i(r.keywords),i(r.types),i(r.builtin),i(r.atoms),n.length&&(r.helperType=t[0],e.registerHelper("hintWords",t[0],n));for(var o=0;o!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return!!e.match('""')&&(t.tokenize=T,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(e,r){var n=r.context;return!("}"!=n.type||!n.align||!e.eat(">"))&&(r.context=new t(n.indented,n.column,n.type,n.info,null,n.prev),"operator")},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=M(1),t.tokenize(e,t))}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}}),L("text/x-kotlin",{name:"clike",keywords:a("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value"),types:a("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:a("catch class do else finally for if where try while enum"),defKeywords:a("class val var object interface fun"),atoms:a("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,t){return"."==t.prevToken?"variable":"operator"},'"':function(e,t){return t.tokenize=(r=e.match('""'),function(e,t){for(var n,i=!1,o=!1;!e.eol();){if(!r&&!i&&e.match('"')){o=!0;break}if(r&&e.match('"""')){o=!0;break}n=e.next(),!i&&"$"==n&&e.match("{")&&e.skipTo("}"),i=!i&&"\\"==n&&!r}return!o&&r||(t.tokenize=null),"string"}),t.tokenize(e,t);var r},"/":function(e,t){return!!e.eat("*")&&(t.tokenize=M(1),t.tokenize(e,t))},indent:function(e,t,r,n){var i=r&&r.charAt(0);return"}"!=e.prevToken&&")"!=e.prevToken||""!=r?"operator"==e.prevToken&&"}"!=r&&"}"!=e.context.type||"variable"==e.prevToken&&"."==i||("}"==e.prevToken||")"==e.prevToken)&&"."==i?2*n+t.indented:t.align&&"}"==t.type?t.indented+(e.context.type==(r||"").charAt(0)?0:n):void 0:e.indented}},modeProps:{closeBrackets:{triples:'"'}}}),L(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:a("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:a("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:a("for while do if else struct"),builtin:a("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:a("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":y},modeProps:{fold:["brace","include"]}}),L("text/x-nesc",{name:"clike",keywords:a(l+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:h,blockKeywords:a(g),atoms:a("null true false"),hooks:{"#":y},modeProps:{fold:["brace","include"]}}),L("text/x-objectivec",{name:"clike",keywords:a(l+" "+u),types:m,builtin:a(d),blockKeywords:a(g+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:a(v+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:a("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:x,hooks:{"#":y,"*":b},modeProps:{fold:["brace","include"]}}),L("text/x-objectivec++",{name:"clike",keywords:a(l+" "+u+" "+c),types:m,builtin:a(d),blockKeywords:a(g+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:a(v+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:a("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:x,hooks:{"#":y,"*":b,u:_,U:_,L:_,R:_,0:w,1:w,2:w,3:w,4:w,5:w,6:w,7:w,8:w,9:w,token:function(e,t,r){if("variable"==r&&"("==e.peek()&&(";"==t.prevToken||null==t.prevToken||"}"==t.prevToken)&&k(e.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),L("text/x-squirrel",{name:"clike",keywords:a("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:h,blockKeywords:a("case catch class else for foreach if switch try while"),defKeywords:a("function local class"),typeFirstDefinitions:!0,atoms:a("true false null"),hooks:{"#":y},modeProps:{fold:["brace","include"]}});var N=null;function z(e){return function(t,r){for(var n,i=!1,o=!1;!t.eol();){if(!i&&t.match('"')&&("single"==e||t.match('""'))){o=!0;break}if(!i&&t.match("``")){N=z(e),o=!0;break}n=t.next(),i="single"==e&&!i&&"\\"==n}return o&&(r.tokenize=null),"string"}}L("text/x-ceylon",{name:"clike",keywords:a("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){var t=e.charAt(0);return t===t.toUpperCase()&&t!==t.toLowerCase()},blockKeywords:a("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:a("class dynamic function interface module object package value"),builtin:a("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:a("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return t.tokenize=z(e.match('""')?"triple":"single"),t.tokenize(e,t)},"`":function(e,t){return!(!N||!e.match("`"))&&(t.tokenize=N,N=null,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(e,t,r){if(("variable"==r||"type"==r)&&"."==t.prevToken)return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}(r(15237))},74806:(e,t,r)=>{!function(e){"use strict";function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var r=t(["and","or","not","is"]),n=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in"],i=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function o(e){return e.scopes[e.scopes.length-1]}e.registerHelper("hintWords","python",n.concat(i).concat(["exec","print"])),e.defineMode("python",(function(a,s){for(var l="error",c=s.delimiters||s.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,u=[s.singleOperators,s.doubleOperators,s.doubleDelimiters,s.tripleDelimiters,s.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],d=0;dn?_(t):i0&&k(e,t)&&(a+=" "+l),a}return w(e,t)}function w(e,t,n){if(e.eatSpace())return null;if(!n&&e.match(/^#.*/))return"comment";if(e.match(/^[0-9\.]/,!1)){var i=!1;if(e.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(i=!0),e.match(/^[\d_]+\.\d*/)&&(i=!0),e.match(/^\.\d+/)&&(i=!0),i)return e.eat(/J/i),"number";var o=!1;if(e.match(/^0x[0-9a-f_]+/i)&&(o=!0),e.match(/^0b[01_]+/i)&&(o=!0),e.match(/^0o[0-7_]+/i)&&(o=!0),e.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(e.eat(/J/i),o=!0),e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}if(e.match(v))return-1!==e.current().toLowerCase().indexOf("f")?(t.tokenize=function(e,t){for(;"rubf".indexOf(e.charAt(0).toLowerCase())>=0;)e=e.substr(1);var r=1==e.length,n="string";function i(e){return function(t,r){var n=w(t,r,!0);return"punctuation"==n&&("{"==t.current()?r.tokenize=i(e+1):"}"==t.current()&&(r.tokenize=e>1?i(e-1):o)),n}}function o(o,a){for(;!o.eol();)if(o.eatWhile(/[^'"\{\}\\]/),o.eat("\\")){if(o.next(),r&&o.eol())return n}else{if(o.match(e))return a.tokenize=t,n;if(o.match("{{"))return n;if(o.match("{",!1))return a.tokenize=i(0),o.current()?n:a.tokenize(o,a);if(o.match("}}"))return n;if(o.match("}"))return l;o.eat(/['"]/)}if(r){if(s.singleLineStringErrors)return l;a.tokenize=t}return n}return o.isString=!0,o}(e.current(),t.tokenize),t.tokenize(e,t)):(t.tokenize=function(e,t){for(;"rubf".indexOf(e.charAt(0).toLowerCase())>=0;)e=e.substr(1);var r=1==e.length,n="string";function i(i,o){for(;!i.eol();)if(i.eatWhile(/[^'"\\]/),i.eat("\\")){if(i.next(),r&&i.eol())return n}else{if(i.match(e))return o.tokenize=t,n;i.eat(/['"]/)}if(r){if(s.singleLineStringErrors)return l;o.tokenize=t}return n}return i.isString=!0,i}(e.current(),t.tokenize),t.tokenize(e,t));for(var a=0;a1&&o(t).offset>r;){if("py"!=o(t).type)return!0;t.scopes.pop()}return o(t).offset!=r}function C(e,t){e.sol()&&(t.beginningOfLine=!0,t.dedent=!1);var r=t.tokenize(e,t),n=e.current();if(t.beginningOfLine&&"@"==n)return e.match(g,!1)?"meta":m?"operator":l;if(/\S/.test(n)&&(t.beginningOfLine=!1),"variable"!=r&&"builtin"!=r||"meta"!=t.lastToken||(r="meta"),"pass"!=n&&"return"!=n||(t.dedent=!0),"lambda"==n&&(t.lambda=!0),":"==n&&!t.lambda&&"py"==o(t).type&&e.match(/^\s*(?:#|$)/,!1)&&_(t),1==n.length&&!/string|comment/.test(r)){var i="[({".indexOf(n);if(-1!=i&&function(e,t,r){var n=e.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:e.column()+1;t.scopes.push({offset:t.indent+f,type:r,align:n})}(e,t,"])}".slice(i,i+1)),-1!=(i="])}".indexOf(n))){if(o(t).type!=n)return l;t.indent=t.scopes.pop().offset-f}}return t.dedent&&e.eol()&&"py"==o(t).type&&t.scopes.length>1&&t.scopes.pop(),r}return{startState:function(e){return{tokenize:x,scopes:[{offset:e||0,type:"py",align:null}],indent:e||0,lastToken:null,lambda:!1,dedent:0}},token:function(e,t){var r=t.errorToken;r&&(t.errorToken=!1);var n=C(e,t);return n&&"comment"!=n&&(t.lastToken="keyword"==n||"punctuation"==n?e.current():n),"punctuation"==n&&(n=null),e.eol()&&t.lambda&&(t.lambda=!1),r?n+" "+l:n},indent:function(t,r){if(t.tokenize!=x)return t.tokenize.isString?e.Pass:0;var n=o(t),i=n.type==r.charAt(0)||"py"==n.type&&!t.dedent&&/^(else:|elif |except |finally:)/.test(r);return null!=n.align?n.align-(i?1:0):n.offset-(i?f:0)},electricInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,closeBrackets:{triples:"'\""},lineComment:"#",fold:"indent"}})),e.defineMIME("text/x-python","python");var a;e.defineMIME("text/x-cython",{name:"python",extra_keywords:(a="by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE",a.split(" "))})}(r(15237))},80330:(e,t,r)=>{!function(e){"use strict";e.defineMode("octave",(function(){function e(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var t=new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"),r=new RegExp("^[\\(\\[\\{\\},:=;\\.]"),n=new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"),i=new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"),o=new RegExp("^((>>=)|(<<=))"),a=new RegExp("^[\\]\\)]"),s=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*"),l=e(["error","eval","function","abs","acos","atan","asin","cos","cosh","exp","log","prod","sum","log10","max","min","sign","sin","sinh","sqrt","tan","reshape","break","zeros","default","margin","round","ones","rand","syn","ceil","floor","size","clear","zeros","eye","mean","std","cov","det","eig","inv","norm","rank","trace","expm","logm","sqrtm","linspace","plot","title","xlabel","ylabel","legend","text","grid","meshgrid","mesh","num2str","fft","ifft","arrayfun","cellfun","input","fliplr","flipud","ismember"]),c=e(["return","case","switch","else","elseif","end","endif","endfunction","if","otherwise","do","for","while","try","catch","classdef","properties","events","methods","global","persistent","endfor","endwhile","printf","sprintf","disp","until","continue","pkg"]);function u(e,t){return e.sol()||"'"!==e.peek()?(t.tokenize=f,f(e,t)):(e.next(),t.tokenize=f,"operator")}function d(e,t){return e.match(/^.*%}/)?(t.tokenize=f,"comment"):(e.skipToEnd(),"comment")}function f(p,h){if(p.eatSpace())return null;if(p.match("%{"))return h.tokenize=d,p.skipToEnd(),"comment";if(p.match(/^[%#]/))return p.skipToEnd(),"comment";if(p.match(/^[0-9\.+-]/,!1)){if(p.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/))return p.tokenize=f,"number";if(p.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/))return"number";if(p.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/))return"number"}if(p.match(e(["nan","NaN","inf","Inf"])))return"number";var m=p.match(/^"(?:[^"]|"")*("|$)/)||p.match(/^'(?:[^']|'')*('|$)/);return m?m[1]?"string":"string error":p.match(c)?"keyword":p.match(l)?"builtin":p.match(s)?"variable":p.match(t)||p.match(n)?"operator":p.match(r)||p.match(i)||p.match(o)?null:p.match(a)?(h.tokenize=u,null):(p.next(),"error")}return{startState:function(){return{tokenize:f}},token:function(e,t){var r=t.tokenize(e,t);return"number"!==r&&"variable"!==r||(t.tokenize=u),r},lineComment:"%",fold:"indent"}})),e.defineMIME("text/x-octave","octave")}(r(15237))}}]); +//# sourceMappingURL=296.37eb8c05642d8ef9.js.map \ No newline at end of file diff --git a/_static/296.37eb8c05642d8ef9.js.gz b/_static/296.37eb8c05642d8ef9.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..816ccb6d1a53684e4ac4a16f2ae1f2b6f221d15a GIT binary patch literal 86270 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
        • tag and places it in this.optionList\n var _this = this;\n for (var i = 0; i < this.children.length; i++) {\n if (_this.children[i].tagName == \"LI\") {\n _this.optionList.push(_this.children[i].innerHTML);\n }\n }\n }\n renderPoll() {\n //generates the HTML that the user interacts with\n var _this = this;\n this.containerDiv = document.createElement(\"div\");\n this.pollForm = document.createElement(\"form\");\n this.resultsDiv = document.createElement(\"div\");\n this.resultsDiv.classList.add(\"poll-results\");\n this.containerDiv.id = this.divid;\n const origClass = this.origElem.getAttribute(\"class\");\n if (origClass) {\n this.containerDiv.classList.add(...origClass.split(\" \").filter(Boolean));\n }\n this.pollForm.innerHTML = `
          ${this.question}
          `;\n this.pollForm.id = this.divid + \"_form\";\n this.pollForm.method = \"get\";\n this.pollForm.action = \"\";\n this.pollForm.onsubmit = function () { return false; };\n this.pollFieldset = document.createElement(\"fieldset\");\n this.pollForm.appendChild(this.pollFieldset);\n for (var i = 0; i < this.optionList.length; i++) {\n let label = document.createElement(\"label\");\n label.classList.add(\"poll-option\");\n label.innerHTML += this.optionList[i]; // text content\n var radio = document.createElement(\"input\");\n var tmpid = _this.divid + \"_opt_\" + i;\n radio.id = tmpid;\n radio.name = this.divid + \"_group1\";\n radio.type = \"radio\";\n radio.value = i;\n radio.classList.add(\"poll-choice-input\");\n radio.addEventListener(\"click\", this.submitPoll.bind(this));\n label.prepend(radio);\n this.pollFieldset.appendChild(label);\n this.optsArray.push(radio);\n }\n\n if (this.comment) {\n this.renderTextField();\n }\n this.resultsDiv.id = this.divid + \"_results\";\n this.containerDiv.appendChild(this.pollForm);\n this.containerDiv.appendChild(this.resultsDiv);\n this.origElem.replaceWith(this.containerDiv);\n this.queueMathJax(this.containerDiv);\n }\n renderTextField() {\n this.textfield = document.createElement(\"input\");\n this.textfield.type = \"text\";\n this.textfield.classList.add(\"form-control\");\n this.textfield.style.width = \"300px\";\n this.textfield.name = this.divid + \"_comment\";\n this.textfield.placeholder = \"Any comments?\";\n this.pollForm.appendChild(this.textfield);\n this.pollForm.appendChild(document.createElement(\"br\"));\n }\n async submitPoll() {\n //checks the poll, sets localstorage and submits to the server\n var poll_val = null;\n for (var i = 0; i < this.optsArray.length; i++) {\n if (this.optsArray[i].checked) {\n poll_val = this.optsArray[i].value;\n break;\n }\n }\n if (poll_val === null) return;\n var comment_val = \"\";\n if (this.comment) {\n comment_val = this.textfield.value;\n }\n var act = \"\";\n if (comment_val !== \"\") {\n act = poll_val + \":\" + comment_val;\n } else {\n act = poll_val;\n }\n var eventInfo = { event: \"poll\", act: act, div_id: this.divid };\n // log the response to the database\n this.logBookEvent(eventInfo); // in bookfuncs.js\n // log the fact that the user has answered the poll to local storage\n let onlineResponse = \"Thanks, your response has been recorded\";\n let offlineResponse = \"Thanks, your answers are not recorded\";\n let onlineUpdate = \"Only Your last reponse is recorded\";\n let offlineUpdate = \"Thanks, your answers are not recorded\";\n localStorage.setItem(this.divid, \"true\");\n if (!document.getElementById(`${this.divid}_sent`)) {\n const span = document.createElement(\"span\");\n span.id = `${this.divid}_sent`;\n span.innerHTML = `${eBookConfig.useRunestoneServices ? onlineResponse : offlineResponse}`;\n this.pollForm.appendChild(span);\n } else {\n const sentEl = document.getElementById(`${this.divid}_sent`);\n sentEl.innerHTML = `${eBookConfig.useRunestoneServices ? onlineUpdate : offlineUpdate}`;\n }\n // show the results of the poll\n if (this.resultsViewer === \"all\") {\n var data = {};\n data.div_id = this.divid;\n data.course = eBookConfig.course;\n try {\n const params = new URLSearchParams(data);\n const resp = await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${params.toString()}`);\n const json = await resp.json();\n this.showPollResults(json);\n } catch (e) {\n this.indicate_component_ready();\n }\n }\n }\n showPollResults(results) {\n //displays the results returned by the server\n results = results.detail;\n var total = results[\"total\"];\n var optCounts = results[\"opt_counts\"];\n var div_id = results[\"div_id\"];\n var my_vote = results[\"my_vote\"];\n // restore current users vote\n if (my_vote > -1) {\n this.optsArray[my_vote].checked = true;\n }\n // show results summary if appropriate\n if (\n (this.resultsViewer === \"all\" &&\n localStorage.getItem(this.divid) === \"true\") ||\n eBookConfig.isInstructor\n ) {\n this.resultsDiv.innerHTML = `Results: ${total} responses

          `;\n var list = document.createElement(\"div\");\n list.classList.add(\"results-container\");\n for (var i = 0; i < this.optionList.length; i++) {\n var count;\n var percent;\n if (optCounts[i] > 0) {\n count = optCounts[i];\n percent = (count / total) * 100;\n } else {\n count = 0;\n percent = 0;\n }\n var text = count + \" (\" + Math.round(10 * percent) / 10 + \"%)\"; // round percent to 10ths\n let progressCounterEl = document.createElement(\"div\");\n progressCounterEl.className = \"progresscounter\";\n progressCounterEl.innerText = `${i + 1}. `;\n let progressBarEl = document.createElement(\"div\");\n let progressBarHTML = \"\";\n if (percent > 10) {\n progressBarHTML =\n \"
          \" +\n \"
          ` +\n \"\" +\n text +\n \"
          \";\n } else {\n progressBarHTML =\n \"
          \" +\n \"
          ` +\n \"\" +\n text +\n \"
          \";\n }\n progressBarEl.innerHTML = progressBarHTML;\n list.appendChild(progressCounterEl);\n list.appendChild(progressBarEl);\n }\n this.resultsDiv.appendChild(list);\n }\n this.indicate_component_ready();\n }\n disableOptions() { }\n async checkPollStorage() {\n //checks the localstorage to see if the poll has been completed already\n var _this = this;\n var len = localStorage.length;\n if (len > 0) {\n //If the poll has already been completed, show the results\n var data = {};\n data.div_id = this.divid;\n data.course = eBookConfig.course;\n try {\n const params = new URLSearchParams(data);\n const resp = await fetch(`${eBookConfig.new_server_prefix}/assessment/getpollresults?${params.toString()}`);\n const json = await resp.json();\n this.showPollResults(json);\n } catch (e) {\n this.indicate_component_ready();\n }\n } else {\n this.indicate_component_ready();\n }\n }\n}\n\n// Do not render poll data until login-complete event so we know instructor status\ndocument.addEventListener(\"runestone:login-complete\", function () {\n document.querySelectorAll(\"[data-component=poll]\").forEach(function (el, index) {\n try {\n window.componentMap[el.id] = new Poll({ orig: el });\n } catch (err) {\n console.log(`Error rendering Poll Problem ${el.id}\n Details: ${err}`);\n console.log(err.stack);\n }\n });\n});\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\nwindow.component_factory.poll = function (opts) {\n return new Poll(opts);\n};\n"],"names":["Poll","constructor","opts","super","orig","this","origElem","divid","id","children","childNodes","optionList","optsArray","comment","hasAttribute","resultsViewer","getAttribute","getQuestionText","getOptionText","renderPoll","checkPollStorage","caption","addCaption","firstAnswer","i","length","tagName","delimiter","outerHTML","temp","innerHTML","split","question","_this","push","containerDiv","document","createElement","pollForm","resultsDiv","classList","add","origClass","filter","Boolean","method","action","onsubmit","pollFieldset","appendChild","label","radio","tmpid","name","type","value","addEventListener","submitPoll","bind","prepend","renderTextField","replaceWith","queueMathJax","textfield","style","width","placeholder","poll_val","checked","comment_val","eventInfo","event","act","div_id","logBookEvent","localStorage","setItem","getElementById","eBookConfig","useRunestoneServices","span","data","course","params","URLSearchParams","resp","fetch","new_server_prefix","toString","json","showPollResults","e","indicate_component_ready","results","total","detail","optCounts","my_vote","getItem","isInstructor","list","count","percent","text","Math","round","progressCounterEl","className","innerText","progressBarEl","progressBarHTML","disableOptions","querySelectorAll","forEach","el","index","window","componentMap","err","console","log","stack","component_factory","poll"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/168.fe63e6dec2d06468.js.map.gz b/_static/168.fe63e6dec2d06468.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..b5ac8d9aadcfc001d20e1989b2b621daa9aa3a4c GIT binary patch literal 5511 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 J?1TYD004BU;ynNW literal 0 HcmV?d00001 diff --git a/_static/186.be52164d57f4b7e4.js b/_static/186.be52164d57f4b7e4.js new file mode 100644 index 0000000..5317e52 --- /dev/null +++ b/_static/186.be52164d57f4b7e4.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[186],{97186:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);var _common_js_runestonebase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(78673),jexcel__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(69424),jexcel__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(jexcel__WEBPACK_IMPORTED_MODULE_1__);class SpreadSheet extends _common_js_runestonebase__WEBPACK_IMPORTED_MODULE_0__.A{constructor(opts){super(opts);let orig=opts.orig;this.div_id=orig.id,this.sheet_id=`${this.div_id}_sheet`,this.data=eval(`${this.div_id}_data`),this.autograde=$(orig).data("autograde"),this.suffix=window[`${this.div_id}_asserts`],this.mindimensions=$(orig).data("mindimensions"),this.colwidths=$(orig).data("colwidths"),this.coltitles=eval($(orig).data("coltitles")),this.maxHeight=50,this.renderSheet(),this.autograde&&(this.addAutoGradeButton(),this.addOutput()),this.caption="Spreadsheet",this.divid=this.div_id,this.containerDiv=document.getElementById(this.div_id),this.addCaption("runestone"),this.indicate_component_ready()}renderSheet(){let t=document.getElementById(this.sheet_id),e={data:this.data,tableHeight:this.maxHeight};if(this.mindimensions&&(e.minDimensions=this.mindimensions),e.columns=[],this.colwidths)for(let t of this.colwidths)e.columns.push({width:t});if(this.coltitles)for(let t in this.coltitles)e.columns[t]?e.columns[t].title=unescape(this.coltitles[t]):e.columns.push({title:this.coltitles[t]});if(this.table=jexcel__WEBPACK_IMPORTED_MODULE_1___default()(t,e),this.suffix)for(let t of this.suffix){let e,i,s,o;[e,i,s,o]=t.split(/\s+/),$(`#${this.div_id}_sheet`).find(this.getCellSelector(i)).css("background-color","#d4e3ff")}}addAutoGradeButton(){let t=document.getElementById(this.div_id);var e=document.createElement("button");$(e).text("Check"),$(e).addClass("btn btn-success run-button"),t.appendChild(e),this.gradeButton=e,$(e).click(this.doAutoGrade.bind(this)),$(e).attr("type","button"),$(e).css("display","block")}addOutput(){this.output=document.createElement("pre"),this.output.id=`${this.div_id}_stdout`,$(this.output).css("visibility","hidden"),document.getElementById(this.div_id).appendChild(this.output)}doAutoGrade(){let t=this.suffix;this.passed=0,this.failed=0;let e="";t=t.filter((function(t){return t.indexOf("assert")>-1}));for(let i of t){let t,s,o,n;[t,s,o,n]=i.split(/\s+/),e+=this.testOneAssert(s,o,n),e+="\n"}let i=100*this.passed/(this.passed+this.failed);i=i.toLocaleString(void 0,{maximumFractionDigits:2}),e+=`You passed ${this.passed} out of ${this.passed+this.failed} tests for ${i}%`,this.logBookEvent({event:"unittest",div_id:this.div_id,course:eBookConfig.course,act:`percent:${i}:passed:${this.passed}:failed:${this.failed}`}),$(this.output).css("visibility","visible"),$(this.output).text(e)}testOneAssert(t,e,i){let s=this.getCellDisplayValue(t),o="";return{"==":function(t,e){return t==e},"!=":function(t,e){return t!=e},">":function(t,e){return t>e},"<":function(t,e){return t>e}}[e](s,i)?(o=`Pass: ${s} ${e} ${i} in ${t}`,$(`#${this.div_id}_sheet`).find(this.getCellSelector(t)).css("background-color","#ccffcc"),this.passed++):(o=`Failed ${s} ${e} ${i} in cell ${t}`,$(`#${this.div_id}_sheet`).find(this.getCellSelector(t)).css("background-color","#ff9980"),this.failed++),o}getCellSource(t){return this.table.getValue(t)}getCellDisplayValue(t){return this.table.el.querySelector(this.getCellSelector(t)).innerText}getCellSelector(t){let e=t.match(/\$?([A-Z]+)\$?([0-9]+)/);return`[data-x="${this.columnToIndex(e[1])}"][data-y="${e[2]-1}"]`}columnToIndex(t){let e=0;for(let i=0,s=t.length-1;iDlQj{#^a-BI(9Fx0?ecxw6tH_~~%Zvxo>XRJe$hn6}>Ib)j zS&`g+gvmh6Q;|R-bM|HSUw;ip)JcncMux-Qi=&afI620@F7dn~K|7&Wo%QA-EMl;| zh5!$#$Ykz$Em{VD7CZybqwM8k1KG*Q1_iW#=Vu)+5c9c6ywACp6$#`LU7Ywip89xk zc6~bd*?V(&ef94B#kqHRb^hV)g}3i{Y=aSU{Nm{Nduo4%hXCU3$9r3jADtW?9Ddbt zFNDZ1V!26;laQ~_K>I=L=XvKQ&A<P8Weluse!Cij0U<=5&!4 zDOAt>7%hm5Pnmjk)Kg#1c2Ncn{n)65Tn?GR;y>T|?u=vF0|7g59?*ga1|aX(yFiMayoneoU7&ryocA;~$$ zyry}DS8ESMe9uEUTNiHVEkVg;47myIiL_x_v=X2D4?h8)&Ln%jZzvho5Hej+vYvx) zza@qchNnpTQPIu{i3M&%!|j zg(4_08Pb`8yofGx=q! zb$3x4*g_@NZTiWU{v-yIQFk@LWuHgnY4I_opeX0dc6cg;mQ-PjIdX@iwT_?>&Wm=t zBcje4uQ_MHa-qqtENSCS(-SQ{Jn5|Q8a+cfdewe$v;b52#!ADQP86W-x(}M=J`rsB zq_fEW2OuMqNE=oraYI@vhORN#+|F&$A65?|CY?Nuxg>j^^4&dZ?~w7cjp#w02y0^; z#r7CL9N$0;8n!s4PLSusnjof5Gf^aA7h@EeWn0g}L-;<5ELxVE=I3iVuj+Tbc3>$Q zU@J?gq|vt4Xwm)-0qRJEWnv9x5ZqcSDkP~%QRt1LGU?!NH!p$!5YBOKy7h5eI)0ks za13TV4oRKe>C$NiMqd!~;I{HmG=VvjI!&~;D`iG3`IrKxqcLMtC~rcJ74RPwGZxC- zvIQrm6hgmk4ILq-o_HhaY+3>`MCKR`w*)H}?s(289NR#7G2>wf%EhlK%1W}@ipy3` znliWg(X6plZHSOnARPHTR&RRi0kf<=9>KngCGJBK6-l6RPSQmNvdC~;6~e*8RfL;K zuNsTK?Dk4Z`}G)bJqDG1)$w-HA65?|##fskc8!M;QS>T-Q>~I{Scjs@EVv*$(`U~XWw2RO7eLzf1UX{uya1;GItM3ZEXCz zC^|-Arz)j+D?6BC71j#1ZM5vD2=Wdl0fl(^&uaI_VtOXT?Zutyngysou2m#lDsjs; zC3V}IDG)`LgA3}|KqL{~HVnx|m)$YmQv#(#8F7st?y9e@@u;R&{*6oe-}_L%#9%!U z)w2z>TrCqKq0LR9t7THb)VZ0j-~6~hpr*D^jb$2WVKHX8%f>=5ZCZ;lC~fPTt^98^ z|K&FJOU3=+3*2%DBkV0sUlGB^*O)FBiiL ze-@BEF8$l)G*9qe_8!}=e9AR@6>)0r%V363vh#`zPrHANcBy{c@1Ee}9<5q#JXANP z?gO)`^qE`2d+|mg8G&JML`!RAq#l(N3=c*KYSw66uF5vH_m^;oP>S8}#E?wotlR7J zAL^Gr-(@{J@3J06bh-59%t^&PIXJR&`W>-O&j#lguYdgM&A)zrd-==N^{?-4-hcS* z;B>J=EE8gLGiCYm zraZE!13qSR1@z7SU#P3S1}PiAc;D65ZXmnkxXo9vYLh_Om)YaOe6To;^-Dh;nk#cS zVhP;0Kk*dS1iHBBg!)_)*gO~<8DC@>Laez;Be1W07hY!qn`~aAG)~B;q_gek9PsWR zYXrdQqITN~-q0k@3tpfo#ecTh9*nW|7`(_=J^6^2>uoHyK;+%VbXpZ)8@BCwT5#6N zazy+8*xP&7$@O$%8dFTfhj(vT@5PZbf#(Okqr>p|adbF2hC}DG`ZP%Y10Hw|u@eyh E0QRVBE&u=k literal 0 HcmV?d00001 diff --git a/_static/186.be52164d57f4b7e4.js.map b/_static/186.be52164d57f4b7e4.js.map new file mode 100644 index 0000000..8e0f8db --- /dev/null +++ b/_static/186.be52164d57f4b7e4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"186.be52164d57f4b7e4.js","mappings":"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","sources":["webpack://WebComponents/./runestone/spreadsheet/js/spreadsheet.js"],"sourcesContent":["\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase\";\nimport jexcel from \"jexcel\";\nimport \"../css/spreadsheet.css\";\nimport \"../css/spreadsheet.css\";\nimport \"jexcel/dist/jexcel.css\";\n\nclass SpreadSheet extends RunestoneBase {\n constructor(opts) {\n super(opts);\n let orig = opts.orig;\n this.div_id = orig.id;\n this.sheet_id = `${this.div_id}_sheet`;\n this.data = eval(`${this.div_id}_data`);\n this.autograde = $(orig).data(\"autograde\");\n this.suffix = window[`${this.div_id}_asserts`];\n this.mindimensions = $(orig).data(\"mindimensions\");\n this.colwidths = $(orig).data(\"colwidths\");\n this.coltitles = eval($(orig).data(\"coltitles\"));\n this.maxHeight = 50;\n // Render the components\n this.renderSheet();\n\n if (this.autograde) {\n this.addAutoGradeButton();\n this.addOutput();\n }\n\n this.caption = \"Spreadsheet\";\n this.divid = this.div_id;\n this.containerDiv = document.getElementById(this.div_id);\n this.addCaption(\"runestone\");\n this.indicate_component_ready();\n }\n\n renderSheet() {\n let div = document.getElementById(this.sheet_id);\n let opts = { data: this.data, tableHeight: this.maxHeight };\n if (this.mindimensions) {\n opts.minDimensions = this.mindimensions;\n }\n opts.columns = [];\n if (this.colwidths) {\n for (let w of this.colwidths) {\n opts.columns.push({ width: w });\n }\n }\n if (this.coltitles) {\n for (let i in this.coltitles) {\n if (opts.columns[i]) {\n opts.columns[i].title = unescape(this.coltitles[i]);\n } else {\n opts.columns.push({ title: this.coltitles[i] });\n }\n }\n }\n\n this.table = jexcel(div, opts);\n\n // Set background of cells that are autograded\n if (this.suffix) {\n for (let test of this.suffix) {\n let assert, loc, oper, expected;\n [assert, loc, oper, expected] = test.split(/\\s+/);\n $(`#${this.div_id}_sheet`)\n .find(this.getCellSelector(loc))\n .css(\"background-color\", \"#d4e3ff\");\n }\n }\n }\n\n addAutoGradeButton() {\n let div = document.getElementById(this.div_id);\n var butt = document.createElement(\"button\");\n $(butt).text(\"Check\");\n $(butt).addClass(\"btn btn-success run-button\");\n div.appendChild(butt);\n this.gradeButton = butt;\n $(butt).click(this.doAutoGrade.bind(this));\n $(butt).attr(\"type\", \"button\");\n $(butt).css(\"display\", \"block\");\n }\n\n addOutput() {\n this.output = document.createElement(\"pre\");\n this.output.id = `${this.div_id}_stdout`;\n $(this.output).css(\"visibility\", \"hidden\");\n let div = document.getElementById(this.div_id);\n div.appendChild(this.output);\n }\n\n doAutoGrade() {\n let tests = this.suffix;\n this.passed = 0;\n this.failed = 0;\n // Tests should be of the form\n // assert cell oper value for example\n // assert A4 == 3\n let result = \"\";\n tests = tests.filter(function (s) {\n return s.indexOf(\"assert\") > -1;\n });\n for (let test of tests) {\n let assert, loc, oper, expected;\n [assert, loc, oper, expected] = test.split(/\\s+/);\n result += this.testOneAssert(loc, oper, expected);\n result += \"\\n\";\n }\n let pct = (100 * this.passed) / (this.passed + this.failed);\n pct = pct.toLocaleString(undefined, { maximumFractionDigits: 2 });\n result += `You passed ${this.passed} out of ${\n this.passed + this.failed\n } tests for ${pct}%`;\n this.logBookEvent({\n event: \"unittest\",\n div_id: this.div_id,\n course: eBookConfig.course,\n act: `percent:${pct}:passed:${this.passed}:failed:${this.failed}`,\n });\n $(this.output).css(\"visibility\", \"visible\");\n $(this.output).text(result);\n }\n\n testOneAssert(cell, oper, expected) {\n let actual = this.getCellDisplayValue(cell);\n const operators = {\n \"==\": function (operand1, operand2) {\n return operand1 == operand2;\n },\n \"!=\": function (operand1, operand2) {\n return operand1 != operand2;\n },\n \">\": function (operand1, operand2) {\n return operand1 > operand2;\n },\n \"<\": function (operand1, operand2) {\n return operand1 > operand2;\n },\n };\n\n let res = operators[oper](actual, expected);\n let output = \"\";\n if (res) {\n output = `Pass: ${actual} ${oper} ${expected} in ${cell}`;\n $(`#${this.div_id}_sheet`)\n .find(this.getCellSelector(cell))\n .css(\"background-color\", \"#ccffcc\");\n this.passed++;\n } else {\n output = `Failed ${actual} ${oper} ${expected} in cell ${cell}`;\n $(`#${this.div_id}_sheet`)\n .find(this.getCellSelector(cell))\n .css(\"background-color\", \"#ff9980\");\n this.failed++;\n }\n return output;\n }\n\n // If the cell contains a formula, this call will return the formula not the computed value\n getCellSource(cell) {\n return this.table.getValue(cell);\n }\n\n // If the cell contains a formula this call will return the computed value\n getCellDisplayValue(cell) {\n let res = this.table.el.querySelector(this.getCellSelector(cell));\n return res.innerText;\n }\n\n getCellSelector(cell) {\n let parts = cell.match(/\\$?([A-Z]+)\\$?([0-9]+)/);\n let x = this.columnToIndex(parts[1]);\n let y = parts[2] - 1;\n return `[data-x=\"${x}\"][data-y=\"${y}\"]`;\n }\n columnToIndex(colName) {\n // Convert the column name to a number A = 0 AA = 26 BA = 52, etc\n let base = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n let result = 0;\n\n for (\n let i = 0, j = colName.length - 1;\n i < colName.length;\n i += 1, j -= 1\n ) {\n result += Math.pow(base.length, j) * (base.indexOf(colName[i]) + 1);\n }\n\n return result - 1;\n }\n}\n\n$(document).on(\"runestone:login-complete\", function () {\n $(\"[data-component=spreadsheet]\").each(function (index) {\n // MC\n var opts = {\n orig: this,\n useRunestoneServices: eBookConfig.useRunestoneServices,\n };\n try {\n window.componentMap[this.id] = new SpreadSheet(opts);\n } catch (err) {\n console.log(`Error rendering SpreadSheet Problem ${this.id}\n Details: ${err}`);\n console.log(err.stack);\n }\n });\n});\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\nwindow.component_factory.spreadsheet = function (opts) {\n return new SpreadSheet(opts);\n};\n"],"names":["SpreadSheet","constructor","opts","super","orig","this","div_id","id","sheet_id","data","eval","autograde","$","suffix","window","mindimensions","colwidths","coltitles","maxHeight","renderSheet","addAutoGradeButton","addOutput","caption","divid","containerDiv","document","getElementById","addCaption","indicate_component_ready","div","tableHeight","minDimensions","columns","w","push","width","i","title","unescape","table","test","assert","loc","oper","expected","split","find","getCellSelector","css","butt","createElement","text","addClass","appendChild","gradeButton","click","doAutoGrade","bind","attr","output","tests","passed","failed","result","filter","s","indexOf","testOneAssert","pct","toLocaleString","undefined","maximumFractionDigits","logBookEvent","event","course","eBookConfig","act","cell","actual","getCellDisplayValue","operand1","operand2","getCellSource","getValue","el","querySelector","innerText","parts","match","columnToIndex","colName","j","length","Math","pow","base","on","each","index","useRunestoneServices","componentMap","err","console","log","stack","component_factory","spreadsheet"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/186.be52164d57f4b7e4.js.map.gz b/_static/186.be52164d57f4b7e4.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..9e5d7d55f6554411cf6bd4d933908f4ab3271225 GIT binary patch literal 4232 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"use strict";var r=n(51605),o=n(91344).filter;r({target:"Array",proto:!0,forced:!n(45634)("filter")},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},119:function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(95093))},1221:function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(95093))},1466:(e,t,n)=>{var r=n(30281),o=n(92074),i=n(78420),a=n(83062),s=n(56492),l=n(69965),u=function(){},c=[],h=s("Reflect","construct"),f=/^\s*(?:class|function)\b/,d=r(f.exec),m=!f.exec(u),p=function(e){if(!i(e))return!1;try{return h(u,c,e),!0}catch(e){return!1}},y=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return m||!!d(f,l(e))}catch(e){return!0}};y.sham=!0,e.exports=!h||o((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?y:p},1632:function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(95093))},3035:function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var o={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?o[n][2]?o[n][2]:o[n][1]:r?o[n][0]:o[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(95093))},3101:(e,t,n)=>{var r=n(51605),o=n(65077),i=n(15816),a=n(5476),s=n(97632),l=n(52057);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=s.f,u=i(r),c={},h=0;u.length>h;)void 0!==(n=o(r,t=u[h++]))&&l(c,t,n);return c}})},3322:function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var o=t.words[r];return 1===r.length?n?o[0]:o[1]:e+" "+t.correctGrammaticalCase(e,o)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(95093))},3508:function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(95093))},3727:(e,t,n)=>{var r=n(47061).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},3883:(e,t,n)=>{var r=n(51605),o=n(56492),i=n(36490),a=n(95362),s=n(50002),l=n(14569),u=s("string-to-symbol-registry"),c=s("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!l},{for:function(e){var t=a(e);if(i(u,t))return u[t];var n=o("Symbol")(t);return u[t]=n,c[n]=t,n}})},4038:(e,t,n)=>{n(51605)({target:"Number",stat:!0},{isInteger:n(83496)})},4632:(e,t,n)=>{n(51605)({target:"Object",stat:!0},{setPrototypeOf:n(39686)})},4657:(e,t,n)=>{"use strict";var r=n(51605),o=n(77804).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},5086:(e,t,n)=>{var r=n(43129),o=n(7485),i=n(94972);r||o(Object.prototype,"toString",i,{unsafe:!0})},5225:(e,t,n)=>{var r=n(82072);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5476:(e,t,n)=>{var r=n(48664),o=n(71229);e.exports=function(e){return r(o(e))}},5549:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},5784:function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function r(e){return e>1&&e<5}function o(e,t,n,o){var i=e+" ";switch(n){case"s":return t||o?"pár sekúnd":"pár sekundami";case"ss":return t||o?i+(r(e)?"sekundy":"sekúnd"):i+"sekundami";case"m":return t?"minúta":o?"minútu":"minútou";case"mm":return t||o?i+(r(e)?"minúty":"minút"):i+"minútami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?i+(r(e)?"hodiny":"hodín"):i+"hodinami";case"d":return t||o?"deň":"dňom";case"dd":return t||o?i+(r(e)?"dni":"dní"):i+"dňami";case"M":return t||o?"mesiac":"mesiacom";case"MM":return t||o?i+(r(e)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return t||o?"rok":"rokom";case"yy":return t||o?i+(r(e)?"roky":"rokov"):i+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:case 4:case 5:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(95093))},5959:(e,t,n)=>{"use strict";var r=n(43610).f,o=n(53105),i=n(92760),a=n(46885),s=n(65190),l=n(88406),u=n(52929),c=n(56409),h=n(48296),f=n(93524),d=n(65077),m=n(82014).fastKey,p=n(99206),y=p.set,v=p.getterFor;e.exports={getConstructor:function(e,t,n,c){var h=e((function(e,r){s(e,f),y(e,{type:t,index:o(null),first:void 0,last:void 0,size:0}),d||(e.size=0),l(r)||u(r,e[c],{that:e,AS_ENTRIES:n})})),f=h.prototype,p=v(t),g=function(e,t,n){var r,o,i=p(e),a=w(e,t);return a?a.value=n:(i.last=a={index:o=m(t,!0),key:t,value:n,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),d?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},w=function(e,t){var n,r=p(e),o=m(t);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return i(f,{clear:function(){for(var e=p(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,d?e.size=0:this.size=0},delete:function(e){var t=this,n=p(t),r=w(t,e);if(r){var o=r.next,i=r.previous;delete n.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),n.first==r&&(n.first=o),n.last==r&&(n.last=i),d?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=p(this),r=a(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!w(this,e)}}),i(f,n?{get:function(e){var t=w(this,e);return t&&t.value},set:function(e,t){return g(this,0===e?0:e,t)}}:{add:function(e){return g(this,e=0===e?0:e,e)}}),d&&r(f,"size",{get:function(){return p(this).size}}),h},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);c(e,t,(function(e,t){y(this,{type:r,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?h("keys"==t?n.key:"values"==t?n.value:[n.key,n.value],!1):(e.target=void 0,h(void 0,!0))}),n?"entries":"values",!n,!0),f(t)}}},6048:(e,t,n)=>{"use strict";var r=n(12071).PROPER,o=n(7485),i=n(73938),a=n(95362),s=n(92074),l=n(10353),u="toString",c=RegExp.prototype[u],h=s((function(){return"/a/b"!=c.call({source:"a",flags:"b"})})),f=r&&c.name!=u;(h||f)&&o(RegExp.prototype,u,(function(){var e=i(this);return"/"+a(e.source)+"/"+a(l(e))}),{unsafe:!0})},6539:(e,t,n)=>{var r=n(79328),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},6648:(e,t,n)=>{"use strict";var r=n(65077),o=n(18679),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!a(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},6845:(e,t,n)=>{var r,o,i=n(30200),a=n(47061),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(r=c.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},6926:e=>{e.exports=!1},7168:(e,t,n)=>{var r=n(92074);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},7306:function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(95093))},7473:(e,t,n)=>{var r=n(78420),o=String,i=TypeError;e.exports=function(e){if("object"==typeof e||r(e))return e;throw i("Can't set "+o(e)+" as a prototype")}},7485:(e,t,n)=>{var r=n(78420),o=n(43610),i=n(48218),a=n(59430);e.exports=function(e,t,n,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:t;if(r(n)&&i(n,u,s),s.global)l?e[t]=n:a(t,n);else{try{s.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=n:o.f(e,t,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},7809:(e,t,n)=>{var r=n(30281);e.exports=r(1..valueOf)},7899:(e,t,n)=>{var r=n(51605),o=n(92612),i=n(91641);r({target:"Object",stat:!0,forced:n(92074)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},7918:(e,t,n)=>{n(53656)},8235:function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(95093))},8369:(e,t,n)=>{var r=n(30200),o=n(78420),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},9304:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);t.f=o?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},10121:(e,t,n)=>{n(13811)},10140:(e,t,n)=>{"use strict";var r=n(79328),o=n(95362),i=n(71229),a=RangeError;e.exports=function(e){var t=o(i(this)),n="",s=r(e);if(s<0||s==1/0)throw a("Wrong number of repetitions");for(;s>0;(s>>>=1)&&(t+=t))1&s&&(n+=t);return n}},10353:(e,t,n)=>{var r=n(72368),o=n(36490),i=n(47658),a=n(16844),s=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in s||o(e,"flags")||!i(s,e)?t:r(a,e)}},10516:(e,t,n)=>{"use strict";var r=n(91344).forEach,o=n(92349)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},10557:(e,t,n)=>{"use strict";var r=n(51605),o=n(30281),i=n(18679),a=o([].reverse),s=[1,2];r({target:"Array",proto:!0,forced:String(s)===String(s.reverse())},{reverse:function(){return i(this)&&(this.length=this.length),a(this)}})},10678:(e,t,n)=>{var r=n(51605),o=n(92074),i=n(5476),a=n(97632).f,s=n(65077),l=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!s||l,sham:!s},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},11025:function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(95093))},11470:function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}(n(95093))},11713:function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(95093))},11885:function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(95093))},12071:(e,t,n)=>{var r=n(65077),o=n(36490),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},12091:(e,t,n)=>{var r=n(51605),o=n(72368),i=n(65335),a=n(73938),s=n(66060),l=n(97632),u=n(97970);r({target:"Reflect",stat:!0},{get:function e(t,n){var r,c,h=arguments.length<3?t:arguments[2];return a(t)===h?t[n]:(r=l.f(t,n))?s(r)?r.value:void 0===r.get?void 0:o(r.get,h):i(c=u(t))?e(c,n,h):void 0}})},12192:(e,t,n)=>{var r=n(92074),o=n(30200).RegExp,i=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),a=i||r((function(){return!o("a","y").sticky})),s=i||r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));e.exports={BROKEN_CARET:s,MISSED_STICKY:a,UNSUPPORTED_Y:i}},12307:(e,t,n)=>{"use strict";n.d(t,{A:()=>pE});var r={};n.r(r),n.d(r,{arrayAvg:()=>j,arrayEach:()=>P,arrayFilter:()=>H,arrayFlatten:()=>F,arrayMap:()=>N,arrayMax:()=>Y,arrayMin:()=>I,arrayReduce:()=>A,arraySum:()=>x,arrayUnique:()=>W,extendArray:()=>L,pivot:()=>D,to2dArray:()=>R});var o={};n.r(o),n.d(o,{clone:()=>K,createObjectPropListener:()=>re,deepClone:()=>X,deepExtend:()=>q,deepObjectSize:()=>ne,defineGetter:()=>Z,duckSchema:()=>U,extend:()=>G,getProperty:()=>te,hasOwnProperty:()=>oe,inherit:()=>z,isObject:()=>Q,isObjectEqual:()=>$,mixin:()=>J,objectEach:()=>ee});var i={};n.r(i),n.d(i,{isChrome:()=>Re,isEdge:()=>Le,isIE:()=>De,isIE8:()=>Ae,isIE9:()=>He,isMSBrowser:()=>Ne,isMobileBrowser:()=>Pe,isSafari:()=>xe,setBrowserMeta:()=>Oe});var a={};n.r(a),n.d(a,{cancelAnimationFrame:()=>Ze,getComparisonFunction:()=>rt,hasCaptionProblem:()=>nt,isClassListSupported:()=>Je,isGetComputedStyleSupported:()=>Qe,isPassiveEventSupported:()=>ot,isTextContentSupported:()=>$e,isTouchSupported:()=>et,isWebComponentSupportedNatively:()=>tt,requestAnimationFrame:()=>Ke});var s={};n.r(s),n.d(s,{HTML_CHARACTERS:()=>St,addClass:()=>wt,addEvent:()=>Wt,clearTextSelection:()=>Gt,closest:()=>st,closestDown:()=>lt,empty:()=>Mt,fastInnerHTML:()=>Ct,fastInnerText:()=>Tt,getCaretPosition:()=>Vt,getComputedStyle:()=>xt,getCssTransform:()=>Qt,getParent:()=>at,getScrollLeft:()=>At,getScrollTop:()=>Dt,getScrollableElement:()=>Ht,getScrollbarWidth:()=>Xt,getSelectionEndPosition:()=>Ut,getSelectionText:()=>zt,getStyle:()=>Pt,getTrimmingContainer:()=>Nt,getWindowScrollLeft:()=>Lt,getWindowScrollTop:()=>Rt,hasClass:()=>gt,hasHorizontalScrollbar:()=>Jt,hasVerticalScrollbar:()=>Kt,index:()=>dt,innerHeight:()=>jt,innerWidth:()=>Ft,isChildOf:()=>ut,isChildOfWebComponentTable:()=>ct,isInput:()=>en,isOutsideInput:()=>tn,isVisible:()=>Et,offset:()=>Ot,outerHeight:()=>It,outerWidth:()=>Yt,overlayContainsElement:()=>mt,polymerUnwrap:()=>ft,polymerWrap:()=>ht,removeClass:()=>bt,removeEvent:()=>Bt,removeTextNodes:()=>_t,resetCssTransform:()=>Zt,selectElementIfAllowed:()=>nn,setCaretPosition:()=>qt,setOverlayPosition:()=>$t});var l={};n.r(l),n.d(l,{curry:()=>cn,curryRight:()=>hn,debounce:()=>sn,isFunction:()=>rn,partial:()=>un,pipe:()=>ln,throttle:()=>on,throttleAfterHits:()=>an});var u={};n.r(u),n.d(u,{_injectProductInfo:()=>_r,isDefined:()=>ar,isEmpty:()=>lr,isRegExp:()=>ur,isUndefined:()=>sr,stringify:()=>ir});var c={};n.r(c),n.d(c,{isImmediatePropagationStopped:()=>Fr,isLeftClick:()=>zr,isRightClick:()=>Ur,pageX:()=>Br,pageY:()=>Vr,stopImmediatePropagation:()=>jr,stopPropagation:()=>Wr});var h={};n.r(h),n.d(h,{equalsIgnoreCase:()=>Qr,isPercentValue:()=>eo,randomString:()=>Zr,stripTags:()=>ro,substitute:()=>to,toUpperCaseFirst:()=>$r});var f={};n.r(f),n.d(f,{KEY_CODES:()=>lo,isCtrlKey:()=>ho,isCtrlMetaKey:()=>fo,isKey:()=>mo,isMetaKey:()=>co,isPrintableChar:()=>uo});var d={};n.r(d),n.d(d,{isNumeric:()=>Oa,rangeEach:()=>Ra,rangeEachReverse:()=>La,valueAccordingPercent:()=>Da});var m={};n.r(m),n.d(m,{getNormalizedDate:()=>fl});var p={};n.r(p),n.d(p,{columnFactory:()=>Bl});var y={};n.r(y),n.d(y,{cellMethodLookupFactory:()=>Ql,createEmptySpreadsheetData:()=>Jl,createSpreadsheetData:()=>Xl,createSpreadsheetObjectData:()=>Kl,spreadsheetColumnIndex:()=>ql,spreadsheetColumnLabel:()=>Gl,translateRowsToColumns:()=>$l});var v={};n.r(v),n.d(v,{_dataToHTML:()=>mu,htmlToGridSettings:()=>yu,instanceToHTML:()=>du});var g={};n.r(g),n.d(g,{CONTEXTMENU_ITEMS_ADD_COMMENT:()=>uc,CONTEXTMENU_ITEMS_ALIGNMENT:()=>dc,CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM:()=>bc,CONTEXTMENU_ITEMS_ALIGNMENT_CENTER:()=>pc,CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY:()=>vc,CONTEXTMENU_ITEMS_ALIGNMENT_LEFT:()=>mc,CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE:()=>wc,CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT:()=>yc,CONTEXTMENU_ITEMS_ALIGNMENT_TOP:()=>gc,CONTEXTMENU_ITEMS_BORDERS:()=>_c,CONTEXTMENU_ITEMS_BORDERS_BOTTOM:()=>Sc,CONTEXTMENU_ITEMS_BORDERS_LEFT:()=>Cc,CONTEXTMENU_ITEMS_BORDERS_RIGHT:()=>kc,CONTEXTMENU_ITEMS_BORDERS_TOP:()=>Mc,CONTEXTMENU_ITEMS_CLEAR_COLUMN:()=>nc,CONTEXTMENU_ITEMS_COPY:()=>rc,CONTEXTMENU_ITEMS_CUT:()=>oc,CONTEXTMENU_ITEMS_EDIT_COMMENT:()=>cc,CONTEXTMENU_ITEMS_FREEZE_COLUMN:()=>ic,CONTEXTMENU_ITEMS_HIDE_COLUMN:()=>Rc,CONTEXTMENU_ITEMS_HIDE_ROW:()=>Dc,CONTEXTMENU_ITEMS_INSERT_LEFT:()=>Ku,CONTEXTMENU_ITEMS_INSERT_RIGHT:()=>Ju,CONTEXTMENU_ITEMS_MERGE_CELLS:()=>sc,CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD:()=>Oc,CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD:()=>Ec,CONTEXTMENU_ITEMS_NO_ITEMS:()=>Gu,CONTEXTMENU_ITEMS_READ_ONLY:()=>tc,CONTEXTMENU_ITEMS_READ_ONLY_COMMENT:()=>fc,CONTEXTMENU_ITEMS_REDO:()=>ec,CONTEXTMENU_ITEMS_REMOVE_BORDERS:()=>Tc,CONTEXTMENU_ITEMS_REMOVE_COLUMN:()=>Qu,CONTEXTMENU_ITEMS_REMOVE_COMMENT:()=>hc,CONTEXTMENU_ITEMS_REMOVE_ROW:()=>$u,CONTEXTMENU_ITEMS_ROW_ABOVE:()=>qu,CONTEXTMENU_ITEMS_ROW_BELOW:()=>Xu,CONTEXTMENU_ITEMS_SHOW_COLUMN:()=>Lc,CONTEXTMENU_ITEMS_SHOW_ROW:()=>Ac,CONTEXTMENU_ITEMS_UNDO:()=>Zu,CONTEXTMENU_ITEMS_UNFREEZE_COLUMN:()=>ac,CONTEXTMENU_ITEMS_UNMERGE_CELLS:()=>lc,CONTEXT_MENU_ITEMS_NAMESPACE:()=>zu,FILTERS_BUTTONS_CANCEL:()=>ch,FILTERS_BUTTONS_CLEAR:()=>lh,FILTERS_BUTTONS_OK:()=>uh,FILTERS_BUTTONS_PLACEHOLDER_SEARCH:()=>hh,FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE:()=>dh,FILTERS_BUTTONS_PLACEHOLDER_VALUE:()=>fh,FILTERS_BUTTONS_SELECT_ALL:()=>sh,FILTERS_CONDITIONS_AFTER:()=>$c,FILTERS_CONDITIONS_BEFORE:()=>Qc,FILTERS_CONDITIONS_BEGINS_WITH:()=>Fc,FILTERS_CONDITIONS_BETWEEN:()=>Kc,FILTERS_CONDITIONS_BY_VALUE:()=>Uc,FILTERS_CONDITIONS_CONTAINS:()=>Bc,FILTERS_CONDITIONS_EMPTY:()=>xc,FILTERS_CONDITIONS_ENDS_WITH:()=>Wc,FILTERS_CONDITIONS_EQUAL:()=>Ic,FILTERS_CONDITIONS_GREATER_THAN:()=>zc,FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL:()=>Gc,FILTERS_CONDITIONS_LESS_THAN:()=>qc,FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL:()=>Xc,FILTERS_CONDITIONS_NAMESPACE:()=>Nc,FILTERS_CONDITIONS_NONE:()=>Pc,FILTERS_CONDITIONS_NOT_BETWEEN:()=>Jc,FILTERS_CONDITIONS_NOT_CONTAIN:()=>Vc,FILTERS_CONDITIONS_NOT_EMPTY:()=>Yc,FILTERS_CONDITIONS_NOT_EQUAL:()=>jc,FILTERS_CONDITIONS_TODAY:()=>Zc,FILTERS_CONDITIONS_TOMORROW:()=>eh,FILTERS_CONDITIONS_YESTERDAY:()=>th,FILTERS_DIVS_FILTER_BY_CONDITION:()=>nh,FILTERS_DIVS_FILTER_BY_VALUE:()=>rh,FILTERS_LABELS_CONJUNCTION:()=>oh,FILTERS_LABELS_DISJUNCTION:()=>ih,FILTERS_NAMESPACE:()=>Hc,FILTERS_VALUES_BLANK_CELLS:()=>ah});var w={};n.r(w),n.d(w,{Loose:()=>Yw,Strict:()=>Fw});var b={};n.r(b),n.d(b,{OPERATION_NAME:()=>RS,operate:()=>DS,prepare:()=>LS});var _={};n.r(_),n.d(_,{OPERATION_NAME:()=>AS,operate:()=>HS});var M={};n.r(M),n.d(M,{OPERATION_NAME:()=>PS,operate:()=>xS});var k={};n.r(k),n.d(k,{OPERATION_NAME:()=>IS,operate:()=>jS});var S={};n.r(S),n.d(S,{OPERATION_NAME:()=>WS,operate:()=>BS});var C={};function T(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);ted,AutoFill:()=>ud,AutoRowSize:()=>vd,Base:()=>Rf,BindRowsWithHeaders:()=>Jw,CollapsibleColumns:()=>rb,ColumnSorting:()=>vm,ColumnSummary:()=>db,Comments:()=>Jm,ContextMenu:()=>Hp,CopyPaste:()=>Zp,CustomBorders:()=>py,DragToScroll:()=>ky,DropdownMenu:()=>kb,ExportFile:()=>zb,Filters:()=>Xk,Formulas:()=>pC,GanttChart:()=>PC,HeaderTooltips:()=>BC,HiddenColumns:()=>qT,HiddenRows:()=>eE,ManualColumnFreeze:()=>Ay,ManualColumnMove:()=>cv,ManualColumnResize:()=>gv,ManualRowMove:()=>Jv,ManualRowResize:()=>og,MergeCells:()=>Pg,MultiColumnSorting:()=>o_,MultipleSelectionHandles:()=>Bg,NestedHeaders:()=>nT,NestedRows:()=>jT,ObserveChanges:()=>tw,PersistentState:()=>jf,Search:()=>cw,TouchScroll:()=>vw,TrimRows:()=>hE,UndoRedo:()=>Nw}),n(67579),n(18665),n(5086),n(29979),n(10121),n(14602),n(63534),n(40590),n(64216),n(15195),n(7918),n(6048);var E=new Map;function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"common";E.has(e)||E.set(e,new Map);var t=E.get(e);return{register:function(e,n){t.set(e,n)},getItem:function(e){return t.get(e)},hasItem:function(e){return t.has(e)},getNames:function(){return T(t.keys())},getValues:function(){return T(t.values())}}}function R(e){for(var t=e.length,n=0;nt?e:t}),Array.isArray(e)?e[0]:void 0)}function I(e){return A(e,(function(e,t){return e1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"value",r="_".concat(n),o=(B(t={_touched:!1},r,e),B(t,"isTouched",(function(){return this._touched})),t);return Object.defineProperty(o,n,{get:function(){return this[r]},set:function(e){this._touched=!0,this[r]=e},enumerable:!0,configurable:!0}),o}function oe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ie(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:null;return e?(e.pluginHookBucket||(e.pluginHookBucket=this.createEmptyBucket()),e.pluginHookBucket):this.globalBucket}},{key:"add",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(Array.isArray(t))P(t,(function(t){return n.add(e,t,r)}));else{var o=this.getBucket(r);if(void 0===o[e]&&(this.register(e),o[e]=[]),t.skip=!1,-1===o[e].indexOf(t)){var i=!1;t.initialHook&&P(o[e],(function(n,r){if(n.initialHook)return o[e][r]=t,i=!0,!1})),i||o[e].push(t)}}return this}},{key:"once",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Array.isArray(t)?P(t,(function(t){return n.once(e,t,r)})):(t.runOnce=!0,this.add(e,t,r))}},{key:"remove",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=this.getBucket(n);return void 0!==r[e]&&r[e].indexOf(t)>=0&&(t.skip=!0,!0)}},{key:"has",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.getBucket(t);return!(void 0===n[e]||!n[e].length)}},{key:"run",value:function(e,t,n,r,o,i,a,s){var l=this.globalBucket[t],u=l?l.length:0,c=0;if(u)for(;c0&&void 0!==arguments[0]?arguments[0]:null;ee(this.getBucket(e),(function(e,t,n){return n[t].length=0}))}},{key:"register",value:function(e){this.isRegistered(e)||se.push(e)}},{key:"deregister",value:function(e){this.isRegistered(e)&&se.splice(se.indexOf(e),1)}},{key:"isRegistered",value:function(e){return se.indexOf(e)>=0}},{key:"getRegistered",value:function(){return se}}]),e}(),ue=new le;const ce=le;function he(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=t.viewportSize,r=t.scrollOffset,o=t.totalItems,i=t.itemSizeFn,a=t.overrideFn,s=t.calculationType,l=t.stretchMode,u=t.stretchingItemWidthFn,c=void 0===u?function(e){return e}:u;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),de.set(this,{viewportWidth:n,scrollOffset:r,totalColumns:o,columnWidthFn:i,overrideFn:a,calculationType:s,stretchingColumnWidthFn:c}),this.count=0,this.startColumn=null,this.endColumn=null,this.startPosition=null,this.stretchAllRatio=0,this.stretchLastWidth=0,this.stretch=l,this.totalTargetWidth=0,this.needVerifyLastColumnWidth=!0,this.stretchAllColumnsWidth=[],this.calculate()}return fe(e,null,[{key:"DEFAULT_WIDTH",get:function(){return 50}}]),fe(e,[{key:"calculate",value:function(){for(var e,t=0,n=!0,r=[],o=de.get(this),i=o.calculationType,a=o.overrideFn,s=o.scrollOffset,l=o.totalColumns,u=o.viewportWidth,c=0;c=s&&t+(2===i?e:0)<=s+(s>0?u+1:u)&&(null!==this.startColumn&&void 0!==this.startColumn||(this.startColumn=c),this.endColumn=c),r.push(t),t+=e,2!==i&&(this.endColumn=c),t>=s+u){n=!1;break}if(this.endColumn===l-1&&n)for(this.startColumn=this.endColumn;this.startColumn>0;){var h=r[this.endColumn]+e-r[this.startColumn-1];if((h<=u||2!==i)&&(this.startColumn-=1),h>u)break}1===i&&null!==this.startColumn&&a&&a(this),this.startPosition=r[this.startColumn],void 0===this.startPosition&&(this.startPosition=null),l0)this.stretchAllRatio=t/o,this.stretchAllColumnsWidth=[],this.needVerifyLastColumnWidth=!0;else if("last"===this.stretch&&t!==1/0){var u=this._getColumnWidth(r-1),c=l+u;this.stretchLastWidth=c>=0?c:u}}}},{key:"getStretchedColumnWidth",value:function(e,t){var n=null;return"all"===this.stretch&&0!==this.stretchAllRatio?n=this._getStretchedAllColumnWidth(e,t):"last"===this.stretch&&0!==this.stretchLastWidth&&(n=this._getStretchedLastColumnWidth(e)),n}},{key:"_getStretchedAllColumnWidth",value:function(e,t){var n=0,r=de.get(this),o=r.totalColumns;if(!this.stretchAllColumnsWidth[e]){var i=Math.round(t*this.stretchAllRatio),a=r.stretchingColumnWidthFn(i,e);this.stretchAllColumnsWidth[e]=void 0===a?i:isNaN(a)?this._getColumnWidth(e):a}if(this.stretchAllColumnsWidth.length===o&&this.needVerifyLastColumnWidth){this.needVerifyLastColumnWidth=!1;for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},n=t.viewportSize,r=t.scrollOffset,o=t.totalItems,i=t.itemSizeFn,a=t.overrideFn,s=t.calculationType,l=t.scrollbarHeight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ge.set(this,{viewportHeight:n,scrollOffset:r,totalRows:o,rowHeightFn:i,overrideFn:a,calculationType:s,horizontalScrollbarHeight:l}),this.count=0,this.startRow=null,this.endRow=null,this.startPosition=null,this.calculate()}return ve(e,null,[{key:"DEFAULT_HEIGHT",get:function(){return 23}}]),ve(e,[{key:"calculate",value:function(){for(var t,n=0,r=!0,o=[],i=ge.get(this),a=i.calculationType,s=i.overrideFn,l=i.rowHeightFn,u=i.scrollOffset,c=i.totalRows,h=i.viewportHeight,f=i.horizontalScrollbarHeight||0,d=0;d=u&&n+(2===a?t:0)<=u+h-f&&(null===this.startRow&&(this.startRow=d),this.endRow=d),o.push(n),n+=t,2!==a&&(this.endRow=d),n>=u+h-f){r=!1;break}if(this.endRow===c-1&&r)for(this.startRow=this.endRow;this.startRow>0;){var m=o[this.endRow]+t-o[this.startRow-1];if((m<=h-f||2!==a)&&(this.startRow-=1),m>=h-f)break}1===a&&null!==this.startRow&&s&&s(this),this.startPosition=o[this.startRow],void 0===this.startPosition&&(this.startPosition=null),c=e.getSetting("totalRows")||this.col>=e.getSetting("totalColumns"))}},{key:"isEqual",value:function(e){return e===this||this.row===e.row&&this.col===e.col}},{key:"isSouthEastOf",value:function(e){return this.row>=e.row&&this.col>=e.col}},{key:"isNorthWestOf",value:function(e){return this.row<=e.row&&this.col<=e.col}},{key:"isSouthWestOf",value:function(e){return this.row>=e.row&&this.col<=e.col}},{key:"isNorthEastOf",value:function(e){return this.row<=e.row&&this.col>=e.col}},{key:"toObject",value:function(){return{row:this.row,col:this.col}}}],n&&be(t.prototype,n),e}();const Me=_e;function ke(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.highlight=t,this.from=n,this.to=r}var t,n;return t=e,n=[{key:"setHighlight",value:function(e){return this.highlight=e,this}},{key:"setFrom",value:function(e){return this.from=e,this}},{key:"setTo",value:function(e){return this.to=e,this}},{key:"isValid",value:function(e){return this.from.isValid(e)&&this.to.isValid(e)}},{key:"isSingle",value:function(){return this.from.row===this.to.row&&this.from.col===this.to.col}},{key:"getHeight",value:function(){return Math.max(this.from.row,this.to.row)-Math.min(this.from.row,this.to.row)+1}},{key:"getWidth",value:function(){return Math.max(this.from.col,this.to.col)-Math.min(this.from.col,this.to.col)+1}},{key:"includes",value:function(e){var t=e.row,n=e.col,r=this.getTopLeftCorner(),o=this.getBottomRightCorner();return r.row<=t&&o.row>=t&&r.col<=n&&o.col>=n}},{key:"includesRange",value:function(e){return this.includes(e.getTopLeftCorner())&&this.includes(e.getBottomRightCorner())}},{key:"isEqual",value:function(e){return Math.min(this.from.row,this.to.row)===Math.min(e.from.row,e.to.row)&&Math.max(this.from.row,this.to.row)===Math.max(e.from.row,e.to.row)&&Math.min(this.from.col,this.to.col)===Math.min(e.from.col,e.to.col)&&Math.max(this.from.col,this.to.col)===Math.max(e.from.col,e.to.col)}},{key:"overlaps",value:function(e){return e.isSouthEastOf(this.getTopLeftCorner())&&e.isNorthWestOf(this.getBottomRightCorner())}},{key:"isSouthEastOf",value:function(e){return this.getTopLeftCorner().isSouthEastOf(e)||this.getBottomRightCorner().isSouthEastOf(e)}},{key:"isNorthWestOf",value:function(e){return this.getTopLeftCorner().isNorthWestOf(e)||this.getBottomRightCorner().isNorthWestOf(e)}},{key:"isOverlappingHorizontally",value:function(e){return this.getTopRightCorner().col>=e.getTopLeftCorner().col&&this.getTopRightCorner().col<=e.getTopRightCorner().col||this.getTopLeftCorner().col<=e.getTopRightCorner().col&&this.getTopLeftCorner().col>=e.getTopLeftCorner().col}},{key:"isOverlappingVertically",value:function(e){return this.getBottomRightCorner().row>=e.getTopRightCorner().row&&this.getBottomRightCorner().row<=e.getBottomRightCorner().row||this.getTopRightCorner().row<=e.getBottomRightCorner().row&&this.getTopRightCorner().row>=e.getTopRightCorner().row}},{key:"expand",value:function(e){var t=this.getTopLeftCorner(),n=this.getBottomRightCorner();return(e.rown.row||e.col>n.col)&&(this.from=new Me(Math.min(t.row,e.row),Math.min(t.col,e.col)),this.to=new Me(Math.max(n.row,e.row),Math.max(n.col,e.col)),!0)}},{key:"expandByRange",value:function(e){if(this.includesRange(e)||!this.overlaps(e))return!1;var t=this.getTopLeftCorner(),n=this.getBottomRightCorner(),r=this.getDirection(),o=e.getTopLeftCorner(),i=e.getBottomRightCorner(),a=Math.min(t.row,o.row),s=Math.min(t.col,o.col),l=Math.max(n.row,i.row),u=Math.max(n.col,i.col),c=new Me(a,s),h=new Me(l,u);return this.from=c,this.to=h,this.setDirection(r),this.highlight.row===this.getBottomRightCorner().row&&"N-S"===this.getVerticalDirection()&&this.flipDirectionVertically(),this.highlight.col===this.getTopRightCorner().col&&"W-E"===this.getHorizontalDirection()&&this.flipDirectionHorizontally(),!0}},{key:"getDirection",value:function(){return this.from.isNorthWestOf(this.to)?"NW-SE":this.from.isNorthEastOf(this.to)?"NE-SW":this.from.isSouthEastOf(this.to)?"SE-NW":this.from.isSouthWestOf(this.to)?"SW-NE":void 0}},{key:"setDirection",value:function(e){switch(e){case"NW-SE":var t=[this.getTopLeftCorner(),this.getBottomRightCorner()];this.from=t[0],this.to=t[1];break;case"NE-SW":var n=[this.getTopRightCorner(),this.getBottomLeftCorner()];this.from=n[0],this.to=n[1];break;case"SE-NW":var r=[this.getBottomRightCorner(),this.getTopLeftCorner()];this.from=r[0],this.to=r[1];break;case"SW-NE":var o=[this.getBottomLeftCorner(),this.getTopRightCorner()];this.from=o[0],this.to=o[1]}}},{key:"getVerticalDirection",value:function(){return["NE-SW","NW-SE"].indexOf(this.getDirection())>-1?"N-S":"S-N"}},{key:"getHorizontalDirection",value:function(){return["NW-SE","SW-NE"].indexOf(this.getDirection())>-1?"W-E":"E-W"}},{key:"flipDirectionVertically",value:function(){switch(this.getDirection()){case"NW-SE":this.setDirection("SW-NE");break;case"NE-SW":this.setDirection("SE-NW");break;case"SE-NW":this.setDirection("NE-SW");break;case"SW-NE":this.setDirection("NW-SE")}}},{key:"flipDirectionHorizontally",value:function(){switch(this.getDirection()){case"NW-SE":this.setDirection("NE-SW");break;case"NE-SW":this.setDirection("NW-SE");break;case"SE-NW":this.setDirection("SW-NE");break;case"SW-NE":this.setDirection("SE-NW")}}},{key:"getTopLeftCorner",value:function(){return new Me(Math.min(this.from.row,this.to.row),Math.min(this.from.col,this.to.col))}},{key:"getBottomRightCorner",value:function(){return new Me(Math.max(this.from.row,this.to.row),Math.max(this.from.col,this.to.col))}},{key:"getTopRightCorner",value:function(){return new Me(Math.min(this.from.row,this.to.row),Math.max(this.from.col,this.to.col))}},{key:"getBottomLeftCorner",value:function(){return new Me(Math.max(this.from.row,this.to.row),Math.min(this.from.col,this.to.col))}},{key:"isCorner",value:function(e,t){return!!(t&&t.includes(e)&&(this.getTopLeftCorner().isEqual(new Me(t.from.row,t.from.col))||this.getTopRightCorner().isEqual(new Me(t.from.row,t.to.col))||this.getBottomLeftCorner().isEqual(new Me(t.to.row,t.from.col))||this.getBottomRightCorner().isEqual(new Me(t.to.row,t.to.col))))||e.isEqual(this.getTopLeftCorner())||e.isEqual(this.getTopRightCorner())||e.isEqual(this.getBottomLeftCorner())||e.isEqual(this.getBottomRightCorner())}},{key:"getOppositeCorner",value:function(e,t){if(!(e instanceof Me))return!1;if(t&&t.includes(e)){if(this.getTopLeftCorner().isEqual(new Me(t.from.row,t.from.col)))return this.getBottomRightCorner();if(this.getTopRightCorner().isEqual(new Me(t.from.row,t.to.col)))return this.getBottomLeftCorner();if(this.getBottomLeftCorner().isEqual(new Me(t.to.row,t.from.col)))return this.getTopRightCorner();if(this.getBottomRightCorner().isEqual(new Me(t.to.row,t.to.col)))return this.getTopLeftCorner()}return e.isEqual(this.getBottomRightCorner())?this.getTopLeftCorner():e.isEqual(this.getTopLeftCorner())?this.getBottomRightCorner():e.isEqual(this.getTopRightCorner())?this.getBottomLeftCorner():e.isEqual(this.getBottomLeftCorner())?this.getTopRightCorner():void 0}},{key:"getBordersSharedWith",value:function(e){if(!this.includesRange(e))return[];var t=Math.min(this.from.row,this.to.row),n=Math.max(this.from.row,this.to.row),r=Math.min(this.from.col,this.to.col),o=Math.max(this.from.col,this.to.col),i=Math.min(e.from.row,e.to.row),a=Math.max(e.from.row,e.to.row),s=Math.min(e.from.col,e.to.col),l=Math.max(e.from.col,e.to.col),u=[];return t===i&&u.push("top"),o===l&&u.push("right"),n===a&&u.push("bottom"),r===s&&u.push("left"),u}},{key:"getInner",value:function(){for(var e=this.getTopLeftCorner(),t=this.getBottomRightCorner(),n=[],r=e.row;r<=t.row;r++)for(var o=e.col;o<=t.col;o++)this.from.row===r&&this.from.col===o||this.to.row===r&&this.to.col===o||n.push(new Me(r,o));return n}},{key:"getAll",value:function(){for(var e=this.getTopLeftCorner(),t=this.getBottomRightCorner(),n=[],r=e.row;r<=t.row;r++)for(var o=e.col;o<=t.col;o++)e.row===r&&e.col===o?n.push(e):t.row===r&&t.col===o?n.push(t):n.push(new Me(r,o));return n}},{key:"forAll",value:function(e){for(var t=this.getTopLeftCorner(),n=this.getBottomRightCorner(),r=t.row;r<=n.row;r++)for(var o=t.col;o<=n.col;o++)if(!1===e(r,o))return}},{key:"toObject",value:function(){return{from:this.from.toObject(),to:this.to.toObject()}}}],n&&ke(t.prototype,n),e}();const Ce=Se;n(80475),n(14913),n(79073),n(40173);var Te=function(e){var t={value:!1,test:function(n,r){t.value=e(n,r)}};return t},Ee={chrome:Te((function(e,t){return/Chrome/.test(e)&&/Google/.test(t)})),edge:Te((function(e){return/Edge/.test(e)})),ie:Te((function(e){return/Trident/.test(e)})),ie8:Te((function(){return!document.createTextNode("test").textContent})),ie9:Te((function(){return!!document.documentMode})),mobile:Te((function(e){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)})),safari:Te((function(e,t){return/Safari/.test(e)&&/Apple Computer/.test(t)}))};function Oe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.userAgent,n=void 0===t?navigator.userAgent:t,r=e.vendor,o=void 0===r?navigator.vendor:r;ee(Ee,(function(e){(0,e.test)(n,o)}))}function Re(){return Ee.chrome.value}function Le(){return Ee.edge.value}function De(){return Ee.ie.value}function Ae(){return Ee.ie8.value}function He(){return Ee.ie9.value}function Ne(){return Ee.ie.value||Ee.edge.value}function Pe(){return Ee.mobile.value}function xe(){return Ee.safari.value}function Ye(e){return Ye="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ye(e)}Oe(),n(78636),n(18772);for(var Ie,je,Fe,We,Be,Ve,Ue=0,ze=["ms","moz","webkit","o"],Ge=window.requestAnimationFrame,qe=window.cancelAnimationFrame,Xe=0;Xet
          t";var n=document.createElement("CAPTION");n.innerHTML="c
          c
          c
          c",n.style.padding="0",n.style.margin="0",e.insertBefore(n,t),document.body.appendChild(e),Ie=e.offsetHeight<2*e.lastChild.offsetHeight,document.body.removeChild(e)}(),Ie}function rt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return je||(je="object"===("undefined"==typeof Intl?"undefined":Ye(Intl))?new Intl.Collator(e,t).compare:"function"==typeof String.prototype.localeCompare?function(e,t){return"".concat(e).localeCompare(t)}:function(e,t){return e===t?0:e>t?-1:1})}function ot(){if(void 0!==Fe)return Fe;try{var e={get passive(){Fe=!0}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){Fe=!1}return Fe}function it(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:0,n=-1,r=null,o=e;null!==o;){if(n===t){r=o;break}o.host&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE?o=o.host:(n+=1,o=o.parentNode)}return r}function st(e,t,n){for(var r=e;null!==r&&r!==n;){if(r.nodeType===Node.ELEMENT_NODE&&(t.indexOf(r.nodeName)>-1||t.indexOf(r)>-1))return r;r=r.host&&r.nodeType===Node.DOCUMENT_FRAGMENT_NODE?r.host:r.parentNode}return null}function lt(e,t,n){for(var r=[],o=e;o&&(o=st(o,t,n))&&(!n||n.contains(o));)r.push(o),o=o.host&&o.nodeType===Node.DOCUMENT_FRAGMENT_NODE?o.host:o.parentNode;var i=r.length;return i?r[i-1]:null}function ut(e,t){var n=e.parentNode,r=[];for("string"==typeof t?r=Array.prototype.slice.call(e.ownerDocument.querySelectorAll(t),0):r.push(t);null!==n;){if(r.indexOf(n)>-1)return!0;n=n.parentNode}return!1}function ct(e){var t=!1,n=ht(e);function r(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="hot-table".toUpperCase()}for(;null!==n;){if(r(n)){t=!0;break}if(n.host&&n.nodeType===Node.DOCUMENT_FRAGMENT_NODE){if(t=r(n.host))break;n=n.host}n=n.parentNode}return t}function ht(e){return"undefined"!=typeof Polymer&&"function"==typeof wrap?wrap(e):e}function ft(e){return"undefined"!=typeof Polymer&&"function"==typeof unwrap?unwrap(e):e}function dt(e){var t=0,n=e;if(n.previousSibling)for(;n=n.previousSibling;)t+=1;return t}function mt(e,t,n){var r=n.parentElement.querySelector(".ht_clone_".concat(e));return r?r.contains(t):null}function pt(e){var t=[];if(!e||!e.length)return t;for(var n=0;e[n];)t.push(e[n]),n+=1;return t}if(Ge||(Ge=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-Ue)),r=window.setTimeout((function(){e(t+n)}),n);return Ue=t+n,r}),qe||(qe=function(e){clearTimeout(e)}),Je()){var yt=function(e){var t=e.createElement("div");return t.classList.add("test","test2"),t.classList.contains("test2")};We=function(e,t){return void 0!==e.classList&&"string"==typeof t&&""!==t&&e.classList.contains(t)},Be=function(e,t){var n,r=e.ownerDocument,o=t;if("string"==typeof o&&(o=o.split(" ")),(o=pt(o)).length>0)if(yt(r))(n=e.classList).add.apply(n,it(o));else for(var i=0;o&&o[i];)e.classList.add(o[i]),i+=1},Ve=function(e,t){var n,r=t;if("string"==typeof r&&(r=r.split(" ")),(r=pt(r)).length>0)if(yt)(n=e.classList).remove.apply(n,it(r));else for(var o=0;r&&r[o];)e.classList.remove(r[o]),o+=1}}else{var vt=function(e){return new RegExp("(\\s|^)".concat(e,"(\\s|$)"))};We=function(e,t){return void 0!==e.className&&vt(t).test(e.className)},Be=function(e,t){var n=0,r=e.className,o=t;if("string"==typeof o&&(o=o.split(" ")),""===r)r=o.join(" ");else for(;o&&o[n];)vt(o[n]).test(r)||(r+=" ".concat(o[n])),n+=1;e.className=r},Ve=function(e,t){var n=0,r=e.className,o=t;for("string"==typeof o&&(o=o.split(" "));o&&o[n];)r=r.replace(vt(o[n])," ").trim(),n+=1;e.className!==r&&(e.className=r)}}function gt(e,t){return We(e,t)}function wt(e,t){return Be(e,t)}function bt(e,t){return Ve(e,t)}function _t(e,t){if(3===e.nodeType)t.removeChild(e);else if(["TABLE","THEAD","TBODY","TFOOT","TR"].indexOf(e.nodeName)>-1)for(var n=e.childNodes,r=n.length-1;r>=0;r--)_t(n[r],e)}function Mt(e){for(var t;t=e.lastChild;)e.removeChild(t)}var kt,St=/(<(.*)>|&(.*);)/;function Ct(e,t){St.test(t)?e.innerHTML=t:Tt(e,t)}function Tt(e,t){var n=e.firstChild;n&&3===n.nodeType&&null===n.nextSibling?$e?n.textContent=t:n.data=t:(Mt(e),e.appendChild(e.ownerDocument.createTextNode(t)))}function Et(e){for(var t=e.ownerDocument.documentElement,n=e;ft(n)!==t;){if(null===n)return!1;if(n.nodeType===Node.DOCUMENT_FRAGMENT_NODE){if(n.host){if(n.host.impl)return Et(n.host.impl);if(n.host)return Et(n.host);throw new Error("Lost in Web Components world")}return!1}if(n.style&&"none"===n.style.display)return!1;n=n.parentNode}return!0}function Ot(e){var t,n,r,o,i=e.ownerDocument,a=i.defaultView,s=i.documentElement,l=e;if(nt()&&l.firstChild&&"CAPTION"===l.firstChild.nodeName)return{top:(o=l.getBoundingClientRect()).top+(a.pageYOffset||s.scrollTop)-(s.clientTop||0),left:o.left+(a.pageXOffset||s.scrollLeft)-(s.clientLeft||0)};for(t=l.offsetLeft,n=l.offsetTop,r=l;(l=l.offsetParent)&&l!==i.body;)t+=l.offsetLeft,n+=l.offsetTop,r=l;return r&&"fixed"===r.style.position&&(t+=a.pageXOffset||s.scrollLeft,n+=a.pageYOffset||s.scrollTop),{left:t,top:n}}function Rt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,t=e.scrollY;return void 0===t&&(t=e.document.documentElement.scrollTop),t}function Lt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,t=e.scrollX;return void 0===t&&(t=e.document.documentElement.scrollLeft),t}function Dt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return e===t?Rt(t):e.scrollTop}function At(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return e===t?Lt(t):e.scrollLeft}function Ht(e){var t=e.ownerDocument,n=t?t.defaultView:void 0;t||(n=(t=e.document?e.document:e).defaultView);for(var r=["auto","scroll"],o=Qe(),i=e.parentNode;i&&i.style&&t.body!==i;){var a=i.style,s=a.overflow,l=a.overflowX,u=a.overflowY;if([s,l,u].includes("scroll"))return i;if(o){var c=n.getComputedStyle(i);if(s=c.overflow,l=c.overflowX,u=c.overflowY,r.includes(s)||r.includes(l)||r.includes(u))return i}if(i.clientHeight<=i.scrollHeight+1&&(r.includes(u)||r.includes(s)))return i;if(i.clientWidth<=i.scrollWidth+1&&(r.includes(l)||r.includes(s)))return i;i=i.parentNode}return n}function Nt(e){for(var t=e.ownerDocument,n=t.defaultView,r=e.parentNode;r&&r.style&&t.body!==r;){if("visible"!==r.style.overflow&&""!==r.style.overflow)return r;var o=xt(r,n),i=["scroll","hidden","auto"],a=o.getPropertyValue("overflow"),s=o.getPropertyValue("overflow-y"),l=o.getPropertyValue("overflow-x");if(i.includes(a)||i.includes(s)||i.includes(l))return r;r=r.parentNode}return n}function Pt(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window;if(e){if(e===n)return"width"===t?"".concat(n.innerWidth,"px"):"height"===t?"".concat(n.innerHeight,"px"):void 0;var r=e.style[t];if(""!==r&&void 0!==r)return r;var o=xt(e,n);return""!==o[t]&&void 0!==o[t]?o[t]:void 0}}function xt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window;return e.currentStyle||t.getComputedStyle(e)}function Yt(e){return e.offsetWidth}function It(e){return nt()&&e.firstChild&&"CAPTION"===e.firstChild.nodeName?e.offsetHeight+e.firstChild.offsetHeight:e.offsetHeight}function jt(e){return e.clientHeight||e.innerHeight}function Ft(e){return e.clientWidth||e.innerWidth}function Wt(e,t,n){var r=e.defaultView;r||(r=e.document?e:e.ownerDocument.defaultView),r.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on".concat(t),n)}function Bt(e,t,n){var r=e.defaultView;r||(r=e.document?e:e.ownerDocument.defaultView),r.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on".concat(t),n)}function Vt(e){var t=e.ownerDocument;if(e.selectionStart)return e.selectionStart;if(t.selection){e.focus();var n=t.selection.createRange();if(null===n)return 0;var r=e.createTextRange(),o=r.duplicate();return r.moveToBookmark(n.getBookmark()),o.setEndPoint("EndToStart",r),o.text.length}return 0}function Ut(e){var t=e.ownerDocument;if(e.selectionEnd)return e.selectionEnd;if(t.selection){var n=t.selection.createRange();return null===n?0:e.createTextRange().text.indexOf(n.text)+n.text.length}return 0}function zt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,t=e.document,n="";return e.getSelection?n=e.getSelection().toString():t.selection&&"Control"!==t.selection.type&&(n=t.selection.createRange().text),n}function Gt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,t=e.document;e.getSelection?e.getSelection().empty?e.getSelection().empty():e.getSelection().removeAllRanges&&e.getSelection().removeAllRanges():t.selection&&t.selection.empty()}function qt(e,t,n){if(void 0===n&&(n=t),e.setSelectionRange){e.focus();try{e.setSelectionRange(t,n)}catch(i){var r=e.parentNode,o=r.style.display;r.style.display="block",e.setSelectionRange(t,n),r.style.display=o}}else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",t),i.select()}}function Xt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document;return void 0===kt&&(kt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=e.createElement("div");t.style.height="200px",t.style.width="100%";var n=e.createElement("div");n.style.boxSizing="content-box",n.style.height="150px",n.style.left="0px",n.style.overflow="hidden",n.style.position="absolute",n.style.top="0px",n.style.width="200px",n.style.visibility="hidden",n.appendChild(t),(e.body||e.documentElement).appendChild(n);var r=t.offsetWidth;n.style.overflow="scroll";var o=t.offsetWidth;return r===o&&(o=n.clientWidth),(e.body||e.documentElement).removeChild(n),r-o}(e)),kt}function Kt(e){return e.offsetWidth!==e.clientWidth}function Jt(e){return e.offsetHeight!==e.clientHeight}function $t(e,t,n){Ae()||He()?(e.style.top=n,e.style.left=t):xe()?(e.style["-webkit-transform"]="translate3d(".concat(t,",").concat(n,",0)"),e.style["-webkit-transform"]="translate3d(".concat(t,",").concat(n,",0)")):e.style.transform="translate3d(".concat(t,",").concat(n,",0)")}function Qt(e){var t;return e.style.transform&&""!==(t=e.style.transform)?["transform",t]:e.style["-webkit-transform"]&&""!==(t=e.style["-webkit-transform"])?["-webkit-transform",t]:-1}function Zt(e){e.style.transform&&""!==e.style.transform?e.style.transform="":e.style["-webkit-transform"]&&""!==e.style["-webkit-transform"]&&(e.style["-webkit-transform"]="")}function en(e){return e&&(["INPUT","SELECT","TEXTAREA"].indexOf(e.nodeName)>-1||"true"===e.contentEditable)}function tn(e){return en(e)&&-1===e.className.indexOf("handsontableInput")&&-1===e.className.indexOf("copyPaste")}function nn(e){tn(e.ownerDocument.activeElement)||e.select()}function rn(e){return"function"==typeof e}function on(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=0,r={lastCallThrottled:!0},o=null;return function(){for(var i=this,a=arguments.length,s=new Array(a),l=0;l2&&void 0!==arguments[2]?arguments[2]:10,n=on(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:200),r=t;function o(){for(var t=arguments.length,o=new Array(t),i=0;i1&&void 0!==arguments[1]?arguments[1]:200,r=null;return function(){for(var o=this,i=arguments.length,a=new Array(i),s=0;s1?t-1:0),r=1;r=t?e.apply(this,s):n(s)}}([])}function hn(e){var t=e.length;return function n(r){return function(){for(var o=arguments.length,i=new Array(o),a=0;a=t?e.apply(this,s):n(s)}}([])}function fn(e,t){for(var n=0;n0?this.collectedNodes[e-1]:null}},{key:"getRenderedChildCount",value:function(){var e=this.rootNode,t=this.sizeSet,n=0;if(this.isSharedViewSet())for(var r=e.firstElementChild;r;){if(r.tagName===this.childNodeType)n+=1;else if(t.isPlaceOn(1))break;r=r.nextElementSibling}else n=e.childElementCount;return n}},{key:"start",value:function(){this.collectedNodes.length=0,this.visualIndex=0;for(var e=this.rootNode,t=this.sizeSet,n=this.isSharedViewSet(),r=t.getViewSize().nextSize,o=this.getRenderedChildCount();or;)e.removeChild(a?e.firstChild:e.lastChild),o-=1}},{key:"render",value:function(){var e=this.rootNode,t=this.sizeSet,n=this.visualIndex;this.isSharedViewSet()&&t.isPlaceOn(2)&&(n+=t.sharedSize.nextSize);var r=e.childNodes[n];if(r.tagName!==this.childNodeType){var o=this.nodesPool();e.replaceChild(o,r),r=o}this.collectedNodes.push(r),this.visualIndex+=1}},{key:"end",value:function(){}}],n&&Mn(t.prototype,n),e}();function Sn(e){return Sn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Sn(e)}function Cn(e,t){for(var n=0;no;)r.removeChild(r.lastChild),this.renderedNodes-=1}var s=this.rootNode.childNodes.length;if(s>t)for(var l=t;lt;)this.rootNode.removeChild(this.rootNode.lastChild),this.renderedNodes-=1}},{key:"render",value:function(){this.adjust();for(var e=this.table,t=e.columnsToRender,n=e.rowHeadersCount,r=0;r1?t-1:0),r=1;rRead more
          about it in \n the documentation or contact us at support@handsontable.com.'],['\n The license key for Handsontable is missing. Use your purchased key to activate the product.\\x20\n Alternatively, you can activate Handsontable to use for non-commercial purposes by\\x20\n passing the key: \'non-commercial-and-evaluation\'.\\x20\n Read more about it in\\x20\n the documentation or contact us at support@handsontable.com.']);return $n=function(){return e},e}function Qn(){var e=rr(["\n The license key for Handsontable expired on ",", and is not valid for the installed \n version ",'. Renew your \n license key or downgrade to a version released prior to ','. If you need any \n help, contact us at sales@handsontable.com.'],["\n The license key for Handsontable expired on ",", and is not valid for the installed\\x20\n version ",'. Renew your\\x20\n license key or downgrade to a version released prior to ','. If you need any\\x20\n help, contact us at sales@handsontable.com.']);return Qn=function(){return e},e}function Zn(){var e=rr(['\n The license key for Handsontable is invalid. \n Read more on how to \n install it properly or contact us at support@handsontable.com.'],['\n The license key for Handsontable is invalid.\\x20\n Read more on how to\\x20\n install it properly or contact us at support@handsontable.com.']);return Zn=function(){return e},e}function er(){var e=rr(["\n The license key for Handsontable is missing. Use your purchased key to activate the product. \n Alternatively, you can activate Handsontable to use for non-commercial purposes by \n passing the key: 'non-commercial-and-evaluation'. If you need any help, contact \n us at support@handsontable.com."],["\n The license key for Handsontable is missing. Use your purchased key to activate the product.\\x20\n Alternatively, you can activate Handsontable to use for non-commercial purposes by\\x20\n passing the key: 'non-commercial-and-evaluation'. If you need any help, contact\\x20\n us at support@handsontable.com."]);return er=function(){return e},e}function tr(){var e=rr(["\n The license key for Handsontable expired on ",", and is not valid for the installed \n version ",". Renew your license key at handsontable.com or downgrade to a version released prior \n to ",". If you need any help, contact us at sales@handsontable.com."],["\n The license key for Handsontable expired on ",", and is not valid for the installed\\x20\n version ",". Renew your license key at handsontable.com or downgrade to a version released prior\\x20\n to ",". If you need any help, contact us at sales@handsontable.com."]);return tr=function(){return e},e}function nr(){var e=rr(["\n The license key for Handsontable is invalid. \n If you need any help, contact us at support@handsontable.com."],["\n The license key for Handsontable is invalid.\\x20\n If you need any help, contact us at support@handsontable.com."]);return nr=function(){return e},e}function rr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function or(e){return or="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},or(e)}function ir(e){var t;switch(or(e)){case"string":case"number":t="".concat(e);break;case"object":t=null===e?"":e.toString();break;case"undefined":t="";break;default:t=e.toString()}return t}function ar(e){return void 0!==e}function sr(e){return void 0===e}function lr(e){return null===e||""===e||sr(e)}function ur(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var cr="length",hr=function(e){return parseInt(e,16)},fr=function(e){return parseInt(e,10)},dr=function(e,t,n){return e.substr(t,n)},mr=function(e){return e.codePointAt(0)-65},pr=function(e){return"".concat(e).replace(/\-/g,"")},yr=function(e){return hr(dr(pr(e),hr("12"),mr("F")))/(hr(dr(pr(e),mr("B"),~~![][cr]))||9)},vr=function(){return"undefined"!=typeof location&&/^([a-z0-9\-]+\.)?\x68\x61\x6E\x64\x73\x6F\x6E\x74\x61\x62\x6C\x65\x2E\x63\x6F\x6D$/i.test(location.host)},gr=!1,wr={invalid:function(){return Jn(nr())},expired:function(e){var t=e.keyValidityDate,n=e.hotVersion;return Jn(tr(),t,n,t)},missing:function(){return Jn(er())},non_commercial:function(){return""}},br={invalid:function(){return Jn(Zn())},expired:function(e){var t=e.keyValidityDate,n=e.hotVersion;return Jn(Qn(),t,n,t)},missing:function(){return Jn($n())},non_commercial:function(){return""}};function _r(e,t){var n,r=!lr(e),o="string"==typeof e&&"non-commercial-and-evaluation"===e.toLowerCase(),i="7.2.2",a="invalid",s="invalid",l=function(e){var t=[][cr],n=t;if(e[cr]!==mr("Z"))return!1;for(var r="",o="B>1:r=dr(e,i,i?1===o[cr]?9:8:6);return n===t}(e=pr(e||""));if(r||o||l)if(l){var u=Kn()("23/10/2019","DD/MM/YYYY"),c=Math.floor(u.toDate().getTime()/864e5),h=yr(e);if(n=Kn()(864e5*(h+1),"x").format("MMMM DD, YYYY"),c>h){var f=Kn()().diff(u,"days");a=f<=1?"valid":"expired",s=f<=15?"valid":"expired"}else a="valid",s="valid"}else o?(a="non_commercial",s="valid"):(a="invalid",s="invalid");else a="missing",s="missing";if(vr()&&(a="valid",s="valid"),gr||"valid"===a||(wr[a]({keyValidityDate:n,hotVersion:i})&&console["non_commercial"===a?"info":"warn"](wr[a]({keyValidityDate:n,hotVersion:i})),gr=!0),"valid"!==s&&t.parentNode&&br[s]({keyValidityDate:n,hotVersion:i})){var d=document.createElement("div");d.id="hot-display-license-info",d.innerHTML=br[s]({keyValidityDate:n,hotVersion:i}),t.parentNode.insertBefore(d,t.nextSibling)}}function Mr(){var e;ar(console)&&(e=console).warn.apply(e,arguments)}function kr(e){return kr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kr(e)}function Sr(){var e,t,n=(e=['Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number \n of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.'],(t=['Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number\\x20\n of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.'])||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return Sr=function(){return n},n}function Cr(e,t){for(var n=0;n1e3&&(Or=!0,Mr(Jn(Sr()))),this.orderView.setSize(e).setOffset(this.table.renderedRowToSource(0)).start();for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:{}).cellRenderer;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.rootNode=t,this.rootDocument=this.rootNode.ownerDocument,this.rowHeaders=null,this.columnHeaders=null,this.colGroup=null,this.rows=null,this.cells=null,this.rowFilter=null,this.columnFilter=null,this.rowUtils=null,this.columnUtils=null,this.rowsToRender=0,this.columnsToRender=0,this.rowHeaderFunctions=[],this.rowHeadersCount=0,this.columnHeaderFunctions=[],this.columnHeadersCount=0,this.cellRenderer=n}var t,n;return t=e,n=[{key:"setAxisUtils",value:function(e,t){this.rowUtils=e,this.columnUtils=t}},{key:"setViewportSize",value:function(e,t){this.rowsToRender=e,this.columnsToRender=t}},{key:"setFilters",value:function(e,t){this.rowFilter=e,this.columnFilter=t}},{key:"setHeaderContentRenderers",value:function(e,t){this.rowHeaderFunctions=e,this.rowHeadersCount=e.length,this.columnHeaderFunctions=t,this.columnHeadersCount=t.length}},{key:"setRenderers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.rowHeaders,n=e.columnHeaders,r=e.colGroup,o=e.rows,i=e.cells;t.setTable(this),n.setTable(this),r.setTable(this),o.setTable(this),i.setTable(this),this.rowHeaders=t,this.columnHeaders=n,this.colGroup=r,this.rows=o,this.cells=i}},{key:"renderedRowToSource",value:function(e){return this.rowFilter.renderedToSource(e)}},{key:"renderedColumnToSource",value:function(e){return this.columnFilter.renderedToSource(e)}},{key:"render",value:function(){this.colGroup.adjust(),this.columnHeaders.adjust(),this.rows.adjust(),this.rowHeaders.adjust(),this.columnHeaders.render(),this.rows.render(),this.rowHeaders.render(),this.cells.render(),this.columnUtils.calculateWidths(),this.colGroup.render();for(var e=this.rowsToRender,t=this.rows,n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=t.TABLE,r=t.THEAD,o=t.COLGROUP,i=t.TBODY,a=t.rowUtils,s=t.columnUtils,l=t.cellRenderer;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.renderer=new xr(n,{cellRenderer:l}),this.renderer.setRenderers({rowHeaders:new Yn,columnHeaders:new Bn(r),colGroup:new qn(o),rows:new Rr(i),cells:new Nr}),this.renderer.setAxisUtils(a,s)}var t,n;return t=e,(n=[{key:"setFilters",value:function(e,t){return this.renderer.setFilters(e,t),this}},{key:"setViewportSize",value:function(e,t){return this.renderer.setViewportSize(e,t),this}},{key:"setHeaderContentRenderers",value:function(e,t){return this.renderer.setHeaderContentRenderers(e,t),this}},{key:"adjust",value:function(){this.renderer.adjust()}},{key:"render",value:function(){this.renderer.render()}}])&&Yr(t.prototype,n),e}();function jr(e){e.isImmediatePropagationEnabled=!1,e.cancelBubble=!0}function Fr(e){return!1===e.isImmediatePropagationEnabled}function Wr(e){"function"==typeof e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Br(e){if(e.pageX)return e.pageX;var t=e.target.ownerDocument.defaultView;return e.clientX+Lt(t)}function Vr(e){if(e.pageY)return e.pageY;var t=e.target.ownerDocument.defaultView;return e.clientY+Rt(t)}function Ur(e){return 2===e.button}function zr(e){return 0===e.button}function Gr(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:null;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.context=t||this,this.context.eventListeners||(this.context.eventListeners=[])}var t,n;return t=e,n=[{key:"addEventListener",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=this.context;function a(e){n.call(this,Kr(i,e))}return"boolean"==typeof o||ot()||(o=!1),this.context.eventListeners.push({element:e,event:t,callback:n,callbackProxy:a,options:o,eventManager:this}),e.addEventListener(t,a,o),qr+=1,function(){r.removeEventListener(e,t,n)}}},{key:"removeEventListener",value:function(e,t,n){for(var r,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=this.context.eventListeners.length;i;)if(i-=1,(r=this.context.eventListeners[i]).event===t&&r.element===e){if(n&&n!==r.callback)continue;if(o&&r.eventManager!==this)continue;this.context.eventListeners.splice(i,1),r.element.removeEventListener(r.event,r.callbackProxy,r.options),qr-=1}}},{key:"clearEvents",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.context)for(var t=this.context.eventListeners.length;t;){t-=1;var n=this.context.eventListeners[t];n&&this.removeEventListener(n.element,n.event,n.callback,e)}}},{key:"clear",value:function(){this.clearEvents()}},{key:"destroy",value:function(){this.clearEvents(),this.context=null}},{key:"destroyWithOwnEventsOnly",value:function(){this.clearEvents(!0),this.context=null}},{key:"fireEvent",value:function(e,t){var n=e.document,r=e;n||(r=(n=e.ownerDocument?e.ownerDocument:e).defaultView);var o,i={bubbles:!0,cancelable:"mousemove"!==t,view:r,detail:0,screenX:0,screenY:0,clientX:1,clientY:1,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:void 0};n.createEvent?(o=n.createEvent("MouseEvents")).initMouseEvent(t,i.bubbles,i.cancelable,i.view,i.detail,i.screenX,i.screenY,i.clientX,i.clientY,i.ctrlKey,i.altKey,i.shiftKey,i.metaKey,i.button,i.relatedTarget||n.body.parentNode):o=n.createEventObject(),e.dispatchEvent?e.dispatchEvent(o):e.fireEvent("on".concat(t),o)}}],n&&Gr(t.prototype,n),e}();function Kr(e,t){var n,r,o,i,a,s="HOT-TABLE";t.isTargetWebComponent=!1,t.realTarget=t.target;var l=t.stopImmediatePropagation;if(t.stopImmediatePropagation=function(){l.apply(this),jr(this)},!Xr.isHotTableEnv)return t;for(a=(t=ht(t)).path?t.path.length:0;a;){if(a-=1,t.path[a].nodeName===s)n=!0;else if(n&&t.path[a].shadowRoot){i=t.path[a];break}0!==a||i||(i=t.path[a])}return i||(i=t.target),t.isTargetWebComponent=!0,tt()?t.realTarget=t.srcElement||t.toElement:(oe(e,"hot")||e.isHotTableEnv||e.wtTable)&&(oe(e,"hot")?r=e.hot?e.hot.view.wt.wtTable.TABLE:null:e.isHotTableEnv?r=e.view.activeWt.wtTable.TABLE.parentNode.parentNode:e.wtTable&&(r=e.wtTable.TABLE.parentNode.parentNode),o=st(t.target,[s],r),t.realTarget=o&&r.querySelector(s)||t.target),Object.defineProperty(t,"target",{get:function(){return ht(i)},enumerable:!0,configurable:!0}),t}const Jr=Xr;function $r(e){return e[0].toUpperCase()+e.substr(1)}function Qr(){for(var e=[],t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return"".concat(e).replace(/(?:\\)?\[([^[\]]+)]/g,(function(e,n){return"\\"===e.charAt(0)?e.substr(1,e.length-1):void 0===t[n]?"":t[n]}))}var no=/<\/?\w+\/?>|<\w+[\s|/][^>]*>/gi;function ro(e){return"".concat(e).replace(no,"")}function oo(e,t){for(var n=0;n=48&&e<=57||e>=96&&e<=111||e>=186&&e<=192||e>=219&&e<=222||e>=226||e>=65&&e<=90}function co(e){return-1!==[lo.ARROW_DOWN,lo.ARROW_UP,lo.ARROW_LEFT,lo.ARROW_RIGHT,lo.HOME,lo.END,lo.DELETE,lo.BACKSPACE,lo.F1,lo.F2,lo.F3,lo.F4,lo.F5,lo.F6,lo.F7,lo.F8,lo.F9,lo.F10,lo.F11,lo.F12,lo.TAB,lo.PAGE_DOWN,lo.PAGE_UP,lo.ENTER,lo.ESCAPE,lo.SHIFT,lo.CAPS_LOCK,lo.ALT].indexOf(e)}function ho(e){var t=[];return navigator.platform.includes("Mac")?t.push(lo.COMMAND_LEFT,lo.COMMAND_RIGHT,lo.COMMAND_FIREFOX):t.push(lo.CONTROL),t.includes(e)}function fo(e){return[lo.CONTROL,lo.COMMAND_LEFT,lo.COMMAND_RIGHT,lo.COMMAND_FIREFOX].includes(e)}function mo(e,t){var n=t.split("|"),r=!1;return P(n,(function(t){if(e===lo[t])return r=!0,!1})),r}function po(e,t){for(var n=0;n1,l=this.scrollableElement===r,u=this.wot.wtSettings.getSetting("preventWheel"),c={passive:l};(u||s||!Re())&&this.eventManager.addEventListener(this.wot.wtTable.wtRootElement,"wheel",(function(t){return e.onCloneWheel(t,u)}),c),[this.topOverlay,this.bottomOverlay,this.leftOverlay,this.topLeftCornerOverlay,this.bottomLeftCornerOverlay].forEach((function(t){if(t&&t.needFullRender){var n=t.clone.wtTable.holder;e.eventManager.addEventListener(n,"wheel",(function(t){return e.onCloneWheel(t,u)}),c)}})),this.eventManager.addEventListener(r,"resize",(function(){clearTimeout(a),a=setTimeout((function(){e.wot.getSetting("onWindowResize")}),200)}))}},{key:"deregisterListeners",value:function(){this.eventManager.clearEvents(!0)}},{key:"onTableScroll",value:function(e){var t=this.wot.rootWindow,n=this.leftOverlay.mainTableScrollableElement,r=this.topOverlay.mainTableScrollableElement,o=e.target;this.keyPressed&&(r!==t&&o!==t&&!e.target.contains(r)||n!==t&&o!==t&&!e.target.contains(n))||this.syncScrollPositions(e)}},{key:"onCloneWheel",value:function(e,t){var n=this.wot.rootWindow,r=this.leftOverlay.mainTableScrollableElement,o=this.topOverlay.mainTableScrollableElement,i=e.target,a=o!==n&&i!==n&&!i.contains(o),s=r!==n&&i!==n&&!i.contains(r);if(!this.keyPressed||!a&&!s){var l=this.translateMouseWheelToScroll(e);(t||this.scrollableElement!==n&&l)&&e.preventDefault()}}},{key:"onKeyDown",value:function(e){this.keyPressed=mo(e.keyCode,"ARROW_UP|ARROW_RIGHT|ARROW_DOWN|ARROW_LEFT")}},{key:"onKeyUp",value:function(){this.keyPressed=!1}},{key:"translateMouseWheelToScroll",value:function(e){var t=this.browserLineHeight,n=isNaN(e.deltaY)?-1*e.wheelDeltaY:e.deltaY,r=isNaN(e.deltaX)?-1*e.wheelDeltaX:e.deltaX;1===e.deltaMode&&(r+=r*t,n+=n*t);var o=this.scrollVertically(n),i=this.scrollHorizontally(r);return o||i}},{key:"scrollVertically",value:function(e){var t=this.scrollableElement.scrollTop;return this.scrollableElement.scrollTop+=e,t!==this.scrollableElement.scrollTop}},{key:"scrollHorizontally",value:function(e){var t=this.scrollableElement.scrollLeft;return this.scrollableElement.scrollLeft+=e,t!==this.scrollableElement.scrollLeft}},{key:"syncScrollPositions",value:function(){if(!this.destroyed){var e=this.wot.rootWindow,t=this.topOverlay.clone.wtTable.holder,n=this.leftOverlay.clone.wtTable.holder,r=[this.scrollableElement.scrollLeft,this.scrollableElement.scrollTop],o=r[0],i=r[1];if(this.horizontalScrolling=t.scrollLeft!==o||this.lastScrollX!==e.scrollX,this.verticalScrolling=n.scrollTop!==i||this.lastScrollY!==e.scrollY,this.lastScrollX=e.scrollX,this.lastScrollY=e.scrollY,this.horizontalScrolling){t.scrollLeft=o;var a=this.bottomOverlay.needFullRender?this.bottomOverlay.clone.wtTable.holder:null;a&&(a.scrollLeft=o)}this.verticalScrolling&&(n.scrollTop=i),this.refreshAll()}}},{key:"syncScrollWithMaster",value:function(){var e=this.topOverlay.mainTableScrollableElement,t=e.scrollLeft,n=e.scrollTop;this.topOverlay.needFullRender&&(this.topOverlay.clone.wtTable.holder.scrollLeft=t),this.bottomOverlay.needFullRender&&(this.bottomOverlay.clone.wtTable.holder.scrollLeft=t),this.leftOverlay.needFullRender&&(this.leftOverlay.clone.wtTable.holder.scrollTop=n)}},{key:"updateMainScrollableElements",value:function(){this.deregisterListeners(),this.leftOverlay.updateMainScrollableElement(),this.topOverlay.updateMainScrollableElement(),this.bottomOverlay.needFullRender&&this.bottomOverlay.updateMainScrollableElement();var e=this.wot,t=e.rootWindow,n=e.wtTable;"hidden"===t.getComputedStyle(n.wtRootElement.parentNode).getPropertyValue("overflow")?this.scrollableElement=n.holder:this.scrollableElement=Ht(n.TABLE),this.registerListeners()}},{key:"destroy",value:function(){this.eventManager.destroy(),this.topOverlay.destroy(),this.bottomOverlay.clone&&this.bottomOverlay.destroy(),this.leftOverlay.destroy(),this.topLeftCornerOverlay&&this.topLeftCornerOverlay.destroy(),this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.clone&&this.bottomLeftCornerOverlay.destroy(),this.debug&&this.debug.destroy(),this.destroyed=!0}},{key:"refresh",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.topOverlay.areElementSizesAdjusted&&this.leftOverlay.areElementSizesAdjusted){var t=this.wot.wtTable.wtRootElement.parentNode||this.wot.wtTable.wtRootElement,n=t.clientWidth,r=t.clientHeight;n===this.spreaderLastSize.width&&r===this.spreaderLastSize.height||(this.spreaderLastSize.width=n,this.spreaderLastSize.height=r,this.adjustElementsSize())}this.bottomOverlay.clone&&this.bottomOverlay.refresh(e),this.leftOverlay.refresh(e),this.topOverlay.refresh(e),this.topLeftCornerOverlay&&this.topLeftCornerOverlay.refresh(e),this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.clone&&this.bottomLeftCornerOverlay.refresh(e),this.debug&&this.debug.refresh(e)}},{key:"adjustElementsSize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.wot,n=t.wtViewport,r=t.wtTable,o=this.wot.getSetting("totalColumns"),i=this.wot.getSetting("totalRows"),a=n.getRowHeaderWidth(),s=n.getColumnHeaderHeight(),l=r.hider.style;if(l.width="".concat(a+this.leftOverlay.sumCellSizes(0,o),"px"),l.height="".concat(s+this.topOverlay.sumCellSizes(0,i)+1,"px"),this.scrollbarSize>0){var u=r.wtRootElement,c=u.scrollHeight,h=u.scrollWidth,f=r.holder,d=f.scrollHeight,m=f.scrollWidth;this.hasScrollbarRight=ch?this.hasScrollbarBottom=!0:this.hasScrollbarBottom&&r.hider.scrollHeight+this.scrollbarSize>c&&(this.hasScrollbarRight=!0)}this.topOverlay.adjustElementsSize(e),this.leftOverlay.adjustElementsSize(e),this.bottomOverlay.adjustElementsSize(e)}},{key:"applyToDOM",value:function(){this.wot.wtTable.isVisible()&&(this.topOverlay.areElementSizesAdjusted&&this.leftOverlay.areElementSizesAdjusted||this.adjustElementsSize(),this.topOverlay.applyToDOM(),this.bottomOverlay.clone&&this.bottomOverlay.applyToDOM(),this.leftOverlay.applyToDOM())}},{key:"getParentOverlay",value:function(e){if(!e)return null;var t=[this.topOverlay,this.leftOverlay,this.bottomOverlay,this.topLeftCornerOverlay,this.bottomLeftCornerOverlay],n=null;return P(t,(function(t){t&&t.clone&&t.clone.wtTable.TABLE.contains(e)&&(n=t.clone)})),n}}],n&&po(t.prototype,n),e}();const vo=yo;function go(e,t){for(var n=0;n=0&&e<=Math.max(a-1,0)){var l=this.getFirstVisibleColumn(),u=this.getLastVisibleColumn();e>=o&&l>-1&&(e-1&&(e>u||t))&&(s=i.scrollTo(e,!0))}return s}},{key:"scrollViewportVertically",value:function(e,t,n){if(!this.wot.drawn)return!1;var r=this._getVariables(),o=r.fixedRowsBottom,i=r.fixedRowsTop,a=r.topOverlay,s=r.totalRows,l=!1;if(e>=0&&e<=Math.max(s-1,0)){var u=this.getFirstVisibleRow(),c=this.getLastVisibleRow();e>=i&&u>-1&&(e-1&&(e>c&&e0;d--)if(f+=t.sumCellSizes(d-1,d),l.top+u-f<=h){s=d;break}}}return s}},{key:"getLastVisibleRow",value:function(){var e=this._getVariables(),t=e.topOverlay,n=e.wtTable,r=e.wtViewport,o=e.totalRows,i=this.wot.rootWindow,a=n.getLastVisibleRow();if(t.mainTableScrollableElement===i){var s=Ot(n.wtRootElement),l=Dt(i,i);if(s.top>l)for(var u=jt(i),c=r.getColumnHeaderHeight(),h=1;h<=o;h++)if(c+=t.sumCellSizes(h-1,h),s.top+c-l>=u){a=h-2;break}}return a}},{key:"getFirstVisibleColumn",value:function(){var e=this._getVariables(),t=e.leftOverlay,n=e.wtTable,r=e.wtViewport,o=e.totalColumns,i=this.wot.rootWindow,a=n.getFirstVisibleColumn();if(t.mainTableScrollableElement===i){var s=Ot(n.wtRootElement),l=Ft(n.hider),u=Ft(i),c=At(i,i);if(s.left+l-u<=c)for(var h=r.getRowHeaderWidth(),f=o;f>0;f--)if(h+=t.sumCellSizes(f-1,f),s.left+l-h<=c){a=f;break}}return a}},{key:"getLastVisibleColumn",value:function(){var e=this._getVariables(),t=e.leftOverlay,n=e.wtTable,r=e.wtViewport,o=e.totalColumns,i=this.wot.rootWindow,a=n.getLastVisibleColumn();if(t.mainTableScrollableElement===i){var s=Ot(n.wtRootElement),l=At(i,i);if(s.left>l)for(var u=Ft(i),c=r.getRowHeaderWidth(),h=1;h<=o;h++)if(c+=t.sumCellSizes(h-1,h),s.left+c-l>=u){a=h-2;break}}return a}},{key:"_getVariables",value:function(){var e=this.wot;return{topOverlay:e.wtOverlays.topOverlay,leftOverlay:e.wtOverlays.leftOverlay,wtTable:e.wtTable,wtViewport:e.wtViewport,totalRows:e.getSetting("totalRows"),totalColumns:e.getSetting("totalColumns"),fixedRowsTop:e.getSetting("fixedRowsTop"),fixedRowsBottom:e.getSetting("fixedRowsBottom"),fixedColumnsLeft:e.getSetting("fixedColumnsLeft")}}}],n&&go(t.prototype,n),e}();const bo=wo;function _o(e,t){for(var n=0;n0&&t.clientHeight>0?t.clientHeight:1/0}},{key:"getWorkspaceWidth",value:function(){var e,t,n=this.wot,r=n.rootDocument,o=n.rootWindow,i=this.instance.wtOverlays.leftOverlay.trimmingContainer,a=r.documentElement.offsetWidth,s=n.getSetting("totalColumns");if(n.getSetting("preventOverflow"))return Yt(this.instance.wtTable.wtRootElement);if(e=n.getSetting("freezeOverlays")?Math.min(a-this.getWorkspaceOffset().left,a):Math.min(this.getContainerFillWidth(),a-this.getWorkspaceOffset().left,a),i===o&&s>0&&this.sumColumnWidths(0,s-1)>e)return r.documentElement.clientWidth;if(i!==o&&("scroll"===(t=Pt(this.instance.wtOverlays.leftOverlay.trimmingContainer,"overflow",o))||"hidden"===t||"auto"===t))return Math.max(e,i.clientWidth);var l=n.getSetting("stretchH");return"none"!==l&&l?e:Math.max(e,Yt(this.instance.wtTable.TABLE))}},{key:"hasVerticalScroll",value:function(){return this.getWorkspaceActualHeight()>this.getWorkspaceHeight()}},{key:"hasHorizontalScroll",value:function(){return this.getWorkspaceActualWidth()>this.getWorkspaceWidth()}},{key:"sumColumnWidths",value:function(e,t){for(var n=this.wot.wtTable,r=0,o=e;o0&&(e-=t),e}},{key:"getRowHeaderWidth",value:function(){var e=this.instance.getSetting("rowHeaderWidth"),t=this.instance.getSetting("rowHeaders");if(e){this.rowHeaderWidth=0;for(var n=0,r=t.length;n0?e-t:e}},{key:"createRowsCalculator",value:function(){var e,t,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,o=this.wot,i=o.wtSettings,a=o.wtOverlays,s=o.wtTable,l=o.rootDocument;this.rowHeaderWidth=NaN,e=i.settings.renderAllRows&&1===r?1/0:this.getViewportHeight();var u=a.topOverlay.getScrollPosition()-a.topOverlay.getTableParentOffset();u<0&&(u=0);var c=o.getSetting("fixedRowsTop"),h=o.getSetting("fixedRowsBottom"),f=o.getSetting("totalRows");return c&&(u+=n=a.topOverlay.sumCellSizes(0,c),e-=n),h&&a.bottomOverlay.clone&&(e-=n=a.bottomOverlay.sumCellSizes(f-h,f)),t=s.holder.clientHeight===s.holder.offsetHeight?0:Xt(l),new we({viewportSize:e,scrollOffset:u,totalItems:o.getSetting("totalRows"),itemSizeFn:function(e){return s.getRowHeight(e)},overrideFn:i.settings.viewportRowCalculatorOverride,calculationType:r,scrollbarHeight:t})}},{key:"createColumnsCalculator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=this.wot,n=t.wtSettings,r=t.wtOverlays,o=t.wtTable,i=t.rootDocument,a=this.getViewportWidth(),s=r.leftOverlay.getScrollPosition()-r.leftOverlay.getTableParentOffset();this.columnHeaderHeight=NaN,s<0&&(s=0);var l=t.getSetting("fixedColumnsLeft");if(l){var u=r.leftOverlay.sumCellSizes(0,l);s+=u,a-=u}return o.holder.clientWidth!==o.holder.offsetWidth&&(a-=Xt(i)),new pe({viewportSize:a,scrollOffset:s,totalItems:t.getSetting("totalColumns"),itemSizeFn:function(e){return t.wtTable.getColumnWidth(e)},overrideFn:n.settings.viewportColumnCalculatorOverride,calculationType:e,stretchMode:t.getSetting("stretchH"),stretchingItemWidthFn:function(e,n){return t.getSetting("onBeforeStretchingColumnWidth",e,n)}})}},{key:"createRenderCalculators",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e){var t=this.createRowsCalculator(2),n=this.createColumnsCalculator(2);this.areAllProposedVisibleRowsAlreadyRendered(t)&&this.areAllProposedVisibleColumnsAlreadyRendered(n)||(e=!1)}return e||(this.rowsRenderCalculator=this.createRowsCalculator(1),this.columnsRenderCalculator=this.createColumnsCalculator(1)),this.rowsVisibleCalculator=null,this.columnsVisibleCalculator=null,e}},{key:"createVisibleCalculators",value:function(){this.rowsVisibleCalculator=this.createRowsCalculator(2),this.columnsVisibleCalculator=this.createColumnsCalculator(2)}},{key:"areAllProposedVisibleRowsAlreadyRendered",value:function(e){if(!this.rowsVisibleCalculator)return!1;var t=e.startRow,n=e.endRow,r=this.rowsRenderCalculator,o=r.startRow,i=r.endRow;return!(t0||n>i||n===i&&n0||n>i||n===i&&n0&&void 0!==arguments[0]&&arguments[0];return this.drawInterrupted=!1,e||this.wtTable.isVisible()?this.wtTable.draw(e):this.drawInterrupted=!0,this}},{key:"getCell",value:function(e){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1]))return this.wtTable.getCell(e);var t=this.wtSettings.getSetting("totalRows"),n=this.wtSettings.getSetting("fixedRowsTop"),r=this.wtSettings.getSetting("fixedRowsBottom"),o=this.wtSettings.getSetting("fixedColumnsLeft");if(e.row=t-r){if(this.wtOverlays.bottomLeftCornerOverlay&&this.wtOverlays.bottomLeftCornerOverlay.clone)return this.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell(e)}else{if(e.col=t-r&&this.wtOverlays.bottomOverlay&&this.wtOverlays.bottomOverlay.clone)return this.wtOverlays.bottomOverlay.clone.wtTable.getCell(e)}return this.wtTable.getCell(e)}},{key:"update",value:function(e,t){return this.wtSettings.update(e,t)}},{key:"scrollViewport",value:function(e,t,n,r,o){return!(e.col<0||e.row<0)&&this.wtScroll.scrollViewport(e,t,n,r,o)}},{key:"scrollViewportHorizontally",value:function(e,t,n){return!(e<0)&&this.wtScroll.scrollViewportHorizontally(e,t,n)}},{key:"scrollViewportVertically",value:function(e,t,n){return!(e<0)&&this.wtScroll.scrollViewportVertically(e,t,n)}},{key:"getViewport",value:function(){return[this.wtTable.getFirstVisibleRow(),this.wtTable.getFirstVisibleColumn(),this.wtTable.getLastVisibleRow(),this.wtTable.getLastVisibleColumn()]}},{key:"getOverlayName",value:function(){return this.cloneOverlay?this.cloneOverlay.type:"master"}},{key:"exportSettingsAsClassNames",value:function(){var e=this,t=[],n=[];ee({rowHeaders:["array"],columnHeaders:["array"]},(function(r,o){r.indexOf("array")>-1&&e.getSetting(o).length&&n.push("ht".concat($r(o))),t.push("ht".concat($r(o)))})),bt(this.wtTable.wtRootElement.parentNode,t),wt(this.wtTable.wtRootElement.parentNode,n)}},{key:"getSetting",value:function(e,t,n,r,o){return this.wtSettings.getSetting(e,t,n,r,o)}},{key:"hasSetting",value:function(e){return this.wtSettings.has(e)}},{key:"destroy",value:function(){this.wtOverlays.destroy(),this.wtEvent.destroy()}}],n&&Eo(t.prototype,n),e}();const Ro=Oo;function Lo(e,t){for(var n=0;n=this.wot.getSetting("totalRows")-this.wot.getSetting("fixedRowsBottom"),s={left:this.clone.wtTable.spreader.offsetLeft,top:this.clone.wtTable.spreader.offsetTop},l={left:e.offsetLeft,top:e.offsetTop};return r?this.getRelativeCellPositionWithinWindow(i,o,l,s):this.getRelativeCellPositionWithinHolder(i,a,o,l,s)}Mr("The provided element is not a child of the ".concat(this.type," overlay"))}},{key:"getRelativeCellPositionWithinWindow",value:function(e,t,n,r){var o,i=this.wot.wtTable.wtRootElement.getBoundingClientRect(),a=0;return o=t?i.left<=0?-1*i.left:0:r.left,a=e?this.clone.wtTable.TABLE.getBoundingClientRect().top-i.top:r.top,{left:n.left+o,top:n.top+a}}},{key:"getRelativeCellPositionWithinHolder",value:function(e,t,n,r,o){var i=this.clone.cloneSource.wtOverlays.leftOverlay.getScrollPosition(),a=this.clone.cloneSource.wtOverlays.topOverlay.getScrollPosition(),s=0,l=0;if(n||(s=i-o.left),t){var u=this.wot.wtTable.wtRootElement.getBoundingClientRect();l=-1*this.clone.wtTable.TABLE.getBoundingClientRect().top+u.top}else e||(l=a-o.top);return{left:r.left-s,top:r.top-l}}},{key:"makeClone",value:function(t){if(-1===e.CLONE_TYPES.indexOf(t))throw new Error('Clone type "'.concat(t,'" is not supported.'));var n=this.wot,r=n.wtTable,o=n.rootDocument,i=n.rootWindow,a=o.createElement("DIV"),s=o.createElement("TABLE");a.className="ht_clone_".concat(t," handsontable"),a.style.position="absolute",a.style.top=0,a.style.left=0,a.style.overflow="hidden",s.className=r.TABLE.className,a.appendChild(s),this.type=t,r.wtRootElement.parentNode.appendChild(a);var l=this.wot.getSetting("preventOverflow");return!0===l||"horizontal"===l&&this.type===e.CLONE_TOP||"vertical"===l&&this.type===e.CLONE_LEFT?this.mainTableScrollableElement=i:"hidden"===i.getComputedStyle(r.wtRootElement.parentNode).getPropertyValue("overflow")?this.mainTableScrollableElement=r.holder:this.mainTableScrollableElement=Ht(r.TABLE),new Ro({cloneSource:this.wot,cloneOverlay:this,table:s})}},{key:"refresh",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.shouldBeRendered();this.clone&&(this.needFullRender||t)&&this.clone.draw(e),this.needFullRender=t}},{key:"reset",value:function(){if(this.clone){var e=this.clone.wtTable.holder,t=this.clone.wtTable.hider;P([e.style,t.style,e.parentNode.style],(function(e){e.width="",e.height=""}))}}},{key:"destroy",value:function(){new Jr(this.clone).destroy()}}]),e}();const No=Ho;function Po(e){return Po="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Po(e)}function xo(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0],t=this.wot,n=t.wtOverlays,r=t.wtViewport,o=t.getSetting("totalRows"),i=t.getSetting("totalColumns"),a=t.getSetting("rowHeaders"),s=a.length,l=t.getSetting("columnHeaders"),u=l.length,c=!1,h=e;if(this.isMaster&&(this.holderOffset=Ot(this.holder),h=r.createRenderCalculators(h),s&&!t.getSetting("fixedColumnsLeft"))){var f=n.leftOverlay.getScrollPosition(),d=this.correctHeaderWidth;this.correctHeaderWidth=f>0,d!==this.correctHeaderWidth&&(h=!1)}if(this.isMaster&&(c=n.prepareOverlays()),h)this.isMaster&&r.createVisibleCalculators(),n&&n.refresh(!0);else{this.isMaster?this.tableOffset=Ot(this.TABLE):this.tableOffset=this.wot.cloneSource.wtTable.tableOffset;var m=o>0?this.getFirstRenderedRow():0,p=i>0?this.getFirstRenderedColumn():0;this.rowFilter=new vn(m,o,u),this.columnFilter=new mn(p,i,s);var y,v=!0;if(this.isMaster){this.alignOverlaysWithTrimmingContainer();var g={};this.wot.getSetting("beforeDraw",!0,g),v=!0!==g.skipRender}if(v)if(this.tableRenderer.setHeaderContentRenderers(a,l),(this.is(No.CLONE_BOTTOM)||this.is(No.CLONE_BOTTOM_LEFT_CORNER))&&this.tableRenderer.setHeaderContentRenderers(a,[]),this.resetOversizedRows(),this.tableRenderer.setViewportSize(this.getRenderedRowsCount(),this.getRenderedColumnsCount()).setFilters(this.rowFilter,this.columnFilter).render(),this.isMaster&&(y=this.wot.wtViewport.getWorkspaceWidth(),this.wot.wtViewport.containerWidth=null,this.markOversizedColumnHeaders()),this.adjustColumnHeaderHeights(),(this.isMaster||this.is(No.CLONE_BOTTOM))&&this.markOversizedRows(),this.isMaster){this.wot.wtViewport.createVisibleCalculators(),this.wot.wtOverlays.refresh(!1),this.wot.wtOverlays.applyToDOM();var w=Yt(this.hider),b=Yt(this.TABLE);0!==w&&b!==w&&(this.columnUtils.calculateWidths(),this.tableRenderer.renderer.colGroup.render()),y!==this.wot.wtViewport.getWorkspaceWidth()&&(this.wot.wtViewport.containerWidth=null,this.columnUtils.calculateWidths(),this.tableRenderer.renderer.colGroup.render()),this.wot.getSetting("onDraw",!0)}else this.is(No.CLONE_BOTTOM)&&this.wot.cloneSource.wtOverlays.adjustElementsSize()}return this.refreshSelections(h),this.isMaster&&(n.topOverlay.resetFixedPosition(),n.bottomOverlay.clone&&n.bottomOverlay.resetFixedPosition(),n.leftOverlay.resetFixedPosition(),n.topLeftCornerOverlay&&n.topLeftCornerOverlay.resetFixedPosition(),n.bottomLeftCornerOverlay&&n.bottomLeftCornerOverlay.clone&&n.bottomLeftCornerOverlay.resetFixedPosition()),c&&n.syncScrollWithMaster(),t.drawn=!0,this}},{key:"markIfOversizedColumnHeader",value:function(e){for(var t,n,r,o=this.wot.wtTable.columnFilter.renderedToSource(e),i=this.wot.getSetting("columnHeaders").length,a=this.wot.wtSettings.settings.defaultRowHeight,s=this.wot.getSetting("columnHeaderHeight")||[];i;)i-=1,t=this.wot.wtTable.getColumnHeaderHeight(i),(n=this.wot.wtTable.getColumnHeader(o,i))&&(r=jt(n),(!t&&a=0)throw new Error("TR was expected to be rendered but is not");var u=l.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(o)];if(!u&&o>=0)throw new Error("TD or TH was expected to be rendered but is not");return u}},{key:"getColumnHeader",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.THEAD.childNodes[t];if(n)return n.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(e)]}},{key:"getRowHeader",value:function(e){if(0===this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0))return null;var t=this.TBODY.childNodes[this.rowFilter.sourceToRendered(e)];return t?t.childNodes[0]:void 0}},{key:"getCoords",value:function(e){var t=e;if("TD"!==t.nodeName&&"TH"!==t.nodeName&&(t=st(t,["TD","TH"])),null===t)return null;var n=t.parentNode,r=n.parentNode,o=dt(n),i=t.cellIndex;return mt(No.CLONE_TOP_LEFT_CORNER,t,this.wtRootElement)||mt(No.CLONE_TOP,t,this.wtRootElement)?"THEAD"===r.nodeName&&(o-=r.childNodes.length):o=mt(No.CLONE_BOTTOM_LEFT_CORNER,t,this.wtRootElement)||mt(No.CLONE_BOTTOM,t,this.wtRootElement)?this.wot.getSetting("totalRows")-r.childNodes.length+o:r===this.THEAD?this.rowFilter.visibleColHeadedRowToSourceRow(o):this.rowFilter.renderedToSource(o),i=mt(No.CLONE_TOP_LEFT_CORNER,t,this.wtRootElement)||mt(No.CLONE_LEFT,t,this.wtRootElement)||mt(No.CLONE_BOTTOM_LEFT_CORNER,t,this.wtRootElement)?this.columnFilter.offsettedTH(i):this.columnFilter.visibleRowHeadedColumnToSourceColumn(i),new Me(o,i)}},{key:"markOversizedRows",value:function(){if(!this.wot.getSetting("externalRowCalculator")){var e,t,n,r,o,i=this.TBODY.childNodes.length;if(i*this.wot.wtSettings.settings.defaultRowHeight!=jt(this.TBODY)-1||this.wot.getSetting("fixedRowsBottom"))for(;i;)i-=1,n=this.rowFilter.renderedToSource(i),e=this.getRowHeight(n),t=(o=(r=this.getTrForRow(n)).querySelector("th"))?jt(o):jt(r)-1,(!e&&this.wot.wtSettings.settings.defaultRowHeightthis.wot.getSetting("columnHeaders").length-1}},{key:"isRowHeaderLevelRendered",value:function(e){return e>this.wot.getSetting("rowHeaders").length-1}},{key:"isRowBeforeRenderedRows",value:function(e){var t=this.getFirstRenderedRow();return e<0&&(e=0),-1===t||ethis.getLastVisibleRow()}},{key:"isRowAfterRenderedRows",value:function(e){if(e<0){var t=this.wot.getSetting("columnHeaders").length+e;return this.isColumnHeaderLevelRendered(t)}return e>this.getLastRenderedRow()}},{key:"isColumnBeforeViewport",value:function(e){return this.columnFilter&&this.columnFilter.sourceToRendered(e)<0&&e>=0}},{key:"isColumnBeforeRenderedColumns",value:function(e){var t=this.getFirstRenderedColumn();return e<0&&(e=0),-1===t||ethis.getLastVisibleColumn()}},{key:"isColumnAfterRenderedColumns",value:function(e){if(e<0){var t=this.wot.getSetting("rowHeaders").length+e;return this.isRowHeaderLevelRendered(t)}return this.columnFilter&&e>this.getLastRenderedColumn()}},{key:"isLastRowFullyVisible",value:function(){return this.getLastVisibleRow()===this.getLastRenderedRow()}},{key:"isLastColumnFullyVisible",value:function(){return this.getLastVisibleColumn()===this.getLastRenderedColumn()}},{key:"allRowsInViewport",value:function(){return this.wot.getSetting("totalRows")===this.getVisibleRowsCount()}},{key:"allColumnsInViewport",value:function(){return this.wot.getSetting("totalColumns")===this.getVisibleColumnsCount()}},{key:"getRowHeight",value:function(e){return this.rowUtils.getHeight(e)}},{key:"getColumnHeaderHeight",value:function(e){return this.columnUtils.getHeaderHeight(e)}},{key:"getColumnWidth",value:function(e){return this.columnUtils.getWidth(e)}},{key:"getStretchedColumnWidth",value:function(e){return this.columnUtils.getStretchedColumnWidth(e)}},{key:"hasDefinedSize",value:function(){return this.hasTableHeight&&this.hasTableWidth}},{key:"isVisible",value:function(){return Et(this.TABLE)}},{key:"_modifyRowHeaderWidth",value:function(e){var t,n=rn(e)?e():null;return Array.isArray(n)?(t=n,n=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t0,this.hasTableWidth=u>0}this.isTableVisible=Et(this.TABLE)}},{key:"markOversizedColumnHeaders",value:function(){var e=this.wot,t=e.getOverlayName(),n=e.getSetting("columnHeaders").length;if(n&&!e.wtViewport.hasOversizedColumnHeadersMarked[t]){for(var r=e.getSetting("rowHeaders").length,o=this.getRenderedColumnsCount(),i=0;i0?-s:0,$t(t,o+="px",i)}this.adjustHeaderBordersPosition(n),this.adjustElementsSize()}}},{key:"setScrollPosition",value:function(e){var t=this.wot.rootWindow,n=!1;return this.mainTableScrollableElement===t&&t.scrollX!==e?(t.scrollTo(e,Rt(t)),n=!0):this.mainTableScrollableElement.scrollLeft!==e&&(this.mainTableScrollableElement.scrollLeft=e,n=!0),n}},{key:"onScroll",value:function(){this.wot.getSetting("onScrollVertically")}},{key:"sumCellSizes",value:function(e,t){for(var n=this.wot.wtSettings.defaultColumnWidth,r=e,o=0;r0&&void 0!==arguments[0]&&arguments[0];this.updateTrimmingContainer(),(this.needFullRender||e)&&(this.adjustRootElementSize(),this.adjustRootChildrenSize(),e||(this.areElementSizesAdjusted=!0))}},{key:"adjustRootElementSize",value:function(){var e=this.wot,t=e.wtTable,n=e.rootDocument,r=e.rootWindow,o=Xt(n),i=this.clone.wtTable.holder.parentNode.style,a=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==r||"vertical"===a){var s=this.wot.wtViewport.getWorkspaceHeight();this.wot.wtOverlays.hasScrollbarBottom&&(s-=o),s=Math.min(s,t.wtRootElement.scrollHeight),i.height="".concat(s,"px")}else i.height="";this.clone.wtTable.holder.style.height=i.height;var l=Yt(this.clone.wtTable.TABLE);i.width="".concat(0===l?l:l+4,"px")}},{key:"adjustRootChildrenSize",value:function(){var e=Xt(this.wot.rootDocument);this.clone.wtTable.hider.style.height=this.hider.style.height,this.clone.wtTable.holder.style.height=this.clone.wtTable.holder.parentNode.style.height,0===e&&(e=30),this.clone.wtTable.holder.style.width="".concat(parseInt(this.clone.wtTable.holder.parentNode.style.width,10)+e,"px")}},{key:"applyToDOM",value:function(){var e=this.wot.getSetting("totalColumns");if(this.areElementSizesAdjusted||this.adjustElementsSize(),"number"==typeof this.wot.wtViewport.columnsRenderCalculator.startPosition)this.spreader.style.left="".concat(this.wot.wtViewport.columnsRenderCalculator.startPosition,"px");else{if(0!==e)throw new Error("Incorrect value of the columnsRenderCalculator");this.spreader.style.left="0"}this.spreader.style.right="",this.needFullRender&&this.syncOverlayOffset()}},{key:"syncOverlayOffset",value:function(){"number"==typeof this.wot.wtViewport.rowsRenderCalculator.startPosition?this.clone.wtTable.spreader.style.top="".concat(this.wot.wtViewport.rowsRenderCalculator.startPosition,"px"):this.clone.wtTable.spreader.style.top=""}},{key:"scrollTo",value:function(e,t){var n=this.getTableParentOffset(),r=(this.wot.cloneSource?this.wot.cloneSource:this.wot).wtTable.holder,o=0;return t&&r.offsetWidth!==r.clientWidth&&(o=Xt(this.wot.rootDocument)),t?(n+=this.sumCellSizes(0,e+1),n-=this.wot.wtViewport.getViewportWidth()):n+=this.sumCellSizes(this.wot.getSetting("fixedColumnsLeft"),e),n+=o,this.setScrollPosition(n)}},{key:"getTableParentOffset",value:function(){var e=0;return this.wot.getSetting("preventOverflow")||this.trimmingContainer!==this.wot.rootWindow||(e=this.wot.wtTable.holderOffset.left),e}},{key:"getScrollPosition",value:function(){return At(this.mainTableScrollableElement,this.wot.rootWindow)}},{key:"adjustHeaderBordersPosition",value:function(e){var t=this.wot.wtTable.holder.parentNode,n=this.wot.getSetting("rowHeaders"),r=this.wot.getSetting("fixedColumnsLeft");if(this.wot.getSetting("totalRows")?bt(t,"emptyRows"):wt(t,"emptyRows"),r&&!n.length)wt(t,"innerBorderLeft");else if(!r&&n.length){var o=gt(t,"innerBorderLeft");e?wt(t,"innerBorderLeft"):bt(t,"innerBorderLeft"),(!o&&e||o&&!e)&&this.wot.wtOverlays.adjustElementsSize()}}}],r&&li(n.prototype,r),t}(No);No.registerOverlay(No.CLONE_LEFT,hi);var fi={getFirstRenderedRow:function(){return 0===this.wot.getSetting("totalRows")?-1:0},getFirstVisibleRow:function(){return this.getFirstRenderedRow()},getLastRenderedRow:function(){return this.getRenderedRowsCount()-1},getLastVisibleRow:function(){return this.getLastRenderedRow()},getRenderedRowsCount:function(){var e=this.wot.getSetting("totalRows");return Math.min(this.wot.getSetting("fixedRowsTop"),e)},getVisibleRowsCount:function(){return this.getRenderedRowsCount()}};Z(fi,"MIXIN_NAME","stickyRowsTop",{writable:!1,enumerable:!1});const di=fi;function mi(e){return mi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},mi(e)}function pi(e){return pi=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},pi(e)}function yi(e,t){return yi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},yi(e,t)}var vi=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){return!t||"object"!==mi(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}(this,pi(t).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&yi(e,t)}(t,e),t}(Bo);J(vi,di),J(vi,Go);const gi=vi;function wi(e){return wi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wi(e)}function bi(e,t,n){return bi=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&ki(o,n.prototype),o},bi.apply(null,arguments)}function _i(e,t){for(var n=0;n0?-s:0,$t(e,r,o+="px")}this.adjustHeaderBordersPosition(t),this.adjustElementsSize()}}},{key:"setScrollPosition",value:function(e){var t=this.wot.rootWindow,n=!1;return this.mainTableScrollableElement===t&&t.scrollY!==e?(t.scrollTo(Lt(t),e),n=!0):this.mainTableScrollableElement.scrollTop!==e&&(this.mainTableScrollableElement.scrollTop=e,n=!0),n}},{key:"onScroll",value:function(){this.wot.getSetting("onScrollHorizontally")}},{key:"sumCellSizes",value:function(e,t){for(var n=this.wot.wtSettings.settings.defaultRowHeight,r=e,o=0;r0&&void 0!==arguments[0]&&arguments[0];this.updateTrimmingContainer(),(this.needFullRender||e)&&(this.adjustRootElementSize(),this.adjustRootChildrenSize(),e||(this.areElementSizesAdjusted=!0))}},{key:"adjustRootElementSize",value:function(){var e=this.wot,t=e.wtTable,n=e.rootDocument,r=e.rootWindow,o=Xt(n),i=this.clone.wtTable.holder.parentNode.style,a=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==r||"horizontal"===a){var s=this.wot.wtViewport.getWorkspaceWidth();this.wot.wtOverlays.hasScrollbarRight&&(s-=o),s=Math.min(s,t.wtRootElement.scrollWidth),i.width="".concat(s,"px")}else i.width="";this.clone.wtTable.holder.style.width=i.width;var l=It(this.clone.wtTable.TABLE);this.wot.wtTable.hasDefinedSize()||(l=0),i.height="".concat(0===l?l:l+4,"px")}},{key:"adjustRootChildrenSize",value:function(){var e=Xt(this.wot.rootDocument);this.clone.wtTable.hider.style.width=this.hider.style.width,this.clone.wtTable.holder.style.width=this.clone.wtTable.holder.parentNode.style.width,0===e&&(e=30),this.clone.wtTable.holder.style.height="".concat(parseInt(this.clone.wtTable.holder.parentNode.style.height,10)+e,"px")}},{key:"applyToDOM",value:function(){var e=this.wot.getSetting("totalRows");if(this.areElementSizesAdjusted||this.adjustElementsSize(),"number"==typeof this.wot.wtViewport.rowsRenderCalculator.startPosition)this.spreader.style.top="".concat(this.wot.wtViewport.rowsRenderCalculator.startPosition,"px");else{if(0!==e)throw new Error("Incorrect value of the rowsRenderCalculator");this.spreader.style.top="0"}this.spreader.style.bottom="",this.needFullRender&&this.syncOverlayOffset()}},{key:"syncOverlayOffset",value:function(){"number"==typeof this.wot.wtViewport.columnsRenderCalculator.startPosition?this.clone.wtTable.spreader.style.left="".concat(this.wot.wtViewport.columnsRenderCalculator.startPosition,"px"):this.clone.wtTable.spreader.style.left=""}},{key:"scrollTo",value:function(e,t){var n=this.wot,r=(n.cloneSource?n.cloneSource:n).wtTable.holder,o=this.getTableParentOffset(),i=0;if(t&&r.offsetHeight!==r.clientHeight&&(i=Xt(n.rootDocument)),t){var a=n.getSetting("fixedRowsBottom"),s=n.getSetting("totalRows");o+=this.sumCellSizes(0,e+1),o-=n.wtViewport.getViewportHeight()-this.sumCellSizes(s-a,s),o+=1}else o+=this.sumCellSizes(n.getSetting("fixedRowsTop"),e);return o+=i,this.setScrollPosition(o)}},{key:"getTableParentOffset",value:function(){return this.mainTableScrollableElement===this.wot.rootWindow?this.wot.wtTable.holderOffset.top:0}},{key:"getScrollPosition",value:function(){return Dt(this.mainTableScrollableElement,this.wot.rootWindow)}},{key:"redrawSelectionBorders",value:function(e){if(e&&e.cellRange){var t=e.getBorder(this.wot),n=e.getCorners();t.disappear(),t.appear(n)}}},{key:"redrawAllSelectionsBorders",value:function(){var e=this,t=this.wot.selections;this.redrawSelectionBorders(t.getCell()),P(t.getAreas(),(function(t){e.redrawSelectionBorders(t)})),this.redrawSelectionBorders(t.getFill()),this.wot.wtTable.wot.wtOverlays.leftOverlay.refresh()}},{key:"adjustHeaderBordersPosition",value:function(e){var t=this.wot.wtTable.holder.parentNode;if(this.wot.getSetting("totalColumns")?bt(t,"emptyColumns"):wt(t,"emptyColumns"),0===this.wot.getSetting("fixedRowsTop")&&this.wot.getSetting("columnHeaders").length>0){var n=gt(t,"innerBorderTop");e||0===this.wot.getSetting("totalRows")?wt(t,"innerBorderTop"):bt(t,"innerBorderTop"),(!n&&e||n&&!e)&&(this.wot.wtOverlays.adjustElementsSize(),this.redrawAllSelectionsBorders())}if(0===this.wot.getSetting("rowHeaders").length){var r=this.clone.wtTable.THEAD.querySelectorAll("th:nth-of-type(2)");if(r)for(var o=0;o0&&(s="".concat(-o,"px")),t&&"horizontal"!==t||r<0&&i-e.offsetHeight>0&&(l="".concat(-r,"px")),$t(e,s,l)}else Zt(e);var u=It(this.clone.wtTable.TABLE),c=Yt(this.clone.wtTable.TABLE);this.wot.wtTable.hasDefinedSize()||(u=0),e.style.height="".concat(0===u?u:u+4,"px"),e.style.width="".concat(0===c?c:c+4,"px")}}}],r&&Ai(n.prototype,r),t}(No);No.registerOverlay(No.CLONE_TOP_LEFT_CORNER,Pi);var xi={getFirstRenderedRow:function(){var e=this.wot.getSetting("totalRows")-this.wot.getSetting("fixedRowsBottom");return e<0?-1:e},getFirstVisibleRow:function(){return this.getFirstRenderedRow()},getLastRenderedRow:function(){return this.wot.getSetting("totalRows")-1},getLastVisibleRow:function(){return this.getLastRenderedRow()},getRenderedRowsCount:function(){var e=this.wot.getSetting("totalRows");return Math.min(this.wot.getSetting("fixedRowsBottom"),e)},getVisibleRowsCount:function(){return this.getRenderedRowsCount()}};Z(xi,"MIXIN_NAME","stickyRowsBottom",{writable:!1,enumerable:!1});const Yi=xi;function Ii(e){return Ii="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ii(e)}function ji(e){return ji=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},ji(e)}function Fi(e,t){return Fi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Fi(e,t)}var Wi=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){return!t||"object"!==Ii(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}(this,ji(t).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Fi(e,t)}(t,e),t}(Bo);J(Wi,Yi),J(Wi,Go);const Bi=Wi;function Vi(e){return Vi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vi(e)}function Ui(e,t,n){return Ui=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&qi(o,n.prototype),o},Ui.apply(null,arguments)}function zi(e,t){for(var n=0;nc?u-c:0,o+="px",e.style.top="",e.style.left=r,e.style.bottom=o}this.adjustHeaderBordersPosition(t),this.adjustElementsSize()}}},{key:"setScrollPosition",value:function(e){var t=this.wot.rootWindow,n=!1;return this.mainTableScrollableElement===t?(t.scrollTo(Lt(t),e),n=!0):this.mainTableScrollableElement.scrollTop!==e&&(this.mainTableScrollableElement.scrollTop=e,n=!0),n}},{key:"onScroll",value:function(){this.wot.getSetting("onScrollHorizontally")}},{key:"sumCellSizes",value:function(e,t){for(var n=this.wot,r=n.wtTable,o=n.wtSettings.settings.defaultRowHeight,i=e,a=0;i0&&void 0!==arguments[0]&&arguments[0];this.updateTrimmingContainer(),(this.needFullRender||e)&&(this.adjustRootElementSize(),this.adjustRootChildrenSize(),e||(this.areElementSizesAdjusted=!0))}},{key:"adjustRootElementSize",value:function(){var e=this.wot,t=e.wtTable,n=e.wtViewport,r=e.rootWindow,o=Xt(this.wot.rootDocument),i=this.clone.wtTable.holder.parentNode.style,a=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==r||"horizontal"===a){var s=n.getWorkspaceWidth();this.wot.wtOverlays.hasScrollbarRight&&(s-=o),s=Math.min(s,t.wtRootElement.scrollWidth),i.width="".concat(s,"px")}else i.width="";this.clone.wtTable.holder.style.width=i.width;var l=It(this.clone.wtTable.TABLE);this.wot.wtTable.hasDefinedSize()||(l=0),i.height="".concat(l,"px")}},{key:"adjustRootChildrenSize",value:function(){var e=Xt(this.wot.rootDocument);this.clone.wtTable.hider.style.width=this.hider.style.width,this.clone.wtTable.holder.style.width=this.clone.wtTable.holder.parentNode.style.width,0===e&&(e=30),this.clone.wtTable.holder.style.height="".concat(parseInt(this.clone.wtTable.holder.parentNode.style.height,10)+e,"px")}},{key:"applyToDOM",value:function(){var e=this.wot.getSetting("totalRows");if(this.areElementSizesAdjusted||this.adjustElementsSize(),"number"==typeof this.wot.wtViewport.rowsRenderCalculator.startPosition)this.spreader.style.top="".concat(this.wot.wtViewport.rowsRenderCalculator.startPosition,"px");else{if(0!==e)throw new Error("Incorrect value of the rowsRenderCalculator");this.spreader.style.top="0"}this.spreader.style.bottom="",this.needFullRender&&this.syncOverlayOffset()}},{key:"syncOverlayOffset",value:function(){"number"==typeof this.wot.wtViewport.columnsRenderCalculator.startPosition?this.clone.wtTable.spreader.style.left="".concat(this.wot.wtViewport.columnsRenderCalculator.startPosition,"px"):this.clone.wtTable.spreader.style.left=""}},{key:"scrollTo",value:function(e,t){var n=this.getTableParentOffset(),r=(this.wot.cloneSource?this.wot.cloneSource:this.wot).wtTable.holder,o=0;t&&r.offsetHeight!==r.clientHeight&&(o=Xt(this.wot.rootDocument)),t?(n+=this.sumCellSizes(0,e+1),n-=this.wot.wtViewport.getViewportHeight(),n+=1):n+=this.sumCellSizes(this.wot.getSetting("fixedRowsBottom"),e),n+=o,this.setScrollPosition(n)}},{key:"getTableParentOffset",value:function(){return this.mainTableScrollableElement===this.wot.rootWindow?this.wot.wtTable.holderOffset.top:0}},{key:"getScrollPosition",value:function(){return Dt(this.mainTableScrollableElement,this.wot.rootWindow)}},{key:"adjustHeaderBordersPosition",value:function(e){if(0===this.wot.getSetting("fixedRowsBottom")&&this.wot.getSetting("columnHeaders").length>0){var t=this.wot.wtTable.holder.parentNode,n=gt(t,"innerBorderTop");e?wt(t,"innerBorderTop"):bt(t,"innerBorderTop"),(!n&&e||n&&!e)&&this.wot.wtOverlays.adjustElementsSize()}if(0===this.wot.getSetting("rowHeaders").length){var r=this.clone.wtTable.THEAD.querySelector("th:nth-of-type(2)");r&&(r.style["border-left-width"]=0)}}}],r&&zi(n.prototype,r),t}(No);function Ki(e){return Ki="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ki(e)}function Ji(e){return Ji=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Ji(e)}function $i(e,t){return $i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},$i(e,t)}No.registerOverlay(No.CLONE_BOTTOM,Xi);var Qi=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){return!t||"object"!==Ki(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}(this,Ji(t).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&$i(e,t)}(t,e),t}(Bo);J(Qi,Yi),J(Qi,ei);const Zi=Qi;function ea(e){return ea="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ea(e)}function ta(e,t,n){return ta=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&oa(o,n.prototype),o},ta.apply(null,arguments)}function na(e,t){for(var n=0;ns?i-s:0,r+="px",n+="px",t.style.top="",t.style.left=n,t.style.bottom=r}else Zt(t),this.repositionOverlay();var l=It(this.clone.wtTable.TABLE),u=Yt(this.clone.wtTable.TABLE);this.wot.wtTable.hasDefinedSize()||(l=0),t.style.height="".concat(l,"px"),t.style.width="".concat(u,"px")}}}],r&&na(n.prototype,r),t}(No);function aa(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function sa(e,t){for(var n=0;nMath.ceil(o.top+o.height)||a.clientXMath.ceil(o.left+o.width))&&(n.eventManager.removeEventListener(r,"mousemove",e),t.style.display="block")}))}}},{key:"createBorders",value:function(e){var t=this.wot.rootDocument;this.main=t.createElement("div");var n=["top","left","bottom","right","corner"],r=this.main.style;r.position="absolute",r.top=0,r.left=0;for(var o=0;o<5;o++){var i=n[o],a=t.createElement("div");a.className="wtBorder ".concat(this.settings.className||""),this.settings[i]&&this.settings[i].hide&&(a.className+=" hidden"),(r=a.style).backgroundColor=this.settings[i]&&this.settings[i].color?this.settings[i].color:e.border.color,r.height=this.settings[i]&&this.settings[i].width?"".concat(this.settings[i].width,"px"):"".concat(e.border.width,"px"),r.width=this.settings[i]&&this.settings[i].width?"".concat(this.settings[i].width,"px"):"".concat(e.border.width,"px"),this.main.appendChild(a)}this.top=this.main.childNodes[0],this.left=this.main.childNodes[1],this.bottom=this.main.childNodes[2],this.right=this.main.childNodes[3],this.topStyle=this.top.style,this.leftStyle=this.left.style,this.bottomStyle=this.bottom.style,this.rightStyle=this.right.style,this.corner=this.main.childNodes[4],this.corner.className+=" corner",this.cornerStyle=this.corner.style,this.cornerStyle.width=this.cornerDefaultStyle.width,this.cornerStyle.height=this.cornerDefaultStyle.height,this.cornerStyle.border=[this.cornerDefaultStyle.borderWidth,this.cornerDefaultStyle.borderStyle,this.cornerDefaultStyle.borderColor].join(" "),Pe()&&this.createMultipleSelectorHandles(),this.disappear();var s=this.wot.wtTable,l=s.bordersHolder;l||((l=t.createElement("div")).className="htBorders",s.bordersHolder=l,s.spreader.appendChild(l)),l.appendChild(this.main)}},{key:"createMultipleSelectorHandles",value:function(){var e=this,t=this.wot.rootDocument;this.selectionHandles={topLeft:t.createElement("DIV"),topLeftHitArea:t.createElement("DIV"),bottomRight:t.createElement("DIV"),bottomRightHitArea:t.createElement("DIV")},this.selectionHandles.topLeft.className="topLeftSelectionHandle",this.selectionHandles.topLeftHitArea.className="topLeftSelectionHandle-HitArea",this.selectionHandles.bottomRight.className="bottomRightSelectionHandle",this.selectionHandles.bottomRightHitArea.className="bottomRightSelectionHandle-HitArea",this.selectionHandles.styles={topLeft:this.selectionHandles.topLeft.style,topLeftHitArea:this.selectionHandles.topLeftHitArea.style,bottomRight:this.selectionHandles.bottomRight.style,bottomRightHitArea:this.selectionHandles.bottomRightHitArea.style},ee({position:"absolute",height:"".concat(40,"px"),width:"".concat(40,"px"),"border-radius":"".concat(parseInt(40/1.5,10),"px")},(function(t,n){e.selectionHandles.styles.bottomRightHitArea[n]=t,e.selectionHandles.styles.topLeftHitArea[n]=t})),ee({position:"absolute",height:"".concat(10,"px"),width:"".concat(10,"px"),"border-radius":"".concat(parseInt(10/1.5,10),"px"),background:"#F5F5FF",border:"1px solid #4285c8"},(function(t,n){e.selectionHandles.styles.bottomRight[n]=t,e.selectionHandles.styles.topLeft[n]=t})),this.main.appendChild(this.selectionHandles.topLeft),this.main.appendChild(this.selectionHandles.bottomRight),this.main.appendChild(this.selectionHandles.topLeftHitArea),this.main.appendChild(this.selectionHandles.bottomRightHitArea)}},{key:"isPartRange",value:function(e,t){var n=this.wot.selections.createOrGetArea();return!(!n.cellRange||e===n.cellRange.to.row&&t===n.cellRange.to.col)}},{key:"updateMultipleSelectionHandlesPosition",value:function(e,t,n,r,o,i){var a=parseInt(this.selectionHandles.styles.topLeft.width,10),s=parseInt(this.selectionHandles.styles.topLeftHitArea.width,10);this.selectionHandles.styles.topLeft.top="".concat(parseInt(n-a,10),"px"),this.selectionHandles.styles.topLeft.left="".concat(parseInt(r-a,10),"px"),this.selectionHandles.styles.topLeftHitArea.top="".concat(parseInt(n-s/4*3,10),"px"),this.selectionHandles.styles.topLeftHitArea.left="".concat(parseInt(r-s/4*3,10),"px"),this.selectionHandles.styles.bottomRight.top="".concat(parseInt(n+i,10),"px"),this.selectionHandles.styles.bottomRight.left="".concat(parseInt(r+o,10),"px"),this.selectionHandles.styles.bottomRightHitArea.top="".concat(parseInt(n+i-s/4,10),"px"),this.selectionHandles.styles.bottomRightHitArea.left="".concat(parseInt(r+o-s/4,10),"px"),this.settings.border.cornerVisible&&this.settings.border.cornerVisible()?(this.selectionHandles.styles.topLeft.display="block",this.selectionHandles.styles.topLeftHitArea.display="block",this.isPartRange(e,t)?(this.selectionHandles.styles.bottomRight.display="none",this.selectionHandles.styles.bottomRightHitArea.display="none"):(this.selectionHandles.styles.bottomRight.display="block",this.selectionHandles.styles.bottomRightHitArea.display="block")):(this.selectionHandles.styles.topLeft.display="none",this.selectionHandles.styles.bottomRight.display="none",this.selectionHandles.styles.topLeftHitArea.display="none",this.selectionHandles.styles.bottomRightHitArea.display="none"),e===this.wot.wtSettings.getSetting("fixedRowsTop")||t===this.wot.wtSettings.getSetting("fixedColumnsLeft")?(this.selectionHandles.styles.topLeft.zIndex="9999",this.selectionHandles.styles.topLeftHitArea.zIndex="9999"):(this.selectionHandles.styles.topLeft.zIndex="",this.selectionHandles.styles.topLeftHitArea.zIndex="")}},{key:"appear",value:function(e){if(!this.disabled){for(var t,n,r,o,i=this.wot,a=i.wtTable,s=i.rootDocument,l=i.rootWindow,u=a.getRenderedRowsCount(),c=0;c=e[0]&&h<=e[2]){t=h;break}}for(var f=u-1;f>=0;f-=1){var d=a.rowFilter.renderedToSource(f);if(d>=e[0]&&d<=e[2]){n=d;break}}for(var m=a.getRenderedColumnsCount(),p=0;p=e[1]&&y<=e[3]){r=y;break}}for(var v=m-1;v>=0;v-=1){var g=a.columnFilter.renderedToSource(v);if(g>=e[1]&&g<=e[3]){o=g;break}}if(void 0!==t&&void 0!==r){var w=a.getCell(new Me(t,r)),b=t!==n||r!==o,_=b?a.getCell(new Me(n,o)):w,M=Ot(w),k=b?Ot(_):M,S=Ot(a.TABLE),C=M.top,T=M.left,E=T-S.left-1,O=k.left+Yt(_)-T;if(this.isEntireColumnSelected(t,n)){var R=this.getDimensionsFromHeader("columns",r,o,S),L=null;if(R){var D=aa(R,3);L=D[0],E=D[1],O=D[2]}L&&(w=L)}var A=C-S.top-1,H=k.top+It(_)-C;if(this.isEntireRowSelected(r,o)){var N=this.getDimensionsFromHeader("rows",t,n,S),P=null;if(N){var x=aa(N,3);P=x[0],A=x[1],H=x[2]}P&&(w=P)}var Y=xt(w,l);parseInt(Y.borderTopWidth,10)>0&&(A+=1,H=H>0?H-1:0),parseInt(Y.borderLeftWidth,10)>0&&(E+=1,O=O>0?O-1:0),this.topStyle.top="".concat(A,"px"),this.topStyle.left="".concat(E,"px"),this.topStyle.width="".concat(O,"px"),this.topStyle.display="block",this.leftStyle.top="".concat(A,"px"),this.leftStyle.left="".concat(E,"px"),this.leftStyle.height="".concat(H,"px"),this.leftStyle.display="block";var I=Math.floor(this.settings.border.width/2);this.bottomStyle.top="".concat(A+H-I,"px"),this.bottomStyle.left="".concat(E,"px"),this.bottomStyle.width="".concat(O,"px"),this.bottomStyle.display="block",this.rightStyle.top="".concat(A,"px"),this.rightStyle.left="".concat(E+O-I,"px"),this.rightStyle.height="".concat(H+1,"px"),this.rightStyle.display="block";var j=this.settings.border.cornerVisible;j="function"==typeof j?j(this.settings.layerLevel):j;var F=this.wot.getSetting("onModifyGetCellCoords",n,o),W=n,B=o;if(F&&Array.isArray(F)){var V=aa(F,4);W=V[2],B=V[3]}if(Pe()||!j||this.isPartRange(W,B))this.cornerStyle.display="none";else{this.cornerStyle.top="".concat(A+H-4,"px"),this.cornerStyle.left="".concat(E+O-4,"px"),this.cornerStyle.borderRightWidth=this.cornerDefaultStyle.borderWidth,this.cornerStyle.width=this.cornerDefaultStyle.width,this.cornerStyle.display="none";var U=Nt(a.TABLE),z=U===l;z&&(U=s.documentElement),o===this.wot.getSetting("totalColumns")-1&&(z?_.getBoundingClientRect().left:_.offsetLeft)+Yt(_)+parseInt(this.cornerDefaultStyle.width,10)/2>=Ft(U)&&(this.cornerStyle.left="".concat(Math.floor(E+O-3-parseInt(this.cornerDefaultStyle.width,10)/2),"px"),this.cornerStyle.borderRightWidth=0),n===this.wot.getSetting("totalRows")-1&&(z?_.getBoundingClientRect().top:_.offsetTop)+It(_)+parseInt(this.cornerDefaultStyle.height,10)/2>=jt(U)&&(this.cornerStyle.top="".concat(Math.floor(A+H-3-parseInt(this.cornerDefaultStyle.height,10)/2),"px"),this.cornerStyle.borderBottomWidth=0),this.cornerStyle.display="block"}Pe()&&this.updateMultipleSelectionHandlesPosition(n,o,A,E,O,H)}else this.disappear()}}},{key:"isEntireColumnSelected",value:function(e,t){return e===this.wot.wtTable.getFirstRenderedRow()&&t===this.wot.wtTable.getLastRenderedRow()}},{key:"isEntireRowSelected",value:function(e,t){return e===this.wot.wtTable.getFirstRenderedColumn()&&t===this.wot.wtTable.getLastRenderedColumn()}},{key:"getDimensionsFromHeader",value:function(e,t,n,r){var o=this.wot.wtTable,i=o.wtRootElement.parentNode,a=null,s=null,l=null,u=null,c=null,h=null,f=null,d=null;switch(e){case"rows":a=function(){return o.getRowHeader.apply(o,arguments)},s=function(){return It.apply(void 0,arguments)},l="ht__selection--rows",h="top";break;case"columns":a=function(){return o.getColumnHeader.apply(o,arguments)},s=function(){return Yt.apply(void 0,arguments)},l="ht__selection--columns",h="left"}if(i.className.includes(l)){var m=this.wot.getSetting("columnHeaders").length;if(f=a(t,m-1),d=a(n,m-1),!f||!d)return!1;var p=Ot(f),y=Ot(d);return f&&d&&(u=p[h]-r[h]-1,c=y[h]+s(d)-p[h]),[f,u,c]}return!1}},{key:"changeBorderStyle",value:function(e,t){var n=this[e].style,r=t[e];!r||r.hide?wt(this[e],"hidden"):(gt(this[e],"hidden")&&bt(this[e],"hidden"),n.backgroundColor=r.color,"top"!==e&&"bottom"!==e||(n.height="".concat(r.width,"px")),"right"!==e&&"left"!==e||(n.width="".concat(r.width,"px")))}},{key:"changeBorderToDefaultStyle",value:function(e){var t=this[e].style;t.backgroundColor="#000",t.width="".concat(1,"px"),t.height="".concat(1,"px")}},{key:"toggleHiddenClass",value:function(e,t){this.changeBorderToDefaultStyle(e),t?wt(this[e],"hidden"):bt(this[e],"hidden")}},{key:"disappear",value:function(){this.topStyle.display="none",this.leftStyle.display="none",this.bottomStyle.display="none",this.rightStyle.display="none",this.cornerStyle.display="none",Pe()&&(this.selectionHandles.styles.topLeft.display="none",this.selectionHandles.styles.bottomRight.display="none")}},{key:"destroy",value:function(){this.eventManager.destroyWithOwnEventsOnly(),this.main.parentNode.removeChild(this.main)}}],n&&sa(t.prototype,n),e}();const ua=la;function ca(e){return ca="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ca(e)}function ha(e,t){for(var n=0;n4&&void 0!==arguments[4]&&arguments[4],i=e.wtTable.getCell(new Me(t,n));if("object"===ca(i)){var a=r;o&&(a=this.classNameGenerator(i),this.classNames.includes(a)||this.classNames.push(a)),wt(i,a)}return this}},{key:"linearClassNameGenerator",value:function(e,t){return function n(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;if(0===t||0===o)return e;var i=o>=0?o:t,a=e;if(gt(r,0==(i-=1)?e:"".concat(e,"-").concat(i))){var s=i+1;a="".concat(e,"-").concat(s)}else a=n(r,i);return a}}},{key:"draw",value:function(e){if(this.isEmpty())this.settings.border&&this.getBorder(e).disappear();else{for(var t=e.wtTable.getRenderedRowsCount(),n=e.wtTable.getRenderedColumnsCount(),r=this.getCorners(),o=(_=4,function(e){if(Array.isArray(e))return e}(b=r)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(b,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),i=o[0],a=o[1],s=o[2],l=o[3],u=0;u=a&&c<=l){var h=e.wtTable.getColumnHeader(c);if(h){var f=[];this.settings.highlightHeaderClassName&&f.push(this.settings.highlightHeaderClassName),this.settings.highlightColumnClassName&&f.push(this.settings.highlightColumnClassName),wt(h,f)}}}for(var d=0;d=i&&m<=s){var p=e.wtTable.getRowHeader(m);if(p){var y=[];this.settings.highlightHeaderClassName&&y.push(this.settings.highlightHeaderClassName),this.settings.highlightRowClassName&&y.push(this.settings.highlightRowClassName),wt(p,y)}}for(var v=0;v=i&&m<=s&&g>=a&&g<=l?this.settings.className&&this.addClassAtCoords(e,m,g,this.settings.className,this.settings.markIntersections):m>=i&&m<=s?this.settings.highlightRowClassName&&this.addClassAtCoords(e,m,g,this.settings.highlightRowClassName):g>=a&&g<=l&&this.settings.highlightColumnClassName&&this.addClassAtCoords(e,m,g,this.settings.highlightColumnClassName);var w=e.getSetting("onAfterDrawSelection",m,g,r,this.settings.layerLevel);"string"==typeof w&&this.addClassAtCoords(e,m,g,w)}}e.getSetting("onBeforeDrawBorders",r,this.settings.className),this.settings.border&&this.getBorder(e).appear(r)}var b,_}},{key:"destroy",value:function(){Object.values(this.instanceBorders).forEach((function(e){return e.destroy()}))}}],n&&ha(t.prototype,n),e}();const da=fa;var ma={_hooksStorage:Object.create(null),addHook:function(e,t){return this._hooksStorage[e]||(this._hooksStorage[e]=[]),this.hot.addHook(e,t),this._hooksStorage[e].push(t),this},removeHooksByKey:function(e){var t=this;P(this._hooksStorage[e]||[],(function(n){t.hot.removeHook(e,n)}))},clearHooks:function(){var e=this;ee(this._hooksStorage,(function(t,n){return e.removeHooksByKey(n)})),this._hooksStorage={}}};Z(ma,"MIXIN_NAME","hooksRefRegisterer",{writable:!1,enumerable:!1});const pa=ma;function ya(e){return ya="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ya(e)}function va(e){return va=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},va(e)}function ga(e,t){return ga=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ga(e,t)}function wa(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ba(e,t){for(var n=0;nn[2]&&(r=n[0],n[0]=n[2],n[2]=r),n[1]>n[3]&&(r=n[1],n[1]=n[3],n[3]=r)):n=[this.row,this.col,null,null],this.hot.populateFromArray(n[0],n[1],e,n[2],n[3],"edit")}},{key:"beginEditing",value:function(e,t){if(this.state===_a){if(this.hot.view.scrollViewport(new Me(this.row,this.col)),this.state=Ma,this.isInFullEditMode()){var n="string"==typeof e?e:ir(this.originalValue);this.setValue(n)}this.open(t),this._opened=!0,this.focus(),this.hot.view.render(),this.hot.runHooks("afterBeginEditing",this.row,this.col)}}},{key:"finishEditing",value:function(e,t,n){var r,o=this;if(n){var i=this._closeCallback;this._closeCallback=function(e){i&&i(e),n(e),o.hot.view.render()}}if(!this.isWaiting())if(this.state!==_a){if(this.state===Ma){if(e)return this.cancelChanges(),void this.hot.view.render();var a=this.getValue();r=this.hot.getSettings().trimWhitespace?[["string"==typeof a?String.prototype.trim.call(a||""):a]]:[[a]],this.state=ka,this.saveValue(r,t),this.hot.getCellValidator(this.cellProperties)?this.hot.addHookOnce("postAfterValidate",(function(e){o.state=Sa,o.discardEditor(e)})):(this.state=Sa,this.discardEditor(!0))}}else this.hot._registerTimeout((function(){o._fireCallbacks(!0)}))}},{key:"cancelChanges",value:function(){this.state=Sa,this.discardEditor()}},{key:"discardEditor",value:function(e){this.state===Sa&&(!1===e&&!0!==this.cellProperties.allowInvalid?(this.hot.selectCell(this.row,this.col),this.focus(),this.state=Ma,this._fireCallbacks(!1)):(this.close(),this._opened=!1,this._fullEditMode=!1,this.state=_a,this._fireCallbacks(!0)))}},{key:"enableFullEditMode",value:function(){this._fullEditMode=!0}},{key:"isInFullEditMode",value:function(){return this._fullEditMode}},{key:"isOpened",value:function(){return this._opened}},{key:"isWaiting",value:function(){return this.state===ka}},{key:"getEditedCellsLayerClass",value:function(){switch(this.checkEditorSection()){case"right":return"ht_clone_right";case"left":return"ht_clone_left";case"bottom":return"ht_clone_bottom";case"bottom-right-corner":return"ht_clone_bottom_right_corner";case"bottom-left-corner":return"ht_clone_bottom_left_corner";case"top":return"ht_clone_top";case"top-right-corner":return"ht_clone_top_right_corner";case"top-left-corner":return"ht_clone_top_left_corner";default:return"ht_clone_master"}}},{key:"getEditedCell",value:function(){return this.hot.getCell(this.row,this.col,!0)}},{key:"checkEditorSection",value:function(){var e=this.hot.countRows(),t="";return this.row=e-this.hot.getSettings().fixedRowsBottom?t=this.col=t&&!1!==n(r););}function Da(e,t){return t=parseInt(t.toString().replace("%",""),10),parseInt(e*t/100,10)}n(17),n(18636),n(35231),n(10678),n(12091);var Aa=n(27367),Ha=n.n(Aa);function Na(e){return Na="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Na(e)}function Pa(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0]?nn(this.TEXTAREA):(this.TEXTAREA.select(),qt(this.TEXTAREA,this.TEXTAREA.value.length))}},{key:"createElements",value:function(){var e=this.hot.rootDocument;this.TEXTAREA=e.createElement("TEXTAREA"),this.TEXTAREA.tabIndex=-1,wt(this.TEXTAREA,"handsontableInput"),this.textareaStyle=this.TEXTAREA.style,this.textareaStyle.width=0,this.textareaStyle.height=0,this.textareaStyle.overflowY="visible",this.TEXTAREA_PARENT=e.createElement("DIV"),wt(this.TEXTAREA_PARENT,"handsontableInputHolder"),gt(this.TEXTAREA_PARENT,this.layerClass)&&bt(this.TEXTAREA_PARENT,this.layerClass),wt(this.TEXTAREA_PARENT,Fa),this.textareaParentStyle=this.TEXTAREA_PARENT.style,this.TEXTAREA_PARENT.appendChild(this.TEXTAREA),this.hot.rootElement.appendChild(this.TEXTAREA_PARENT)}},{key:"hideEditableElement",value:function(){(De()||Le())&&(this.textareaStyle.textIndent="-99999px"),this.textareaStyle.overflowY="visible",this.textareaParentStyle.opacity="0",this.textareaParentStyle.height="1px",gt(this.TEXTAREA_PARENT,this.layerClass)&&bt(this.TEXTAREA_PARENT,this.layerClass),wt(this.TEXTAREA_PARENT,Fa)}},{key:"showEditableElement",value:function(){this.textareaParentStyle.height="",this.textareaParentStyle.overflow="",this.textareaParentStyle.position="",this.textareaParentStyle.right="auto",this.textareaParentStyle.opacity="1",this.textareaStyle.textIndent="",this.textareaStyle.overflowY="hidden";var e=this.TEXTAREA_PARENT.childNodes,t=!1;Ra(e.length-1,(function(n){if(gt(e[n],"handsontableEditor"))return t=!0,!1})),gt(this.TEXTAREA_PARENT,Fa)&&bt(this.TEXTAREA_PARENT,Fa),t?(this.layerClass="ht_editor_visible",wt(this.TEXTAREA_PARENT,this.layerClass)):(this.layerClass=this.getEditedCellsLayerClass(),wt(this.TEXTAREA_PARENT,this.layerClass))}},{key:"refreshValue",value:function(){var e=this.hot.toPhysicalRow(this.row),t=this.hot.getSourceDataAtCell(e,this.col);this.originalValue=t,this.setValue(t),this.refreshDimensions()}},{key:"refreshDimensions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.state===Ma||e)if(this.TD=this.getEditedCell(),this.TD){var t,n=this.hot.view.wt,r=n.wtOverlays,o=n.wtViewport,i=Ot(this.TD),a=Ot(this.hot.rootElement),s=r.topOverlay.holder,l=r.leftOverlay.holder,u=this.hot.countRows(),c=s!==this.hot.rootWindow?s.scrollTop:0,h=l!==this.hot.rootWindow?l.scrollLeft:0,f=this.checkEditorSection(),d=["","left"].includes(f)?c:0,m=["","top","bottom"].includes(f)?h:0,p=i.top===a.top?0:1,y=this.hot.getSettings(),v=this.hot.hasColHeaders(),g=this.TD.style.backgroundColor,w=i.top-a.top-p-d,b=i.left-a.left-1-m;switch(f){case"top":t=Qt(r.topOverlay.clone.wtTable.holder.parentNode);break;case"left":t=Qt(r.leftOverlay.clone.wtTable.holder.parentNode);break;case"top-left-corner":t=Qt(r.topLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom-left-corner":t=Qt(r.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom":t=Qt(r.bottomOverlay.clone.wtTable.holder.parentNode)}(v&&0===this.hot.getSelectedLast()[0]||y.fixedRowsBottom&&this.hot.getSelectedLast()[0]===u-y.fixedRowsBottom)&&(w+=1),0===this.hot.getSelectedLast()[1]&&(b+=1),t&&-1!==t?this.textareaParentStyle[t[0]]=t[1]:Zt(this.TEXTAREA_PARENT),this.textareaParentStyle.top="".concat(w,"px"),this.textareaParentStyle.left="".concat(b,"px"),this.showEditableElement();var _=o.rowsRenderCalculator.startPosition,M=o.columnsRenderCalculator.startPosition,k=r.leftOverlay.getScrollPosition(),S=r.topOverlay.getScrollPosition(),C=Xt(this.hot.rootDocument),T=this.TD.offsetTop+_-S,E=this.TD.offsetLeft+M-k,O=Ft(this.TD)-8,R=Kt(s)?C:0,L=Jt(l)?C:0,D=this.hot.view.maximumVisibleElementWidth(E)-9-R,A=this.TD.scrollHeight+1,H=Math.max(this.hot.view.maximumVisibleElementHeight(T)-L,23),N=xt(this.TD,this.hot.rootWindow);this.TEXTAREA.style.fontSize=N.fontSize,this.TEXTAREA.style.fontFamily=N.fontFamily,this.TEXTAREA.style.backgroundColor=g,this.autoResize.init(this.TEXTAREA,{minHeight:Math.min(A,H),maxHeight:H,minWidth:Math.min(O,D),maxWidth:D},!0)}else e||this.close()}},{key:"bindEvents",value:function(){var e=this;this.eventManager.addEventListener(this.TEXTAREA,"cut",(function(e){return Wr(e)})),this.eventManager.addEventListener(this.TEXTAREA,"paste",(function(e){return Wr(e)})),this.addHook("afterScrollHorizontally",(function(){return e.refreshDimensions()})),this.addHook("afterScrollVertically",(function(){return e.refreshDimensions()})),this.addHook("afterColumnResize",(function(){e.refreshDimensions(),e.focus()})),this.addHook("afterRowResize",(function(){e.refreshDimensions(),e.focus()}))}},{key:"allowKeyEventPropagation",value:function(){}},{key:"destroy",value:function(){this.eventManager.destroy(),this.clearHooks()}},{key:"onBeforeKeyDown",value:function(e){var t=(e.ctrlKey||e.metaKey)&&!e.altKey;if(e.target===this.TEXTAREA&&!Fr(e)){switch(e.keyCode){case lo.ARROW_RIGHT:case lo.ARROW_LEFT:case lo.ARROW_UP:case lo.ARROW_DOWN:this.isInFullEditMode()&&(this.isWaiting()||this.allowKeyEventPropagation(e.keyCode)||jr(e));break;case lo.ENTER:var n=this.hot.selection.isMultiple();if(t&&!n||e.altKey){if(this.isOpened()){var r=Vt(this.TEXTAREA),o=this.getValue(),i="".concat(o.slice(0,r),"\n").concat(o.slice(r));this.setValue(i),qt(this.TEXTAREA,r+1)}else this.beginEditing("".concat(this.originalValue,"\n"));jr(e)}e.preventDefault();break;case lo.BACKSPACE:case lo.DELETE:case lo.HOME:case lo.END:jr(e)}-1===[lo.ARROW_UP,lo.ARROW_RIGHT,lo.ARROW_DOWN,lo.ARROW_LEFT].indexOf(e.keyCode)&&this.autoResize.resize(String.fromCharCode(e.keyCode))}}}],r&&Pa(n.prototype,r),t}(Ta);const Ba=Wa;function Va(e){return Va="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Va(e)}function Ua(e,t){for(var n=0;no.countRows()-1?o.deselectCell():o.selectCell(n,0),o.getData().length&&(e.preventDefault(),jr(e),this.hot.listen(),this.TEXTAREA.focus())),za(Ga(t.prototype),"onBeforeKeyDown",this).call(this,e)}}}],r&&Ua(n.prototype,r),t}(Ba);const Ka=Xa;function Ja(e){return Ja="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ja(e)}function $a(e,t){for(var n=0;n".concat(s,""))),t.innerHTML=f},autoColumnSize:!0,modifyColWidth:function(e,t){var n=this.getPlugin("autoColumnSize"),r=e;if(n){var i=n.widths;i[t]&&(r=i[t])}return o?r:r+15}}),this.htEditor.view.wt.wtTable.holder.parentNode.style["padding-right"]="".concat(i+2,"px"),n.skipOne&&(n.skipOne=!1),this.hot._registerTimeout((function(){e.queryChoices(e.TEXTAREA.value)}))}},{key:"close",value:function(){this.removeHooksByKey("beforeKeyDown"),Za(es(t.prototype),"close",this).call(this)}},{key:"discardEditor",value:function(e){Za(es(t.prototype),"discardEditor",this).call(this,e),this.hot.view.render()}},{key:"queryChoices",value:function(e){var t=this,n=this.cellProperties.source;this.query=e,"function"==typeof n?n.call(this.cellProperties,e,(function(e){t.rawChoices=e,t.updateChoicesList(t.stripValuesIfNeeded(e))})):Array.isArray(n)?(this.rawChoices=n,this.updateChoicesList(this.stripValuesIfNeeded(n))):this.updateChoicesList([])}},{key:"updateChoicesList",value:function(e){var n=Vt(this.TEXTAREA),r=Ut(this.TEXTAREA),o=this.cellProperties.sortByRelevance,i=this.cellProperties.filter,a=null,s=null,l=e;o&&(a=t.sortByRelevance(this.stripValueIfNeeded(this.getValue()),l,this.cellProperties.filteringCaseSensitive));var u=Array.isArray(a)?a.length:0;if(!1===i)u&&(s=a[0]);else{for(var c=[],h=0,f=l.length;hl&&s>l;return u?this.flipDropdown(n):this.unflipDropdown(),this.limitDropdownIfNeeded(u?s:l,n),u}},{key:"limitDropdownIfNeeded",value:function(e,t){if(t>e){var n,r=0,o=0,i=0;do{r+=i=this.htEditor.getRowHeight(o)||this.htEditor.view.wt.wtSettings.settings.defaultRowHeight,o+=1}while(r=t?t*e:this.strippedChoices.length*e+8}},{key:"stripValueIfNeeded",value:function(e){return this.stripValuesIfNeeded([e])[0]}},{key:"stripValuesIfNeeded",value:function(e){var t=this.cellProperties.allowHtml,n=N(e,(function(e){return ir(e)})),r=N(n,(function(e){return t?e:ro(e)}));return r}},{key:"allowKeyEventPropagation",value:function(e){var t=this.htEditor.getSelectedRangeLast(),n=t?t.from.row:-1,r=!1;return e===lo.ARROW_DOWN&&n>0&&n-1&&(r=!0),r}},{key:"onBeforeKeyDown",value:function(e){var n=this,r=ns.get(this);if(r.skipOne=!1,uo(e.keyCode)||e.keyCode===lo.BACKSPACE||e.keyCode===lo.DELETE||e.keyCode===lo.INSERT){var o=0;if(e.keyCode===lo.C&&(e.ctrlKey||e.metaKey))return;this.isOpened()||(o+=10),this.htEditor&&this.hot._registerTimeout((function(){n.queryChoices(n.TEXTAREA.value),r.skipOne=!0}),o)}Za(es(t.prototype),"onBeforeKeyDown",this).call(this,e)}}],r&&$a(n.prototype,r),t}(Ka);rs.sortByRelevance=function(e,t,n){var r,o,i,a,s=[],l=e.length,u=[],c=t.length;if(0===l){for(a=0;at.charsLeft)return 1}return 0})),a=0,c=s.length;a0&&void 0!==arguments[0]?arguments[0]:null;ms(ps(t.prototype),"open",this).call(this),this.showDatepicker(e)}},{key:"close",value:function(){var e=this;this._opened=!1,this.instance._registerTimeout((function(){e.instance._refreshBorders()})),ms(ps(t.prototype),"close",this).call(this)}},{key:"finishEditing",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e){var r=this.originalValue;void 0!==r&&this.setValue(r)}this.hideDatepicker(),ms(ps(t.prototype),"finishEditing",this).call(this,e,n)}},{key:"showDatepicker",value:function(e){this.$datePicker.config(this.getDatePickerConfig());var t,n=this.TD.getBoundingClientRect(),r=this.cellProperties.dateFormat||this.defaultDateFormat,o=this.$datePicker.config(),i=this.instance.view.isMouseDown(),a=!!e&&co(e.keyCode);this.datePickerStyle.top="".concat(this.hot.rootWindow.pageYOffset+n.top+It(this.TD),"px"),this.datePickerStyle.left="".concat(this.hot.rootWindow.pageXOffset+n.left,"px"),this.$datePicker._onInputFocus=function(){},o.format=r,this.originalValue?(t=this.originalValue,Kn()(t,r,!0).isValid()&&this.$datePicker.setMoment(Kn()(t,r),!0),this.getValue()!==this.originalValue&&this.setValue(this.originalValue),a||i||this.setValue("")):this.cellProperties.defaultDate?(t=this.cellProperties.defaultDate,o.defaultDate=t,Kn()(t,r,!0).isValid()&&this.$datePicker.setMoment(Kn()(t,r),!0),a||i||this.setValue("")):this.$datePicker.gotoToday(),this.datePickerStyle.display="block",this.$datePicker.show()}},{key:"hideDatepicker",value:function(){this.datePickerStyle.display="none",this.$datePicker.hide()}},{key:"getDatePickerConfig",value:function(){var e=this,t=this.TEXTAREA,n={};this.cellProperties&&this.cellProperties.datePickerConfig&&q(n,this.cellProperties.datePickerConfig);var r=n.onSelect,o=n.onClose;return n.field=t,n.trigger=t,n.container=this.datePicker,n.bound=!1,n.format=n.format||this.defaultDateFormat,n.reposition=n.reposition||!1,n.onSelect=function(t){var n=t;isNaN(n.getTime())||(n=Kn()(n).format(e.cellProperties.dateFormat||e.defaultDateFormat)),e.setValue(n),e.hideDatepicker(),r&&r()},n.onClose=function(){e.parentDestroyed||e.finishEditing(!1),o&&o()},n}}],r&&ds(n.prototype,r),t}(Ba);const gs=vs;function ws(e){return ws="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ws(e)}function bs(e,t){for(var n=0;n0&&(s-=1),parseInt(h.borderLeftWidth,10)>0&&(a-=1),c.height="".concat(s,"px"),c.minWidth="".concat(a,"px"),c.top="".concat(l,"px"),c.left="".concat(u,"px"),c.margin="0px",wt(this.select,Ws)}else this.close()}},{key:"onBeforeKeyDown",value:function(){var e=this.select.selectedIndex-1,t=this.select.selectedIndex+1;switch(event.keyCode){case lo.ARROW_UP:e>=0&&(this.select[e].selected=!0),jr(event),event.preventDefault();break;case lo.ARROW_DOWN:t<=this.select.length-1&&(this.select[t].selected=!0),jr(event),event.preventDefault()}}}],r&&Ys(n.prototype,r),t}(Ta);const Vs=Bs;var Us=new WeakMap,zs=O("editors"),Gs=zs.register,qs=zs.getItem,Xs=zs.hasItem,Ks=zs.getNames;function Js(e){var t={},n=e;this.getConstructor=function(){return e},this.getInstance=function(e){return e.guid in t||(t[e.guid]=new n(e)),t[e.guid]},ce.getSingleton().add("afterDestroy",(function(){t[this.guid]=null}))}function $s(e,t){var n;if("function"==typeof e)Us.get(e)||Zs(null,e),n=Us.get(e);else{if("string"!=typeof e)throw Error('Only strings and functions can be passed as "editor" parameter');n=qs(e)}if(!n)throw Error('No editor registered under name "'.concat(e,'"'));return n.getInstance(t)}function Qs(e){if(!Xs(e))throw Error('No registered editor found under "'.concat(e,'" name'));return qs(e).getConstructor()}function Zs(e,t){var n=new Js(t);"string"==typeof e&&Gs(e,n),Us.set(t,n)}zs.getValues,Zs("base",Ta),Zs("autocomplete",os),Zs("checkbox",us),Zs("date",gs),Zs("dropdown",Cs),Zs("handsontable",Ka),Zs("numeric",Rs),Zs("password",Ps),Zs("select",Vs),Zs("text",Ba);var el=new WeakMap,tl=new WeakMap;function nl(e){return"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}var rl=n(28646),ol=n.n(rl);var il=O("renderers"),al=il.register,sl=il.getItem,ll=il.hasItem,ul=il.getNames;function cl(e){if("function"==typeof e)return e;if(!ll(e))throw Error('No registered renderer found under "'.concat(e,'" name'));return sl(e)}function hl(e,t){var n=e;return function(e){for(var r=!1,o=0,i=e.length;o7?c-7:0),f=7;f7?l-7:0),c=7;c0&&void 0!==arguments[0]&&arguments[0],n=e.getSelectedRangeLast();if(n){for(var r=n.getTopLeftCorner(),o=r.row,i=r.col,a=n.getBottomRightCorner(),s=a.row,l=a.col,u=[],c=o;c<=s;c+=1)for(var h=i;h<=l;h+=1){var f=e.getCellMeta(c,h);if("checkbox"!==f.type)return;if(!0!==f.readOnly){void 0===f.checkedTemplate&&(f.checkedTemplate=!0),void 0===f.uncheckedTemplate&&(f.uncheckedTemplate=!1);var d=e.getDataAtCell(c,h);!1===t?[f.checkedTemplate,f.checkedTemplate.toString()].includes(d)?u.push([c,h,f.uncheckedTemplate]):[f.uncheckedTemplate,f.uncheckedTemplate.toString(),null,void 0].includes(d)&&u.push([c,h,f.checkedTemplate]):u.push([c,h,f.uncheckedTemplate])}}u.length>0&&e.setDataAtCell(u)}}t.appendChild(h),d&&t.appendChild(s.createTextNode("#bad-value#")),el.has(e)||(el.set(e,!0),e.addHook("beforeKeyDown",(function(t){var n="SPACE|ENTER",r="DELETE|BACKSPACE",o=un(mo,t.keyCode);!e.getSettings().enterBeginsEditing&&o("ENTER")||(o("".concat(n,"|").concat(r))&&!Fr(t)&&function(t){var n=e.getSelectedRangeLast();if(n)for(var r=n.getTopLeftCorner(),o=n.getBottomRightCorner(),i=r.row;i<=o.row;i++)for(var a=r.col;a<=o.col;a++){var s=e.getCellMeta(i,a);if("checkbox"!==s.type)return;var l=e.getCell(i,a);if(null==l)t();else{var u=l.querySelectorAll("input[type=checkbox]");u.length>0&&!s.readOnly&&t()}}}((function(){jr(t),t.preventDefault()})),o(n)&&v(),o(r)&&v(!0))})))})),al("html",(function(e,t,n,r,o,i){for(var a=arguments.length,s=new Array(a>6?a-6:0),l=6;l7?s-7:0),u=7;u7?s-7:0),u=7;u-1;return(n.isValid()&&n.format("x")===r.format("x")||!r.isValid()||o?n:r).format(t)}(r,this.dateFormat),l=this.instance.runHooks("unmodifyRow",this.row),u=this.instance.runHooks("unmodifyCol",this.col);this.instance.setDataAtCell(l,u,s,"dateValidator"),o=!0}else o=!1;t(o)})),pl("numeric",(function(e,t){var n=e;null==n&&(n=""),this.allowEmpty&&""===n?t(!0):t(""!==n&&Oa(e))})),pl("time",(function(e,t){var n=this.timeFormat||"h:mm:ss a",r=!0,o=e;null===o&&(o=""),o=/^\d{3,}$/.test(o)?parseInt(o,10):o;var i=/^\d{1,2}$/.test(o);i&&(o+=":00");var a=Kn()(o,dl,!0).isValid()?Kn()(o):Kn()(o,n),s=a.isValid(),l=Kn()(o,n,!0).isValid()&&!i;if(this.allowEmpty&&""===o&&(s=!0,l=!0),s||(r=!1),!s&&l&&(r=!0),s&&!l)if(!0===this.correctFormat){var u=a.format(n),c=this.instance.runHooks("unmodifyRow",this.row),h=this.instance.runHooks("unmodifyCol",this.col);this.instance.setDataAtCell(c,h,u,"timeValidator"),r=!0}else r=!1;t(r)}));var bl="autocomplete";const _l={editor:Qs(bl),renderer:cl(bl),validator:wl(bl)};var Ml="checkbox";const kl={editor:Qs(Ml),renderer:cl(Ml)};var Sl="date";const Cl={editor:Qs(Sl),renderer:cl("autocomplete"),validator:wl(Sl)},Tl={editor:Qs("dropdown"),renderer:cl("autocomplete"),validator:wl("autocomplete")},El={editor:Qs("handsontable"),renderer:cl("autocomplete")};var Ol="numeric";const Rl={editor:Qs(Ol),renderer:cl(Ol),validator:wl(Ol),dataType:"number"};var Ll="password";const Dl={editor:Qs(Ll),renderer:cl(Ll),copyable:!1};var Al="text";const Hl={editor:Qs(Al),renderer:cl(Al)},Nl={editor:Qs("text"),renderer:cl("text"),validator:wl("time")};var Pl=O("cellTypes"),xl=Pl.register,Yl=Pl.getItem,Il=Pl.hasItem,jl=Pl.getNames;function Fl(e){if(!Il(e))throw Error('You declared cell type "'.concat(e,'" as a string that is not mapped to a known object.\n Cell type must be an object or a string mapped to an object registered by "Handsontable.cellTypes.registerCellType" method'));return Yl(e)}function Wl(e,t){var n=t.editor,r=t.renderer,o=t.validator;n&&Zs(e,n),r&&al(e,r),o&&pl(e,o),xl(e,t)}function Bl(e,t){function n(){}z(n,e);for(var r=0,o=t.length;r0;)t=(n-1)%zl,r=String.fromCharCode(65+t)+r,n=parseInt((n-t)/zl,10);return r}function ql(e){var t=0;if(e)for(var n=0,r=e.length-1;n0&&void 0!==arguments[0]?arguments[0]:100,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4,o=[];for(e=0;e0&&void 0!==arguments[0]?arguments[0]:100,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4,o=[];for(e=0;ethis.delay&&(this._then=e-t%this.delay,this.func())}else this.func()}}]),e}();function nu(e){return nu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nu(e)}function ru(e,t){for(var n=0;n0?s:this.instance.countSourceCols(),a=!0),e=0;e1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2?arguments[2]:void 0,o=0,i=e;if(("number"!=typeof i||i>=this.instance.countSourceRows())&&(i=this.instance.countSourceRows()),!1===this.instance.runHooks("beforeCreateRow",i,n,r))return 0;for(var a=this.instance.getSettings().maxRows,s=this.instance.countCols(),l=function(){var e=null;"array"===t.instance.dataType?t.instance.getSettings().dataSchema?e=X(t.getSchema()):(e=[],Ra(s-1,(function(){return e.push(null)}))):"function"===t.instance.dataType?e=t.instance.getSettings().dataSchema(i):q(e={},t.getSchema()),i===t.instance.countSourceRows()?t.dataSource.push(e):t.spliceData(i,0,e),o+=1};o1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2?arguments[2]:void 0;if(!this.instance.isColumnModificationAllowed())throw new Error("Cannot create new column. When data source in an object, you can only have as much columns as defined in first data row, data schema or in the 'columns' setting.If you want to be able to add new columns, you have to use array datasource.");var r,o=this.instance.countSourceRows(),i=this.dataSource,a=this.instance.countCols(),s="number"!=typeof e||e>=a?a:e,l=0;if(!1===this.instance.runHooks("beforeCreateCol",s,t,n))return 0;r=s;for(var u=this.instance.getSettings().maxCols;l=this.instance.countCols()){if(o>0)for(var h=0;h1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2?arguments[2]:void 0,r="number"!=typeof e?-t:e,o=this.instance.runHooks("modifyRemovedAmount",t,r),i=this.instance.countSourceRows();r=(i+r)%i;var a=this.visualRowsToPhysical(r,o);if(!1!==this.instance.runHooks("beforeRemoveRow",r,o,a,n)){var s=this.dataSource,l=this.filterData(r,o);l&&(s.length=0,Array.prototype.push.apply(s,l)),this.instance.runHooks("afterRemoveRow",r,o,a,n),this.instance.forceFullRender=!0}}},{key:"removeCol",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2?arguments[2]:void 0;if("object"===this.instance.dataType||this.instance.getSettings().columns)throw new Error("cannot remove column with object data source or columns option specified");var r="number"!=typeof e?-t:e;r=(this.instance.countCols()+r)%this.instance.countCols();var o=this.visualColumnsToPhysical(r,t),i=o.slice(0).sort((function(e,t){return t-e}));if(!1!==this.instance.runHooks("beforeRemoveCol",r,t,o,n)){for(var a=!0,s=i.length,l=this.dataSource,u=0;u3?a-3:0),l=3;l3?a-3:0),l=3;l-1){var a=t.split("."),s=r;if(!s)return null;for(var l=0,u=a.length;l-1){var u,c=t.split("."),h=a,f=0;for(f=0,u=c.length-1;f0?o[0].length:0,s=["","
          "],l=t?["",""]:[],u=["",""],c=n?1:0,h=t?1:0,f=0;f".concat(e.getColHeader(p-c),"");else if(y)v="".concat(e.getRowHeader(f-h),"");else{var g=o[f][p],w=e.getCellMeta(f-c,p-h),b=w.hidden,_=w.rowspan,M=w.colspan;if(!b){var k=[];if(_&&k.push('rowspan="'.concat(_,'"')),M&&k.push('colspan="'.concat(M,'"')),lr(g))v="");else{var S=g.toString().replace(/((\r\n|\n)?|\r\n|\n)/g,"
          \r\n").replace(/\x20/gi," ").replace(/\t/gi," ");v="").concat(S,"")}}}m.push(v)}var C=[""].concat(m,[""]).join("");d?l.splice(1,0,C):u.splice(-1,0,C)}return s.splice(1,0,l.join(""),u.join("")),s.join("")}function mu(e){for(var t=e.length,n=[""],r=0;r");for(var s=0;s(\r\n|\n)?|\r\n|\n)/g,"
          \r\n").replace(/\x20/gi," ").replace(/\t/gi," ");a.push("
          "))}n.push.apply(n,[""].concat(a,[""])),r+1===t&&n.push("")}return n.push("
          ".concat(u,"
          "),n.join("")}function pu(e,t){var n;return e.msMatchesSelector?n=e.msMatchesSelector(t):e.matches&&(n=e.matches(t)),n}function yu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n={},r=t.createDocumentFragment(),o=t.createElement("div");r.appendChild(o);var i=e;if("string"==typeof i&&(o.insertAdjacentHTML("afterbegin","".concat(i)),i=o.querySelector("table")),i&&function(e){return"TABLE"===(e&&e.nodeName||"")}(i)){var a=o.querySelector("style"),s=null,l=[];a&&(t.body.appendChild(a),a.disabled=!0,s=a.sheet,l=s?Array.from(s.cssRules):[],t.body.removeChild(a));var u,c=o.querySelector('meta[name$="enerator"]'),h=null!==i.querySelector("tbody th"),f=Array.from(i.querySelector("tr").cells).reduce((function(e,t){return e+t.colSpan}),0)-(h?1:0),d=i.tFoot&&Array.from(i.tFoot.rows)||[],m=[],p=!1,y=0;if(i.tHead){var v=Array.from(i.tHead.rows).filter((function(e){var t=null!==e.querySelector("td");return t&&m.push(e),!t}));p=(y=v.length)>0,y>1?n.nestedHeaders=Array.from(v).reduce((function(e,t){var n=Array.from(t.cells).reduce((function(e,t,n){if(h&&0===n)return e;var r=t.colSpan,o=t.innerHTML,i=r>1?{label:o,colspan:r}:o;return e.push(i),e}),[]);return e.push(n),e}),[]):p&&(n.colHeaders=Array.from(v[0].children).reduce((function(e,t,n){return h&&0===n||e.push(t.innerHTML),e}),[]))}m.length&&(n.fixedRowsTop=m.length),d.length&&(n.fixedRowsBottom=d.length);var g=[].concat(m,fu(Array.from(i.tBodies).reduce((function(e,t){return e.push.apply(e,fu(Array.from(t.rows))),e}),[])),fu(d));u=g.length;for(var w=new Array(u),b=0;b1||i>1){for(var s=k;s/gim,"\r\n").replace(/(<([^>]+)>)/gi,"").replace(/ /gi," "):c&&/excel/gi.test(c.content)?w[k][a]=r.replace(/[\r\n]?[\x20]{0,2}/gim,"\r\n").replace(/(<([^>]+)>)/gi,"").replace(/ /gi," "):w[k][a]=r.replace(/[\r\n]?/gim,"\r\n").replace(/(<([^>]+)>)/gi,"").replace(/ /gi," ")}else M.push(r)},O=0;O=0&&o.col>=0&&!a.cells?i.setRangeEnd(o):(l||u)&&o.row>=0&&o.col>=0&&!a.cells?i.setRangeEnd(new Me(o.row,o.col)):l&&o.row<0&&!a.column?i.setRangeEnd(new Me(s.to.row,o.col)):u&&o.col<0&&!a.row?i.setRangeEnd(new Me(o.row,s.to.col)):(!l&&!u&&o.col<0||l&&o.col<0)&&!a.row?i.selectRows(s.from.row,o.row):(!l&&!u&&o.row<0||u&&o.row<0)&&!a.column&&i.selectColumns(s.from.col,o.col);else{var c=new Me(o.row,o.col);c.row<0&&(c.row=0),c.col<0&&(c.col=0);var h=!i.inInSelection(c),f=n||r&&h;o.row<0&&o.col>=0&&!a.column?f&&i.selectColumns(o.col):o.col<0&&o.row>=0&&!a.row?f&&i.selectRows(o.row):o.col>=0&&o.row>=0&&!a.cells?f&&i.setRangeStart(o):o.col<0&&o.row<0&&i.setRangeStart(o)}}var bu=new Map([["mousedown",wu],["mouseover",function(e){var t=e.isLeftClick,n=e.coords,r=e.selection,o=e.controller;if(t){var i=r.isSelectedByRowHeader(),a=r.isSelectedByColumnHeader(),s=r.tableProps.countCols(),l=r.tableProps.countRows();a&&!o.column?r.setRangeEnd(new Me(l-1,n.col)):i&&!o.row?r.setRangeEnd(new Me(n.row,s-1)):o.cell||r.setRangeEnd(n)}}],["touchstart",wu]]);function _u(e,t){var n=t.coords,r=t.selection,o=t.controller;bu.get(e.type)({coords:n,selection:r,controller:o,isShiftKey:e.shiftKey,isLeftClick:zr(e)||"touchstart"===e.type,isRightClick:Ur(e)})}function Mu(e,t){for(var n=0;n0||"auto"===n){var r=e.instance.countRows();if("number"==typeof n)t.startRow=Math.max(t.startRow-n,0),t.endRow=Math.min(t.endRow+n,r-1);else if("auto"===n){var o=t.startRow+t.endRow-t.startRow,i=Math.ceil(o/r*12);t.startRow=Math.max(t.startRow-i,0),t.endRow=Math.min(t.endRow+i,r-1)}}e.instance.runHooks("afterViewportRowCalculatorOverride",t)},viewportColumnCalculatorOverride:function(t){var n=e.settings.viewportColumnRenderingOffset;if("auto"===n&&e.settings.fixedColumnsLeft&&(n=10),n>0||"auto"===n){var r=e.instance.countCols();if("number"==typeof n&&(t.startColumn=Math.max(t.startColumn-n,0),t.endColumn=Math.min(t.endColumn+n,r-1)),"auto"===n){var o=t.startColumn+t.endColumn-t.startColumn,i=Math.ceil(o/r*12);t.startRow=Math.max(t.startColumn-i,0),t.endColumn=Math.min(t.endColumn+i,r-1)}}e.instance.runHooks("afterViewportColumnCalculatorOverride",t)},rowHeaderWidth:function(){return e.settings.rowHeaderWidth},columnHeaderHeight:function(){var t=e.instance.runHooks("modifyColumnHeaderHeight");return e.settings.columnHeaderHeight||t}};this.instance.runHooks("beforeInitWalkontable",n),this.wt=new Ro(n),this.activeWt=this.wt;var r=this.wt.wtTable.spreader,o=this.instance.rootElement.getBoundingClientRect(),i=o.width,a=o.height;this.setLastSize(i,a),this.eventManager.addEventListener(r,"mousedown",(function(e){e.target===r&&3===e.which&&Wr(e)})),this.eventManager.addEventListener(r,"contextmenu",(function(e){e.target===r&&3===e.which&&Wr(e)})),this.eventManager.addEventListener(this.instance.rootDocument.documentElement,"click",(function(){e.settings.observeDOMVisibility&&e.wt.drawInterrupted&&(e.instance.forceFullRender=!0,e.render())}))}},{key:"isTextSelectionAllowed",value:function(e){if(en(e))return!0;var t=ut(e,this.instance.view.wt.wtTable.spreader);return!(!0!==this.settings.fragmentSelection||!t)||!("cell"!==this.settings.fragmentSelection||!this.isSelectedOnlyCell()||!t)||!(this.settings.fragmentSelection||!this.isCellEdited()||!this.isSelectedOnlyCell())}},{key:"isMouseDown",value:function(){return ku.get(this).mouseDown}},{key:"isSelectedOnlyCell",value:function(){var e,t,n=(e=this.instance.getSelectedLast()||[],t=4,function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),r=n[0],o=n[1],i=n[2],a=n[3];return void 0!==r&&r===i&&o===a}},{key:"isCellEdited",value:function(){var e=this.instance.getActiveEditor();return e&&e.isOpened()}},{key:"beforeRender",value:function(e,t){e&&this.instance.runHooks("beforeRender",this.instance.forceFullRender,t)}},{key:"onDraw",value:function(e){e&&this.instance.runHooks("afterRender",this.instance.forceFullRender)}},{key:"appendRowHeader",value:function(e,t){if(t.firstChild){var n=t.firstChild;if(!gt(n,"relative"))return Mt(t),void this.appendRowHeader(e,t);this.updateCellHeader(n.querySelector(".rowHeader"),e,this.instance.getRowHeader)}else{var r=this.instance,o=r.rootDocument,i=r.getRowHeader,a=o.createElement("div"),s=o.createElement("span");a.className="relative",s.className="rowHeader",this.updateCellHeader(s,e,i),a.appendChild(s),t.appendChild(a)}this.instance.runHooks("afterGetRowHeader",e,t)}},{key:"appendColHeader",value:function(e,t){if(t.firstChild){var n=t.firstChild;gt(n,"relative")?this.updateCellHeader(n.querySelector(".colHeader"),e,this.instance.getColHeader):(Mt(t),this.appendColHeader(e,t))}else{var r=this.instance.rootDocument,o=r.createElement("div"),i=r.createElement("span");o.className="relative",i.className="colHeader",this.updateCellHeader(i,e,this.instance.getColHeader),o.appendChild(i),t.appendChild(o)}this.instance.runHooks("afterGetColHeader",e,t)}},{key:"updateCellHeader",value:function(e,t,n){var r=t,o=this.wt.wtOverlays.getParentOverlay(e)||this.wt;e.parentNode&&(gt(e,"colHeader")?r=o.wtTable.columnFilter.sourceToRendered(t):gt(e,"rowHeader")&&(r=o.wtTable.rowFilter.sourceToRendered(t))),r>-1?Ct(e,n(t)):(Tt(e,String.fromCharCode(160)),wt(e,"cornerHeader"))}},{key:"maximumVisibleElementWidth",value:function(e){var t=this.wt.wtViewport.getWorkspaceWidth()-e;return t>0?t:0}},{key:"maximumVisibleElementHeight",value:function(e){var t=this.wt.wtViewport.getWorkspaceHeight()-e;return t>0?t:0}},{key:"setLastSize",value:function(e,t){var n=ku.get(this),r=[e,t];n.lastWidth=r[0],n.lastHeight=r[1]}},{key:"getLastSize",value:function(){var e=ku.get(this);return{width:e.lastWidth,height:e.lastHeight}}},{key:"mainViewIsActive",value:function(){return this.wt===this.activeWt}},{key:"destroy",value:function(){this.wt.destroy(),this.eventManager.destroy()}}],n&&Mu(t.prototype,n),e}();const Cu=Su;function Tu(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:[];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.hot=t,this.data=n,this.dataType="array",this.colToProp=function(){},this.propToCol=function(){}}var t,n;return t=e,n=[{key:"getData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.data;return e&&(t=this.getByRange({row:0,col:0},{row:Math.max(this.countRows()-1,0),col:Math.max(this.countColumns()-1,0)},!0)),t}},{key:"setData",value:function(e){this.data=e}},{key:"getAtColumn",value:function(e){var t=this,n=[];return P(this.data,(function(r){var o,i=t.colToProp(e);o="string"==typeof i?te(r,i):"function"==typeof i?i(r):r[i],n.push(o)})),n}},{key:"getAtRow",value:function(e){return this.data[e]}},{key:"getAtCell",value:function(e,t){var n=null,r=this.hot.runHooks("modifyRowData",e),o=isNaN(r)?r:this.data[e];if(o){var i=this.colToProp(t);n="string"==typeof i?te(o,i):"function"==typeof i?i(this.data.slice(e,e+1)[0]):o[i]}return n}},{key:"getByRange",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=Math.min(e.row,t.row),i=Math.min(e.col,t.col),a=Math.max(e.row,t.row),s=Math.max(e.col,t.col),l=[];return Ra(o,a,(function(e){var t,o=n.getAtRow(e);"array"===n.dataType?t=o.slice(i,s+1):"object"===n.dataType&&(t=r?[]:{},Ra(i,s,(function(e){var i=n.colToProp(e);r?t.push(o[i]):t[i]=o[i]}))),l.push(t)})),l}},{key:"countRows",value:function(){return Array.isArray(this.data)?this.data.length:0}},{key:"countColumns",value:function(){var e=0;return Array.isArray(this.data)&&("array"===this.dataType?e=this.data[0].length:"object"===this.dataType&&(e=Object.keys(this.data[0]).length)),e}},{key:"destroy",value:function(){this.data=null,this.hot=null}}],n&&Tu(t.prototype,n),e}();const Ou=Eu;function Ru(e,t){for(var n=0;n0&&(Dh-=1),0===Dh&&(Rh.clearEvents(),Lh.clear(),Dh=0)}function Nh(){return Array.from(Lh.values()).some((function(e){return fo(e)}))}n(32982),n(3101);var Ph=O("highlight/types"),xh=Ph.register,Yh=Ph.getItem;function Ih(e,t){return Yh(e)(t)}function jh(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:0;return this.layerLevel=e,this}},{key:"getCell",value:function(){return this.cell}},{key:"getFill",value:function(){return this.fill}},{key:"createOrGetArea",value:function(){var e,t=this.layerLevel;return this.areas.has(t)?e=this.areas.get(t):(e=Ih(Uh,Wh({layerLevel:t},this.options)),this.areas.set(t,e)),e}},{key:"getAreas",value:function(){return jh(this.areas.values())}},{key:"createOrGetHeader",value:function(){var e,t=this.layerLevel;return this.headers.has(t)?e=this.headers.get(t):(e=Ih(Gh,Wh({},this.options)),this.headers.set(t,e)),e}},{key:"getHeaders",value:function(){return jh(this.headers.values())}},{key:"createOrGetActiveHeader",value:function(){var e,t=this.layerLevel;return this.activeHeaders.has(t)?e=this.activeHeaders.get(t):(e=Ih("active-header",Wh({},this.options)),this.activeHeaders.set(t,e)),e}},{key:"getActiveHeaders",value:function(){return jh(this.activeHeaders.values())}},{key:"getCustomSelections",value:function(){return jh(this.customSelections.values())}},{key:"addCustomSelection",value:function(e){this.customSelections.push(Ih("custom-selection",Wh({},e)))}},{key:"clear",value:function(){this.cell.clear(),this.fill.clear(),P(this.areas.values(),(function(e){e.clear()})),P(this.headers.values(),(function(e){e.clear()})),P(this.activeHeaders.values(),(function(e){e.clear()}))}},{key:Symbol.iterator,value:function(){return[this.cell,this.fill].concat(jh(this.areas.values()),jh(this.headers.values()),jh(this.activeHeaders.values()),jh(this.customSelections))[Symbol.iterator]()}}],n&&Vh(t.prototype,n),e}();const Xh=qh;function Kh(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:0,n=this.size()+t-1;return n>=0&&(e=this.ranges[n]),e}},{key:Symbol.iterator,value:function(){return this.ranges[Symbol.iterator]()}}],n&&Kh(t.prototype,n),e}();const $h=Jh;var Qh={_localHooks:Object.create(null),addLocalHook:function(e,t){return this._localHooks[e]||(this._localHooks[e]=[]),this._localHooks[e].push(t),this},runLocalHooks:function(e){for(var t=this,n=arguments.length,r=new Array(n>1?n-1:0),o=1;oo-1?n&&s>0&&!(a&&h.row>=o-a-1)?(this.runLocalHooks("insertRowRequire",o),o=this.options.countRows()):c&&(r.row=1-o,r.col=h.col+r.col===i-1?1-i:1):c&&h.row+r.row<0&&h.col+r.col>=0&&(r.row=o-1,r.col=h.col+r.col===0?i-1:-1),h.col+r.col>i-1?n&&l>0?(this.runLocalHooks("insertColRequire",i),i=this.options.countCols()):u&&(r.row=h.row+r.row===o-1?1-o:1,r.col=1-i):u&&h.col+r.col<0&&h.row+r.row>=0&&(r.row=h.row+r.row===0?o-1:-1,r.col=i-1);var f=new Me(h.row+r.row,h.col+r.col),d=0,m=0;return f.row<0?(d=-1,f.row=0):f.row>0&&f.row>=o&&(d=1,f.row=o-1),f.col<0?(m=-1,f.col=0):f.col>0&&f.col>=i&&(m=1,f.col=i-1),this.runLocalHooks("afterTransformStart",f,d,m),f}},{key:"transformEnd",value:function(e,t){var n=new Me(e,t);this.runLocalHooks("beforeTransformEnd",n);var r=this.options.countRows(),o=this.options.countCols(),i=this.range.current(),a=new Me(i.to.row+n.row,i.to.col+n.col),s=0,l=0;return a.row<0?(s=-1,a.row=0):a.row>0&&a.row>=r&&(s=1,a.row=r-1),a.col<0?(l=-1,a.col=0):a.col>0&&a.col>=o&&(l=1,a.col=o-1),this.runLocalHooks("afterTransformEnd",a,s,l),a}}])&&ef(t.prototype,n),e}();J(tf,Zh);const nf=tf;function rf(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function of(e){return of="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},of(e)}var af=[3,2],sf=[["number"],["number","string"],["number","undefined"],["number","string","undefined"]],lf=Symbol("root"),uf=Symbol("child");function cf(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:lf;if(t!==lf&&t!==uf)throw new Error("The second argument is used internally only and cannot be overwritten.");var n=Array.isArray(e),r=t===lf,o=0;if(n){var i=e[0];if(0===e.length)o=1;else if(r&&i instanceof Ce)o=3;else if(r&&Array.isArray(i))o=cf(i,uf);else if(e.length>=2&&e.length<=4){var a=!e.some((function(e,t){return!sf[t].includes(of(e))}));a&&(o=2)}}return o}function hf(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.keepDirection,r=void 0!==n&&n,o=t.propToCol;if(!af.includes(e))throw new Error("Unsupported selection ranges schema type was provided.");return function(t){var n=3===e,i=n?t.from.row:t[0],a=n?t.from.col:t[1],s=n?t.to.row:t[2],l=n?t.to.col:t[3];if("function"==typeof o&&("string"==typeof a&&(a=o(a)),"string"==typeof l&&(l=o(l))),sr(s)&&(s=i),sr(l)&&(l=a),!r){var u=i,c=a,h=s,f=l;i=Math.min(u,h),a=Math.min(c,f),s=Math.max(u,h),l=Math.max(c,f)}return[i,a,s,l]}}function ff(e){return"number"==typeof e&&e>=0&&e<(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0)}function df(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function mf(){var e,t,n=(e=["Unsupported format of the selection ranges was passed. To select cells pass \n the coordinates as an array of arrays ([[rowStart, columnStart/columnPropStart, rowEnd, columnEnd/columnPropEnd]]) \n or as an array of CellRange objects."],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return mf=function(){return n},n}function pf(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],r="multiple"===this.settings.selectionMode,o=sr(t)?Nh():t,i=e.row<0,a=e.col<0,s=i&&a;i&&(e.row=0),a&&(e.col=0),this.selectedByCorner=s,this.runLocalHooks("beforeSetRangeStart".concat(n?"Only":""),e),(!r||r&&!o&&sr(t))&&this.selectedRange.clear(),this.selectedRange.add(e),0===this.getLayerLevel()&&(this.selectedByRowHeader.clear(),this.selectedByColumnHeader.clear()),!s&&a&&this.selectedByRowHeader.add(this.getLayerLevel()),!s&&i&&this.selectedByColumnHeader.add(this.getLayerLevel()),n||this.setRangeEnd(e)}},{key:"setRangeStartOnly",value:function(e,t){this.setRangeStart(e,t,!0)}},{key:"setRangeEnd",value:function(e){if(!this.selectedRange.isEmpty()){this.runLocalHooks("beforeSetRangeEnd",e),this.begin();var t=this.selectedRange.current();"single"!==this.settings.selectionMode&&t.setTo(new Me(e.row,e.col)),this.highlight.getCell().clear(),this.highlight.isEnabledFor(zh)&&this.highlight.getCell().add(this.selectedRange.current().highlight);var n=this.getLayerLevel();n=1)&&(r.add(t.from).add(t.to),1===n&&(this.highlight.useLayerLevel(n-1).createOrGetArea().add(this.selectedRange.previous().from),this.highlight.useLayerLevel(n))),this.highlight.isEnabledFor(Gh)&&("single"===this.settings.selectionMode?o.add(t.highlight):o.add(t.from).add(t.to)),this.isSelectedByRowHeader()&&this.tableProps.countCols()===t.getWidth()&&i.add(new Me(t.from.row,-1)).add(new Me(t.to.row,-1)),this.isSelectedByColumnHeader()&&this.tableProps.countRows()===t.getHeight()&&i.add(new Me(-1,t.from.col)).add(new Me(-1,t.to.col)),this.runLocalHooks("afterSetRangeEnd",e)}}},{key:"isMultiple",value:function(){var e=re(!this.selectedRange.current().isSingle());return this.runLocalHooks("afterIsMultipleSelection",e),e.value}},{key:"transformStart",value:function(e,t,n){this.setRangeStart(this.transformation.transformStart(e,t,n))}},{key:"transformEnd",value:function(e,t){this.setRangeEnd(this.transformation.transformEnd(e,t))}},{key:"getLayerLevel",value:function(){return this.selectedRange.size()-1}},{key:"isSelected",value:function(){return!this.selectedRange.isEmpty()}},{key:"isSelectedByRowHeader",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getLayerLevel();return-1===e?this.selectedByRowHeader.size>0:this.selectedByRowHeader.has(e)}},{key:"isSelectedByColumnHeader",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getLayerLevel();return-1===e?this.selectedByColumnHeader.size>0:this.selectedByColumnHeader.has(e)}},{key:"isSelectedByAnyHeader",value:function(){return this.isSelectedByRowHeader(-1)||this.isSelectedByColumnHeader(-1)}},{key:"isSelectedByCorner",value:function(){return this.selectedByCorner}},{key:"inInSelection",value:function(e){return this.selectedRange.includes(e)}},{key:"isCellCornerVisible",value:function(){return this.settings.fillHandle&&!this.tableProps.isEditorOpened()&&!this.isMultiple()}},{key:"isAreaCornerVisible",value:function(e){return(!Number.isInteger(e)||e===this.getLayerLevel())&&this.settings.fillHandle&&!this.tableProps.isEditorOpened()&&this.isMultiple()}},{key:"clear",value:function(){this.selectedRange.clear(),this.highlight.clear()}},{key:"deselect",value:function(){this.isSelected()&&(this.inProgress=!1,this.clear(),this.runLocalHooks("afterDeselect"))}},{key:"selectAll",value:function(){this.clear(),this.setRangeStart(new Me(-1,-1)),this.selectedByRowHeader.add(this.getLayerLevel()),this.selectedByColumnHeader.add(this.getLayerLevel()),this.setRangeEnd(new Me(this.tableProps.countRows()-1,this.tableProps.countCols()-1))}},{key:"selectCells",value:function(e){var t=this,n=cf(e);if(1===n)return!1;if(0===n)throw new Error(Jn(mf()));var r=hf(n,{propToCol:function(e){return t.tableProps.propToCol(e)},keepDirection:!0}),o=this.tableProps.countRows(),i=this.tableProps.countCols(),a=!e.some((function(e){var t=df(r(e),4),n=t[0],a=t[1],s=t[2],l=t[3];return!(ff(n,o)&&ff(a,i)&&ff(s,o)&&ff(l,i))}));return a&&(this.clear(),P(e,(function(e){var n=df(r(e),4),o=n[0],i=n[1],a=n[2],s=n[3];t.setRangeStartOnly(new Me(o,i),!1),t.setRangeEnd(new Me(a,s)),t.finish()}))),a}},{key:"selectColumns",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n="string"==typeof e?this.tableProps.propToCol(e):e,r="string"==typeof t?this.tableProps.propToCol(t):t,o=this.tableProps.countCols(),i=ff(n,o)&&ff(r,o);return i&&(this.setRangeStartOnly(new Me(-1,n)),this.setRangeEnd(new Me(this.tableProps.countRows()-1,r)),this.finish()),i}},{key:"selectRows",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=this.tableProps.countRows(),r=ff(e,n)&&ff(t,n);return r&&(this.setRangeStartOnly(new Me(e,-1)),this.setRangeEnd(new Me(t,this.tableProps.countCols()-1)),this.finish()),r}}],n&&pf(t.prototype,n),e}();J(yf,Zh);const vf=yf;function gf(e){return gf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},gf(e)}function wf(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function bf(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t2&&void 0!==arguments[2]&&arguments[2],f=!1,d=this,m=function(){},p=new Jr(d);G(m.prototype,Fu.prototype),G(m.prototype,t),G(m.prototype,k(t)),s=m.prototype,Sh(u=Bu(l=t.language))?s.language=u:(s.language=yh,Vu(l)),xu(h)&&Nu.set(this,!0),this.rootElement=e,this.rootDocument=e.ownerDocument,this.rootWindow=this.rootDocument.defaultView,Ah(this.rootDocument),this.isDestroyed=!1,this.isHotTableEnv=ct(this.rootElement),Jr.isHotTableEnv=this.isHotTableEnv,this.container=this.rootDocument.createElement("div"),this.renderCall=!1,e.insertBefore(this.container,e.firstChild),Yu(this)&&_r(t.licenseKey,e),this.guid="ht_".concat(Zr());var y=Hu(d);o=new Ou(d),this.rootElement.id&&"ht_"!==this.rootElement.id.substring(0,3)||(this.rootElement.id=this.guid),n={cellSettings:[],columnSettings:[],columnsSettingConflicts:["data","width","language"],settings:new m,selRange:null,isPopulated:null,scrollable:null,firstRun:!0};var v=new vf(n.settings,{countCols:function(){return d.countCols()},countRows:function(){return d.countRows()},propToCol:function(e){return r.propToCol(e)},isEditorOpened:function(){return!!d.getActiveEditor()&&d.getActiveEditor().isOpened()}});function g(e){var t=Bu(e);Sh(t)?(d.runHooks("beforeLanguageChange",t),m.prototype.language=t,d.runHooks("afterLanguageChange",t)):Vu(e)}function w(){var e=!1;return{validatorsInQueue:0,valid:!0,addValidatorToQueue:function(){this.validatorsInQueue+=1,e=!1},removeValidatorFormQueue:function(){this.validatorsInQueue=this.validatorsInQueue-1<0?0:this.validatorsInQueue-1,this.checkIfQueueIsEmpty()},onQueueEmpty:function(){},checkIfQueueIsEmpty:function(){0===this.validatorsInQueue&&!1===e&&(e=!0,this.onQueueEmpty(this.valid))}}}function b(e,t,n){if(e.length){var o=d.getActiveEditor(),i=d.runHooks("beforeChange",e,t||"edit"),a=!0;if(rn(i))Mr("Your beforeChange callback returns a function. It's not supported since Handsontable 0.12.1 (and the returned function will not be executed).");else if(!1===i)return void(o&&o.cancelChanges());var s,l,u=new w,c=function(e){return e.length>0&&/^\s*[+-.]?\s*(?:(?:\d+(?:(\.|,)\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/.test(e)};u.onQueueEmpty=function(e){o&&a&&o.cancelChanges(),n(e)};for(var h=e.length-1;h>=0;h--)if(null===e[h])e.splice(h,1);else{var f=wf(e[h],4),m=f[0],p=f[1],y=f[3],v=r.propToCol(p),g=d.getCellMeta(m,v);"numeric"===g.type&&"string"==typeof y&&c(y)&&(e[h][3]=(void 0,l=(s=y).replace(",","."),!1===isNaN(parseFloat(l))?parseFloat(l):s)),d.getCellValidator(g)&&(u.addValidatorToQueue(),d.validateCell(e[h][3],g,function(t,n){return function(r){if("boolean"!=typeof r)throw new Error("Validation error: result is not boolean");if(!1===r&&!1===n.allowInvalid){a=!1,e.splice(t,1),n.valid=!0;var o=d.getCell(n.visualRow,n.visualCol);null!==o&&bt(o,d.getSettings().invalidCellClassName)}u.removeValidatorFormQueue()}}(h,g),t))}u.checkIfQueueIsEmpty()}}function _(e,t){var o=e.length-1;if(!(o<0)){for(;o>=0;o--){var s=!1;if(null!==e[o]){if(null!==e[o][2]&&void 0!==e[o][2]||null!==e[o][3]&&void 0!==e[o][3]){if(n.settings.allowInsertRow)for(;e[o][0]>d.countRows()-1;)if(0===r.createRow(void 0,void 0,t)){s=!0;break}if("array"===d.dataType&&(!n.settings.columns||0===n.settings.columns.length)&&n.settings.allowInsertColumn)for(;r.propToCol(e[o][1])>d.countCols()-1;)if(0===r.createCol(void 0,void 0,t)){s=!0;break}s||r.set(e[o][0],e[o][1],e[o][3])}}else e.splice(o,1)}d.forceFullRender=!0,i.adjustRowsAndCols(),d.runHooks("beforeChangeRender",e,t),a.lockEditor(),d._refreshBorders(null),a.unlockEditor(),d.view.wt.wtOverlays.adjustElementsSize(),d.runHooks("afterChange",e,t||"edit");var l=d.getActiveEditor();l&&ar(l.refreshValue)&&l.refreshValue()}}function M(e,t,n){return"object"===gf(e)?e:[[e,t,n]]}function k(e){if(oe(e,"type")){var t,n={};for(var r in"object"===gf(e.type)?t=e.type:"string"==typeof e.type&&(t=Fl(e.type)),t)oe(t,r)&&!oe(e,r)&&(n[r]=t[r]);return n}}this.selection=v,this.selection.addLocalHook("beforeSetRangeStart",(function(e){c.runHooks("beforeSetRangeStart",e)})),this.selection.addLocalHook("beforeSetRangeStartOnly",(function(e){c.runHooks("beforeSetRangeStartOnly",e)})),this.selection.addLocalHook("beforeSetRangeEnd",(function(e){c.runHooks("beforeSetRangeEnd",e),e.row<0&&(e.row=c.view.wt.wtTable.getFirstVisibleRow()),e.col<0&&(e.col=c.view.wt.wtTable.getFirstVisibleColumn())})),this.selection.addLocalHook("afterSetRangeEnd",(function(e){var t=re(!1),n=c.selection.getSelectedRange(),r=n.current(),o=r.from,i=r.to,a=n.size()-1;c.runHooks("afterSelection",o.row,o.col,i.row,i.col,t,a),c.runHooks("afterSelectionByProp",o.row,d.colToProp(o.col),i.row,d.colToProp(i.col),t,a);var s=c.selection.isSelectedByAnyHeader(),l=c.selection.selectedRange.current(),u=!0;f&&(u=!1),t.isTouched()&&(u=!t.value);var h=c.selection.isSelectedByRowHeader(),m=c.selection.isSelectedByColumnHeader();!1!==u&&(s?h?c.view.scrollViewportVertically(e.row):m&&c.view.scrollViewportHorizontally(e.col):l&&!c.selection.isMultiple()?c.view.scrollViewport(l.from):c.view.scrollViewport(e)),h&&m?wt(c.rootElement,["ht__selection--rows","ht__selection--columns"]):h?(bt(c.rootElement,"ht__selection--columns"),wt(c.rootElement,"ht__selection--rows")):m?(bt(c.rootElement,"ht__selection--rows"),wt(c.rootElement,"ht__selection--columns")):bt(c.rootElement,["ht__selection--rows","ht__selection--columns"]),c._refreshBorders(null)})),this.selection.addLocalHook("afterSelectionFinished",(function(e){var t=e.length-1,n=e[t],r=n.from,o=n.to;c.runHooks("afterSelectionEnd",r.row,r.col,o.row,o.col,t),c.runHooks("afterSelectionEndByProp",r.row,d.colToProp(r.col),o.row,d.colToProp(o.col),t)})),this.selection.addLocalHook("afterIsMultipleSelection",(function(e){var t=c.runHooks("afterIsMultipleSelection",e.value);e.value&&(e.value=t)})),this.selection.addLocalHook("beforeModifyTransformStart",(function(e){c.runHooks("modifyTransformStart",e)})),this.selection.addLocalHook("afterModifyTransformStart",(function(e,t,n){c.runHooks("afterModifyTransformStart",e,t,n)})),this.selection.addLocalHook("beforeModifyTransformEnd",(function(e){c.runHooks("modifyTransformEnd",e)})),this.selection.addLocalHook("afterModifyTransformEnd",(function(e,t,n){c.runHooks("afterModifyTransformEnd",e,t,n)})),this.selection.addLocalHook("afterDeselect",(function(){a.destroyEditor(),c._refreshBorders(),bt(c.rootElement,["ht__selection--rows","ht__selection--columns"]),c.runHooks("afterDeselect")})),this.selection.addLocalHook("insertRowRequire",(function(e){c.alter("insert_row",e,1,"auto")})),this.selection.addLocalHook("insertColRequire",(function(e){c.alter("insert_col",e,1,"auto")})),i={alter:function(e,t){var o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3?arguments[3]:void 0,l=arguments.length>4?arguments[4]:void 0;function u(e,t,n,r){var o=N(new Array(n),(function(){return"array"===r?e=[]:"object"===r&&(e={}),e;var e}));o.unshift(t,0),e.splice.apply(e,bf(o))}var c=function(e){if(0===e.length)return[];var t=bf(e);return t.sort((function(e,t){var n=wf(e,1)[0],r=wf(t,1)[0];return n===r?0:n>r?1:-1})),A(t,(function(e,t){var n=wf(t,2),r=n[0],o=n[1],i=e[e.length-1],a=wf(i,2),s=a[0]+a[1];if(r<=s){var l=Math.max(o-(s-r),0);i[1]+=l}else e.push([r,o]);return e}),[t[0]])};switch(e){case"insert_row":var h=d.countSourceRows();if(d.getSettings().maxRows===h)return;t=ar(t)?t:h,o=r.createRow(t,a,s),u(n.cellSettings,t,a,"array"),o&&(v.isSelected()&&v.selectedRange.current().from.row>=t?(v.selectedRange.current().from.row+=o,v.transformEnd(o,0)):d._refreshBorders());break;case"insert_col":o=r.createCol(t,a,s);for(var f=0,m=d.countSourceRows();f=t?(v.selectedRange.current().from.col+=o,v.transformEnd(0,o)):d._refreshBorders()}break;case"remove_row":var g=function(e){var t=0;P(e,(function(e){var o=wf(e,2),i=o[0],l=o[1],u=lr(i)?d.countRows()-1:Math.max(i-t,0);Number.isInteger(i)&&(i=Math.max(i-t,0)),r.removeRow(i,l,s),n.cellSettings.splice(u,a);var c=d.countRows(),h=d.getSettings().fixedRowsTop;h>=u+1&&(d.getSettings().fixedRowsTop-=Math.min(l,h-u));var f=d.getSettings().fixedRowsBottom;f&&u>=c-f&&(d.getSettings().fixedRowsBottom-=Math.min(l,f)),t+=l}))};Array.isArray(t)?g(c(t)):g([[t,a]]),i.adjustRowsAndCols(),d._refreshBorders();break;case"remove_col":var w=function(e){var t=0;P(e,(function(e){var o=wf(e,2),i=o[0],a=o[1],l=lr(i)?d.countCols()-1:Math.max(i-t,0),u=y.toPhysicalColumn(l);Number.isInteger(i)&&(i=Math.max(i-t,0)),r.removeCol(i,a,s);for(var c=0,h=d.countSourceRows();c=l+1&&(d.getSettings().fixedColumnsLeft-=Math.min(a,f-l)),Array.isArray(d.getSettings().colHeaders)&&(void 0===u&&(u=-1),d.getSettings().colHeaders.splice(u,a)),t+=a}))};Array.isArray(t)?w(c(t)):w([[t,a]]),i.adjustRowsAndCols(),d._refreshBorders();break;default:throw new Error('There is no such action "'.concat(e,'"'))}l||i.adjustRowsAndCols()},adjustRowsAndCols:function(){if(n.settings.minRows){var e=d.countRows();if(es-1?(t=!0,o>(n=s-1)&&(o=n)):o>s-1&&(t=!0,n>(o=s-1)&&(n=o)),r>l-1?(t=!0,i>(r=l-1)&&(i=r)):i>l-1&&(t=!0,r>(i=l-1)&&(r=i)),t&&d.selectCell(n,r,o,i)})),d.view&&d.view.wt.wtOverlays.adjustElementsSize()},populateFromArray:function(e,t,r,o,i,a,s){var l,u,c,h,f,m,p,y,v=[],g={};if(0===(u=t.length))return!1;switch(i){case"shift_down":for(f=r?r.col-e.col+1:0,m=r?r.row-e.row+1:0,c=0,h=(t=$l(t)).length,p=Math.max(h,f);c1&&void 0!==arguments[1]?arguments[1]:null,r=t[e%t.length];return null!==n?r[n%r.length]:r},R=t.length,L=r?r.row-e.row+1:0;for(u=r?L:Math.max(R,L),l=0;lr.row&&L>R||!n.settings.allowInsertRow&&g.row>d.countRows()-1||g.row>=n.settings.maxRows);l++){var D=l-C,A=O(D).length,H=r?r.col-e.col+1:0;if(h=r?H:Math.max(A,H),g.col=e.col,k=d.getCellMeta(g.row,g.col),"CopyPaste.paste"!==o&&"Autofill.fill"!==o||!k.skipRowOnPaste){for(T=0,c=0;cr.col&&H>A||!n.settings.allowInsertColumn&&g.col>d.countCols()-1||g.col>=n.settings.maxCols);c++)if(k=d.getCellMeta(g.row,g.col),"CopyPaste.paste"!==o&&"Autofill.fill"!==o||!k.skipColumnOnPaste)if(k.readOnly)g.col+=1;else{var N=c-T,P=O(D,N),x=d.getDataAtCell(g.row,g.col),Y={row:D,col:N};if("Autofill.fill"===o){var I=d.runHooks("beforeAutofillInsidePopulate",Y,a,t,s,{},S);I&&(P=sr(I.value)?P:I.value)}null!==P&&"object"===gf(P)?(Array.isArray(P)&&null===x&&(x=[]),null===x||"object"!==gf(x)?E=!1:$(U(Array.isArray(x)?x:x[0]||x),U(Array.isArray(P)?P:P[0]||P))?P=X(P):E=!1):null!==x&&"object"===gf(x)&&(E=!1),E&&v.push([g.row,g.col,P]),E=!0,g.col+=1}else T+=1,g.col+=1,h+=1;g.row+=1}else C+=1,g.row+=1,u+=1}d.setDataAtCell(v,null,null,o||"populateFromArray")}}},this.init=function(){o.setData(n.settings.data),d.runHooks("beforeInit"),Pe()&&wt(d.rootElement,"mobile"),this.updateSettings(n.settings,!0),this.view=new Cu(this),a=hu.getInstance(d,n,v,r),this.forceFullRender=!0,d.runHooks("init"),this.view.render(),"object"===gf(n.firstRun)&&(d.runHooks("afterChange",n.firstRun[0],n.firstRun[1]),n.firstRun=!1),d.runHooks("afterInit")},this.validateCell=function(e,t,n,r){var o,i=d.getCellValidator(t);function a(e){if(arguments.length>1&&void 0!==arguments[1]&&!arguments[1]||!0===t.hidden)n(e);else{var r=t.visualCol,o=t.visualRow,i=d.getCell(o,r,!0);i&&"TH"!==i.nodeName&&d.view.wt.wtSettings.settings.cellRenderer(o,r,i),n(e)}}ur(i)&&(o=i,i=function(e,t){t(o.test(e))}),rn(i)?(e=d.runHooks("beforeValidate",e,t.visualRow,t.prop,r),d._registerImmediate((function(){i.call(t,e,(function(n){d&&(n=d.runHooks("afterValidate",n,e,t.visualRow,t.prop,r),t.valid=n,a(n),d.runHooks("postAfterValidate",n,e,t.visualRow,t.prop,r))}))}))):d._registerImmediate((function(){t.valid=!0,a(t.valid,!1)}))},this.setDataAtCell=function(e,t,n,i){var a,s,l,u=M(e,t,n),c=[],h=i;for(a=0,s=u.length;a0&&void 0!==arguments[0])||arguments[0],t=d.rootDocument;if(e){var n=!t.activeElement||t.activeElement&&void 0===t.activeElement.nodeName;t.activeElement&&t.activeElement!==t.body&&!n?t.activeElement.blur():n&&t.body.focus()}d&&!d.isListening()&&(_f=d.guid,d.runHooks("afterListen"))},this.unlisten=function(){this.isListening()&&(_f=null,d.runHooks("afterUnlisten"))},this.isListening=function(){return _f===d.guid},this.destroyEditor=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];d._refreshBorders(e,t)},this.populateFromArray=function(e,t,n,r,o,a,s,l,u){if("object"!==gf(n)||"object"!==gf(n[0]))throw new Error("populateFromArray parameter `input` must be an array of arrays");var c="number"==typeof r?new Me(r,o):null;return i.populateFromArray(new Me(e,t),n,c,a,s,l,u)},this.spliceCol=function(e,t,n){for(var o,i=arguments.length,a=new Array(i>3?i-3:0),s=3;s3?i-3:0),s=3;s0&&(e=t[t.length-1]),e},this.getSelectedRange=function(){if(v.isSelected())return Array.from(v.getSelectedRange())},this.getSelectedRangeLast=function(){var e,t=this.getSelectedRange();return t&&t.length>0&&(e=t[t.length-1]),e},this.emptySelectedCells=function(e){var t=this;if(v.isSelected()){var n=[];P(v.getSelectedRange(),(function(e){var r=e.getTopLeftCorner(),o=e.getBottomRightCorner();Ra(r.row,o.row,(function(e){Ra(r.col,o.col,(function(r){t.getCellMeta(e,r).readOnly||n.push([e,r,null])}))}))})),n.length>0&&this.setDataAtCell(n,e)}},this.render=function(){d.view&&(d.renderCall=!0,d.forceFullRender=!0,a.lockEditor(),d._refreshBorders(null),a.unlockEditor())},this.refreshDimensions=function(){if(d.view){var e=d.view.getLastSize(),t=e.width,n=e.height,r=d.rootElement.getBoundingClientRect(),o=r.width,i=r.height,a=o!==t||i!==n;!1===d.runHooks("beforeRefreshDimensions",{width:t,height:n},{width:o,height:i},a)||((a||d.view.wt.wtOverlays.scrollableElement===d.rootWindow)&&(d.view.setLastSize(o,i),d.render()),d.runHooks("afterRefreshDimensions",{width:t,height:n},{width:o,height:i},a))}},this.loadData=function(e){if(Array.isArray(n.settings.dataSchema)?d.dataType="array":rn(n.settings.dataSchema)?d.dataType="function":d.dataType="object",r&&r.destroy(),r=new su(d,n,m),"object"===gf(e)&&null!==e)e.push&&e.splice||(e=[e]);else{if(null!==e)throw new Error("loadData only accepts array of objects or array of arrays (".concat(gf(e)," given)"));var t,a=r.getSchema();e=[];var s,l=0;for(l=0,s=n.settings.startRows;l1&&void 0!==arguments[1]&&arguments[1],u=!1;if(ar(e.rows))throw new Error('"rows" setting is no longer supported. do you mean startRows, minRows or maxRows?');if(ar(e.cols))throw new Error('"cols" setting is no longer supported. do you mean startCols, minCols or maxCols?');for(t in e)"data"!==t&&("language"!==t?ce.getSingleton().getRegistered().indexOf(t)>-1?(rn(e[t])||Array.isArray(e[t]))&&(e[t].initialHook=!0,d.addHook(t,e[t])):!l&&oe(e,t)&&(m.prototype[t]=e[t]):g(e.language));void 0===e.data&&void 0===n.settings.data?d.loadData(null):void 0!==e.data?d.loadData(e.data):void 0!==e.columns&&r.createMap(),s=d.countCols();var c,h,f=e.columns||m.prototype.columns;if(f&&rn(f)&&(s=d.countSourceCols(),u=!0),void 0===e.cell&&void 0===e.cells&&void 0===e.columns||(n.cellSettings.length=0),s>0)for(t=0,o=0;t-1||v.indexOf("overflow")>-1)?d.rootElement.setAttribute("style",v):(d.rootElement.style.height="",d.rootElement.style.overflow="")}else void 0!==y&&(d.rootElement.style.height=isNaN(y)?"".concat(y):"".concat(y,"px"),d.rootElement.style.overflow="hidden");if(void 0!==e.width){var w=e.width;rn(w)&&(w=w()),d.rootElement.style.width=isNaN(w)?"".concat(w):"".concat(w,"px")}l||(r.clearLengthCache(),d.view&&d.view.wt.wtViewport.resetHasOversizedColumnHeadersMarked(),d.runHooks("afterUpdateSettings",e)),i.adjustRowsAndCols(),d.view&&!n.firstRun&&(d.forceFullRender=!0,a.lockEditor(),d._refreshBorders(null),a.unlockEditor()),l||!d.view||""!==p&&""!==y&&void 0!==y||p===y||d.view.wt.wtOverlays.updateMainScrollableElements()},this.getValue=function(){var e=d.getSelectedLast();if(m.prototype.getValue){if(rn(m.prototype.getValue))return m.prototype.getValue.call(d);if(e)return d.getData()[e[0][0]][m.prototype.getValue]}else if(e)return d.getDataAtCell(e[0],e[1])},this.getSettings=function(){return n.settings},this.clear=function(){this.selectAll(),this.emptySelectedCells()},this.alter=function(e,t,n,r,o){i.alter(e,t,n,r,o)},this.getCell=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return d.view.getCellAtCoords(new Me(e,t),n)},this.getCoords=function(e){return this.view.wt.wtTable.getCoords.call(this.view.wt.wtTable,e)},this.colToProp=function(e){return r.colToProp(e)},this.propToCol=function(e){return r.propToCol(e)},this.toVisualRow=function(e){return y.toVisualRow(e)},this.toVisualColumn=function(e){return y.toVisualColumn(e)},this.toPhysicalRow=function(e){return y.toPhysicalRow(e)},this.toPhysicalColumn=function(e){return y.toPhysicalColumn(e)},this.getDataAtCell=function(e,t){return r.get(e,r.colToProp(t))},this.getDataAtRowProp=function(e,t){return r.get(e,t)},this.getDataAtCol=function(e){var t;return(t=[]).concat.apply(t,bf(r.getRange(new Me(0,e),new Me(n.settings.data.length-1,e),r.DESTINATION_RENDERER)))},this.getDataAtProp=function(e){var t,o=r.getRange(new Me(0,r.propToCol(e)),new Me(n.settings.data.length-1,r.propToCol(e)),r.DESTINATION_RENDERER);return(t=[]).concat.apply(t,bf(o))},this.getSourceData=function(e,t,n,r){return void 0===e?o.getData():o.getByRange(new Me(e,t),new Me(n,r))},this.getSourceDataArray=function(e,t,n,r){return void 0===e?o.getData(!0):o.getByRange(new Me(e,t),new Me(n,r),!0)},this.getSourceDataAtCol=function(e){return o.getAtColumn(e)},this.getSourceDataAtRow=function(e){return o.getAtRow(e)},this.getSourceDataAtCell=function(e,t){return o.getAtCell(e,t)},this.getDataAtRow=function(e){return r.getRange(new Me(e,0),new Me(e,this.countCols()-1),r.DESTINATION_RENDERER)[0]||[]},this.getDataType=function(e,t,n,r){var o=this,i=void 0===e?[0,0,this.countRows(),this.countCols()]:[e,t,n,r],a=i[0],s=i[1],l=i[2],u=i[3],c=null,h=null;void 0===l&&(l=a),void 0===u&&(u=s);var f="mixed";return Ra(Math.min(a,l),Math.max(a,l),(function(e){var t=!0;return Ra(Math.min(s,u),Math.max(s,u),(function(n){var r=o.getCellMeta(e,n);return h=r.type,c?t=c===h:c=h,t})),f=t?h:"mixed",t})),f},this.removeCellMeta=function(e,t,r){var o=wf(y.toPhysical(e,t),2),i=o[0],a=o[1],s=n.cellSettings[i][a][r];!1!==d.runHooks("beforeRemoveCellMeta",e,t,r,s)&&(delete n.cellSettings[i][a][r],d.runHooks("afterRemoveCellMeta",e,t,r,s)),s=null},this.spliceCellsMeta=function(e,t){for(var r,o=arguments.length,i=new Array(o>2?o-2:0),a=2;a=0;)if(void 0===t||-1!==t.indexOf(o)){for(var i=d.countCols()-1;i>=0;)void 0===n||-1!==n.indexOf(i)?(r.addValidatorToQueue(),d.validateCell(d.getDataAtCell(o,i),d.getCellMeta(o,i),(function(e){if("boolean"!=typeof e)throw new Error("Validation error: result is not boolean");!1===e&&(r.valid=!1),r.removeValidatorFormQueue()}),"validateCells"),i-=1):i-=1;o-=1}else o-=1;r.checkIfQueueIsEmpty()},this.getRowHeader=function(e){var t=n.settings.rowHeaders,r=e;return void 0!==r&&(r=d.runHooks("modifyRowHeader",r)),void 0===r?(t=[],Ra(d.countRows()-1,(function(e){t.push(d.getRowHeader(e))}))):Array.isArray(t)&&void 0!==t[r]?t=t[r]:rn(t)?t=t(r):t&&"string"!=typeof t&&"number"!=typeof t&&(t=r+1),t},this.hasRowHeaders=function(){return!!n.settings.rowHeaders},this.hasColHeaders=function(){if(void 0!==n.settings.colHeaders&&null!==n.settings.colHeaders)return!!n.settings.colHeaders;for(var e=0,t=d.countCols();e0&&void 0!==arguments[0]&&arguments[0],t=0;return La(d.countRows()-1,(function(n){if(d.isEmptyRow(n))t+=1;else if(!0===e)return!1})),t},this.countEmptyCols=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(d.countRows()<1)return 0;var t=0;return La(d.countCols()-1,(function(n){if(d.isEmptyCol(n))t+=1;else if(!0===e)return!1})),t},this.isEmptyRow=function(e){return n.settings.isEmptyRow.call(d,e)},this.isEmptyCol=function(e){return n.settings.isEmptyCol.call(d,e)},this.selectCell=function(e,t,n,r){var o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];return!sr(e)&&!sr(t)&&this.selectCells([[e,t,n,r]],o,i)},this.selectCells=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[[]],t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(f=!0);var n=v.selectCells(e);return n&&t&&d.listen(),f=!1,n},this.selectColumns=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return v.selectColumns(e,t)},this.selectRows=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return v.selectRows(e,t)},this.deselectCell=function(){v.deselect()},this.selectAll=function(){f=!0,v.selectAll(),f=!1},this.scrollViewportTo=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=!n,i=!r,a=!1;return void 0!==e&&void 0!==t&&(a=d.view.scrollViewport(new Me(e,t),o,r,n,i)),"number"==typeof e&&"number"!=typeof t&&(a=d.view.scrollViewportVertically(e,o,n)),"number"==typeof t&&"number"!=typeof e&&(a=d.view.scrollViewportHorizontally(t,r,i)),a},this.destroy=function(){if(d._clearTimeouts(),d._clearImmediates(),d.view&&d.view.destroy(),o&&o.destroy(),o=null,Hh(),Yu(d)){var e=this.rootDocument.querySelector("#hot-display-license-info");e&&e.parentNode.removeChild(e)}Mt(d.rootElement),p.destroy(),a&&a.destroy(),d.runHooks("afterDestroy"),ce.getSingleton().destroy(d),ee(d,(function(e,t,n){var r;rn(e)?n[t]=(r=t,function(){throw new Error('The "'.concat(r,'" method cannot be called because this Handsontable instance has been destroyed'))}):"guid"!==t&&(n[t]=null)})),d.isDestroyed=!0,r&&r.destroy(),r=null,n=null,i=null,v=null,a=null,d=null,m=null},this.getActiveEditor=function(){return a.getActiveEditor()},this.getPlugin=function(e){return function(e,t){if("string"!=typeof t)throw Error('Only strings can be passed as "plugin" parameter');var n=$r(t);if(vu.has(e)&&vu.get(e)[n])return vu.get(e)[n]}(this,e)},this.getInstance=function(){return d},this.addHook=function(e,t){ce.getSingleton().add(e,t,d)},this.hasHook=function(e){return ce.getSingleton().has(e,d)},this.addHookOnce=function(e,t){ce.getSingleton().once(e,t,d)},this.removeHook=function(e,t){ce.getSingleton().remove(e,t,d)},this.runHooks=function(e,t,n,r,o,i,a){return ce.getSingleton().run(d,e,t,n,r,o,i,a)},this.getTranslatedPhrase=function(e,t){return Oh(n.settings.language,e,t)},this.toHTML=function(){return du(c)},this.toTableElement=function(){var e=c.rootDocument.createElement("div");return e.insertAdjacentHTML("afterbegin",du(c)),e.firstElementChild},this.timeouts=[],this._registerTimeout=function(e){var t=e;"function"==typeof t&&(t=setTimeout(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0)),this.timeouts.push(t)},this._clearTimeouts=function(){P(this.timeouts,(function(e){clearTimeout(e)}))},this.immediates=[],this._registerImmediate=function(e){this.immediates.push(setImmediate(e))},this._clearImmediates=function(){P(this.immediates,(function(e){clearImmediate(e)}))},this._refreshBorders=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];a.destroyEditor(e),d.view.render(),t&&v.isSelected()&&a.prepareEditor()},ce.getSingleton().run(d,"construct")}function kf(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:null;this.injected||((e||this.hot.rootElement).appendChild(this.container.fragment),this.injected=!0)}},{key:"removeTable",value:function(){this.injected&&this.container.container.parentNode&&(this.container.container.parentNode.removeChild(this.container.container),this.container=null,this.injected=!1)}},{key:"createColElement",value:function(e){var t=this.hot.rootDocument.createElement("col");return t.style.width="".concat(this.hot.view.wt.wtTable.getStretchedColumnWidth(e),"px"),t}},{key:"createTable",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=this.hot.rootDocument,n=t.createDocumentFragment(),r=t.createElement("table"),o=t.createElement("thead"),i=t.createElement("tbody"),a=t.createElement("colgroup"),s=t.createElement("tr"),l=t.createElement("th");return this.isVertical()&&r.appendChild(a),this.isHorizontal()&&(s.appendChild(l),o.appendChild(s),r.style.tableLayout="auto",r.style.width="auto"),r.appendChild(o),this.isVertical()&&i.appendChild(s),r.appendChild(i),wt(r,e),n.appendChild(r),{fragment:n,table:r,tHead:o,tBody:i,colGroup:a,tr:s,th:l}}},{key:"createContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=this.hot.rootDocument,n=t.createDocumentFragment(),r=t.createElement("div");return wt(r,"htGhostTable htAutoSize ".concat(e.trim())),n.appendChild(r),{fragment:n,container:r}}},{key:"isVertical",value:function(){return!(!this.rows.length||this.columns.length)}},{key:"isHorizontal",value:function(){return!(!this.columns.length||this.rows.length)}}],n&&kf(t.prototype,n),e}();const Cf=Sf;function Tf(e,t){for(var n=0;n=0&&Of.splice(Of.indexOf(this.pluginName),1),Of.length||this.hot.runHooks("afterPluginsInitialized"),this.initialized=!0}},{key:"enablePlugin",value:function(){this.enabled=!0}},{key:"disablePlugin",value:function(){this.eventManager&&this.eventManager.clear(),this.clearHooks(),this.enabled=!1}},{key:"addHook",value:function(e,t){Ef.get(this).hooks[e]=Ef.get(this).hooks[e]||[];var n=Ef.get(this).hooks[e];this.hot.addHook(e,t),n.push(t),Ef.get(this).hooks[e]=n}},{key:"removeHooks",value:function(e){var t=this;P(Ef.get(this).hooks[e]||[],(function(n){t.hot.removeHook(e,n)}))}},{key:"clearHooks",value:function(){var e=this,t=Ef.get(this).hooks;ee(t,(function(t,n){return e.removeHooks(n)})),t.length=0}},{key:"callOnPluginsReady",value:function(e){this.isPluginsReady?e():this.pluginsInitializedCallbacks.push(e)}},{key:"onAfterPluginsInitialized",value:function(){P(this.pluginsInitializedCallbacks,(function(e){return e()})),this.pluginsInitializedCallbacks.length=0,this.isPluginsReady=!0}},{key:"onUpdateSettings",value:function(){this.isEnabled&&(this.enabled&&!this.isEnabled()&&this.disablePlugin(),!this.enabled&&this.isEnabled()&&this.enablePlugin(),this.enabled&&this.isEnabled()&&this.updatePlugin())}},{key:"updatePlugin",value:function(){}},{key:"destroy",value:function(){var e=this;this.eventManager&&this.eventManager.destroy(),this.clearHooks(),ee(this,(function(t,n){"hot"!==n&&"t"!==n&&(e[n]=null)})),delete this.t,delete this.hot}}])&&Tf(t.prototype,n),e}();function Lf(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:window;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.rootWindow=n,this.prefix=t,this.savedKeys=[],this.loadSavedKeys()}var t,n;return t=e,n=[{key:"saveValue",value:function(e,t){this.rootWindow.localStorage.setItem("".concat(this.prefix,"_").concat(e),JSON.stringify(t)),-1===this.savedKeys.indexOf(e)&&(this.savedKeys.push(e),this.saveSavedKeys())}},{key:"loadValue",value:function(e,t){var n=void 0===e?t:e,r=this.rootWindow.localStorage.getItem("".concat(this.prefix,"_").concat(n));return null===r?void 0:JSON.parse(r)}},{key:"reset",value:function(e){this.rootWindow.localStorage.removeItem("".concat(this.prefix,"_").concat(e))}},{key:"resetAll",value:function(){var e=this;P(this.savedKeys,(function(t,n){e.rootWindow.localStorage.removeItem("".concat(e.prefix,"_").concat(e.savedKeys[n]))})),this.clearSavedKeys()}},{key:"loadSavedKeys",value:function(){var e=this.rootWindow.localStorage.getItem("".concat(this.prefix,"__persistentStateKeys")),t="string"==typeof e?JSON.parse(e):void 0;this.savedKeys=t||[]}},{key:"saveSavedKeys",value:function(){this.rootWindow.localStorage.setItem("".concat(this.prefix,"__persistentStateKeys"),JSON.stringify(this.savedKeys))}},{key:"clearSavedKeys",value:function(){this.savedKeys.length=0,this.saveSavedKeys()}}],n&&Lf(t.prototype,n),e}();const Af=Df;function Hf(e){return Hf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hf(e)}function Nf(e,t){for(var n=0;n0;s=Q(u)?Object.keys(u).length:Array.isArray(u)?u.length:ir(u).length,h&&(s+=c),o.has(s)||o.set(s,{needed:r.getSampleCount(),strings:[]});var f=o.get(s);f.needed&&(!(a.indexOf(u)>-1)||r.allowDuplicates||h)&&(f.strings.push(function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({value:u},i,t)),a.push(u),f.needed-=1)})),o}}]),e}();const Vf=Bf;function Uf(e){return Uf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Uf(e)}function zf(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Gf(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function qf(e,t,n){return qf="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Xf(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}},qf(e,t,n||e)}function Xf(e){return Xf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Xf(e)}function Kf(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countCols()-1},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{from:0,to:this.hot.countRows()-1},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o="number"==typeof t?{from:t,to:t}:t,i="number"==typeof n?{from:n,to:n}:n;Ra(o.from,o.to,(function(t){(r||void 0===e.widths[t]&&!e.hot._getColWidthFromSettings(t))&&P(e.samplesGenerator.generateColumnSamples(t,i),(function(t){var n=zf(t,2),r=n[0],o=n[1];return e.ghostTable.addColumn(r,o)}))})),this.ghostTable.columns.length&&(this.ghostTable.getWidths((function(t,n){e.widths[t]=n})),this.ghostTable.clean())}},{key:"calculateAllColumnsWidth",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countRows()-1},r=0,o=this.hot.countCols()-1,i=null;this.inProgress=!0;var a=this.getSyncCalculationLimit();this.firstCalculation&&a>=0&&(this.calculateColumnsWidth({from:0,to:a},n),this.firstCalculation=!1,r=a+1),r>=0),Math.min(e,n)}},{key:"getColumnWidth",value:function(e){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return void 0===n&&(n=this.widths[e],t&&"number"==typeof n&&(n=Math.max(n,pe.DEFAULT_WIDTH))),n}},{key:"getFirstVisibleColumn",value:function(){var e=this.hot.view.wt;return e.wtViewport.columnsVisibleCalculator?e.wtTable.getFirstVisibleColumn():e.wtViewport.columnsRenderCalculator?e.wtTable.getFirstRenderedColumn():-1}},{key:"getLastVisibleColumn",value:function(){var e=this.hot.view.wt;return e.wtViewport.columnsVisibleCalculator?e.wtTable.getLastVisibleColumn():e.wtViewport.columnsRenderCalculator?e.wtTable.getLastRenderedColumn():-1}},{key:"findColumnsWhereHeaderWasChanged",value:function(){var e=this.hot.getColHeader(),t=Qf.get(this).cachedColumnHeaders;return A(e,(function(e,n,r){var o=t.length;return(o-10&&void 0!==arguments[0]?arguments[0]:[];t.length?P(t,(function(t){e.widths[t]=void 0})):this.widths.length=0}},{key:"isNeedRecalculate",value:function(){return!!H(this.widths,(function(e){return void 0===e})).length}},{key:"onBeforeRender",value:function(){var e=this.hot.renderCall,t=this.hot.countRows(),n=this.getFirstVisibleColumn(),r=this.getLastVisibleColumn();-1!==n&&-1!==r&&t&&(this.calculateColumnsWidth({from:n,to:r},void 0,e),this.isNeedRecalculate()&&!this.inProgress&&this.calculateAllColumnsWidth())}},{key:"onAfterLoadData",value:function(){var e=this;this.hot.view?this.recalculateAllColumnsWidth():setTimeout((function(){e.hot&&e.recalculateAllColumnsWidth()}),0)}},{key:"onBeforeChange",value:function(e){var t=this,n=N(e,(function(e){var n=zf(e,2)[1];return t.hot.propToCol(n)}));this.clearCache(n)}},{key:"onBeforeColumnResize",value:function(e,t,n){var r=t;return n&&(this.calculateColumnsWidth(e,void 0,!0),r=this.getColumnWidth(e,void 0,!1)),r}},{key:"onAfterInit",value:function(){Qf.get(this).cachedColumnHeaders=this.hot.getColHeader()}},{key:"destroy",value:function(){this.ghostTable.clean(),qf(Xf(t.prototype),"destroy",this).call(this)}}]),t}(Rf);gu("autoColumnSize",Zf);const ed=Zf;var td={horizontal:"horizontal",vertical:"vertical"};function nd(e){return nd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nd(e)}function rd(e,t){for(var n=0;ne[3]?(o="right",n=new Me(t[0],e[3]+1),r=new Me(t[2],t[3])):t[0]e[2]&&t[1]===e[1]&&(o="down",n=new Me(e[2]+1,t[1]),r=new Me(t[2],t[3])),{directionOfDrag:o,startOfDragCoords:n,endOfDragCoords:r}}(t,e=this.hot.runHooks("modifyAutofillRange",e,t)),r=n.directionOfDrag,o=n.startOfDragCoords,i=n.endOfDragCoords;if(o&&o.row>-1&&o.col>-1){var a=this.getSelectionData();this.hot.runHooks("beforeAutofill",o,i,a);var s=function(e,t,n,r){var o=n.length,i=n?n[0].length:0,a=[],s=t.row-e.row,l=t.col-e.col;if(-1!==["down","up"].indexOf(r)){for(var u=[],c=0;c-1){l=[];var u=null,c=null;if("up"===r){c=(u=i.row-o.row+1)%a.length;for(var h=0;he.row))t=new Me(e.row,r.col);else{if(!this.directions.includes(td.horizontal))return;t=new Me(r.row,e.col)}return this.reduceSelectionAreaIfNeeded(t)}},{key:"showBorder",value:function(e){var t=this.getCoordsOfDragAndDropBorders(e);t&&this.redrawBorders(t)}},{key:"addRow",value:function(){var e=this;this.hot._registerTimeout(setTimeout((function(){e.hot.alter("insert_row",void 0,1,"".concat(e.pluginName,".fill")),e.addingStarted=!1}),200))}},{key:"addNewRowIfNeeded",value:function(){if(this.hot.selection.highlight.getFill().cellRange&&!1===this.addingStarted&&this.autoInsertRow){var e=this.hot.getSelectedLast(),t=this.hot.selection.highlight.getFill().getCorners(),n=this.hot.countRows();e[2]n&&e.clientX<=r}},{key:"registerEvents",value:function(){var e=this,t=this.hot.rootDocument.documentElement;this.eventManager.addEventListener(t,"mouseup",(function(){return e.onMouseUp()})),this.eventManager.addEventListener(t,"mousemove",(function(t){return e.onMouseMove(t)}))}},{key:"onCellCornerDblClick",value:function(){this.selectAdjacent()&&this.fillIn()}},{key:"onAfterCellCornerMouseDown",value:function(){this.handleDraggedCells=1,this.mouseDownOnCellCorner=!0}},{key:"onBeforeCellMouseOver",value:function(e){this.mouseDownOnCellCorner&&!this.hot.view.isMouseDown()&&this.handleDraggedCells&&(this.handleDraggedCells+=1,this.showBorder(e),this.addNewRowIfNeeded())}},{key:"onMouseUp",value:function(){this.handleDraggedCells&&(this.handleDraggedCells>1&&this.fillIn(),this.handleDraggedCells=0,this.mouseDownOnCellCorner=!1)}},{key:"onMouseMove",value:function(e){var t=this.getIfMouseWasDraggedOutside(e);!1===this.addingStarted&&this.handleDraggedCells>0&&t?(this.mouseDragOutside=!0,this.addingStarted=!0):this.mouseDragOutside=!1,this.mouseDragOutside&&this.autoInsertRow&&this.addRow()}},{key:"clearMappedSettings",value:function(){this.directions.length=0,this.autoInsertRow=!1}},{key:"mapSettings",value:function(){var e=function(e){var t={};return!0===e?(t.directions=Object.keys(td),t.autoInsertRow=!0):Q(e)?(ar(e.autoInsertRow)?e.direction===td.horizontal?t.autoInsertRow=!1:t.autoInsertRow=e.autoInsertRow:t.autoInsertRow=!1,ar(e.direction)?t.directions=[e.direction]:t.directions=Object.keys(td)):"string"==typeof e?(t.directions=[e],t.autoInsertRow=!0):(t.directions=[],t.autoInsertRow=!1),t}(this.hot.getSettings().fillHandle);this.directions=e.directions,this.autoInsertRow=e.autoInsertRow}},{key:"destroy",value:function(){id(ad(t.prototype),"destroy",this).call(this)}}],r&&rd(n.prototype,r),t}(Rf);gu("autofill",ld);const ud=ld;function cd(e){return cd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},cd(e)}function hd(e,t,n){return hd="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=fd(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}},hd(e,t,n||e)}function fd(e){return fd=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},fd(e)}function dd(e,t){for(var n=0;n=0?r=n.hot.getDataAtCell(e,t):-1===e&&(r=n.hot.getColHeader(t)),{value:r}})),n.firstCalculation=!0,n.inProgress=!1,n.addHook("beforeRowResize",(function(e,t,r){return n.onBeforeRowResize(e,t,r)})),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&pd(e,t)}(t,e),md(t,null,[{key:"CALCULATION_STEP",get:function(){return 50}},{key:"SYNC_CALCULATION_LIMIT",get:function(){return 500}}]),md(t,[{key:"isEnabled",value:function(){return!0===this.hot.getSettings().autoRowSize||Q(this.hot.getSettings().autoRowSize)}},{key:"enablePlugin",value:function(){var e=this;this.enabled||(this.setSamplingOptions(),this.addHook("afterLoadData",(function(){return e.onAfterLoadData()})),this.addHook("beforeChange",(function(t){return e.onBeforeChange(t)})),this.addHook("beforeColumnMove",(function(){return e.recalculateAllRowsHeight()})),this.addHook("beforeColumnResize",(function(){return e.recalculateAllRowsHeight()})),this.addHook("beforeColumnSort",(function(){return e.clearCache()})),this.addHook("beforeRender",(function(t){return e.onBeforeRender(t)})),this.addHook("beforeRowMove",(function(t,n){return e.onBeforeRowMove(t,n)})),this.addHook("modifyRowHeight",(function(t,n){return e.getRowHeight(n,t)})),this.addHook("modifyColumnHeaderHeight",(function(){return e.getColumnHeaderHeight()})),hd(fd(t.prototype),"enablePlugin",this).call(this))}},{key:"disablePlugin",value:function(){hd(fd(t.prototype),"disablePlugin",this).call(this)}},{key:"calculateRowsHeight",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countRows()-1},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{from:0,to:this.hot.countCols()-1},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o="number"==typeof t?{from:t,to:t}:t,i="number"==typeof n?{from:n,to:n}:n;if(null!==this.hot.getColHeader(0)){var a=this.samplesGenerator.generateRowSamples(-1,i);this.ghostTable.addColumnHeadersRow(a.get(-1))}Ra(o.from,o.to,(function(t){(r||void 0===e.heights[t])&&P(e.samplesGenerator.generateRowSamples(t,i),(function(t){var n,r,o=(r=2,function(e){if(Array.isArray(e))return e}(n=t)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),i=o[0],a=o[1];return e.ghostTable.addRow(i,a)}))})),this.ghostTable.rows.length&&(this.ghostTable.getHeights((function(t,n){e.heights[t]=n})),this.ghostTable.clean())}},{key:"calculateAllRowsHeight",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countCols()-1},r=0,o=this.hot.countRows()-1,i=null;this.inProgress=!0;var a=this.getSyncCalculationLimit();this.firstCalculation&&a>=0&&(this.calculateRowsHeight({from:0,to:a},n),this.firstCalculation=!1,r=a+1),r>=0),Math.min(e,n)}},{key:"getRowHeight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=t;return void 0!==this.heights[e]&&this.heights[e]>(t||0)&&(n=this.heights[e]),n}},{key:"getColumnHeaderHeight",value:function(){return this.heights[-1]}},{key:"getFirstVisibleRow",value:function(){var e=this.hot.view.wt;return e.wtViewport.rowsVisibleCalculator?e.wtTable.getFirstVisibleRow():e.wtViewport.rowsRenderCalculator?e.wtTable.getFirstRenderedRow():-1}},{key:"getLastVisibleRow",value:function(){var e=this.hot.view.wt;return e.wtViewport.rowsVisibleCalculator?e.wtTable.getLastVisibleRow():e.wtViewport.rowsRenderCalculator?e.wtTable.getLastRenderedRow():-1}},{key:"clearCache",value:function(){this.heights.length=0,this.heights[-1]=void 0}},{key:"clearCacheByRange",value:function(e){var t=this,n="number"==typeof e?{from:e,to:e}:e,r=n.from,o=n.to;Ra(Math.min(r,o),Math.max(r,o),(function(e){t.heights[e]=void 0}))}},{key:"isNeedRecalculate",value:function(){return!!H(this.heights,(function(e){return void 0===e})).length}},{key:"onBeforeRender",value:function(){var e=this.hot.renderCall,t=this.hot.getSettings().fixedRowsBottom,n=this.getFirstVisibleRow(),r=this.getLastVisibleRow();if(-1!==n&&-1!==r){if(this.calculateRowsHeight({from:n,to:r},void 0,e),t){var o=this.hot.countRows()-1;this.calculateRowsHeight({from:o-t,to:o})}this.isNeedRecalculate()&&!this.inProgress&&this.calculateAllRowsHeight()}}},{key:"onBeforeRowMove",value:function(e,t){this.clearCacheByRange({from:e,to:t}),this.calculateAllRowsHeight()}},{key:"onBeforeRowResize",value:function(e,t,n){var r=t;return n&&(this.calculateRowsHeight(e,void 0,!0),r=this.getRowHeight(e)),r}},{key:"onAfterLoadData",value:function(){var e=this;this.hot.view?this.recalculateAllRowsHeight():setTimeout((function(){e.hot&&e.recalculateAllRowsHeight()}),0)}},{key:"onBeforeChange",value:function(e){var t=null;1===e.length?t=e[0][0]:e.length>1&&(t={from:e[0][0],to:e[e.length-1][0]}),null!==t&&this.clearCacheByRange(t)}},{key:"destroy",value:function(){this.ghostTable.clean(),hd(fd(t.prototype),"destroy",this).call(this)}}]),t}(Rf);gu("autoRowSize",yd);const vd=yd;function gd(e,t){for(var n=0;n0&&(e=this.sortedColumnsStates[0].column),e}},{key:"getSortOrderOfColumn",value:function(e){var t,n=this.sortedColumnsStates.find((function(t){var n=t.column;return e===n}));return Q(n)&&(t=n.sortOrder),t}},{key:"getSortedColumns",value:function(){return N(this.sortedColumnsStates,(function(e){return e.column}))}},{key:"getIndexOfColumnInSortQueue",value:function(e){return this.getSortedColumns().indexOf(e)}},{key:"getNumberOfSortedColumns",value:function(){return this.sortedColumnsStates.length}},{key:"isListOfSortedColumnsEmpty",value:function(){return 0===this.getNumberOfSortedColumns()}},{key:"isColumnSorted",value:function(e){return this.getSortedColumns().includes(e)}},{key:"getSortStates",value:function(){return X(this.sortedColumnsStates)}},{key:"getColumnSortState",value:function(e){if(this.isColumnSorted(e))return X(this.sortedColumnsStates[this.getIndexOfColumnInSortQueue(e)])}},{key:"setSortStates",value:function(e){this.sortedColumnsStates=e}},{key:"destroy",value:function(){this.sortedColumnsStates.length=0,this.sortedColumnsStates=null}}],n&&gd(t.prototype,n),e}(),_d="asc",Md="desc";function kd(e){if(sr(e))return!1;var t=e.column,n=e.sortOrder;return Number.isInteger(t)&&[_d,Md].includes(n)}function Sd(e){if(e!==Md)return e===_d?Md:_d}function Cd(e){return e.querySelector(".".concat("colHeader"))}function Td(e,t){if(e<0||!t.parentNode)return!1;var n=t.parentNode.parentNode.childNodes;return-1==Array.from(n).indexOf(t.parentNode)-n.length}function Ed(e,t,n){return-1===e&&t>=0&&!1===Ur(n)}var Od="indicatorDisabled",Rd="columnSorting",Ld="sortAction",Dd=new Map([[_d,"ascending"],[Md,"descending"]]);function Ad(e,t,n,r){var o=[Rd];if(r&&o.push(Ld),!1===n)o.push(Od);else if(e.isColumnSorted(t)){var i=e.getSortOrderOfColumn(t);o.push(Dd.get(i))}return o}var Hd={_arrayMap:[],getValueByIndex:function(e){var t=null;return e1&&void 0!==arguments[1]?arguments[1]:1,r=Y(this._arrayMap)+1,o=[];return Ra(n-1,(function(n){o.push(t._arrayMap.splice(e+n,0,r+n))})),o},removeItems:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[];if(Array.isArray(e)){var r=[].concat(this._arrayMap);e.sort((function(e,t){return t-e}));for(var o=0,i=e.length;o1&&void 0!==arguments[1]?arguments[1]:1,n=this.removeItems(e,t);this._arrayMap=N(this._arrayMap,(function(e){var t=e,r=function(e){return A(n,(function(t,n){var r=t;return e>n&&(r+=1),r}),0)}(t);return r&&(t-=r),t}))},shiftItems:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this._arrayMap=N(this._arrayMap,(function(t){var r=t;return r>=e&&(r+=n),r})),Ra(n-1,(function(n){t._arrayMap.splice(e+n,0,e+n)}))},swapIndexes:function(e,t){var n,r;(n=this._arrayMap).splice.apply(n,[t,0].concat(function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);ti?"asc"===e?tm:em:Zd}})),Fd("date",(function(e,t,n){return function(r,o){var i=n.sortEmptyCells;if(r===o)return Zd;if(lr(r))return lr(o)?Zd:i&&"asc"===e?em:tm;if(lr(o))return i&&"asc"===e?tm:em;var a=t.dateFormat,s=Kn()(r,a),l=Kn()(o,a);return s.isValid()?l.isValid()?l.isAfter(s)?"asc"===e?em:tm:l.isBefore(s)?"asc"===e?tm:em:Zd:em:tm}})),Fd(Id,(function(e,t,n){return function(t,r){var o=n.sortEmptyCells;return"string"==typeof t&&(t=t.toLowerCase()),"string"==typeof r&&(r=r.toLowerCase()),t===r?Zd:lr(t)?lr(r)?Zd:o&&"asc"===e?em:tm:lr(r)?o&&"asc"===e?tm:em:isNaN(t)&&!isNaN(r)?"asc"===e?tm:em:!isNaN(t)&&isNaN(r)?"asc"===e?em:tm:(isNaN(t)||isNaN(r)||(t=parseFloat(t),r=parseFloat(r)),tr?"asc"===e?tm:em:Zd)}}));var Kd=function e(t){Xd(this,e),this.data=t,this.next=null,this.prev=null};const Jd=function(){function e(){Xd(this,e),this.first=null,this.last=null}var t,n;return t=e,(n=[{key:"push",value:function(e){var t=new Kd(e);if(null===this.first)this.first=t,this.last=t;else{var n=this.last;this.last=t,t.prev=n,n.next=t}}},{key:"unshift",value:function(e){var t=new Kd(e);if(null===this.first)this.first=t,this.last=t;else{var n=this.first;this.first=t,t.next=n,n.prev=t}}},{key:"inorder",value:function(e){for(var t=this.first;t;)e(t),t=t.next}},{key:"remove",value:function(e){if(null===this.first)return!1;for(var t,n,r=this.first;r;){if(r.data===e)return t=r.next,n=r.prev,t&&(t.prev=n),n&&(n.next=t),r===this.first&&(this.first=t),r===this.last&&(this.last=n),!0;r=r.next}return!1}},{key:"hasCycle",value:function(){for(var e=this.first,t=this.first;;){if(null===e)return!1;if(null===(e=e.next))return!1;if((e=e.next)===(t=t.next))return!0}}},{key:"pop",value:function(){if(null===this.last)return null;var e=this.last;return this.last=this.last.prev,e}},{key:"shift",value:function(){if(null===this.first)return null;var e=this.first;return this.first=this.first.next,e}},{key:"recursiveReverse",value:function(){if(this.first){!function e(t,n){n&&(e(n,n.next),n.next=t)}(this.first,this.first.next),this.first.next=null;var e=this.first;this.first=this.last,this.last=e}}},{key:"reverse",value:function(){if(this.first&&this.first.next){for(var e,t=this.first.next,n=this.first;t;)e=t.next,t.next=n,n.prev=t,n=t,t=e;this.first.next=null,this.last.prev=null,e=this.first,this.first=n,this.last=e}}}])&&qd(t.prototype,n),e}();var $d=function(e,t){var n=e.toString(),r=t.toString();return n===r?0:n1&&void 0!==arguments[1]?arguments[1]:$d,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;if(Math.abs(r-n)<=1)return[];var o=Math.ceil((n+r)/2);return Qd(e,t,n,o),Qd(e,t,o,r),function(e,t,n,r,o){for(var i=new Jd,a=new Jd,s=r-n,l=o-r,u=Math.max(s,l),c=o-n,h=0;h0?e[n+f]=a.shift().data:e[n+f]=i.shift().data:i.first?e[n+f]=i.shift().data:e[n+f]=a.shift().data,f+=1;return e}(e,t,n,o,r)}var Zd=0,em=-1,tm=1;function nm(e){return function(e){if(Array.isArray(e))return e}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function rm(e){return rm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rm(e)}function om(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function um(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[];return Array.isArray(e)?e.slice(0,1):[e].slice(0,1)}},{key:"areValidSortConfigs",value:function(e){if(!1===Array.isArray(e))return!1;var t=e.map((function(e){return e.column})),n=this.hot.countCols(),r=t.every((function(e){return e<=n&&e>=0}));return function(e){if(!1===Array.isArray(e)||!1===e.every((function(e){return Q(e)})))return!1;var t=e.map((function(e){return e.column}));return new Set(t).size===t.length&&e.every(kd)}(e)&&r}},{key:"saveAllSortSettings",value:function(){var e=this.columnStatesManager.getAllColumnsProperties();e.initialConfig=this.columnStatesManager.getSortStates(),this.hot.runHooks("persistentStateSave","columnSorting",e)}},{key:"getAllSavedSortSettings",value:function(){var e=this,t={};this.hot.runHooks("persistentStateLoad","columnSorting",t);var n=t.value;return ar(n)&&Array.isArray(n.initialConfig)&&(n.initialConfig=N(n.initialConfig,(function(t){var n=t.column,r=lm(t,["column"]);return am({column:e.hot.toVisualColumn(n)},r)}))),n}},{key:"getColumnNextConfig",value:function(e){var t=this.hot.toPhysicalColumn(e);if(this.columnStatesManager.isColumnSorted(t)){var n=this.getSortConfig(e),r=Sd(n.sortOrder);return ar(r)?(n.sortOrder=r,n):void 0}var o=this.hot.countCols();if(Number.isInteger(e)&&e>=0&&e1&&void 0!==arguments[1]?arguments[1]:mm,n=this.hot.toPhysicalColumn(e),r=this.columnStatesManager.getIndexOfColumnInSortQueue(n),o=this.columnStatesManager.isColumnSorted(n),i=this.getSortConfig(),a=this.getColumnNextConfig(e);if(o){if(sr(a))return[].concat(om(i.slice(0,r)),om(i.slice(r+1)));if(t===mm)return[].concat(om(i.slice(0,r)),om(i.slice(r+1)),[a]);if("replace"===t)return[].concat(om(i.slice(0,r)),[a],om(i.slice(r+1)))}return ar(a)?i.concat(a):i}},{key:"setMergedPluginSettings",value:function(e){var t=this.hot.toPhysicalColumn(e),n=this.hot.getSettings()[this.pluginKey],r=this.columnStatesManager.getAllColumnsProperties(),o=this.hot.getCellMeta(0,e),i=Object.getPrototypeOf(o),a=Object.hasOwnProperty.call(i,this.pluginKey)?i[this.pluginKey]:{};this.columnMetaCache.set(t,Object.assign(r,n,a))}},{key:"getFirstCellSettings",value:function(e){var t=this.blockPluginTranslation;this.blockPluginTranslation=!0,(0===this.columnMetaCache.size||this.columnMetaCache.size2?r-2:0),i=2;i1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:"")||"";this.getInputElement().value=e}},{key:"getValue",value:function(){return this.getInputElement().value}},{key:"isFocused",value:function(){return this.rootDocument.activeElement===this.getInputElement()}},{key:"focus",value:function(){this.getInputElement().focus()}},{key:"createEditor",value:function(){var t=this.rootDocument.createElement("div"),n=this.rootDocument.createElement("textarea");return this.container=this.rootDocument.querySelector(".".concat(e.CLASS_EDITOR_CONTAINER)),this.container||(this.container=this.rootDocument.createElement("div"),wt(this.container,e.CLASS_EDITOR_CONTAINER),this.rootDocument.body.appendChild(this.container)),wt(t,e.CLASS_EDITOR),wt(n,e.CLASS_INPUT),t.appendChild(n),this.container.appendChild(t),t}},{key:"getInputElement",value:function(){return this.editor.querySelector(".".concat(e.CLASS_INPUT))}},{key:"destroy",value:function(){var e=this.container?this.container.parentNode:null;this.editor.parentNode.removeChild(this.editor),this.editor=null,this.editorStyle=null,e&&e.removeChild(this.container)}}]),e}();const _m=bm;n(98741);var Mm="---------";function km(e){return gt(e,"htSeparator")}function Sm(e){return gt(e,"htDisabled")}function Cm(e){return gt(e,"htSelectionDisabled")}function Tm(e){var t=e.getSelected();return t?t[0]<0?null:t:null}function Em(e,t){var n={};return P(e,(function(e){for(var r=e.from,o=e.to,i=r.row;i<=o.row;i++)for(var a=r.col;a<=o.col;a++)n[i]||(n[i]=[]),n[i][a]=t(i,a)})),n}function Om(e,t,n,r,o){P(e,(function(e){var i=e.from,a=e.to;if(i.row===a.row&&i.col===a.col)Rm(i.row,i.col,t,n,r,o);else for(var s=i.row;s<=a.row;s++)for(var l=i.col;l<=a.col;l++)Rm(s,l,t,n,r,o)}))}function Rm(e,t,n,r,o,i){var a=o(e,t),s=r;a.className&&(s="vertical"===n?function(e,t){if(-1!==e.indexOf(t))return e;var n=e.replace("htTop","").replace("htMiddle","").replace("htBottom","").replace(" ","");return"".concat(n," ").concat(t)}(a.className,r):function(e,t){if(-1!==e.indexOf(t))return e;var n=e.replace("htLeft","").replace("htCenter","").replace("htRight","").replace("htJustify","").replace(" ","");return"".concat(n," ").concat(t)}(a.className,r)),i(e,t,"className",s)}function Lm(e,t){var n=!1;return Array.isArray(e)&&P(e,(function(e){return e.forAll((function(e,r){if(t(e,r))return n=!0,!1})),n})),n}function Dm(e){return''.concat(String.fromCharCode(10003),"").concat(e)}function Am(e,t){for(var n=e.slice(0);01&&void 0!==arguments[1]?arguments[1]:Mm,n=e.slice(0);return n=function(e,t){var n=e.slice(0);return n.reverse(),(n=Am(n,t)).reverse(),n}(n=Am(n,t),t),n=function(e){var t=[];return P(e,(function(e,n){n>0?t[t.length-1].name!==e.name&&t.push(e):t.push(e)})),t}(n),n}function Nm(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:250;this.showDebounced=sn((function(t){e.wasLastActionShow&&e.runLocalHooks("show",t.from.row,t.from.col)}),t)}},{key:"destroy",value:function(){this.clearLocalHooks()}}],n&&Nm(t.prototype,n),e}();J(Pm,Zh);const xm=Pm;function Ym(e){return Ym="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ym(e)}function Im(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jm(e,t){for(var n=0;n0&&void 0!==arguments[0])||arguments[0];if(!this.range.from)throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');this.hot.setCellMeta(this.range.from.row,this.range.from.col,zm,void 0),e&&this.hot.render(),this.hide()}},{key:"removeCommentAtCell",value:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];this.setRange({from:new Me(e,t)}),this.removeComment(n)}},{key:"getComment",value:function(){var e=this.range.from.row,t=this.range.from.col;return this.getCommentMeta(e,t,Gm)}},{key:"getCommentAtCell",value:function(e,t){return this.getCommentMeta(e,t,Gm)}},{key:"show",value:function(){if(!this.range.from)throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');var e=this.hot.getCellMeta(this.range.from.row,this.range.from.col);return this.refreshEditor(!0),this.editor.setValue(e[zm]?e[zm][Gm]:""),this.editor.hidden&&this.editor.show(),!0}},{key:"showAtCell",value:function(e,t){return this.setRange({from:new Me(e,t)}),this.show()}},{key:"hide",value:function(){this.editor.hidden||this.editor.hide()}},{key:"refreshEditor",value:function(){if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]||this.range.from&&this.editor.isVisible()){var e=this.hot.rootWindow,t=this.hot.view.wt,n=t.wtTable,r=t.wtOverlays,o=t.wtViewport,i=r.scrollableElement,a=n.getCell(this.range.from),s=this.range.from.row,l=this.range.from.col,u=Ot(a),c=n.getStretchedColumnWidth(l),h=u.top<0?0:u.top,f=u.left;o.hasVerticalScroll()&&i!==e&&(h-=r.topOverlay.getScrollPosition()),o.hasHorizontalScroll()&&i!==e&&(f-=r.leftOverlay.getScrollPosition());var d=f+c,m=h,p=this.getCommentMeta(s,l,qm),y=this.getCommentMeta(s,l,Xm);p?this.editor.setSize(p.width,p.height):this.editor.resetSize(),this.editor.setReadOnlyState(y),this.editor.setPosition(d,m)}}},{key:"checkSelectionCommentsConsistency",value:function(){var e=this.hot.getSelectedRangeLast();if(!e)return!1;var t=!1,n=e.from;return this.getCommentMeta(n.row,n.col,Gm)&&(t=!0),t}},{key:"updateCommentMeta",value:function(e,t,n){var r,o=this.hot.getCellMeta(e,t)[zm];o?q(r=X(o),n):r=n,this.hot.setCellMeta(e,t,zm,r)}},{key:"getCommentMeta",value:function(e,t,n){var r=this.hot.getCellMeta(e,t);if(r[zm])return r[zm][n]}},{key:"onMouseDown",value:function(e){if(this.mouseDown=!0,this.hot.view&&this.hot.view.wt){if(!this.contextMenuEvent&&!this.targetIsCommentTextArea(e)){var t=st(e.target,"TD","TBODY"),n=null;t&&(n=this.hot.view.wt.wtTable.getCoords(t)),(!t||this.range.from&&n&&(this.range.from.row!==n.row||this.range.from.col!==n.col))&&this.hide()}this.contextMenuEvent=!1}}},{key:"onMouseOver",value:function(e){var t=Um.get(this),n=this.hot.rootDocument;if(t.cellBelowCursor=n.elementFromPoint(e.clientX,e.clientY),!(this.mouseDown||this.editor.isFocused()||gt(e.target,"wtBorder")||t.cellBelowCursor!==e.target)&&this.editor)if(this.targetIsCellWithComment(e)){var r=this.hot.view.wt.wtTable.getCoords(e.target),o={from:new Me(r.row,r.col)};this.displaySwitch.show(o)}else ut(e.target,n)&&!this.targetIsCommentTextArea(e)&&this.displaySwitch.hide()}},{key:"onMouseUp",value:function(){this.mouseDown=!1}},{key:"onAfterRenderer",value:function(e,t){t[zm]&&t[zm][Gm]&&wt(e,t.commentedCellClassName)}},{key:"onEditorBlur",value:function(){this.setComment()}},{key:"onEditorMouseDown",value:function(e){Um.get(this).tempEditorDimensions={width:Yt(e.target),height:It(e.target)}}},{key:"onEditorMouseUp",value:function(e){var t=Um.get(this),n=Yt(e.target),r=It(e.target);n===t.tempEditorDimensions.width+1&&r===t.tempEditorDimensions.height+2||this.updateCommentMeta(this.range.from.row,this.range.from.col,Im({},qm,{width:n,height:r}))}},{key:"onContextMenuAddComment",value:function(){var e=this;this.displaySwitch.cancelHiding();var t=this.hot.getSelectedRangeLast();this.contextMenuEvent=!0,this.setRange({from:t.from}),this.show(),setTimeout((function(){e.hot&&(e.hot.deselectCell(),e.editor.focus())}),10)}},{key:"onContextMenuRemoveComment",value:function(){var e=this.hot.getSelectedRangeLast(),t=e.from,n=e.to;this.contextMenuEvent=!0;for(var r=t.row;r<=n.row;r++)for(var o=t.col;o<=n.col;o++)this.removeCommentAtCell(r,o,!1);this.hot.render()}},{key:"onContextMenuMakeReadOnly",value:function(){var e=this.hot.getSelectedRangeLast(),t=e.from,n=e.to;this.contextMenuEvent=!0;for(var r=t.row;r<=n.row;r++)for(var o=t.col;o<=n.col;o++){var i=!!this.getCommentMeta(r,o,Xm);this.updateCommentMeta(r,o,Im({},Xm,!i))}}},{key:"addToContextMenu",value:function(e){var t=this;e.items.push({name:"---------"},{key:"commentsAddEdit",name:function(){return t.checkSelectionCommentsConsistency()?t.hot.getTranslatedPhrase(cc):t.hot.getTranslatedPhrase(uc)},callback:function(){return t.onContextMenuAddComment()},disabled:function(){return!(this.getSelectedLast()&&!this.selection.isSelectedByCorner())}},{key:"commentsRemove",name:function(){return this.getTranslatedPhrase(hc)},callback:function(){return t.onContextMenuRemoveComment()},disabled:function(){return t.hot.selection.isSelectedByCorner()}},{key:"commentsReadOnly",name:function(){var e=this,t=this.getTranslatedPhrase(fc),n=Lm(this.getSelectedRangeLast(),(function(t,n){var r=e.getCellMeta(t,n)[zm];if(r&&(r=r[Xm]),r)return!0}));return n&&(t=Dm(t)),t},callback:function(){return t.onContextMenuMakeReadOnly()},disabled:function(){return t.hot.selection.isSelectedByCorner()||!t.checkSelectionCommentsConsistency()}})}},{key:"getDisplayDelaySetting",value:function(){var e=this.hot.getSettings().comments;if(Q(e))return e.displayDelay}},{key:"onAfterBeginEditing",value:function(){this.hide()}},{key:"destroy",value:function(){this.editor&&this.editor.destroy(),this.displaySwitch&&this.displaySwitch.destroy(),Wm(Bm(t.prototype),"destroy",this).call(this)}}],r&&jm(n.prototype,r),t}(Rf);gu("comments",Km);const Jm=Km;function $m(e,t){for(var n=0;n1?n-1:0),o=1;o=this.getSettings().maxRows},hidden:function(){return!this.getSettings().allowInsertRow}}})),fp(ap,up,(function(){return{key:up,name:function(){return this.getTranslatedPhrase(Xu)},callback:function(e,t){var n=t[Math.max(t.length-1,0)];this.alter("insert_row",n.end.row+1,1,"ContextMenu.rowBelow")},disabled:function(){return!Tm(this)||this.selection.isSelectedByColumnHeader()||this.countRows()>=this.getSettings().maxRows},hidden:function(){return!this.getSettings().allowInsertRow}}})),fp(ap,tp,(function(){return{key:tp,name:function(){return this.getTranslatedPhrase(Ku)},callback:function(e,t){var n=t[Math.max(t.length-1,0)];this.alter("insert_col",n.start.col,1,"ContextMenu.columnLeft")},disabled:function(){var e=Tm(this);if(!e)return!0;if(!this.isColumnModificationAllowed())return!0;var t,n,r=(t=e[0],n=3,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),o=r[0],i=r[1],a=[o,0,r[2],this.countCols()-1].join(",")===e.join(","),s=1===this.countCols();return i<0||this.countCols()>=this.getSettings().maxCols||!s&&a},hidden:function(){return!this.getSettings().allowInsertColumn}}})),fp(ap,np,(function(){return{key:np,name:function(){return this.getTranslatedPhrase(Ju)},callback:function(e,t){var n=t[Math.max(t.length-1,0)];this.alter("insert_col",n.end.col+1,1,"ContextMenu.columnRight")},disabled:function(){var e=Tm(this);if(!e)return!0;if(!this.isColumnModificationAllowed())return!0;var t,n,r=(t=e[0],n=3,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),o=r[0],i=r[1],a=[o,0,r[2],this.countCols()-1].join(",")===e.join(","),s=1===this.countCols();return i<0||this.countCols()>=this.getSettings().maxCols||!s&&a},hidden:function(){return!this.getSettings().allowInsertColumn}}})),fp(ap,ep,(function(){return{key:ep,name:function(){return this.getTranslatedPhrase(nc)},callback:function(e,t){var n=t[0].start.col;this.countRows()&&this.populateFromArray(0,n,[[null]],Math.max(t[0].start.row,t[0].end.row),n,"ContextMenu.clearColumn")},disabled:function(){var e=Tm(this);if(!e)return!0;var t,n,r=(t=e[0],n=3,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),o=r[0],i=r[1],a=[o,0,r[2],this.countCols()-1].join(",")===e.join(",");return i<0||this.countCols()>=this.getSettings().maxCols||a}}})),fp(ap,sp,(function(){return{key:sp,name:function(){var e,t,n=this.getSelected(),r=0;if(n)if(n.length>1)r=1;else{var o=(e=n[0],t=3,function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}());o[0]-o[2]!=0&&(r=1)}return this.getTranslatedPhrase($u,r)},callback:function(){this.alter("remove_row",function(e){var t=cf(e);if(0===t||1===t)return[];var n=hf(t),r=new Set;P(e,(function(e){var t=rf(n(e),3),o=t[0],i=t[2]-o+1;P(Array.from(new Array(i),(function(e,t){return o+t})),(function(e){r.has(e)||r.add(e)}))}));var o=A(Array.from(r).sort((function(e,t){return e-t})),(function(e,t,n,r){return 0!==n&&t===r[n-1]+1?e[e.length-1][1]+=1:e.push([t,1]),e}),[]);return o}(this.getSelected()),1,"ContextMenu.removeRow")},disabled:function(){var e=Tm(this),t=this.countRows();return!e||this.selection.isSelectedByColumnHeader()||this.selection.isSelectedByCorner()||!t},hidden:function(){return!this.getSettings().allowRemoveRow}}})),fp(ap,ip,(function(){return{key:ip,name:function(){var e,t,n=this.getSelected(),r=0;if(n)if(n.length>1)r=1;else{var o=(e=n[0],t=4,function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}());o[1]-o[3]!=0&&(r=1)}return this.getTranslatedPhrase(Qu,r)},callback:function(){this.alter("remove_col",function(e){var t=cf(e);if(0===t||1===t)return[];var n=hf(t),r=new Set;P(e,(function(e){var t=rf(n(e),4),o=t[1],i=t[3]-o+1;P(Array.from(new Array(i),(function(e,t){return o+t})),(function(e){r.has(e)||r.add(e)}))}));var o=A(Array.from(r).sort((function(e,t){return e-t})),(function(e,t,n,r){return 0!==n&&t===r[n-1]+1?e[e.length-1][1]+=1:e.push([t,1]),e}),[]);return o}(this.getSelected()),null,"ContextMenu.removeColumn")},disabled:function(){var e=Tm(this),t=this.countCols();return!e||this.selection.isSelectedByRowHeader()||this.selection.isSelectedByCorner()||!this.isColumnModificationAllowed()||!t},hidden:function(){return!this.getSettings().allowRemoveColumn}}})),fp(ap,hp,(function(){return{key:hp,name:function(){return this.getTranslatedPhrase(Zu)},callback:function(){this.undo()},disabled:function(){return this.undoRedo&&!this.undoRedo.isUndoAvailable()}}})),fp(ap,op,(function(){return{key:op,name:function(){return this.getTranslatedPhrase(ec)},callback:function(){this.redo()},disabled:function(){return this.undoRedo&&!this.undoRedo.isRedoAvailable()}}})),fp(ap,rp,(function(){return{key:rp,name:function(){var e=this,t=this.getTranslatedPhrase(tc),n=Lm(this.getSelectedRange(),(function(t,n){return e.getCellMeta(t,n).readOnly}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Lm(t,(function(t,n){return e.getCellMeta(t,n).readOnly}));P(t,(function(t){t.forAll((function(t,r){e.setCellMeta(t,r,"readOnly",!n)}))})),this.render()},disabled:function(){return!(this.getSelectedRange()&&!this.selection.isSelectedByCorner())}}})),fp(ap,Zm,(function(){return{key:Zm,name:function(){return this.getTranslatedPhrase(dc)},disabled:function(){return!(this.getSelectedRange()&&!this.selection.isSelectedByCorner())},submenu:{items:[{key:"".concat(Zm,":left"),name:function(){var e=this,t=this.getTranslatedPhrase(mc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htLeft"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="horizontal",o="htLeft";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{key:"".concat(Zm,":center"),name:function(){var e=this,t=this.getTranslatedPhrase(pc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htCenter"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="horizontal",o="htCenter";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{key:"".concat(Zm,":right"),name:function(){var e=this,t=this.getTranslatedPhrase(yc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htRight"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="horizontal",o="htRight";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{key:"".concat(Zm,":justify"),name:function(){var e=this,t=this.getTranslatedPhrase(vc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htJustify"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="horizontal",o="htJustify";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{name:Mm},{key:"".concat(Zm,":top"),name:function(){var e=this,t=this.getTranslatedPhrase(gc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htTop"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="vertical",o="htTop";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{key:"".concat(Zm,":middle"),name:function(){var e=this,t=this.getTranslatedPhrase(wc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htMiddle"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="vertical",o="htMiddle";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1},{key:"".concat(Zm,":bottom"),name:function(){var e=this,t=this.getTranslatedPhrase(bc),n=Lm(this.getSelectedRange(),(function(t,n){var r=e.getCellMeta(t,n).className;if(r&&-1!==r.indexOf("htBottom"))return!0}));return n&&(t=Dm(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=Em(t,(function(t,n){return e.getCellMeta(t,n).className})),r="vertical",o="htBottom";this.runHooks("beforeCellAlignment",n,t,r,o),Om(t,r,o,(function(t,n){return e.getCellMeta(t,n)}),(function(t,n,r,o){return e.setCellMeta(t,n,r,o)})),this.render()},disabled:!1}]}}})),ap);function pp(){var e={};return ee(mp,(function(t,n){e[n]=t()})),e}function yp(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:null;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.hot=t,this.predefinedItems=pp(),this.defaultOrderPattern=n}var t,n;return t=e,n=[{key:"setPredefinedItems",value:function(e){var t=this,n={};this.defaultOrderPattern.length=0,ee(e,(function(e,r){var o="";e.name===Mm?(n[Mm]=e,o=Mm):isNaN(parseInt(r,10))?(e.key=void 0===e.key?r:e.key,n[r]=e,o=e.key):(n[e.key]=e,o=e.key),t.defaultOrderPattern.push(o)})),this.predefinedItems=n}},{key:"getItems",value:function(){return function(){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=[],r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return r&&r.items?r=r.items:Array.isArray(r)||(r=e),Q(r)?ee(r,(function(e,r){var o=t["string"==typeof e?e:r];o||(o=e),Q(e)?G(o,e):"string"==typeof o&&(o={name:o}),void 0===o.key&&(o.key=r),n.push(o)})):P(r,(function(e,r){var o=t[e];!o&&dp.indexOf(e)>=0||(o||(o={name:e,key:"".concat(r)}),Q(e)&&G(o,e),void 0===o.key&&(o.key=r),n.push(o))})),n}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,this.defaultOrderPattern,this.predefinedItems)}}],n&&yp(t.prototype,n),e}();const gp=vp;function wp(e,t){for(var n=0;n=e.offsetHeight}},{key:"fitsBelow",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.rootWindow.innerHeight;return this.topRelative+e.offsetHeight<=t}},{key:"fitsOnRight",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.rootWindow.innerWidth;return this.leftRelative+this.cellWidth+e.offsetWidth<=t}},{key:"fitsOnLeft",value:function(e){return this.leftRelative>=e.offsetWidth}}],n&&wp(t.prototype,n),e}();const _p=bp;function Mp(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:0;this.offset[e]=t}},{key:"isSubMenu",value:function(){return null!==this.parentMenu}},{key:"open",value:function(){var e=this;this.runLocalHooks("beforeOpen"),this.container.removeAttribute("style"),this.container.style.display="block";var t=sn((function(t){return e.openSubMenu(t)}),300),n=this.options.minWidth||215,r=!1,o=H(this.menuItems,(function(t){return t.key===cp&&(r=!0),function(e,t){return!e.hidden||!("function"==typeof e.hidden&&e.hidden.call(t))}(t,e.hot)}));if(o.length<1&&!r)o.push(pp()[cp]);else if(0===o.length)return;var i={data:o=Hm(o,Mm),colHeaders:!1,autoColumnSize:!0,modifyColWidth:function(e){return ar(e)&&e0&&void 0!==arguments[0]&&arguments[0];this.isOpened()&&(e&&this.parentMenu?this.parentMenu.close():(this.closeAllSubMenus(),this.container.style.display="none",this.releaseMainTableCallbacks(),this.hotMenu.destroy(),this.hotMenu=null,this.hot.getSettings().outsideClickDeselects=this.origOutsideClickDeselects,this.runLocalHooks("afterClose"),this.parentMenu&&this.parentMenu.hotMenu.listen()))}},{key:"openSubMenu",value:function(t){if(!this.hotMenu)return!1;var n=this.hotMenu.getCell(t,0);if(this.closeAllSubMenus(),!n||!function(e){return gt(e,"htSubmenu")}(n))return!1;var r=this.hotMenu.getSourceDataAtRow(t),o=new e(this.hot,{parent:this,name:r.name,className:this.options.className,keepInViewport:!0});return o.setMenuItems(r.submenu.items),o.open(),o.setPosition(n.getBoundingClientRect()),this.hotSubMenus[r.key]=o,o}},{key:"closeSubMenu",value:function(e){var t=this.hotMenu.getSourceDataAtRow(e),n=this.hotSubMenus[t.key];n&&(n.destroy(),delete this.hotSubMenus[t.key])}},{key:"closeAllSubMenus",value:function(){var e=this;P(this.hotMenu.getData(),(function(t,n){return e.closeSubMenu(n)}))}},{key:"isAllSubMenusClosed",value:function(){return 0===Object.keys(this.hotSubMenus).length}},{key:"destroy",value:function(){var e=this.container.parentNode;this.clearLocalHooks(),this.close(),this.parentMenu=null,this.eventManager.destroy(),e&&e.removeChild(this.container)}},{key:"isOpened",value:function(){return null!==this.hotMenu}},{key:"executeCommand",value:function(e){if(this.isOpened()&&this.hotMenu.getSelectedLast()){var t=this.hotMenu.getSourceDataAtRow(this.hotMenu.getSelectedLast()[0]);if(this.runLocalHooks("select",t,e),!1!==t.isCommand&&t.name!==Mm){var n=this.hot.getSelectedRange(),r=n?function(e){return N(e,(function(e){return{start:e.getTopLeftCorner(),end:e.getBottomRightCorner()}}))}(n):[],o=!0;(!0===t.disabled||"function"==typeof t.disabled&&!0===t.disabled.call(this.hot)||t.submenu)&&(o=!1),this.runLocalHooks("executeCommand",t.key,r,e),this.isSubMenu()&&this.parentMenu.runLocalHooks("executeCommand",t.key,r,e),o&&this.close(!0)}}}},{key:"setPosition",value:function(e){var t=new _p(e,this.hot.rootWindow);this.options.keepInViewport?(t.fitsBelow(this.container)?this.setPositionBelowCursor(t):t.fitsAbove(this.container)?this.setPositionAboveCursor(t):this.setPositionBelowCursor(t),t.fitsOnRight(this.container)?this.setPositionOnRightOfCursor(t):this.setPositionOnLeftOfCursor(t)):(this.setPositionBelowCursor(t),this.setPositionOnRightOfCursor(t))}},{key:"setPositionAboveCursor",value:function(e){var t=this.offset.above+e.top-this.container.offsetHeight;this.isSubMenu()&&(t=e.top+e.cellHeight-this.container.offsetHeight+3),this.container.style.top="".concat(t,"px")}},{key:"setPositionBelowCursor",value:function(e){var t=this.offset.below+e.top;this.isSubMenu()&&(t=e.top-1),this.container.style.top="".concat(t,"px")}},{key:"setPositionOnRightOfCursor",value:function(e){var t;t=this.isSubMenu()?1+e.left+e.cellWidth:this.offset.right+1+e.left,this.container.style.left="".concat(t,"px")}},{key:"setPositionOnLeftOfCursor",value:function(e){var t=this.offset.left+e.left-this.container.offsetWidth+Xt(this.hot.rootDocument)+4;this.container.style.left="".concat(t,"px")}},{key:"selectFirstCell",value:function(){var e=this.hotMenu.getCell(0,0);km(e)||Sm(e)||Cm(e)?this.selectNextCell(0,0):this.hotMenu.selectCell(0,0)}},{key:"selectLastCell",value:function(){var e=this.hotMenu.countRows()-1,t=this.hotMenu.getCell(e,0);km(t)||Sm(t)||Cm(t)?this.selectPrevCell(e,0):this.hotMenu.selectCell(e,0)}},{key:"selectNextCell",value:function(e,t){var n=e+1,r=n=0?this.hotMenu.getCell(n,t):null;r&&(km(r)||Sm(r)||Cm(r)?this.selectPrevCell(n,t):this.hotMenu.selectCell(n,t))}},{key:"menuItemRenderer",value:function(e,t,n,r,o,i){var a,s=this,l=e.getSourceDataAtRow(n),u=this.hot.rootDocument.createElement("div"),c=function(e){return e.disableSelection},h=i;"function"==typeof h&&(h=h.call(this.hot)),Mt(t),wt(u,"htItemWrapper"),t.appendChild(u),a=l,new RegExp(Mm,"i").test(a.name)?wt(t,"htSeparator"):"function"==typeof l.renderer?(wt(t,"htCustomMenuRenderer"),t.appendChild(l.renderer(e,u,n,r,o,h))):Ct(u,h),function(e){return!0===e.disabled||"function"==typeof e.disabled&&!0===e.disabled.call(s.hot)}(l)?(wt(t,"htDisabled"),this.eventManager.addEventListener(t,"mouseenter",(function(){return e.deselectCell()}))):c(l)?(wt(t,"htSelectionDisabled"),this.eventManager.addEventListener(t,"mouseenter",(function(){return e.deselectCell()}))):function(e){return oe(e,"submenu")}(l)?(wt(t,"htSubmenu"),c(l)?this.eventManager.addEventListener(t,"mouseenter",(function(){return e.deselectCell()})):this.eventManager.addEventListener(t,"mouseenter",(function(){return e.selectCell(n,r,void 0,void 0,!1,!1)}))):(bt(t,"htSubmenu"),bt(t,"htDisabled"),c(l)?this.eventManager.addEventListener(t,"mouseenter",(function(){return e.deselectCell()})):this.eventManager.addEventListener(t,"mouseenter",(function(){return e.selectCell(n,r,void 0,void 0,!1,!1)})))}},{key:"createContainer",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=this.hot.rootDocument,r=t;return r&&(rn(r)&&(r=null===(r=r.call(this.hot))||sr(r)?"":r.toString()),r=r.replace(/[^A-z0-9]/g,"_"),r="".concat(this.options.className,"Sub_").concat(r),e=n.querySelector(".".concat(this.options.className,".").concat(r))),e||(wt(e=n.createElement("div"),"htMenu ".concat(this.options.className)),r&&wt(e,r),n.getElementsByTagName("body")[0].appendChild(e)),e}},{key:"blockMainTableCallbacks",value:function(){this._afterScrollCallback=function(){},this.hot.addHook("afterScrollVertically",this._afterScrollCallback),this.hot.addHook("afterScrollHorizontally",this._afterScrollCallback)}},{key:"releaseMainTableCallbacks",value:function(){this._afterScrollCallback&&(this.hot.removeHook("afterScrollVertically",this._afterScrollCallback),this.hot.removeHook("afterScrollHorizontally",this._afterScrollCallback),this._afterScrollCallback=null)}},{key:"onBeforeKeyDown",value:function(e){var t=this.hotMenu.getSelectedLast(),n=!1;switch(this.keyEvent=!0,e.keyCode){case lo.ESCAPE:this.close(),n=!0;break;case lo.ENTER:t&&(this.hotMenu.getSourceDataAtRow(t[0]).submenu?n=!0:(this.executeCommand(e),this.close(!0)));break;case lo.ARROW_DOWN:t?this.selectNextCell(t[0],t[1]):this.selectFirstCell(),n=!0;break;case lo.ARROW_UP:t?this.selectPrevCell(t[0],t[1]):this.selectLastCell(),n=!0;break;case lo.ARROW_RIGHT:if(t){var r=this.openSubMenu(t[0]);r&&r.selectFirstCell()}n=!0;break;case lo.ARROW_LEFT:t&&this.isSubMenu()&&(this.close(),this.parentMenu&&this.parentMenu.hotMenu.listen(),n=!0)}n&&(e.preventDefault(),jr(e)),this.keyEvent=!1}},{key:"onAfterInit",value:function(){var e=this.hotMenu.view.wt.wtTable,t=this.hotMenu.getSettings().data,n=e.hider.style,r=e.holder.style,o=parseInt(n.width,10),i=A(t,(function(e,t){return e+(t.name===Mm?1:26)}),0);r.width="".concat(o+22,"px"),r.height="".concat(i+4,"px"),n.height=r.height}},{key:"onAfterSelection",value:function(e,t,n,r,o){!1===this.keyEvent&&(o.value=!0)}},{key:"onDocumentMouseDown",value:function(e){this.isOpened()&&(this.container&&ut(e.target,this.container)&&this.executeCommand(e),(this.options.standalone&&this.hotMenu&&!ut(e.target,this.hotMenu.rootElement)||(this.isAllSubMenusClosed()||this.isSubMenu())&&!ut(e.target,".htMenu")&&ut(e.target,this.hot.rootDocument))&&this.close(!0))}}],n&&Mp(t.prototype,n),e}();J(kp,Zh);const Sp=kp;function Cp(e){return Cp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Cp(e)}function Tp(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ep(e,t,n){return Ep="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Op(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}},Ep(e,t,n||e)}function Op(e){return Op=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Op(e)}function Rp(e,t){for(var n=0;n1?n-1:0),o=1;o0&&(jp-=1),function(e){e.eventManager.clear()}(e),jp<=0)){jp=0;var t=Bp.get(e.rootDocument);t&&t.parentNode&&(t.parentNode.removeChild(t),Bp.delete(e.rootDocument)),e.mainElement=null}}function Up(e){return Up="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Up(e)}function zp(e,t){for(var n=0;n',''].join(""),Qp=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,t){return!t||"object"!==Up(t)&&"function"!=typeof t?Gp(e):t}(this,Xp(t).call(this,e))).columnsLimit=1e3,n.copyableRanges=[],n.focusableElement=void 0,n.pasteMode="overwrite",n.rowsLimit=1e3,Jp.set(Gp(n),{isTriggeredByCopy:!1,isTriggeredByCut:!1,isBeginEditing:!1,isFragmentSelectionEnabled:!1}),n}var n,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Kp(e,t)}(t,e),n=t,r=[{key:"isEnabled",value:function(){return!!this.hot.getSettings().copyPaste}},{key:"enablePlugin",value:function(){var e=this;if(!this.enabled){var n,r,o=this.hot.getSettings();Jp.get(this).isFragmentSelectionEnabled=o.fragmentSelection,"object"===Up(o.copyPaste)&&(this.pasteMode=o.copyPaste.pasteMode||this.pasteMode,this.rowsLimit=o.copyPaste.rowsLimit||this.rowsLimit,this.columnsLimit=o.copyPaste.columnsLimit||this.columnsLimit),this.addHook("afterContextMenuDefaultOptions",(function(t){return e.onAfterContextMenuDefaultOptions(t)})),this.addHook("afterOnCellMouseUp",(function(){return e.onAfterOnCellMouseUp()})),this.addHook("afterSelectionEnd",(function(){return e.onAfterSelectionEnd()})),this.addHook("beforeKeyDown",(function(){return e.onBeforeKeyDown()})),this.focusableElement=(n=this.hot.rootDocument,r=new Ip(n),jp+=1,r),this.focusableElement.addLocalHook("copy",(function(t){return e.onCopy(t)})).addLocalHook("cut",(function(t){return e.onCut(t)})).addLocalHook("paste",(function(t){return e.onPaste(t)})),qp(Xp(t.prototype),"enablePlugin",this).call(this)}}},{key:"updatePlugin",value:function(){this.disablePlugin(),this.enablePlugin(),this.getOrCreateFocusableElement(),qp(Xp(t.prototype),"updatePlugin",this).call(this)}},{key:"disablePlugin",value:function(){this.focusableElement&&Vp(this.focusableElement),qp(Xp(t.prototype),"disablePlugin",this).call(this)}},{key:"copy",value:function(){Jp.get(this).isTriggeredByCopy=!0,this.getOrCreateFocusableElement(),this.focusableElement.focus(),this.hot.rootDocument.execCommand("copy")}},{key:"cut",value:function(){Jp.get(this).isTriggeredByCut=!0,this.getOrCreateFocusableElement(),this.focusableElement.focus(),this.hot.rootDocument.execCommand("cut")}},{key:"getRangedCopyableData",value:function(e){var t=this,n=[],r=[],o=[];return P(e,(function(e){Ra(e.startRow,e.endRow,(function(e){-1===r.indexOf(e)&&r.push(e)})),Ra(e.startCol,e.endCol,(function(e){-1===o.indexOf(e)&&o.push(e)}))})),P(r,(function(e){var r=[];P(o,(function(n){r.push(t.hot.getCopyableData(e,n))})),n.push(r)})),Vl.stringify(n)}},{key:"getRangedData",value:function(e){var t=this,n=[],r=[],o=[];return P(e,(function(e){Ra(e.startRow,e.endRow,(function(e){-1===r.indexOf(e)&&r.push(e)})),Ra(e.startCol,e.endCol,(function(e){-1===o.indexOf(e)&&o.push(e)}))})),P(r,(function(e){var r=[];P(o,(function(n){r.push(t.hot.getCopyableData(e,n))})),n.push(r)})),n}},{key:"paste",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;if(e||t){var n=new xp;e&&n.clipboardData.setData("text/plain",e),t&&n.clipboardData.setData("text/html",t),this.getOrCreateFocusableElement(),this.onPaste(n)}}},{key:"setCopyableText",value:function(){var e=this.hot.getSelectedRangeLast();if(e){var t=e.getTopLeftCorner(),n=e.getBottomRightCorner(),r=t.row,o=t.col,i=n.row,a=n.col,s=Math.min(i,r+this.rowsLimit-1),l=Math.min(a,o+this.columnsLimit-1);this.copyableRanges.length=0,this.copyableRanges.push({startRow:r,startCol:o,endRow:s,endCol:l}),this.copyableRanges=this.hot.runHooks("modifyCopyableRange",this.copyableRanges),i===s&&a===l||this.hot.runHooks("afterCopyLimit",i-r+1,a-o+1,this.rowsLimit,this.columnsLimit)}}},{key:"getOrCreateFocusableElement",value:function(){var e=this.hot.getActiveEditor(),t=e?e.TEXTAREA:void 0;t?this.focusableElement.setFocusableElement(t):this.focusableElement.useSecondaryElement()}},{key:"isEditorOpened",value:function(){var e=this.hot.getActiveEditor();return e&&e.isOpened()}},{key:"populateValues",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hot.getSelectedLast();if(e.length){for(var n=e.length-1,r=e[0].length-1,o=Math.min(t[0],t[2]),i=Math.max(t[0],t[2],n+o),a=Math.min(t[1],t[3]),s=Math.max(t[1],t[3],r+a),l=[],u=o,c=0;u<=i;u+=1){for(var h=[],f=a,d=0;f<=s;f+=1)h.push(e[c][d]),d=d===r?0:d+=1;l.push(h),c=c===n?0:c+=1}return this.hot.populateFromArray(o,a,l,void 0,void 0,"CopyPaste.paste",this.pasteMode),[o,a,i,s]}}},{key:"onCopy",value:function(e){var t=Jp.get(this);if((this.hot.isListening()||t.isTriggeredByCopy)&&!this.isEditorOpened()){this.setCopyableText(),t.isTriggeredByCopy=!1;var n=this.getRangedData(this.copyableRanges);if(this.hot.runHooks("beforeCopy",n,this.copyableRanges)){var r=Vl.stringify(n);if(e&&e.clipboardData){var o=mu(n,this.hot.rootDocument);e.clipboardData.setData("text/plain",r),e.clipboardData.setData("text/html",[$p,o].join(""))}else"undefined"==typeof ClipboardEvent&&this.hot.rootWindow.clipboardData.setData("Text",r);this.hot.runHooks("afterCopy",n,this.copyableRanges)}e.preventDefault()}}},{key:"onCut",value:function(e){var t=Jp.get(this);if((this.hot.isListening()||t.isTriggeredByCut)&&!this.isEditorOpened()){this.setCopyableText(),t.isTriggeredByCut=!1;var n=this.getRangedData(this.copyableRanges);if(this.hot.runHooks("beforeCut",n,this.copyableRanges)){var r=Vl.stringify(n);if(e&&e.clipboardData){var o=mu(n,this.hot.rootDocument);e.clipboardData.setData("text/plain",r),e.clipboardData.setData("text/html",[$p,o].join(""))}else"undefined"==typeof ClipboardEvent&&this.hot.rootWindow.clipboardData.setData("Text",r);this.hot.emptySelectedCells("CopyPaste.cut"),this.hot.runHooks("afterCut",n,this.copyableRanges)}e.preventDefault()}}},{key:"onPaste",value:function(e){if(this.hot.isListening()&&!this.isEditorOpened()){var t;if(e&&e.preventDefault&&e.preventDefault(),e&&void 0!==e.clipboardData){var n=e.clipboardData.getData("text/html");t=n&&/(1},hidden:!1}),function(e){return{key:"cut",name:function(){return this.getTranslatedPhrase(oc)},callback:function(){e.cut()},disabled:function(){var e=this.getSelected();return!e||e.length>1},hidden:!1}}(this))}},{key:"onAfterOnCellMouseUp",value:function(){this.hot.isListening()&&!this.isEditorOpened()&&(this.getOrCreateFocusableElement(),this.focusableElement.focus())}},{key:"onAfterSelectionEnd",value:function(){var e=Jp.get(this).isFragmentSelectionEnabled;this.isEditorOpened()||(this.getOrCreateFocusableElement(),e&&this.focusableElement.getFocusableElement()!==this.hot.rootDocument.activeElement&&zt()||(this.setCopyableText(),this.focusableElement.focus()))}},{key:"onBeforeKeyDown",value:function(){if(this.hot.isListening()&&!this.isEditorOpened()){var e=this.hot.rootDocument.activeElement,t=this.hot.getActiveEditor();!t||e!==this.focusableElement.getFocusableElement()&&e!==t.select||(this.getOrCreateFocusableElement(),this.focusableElement.focus())}}},{key:"destroy",value:function(){this.focusableElement&&(Vp(this.focusableElement),this.focusableElement=null),qp(Xp(t.prototype),"destroy",this).call(this)}}],r&&zp(n.prototype,r),t}(Rf);gu("CopyPaste",Qp);const Zp=Qp;function ey(e,t){return"border_row".concat(e,"col").concat(t)}function ty(e,t){return{id:ey(e,t),border:{width:1,color:"#000",cornerVisible:!1},row:e,col:t,top:{hide:!0},right:{hide:!0},bottom:{hide:!0},left:{hide:!0}}}function ny(e,t){var n=!1;return P(e.getSelectedRange(),(function(r){r.forAll((function(r,o){var i=e.getCellMeta(r,o).borders;if(i){if(!t)return n=!0,!1;if(!oe(i[t],"hide")||!1===i[t].hide)return n=!0,!1}}))})),n}function ry(e){return''.concat(String.fromCharCode(10003),"").concat(e)}function oy(e){return{key:"borders:bottom",name:function(){var e=this.getTranslatedPhrase(Sc);return ny(this,"bottom")&&(e=ry(e)),e},callback:function(t,n){var r=ny(this,"bottom");e.prepareBorder(n,"bottom",r)}}}function iy(e){return{key:"borders:left",name:function(){var e=this.getTranslatedPhrase(Cc);return ny(this,"left")&&(e=ry(e)),e},callback:function(t,n){var r=ny(this,"left");e.prepareBorder(n,"left",r)}}}function ay(e){return{key:"borders:no_borders",name:function(){return this.getTranslatedPhrase(Tc)},callback:function(t,n){e.prepareBorder(n,"noBorders")},disabled:function(){return!ny(this)}}}function sy(e){return{key:"borders:right",name:function(){var e=this.getTranslatedPhrase(kc);return ny(this,"right")&&(e=ry(e)),e},callback:function(t,n){var r=ny(this,"right");e.prepareBorder(n,"right",r)}}}function ly(e){return ly="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ly(e)}function uy(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function cy(e,t){for(var n=0;n0&&(t.hot.setCellMeta(r,o,"borders",i),t.insertBorderIntoSettings(i))}))}))}},{key:"removeAllBorders",value:function(e,t){var n=ey(e,t);this.spliceBorder(n),this.clearBordersFromSelectionSettings(n),this.clearNullCellRange(),this.hot.removeCellMeta(e,t,"borders")}},{key:"setBorder",value:function(e,t,n,r){var o=this.hot.getCellMeta(e,t).borders;o&&void 0!==o.border||(o=ty(e,t)),r?(o[n]={hide:!0},4===this.countHide(o)?this.removeAllBorders(e,t):(this.checkCustomSelectionsFromContextMenu(o,n,r)||this.insertBorderIntoSettings(o),this.hot.setCellMeta(e,t,"borders",o))):(o[n]={width:1,color:"#000"},this.checkCustomSelectionsFromContextMenu(o,n,r)||this.insertBorderIntoSettings(o),this.hot.setCellMeta(e,t,"borders",o))}},{key:"prepareBorder",value:function(e,t,n){var r=this;P(e,(function(e){var o=e.start,i=e.end;if(o.row===i.row&&o.col===i.col)"noBorders"===t?r.removeAllBorders(o.row,o.col):r.setBorder(o.row,o.col,t,n);else switch(t){case"noBorders":Ra(o.col,i.col,(function(e){Ra(o.row,i.row,(function(t){r.removeAllBorders(t,e)}))}));break;case"top":Ra(o.col,i.col,(function(e){r.setBorder(o.row,e,t,n)}));break;case"right":Ra(o.row,i.row,(function(e){r.setBorder(e,i.col,t,n)}));break;case"bottom":Ra(o.col,i.col,(function(e){r.setBorder(i.row,e,t,n)}));break;case"left":Ra(o.row,i.row,(function(e){r.setBorder(e,o.col,t,n)}))}}))}},{key:"createCustomBorders",value:function(e){var t=this;P(e,(function(e){e.range?t.prepareBorderFromCustomAddedRange(e):t.prepareBorderFromCustomAdded(e.row,e.col,e)}))}},{key:"countHide",value:function(e){return A(Object.values(e),(function(e,t){var n=e;return t.hide&&(n+=1),n}),0)}},{key:"clearBordersFromSelectionSettings",value:function(e){var t=N(this.hot.selection.highlight.customSelections,(function(e){return e.settings.id})).indexOf(e);t>-1&&this.hot.selection.highlight.customSelections[t].clear()}},{key:"clearNullCellRange",value:function(){var e=this;P(this.hot.selection.highlight.customSelections,(function(t,n){if(null===t.cellRange)return e.hot.selection.highlight.customSelections[n].destroy(),e.hot.selection.highlight.customSelections.splice(n,1),!1}))}},{key:"hideBorders",value:function(){var e=this;P(this.savedBorders,(function(t){e.clearBordersFromSelectionSettings(t.id),e.clearNullCellRange()}))}},{key:"spliceBorder",value:function(e){var t=N(this.savedBorders,(function(e){return e.id})).indexOf(e);t>-1&&this.savedBorders.splice(t,1)}},{key:"checkSavedBorders",value:function(e){var t=this,n=!1;return 4===this.countHide(e)?(this.spliceBorder(e.id),n=!0):P(this.savedBorders,(function(r,o){if(e.id===r.id)return t.savedBorders[o]=e,n=!0,!1})),n}},{key:"checkCustomSelectionsFromContextMenu",value:function(e,t,n){var r=!1;return P(this.hot.selection.highlight.customSelections,(function(o){if(e.id===o.settings.id)return ee(o.instanceBorders,(function(e){e.toggleHiddenClass(t,n)})),r=!0,!1})),r}},{key:"checkCustomSelections",value:function(e,t,n){var r=this.countHide(e),o=!1;return 4===r?(this.removeAllBorders(e.row,e.col),o=!0):P(this.hot.selection.highlight.customSelections,(function(r){if(e.id===r.settings.id)return r.cellRange=t,n&&ee(r.instanceBorders,(function(t){t.changeBorderStyle(n,e)})),o=!0,!1})),o}},{key:"changeBorderSettings",value:function(){var e=this.hot.getSettings().customBorders;Array.isArray(e)?(e.length||(this.savedBorders=e),this.createCustomBorders(e)):void 0!==e&&this.createCustomBorders(this.savedBorders)}},{key:"onAfterContextMenuDefaultOptions",value:function(e){var t;this.hot.getSettings().customBorders&&e.items.push({name:"---------"},{key:"borders",name:function(){return this.getTranslatedPhrase(_c)},disabled:function(){return this.selection.isSelectedByCorner()},submenu:{items:[(t=this,{key:"borders:top",name:function(){var e=this.getTranslatedPhrase(Mc);return ny(this,"top")&&(e=ry(e)),e},callback:function(e,n){var r=ny(this,"top");t.prepareBorder(n,"top",r)}}),sy(this),oy(this),iy(this),ay(this)]}})}},{key:"onAfterInit",value:function(){this.changeBorderSettings()}},{key:"destroy",value:function(){hy(fy(t.prototype),"destroy",this).call(this)}}],r&&cy(n.prototype,r),t}(Rf);gu("customBorders",my);const py=my;function yy(e){return yy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yy(e)}function vy(e,t){for(var n=0;nthis.boundaries.bottom&&(r=t-this.boundaries.bottom),ethis.boundaries.right&&(n=e-this.boundaries.right),this.callback(n,r)}},{key:"registerEvents",value:function(){var e=this,t=this.hot.rootDocument;this.eventManager.addEventListener(t,"mouseup",(function(){return e.onMouseUp()})),this.eventManager.addEventListener(t,"mousemove",(function(t){return e.onMouseMove(t)}))}},{key:"unregisterEvents",value:function(){this.eventManager.clear()}},{key:"setupListening",value:function(){var e=this.hot.view.wt.wtTable.holder;e!==this.hot.rootWindow&&(this.setBoundaries(e.getBoundingClientRect()),this.setCallback((function(t,n){t<0?e.scrollLeft-=50:t>0&&(e.scrollLeft+=50),n<0?e.scrollTop-=20:n>0&&(e.scrollTop+=20)})),this.listening=!0)}},{key:"onMouseMove",value:function(e){this.listening&&this.check(e.clientX,e.clientY)}},{key:"onMouseUp",value:function(){this.listening=!1}},{key:"destroy",value:function(){wy(by(t.prototype),"destroy",this).call(this)}}],r&&vy(n.prototype,r),t}(Rf);gu("dragToScroll",My);const ky=My;function Sy(e){return Sy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Sy(e)}function Cy(e,t){for(var n=0;nn.fixedColumnsLeft-1)){var r=this.getBestColumnReturnPosition(e);t.moveByFreeze=!0,n.fixedColumnsLeft-=1,this.getMovePlugin().moveColumn(e,r+1)}}},{key:"getMovePlugin",value:function(){return this.manualColumnMovePlugin||(this.manualColumnMovePlugin=this.hot.getPlugin("manualColumnMove")),this.manualColumnMovePlugin}},{key:"getBestColumnReturnPosition",value:function(e){var t,n=this.getMovePlugin(),r=this.hot.getSettings().fixedColumnsLeft,o=n.columnsMapper.getValueByIndex(r);if(null===this.frozenColumnsBasePositions[e]||void 0===this.frozenColumnsBasePositions[e])for(t=n.columnsMapper.getValueByIndex(e);null!==o&&o<=t;)r+=1,o=n.columnsMapper.getValueByIndex(r);else{for(t=this.frozenColumnsBasePositions[e],this.frozenColumnsBasePositions[e]=void 0;null!==o&&o<=t;)r+=1,o=n.columnsMapper.getValueByIndex(r);r=o}return r-1}},{key:"addContextMenuEntry",value:function(e){var t;e.items.push({name:"---------"},(t=this,{key:"freeze_column",name:function(){return this.getTranslatedPhrase(ic)},callback:function(e,n){var r,o,i=(r=n,o=1,function(e){if(Array.isArray(e))return e}(r)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}())[0].start.col;t.freezeColumn(i),this.render(),this.view.wt.wtOverlays.adjustElementsSize(!0)},hidden:function(){var e=this.getSelectedRange(),t=!1;return(void 0===e||e.length>1||e[0].from.col!==e[0].to.col||e[0].from.col<=this.getSettings().fixedColumnsLeft-1)&&(t=!0),t}}),function(e){return{key:"unfreeze_column",name:function(){return this.getTranslatedPhrase(ac)},callback:function(t,n){var r,o,i=(r=n,o=1,function(e){if(Array.isArray(e))return e}(r)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}())[0].start.col;e.unfreezeColumn(i),this.render(),this.view.wt.wtOverlays.adjustElementsSize(!0)},hidden:function(){var e=this.getSelectedRange(),t=!1;return(void 0===e||e.length>1||e[0].from.col!==e[0].to.col||e[0].from.col>=this.getSettings().fixedColumnsLeft)&&(t=!0),t}}}(this))}},{key:"onAfterInit",value:function(){this.getMovePlugin().isEnabled()||this.getMovePlugin().enablePlugin()}},{key:"onBeforeColumnMove",value:function(e,t){var n=Ly.get(this);if(n.afterFirstUse&&!n.moveByFreeze){var r=this.hot.getSettings().fixedColumnsLeft,o=t=1}},{key:"setPosition",value:function(e,t){Oa(e)&&(this._element.style.top=e+Yy),Oa(t)&&(this._element.style.left=t+Yy)}},{key:"getPosition",value:function(){return{top:this._element.style.top?parseInt(this._element.style.top,10):0,left:this._element.style.left?parseInt(this._element.style.left,10):0}}},{key:"setSize",value:function(e,t){Oa(e)&&(this._element.style.width=e+Yy),Oa(t)&&(this._element.style.height=t+Yy)}},{key:"getSize",value:function(){return{width:this._element.style.width?parseInt(this._element.style.width,10):0,height:this._element.style.height?parseInt(this._element.style.height,10):0}}},{key:"setOffset",value:function(e,t){Oa(e)&&(this._element.style.marginTop=e+Yy),Oa(t)&&(this._element.style.marginLeft=t+Yy)}},{key:"getOffset",value:function(){return{top:this._element.style.marginTop?parseInt(this._element.style.marginTop,10):0,left:this._element.style.marginLeft?parseInt(this._element.style.marginLeft,10):0}}}],n&&xy(t.prototype,n),e}();const jy=Iy;function Fy(e){return Fy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fy(e)}function Wy(e,t){for(var n=0;n0?e.target.col=0:e.target.col=t>0?t-1:t;else if(e.target.TD.offsetWidth/2+a<=s){var d=e.coordsColumn>=e.countCols?e.countCols-1:e.coordsColumn;e.target.col=d+1,a+=e.target.TD.offsetWidth,e.target.col>n&&n=e.fixedColumns&&t>0&&this.hot.scrollViewportTo(void 0,t-1);e.target.col<=t&&e.target.col>=e.fixedColumns&&t>0&&this.hot.scrollViewportTo(void 0,t-1);var m=s,p=a;s+h+c>=l?m=l-h-c:s+c=l-1?p=l-1:0===p?p=1:void 0!==o.scrollX&&e.coordsColumne){var r=e-1,o=[];P(this.columnsMapper._arrayMap,(function(e,t){e>r&&o.push(t)})),this.columnsMapper.removeItems(o)}}},{key:"registerEvents",value:function(){var e=this,t=this.hot.rootDocument.documentElement;this.eventManager.addEventListener(t,"mousemove",(function(t){return e.onMouseMove(t)})),this.eventManager.addEventListener(t,"mouseup",(function(){return e.onMouseUp()}))}},{key:"unregisterEvents",value:function(){this.eventManager.clear()}},{key:"onBeforeOnCellMouseDown",value:function(e,t,n,r){var o=this.hot.view.wt.wtTable,i=this.hot.selection.isSelectedByColumnHeader(),a=this.hot.getSelectedRangeLast(),s=ov.get(this),l=gt(e.realTarget,"sortAction");if(!a||!i||s.pressed||0!==e.button||l)return s.pressed=!1,s.columnsToMove.length=0,void bt(this.hot.rootElement,[sv,av]);var u=this.guideline.isBuilt()&&!this.guideline.isAppended(),c=this.backlight.isBuilt()&&!this.backlight.isAppended();u&&c&&(this.guideline.appendTo(o.hider),this.backlight.appendTo(o.hider));var h=a.from,f=a.to,d=Math.min(h.col,f.col),m=Math.max(h.col,f.col);if(t.row<0&&t.col>=d&&t.col<=m){r.column=!0,s.pressed=!0,s.target.eventPageX=e.pageX,s.coordsColumn=t.col,s.target.TD=n,s.target.col=t.col,s.columnsToMove=this.prepareColumnsToMoving(d,m),s.hasRowHeaders=!!this.hot.getSettings().rowHeaders,s.countCols=this.hot.countCols(),s.fixedColumns=this.hot.getSettings().fixedColumnsLeft,s.rootElementOffset=Ot(this.hot.rootElement).left;var p=s.hasRowHeaders?-1:0,y=o.holder.scrollTop+o.getColumnHeaderHeight(0)+1,v=t.col-1?bt(this.hot.rootElement,av):wt(this.hot.rootElement,av),r.row=!0,r.column=!0,r.cell=!0,i.coordsColumn=t.col,i.target.TD=n)}},{key:"onMouseUp",value:function(){var e=ov.get(this);if(e.coordsColumn=void 0,e.pressed=!1,e.backlightWidth=0,bt(this.hot.rootElement,[sv,av,lv]),this.hot.selection.isSelectedByColumnHeader()&&wt(this.hot.rootElement,lv),!(e.columnsToMove.length<1||void 0===e.target.col||e.columnsToMove.indexOf(e.target.col)>-1)){if(this.moveColumns(e.columnsToMove,e.target.col),this.persistentStateSave(),this.hot.render(),this.hot.view.wt.wtOverlays.adjustElementsSize(!0),!e.disallowMoving){var t=this.columnsMapper.getIndexByValue(e.columnsToMove[0]),n=this.columnsMapper.getIndexByValue(e.columnsToMove[e.columnsToMove.length-1]);this.changeSelection(t,n)}e.columnsToMove.length=0}}},{key:"onAfterScrollVertically",value:function(){var e=this.hot.view.wt.wtTable,t=e.getColumnHeaderHeight(0)+1+e.holder.scrollTop;this.backlight.setPosition(t),this.backlight.setSize(null,e.hider.offsetHeight-t)}},{key:"onAfterCreateCol",value:function(e,t){this.columnsMapper.shiftItems(e,t)}},{key:"onBeforeRemoveCol",value:function(e,t){var n=this;this.removedColumns.length=0,!1!==e&&Ra(e,e+t-1,(function(e){n.removedColumns.push(n.hot.runHooks("modifyCol",e,n.pluginName))}))}},{key:"onAfterRemoveCol",value:function(){this.columnsMapper.unshiftItems(this.removedColumns)}},{key:"onAfterLoadData",value:function(){this.updateColumnsMapper()}},{key:"onModifyCol",value:function(e,t){var n=e;if(t!==this.pluginName){var r=this.columnsMapper.getValueByIndex(n);n=null===r?n:r}return n}},{key:"onUnmodifyCol",value:function(e){var t=this.columnsMapper.getIndexByValue(e);return null===t?e:t}},{key:"onAfterPluginsInitialized",value:function(){this.updateColumnsMapper(),this.initialSettings(),this.backlight.build(),this.guideline.build()}},{key:"destroy",value:function(){this.backlight.destroy(),this.guideline.destroy(),tv(nv(t.prototype),"destroy",this).call(this)}}],r&&Zy(n.prototype,r),t}(Rf);gu("ManualColumnMove",uv);const cv=uv;function hv(e){return hv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hv(e)}function fv(e,t){for(var n=0;n=0){var i=this.currentTH.getBoundingClientRect(),a=r=d&&(f=h.col,d=c.col),this.currentCol>=f&&this.currentCol<=d?Ra(f,d,(function(e){return t.selectedCols.push(e)})):this.selectedCols.push(this.currentCol)}else this.selectedCols.push(this.currentCol);this.startOffset=s.left-6,this.startWidth=parseInt(i.width,10),this.handle.style.top="".concat(s.top,"px"),this.handle.style.left="".concat(this.startOffset+this.startWidth,"px"),this.handle.style.height="".concat(o,"px"),this.hot.rootElement.appendChild(this.handle)}}},{key:"refreshHandlePosition",value:function(){this.handle.style.left="".concat(this.startOffset+this.currentWidth,"px")}},{key:"setupGuidePosition",value:function(){var e=parseInt(It(this.handle),10),t=parseInt(this.handle.style.top,10)+e,n=parseInt(this.hot.view.maximumVisibleElementHeight(0),10);wt(this.handle,"active"),wt(this.guide,"active"),this.guide.style.top="".concat(t,"px"),this.guide.style.left=this.handle.style.left,this.guide.style.height="".concat(n-e,"px"),this.hot.rootElement.appendChild(this.guide)}},{key:"refreshGuidePosition",value:function(){this.guide.style.left=this.handle.style.left}},{key:"hideHandleAndGuide",value:function(){bt(this.handle,"active"),bt(this.guide,"active")}},{key:"checkIfColumnHeader",value:function(e){if(e!==this.hot.rootElement){var t=e.parentNode;return"THEAD"===t.tagName||this.checkIfColumnHeader(t)}return!1}},{key:"getTHFromTargetElement",value:function(e){return"TABLE"!==e.tagName?"TH"===e.tagName?e:this.getTHFromTargetElement(e.parentNode):null}},{key:"onMouseOver",value:function(e){if(this.checkIfColumnHeader(e.target)){var t=this.getTHFromTargetElement(e.target);if(!t)return;var n=t.getAttribute("colspan");!t||null!==n&&1!==n||this.pressed||this.setupHandlePosition(t)}}},{key:"afterMouseDownTimeout",value:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,r){var o=e.hot.runHooks("beforeColumnResize",n,e.newSize,!0);void 0!==o&&(e.newSize=o),"all"===e.hot.getSettings().stretchH?e.clearManualSize(n):e.setManualSize(n,e.newSize),r&&t(),e.saveManualColumnWidths(),e.hot.runHooks("afterColumnResize",n,e.newSize,!0)};this.dblclick>=2&&(this.selectedCols.length>1?(P(this.selectedCols,(function(e){n(e)})),t()):P(this.selectedCols,(function(e){n(e,!0)}))),this.dblclick=0,this.autoresizeTimeout=null}},{key:"onMouseDown",value:function(e){var t=this;gt(e.target,"manualColumnResizer")&&(this.setupGuidePosition(),this.pressed=this.hot,null===this.autoresizeTimeout&&(this.autoresizeTimeout=setTimeout((function(){return t.afterMouseDownTimeout()}),500),this.hot._registerTimeout(this.autoresizeTimeout)),this.dblclick+=1,this.startX=Br(e),this.newSize=this.startWidth)}},{key:"onMouseMove",value:function(e){var t=this;this.pressed&&(this.currentWidth=this.startWidth+(Br(e)-this.startX),P(this.selectedCols,(function(e){t.newSize=t.setManualSize(e,t.currentWidth)})),this.refreshHandlePosition(),this.refreshGuidePosition())}},{key:"onMouseUp",value:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,r){e.hot.runHooks("beforeColumnResize",n,e.newSize,!1),r&&t(),e.saveManualColumnWidths(),e.hot.runHooks("afterColumnResize",n,e.newSize)};this.pressed&&(this.hideHandleAndGuide(),this.pressed=!1,this.newSize!==this.startWidth&&(this.selectedCols.length>1?(P(this.selectedCols,(function(e){n(e)})),t()):P(this.selectedCols,(function(e){n(e,!0)}))),this.setupHandlePosition(this.currentTH))}},{key:"bindEvents",value:function(){var e=this,t=this.hot,n=t.rootWindow,r=t.rootElement;this.eventManager.addEventListener(r,"mouseover",(function(t){return e.onMouseOver(t)})),this.eventManager.addEventListener(r,"mousedown",(function(t){return e.onMouseDown(t)})),this.eventManager.addEventListener(n,"mousemove",(function(t){return e.onMouseMove(t)})),this.eventManager.addEventListener(n,"mouseup",(function(){return e.onMouseUp()}))}},{key:"setManualSize",value:function(e,t){var n=Math.max(t,20),r=this.hot.runHooks("modifyCol",e);return this.manualColumnWidths[r]=n,n}},{key:"clearManualSize",value:function(e){var t=this.hot.runHooks("modifyCol",e);this.manualColumnWidths[t]=void 0}},{key:"onModifyColWidth",value:function(e,t){var n=e;if(this.enabled){var r=this.hot.runHooks("modifyCol",t),o=this.manualColumnWidths[r];this.hot.getSettings().manualColumnResize&&o&&(n=o)}return n}},{key:"onBeforeStretchingColumnWidth",value:function(e,t){var n=this.manualColumnWidths[t];return void 0===n&&(n=e),n}},{key:"onBeforeColumnResize",value:function(){this.hot.view.wt.wtViewport.hasOversizedColumnHeadersMarked={}}}],r&&fv(n.prototype,r),t}(Rf);gu("manualColumnResize",vv);const gv=vv;function wv(e,t){for(var n=0;n=1}},{key:"setPosition",value:function(e,t){void 0!==e&&(this._element.style.top=e+kv),void 0!==t&&(this._element.style.left=t+kv)}},{key:"getPosition",value:function(){return{top:this._element.style.top?parseInt(this._element.style.top,10):0,left:this._element.style.left?parseInt(this._element.style.left,10):0}}},{key:"setSize",value:function(e,t){e&&(this._element.style.width=e+kv),t&&(this._element.style.height=t+kv)}},{key:"getSize",value:function(){return{width:this._element.style.width?parseInt(this._element.style.width,10):0,height:this._element.style.height?parseInt(this._element.style.height,10):0}}},{key:"setOffset",value:function(e,t){e&&(this._element.style.marginTop=e+kv),t&&(this._element.style.marginLeft=t+kv)}},{key:"getOffset",value:function(){return{top:this._element.style.marginTop?parseInt(this._element.style.marginTop,10):0,left:this._element.style.marginLeft?parseInt(this._element.style.marginLeft,10):0}}}],n&&Mv(t.prototype,n),e}();const Cv=Sv;function Tv(e){return Tv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Tv(e)}function Ev(e,t){for(var n=0;nthis.hot.getSettings().fixedRowsBottom}},{key:"persistentStateSave",value:function(){this.hot.runHooks("persistentStateSave","manualRowMove",this.rowsMapper._arrayMap)}},{key:"persistentStateLoad",value:function(){var e={};return this.hot.runHooks("persistentStateLoad","manualRowMove",e),e.value?e.value:[]}},{key:"prepareRowsToMoving",value:function(){var e=this.hot.getSelectedRangeLast(),t=[];if(!e)return t;var n=e.from,r=e.to;return Ra(Math.min(n.row,r.row),Math.max(n.row,r.row),(function(e){t.push(e)})),t}},{key:"refreshPositions",value:function(){var e=Uv.get(this),t=e.target.coords,n=this.hot.view.wt.wtTable.getFirstVisibleRow(),r=this.hot.view.wt.wtTable.getLastVisibleRow(),o=this.hot.getSettings().fixedRowsTop,i=this.hot.countRows();t.row0&&this.hot.scrollViewportTo(n-1),t.row>=r&&r0?n-1:n:s.offsetHeight/2+u<=c?(e.target.row=t.row+1,u+=0===t.row?s.offsetHeight-1:s.offsetHeight):e.target.row=t.row;var p=c,y=u;c+m+d>=h?p=h-m-d:c+d=h-1&&(y=h-1);var v=0;this.hot.view.wt.wtOverlays.topOverlay&&(v=this.hot.view.wt.wtOverlays.topOverlay.clone.wtTable.TABLE.offsetHeight),t.row>=o&&y-a.holder.scrollTope){var r=e-1,o=[];P(this.rowsMapper._arrayMap,(function(e,t){e>r&&o.push(t)})),this.rowsMapper.removeItems(o)}}},{key:"registerEvents",value:function(){var e=this,t=this.hot.rootDocument.documentElement;this.eventManager.addEventListener(t,"mousemove",(function(t){return e.onMouseMove(t)})),this.eventManager.addEventListener(t,"mouseup",(function(){return e.onMouseUp()}))}},{key:"unregisterEvents",value:function(){this.eventManager.clear()}},{key:"onBeforeColumnSort",value:function(e,t){Uv.get(this).disallowMoving=void 0!==t}},{key:"onBeforeOnCellMouseDown",value:function(e,t,n,r){var o=this.hot.view.wt,i=o.wtTable,a=o.wtViewport,s=this.hot.selection.isSelectedByRowHeader(),l=this.hot.getSelectedRangeLast(),u=Uv.get(this);if(!l||!s||u.pressed||0!==e.button)return u.pressed=!1,u.rowsToMove.length=0,void bt(this.hot.rootElement,[qv,Gv]);var c=this.guideline.isBuilt()&&!this.guideline.isAppended(),h=this.backlight.isBuilt()&&!this.backlight.isAppended();c&&h&&(this.guideline.appendTo(i.hider),this.backlight.appendTo(i.hider));var f=l.from,d=l.to,m=Math.min(f.row,d.row),p=Math.max(f.row,d.row);if(t.col<0&&t.row>=m&&t.row<=p){r.row=!0,u.pressed=!0,u.target.eventPageY=e.pageY,u.target.coords=t,u.target.TD=n,u.rowsToMove=this.prepareRowsToMoving();var y=i.holder.scrollLeft+a.getRowHeaderWidth();this.backlight.setPosition(null,y),this.backlight.setSize(i.hider.offsetWidth-y,this.getRowsHeight(m,p+1)),this.backlight.setOffset(-1*(this.getRowsHeight(m,t.row)+e.layerY),null),wt(this.hot.rootElement,qv),this.refreshPositions()}else bt(this.hot.rootElement,Xv),u.pressed=!1,u.rowsToMove.length=0}},{key:"onMouseMove",value:function(e){var t=Uv.get(this);if(t.pressed){if(e.realTarget===this.backlight.element){var n=this.backlight.getSize().height;this.backlight.setSize(null,0),setTimeout((function(){this.backlight.setPosition(null,n)}))}t.target.eventPageY=e.pageY,this.refreshPositions()}}},{key:"onBeforeOnCellMouseOver",value:function(e,t,n,r){var o=this.hot.getSelectedRangeLast(),i=Uv.get(this);o&&i.pressed&&(i.rowsToMove.indexOf(t.row)>-1?bt(this.hot.rootElement,Gv):wt(this.hot.rootElement,Gv),r.row=!0,r.column=!0,r.cell=!0,i.target.coords=t,i.target.TD=n)}},{key:"onMouseUp",value:function(){var e=Uv.get(this),t=e.target.row,n=e.rowsToMove.length;if(e.pressed=!1,e.backlightHeight=0,bt(this.hot.rootElement,[qv,Gv,Xv]),this.hot.selection.isSelectedByRowHeader()&&wt(this.hot.rootElement,Xv),!(n<1||void 0===t||e.rowsToMove.indexOf(t)>-1||e.rowsToMove[n-1]===t-1)){if(this.moveRows(e.rowsToMove,t),this.persistentStateSave(),this.hot.render(),!e.disallowMoving){var r=this.rowsMapper.getIndexByValue(e.rowsToMove[0]),o=this.rowsMapper.getIndexByValue(e.rowsToMove[n-1]);this.changeSelection(r,o)}e.rowsToMove.length=0}}},{key:"onAfterScrollHorizontally",value:function(){var e=this.hot.view.wt.wtTable,t=this.hot.view.wt.wtViewport.getRowHeaderWidth()+e.holder.scrollLeft;this.backlight.setPosition(null,t),this.backlight.setSize(e.hider.offsetWidth-t)}},{key:"onAfterCreateRow",value:function(e,t){this.rowsMapper.shiftItems(e,t)}},{key:"onBeforeRemoveRow",value:function(e,t){var n=this;this.removedRows.length=0,!1!==e&&Ra(e,e+t-1,(function(e){n.removedRows.push(n.hot.runHooks("modifyRow",e,n.pluginName))}))}},{key:"onAfterRemoveRow",value:function(){this.rowsMapper.unshiftItems(this.removedRows)}},{key:"onAfterLoadData",value:function(){this.updateRowsMapper()}},{key:"onModifyRow",value:function(e,t){var n=e;if(t!==this.pluginName){var r=this.rowsMapper.getValueByIndex(n);n=null===r?n:r}return n}},{key:"onUnmodifyRow",value:function(e){var t=this.rowsMapper.getIndexByValue(e);return null===t?e:t}},{key:"onAfterPluginsInitialized",value:function(){this.updateRowsMapper(),this.initialSettings(),this.backlight.build(),this.guideline.build()}},{key:"destroy",value:function(){this.backlight.destroy(),this.guideline.destroy(),this.rowsMapper.destroy(),Wv(Bv(t.prototype),"destroy",this).call(this)}}],r&&jv(n.prototype,r),t}(Rf);gu("ManualRowMove",Kv);const Jv=Kv;function $v(e){return $v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$v(e)}function Qv(e,t){for(var n=0;n=0){var i=this.currentTH.getBoundingClientRect(),a=r=this.hot.countRows()-this.hot.getSettings().fixedRowsBottom,l=this.hot.view.wt.wtOverlays.leftOverlay;a?l=this.hot.view.wt.wtOverlays.topLeftCornerOverlay:s&&(l=this.hot.view.wt.wtOverlays.bottomLeftCornerOverlay);var u=l.getRelativeCellPosition(this.currentTH,n.row,n.col);if(!u){var c=l.clone.wtTable.TBODY.children[+!!this.hot.getSettings().colHeaders+r].firstChild;u=l.getRelativeCellPosition(c,n.row,n.col)}if(this.currentRow=r,this.selectedRows=[],this.hot.selection.isSelected()&&this.hot.selection.isSelectedByRowHeader()){var h=this.hot.getSelectedRangeLast(),f=h.from,d=h.to,m=f.row,p=d.row;m>=p&&(m=d.row,p=f.row),this.currentRow>=m&&this.currentRow<=p?Ra(m,p,(function(e){return t.selectedRows.push(e)})):this.selectedRows.push(this.currentRow)}else this.selectedRows.push(this.currentRow);this.startOffset=u.top-6,this.startHeight=parseInt(i.height,10),this.handle.style.top="".concat(this.startOffset+this.startHeight,"px"),this.handle.style.left="".concat(u.left,"px"),this.handle.style.width="".concat(o,"px"),this.hot.rootElement.appendChild(this.handle)}}},{key:"refreshHandlePosition",value:function(){this.handle.style.top="".concat(this.startOffset+this.currentHeight,"px")}},{key:"setupGuidePosition",value:function(){var e=parseInt(Yt(this.handle),10),t=parseInt(this.handle.style.left,10)+e,n=parseInt(this.hot.view.maximumVisibleElementWidth(0),10);wt(this.handle,"active"),wt(this.guide,"active"),this.guide.style.top=this.handle.style.top,this.guide.style.left="".concat(t,"px"),this.guide.style.width="".concat(n-e,"px"),this.hot.rootElement.appendChild(this.guide)}},{key:"refreshGuidePosition",value:function(){this.guide.style.top=this.handle.style.top}},{key:"hideHandleAndGuide",value:function(){bt(this.handle,"active"),bt(this.guide,"active")}},{key:"checkIfRowHeader",value:function(e){if(e!==this.hot.rootElement){var t=e.parentNode;return"TBODY"===t.tagName||this.checkIfRowHeader(t)}return!1}},{key:"getTHFromTargetElement",value:function(e){return"TABLE"!==e.tagName?"TH"===e.tagName?e:this.getTHFromTargetElement(e.parentNode):null}},{key:"onMouseOver",value:function(e){if(this.checkIfRowHeader(e.target)){var t=this.getTHFromTargetElement(e.target);t&&(this.pressed||this.setupHandlePosition(t))}}},{key:"afterMouseDownTimeout",value:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,r){var o=e.hot.runHooks("beforeRowResize",n,e.newSize,!0);void 0!==o&&(e.newSize=o),e.setManualSize(n,e.newSize),r&&t(),e.hot.runHooks("afterRowResize",n,e.newSize,!0)};this.dblclick>=2&&(this.selectedRows.length>1?(P(this.selectedRows,(function(e){n(e)})),t()):P(this.selectedRows,(function(e){n(e,!0)}))),this.dblclick=0,this.autoresizeTimeout=null}},{key:"onMouseDown",value:function(e){var t=this;gt(e.target,"manualRowResizer")&&(this.setupGuidePosition(),this.pressed=this.hot,null===this.autoresizeTimeout&&(this.autoresizeTimeout=setTimeout((function(){return t.afterMouseDownTimeout()}),500),this.hot._registerTimeout(this.autoresizeTimeout)),this.dblclick+=1,this.startY=Vr(e),this.newSize=this.startHeight)}},{key:"onMouseMove",value:function(e){var t=this;this.pressed&&(this.currentHeight=this.startHeight+(Vr(e)-this.startY),P(this.selectedRows,(function(e){t.newSize=t.setManualSize(e,t.currentHeight)})),this.refreshHandlePosition(),this.refreshGuidePosition())}},{key:"onMouseUp",value:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,r){e.hot.runHooks("beforeRowResize",n,e.newSize),r&&t(),e.saveManualRowHeights(),e.hot.runHooks("afterRowResize",n,e.newSize,!1)};this.pressed&&(this.hideHandleAndGuide(),this.pressed=!1,this.newSize!==this.startHeight&&(this.selectedRows.length>1?(P(this.selectedRows,(function(e){n(e)})),t()):P(this.selectedRows,(function(e){n(e,!0)}))),this.setupHandlePosition(this.currentTH))}},{key:"bindEvents",value:function(){var e=this,t=this.hot,n=t.rootElement,r=t.rootWindow;this.eventManager.addEventListener(n,"mouseover",(function(t){return e.onMouseOver(t)})),this.eventManager.addEventListener(n,"mousedown",(function(t){return e.onMouseDown(t)})),this.eventManager.addEventListener(r,"mousemove",(function(t){return e.onMouseMove(t)})),this.eventManager.addEventListener(r,"mouseup",(function(){return e.onMouseUp()}))}},{key:"setManualSize",value:function(e,t){var n=this.hot.runHooks("modifyRow",e);return this.manualRowHeights[n]=t,t}},{key:"onModifyRowHeight",value:function(e,t){if(this.enabled){var n=this.hot.getPlugin("autoRowSize"),r=n?n.heights[t]:null,o=this.hot.runHooks("modifyRow",t),i=this.manualRowHeights[o];if(void 0!==i&&(i===r||i>(e||0)))return i}return e}}],r&&Qv(n.prototype,r),t}(Rf);gu("manualRowResize",rg);const og=rg;function ig(){var e=ug(["The merged cell declared at [",", ",'] has "rowspan" or "colspan" declared as \n "0", which is not supported. It cannot be added to the collection.']);return ig=function(){return e},e}function ag(){var e=ug(["The merged cell declared at [",", ",'] has both "rowspan" \n and "colspan" declared as "1", which makes it a single cell. It cannot be added to the collection.']);return ag=function(){return e},e}function sg(){var e=ug(["The merged cell declared at [",", ","] is positioned (or positioned partially) \n outside of the table range. It was not added to the table, please fix your setup."]);return sg=function(){return e},e}function lg(){var e=ug(["The merged cell declared with {row: ",", col: ",", rowspan: \n ",", colspan: ","} contains negative values, which is not supported. It \n will not be added to the collection."]);return lg=function(){return e},e}function ug(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function cg(e,t){for(var n=0;nt-1&&(this.row=t-1),this.col<0?this.col=0:this.col>n-1&&(this.col=n-1),this.row+this.rowspan>t-1&&(this.rowspan=t-this.row),this.col+this.colspan>n-1&&(this.colspan=n-this.col)}},{key:"includes",value:function(e,t){return this.row<=e&&this.col<=t&&this.row+this.rowspan-1>=e&&this.col+this.colspan-1>=t}},{key:"includesHorizontally",value:function(e){return this.col<=e&&this.col+this.colspan-1>=e}},{key:"includesVertically",value:function(e){return this.row<=e&&this.row+this.rowspan-1>=e}},{key:"shift",value:function(e,t){var n=e[0]||e[1],r=t+Math.abs(e[0]||e[1])-1,o=e[0]?"colspan":"rowspan",i=e[0]?"col":"row",a=Math.min(t,r),s=Math.max(t,r),l=this[i],u=this[i]+this[o]-1;if(l>=t&&(this[i]+=n),n>0)t<=u&&t>l&&(this[o]+=n);else if(n<0){if(a<=l&&s>=u)return this.removed=!0,!1;if(l>=a&&l<=s){var c=s-l+1,h=Math.abs(n)-c;this[i]-=h+n,this[o]-=c}else if(l<=a&&u>=s)this[o]+=n;else if(l<=a&&u>=a&&uthis.row:"right"===t?e.col+e.colspan-1this.col:null)}},{key:"getLastRow",value:function(){return this.row+this.rowspan-1}},{key:"getLastColumn",value:function(){return this.col+this.colspan-1}},{key:"getRange",value:function(){return new Ce(new Me(this.row,this.col),new Me(this.row,this.col),new Me(this.getLastRow(),this.getLastColumn()))}}],r=[{key:"NEGATIVE_VALUES_WARNING",value:function(e){return Jn(lg(),e.row,e.col,e.rowspan,e.colspan)}},{key:"IS_OUT_OF_BOUNDS_WARNING",value:function(e){return Jn(sg(),e.row,e.col)}},{key:"IS_SINGLE_CELL",value:function(e){return Jn(ag(),e.row,e.col)}},{key:"ZERO_SPAN_WARNING",value:function(e){return Jn(ig(),e.row,e.col)}},{key:"containsNegativeValues",value:function(e){return e.row<0||e.col<0||e.rowspan<0||e.colspan<0}},{key:"isSingleCell",value:function(e){return 1===e.colspan&&1===e.rowspan}},{key:"containsZeroSpan",value:function(e){return 0===e.colspan||0===e.rowspan}},{key:"isOutOfBounds",value:function(e,t,n){return e.row<0||e.col<0||e.row>=t||e.row+e.rowspan-1>=t||e.col>=n||e.col+e.colspan-1>=n}}],n&&cg(t.prototype,n),r&&cg(t,r),e}();const fg=hg;function dg(e,t,n,r){t?t.row===n&&t.col===r?(e.setAttribute("rowspan",t.rowspan.toString()),e.setAttribute("colspan",t.colspan.toString())):(e.removeAttribute("rowspan"),e.removeAttribute("colspan"),e.style.display="none"):(e.removeAttribute("rowspan"),e.removeAttribute("colspan"),e.style.display="")}function mg(){var e,t,n=(e=["The merged cell declared at [",", ","], overlaps with the other declared merged \n cell. The overlapping merged cell was not added to the table, please fix your setup."],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return mg=function(){return n},n}function pg(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=e&&n.col<=t&&n.col+n.colspan-1>=t&&(r=n,1))})),r}},{key:"getByRange",value:function(e){var t=this.mergedCells,n=!1;return P(t,(function(t){return!(t.row<=e.from.row&&t.row+t.rowspan-1>=e.to.row&&t.col<=e.from.col&&t.col+t.colspan-1>=e.to.col)||(n=t)})),n}},{key:"getWithinRange",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.mergedCells,r=[],o=e;if(!o.includesRange){var i=new Me(o.from.row,o.from.col),a=new Me(o.to.row,o.to.col);o=new Ce(i,i,a)}return P(n,(function(e){var n=new Me(e.row,e.col),i=new Me(e.row+e.rowspan-1,e.col+e.colspan-1),a=new Ce(n,n,i);t?o.overlaps(a)&&r.push(e):o.includesRange(a)&&r.push(e)})),!!r.length&&r}},{key:"add",value:function(t){var n=this.mergedCells,r=t.row,o=t.col,i=t.rowspan,a=t.colspan,s=new fg(r,o,i,a),l=this.get(r,o),u=this.isOverlapping(s);return l||u?(Mr(e.IS_OVERLAPPING_WARNING(s)),!1):(this.hot&&s.normalize(this.hot),n.push(s),s)}},{key:"remove",value:function(e,t){var n=this.mergedCells,r=this.get(e,t),o=r?this.mergedCells.indexOf(r):null;return!(!r||!1===o)&&(n.splice(o,1),r)}},{key:"clear",value:function(){var e=this,t=this.mergedCells,n=[],r=[];P(t,(function(t){var r=e.hot.getCell(t.row,t.col);r&&n.push([r,e.get(t.row,t.col),t.row,t.col])})),this.mergedCells.length=0,P(n,(function(t,o){Ra(0,t.rowspan-1,(function(n){Ra(0,t.colspan-1,(function(o){if(0!==o||0!==n){var i=e.hot.getCell(t.row+n,t.col+o);i&&r.push([i,null,null,null])}}))})),n[o][1]=null})),P(n,(function(e){dg.apply(void 0,pg(e))})),P(r,(function(e){dg.apply(void 0,pg(e))}))}},{key:"isOverlapping",value:function(e){var t=new Ce(null,new Me(e.row,e.col),new Me(e.row+e.rowspan-1,e.col+e.colspan-1)),n=!1;return P(this.mergedCells,(function(e){return!new Ce(null,new Me(e.row,e.col),new Me(e.row+e.rowspan-1,e.col+e.colspan-1)).overlaps(t)||(n=!0,!1)})),n}},{key:"isMergedParent",value:function(e,t){var n=this.mergedCells,r=!1;return P(n,(function(n){return n.row!==e||n.col!==t||(r=!0,!1)})),r}},{key:"shiftCollections",value:function(e,t,n){var r=this,o=[0,0];switch(e){case"right":o[0]+=n;break;case"left":o[0]-=n;break;case"down":o[1]+=n;break;case"up":o[1]-=n}P(this.mergedCells,(function(e){e.shift(o,t)})),La(this.mergedCells.length-1,0,(function(e){var t=r.mergedCells[e];t&&t.removed&&r.mergedCells.splice(r.mergedCells.indexOf(t),1)}))}}],r=[{key:"IS_OVERLAPPING_WARNING",value:function(e){return Jn(mg(),e.row,e.col)}}],n&&yg(t.prototype,n),r&&yg(t,r),e}();const gg=vg;function wg(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function bg(e,t){for(var n=0;n-1?u-s+1:c-l+1,f=i-Math.floor(i/h)*h,d=this.getFarthestCollection(e,t,n,r);if(d)if("down"===n){var m=d.row+d.rowspan-s-f;o[2]+m>=this.plugin.hot.countRows()?o[2]-=f:o[2]+=f?m:0}else if("right"===n){var p=d.col+d.colspan-l-f;o[3]+p>=this.plugin.hot.countCols()?o[3]-=f:o[3]+=f?p:0}else if("up"===n){var y=u-f-d.row+1;o[0]+y<0?o[0]+=f:o[0]-=f?y:0}else if("left"===n){var v=c-f-d.col+1;o[1]+v<0?o[1]+=f:o[1]-=f?v:0}return this.updateCurrentFillCache({baseArea:e,dragDirection:n,foundMergedCells:r,fillSize:i,dragArea:o,cycleLength:h}),o}},{key:"updateCurrentFillCache",value:function(e){this.currentFillData||(this.currentFillData={}),G(this.currentFillData,e)}},{key:"getAutofillSize",value:function(e,t,n){var r=wg(e,4),o=r[0],i=r[1],a=r[2],s=r[3],l=wg(t,4),u=l[0],c=l[1],h=l[2],f=l[3];switch(n){case"up":return o-u;case"down":return h-a;case"left":return i-c;case"right":return f-s;default:return null}}},{key:"getDragArea",value:function(e,t,n){var r=wg(e,4),o=r[0],i=r[1],a=r[2],s=r[3],l=wg(t,4),u=l[0],c=l[1],h=l[2],f=l[3];switch(n){case"up":return[u,c,o-1,s];case"down":return[a+1,i,h,s];case"left":return[u,c,a,i-1];case"right":return[o,s+1,h,f];default:return null}}},{key:"getFarthestCollection",value:function(e,t,n,r){var o=wg(e,4),i=o[0],a=o[1],s=o[2],l=o[3],u=["up","down"].indexOf(n)>-1,c=u?s:l,h=u?i:a,f=this.getAutofillSize(e,t,n),d=u?s-i+1:l-a+1,m=f-Math.floor(f/d)*d,p=null,y=null,v=null;switch(n){case"up":p="includesVertically",v=c-m+1;break;case"left":p="includesHorizontally",v=c-m+1;break;case"down":p="includesVertically",v=h+m-1;break;case"right":p="includesHorizontally",v=h+m-1}return P(r,(function(e){e[p](v)&&e.isFarther(y,n)&&(y=e)})),y}},{key:"recreateAfterDataPopulation",value:function(e){if(this.currentFillData){var t=this.getRangeFromChanges(e),n=this.currentFillData.foundMergedCells,r=this.currentFillData.dragDirection,o=function(e,n){switch(r){case"up":return e.row-n>=t.from.row;case"down":return e.row+e.rowspan-1+n<=t.to.row;case"left":return e.col-n>=t.from.column;case"right":return e.col+e.colspan-1+n<=t.to.column;default:return null}},i=0,a=null,s=1;do{for(var l=0;ln.max)&&(n.max=o),(null===r.min||ir.max)&&(r.max=i)})),{from:{row:n.min,column:r.min},to:{row:n.max,column:r.max}}}},{key:"dragAreaOverlapsCollections",value:function(e,t,n){var r=wg(this.getDragArea(e,t,n),4),o=r[0],i=r[1],a=r[2],s=r[3],l=new Me(o,i),u=new Me(a,s),c=new Ce(l,l,u);return!!this.mergedCellsCollection.getWithinRange(c,!0)}}],n&&bg(t.prototype,n),e}();const Mg=_g;function kg(e,t){for(var n=0;n0?o&&n!==i&&(r+=a-n+1):o&&n!==a&&(r-=n-i+1),e.row?e.row=r:e.col&&(e.col=r))}},{key:"getUpdatedSelectionRange",value:function(e,t){return new Ce(e.highlight,e.from,new Me(e.to.row+t.row,e.to.col+t.col))}},{key:"getSelectedMergedCellClassName",value:function(e,t,n,r){var o,i,a=(i=4,function(e){if(Array.isArray(e))return e}(o=n)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),s=a[0],l=a[1],u=a[2],c=a[3];if(void 0!==r&&e>=s&&e<=u&&t>=l&&t<=c){if(!this.plugin.mergedCellsCollection.isMergedParent(e,t))return;var h=this.plugin.mergedCellsCollection.get(e,t);if(!h)return;if(h.row+h.rowspan-1<=u&&h.col+h.colspan-1<=c)return"".concat(this.fullySelectedMergedCellClassName,"-").concat(r);if(this.plugin.selectionCalculations.isMergeCellFullySelected(h,this.plugin.hot.getSelectedRange()))return"".concat(this.fullySelectedMergedCellClassName,"-multiple")}}},{key:"isMergeCellFullySelected",value:function(e,t){var n=[];if(!t||!e)return!1;for(var r=0;r1&&void 0!==arguments[1]&&arguments[1])||this.validateSetting(e)}},{key:"toggleMergeOnSelection",value:function(){var e=this.hot.getSelectedRangeLast();if(e){e.setDirection("NW-SE");var t=e.from,n=e.to;this.toggleMerge(e),this.hot.selectCell(t.row,t.col,n.row,n.col,!1)}}},{key:"mergeSelection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.hot.getSelectedRangeLast();if(e){e.setDirection("NW-SE");var t=e.from,n=e.to;this.unmergeRange(e,!0),this.mergeRange(e),this.hot.selectCell(t.row,t.col,n.row,n.col,!1)}}},{key:"unmergeSelection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.hot.getSelectedRangeLast();if(e){var t=e.from,n=e.to;this.unmergeRange(e,!0),this.hot.selectCell(t.row,t.col,n.row,n.col,!1)}}},{key:"mergeRange",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=e.getTopLeftCorner(),i=e.getBottomRightCorner(),a={row:o.row,col:o.col,rowspan:i.row-o.row+1,colspan:i.col-o.col+1},s=[],l=null;return!!this.canMergeRange(a,n)&&(this.hot.runHooks("beforeMergeCells",e,n),Ra(0,a.rowspan-1,(function(e){Ra(0,a.colspan-1,(function(n){var r=null;s[e]||(s[e]=[]),0===e&&0===n?r=t.hot.getDataAtCell(a.row,a.col):t.hot.setCellMeta(a.row+e,a.col+n,"hidden",!0),s[e][n]=r}))})),this.hot.setCellMeta(a.row,a.col,"spanned",!0),!this.mergedCellsCollection.add(a)||(r?l=[a.row,a.col,s]:this.hot.populateFromArray(a.row,a.col,s,void 0,void 0,this.pluginName),this.hot.runHooks("afterMergeCells",e,a,n),l))}},{key:"unmergeRange",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.mergedCellsCollection.getWithinRange(e);r&&(this.hot.runHooks("beforeUnmergeCells",e,n),P(r,(function(e){t.mergedCellsCollection.remove(e.row,e.col),Ra(0,e.rowspan-1,(function(n){Ra(0,e.colspan-1,(function(r){t.hot.removeCellMeta(e.row+n,e.col+r,"hidden")}))})),t.hot.removeCellMeta(e.row,e.col,"spanned")})),this.hot.render(),this.hot.runHooks("afterUnmergeCells",e,n))}},{key:"toggleMerge",value:function(e){var t=this.mergedCellsCollection.get(e.from.row,e.from.col);t.row===e.from.row&&t.col===e.from.col&&t.row+t.rowspan-1===e.to.row&&t.col+t.colspan-1===e.to.col?this.unmergeRange(e):this.mergeSelection(e)}},{key:"merge",value:function(e,t,n,r){var o=new Me(e,t),i=new Me(n,r);this.mergeRange(new Ce(o,o,i))}},{key:"unmerge",value:function(e,t,n,r){var o=new Me(e,t),i=new Me(n,r);this.unmergeRange(new Ce(o,o,i))}},{key:"onAfterInit",value:function(){this.generateFromSettings(this.hot.getSettings().mergeCells),this.hot.render()}},{key:"onBeforeKeyDown",value:function(e){(e.ctrlKey||e.metaKey)&&!e.altKey&&77===e.keyCode&&(this.toggleMerge(this.hot.getSelectedRangeLast()),this.hot.render(),jr(e))}},{key:"onAfterIsMultipleSelection",value:function(e){if(e)for(var t=this.mergedCellsCollection.mergedCells,n=this.hot.getSelectedRangeLast(),r=0;r0?o.row=a.row+a.rowspan-1-i.row+e.row:e.row<0&&(o.row=i.row-a.row+e.row),e.col>0?o.col=a.col+a.colspan-1-i.col+e.col:e.col<0&&(o.col=i.col-a.col+e.col)}t=new Me(r.highlight.row+o.row,r.highlight.col+o.col);var u=this.mergedCellsCollection.get(t.row,t.col);u&&(n.lastDesiredCoords=t,o={row:u.row-i.row,col:u.col-i.col}),0!==o.row&&(e.row=o.row),0!==o.col&&(e.col=o.col)}},{key:"onModifyTransformEnd",value:function(e){var t=this,n=this.hot.getSelectedRangeLast(),r=K(e),o=this.selectionCalculations.getUpdatedSelectionRange(n,e),i=K(r),a=this.mergedCellsCollection.getWithinRange(o,!0);do{i=K(r),this.selectionCalculations.getUpdatedSelectionRange(n,r),P(a,(function(e){t.selectionCalculations.snapDelta(r,n,e)}))}while(r.row!==i.row||r.col!==i.col);e.row=r.row,e.col=r.col}},{key:"onModifyGetCellCoords",value:function(e,t){var n=this.mergedCellsCollection.get(e,t);return n?[n.row,n.col,n.row+n.rowspan-1,n.col+n.colspan-1]:void 0}},{key:"addMergeActionsToContextMenu",value:function(e){var t;e.items.push({name:"---------"},(t=this,{key:"mergeCells",name:function(){var e=this.getSelectedLast();if(e){var n=t.mergedCellsCollection.get(e[0],e[1]);if(n.row===e[0]&&n.col===e[1]&&n.row+n.rowspan-1===e[2]&&n.col+n.colspan-1===e[3])return this.getTranslatedPhrase(lc)}return this.getTranslatedPhrase(sc)},callback:function(){t.toggleMergeOnSelection()},disabled:function(){var e=this.getSelectedLast();return!e||fg.isSingleCell({row:e[0],col:e[1],rowspan:e[2]-e[0]+1,colspan:e[3]-e[1]+1})||this.selection.isSelectedByCorner()},hidden:!1}))}},{key:"onAfterRenderer",value:function(e,t,n){dg(e,this.mergedCellsCollection.get(t,n),t,n)}},{key:"onBeforeSetRangeEnd",value:function(e){var t=this.hot.getSelectedRangeLast();t.highlight=new Me(t.highlight.row,t.highlight.col),t.to=e;var n=!1;if(!this.hot.selection.isSelectedByColumnHeader()&&!this.hot.selection.isSelectedByRowHeader())do{n=!1;for(var r=0;re.endRow)return e.endRow=o,n.onAfterViewportRowCalculatorOverride.call(n,e)}return!0}))}},{key:"onAfterViewportColumnCalculatorOverride",value:function(e){var t,n=this;Ra(0,this.hot.countRows()-1,(function(r){if((t=n.mergedCellsCollection.get(r,e.startColumn))&&t.cole.endColumn)return e.endColumn=o,n.onAfterViewportColumnCalculatorOverride.call(n,e)}return!0}))}},{key:"onModifyAutofillRange",value:function(e,t){this.autofillCalculations.correctSelectionAreaSize(t);var n=this.autofillCalculations.getDirection(t,e),r=e;if(this.autofillCalculations.dragAreaOverlapsCollections(t,r,n))return t;var o=this.mergedCellsCollection.getWithinRange({from:{row:t[0],col:t[1]},to:{row:t[2],col:t[3]}});return o?r=this.autofillCalculations.snapDragArea(t,r,n,o):r}},{key:"onAfterCreateCol",value:function(e,t){this.mergedCellsCollection.shiftCollections("right",e,t)}},{key:"onAfterRemoveCol",value:function(e,t){this.mergedCellsCollection.shiftCollections("left",e,t)}},{key:"onAfterCreateRow",value:function(e,t,n){"auto"!==n&&this.mergedCellsCollection.shiftCollections("down",e,t)}},{key:"onAfterRemoveRow",value:function(e,t){this.mergedCellsCollection.shiftCollections("up",e,t)}},{key:"onAfterChange",value:function(e,t){"Autofill.fill"===t&&this.autofillCalculations.recreateAfterDataPopulation(e)}},{key:"onBeforeDrawAreaBorders",value:function(e,t){if(t&&"area"===t){var n=this.hot.getSelectedRangeLast();P(this.mergedCellsCollection.getWithinRange(n),(function(t){n.getBottomRightCorner().row===t.getLastRow()&&n.getBottomRightCorner().col===t.getLastColumn()&&(e[2]=t.row,e[3]=t.col)}))}}},{key:"onAfterModifyTransformStart",value:function(e,t,n){if(this.enabled){var r=this.mergedCellsCollection.get(e.row,e.col);if(r){var o=t>0,i=t<0,a=n<0,s=n>0,l=r.row+r.rowspan-1==this.hot.countRows()-1,u=0===r.row,c=r.col+r.colspan-1==this.hot.countCols()-1,h=0===r.col;(o&&l||i&&u||s&&c||a&&h)&&(e.row=r.row,e.col=r.col)}}}},{key:"onAfterDrawSelection",value:function(e,t,n,r){return this.selectionCalculations.getSelectedMergedCellClassName(e,t,n,r)}},{key:"onBeforeRemoveCellClassNames",value:function(){return this.selectionCalculations.getSelectedMergedCellClassNameToRemove()}}],r&&Og(n.prototype,r),t}(Rf);gu("mergeCells",Ng);const Pg=Ng;function xg(e){return xg="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},xg(e)}function Yg(e,t){for(var n=0;n0}}],r&&Yg(n.prototype,r),t}(Rf);gu("multipleSelectionHandles",Wg);const Bg=Wg;var Vg=n(78717),Ug=n.n(Vg);function zg(e){var t=e.match(/^\/(\d+)\/?(.*)?$/);if(!t)return null;var n,r,o=(r=3,function(e){if(Array.isArray(e))return e}(n=t)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()),i=o[1],a=o[2];return{row:parseInt(i,10),col:/^\d*$/.test(a)?parseInt(a,10):a}}function Gg(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:this.getCallback(),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.getQueryMethod(),o=this.hot.countRows(),i=this.hot.countCols(),a=[],s=this.hot;return Ra(0,o-1,(function(o){Ra(0,i-1,(function(i){var l=t.hot.getDataAtCell(o,i),u=t.hot.getCellMeta(o,i),c=u.search.callback||n,h=(u.search.queryMethod||r)(e,l,u);if(h){var f={row:o,col:i,data:l};a.push(f)}c&&c(s,o,i,l,h)}))})),a}},{key:"getCallback",value:function(){return this.callback}},{key:"setCallback",value:function(e){this.callback=e}},{key:"getQueryMethod",value:function(){return this.queryMethod}},{key:"setQueryMethod",value:function(e){this.queryMethod=e}},{key:"getSearchResultClass",value:function(){return this.searchResultClass}},{key:"setSearchResultClass",value:function(e){this.searchResultClass=e}},{key:"updatePluginSettings",value:function(e){Q(e)&&(e.searchResultClass&&this.setSearchResultClass(e.searchResultClass),e.queryMethod&&this.setQueryMethod(e.queryMethod),e.callback&&this.setCallback(e.callback))}},{key:"onBeforeRenderer",value:function(e,t,n,r,o,i){var a,s,l=i.className||[],u=[];"string"==typeof l?u=l.split(" "):(a=u).push.apply(a,function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1?this.getSelected():[[i[0][0],i[0][1]]];t.done(new Ew.ChangeAction(i,a))}})),e.addHook("afterCreateRow",(function(e,n,r){if("UndoRedo.undo"!==r&&"UndoRedo.undo"!==r&&"auto"!==r){var o=new Ew.CreateRowAction(e,n);t.done(o)}})),e.addHook("beforeRemoveRow",(function(n,r,o,i){if("UndoRedo.undo"!==i&&"UndoRedo.redo"!==i&&"auto"!==i){var a=t.instance.getSourceDataArray(),s=(a.length+n)%a.length,l=e.toPhysicalRow(s),u=X(a.slice(l,l+r));t.done(new Ew.RemoveRowAction(s,u))}})),e.addHook("afterCreateCol",(function(e,n,r){"UndoRedo.undo"!==r&&"UndoRedo.redo"!==r&&"auto"!==r&&t.done(new Ew.CreateColumnAction(e,n))})),e.addHook("beforeRemoveCol",(function(n,r,o,i){if("UndoRedo.undo"!==i&&"UndoRedo.redo"!==i&&"auto"!==i){var a=t.instance.getSourceDataArray(),s=(t.instance.countCols()+n)%t.instance.countCols(),l=[],u=[],c=[];Ra(a.length-1,(function(t){var n=[],o=a[t];Ra(s,s+(r-1),(function(t){n.push(o[e.runHooks("modifyCol",t)])})),l.push(n)})),Ra(r-1,(function(t){c.push(e.runHooks("modifyCol",s+t))})),Array.isArray(e.getSettings().colHeaders)&&Ra(r-1,(function(t){u.push(e.getSettings().colHeaders[e.runHooks("modifyCol",s+t)]||null)}));var h=t.instance.getPlugin("manualColumnMove"),f=h.isEnabled()?h.columnsMapper.__arrayMap:[],d=new Ew.RemoveColumnAction(s,c,l,u,f);t.done(d)}})),e.addHook("beforeCellAlignment",(function(e,n,r,o){var i=new Ew.CellAlignmentAction(e,n,r,o);t.done(i)})),e.addHook("beforeFilter",(function(e){t.done(new Ew.FiltersAction(e))})),e.addHook("beforeRowMove",(function(e,n){!1!==e&&t.done(new Ew.RowMoveAction(e,n))})),e.addHook("beforeMergeCells",(function(n,r){r||t.done(new Ew.MergeCellsAction(e,n))})),e.addHook("afterUnmergeCells",(function(n,r){r||t.done(new Ew.UnmergeCellsAction(e,n))}))}Ew.prototype.done=function(e){this.ignoreNewActions||(this.doneActions.push(e),this.undoneActions.length=0)},Ew.prototype.undo=function(){if(this.isUndoAvailable()){var e=this.doneActions.pop(),t=X(e),n=this.instance;if(!1===n.runHooks("beforeUndo",t))return;this.ignoreNewActions=!0;var r=this;e.undo(this.instance,(function(){r.ignoreNewActions=!1,r.undoneActions.push(e)})),n.runHooks("afterUndo",t)}},Ew.prototype.redo=function(){if(this.isRedoAvailable()){var e=this.undoneActions.pop(),t=X(e),n=this.instance;if(!1===n.runHooks("beforeRedo",t))return;this.ignoreNewActions=!0;var r=this;e.redo(this.instance,(function(){r.ignoreNewActions=!1,r.doneActions.push(e)})),n.runHooks("afterRedo",t)}},Ew.prototype.isUndoAvailable=function(){return this.doneActions.length>0},Ew.prototype.isRedoAvailable=function(){return this.undoneActions.length>0},Ew.prototype.clear=function(){this.doneActions.length=0,this.undoneActions.length=0},Ew.Action=function(){},Ew.Action.prototype.undo=function(){},Ew.Action.prototype.redo=function(){},Ew.ChangeAction=function(e,t){this.changes=e,this.selected=t,this.actionType="change"},z(Ew.ChangeAction,Ew.Action),Ew.ChangeAction.prototype.undo=function(e,t){for(var n=X(this.changes),r=e.countEmptyRows(!0),o=e.countEmptyCols(!0),i=0,a=n.length;i=n&&this.index-rthis.target?this.rows[0]+this.rows.length:this.rows[0],i=[],a=this.rows.length+r,s=r;s