Update NPM dependencies and static assets

This commit is contained in:
Christopher C. Wells 2020-02-08 19:46:43 -08:00
parent 2bde57cc32
commit ad9cfea541
18 changed files with 935 additions and 36107 deletions

293
package-lock.json generated
View File

@ -24,17 +24,17 @@
} }
}, },
"@babel/core": { "@babel/core": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz",
"integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.8.3", "@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3", "@babel/generator": "^7.8.4",
"@babel/helpers": "^7.8.3", "@babel/helpers": "^7.8.4",
"@babel/parser": "^7.8.3", "@babel/parser": "^7.8.4",
"@babel/template": "^7.8.3", "@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.3", "@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3", "@babel/types": "^7.8.3",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
@ -73,9 +73,9 @@
} }
}, },
"@babel/generator": { "@babel/generator": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
"integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.8.3", "@babel/types": "^7.8.3",
@ -122,13 +122,13 @@
} }
}, },
"@babel/helpers": { "@babel/helpers": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
"integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/template": "^7.8.3", "@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.3", "@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3" "@babel/types": "^7.8.3"
} }
}, },
@ -144,15 +144,15 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
"integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==", "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
"dev": true "dev": true
}, },
"@babel/runtime": { "@babel/runtime": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz",
"integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"regenerator-runtime": "^0.13.2" "regenerator-runtime": "^0.13.2"
@ -170,16 +170,16 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.8.3", "version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
"integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.8.3", "@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.3", "@babel/generator": "^7.8.4",
"@babel/helper-function-name": "^7.8.3", "@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.3", "@babel/parser": "^7.8.4",
"@babel/types": "^7.8.3", "@babel/types": "^7.8.3",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0",
@ -1012,9 +1012,9 @@
} }
}, },
"bail": { "bail": {
"version": "1.0.4", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
"integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
"dev": true "dev": true
}, },
"balanced-match": { "balanced-match": {
@ -1224,14 +1224,14 @@
} }
}, },
"browserslist": { "browserslist": {
"version": "4.8.5", "version": "4.8.6",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.5.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz",
"integrity": "sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg==", "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001022", "caniuse-lite": "^1.0.30001023",
"electron-to-chromium": "^1.3.338", "electron-to-chromium": "^1.3.341",
"node-releases": "^1.1.46" "node-releases": "^1.1.47"
} }
}, },
"buble": { "buble": {
@ -1350,9 +1350,9 @@
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001022", "version": "1.0.30001025",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001022.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz",
"integrity": "sha512-FjwPPtt/I07KyLPkBQ0g7/XuZg6oUkYBVnPHNj3VHJbOjmmJ/GdSo/GUY6MwINEQvjhP6WZVbX8Tvms8xh0D5A==", "integrity": "sha512-SKyFdHYfXUZf5V85+PJgLYyit27q4wgvZuf8QTOk1osbypcROihMBlx9GRar2/pIcKH2r4OehdlBr9x6PXetAQ==",
"dev": true "dev": true
}, },
"canvas-fit": { "canvas-fit": {
@ -1381,9 +1381,9 @@
"dev": true "dev": true
}, },
"ccount": { "ccount": {
"version": "1.0.4", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz",
"integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==",
"dev": true "dev": true
}, },
"cdt2d": { "cdt2d": {
@ -2629,9 +2629,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.340", "version": "1.3.345",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.340.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz",
"integrity": "sha512-hRFBAglhcj5iVYH+o8QU0+XId1WGoc0VGowJB1cuJAt3exHGrivZvWeAO5BRgBZqwZtwxjm8a5MQeGoT/Su3ww==", "integrity": "sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg==",
"dev": true "dev": true
}, },
"element-size": { "element-size": {
@ -2641,9 +2641,9 @@
"dev": true "dev": true
}, },
"elementary-circuits-directed-graph": { "elementary-circuits-directed-graph": {
"version": "1.0.4", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.4.tgz", "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.2.0.tgz",
"integrity": "sha512-+xpVxSimU+fcHiTRPWrRN1IFOKaygwotCtZGSBle/rnFaFAoI+4Y8/pimAY1cKiDIHTek2Zox1R7SEQAB/AQ1g==", "integrity": "sha512-eOQofnrNqebPtC29PvyNMGUBdMrIw5i8nOoC/2VOlSF84tf5+ZXnRkIk7TgdT22jFXK68CC7aA881KRmNYf/Pg==",
"dev": true, "dev": true,
"requires": { "requires": {
"strongly-connected-components": "^1.0.1" "strongly-connected-components": "^1.0.1"
@ -2774,9 +2774,9 @@
"dev": true "dev": true
}, },
"escodegen": { "escodegen": {
"version": "1.13.0", "version": "1.14.1",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
"integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==", "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"esprima": "^4.0.1", "esprima": "^4.0.1",
@ -4210,9 +4210,9 @@
} }
}, },
"gl-mesh3d": { "gl-mesh3d": {
"version": "2.2.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.2.0.tgz", "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.3.0.tgz",
"integrity": "sha512-wO6EKjBUo/k7ZLGsMACWGETjmjfsGwwoDWEKjDbjyjo1qPvgkTQQB9Y8p+OKGjE6GeihsfQuoqGBUTu9tiAOmg==", "integrity": "sha512-iKx3v0xB/6Kej+GpMHhxzW6ziqiIjp6WOyAbuXvBRN9P5iIgzifgBYnDd1mYmCLWGmf85MCki/FvD223BOYFxg==",
"dev": true, "dev": true,
"requires": { "requires": {
"barycentric": "^1.0.1", "barycentric": "^1.0.1",
@ -4233,14 +4233,14 @@
} }
}, },
"gl-plot2d": { "gl-plot2d": {
"version": "1.4.2", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.2.tgz", "resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.3.tgz",
"integrity": "sha512-YLFiu/vgDCYZ/Qnz0wn0gV60IYCtImSnx0OTMsZ5fP1XZAhFztrRb2fJfnjfEVe15yZ+G+9zJ36RlWmJsNQYjQ==", "integrity": "sha512-Ei6WC/SzQ7/qld8MMv7sWrFSdkq8/n7Xmdvj7sbwUkgsJirfknKfeq4DCwaMn9vD2rHOLmdT0NMW+HPrLKSeWQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"binary-search-bounds": "^2.0.4", "binary-search-bounds": "^2.0.4",
"gl-buffer": "^2.1.2", "gl-buffer": "^2.1.2",
"gl-select-static": "^2.0.4", "gl-select-static": "^2.0.5",
"gl-shader": "^4.2.1", "gl-shader": "^4.2.1",
"glsl-inverse": "^1.0.0", "glsl-inverse": "^1.0.0",
"glslify": "^7.0.0", "glslify": "^7.0.0",
@ -4248,9 +4248,9 @@
} }
}, },
"gl-plot3d": { "gl-plot3d": {
"version": "2.4.0", "version": "2.4.4",
"resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.0.tgz", "resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.4.tgz",
"integrity": "sha512-ZPs7gvWaCqK99GXoB0XJTMTLpChB/CiDUt3MthIawVlFhknSJLNPAJSbUU3f4pWzKCbbGtVARQr/i6XdM3MnKA==", "integrity": "sha512-R/V4hSrE2sFD+Xls7D6qCOlWCRmqtUff0sKbeFJdI91HfFzPJPiy9Pqa/Jh2UsvdmwkkSQPNDcBvLd6TvhRC/g==",
"dev": true, "dev": true,
"requires": { "requires": {
"3d-view": "^2.0.0", "3d-view": "^2.0.0",
@ -4263,7 +4263,7 @@
"gl-spikes3d": "^1.0.9", "gl-spikes3d": "^1.0.9",
"glslify": "^7.0.0", "glslify": "^7.0.0",
"has-passive-events": "^1.0.0", "has-passive-events": "^1.0.0",
"is-mobile": "^2.1.0", "is-mobile": "^2.2.0",
"mouse-change": "^1.4.0", "mouse-change": "^1.4.0",
"mouse-event-offset": "^3.0.2", "mouse-event-offset": "^3.0.2",
"mouse-wheel": "^1.2.0", "mouse-wheel": "^1.2.0",
@ -4323,9 +4323,9 @@
} }
}, },
"gl-select-static": { "gl-select-static": {
"version": "2.0.4", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.4.tgz", "resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.5.tgz",
"integrity": "sha512-4Kqx5VjeT8nmV+j6fry3UBFNL2B7ktQU4o508QGVPKWCILlV44rTDq3mnBFThup8rMIH9kJQx6xWsg9jTmfeMw==", "integrity": "sha512-8H1M9ipHNsrVh8UjUmTv1xhhYjYzMnawAnw3n715Dh4DDoW32F3oBi80ev5qbJtQlvHrNkhHKuoMCJKBjfIt4g==",
"dev": true, "dev": true,
"requires": { "requires": {
"bit-twiddle": "^1.0.2", "bit-twiddle": "^1.0.2",
@ -5658,9 +5658,9 @@
} }
}, },
"is-alphabetical": { "is-alphabetical": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
"integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
"dev": true "dev": true
}, },
"is-alphanumeric": { "is-alphanumeric": {
@ -5670,9 +5670,9 @@
"dev": true "dev": true
}, },
"is-alphanumerical": { "is-alphanumerical": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
"integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-alphabetical": "^1.0.0", "is-alphabetical": "^1.0.0",
@ -5766,9 +5766,9 @@
"dev": true "dev": true
}, },
"is-decimal": { "is-decimal": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
"integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
"dev": true "dev": true
}, },
"is-descriptor": { "is-descriptor": {
@ -5842,9 +5842,9 @@
} }
}, },
"is-hexadecimal": { "is-hexadecimal": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
"integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
"dev": true "dev": true
}, },
"is-iexplorer": { "is-iexplorer": {
@ -5854,9 +5854,9 @@
"dev": true "dev": true
}, },
"is-mobile": { "is-mobile": {
"version": "2.1.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.0.tgz",
"integrity": "sha512-M5OhlZwh+aTlmRUvDg0Wq3uWVNa+w4DyZ2SjbrS+BhSLu9Po+JXHendC305ZEu+Hh7lywb19Zu4kYXu3L1Oo8A==", "integrity": "sha512-K0DmUqaZqYl6M8ej536uJYAQaBkx+qWph7xl1KRBr31UiGUT0MoFWUoqnIxzXnIeolnK8bkxtKXkZNL6HfSHhQ==",
"dev": true "dev": true
}, },
"is-negated-glob": { "is-negated-glob": {
@ -5999,9 +5999,9 @@
"dev": true "dev": true
}, },
"is-whitespace-character": { "is-whitespace-character": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
"integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
"dev": true "dev": true
}, },
"is-windows": { "is-windows": {
@ -6011,9 +6011,9 @@
"dev": true "dev": true
}, },
"is-word-character": { "is-word-character": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
"integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
"dev": true "dev": true
}, },
"isarray": { "isarray": {
@ -6140,9 +6140,9 @@
"dev": true "dev": true
}, },
"known-css-properties": { "known-css-properties": {
"version": "0.17.0", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.17.0.tgz", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz",
"integrity": "sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==", "integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==",
"dev": true "dev": true
}, },
"last-run": { "last-run": {
@ -6272,24 +6272,6 @@
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
"dev": true "dev": true
}, },
"lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
"dev": true
},
"lodash.isregexp": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz",
"integrity": "sha1-4T5kezDNVZdSoEzZEghvr32hwws=",
"dev": true
},
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
"dev": true
},
"log-symbols": { "log-symbols": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
@ -6319,9 +6301,9 @@
"dev": true "dev": true
}, },
"longest-streak": { "longest-streak": {
"version": "2.0.3", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
"integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
"dev": true "dev": true
}, },
"loud-rejection": { "loud-rejection": {
@ -6984,9 +6966,9 @@
} }
}, },
"node-releases": { "node-releases": {
"version": "1.1.47", "version": "1.1.48",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.48.tgz",
"integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", "integrity": "sha512-Hr8BbmUl1ujAST0K0snItzEA5zkJTQup8VNTKNfT6Zw8vTJkIiagUPNfxHmgDOyfFYNfKAul40sD0UEYTvwebw==",
"dev": true, "dev": true,
"requires": { "requires": {
"semver": "^6.3.0" "semver": "^6.3.0"
@ -7650,9 +7632,9 @@
} }
}, },
"plotly.js": { "plotly.js": {
"version": "1.52.1", "version": "1.52.2",
"resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.52.1.tgz", "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.52.2.tgz",
"integrity": "sha512-GLNwAu20zwRZrfjrSRUZHXyDulDRh1yfPBV5SLqy5AdGefb6CK2QCBbMcGlhV2P14oJwQ8vd1wqTZVZE9xQ9Rw==", "integrity": "sha512-EZHr2ekxVNjucmNhku+JiLFoLV1wH6gW15T/6SFqtHFMvJZY4HeZogtRUPTLijXBPfusMWxxIKEDTzlMOLXajQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey": "0.7.2",
@ -7668,8 +7650,8 @@
"country-regex": "^1.1.0", "country-regex": "^1.1.0",
"d3": "^3.5.12", "d3": "^3.5.12",
"d3-force": "^1.0.6", "d3-force": "^1.0.6",
"d3-hierarchy": "^1.1.8", "d3-hierarchy": "^1.1.9",
"d3-interpolate": "1", "d3-interpolate": "^1.4.0",
"delaunay-triangulate": "^1.1.6", "delaunay-triangulate": "^1.1.6",
"es6-promise": "^3.0.2", "es6-promise": "^3.0.2",
"fast-isnumeric": "^1.1.3", "fast-isnumeric": "^1.1.3",
@ -7679,9 +7661,9 @@
"gl-heatmap2d": "^1.0.5", "gl-heatmap2d": "^1.0.5",
"gl-line3d": "^1.1.11", "gl-line3d": "^1.1.11",
"gl-mat4": "^1.2.0", "gl-mat4": "^1.2.0",
"gl-mesh3d": "^2.2.0", "gl-mesh3d": "^2.3.0",
"gl-plot2d": "^1.4.2", "gl-plot2d": "^1.4.3",
"gl-plot3d": "^2.3.0", "gl-plot3d": "^2.4.2",
"gl-pointcloud2d": "^1.0.2", "gl-pointcloud2d": "^1.0.2",
"gl-scatter3d": "^1.2.2", "gl-scatter3d": "^1.2.2",
"gl-select-box": "^1.0.3", "gl-select-box": "^1.0.3",
@ -7692,6 +7674,7 @@
"glslify": "^7.0.0", "glslify": "^7.0.0",
"has-hover": "^1.0.1", "has-hover": "^1.0.1",
"has-passive-events": "^1.0.0", "has-passive-events": "^1.0.0",
"is-mobile": "^2.1.0",
"mapbox-gl": "1.3.2", "mapbox-gl": "1.3.2",
"matrix-camera-controller": "^2.1.3", "matrix-camera-controller": "^2.1.3",
"mouse-change": "^1.4.0", "mouse-change": "^1.4.0",
@ -7961,12 +7944,12 @@
"dev": true "dev": true
}, },
"postcss-safe-parser": { "postcss-safe-parser": {
"version": "4.0.1", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
"dev": true, "dev": true,
"requires": { "requires": {
"postcss": "^7.0.0" "postcss": "^7.0.26"
} }
}, },
"postcss-sass": { "postcss-sass": {
@ -9435,9 +9418,9 @@
"dev": true "dev": true
}, },
"state-toggle": { "state-toggle": {
"version": "1.0.2", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
"integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==",
"dev": true "dev": true
}, },
"static-eval": { "static-eval": {
@ -9771,12 +9754,12 @@
"dev": true "dev": true
}, },
"stylelint": { "stylelint": {
"version": "13.0.0", "version": "13.1.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.0.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.1.0.tgz",
"integrity": "sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg==", "integrity": "sha512-Ei+nCSQTyZYrsLSUIxq48/QfzCQD9r9sQiBqy7Z4IpIMcj+E0R6b0CHrSFeE7jNgREpBfJKJd6DpstuDrwUiew==",
"dev": true, "dev": true,
"requires": { "requires": {
"autoprefixer": "^9.7.3", "autoprefixer": "^9.7.4",
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"chalk": "^3.0.0", "chalk": "^3.0.0",
"cosmiconfig": "^6.0.0", "cosmiconfig": "^6.0.0",
@ -9791,17 +9774,17 @@
"ignore": "^5.1.4", "ignore": "^5.1.4",
"import-lazy": "^4.0.0", "import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"known-css-properties": "^0.17.0", "known-css-properties": "^0.18.0",
"leven": "^3.1.0", "leven": "^3.1.0",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"log-symbols": "^3.0.0", "log-symbols": "^3.0.0",
"mathml-tag-names": "^2.1.1", "mathml-tag-names": "^2.1.3",
"meow": "^6.0.0", "meow": "^6.0.0",
"micromatch": "^4.0.2", "micromatch": "^4.0.2",
"normalize-selector": "^0.2.0", "normalize-selector": "^0.2.0",
"postcss": "^7.0.26", "postcss": "^7.0.26",
"postcss-html": "^0.36.0", "postcss-html": "^0.36.0",
"postcss-jsx": "^0.36.3", "postcss-jsx": "^0.36.4",
"postcss-less": "^3.1.4", "postcss-less": "^3.1.4",
"postcss-markdown": "^0.36.0", "postcss-markdown": "^0.36.0",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
@ -9858,9 +9841,9 @@
"dev": true "dev": true
}, },
"camelcase-keys": { "camelcase-keys": {
"version": "6.1.1", "version": "6.1.2",
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.1.tgz", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.2.tgz",
"integrity": "sha512-kEPCddRFChEzO0d6w61yh0WbBiSv9gBnfZWGfXRYPlGqIdIGef6HMR6pgqVSEWCYkrp8B0AtEpEXNY+Jx0xk1A==", "integrity": "sha512-QfFrU0CIw2oltVvpndW32kuJ/9YOJwUnmWrjlXt1nnJZHCaS9i6bfOpg9R4Lw8aZjStkJWM+jc0cdXjWBgVJSw==",
"dev": true, "dev": true,
"requires": { "requires": {
"camelcase": "^5.3.1", "camelcase": "^5.3.1",
@ -10191,9 +10174,9 @@
"dev": true "dev": true
}, },
"stylelint-config-recommended-scss": { "stylelint-config-recommended-scss": {
"version": "4.1.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.1.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.2.0.tgz",
"integrity": "sha512-4012ca0weVi92epm3RRBRZcRJIyl5vJjJ/tJAKng+Qat5+cnmuCwyOI2vXkKdjNfGd0gvzyKCKEkvTMDcbtd7Q==", "integrity": "sha512-4bI5BYbabo/GCQ6LbRZx/ZlVkK65a1jivNNsD+ix/Lw0U3iAch+jQcvliGnnAX8SUPaZ0UqzNVNNAF3urswa7g==",
"dev": true, "dev": true,
"requires": { "requires": {
"stylelint-config-recommended": "^3.0.0" "stylelint-config-recommended": "^3.0.0"
@ -10211,14 +10194,12 @@
} }
}, },
"stylelint-scss": { "stylelint-scss": {
"version": "3.13.0", "version": "3.14.2",
"resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.13.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.14.2.tgz",
"integrity": "sha512-SaLnvQyndaPcsgVJsMh6zJ1uKVzkRZJx+Wg/stzoB1mTBdEmGketbHrGbMQNymzH/0mJ06zDSpeCDvNxqIJE5A==", "integrity": "sha512-59/BkIEWyFoORiejDIQB2P2kmg0KcqMn7wtj1y5sRvS4N+Qh+Ng3hbKelOzgS+OM2Ezbai0uEev8xckXxkh9TQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"lodash.isboolean": "^3.0.3", "lodash": "^4.17.15",
"lodash.isregexp": "^4.0.1",
"lodash.isstring": "^4.0.1",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-selector-parser": "^6.0.2", "postcss-selector-parser": "^6.0.2",
@ -10711,15 +10692,15 @@
"dev": true "dev": true
}, },
"trim-trailing-lines": { "trim-trailing-lines": {
"version": "1.1.2", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
"integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==",
"dev": true "dev": true
}, },
"trough": { "trough": {
"version": "1.0.4", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
"integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
"dev": true "dev": true
}, },
"true-case-path": { "true-case-path": {
@ -10882,13 +10863,13 @@
"dev": true "dev": true
}, },
"unherit": { "unherit": {
"version": "1.1.2", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
"integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"inherits": "^2.0.1", "inherits": "^2.0.0",
"xtend": "^4.0.1" "xtend": "^4.0.0"
} }
}, },
"unicode-canonical-property-names-ecmascript": { "unicode-canonical-property-names-ecmascript": {

View File

@ -21,14 +21,14 @@
"gulp-uglify": "^3.0.2", "gulp-uglify": "^3.0.2",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"moment": "^2.24.0", "moment": "^2.24.0",
"plotly.js": "^1.52.1", "plotly.js": "^1.52.2",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"pulltorefreshjs": "^0.1.20", "pulltorefreshjs": "^0.1.20",
"pump": "^3.0.0", "pump": "^3.0.0",
"stylelint": "^13.0.0", "stylelint": "^13.1.0",
"stylelint-config-recommended-scss": "^4.1.0", "stylelint-config-recommended-scss": "^4.2.0",
"stylelint-order": "^4.0.0", "stylelint-order": "^4.0.0",
"stylelint-scss": "^3.13.0", "stylelint-scss": "^3.14.2",
"tempusdominus-bootstrap-4": "^5.1.2", "tempusdominus-bootstrap-4": "^5.1.2",
"tempusdominus-core": "^5.0.3" "tempusdominus-core": "^5.0.3"
}, },

View File

@ -7616,6 +7616,11 @@ a.text-error:hover, a.text-error:focus {
cursor: pointer; cursor: pointer;
font-weight: bold; } font-weight: bold; }
.ptr--ptr {
background: #343a40; }
.ptr--ptr .ptr--text, .ptr--ptr .ptr--icon {
color: #f8f9fa !important; }
/*! /*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,196 +0,0 @@
if (typeof jQuery === 'undefined') {
throw new Error('Baby Buddy requires jQuery.')
}
if (typeof moment === 'undefined') {
throw new Error('Baby Buddy requires moment.js.')
}
/**
* Baby Buddy Namespace
*
* Default namespace for the Baby Buddy app.
*/
var BabyBuddy = function () {
return {};
}();
/**
* Baby Buddy Datetime Picker
*
* Provides modifications and defaults for the base datetime picker widget.
*/
BabyBuddy.DatetimePicker = function ($, moment) {
return {
init: function (element, options) {
var defaultOptions = {
allowInputToggle: true,
buttons: { showToday: true, showClose: true },
defaultDate: 'now',
format: 'L LT',
ignoreReadonly: true,
locale: moment.locale(),
useCurrent: false
};
element.datetimepicker($.extend(defaultOptions, options));
}
};
}(jQuery, moment);
/* Baby Buddy Timer
*
* Uses a supplied ID to run a timer. The element using the ID must have
* three children with the following classes:
* * timer-seconds
* * timer-minutes
* * timer-hours
*/
BabyBuddy.Timer = function ($) {
var runIntervalId = null;
var timerId = null;
var timerElement = null;
var lastUpdate = moment();
var hidden = null;
var Timer = {
run: function(timer_id, element_id) {
timerId = timer_id;
timerElement = $('#' + element_id);
if (timerElement.length == 0) {
console.error('BBTimer: Timer element not found.');
return false;
}
if (timerElement.find('.timer-seconds').length == 0
|| timerElement.find('.timer-minutes').length == 0
|| timerElement.find('.timer-hours').length == 0) {
console.error('BBTimer: Element does not contain expected children.');
return false;
}
runIntervalId = setInterval(this.tick, 1000);
// If the page just came in to view, update the timer data with the
// current actual duration. This will (potentially) help mobile
// phones that lock with the timer page open.
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
}
else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
}
else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
}
window.addEventListener('focus', Timer.handleVisibilityChange, false);
},
handleVisibilityChange: function() {
if (!document[hidden] && moment().diff(lastUpdate) > 10000) {
Timer.update();
}
},
tick: function() {
var s = timerElement.find('.timer-seconds');
var seconds = Number(s.text());
if (seconds < 59) {
s.text(seconds + 1);
return;
}
else {
s.text(0);
}
var m = timerElement.find('.timer-minutes');
var minutes = Number(m.text());
if (minutes < 59) {
m.text(minutes + 1);
return;
}
else {
m.text(0);
}
var h = timerElement.find('.timer-hours');
var hours = Number(h.text());
h.text(hours + 1);
},
update: function() {
$.get('/api/timers/' + timerId + '/', function(data) {
if (data && 'duration' in data) {
clearInterval(runIntervalId);
var duration = moment.duration(data.duration);
timerElement.find('.timer-hours').text(duration.hours());
timerElement.find('.timer-minutes').text(duration.minutes());
timerElement.find('.timer-seconds').text(duration.seconds());
lastUpdate = moment();
if (data['active']) {
runIntervalId = setInterval(Timer.tick, 1000);
}
else {
timerElement.addClass('timer-stopped');
}
}
});
}
};
return Timer;
}(jQuery);
/* Baby Buddy Dashboard
*
* Provides a "watch" function to update the dashboard at one minute intervals
* and/or on visibility state changes.
*/
BabyBuddy.Dashboard = function ($) {
var runIntervalId = null;
var dashboardElement = null;
var hidden = null;
var Dashboard = {
watch: function(element_id, refresh_rate) {
dashboardElement = $('#' + element_id);
if (dashboardElement.length == 0) {
console.error('Baby Buddy: Dashboard element not found.');
return false;
}
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
}
else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
}
else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
}
if (typeof window.addEventListener === "undefined" || typeof document.hidden === "undefined") {
if (refresh_rate) {
runIntervalId = setInterval(this.update, refresh_rate);
}
}
else {
window.addEventListener('focus', Dashboard.handleVisibilityChange, false);
}
},
handleVisibilityChange: function() {
if (!document[hidden]) {
Dashboard.update();
}
},
update: function() {
// TODO: Someday maybe update in place?
location.reload();
}
};
return Dashboard;
}(jQuery);

View File

@ -1,5 +1,5 @@
/** /**
* plotly.js (cartesian) v1.52.1 * plotly.js (cartesian) v1.52.2
* Copyright 2012-2020, Plotly, Inc. * Copyright 2012-2020, Plotly, Inc.
* All rights reserved. * All rights reserved.
* Licensed under the MIT license * Licensed under the MIT license
@ -34481,7 +34481,7 @@ exports.svgAttrs = {
'use strict'; 'use strict';
// package version injected by `npm run preprocess` // package version injected by `npm run preprocess`
exports.version = '1.52.1'; exports.version = '1.52.2';
// inject promise polyfill // inject promise polyfill
_dereq_('es6-promise').polyfill(); _dereq_('es6-promise').polyfill();
@ -38068,11 +38068,14 @@ lib.templateString = function(string, obj) {
var getterCache = {}; var getterCache = {};
return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) { return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {
var v;
if(SIMPLE_PROPERTY_REGEX.test(key)) { if(SIMPLE_PROPERTY_REGEX.test(key)) {
return obj[key] || ''; v = obj[key];
} else {
getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get;
v = getterCache[key]();
} }
getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get; return lib.isValidTextValue(v) ? v : '';
return getterCache[key]() || '';
}); });
}; };
@ -48258,6 +48261,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
var fullLayout = gd._fullLayout; var fullLayout = gd._fullLayout;
var axList = Axes.list(gd, '', true); var axList = Axes.list(gd, '', true);
var matchGroups = fullLayout._axisMatchGroups || []; var matchGroups = fullLayout._axisMatchGroups || [];
var axLookup = {};
var ax; var ax;
var axRng; var axRng;
@ -48265,6 +48269,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
ax = axList[i]; ax = axList[i];
cleanAxisConstraints(gd, ax); cleanAxisConstraints(gd, ax);
doAutoRange(gd, ax); doAutoRange(gd, ax);
axLookup[ax._id] = 1;
} }
enforceAxisConstraints(gd); enforceAxisConstraints(gd);
@ -48277,6 +48282,10 @@ exports.doAutoRangeAndConstraints = function(gd) {
for(id in group) { for(id in group) {
ax = Axes.getFromId(gd, id); ax = Axes.getFromId(gd, id);
// skip over 'missing' axes which do not pass through doAutoRange
if(!axLookup[ax._id]) continue;
// if one axis has autorange false, we're done
if(ax.autorange === false) continue groupLoop; if(ax.autorange === false) continue groupLoop;
axRng = Lib.simpleMap(ax.range, ax.r2l); axRng = Lib.simpleMap(ax.range, ax.r2l);
@ -49154,13 +49163,14 @@ function crawl(objIn, objOut, schema, list, base, path) {
var valOut = objOut[k]; var valOut = objOut[k];
var nestedSchema = getNestedSchema(schema, k); var nestedSchema = getNestedSchema(schema, k);
var isInfoArray = (nestedSchema || {}).valType === 'info_array'; var nestedValType = (nestedSchema || {}).valType;
var isColorscale = (nestedSchema || {}).valType === 'colorscale'; var isInfoArray = nestedValType === 'info_array';
var isColorscale = nestedValType === 'colorscale';
var items = (nestedSchema || {}).items; var items = (nestedSchema || {}).items;
if(!isInSchema(schema, k)) { if(!isInSchema(schema, k)) {
list.push(format('schema', base, p)); list.push(format('schema', base, p));
} else if(isPlainObject(valIn) && isPlainObject(valOut)) { } else if(isPlainObject(valIn) && isPlainObject(valOut) && nestedValType !== 'any') {
crawl(valIn, valOut, nestedSchema, list, base, p); crawl(valIn, valOut, nestedSchema, list, base, p);
} else if(isInfoArray && isArray(valIn)) { } else if(isInfoArray && isArray(valIn)) {
if(valIn.length > valOut.length) { if(valIn.length > valOut.length) {
@ -51965,10 +51975,14 @@ axes.drawOne = function(gd, ax, opts) {
var axId = ax._id; var axId = ax._id;
var axLetter = axId.charAt(0); var axLetter = axId.charAt(0);
var counterLetter = axes.counterLetter(axId); var counterLetter = axes.counterLetter(axId);
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
// this happens when updating matched group with 'missing' axes
if(!mainPlotinfo) return;
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
var mainLinePosition = ax._mainLinePosition; var mainLinePosition = ax._mainLinePosition;
var mainMirrorPosition = ax._mainMirrorPosition; var mainMirrorPosition = ax._mainMirrorPosition;
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
var vals = ax._vals = axes.calcTicks(ax); var vals = ax._vals = axes.calcTicks(ax);
@ -53927,11 +53941,10 @@ exports.tick0 = function(tick0, axType, calendar, dtick) {
*/ */
'use strict'; 'use strict';
var counterRegex = _dereq_('../../lib/regex').counter; var counterRegex = _dereq_('../../lib/regex').counter;
module.exports = { module.exports = {
idRegex: { idRegex: {
x: counterRegex('x'), x: counterRegex('x'),
y: counterRegex('y') y: counterRegex('y')
@ -57121,6 +57134,8 @@ var axisIds = _dereq_('./axis_ids');
var id2name = axisIds.id2name; var id2name = axisIds.id2name;
var name2id = axisIds.name2id; var name2id = axisIds.name2id;
var AX_ID_PATTERN = _dereq_('./constants').AX_ID_PATTERN;
var Registry = _dereq_('../../registry'); var Registry = _dereq_('../../registry');
var traceIs = Registry.traceIs; var traceIs = Registry.traceIs;
var getComponentMethod = Registry.getComponentMethod; var getComponentMethod = Registry.getComponentMethod;
@ -57230,7 +57245,28 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor); var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor);
var axName, axLetter, axLayoutIn, axLayoutOut; // name of single axis (e.g. 'xaxis', 'yaxis2')
var axName;
// id of single axis (e.g. 'y', 'x5')
var axId;
// 'x' or 'y'
var axLetter;
// input layout axis container
var axLayoutIn;
// full layout axis container
var axLayoutOut;
function newAxLayoutOut() {
var traces = ax2traces[axName] || [];
axLayoutOut._traceIndices = traces.map(function(t) { return t._expandedIndex; });
axLayoutOut._annIndices = [];
axLayoutOut._shapeIndices = [];
axLayoutOut._imgIndices = [];
axLayoutOut._subplotsWith = [];
axLayoutOut._counterAxes = [];
axLayoutOut._name = axLayoutOut._attr = axName;
axLayoutOut._id = axId;
}
function coerce(attr, dflt) { function coerce(attr, dflt) {
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt); return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
@ -57244,9 +57280,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
return (axLetter === 'x') ? yIds : xIds; return (axLetter === 'x') ? yIds : xIds;
} }
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
var allAxisIds = counterAxes.x.concat(counterAxes.y);
function getOverlayableAxes(axLetter, axName) { function getOverlayableAxes(axLetter, axName) {
var list = (axLetter === 'x') ? xNames : yNames; var list = (axLetter === 'x') ? xNames : yNames;
var out = []; var out = [];
@ -57262,9 +57295,30 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
return out; return out;
} }
// list of available counter axis names
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
// list of all x AND y axis ids
var allAxisIds = counterAxes.x.concat(counterAxes.y);
// lookup and list of axis ids that axes in axNames have a reference to,
// even though they are missing from allAxisIds
var missingMatchedAxisIdsLookup = {};
var missingMatchedAxisIds = [];
// fill in 'missing' axis lookup when an axis is set to match an axis
// not part of the allAxisIds list, save axis type so that we can propagate
// it to the missing axes
function addMissingMatchedAxis() {
var matchesIn = axLayoutIn.matches;
if(AX_ID_PATTERN.test(matchesIn) && allAxisIds.indexOf(matchesIn) === -1) {
missingMatchedAxisIdsLookup[matchesIn] = axLayoutIn.type;
missingMatchedAxisIds = Object.keys(missingMatchedAxisIdsLookup);
}
}
// first pass creates the containers, determines types, and handles most of the settings // first pass creates the containers, determines types, and handles most of the settings
for(i = 0; i < axNames.length; i++) { for(i = 0; i < axNames.length; i++) {
axName = axNames[i]; axName = axNames[i];
axId = name2id(axName);
axLetter = axName.charAt(0); axLetter = axName.charAt(0);
if(!Lib.isPlainObject(layoutIn[axName])) { if(!Lib.isPlainObject(layoutIn[axName])) {
@ -57273,20 +57327,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
axLayoutIn = layoutIn[axName]; axLayoutIn = layoutIn[axName];
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis'); axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
newAxLayoutOut();
var traces = ax2traces[axName] || [];
axLayoutOut._traceIndices = traces.map(function(t) { return t._expandedIndex; });
axLayoutOut._annIndices = [];
axLayoutOut._shapeIndices = [];
axLayoutOut._imgIndices = [];
axLayoutOut._subplotsWith = [];
axLayoutOut._counterAxes = [];
// set up some private properties
axLayoutOut._name = axLayoutOut._attr = axName;
var id = axLayoutOut._id = name2id(axName);
var overlayableAxes = getOverlayableAxes(axLetter, axName);
var visibleDflt = var visibleDflt =
(axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) || (axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) ||
@ -57304,13 +57345,13 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
font: layoutOut.font, font: layoutOut.font,
outerTicks: outerTicks[axName], outerTicks: outerTicks[axName],
showGrid: !noGrids[axName], showGrid: !noGrids[axName],
data: traces, data: ax2traces[axName] || [],
bgColor: bgColor, bgColor: bgColor,
calendar: layoutOut.calendar, calendar: layoutOut.calendar,
automargin: true, automargin: true,
visibleDflt: visibleDflt, visibleDflt: visibleDflt,
reverseDflt: reverseDflt, reverseDflt: reverseDflt,
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[id] splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
}; };
coerce('uirevision', layoutOut.uirevision); coerce('uirevision', layoutOut.uirevision);
@ -57336,12 +57377,63 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, { handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
letter: axLetter, letter: axLetter,
counterAxes: counterAxes[axLetter], counterAxes: counterAxes[axLetter],
overlayableAxes: overlayableAxes, overlayableAxes: getOverlayableAxes(axLetter, axName),
grid: layoutOut.grid grid: layoutOut.grid
}); });
coerce('title.standoff'); coerce('title.standoff');
addMissingMatchedAxis();
axLayoutOut._input = axLayoutIn;
}
// coerce the 'missing' axes
i = 0;
while(i < missingMatchedAxisIds.length) {
axId = missingMatchedAxisIds[i++];
axName = id2name(axId);
axLetter = axName.charAt(0);
if(!Lib.isPlainObject(layoutIn[axName])) {
layoutIn[axName] = {};
}
axLayoutIn = layoutIn[axName];
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
newAxLayoutOut();
var defaultOptions2 = {
letter: axLetter,
font: layoutOut.font,
outerTicks: outerTicks[axName],
showGrid: !noGrids[axName],
data: [],
bgColor: bgColor,
calendar: layoutOut.calendar,
automargin: true,
visibleDflt: false,
reverseDflt: false,
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
};
coerce('uirevision', layoutOut.uirevision);
axLayoutOut.type = missingMatchedAxisIdsLookup[axId] || 'linear';
handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions2, layoutOut);
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
letter: axLetter,
counterAxes: counterAxes[axLetter],
overlayableAxes: getOverlayableAxes(axLetter, axName),
grid: layoutOut.grid
});
coerce('fixedrange');
addMissingMatchedAxis();
axLayoutOut._input = axLayoutIn; axLayoutOut._input = axLayoutIn;
} }
@ -57392,9 +57484,12 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var constraintGroups = layoutOut._axisConstraintGroups = []; var constraintGroups = layoutOut._axisConstraintGroups = [];
// similar to _axisConstraintGroups, but for matching axes // similar to _axisConstraintGroups, but for matching axes
var matchGroups = layoutOut._axisMatchGroups = []; var matchGroups = layoutOut._axisMatchGroups = [];
// make sure to include 'missing' axes here
var allAxisIdsIncludingMissing = allAxisIds.concat(missingMatchedAxisIds);
var axNamesIncludingMissing = axNames.concat(Lib.simpleMap(missingMatchedAxisIds, id2name));
for(i = 0; i < axNames.length; i++) { for(i = 0; i < axNamesIncludingMissing.length; i++) {
axName = axNames[i]; axName = axNamesIncludingMissing[i];
axLetter = axName.charAt(0); axLetter = axName.charAt(0);
axLayoutIn = layoutIn[axName]; axLayoutIn = layoutIn[axName];
axLayoutOut = layoutOut[axName]; axLayoutOut = layoutOut[axName];
@ -57402,15 +57497,19 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var scaleanchorDflt; var scaleanchorDflt;
if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) { if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) {
scaleanchorDflt = axLayoutOut.anchor; scaleanchorDflt = axLayoutOut.anchor;
} else {scaleanchorDflt = undefined;} } else {
scaleanchorDflt = undefined;
}
var constrainDflt; var constrainDflt;
if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) { if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) {
constrainDflt = 'domain'; constrainDflt = 'domain';
} else {constrainDflt = undefined;} } else {
constrainDflt = undefined;
}
handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, { handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, {
allAxisIds: allAxisIds, allAxisIds: allAxisIdsIncludingMissing,
layoutOut: layoutOut, layoutOut: layoutOut,
scaleanchorDflt: scaleanchorDflt, scaleanchorDflt: scaleanchorDflt,
constrainDflt: constrainDflt constrainDflt: constrainDflt
@ -57421,7 +57520,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var group = matchGroups[i]; var group = matchGroups[i];
var rng = null; var rng = null;
var autorange = null; var autorange = null;
var axId;
// find 'matching' range attrs // find 'matching' range attrs
for(axId in group) { for(axId in group) {
@ -57474,7 +57572,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
} }
}; };
},{"../../components/color":51,"../../lib":169,"../../plot_api/plot_template":203,"../../registry":258,"../layout_attributes":243,"./axis_defaults":215,"./axis_ids":216,"./constraints":220,"./layout_attributes":225,"./position_defaults":228,"./type_defaults":236}],227:[function(_dereq_,module,exports){ },{"../../components/color":51,"../../lib":169,"../../plot_api/plot_template":203,"../../registry":258,"../layout_attributes":243,"./axis_defaults":215,"./axis_ids":216,"./constants":219,"./constraints":220,"./layout_attributes":225,"./position_defaults":228,"./type_defaults":236}],227:[function(_dereq_,module,exports){
/** /**
* Copyright 2012-2020, Plotly, Inc. * Copyright 2012-2020, Plotly, Inc.
* All rights reserved. * All rights reserved.
@ -62140,10 +62238,13 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
var subplots = layout._subplots; var subplots = layout._subplots;
var subplotId = ''; var subplotId = '';
// TODO - currently if we draw an empty gl2d subplot, it draws if(
// nothing then gets stuck and you can't get it back without newPlot visible ||
// sort this out in the regl refactor? but for now just drop empty gl2d subplots basePlotModule.name !== 'gl2d' // for now just drop empty gl2d subplots
if(basePlotModule.name !== 'gl2d' || visible) { // TODO - currently if we draw an empty gl2d subplot, it draws
// nothing then gets stuck and you can't get it back without newPlot
// sort this out in the regl refactor?
) {
if(Array.isArray(subplotAttr)) { if(Array.isArray(subplotAttr)) {
for(i = 0; i < subplotAttr.length; i++) { for(i = 0; i < subplotAttr.length; i++) {
var attri = subplotAttr[i]; var attri = subplotAttr[i];
@ -63802,7 +63903,7 @@ plots.doCalcdata = function(gd, traces) {
calcdata[i] = cd; calcdata[i] = cd;
} }
setupAxisCategories(axList, fullData); setupAxisCategories(axList, fullData, fullLayout);
// 'transform' loop - must calc container traces first // 'transform' loop - must calc container traces first
// so that if their dependent traces can get transform properly // so that if their dependent traces can get transform properly
@ -63810,7 +63911,7 @@ plots.doCalcdata = function(gd, traces) {
for(i = 0; i < fullData.length; i++) transformCalci(i); for(i = 0; i < fullData.length; i++) transformCalci(i);
// clear stuff that should recomputed in 'regular' loop // clear stuff that should recomputed in 'regular' loop
if(hasCalcTransform) setupAxisCategories(axList, fullData); if(hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout);
// 'regular' loop - make sure container traces (eg carpet) calc before // 'regular' loop - make sure container traces (eg carpet) calc before
// contained traces (eg contourcarpet) // contained traces (eg contourcarpet)
@ -64015,13 +64116,31 @@ function sortAxisCategoriesByValue(axList, gd) {
return affectedTraces; return affectedTraces;
} }
function setupAxisCategories(axList, fullData) { function setupAxisCategories(axList, fullData, fullLayout) {
for(var i = 0; i < axList.length; i++) { var axLookup = {};
var ax = axList[i]; var i, ax, axId;
for(i = 0; i < axList.length; i++) {
ax = axList[i];
axId = ax._id;
ax.clearCalc(); ax.clearCalc();
if(ax.type === 'multicategory') { if(ax.type === 'multicategory') {
ax.setupMultiCategory(fullData); ax.setupMultiCategory(fullData);
} }
axLookup[ax._id] = 1;
}
// look into match groups for 'missing' axes
var matchGroups = fullLayout._axisMatchGroups || [];
for(i = 0; i < matchGroups.length; i++) {
for(axId in matchGroups[i]) {
if(!axLookup[axId]) {
ax = fullLayout[axisIDs.id2name(axId)];
ax.clearCalc();
}
}
} }
} }
@ -69907,7 +70026,12 @@ function hoverOnBars(pointData, xval, yval, hovermode) {
var s = di[sizeLetter]; var s = di[sizeLetter];
if(isWaterfall) { if(isWaterfall) {
s += Math.abs(di.rawS || 0); var rawS = Math.abs(di.rawS) || 0;
if(v > 0) {
s += rawS;
} else if(v < 0) {
s -= rawS;
}
} }
// add a gradient so hovering near the end of a // add a gradient so hovering near the end of a
@ -70294,6 +70418,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
!isNumeric(y0) || !isNumeric(y0) ||
!isNumeric(y1) !isNumeric(y1)
); );
// display zeros if line.width > 0 // display zeros if line.width > 0
if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) { if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) {
isBlank = false; isBlank = false;
@ -70303,6 +70428,9 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
if(isBlank && isHorizontal) x1 = x0; if(isBlank && isHorizontal) x1 = x0;
if(isBlank && !isHorizontal) y1 = y0; if(isBlank && !isHorizontal) y1 = y0;
var spansHorizontal = isHorizontal && (x0 !== x1);
var spansVertical = !isHorizontal && (y0 !== y1);
// in waterfall mode `between` we need to adjust bar end points to match the connector width // in waterfall mode `between` we need to adjust bar end points to match the connector width
if(adjustPixel && !isBlank) { if(adjustPixel && !isBlank) {
if(isHorizontal) { if(isHorizontal) {
@ -70357,10 +70485,15 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
var op = Color.opacity(mc); var op = Color.opacity(mc);
var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible; var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible;
x0 = fixpx(x0, x1);
x1 = fixpx(x1, x0); if(spansHorizontal) {
y0 = fixpx(y0, y1); x0 = fixpx(x0, x1);
y1 = fixpx(y1, y0); x1 = fixpx(x1, x0);
}
if(spansVertical) {
y0 = fixpx(y0, y1);
y1 = fixpx(y1, y0);
}
} }
var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback); var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback);

Binary file not shown.

View File

@ -1,5 +1,5 @@
/** /**
* plotly.js (cartesian) v1.52.1 * plotly.js (cartesian) v1.52.2
* Copyright 2012-2020, Plotly, Inc. * Copyright 2012-2020, Plotly, Inc.
* All rights reserved. * All rights reserved.
* Licensed under the MIT license * Licensed under the MIT license
@ -34481,7 +34481,7 @@ exports.svgAttrs = {
'use strict'; 'use strict';
// package version injected by `npm run preprocess` // package version injected by `npm run preprocess`
exports.version = '1.52.1'; exports.version = '1.52.2';
// inject promise polyfill // inject promise polyfill
_dereq_('es6-promise').polyfill(); _dereq_('es6-promise').polyfill();
@ -38068,11 +38068,14 @@ lib.templateString = function(string, obj) {
var getterCache = {}; var getterCache = {};
return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) { return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {
var v;
if(SIMPLE_PROPERTY_REGEX.test(key)) { if(SIMPLE_PROPERTY_REGEX.test(key)) {
return obj[key] || ''; v = obj[key];
} else {
getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get;
v = getterCache[key]();
} }
getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get; return lib.isValidTextValue(v) ? v : '';
return getterCache[key]() || '';
}); });
}; };
@ -48258,6 +48261,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
var fullLayout = gd._fullLayout; var fullLayout = gd._fullLayout;
var axList = Axes.list(gd, '', true); var axList = Axes.list(gd, '', true);
var matchGroups = fullLayout._axisMatchGroups || []; var matchGroups = fullLayout._axisMatchGroups || [];
var axLookup = {};
var ax; var ax;
var axRng; var axRng;
@ -48265,6 +48269,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
ax = axList[i]; ax = axList[i];
cleanAxisConstraints(gd, ax); cleanAxisConstraints(gd, ax);
doAutoRange(gd, ax); doAutoRange(gd, ax);
axLookup[ax._id] = 1;
} }
enforceAxisConstraints(gd); enforceAxisConstraints(gd);
@ -48277,6 +48282,10 @@ exports.doAutoRangeAndConstraints = function(gd) {
for(id in group) { for(id in group) {
ax = Axes.getFromId(gd, id); ax = Axes.getFromId(gd, id);
// skip over 'missing' axes which do not pass through doAutoRange
if(!axLookup[ax._id]) continue;
// if one axis has autorange false, we're done
if(ax.autorange === false) continue groupLoop; if(ax.autorange === false) continue groupLoop;
axRng = Lib.simpleMap(ax.range, ax.r2l); axRng = Lib.simpleMap(ax.range, ax.r2l);
@ -49154,13 +49163,14 @@ function crawl(objIn, objOut, schema, list, base, path) {
var valOut = objOut[k]; var valOut = objOut[k];
var nestedSchema = getNestedSchema(schema, k); var nestedSchema = getNestedSchema(schema, k);
var isInfoArray = (nestedSchema || {}).valType === 'info_array'; var nestedValType = (nestedSchema || {}).valType;
var isColorscale = (nestedSchema || {}).valType === 'colorscale'; var isInfoArray = nestedValType === 'info_array';
var isColorscale = nestedValType === 'colorscale';
var items = (nestedSchema || {}).items; var items = (nestedSchema || {}).items;
if(!isInSchema(schema, k)) { if(!isInSchema(schema, k)) {
list.push(format('schema', base, p)); list.push(format('schema', base, p));
} else if(isPlainObject(valIn) && isPlainObject(valOut)) { } else if(isPlainObject(valIn) && isPlainObject(valOut) && nestedValType !== 'any') {
crawl(valIn, valOut, nestedSchema, list, base, p); crawl(valIn, valOut, nestedSchema, list, base, p);
} else if(isInfoArray && isArray(valIn)) { } else if(isInfoArray && isArray(valIn)) {
if(valIn.length > valOut.length) { if(valIn.length > valOut.length) {
@ -51965,10 +51975,14 @@ axes.drawOne = function(gd, ax, opts) {
var axId = ax._id; var axId = ax._id;
var axLetter = axId.charAt(0); var axLetter = axId.charAt(0);
var counterLetter = axes.counterLetter(axId); var counterLetter = axes.counterLetter(axId);
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
// this happens when updating matched group with 'missing' axes
if(!mainPlotinfo) return;
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
var mainLinePosition = ax._mainLinePosition; var mainLinePosition = ax._mainLinePosition;
var mainMirrorPosition = ax._mainMirrorPosition; var mainMirrorPosition = ax._mainMirrorPosition;
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
var vals = ax._vals = axes.calcTicks(ax); var vals = ax._vals = axes.calcTicks(ax);
@ -53927,11 +53941,10 @@ exports.tick0 = function(tick0, axType, calendar, dtick) {
*/ */
'use strict'; 'use strict';
var counterRegex = _dereq_('../../lib/regex').counter; var counterRegex = _dereq_('../../lib/regex').counter;
module.exports = { module.exports = {
idRegex: { idRegex: {
x: counterRegex('x'), x: counterRegex('x'),
y: counterRegex('y') y: counterRegex('y')
@ -57121,6 +57134,8 @@ var axisIds = _dereq_('./axis_ids');
var id2name = axisIds.id2name; var id2name = axisIds.id2name;
var name2id = axisIds.name2id; var name2id = axisIds.name2id;
var AX_ID_PATTERN = _dereq_('./constants').AX_ID_PATTERN;
var Registry = _dereq_('../../registry'); var Registry = _dereq_('../../registry');
var traceIs = Registry.traceIs; var traceIs = Registry.traceIs;
var getComponentMethod = Registry.getComponentMethod; var getComponentMethod = Registry.getComponentMethod;
@ -57230,7 +57245,28 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor); var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor);
var axName, axLetter, axLayoutIn, axLayoutOut; // name of single axis (e.g. 'xaxis', 'yaxis2')
var axName;
// id of single axis (e.g. 'y', 'x5')
var axId;
// 'x' or 'y'
var axLetter;
// input layout axis container
var axLayoutIn;
// full layout axis container
var axLayoutOut;
function newAxLayoutOut() {
var traces = ax2traces[axName] || [];
axLayoutOut._traceIndices = traces.map(function(t) { return t._expandedIndex; });
axLayoutOut._annIndices = [];
axLayoutOut._shapeIndices = [];
axLayoutOut._imgIndices = [];
axLayoutOut._subplotsWith = [];
axLayoutOut._counterAxes = [];
axLayoutOut._name = axLayoutOut._attr = axName;
axLayoutOut._id = axId;
}
function coerce(attr, dflt) { function coerce(attr, dflt) {
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt); return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
@ -57244,9 +57280,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
return (axLetter === 'x') ? yIds : xIds; return (axLetter === 'x') ? yIds : xIds;
} }
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
var allAxisIds = counterAxes.x.concat(counterAxes.y);
function getOverlayableAxes(axLetter, axName) { function getOverlayableAxes(axLetter, axName) {
var list = (axLetter === 'x') ? xNames : yNames; var list = (axLetter === 'x') ? xNames : yNames;
var out = []; var out = [];
@ -57262,9 +57295,30 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
return out; return out;
} }
// list of available counter axis names
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
// list of all x AND y axis ids
var allAxisIds = counterAxes.x.concat(counterAxes.y);
// lookup and list of axis ids that axes in axNames have a reference to,
// even though they are missing from allAxisIds
var missingMatchedAxisIdsLookup = {};
var missingMatchedAxisIds = [];
// fill in 'missing' axis lookup when an axis is set to match an axis
// not part of the allAxisIds list, save axis type so that we can propagate
// it to the missing axes
function addMissingMatchedAxis() {
var matchesIn = axLayoutIn.matches;
if(AX_ID_PATTERN.test(matchesIn) && allAxisIds.indexOf(matchesIn) === -1) {
missingMatchedAxisIdsLookup[matchesIn] = axLayoutIn.type;
missingMatchedAxisIds = Object.keys(missingMatchedAxisIdsLookup);
}
}
// first pass creates the containers, determines types, and handles most of the settings // first pass creates the containers, determines types, and handles most of the settings
for(i = 0; i < axNames.length; i++) { for(i = 0; i < axNames.length; i++) {
axName = axNames[i]; axName = axNames[i];
axId = name2id(axName);
axLetter = axName.charAt(0); axLetter = axName.charAt(0);
if(!Lib.isPlainObject(layoutIn[axName])) { if(!Lib.isPlainObject(layoutIn[axName])) {
@ -57273,20 +57327,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
axLayoutIn = layoutIn[axName]; axLayoutIn = layoutIn[axName];
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis'); axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
newAxLayoutOut();
var traces = ax2traces[axName] || [];
axLayoutOut._traceIndices = traces.map(function(t) { return t._expandedIndex; });
axLayoutOut._annIndices = [];
axLayoutOut._shapeIndices = [];
axLayoutOut._imgIndices = [];
axLayoutOut._subplotsWith = [];
axLayoutOut._counterAxes = [];
// set up some private properties
axLayoutOut._name = axLayoutOut._attr = axName;
var id = axLayoutOut._id = name2id(axName);
var overlayableAxes = getOverlayableAxes(axLetter, axName);
var visibleDflt = var visibleDflt =
(axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) || (axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) ||
@ -57304,13 +57345,13 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
font: layoutOut.font, font: layoutOut.font,
outerTicks: outerTicks[axName], outerTicks: outerTicks[axName],
showGrid: !noGrids[axName], showGrid: !noGrids[axName],
data: traces, data: ax2traces[axName] || [],
bgColor: bgColor, bgColor: bgColor,
calendar: layoutOut.calendar, calendar: layoutOut.calendar,
automargin: true, automargin: true,
visibleDflt: visibleDflt, visibleDflt: visibleDflt,
reverseDflt: reverseDflt, reverseDflt: reverseDflt,
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[id] splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
}; };
coerce('uirevision', layoutOut.uirevision); coerce('uirevision', layoutOut.uirevision);
@ -57336,12 +57377,63 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, { handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
letter: axLetter, letter: axLetter,
counterAxes: counterAxes[axLetter], counterAxes: counterAxes[axLetter],
overlayableAxes: overlayableAxes, overlayableAxes: getOverlayableAxes(axLetter, axName),
grid: layoutOut.grid grid: layoutOut.grid
}); });
coerce('title.standoff'); coerce('title.standoff');
addMissingMatchedAxis();
axLayoutOut._input = axLayoutIn;
}
// coerce the 'missing' axes
i = 0;
while(i < missingMatchedAxisIds.length) {
axId = missingMatchedAxisIds[i++];
axName = id2name(axId);
axLetter = axName.charAt(0);
if(!Lib.isPlainObject(layoutIn[axName])) {
layoutIn[axName] = {};
}
axLayoutIn = layoutIn[axName];
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
newAxLayoutOut();
var defaultOptions2 = {
letter: axLetter,
font: layoutOut.font,
outerTicks: outerTicks[axName],
showGrid: !noGrids[axName],
data: [],
bgColor: bgColor,
calendar: layoutOut.calendar,
automargin: true,
visibleDflt: false,
reverseDflt: false,
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
};
coerce('uirevision', layoutOut.uirevision);
axLayoutOut.type = missingMatchedAxisIdsLookup[axId] || 'linear';
handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions2, layoutOut);
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
letter: axLetter,
counterAxes: counterAxes[axLetter],
overlayableAxes: getOverlayableAxes(axLetter, axName),
grid: layoutOut.grid
});
coerce('fixedrange');
addMissingMatchedAxis();
axLayoutOut._input = axLayoutIn; axLayoutOut._input = axLayoutIn;
} }
@ -57392,9 +57484,12 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var constraintGroups = layoutOut._axisConstraintGroups = []; var constraintGroups = layoutOut._axisConstraintGroups = [];
// similar to _axisConstraintGroups, but for matching axes // similar to _axisConstraintGroups, but for matching axes
var matchGroups = layoutOut._axisMatchGroups = []; var matchGroups = layoutOut._axisMatchGroups = [];
// make sure to include 'missing' axes here
var allAxisIdsIncludingMissing = allAxisIds.concat(missingMatchedAxisIds);
var axNamesIncludingMissing = axNames.concat(Lib.simpleMap(missingMatchedAxisIds, id2name));
for(i = 0; i < axNames.length; i++) { for(i = 0; i < axNamesIncludingMissing.length; i++) {
axName = axNames[i]; axName = axNamesIncludingMissing[i];
axLetter = axName.charAt(0); axLetter = axName.charAt(0);
axLayoutIn = layoutIn[axName]; axLayoutIn = layoutIn[axName];
axLayoutOut = layoutOut[axName]; axLayoutOut = layoutOut[axName];
@ -57402,15 +57497,19 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var scaleanchorDflt; var scaleanchorDflt;
if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) { if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) {
scaleanchorDflt = axLayoutOut.anchor; scaleanchorDflt = axLayoutOut.anchor;
} else {scaleanchorDflt = undefined;} } else {
scaleanchorDflt = undefined;
}
var constrainDflt; var constrainDflt;
if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) { if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) {
constrainDflt = 'domain'; constrainDflt = 'domain';
} else {constrainDflt = undefined;} } else {
constrainDflt = undefined;
}
handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, { handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, {
allAxisIds: allAxisIds, allAxisIds: allAxisIdsIncludingMissing,
layoutOut: layoutOut, layoutOut: layoutOut,
scaleanchorDflt: scaleanchorDflt, scaleanchorDflt: scaleanchorDflt,
constrainDflt: constrainDflt constrainDflt: constrainDflt
@ -57421,7 +57520,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
var group = matchGroups[i]; var group = matchGroups[i];
var rng = null; var rng = null;
var autorange = null; var autorange = null;
var axId;
// find 'matching' range attrs // find 'matching' range attrs
for(axId in group) { for(axId in group) {
@ -57474,7 +57572,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
} }
}; };
},{"../../components/color":51,"../../lib":169,"../../plot_api/plot_template":203,"../../registry":258,"../layout_attributes":243,"./axis_defaults":215,"./axis_ids":216,"./constraints":220,"./layout_attributes":225,"./position_defaults":228,"./type_defaults":236}],227:[function(_dereq_,module,exports){ },{"../../components/color":51,"../../lib":169,"../../plot_api/plot_template":203,"../../registry":258,"../layout_attributes":243,"./axis_defaults":215,"./axis_ids":216,"./constants":219,"./constraints":220,"./layout_attributes":225,"./position_defaults":228,"./type_defaults":236}],227:[function(_dereq_,module,exports){
/** /**
* Copyright 2012-2020, Plotly, Inc. * Copyright 2012-2020, Plotly, Inc.
* All rights reserved. * All rights reserved.
@ -62140,10 +62238,13 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
var subplots = layout._subplots; var subplots = layout._subplots;
var subplotId = ''; var subplotId = '';
// TODO - currently if we draw an empty gl2d subplot, it draws if(
// nothing then gets stuck and you can't get it back without newPlot visible ||
// sort this out in the regl refactor? but for now just drop empty gl2d subplots basePlotModule.name !== 'gl2d' // for now just drop empty gl2d subplots
if(basePlotModule.name !== 'gl2d' || visible) { // TODO - currently if we draw an empty gl2d subplot, it draws
// nothing then gets stuck and you can't get it back without newPlot
// sort this out in the regl refactor?
) {
if(Array.isArray(subplotAttr)) { if(Array.isArray(subplotAttr)) {
for(i = 0; i < subplotAttr.length; i++) { for(i = 0; i < subplotAttr.length; i++) {
var attri = subplotAttr[i]; var attri = subplotAttr[i];
@ -63802,7 +63903,7 @@ plots.doCalcdata = function(gd, traces) {
calcdata[i] = cd; calcdata[i] = cd;
} }
setupAxisCategories(axList, fullData); setupAxisCategories(axList, fullData, fullLayout);
// 'transform' loop - must calc container traces first // 'transform' loop - must calc container traces first
// so that if their dependent traces can get transform properly // so that if their dependent traces can get transform properly
@ -63810,7 +63911,7 @@ plots.doCalcdata = function(gd, traces) {
for(i = 0; i < fullData.length; i++) transformCalci(i); for(i = 0; i < fullData.length; i++) transformCalci(i);
// clear stuff that should recomputed in 'regular' loop // clear stuff that should recomputed in 'regular' loop
if(hasCalcTransform) setupAxisCategories(axList, fullData); if(hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout);
// 'regular' loop - make sure container traces (eg carpet) calc before // 'regular' loop - make sure container traces (eg carpet) calc before
// contained traces (eg contourcarpet) // contained traces (eg contourcarpet)
@ -64015,13 +64116,31 @@ function sortAxisCategoriesByValue(axList, gd) {
return affectedTraces; return affectedTraces;
} }
function setupAxisCategories(axList, fullData) { function setupAxisCategories(axList, fullData, fullLayout) {
for(var i = 0; i < axList.length; i++) { var axLookup = {};
var ax = axList[i]; var i, ax, axId;
for(i = 0; i < axList.length; i++) {
ax = axList[i];
axId = ax._id;
ax.clearCalc(); ax.clearCalc();
if(ax.type === 'multicategory') { if(ax.type === 'multicategory') {
ax.setupMultiCategory(fullData); ax.setupMultiCategory(fullData);
} }
axLookup[ax._id] = 1;
}
// look into match groups for 'missing' axes
var matchGroups = fullLayout._axisMatchGroups || [];
for(i = 0; i < matchGroups.length; i++) {
for(axId in matchGroups[i]) {
if(!axLookup[axId]) {
ax = fullLayout[axisIDs.id2name(axId)];
ax.clearCalc();
}
}
} }
} }
@ -69907,7 +70026,12 @@ function hoverOnBars(pointData, xval, yval, hovermode) {
var s = di[sizeLetter]; var s = di[sizeLetter];
if(isWaterfall) { if(isWaterfall) {
s += Math.abs(di.rawS || 0); var rawS = Math.abs(di.rawS) || 0;
if(v > 0) {
s += rawS;
} else if(v < 0) {
s -= rawS;
}
} }
// add a gradient so hovering near the end of a // add a gradient so hovering near the end of a
@ -70294,6 +70418,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
!isNumeric(y0) || !isNumeric(y0) ||
!isNumeric(y1) !isNumeric(y1)
); );
// display zeros if line.width > 0 // display zeros if line.width > 0
if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) { if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) {
isBlank = false; isBlank = false;
@ -70303,6 +70428,9 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
if(isBlank && isHorizontal) x1 = x0; if(isBlank && isHorizontal) x1 = x0;
if(isBlank && !isHorizontal) y1 = y0; if(isBlank && !isHorizontal) y1 = y0;
var spansHorizontal = isHorizontal && (x0 !== x1);
var spansVertical = !isHorizontal && (y0 !== y1);
// in waterfall mode `between` we need to adjust bar end points to match the connector width // in waterfall mode `between` we need to adjust bar end points to match the connector width
if(adjustPixel && !isBlank) { if(adjustPixel && !isBlank) {
if(isHorizontal) { if(isHorizontal) {
@ -70357,10 +70485,15 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
var op = Color.opacity(mc); var op = Color.opacity(mc);
var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible; var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible;
x0 = fixpx(x0, x1);
x1 = fixpx(x1, x0); if(spansHorizontal) {
y0 = fixpx(y0, y1); x0 = fixpx(x0, x1);
y1 = fixpx(y1, y0); x1 = fixpx(x1, x0);
}
if(spansVertical) {
y0 = fixpx(y0, y1);
y1 = fixpx(y1, y0);
}
} }
var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback); var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback);

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,417 @@
/*!
* pulltorefreshjs v0.1.20
* (c) Rafael Soto
* Released under the MIT License.
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = global || self, global.PullToRefresh = factory());
}(this, function () { 'use strict';
var _shared = {
pullStartY: null,
pullMoveY: null,
handlers: [],
styleEl: null,
events: null,
dist: 0,
state: 'pending',
timeout: null,
distResisted: 0,
supportsPassive: false,
supportsPointerEvents: !!window.PointerEvent
};
try {
window.addEventListener('test', null, {
get passive() {
// eslint-disable-line getter-return
_shared.supportsPassive = true;
}
});
} catch (e) {// do nothing
}
function setupDOM(handler) {
if (!handler.ptrElement) {
var ptr = document.createElement('div');
if (handler.mainElement !== document.body) {
handler.mainElement.parentNode.insertBefore(ptr, handler.mainElement);
} else {
document.body.insertBefore(ptr, document.body.firstChild);
}
ptr.classList.add(((handler.classPrefix) + "ptr"));
ptr.innerHTML = handler.getMarkup().replace(/__PREFIX__/g, handler.classPrefix);
handler.ptrElement = ptr;
if (typeof handler.onInit === 'function') {
handler.onInit(handler);
} // Add the css styles to the style node, and then
// insert it into the dom
if (!_shared.styleEl) {
_shared.styleEl = document.createElement('style');
_shared.styleEl.setAttribute('id', 'pull-to-refresh-js-style');
document.head.appendChild(_shared.styleEl);
}
_shared.styleEl.textContent = handler.getStyles().replace(/__PREFIX__/g, handler.classPrefix).replace(/\s+/g, ' ');
}
return handler;
}
function onReset(handler) {
handler.ptrElement.classList.remove(((handler.classPrefix) + "refresh"));
handler.ptrElement.style[handler.cssProp] = '0px';
setTimeout(function () {
// remove previous ptr-element from DOM
if (handler.ptrElement && handler.ptrElement.parentNode) {
handler.ptrElement.parentNode.removeChild(handler.ptrElement);
handler.ptrElement = null;
} // reset state
_shared.state = 'pending';
}, handler.refreshTimeout);
}
function update(handler) {
var iconEl = handler.ptrElement.querySelector(("." + (handler.classPrefix) + "icon"));
var textEl = handler.ptrElement.querySelector(("." + (handler.classPrefix) + "text"));
if (iconEl) {
if (_shared.state === 'refreshing') {
iconEl.innerHTML = handler.iconRefreshing;
} else {
iconEl.innerHTML = handler.iconArrow;
}
}
if (textEl) {
if (_shared.state === 'releasing') {
textEl.innerHTML = handler.instructionsReleaseToRefresh;
}
if (_shared.state === 'pulling' || _shared.state === 'pending') {
textEl.innerHTML = handler.instructionsPullToRefresh;
}
if (_shared.state === 'refreshing') {
textEl.innerHTML = handler.instructionsRefreshing;
}
}
}
var _ptr = {
setupDOM: setupDOM,
onReset: onReset,
update: update
};
var _timeout;
var screenY = function screenY(event) {
if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {
return event.screenY;
}
return event.touches[0].screenY;
};
var _setupEvents = (function () {
var _el;
function _onTouchStart(e) {
// here, we must pick a handler first, and then append their html/css on the DOM
var target = _shared.handlers.filter(function (h) { return h.contains(e.target); })[0];
_shared.enable = !!target;
if (target && _shared.state === 'pending') {
_el = _ptr.setupDOM(target);
if (target.shouldPullToRefresh()) {
_shared.pullStartY = screenY(e);
}
clearTimeout(_shared.timeout);
_ptr.update(target);
}
}
function _onTouchMove(e) {
if (!(_el && _el.ptrElement && _shared.enable)) {
return;
}
if (!_shared.pullStartY) {
if (_el.shouldPullToRefresh()) {
_shared.pullStartY = screenY(e);
}
} else {
_shared.pullMoveY = screenY(e);
}
if (_shared.state === 'refreshing') {
if (e.cancelable && _el.shouldPullToRefresh() && _shared.pullStartY < _shared.pullMoveY) {
e.preventDefault();
}
return;
}
if (_shared.state === 'pending') {
_el.ptrElement.classList.add(((_el.classPrefix) + "pull"));
_shared.state = 'pulling';
_ptr.update(_el);
}
if (_shared.pullStartY && _shared.pullMoveY) {
_shared.dist = _shared.pullMoveY - _shared.pullStartY;
}
_shared.distExtra = _shared.dist - _el.distIgnore;
if (_shared.distExtra > 0) {
if (e.cancelable) {
e.preventDefault();
}
_el.ptrElement.style[_el.cssProp] = (_shared.distResisted) + "px";
_shared.distResisted = _el.resistanceFunction(_shared.distExtra / _el.distThreshold) * Math.min(_el.distMax, _shared.distExtra);
if (_shared.state === 'pulling' && _shared.distResisted > _el.distThreshold) {
_el.ptrElement.classList.add(((_el.classPrefix) + "release"));
_shared.state = 'releasing';
_ptr.update(_el);
}
if (_shared.state === 'releasing' && _shared.distResisted < _el.distThreshold) {
_el.ptrElement.classList.remove(((_el.classPrefix) + "release"));
_shared.state = 'pulling';
_ptr.update(_el);
}
}
}
function _onTouchEnd() {
if (!(_el && _el.ptrElement && _shared.enable)) {
return;
} // wait 1/2 sec before unmounting...
clearTimeout(_timeout);
_timeout = setTimeout(function () {
if (_el && _el.ptrElement && _shared.state === 'pending') {
_ptr.onReset(_el);
}
}, 500);
if (_shared.state === 'releasing' && _shared.distResisted > _el.distThreshold) {
_shared.state = 'refreshing';
_el.ptrElement.style[_el.cssProp] = (_el.distReload) + "px";
_el.ptrElement.classList.add(((_el.classPrefix) + "refresh"));
_shared.timeout = setTimeout(function () {
var retval = _el.onRefresh(function () { return _ptr.onReset(_el); });
if (retval && typeof retval.then === 'function') {
retval.then(function () { return _ptr.onReset(_el); });
}
if (!retval && !_el.onRefresh.length) {
_ptr.onReset(_el);
}
}, _el.refreshTimeout);
} else {
if (_shared.state === 'refreshing') {
return;
}
_el.ptrElement.style[_el.cssProp] = '0px';
_shared.state = 'pending';
}
_ptr.update(_el);
_el.ptrElement.classList.remove(((_el.classPrefix) + "release"));
_el.ptrElement.classList.remove(((_el.classPrefix) + "pull"));
_shared.pullStartY = _shared.pullMoveY = null;
_shared.dist = _shared.distResisted = 0;
}
function _onScroll() {
if (_el) {
_el.mainElement.classList.toggle(((_el.classPrefix) + "top"), _el.shouldPullToRefresh());
}
}
var _passiveSettings = _shared.supportsPassive ? {
passive: _shared.passive || false
} : undefined;
if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {
window.addEventListener('pointerup', _onTouchEnd);
window.addEventListener('pointerdown', _onTouchStart);
window.addEventListener('pointermove', _onTouchMove, _passiveSettings);
} else {
window.addEventListener('touchend', _onTouchEnd);
window.addEventListener('touchstart', _onTouchStart);
window.addEventListener('touchmove', _onTouchMove, _passiveSettings);
}
window.addEventListener('scroll', _onScroll);
return {
onTouchEnd: _onTouchEnd,
onTouchStart: _onTouchStart,
onTouchMove: _onTouchMove,
onScroll: _onScroll,
destroy: function destroy() {
if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {
window.removeEventListener('pointerdown', _onTouchStart);
window.removeEventListener('pointerup', _onTouchEnd);
window.removeEventListener('pointermove', _onTouchMove, _passiveSettings);
} else {
window.removeEventListener('touchstart', _onTouchStart);
window.removeEventListener('touchend', _onTouchEnd);
window.removeEventListener('touchmove', _onTouchMove, _passiveSettings);
}
window.removeEventListener('scroll', _onScroll);
}
};
});
var _ptrMarkup = "\n<div class=\"__PREFIX__box\">\n <div class=\"__PREFIX__content\">\n <div class=\"__PREFIX__icon\"></div>\n <div class=\"__PREFIX__text\"></div>\n </div>\n</div>\n";
var _ptrStyles = "\n.__PREFIX__ptr {\n box-shadow: inset 0 -3px 5px rgba(0, 0, 0, 0.12);\n pointer-events: none;\n font-size: 0.85em;\n font-weight: bold;\n top: 0;\n height: 0;\n transition: height 0.3s, min-height 0.3s;\n text-align: center;\n width: 100%;\n overflow: hidden;\n display: flex;\n align-items: flex-end;\n align-content: stretch;\n}\n\n.__PREFIX__box {\n padding: 10px;\n flex-basis: 100%;\n}\n\n.__PREFIX__pull {\n transition: none;\n}\n\n.__PREFIX__text {\n margin-top: .33em;\n color: rgba(0, 0, 0, 0.3);\n}\n\n.__PREFIX__icon {\n color: rgba(0, 0, 0, 0.3);\n transition: transform .3s;\n}\n\n/*\nWhen at the top of the page, disable vertical overscroll so passive touch\nlisteners can take over.\n*/\n.__PREFIX__top {\n touch-action: pan-x pan-down pinch-zoom;\n}\n\n.__PREFIX__release .__PREFIX__icon {\n transform: rotate(180deg);\n}\n";
var _defaults = {
distThreshold: 60,
distMax: 80,
distReload: 50,
distIgnore: 0,
mainElement: 'body',
triggerElement: 'body',
ptrElement: '.ptr',
classPrefix: 'ptr--',
cssProp: 'min-height',
iconArrow: '&#8675;',
iconRefreshing: '&hellip;',
instructionsPullToRefresh: 'Pull down to refresh',
instructionsReleaseToRefresh: 'Release to refresh',
instructionsRefreshing: 'Refreshing',
refreshTimeout: 500,
getMarkup: function () { return _ptrMarkup; },
getStyles: function () { return _ptrStyles; },
onInit: function () {},
onRefresh: function () { return location.reload(); },
resistanceFunction: function (t) { return Math.min(1, t / 2.5); },
shouldPullToRefresh: function () { return !window.scrollY; }
};
var _methods = ['mainElement', 'ptrElement', 'triggerElement'];
var _setupHandler = (function (options) {
var _handler = {}; // merge options with defaults
Object.keys(_defaults).forEach(function (key) {
_handler[key] = options[key] || _defaults[key];
}); // normalize timeout value, even if it is zero
_handler.refreshTimeout = typeof options.refreshTimeout === 'number' ? options.refreshTimeout : _defaults.refreshTimeout; // normalize elements
_methods.forEach(function (method) {
if (typeof _handler[method] === 'string') {
_handler[method] = document.querySelector(_handler[method]);
}
}); // attach events lazily
if (!_shared.events) {
_shared.events = _setupEvents();
}
_handler.contains = function (target) {
return _handler.triggerElement.contains(target);
};
_handler.destroy = function () {
// stop pending any pending callbacks
clearTimeout(_shared.timeout); // remove handler from shared state
var offset = _shared.handlers.indexOf(_handler);
_shared.handlers.splice(offset, 1);
};
return _handler;
});
var index = {
setPassiveMode: function setPassiveMode(isPassive) {
_shared.passive = isPassive;
},
setPointerEventsMode: function setPointerEventsMode(isEnabled) {
_shared.pointerEventsEnabled = isEnabled;
},
destroyAll: function destroyAll() {
if (_shared.events) {
_shared.events.destroy();
_shared.events = null;
}
_shared.handlers.forEach(function (h) {
h.destroy();
});
},
init: function init(options) {
if ( options === void 0 ) options = {};
var handler = _setupHandler(options);
_shared.handlers.push(handler);
return handler;
},
// export utils for testing
_: {
setupHandler: _setupHandler,
setupEvents: _setupEvents,
setupDOM: _ptr.setupDOM,
onReset: _ptr.onReset,
update: _ptr.update
}
};
return index;
}));
/*! /*!
* jQuery JavaScript Library v3.4.1 * jQuery JavaScript Library v3.4.1
* https://jquery.com/ * https://jquery.com/

Binary file not shown.

File diff suppressed because one or more lines are too long