diff --git a/package-lock.json b/package-lock.json index 2d005ad3..0d55c9cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,15 +22,15 @@ "jquery": "^3.6.0", "moment": "^2.29.1", "moment-timezone": "^0.5.34", - "plotly.js": "^2.6.3", + "plotly.js": "^2.8.0", "popper.js": "^1.16.1", "pulltorefreshjs": "^0.1.22", "pump": "^3.0.0", - "sass": "^1.43.4", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", + "sass": "^1.45.0", + "stylelint": "^14.1.0", + "stylelint-config-recommended-scss": "^5.0.2", "stylelint-order": "^5.0.0", - "stylelint-scss": "^4.0.0", + "stylelint-scss": "^4.0.1", "tempusdominus-bootstrap-4": "5.1.2", "tempusdominus-core": "5.0.3" } @@ -418,9 +418,9 @@ } }, "node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -4363,9 +4363,9 @@ ] }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -4382,6 +4382,12 @@ "quantize": "^1.0.2" } }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5161,12 +5167,6 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", @@ -6589,9 +6589,9 @@ } }, "node_modules/plotly.js": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.6.3.tgz", - "integrity": "sha512-MSdevryj5VvSZvr+slTnJcZgOmvMPZEUe8rFY+3ygxbVUFqmcOvT0TurUx4g07tfAVZ+UhXIaskHnAZNmUcNTg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.8.0.tgz", + "integrity": "sha512-bYuLdTlQEWMs/u3nNqV/jwERj9tw8qMDKBV8NBP1BucfapLoYIM9w4ARc3W9m93r6OYvP5I6ykUztiDmDcvA9Q==", "dev": true, "dependencies": { "@plotly/d3": "3.8.0", @@ -6628,7 +6628,7 @@ "native-promise-only": "^0.8.1", "parse-svg-path": "^0.1.2", "polybooljs": "^1.2.0", - "probe-image-size": "^7.2.1", + "probe-image-size": "^7.2.2", "regl": "^2.1.0", "regl-error2d": "^2.0.12", "regl-line2d": "^3.1.2", @@ -6846,9 +6846,9 @@ } }, "node_modules/probe-image-size": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz", - "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.2.tgz", + "integrity": "sha512-QUm+w1S9WTsT5GZB830u0BHExrUmF0J4fyRm5kbLUMEP3fl9UVYXc3xOBVqZNnH9tnvVEJO8vDk3PMtsLqjxug==", "dev": true, "dependencies": { "lodash.merge": "^4.6.2", @@ -7707,12 +7707,14 @@ "dev": true }, "node_modules/sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { "sass": "sass.js" @@ -8388,9 +8390,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.0.1.tgz", - "integrity": "sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.1.0.tgz", + "integrity": "sha512-IedkssuNVA11+v++2PIV2OHOU5A3SfRcXVi56vZVSsMhGrgtwmmit69jeM+08/Tun5DTBe7BuH1Zp1mMLmtKLA==", "dev": true, "dependencies": { "balanced-match": "^2.0.0", @@ -8405,7 +8407,7 @@ "globby": "^11.0.4", "globjoin": "^0.1.4", "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "ignore": "^5.1.9", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", @@ -8428,7 +8430,7 @@ "strip-ansi": "^6.0.1", "style-search": "^0.1.0", "svg-tags": "^1.0.0", - "table": "^6.7.2", + "table": "^6.7.3", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, @@ -8453,12 +8455,12 @@ } }, "node_modules/stylelint-config-recommended-scss": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.1.tgz", - "integrity": "sha512-kVI5lX8jtaw9uNnnxxziw+LhW59m0x/JzGj8zVepeFQJ56eM4HazN4gMyCRQQSLr/8CXlIHGOW34CV5hIMr3FQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", + "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", "dev": true, "dependencies": { - "postcss-scss": "^4.0.1", + "postcss-scss": "^4.0.2", "stylelint-config-recommended": "^6.0.0", "stylelint-scss": "^4.0.0" }, @@ -8480,12 +8482,12 @@ } }, "node_modules/stylelint-scss": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.0.tgz", - "integrity": "sha512-lIRhPqtI6I065EJ6aI4mWKsmQt8Krnu6aF9XSL9s8Nd2f/cDKImST0T9TfjnUul3ReKYWozkG9dlpNTZH2FB9w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.1.tgz", + "integrity": "sha512-Ea+KY7ZFsDhU6Ne9r84y7NvFSNA843w352MSdQeDmklar0pDbeQj9flKrVAuDIlK0pDDdhFtgBl/N0FrtWHq0g==", "dev": true, "dependencies": { - "lodash": "^4.17.15", + "lodash": "^4.17.21", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-selector-parser": "^6.0.6", @@ -8643,13 +8645,12 @@ "dev": true }, "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", + "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", "dev": true, "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -10230,9 +10231,9 @@ } }, "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -13526,9 +13527,9 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "image-palette": { @@ -13542,6 +13543,12 @@ "quantize": "^1.0.2" } }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -14163,12 +14170,6 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", @@ -15312,9 +15313,9 @@ } }, "plotly.js": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.6.3.tgz", - "integrity": "sha512-MSdevryj5VvSZvr+slTnJcZgOmvMPZEUe8rFY+3ygxbVUFqmcOvT0TurUx4g07tfAVZ+UhXIaskHnAZNmUcNTg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.8.0.tgz", + "integrity": "sha512-bYuLdTlQEWMs/u3nNqV/jwERj9tw8qMDKBV8NBP1BucfapLoYIM9w4ARc3W9m93r6OYvP5I6ykUztiDmDcvA9Q==", "dev": true, "requires": { "@plotly/d3": "3.8.0", @@ -15351,7 +15352,7 @@ "native-promise-only": "^0.8.1", "parse-svg-path": "^0.1.2", "polybooljs": "^1.2.0", - "probe-image-size": "^7.2.1", + "probe-image-size": "^7.2.2", "regl": "^2.1.0", "regl-error2d": "^2.0.12", "regl-line2d": "^3.1.2", @@ -15517,9 +15518,9 @@ "dev": true }, "probe-image-size": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz", - "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.2.tgz", + "integrity": "sha512-QUm+w1S9WTsT5GZB830u0BHExrUmF0J4fyRm5kbLUMEP3fl9UVYXc3xOBVqZNnH9tnvVEJO8vDk3PMtsLqjxug==", "dev": true, "requires": { "lodash.merge": "^4.6.2", @@ -16215,12 +16216,14 @@ "dev": true }, "sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, "dependencies": { "anymatch": { @@ -16780,9 +16783,9 @@ "dev": true }, "stylelint": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.0.1.tgz", - "integrity": "sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.1.0.tgz", + "integrity": "sha512-IedkssuNVA11+v++2PIV2OHOU5A3SfRcXVi56vZVSsMhGrgtwmmit69jeM+08/Tun5DTBe7BuH1Zp1mMLmtKLA==", "dev": true, "requires": { "balanced-match": "^2.0.0", @@ -16797,7 +16800,7 @@ "globby": "^11.0.4", "globjoin": "^0.1.4", "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "ignore": "^5.1.9", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", @@ -16820,7 +16823,7 @@ "strip-ansi": "^6.0.1", "style-search": "^0.1.0", "svg-tags": "^1.0.0", - "table": "^6.7.2", + "table": "^6.7.3", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, @@ -16882,12 +16885,12 @@ "requires": {} }, "stylelint-config-recommended-scss": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.1.tgz", - "integrity": "sha512-kVI5lX8jtaw9uNnnxxziw+LhW59m0x/JzGj8zVepeFQJ56eM4HazN4gMyCRQQSLr/8CXlIHGOW34CV5hIMr3FQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", + "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", "dev": true, "requires": { - "postcss-scss": "^4.0.1", + "postcss-scss": "^4.0.2", "stylelint-config-recommended": "^6.0.0", "stylelint-scss": "^4.0.0" } @@ -16903,12 +16906,12 @@ } }, "stylelint-scss": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.0.tgz", - "integrity": "sha512-lIRhPqtI6I065EJ6aI4mWKsmQt8Krnu6aF9XSL9s8Nd2f/cDKImST0T9TfjnUul3ReKYWozkG9dlpNTZH2FB9w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.1.tgz", + "integrity": "sha512-Ea+KY7ZFsDhU6Ne9r84y7NvFSNA843w352MSdQeDmklar0pDbeQj9flKrVAuDIlK0pDDdhFtgBl/N0FrtWHq0g==", "dev": true, "requires": { - "lodash": "^4.17.15", + "lodash": "^4.17.21", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-selector-parser": "^6.0.6", @@ -16998,13 +17001,12 @@ "dev": true }, "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", + "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", "dev": true, "requires": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", diff --git a/package.json b/package.json index 1ae94cf5..f5b20064 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ "jquery": "^3.6.0", "moment": "^2.29.1", "moment-timezone": "^0.5.34", - "plotly.js": "^2.6.3", + "plotly.js": "^2.8.0", "popper.js": "^1.16.1", "pulltorefreshjs": "^0.1.22", "pump": "^3.0.0", - "sass": "^1.43.4", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", + "sass": "^1.45.0", + "stylelint": "^14.1.0", + "stylelint-config-recommended-scss": "^5.0.2", "stylelint-order": "^5.0.0", - "stylelint-scss": "^4.0.0", + "stylelint-scss": "^4.0.1", "tempusdominus-bootstrap-4": "5.1.2", "tempusdominus-core": "5.0.3" } diff --git a/static/admin/js/actions.a6d23e8853fd.js b/static/admin/js/actions.3edba334d0a4.js similarity index 95% rename from static/admin/js/actions.a6d23e8853fd.js rename to static/admin/js/actions.3edba334d0a4.js index da1c3108..2830e911 100644 --- a/static/admin/js/actions.a6d23e8853fd.js +++ b/static/admin/js/actions.3edba334d0a4.js @@ -36,7 +36,10 @@ function clearAcross(options) { reset(options); - document.querySelector(options.acrossInput).value = 0; + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 0; + }); document.querySelector(options.actionContainer).classList.remove(options.selectedClass); } @@ -107,8 +110,10 @@ document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) { el.addEventListener('click', function(event) { event.preventDefault(); - const acrossInput = document.querySelector(options.acrossInput); - acrossInput.value = 1; + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 1; + }); showClear(options); }); }); diff --git a/static/admin/js/actions.3edba334d0a4.js.gz b/static/admin/js/actions.3edba334d0a4.js.gz new file mode 100644 index 00000000..3bcc2350 Binary files /dev/null and b/static/admin/js/actions.3edba334d0a4.js.gz differ diff --git a/static/admin/js/actions.a6d23e8853fd.js.gz b/static/admin/js/actions.a6d23e8853fd.js.gz deleted file mode 100644 index 00964db2..00000000 Binary files a/static/admin/js/actions.a6d23e8853fd.js.gz and /dev/null differ diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js index da1c3108..2830e911 100644 --- a/static/admin/js/actions.js +++ b/static/admin/js/actions.js @@ -36,7 +36,10 @@ function clearAcross(options) { reset(options); - document.querySelector(options.acrossInput).value = 0; + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 0; + }); document.querySelector(options.actionContainer).classList.remove(options.selectedClass); } @@ -107,8 +110,10 @@ document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) { el.addEventListener('click', function(event) { event.preventDefault(); - const acrossInput = document.querySelector(options.acrossInput); - acrossInput.value = 1; + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 1; + }); showClear(options); }); }); diff --git a/static/admin/js/actions.js.gz b/static/admin/js/actions.js.gz index 00964db2..3bcc2350 100644 Binary files a/static/admin/js/actions.js.gz and b/static/admin/js/actions.js.gz differ diff --git a/static/babybuddy/js/graph.c70d07f5822f.js b/static/babybuddy/js/graph.aec8efcce748.js similarity index 98% rename from static/babybuddy/js/graph.c70d07f5822f.js rename to static/babybuddy/js/graph.aec8efcce748.js index af27fcd2..b7f31de0 100644 --- a/static/babybuddy/js/graph.c70d07f5822f.js +++ b/static/babybuddy/js/graph.aec8efcce748.js @@ -1,5 +1,5 @@ /** -* plotly.js (cartesian) v2.6.3 +* plotly.js (cartesian) v2.8.0 * Copyright 2012-2021, Plotly, Inc. * All rights reserved. * Licensed under the MIT license @@ -77,7 +77,7 @@ for(var selector in rules) { module.exports = _dereq_('../src/transforms/aggregate'); -},{"../src/transforms/aggregate":546}],3:[function(_dereq_,module,exports){ +},{"../src/transforms/aggregate":547}],3:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/bar'); @@ -107,12 +107,12 @@ module.exports = _dereq_('../src/core'); module.exports = _dereq_('../src/transforms/filter'); -},{"../src/transforms/filter":547}],9:[function(_dereq_,module,exports){ +},{"../src/transforms/filter":548}],9:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/transforms/groupby'); -},{"../src/transforms/groupby":548}],10:[function(_dereq_,module,exports){ +},{"../src/transforms/groupby":549}],10:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/heatmap'); @@ -122,22 +122,22 @@ module.exports = _dereq_('../src/traces/heatmap'); module.exports = _dereq_('../src/traces/histogram'); -},{"../src/traces/histogram":465}],12:[function(_dereq_,module,exports){ +},{"../src/traces/histogram":466}],12:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2d'); -},{"../src/traces/histogram2d":471}],13:[function(_dereq_,module,exports){ +},{"../src/traces/histogram2d":472}],13:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2dcontour'); -},{"../src/traces/histogram2dcontour":475}],14:[function(_dereq_,module,exports){ +},{"../src/traces/histogram2dcontour":476}],14:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/image'); -},{"../src/traces/image":483}],15:[function(_dereq_,module,exports){ +},{"../src/traces/image":484}],15:[function(_dereq_,module,exports){ 'use strict'; var Plotly = _dereq_('./core'); @@ -173,22 +173,22 @@ module.exports = Plotly; module.exports = _dereq_('../src/traces/pie'); -},{"../src/traces/pie":492}],17:[function(_dereq_,module,exports){ +},{"../src/traces/pie":493}],17:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/scatterternary'); -},{"../src/traces/scatterternary":533}],18:[function(_dereq_,module,exports){ +},{"../src/traces/scatterternary":534}],18:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/transforms/sort'); -},{"../src/transforms/sort":550}],19:[function(_dereq_,module,exports){ +},{"../src/transforms/sort":551}],19:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/violin'); -},{"../src/traces/violin":541}],20:[function(_dereq_,module,exports){ +},{"../src/traces/violin":542}],20:[function(_dereq_,module,exports){ !function() { var d3 = { version: "3.8.0" @@ -16525,15 +16525,18 @@ var SIG_EXIF = str2arr('Exif\0\0'); module.exports = function (data) { if (data.length < 2) return; - // first marker of the file MUST be 0xFFD8 - if (data[0] !== 0xFF || data[1] !== 0xD8) return; + // first marker of the file MUST be 0xFFD8, + // following by either 0xFFE0, 0xFFE2 or 0xFFE3 + if (data[0] !== 0xFF || data[1] !== 0xD8 || data[2] !== 0xFF) return; var offset = 2; for (;;) { - if (data.length - offset < 2) return; - // not a JPEG marker - if (data[offset++] !== 0xFF) return; + // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68 + for (;;) { + if (data.length - offset < 2) return; + if (data[offset++] === 0xFF) break; + } var code = data[offset++]; var length; @@ -30723,13 +30726,11 @@ var overrideAll = _dereq_('../../plot_api/edit_types').overrideAll; module.exports = overrideAll({ -// TODO: only right is supported currently -// orient: { -// valType: 'enumerated', -// values: ['left', 'right', 'top', 'bottom'], -// dflt: 'right', -// -// }, + orientation: { + valType: 'enumerated', + values: ['h', 'v'], + dflt: 'v', + }, thicknessmode: { valType: 'enumerated', values: ['fraction', 'pixels'], @@ -30752,14 +30753,12 @@ module.exports = overrideAll({ }, x: { valType: 'number', - dflt: 1.02, min: -2, max: 3, }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], - dflt: 'left', }, xpad: { valType: 'number', @@ -30768,14 +30767,12 @@ module.exports = overrideAll({ }, y: { valType: 'number', - dflt: 0.5, min: -2, max: 3, }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], - dflt: 'middle', }, ypad: { valType: 'number', @@ -30807,15 +30804,21 @@ module.exports = overrideAll({ ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { }), + + // ticklabelposition: not used directly, as values depend on orientation + // left/right options are for x axes, and top/bottom options are for y axes ticklabelposition: { valType: 'enumerated', values: [ 'outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', + 'outside right', 'inside right', 'outside bottom', 'inside bottom' ], dflt: 'outside', }, + ticklen: axesAttrs.ticklen, tickwidth: axesAttrs.tickwidth, tickcolor: axesAttrs.tickcolor, @@ -30842,7 +30845,6 @@ module.exports = overrideAll({ side: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', } }, @@ -30901,23 +30903,30 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt); } + var margin = layout.margin || {t: 0, b: 0, l: 0, r: 0}; + var w = layout.width - margin.l - margin.r; + var h = layout.height - margin.t - margin.b; + + var orientation = coerce('orientation'); + var isVertical = orientation === 'v'; + var thicknessmode = coerce('thicknessmode'); coerce('thickness', (thicknessmode === 'fraction') ? - 30 / (layout.width - layout.margin.l - layout.margin.r) : + 30 / (isVertical ? w : h) : 30 ); var lenmode = coerce('lenmode'); coerce('len', (lenmode === 'fraction') ? 1 : - layout.height - layout.margin.t - layout.margin.b + isVertical ? h : w ); - coerce('x'); - coerce('xanchor'); + coerce('x', isVertical ? 1.02 : 0.5); + coerce('xanchor', isVertical ? 'left' : 'center'); coerce('xpad'); - coerce('y'); - coerce('yanchor'); + coerce('y', isVertical ? 0.5 : 1.02); + coerce('yanchor', isVertical ? 'middle' : 'bottom'); coerce('ypad'); Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']); @@ -30927,7 +30936,22 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { coerce('borderwidth'); coerce('bgcolor'); - var ticklabelposition = coerce('ticklabelposition'); + var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, { + ticklabelposition: { + valType: 'enumerated', + dflt: 'outside', + values: isVertical ? [ + 'outside', 'inside', + 'outside top', 'inside top', + 'outside bottom', 'inside bottom' + ] : [ + 'outside', 'inside', + 'outside left', 'inside left', + 'outside right', 'inside right' + ] + } + }, 'ticklabelposition'); + coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div'); handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear'); @@ -30949,7 +30973,7 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { size: Lib.bigFont(tickFont.size) }); Lib.coerceFont(coerce, 'title.font', dfltTitleFont); - coerce('title.side'); + coerce('title.side', isVertical ? 'top' : 'right'); }; },{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/cartesian/prefix_suffix_defaults":353,"../../plots/cartesian/tick_label_defaults":358,"../../plots/cartesian/tick_mark_defaults":359,"../../plots/cartesian/tick_value_defaults":360,"./attributes":158}],161:[function(_dereq_,module,exports){ @@ -31122,18 +31146,20 @@ function makeColorBarData(gd) { } function drawColorBar(g, opts, gd) { + var isVertical = opts.orientation === 'v'; var len = opts.len; var lenmode = opts.lenmode; var thickness = opts.thickness; var thicknessmode = opts.thicknessmode; var outlinewidth = opts.outlinewidth; var borderwidth = opts.borderwidth; + var bgcolor = opts.bgcolor; var xanchor = opts.xanchor; var yanchor = opts.yanchor; var xpad = opts.xpad; var ypad = opts.ypad; var optsX = opts.x; - var optsY = opts.y; + var optsY = isVertical ? opts.y : 1 - opts.y; var fullLayout = gd._fullLayout; var gs = fullLayout._size; @@ -31164,23 +31190,35 @@ function drawColorBar(g, opts, gd) { // when the colorbar itself is pushing the margins. // but then the fractional size is calculated based on the // actual graph size, so that the axes will size correctly. - var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1)); - var thickFrac = thickPx / gs.w; - var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1)); - var lenFrac = lenPx / gs.h; - var xpadFrac = xpad / gs.w; - var yExtraPx = (borderwidth + outlinewidth) / 2; - var ypadFrac = ypad / gs.h; + var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? (isVertical ? gs.w : gs.h) : 1)); + var thickFrac = thickPx / (isVertical ? gs.w : gs.h); + var lenPx = Math.round(len * (lenmode === 'fraction' ? (isVertical ? gs.h : gs.w) : 1)); + var lenFrac = lenPx / (isVertical ? gs.h : gs.w); // x positioning: do it initially just for left anchor, // then fix at the end (since we don't know the width yet) - var uPx = Math.round(optsX * gs.w + xpad); - // for dragging... this is getting a little muddled... - var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0); + var uPx = Math.round(isVertical ? + optsX * gs.w + xpad : + optsY * gs.h + ypad + ); - // y positioning we can do correctly from the start - var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5); - var vPx = Math.round(gs.h * (1 - vFrac)); + var xRatio = {center: 0.5, right: 1}[xanchor] || 0; + var yRatio = {top: 1, middle: 0.5}[yanchor] || 0; + + // for dragging... this is getting a little muddled... + var uFrac = isVertical ? + optsX - xRatio * thickFrac : + optsY - yRatio * thickFrac; + + // y/x positioning (for v/h) we can do correctly from the start + var vFrac = isVertical ? + optsY - yRatio * lenFrac : + optsX - xRatio * lenFrac; + + var vPx = Math.round(isVertical ? + gs.h * (1 - vFrac) : + gs.w * vFrac + ); // stash a few things for makeEditable opts._lenFrac = lenFrac; @@ -31193,12 +31231,23 @@ function drawColorBar(g, opts, gd) { // position can't go in through supplyDefaults // because that restricts it to [0,1] - ax.position = optsX + xpadFrac + thickFrac; + ax.position = thickFrac + (isVertical ? + optsX + xpad / gs.w : + optsY + ypad / gs.h + ); - if(['top', 'bottom'].indexOf(titleSide) !== -1) { + var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1; + + if(isVertical && topOrBottom) { ax.title.side = titleSide; - ax.titlex = optsX + xpadFrac; - ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac); + ax.titlex = optsX + xpad / gs.w; + ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h); + } + + if(!isVertical && !topOrBottom) { + ax.title.side = titleSide; + ax.titley = optsY + ypad / gs.h; + ax.titlex = vFrac + xpad / gs.w; // right side } if(line.color && opts.tickmode === 'auto') { @@ -31223,9 +31272,12 @@ function drawColorBar(g, opts, gd) { // set domain after init, because we may want to // allow it outside [0,1] - ax.domain = [ - vFrac + ypadFrac, - vFrac + lenFrac - ypadFrac + ax.domain = isVertical ? [ + vFrac + ypad / gs.h, + vFrac + lenFrac - ypad / gs.h + ] : [ + vFrac + xpad / gs.w, + vFrac + lenFrac - xpad / gs.w ]; ax.setScale(); @@ -31235,9 +31287,13 @@ function drawColorBar(g, opts, gd) { var titleCont = g.select('.' + cn.cbtitleunshift) .attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t))); + var ticklabelposition = ax.ticklabelposition; + var titleFontSize = ax.title.font.size; + var axLayer = g.select('.' + cn.cbaxis); var titleEl; var titleHeight = 0; + var titleWidth = 0; function drawTitle(titleClass, titleOpts) { var dfltTitleOpts = { @@ -31262,54 +31318,98 @@ function drawColorBar(g, opts, gd) { } function drawDummyTitle() { - if(['top', 'bottom'].indexOf(titleSide) !== -1) { - // draw the title so we know how much room it needs - // when we squish the axis. This one only applies to - // top or bottom titles, not right side. - var x = gs.l + (optsX + xpadFrac) * gs.w; - var fontSize = ax.title.font.size; - var y; + // draw the title so we know how much room it needs + // when we squish the axis. + // On vertical colorbars this only applies to top or bottom titles, not right side. + // On horizontal colorbars this only applies to right, etc. + + if( + (isVertical && topOrBottom) || + (!isVertical && !topOrBottom) + ) { + var x, y; if(titleSide === 'top') { - y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h + - gs.t + 3 + fontSize * 0.75; - } else { - y = (1 - (vFrac + ypadFrac)) * gs.h + - gs.t - 3 - fontSize * 0.25; + x = xpad + gs.l + gs.w * optsX; + y = ypad + gs.t + gs.h * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75; } + + if(titleSide === 'bottom') { + x = xpad + gs.l + gs.w * optsX; + y = ypad + gs.t + gs.h * (1 - vFrac) - 3 - titleFontSize * 0.25; + } + + if(titleSide === 'right') { + y = ypad + gs.t + gs.h * optsY + 3 + titleFontSize * 0.75; + x = xpad + gs.l + gs.w * vFrac; + } + drawTitle(ax._id + 'title', { - attributes: {x: x, y: y, 'text-anchor': 'start'} + attributes: {x: x, y: y, 'text-anchor': isVertical ? 'start' : 'middle'} }); } } function drawCbTitle() { - if(['top', 'bottom'].indexOf(titleSide) === -1) { - var fontSize = ax.title.font.size; - var y = ax._offset + ax._length / 2; - var x = gs.l + (ax.position || 0) * gs.w + ((ax.side === 'right') ? - 10 + fontSize * ((ax.showticklabels ? 1 : 0.5)) : - -10 - fontSize * ((ax.showticklabels ? 0.5 : 0))); + if( + (isVertical && !topOrBottom) || + (!isVertical && topOrBottom) + ) { + var pos = ax.position || 0; + var mid = ax._offset + ax._length / 2; + var x, y; - // the 'h' + is a hack to get around the fact that - // convertToTspans rotates any 'y...' class by 90 degrees. - // TODO: find a better way to control this. - drawTitle('h' + ax._id + 'title', { + if(titleSide === 'right') { + y = mid; + x = gs.l + gs.w * pos + 10 + titleFontSize * ( + ax.showticklabels ? 1 : 0.5 + ); + } else { + x = mid; + + if(titleSide === 'bottom') { + y = gs.t + gs.h * pos + 10 + ( + ticklabelposition.indexOf('inside') === -1 ? + ax.tickfont.size : + 0 + ) + ( + ax.ticks !== 'intside' ? + opts.ticklen || 0 : + 0 + ); + } + + if(titleSide === 'top') { + var nlines = title.text.split('
').length; + y = gs.t + gs.h * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines; + } + } + + drawTitle((isVertical ? + // the 'h' + is a hack to get around the fact that + // convertToTspans rotates any 'y...' class by 90 degrees. + // TODO: find a better way to control this. + 'h' : + 'v' + ) + ax._id + 'title', { avoid: { selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'), side: titleSide, - offsetLeft: gs.l, - offsetTop: 0, - maxShift: fullLayout.width + offsetTop: isVertical ? 0 : gs.t, + offsetLeft: isVertical ? gs.l : 0, + maxShift: isVertical ? fullLayout.width : fullLayout.height }, attributes: {x: x, y: y, 'text-anchor': 'middle'}, - transform: {rotate: '-90', offset: 0} + transform: {rotate: isVertical ? -90 : 0, offset: 0} }); } } function drawAxis() { - if(['top', 'bottom'].indexOf(titleSide) !== -1) { + if( + (!isVertical && !topOrBottom) || + (isVertical && topOrBottom) + ) { // squish the axis top to make room for the title var titleGroup = g.select('.' + cn.cbtitle); var titleText = titleGroup.select('text'); @@ -31321,39 +31421,63 @@ function drawColorBar(g, opts, gd) { if(titleText.node()) { lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING; } + + var bb; if(mathJaxNode) { - titleHeight = Drawing.bBox(mathJaxNode).height; + bb = Drawing.bBox(mathJaxNode); + titleWidth = bb.width; + titleHeight = bb.height; if(titleHeight > lineSize) { // not entirely sure how mathjax is doing // vertical alignment, but this seems to work. titleTrans[1] -= (titleHeight - lineSize) / 2; } } else if(titleText.node() && !titleText.classed(cn.jsPlaceholder)) { - titleHeight = Drawing.bBox(titleText.node()).height; + bb = Drawing.bBox(titleText.node()); + titleWidth = bb.width; + titleHeight = bb.height; } - if(titleHeight) { - // buffer btwn colorbar and title - // TODO: configurable - titleHeight += 5; - if(titleSide === 'top') { - ax.domain[1] -= titleHeight / gs.h; - titleTrans[1] *= -1; - } else { - ax.domain[0] += titleHeight / gs.h; - var nlines = svgTextUtils.lineCount(titleText); - titleTrans[1] += (1 - nlines) * lineSize; + if(isVertical) { + if(titleHeight) { + // buffer btwn colorbar and title + // TODO: configurable + titleHeight += 5; + + if(titleSide === 'top') { + ax.domain[1] -= titleHeight / gs.h; + titleTrans[1] *= -1; + } else { + ax.domain[0] += titleHeight / gs.h; + var nlines = svgTextUtils.lineCount(titleText); + titleTrans[1] += (1 - nlines) * lineSize; + } + + titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); + ax.setScale(); } + } else { // horizontal colorbars + if(titleWidth) { + if(titleSide === 'right') { + ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w; + } - titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); - ax.setScale(); + titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); + ax.setScale(); + } } } g.selectAll('.' + cn.cbfills + ',.' + cn.cblines) - .attr('transform', strTranslate(0, Math.round(gs.h * (1 - ax.domain[1])))); + .attr('transform', isVertical ? + strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) : + strTranslate(Math.round(gs.w * ax.domain[0]), 0) + ); - axLayer.attr('transform', strTranslate(0, Math.round(-gs.t))); + axLayer.attr('transform', isVertical ? + strTranslate(0, Math.round(-gs.t)) : + strTranslate(Math.round(-gs.l), 0) + ); var fills = g.select('.' + cn.cbfills) .selectAll('rect.' + cn.cbfill) @@ -31379,20 +31503,22 @@ function drawColorBar(g, opts, gd) { // offset the side adjoining the next rectangle so they // overlap, to prevent antialiasing gaps - z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]); - + if(isVertical) { + z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]); + } /* else { + // TODO: horizontal case + } */ // Colorbar cannot currently support opacities so we // use an opaque fill even when alpha channels present - var fillEl = d3.select(this).attr({ - x: uPx, - width: Math.max(thickPx, 2), - y: d3.min(z), - height: Math.max(d3.max(z) - d3.min(z), 2), - }); + var fillEl = d3.select(this) + .attr(isVertical ? 'x' : 'y', uPx) + .attr(isVertical ? 'y' : 'x', d3.min(z)) + .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2)); if(opts._fillgradient) { - Drawing.gradient(fillEl, gd, opts._id, 'vertical', opts._fillgradient, 'fill'); + Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill'); } else { // tinycolor can't handle exponents and // at this scale, removing it makes no difference. @@ -31408,9 +31534,15 @@ function drawColorBar(g, opts, gd) { .classed(cn.cbline, true); lines.exit().remove(); lines.each(function(d) { + var a = uPx; + var b = (Math.round(ax.c2p(d)) + (line.width / 2) % 1); + d3.select(this) - .attr('d', 'M' + uPx + ',' + - (Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx) + .attr('d', 'M' + + (isVertical ? a + ',' + b : b + ',' + a) + + (isVertical ? 'h' : 'v') + + thickPx + ) .call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash); }); @@ -31443,82 +31575,211 @@ function drawColorBar(g, opts, gd) { // TODO: why are we redrawing multiple times now with this? // I guess autoMargin doesn't like being post-promise? function positionCB() { + var bb; var innerThickness = thickPx + outlinewidth / 2; - if(ax.ticklabelposition.indexOf('inside') === -1) { - innerThickness += Drawing.bBox(axLayer.node()).width; + if(ticklabelposition.indexOf('inside') === -1) { + bb = Drawing.bBox(axLayer.node()); + innerThickness += isVertical ? bb.width : bb.height; } titleEl = titleCont.select('text'); + var titleWidth = 0; + + var topSideVertical = isVertical && titleSide === 'top'; + var rightSideHorizontal = !isVertical && titleSide === 'right'; + + var moveY = 0; + if(titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) { + var _titleHeight; + var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node(); - var titleWidth; - if(mathJaxNode && ['top', 'bottom'].indexOf(titleSide) !== -1) { - titleWidth = Drawing.bBox(mathJaxNode).width; + if(mathJaxNode && ( + (isVertical && topOrBottom) || + (!isVertical && !topOrBottom) + )) { + bb = Drawing.bBox(mathJaxNode); + titleWidth = bb.width; + _titleHeight = bb.height; } else { // note: the formula below works for all title sides, // (except for top/bottom mathjax, above) // but the weird gs.l is because the titleunshift // transform gets removed by Drawing.bBox - titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l; + bb = Drawing.bBox(titleCont.node()); + titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx); + _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx); + + if( + !isVertical && titleSide === 'top' + ) { + innerThickness += bb.height; + moveY = bb.height; + } } - innerThickness = Math.max(innerThickness, titleWidth); + + if(rightSideHorizontal) { + titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0)); + + titleWidth *= 2; + } + + innerThickness = Math.max(innerThickness, + isVertical ? titleWidth : _titleHeight + ); } - var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2; + var outerThickness = (isVertical ? + xpad : + ypad + ) * 2 + innerThickness + borderwidth + outlinewidth / 2; - g.select('.' + cn.cbbg).attr({ - x: uPx - xpad - (borderwidth + outlinewidth) / 2, - y: vPx - lenPx - yExtraPx, - width: Math.max(outerThickness, 2), - height: Math.max(lenPx + 2 * yExtraPx, 2) - }) - .call(Color.fill, opts.bgcolor) + var hColorbarMoveTitle = 0; + if(!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) { + hColorbarMoveTitle = outerThickness / 2; + + outerThickness += hColorbarMoveTitle; + moveY += hColorbarMoveTitle; + } + fullLayout._hColorbarMoveTitle = hColorbarMoveTitle; + fullLayout._hColorbarMoveCBTitle = moveY; + + var extraW = borderwidth + outlinewidth; + + g.select('.' + cn.cbbg) + .attr('x', (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0)) + .attr('y', (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle)) + .attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2)) + .call(Color.fill, bgcolor) .call(Color.stroke, opts.bordercolor) .style('stroke-width', borderwidth); - g.selectAll('.' + cn.cboutline).attr({ - x: uPx, - y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0), - width: Math.max(thickPx, 2), - height: Math.max(lenPx - 2 * ypad - titleHeight, 2) - }) + var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0; + + g.selectAll('.' + cn.cboutline) + .attr('x', (isVertical ? uPx : vPx + xpad) + moveX) + .attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0)) + .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ? + 2 * ypad + titleHeight : + 2 * xpad + moveX + ), 2)) .call(Color.stroke, opts.outlinecolor) .style({ fill: 'none', 'stroke-width': outlinewidth }); - // fix positioning for xanchor!='left' - var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness; - g.attr('transform', strTranslate(gs.l - xoffset, gs.t)); + g.attr('transform', strTranslate( + gs.l - (isVertical ? xRatio * outerThickness : 0), + gs.t - (isVertical ? 0 : (1 - yRatio) * outerThickness - moveY) + )); + + if(!isVertical && ( + borderwidth || ( + tinycolor(bgcolor).getAlpha() && + !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor) + ) + )) { + // for horizontal colorbars when there is a border line or having different background color + // hide/adjust x positioning for the first/last tick labels if they go outside the border + var tickLabels = axLayer.selectAll('text'); + var numTicks = tickLabels[0].length; + + var border = g.select('.' + cn.cbbg).node(); + var oBb = Drawing.bBox(border); + var oTr = Drawing.getTranslate(g); + + var TEXTPAD = 2; + + tickLabels.each(function(d, i) { + var first = 0; + var last = numTicks - 1; + if(i === first || i === last) { + var iBb = Drawing.bBox(this); + var iTr = Drawing.getTranslate(this); + var deltaX; + + if(i === last) { + var iRight = iBb.right + iTr.x; + var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX; + + deltaX = oRight - iRight; + if(deltaX > 0) deltaX = 0; + } else if(i === first) { + var iLeft = iBb.left + iTr.x; + var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD; + + deltaX = oLeft - iLeft; + if(deltaX < 0) deltaX = 0; + } + + if(deltaX) { + if(numTicks < 3) { // adjust position + this.setAttribute('transform', + 'translate(' + deltaX + ',0) ' + + this.getAttribute('transform') + ); + } else { // hide + this.setAttribute('visibility', 'hidden'); + } + } + } + }); + } // auto margin adjustment var marginOpts = {}; - var tFrac = FROM_TL[yanchor]; - var bFrac = FROM_BR[yanchor]; - if(lenmode === 'pixels') { - marginOpts.y = optsY; - marginOpts.t = lenPx * tFrac; - marginOpts.b = lenPx * bFrac; - } else { - marginOpts.t = marginOpts.b = 0; - marginOpts.yt = optsY + len * tFrac; - marginOpts.yb = optsY - len * bFrac; - } - var lFrac = FROM_TL[xanchor]; var rFrac = FROM_BR[xanchor]; - if(thicknessmode === 'pixels') { - marginOpts.x = optsX; - marginOpts.l = outerThickness * lFrac; - marginOpts.r = outerThickness * rFrac; - } else { - var extraThickness = outerThickness - thickPx; - marginOpts.l = extraThickness * lFrac; - marginOpts.r = extraThickness * rFrac; - marginOpts.xl = optsX - thickness * lFrac; - marginOpts.xr = optsX + thickness * rFrac; + var tFrac = FROM_TL[yanchor]; + var bFrac = FROM_BR[yanchor]; + + var extraThickness = outerThickness - thickPx; + if(isVertical) { + if(lenmode === 'pixels') { + marginOpts.y = optsY; + marginOpts.t = lenPx * tFrac; + marginOpts.b = lenPx * bFrac; + } else { + marginOpts.t = marginOpts.b = 0; + marginOpts.yt = optsY + len * tFrac; + marginOpts.yb = optsY - len * bFrac; + } + + if(thicknessmode === 'pixels') { + marginOpts.x = optsX; + marginOpts.l = outerThickness * lFrac; + marginOpts.r = outerThickness * rFrac; + } else { + marginOpts.l = extraThickness * lFrac; + marginOpts.r = extraThickness * rFrac; + marginOpts.xl = optsX - thickness * lFrac; + marginOpts.xr = optsX + thickness * rFrac; + } + } else { // horizontal colorbars + if(lenmode === 'pixels') { + marginOpts.x = optsX; + marginOpts.l = lenPx * lFrac; + marginOpts.r = lenPx * rFrac; + } else { + marginOpts.l = marginOpts.r = 0; + marginOpts.xl = optsX + len * lFrac; + marginOpts.xr = optsX - len * rFrac; + } + + if(thicknessmode === 'pixels') { + marginOpts.y = 1 - optsY; + marginOpts.t = outerThickness * tFrac; + marginOpts.b = outerThickness * bFrac; + } else { + marginOpts.t = extraThickness * tFrac; + marginOpts.b = extraThickness * bFrac; + marginOpts.yt = optsY - thickness * tFrac; + marginOpts.yb = optsY + thickness * bFrac; + } } Plots.autoMargin(gd, opts._id, marginOpts); @@ -31535,6 +31796,7 @@ function drawColorBar(g, opts, gd) { } function makeEditable(g, opts, gd) { + var isVertical = opts.orientation === 'v'; var fullLayout = gd._fullLayout; var gs = fullLayout._size; var t0, xf, yf; @@ -31549,9 +31811,13 @@ function makeEditable(g, opts, gd) { moveFn: function(dx, dy) { g.attr('transform', t0 + strTranslate(dx, dy)); - xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac, + xf = dragElement.align( + (isVertical ? opts._uFrac : opts._vFrac) + (dx / gs.w), + isVertical ? opts._thickFrac : opts._lenFrac, 0, 1, opts.xanchor); - yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac, + yf = dragElement.align( + (isVertical ? opts._vFrac : (1 - opts._uFrac)) - (dy / gs.h), + isVertical ? opts._lenFrac : opts._thickFrac, 0, 1, opts.yanchor); var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor); @@ -31628,6 +31894,8 @@ function calcLevels(gd, opts, zrange) { function mockColorBarAxis(gd, opts, zrange) { var fullLayout = gd._fullLayout; + var isVertical = opts.orientation === 'v'; + var cbAxisIn = { type: 'linear', range: zrange, @@ -31658,17 +31926,19 @@ function mockColorBarAxis(gd, opts, zrange) { title: opts.title, showline: true, anchor: 'free', - side: 'right', + side: isVertical ? 'right' : 'bottom', position: 1 }; + var letter = isVertical ? 'y' : 'x'; + var cbAxisOut = { type: 'linear', - _id: 'y' + opts._id + _id: letter + opts._id }; var axisOptions = { - letter: 'y', + letter: letter, font: fullLayout.font, noHover: true, noTickson: true, @@ -34130,7 +34400,7 @@ var TEXTOFFSETSIGN = { start: 1, end: -1, middle: 0, bottom: 1, top: -1 }; -function textPointPosition(s, textPosition, fontSize, markerRadius) { +function textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) { var group = d3.select(s.node().parentNode); var v = textPosition.indexOf('top') !== -1 ? @@ -34152,7 +34422,9 @@ function textPointPosition(s, textPosition, fontSize, markerRadius) { // fix the overall text group position s.attr('text-anchor', h); - group.attr('transform', strTranslate(dx, dy)); + if(!dontTouchParent) { + group.attr('transform', strTranslate(dx, dy)); + } } function extracTextFontSize(d, trace) { @@ -34222,7 +34494,8 @@ drawing.selectedTextStyle = function(s, trace) { var fontSize = extracTextFontSize(d, trace); Color.fill(tx, tc); - textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc); + var dontTouchParent = Registry.traceIs(trace, 'bar-like'); + textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent); }); }; @@ -34644,7 +34917,7 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) { }); }; -},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":516,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){ +},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":517,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -35743,7 +36016,7 @@ function errorCoords(d, xa, ya) { return out; } -},{"../../traces/scatter/subtypes":524,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){ +},{"../../traces/scatter/subtypes":525,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -37278,7 +37551,9 @@ function createHoverText(hoverData, opts) { orientation: 'v' } }; - var mockLayoutOut = {}; + var mockLayoutOut = { + font: font + }; legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData); var mockLegend = mockLayoutOut.legend; @@ -37319,7 +37594,8 @@ function createHoverText(hoverData, opts) { // Draw unified hover label mockLegend._inHover = true; - mockLegend._groupTitleFont = font; + mockLegend._groupTitleFont = hoverlabel.grouptitlefont; + legendDraw(gd, mockLegend); // Position the hover @@ -38321,9 +38597,11 @@ var isUnifiedHover = _dereq_('./helpers').isUnifiedHover; module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) { opts = opts || {}; + var hasLegend = contOut.legend; + function inheritFontAttr(attr) { if(!opts.font[attr]) { - opts.font[attr] = contOut.legend ? contOut.legend.font[attr] : contOut.font[attr]; + opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr]; } } @@ -38334,7 +38612,7 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts inheritFontAttr('family'); inheritFontAttr('color'); - if(contOut.legend) { + if(hasLegend) { if(!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor); if(!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor; } else { @@ -38443,11 +38721,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) { var constants = _dereq_('./constants'); -var fontAttrs = _dereq_('../../plots/font_attributes')({ +var fontAttrs = _dereq_('../../plots/font_attributes'); + +var font = fontAttrs({ editType: 'none', }); -fontAttrs.family.dflt = constants.HOVERFONT; -fontAttrs.size.dflt = constants.HOVERFONTSIZE; +font.family.dflt = constants.HOVERFONT; +font.size.dflt = constants.HOVERFONTSIZE; module.exports = { clickmode: { @@ -38503,7 +38783,10 @@ module.exports = { valType: 'color', editType: 'none', }, - font: fontAttrs, + font: font, + grouptitlefont: fontAttrs({ + editType: 'none', + }), align: { valType: 'enumerated', values: ['left', 'right', 'auto'], @@ -38516,6 +38799,7 @@ module.exports = { dflt: 15, editType: 'none', }, + editType: 'none' }, selectdirection: { @@ -38563,6 +38847,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } handleHoverLabelDefaults(layoutIn, layoutOut, coerce); + + Lib.coerceFont(coerce, 'hoverlabel.grouptitlefont', layoutOut.hoverlabel.font); }; },{"../../lib":287,"./hoverlabel_defaults":195,"./hovermode_defaults":196,"./layout_attributes":198}],200:[function(_dereq_,module,exports){ @@ -39446,6 +39732,9 @@ module.exports = { font: fontAttrs({ editType: 'legend', }), + grouptitlefont: fontAttrs({ + editType: 'legend', + }), orientation: { valType: 'enumerated', values: ['v', 'h'], @@ -39569,6 +39858,7 @@ var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); var Template = _dereq_('../../plot_api/plot_template'); +var plotsAttrs = _dereq_('../../plots/attributes'); var attributes = _dereq_('./attributes'); var basePlotLayoutAttributes = _dereq_('../../plots/layout_attributes'); var helpers = _dereq_('./helpers'); @@ -39576,13 +39866,30 @@ var helpers = _dereq_('./helpers'); module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { var containerIn = layoutIn.legend || {}; + var containerOut = Template.newContainer(layoutOut, 'legend'); + + function coerce(attr, dflt) { + return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); + } + + var trace; + var traceCoerce = function(attr, dflt) { + var traceIn = trace._input; + var traceOut = trace; + return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt); + }; + + var globalFont = layoutOut.font || {}; + var grouptitlefont = Lib.coerceFont(coerce, 'grouptitlefont', Lib.extendFlat({}, globalFont, { + size: Math.round(globalFont.size * 1.1) + })); var legendTraceCount = 0; var legendReallyHasATrace = false; var defaultOrder = 'normal'; for(var i = 0; i < fullData.length; i++) { - var trace = fullData[i]; + trace = fullData[i]; if(!trace.visible) continue; @@ -39609,6 +39916,8 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { legendTraceCount++; } } + + Lib.coerceFont(traceCoerce, 'legendgrouptitle.font', grouptitlefont); } if((Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') || @@ -39627,14 +39936,11 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { basePlotLayoutAttributes, 'showlegend', legendReallyHasATrace && legendTraceCount > 1); + // delete legend + if(showLegend === false) layoutOut.legend = undefined; + if(showLegend === false && !containerIn.uirevision) return; - var containerOut = Template.newContainer(layoutOut, 'legend'); - - function coerce(attr, dflt) { - return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); - } - coerce('uirevision', layoutOut.uirevision); if(showLegend === false) return; @@ -39695,7 +40001,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { } }; -},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/attributes":330,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -41668,7 +41974,7 @@ function dimAttr(v, dflt, max) { return v; } -},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":491,"../../traces/pie/style_one":497,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":492,"../../traces/pie/style_one":498,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -42902,7 +43208,7 @@ function fillCustomButton(customButtons) { return customButtons; } -},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":524,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":525,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -44831,7 +45137,7 @@ module.exports = templatedArray('shape', { editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":499,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){ +},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":500,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -48147,8 +48453,10 @@ function draw(gd, titleClass, options) { var elShouldExist = txt || editable; + var hColorbarMoveTitle; if(!group) { group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass); + hColorbarMoveTitle = fullLayout._hColorbarMoveTitle; } var el = group.selectAll('text') @@ -48172,13 +48480,17 @@ function draw(gd, titleClass, options) { function drawTitle(titleEl) { var transformVal; + if(!transform && hColorbarMoveTitle) { + transform = {}; + } + if(transform) { transformVal = ''; if(transform.rotate) { transformVal += 'rotate(' + [transform.rotate, attributes.x, attributes.y] + ')'; } - if(transform.offset) { - transformVal += strTranslate(0, transform.offset); + if(transform.offset || hColorbarMoveTitle) { + transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0)); } } else { transformVal = null; @@ -49975,7 +50287,7 @@ exports.Fx = { exports.Snapshot = _dereq_('./snapshot'); exports.PlotSchema = _dereq_('./plot_api/plot_schema'); -},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":511,"./version":551,"native-promise-only":72}],270:[function(_dereq_,module,exports){ +},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":512,"./version":552,"native-promise-only":72}],270:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -59636,7 +59948,7 @@ function cleanDeprecatedAttributeKeys(aobj) { if((key === 'title' || oldAxisTitleRegex.test(key) || colorbarRegex.test(key)) && (typeof value === 'string' || typeof value === 'number')) { replace(key, key.replace('title', 'title.text')); - } else if(key.indexOf('titlefont') > -1) { + } else if(key.indexOf('titlefont') > -1 && key.indexOf('grouptitlefont') === -1) { replace(key, key.replace('titlefont', 'title.font')); } else if(key.indexOf('titleposition') > -1) { replace(key, key.replace('titleposition', 'title.position')); @@ -60313,7 +60625,8 @@ function findUIPattern(key, patternSpecs) { var spec = patternSpecs[i]; var match = key.match(spec.pattern); if(match) { - return {head: match[1], attr: spec.attr}; + var head = match[1] || ''; + return {head: head, tail: key.substr(head.length + 1), attr: spec.attr}; } } } @@ -60365,26 +60678,54 @@ function valsMatch(v1, v2) { function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { var layoutPreGUI = oldFullLayout._preGUI; - var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal; + var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail; var bothInheritAutorange = []; + var newAutorangeIn = {}; var newRangeAccepted = {}; for(key in layoutPreGUI) { match = findUIPattern(key, layoutUIControlPatterns); if(match) { - revAttr = match.attr || (match.head + '.uirevision'); + head = match.head; + tail = match.tail; + revAttr = match.attr || (head + '.uirevision'); oldRev = nestedProperty(oldFullLayout, revAttr).get(); newRev = oldRev && getNewRev(revAttr, layout); + if(newRev && (newRev === oldRev)) { preGUIVal = layoutPreGUI[key]; if(preGUIVal === null) preGUIVal = undefined; newNP = nestedProperty(layout, key); newVal = newNP.get(); + if(valsMatch(newVal, preGUIVal)) { - if(newVal === undefined && key.substr(key.length - 9) === 'autorange') { - bothInheritAutorange.push(key.substr(0, key.length - 10)); + if(newVal === undefined && tail === 'autorange') { + bothInheritAutorange.push(head); } newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get())); continue; + } else if(tail === 'autorange' || tail.substr(0, 6) === 'range[') { + // Special case for (auto)range since we push it back into the layout + // so all null should be treated equivalently to autorange: true with any range + var pre0 = layoutPreGUI[head + '.range[0]']; + var pre1 = layoutPreGUI[head + '.range[1]']; + var preAuto = layoutPreGUI[head + '.autorange']; + if(preAuto || (preAuto === null && pre0 === null && pre1 === null)) { + // Only read the input layout once and stash the result, + // so we get it before we start modifying it + if(!(head in newAutorangeIn)) { + var newContainer = nestedProperty(layout, head).get(); + newAutorangeIn[head] = newContainer && ( + newContainer.autorange || + (newContainer.autorange !== false && ( + !newContainer.range || newContainer.range.length !== 2) + ) + ); + } + if(newAutorangeIn[head]) { + newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get())); + continue; + } + } } } } else { @@ -60395,12 +60736,12 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { // so remove it from _preGUI for next time. delete layoutPreGUI[key]; - if(key.substr(key.length - 8, 6) === 'range[') { - newRangeAccepted[key.substr(0, key.length - 9)] = 1; + if(match && match.tail.substr(0, 6) === 'range[') { + newRangeAccepted[match.head] = 1; } } - // Special logic for `autorange`, since it interacts with `range`: + // More special logic for `autorange`, since it interacts with `range`: // If the new figure's matching `range` was kept, and `autorange` // wasn't supplied explicitly in either the original or the new figure, // we shouldn't alter that - but we may just have done that, so fix it. @@ -64332,7 +64673,7 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":551,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){ +},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":552,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -77475,6 +77816,9 @@ module.exports = function(opts) { // TODO - that's uber hacky... better solution? }; + if(opts.autoSize) attrs.size.dflt = 'auto'; + if(opts.autoColor) attrs.color.dflt = 'auto'; + if(opts.arrayOk) { attrs.family.arrayOk = true; attrs.size.arrayOk = true; @@ -77834,6 +78178,7 @@ module.exports = { valType: 'boolean', editType: 'legend', }, + colorway: { valType: 'colorlist', dflt: colorAttrs.defaults, @@ -79246,13 +79591,7 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac ); coerce('legendgroup'); - var titleText = coerce('legendgrouptitle.text'); - if(titleText) { - Lib.coerceFont(coerce, 'legendgrouptitle.font', Lib.extendFlat({}, layout.font, { - size: Math.round(layout.font.size * 1.1) // default to larger font size - })); - } - + coerce('legendgrouptitle.text'); coerce('legendrank'); traceOut._dfltShowLegend = true; @@ -79400,16 +79739,14 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('autotypenumbers'); - var globalFont = Lib.coerceFont(coerce, 'font'); + var font = Lib.coerceFont(coerce, 'font'); + var fontSize = font.size; + + Lib.coerceFont(coerce, 'title.font', Lib.extendFlat({}, font, { + size: Math.round(fontSize * 1.4) + })); coerce('title.text', layoutOut._dfltTitle.plot); - - Lib.coerceFont(coerce, 'title.font', { - family: globalFont.family, - size: Math.round(globalFont.size * 1.4), - color: globalFont.color - }); - coerce('title.xref'); coerce('title.yref'); coerce('title.x'); @@ -83977,7 +84314,7 @@ module.exports = { } }; -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":499,"./constants":390}],389:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500,"./constants":390}],389:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -84052,7 +84389,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":501,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":502,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -85019,7 +85356,7 @@ module.exports = { handleText: handleText }; -},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":519,"../scatter/xy_defaults":526,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":520,"../scatter/xy_defaults":527,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace) { @@ -85364,7 +85701,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../scatter/marker_colorbar":517,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../scatter/marker_colorbar":518,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){ 'use strict'; @@ -85879,7 +86216,7 @@ function appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCom } transform.fontSize = font.size; - recordMinTextSize(trace.type, transform, fullLayout); + recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout); calcBar.transform = transform; transition(textSelection, fullLayout, opts, makeOnCompleteCallback) @@ -86910,7 +87247,7 @@ module.exports = { } }; -},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":499}],406:[function(_dereq_,module,exports){ +},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":500}],406:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -87891,7 +88228,7 @@ module.exports = { handlePointsDefaults: handlePointsDefaults }; -},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":519,"./attributes":405}],409:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":520,"./attributes":405}],409:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -88772,6 +89109,10 @@ module.exports = extendFlat({ yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), hovertemplate: heatmapAttrs.hovertemplate, + texttemplate: extendFlat({}, heatmapAttrs.texttemplate, { + }), + textfont: extendFlat({}, heatmapAttrs.textfont, { + }), hoverongaps: heatmapAttrs.hoverongaps, connectgaps: extendFlat({}, heatmapAttrs.connectgaps, { }), @@ -88887,7 +89228,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":499}],418:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":500}],418:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -89406,6 +89747,7 @@ var handlePeriodDefaults = _dereq_('../scatter/period_defaults'); var handleConstraintDefaults = _dereq_('./constraint_defaults'); var handleContoursDefaults = _dereq_('./contours_defaults'); var handleStyleDefaults = _dereq_('./style_defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -89430,8 +89772,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('hovertext'); - coerce('hovertemplate'); coerce('hoverongaps'); + coerce('hovertemplate'); var isConstraint = (coerce('contours.type') === 'constraint'); coerce('connectgaps', Lib.isArray1D(traceOut.z)); @@ -89442,9 +89784,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); } + + if( + traceOut.contours && + traceOut.contours.coloring === 'heatmap' + ) { + handleHeatmapLabelDefaults(coerce, layout); + } }; -},{"../../lib":287,"../heatmap/xyz_defaults":453,"../scatter/period_defaults":519,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){ +},{"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/xyz_defaults":454,"../scatter/period_defaults":520,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90718,7 +91067,7 @@ function makeClipMask(cd0) { return z; } -},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":450,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){ +},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":451,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -90886,7 +91235,7 @@ module.exports = function style(gd) { heatmapStyle(gd); }; -},{"../../components/drawing":179,"../heatmap/style":451,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../heatmap/style":452,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){ 'use strict'; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -90927,8 +91276,10 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout, var scatterAttrs = _dereq_('../scatter/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var fontAttrs = _dereq_('../../plots/font_attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -91007,6 +91358,19 @@ module.exports = extendFlat({ zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs(), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: ['x', 'y', 'z', 'text'] + }), + textfont: fontAttrs({ + editType: 'plot', + autoSize: true, + autoColor: true, + colorEditType: 'style', + }), + showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, { transforms: undefined @@ -91014,7 +91378,7 @@ module.exports = extendFlat({ colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../scatter/attributes":499}],440:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500}],440:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -91215,7 +91579,7 @@ function dropZonBreaks(x, y, z) { return newZ; } -},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":468,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":449}],441:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":469,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":450}],441:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91379,6 +91743,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, var Lib = _dereq_('../../lib'); var handleXYZDefaults = _dereq_('./xyz_defaults'); +var handleHeatmapLabelDefaults = _dereq_('./label_defaults'); var handlePeriodDefaults = _dereq_('../scatter/period_defaults'); var handleStyleDefaults = _dereq_('./style_defaults'); var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -91404,6 +91769,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('hovertext'); coerce('hovertemplate'); + handleHeatmapLabelDefaults(coerce, layout); handleStyleDefaults(traceIn, traceOut, coerce, layout); coerce('hoverongaps'); @@ -91412,7 +91778,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); }; -},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":519,"./attributes":439,"./style_defaults":452,"./xyz_defaults":453}],445:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":520,"./attributes":439,"./label_defaults":449,"./style_defaults":453,"./xyz_defaults":454}],445:[function(_dereq_,module,exports){ 'use strict'; var maxRowLength = _dereq_('../../lib').maxRowLength; @@ -91662,7 +92028,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":450,"./style":451}],448:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":451,"./style":452}],448:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -91790,6 +92156,21 @@ function iterateInterp2d(z, emptyPoints, overshoot) { },{"../../lib":287}],449:[function(_dereq_,module,exports){ 'use strict'; +var Lib = _dereq_('../../lib'); + +module.exports = function handleHeatmapLabelDefaults(coerce, layout) { + coerce('texttemplate'); + + var fontDflt = Lib.extendFlat({}, layout.font, { + color: 'auto', + size: 'auto' + }); + Lib.coerceFont(coerce, 'textfont', fontDflt); +}; + +},{"../../lib":287}],450:[function(_dereq_,module,exports){ +'use strict'; + var Registry = _dereq_('../../registry'); var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -91867,16 +92248,34 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks, return arrayOut; }; -},{"../../lib":287,"../../registry":378}],450:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],451:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); +var Drawing = _dereq_('../../components/drawing'); +var Axes = _dereq_('../../plots/cartesian/axes'); var Lib = _dereq_('../../lib'); +var svgTextUtils = _dereq_('../../lib/svg_text_utils'); +var formatLabels = _dereq_('../scatter/format_labels'); +var Color = _dereq_('../../components/color'); +var extractOpts = _dereq_('../../components/colorscale').extractOpts; var makeColorScaleFuncFromTrace = _dereq_('../../components/colorscale').makeColorScaleFuncFromTrace; var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces'); +var alignmentConstants = _dereq_('../../constants/alignment'); +var LINE_SPACING = alignmentConstants.LINE_SPACING; + +var labelClass = 'heatmap-label'; + +function selectLabels(plotGroup) { + return plotGroup.selectAll('g.' + labelClass); +} + +function removeLabels(plotGroup) { + selectLabels(plotGroup).remove(); +} module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var xa = plotinfo.xaxis; @@ -91886,6 +92285,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var plotGroup = d3.select(this); var cd0 = cd[0]; var trace = cd0.trace; + var xGap = trace.xgap || 0; + var yGap = trace.ygap || 0; var z = cd0.z; var x = cd0.x; @@ -91901,7 +92302,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var xrev = false; var yrev = false; - var left, right, temp, top, bottom, i; + var left, right, temp, top, bottom, i, j, k; // TODO: if there are multiple overlapping categorical heatmaps, // or if we allow category sorting, then the categories may not be @@ -91982,6 +92383,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { if(isOffScreen) { var noImage = plotGroup.selectAll('image').data([]); noImage.exit().remove(); + + removeLabels(plotGroup); return; } @@ -92037,7 +92440,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var gcount = 0; var bcount = 0; - var xb, j, xi, v, row, c; + var xb, xi, v, row, c; function setColor(v, pixsize) { if(v !== undefined) { @@ -92148,8 +92551,6 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { } else { // zsmooth = false -> filling potentially large bricks works fastest with fillRect // gaps do not need to be exact integers, but if they *are* we will get // cleaner edges by rounding at least one edge - var xGap = trace.xgap; - var yGap = trace.ygap; var xGapLeft = Math.floor(xGap / 2); var yGapTop = Math.floor(yGap / 2); @@ -92202,6 +92603,185 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { y: top, 'xlink:href': canvas.toDataURL('image/png') }); + + removeLabels(plotGroup); + + var texttemplate = trace.texttemplate; + if(texttemplate) { + // dummy axis for formatting the z value + var cOpts = extractOpts(trace); + var dummyAx = { + type: 'linear', + range: [cOpts.min, cOpts.max], + _separators: xa._separators, + _numFormat: xa._numFormat + }; + + var aHistogram2dContour = trace.type === 'histogram2dcontour'; + var aContour = trace.type === 'contour'; + var iStart = aContour ? 1 : 0; + var iStop = aContour ? m - 1 : m; + var jStart = aContour ? 1 : 0; + var jStop = aContour ? n - 1 : n; + + var textData = []; + for(i = iStart; i < iStop; i++) { + var yVal; + if(aContour) { + yVal = cd0.y[i]; + } else if(aHistogram2dContour) { + if(i === 0 || i === m - 1) continue; + yVal = cd0.y[i]; + } else if(cd0.yCenter) { + yVal = cd0.yCenter[i]; + } else { + if(i + 1 === m && cd0.y[i + 1] === undefined) continue; + yVal = (cd0.y[i] + cd0.y[i + 1]) / 2; + } + + var _y = Math.round(ya.c2p(yVal)); + if(0 > _y || _y > ya._length) continue; + + for(j = jStart; j < jStop; j++) { + var xVal; + if(aContour) { + xVal = cd0.x[j]; + } else if(aHistogram2dContour) { + if(j === 0 || j === n - 1) continue; + xVal = cd0.x[j]; + } else if(cd0.xCenter) { + xVal = cd0.xCenter[j]; + } else { + if(j + 1 === n && cd0.x[j + 1] === undefined) continue; + xVal = (cd0.x[j] + cd0.x[j + 1]) / 2; + } + + var _x = Math.round(xa.c2p(xVal)); + if(0 > _x || _x > xa._length) continue; + + var obj = formatLabels({ + x: xVal, + y: yVal + }, trace, gd._fullLayout); + + obj.x = xVal; + obj.y = yVal; + + var zVal = cd0.z[i][j]; + if(zVal === undefined) { + obj.z = ''; + obj.zLabel = ''; + } else { + obj.z = zVal; + obj.zLabel = Axes.tickText(dummyAx, zVal, 'hover').text; + } + + var theText = cd0.text && cd0.text[i] && cd0.text[i][j]; + if(theText === undefined || theText === false) theText = ''; + obj.text = theText; + + var _t = Lib.texttemplateString(texttemplate, obj, gd._fullLayout._d3locale, obj, trace._meta || {}); + if(!_t) continue; + + var lines = _t.split('
'); + var nL = lines.length; + var nC = 0; + for(k = 0; k < nL; k++) { + nC = Math.max(nC, lines[k].length); + } + + textData.push({ + l: nL, // number of lines + c: nC, // maximum number of chars in a line + t: _t, // text + x: _x, + y: _y, + z: zVal + }); + } + } + + var font = trace.textfont; + var fontFamily = font.family; + var fontSize = font.size; + + if(!fontSize || fontSize === 'auto') { + var minW = Infinity; + var minH = Infinity; + var maxL = 0; + var maxC = 0; + + for(k = 0; k < textData.length; k++) { + var d = textData[k]; + maxL = Math.max(maxL, d.l); + maxC = Math.max(maxC, d.c); + + if(k < textData.length - 1) { + var nextD = textData[k + 1]; + var dx = Math.abs(nextD.x - d.x); + var dy = Math.abs(nextD.y - d.y); + + if(dx) minW = Math.min(minW, dx); + if(dy) minH = Math.min(minH, dy); + } + } + + if( + !isFinite(minW) || + !isFinite(minH) + ) { + fontSize = 12; + } else { + minW -= xGap; + minH -= yGap; + + minW /= maxC; + minH /= maxL; + + minW /= LINE_SPACING / 2; + minH /= LINE_SPACING; + + fontSize = Math.min( + Math.floor(minW), + Math.floor(minH) + ); + } + } + if(fontSize <= 0 || !isFinite(fontSize)) return; + + var xFn = function(d) { return d.x; }; + var yFn = function(d) { + return d.y - fontSize * ((d.l * LINE_SPACING) / 2 - 1); + }; + + var labels = selectLabels(plotGroup).data(textData); + + labels + .enter() + .append('g') + .classed(labelClass, 1) + .append('text') + .attr('text-anchor', 'middle') + .each(function(d) { + var thisLabel = d3.select(this); + + var fontColor = font.color; + if(!fontColor || fontColor === 'auto') { + fontColor = Color.contrast( + 'rgba(' + + sclFunc(d.z).join() + + ')' + ); + } + + thisLabel + .attr('data-notex', 1) + .call(svgTextUtils.positionText, xFn(d), yFn(d)) + .call(Drawing.font, fontFamily, fontSize, fontColor) + .text(d.t) + .call(svgTextUtils.convertToTspans, gd); + }); + } }); }; @@ -92263,7 +92843,7 @@ function putColor(pixels, pxIndex, c) { pixels[pxIndex + 3] = Math.round(c[3] * 255); } -},{"../../components/colorscale":169,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../registry":378,"@plotly/d3":20,"tinycolor2":121}],451:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/colorscale":169,"../../components/drawing":179,"../../constants/alignment":262,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../registry":378,"../scatter/format_labels":509,"@plotly/d3":20,"tinycolor2":121}],452:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -92275,7 +92855,7 @@ module.exports = function style(gd) { }); }; -},{"@plotly/d3":20}],452:[function(_dereq_,module,exports){ +},{"@plotly/d3":20}],453:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { @@ -92289,7 +92869,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { coerce('zhoverformat'); }; -},{}],453:[function(_dereq_,module,exports){ +},{}],454:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -92380,12 +92960,14 @@ function isValidZ(z) { return (allRowsAreArrays && oneRowIsFilled && hasOneNumber); } -},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],454:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],455:[function(_dereq_,module,exports){ 'use strict'; var barAttrs = _dereq_('../bar/attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; +var fontAttrs = _dereq_('../../plots/font_attributes'); var makeBinAttrs = _dereq_('./bin_attributes'); var constants = _dereq_('./constants'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -92480,6 +93062,41 @@ module.exports = { keys: constants.eventDataKeys }), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: ['label', 'value'] + }), + + textposition: extendFlat({}, barAttrs.textposition, { + arrayOk: false + }), + + textfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + outsidetextfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + insidetextfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + insidetextanchor: barAttrs.insidetextanchor, + + textangle: barAttrs.textangle, + cliponaxis: barAttrs.cliponaxis, + constraintext: barAttrs.constraintext, + marker: barAttrs.marker, offsetgroup: barAttrs.offsetgroup, @@ -92493,7 +93110,7 @@ module.exports = { } }; -},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":456,"./constants":460}],455:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":457,"./constants":461}],456:[function(_dereq_,module,exports){ 'use strict'; @@ -92509,7 +93126,7 @@ module.exports = function doAvg(size, counts) { return total; }; -},{}],456:[function(_dereq_,module,exports){ +},{}],457:[function(_dereq_,module,exports){ 'use strict'; module.exports = function makeBinAttrs(axLetter, match) { @@ -92530,7 +93147,7 @@ module.exports = function makeBinAttrs(axLetter, match) { }; }; -},{}],457:[function(_dereq_,module,exports){ +},{}],458:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -92595,7 +93212,7 @@ module.exports = { } }; -},{"fast-isnumeric":33}],458:[function(_dereq_,module,exports){ +},{"fast-isnumeric":33}],459:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -92762,7 +93379,7 @@ function dateParts(v, pa, calendar) { return parts; } -},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],459:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],460:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -93333,14 +93950,14 @@ module.exports = { calcAllAutoBins: calcAllAutoBins }; -},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":455,"./bin_functions":457,"./bin_label_vals":458,"./norm_functions":466,"fast-isnumeric":33}],460:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":456,"./bin_functions":458,"./bin_label_vals":459,"./norm_functions":467,"fast-isnumeric":33}],461:[function(_dereq_,module,exports){ 'use strict'; module.exports = { eventDataKeys: ['binNumber'] }; -},{}],461:[function(_dereq_,module,exports){ +},{}],462:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -93609,13 +94226,14 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],462:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],463:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); var Color = _dereq_('../../components/color'); +var handleText = _dereq_('../bar/defaults').handleText; var handleStyleDefaults = _dereq_('../bar/style_defaults'); var attributes = _dereq_('./attributes'); @@ -93634,6 +94252,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } coerce('text'); + var textposition = coerce('textposition'); + handleText(traceIn, traceOut, layout, coerce, textposition, { + moduleHasSelected: true, + moduleHasUnselected: true, + moduleHasConstrain: true, + moduleHasCliponaxis: true, + moduleHasTextangle: true, + moduleHasInsideanchor: true + }); + coerce('hovertext'); coerce('hovertemplate'); coerce('xhoverformat'); @@ -93677,7 +94305,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'}); }; -},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/style_defaults":403,"./attributes":454}],463:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/defaults":392,"../bar/style_defaults":403,"./attributes":455}],464:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -93718,7 +94346,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],464:[function(_dereq_,module,exports){ +},{}],465:[function(_dereq_,module,exports){ 'use strict'; var barHover = _dereq_('../bar/hover').hoverPoints; @@ -93742,7 +94370,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return pts; }; -},{"../../plots/cartesian/axes":334,"../bar/hover":395}],465:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334,"../bar/hover":395}],466:[function(_dereq_,module,exports){ 'use strict'; /** @@ -93783,7 +94411,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":517,"./attributes":454,"./calc":459,"./cross_trace_defaults":461,"./defaults":462,"./event_data":463,"./hover":464}],466:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":518,"./attributes":455,"./calc":460,"./cross_trace_defaults":462,"./defaults":463,"./event_data":464,"./hover":465}],467:[function(_dereq_,module,exports){ 'use strict'; @@ -93809,7 +94437,7 @@ module.exports = { } }; -},{}],467:[function(_dereq_,module,exports){ +},{}],468:[function(_dereq_,module,exports){ 'use strict'; var histogramAttrs = _dereq_('../histogram/attributes'); @@ -93818,6 +94446,7 @@ var heatmapAttrs = _dereq_('../heatmap/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -93862,12 +94491,19 @@ module.exports = extendFlat( yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs({}, {keys: 'z'}), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: 'z' + }), + textfont: heatmapAttrs.textfont, showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":454,"../histogram/bin_attributes":456}],468:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":455,"../histogram/bin_attributes":457}],469:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94078,7 +94714,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) { return out; } -},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":455,"../histogram/bin_functions":457,"../histogram/bin_label_vals":458,"../histogram/calc":459,"../histogram/norm_functions":466}],469:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":456,"../histogram/bin_functions":458,"../histogram/bin_label_vals":459,"../histogram/calc":460,"../histogram/norm_functions":467}],470:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94086,6 +94722,7 @@ var Lib = _dereq_('../../lib'); var handleSampleDefaults = _dereq_('./sample_defaults'); var handleStyleDefaults = _dereq_('../heatmap/style_defaults'); var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -94100,11 +94737,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleStyleDefaults(traceIn, traceOut, coerce, layout); colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); coerce('hovertemplate'); + + handleHeatmapLabelDefaults(coerce, layout); + coerce('xhoverformat'); coerce('yhoverformat'); }; -},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/style_defaults":452,"./attributes":467,"./sample_defaults":472}],470:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/style_defaults":453,"./attributes":468,"./sample_defaults":473}],471:[function(_dereq_,module,exports){ 'use strict'; var heatmapHover = _dereq_('../heatmap/hover'); @@ -94130,7 +94770,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return pts; }; -},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],471:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],472:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94153,7 +94793,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":450,"../heatmap/style":451,"../histogram/cross_trace_defaults":461,"../histogram/event_data":463,"./attributes":467,"./defaults":469,"./hover":470}],472:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":451,"../heatmap/style":452,"../histogram/cross_trace_defaults":462,"../histogram/event_data":464,"./attributes":468,"./defaults":470,"./hover":471}],473:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -94190,7 +94830,7 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout coerce('autobiny'); }; -},{"../../lib":287,"../../registry":378}],473:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],474:[function(_dereq_,module,exports){ 'use strict'; var histogram2dAttrs = _dereq_('../histogram2d/attributes'); @@ -94234,7 +94874,9 @@ module.exports = extendFlat({ xhoverformat: axisHoverFormat('x'), yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), - hovertemplate: histogram2dAttrs.hovertemplate + hovertemplate: histogram2dAttrs.hovertemplate, + texttemplate: contourAttrs.texttemplate, + textfont: contourAttrs.textfont }, colorScaleAttrs('', { cLetter: 'z', @@ -94242,7 +94884,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":467}],474:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":468}],475:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94250,6 +94892,7 @@ var Lib = _dereq_('../../lib'); var handleSampleDefaults = _dereq_('../histogram2d/sample_defaults'); var handleContoursDefaults = _dereq_('../contour/contours_defaults'); var handleStyleDefaults = _dereq_('../contour/style_defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -94267,12 +94910,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); - coerce('hovertemplate'); coerce('xhoverformat'); coerce('yhoverformat'); + coerce('hovertemplate'); + if( + traceOut.contours && + traceOut.contours.coloring === 'heatmap' + ) { + handleHeatmapLabelDefaults(coerce, layout); + } }; -},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../histogram2d/sample_defaults":472,"./attributes":473}],475:[function(_dereq_,module,exports){ +},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../heatmap/label_defaults":449,"../histogram2d/sample_defaults":473,"./attributes":474}],476:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94294,7 +94943,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":461,"./attributes":473,"./defaults":474}],476:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":462,"./attributes":474,"./defaults":475}],477:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -94390,7 +95039,7 @@ module.exports = extendFlat({ transforms: undefined }); -},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":478}],477:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":479}],478:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94480,7 +95129,7 @@ function makeScaler(trace) { }; } -},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":478,"./helpers":481,"fast-isnumeric":33}],478:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":479,"./helpers":482,"fast-isnumeric":33}],479:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94546,7 +95195,7 @@ module.exports = { ].join('; ') }; -},{}],479:[function(_dereq_,module,exports){ +},{}],480:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94596,7 +95245,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut._length = null; }; -},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":476,"./constants":478}],480:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":477,"./constants":479}],481:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -94610,7 +95259,7 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],481:[function(_dereq_,module,exports){ +},{}],482:[function(_dereq_,module,exports){ 'use strict'; var probeSync = _dereq_('probe-image-size/sync'); @@ -94623,7 +95272,7 @@ exports.getImageSize = function(src) { return probeSync(buff); }; -},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],482:[function(_dereq_,module,exports){ +},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],483:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -94715,7 +95364,7 @@ module.exports = function hoverPoints(pointData, xval, yval) { })]; }; -},{"../../components/fx":197,"../../lib":287,"./constants":478}],483:[function(_dereq_,module,exports){ +},{"../../components/fx":197,"../../lib":287,"./constants":479}],484:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94736,7 +95385,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./attributes":476,"./calc":477,"./defaults":479,"./event_data":480,"./hover":482,"./plot":484,"./style":485}],484:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./attributes":477,"./calc":478,"./defaults":480,"./event_data":481,"./hover":483,"./plot":485,"./style":486}],485:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -94959,7 +95608,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { }); }; -},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":478,"@plotly/d3":20}],485:[function(_dereq_,module,exports){ +},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":479,"@plotly/d3":20}],486:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -94971,7 +95620,7 @@ module.exports = function style(gd) { }); }; -},{"@plotly/d3":20}],486:[function(_dereq_,module,exports){ +},{"@plotly/d3":20}],487:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -95186,7 +95835,7 @@ module.exports = { } }; -},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],487:[function(_dereq_,module,exports){ +},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],488:[function(_dereq_,module,exports){ 'use strict'; var plots = _dereq_('../../plots/plots'); @@ -95201,7 +95850,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout); }; -},{"../../plots/plots":371}],488:[function(_dereq_,module,exports){ +},{"../../plots/plots":371}],489:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95243,7 +95892,6 @@ function calc(gd, trace) { v = vals[i]; if(!isNumeric(v)) continue; v = +v; - if(v < 0) continue; } else v = 1; label = labels[i]; @@ -95280,6 +95928,9 @@ function calc(gd, trace) { } } + // Drop aggregate sums of value 0 or less + cd = cd.filter(function(elem) { return elem.v >= 0; }); + var shouldSort = (trace.type === 'funnelarea') ? isAggregated : trace.sort; if(shouldSort) cd.sort(function(a, b) { return b.v - a.v; }); @@ -95376,7 +96027,7 @@ module.exports = { generateExtendedColors: generateExtendedColors }; -},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],489:[function(_dereq_,module,exports){ +},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],490:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95499,7 +96150,7 @@ module.exports = { supplyDefaults: supplyDefaults }; -},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":486,"fast-isnumeric":33}],490:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":487,"fast-isnumeric":33}],491:[function(_dereq_,module,exports){ 'use strict'; var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues; @@ -95541,7 +96192,7 @@ module.exports = function eventData(pt, trace) { return out; }; -},{"../../components/fx/helpers":193}],491:[function(_dereq_,module,exports){ +},{"../../components/fx/helpers":193}],492:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -95581,7 +96232,7 @@ exports.getRotationAngle = function(rotation) { return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180; }; -},{"../../lib":287}],492:[function(_dereq_,module,exports){ +},{"../../lib":287}],493:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95605,7 +96256,7 @@ module.exports = { } }; -},{"./attributes":486,"./base_plot":487,"./calc":488,"./defaults":489,"./layout_attributes":493,"./layout_defaults":494,"./plot":495,"./style":496,"./style_one":497}],493:[function(_dereq_,module,exports){ +},{"./attributes":487,"./base_plot":488,"./calc":489,"./defaults":490,"./layout_attributes":494,"./layout_defaults":495,"./plot":496,"./style":497,"./style_one":498}],494:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95624,7 +96275,7 @@ module.exports = { } }; -},{}],494:[function(_dereq_,module,exports){ +},{}],495:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -95641,7 +96292,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { coerce('extendpiecolors'); }; -},{"../../lib":287,"./layout_attributes":493}],495:[function(_dereq_,module,exports){ +},{"../../lib":287,"./layout_attributes":494}],496:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -96821,7 +97472,7 @@ module.exports = { computeTransform: computeTransform }; -},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":490,"./helpers":491,"@plotly/d3":20}],496:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":491,"./helpers":492,"@plotly/d3":20}],497:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -96846,7 +97497,7 @@ module.exports = function style(gd) { }); }; -},{"../bar/uniform_text":404,"./style_one":497,"@plotly/d3":20}],497:[function(_dereq_,module,exports){ +},{"../bar/uniform_text":404,"./style_one":498,"@plotly/d3":20}],498:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -96862,7 +97513,7 @@ module.exports = function styleOne(s, pt, trace) { .call(Color.stroke, lineColor); }; -},{"../../components/color":157,"./helpers":491}],498:[function(_dereq_,module,exports){ +},{"../../components/color":157,"./helpers":492}],499:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96905,7 +97556,7 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":287}],499:[function(_dereq_,module,exports){ +},{"../../lib":287}],500:[function(_dereq_,module,exports){ 'use strict'; var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; @@ -97255,7 +97906,7 @@ module.exports = { }), }; -},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":503}],500:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":504}],501:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -97552,7 +98203,7 @@ module.exports = { getStackOpts: getStackOpts }; -},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":498,"./calc_selection":501,"./colorscale_calc":502,"./subtypes":524,"fast-isnumeric":33}],501:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":499,"./calc_selection":502,"./colorscale_calc":503,"./subtypes":525,"fast-isnumeric":33}],502:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97563,7 +98214,7 @@ module.exports = function calcSelection(cd, trace) { } }; -},{"../../lib":287}],502:[function(_dereq_,module,exports){ +},{"../../lib":287}],503:[function(_dereq_,module,exports){ 'use strict'; var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; @@ -97598,7 +98249,7 @@ module.exports = function calcMarkerColorscale(gd, trace) { } }; -},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":524}],503:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":525}],504:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97618,7 +98269,7 @@ module.exports = { eventDataKeys: [] }; -},{}],504:[function(_dereq_,module,exports){ +},{}],505:[function(_dereq_,module,exports){ 'use strict'; var calc = _dereq_('./calc'); @@ -97790,7 +98441,7 @@ function getInterp(calcTrace, index, position, posAttr) { return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]); } -},{"./calc":500}],505:[function(_dereq_,module,exports){ +},{"./calc":501}],506:[function(_dereq_,module,exports){ 'use strict'; @@ -97820,7 +98471,7 @@ module.exports = function crossTraceDefaults(fullData) { } }; -},{}],506:[function(_dereq_,module,exports){ +},{}],507:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97907,7 +98558,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":287,"../../registry":378,"./attributes":499,"./constants":503,"./fillcolor_defaults":507,"./line_defaults":512,"./line_shape_defaults":514,"./marker_defaults":518,"./period_defaults":519,"./stack_defaults":522,"./subtypes":524,"./text_defaults":525,"./xy_defaults":526}],507:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"./attributes":500,"./constants":504,"./fillcolor_defaults":508,"./line_defaults":513,"./line_shape_defaults":515,"./marker_defaults":519,"./period_defaults":520,"./stack_defaults":523,"./subtypes":525,"./text_defaults":526,"./xy_defaults":527}],508:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -97935,7 +98586,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe )); }; -},{"../../components/color":157,"../../lib":287}],508:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287}],509:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -97953,7 +98604,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":334}],509:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334}],510:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -97993,7 +98644,7 @@ module.exports = function getTraceColor(trace, di) { } }; -},{"../../components/color":157,"./subtypes":524}],510:[function(_dereq_,module,exports){ +},{"../../components/color":157,"./subtypes":525}],511:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -98204,7 +98855,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } }; -},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":509}],511:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":510}],512:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -98241,7 +98892,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./arrays_to_calcdata":498,"./attributes":499,"./calc":500,"./cross_trace_calc":504,"./cross_trace_defaults":505,"./defaults":506,"./format_labels":508,"./hover":510,"./marker_colorbar":517,"./plot":520,"./select":521,"./style":523,"./subtypes":524}],512:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./arrays_to_calcdata":499,"./attributes":500,"./calc":501,"./cross_trace_calc":505,"./cross_trace_defaults":506,"./defaults":507,"./format_labels":509,"./hover":511,"./marker_colorbar":518,"./plot":521,"./select":522,"./style":524,"./subtypes":525}],513:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -98264,7 +98915,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, if(!(opts || {}).noDash) coerce('line.dash'); }; -},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],513:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],514:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -98716,7 +99367,7 @@ module.exports = function linePoints(d, opts) { return segments; }; -},{"../../constants/numerical":267,"../../lib":287,"./constants":503}],514:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"./constants":504}],515:[function(_dereq_,module,exports){ 'use strict'; @@ -98726,7 +99377,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) { if(shape === 'spline') coerce('line.smoothing'); }; -},{}],515:[function(_dereq_,module,exports){ +},{}],516:[function(_dereq_,module,exports){ 'use strict'; var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1}; @@ -98808,7 +99459,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) { return cdscatterSorted; }; -},{}],516:[function(_dereq_,module,exports){ +},{}],517:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -98844,7 +99495,7 @@ module.exports = function makeBubbleSizeFn(trace, factor) { }; }; -},{"fast-isnumeric":33}],517:[function(_dereq_,module,exports){ +},{"fast-isnumeric":33}],518:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -98853,7 +99504,7 @@ module.exports = { max: 'cmax' }; -},{}],518:[function(_dereq_,module,exports){ +},{}],519:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -98926,7 +99577,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":524}],519:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":525}],520:[function(_dereq_,module,exports){ 'use strict'; var dateTick0 = _dereq_('../../lib').dateTick0; @@ -98965,7 +99616,7 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce } }; -},{"../../constants/numerical":267,"../../lib":287}],520:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287}],521:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -99517,7 +100168,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) { }); } -},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":513,"./link_traces":515,"./subtypes":524,"@plotly/d3":20}],521:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":514,"./link_traces":516,"./subtypes":525,"@plotly/d3":20}],522:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -99562,7 +100213,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{"./subtypes":524}],522:[function(_dereq_,module,exports){ +},{"./subtypes":525}],523:[function(_dereq_,module,exports){ 'use strict'; var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps']; @@ -99659,7 +100310,7 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) } }; -},{}],523:[function(_dereq_,module,exports){ +},{}],524:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -99721,7 +100372,7 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],524:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],525:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99751,7 +100402,7 @@ module.exports = { } }; -},{"../../lib":287}],525:[function(_dereq_,module,exports){ +},{"../../lib":287}],526:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99772,7 +100423,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) { } }; -},{"../../lib":287}],526:[function(_dereq_,module,exports){ +},{"../../lib":287}],527:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99808,7 +100459,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) { return len; }; -},{"../../lib":287,"../../registry":378}],527:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],528:[function(_dereq_,module,exports){ 'use strict'; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; @@ -99900,7 +100551,7 @@ module.exports = { hovertemplate: hovertemplateAttrs(), }; -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":499}],528:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":500}],529:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -99972,7 +100623,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../scatter/arrays_to_calcdata":498,"../scatter/calc":500,"../scatter/calc_selection":501,"../scatter/colorscale_calc":502,"fast-isnumeric":33}],529:[function(_dereq_,module,exports){ +},{"../scatter/arrays_to_calcdata":499,"../scatter/calc":501,"../scatter/calc_selection":502,"../scatter/colorscale_calc":503,"fast-isnumeric":33}],530:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100067,7 +100718,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":287,"../scatter/constants":503,"../scatter/fillcolor_defaults":507,"../scatter/line_defaults":512,"../scatter/line_shape_defaults":514,"../scatter/marker_defaults":518,"../scatter/subtypes":524,"../scatter/text_defaults":525,"./attributes":527}],530:[function(_dereq_,module,exports){ +},{"../../lib":287,"../scatter/constants":504,"../scatter/fillcolor_defaults":508,"../scatter/line_defaults":513,"../scatter/line_shape_defaults":515,"../scatter/marker_defaults":519,"../scatter/subtypes":525,"../scatter/text_defaults":526,"./attributes":528}],531:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -100091,7 +100742,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],531:[function(_dereq_,module,exports){ +},{}],532:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -100107,7 +100758,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":334}],532:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334}],533:[function(_dereq_,module,exports){ 'use strict'; var scatterHover = _dereq_('../scatter/hover'); @@ -100173,7 +100824,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return scatterPointData; }; -},{"../scatter/hover":510}],533:[function(_dereq_,module,exports){ +},{"../scatter/hover":511}],534:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -100197,7 +100848,7 @@ module.exports = { } }; -},{"../../plots/ternary":374,"../scatter/marker_colorbar":517,"../scatter/select":521,"../scatter/style":523,"./attributes":527,"./calc":528,"./defaults":529,"./event_data":530,"./format_labels":531,"./hover":532,"./plot":534}],534:[function(_dereq_,module,exports){ +},{"../../plots/ternary":374,"../scatter/marker_colorbar":518,"../scatter/select":522,"../scatter/style":524,"./attributes":528,"./calc":529,"./defaults":530,"./event_data":531,"./format_labels":532,"./hover":533,"./plot":535}],535:[function(_dereq_,module,exports){ 'use strict'; var scatterPlot = _dereq_('../scatter/plot'); @@ -100221,7 +100872,7 @@ module.exports = function plot(gd, ternary, moduleCalcData) { scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer); }; -},{"../scatter/plot":520}],535:[function(_dereq_,module,exports){ +},{"../scatter/plot":521}],536:[function(_dereq_,module,exports){ 'use strict'; var boxAttrs = _dereq_('../box/attributes'); @@ -100377,7 +101028,7 @@ module.exports = { } }; -},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],536:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],537:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100545,7 +101196,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) { return spanOut; } -},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":539}],537:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":540}],538:[function(_dereq_,module,exports){ 'use strict'; var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset; @@ -100580,7 +101231,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) { } }; -},{"../box/cross_trace_calc":407}],538:[function(_dereq_,module,exports){ +},{"../box/cross_trace_calc":407}],539:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100633,7 +101284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!meanLineVisible) traceOut.meanline = {visible: false}; }; -},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":535}],539:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":536}],540:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100698,7 +101349,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) { exports.extractVal = function(o) { return o.v; }; -},{"../../lib":287}],540:[function(_dereq_,module,exports){ +},{"../../lib":287}],541:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100805,7 +101456,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return closeData; }; -},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":539}],541:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":540}],542:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -100830,7 +101481,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":523,"./attributes":535,"./calc":536,"./cross_trace_calc":537,"./defaults":538,"./hover":540,"./layout_attributes":542,"./layout_defaults":543,"./plot":544,"./style":545}],542:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":524,"./attributes":536,"./calc":537,"./cross_trace_calc":538,"./defaults":539,"./hover":541,"./layout_attributes":543,"./layout_defaults":544,"./plot":545,"./style":546}],543:[function(_dereq_,module,exports){ 'use strict'; var boxLayoutAttrs = _dereq_('../box/layout_attributes'); @@ -100845,7 +101496,7 @@ module.exports = { }) }; -},{"../../lib":287,"../box/layout_attributes":412}],543:[function(_dereq_,module,exports){ +},{"../../lib":287,"../box/layout_attributes":412}],544:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100859,7 +101510,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin'); }; -},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":542}],544:[function(_dereq_,module,exports){ +},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":543}],545:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -101041,7 +101692,7 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) { }); }; -},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":513,"./helpers":539,"@plotly/d3":20}],545:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":514,"./helpers":540,"@plotly/d3":20}],546:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -101088,7 +101739,7 @@ module.exports = function style(gd) { }); }; -},{"../../components/color":157,"../scatter/style":523,"@plotly/d3":20}],546:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../scatter/style":524,"@plotly/d3":20}],547:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../plots/cartesian/axes'); @@ -101492,7 +102143,7 @@ function last(array, indices) { return array[indices[indices.length - 1]]; } -},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":549}],547:[function(_dereq_,module,exports){ +},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":550}],548:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -101752,7 +102403,7 @@ function getFilterFunc(opts, d2c, targetCalendar) { } } -},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":549}],548:[function(_dereq_,module,exports){ +},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":550}],549:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -101996,7 +102647,7 @@ function transformOne(trace, state) { return newData; } -},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":549}],549:[function(_dereq_,module,exports){ +},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":550}],550:[function(_dereq_,module,exports){ 'use strict'; exports.pointsAccessorFunction = function(transforms, opts) { @@ -102014,7 +102665,7 @@ exports.pointsAccessorFunction = function(transforms, opts) { return originalPointsAccessor; }; -},{}],550:[function(_dereq_,module,exports){ +},{}],551:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -102152,11 +102803,11 @@ function getSortFunc(opts, d2c) { } } -},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":549}],551:[function(_dereq_,module,exports){ +},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":550}],552:[function(_dereq_,module,exports){ 'use strict'; // package version injected by `npm run preprocess` -exports.version = '2.6.3'; +exports.version = '2.8.0'; },{}]},{},[15])(15) }); diff --git a/static/babybuddy/js/graph.aec8efcce748.js.gz b/static/babybuddy/js/graph.aec8efcce748.js.gz new file mode 100644 index 00000000..42fed2c8 Binary files /dev/null and b/static/babybuddy/js/graph.aec8efcce748.js.gz differ diff --git a/static/babybuddy/js/graph.c70d07f5822f.js.gz b/static/babybuddy/js/graph.c70d07f5822f.js.gz deleted file mode 100644 index 10f2bea1..00000000 Binary files a/static/babybuddy/js/graph.c70d07f5822f.js.gz and /dev/null differ diff --git a/static/babybuddy/js/graph.js b/static/babybuddy/js/graph.js index 0d8b924e..a23be3b0 100644 --- a/static/babybuddy/js/graph.js +++ b/static/babybuddy/js/graph.js @@ -1,5 +1,5 @@ /** -* plotly.js (cartesian) v2.6.3 +* plotly.js (cartesian) v2.8.0 * Copyright 2012-2021, Plotly, Inc. * All rights reserved. * Licensed under the MIT license @@ -77,7 +77,7 @@ for(var selector in rules) { module.exports = _dereq_('../src/transforms/aggregate'); -},{"../src/transforms/aggregate":546}],3:[function(_dereq_,module,exports){ +},{"../src/transforms/aggregate":547}],3:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/bar'); @@ -107,12 +107,12 @@ module.exports = _dereq_('../src/core'); module.exports = _dereq_('../src/transforms/filter'); -},{"../src/transforms/filter":547}],9:[function(_dereq_,module,exports){ +},{"../src/transforms/filter":548}],9:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/transforms/groupby'); -},{"../src/transforms/groupby":548}],10:[function(_dereq_,module,exports){ +},{"../src/transforms/groupby":549}],10:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/heatmap'); @@ -122,22 +122,22 @@ module.exports = _dereq_('../src/traces/heatmap'); module.exports = _dereq_('../src/traces/histogram'); -},{"../src/traces/histogram":465}],12:[function(_dereq_,module,exports){ +},{"../src/traces/histogram":466}],12:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2d'); -},{"../src/traces/histogram2d":471}],13:[function(_dereq_,module,exports){ +},{"../src/traces/histogram2d":472}],13:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2dcontour'); -},{"../src/traces/histogram2dcontour":475}],14:[function(_dereq_,module,exports){ +},{"../src/traces/histogram2dcontour":476}],14:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/image'); -},{"../src/traces/image":483}],15:[function(_dereq_,module,exports){ +},{"../src/traces/image":484}],15:[function(_dereq_,module,exports){ 'use strict'; var Plotly = _dereq_('./core'); @@ -173,22 +173,22 @@ module.exports = Plotly; module.exports = _dereq_('../src/traces/pie'); -},{"../src/traces/pie":492}],17:[function(_dereq_,module,exports){ +},{"../src/traces/pie":493}],17:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/scatterternary'); -},{"../src/traces/scatterternary":533}],18:[function(_dereq_,module,exports){ +},{"../src/traces/scatterternary":534}],18:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/transforms/sort'); -},{"../src/transforms/sort":550}],19:[function(_dereq_,module,exports){ +},{"../src/transforms/sort":551}],19:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/violin'); -},{"../src/traces/violin":541}],20:[function(_dereq_,module,exports){ +},{"../src/traces/violin":542}],20:[function(_dereq_,module,exports){ !function() { var d3 = { version: "3.8.0" @@ -16525,15 +16525,18 @@ var SIG_EXIF = str2arr('Exif\0\0'); module.exports = function (data) { if (data.length < 2) return; - // first marker of the file MUST be 0xFFD8 - if (data[0] !== 0xFF || data[1] !== 0xD8) return; + // first marker of the file MUST be 0xFFD8, + // following by either 0xFFE0, 0xFFE2 or 0xFFE3 + if (data[0] !== 0xFF || data[1] !== 0xD8 || data[2] !== 0xFF) return; var offset = 2; for (;;) { - if (data.length - offset < 2) return; - // not a JPEG marker - if (data[offset++] !== 0xFF) return; + // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68 + for (;;) { + if (data.length - offset < 2) return; + if (data[offset++] === 0xFF) break; + } var code = data[offset++]; var length; @@ -30723,13 +30726,11 @@ var overrideAll = _dereq_('../../plot_api/edit_types').overrideAll; module.exports = overrideAll({ -// TODO: only right is supported currently -// orient: { -// valType: 'enumerated', -// values: ['left', 'right', 'top', 'bottom'], -// dflt: 'right', -// -// }, + orientation: { + valType: 'enumerated', + values: ['h', 'v'], + dflt: 'v', + }, thicknessmode: { valType: 'enumerated', values: ['fraction', 'pixels'], @@ -30752,14 +30753,12 @@ module.exports = overrideAll({ }, x: { valType: 'number', - dflt: 1.02, min: -2, max: 3, }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], - dflt: 'left', }, xpad: { valType: 'number', @@ -30768,14 +30767,12 @@ module.exports = overrideAll({ }, y: { valType: 'number', - dflt: 0.5, min: -2, max: 3, }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], - dflt: 'middle', }, ypad: { valType: 'number', @@ -30807,15 +30804,21 @@ module.exports = overrideAll({ ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { }), + + // ticklabelposition: not used directly, as values depend on orientation + // left/right options are for x axes, and top/bottom options are for y axes ticklabelposition: { valType: 'enumerated', values: [ 'outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', + 'outside right', 'inside right', 'outside bottom', 'inside bottom' ], dflt: 'outside', }, + ticklen: axesAttrs.ticklen, tickwidth: axesAttrs.tickwidth, tickcolor: axesAttrs.tickcolor, @@ -30842,7 +30845,6 @@ module.exports = overrideAll({ side: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', } }, @@ -30901,23 +30903,30 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt); } + var margin = layout.margin || {t: 0, b: 0, l: 0, r: 0}; + var w = layout.width - margin.l - margin.r; + var h = layout.height - margin.t - margin.b; + + var orientation = coerce('orientation'); + var isVertical = orientation === 'v'; + var thicknessmode = coerce('thicknessmode'); coerce('thickness', (thicknessmode === 'fraction') ? - 30 / (layout.width - layout.margin.l - layout.margin.r) : + 30 / (isVertical ? w : h) : 30 ); var lenmode = coerce('lenmode'); coerce('len', (lenmode === 'fraction') ? 1 : - layout.height - layout.margin.t - layout.margin.b + isVertical ? h : w ); - coerce('x'); - coerce('xanchor'); + coerce('x', isVertical ? 1.02 : 0.5); + coerce('xanchor', isVertical ? 'left' : 'center'); coerce('xpad'); - coerce('y'); - coerce('yanchor'); + coerce('y', isVertical ? 0.5 : 1.02); + coerce('yanchor', isVertical ? 'middle' : 'bottom'); coerce('ypad'); Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']); @@ -30927,7 +30936,22 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { coerce('borderwidth'); coerce('bgcolor'); - var ticklabelposition = coerce('ticklabelposition'); + var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, { + ticklabelposition: { + valType: 'enumerated', + dflt: 'outside', + values: isVertical ? [ + 'outside', 'inside', + 'outside top', 'inside top', + 'outside bottom', 'inside bottom' + ] : [ + 'outside', 'inside', + 'outside left', 'inside left', + 'outside right', 'inside right' + ] + } + }, 'ticklabelposition'); + coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div'); handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear'); @@ -30949,7 +30973,7 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { size: Lib.bigFont(tickFont.size) }); Lib.coerceFont(coerce, 'title.font', dfltTitleFont); - coerce('title.side'); + coerce('title.side', isVertical ? 'top' : 'right'); }; },{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/cartesian/prefix_suffix_defaults":353,"../../plots/cartesian/tick_label_defaults":358,"../../plots/cartesian/tick_mark_defaults":359,"../../plots/cartesian/tick_value_defaults":360,"./attributes":158}],161:[function(_dereq_,module,exports){ @@ -31122,18 +31146,20 @@ function makeColorBarData(gd) { } function drawColorBar(g, opts, gd) { + var isVertical = opts.orientation === 'v'; var len = opts.len; var lenmode = opts.lenmode; var thickness = opts.thickness; var thicknessmode = opts.thicknessmode; var outlinewidth = opts.outlinewidth; var borderwidth = opts.borderwidth; + var bgcolor = opts.bgcolor; var xanchor = opts.xanchor; var yanchor = opts.yanchor; var xpad = opts.xpad; var ypad = opts.ypad; var optsX = opts.x; - var optsY = opts.y; + var optsY = isVertical ? opts.y : 1 - opts.y; var fullLayout = gd._fullLayout; var gs = fullLayout._size; @@ -31164,23 +31190,35 @@ function drawColorBar(g, opts, gd) { // when the colorbar itself is pushing the margins. // but then the fractional size is calculated based on the // actual graph size, so that the axes will size correctly. - var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1)); - var thickFrac = thickPx / gs.w; - var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1)); - var lenFrac = lenPx / gs.h; - var xpadFrac = xpad / gs.w; - var yExtraPx = (borderwidth + outlinewidth) / 2; - var ypadFrac = ypad / gs.h; + var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? (isVertical ? gs.w : gs.h) : 1)); + var thickFrac = thickPx / (isVertical ? gs.w : gs.h); + var lenPx = Math.round(len * (lenmode === 'fraction' ? (isVertical ? gs.h : gs.w) : 1)); + var lenFrac = lenPx / (isVertical ? gs.h : gs.w); // x positioning: do it initially just for left anchor, // then fix at the end (since we don't know the width yet) - var uPx = Math.round(optsX * gs.w + xpad); - // for dragging... this is getting a little muddled... - var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0); + var uPx = Math.round(isVertical ? + optsX * gs.w + xpad : + optsY * gs.h + ypad + ); - // y positioning we can do correctly from the start - var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5); - var vPx = Math.round(gs.h * (1 - vFrac)); + var xRatio = {center: 0.5, right: 1}[xanchor] || 0; + var yRatio = {top: 1, middle: 0.5}[yanchor] || 0; + + // for dragging... this is getting a little muddled... + var uFrac = isVertical ? + optsX - xRatio * thickFrac : + optsY - yRatio * thickFrac; + + // y/x positioning (for v/h) we can do correctly from the start + var vFrac = isVertical ? + optsY - yRatio * lenFrac : + optsX - xRatio * lenFrac; + + var vPx = Math.round(isVertical ? + gs.h * (1 - vFrac) : + gs.w * vFrac + ); // stash a few things for makeEditable opts._lenFrac = lenFrac; @@ -31193,12 +31231,23 @@ function drawColorBar(g, opts, gd) { // position can't go in through supplyDefaults // because that restricts it to [0,1] - ax.position = optsX + xpadFrac + thickFrac; + ax.position = thickFrac + (isVertical ? + optsX + xpad / gs.w : + optsY + ypad / gs.h + ); - if(['top', 'bottom'].indexOf(titleSide) !== -1) { + var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1; + + if(isVertical && topOrBottom) { ax.title.side = titleSide; - ax.titlex = optsX + xpadFrac; - ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac); + ax.titlex = optsX + xpad / gs.w; + ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h); + } + + if(!isVertical && !topOrBottom) { + ax.title.side = titleSide; + ax.titley = optsY + ypad / gs.h; + ax.titlex = vFrac + xpad / gs.w; // right side } if(line.color && opts.tickmode === 'auto') { @@ -31223,9 +31272,12 @@ function drawColorBar(g, opts, gd) { // set domain after init, because we may want to // allow it outside [0,1] - ax.domain = [ - vFrac + ypadFrac, - vFrac + lenFrac - ypadFrac + ax.domain = isVertical ? [ + vFrac + ypad / gs.h, + vFrac + lenFrac - ypad / gs.h + ] : [ + vFrac + xpad / gs.w, + vFrac + lenFrac - xpad / gs.w ]; ax.setScale(); @@ -31235,9 +31287,13 @@ function drawColorBar(g, opts, gd) { var titleCont = g.select('.' + cn.cbtitleunshift) .attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t))); + var ticklabelposition = ax.ticklabelposition; + var titleFontSize = ax.title.font.size; + var axLayer = g.select('.' + cn.cbaxis); var titleEl; var titleHeight = 0; + var titleWidth = 0; function drawTitle(titleClass, titleOpts) { var dfltTitleOpts = { @@ -31262,54 +31318,98 @@ function drawColorBar(g, opts, gd) { } function drawDummyTitle() { - if(['top', 'bottom'].indexOf(titleSide) !== -1) { - // draw the title so we know how much room it needs - // when we squish the axis. This one only applies to - // top or bottom titles, not right side. - var x = gs.l + (optsX + xpadFrac) * gs.w; - var fontSize = ax.title.font.size; - var y; + // draw the title so we know how much room it needs + // when we squish the axis. + // On vertical colorbars this only applies to top or bottom titles, not right side. + // On horizontal colorbars this only applies to right, etc. + + if( + (isVertical && topOrBottom) || + (!isVertical && !topOrBottom) + ) { + var x, y; if(titleSide === 'top') { - y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h + - gs.t + 3 + fontSize * 0.75; - } else { - y = (1 - (vFrac + ypadFrac)) * gs.h + - gs.t - 3 - fontSize * 0.25; + x = xpad + gs.l + gs.w * optsX; + y = ypad + gs.t + gs.h * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75; } + + if(titleSide === 'bottom') { + x = xpad + gs.l + gs.w * optsX; + y = ypad + gs.t + gs.h * (1 - vFrac) - 3 - titleFontSize * 0.25; + } + + if(titleSide === 'right') { + y = ypad + gs.t + gs.h * optsY + 3 + titleFontSize * 0.75; + x = xpad + gs.l + gs.w * vFrac; + } + drawTitle(ax._id + 'title', { - attributes: {x: x, y: y, 'text-anchor': 'start'} + attributes: {x: x, y: y, 'text-anchor': isVertical ? 'start' : 'middle'} }); } } function drawCbTitle() { - if(['top', 'bottom'].indexOf(titleSide) === -1) { - var fontSize = ax.title.font.size; - var y = ax._offset + ax._length / 2; - var x = gs.l + (ax.position || 0) * gs.w + ((ax.side === 'right') ? - 10 + fontSize * ((ax.showticklabels ? 1 : 0.5)) : - -10 - fontSize * ((ax.showticklabels ? 0.5 : 0))); + if( + (isVertical && !topOrBottom) || + (!isVertical && topOrBottom) + ) { + var pos = ax.position || 0; + var mid = ax._offset + ax._length / 2; + var x, y; - // the 'h' + is a hack to get around the fact that - // convertToTspans rotates any 'y...' class by 90 degrees. - // TODO: find a better way to control this. - drawTitle('h' + ax._id + 'title', { + if(titleSide === 'right') { + y = mid; + x = gs.l + gs.w * pos + 10 + titleFontSize * ( + ax.showticklabels ? 1 : 0.5 + ); + } else { + x = mid; + + if(titleSide === 'bottom') { + y = gs.t + gs.h * pos + 10 + ( + ticklabelposition.indexOf('inside') === -1 ? + ax.tickfont.size : + 0 + ) + ( + ax.ticks !== 'intside' ? + opts.ticklen || 0 : + 0 + ); + } + + if(titleSide === 'top') { + var nlines = title.text.split('
').length; + y = gs.t + gs.h * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines; + } + } + + drawTitle((isVertical ? + // the 'h' + is a hack to get around the fact that + // convertToTspans rotates any 'y...' class by 90 degrees. + // TODO: find a better way to control this. + 'h' : + 'v' + ) + ax._id + 'title', { avoid: { selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'), side: titleSide, - offsetLeft: gs.l, - offsetTop: 0, - maxShift: fullLayout.width + offsetTop: isVertical ? 0 : gs.t, + offsetLeft: isVertical ? gs.l : 0, + maxShift: isVertical ? fullLayout.width : fullLayout.height }, attributes: {x: x, y: y, 'text-anchor': 'middle'}, - transform: {rotate: '-90', offset: 0} + transform: {rotate: isVertical ? -90 : 0, offset: 0} }); } } function drawAxis() { - if(['top', 'bottom'].indexOf(titleSide) !== -1) { + if( + (!isVertical && !topOrBottom) || + (isVertical && topOrBottom) + ) { // squish the axis top to make room for the title var titleGroup = g.select('.' + cn.cbtitle); var titleText = titleGroup.select('text'); @@ -31321,39 +31421,63 @@ function drawColorBar(g, opts, gd) { if(titleText.node()) { lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING; } + + var bb; if(mathJaxNode) { - titleHeight = Drawing.bBox(mathJaxNode).height; + bb = Drawing.bBox(mathJaxNode); + titleWidth = bb.width; + titleHeight = bb.height; if(titleHeight > lineSize) { // not entirely sure how mathjax is doing // vertical alignment, but this seems to work. titleTrans[1] -= (titleHeight - lineSize) / 2; } } else if(titleText.node() && !titleText.classed(cn.jsPlaceholder)) { - titleHeight = Drawing.bBox(titleText.node()).height; + bb = Drawing.bBox(titleText.node()); + titleWidth = bb.width; + titleHeight = bb.height; } - if(titleHeight) { - // buffer btwn colorbar and title - // TODO: configurable - titleHeight += 5; - if(titleSide === 'top') { - ax.domain[1] -= titleHeight / gs.h; - titleTrans[1] *= -1; - } else { - ax.domain[0] += titleHeight / gs.h; - var nlines = svgTextUtils.lineCount(titleText); - titleTrans[1] += (1 - nlines) * lineSize; + if(isVertical) { + if(titleHeight) { + // buffer btwn colorbar and title + // TODO: configurable + titleHeight += 5; + + if(titleSide === 'top') { + ax.domain[1] -= titleHeight / gs.h; + titleTrans[1] *= -1; + } else { + ax.domain[0] += titleHeight / gs.h; + var nlines = svgTextUtils.lineCount(titleText); + titleTrans[1] += (1 - nlines) * lineSize; + } + + titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); + ax.setScale(); } + } else { // horizontal colorbars + if(titleWidth) { + if(titleSide === 'right') { + ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w; + } - titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); - ax.setScale(); + titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1])); + ax.setScale(); + } } } g.selectAll('.' + cn.cbfills + ',.' + cn.cblines) - .attr('transform', strTranslate(0, Math.round(gs.h * (1 - ax.domain[1])))); + .attr('transform', isVertical ? + strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) : + strTranslate(Math.round(gs.w * ax.domain[0]), 0) + ); - axLayer.attr('transform', strTranslate(0, Math.round(-gs.t))); + axLayer.attr('transform', isVertical ? + strTranslate(0, Math.round(-gs.t)) : + strTranslate(Math.round(-gs.l), 0) + ); var fills = g.select('.' + cn.cbfills) .selectAll('rect.' + cn.cbfill) @@ -31379,20 +31503,22 @@ function drawColorBar(g, opts, gd) { // offset the side adjoining the next rectangle so they // overlap, to prevent antialiasing gaps - z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]); - + if(isVertical) { + z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]); + } /* else { + // TODO: horizontal case + } */ // Colorbar cannot currently support opacities so we // use an opaque fill even when alpha channels present - var fillEl = d3.select(this).attr({ - x: uPx, - width: Math.max(thickPx, 2), - y: d3.min(z), - height: Math.max(d3.max(z) - d3.min(z), 2), - }); + var fillEl = d3.select(this) + .attr(isVertical ? 'x' : 'y', uPx) + .attr(isVertical ? 'y' : 'x', d3.min(z)) + .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2)); if(opts._fillgradient) { - Drawing.gradient(fillEl, gd, opts._id, 'vertical', opts._fillgradient, 'fill'); + Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill'); } else { // tinycolor can't handle exponents and // at this scale, removing it makes no difference. @@ -31408,9 +31534,15 @@ function drawColorBar(g, opts, gd) { .classed(cn.cbline, true); lines.exit().remove(); lines.each(function(d) { + var a = uPx; + var b = (Math.round(ax.c2p(d)) + (line.width / 2) % 1); + d3.select(this) - .attr('d', 'M' + uPx + ',' + - (Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx) + .attr('d', 'M' + + (isVertical ? a + ',' + b : b + ',' + a) + + (isVertical ? 'h' : 'v') + + thickPx + ) .call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash); }); @@ -31443,82 +31575,211 @@ function drawColorBar(g, opts, gd) { // TODO: why are we redrawing multiple times now with this? // I guess autoMargin doesn't like being post-promise? function positionCB() { + var bb; var innerThickness = thickPx + outlinewidth / 2; - if(ax.ticklabelposition.indexOf('inside') === -1) { - innerThickness += Drawing.bBox(axLayer.node()).width; + if(ticklabelposition.indexOf('inside') === -1) { + bb = Drawing.bBox(axLayer.node()); + innerThickness += isVertical ? bb.width : bb.height; } titleEl = titleCont.select('text'); + var titleWidth = 0; + + var topSideVertical = isVertical && titleSide === 'top'; + var rightSideHorizontal = !isVertical && titleSide === 'right'; + + var moveY = 0; + if(titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) { + var _titleHeight; + var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node(); - var titleWidth; - if(mathJaxNode && ['top', 'bottom'].indexOf(titleSide) !== -1) { - titleWidth = Drawing.bBox(mathJaxNode).width; + if(mathJaxNode && ( + (isVertical && topOrBottom) || + (!isVertical && !topOrBottom) + )) { + bb = Drawing.bBox(mathJaxNode); + titleWidth = bb.width; + _titleHeight = bb.height; } else { // note: the formula below works for all title sides, // (except for top/bottom mathjax, above) // but the weird gs.l is because the titleunshift // transform gets removed by Drawing.bBox - titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l; + bb = Drawing.bBox(titleCont.node()); + titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx); + _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx); + + if( + !isVertical && titleSide === 'top' + ) { + innerThickness += bb.height; + moveY = bb.height; + } } - innerThickness = Math.max(innerThickness, titleWidth); + + if(rightSideHorizontal) { + titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0)); + + titleWidth *= 2; + } + + innerThickness = Math.max(innerThickness, + isVertical ? titleWidth : _titleHeight + ); } - var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2; + var outerThickness = (isVertical ? + xpad : + ypad + ) * 2 + innerThickness + borderwidth + outlinewidth / 2; - g.select('.' + cn.cbbg).attr({ - x: uPx - xpad - (borderwidth + outlinewidth) / 2, - y: vPx - lenPx - yExtraPx, - width: Math.max(outerThickness, 2), - height: Math.max(lenPx + 2 * yExtraPx, 2) - }) - .call(Color.fill, opts.bgcolor) + var hColorbarMoveTitle = 0; + if(!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) { + hColorbarMoveTitle = outerThickness / 2; + + outerThickness += hColorbarMoveTitle; + moveY += hColorbarMoveTitle; + } + fullLayout._hColorbarMoveTitle = hColorbarMoveTitle; + fullLayout._hColorbarMoveCBTitle = moveY; + + var extraW = borderwidth + outlinewidth; + + g.select('.' + cn.cbbg) + .attr('x', (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0)) + .attr('y', (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle)) + .attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2)) + .call(Color.fill, bgcolor) .call(Color.stroke, opts.bordercolor) .style('stroke-width', borderwidth); - g.selectAll('.' + cn.cboutline).attr({ - x: uPx, - y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0), - width: Math.max(thickPx, 2), - height: Math.max(lenPx - 2 * ypad - titleHeight, 2) - }) + var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0; + + g.selectAll('.' + cn.cboutline) + .attr('x', (isVertical ? uPx : vPx + xpad) + moveX) + .attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0)) + .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2)) + .attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ? + 2 * ypad + titleHeight : + 2 * xpad + moveX + ), 2)) .call(Color.stroke, opts.outlinecolor) .style({ fill: 'none', 'stroke-width': outlinewidth }); - // fix positioning for xanchor!='left' - var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness; - g.attr('transform', strTranslate(gs.l - xoffset, gs.t)); + g.attr('transform', strTranslate( + gs.l - (isVertical ? xRatio * outerThickness : 0), + gs.t - (isVertical ? 0 : (1 - yRatio) * outerThickness - moveY) + )); + + if(!isVertical && ( + borderwidth || ( + tinycolor(bgcolor).getAlpha() && + !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor) + ) + )) { + // for horizontal colorbars when there is a border line or having different background color + // hide/adjust x positioning for the first/last tick labels if they go outside the border + var tickLabels = axLayer.selectAll('text'); + var numTicks = tickLabels[0].length; + + var border = g.select('.' + cn.cbbg).node(); + var oBb = Drawing.bBox(border); + var oTr = Drawing.getTranslate(g); + + var TEXTPAD = 2; + + tickLabels.each(function(d, i) { + var first = 0; + var last = numTicks - 1; + if(i === first || i === last) { + var iBb = Drawing.bBox(this); + var iTr = Drawing.getTranslate(this); + var deltaX; + + if(i === last) { + var iRight = iBb.right + iTr.x; + var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX; + + deltaX = oRight - iRight; + if(deltaX > 0) deltaX = 0; + } else if(i === first) { + var iLeft = iBb.left + iTr.x; + var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD; + + deltaX = oLeft - iLeft; + if(deltaX < 0) deltaX = 0; + } + + if(deltaX) { + if(numTicks < 3) { // adjust position + this.setAttribute('transform', + 'translate(' + deltaX + ',0) ' + + this.getAttribute('transform') + ); + } else { // hide + this.setAttribute('visibility', 'hidden'); + } + } + } + }); + } // auto margin adjustment var marginOpts = {}; - var tFrac = FROM_TL[yanchor]; - var bFrac = FROM_BR[yanchor]; - if(lenmode === 'pixels') { - marginOpts.y = optsY; - marginOpts.t = lenPx * tFrac; - marginOpts.b = lenPx * bFrac; - } else { - marginOpts.t = marginOpts.b = 0; - marginOpts.yt = optsY + len * tFrac; - marginOpts.yb = optsY - len * bFrac; - } - var lFrac = FROM_TL[xanchor]; var rFrac = FROM_BR[xanchor]; - if(thicknessmode === 'pixels') { - marginOpts.x = optsX; - marginOpts.l = outerThickness * lFrac; - marginOpts.r = outerThickness * rFrac; - } else { - var extraThickness = outerThickness - thickPx; - marginOpts.l = extraThickness * lFrac; - marginOpts.r = extraThickness * rFrac; - marginOpts.xl = optsX - thickness * lFrac; - marginOpts.xr = optsX + thickness * rFrac; + var tFrac = FROM_TL[yanchor]; + var bFrac = FROM_BR[yanchor]; + + var extraThickness = outerThickness - thickPx; + if(isVertical) { + if(lenmode === 'pixels') { + marginOpts.y = optsY; + marginOpts.t = lenPx * tFrac; + marginOpts.b = lenPx * bFrac; + } else { + marginOpts.t = marginOpts.b = 0; + marginOpts.yt = optsY + len * tFrac; + marginOpts.yb = optsY - len * bFrac; + } + + if(thicknessmode === 'pixels') { + marginOpts.x = optsX; + marginOpts.l = outerThickness * lFrac; + marginOpts.r = outerThickness * rFrac; + } else { + marginOpts.l = extraThickness * lFrac; + marginOpts.r = extraThickness * rFrac; + marginOpts.xl = optsX - thickness * lFrac; + marginOpts.xr = optsX + thickness * rFrac; + } + } else { // horizontal colorbars + if(lenmode === 'pixels') { + marginOpts.x = optsX; + marginOpts.l = lenPx * lFrac; + marginOpts.r = lenPx * rFrac; + } else { + marginOpts.l = marginOpts.r = 0; + marginOpts.xl = optsX + len * lFrac; + marginOpts.xr = optsX - len * rFrac; + } + + if(thicknessmode === 'pixels') { + marginOpts.y = 1 - optsY; + marginOpts.t = outerThickness * tFrac; + marginOpts.b = outerThickness * bFrac; + } else { + marginOpts.t = extraThickness * tFrac; + marginOpts.b = extraThickness * bFrac; + marginOpts.yt = optsY - thickness * tFrac; + marginOpts.yb = optsY + thickness * bFrac; + } } Plots.autoMargin(gd, opts._id, marginOpts); @@ -31535,6 +31796,7 @@ function drawColorBar(g, opts, gd) { } function makeEditable(g, opts, gd) { + var isVertical = opts.orientation === 'v'; var fullLayout = gd._fullLayout; var gs = fullLayout._size; var t0, xf, yf; @@ -31549,9 +31811,13 @@ function makeEditable(g, opts, gd) { moveFn: function(dx, dy) { g.attr('transform', t0 + strTranslate(dx, dy)); - xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac, + xf = dragElement.align( + (isVertical ? opts._uFrac : opts._vFrac) + (dx / gs.w), + isVertical ? opts._thickFrac : opts._lenFrac, 0, 1, opts.xanchor); - yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac, + yf = dragElement.align( + (isVertical ? opts._vFrac : (1 - opts._uFrac)) - (dy / gs.h), + isVertical ? opts._lenFrac : opts._thickFrac, 0, 1, opts.yanchor); var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor); @@ -31628,6 +31894,8 @@ function calcLevels(gd, opts, zrange) { function mockColorBarAxis(gd, opts, zrange) { var fullLayout = gd._fullLayout; + var isVertical = opts.orientation === 'v'; + var cbAxisIn = { type: 'linear', range: zrange, @@ -31658,17 +31926,19 @@ function mockColorBarAxis(gd, opts, zrange) { title: opts.title, showline: true, anchor: 'free', - side: 'right', + side: isVertical ? 'right' : 'bottom', position: 1 }; + var letter = isVertical ? 'y' : 'x'; + var cbAxisOut = { type: 'linear', - _id: 'y' + opts._id + _id: letter + opts._id }; var axisOptions = { - letter: 'y', + letter: letter, font: fullLayout.font, noHover: true, noTickson: true, @@ -34130,7 +34400,7 @@ var TEXTOFFSETSIGN = { start: 1, end: -1, middle: 0, bottom: 1, top: -1 }; -function textPointPosition(s, textPosition, fontSize, markerRadius) { +function textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) { var group = d3.select(s.node().parentNode); var v = textPosition.indexOf('top') !== -1 ? @@ -34152,7 +34422,9 @@ function textPointPosition(s, textPosition, fontSize, markerRadius) { // fix the overall text group position s.attr('text-anchor', h); - group.attr('transform', strTranslate(dx, dy)); + if(!dontTouchParent) { + group.attr('transform', strTranslate(dx, dy)); + } } function extracTextFontSize(d, trace) { @@ -34222,7 +34494,8 @@ drawing.selectedTextStyle = function(s, trace) { var fontSize = extracTextFontSize(d, trace); Color.fill(tx, tc); - textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc); + var dontTouchParent = Registry.traceIs(trace, 'bar-like'); + textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent); }); }; @@ -34644,7 +34917,7 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) { }); }; -},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":516,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){ +},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":517,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -35743,7 +36016,7 @@ function errorCoords(d, xa, ya) { return out; } -},{"../../traces/scatter/subtypes":524,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){ +},{"../../traces/scatter/subtypes":525,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -37278,7 +37551,9 @@ function createHoverText(hoverData, opts) { orientation: 'v' } }; - var mockLayoutOut = {}; + var mockLayoutOut = { + font: font + }; legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData); var mockLegend = mockLayoutOut.legend; @@ -37319,7 +37594,8 @@ function createHoverText(hoverData, opts) { // Draw unified hover label mockLegend._inHover = true; - mockLegend._groupTitleFont = font; + mockLegend._groupTitleFont = hoverlabel.grouptitlefont; + legendDraw(gd, mockLegend); // Position the hover @@ -38321,9 +38597,11 @@ var isUnifiedHover = _dereq_('./helpers').isUnifiedHover; module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) { opts = opts || {}; + var hasLegend = contOut.legend; + function inheritFontAttr(attr) { if(!opts.font[attr]) { - opts.font[attr] = contOut.legend ? contOut.legend.font[attr] : contOut.font[attr]; + opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr]; } } @@ -38334,7 +38612,7 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts inheritFontAttr('family'); inheritFontAttr('color'); - if(contOut.legend) { + if(hasLegend) { if(!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor); if(!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor; } else { @@ -38443,11 +38721,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) { var constants = _dereq_('./constants'); -var fontAttrs = _dereq_('../../plots/font_attributes')({ +var fontAttrs = _dereq_('../../plots/font_attributes'); + +var font = fontAttrs({ editType: 'none', }); -fontAttrs.family.dflt = constants.HOVERFONT; -fontAttrs.size.dflt = constants.HOVERFONTSIZE; +font.family.dflt = constants.HOVERFONT; +font.size.dflt = constants.HOVERFONTSIZE; module.exports = { clickmode: { @@ -38503,7 +38783,10 @@ module.exports = { valType: 'color', editType: 'none', }, - font: fontAttrs, + font: font, + grouptitlefont: fontAttrs({ + editType: 'none', + }), align: { valType: 'enumerated', values: ['left', 'right', 'auto'], @@ -38516,6 +38799,7 @@ module.exports = { dflt: 15, editType: 'none', }, + editType: 'none' }, selectdirection: { @@ -38563,6 +38847,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } handleHoverLabelDefaults(layoutIn, layoutOut, coerce); + + Lib.coerceFont(coerce, 'hoverlabel.grouptitlefont', layoutOut.hoverlabel.font); }; },{"../../lib":287,"./hoverlabel_defaults":195,"./hovermode_defaults":196,"./layout_attributes":198}],200:[function(_dereq_,module,exports){ @@ -39446,6 +39732,9 @@ module.exports = { font: fontAttrs({ editType: 'legend', }), + grouptitlefont: fontAttrs({ + editType: 'legend', + }), orientation: { valType: 'enumerated', values: ['v', 'h'], @@ -39569,6 +39858,7 @@ var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); var Template = _dereq_('../../plot_api/plot_template'); +var plotsAttrs = _dereq_('../../plots/attributes'); var attributes = _dereq_('./attributes'); var basePlotLayoutAttributes = _dereq_('../../plots/layout_attributes'); var helpers = _dereq_('./helpers'); @@ -39576,13 +39866,30 @@ var helpers = _dereq_('./helpers'); module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { var containerIn = layoutIn.legend || {}; + var containerOut = Template.newContainer(layoutOut, 'legend'); + + function coerce(attr, dflt) { + return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); + } + + var trace; + var traceCoerce = function(attr, dflt) { + var traceIn = trace._input; + var traceOut = trace; + return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt); + }; + + var globalFont = layoutOut.font || {}; + var grouptitlefont = Lib.coerceFont(coerce, 'grouptitlefont', Lib.extendFlat({}, globalFont, { + size: Math.round(globalFont.size * 1.1) + })); var legendTraceCount = 0; var legendReallyHasATrace = false; var defaultOrder = 'normal'; for(var i = 0; i < fullData.length; i++) { - var trace = fullData[i]; + trace = fullData[i]; if(!trace.visible) continue; @@ -39609,6 +39916,8 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { legendTraceCount++; } } + + Lib.coerceFont(traceCoerce, 'legendgrouptitle.font', grouptitlefont); } if((Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') || @@ -39627,14 +39936,11 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { basePlotLayoutAttributes, 'showlegend', legendReallyHasATrace && legendTraceCount > 1); + // delete legend + if(showLegend === false) layoutOut.legend = undefined; + if(showLegend === false && !containerIn.uirevision) return; - var containerOut = Template.newContainer(layoutOut, 'legend'); - - function coerce(attr, dflt) { - return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); - } - coerce('uirevision', layoutOut.uirevision); if(showLegend === false) return; @@ -39695,7 +40001,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { } }; -},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/attributes":330,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -41668,7 +41974,7 @@ function dimAttr(v, dflt, max) { return v; } -},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":491,"../../traces/pie/style_one":497,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":492,"../../traces/pie/style_one":498,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -42902,7 +43208,7 @@ function fillCustomButton(customButtons) { return customButtons; } -},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":524,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":525,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -44831,7 +45137,7 @@ module.exports = templatedArray('shape', { editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":499,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){ +},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":500,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -48147,8 +48453,10 @@ function draw(gd, titleClass, options) { var elShouldExist = txt || editable; + var hColorbarMoveTitle; if(!group) { group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass); + hColorbarMoveTitle = fullLayout._hColorbarMoveTitle; } var el = group.selectAll('text') @@ -48172,13 +48480,17 @@ function draw(gd, titleClass, options) { function drawTitle(titleEl) { var transformVal; + if(!transform && hColorbarMoveTitle) { + transform = {}; + } + if(transform) { transformVal = ''; if(transform.rotate) { transformVal += 'rotate(' + [transform.rotate, attributes.x, attributes.y] + ')'; } - if(transform.offset) { - transformVal += strTranslate(0, transform.offset); + if(transform.offset || hColorbarMoveTitle) { + transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0)); } } else { transformVal = null; @@ -49975,7 +50287,7 @@ exports.Fx = { exports.Snapshot = _dereq_('./snapshot'); exports.PlotSchema = _dereq_('./plot_api/plot_schema'); -},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":511,"./version":551,"native-promise-only":72}],270:[function(_dereq_,module,exports){ +},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":512,"./version":552,"native-promise-only":72}],270:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -59636,7 +59948,7 @@ function cleanDeprecatedAttributeKeys(aobj) { if((key === 'title' || oldAxisTitleRegex.test(key) || colorbarRegex.test(key)) && (typeof value === 'string' || typeof value === 'number')) { replace(key, key.replace('title', 'title.text')); - } else if(key.indexOf('titlefont') > -1) { + } else if(key.indexOf('titlefont') > -1 && key.indexOf('grouptitlefont') === -1) { replace(key, key.replace('titlefont', 'title.font')); } else if(key.indexOf('titleposition') > -1) { replace(key, key.replace('titleposition', 'title.position')); @@ -60313,7 +60625,8 @@ function findUIPattern(key, patternSpecs) { var spec = patternSpecs[i]; var match = key.match(spec.pattern); if(match) { - return {head: match[1], attr: spec.attr}; + var head = match[1] || ''; + return {head: head, tail: key.substr(head.length + 1), attr: spec.attr}; } } } @@ -60365,26 +60678,54 @@ function valsMatch(v1, v2) { function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { var layoutPreGUI = oldFullLayout._preGUI; - var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal; + var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail; var bothInheritAutorange = []; + var newAutorangeIn = {}; var newRangeAccepted = {}; for(key in layoutPreGUI) { match = findUIPattern(key, layoutUIControlPatterns); if(match) { - revAttr = match.attr || (match.head + '.uirevision'); + head = match.head; + tail = match.tail; + revAttr = match.attr || (head + '.uirevision'); oldRev = nestedProperty(oldFullLayout, revAttr).get(); newRev = oldRev && getNewRev(revAttr, layout); + if(newRev && (newRev === oldRev)) { preGUIVal = layoutPreGUI[key]; if(preGUIVal === null) preGUIVal = undefined; newNP = nestedProperty(layout, key); newVal = newNP.get(); + if(valsMatch(newVal, preGUIVal)) { - if(newVal === undefined && key.substr(key.length - 9) === 'autorange') { - bothInheritAutorange.push(key.substr(0, key.length - 10)); + if(newVal === undefined && tail === 'autorange') { + bothInheritAutorange.push(head); } newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get())); continue; + } else if(tail === 'autorange' || tail.substr(0, 6) === 'range[') { + // Special case for (auto)range since we push it back into the layout + // so all null should be treated equivalently to autorange: true with any range + var pre0 = layoutPreGUI[head + '.range[0]']; + var pre1 = layoutPreGUI[head + '.range[1]']; + var preAuto = layoutPreGUI[head + '.autorange']; + if(preAuto || (preAuto === null && pre0 === null && pre1 === null)) { + // Only read the input layout once and stash the result, + // so we get it before we start modifying it + if(!(head in newAutorangeIn)) { + var newContainer = nestedProperty(layout, head).get(); + newAutorangeIn[head] = newContainer && ( + newContainer.autorange || + (newContainer.autorange !== false && ( + !newContainer.range || newContainer.range.length !== 2) + ) + ); + } + if(newAutorangeIn[head]) { + newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get())); + continue; + } + } } } } else { @@ -60395,12 +60736,12 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { // so remove it from _preGUI for next time. delete layoutPreGUI[key]; - if(key.substr(key.length - 8, 6) === 'range[') { - newRangeAccepted[key.substr(0, key.length - 9)] = 1; + if(match && match.tail.substr(0, 6) === 'range[') { + newRangeAccepted[match.head] = 1; } } - // Special logic for `autorange`, since it interacts with `range`: + // More special logic for `autorange`, since it interacts with `range`: // If the new figure's matching `range` was kept, and `autorange` // wasn't supplied explicitly in either the original or the new figure, // we shouldn't alter that - but we may just have done that, so fix it. @@ -64332,7 +64673,7 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":551,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){ +},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":552,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -77475,6 +77816,9 @@ module.exports = function(opts) { // TODO - that's uber hacky... better solution? }; + if(opts.autoSize) attrs.size.dflt = 'auto'; + if(opts.autoColor) attrs.color.dflt = 'auto'; + if(opts.arrayOk) { attrs.family.arrayOk = true; attrs.size.arrayOk = true; @@ -77834,6 +78178,7 @@ module.exports = { valType: 'boolean', editType: 'legend', }, + colorway: { valType: 'colorlist', dflt: colorAttrs.defaults, @@ -79246,13 +79591,7 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac ); coerce('legendgroup'); - var titleText = coerce('legendgrouptitle.text'); - if(titleText) { - Lib.coerceFont(coerce, 'legendgrouptitle.font', Lib.extendFlat({}, layout.font, { - size: Math.round(layout.font.size * 1.1) // default to larger font size - })); - } - + coerce('legendgrouptitle.text'); coerce('legendrank'); traceOut._dfltShowLegend = true; @@ -79400,16 +79739,14 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('autotypenumbers'); - var globalFont = Lib.coerceFont(coerce, 'font'); + var font = Lib.coerceFont(coerce, 'font'); + var fontSize = font.size; + + Lib.coerceFont(coerce, 'title.font', Lib.extendFlat({}, font, { + size: Math.round(fontSize * 1.4) + })); coerce('title.text', layoutOut._dfltTitle.plot); - - Lib.coerceFont(coerce, 'title.font', { - family: globalFont.family, - size: Math.round(globalFont.size * 1.4), - color: globalFont.color - }); - coerce('title.xref'); coerce('title.yref'); coerce('title.x'); @@ -83977,7 +84314,7 @@ module.exports = { } }; -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":499,"./constants":390}],389:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500,"./constants":390}],389:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -84052,7 +84389,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":501,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":502,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -85019,7 +85356,7 @@ module.exports = { handleText: handleText }; -},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":519,"../scatter/xy_defaults":526,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":520,"../scatter/xy_defaults":527,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace) { @@ -85364,7 +85701,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../scatter/marker_colorbar":517,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../scatter/marker_colorbar":518,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){ 'use strict'; @@ -85879,7 +86216,7 @@ function appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCom } transform.fontSize = font.size; - recordMinTextSize(trace.type, transform, fullLayout); + recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout); calcBar.transform = transform; transition(textSelection, fullLayout, opts, makeOnCompleteCallback) @@ -86910,7 +87247,7 @@ module.exports = { } }; -},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":499}],406:[function(_dereq_,module,exports){ +},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":500}],406:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -87891,7 +88228,7 @@ module.exports = { handlePointsDefaults: handlePointsDefaults }; -},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":519,"./attributes":405}],409:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":520,"./attributes":405}],409:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -88772,6 +89109,10 @@ module.exports = extendFlat({ yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), hovertemplate: heatmapAttrs.hovertemplate, + texttemplate: extendFlat({}, heatmapAttrs.texttemplate, { + }), + textfont: extendFlat({}, heatmapAttrs.textfont, { + }), hoverongaps: heatmapAttrs.hoverongaps, connectgaps: extendFlat({}, heatmapAttrs.connectgaps, { }), @@ -88887,7 +89228,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":499}],418:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":500}],418:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -89406,6 +89747,7 @@ var handlePeriodDefaults = _dereq_('../scatter/period_defaults'); var handleConstraintDefaults = _dereq_('./constraint_defaults'); var handleContoursDefaults = _dereq_('./contours_defaults'); var handleStyleDefaults = _dereq_('./style_defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -89430,8 +89772,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('hovertext'); - coerce('hovertemplate'); coerce('hoverongaps'); + coerce('hovertemplate'); var isConstraint = (coerce('contours.type') === 'constraint'); coerce('connectgaps', Lib.isArray1D(traceOut.z)); @@ -89442,9 +89784,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); } + + if( + traceOut.contours && + traceOut.contours.coloring === 'heatmap' + ) { + handleHeatmapLabelDefaults(coerce, layout); + } }; -},{"../../lib":287,"../heatmap/xyz_defaults":453,"../scatter/period_defaults":519,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){ +},{"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/xyz_defaults":454,"../scatter/period_defaults":520,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90718,7 +91067,7 @@ function makeClipMask(cd0) { return z; } -},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":450,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){ +},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":451,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -90886,7 +91235,7 @@ module.exports = function style(gd) { heatmapStyle(gd); }; -},{"../../components/drawing":179,"../heatmap/style":451,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../heatmap/style":452,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){ 'use strict'; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -90927,8 +91276,10 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout, var scatterAttrs = _dereq_('../scatter/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var fontAttrs = _dereq_('../../plots/font_attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -91007,6 +91358,19 @@ module.exports = extendFlat({ zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs(), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: ['x', 'y', 'z', 'text'] + }), + textfont: fontAttrs({ + editType: 'plot', + autoSize: true, + autoColor: true, + colorEditType: 'style', + }), + showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, { transforms: undefined @@ -91014,7 +91378,7 @@ module.exports = extendFlat({ colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../scatter/attributes":499}],440:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500}],440:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -91215,7 +91579,7 @@ function dropZonBreaks(x, y, z) { return newZ; } -},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":468,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":449}],441:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":469,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":450}],441:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91379,6 +91743,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, var Lib = _dereq_('../../lib'); var handleXYZDefaults = _dereq_('./xyz_defaults'); +var handleHeatmapLabelDefaults = _dereq_('./label_defaults'); var handlePeriodDefaults = _dereq_('../scatter/period_defaults'); var handleStyleDefaults = _dereq_('./style_defaults'); var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -91404,6 +91769,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('hovertext'); coerce('hovertemplate'); + handleHeatmapLabelDefaults(coerce, layout); handleStyleDefaults(traceIn, traceOut, coerce, layout); coerce('hoverongaps'); @@ -91412,7 +91778,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); }; -},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":519,"./attributes":439,"./style_defaults":452,"./xyz_defaults":453}],445:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":520,"./attributes":439,"./label_defaults":449,"./style_defaults":453,"./xyz_defaults":454}],445:[function(_dereq_,module,exports){ 'use strict'; var maxRowLength = _dereq_('../../lib').maxRowLength; @@ -91662,7 +92028,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":450,"./style":451}],448:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":451,"./style":452}],448:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -91790,6 +92156,21 @@ function iterateInterp2d(z, emptyPoints, overshoot) { },{"../../lib":287}],449:[function(_dereq_,module,exports){ 'use strict'; +var Lib = _dereq_('../../lib'); + +module.exports = function handleHeatmapLabelDefaults(coerce, layout) { + coerce('texttemplate'); + + var fontDflt = Lib.extendFlat({}, layout.font, { + color: 'auto', + size: 'auto' + }); + Lib.coerceFont(coerce, 'textfont', fontDflt); +}; + +},{"../../lib":287}],450:[function(_dereq_,module,exports){ +'use strict'; + var Registry = _dereq_('../../registry'); var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -91867,16 +92248,34 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks, return arrayOut; }; -},{"../../lib":287,"../../registry":378}],450:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],451:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); +var Drawing = _dereq_('../../components/drawing'); +var Axes = _dereq_('../../plots/cartesian/axes'); var Lib = _dereq_('../../lib'); +var svgTextUtils = _dereq_('../../lib/svg_text_utils'); +var formatLabels = _dereq_('../scatter/format_labels'); +var Color = _dereq_('../../components/color'); +var extractOpts = _dereq_('../../components/colorscale').extractOpts; var makeColorScaleFuncFromTrace = _dereq_('../../components/colorscale').makeColorScaleFuncFromTrace; var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces'); +var alignmentConstants = _dereq_('../../constants/alignment'); +var LINE_SPACING = alignmentConstants.LINE_SPACING; + +var labelClass = 'heatmap-label'; + +function selectLabels(plotGroup) { + return plotGroup.selectAll('g.' + labelClass); +} + +function removeLabels(plotGroup) { + selectLabels(plotGroup).remove(); +} module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var xa = plotinfo.xaxis; @@ -91886,6 +92285,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var plotGroup = d3.select(this); var cd0 = cd[0]; var trace = cd0.trace; + var xGap = trace.xgap || 0; + var yGap = trace.ygap || 0; var z = cd0.z; var x = cd0.x; @@ -91901,7 +92302,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var xrev = false; var yrev = false; - var left, right, temp, top, bottom, i; + var left, right, temp, top, bottom, i, j, k; // TODO: if there are multiple overlapping categorical heatmaps, // or if we allow category sorting, then the categories may not be @@ -91982,6 +92383,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { if(isOffScreen) { var noImage = plotGroup.selectAll('image').data([]); noImage.exit().remove(); + + removeLabels(plotGroup); return; } @@ -92037,7 +92440,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var gcount = 0; var bcount = 0; - var xb, j, xi, v, row, c; + var xb, xi, v, row, c; function setColor(v, pixsize) { if(v !== undefined) { @@ -92148,8 +92551,6 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { } else { // zsmooth = false -> filling potentially large bricks works fastest with fillRect // gaps do not need to be exact integers, but if they *are* we will get // cleaner edges by rounding at least one edge - var xGap = trace.xgap; - var yGap = trace.ygap; var xGapLeft = Math.floor(xGap / 2); var yGapTop = Math.floor(yGap / 2); @@ -92202,6 +92603,185 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { y: top, 'xlink:href': canvas.toDataURL('image/png') }); + + removeLabels(plotGroup); + + var texttemplate = trace.texttemplate; + if(texttemplate) { + // dummy axis for formatting the z value + var cOpts = extractOpts(trace); + var dummyAx = { + type: 'linear', + range: [cOpts.min, cOpts.max], + _separators: xa._separators, + _numFormat: xa._numFormat + }; + + var aHistogram2dContour = trace.type === 'histogram2dcontour'; + var aContour = trace.type === 'contour'; + var iStart = aContour ? 1 : 0; + var iStop = aContour ? m - 1 : m; + var jStart = aContour ? 1 : 0; + var jStop = aContour ? n - 1 : n; + + var textData = []; + for(i = iStart; i < iStop; i++) { + var yVal; + if(aContour) { + yVal = cd0.y[i]; + } else if(aHistogram2dContour) { + if(i === 0 || i === m - 1) continue; + yVal = cd0.y[i]; + } else if(cd0.yCenter) { + yVal = cd0.yCenter[i]; + } else { + if(i + 1 === m && cd0.y[i + 1] === undefined) continue; + yVal = (cd0.y[i] + cd0.y[i + 1]) / 2; + } + + var _y = Math.round(ya.c2p(yVal)); + if(0 > _y || _y > ya._length) continue; + + for(j = jStart; j < jStop; j++) { + var xVal; + if(aContour) { + xVal = cd0.x[j]; + } else if(aHistogram2dContour) { + if(j === 0 || j === n - 1) continue; + xVal = cd0.x[j]; + } else if(cd0.xCenter) { + xVal = cd0.xCenter[j]; + } else { + if(j + 1 === n && cd0.x[j + 1] === undefined) continue; + xVal = (cd0.x[j] + cd0.x[j + 1]) / 2; + } + + var _x = Math.round(xa.c2p(xVal)); + if(0 > _x || _x > xa._length) continue; + + var obj = formatLabels({ + x: xVal, + y: yVal + }, trace, gd._fullLayout); + + obj.x = xVal; + obj.y = yVal; + + var zVal = cd0.z[i][j]; + if(zVal === undefined) { + obj.z = ''; + obj.zLabel = ''; + } else { + obj.z = zVal; + obj.zLabel = Axes.tickText(dummyAx, zVal, 'hover').text; + } + + var theText = cd0.text && cd0.text[i] && cd0.text[i][j]; + if(theText === undefined || theText === false) theText = ''; + obj.text = theText; + + var _t = Lib.texttemplateString(texttemplate, obj, gd._fullLayout._d3locale, obj, trace._meta || {}); + if(!_t) continue; + + var lines = _t.split('
'); + var nL = lines.length; + var nC = 0; + for(k = 0; k < nL; k++) { + nC = Math.max(nC, lines[k].length); + } + + textData.push({ + l: nL, // number of lines + c: nC, // maximum number of chars in a line + t: _t, // text + x: _x, + y: _y, + z: zVal + }); + } + } + + var font = trace.textfont; + var fontFamily = font.family; + var fontSize = font.size; + + if(!fontSize || fontSize === 'auto') { + var minW = Infinity; + var minH = Infinity; + var maxL = 0; + var maxC = 0; + + for(k = 0; k < textData.length; k++) { + var d = textData[k]; + maxL = Math.max(maxL, d.l); + maxC = Math.max(maxC, d.c); + + if(k < textData.length - 1) { + var nextD = textData[k + 1]; + var dx = Math.abs(nextD.x - d.x); + var dy = Math.abs(nextD.y - d.y); + + if(dx) minW = Math.min(minW, dx); + if(dy) minH = Math.min(minH, dy); + } + } + + if( + !isFinite(minW) || + !isFinite(minH) + ) { + fontSize = 12; + } else { + minW -= xGap; + minH -= yGap; + + minW /= maxC; + minH /= maxL; + + minW /= LINE_SPACING / 2; + minH /= LINE_SPACING; + + fontSize = Math.min( + Math.floor(minW), + Math.floor(minH) + ); + } + } + if(fontSize <= 0 || !isFinite(fontSize)) return; + + var xFn = function(d) { return d.x; }; + var yFn = function(d) { + return d.y - fontSize * ((d.l * LINE_SPACING) / 2 - 1); + }; + + var labels = selectLabels(plotGroup).data(textData); + + labels + .enter() + .append('g') + .classed(labelClass, 1) + .append('text') + .attr('text-anchor', 'middle') + .each(function(d) { + var thisLabel = d3.select(this); + + var fontColor = font.color; + if(!fontColor || fontColor === 'auto') { + fontColor = Color.contrast( + 'rgba(' + + sclFunc(d.z).join() + + ')' + ); + } + + thisLabel + .attr('data-notex', 1) + .call(svgTextUtils.positionText, xFn(d), yFn(d)) + .call(Drawing.font, fontFamily, fontSize, fontColor) + .text(d.t) + .call(svgTextUtils.convertToTspans, gd); + }); + } }); }; @@ -92263,7 +92843,7 @@ function putColor(pixels, pxIndex, c) { pixels[pxIndex + 3] = Math.round(c[3] * 255); } -},{"../../components/colorscale":169,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../registry":378,"@plotly/d3":20,"tinycolor2":121}],451:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/colorscale":169,"../../components/drawing":179,"../../constants/alignment":262,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../registry":378,"../scatter/format_labels":509,"@plotly/d3":20,"tinycolor2":121}],452:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -92275,7 +92855,7 @@ module.exports = function style(gd) { }); }; -},{"@plotly/d3":20}],452:[function(_dereq_,module,exports){ +},{"@plotly/d3":20}],453:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { @@ -92289,7 +92869,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { coerce('zhoverformat'); }; -},{}],453:[function(_dereq_,module,exports){ +},{}],454:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -92380,12 +92960,14 @@ function isValidZ(z) { return (allRowsAreArrays && oneRowIsFilled && hasOneNumber); } -},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],454:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],455:[function(_dereq_,module,exports){ 'use strict'; var barAttrs = _dereq_('../bar/attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; +var fontAttrs = _dereq_('../../plots/font_attributes'); var makeBinAttrs = _dereq_('./bin_attributes'); var constants = _dereq_('./constants'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -92480,6 +93062,41 @@ module.exports = { keys: constants.eventDataKeys }), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: ['label', 'value'] + }), + + textposition: extendFlat({}, barAttrs.textposition, { + arrayOk: false + }), + + textfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + outsidetextfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + insidetextfont: fontAttrs({ + arrayOk: false, + editType: 'plot', + colorEditType: 'style', + }), + + insidetextanchor: barAttrs.insidetextanchor, + + textangle: barAttrs.textangle, + cliponaxis: barAttrs.cliponaxis, + constraintext: barAttrs.constraintext, + marker: barAttrs.marker, offsetgroup: barAttrs.offsetgroup, @@ -92493,7 +93110,7 @@ module.exports = { } }; -},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":456,"./constants":460}],455:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":457,"./constants":461}],456:[function(_dereq_,module,exports){ 'use strict'; @@ -92509,7 +93126,7 @@ module.exports = function doAvg(size, counts) { return total; }; -},{}],456:[function(_dereq_,module,exports){ +},{}],457:[function(_dereq_,module,exports){ 'use strict'; module.exports = function makeBinAttrs(axLetter, match) { @@ -92530,7 +93147,7 @@ module.exports = function makeBinAttrs(axLetter, match) { }; }; -},{}],457:[function(_dereq_,module,exports){ +},{}],458:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -92595,7 +93212,7 @@ module.exports = { } }; -},{"fast-isnumeric":33}],458:[function(_dereq_,module,exports){ +},{"fast-isnumeric":33}],459:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -92762,7 +93379,7 @@ function dateParts(v, pa, calendar) { return parts; } -},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],459:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],460:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -93333,14 +93950,14 @@ module.exports = { calcAllAutoBins: calcAllAutoBins }; -},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":455,"./bin_functions":457,"./bin_label_vals":458,"./norm_functions":466,"fast-isnumeric":33}],460:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":456,"./bin_functions":458,"./bin_label_vals":459,"./norm_functions":467,"fast-isnumeric":33}],461:[function(_dereq_,module,exports){ 'use strict'; module.exports = { eventDataKeys: ['binNumber'] }; -},{}],461:[function(_dereq_,module,exports){ +},{}],462:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -93609,13 +94226,14 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],462:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],463:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); var Color = _dereq_('../../components/color'); +var handleText = _dereq_('../bar/defaults').handleText; var handleStyleDefaults = _dereq_('../bar/style_defaults'); var attributes = _dereq_('./attributes'); @@ -93634,6 +94252,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } coerce('text'); + var textposition = coerce('textposition'); + handleText(traceIn, traceOut, layout, coerce, textposition, { + moduleHasSelected: true, + moduleHasUnselected: true, + moduleHasConstrain: true, + moduleHasCliponaxis: true, + moduleHasTextangle: true, + moduleHasInsideanchor: true + }); + coerce('hovertext'); coerce('hovertemplate'); coerce('xhoverformat'); @@ -93677,7 +94305,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'}); }; -},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/style_defaults":403,"./attributes":454}],463:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/defaults":392,"../bar/style_defaults":403,"./attributes":455}],464:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -93718,7 +94346,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],464:[function(_dereq_,module,exports){ +},{}],465:[function(_dereq_,module,exports){ 'use strict'; var barHover = _dereq_('../bar/hover').hoverPoints; @@ -93742,7 +94370,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return pts; }; -},{"../../plots/cartesian/axes":334,"../bar/hover":395}],465:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334,"../bar/hover":395}],466:[function(_dereq_,module,exports){ 'use strict'; /** @@ -93783,7 +94411,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":517,"./attributes":454,"./calc":459,"./cross_trace_defaults":461,"./defaults":462,"./event_data":463,"./hover":464}],466:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":518,"./attributes":455,"./calc":460,"./cross_trace_defaults":462,"./defaults":463,"./event_data":464,"./hover":465}],467:[function(_dereq_,module,exports){ 'use strict'; @@ -93809,7 +94437,7 @@ module.exports = { } }; -},{}],467:[function(_dereq_,module,exports){ +},{}],468:[function(_dereq_,module,exports){ 'use strict'; var histogramAttrs = _dereq_('../histogram/attributes'); @@ -93818,6 +94446,7 @@ var heatmapAttrs = _dereq_('../heatmap/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; +var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -93862,12 +94491,19 @@ module.exports = extendFlat( yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs({}, {keys: 'z'}), + texttemplate: texttemplateAttrs({ + arrayOk: false, + editType: 'plot' + }, { + keys: 'z' + }), + textfont: heatmapAttrs.textfont, showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":454,"../histogram/bin_attributes":456}],468:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":455,"../histogram/bin_attributes":457}],469:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94078,7 +94714,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) { return out; } -},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":455,"../histogram/bin_functions":457,"../histogram/bin_label_vals":458,"../histogram/calc":459,"../histogram/norm_functions":466}],469:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":456,"../histogram/bin_functions":458,"../histogram/bin_label_vals":459,"../histogram/calc":460,"../histogram/norm_functions":467}],470:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94086,6 +94722,7 @@ var Lib = _dereq_('../../lib'); var handleSampleDefaults = _dereq_('./sample_defaults'); var handleStyleDefaults = _dereq_('../heatmap/style_defaults'); var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -94100,11 +94737,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleStyleDefaults(traceIn, traceOut, coerce, layout); colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); coerce('hovertemplate'); + + handleHeatmapLabelDefaults(coerce, layout); + coerce('xhoverformat'); coerce('yhoverformat'); }; -},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/style_defaults":452,"./attributes":467,"./sample_defaults":472}],470:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/style_defaults":453,"./attributes":468,"./sample_defaults":473}],471:[function(_dereq_,module,exports){ 'use strict'; var heatmapHover = _dereq_('../heatmap/hover'); @@ -94130,7 +94770,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return pts; }; -},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],471:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],472:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94153,7 +94793,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":450,"../heatmap/style":451,"../histogram/cross_trace_defaults":461,"../histogram/event_data":463,"./attributes":467,"./defaults":469,"./hover":470}],472:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":451,"../heatmap/style":452,"../histogram/cross_trace_defaults":462,"../histogram/event_data":464,"./attributes":468,"./defaults":470,"./hover":471}],473:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -94190,7 +94830,7 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout coerce('autobiny'); }; -},{"../../lib":287,"../../registry":378}],473:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],474:[function(_dereq_,module,exports){ 'use strict'; var histogram2dAttrs = _dereq_('../histogram2d/attributes'); @@ -94234,7 +94874,9 @@ module.exports = extendFlat({ xhoverformat: axisHoverFormat('x'), yhoverformat: axisHoverFormat('y'), zhoverformat: axisHoverFormat('z', 1), - hovertemplate: histogram2dAttrs.hovertemplate + hovertemplate: histogram2dAttrs.hovertemplate, + texttemplate: contourAttrs.texttemplate, + textfont: contourAttrs.textfont }, colorScaleAttrs('', { cLetter: 'z', @@ -94242,7 +94884,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":467}],474:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":468}],475:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94250,6 +94892,7 @@ var Lib = _dereq_('../../lib'); var handleSampleDefaults = _dereq_('../histogram2d/sample_defaults'); var handleContoursDefaults = _dereq_('../contour/contours_defaults'); var handleStyleDefaults = _dereq_('../contour/style_defaults'); +var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults'); var attributes = _dereq_('./attributes'); @@ -94267,12 +94910,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); - coerce('hovertemplate'); coerce('xhoverformat'); coerce('yhoverformat'); + coerce('hovertemplate'); + if( + traceOut.contours && + traceOut.contours.coloring === 'heatmap' + ) { + handleHeatmapLabelDefaults(coerce, layout); + } }; -},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../histogram2d/sample_defaults":472,"./attributes":473}],475:[function(_dereq_,module,exports){ +},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../heatmap/label_defaults":449,"../histogram2d/sample_defaults":473,"./attributes":474}],476:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94294,7 +94943,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":461,"./attributes":473,"./defaults":474}],476:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":462,"./attributes":474,"./defaults":475}],477:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -94390,7 +95039,7 @@ module.exports = extendFlat({ transforms: undefined }); -},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":478}],477:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":479}],478:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94480,7 +95129,7 @@ function makeScaler(trace) { }; } -},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":478,"./helpers":481,"fast-isnumeric":33}],478:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":479,"./helpers":482,"fast-isnumeric":33}],479:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94546,7 +95195,7 @@ module.exports = { ].join('; ') }; -},{}],479:[function(_dereq_,module,exports){ +},{}],480:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94596,7 +95245,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut._length = null; }; -},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":476,"./constants":478}],480:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":477,"./constants":479}],481:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -94610,7 +95259,7 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],481:[function(_dereq_,module,exports){ +},{}],482:[function(_dereq_,module,exports){ 'use strict'; var probeSync = _dereq_('probe-image-size/sync'); @@ -94623,7 +95272,7 @@ exports.getImageSize = function(src) { return probeSync(buff); }; -},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],482:[function(_dereq_,module,exports){ +},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],483:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -94715,7 +95364,7 @@ module.exports = function hoverPoints(pointData, xval, yval) { })]; }; -},{"../../components/fx":197,"../../lib":287,"./constants":478}],483:[function(_dereq_,module,exports){ +},{"../../components/fx":197,"../../lib":287,"./constants":479}],484:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94736,7 +95385,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./attributes":476,"./calc":477,"./defaults":479,"./event_data":480,"./hover":482,"./plot":484,"./style":485}],484:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./attributes":477,"./calc":478,"./defaults":480,"./event_data":481,"./hover":483,"./plot":485,"./style":486}],485:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -94959,7 +95608,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { }); }; -},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":478,"@plotly/d3":20}],485:[function(_dereq_,module,exports){ +},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":479,"@plotly/d3":20}],486:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -94971,7 +95620,7 @@ module.exports = function style(gd) { }); }; -},{"@plotly/d3":20}],486:[function(_dereq_,module,exports){ +},{"@plotly/d3":20}],487:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -95186,7 +95835,7 @@ module.exports = { } }; -},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],487:[function(_dereq_,module,exports){ +},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],488:[function(_dereq_,module,exports){ 'use strict'; var plots = _dereq_('../../plots/plots'); @@ -95201,7 +95850,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout); }; -},{"../../plots/plots":371}],488:[function(_dereq_,module,exports){ +},{"../../plots/plots":371}],489:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95243,7 +95892,6 @@ function calc(gd, trace) { v = vals[i]; if(!isNumeric(v)) continue; v = +v; - if(v < 0) continue; } else v = 1; label = labels[i]; @@ -95280,6 +95928,9 @@ function calc(gd, trace) { } } + // Drop aggregate sums of value 0 or less + cd = cd.filter(function(elem) { return elem.v >= 0; }); + var shouldSort = (trace.type === 'funnelarea') ? isAggregated : trace.sort; if(shouldSort) cd.sort(function(a, b) { return b.v - a.v; }); @@ -95376,7 +96027,7 @@ module.exports = { generateExtendedColors: generateExtendedColors }; -},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],489:[function(_dereq_,module,exports){ +},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],490:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95499,7 +96150,7 @@ module.exports = { supplyDefaults: supplyDefaults }; -},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":486,"fast-isnumeric":33}],490:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":487,"fast-isnumeric":33}],491:[function(_dereq_,module,exports){ 'use strict'; var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues; @@ -95541,7 +96192,7 @@ module.exports = function eventData(pt, trace) { return out; }; -},{"../../components/fx/helpers":193}],491:[function(_dereq_,module,exports){ +},{"../../components/fx/helpers":193}],492:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -95581,7 +96232,7 @@ exports.getRotationAngle = function(rotation) { return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180; }; -},{"../../lib":287}],492:[function(_dereq_,module,exports){ +},{"../../lib":287}],493:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95605,7 +96256,7 @@ module.exports = { } }; -},{"./attributes":486,"./base_plot":487,"./calc":488,"./defaults":489,"./layout_attributes":493,"./layout_defaults":494,"./plot":495,"./style":496,"./style_one":497}],493:[function(_dereq_,module,exports){ +},{"./attributes":487,"./base_plot":488,"./calc":489,"./defaults":490,"./layout_attributes":494,"./layout_defaults":495,"./plot":496,"./style":497,"./style_one":498}],494:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95624,7 +96275,7 @@ module.exports = { } }; -},{}],494:[function(_dereq_,module,exports){ +},{}],495:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -95641,7 +96292,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { coerce('extendpiecolors'); }; -},{"../../lib":287,"./layout_attributes":493}],495:[function(_dereq_,module,exports){ +},{"../../lib":287,"./layout_attributes":494}],496:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -96821,7 +97472,7 @@ module.exports = { computeTransform: computeTransform }; -},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":490,"./helpers":491,"@plotly/d3":20}],496:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":491,"./helpers":492,"@plotly/d3":20}],497:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -96846,7 +97497,7 @@ module.exports = function style(gd) { }); }; -},{"../bar/uniform_text":404,"./style_one":497,"@plotly/d3":20}],497:[function(_dereq_,module,exports){ +},{"../bar/uniform_text":404,"./style_one":498,"@plotly/d3":20}],498:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -96862,7 +97513,7 @@ module.exports = function styleOne(s, pt, trace) { .call(Color.stroke, lineColor); }; -},{"../../components/color":157,"./helpers":491}],498:[function(_dereq_,module,exports){ +},{"../../components/color":157,"./helpers":492}],499:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96905,7 +97556,7 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":287}],499:[function(_dereq_,module,exports){ +},{"../../lib":287}],500:[function(_dereq_,module,exports){ 'use strict'; var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat; @@ -97255,7 +97906,7 @@ module.exports = { }), }; -},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":503}],500:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":504}],501:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -97552,7 +98203,7 @@ module.exports = { getStackOpts: getStackOpts }; -},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":498,"./calc_selection":501,"./colorscale_calc":502,"./subtypes":524,"fast-isnumeric":33}],501:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":499,"./calc_selection":502,"./colorscale_calc":503,"./subtypes":525,"fast-isnumeric":33}],502:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97563,7 +98214,7 @@ module.exports = function calcSelection(cd, trace) { } }; -},{"../../lib":287}],502:[function(_dereq_,module,exports){ +},{"../../lib":287}],503:[function(_dereq_,module,exports){ 'use strict'; var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; @@ -97598,7 +98249,7 @@ module.exports = function calcMarkerColorscale(gd, trace) { } }; -},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":524}],503:[function(_dereq_,module,exports){ +},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":525}],504:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97618,7 +98269,7 @@ module.exports = { eventDataKeys: [] }; -},{}],504:[function(_dereq_,module,exports){ +},{}],505:[function(_dereq_,module,exports){ 'use strict'; var calc = _dereq_('./calc'); @@ -97790,7 +98441,7 @@ function getInterp(calcTrace, index, position, posAttr) { return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]); } -},{"./calc":500}],505:[function(_dereq_,module,exports){ +},{"./calc":501}],506:[function(_dereq_,module,exports){ 'use strict'; @@ -97820,7 +98471,7 @@ module.exports = function crossTraceDefaults(fullData) { } }; -},{}],506:[function(_dereq_,module,exports){ +},{}],507:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97907,7 +98558,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":287,"../../registry":378,"./attributes":499,"./constants":503,"./fillcolor_defaults":507,"./line_defaults":512,"./line_shape_defaults":514,"./marker_defaults":518,"./period_defaults":519,"./stack_defaults":522,"./subtypes":524,"./text_defaults":525,"./xy_defaults":526}],507:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378,"./attributes":500,"./constants":504,"./fillcolor_defaults":508,"./line_defaults":513,"./line_shape_defaults":515,"./marker_defaults":519,"./period_defaults":520,"./stack_defaults":523,"./subtypes":525,"./text_defaults":526,"./xy_defaults":527}],508:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -97935,7 +98586,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe )); }; -},{"../../components/color":157,"../../lib":287}],508:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287}],509:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -97953,7 +98604,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":334}],509:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334}],510:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -97993,7 +98644,7 @@ module.exports = function getTraceColor(trace, di) { } }; -},{"../../components/color":157,"./subtypes":524}],510:[function(_dereq_,module,exports){ +},{"../../components/color":157,"./subtypes":525}],511:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -98204,7 +98855,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } }; -},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":509}],511:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":510}],512:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -98241,7 +98892,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"./arrays_to_calcdata":498,"./attributes":499,"./calc":500,"./cross_trace_calc":504,"./cross_trace_defaults":505,"./defaults":506,"./format_labels":508,"./hover":510,"./marker_colorbar":517,"./plot":520,"./select":521,"./style":523,"./subtypes":524}],512:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"./arrays_to_calcdata":499,"./attributes":500,"./calc":501,"./cross_trace_calc":505,"./cross_trace_defaults":506,"./defaults":507,"./format_labels":509,"./hover":511,"./marker_colorbar":518,"./plot":521,"./select":522,"./style":524,"./subtypes":525}],513:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -98264,7 +98915,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, if(!(opts || {}).noDash) coerce('line.dash'); }; -},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],513:[function(_dereq_,module,exports){ +},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],514:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -98716,7 +99367,7 @@ module.exports = function linePoints(d, opts) { return segments; }; -},{"../../constants/numerical":267,"../../lib":287,"./constants":503}],514:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"./constants":504}],515:[function(_dereq_,module,exports){ 'use strict'; @@ -98726,7 +99377,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) { if(shape === 'spline') coerce('line.smoothing'); }; -},{}],515:[function(_dereq_,module,exports){ +},{}],516:[function(_dereq_,module,exports){ 'use strict'; var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1}; @@ -98808,7 +99459,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) { return cdscatterSorted; }; -},{}],516:[function(_dereq_,module,exports){ +},{}],517:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -98844,7 +99495,7 @@ module.exports = function makeBubbleSizeFn(trace, factor) { }; }; -},{"fast-isnumeric":33}],517:[function(_dereq_,module,exports){ +},{"fast-isnumeric":33}],518:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -98853,7 +99504,7 @@ module.exports = { max: 'cmax' }; -},{}],518:[function(_dereq_,module,exports){ +},{}],519:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -98926,7 +99577,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":524}],519:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":525}],520:[function(_dereq_,module,exports){ 'use strict'; var dateTick0 = _dereq_('../../lib').dateTick0; @@ -98965,7 +99616,7 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce } }; -},{"../../constants/numerical":267,"../../lib":287}],520:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287}],521:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -99517,7 +100168,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) { }); } -},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":513,"./link_traces":515,"./subtypes":524,"@plotly/d3":20}],521:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":514,"./link_traces":516,"./subtypes":525,"@plotly/d3":20}],522:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -99562,7 +100213,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{"./subtypes":524}],522:[function(_dereq_,module,exports){ +},{"./subtypes":525}],523:[function(_dereq_,module,exports){ 'use strict'; var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps']; @@ -99659,7 +100310,7 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) } }; -},{}],523:[function(_dereq_,module,exports){ +},{}],524:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -99721,7 +100372,7 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],524:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],525:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99751,7 +100402,7 @@ module.exports = { } }; -},{"../../lib":287}],525:[function(_dereq_,module,exports){ +},{"../../lib":287}],526:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99772,7 +100423,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) { } }; -},{"../../lib":287}],526:[function(_dereq_,module,exports){ +},{"../../lib":287}],527:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -99808,7 +100459,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) { return len; }; -},{"../../lib":287,"../../registry":378}],527:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../registry":378}],528:[function(_dereq_,module,exports){ 'use strict'; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; @@ -99900,7 +100551,7 @@ module.exports = { hovertemplate: hovertemplateAttrs(), }; -},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":499}],528:[function(_dereq_,module,exports){ +},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":500}],529:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -99972,7 +100623,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../scatter/arrays_to_calcdata":498,"../scatter/calc":500,"../scatter/calc_selection":501,"../scatter/colorscale_calc":502,"fast-isnumeric":33}],529:[function(_dereq_,module,exports){ +},{"../scatter/arrays_to_calcdata":499,"../scatter/calc":501,"../scatter/calc_selection":502,"../scatter/colorscale_calc":503,"fast-isnumeric":33}],530:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100067,7 +100718,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":287,"../scatter/constants":503,"../scatter/fillcolor_defaults":507,"../scatter/line_defaults":512,"../scatter/line_shape_defaults":514,"../scatter/marker_defaults":518,"../scatter/subtypes":524,"../scatter/text_defaults":525,"./attributes":527}],530:[function(_dereq_,module,exports){ +},{"../../lib":287,"../scatter/constants":504,"../scatter/fillcolor_defaults":508,"../scatter/line_defaults":513,"../scatter/line_shape_defaults":515,"../scatter/marker_defaults":519,"../scatter/subtypes":525,"../scatter/text_defaults":526,"./attributes":528}],531:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -100091,7 +100742,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],531:[function(_dereq_,module,exports){ +},{}],532:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -100107,7 +100758,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":334}],532:[function(_dereq_,module,exports){ +},{"../../plots/cartesian/axes":334}],533:[function(_dereq_,module,exports){ 'use strict'; var scatterHover = _dereq_('../scatter/hover'); @@ -100173,7 +100824,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return scatterPointData; }; -},{"../scatter/hover":510}],533:[function(_dereq_,module,exports){ +},{"../scatter/hover":511}],534:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -100197,7 +100848,7 @@ module.exports = { } }; -},{"../../plots/ternary":374,"../scatter/marker_colorbar":517,"../scatter/select":521,"../scatter/style":523,"./attributes":527,"./calc":528,"./defaults":529,"./event_data":530,"./format_labels":531,"./hover":532,"./plot":534}],534:[function(_dereq_,module,exports){ +},{"../../plots/ternary":374,"../scatter/marker_colorbar":518,"../scatter/select":522,"../scatter/style":524,"./attributes":528,"./calc":529,"./defaults":530,"./event_data":531,"./format_labels":532,"./hover":533,"./plot":535}],535:[function(_dereq_,module,exports){ 'use strict'; var scatterPlot = _dereq_('../scatter/plot'); @@ -100221,7 +100872,7 @@ module.exports = function plot(gd, ternary, moduleCalcData) { scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer); }; -},{"../scatter/plot":520}],535:[function(_dereq_,module,exports){ +},{"../scatter/plot":521}],536:[function(_dereq_,module,exports){ 'use strict'; var boxAttrs = _dereq_('../box/attributes'); @@ -100377,7 +101028,7 @@ module.exports = { } }; -},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],536:[function(_dereq_,module,exports){ +},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],537:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100545,7 +101196,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) { return spanOut; } -},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":539}],537:[function(_dereq_,module,exports){ +},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":540}],538:[function(_dereq_,module,exports){ 'use strict'; var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset; @@ -100580,7 +101231,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) { } }; -},{"../box/cross_trace_calc":407}],538:[function(_dereq_,module,exports){ +},{"../box/cross_trace_calc":407}],539:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100633,7 +101284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!meanLineVisible) traceOut.meanline = {visible: false}; }; -},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":535}],539:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":536}],540:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100698,7 +101349,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) { exports.extractVal = function(o) { return o.v; }; -},{"../../lib":287}],540:[function(_dereq_,module,exports){ +},{"../../lib":287}],541:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100805,7 +101456,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { return closeData; }; -},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":539}],541:[function(_dereq_,module,exports){ +},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":540}],542:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -100830,7 +101481,7 @@ module.exports = { } }; -},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":523,"./attributes":535,"./calc":536,"./cross_trace_calc":537,"./defaults":538,"./hover":540,"./layout_attributes":542,"./layout_defaults":543,"./plot":544,"./style":545}],542:[function(_dereq_,module,exports){ +},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":524,"./attributes":536,"./calc":537,"./cross_trace_calc":538,"./defaults":539,"./hover":541,"./layout_attributes":543,"./layout_defaults":544,"./plot":545,"./style":546}],543:[function(_dereq_,module,exports){ 'use strict'; var boxLayoutAttrs = _dereq_('../box/layout_attributes'); @@ -100845,7 +101496,7 @@ module.exports = { }) }; -},{"../../lib":287,"../box/layout_attributes":412}],543:[function(_dereq_,module,exports){ +},{"../../lib":287,"../box/layout_attributes":412}],544:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -100859,7 +101510,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin'); }; -},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":542}],544:[function(_dereq_,module,exports){ +},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":543}],545:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -101041,7 +101692,7 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) { }); }; -},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":513,"./helpers":539,"@plotly/d3":20}],545:[function(_dereq_,module,exports){ +},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":514,"./helpers":540,"@plotly/d3":20}],546:[function(_dereq_,module,exports){ 'use strict'; var d3 = _dereq_('@plotly/d3'); @@ -101088,7 +101739,7 @@ module.exports = function style(gd) { }); }; -},{"../../components/color":157,"../scatter/style":523,"@plotly/d3":20}],546:[function(_dereq_,module,exports){ +},{"../../components/color":157,"../scatter/style":524,"@plotly/d3":20}],547:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../plots/cartesian/axes'); @@ -101492,7 +102143,7 @@ function last(array, indices) { return array[indices[indices.length - 1]]; } -},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":549}],547:[function(_dereq_,module,exports){ +},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":550}],548:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -101752,7 +102403,7 @@ function getFilterFunc(opts, d2c, targetCalendar) { } } -},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":549}],548:[function(_dereq_,module,exports){ +},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":550}],549:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -101996,7 +102647,7 @@ function transformOne(trace, state) { return newData; } -},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":549}],549:[function(_dereq_,module,exports){ +},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":550}],550:[function(_dereq_,module,exports){ 'use strict'; exports.pointsAccessorFunction = function(transforms, opts) { @@ -102014,7 +102665,7 @@ exports.pointsAccessorFunction = function(transforms, opts) { return originalPointsAccessor; }; -},{}],550:[function(_dereq_,module,exports){ +},{}],551:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -102152,11 +102803,11 @@ function getSortFunc(opts, d2c) { } } -},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":549}],551:[function(_dereq_,module,exports){ +},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":550}],552:[function(_dereq_,module,exports){ 'use strict'; // package version injected by `npm run preprocess` -exports.version = '2.6.3'; +exports.version = '2.8.0'; },{}]},{},[15])(15) }); diff --git a/static/babybuddy/js/graph.js.gz b/static/babybuddy/js/graph.js.gz index 10f2bea1..42fed2c8 100644 Binary files a/static/babybuddy/js/graph.js.gz and b/static/babybuddy/js/graph.js.gz differ diff --git a/static/import_export/import.87299a479910.css b/static/import_export/import.358144dd8713.css similarity index 67% rename from static/import_export/import.87299a479910.css rename to static/import_export/import.358144dd8713.css index 739311c4..bb20ba2a 100644 --- a/static/import_export/import.87299a479910.css +++ b/static/import_export/import.358144dd8713.css @@ -79,37 +79,3 @@ table.import-preview tr.update { font-weight: bold; font-size: 0.85em; } - -@media (prefers-color-scheme: dark) { - table.import-preview tr.skip { - background-color: #2d2d2d; - } - - table.import-preview tr.new { - background-color: #42274d; - } - - table.import-preview tr.delete { - background-color: #064140; - } - - table.import-preview tr.update { - background-color: #020230; - } - - .validation-error-container { - background-color: #003e3e; - } - - /* - these declarations are necessary to forcibly override the - formatting applied by the diff-match-patch python library - */ - table.import-preview td ins { - background-color: #190019 !important; - } - - table.import-preview td del { - background-color: #001919 !important; - } -} \ No newline at end of file diff --git a/static/import_export/import.358144dd8713.css.gz b/static/import_export/import.358144dd8713.css.gz new file mode 100644 index 00000000..dce505a1 Binary files /dev/null and b/static/import_export/import.358144dd8713.css.gz differ diff --git a/static/import_export/import.87299a479910.css.gz b/static/import_export/import.87299a479910.css.gz deleted file mode 100644 index 125c3158..00000000 Binary files a/static/import_export/import.87299a479910.css.gz and /dev/null differ diff --git a/static/import_export/import.css b/static/import_export/import.css index 739311c4..bb20ba2a 100644 --- a/static/import_export/import.css +++ b/static/import_export/import.css @@ -79,37 +79,3 @@ table.import-preview tr.update { font-weight: bold; font-size: 0.85em; } - -@media (prefers-color-scheme: dark) { - table.import-preview tr.skip { - background-color: #2d2d2d; - } - - table.import-preview tr.new { - background-color: #42274d; - } - - table.import-preview tr.delete { - background-color: #064140; - } - - table.import-preview tr.update { - background-color: #020230; - } - - .validation-error-container { - background-color: #003e3e; - } - - /* - these declarations are necessary to forcibly override the - formatting applied by the diff-match-patch python library - */ - table.import-preview td ins { - background-color: #190019 !important; - } - - table.import-preview td del { - background-color: #001919 !important; - } -} \ No newline at end of file diff --git a/static/import_export/import.css.gz b/static/import_export/import.css.gz index 125c3158..dce505a1 100644 Binary files a/static/import_export/import.css.gz and b/static/import_export/import.css.gz differ diff --git a/static/staticfiles.json b/static/staticfiles.json index 17899b11..f481b749 100644 --- a/static/staticfiles.json +++ b/static/staticfiles.json @@ -1 +1 @@ -{"paths": {"admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "babybuddy/font/babybuddy.svg": "babybuddy/font/babybuddy.92b0e8730a39.svg", "babybuddy/font/babybuddy.ttf": "babybuddy/font/babybuddy.5b508a0e4073.ttf", "babybuddy/font/babybuddy.woff": "babybuddy/font/babybuddy.ecc1b92002b6.woff", "babybuddy/font/babybuddy.eot": "babybuddy/font/babybuddy.62cc646af202.eot", "babybuddy/font/babybuddy.woff2": "babybuddy/font/babybuddy.34582a429c60.woff2", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.32cbedf6aee3.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.df80640f0465.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/js/graph.js": "babybuddy/js/graph.c70d07f5822f.js", "babybuddy/js/app.js": "babybuddy/js/app.6477a025d778.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.f939b61597b3.js", "babybuddy/root/favicon.svg": "babybuddy/root/favicon.12fe726d0bac.svg", "babybuddy/css/app.css": "babybuddy/css/app.d83022714670.css", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/actions.js": "admin/js/actions.a6d23e8853fd.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js", "import_export/import.css": "import_export/import.87299a479910.css"}, "version": "1.0"} \ No newline at end of file +{"paths": {"admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "babybuddy/css/app.css": "babybuddy/css/app.d83022714670.css", "babybuddy/js/graph.js": "babybuddy/js/graph.aec8efcce748.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.f939b61597b3.js", "babybuddy/js/app.js": "babybuddy/js/app.6477a025d778.js", "babybuddy/logo/icon.png": "babybuddy/logo/icon.df80640f0465.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.32cbedf6aee3.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/root/favicon.svg": "babybuddy/root/favicon.12fe726d0bac.svg", "babybuddy/font/babybuddy.svg": "babybuddy/font/babybuddy.92b0e8730a39.svg", "babybuddy/font/babybuddy.woff": "babybuddy/font/babybuddy.ecc1b92002b6.woff", "babybuddy/font/babybuddy.woff2": "babybuddy/font/babybuddy.34582a429c60.woff2", "babybuddy/font/babybuddy.ttf": "babybuddy/font/babybuddy.5b508a0e4073.ttf", "babybuddy/font/babybuddy.eot": "babybuddy/font/babybuddy.62cc646af202.eot", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/actions.js": "admin/js/actions.3edba334d0a4.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "import_export/import.css": "import_export/import.358144dd8713.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js"}, "version": "1.0"} \ No newline at end of file