mirror of https://github.com/snachodog/mybuddy.git
Update NPM dependencies and static assets
This commit is contained in:
parent
2bde57cc32
commit
ad9cfea541
|
@ -24,17 +24,17 @@
|
|||
}
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz",
|
||||
"integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz",
|
||||
"integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.8.3",
|
||||
"@babel/generator": "^7.8.3",
|
||||
"@babel/helpers": "^7.8.3",
|
||||
"@babel/parser": "^7.8.3",
|
||||
"@babel/generator": "^7.8.4",
|
||||
"@babel/helpers": "^7.8.4",
|
||||
"@babel/parser": "^7.8.4",
|
||||
"@babel/template": "^7.8.3",
|
||||
"@babel/traverse": "^7.8.3",
|
||||
"@babel/traverse": "^7.8.4",
|
||||
"@babel/types": "^7.8.3",
|
||||
"convert-source-map": "^1.7.0",
|
||||
"debug": "^4.1.0",
|
||||
|
@ -73,9 +73,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz",
|
||||
"integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
|
||||
"integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.8.3",
|
||||
|
@ -122,13 +122,13 @@
|
|||
}
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz",
|
||||
"integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
|
||||
"integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/template": "^7.8.3",
|
||||
"@babel/traverse": "^7.8.3",
|
||||
"@babel/traverse": "^7.8.4",
|
||||
"@babel/types": "^7.8.3"
|
||||
}
|
||||
},
|
||||
|
@ -144,15 +144,15 @@
|
|||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz",
|
||||
"integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
|
||||
"integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz",
|
||||
"integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz",
|
||||
"integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.2"
|
||||
|
@ -170,16 +170,16 @@
|
|||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz",
|
||||
"integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
|
||||
"integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@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-split-export-declaration": "^7.8.3",
|
||||
"@babel/parser": "^7.8.3",
|
||||
"@babel/parser": "^7.8.4",
|
||||
"@babel/types": "^7.8.3",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0",
|
||||
|
@ -1012,9 +1012,9 @@
|
|||
}
|
||||
},
|
||||
"bail": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz",
|
||||
"integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
|
||||
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
|
@ -1224,14 +1224,14 @@
|
|||
}
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.5.tgz",
|
||||
"integrity": "sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg==",
|
||||
"version": "4.8.6",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz",
|
||||
"integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001022",
|
||||
"electron-to-chromium": "^1.3.338",
|
||||
"node-releases": "^1.1.46"
|
||||
"caniuse-lite": "^1.0.30001023",
|
||||
"electron-to-chromium": "^1.3.341",
|
||||
"node-releases": "^1.1.47"
|
||||
}
|
||||
},
|
||||
"buble": {
|
||||
|
@ -1350,9 +1350,9 @@
|
|||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001022",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001022.tgz",
|
||||
"integrity": "sha512-FjwPPtt/I07KyLPkBQ0g7/XuZg6oUkYBVnPHNj3VHJbOjmmJ/GdSo/GUY6MwINEQvjhP6WZVbX8Tvms8xh0D5A==",
|
||||
"version": "1.0.30001025",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz",
|
||||
"integrity": "sha512-SKyFdHYfXUZf5V85+PJgLYyit27q4wgvZuf8QTOk1osbypcROihMBlx9GRar2/pIcKH2r4OehdlBr9x6PXetAQ==",
|
||||
"dev": true
|
||||
},
|
||||
"canvas-fit": {
|
||||
|
@ -1381,9 +1381,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"ccount": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz",
|
||||
"integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz",
|
||||
"integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==",
|
||||
"dev": true
|
||||
},
|
||||
"cdt2d": {
|
||||
|
@ -2629,9 +2629,9 @@
|
|||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.340",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.340.tgz",
|
||||
"integrity": "sha512-hRFBAglhcj5iVYH+o8QU0+XId1WGoc0VGowJB1cuJAt3exHGrivZvWeAO5BRgBZqwZtwxjm8a5MQeGoT/Su3ww==",
|
||||
"version": "1.3.345",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz",
|
||||
"integrity": "sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg==",
|
||||
"dev": true
|
||||
},
|
||||
"element-size": {
|
||||
|
@ -2641,9 +2641,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"elementary-circuits-directed-graph": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.4.tgz",
|
||||
"integrity": "sha512-+xpVxSimU+fcHiTRPWrRN1IFOKaygwotCtZGSBle/rnFaFAoI+4Y8/pimAY1cKiDIHTek2Zox1R7SEQAB/AQ1g==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.2.0.tgz",
|
||||
"integrity": "sha512-eOQofnrNqebPtC29PvyNMGUBdMrIw5i8nOoC/2VOlSF84tf5+ZXnRkIk7TgdT22jFXK68CC7aA881KRmNYf/Pg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"strongly-connected-components": "^1.0.1"
|
||||
|
@ -2774,9 +2774,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"escodegen": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz",
|
||||
"integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
|
||||
"integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esprima": "^4.0.1",
|
||||
|
@ -4210,9 +4210,9 @@
|
|||
}
|
||||
},
|
||||
"gl-mesh3d": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.2.0.tgz",
|
||||
"integrity": "sha512-wO6EKjBUo/k7ZLGsMACWGETjmjfsGwwoDWEKjDbjyjo1qPvgkTQQB9Y8p+OKGjE6GeihsfQuoqGBUTu9tiAOmg==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.3.0.tgz",
|
||||
"integrity": "sha512-iKx3v0xB/6Kej+GpMHhxzW6ziqiIjp6WOyAbuXvBRN9P5iIgzifgBYnDd1mYmCLWGmf85MCki/FvD223BOYFxg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"barycentric": "^1.0.1",
|
||||
|
@ -4233,14 +4233,14 @@
|
|||
}
|
||||
},
|
||||
"gl-plot2d": {
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.2.tgz",
|
||||
"integrity": "sha512-YLFiu/vgDCYZ/Qnz0wn0gV60IYCtImSnx0OTMsZ5fP1XZAhFztrRb2fJfnjfEVe15yZ+G+9zJ36RlWmJsNQYjQ==",
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/gl-plot2d/-/gl-plot2d-1.4.3.tgz",
|
||||
"integrity": "sha512-Ei6WC/SzQ7/qld8MMv7sWrFSdkq8/n7Xmdvj7sbwUkgsJirfknKfeq4DCwaMn9vD2rHOLmdT0NMW+HPrLKSeWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"binary-search-bounds": "^2.0.4",
|
||||
"gl-buffer": "^2.1.2",
|
||||
"gl-select-static": "^2.0.4",
|
||||
"gl-select-static": "^2.0.5",
|
||||
"gl-shader": "^4.2.1",
|
||||
"glsl-inverse": "^1.0.0",
|
||||
"glslify": "^7.0.0",
|
||||
|
@ -4248,9 +4248,9 @@
|
|||
}
|
||||
},
|
||||
"gl-plot3d": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.0.tgz",
|
||||
"integrity": "sha512-ZPs7gvWaCqK99GXoB0XJTMTLpChB/CiDUt3MthIawVlFhknSJLNPAJSbUU3f4pWzKCbbGtVARQr/i6XdM3MnKA==",
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/gl-plot3d/-/gl-plot3d-2.4.4.tgz",
|
||||
"integrity": "sha512-R/V4hSrE2sFD+Xls7D6qCOlWCRmqtUff0sKbeFJdI91HfFzPJPiy9Pqa/Jh2UsvdmwkkSQPNDcBvLd6TvhRC/g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"3d-view": "^2.0.0",
|
||||
|
@ -4263,7 +4263,7 @@
|
|||
"gl-spikes3d": "^1.0.9",
|
||||
"glslify": "^7.0.0",
|
||||
"has-passive-events": "^1.0.0",
|
||||
"is-mobile": "^2.1.0",
|
||||
"is-mobile": "^2.2.0",
|
||||
"mouse-change": "^1.4.0",
|
||||
"mouse-event-offset": "^3.0.2",
|
||||
"mouse-wheel": "^1.2.0",
|
||||
|
@ -4323,9 +4323,9 @@
|
|||
}
|
||||
},
|
||||
"gl-select-static": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.4.tgz",
|
||||
"integrity": "sha512-4Kqx5VjeT8nmV+j6fry3UBFNL2B7ktQU4o508QGVPKWCILlV44rTDq3mnBFThup8rMIH9kJQx6xWsg9jTmfeMw==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/gl-select-static/-/gl-select-static-2.0.5.tgz",
|
||||
"integrity": "sha512-8H1M9ipHNsrVh8UjUmTv1xhhYjYzMnawAnw3n715Dh4DDoW32F3oBi80ev5qbJtQlvHrNkhHKuoMCJKBjfIt4g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bit-twiddle": "^1.0.2",
|
||||
|
@ -5658,9 +5658,9 @@
|
|||
}
|
||||
},
|
||||
"is-alphabetical": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz",
|
||||
"integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
|
||||
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"is-alphanumeric": {
|
||||
|
@ -5670,9 +5670,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"is-alphanumerical": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz",
|
||||
"integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
|
||||
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-alphabetical": "^1.0.0",
|
||||
|
@ -5766,9 +5766,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"is-decimal": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz",
|
||||
"integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
|
||||
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-descriptor": {
|
||||
|
@ -5842,9 +5842,9 @@
|
|||
}
|
||||
},
|
||||
"is-hexadecimal": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz",
|
||||
"integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
|
||||
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-iexplorer": {
|
||||
|
@ -5854,9 +5854,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"is-mobile": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.1.0.tgz",
|
||||
"integrity": "sha512-M5OhlZwh+aTlmRUvDg0Wq3uWVNa+w4DyZ2SjbrS+BhSLu9Po+JXHendC305ZEu+Hh7lywb19Zu4kYXu3L1Oo8A==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.0.tgz",
|
||||
"integrity": "sha512-K0DmUqaZqYl6M8ej536uJYAQaBkx+qWph7xl1KRBr31UiGUT0MoFWUoqnIxzXnIeolnK8bkxtKXkZNL6HfSHhQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-negated-glob": {
|
||||
|
@ -5999,9 +5999,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"is-whitespace-character": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz",
|
||||
"integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
|
||||
"integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
|
||||
"dev": true
|
||||
},
|
||||
"is-windows": {
|
||||
|
@ -6011,9 +6011,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"is-word-character": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz",
|
||||
"integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
|
||||
"integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
|
||||
"dev": true
|
||||
},
|
||||
"isarray": {
|
||||
|
@ -6140,9 +6140,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"known-css-properties": {
|
||||
"version": "0.17.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.17.0.tgz",
|
||||
"integrity": "sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==",
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz",
|
||||
"integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==",
|
||||
"dev": true
|
||||
},
|
||||
"last-run": {
|
||||
|
@ -6272,24 +6272,6 @@
|
|||
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
|
||||
"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": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
|
||||
|
@ -6319,9 +6301,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"longest-streak": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz",
|
||||
"integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
|
||||
"integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
|
||||
"dev": true
|
||||
},
|
||||
"loud-rejection": {
|
||||
|
@ -6984,9 +6966,9 @@
|
|||
}
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "1.1.47",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz",
|
||||
"integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==",
|
||||
"version": "1.1.48",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.48.tgz",
|
||||
"integrity": "sha512-Hr8BbmUl1ujAST0K0snItzEA5zkJTQup8VNTKNfT6Zw8vTJkIiagUPNfxHmgDOyfFYNfKAul40sD0UEYTvwebw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"semver": "^6.3.0"
|
||||
|
@ -7650,9 +7632,9 @@
|
|||
}
|
||||
},
|
||||
"plotly.js": {
|
||||
"version": "1.52.1",
|
||||
"resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.52.1.tgz",
|
||||
"integrity": "sha512-GLNwAu20zwRZrfjrSRUZHXyDulDRh1yfPBV5SLqy5AdGefb6CK2QCBbMcGlhV2P14oJwQ8vd1wqTZVZE9xQ9Rw==",
|
||||
"version": "1.52.2",
|
||||
"resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.52.2.tgz",
|
||||
"integrity": "sha512-EZHr2ekxVNjucmNhku+JiLFoLV1wH6gW15T/6SFqtHFMvJZY4HeZogtRUPTLijXBPfusMWxxIKEDTzlMOLXajQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@plotly/d3-sankey": "0.7.2",
|
||||
|
@ -7668,8 +7650,8 @@
|
|||
"country-regex": "^1.1.0",
|
||||
"d3": "^3.5.12",
|
||||
"d3-force": "^1.0.6",
|
||||
"d3-hierarchy": "^1.1.8",
|
||||
"d3-interpolate": "1",
|
||||
"d3-hierarchy": "^1.1.9",
|
||||
"d3-interpolate": "^1.4.0",
|
||||
"delaunay-triangulate": "^1.1.6",
|
||||
"es6-promise": "^3.0.2",
|
||||
"fast-isnumeric": "^1.1.3",
|
||||
|
@ -7679,9 +7661,9 @@
|
|||
"gl-heatmap2d": "^1.0.5",
|
||||
"gl-line3d": "^1.1.11",
|
||||
"gl-mat4": "^1.2.0",
|
||||
"gl-mesh3d": "^2.2.0",
|
||||
"gl-plot2d": "^1.4.2",
|
||||
"gl-plot3d": "^2.3.0",
|
||||
"gl-mesh3d": "^2.3.0",
|
||||
"gl-plot2d": "^1.4.3",
|
||||
"gl-plot3d": "^2.4.2",
|
||||
"gl-pointcloud2d": "^1.0.2",
|
||||
"gl-scatter3d": "^1.2.2",
|
||||
"gl-select-box": "^1.0.3",
|
||||
|
@ -7692,6 +7674,7 @@
|
|||
"glslify": "^7.0.0",
|
||||
"has-hover": "^1.0.1",
|
||||
"has-passive-events": "^1.0.0",
|
||||
"is-mobile": "^2.1.0",
|
||||
"mapbox-gl": "1.3.2",
|
||||
"matrix-camera-controller": "^2.1.3",
|
||||
"mouse-change": "^1.4.0",
|
||||
|
@ -7961,12 +7944,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"postcss-safe-parser": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
|
||||
"integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
|
||||
"integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss": "^7.0.0"
|
||||
"postcss": "^7.0.26"
|
||||
}
|
||||
},
|
||||
"postcss-sass": {
|
||||
|
@ -9435,9 +9418,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"state-toggle": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz",
|
||||
"integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==",
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
|
||||
"integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==",
|
||||
"dev": true
|
||||
},
|
||||
"static-eval": {
|
||||
|
@ -9771,12 +9754,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"stylelint": {
|
||||
"version": "13.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.0.0.tgz",
|
||||
"integrity": "sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg==",
|
||||
"version": "13.1.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.1.0.tgz",
|
||||
"integrity": "sha512-Ei+nCSQTyZYrsLSUIxq48/QfzCQD9r9sQiBqy7Z4IpIMcj+E0R6b0CHrSFeE7jNgREpBfJKJd6DpstuDrwUiew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"autoprefixer": "^9.7.3",
|
||||
"autoprefixer": "^9.7.4",
|
||||
"balanced-match": "^1.0.0",
|
||||
"chalk": "^3.0.0",
|
||||
"cosmiconfig": "^6.0.0",
|
||||
|
@ -9791,17 +9774,17 @@
|
|||
"ignore": "^5.1.4",
|
||||
"import-lazy": "^4.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"known-css-properties": "^0.17.0",
|
||||
"known-css-properties": "^0.18.0",
|
||||
"leven": "^3.1.0",
|
||||
"lodash": "^4.17.15",
|
||||
"log-symbols": "^3.0.0",
|
||||
"mathml-tag-names": "^2.1.1",
|
||||
"mathml-tag-names": "^2.1.3",
|
||||
"meow": "^6.0.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"normalize-selector": "^0.2.0",
|
||||
"postcss": "^7.0.26",
|
||||
"postcss-html": "^0.36.0",
|
||||
"postcss-jsx": "^0.36.3",
|
||||
"postcss-jsx": "^0.36.4",
|
||||
"postcss-less": "^3.1.4",
|
||||
"postcss-markdown": "^0.36.0",
|
||||
"postcss-media-query-parser": "^0.2.3",
|
||||
|
@ -9858,9 +9841,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"camelcase-keys": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.1.tgz",
|
||||
"integrity": "sha512-kEPCddRFChEzO0d6w61yh0WbBiSv9gBnfZWGfXRYPlGqIdIGef6HMR6pgqVSEWCYkrp8B0AtEpEXNY+Jx0xk1A==",
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.2.tgz",
|
||||
"integrity": "sha512-QfFrU0CIw2oltVvpndW32kuJ/9YOJwUnmWrjlXt1nnJZHCaS9i6bfOpg9R4Lw8aZjStkJWM+jc0cdXjWBgVJSw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.3.1",
|
||||
|
@ -10191,9 +10174,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"stylelint-config-recommended-scss": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.1.0.tgz",
|
||||
"integrity": "sha512-4012ca0weVi92epm3RRBRZcRJIyl5vJjJ/tJAKng+Qat5+cnmuCwyOI2vXkKdjNfGd0gvzyKCKEkvTMDcbtd7Q==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.2.0.tgz",
|
||||
"integrity": "sha512-4bI5BYbabo/GCQ6LbRZx/ZlVkK65a1jivNNsD+ix/Lw0U3iAch+jQcvliGnnAX8SUPaZ0UqzNVNNAF3urswa7g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"stylelint-config-recommended": "^3.0.0"
|
||||
|
@ -10211,14 +10194,12 @@
|
|||
}
|
||||
},
|
||||
"stylelint-scss": {
|
||||
"version": "3.13.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.13.0.tgz",
|
||||
"integrity": "sha512-SaLnvQyndaPcsgVJsMh6zJ1uKVzkRZJx+Wg/stzoB1mTBdEmGketbHrGbMQNymzH/0mJ06zDSpeCDvNxqIJE5A==",
|
||||
"version": "3.14.2",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.14.2.tgz",
|
||||
"integrity": "sha512-59/BkIEWyFoORiejDIQB2P2kmg0KcqMn7wtj1y5sRvS4N+Qh+Ng3hbKelOzgS+OM2Ezbai0uEev8xckXxkh9TQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.isboolean": "^3.0.3",
|
||||
"lodash.isregexp": "^4.0.1",
|
||||
"lodash.isstring": "^4.0.1",
|
||||
"lodash": "^4.17.15",
|
||||
"postcss-media-query-parser": "^0.2.3",
|
||||
"postcss-resolve-nested-selector": "^0.1.1",
|
||||
"postcss-selector-parser": "^6.0.2",
|
||||
|
@ -10711,15 +10692,15 @@
|
|||
"dev": true
|
||||
},
|
||||
"trim-trailing-lines": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz",
|
||||
"integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
|
||||
"integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==",
|
||||
"dev": true
|
||||
},
|
||||
"trough": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz",
|
||||
"integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
|
||||
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
|
||||
"dev": true
|
||||
},
|
||||
"true-case-path": {
|
||||
|
@ -10882,13 +10863,13 @@
|
|||
"dev": true
|
||||
},
|
||||
"unherit": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz",
|
||||
"integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
|
||||
"integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.1",
|
||||
"xtend": "^4.0.1"
|
||||
"inherits": "^2.0.0",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
"gulp-uglify": "^3.0.2",
|
||||
"jquery": "^3.4.1",
|
||||
"moment": "^2.24.0",
|
||||
"plotly.js": "^1.52.1",
|
||||
"plotly.js": "^1.52.2",
|
||||
"popper.js": "^1.16.1",
|
||||
"pulltorefreshjs": "^0.1.20",
|
||||
"pump": "^3.0.0",
|
||||
"stylelint": "^13.0.0",
|
||||
"stylelint-config-recommended-scss": "^4.1.0",
|
||||
"stylelint": "^13.1.0",
|
||||
"stylelint-config-recommended-scss": "^4.2.0",
|
||||
"stylelint-order": "^4.0.0",
|
||||
"stylelint-scss": "^3.13.0",
|
||||
"stylelint-scss": "^3.14.2",
|
||||
"tempusdominus-bootstrap-4": "^5.1.2",
|
||||
"tempusdominus-core": "^5.0.3"
|
||||
},
|
||||
|
|
|
@ -7616,6 +7616,11 @@ a.text-error:hover, a.text-error:focus {
|
|||
cursor: pointer;
|
||||
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
|
||||
* 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
Binary file not shown.
|
@ -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);
|
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* plotly.js (cartesian) v1.52.1
|
||||
* plotly.js (cartesian) v1.52.2
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
* Licensed under the MIT license
|
||||
|
@ -34481,7 +34481,7 @@ exports.svgAttrs = {
|
|||
'use strict';
|
||||
|
||||
// package version injected by `npm run preprocess`
|
||||
exports.version = '1.52.1';
|
||||
exports.version = '1.52.2';
|
||||
|
||||
// inject promise polyfill
|
||||
_dereq_('es6-promise').polyfill();
|
||||
|
@ -38068,11 +38068,14 @@ lib.templateString = function(string, obj) {
|
|||
var getterCache = {};
|
||||
|
||||
return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {
|
||||
var v;
|
||||
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 getterCache[key]() || '';
|
||||
return lib.isValidTextValue(v) ? v : '';
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -48258,6 +48261,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
var fullLayout = gd._fullLayout;
|
||||
var axList = Axes.list(gd, '', true);
|
||||
var matchGroups = fullLayout._axisMatchGroups || [];
|
||||
var axLookup = {};
|
||||
var ax;
|
||||
var axRng;
|
||||
|
||||
|
@ -48265,6 +48269,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
ax = axList[i];
|
||||
cleanAxisConstraints(gd, ax);
|
||||
doAutoRange(gd, ax);
|
||||
axLookup[ax._id] = 1;
|
||||
}
|
||||
|
||||
enforceAxisConstraints(gd);
|
||||
|
@ -48277,6 +48282,10 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
|
||||
for(id in group) {
|
||||
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;
|
||||
|
||||
axRng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
|
@ -49154,13 +49163,14 @@ function crawl(objIn, objOut, schema, list, base, path) {
|
|||
var valOut = objOut[k];
|
||||
|
||||
var nestedSchema = getNestedSchema(schema, k);
|
||||
var isInfoArray = (nestedSchema || {}).valType === 'info_array';
|
||||
var isColorscale = (nestedSchema || {}).valType === 'colorscale';
|
||||
var nestedValType = (nestedSchema || {}).valType;
|
||||
var isInfoArray = nestedValType === 'info_array';
|
||||
var isColorscale = nestedValType === 'colorscale';
|
||||
var items = (nestedSchema || {}).items;
|
||||
|
||||
if(!isInSchema(schema, k)) {
|
||||
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);
|
||||
} else if(isInfoArray && isArray(valIn)) {
|
||||
if(valIn.length > valOut.length) {
|
||||
|
@ -51965,10 +51975,14 @@ axes.drawOne = function(gd, ax, opts) {
|
|||
var axId = ax._id;
|
||||
var axLetter = axId.charAt(0);
|
||||
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 mainMirrorPosition = ax._mainMirrorPosition;
|
||||
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
|
||||
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
|
||||
|
||||
var vals = ax._vals = axes.calcTicks(ax);
|
||||
|
||||
|
@ -53927,11 +53941,10 @@ exports.tick0 = function(tick0, axType, calendar, dtick) {
|
|||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var counterRegex = _dereq_('../../lib/regex').counter;
|
||||
|
||||
|
||||
module.exports = {
|
||||
|
||||
idRegex: {
|
||||
x: counterRegex('x'),
|
||||
y: counterRegex('y')
|
||||
|
@ -57121,6 +57134,8 @@ var axisIds = _dereq_('./axis_ids');
|
|||
var id2name = axisIds.id2name;
|
||||
var name2id = axisIds.name2id;
|
||||
|
||||
var AX_ID_PATTERN = _dereq_('./constants').AX_ID_PATTERN;
|
||||
|
||||
var Registry = _dereq_('../../registry');
|
||||
var traceIs = Registry.traceIs;
|
||||
var getComponentMethod = Registry.getComponentMethod;
|
||||
|
@ -57230,7 +57245,28 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
|
||||
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) {
|
||||
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
|
||||
|
@ -57244,9 +57280,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
return (axLetter === 'x') ? yIds : xIds;
|
||||
}
|
||||
|
||||
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
|
||||
var allAxisIds = counterAxes.x.concat(counterAxes.y);
|
||||
|
||||
function getOverlayableAxes(axLetter, axName) {
|
||||
var list = (axLetter === 'x') ? xNames : yNames;
|
||||
var out = [];
|
||||
|
@ -57262,9 +57295,30 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
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
|
||||
for(i = 0; i < axNames.length; i++) {
|
||||
axName = axNames[i];
|
||||
axId = name2id(axName);
|
||||
axLetter = axName.charAt(0);
|
||||
|
||||
if(!Lib.isPlainObject(layoutIn[axName])) {
|
||||
|
@ -57273,20 +57327,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
|
||||
axLayoutIn = layoutIn[axName];
|
||||
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
|
||||
|
||||
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);
|
||||
newAxLayoutOut();
|
||||
|
||||
var visibleDflt =
|
||||
(axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) ||
|
||||
|
@ -57304,13 +57345,13 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
font: layoutOut.font,
|
||||
outerTicks: outerTicks[axName],
|
||||
showGrid: !noGrids[axName],
|
||||
data: traces,
|
||||
data: ax2traces[axName] || [],
|
||||
bgColor: bgColor,
|
||||
calendar: layoutOut.calendar,
|
||||
automargin: true,
|
||||
visibleDflt: visibleDflt,
|
||||
reverseDflt: reverseDflt,
|
||||
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[id]
|
||||
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
|
||||
};
|
||||
|
||||
coerce('uirevision', layoutOut.uirevision);
|
||||
|
@ -57336,12 +57377,63 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
|
||||
letter: axLetter,
|
||||
counterAxes: counterAxes[axLetter],
|
||||
overlayableAxes: overlayableAxes,
|
||||
overlayableAxes: getOverlayableAxes(axLetter, axName),
|
||||
grid: layoutOut.grid
|
||||
});
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -57392,9 +57484,12 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var constraintGroups = layoutOut._axisConstraintGroups = [];
|
||||
// similar to _axisConstraintGroups, but for matching axes
|
||||
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++) {
|
||||
axName = axNames[i];
|
||||
for(i = 0; i < axNamesIncludingMissing.length; i++) {
|
||||
axName = axNamesIncludingMissing[i];
|
||||
axLetter = axName.charAt(0);
|
||||
axLayoutIn = layoutIn[axName];
|
||||
axLayoutOut = layoutOut[axName];
|
||||
|
@ -57402,15 +57497,19 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var scaleanchorDflt;
|
||||
if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) {
|
||||
scaleanchorDflt = axLayoutOut.anchor;
|
||||
} else {scaleanchorDflt = undefined;}
|
||||
} else {
|
||||
scaleanchorDflt = undefined;
|
||||
}
|
||||
|
||||
var constrainDflt;
|
||||
if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) {
|
||||
constrainDflt = 'domain';
|
||||
} else {constrainDflt = undefined;}
|
||||
} else {
|
||||
constrainDflt = undefined;
|
||||
}
|
||||
|
||||
handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, {
|
||||
allAxisIds: allAxisIds,
|
||||
allAxisIds: allAxisIdsIncludingMissing,
|
||||
layoutOut: layoutOut,
|
||||
scaleanchorDflt: scaleanchorDflt,
|
||||
constrainDflt: constrainDflt
|
||||
|
@ -57421,7 +57520,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var group = matchGroups[i];
|
||||
var rng = null;
|
||||
var autorange = null;
|
||||
var axId;
|
||||
|
||||
// find 'matching' range attrs
|
||||
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.
|
||||
* All rights reserved.
|
||||
|
@ -62140,10 +62238,13 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
|
|||
var subplots = layout._subplots;
|
||||
var subplotId = '';
|
||||
|
||||
// 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? but for now just drop empty gl2d subplots
|
||||
if(basePlotModule.name !== 'gl2d' || visible) {
|
||||
if(
|
||||
visible ||
|
||||
basePlotModule.name !== 'gl2d' // for now just drop empty gl2d subplots
|
||||
// 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)) {
|
||||
for(i = 0; i < subplotAttr.length; i++) {
|
||||
var attri = subplotAttr[i];
|
||||
|
@ -63802,7 +63903,7 @@ plots.doCalcdata = function(gd, traces) {
|
|||
calcdata[i] = cd;
|
||||
}
|
||||
|
||||
setupAxisCategories(axList, fullData);
|
||||
setupAxisCategories(axList, fullData, fullLayout);
|
||||
|
||||
// 'transform' loop - must calc container traces first
|
||||
// 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);
|
||||
|
||||
// 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
|
||||
// contained traces (eg contourcarpet)
|
||||
|
@ -64015,13 +64116,31 @@ function sortAxisCategoriesByValue(axList, gd) {
|
|||
return affectedTraces;
|
||||
}
|
||||
|
||||
function setupAxisCategories(axList, fullData) {
|
||||
for(var i = 0; i < axList.length; i++) {
|
||||
var ax = axList[i];
|
||||
function setupAxisCategories(axList, fullData, fullLayout) {
|
||||
var axLookup = {};
|
||||
var i, ax, axId;
|
||||
|
||||
for(i = 0; i < axList.length; i++) {
|
||||
ax = axList[i];
|
||||
axId = ax._id;
|
||||
|
||||
ax.clearCalc();
|
||||
if(ax.type === 'multicategory') {
|
||||
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];
|
||||
|
||||
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
|
||||
|
@ -70294,6 +70418,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
!isNumeric(y0) ||
|
||||
!isNumeric(y1)
|
||||
);
|
||||
|
||||
// display zeros if line.width > 0
|
||||
if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) {
|
||||
isBlank = false;
|
||||
|
@ -70303,6 +70428,9 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
if(isBlank && isHorizontal) x1 = x0;
|
||||
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
|
||||
if(adjustPixel && !isBlank) {
|
||||
if(isHorizontal) {
|
||||
|
@ -70357,10 +70485,15 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
|
||||
var op = Color.opacity(mc);
|
||||
var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible;
|
||||
x0 = fixpx(x0, x1);
|
||||
x1 = fixpx(x1, x0);
|
||||
y0 = fixpx(y0, y1);
|
||||
y1 = fixpx(y1, y0);
|
||||
|
||||
if(spansHorizontal) {
|
||||
x0 = fixpx(x0, x1);
|
||||
x1 = fixpx(x1, x0);
|
||||
}
|
||||
if(spansVertical) {
|
||||
y0 = fixpx(y0, y1);
|
||||
y1 = fixpx(y1, y0);
|
||||
}
|
||||
}
|
||||
|
||||
var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback);
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* plotly.js (cartesian) v1.52.1
|
||||
* plotly.js (cartesian) v1.52.2
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
* Licensed under the MIT license
|
||||
|
@ -34481,7 +34481,7 @@ exports.svgAttrs = {
|
|||
'use strict';
|
||||
|
||||
// package version injected by `npm run preprocess`
|
||||
exports.version = '1.52.1';
|
||||
exports.version = '1.52.2';
|
||||
|
||||
// inject promise polyfill
|
||||
_dereq_('es6-promise').polyfill();
|
||||
|
@ -38068,11 +38068,14 @@ lib.templateString = function(string, obj) {
|
|||
var getterCache = {};
|
||||
|
||||
return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {
|
||||
var v;
|
||||
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 getterCache[key]() || '';
|
||||
return lib.isValidTextValue(v) ? v : '';
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -48258,6 +48261,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
var fullLayout = gd._fullLayout;
|
||||
var axList = Axes.list(gd, '', true);
|
||||
var matchGroups = fullLayout._axisMatchGroups || [];
|
||||
var axLookup = {};
|
||||
var ax;
|
||||
var axRng;
|
||||
|
||||
|
@ -48265,6 +48269,7 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
ax = axList[i];
|
||||
cleanAxisConstraints(gd, ax);
|
||||
doAutoRange(gd, ax);
|
||||
axLookup[ax._id] = 1;
|
||||
}
|
||||
|
||||
enforceAxisConstraints(gd);
|
||||
|
@ -48277,6 +48282,10 @@ exports.doAutoRangeAndConstraints = function(gd) {
|
|||
|
||||
for(id in group) {
|
||||
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;
|
||||
|
||||
axRng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
|
@ -49154,13 +49163,14 @@ function crawl(objIn, objOut, schema, list, base, path) {
|
|||
var valOut = objOut[k];
|
||||
|
||||
var nestedSchema = getNestedSchema(schema, k);
|
||||
var isInfoArray = (nestedSchema || {}).valType === 'info_array';
|
||||
var isColorscale = (nestedSchema || {}).valType === 'colorscale';
|
||||
var nestedValType = (nestedSchema || {}).valType;
|
||||
var isInfoArray = nestedValType === 'info_array';
|
||||
var isColorscale = nestedValType === 'colorscale';
|
||||
var items = (nestedSchema || {}).items;
|
||||
|
||||
if(!isInSchema(schema, k)) {
|
||||
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);
|
||||
} else if(isInfoArray && isArray(valIn)) {
|
||||
if(valIn.length > valOut.length) {
|
||||
|
@ -51965,10 +51975,14 @@ axes.drawOne = function(gd, ax, opts) {
|
|||
var axId = ax._id;
|
||||
var axLetter = axId.charAt(0);
|
||||
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 mainMirrorPosition = ax._mainMirrorPosition;
|
||||
var mainPlotinfo = fullLayout._plots[ax._mainSubplot];
|
||||
var mainAxLayer = mainPlotinfo[axLetter + 'axislayer'];
|
||||
|
||||
var vals = ax._vals = axes.calcTicks(ax);
|
||||
|
||||
|
@ -53927,11 +53941,10 @@ exports.tick0 = function(tick0, axType, calendar, dtick) {
|
|||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var counterRegex = _dereq_('../../lib/regex').counter;
|
||||
|
||||
|
||||
module.exports = {
|
||||
|
||||
idRegex: {
|
||||
x: counterRegex('x'),
|
||||
y: counterRegex('y')
|
||||
|
@ -57121,6 +57134,8 @@ var axisIds = _dereq_('./axis_ids');
|
|||
var id2name = axisIds.id2name;
|
||||
var name2id = axisIds.name2id;
|
||||
|
||||
var AX_ID_PATTERN = _dereq_('./constants').AX_ID_PATTERN;
|
||||
|
||||
var Registry = _dereq_('../../registry');
|
||||
var traceIs = Registry.traceIs;
|
||||
var getComponentMethod = Registry.getComponentMethod;
|
||||
|
@ -57230,7 +57245,28 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
|
||||
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) {
|
||||
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
|
||||
|
@ -57244,9 +57280,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
return (axLetter === 'x') ? yIds : xIds;
|
||||
}
|
||||
|
||||
var counterAxes = {x: getCounterAxes('x'), y: getCounterAxes('y')};
|
||||
var allAxisIds = counterAxes.x.concat(counterAxes.y);
|
||||
|
||||
function getOverlayableAxes(axLetter, axName) {
|
||||
var list = (axLetter === 'x') ? xNames : yNames;
|
||||
var out = [];
|
||||
|
@ -57262,9 +57295,30 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
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
|
||||
for(i = 0; i < axNames.length; i++) {
|
||||
axName = axNames[i];
|
||||
axId = name2id(axName);
|
||||
axLetter = axName.charAt(0);
|
||||
|
||||
if(!Lib.isPlainObject(layoutIn[axName])) {
|
||||
|
@ -57273,20 +57327,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
|
||||
axLayoutIn = layoutIn[axName];
|
||||
axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + 'axis');
|
||||
|
||||
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);
|
||||
newAxLayoutOut();
|
||||
|
||||
var visibleDflt =
|
||||
(axLetter === 'x' && !xaMustDisplay[axName] && xaMayHide[axName]) ||
|
||||
|
@ -57304,13 +57345,13 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
font: layoutOut.font,
|
||||
outerTicks: outerTicks[axName],
|
||||
showGrid: !noGrids[axName],
|
||||
data: traces,
|
||||
data: ax2traces[axName] || [],
|
||||
bgColor: bgColor,
|
||||
calendar: layoutOut.calendar,
|
||||
automargin: true,
|
||||
visibleDflt: visibleDflt,
|
||||
reverseDflt: reverseDflt,
|
||||
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[id]
|
||||
splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]
|
||||
};
|
||||
|
||||
coerce('uirevision', layoutOut.uirevision);
|
||||
|
@ -57336,12 +57377,63 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {
|
||||
letter: axLetter,
|
||||
counterAxes: counterAxes[axLetter],
|
||||
overlayableAxes: overlayableAxes,
|
||||
overlayableAxes: getOverlayableAxes(axLetter, axName),
|
||||
grid: layoutOut.grid
|
||||
});
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -57392,9 +57484,12 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var constraintGroups = layoutOut._axisConstraintGroups = [];
|
||||
// similar to _axisConstraintGroups, but for matching axes
|
||||
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++) {
|
||||
axName = axNames[i];
|
||||
for(i = 0; i < axNamesIncludingMissing.length; i++) {
|
||||
axName = axNamesIncludingMissing[i];
|
||||
axLetter = axName.charAt(0);
|
||||
axLayoutIn = layoutIn[axName];
|
||||
axLayoutOut = layoutOut[axName];
|
||||
|
@ -57402,15 +57497,19 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var scaleanchorDflt;
|
||||
if(axLetter === 'y' && !axLayoutIn.hasOwnProperty('scaleanchor') && axHasImage[axName]) {
|
||||
scaleanchorDflt = axLayoutOut.anchor;
|
||||
} else {scaleanchorDflt = undefined;}
|
||||
} else {
|
||||
scaleanchorDflt = undefined;
|
||||
}
|
||||
|
||||
var constrainDflt;
|
||||
if(!axLayoutIn.hasOwnProperty('constrain') && axHasImage[axName]) {
|
||||
constrainDflt = 'domain';
|
||||
} else {constrainDflt = undefined;}
|
||||
} else {
|
||||
constrainDflt = undefined;
|
||||
}
|
||||
|
||||
handleConstraintDefaults(axLayoutIn, axLayoutOut, coerce, {
|
||||
allAxisIds: allAxisIds,
|
||||
allAxisIds: allAxisIdsIncludingMissing,
|
||||
layoutOut: layoutOut,
|
||||
scaleanchorDflt: scaleanchorDflt,
|
||||
constrainDflt: constrainDflt
|
||||
|
@ -57421,7 +57520,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
|
|||
var group = matchGroups[i];
|
||||
var rng = null;
|
||||
var autorange = null;
|
||||
var axId;
|
||||
|
||||
// find 'matching' range attrs
|
||||
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.
|
||||
* All rights reserved.
|
||||
|
@ -62140,10 +62238,13 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
|
|||
var subplots = layout._subplots;
|
||||
var subplotId = '';
|
||||
|
||||
// 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? but for now just drop empty gl2d subplots
|
||||
if(basePlotModule.name !== 'gl2d' || visible) {
|
||||
if(
|
||||
visible ||
|
||||
basePlotModule.name !== 'gl2d' // for now just drop empty gl2d subplots
|
||||
// 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)) {
|
||||
for(i = 0; i < subplotAttr.length; i++) {
|
||||
var attri = subplotAttr[i];
|
||||
|
@ -63802,7 +63903,7 @@ plots.doCalcdata = function(gd, traces) {
|
|||
calcdata[i] = cd;
|
||||
}
|
||||
|
||||
setupAxisCategories(axList, fullData);
|
||||
setupAxisCategories(axList, fullData, fullLayout);
|
||||
|
||||
// 'transform' loop - must calc container traces first
|
||||
// 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);
|
||||
|
||||
// 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
|
||||
// contained traces (eg contourcarpet)
|
||||
|
@ -64015,13 +64116,31 @@ function sortAxisCategoriesByValue(axList, gd) {
|
|||
return affectedTraces;
|
||||
}
|
||||
|
||||
function setupAxisCategories(axList, fullData) {
|
||||
for(var i = 0; i < axList.length; i++) {
|
||||
var ax = axList[i];
|
||||
function setupAxisCategories(axList, fullData, fullLayout) {
|
||||
var axLookup = {};
|
||||
var i, ax, axId;
|
||||
|
||||
for(i = 0; i < axList.length; i++) {
|
||||
ax = axList[i];
|
||||
axId = ax._id;
|
||||
|
||||
ax.clearCalc();
|
||||
if(ax.type === 'multicategory') {
|
||||
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];
|
||||
|
||||
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
|
||||
|
@ -70294,6 +70418,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
!isNumeric(y0) ||
|
||||
!isNumeric(y1)
|
||||
);
|
||||
|
||||
// display zeros if line.width > 0
|
||||
if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) {
|
||||
isBlank = false;
|
||||
|
@ -70303,6 +70428,9 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
if(isBlank && isHorizontal) x1 = x0;
|
||||
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
|
||||
if(adjustPixel && !isBlank) {
|
||||
if(isHorizontal) {
|
||||
|
@ -70357,10 +70485,15 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
|
|||
|
||||
var op = Color.opacity(mc);
|
||||
var fixpx = (op < 1 || lw > 0.01) ? roundWithLine : expandToVisible;
|
||||
x0 = fixpx(x0, x1);
|
||||
x1 = fixpx(x1, x0);
|
||||
y0 = fixpx(y0, y1);
|
||||
y1 = fixpx(y1, y0);
|
||||
|
||||
if(spansHorizontal) {
|
||||
x0 = fixpx(x0, x1);
|
||||
x1 = fixpx(x1, x0);
|
||||
}
|
||||
if(spansVertical) {
|
||||
y0 = fixpx(y0, y1);
|
||||
y1 = fixpx(y1, y0);
|
||||
}
|
||||
}
|
||||
|
||||
var sel = transition(Lib.ensureSingle(bar, 'path'), fullLayout, opts, makeOnCompleteCallback);
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -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: '⇣',
|
||||
iconRefreshing: '…',
|
||||
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
|
||||
* https://jquery.com/
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue