@windborne/grapher 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.js +1 -1
- package/bundle.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +1 -1
- package/src/helpers/custom_prop_types.js +1 -1
- package/src/renderer/graph_body_renderer.js +5 -1
package/bundle.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.Grapher=t(require("react")):e.Grapher=t(e.react)}(globalThis,(e=>(()=>{var t,n,r={557:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(354),i=n.n(r),o=n(314),a=n.n(o)()(i());a.push([e.id,'.grapher-night{position:relative;background:linear-gradient(to bottom right, #2a2a2b, #3e3e40);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-night *,.grapher-night :after,.grapher-night :before{box-sizing:content-box}.grapher-night .grapher-title{text-align:center;color:#fff;font-size:18px;margin-bottom:8px}.grapher-night .grapher-primary-container-outer{display:flex}.grapher-night .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#111, transparent 75%, transparent 100%);color:#eee;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-night .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-night .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-night .series-key .scale-label{display:inline-block;background:#111;color:silver;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-night .series-key .series-key-axis-container{display:inline-block;border:1px solid #111;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-night .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#e0e0e3}.grapher-night .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-night .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-night .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-night .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-night .series-key .series-key-axis-container .label-input-toggler path{fill:#111}.grapher-night .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#e0e0e3}.grapher-night .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none;background:rgba(0,0,0,0)}.grapher-night .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-night .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px silver}.grapher-night .range-selection{color:silver;user-select:none}.grapher-night .range-selection.range-not-dates{color:#aaa}.grapher-night .range-selection .range-buttons{text-align:right}.grapher-night .range-selection .range-buttons .options-bar{display:inline-block}.grapher-night .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-night .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:silver;background:#000;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-night .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-night .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-night .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:6px;border-radius:2px;background:#505053}.grapher-night .range-selection .range-buttons .range-button.range-button-selected{color:silver;background:#000}.grapher-night .range-selection .range-buttons .range-button.range-button-disabled,.grapher-night .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#aaa;background:#7a7a7a}.grapher-night .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-night .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-night .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-night .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-night .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-night .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #505053;margin:2px 8px 2px 0;color:#e0e0e3;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-night .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#e0e0e3}.grapher-night .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-night .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-night .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-night .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-night .grapher-main-row{display:flex}.grapher-night .grapher-main-row .central-container{width:100%}.grapher-night .range-graph-container{display:flex}.grapher-night .graph-body{width:100%;height:400px;position:relative}.grapher-night .graph-body canvas{width:100%;height:100%}.grapher-night .graph-body .grapher-tooltip,.grapher-night .graph-body .grapher-draggable-points,.grapher-night .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-night .graph-body .grapher-tooltip>svg,.grapher-night .graph-body .grapher-draggable-points>svg,.grapher-night .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-night .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-night .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(0,0,0,.6)}.grapher-night .graph-body .grapher-tooltip .tooltip-item text{fill:#f0f0f0;dominant-baseline:hanging;text-anchor:start}.grapher-night .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#000}.grapher-night .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #ccc}.grapher-night .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-night .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-night .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;max-width:max-content;width:200px}.grapher-night .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-night .graph-body .grapher-vertical-lines line{stroke:#ccc}.grapher-night .graph-body .grapher-vertical-lines polygon{fill:#ccc}.grapher-night .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-night .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(255,255,255,.3)}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;max-width:max-content;width:200px}.grapher-night .graph-body .bounds-selection{position:absolute;background:rgba(255,255,255,.1)}.grapher-night .axis{overflow:visible;user-select:none}.grapher-night .axis.x-axis{width:1px;height:20px;display:block}.grapher-night .axis.x-axis .axis-item text{text-anchor:middle}.grapher-night .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-night .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-night .axis.y-axis{height:400px}.grapher-night .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-night .axis.y-axis .y-axis-label{text-anchor:middle;fill:#e0e0e3}.grapher-night .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-night .axis.y-axis .series-color-box{cursor:pointer}.grapher-night .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-night .axis .axis-line{stroke:silver;stroke-width:2px}.grapher-night .axis .axis-line-shadow{stroke:#505053;stroke-width:1px}.grapher-night .axis .axis-item path{stroke:#505053;stroke-width:1px}.grapher-night .axis .axis-item text{fill:#e0e0e3;font-size:8px}.grapher-night .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-night .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-night .range-selection-graph{width:100%;padding-bottom:14px}.grapher-night .range-selection-graph .graph-body-secondary{height:50px}.grapher-night .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-night .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(255,255,255,.1);cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#808083;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#303033}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#fff}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#aaa;stroke-width:1;fill:#666;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#aaa;fill:none}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#505053;stroke-width:1px}.grapher-night input,.grapher-night textarea{background:rgba(0,0,0,0);border:1px solid #505053;margin:2px 0;color:#e0e0e3;padding:1px 2px;text-align:center}.grapher-night input:focus,.grapher-night textarea:focus{outline:none;border-color:#e0e0e3}.grapher-night.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-night.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-night.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-night.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-night.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#ddd}.grapher-day{position:relative;background:linear-gradient(to bottom right, #FFF, #FFF);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-day *,.grapher-day :after,.grapher-day :before{box-sizing:content-box}.grapher-day .grapher-title{text-align:center;color:#000;font-size:18px;margin-bottom:8px}.grapher-day .grapher-primary-container-outer{display:flex}.grapher-day .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#EEE, transparent 75%, transparent 100%);color:#111;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-day .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-day .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-day .series-key .scale-label{display:inline-block;background:#b0b0b7;color:#000;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-day .series-key .series-key-axis-container{display:inline-block;border:1px solid #b0b0b7;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-day .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#505053}.grapher-day .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-day .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-day .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-day .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-day .series-key .series-key-axis-container .label-input-toggler path{fill:#b0b0b7}.grapher-day .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#505053}.grapher-day .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none}.grapher-day .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-day .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px #000}.grapher-day .range-selection{color:#444;user-select:none}.grapher-day .range-selection.range-not-dates{color:#888}.grapher-day .range-selection .range-buttons{text-align:right}.grapher-day .range-selection .range-buttons .options-bar{display:inline-block}.grapher-day .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-day .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:#000;background:#fff;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-day .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-day .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-day .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:4px;border-radius:2px;background:#fff;border:1px dotted silver}.grapher-day .range-selection .range-buttons .range-button.range-button-selected{color:#000;background:#fff;border:1px solid #000}.grapher-day .range-selection .range-buttons .range-button.range-button-disabled,.grapher-day .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#888;background:#eee}.grapher-day .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-day .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-day .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-day .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-day .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-day .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 8px 2px 0;color:#222;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-day .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#505053}.grapher-day .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-day .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-day .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-day .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-day .grapher-main-row{display:flex}.grapher-day .grapher-main-row .central-container{width:100%}.grapher-day .range-graph-container{display:flex}.grapher-day .graph-body{width:100%;height:400px;position:relative}.grapher-day .graph-body canvas{width:100%;height:100%}.grapher-day .graph-body .grapher-tooltip,.grapher-day .graph-body .grapher-draggable-points,.grapher-day .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-day .graph-body .grapher-tooltip>svg,.grapher-day .graph-body .grapher-draggable-points>svg,.grapher-day .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-day .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-day .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(255,255,255,.6)}.grapher-day .graph-body .grapher-tooltip .tooltip-item text{fill:#0f0f0f;dominant-baseline:hanging;text-anchor:start}.grapher-day .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#fff}.grapher-day .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #333}.grapher-day .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-day .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-day .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-day .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-day .graph-body .grapher-vertical-lines line{stroke:#333}.grapher-day .graph-body .grapher-vertical-lines polygon{fill:#333}.grapher-day .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-day .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(0,0,0,.3)}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-day .graph-body .bounds-selection{position:absolute;background:rgba(0,0,0,.02)}.grapher-day .axis{overflow:visible;user-select:none}.grapher-day .axis.x-axis{width:1px;height:20px;display:block}.grapher-day .axis.x-axis .axis-item text{text-anchor:middle}.grapher-day .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-day .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-day .axis.y-axis{height:400px}.grapher-day .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-day .axis.y-axis .y-axis-label{text-anchor:middle;fill:#1f1f1c}.grapher-day .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-day .axis.y-axis .series-color-box{cursor:pointer}.grapher-day .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-day .axis .axis-line{stroke:#656565;stroke-width:2px}.grapher-day .axis .axis-line-shadow{stroke:#bfbfbf;stroke-width:1px}.grapher-day .axis .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-day .axis .axis-item text{fill:#1f1f1c;font-size:8px}.grapher-day .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-day .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-day .range-selection-graph{width:100%;padding-bottom:14px}.grapher-day .range-selection-graph .graph-body-secondary{height:50px}.grapher-day .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-day .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(0,0,0,.02);cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#eee}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#333}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;stroke-width:1;fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#333;fill:none}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-day input,.grapher-day textarea{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 0;color:#222;padding:1px 2px;text-align:center}.grapher-day input:focus,.grapher-day textarea:focus{outline:none;border-color:#505053}.grapher-day.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-day.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-day.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-day.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-day.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#222}.grapher-export{position:relative;background:linear-gradient(to bottom right, #FFF, #FFF);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-export *,.grapher-export :after,.grapher-export :before{box-sizing:content-box}.grapher-export .grapher-title{text-align:center;color:#000;font-size:18px;margin-bottom:8px}.grapher-export .grapher-primary-container-outer{display:flex}.grapher-export .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#EEE, transparent 75%, transparent 100%);color:#111;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-export .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-export .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-export .series-key .scale-label{display:inline-block;background:#b0b0b7;color:#000;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-export .series-key .series-key-axis-container{display:inline-block;border:1px solid #b0b0b7;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-export .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#505053}.grapher-export .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-export .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-export .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-export .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-export .series-key .series-key-axis-container .label-input-toggler path{fill:#b0b0b7}.grapher-export .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#505053}.grapher-export .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none}.grapher-export .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-export .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px #000}.grapher-export .range-selection{color:#444;user-select:none}.grapher-export .range-selection.range-not-dates{color:#888}.grapher-export .range-selection .range-buttons{text-align:right}.grapher-export .range-selection .range-buttons .options-bar{display:inline-block}.grapher-export .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-export .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:#000;background:#fff;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-export .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-export .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-export .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:4px;border-radius:2px;background:#fff;border:1px dotted silver}.grapher-export .range-selection .range-buttons .range-button.range-button-selected{color:#000;background:#fff;border:1px solid #000}.grapher-export .range-selection .range-buttons .range-button.range-button-disabled,.grapher-export .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#888;background:#eee}.grapher-export .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-export .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-export .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-export .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-export .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-export .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 8px 2px 0;color:#222;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-export .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#505053}.grapher-export .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-export .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-export .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-export .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-export .grapher-main-row{display:flex}.grapher-export .grapher-main-row .central-container{width:100%}.grapher-export .range-graph-container{display:flex}.grapher-export .graph-body{width:100%;height:400px;position:relative}.grapher-export .graph-body canvas{width:100%;height:100%}.grapher-export .graph-body .grapher-tooltip,.grapher-export .graph-body .grapher-draggable-points,.grapher-export .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-export .graph-body .grapher-tooltip>svg,.grapher-export .graph-body .grapher-draggable-points>svg,.grapher-export .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-export .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-export .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(255,255,255,.6)}.grapher-export .graph-body .grapher-tooltip .tooltip-item text{fill:#0f0f0f;dominant-baseline:hanging;text-anchor:start}.grapher-export .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#fff}.grapher-export .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #333}.grapher-export .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-export .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-export .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-export .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-export .graph-body .grapher-vertical-lines line{stroke:#333}.grapher-export .graph-body .grapher-vertical-lines polygon{fill:#333}.grapher-export .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-export .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(0,0,0,.3)}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-export .graph-body .bounds-selection{position:absolute;background:rgba(0,0,0,.02)}.grapher-export .axis{overflow:visible;user-select:none}.grapher-export .axis.x-axis{width:1px;height:20px;display:block}.grapher-export .axis.x-axis .axis-item text{text-anchor:middle}.grapher-export .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-export .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-export .axis.y-axis{height:400px}.grapher-export .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-export .axis.y-axis .y-axis-label{text-anchor:middle;fill:#000}.grapher-export .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-export .axis.y-axis .series-color-box{cursor:pointer}.grapher-export .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-export .axis .axis-line{stroke:#000;stroke-width:1px}.grapher-export .axis .axis-line-shadow{stroke:#bfbfbf;stroke-width:1px}.grapher-export .axis .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-export .axis .axis-item text{fill:#000;font-size:8px}.grapher-export .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-export .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-export .range-selection-graph{width:100%;padding-bottom:14px}.grapher-export .range-selection-graph .graph-body-secondary{height:50px}.grapher-export .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-export .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(0,0,0,.02);cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#eee}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#333}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;stroke-width:1;fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#333;fill:none}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-export input,.grapher-export textarea{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 0;color:#222;padding:1px 2px;text-align:center}.grapher-export input:focus,.grapher-export textarea:focus{outline:none;border-color:#505053}.grapher-export.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-export.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-export.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-export.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-export.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#222}',"",{version:3,sources:["webpack://./src/grapher.scss"],names:[],mappings:"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",sourcesContent:["@mixin grapher(\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n\n $background-color-1: #2a2a2b,\n $background-color-2: #3e3e40,\n\n $tooltip-line-color: #CCC,\n $tooltip-background-color: rgba(0, 0, 0, 0.6),\n $tooltip-text-color: #F0F0F0,\n $vertical-line-color: #CCC,\n\n $axis-line-color: silver,\n $axis-line-width: 2px,\n $axis-tick-color: #505053,\n $axis-text-color: #E0E0E3,\n\n $range-selection-text-color: silver,\n $range-selection-button-color: #505053,\n $range-selection-button-selected-color: black,\n $range-selection-text-selected-color: silver,\n $range-selection-text-color-faded: #AAA,\n $range-selection-button-color-faded: #7A7A7A,\n $range-selection-button-border: null,\n $range-selection-selected-button-border: null,\n\n $range-graph-selection-bar-size: 14px,\n $range-graph-selection-range-color: rgba(255, 255, 255, 0.1),\n $range-graph-selection-outline-color: #AAA,\n $range-graph-selection-bar-color: #808083,\n $range-graph-selection-bar-track-color: #303033,\n $range-graph-selection-bar-rifles-color: #FFF,\n $range-graph-handle-color: #AAA,\n $range-graph-handle-fill-color: #666,\n $range-graph-axis-text-color: #9f9f9f,\n\n $annotation-background-color: rgba(255, 255, 255, 0.3),\n\n $series-key-axis-container-color: #111,\n $series-key-input-border-color: #505053,\n $series-key-input-selected-border-color: #E0E0E3,\n $series-key-input-text-color: #E0E0E3,\n $series-key-background: transparent,\n $scale-label-color: silver,\n $series-key-shadow-color: silver,\n\n $title-color: white,\n\n $sidebar-background-color: #111,\n $sidebar-text-color: #EEE,\n\n $new-grapher-color: #DDD\n) {\n $x-axis-height: 20px;\n $padding: 10px;\n\n $axis-z-index: 0;\n $graph-body-z-index: 1;\n\n position: relative;\n background: linear-gradient(to bottom right, $background-color-1, $background-color-2);\n padding: $padding;\n\n font-family: sans-serif;\n font-size: 12px;\n line-height: normal;\n\n *, :after, :before {\n box-sizing: content-box;\n }\n\n .grapher-title {\n text-align: center;\n color: $title-color;\n font-size: 18px;\n margin-bottom: 8px;\n }\n\n .grapher-primary-container-outer {\n display: flex;\n\n .grapher-sidebar {\n background: linear-gradient($sidebar-background-color, transparent 75%, transparent 100%);\n color: $sidebar-text-color;\n padding: 50px 6px 5px 10px;\n margin-left: -$padding;\n margin-top: -$padding;\n margin-bottom: -$padding;\n overflow-y: auto;\n flex-shrink: 0;\n\n .series-toggle {\n white-space: nowrap;\n\n & + .series-toggle {\n margin-top: 3px;\n }\n\n label {\n display: inline-block;\n position: relative;\n user-select: none;\n }\n\n input[type='checkbox'] {\n opacity: 0;\n cursor: pointer;\n height: 0;\n width: 0;\n margin-right: 11px;\n }\n\n input:not(:checked) ~ .checkmark {\n background-color: transparent !important;\n }\n\n input:checked ~ .checkmark:after {\n display: block;\n }\n\n .checkmark {\n position: absolute;\n top: 1px;\n left: 0;\n height: 7px;\n width: 7px;\n background-color: #eee;\n border: 2px solid;\n border-radius: 1px;\n }\n\n .checkmark:after {\n content: \"\";\n position: absolute;\n display: none;\n\n left: 0.5px;\n top: -1.5px;\n width: 3px;\n height: 6px;\n border: solid white;\n border-width: 0 2px 2px 0;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n }\n }\n\n .grapher-primary-container-body {\n width: 100%;\n padding-left: 2px;\n }\n }\n\n .series-key {\n text-align: center;\n margin-bottom: -14px;\n position: relative;\n\n .scale-label {\n display: inline-block;\n background: $series-key-axis-container-color;\n color: $scale-label-color;\n transform: rotate(-90deg);\n width: 24px;\n margin-left: -5px;\n vertical-align: top;\n margin-top: 4px;\n padding-bottom: 2px;\n cursor: pointer;\n user-select: none;\n }\n\n .series-key-axis-container {\n display: inline-block;\n border: 1px solid $series-key-axis-container-color;\n\n min-width: 18px;\n min-height: 24px;\n vertical-align: top;\n\n white-space: nowrap;\n\n & + .series-key-axis-container {\n margin-left: 4px;\n }\n\n &.series-key-axis-container-showing-label {\n .scale-label {\n width: 46px;\n margin-top: 15px;\n margin-left: -15px;\n margin-right: -12px;\n }\n\n .series-key-axis-label-container {\n display: block;\n }\n\n .label-input-toggler {\n path {\n fill: $series-key-input-selected-border-color;\n }\n }\n }\n\n .series-key-axis-container-body {\n display: inline-block;\n\n & > div {\n white-space: initial;\n }\n }\n\n .series-key-axis-label-container {\n display: none;\n }\n\n .label-input-toggler {\n width: 16px;\n cursor: pointer;\n display: inline-block;\n vertical-align: top;\n margin: 4px 2px;\n\n path {\n fill: $series-key-axis-container-color;\n }\n\n &:hover {\n path {\n fill: $series-key-input-selected-border-color;\n }\n }\n }\n }\n\n .series-key-item {\n border: 1px solid currentColor;\n padding: 2px;\n margin: 2px;\n display: inline-block;\n cursor: pointer;\n user-select: none;\n background: $series-key-background;\n\n & + .series-key-item {\n margin-left: 4px;\n }\n\n &.series-key-item-highlighted {\n box-shadow: 0 0 4px $series-key-shadow-color;\n }\n }\n }\n\n .range-selection {\n color: $range-selection-text-color;\n user-select: none;\n\n &.range-not-dates {\n color: $range-selection-text-color-faded;\n }\n\n .range-buttons {\n text-align: right;\n\n .options-bar {\n display: inline-block;\n }\n\n .option-tooltip {\n position: relative;\n display: inline-block;\n border-bottom: 1px dotted black;\n\n .option-tooltip-text {\n visibility: hidden;\n color: $range-selection-text-selected-color;\n background: $range-selection-button-selected-color;\n text-align: center;\n padding: 5px 5px;\n border-radius: 6px;\n position: absolute;\n z-index: 1;\n border: 1px solid black;\n\n width: 120px;\n margin-left: -65px;\n top: calc(100% + 7px);\n left: 50%;\n }\n\n &:hover .option-tooltip-text {\n visibility: visible;\n }\n\n .option-tooltip-text::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent black transparent;\n }\n }\n\n .range-button {\n display: inline-block;\n cursor: pointer;\n padding: 4px 8px;\n @if ($range-selection-button-border == null) {\n margin-left: 6px;\n } @else {\n margin-left: 4px;\n }\n\n border-radius: 2px;\n background: $range-selection-button-color;\n border: $range-selection-button-border;\n\n &.range-button-selected {\n color: $range-selection-text-selected-color;\n background: $range-selection-button-selected-color;\n border: $range-selection-selected-button-border;\n }\n\n &.range-button-disabled, &.range-button-selected.range-button-disabled {\n cursor: not-allowed;\n color: $range-selection-text-color-faded;\n background: $range-selection-button-color-faded;\n }\n\n .icon-container {\n position: relative;\n width: 0;\n\n &.icon-container-narrow {\n svg {\n left: -3px;\n }\n }\n\n &.icon-container-square {\n width: 5px;\n\n svg {\n left: -5px;\n }\n }\n\n &.icon-container-448 {\n width: 3px;\n\n svg {\n left: -5px;\n }\n }\n\n &:before {\n content: 'A';\n opacity: 0;\n }\n\n svg {\n height: 15px;\n position: absolute;\n top: -1px;\n left: -4px;\n }\n }\n }\n\n .range-selection-history + .range-selection-history {\n margin-right: 8px;\n margin-left: 4px;\n }\n\n .percentile-button {\n & > div {\n display: inline-block;\n }\n\n input {\n background: transparent;\n border: 1px solid $series-key-input-border-color;\n margin: 2px 8px 2px 0;\n color: $series-key-input-text-color;\n padding: 1px 2px;\n width: 20px;\n font-size: 11px;\n -moz-appearance: textfield;\n\n &:focus {\n outline: none;\n border-color: $series-key-input-selected-border-color;\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n\n .icon-container.icon-container-narrow {\n svg {\n height: 12px;\n top: 1px;\n left: -5px;\n }\n }\n }\n\n .showing-options-button {\n margin-right: 8px;\n }\n }\n }\n\n .grapher-main-row {\n display: flex;\n\n .central-container {\n width: 100%;\n }\n }\n\n .range-graph-container {\n display: flex;\n }\n\n .graph-body {\n width: 100%;\n height: $primary-graph-body-height;\n position: relative;\n\n canvas {\n width: 100%;\n height: 100%;\n }\n\n .grapher-tooltip, .grapher-draggable-points, .grapher-vertical-lines {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n > svg {\n position: absolute;\n overflow: visible;\n left: 0;\n }\n }\n\n .grapher-vertical-lines {\n pointer-events: none;\n user-select: none;\n }\n\n .grapher-tooltip {\n .tooltip-item {\n path {\n fill: $tooltip-background-color;\n }\n\n text {\n fill: $tooltip-text-color;\n dominant-baseline: hanging;\n text-anchor: start;\n }\n\n &.tooltip-item-fixed {\n path {\n fill: rgba($tooltip-background-color, 1);\n }\n }\n }\n\n .line {\n position: absolute;\n height: 400px;\n border-left: 1px solid $tooltip-line-color;\n }\n\n .custom-tooltip-container {\n position: absolute;\n }\n }\n\n .grapher-context-menu {\n position: absolute;\n top: 0;\n left: 0;\n .menu-item {\n\n .menu-text {\n user-select: all;\n position: absolute;\n top: 0;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n max-width: max-content;\n width: 200px;\n }\n }\n }\n\n .grapher-draggable-points {\n circle {\n cursor: pointer;\n }\n }\n\n .grapher-vertical-lines {\n line {\n stroke: $vertical-line-color;\n }\n\n polygon {\n fill: $vertical-line-color;\n }\n }\n\n .grapher-annotations {\n position: absolute;\n top: 0;\n pointer-events: none;\n user-select: none;\n\n .grapher-annotation {\n position: absolute;\n\n .annotation-marker {\n display: inline-block;\n height: $primary-graph-body-height;\n background: $annotation-background-color;\n }\n\n .annotation-text {\n position: absolute;\n top: 0;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n max-width: max-content;\n width: 200px;\n }\n }\n }\n\n .bounds-selection {\n position: absolute;\n background: $range-graph-selection-range-color;\n }\n }\n\n .axis {\n overflow: visible;\n user-select: none;\n\n &.x-axis {\n width: 1px;\n height: $x-axis-height;\n display: block;\n\n .axis-item {\n text {\n text-anchor: middle;\n }\n\n &.axis-item-first {\n text {\n text-anchor: start;\n }\n }\n\n &.axis-item-last {\n text {\n text-anchor: end;\n }\n }\n }\n }\n\n &.y-axis {\n height: $primary-graph-body-height;\n\n .axis-item text {\n text-anchor: end;\n alignment-baseline: middle;\n }\n\n .y-axis-label {\n text-anchor: middle;\n fill: $axis-text-color;\n\n &.y-axis-big-label {\n font-size: 18px;\n }\n }\n\n .series-color-box {\n cursor: pointer;\n }\n\n &.y-axis-right {\n .axis-item text {\n text-anchor: start;\n }\n }\n }\n\n .axis-line {\n stroke: $axis-line-color;\n stroke-width: $axis-line-width;\n }\n\n .axis-line-shadow {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n\n .axis-item {\n path {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n\n text {\n fill: $axis-text-color;\n font-size: 8px;\n }\n\n &.axis-item-major {\n .axis-tick {\n stroke-width: 2px;\n }\n }\n\n &.axis-item-big-labels {\n text {\n font-size: 16px;\n }\n }\n }\n }\n\n .range-selection-graph {\n width: 100%;\n padding-bottom: $range-graph-selection-bar-size;\n\n .graph-body-secondary {\n height: $secondary-graph-body-height;\n\n svg {\n position: absolute;\n left: 0;\n height: $secondary-graph-body-height;\n width: 100%;\n overflow: visible;\n\n .target-selection {\n fill: $range-graph-selection-range-color;\n cursor: ew-resize;\n }\n\n .selection-bar {\n fill: $range-graph-selection-bar-color;\n cursor: ew-resize;\n }\n\n .selection-bar-track {\n fill: $range-graph-selection-bar-track-color;\n }\n\n .selection-bar-rifles {\n fill: none;\n stroke-width: 1;\n stroke: $range-graph-selection-bar-rifles-color;\n }\n\n .selection-bar-handle {\n stroke: $range-graph-handle-color;\n stroke-width: 1;\n fill: $range-graph-handle-fill-color;\n cursor: ew-resize;\n }\n\n .target-selection-outline {\n stroke: $range-graph-selection-outline-color;\n fill: none;\n }\n\n .axis-item {\n text {\n fill: $range-graph-axis-text-color;\n text-anchor: start;\n font-size: 8px;\n user-select: none;\n dominant-baseline: text-after-edge;\n }\n\n path {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n }\n }\n }\n }\n\n input, textarea {\n background: transparent;\n border: 1px solid $series-key-input-border-color;\n margin: 2px 0;\n color: $series-key-input-text-color;\n padding: 1px 2px;\n text-align: center;\n\n &:focus {\n outline: none;\n border-color: $series-key-input-selected-border-color;\n }\n }\n\n &.grapher-dragging-y {\n .y-axis {\n border: 2px dashed silver;\n margin: -2px;\n flex-shrink: 0;\n\n & + .y-axis {\n border-left: none;\n }\n }\n }\n\n &.grapher-fullscreen {\n height: calc(100vh - 2*#{$padding});\n }\n\n &.grapher-fixed-height {\n .grapher-primary-container-outer {\n height: 100%;\n\n .grapher-primary-container-body {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .grapher-main-row {\n flex-grow: 1;\n\n .central-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n > .graph-body {\n flex-grow: 1;\n height: unset;\n }\n }\n\n .axis.y-axis {\n height: calc(100% - #{2*$x-axis-height});\n }\n }\n }\n }\n }\n\n &.new-grapher {\n height: auto;\n border: 2px dashed silver;\n text-align: center;\n color: $new-grapher-color;\n }\n}\n\n@mixin grapher-theme-night (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height\n );\n}\n\n@mixin grapher-theme-day (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height,\n\n $background-color-1: #FFF,\n $background-color-2: #FFF,\n\n $tooltip-line-color: invert(#CCC),\n $tooltip-background-color: invert(rgba(0, 0, 0, 0.6)),\n $tooltip-text-color: invert(#F0F0F0),\n $vertical-line-color: invert(#CCC),\n\n $axis-line-color: #656565,\n $axis-tick-color: #BFBFBF,\n $axis-text-color: invert(#E0E0E3),\n\n $range-selection-text-color: #444,\n $range-selection-button-color: white,\n $range-selection-button-selected-color: white,\n $range-selection-text-selected-color: black,\n $range-selection-text-color-faded: #888,\n $range-selection-button-color-faded: #EEE,\n $range-selection-button-border: 1px dotted silver,\n $range-selection-selected-button-border: 1px solid black,\n\n $range-graph-selection-range-color: rgba(0, 0, 0, 0.02),\n $range-graph-selection-outline-color: #333,\n $range-graph-selection-bar-color: #B0B0B7,\n $range-graph-selection-bar-track-color: #EEE,\n $range-graph-selection-bar-rifles-color: #333,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n\n $annotation-background-color: rgba(0, 0, 0, 0.3),\n\n $series-key-axis-container-color: #B0B0B7,\n $series-key-input-border-color: #E0E0E3,\n $series-key-input-selected-border-color: #505053,\n $series-key-input-text-color: #222,\n $series-key-background: null,\n $series-key-shadow-color: black,\n $scale-label-color: black,\n\n $title-color: black,\n\n $sidebar-background-color: #EEE,\n $sidebar-text-color: #111,\n\n $new-grapher-color: #222\n );\n}\n\n@mixin grapher-theme-export (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height,\n\n $background-color-1: #FFF,\n $background-color-2: #FFF,\n\n $tooltip-line-color: invert(#CCC),\n $tooltip-background-color: invert(rgba(0, 0, 0, 0.6)),\n $tooltip-text-color: invert(#F0F0F0),\n $vertical-line-color: invert(#CCC),\n\n $axis-line-color: black,\n $axis-line-width: 1px,\n $axis-tick-color: #BFBFBF,\n $axis-text-color: black,\n\n $range-selection-text-color: #444,\n $range-selection-button-color: white,\n $range-selection-button-selected-color: white,\n $range-selection-text-selected-color: black,\n $range-selection-text-color-faded: #888,\n $range-selection-button-color-faded: #EEE,\n $range-selection-button-border: 1px dotted silver,\n $range-selection-selected-button-border: 1px solid black,\n\n $range-graph-selection-range-color: rgba(0, 0, 0, 0.02),\n $range-graph-selection-outline-color: #333,\n $range-graph-selection-bar-color: #B0B0B7,\n $range-graph-selection-bar-track-color: #EEE,\n $range-graph-selection-bar-rifles-color: #333,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n\n $annotation-background-color: rgba(0, 0, 0, 0.3),\n\n $series-key-axis-container-color: #B0B0B7,\n $series-key-input-border-color: #E0E0E3,\n $series-key-input-selected-border-color: #505053,\n $series-key-input-text-color: #222,\n $series-key-background: null,\n $series-key-shadow-color: black,\n $scale-label-color: black,\n\n $title-color: black,\n\n $sidebar-background-color: #EEE,\n $sidebar-text-color: #111,\n\n $new-grapher-color: #222\n );\n}\n\n.grapher-night {\n @include grapher-theme-night();\n}\n\n.grapher-day {\n @include grapher-theme-day();\n}\n\n.grapher-export {\n @include grapher-theme-export();\n}\n"],sourceRoot:""}]);const s=a},314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,i,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var A=0;A<e.length;A++){var h=[].concat(e[A]);r&&a[h[0]]||(void 0!==o&&(void 0===h[5]||(h[1]="@layer".concat(h[5].length>0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),n&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=n):h[2]=n),i&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=i):h[4]="".concat(i)),t.push(h))}},t}},354:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},694:(e,t,n)=>{"use strict";var r=n(925);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},556:(e,t,n)=>{e.exports=n(694)()},925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},72:e=>{"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var o={},a=[],s=0;s<e.length;s++){var l=e[s],A=r.base?l[0]+r.base:l[0],h=o[A]||0,c="".concat(A," ").concat(h);o[A]=h+1;var g=n(c),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==g)t[g].references++,t[g].updater(p);else{var d=i(p,r);r.byIndex=s,t.splice(s,0,{identifier:c,updater:d,references:1})}a.push(c)}return a}function i(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,i){var o=r(e=e||[],i=i||{});return function(e){e=e||[];for(var a=0;a<o.length;a++){var s=n(o[a]);t[s].references--}for(var l=r(e,i),A=0;A<o.length;A++){var h=n(o[A]);0===t[h].references&&(t[h].updater(),t.splice(h,1))}o=l}}},659:e=>{"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},56:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,i&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},400:e=>{e.exports="precision highp float;\n\nuniform vec4 color;\n\nvoid main() {\n gl_FragColor = vec4(color);\n}\n"},765:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\n\nvoid main() {\n gl_Position = vec4((position - 0.5)*2.0, 0.0, 1.0);\n}\n"},120:e=>{e.exports="#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n#endif\n\nprecision mediump float;\n\nuniform vec4 color;\n\n// Adapted and modified from https://www.desultoryquest.com/blog/drawing-anti-aliased-circular-points-using-opengl-slash-webgl/\nvoid main() {\n float delta = 0.0;\n float alpha = 1.0;\n vec2 center = 2.0 * gl_PointCoord - 1.0;\n float r = dot(center, center);\n\n if (r > 1.0) {\n discard;\n }\n\n #ifdef GL_OES_standard_derivatives\n delta = fwidth(r);\n alpha = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n #endif\n\n gl_FragColor = color * alpha;\n}\n"},789:e=>{e.exports="precision mediump float;\n\nattribute vec2 position;\n\nuniform float width;\nuniform float height;\nuniform float pointSize;\n\nvoid main() {\n gl_Position = vec4(2.0*position.x/width - 1.0, 1.0 - 2.0*position.y/height, 0.0, 1.0);\n gl_PointSize = pointSize;\n}"},390:e=>{e.exports="precision highp float;\n\nuniform vec4 color;\nuniform float thickness;\nuniform float shadowBlur;\nuniform vec4 shadowColor;\n\nvarying vec2 position_vec;\nvarying vec2 prev_position_vec;\n\n/**\n * Calculate distance between point and line in screen space (ie, inputs in pixels, returns distance in pixels)\n */\nfloat distance_from_line() {\n float x0 = gl_FragCoord.x;\n float y0 = gl_FragCoord.y;\n\n // let line be defined by ax + by + c = 0;\n float a, b, c;\n\n if (position_vec.x == prev_position_vec.x) {\n a = 1.0;\n b = 0.0;\n c = -position_vec.x;\n } else {\n float slope = (position_vec.y - prev_position_vec.y)/(position_vec.x - prev_position_vec.x);\n float y_intercept = position_vec.y - slope*position_vec.x;\n\n // y = slope*x + y_intercept\n // (-slope)(x) + (1)(y) - y_intercept = 0;\n a = -slope;\n b = 1.0;\n c = -y_intercept;\n }\n\n return abs(a*x0 + b*y0 + c)/length(vec2(a, b));\n}\n\nvoid main() {\n vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\n\n float dist = distance_from_line();\n\n if (dist + shadowBlur >= thickness) {\n float percent_shadowed = ((thickness - dist) / shadowBlur);\n gl_FragColor = mix(transparent, shadowColor, percent_shadowed*percent_shadowed);\n } else {\n gl_FragColor = vec4(color);\n gl_FragColor.rgb *= gl_FragColor.a;\n }\n}\n"},39:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\nattribute vec2 prevPosition;\nattribute float vertex;\n\nuniform float width;\nuniform float height;\nuniform float thickness;\n\nvarying vec2 position_vec;\nvarying vec2 prev_position_vec;\n\nvoid main() {\n vec2 delta = position - prevPosition;\n vec2 alpha = prevPosition;\n vec2 beta = position;\n\n vec2 normalized_delta = normalize(delta);\n vec2 normal = vec2(-thickness/2.0 * normalized_delta.y, thickness/2.0 * normalized_delta.x);\n\n vec2 vertex_position =\n step(0.5, mod(vertex, 2.0))*alpha + // alpha if vertex is odd, 0 otherwise\n step(0.5, mod(vertex + 1.0, 2.0))*beta + // beta if vertex is even, 0 otherwise\n 2.0*(step(1.5, vertex)-0.5)*normal // -normal if vertex < 2, +normal otherwise\n ;\n\n position_vec = vec2(position.x, height - position.y);\n prev_position_vec = vec2(prevPosition.x, height - prevPosition.y);\n\n gl_Position = vec4(2.0*vertex_position.x/width - 1.0, 1.0 - 2.0*vertex_position.y/height, 0.0, 1.0);\n}\n"},155:t=>{"use strict";t.exports=e}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={id:e,exports:{}};return r[e](n,n.exports,o),n.exports}o.m=r,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,n)=>(o.f[n](e,t),t)),[])),o.u=e=>e+".bundle.js",o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},n="Grapher:",o.l=(e,r,i,a)=>{if(t[e])t[e].push(r);else{var s,l;if(void 0!==i)for(var A=document.getElementsByTagName("script"),h=0;h<A.length;h++){var c=A[h];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==n+i){s=c;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",n+i),s.src=e),t[e]=[r];var g=(n,r)=>{s.onerror=s.onload=null,clearTimeout(p);var i=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(r))),n)return n(r)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),l&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/assets/",(()=>{o.b=document.baseURI||self.location.href;var e={792:0};o.f.j=(t,n)=>{var r=o.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=e[t]=[n,i]));n.push(r[2]=i);var a=o.p+o.u(t),s=new Error;o.l(a,(n=>{if(o.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",s.name="ChunkLoadError",s.type=i,s.request=a,r[1](s)}}),"chunk-"+t,t)}};var t=(t,n)=>{var r,i,[a,s,l]=n,A=0;if(a.some((t=>0!==e[t]))){for(r in s)o.o(s,r)&&(o.m[r]=s[r]);l&&l(o)}for(t&&t(n);A<a.length;A++)i=a[A],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},n=globalThis.webpackChunkGrapher=globalThis.webpackChunkGrapher||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),o.nc=void 0;var a={};return(()=>{"use strict";o.r(a),o.d(a,{AVAILABLE_COLORS:()=>Zt,BUILT_IN_BOUND_CALCULATORS:()=>Qt,default:()=>jt});var e=o(155),t=o.n(e),n=o(556),r=o.n(n);const i=["values","tuples","objects"],s=[...i,"tuple_observable","object_observable","generator"],l=r().any,A=r().shape({data:l.isRequired,type:r().oneOf([...s,"infer"]),xKey:r().string,yKey:r().string,xUnixDates:r().bool,color:r().oneOfType([r().string,r().number]),name:r().string,xLabel:r().string,yLabel:r().string,ignoreDiscontinuities:r().bool,dashed:r().bool,dashPattern:r().arrayOf(r().number),width:r().number,rangeSelectorWidth:r().number,axis:r().oneOfType([r().string,r().object]),expandYWith:r().arrayOf(r().number),defaultAlwaysTooltipped:r().bool,square:r().bool,shiftXBy:r().number,graph:r().number,background:r().object,hideFromKey:r().bool,showIndividualPoints:r().bool,rendering:r().oneOf(["line","bar","area"]),negativeColor:r().string,gradient:r().array,zeroLineWidth:r().number,zeroLineColor:r().string,zeroLineY:r().number,pointRadius:r().number,tooltipWidth:r().number,hasAreaBottom:r().bool,shadowColor:r().string,rangeKey:r().string}),h=r().arrayOf(A),c=r().shape({axisIndex:r().number.isRequired,series:r().array.isRequired,side:r().oneOf(["left","right"]).isRequired,scale:r().oneOf(["linear","log"]).isRequired,label:r().string}),g=r().arrayOf(c),p=r().shape({label:r().string.isRequired,calculator:r().func.isRequired,datesOnly:r().bool}),d=r().arrayOf(p),u={includeSeriesLabel:r().bool,includeXLabel:r().bool,includeYLabel:r().bool,includeXValue:r().bool,includeYValue:r().bool,floating:r().bool,alwaysFixedPosition:r().bool,floatPosition:r().oneOf(["top","bottom"]),floatDelta:r().number,savingDisabled:r().bool,customTooltip:r().func,combineTooltips:r().oneOfType([r().bool,r().number])},m=r().shape(u),C=r().shape({x:r().oneOfType([r().string,r().number,r().instanceOf(Date)]).isRequired,xEnd:r().oneOfType([r().string,r().number,r().instanceOf(Date)]),series:r().arrayOf(r().string),content:r().string.isRequired}),x=r().arrayOf(C),b=r().shape({x:r().number.isRequired,y:r().number.isRequired,radius:r().number,fillColor:r().string,strokeColor:r().string,strokeWidth:r().number,onClick:r().func,onDoubleClick:r().func}),f=r().arrayOf(b),y=r().shape({x:r().number.isRequired,color:r().string,lineTop:r().number,width:r().number,markTop:r().bool,style:r().object,markerStyle:r().object,text:r().string,textTop:r().number,textStyle:r().object,minPixelX:r().number,maxPixelX:r().number,onRangeGraph:r().oneOfType([r().bool,r().object]),onRangeGraphOnly:r().bool}),B={Data:l,SingleSeries:A,Series:h,Axis:c,Axes:g,CustomBoundsSelector:p,CustomBoundsSelectors:d,TooltipOptions:m,TooltipOptionsRaw:u,Annotations:x,DraggablePoint:b,DraggablePoints:f,VerticalLine:y,VerticalLines:r().arrayOf(y)};async function _(e,t,{reset:n=!0}={}){n&&(e.width="",e.height="",e.style.width="0",e.style.height="",await new Promise((e=>requestAnimationFrame(e))));let r=e.parentNode.getBoundingClientRect();for(;0===r.width;)await new Promise((e=>requestAnimationFrame(e))),r=e.getBoundingClientRect();const i=2*(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),o=r.width,a=r.height,s=o*i,l=a*i;return e.width=s,e.height=l,e.style.width=`${o}px`,e.style.height=`${a}px`,{pixelRatio:i,elementWidth:o,elementHeight:a,renderWidth:s,renderHeight:l,boundingRect:r}}const E=["#F1C232","#1259f8","#cb4b4b","#4da74d","#9440ed","#61e0ed","#ed6d2c","#ed13c6","#bbed59"];function w(e,t,n){return"string"==typeof e?e:"number"==typeof e?E[e%E.length]:void 0!==n?E[n%E.length]:E[t%E.length]}var v=o(390),k=o.n(v),S=o(39),D=o.n(S),Y=o(120),X=o.n(Y),R=o(789),T=o.n(R);function F(e){if("black"===e)e="#000000";else if("white"===e)e="#FFFFFF";else if("transparent"===e)return[0,0,0,0];if(e.startsWith("rgb")){const t=e.split(",").map((e=>parseFloat(e.match(/\d+(\.\d+)?/)[0])));return[t[0]/255,t[1]/255,t[2]/255,t.length>=4?t[3]:1]}if("string"!=typeof e||!/^#[\dA-F]{6}$/i.test(e))throw new Error(`Color must be a hex string: ${e}`);return[parseInt(e.substr(1,2),16)/255,parseInt(e.substr(3,2),16)/255,parseInt(e.substr(5,2),16)/255,1]}function M(e,{splitAtY:t}={}){const n=[];let r=[],i=!0;const{nullMask:o,maxYValues:a,minYValues:s,yValues:l}=e;for(let e=0;e<l.length;e++){const A=2*e,h=l[e];if(1&o[e]){i||(n.push(r),r=[]),i=!0;continue}r.push([A,h]);const c=s[e],g=a[e];if(c!==g&&(2&o[e]||r.push([A,c]),4&o[e]||r.push([A,g]),r.push([A,h])),i=!1,"number"==typeof t&&e>0){const a=l[e-1];(!(1&o[e-1])&&a<t&&h>=t||a>t&&h<=t||a===t&&h!==t)&&(i||(n.push(r),r=[[A,h]]),i=!0)}}return i||n.push(r),n}let P;function z(e,{dashed:t,dashPattern:n}){let r=0;for(let i of e)if(t)for(let e=0;e<i.length;e++)t&&e%(n[0]+n[1])>=n[0]||r++;else r+=i.length;const i=new Float32Array(8*r),o=new Float32Array(8*r),a=new Float32Array(4*r),s=new Uint32Array(6*r);if(r>0){const e=new Float32Array([0,1,2,3]);a.set(e);let t=e.length,n=e.length;for(;t<a.length;)t+n>a.length&&(n=a.length-t),a.copyWithin(t,0,n),t+=n,n<<=1}let l=0;for(let r of e)for(let e=0;e<r.length;e++){if(t&&e%(n[0]+n[1])>=n[0])continue;const[a,A]=r[e];let h,c;0===e?(h=a-1,c=A):[h,c]=r[e-1];for(let e=0;e<4;e++)i[8*l+2*e]=a,i[8*l+2*e+1]=A,o[8*l+2*e]=h,o[8*l+2*e+1]=c;s[6*l]=4*l,s[6*l+1]=4*l+1,s[6*l+2]=4*l+3,s[6*l+3]=4*l,s[6*l+4]=4*l+2,s[6*l+5]=4*l+3,l++}return{positions:i,prevPositions:o,vertices:a,indices:s}}function $(e,t,n){const r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,t),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.error(e.getShaderInfoLog(r));const i=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(i,n),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)||console.error(e.getShaderInfoLog(i));const o=e.createProgram();return e.attachShader(o,r),e.attachShader(o,i),e.linkProgram(o),e.validateProgram(o),e.getProgramParameter(o,e.LINK_STATUS)||console.error(e.getProgramInfoLog(o)),o}o.e(744).then(o.bind(o,744)).then((e=>{P=e}));class I{constructor(e){this._gl=e,this._program=$(e,D(),k()),this._circleProgram=$(e,T(),X()),this._positionBuffer=e.createBuffer(),this._prevPositionBuffer=e.createBuffer(),this._vertexBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),this._individualPointBuffer=e.createBuffer(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}dispose(){}clear(){const e=this._gl,t=e.drawingBufferWidth,n=e.drawingBufferHeight;e.clearColor(0,0,0,0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT),e.viewport(0,0,t,n)}draw(e,t){const n=this._gl,r=n.drawingBufferWidth,i=n.drawingBufferHeight;n.useProgram(this._program);const o=2*((t.width||1)+(t.highlighted?2:0)),a=void 0===t.shadowBlur?2:t.shadowBlur,s=t.shadowColor||"black",l=t.dashed||!1,A=t.dashPattern||[5,5],{positions:h,prevPositions:c,vertices:g,indices:p}=function(e,{dashed:t,dashPattern:n}){if(e.paths)return z(e.paths,{dashed:t,dashPattern:n});if(!P)return z(M(e),{dashed:t,dashPattern:n});const r=P.get_point_number(e.nullMask,e.yValues,e.minYValues,e.maxYValues,t,n[0],n[1]);let i=new Float32Array(8*r),o=new Float32Array(8*r),a=new Float32Array(4*r),s=new Uint32Array(6*r);return P.extract_vertices(2,e.nullMask,e.yValues,e.minYValues,e.maxYValues,i,o,a,s,t,n[0],n[1]),{positions:i,prevPositions:o,vertices:a,indices:s}}(e,{dashed:l,dashPattern:A}),d=n.getAttribLocation(this._program,"position"),u=n.getAttribLocation(this._program,"prevPosition"),m=n.getAttribLocation(this._program,"vertex");if(n.enableVertexAttribArray(d),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,h,n.STATIC_DRAW),n.vertexAttribPointer(d,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(u),n.bindBuffer(n.ARRAY_BUFFER,this._prevPositionBuffer),n.bufferData(n.ARRAY_BUFFER,c,n.STATIC_DRAW),n.vertexAttribPointer(u,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(m),n.bindBuffer(n.ARRAY_BUFFER,this._vertexBuffer),n.bufferData(n.ARRAY_BUFFER,g,n.STATIC_DRAW),n.vertexAttribPointer(m,1,n.FLOAT,!1,0,0),n.uniform1f(n.getUniformLocation(this._program,"width"),r),n.uniform1f(n.getUniformLocation(this._program,"height"),i),n.uniform1f(n.getUniformLocation(this._program,"thickness"),Math.max(o,1)+a),n.uniform1f(n.getUniformLocation(this._program,"shadowBlur"),a),n.uniform4f(n.getUniformLocation(this._program,"color"),...F(t.color)),n.uniform4f(n.getUniformLocation(this._program,"shadowColor"),...F(s)),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,p,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,p.length,n.UNSIGNED_INT,0),t.showIndividualPoints){n.useProgram(this._circleProgram),n.uniform1f(n.getUniformLocation(this._circleProgram,"width"),r),n.uniform1f(n.getUniformLocation(this._circleProgram,"height"),i),n.uniform1f(n.getUniformLocation(this._circleProgram,"pointSize"),2*(o+6)),n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...F(t.color));const e=t.getIndividualPoints();n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(e.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,e.length)}}}class O{constructor(){this._listeners={}}clearListeners(){this._listeners={}}on(e,t){this._listeners[e]=this._listeners[e]||new Set,this._listeners[e].add(t)}off(e,t){this._listeners[e]&&(this._listeners[e].delete(t),0===this._listeners[e].size&&delete this._listeners[e])}emit(e){if(!this._listeners[e])return;const t=[];for(let e=1;e<arguments.length;e++)t.push(arguments[e]);this._listeners[e].forEach((e=>{e.apply(this,t)}))}}var L=o(400),N=o.n(L),G=o(765),W=o.n(G);class q{constructor(e){this._gl=e,this._program=$(e,W(),N()),this._vertexBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}draw({data:e}){const t=this._gl;t.useProgram(this._program);for(let{minXt:n,maxXt:r,color:i}of e){t.uniform4f(t.getUniformLocation(this._program,"color"),...F(i));const e=new Float32Array([n,1,r,1,r,-1,n,1,r,-1,n,-1]);t.bindBuffer(t.ARRAY_BUFFER,this._vertexBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW);const o=t.getAttribLocation(this._program,"position");t.enableVertexAttribArray(o),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.drawArrays(t.TRIANGLES,0,6)}}}function U(e,{context:t,sizing:n,color:r,zeroColor:i,zeroWidth:o}){o&&(t.strokeStyle=i||r,t.lineWidth=o,t.beginPath(),t.moveTo(0,e),t.lineTo(n.renderWidth,e),t.stroke())}function H({closestSpacing:e,bounds:t,sizing:n,axisSeriesCount:r}){const i=e/(t.maxX-t.minX)*n.renderWidth,o=.8*i;return{barWidth:o/r,totalBarWidth:o,barSpacing:.2*i}}function K(e,t={useSimpleData:!1}){if(e.type&&"infer"!==e.type)return e.type;const n=t.data||t.useSimpleData&&e.simpleData||e.data;if(!n)throw new Error("Data must be provided");if(Array.isArray(n))return 0===n.length||Array.isArray(n[0])?"tuples":"number"!=typeof n[0]&&n[0]?"objects":"values";if(n.observe)return e.xKey?"object_observable":"tuple_observable";if("function"==typeof n)return"generator";throw new Error("Could not infer type")}class j extends O{constructor({stateController:e,canvasElement:t,webgl:n=!1,checkIntersection:r=!0}){super(),this._stateController=e,this._checkIntersection=r,this._canvas=t,this._webgl=n,n&&(this._context=this._canvas.getContext("webgl"),this._context?this._lineProgram=new I(this._context):(alert("WebGL failed! Attempting fallback to CPU rendering"),this._webgl=!1)),this._webgl||(this._context=this._canvas.getContext("2d"),this._context2d=this._context),this._initialized=this._initializeCanvas(),this._boundResize=this.resize.bind(this),this._cachedAxisCount=null,this._onAxisChange=e=>{const t=e.filter((({series:e})=>e.length>0)).length;this._cachedAxisCount!==t&&(this._cachedAxisCount=t,this.resize())},e.on("axes_changed",this._onAxisChange),e.on("dragging_y_changed",this._boundResize),e.on("showing_sidebar_changed",this._boundResize)}dispose(){this.clearListeners(),this._lineProgram&&this._lineProgram.dispose(),this._cachedAxisCount=null,this._stateController.off("axes_changed",this._onAxisChange),this._stateController.off("dragging_y_changed",this._boundResize),this._resizeObserver&&this._resizeObserver.disconnect(),this._intersectionObserver&&this._intersectionObserver.disconnect()}clear(){this._webgl?this._lineProgram.clear():this._context.clearRect(0,0,this._context.canvas.width,this._context.canvas.height)}render(e,t,{highlighted:n,showIndividualPoints:r,shadowColor:i,shadowBlur:o,width:a,defaultLineWidth:s,bounds:l,globalBounds:A,inRenderSpaceAreaBottom:h}){const c=t=>{l||(l=e.axis.currentBounds);const n=[];let r=e.inSelectedSpace.data;t&&(r=e.inDataSpace);for(let[e,t]of r)null!==t&&n.push([(e-l.minX)/(l.maxX-l.minX)*this._sizing.renderWidth,(1-(t-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight]);return n};let g;if(("bar"===e.rendering||"area"===e.rendering)&&(this._context2d=this._context2d||this._canvas.getContext("2d"),this._webgl&&this._context.flush(),l||(l=e.axis.currentBounds),g={context:this._context2d,color:w(e.color,e.index,e.multigrapherSeriesIndex),sizing:this._sizing,zero:(1-((e.zeroLineY||0)-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight,hasNegatives:!!e.inDataSpace.find((e=>e[1]<0)),negativeColor:e.negativeColor,zeroWidth:e.zeroLineWidth,zeroColor:e.zeroLineColor},!g.hasNegatives&&e.expandYWith&&(g.hasNegatives=e.expandYWith.some((e=>e<0)))),"bar"===e.rendering)return void function(e,{color:t,context:n,sizing:r,indexInAxis:i,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:A,zeroWidth:h,closestSpacing:c,bounds:g}){n.strokeStyle=t,n.fillStyle=t;const{barWidth:p,totalBarWidth:d}=H({closestSpacing:c,bounds:g,sizing:r,axisSeriesCount:o}),u=s?a:r.renderHeight;for(let r=0;r<e.length;r++){const[o,A]=e[r];s&&(n.fillStyle=A<=a?t:l),n.fillRect(o-d/2+p*i,A,p,u-A)}h&&U(u,{context:n,sizing:r,color:t,zero:a,zeroColor:A,zeroWidth:h})}(c(!0),{...g,indexInAxis:e.axis.series.indexOf(e),axisSeriesCount:e.axis.series.length,closestSpacing:A.closestSpacing,bounds:l});if("area"===e.rendering)return void function(e,t,{color:n,context:r,sizing:i,zero:o,hasNegatives:a,gradient:s,zeroColor:l,zeroWidth:A,showIndividualPoints:h,negativeColor:c,pointRadius:g,width:p,highlighted:d,shadowColor:u="black",shadowBlur:m=5,inRenderSpaceAreaBottom:C}){if(r.fillStyle=n,r.shadowColor=u,r.shadowBlur=m,s&&s.length>2){const e=r.createLinearGradient(0,0,0,i.renderHeight);for(let t=0;t<s.length;t++){const n=s[t];Array.isArray(n)?e.addColorStop(n[0],n[1]):e.addColorStop(t/(s.length-1),n)}r.fillStyle=e,"gradient"===n&&(r.strokeStyle=e)}else r.fillStyle=n;if(!e.length)return;const x=a?o:i.renderHeight,b=M(t),f=C&&M(C),y=M(t,{splitAtY:o});for(let e=0;e<b.length;e++){const t=b[e],n=f&&f[e];r.beginPath();const[i,o]=t[0],[a,s]=t[t.length-1];f||r.moveTo(i,x);for(let e=0;e<t.length;e++){const[n,i]=t[e];r.lineTo(n,i)}if(n&&n.length){for(let e=n.length-1;e>=0;e--){const[t,i]=n[e];r.lineTo(t,i)}r.lineTo(...t[0])}else r.lineTo(a,x);r.fill()}d&&(p+=2),p*=2,r.strokeStyle=n,r.lineWidth=p;for(let e of y)if(e.length){if(a){let t=!0;t=e.length>=2?e[1][1]<=o:e[0][1]<=o,r.strokeStyle=t?n:c}r.beginPath();for(let t=0;t<e.length;t++){const[n,i]=e[t];0===t?r.moveTo(n,i):r.lineTo(n,i)}r.stroke()}if(A&&U(x,{context:r,sizing:i,color:n,zero:o,zeroColor:l,zeroWidth:A}),h){r.fillStyle=n;for(let[t,i]of e)c&&a&&(r.fillStyle=i===o&&l?l:i<o?n:c),r.beginPath(),r.arc(t,i,g||8,0,2*Math.PI,!1),r.fill()}}(c(!0),t,{...g,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:r,gradient:e.gradient,pointRadius:e.pointRadius,highlighted:n,width:a||e.width||s,shadowColor:i,shadowBlur:o,inRenderSpaceAreaBottom:h});const p={color:w(e.color,e.index,e.multigrapherSeriesIndex),context:this._context,width:a||e.width||s,shadowColor:i,shadowBlur:o,dashed:e.dashed,dashPattern:e.dashPattern,highlighted:n,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:r,getIndividualPoints:c,getRanges:e.rangeKey?()=>(l||(l=e.axis.currentBounds),e.rangeKey?"objects"!==K(e,{useSimpleData:!0})?[]:(e.simpleData||e.data).map((t=>{const n=t[e.rangeKey];if(!n)return null;const r=n.min,i=n.max,o=t[e.xKey];return{x:o,range:n,pixelX:(o-l.minX)/(l.maxX-l.minX)*this._sizing.renderWidth,pixelMinY:"number"==typeof r?(1-(r-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight:null,pixelMaxY:"number"==typeof i?(1-(i-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight:null}})):[]):null};this._webgl?this._lineProgram.draw(t,p):function(e,{color:t,width:n=1,context:r,shadowColor:i="black",shadowBlur:o=5,dashed:a=!1,dashPattern:s=null,highlighted:l=!1,showIndividualPoints:A=!1,getIndividualPoints:h,getRanges:c}){l&&(n+=2),n*=2,r.strokeStyle=t,r.lineWidth=n,r.shadowColor=i,r.shadowBlur=o,a?r.setLineDash(s||[5,5]):r.setLineDash([]);const g=M(e);for(let e of g){r.beginPath();for(let t=0;t<e.length;t++){const[n,i]=e[t];0===t?r.moveTo(n,i):r.lineTo(n,i)}r.stroke()}if(c){const e=c();r.lineWidth=n,r.strokeStyle=t,r.setLineDash([]);const i=16;for(let t of e){if(!t)continue;const{pixelX:e,pixelMinY:n,pixelMaxY:o}=t;null!==n&&(r.beginPath(),r.moveTo(e-i/2,n),r.lineTo(e+i/2,n),r.stroke()),null!==o&&(r.beginPath(),r.moveTo(e-i/2,o),r.lineTo(e+i/2,o),r.stroke()),null!==n&&null!==o&&(r.beginPath(),r.moveTo(e,n),r.lineTo(e,o),r.stroke())}}if(A){r.fillStyle=t;const e=h();for(let[t,i]of e)r.beginPath(),r.arc(t,i,n+4,0,2*Math.PI,!1),r.fill()}}(t,p)}renderBackground(e){e&&(this._webgl?(this._backgroundProgram||(this._backgroundProgram=new q(this._context)),this._backgroundProgram.draw(e)):function({data:e},{context:t}){const n=t.canvas.width,r=t.canvas.height;for(let{minXt:i,maxXt:o,color:a}of e)t.fillStyle=a,t.fillRect(i*n,0,(o-i)*n,r)}(e,{context:this._context}))}async _initializeCanvas(){if(this._sizing=await _(this._canvas,this._context),this.emit("size_changed",this._sizing),this._stateController.markSizeChanged(),window.ResizeObserver){let e=!0,t=!1;this._resizeObserver=new window.ResizeObserver((()=>{e?e=!1:t||(t=!0,this.resize().then((()=>{t=!1})))})),this._resizeObserver.observe(this._canvas.parentNode)}this._checkIntersection&&window.IntersectionObserver&&(this._intersectionObserver=new window.IntersectionObserver((e=>{clearTimeout(this._intersectionTimeout),e[0].isIntersecting&&(this._intersectionTimeout=setTimeout((()=>{this.resize()}),50))}),{threshold:.1}),this._intersectionObserver.observe(this._canvas.parentNode))}async resize(){const e=_(this._canvas,this._context,{reset:!0});this._initialized=e,this._sizing=await this._initialized,this._initialized===e&&(this.emit("size_changed",this._sizing),this._stateController.markSizeChanged(this))}resizeDebounced(){this._resizeTimeout&&clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout((()=>{this.resize(),this._resizeTimeout=null}),50)}recalculatePosition(){this._sizing&&(this._sizing.boundingRect=this._canvas.getBoundingClientRect())}get boundingRect(){return this._sizing.boundingRect}get sizing(){return this._sizing}}function V(e){return Math.max(2-Math.log10(Math.abs(e)),0)}function J(e,t=null){if(null===t&&(t=V(e)),isNaN(t)||t>100)return e.toString();const n=e.toFixed(Math.ceil(t));let r=n;return n.includes(".")&&(r=r.replace(/\.?0+$/g,"")),""===r?"0":r}const Z={};function Q(e,t){try{let n=Z[e];if(!n){let t=e;e&&"local"!==e||(t=Intl.DateTimeFormat().resolvedOptions().timeZone),n=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}),Z[e]=n}const r=n.formatToParts(t).find((e=>"timeZoneName"===e.type));if(!r)return null;if("GMT"===r.value)return 0;if(!/^GMT[+-]\d{2}:\d{2}$/.test(r.value))return null;const[i,o]=r.value.slice(3).split(":");return 60*parseInt(i)*60*1e3+60*parseInt(o)*1e3}catch(n){return console.error(new Error(`Could not parse timezone offset for ${t} in ${e}`)),console.error(n),null}}function ee(e,t){if(!t){const t=new Date(e);return t.setHours(0,0,0,0),t}const n=Q(t,e);let r=new Date(e);return r.setUTCHours(0,0,0,0),r.valueOf()-e.valueOf()>n&&(r=new Date(r.valueOf()-864e5)),new Date(r.valueOf()-n)}function te(e,{dates:t=!1,precision:n=null,justTime:r=!1,justDate:i=!1,justMonthAndDay:o=!1,clockStyle:a="24h",unitOverride:s,timeZone:l,integersOnly:A=!1,inverseEnumMap:h}={}){return!t||e instanceof Date||(e=new Date(e),!isNaN(e))?e instanceof Date?function(e,{precision:t,justTime:n,justDate:r,justMonthAndDay:i,unitOverride:o,clockStyle:a="24h",timeZone:s}){const l=s&&"utc"===s.toLowerCase();if(s&&!l&&"local"!==s&&window.Intl&&window.Intl.DateTimeFormat){const t=Q(s,e),n=Q("local",e);"number"==typeof t&&"number"==typeof n&&(e=new Date(e.valueOf()+t-n))}const A=l?e.getUTCFullYear():e.getFullYear(),h=(l?e.getUTCMonth():e.getMonth())+1,c=l?e.getUTCDate():e.getDate();if("year"===o)return A.toString();if(r)return l?`${h}/${c}/${A}`:e.toLocaleDateString();if(i)return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][h-1]} ${c}`;const g=l?e.getUTCHours():e.getHours(),p=l?e.getUTCMinutes():e.getMinutes(),d=l?e.getUTCSeconds():e.getSeconds(),u=l?e.getUTCMilliseconds():e.getMilliseconds();let m;return m="12h"===a?`${((g+11)%12+1).toString()}:${p.toString().padStart(2,"0")}`:`${g.toString().padStart(2,"0")}:${p.toString().padStart(2,"0")}`,"s"!==t&&"ms"!==t||(m+=`:${d.toString().padStart(2,"0")}`),"ms"===t&&(m+=`.${u.toString().padStart(3,"0")}`),"12h"===a&&(m+=g>=12?"pm":"am"),n?m:(l&&(m+=" UTC"),(l?`${h}/${c}/${A}`:e.toLocaleDateString())+" "+m)}(e,{precision:n,justTime:r,justDate:i,justMonthAndDay:o,unitOverride:s,clockStyle:a,timeZone:l}):isNaN(e)?"NaN":h?Math.abs(e-Math.round(e))>1e-10?"":h[Math.round(e)]:A&&Math.abs(e-Math.round(e))>1e-10?"":J(e,n):"Invalid Date"}function ne(e,{precision:t=null,log:n=!1}={}){return null===e?"null":isNaN(e)?"NaN":n?`10^${J(Math.log10(e),t)}`:J(e,t)}const re=32;function ie(){return ie=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ie.apply(this,arguments)}function oe({yLabel:e,y:t,fullYPrecision:n}){return n&&!e?void 0===t?"undefined":null===t?"null":t.toString():"number"==typeof e?n?e.toString():ne(e):"object"==typeof e?ne(t):e||ne(t)}function ae({axisLabel:e,x:n,y:r,xLabel:i,yLabel:o,textLeft:a,textTop:s,includeSeriesLabel:l,includeXValue:A,includeYValue:h,includeXLabel:c,includeYLabel:g,fullYPrecision:p,formatXOptions:d}){let u=0;return t().createElement("g",null,l&&t().createElement("text",{x:a,y:s+12*u++},e),A&&t().createElement("text",{x:a,y:s+12*u++},c&&"x: ",i||te(n,d)),h&&t().createElement("text",{x:a,y:s+12*u++},g&&"y: ",oe({yLabel:o,y:r,fullYPrecision:p})))}ae.propTypes={axisLabel:r().string,x:r().oneOfType([r().number,r().instanceOf(Date)]),y:r().number,xLabel:r().string,yLabel:r().oneOfType([r().number,r().string]),textLeft:r().number.isRequired,textTop:r().number.isRequired,fullYPrecision:r().bool,formatXOptions:r().object,...B.TooltipOptionsRaw};class se extends t().PureComponent{render(){let e=42;this.props.includeSeriesLabel||(e-=12),this.props.includeXValue||(e-=12),this.props.includeYValue||(e-=12);const n=e/2,r=3-n,i={clockStyle:this.props.clockStyle,timeZone:this.props.timeZone},o={includeSeriesLabel:this.props.includeSeriesLabel,includeXLabel:this.props.includeXLabel,includeYLabel:this.props.includeYLabel,includeXValue:this.props.includeXValue,includeYValue:this.props.includeYValue,formatXOptions:i},a=this.props.tooltips.map((t=>{const{x:a,y:s,pixelY:l,pixelX:A,series:h,index:c,xLabel:g,yLabel:p,fullYPrecision:d}=t;if("number"!=typeof A)return null;const u=(h.name||h.yKey||c).toString();let m=7.5*Math.max(u.length,(g||te(a,i)).length+4,oe({yLabel:p,y:s,fullYPrecision:d}).length+4);h.tooltipWidth&&(m=h.tooltipWidth);let C=this.props.elementWidth<m+14+8,x=1;A>=this.props.elementWidth-(m+14+4)&&(x=-1),A<m+14+4&&-1===x&&(C=!0),null===s&&(C=!0),this.props.alwaysFixedPosition&&(C=!0);let b=11;if(x<0?b=-m-b:b+=6,!isFinite(A))return null;const f=`translate(${A},${l})`,y={fullYPrecision:d||this.props.maxPrecision,x:a,y:s,axisLabel:u,xLabel:g,yLabel:p,...o};let B,_=0;return C&&(b=6,B=this.props.elementWidth/2-m/2,m>this.props.elementWidth&&!this.props.floating&&(B-=re*this.props.axisCount/2),_=18,this.props.floating&&(_="bottom"===this.props.floatPosition?this.props.elementHeight+n+4:-e,this.props.floatDelta&&(_+=this.props.floatDelta))),{...t,label:u,indexInAxis:h?.axis?.series?.indexOf(h),axisLabel:u,width:m,fixedPosition:C,multiplier:x,textLeft:b,transform:f,commonLabelProps:y,textTop:r,height:e,caretSize:7,halfHeight:n,caretPadding:4,yTranslation:_,baseLeft:B}})).filter(Boolean),s=this.props.customTooltip;let l;if(this.props.combineTooltips){let e=50;"number"==typeof this.props.combineTooltips&&(e=this.props.combineTooltips),l=[];for(let t of a){let n=!1;for(let r of l)if(Math.abs(r.pixelX-t.pixelX)<=e){r.tooltips.push(t),t.pixelX>r.pixelX&&(r.pixelX=t.pixelX,r.multiplier=t.multiplier),t.pixelY<r.pixelY&&(r.pixelY=t.pixelY),n=!0;break}n||l.push({pixelX:t.pixelX,pixelY:t.pixelY,multiplier:t.multiplier,tooltips:[t]})}for(let e of l){let t=0,n=0;e.tooltips.sort(((e,t)=>e.indexInAxis-t.indexInAxis));for(let r=0;r<e.tooltips.length;r++)e.tooltips[r].textTop=t,t+=e.tooltips[r].height,n=Math.max(n,e.tooltips[r].width);for(let n=0;n<e.tooltips.length;n++)e.tooltips[n].textTop-=t/2,e.tooltips[n].textTop+=3;e.height=t,e.halfHeight=t/2,e.caretSize=7,e.width=n}}return t().createElement("div",{className:"grapher-tooltip"},t().createElement("svg",null,a.map(((e,r)=>{const{color:i,fixedPosition:o,width:a,transform:s,baseLeft:A,commonLabelProps:h,yTranslation:c,multiplier:g,textLeft:p,textTop:d}=e;return this.props.customTooltip||l?t().createElement("g",{key:r,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:i})):o?t().createElement("g",{key:r,className:"tooltip-item tooltip-item-fixed"},t().createElement("circle",{r:4,fill:i,transform:s}),t().createElement("g",{transform:`translate(${A}, ${c})`},t().createElement("path",{stroke:i,d:`M0,0 V-${n} h${a} V${n} h${-a} V0`}),t().createElement(ae,ie({textLeft:p,textTop:d},h)))):t().createElement("g",{key:r,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:i}),t().createElement("path",{stroke:i,d:`M${4*g},0 L${7*g*2},-7 V-${n} h${g*a} V${n} h${g*-a} V7 L${4*g},0`}),t().createElement(ae,ie({textLeft:p,textTop:d},h)))})),!this.props.customTooltip&&l&&l.map((({tooltips:e,pixelX:n,pixelY:r,halfHeight:i,multiplier:o,color:a,width:s},l)=>t().createElement("g",{key:l,transform:`translate(${n},${r})`,className:"tooltip-item"},t().createElement("path",{stroke:a,d:`M${4*o},0 L${7*o*2},-7 V-${i} h${o*s} V${i} h${o*-s} V7 L${4*o},0`}),e.map(((e,n)=>t().createElement(ae,ie({key:n,textTop:e.textTop,textLeft:e.textLeft},e.commonLabelProps)))))))),this.props.customTooltip&&(l||a).map(((e,n)=>t().createElement("div",{key:n,className:"custom-tooltip-container",style:{top:e.pixelY,left:e.pixelX}},t().createElement(s,e)))))}}se.defaultProps={includeSeriesLabel:!0,includeXLabel:!0,includeYLabel:!0,includeXValue:!0,includeYValue:!0},se.propTypes={mouseX:r().number.isRequired,mouseY:r().number.isRequired,elementHeight:r().number.isRequired,elementWidth:r().number.isRequired,tooltips:r().arrayOf(r().shape({x:r().oneOfType([r().number,r().instanceOf(Date)]),y:r().number,pixelY:r().number,color:r().string,xLabel:r().string,yLabel:r().any,fullYPrecision:r().bool})),axisCount:r().number.isRequired,maxPrecision:r().bool.isRequired,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,...B.TooltipOptionsRaw};class le extends t().PureComponent{constructor(e){super(e),this.setTextRef=this.setTextRef.bind(this)}setTextRef(e){if(this.textRef=e,this.props.contextMenu.showing&&this.textRef){const e=document.createRange(),t=window.getSelection();t.removeAllRanges(),e.selectNodeContents(this.textRef),t.addRange(e),this.textRef.focus()}}formatDateTime(e){const[t,n]=e.split(", "),[r,i,o]=t.split("/"),a=`${r.padStart(2,"0")}/${i.padStart(2,"0")}/${o}`,[s,l]=n.split(" "),[A,h]=s.split(":");return`${a} ${A.padStart(2,"0")}:${h} ${l}`}render(){const{x:e,y:n,showing:r,value:i}=this.props.contextMenu,o={left:e,top:n,width:"150px"};if(!r||!i||"Invalid Date"===i.toLocaleString()||isNaN(e)||isNaN(n))return null;const a=i instanceof Date?this.formatDateTime(i.toLocaleString()):i;return t().createElement("div",{className:"grapher-context-menu",style:o},t().createElement("div",{className:"menu-item"},t().createElement("div",{className:"menu-text",autoFocus:!0,ref:this.setTextRef},a)))}}function Ae(e,t={}){const n=K(e,{useSimpleData:!0,data:t.data});if(!i.includes(n))throw new Error(`Cannot normalize ${n} (expected a simple type)`);const r={tuples:ce,values:he,objects:pe}[n](t.data||e.simpleData||e.data,e,t);if(e.square){const e=[];let n=t.prevY;for(let t of r)void 0!==n&&e.push([t[0],n]),e.push(t),n=t[1];return e}if(e.shiftXBy)for(let n of r)if("string"==typeof n[0]){const r=n[0];n[0]=new Date(new Date(n[0]).valueOf()+e.shiftXBy),isNaN(n[0])&&(n[0]=t.stateController.enumToNumber(r,e))}else n[0]instanceof Date?n[0]=new Date(n[0].valueOf()+e.shiftXBy):"number"==typeof n[0]&&(n[0]+=e.shiftXBy);if(e.xUnixDates)for(let e of r)"number"==typeof e[0]&&(e[0]=new Date(1e3*e[0]));return r}function he(e,t,n){const r=[];for(let i=0;i<e.length;i++){let o=e[i];"string"==typeof o&&(o=n.stateController.enumToNumber(o,t)),"boolean"==typeof o&&(o=+o),r.push([i+(n.valueXStart||0),o])}return r}function ce(e,t,n){return[...e.map((([e,r])=>{if(void 0===r&&(r=null),"string"==typeof e){const r=e;e=new Date(e),isNaN(e)&&(e=n.stateController.enumToNumber(r,t,!0))}return"string"==typeof r&&(r=n.stateController.enumToNumber(r,t)),"boolean"==typeof r&&(r=+r),[e,r]}))]}function ge(e,t,n){const r=e.getUint32(t+2+Uint32Array.BYTES_PER_ELEMENT*n,!0);if(0===r)return null;const i=e.getUint8(r);if(0===i)return e.getFloat64(t+r+1,!0);if(1===i||6===i)return null;if(3===i)return new Date(e.getFloat64(t+r+1,!0));throw new Error(`Binary format type ${i} not supported`)}function pe(e,t,n){if(!t.xKey||"string"!=typeof t.xKey)throw new Error("xKey must be provided in the series");if(!t.yKey||"string"!=typeof t.yKey)throw new Error("yKey must be provided in the series");const r=[];for(let i of e)if(i.buffer instanceof ArrayBuffer){const e=new DataView(i.buffer),n=i.channels[t.xKey],o=i.channels[t.yKey];for(let t of i.offsets)r.push([ge(e,t,n),ge(e,t,o)])}else if(Array.isArray(i[t.yKey]))if(i[t.yKey].length&&!Array.isArray(i[t.yKey][0])&&"object"==typeof i[t.yKey][0])for(let e of i[t.yKey]){let i=e[t.yKey];void 0===i&&(i=null),"string"==typeof i&&(i=n.stateController.enumToNumber(i,t)),"boolean"==typeof i&&(i=+i);let o=e[t.xKey];"string"==typeof o&&(o=new Date(o)),r.push([o,i])}else r.push(...i[t.yKey]);else{let e=i[t.yKey];void 0===e&&(e=null);let o=i[t.xKey];"string"==typeof o&&(o=new Date(o)),"string"==typeof e&&(e=n.stateController.enumToNumber(e,t)),"boolean"==typeof e&&(e=+e),r.push([o,e])}return r}function de(e,{dates:t}){const n=null===e.minX&&null===e.maxX||null===e.minY||null===e.maxY;for(let t of Object.keys(e))"number"!=typeof e[t]&&(e[t]=0);return e.initial=n,e.dates=t,e}function ue(e,{percentile:t=100,percentileAsymmetry:n=0}={}){let r={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null};if(100!==t&&e.length)return function(e,t,{percentile:n=100,percentileAsymmetry:r=0}={}){let i=!1;t.minX=e[0][0],t.minX instanceof Date&&(t.minX=t.minX.valueOf(),i=!0),t.maxX=e[e.length-1][0],t.maxX instanceof Date&&(t.maxX=t.maxX.valueOf(),i=!0);const o=e.filter((([e,t])=>"number"==typeof t)).sort((([e,t],[n,r])=>t-r));if(!o.length)return de(t,{dates:i});const a=Math.min(Math.abs(r),(100-n)/2)*(r<0?-1:1),s=(100-n)/2+a,l=(100-n)/2-a,A=Math.floor((o.length-1)*s/100),h=Math.floor((o.length-1)*(100-l)/100);return t.minY=o[A][1],t.maxY=o[h][1],de(t,{dates:i})}(e,r,{percentile:t,percentileAsymmetry:n});let i=!1,o=null;for(let[t,n]of e){if(t instanceof Date&&(t=t.valueOf(),i=!0),("number"!=typeof r.minX||t<r.minX)&&(r.minX=t),("number"!=typeof r.maxX||t>r.maxX)&&(r.maxX=t),"number"==typeof o&&"number"==typeof t){const e=t-o;("number"!=typeof r.closestSpacing||e<r.closestSpacing)&&(r.closestSpacing=e)}o=t,"number"==typeof n&&(("number"!=typeof r.minY||n<r.minY)&&(r.minY=n),("number"!=typeof r.maxY||n>r.maxY)&&(r.maxY=n))}return de(r,{dates:i})}function me(e){const t={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null,dates:!1,initial:!0};for(let{minX:n,maxX:r,minY:i,maxY:o,dates:a,initial:s,closestSpacing:l}of e)a&&(t.dates=!0),s||(t.initial=!1,(null===t.minX||n<t.minX)&&(t.minX=n),(null===t.maxX||r>t.maxX)&&(t.maxX=r),(null===t.closestSpacing||l<t.closestSpacing)&&(t.closestSpacing=l),(null===t.minY||i<t.minY)&&(t.minY=i),(null===t.maxY||o>t.maxY)&&(t.maxY=o));return null===t.minX&&(t.minX=0),null===t.maxX&&(t.maxX=0),null===t.closestSpacing&&(t.closestSpacing=1),null===t.minY&&(t.minY=0),null===t.maxY&&(t.maxY=0),t}function Ce(e,{expandYWith:t=[],extendXForNBars:n=0}){const r=Object.assign({},e);for(let e of t)null!=e&&(("number"!=typeof r.minY||e<r.minY)&&(r.minY=e),("number"!=typeof r.maxY||e>r.maxY)&&(r.maxY=e));r.unscaledMinY=r.minY,r.unscaledMaxY=r.maxY;const i=r.maxY-r.minY,o=r.minY+i/2;if(r.minY=o-1.05*i/2,r.maxY=o+1.05*i/2,r.minY===r.maxY&&null!==r.minY&&(r.minY>0?(r.minY*=.95,r.maxY*=1.05):r.minY<0?(r.minY*=1.05,r.maxY*=.95):(r.minY-=1,r.maxY+=1)),n&&r.minX!==r.maxX&&null!==r.minX&&null!==r.maxX){const e=(r.maxX-r.minX)/n;r.minX-=e/2,r.maxX+=e/2}return r}function xe(e,t,n={},r=0,i=void 0){if(void 0===i&&(i=e.length-1),0===e.length)return n.returnIndex?-1:[null,null];const o=Math.floor((r+i)/2);if(t===e[o][0]||e[o][0]instanceof Date&&e[o][0].valueOf()===t)return n.returnIndex?o:e[o];if(r===i)return e[r][0]<t&&"before"===n.searchType||e[r][0]>t&&"after"===n.searchType?n.returnIndex?r:e[r]:n.returnIndex?-1:[null,null];if(i-1===r){let o;return o="before"===n.searchType?r:"after"===n.searchType||Math.abs(e[r][0]-t)>Math.abs(e[i][0]-t)?i:r,n.returnIndex?o:e[o]}return t>e[o][0]?xe(e,t,n,o,i):t<e[o][0]?xe(e,t,n,r,o):void 0}function be({data:e,swap:t,minX:n,maxX:r,ignoreDiscontinuities:i,square:o}){if(!e.length||e.length&&n>e[e.length-1][0]||e.length&&r<e[0][0])return{data:[[n,null],[r,null]],firstAdded:!0,lastAdded:!0};let a,s=xe(e,n,{searchType:"before",returnIndex:!0})||0,l=xe(e,r,{searchType:"after",returnIndex:!0})||0;for(-1===l&&(l=0);s>=0&&e[s][0]>=n;)s--;for(;l<e.length&&e[l][0]<=r;)l++;let A=!1,h=!1,c=!1,g=s,p=l;if(i){for(;g>=0&&null===e[g][1];)g--;for(;p<e.length&&null===e[p][1];)p++}if(t){if(a=t.data,t.lastAdded&&a.pop(),n===t.minX&&(A=!0),s!==t.beforeIndex){A=!1,t.firstAdded&&a.shift();let r=t.beforeIndex;for(;r>=0&&a.length&&a[0][0]>=n;)i&&!e[r][1]&&0!==e[r][1]||a.unshift(e[r]),r--;for(;r<e.length&&a.length&&a[0][0]<n;)a.shift(),r++}if(i&&!t.ignoreDiscontinuities&&(a=a.filter((([e,t])=>null!=t))),s===t.beforeIndex&&t.firstAdded){h=!0;let t=s+1;if(i)for(;t<e.length&&null===e[t][1];)t++;-1===g&&a.length?a[0]=[n,null]:o&&a.length?a[0]=[n,e[g][1]]:a.length&&(a[0]=[n,fe(e,g,t,n)]),e[s+1][0]===a[0][0]&&e[s+1][1]===a[0][1]&&(h=!1)}let c=t.afterIndex;if(t.ignoreDiscontinuities&&!i){let t=s+1,n=0;for(h&&n++;n<=a.length&&t<e.length&&t<l;)e[t][0]<=r&&null===e[t][1]&&(!a[n]||a[n][0]!==e[t][0]||a[n][1]!==e[t][1])&&(a.splice(n,0,e[t]),t>=c&&(c=t+1)),t++,n++}let p=c||0;for(;p<e.length&&e[p][0]<=r;)e[p][0]>=n&&(i&&!e[p][1]&&0!==e[p][1]||a.push(e[p])),p++;for(;a.length&&a[a.length-1][0]>r;)a.pop()}else a=e.slice(s+1,l),i&&(a=a.filter((([e,t])=>null!=t)));if(a.length||(a=o?g<0?[[n,null],[r,null]]:[[n,e[g][1]],[r,e[g][1]]]:[[n,fe(e,g,p,n)],[r,fe(e,g,p,r)]],h=!0,c=!0),!A){let t=s+1;if(i)for(;t<e.length&&null===e[t][1];)t++;a.length&&a[0][0]>n&&(h=!0,-1===g?a.unshift([n,null]):o?a.unshift([n,e[g][1]]):a.unshift([n,fe(e,g,t,n)]))}if(a.length&&a[a.length-1][0]<r){c=!0;let t=l-1;if(i)for(;t>=0&&null===e[t][1];)t--;p===e.length?a.push([r,null]):o?a.push([r,a[a.length-1][1]]):a.push([r,fe(e,t,p,r)])}if(1===a.length){let t,i;o?(t=g<0?[n,null]:[n,e[g][1]],i=[r,a[0][1]]):(t=[n,fe(e,g,s+1,n)],i=[r,fe(e,l-1,p,r)]),a.unshift(t),a.push(i),h=!0,c=!0}return{data:a,minX:n,maxX:r,beforeIndex:s,afterIndex:l,firstAdded:h,lastAdded:c,ignoreDiscontinuities:i}}function fe(e,t,n,r){if(t<0||n<0)return null;if(t>=e.length||n>=e.length)return null;if(t===n)return e[t][1];const[i,o]=e[t],[a,s]=e[n];if(r===i&&null!==o)return o;if(r===a&&null!==s)return s;if(null===o||null===s)return null;const l=(r-i)/(a-i);return l<0||l>1?null:l*(s-o)+o}function ye({minY:e,maxY:t,scale:n}){return"log"===n&&(t=Math.log10(t),e=e<=0?t>0?-t:2*t:Math.log10(e)),{minY:e,maxY:t}}let Be;le.propTypes={contextMenu:r().shape({x:r().number,y:r().number,showing:r().bool,value:r().oneOfType([r().instanceOf(Date),r().number,r().object])}).isRequired};const _e=o.e(744).then(o.bind(o,744)).then((e=>e.default().then((()=>{Be=e}))));function Ee(){return Be}function we({data:e,swap:t,renderWidth:n,renderHeight:r,minX:i,maxX:o,minY:a,maxY:s,scale:l,dataChanged:A}){t&&t.yValues.length!==n&&(t=null);const h=t&&t.nullMask||new Uint8Array(n);h.fill(0);const c=new Float64Array(n),g=new Float64Array(n),p=new Float64Array(n),d=ye({minY:a,maxY:s,scale:l}),u={data:e,renderWidth:n,renderHeight:r,minX:i,maxX:o,minY:a=d.minY,maxY:s=d.maxY,scale:l};let m,C;if(Ee()){let n=0;const r=t&&t.dataNullMask&&t.dataF64,a=!A&&r&&t.minX===i&&t.maxX<=o&&t.length<=e.length;if(!a||t.dataNullMask.length<e.length){const n=1.25;m=new Float64Array(Math.floor(2*e.length*n)),C=new Uint8Array(Math.floor(e.length*n)),a&&(C.set(t.dataNullMask),m.set(t.dataF64))}else m=t.dataF64,C=t.dataNullMask;a&&(n=Math.max(t.length-1,0));for(let t=n;t<e.length;t++)m[2*t]=e[t][0],m[2*t+1]=e[t][1],null===e[t][1]?C[t]=1:C[t]=0;Ee().selected_space_to_render_space(e.length,m,C,u,h,c,g,p)}else!function({data:e,renderWidth:t,renderHeight:n,minX:r,maxX:i,minY:o,maxY:a,scale:s},{nullMask:l,yValues:A,minYValues:h,maxYValues:c}){let g=0,p=g-1;for(let d=0;d<t;d++){const u=d/(t-1)*(i-r)+r;let m=null,C=null;for(g>0&&g<=e.length&&null===e[g-1][1]&&g--,g<e.length-2&&e[g+1][0]<u&&g++;g<e.length-2&&e[g+1][0]<u;g++){const t=e[g][1];null!==t&&((null===m||t<m)&&(m=t),(null===C||t>C)&&(C=t))}if(h[d]=null===m?0:n*(1-(("log"===s?Math.log10(m):m)-o)/(a-o)),c[d]=null===C?0:n*(1-(("log"===s?Math.log10(C):C)-o)/(a-o)),g>=e.length-1||null===e[g][1]||null===e[g+1][1]){const t=g>=e.length-1?null:e[g][1];l[d]=null===t|(null===m)<<1|(null===C)<<2,A[d]=null===t?0:n*(1-(("log"===s?Math.log10(t):t)-o)/(a-o)),g++;continue}const[x,b]=e[g],[f,y]=e[g+1];let B=(u-x)/(f-x)*(y-b)+b;p!==g&&(B=b),A[d]=null===B?0:n*(1-(("log"===s?Math.log10(B):B)-o)/(a-o)),l[d]=null===B|(null===m)<<1|(null===C)<<2,p=g}}(u,{nullMask:h,yValues:c,minYValues:g,maxYValues:p});return{nullMask:h,yValues:c,minYValues:g,maxYValues:p,dataF64:m,dataNullMask:C,minX:i,maxX:o,length:e.length}}function ve(e,{series:t,inDataSpace:n}){const r=[];let i=0;for(let o of e){const e=ke(o,t);if(t.yKey&&Array.isArray(e)){for(let e of o[t.yKey]){if(t.ignoreDiscontinuities&&"number"!=typeof e[t.yKey]&&!Array.isArray(e))continue;const o=n[i++][0];t.square&&r.length>0&&r.push([o,r[r.length-1][1]]),r.push([o,e])}continue}if(t.ignoreDiscontinuities&&null==e)continue;const a=n[i++][0];t.square&&r.length>0&&r.push([a,r[r.length-1][1]]),r.push([a,o])}return r.length!==n.length&&console.warn("Flattening didn't give the same length as it has in data space"),r}function ke(e,t){return t.yKey?e[t.yKey]:Array.isArray(e)?1===e.length?e[0]:e[1]:e}function Se(e,t){return t.xKey?e[t.xKey]:Array.isArray(e)?e[0]:e}function De({mouseX:e,mouseY:t,sizing:n},r){const{x:i,y:o}=r,a=r.series.axis.scale,s=r.series.axis.currentBounds,{minY:l,maxY:A}=ye({...s,scale:a}),h=(i-s.minX)/(s.maxX-s.minX)*n.elementWidth,c=(1-(("log"===a?Math.log10(o):o)-l)/(A-l))*n.elementHeight,g=Math.sqrt((h-e)**2+(c-t)**2),p=Math.abs(h-e);Object.assign(r,{pixelWidth:n.elementWidth,pixelX:h,pixelY:isNaN(c)?n.elementHeight/2:c,xDistance:p,distance:g})}const Ye={all:()=>{},lastMinute:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-6e4,e.minX)}},last10Minutes:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-6e5,e.minX)}},lastHour:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-36e5,e.minX)}},lastDay:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-864e5,e.minX)}}};function Xe({data:e,swap:t,minX:n,maxX:r,renderWidth:i,dataChanged:o}){const a=2*i;let s;if(!o&&t&&t.minX===n&&t.maxX<=r&&t.length<=e.length?(s=t.data,e.length>t.length&&(e.length>0&&s.length>0&&(s[s.length-1]=e[t.length-1]),s=s.concat(e.slice(t.length)))):s=[...e],s.length/a<4)return{data:s,minX:n,maxX:r,length:e.length};const l=[],A=(r-n)/a;let h=null,c=null,g=0;e.length&&l.push(e[0]);for(let e of s){const[t,r]=e;if(null===r)continue;const i=Math.floor((t-n)/A);i!==g&&(h&&c&&(h===c?l[l.length-1]!==h&&l.push(h):h[0]<c[0]?l.push(c,h):l.push(h,c)),h=null,c=null,g=i),(!h||r<h[1])&&(h=e),(!c||r>c[1])&&(c=e)}return h&&c&&(h===c?l.push(h):h[0]<c[0]?l.push(c,h):l.push(h,c)),e.length>=2&&e[e.length-1]!==h&&e[e.length-1]!==c&&l.push(e[e.length-1]),{data:l,minX:n,maxX:r,length:e.length}}function Re(e,t){let n=e.name||e.yKey;return n||(n=t.toString()),n}function Te({data:e,background:t,minX:n,maxX:r}){if(!t)return null;const i=[];for(let[e,n]of Object.entries(t)){if("object"==typeof n){if("function"!=typeof n.evaluator)throw new Error("Invalid background declaration: "+e+" (evaluator must be a function)");i.push(Object.assign({key:e,comparator:"custom",comparedAgainst:null},n));continue}if("null"===e){i.push({evaluator:e=>null===e&&n,color:n,key:e,comparator:"=",comparedAgainst:null});continue}const[t,r]=e.split(" ");if(!t||!r||isNaN(parseFloat(r)))throw new Error("Invalid background declaration: "+e);const o=parseFloat(r);let a;if("="===t)a=e=>"number"==typeof e&&e===o&&n;else if("<"===t)a=e=>"number"==typeof e&&e<o&&n;else if(">"===t)a=e=>"number"==typeof e&&e>o&&n;else if("<="===t)a=e=>"number"==typeof e&&e<=o&&n;else{if(">="!==t)throw new Error("Invalid background declaration: "+e);a=e=>"number"==typeof e&&e>=o&&n}i.push({evaluator:a,color:n,key:e,comparator:t,comparedAgainst:o})}const o=[];let a=null;for(let t=0;t<e.length;t++){let[s,l]=e[t];s instanceof Date&&(s=s.valueOf());for(let A of a?[a.condition,...i]:i){const i=A.evaluator(l);if(a){if(a.color===i)break;let h=s;if(t>0){let[n,r]=e[t-1];n instanceof Date&&(n=n.valueOf()),h=null===a.condition.comparedAgainst?s:null===l?n:n+(A.comparedAgainst-r)/(l-r)*(s-n)}o.push({...a,maxX:h,maxXt:(h-n)/(r-n)}),a=null}if(i){let o=s;if(t>0){let[n,r]=e[t-1];n instanceof Date&&(n=n.valueOf()),o=null===A.comparedAgainst?n:null===r?s:n+(A.comparedAgainst-r)/(l-r)*(s-n)}a={minX:o,minXt:(o-n)/(r-n),color:i,condition:A};break}}}return a&&o.push({...a,maxX:e[e.length-1][0],maxXt:(e[e.length-1][0]-n)/(r-n)}),{data:o}}class Fe extends O{constructor({defaultBoundsCalculator:e,customBoundsSelectors:t,requireWASM:n,defaultShowIndividualPoints:r,defaultShowSidebar:i,defaultShowAnnotations:o,defaultShowOptions:a,syncPool:s,grapherID:l,sharedDataCache:A,sharedSubscriptions:h,fullscreen:c}){super(),this._requireWASM=n,n&&_e.then((()=>{this._markDirty()})),this._series=[],this._seriesFromOriginalSeries=new Map,this._axes=[{series:[],scale:"linear",side:"left",axisIndex:0}],this._highlightedSeries=null,this._showIndividualPoints=r||!1,this._autoscaleY=!0,this._percentile=100,this._percentileAsymmetry=0,this._showingOptions=a,this._maxPrecision=!1,this._showingSidebar=i||!1,this._showingAnnotations=o||!1,this._grapherID=l,this._fullscreen=c||!1,this._alwaysTooltipped=new Set,this._tooltipState={mousePresent:!1,mouseX:0,mouseY:0,elementWidth:0,elementHeight:0,tooltips:[]},this._contextMenuPosition={x:0,y:0,showing:!1,value:null},this._savedTooltips=[],this._draggingY=!1,this._annotations=[],this._annotationsState={elementWidth:0,annotations:[]},this._enumMap={},this._hasXEnum=!1,this._timingBuffer=[],this._timingIndex=0,this._timingFrameCount=0,this._modifiedSeries=new Set,this._deferredEmissions={},this._deferredPriorityEmissions={},this.primaryRenderer=null,this.rangeGraphRenderer=null,this._boundsCalculator=function(e,t){if(Ye[e])return Ye[e];for(let{label:n,calculator:r}of t)if(e===n)return r;return Ye.all}(e,t),this._boundsHistory=[this._boundsCalculator],this._boundsIndex=0,this._dataCache=A||new Map,this._subscriptions=h||new Map,this._subscriptionsShared=!!h,this._observablesToSeries=new Map,this._generators=new Set,this._generatorsToSeries=new Map,this._generatorCallArgs=new Map,this._seriesChangedFromPromises=new Set,this._syncPool=s,this._syncPool&&this._syncPool.add(this),this._onDataChange()}dispose(){if(this.emit("dispose",this),this.clearListeners(),!this._subscriptionsShared){for(let e of this._subscriptions.values())e.unsubscribe();this._subscriptions.clear()}for(let e of this._series)this._removeSeries(e);this._syncPool&&this._syncPool.remove(this),this.disposed=!0}setSeries(e){const t=this._series.filter((e=>e.userCreated)),n=this._series.filter((e=>!e.userCreated));if(e.length===n.length){let t=!1;for(let n=0;n<e.length;n++)if(e[n]!==this._series[n].originalSeries){t=!0;break}if(!t)return}else this._mustResize=this._mustResize||this._fullscreen;const r=new Set(e);for(let e of n)r.has(e.originalSeries)||this._removeSeries(e);this._series.splice(0);for(let t=0;t<e.length;t++){const n=e[t];let r=this._seriesFromOriginalSeries.get(n);r||(r={...n,originalSeries:n},this._seriesFromOriginalSeries.set(n,r),r.defaultAlwaysTooltipped&&(this._alwaysTooltipped.add(r),this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped))),r.index=t,this._series.push(r),this._assignAxisTo(r),r.hidden&&this._hideSeries(r)}for(let n=0;n<t.length;n++){const r=t[n];r.index=n+e.length,this._series.push(r)}this.deferredEmit("series_changed",this._series),this._dataChanged=!0,this._markDirty()}_markDirty(){if(this._frameRequested)return;if(this._requireWASM&&!Ee)return;const e=performance.now();this._frameRequested=!0,requestAnimationFrame((()=>{if(this.disposed)return;const t=performance.now(),n=performance.now();this._dataChanged?(this._onDataChange(),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0):this._modifiedSeries.size?(this._onDataAdd(this._modifiedSeries),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0):(this._primarySizeChanged&&(this._calculatePrimarySizeDependents(),this._mustRerender=!0),this._rangeGraphSizeChanged&&(this._calculateRangeGraphSizeDependents(),this._mustRerender=!0));const r=performance.now(),i=performance.now();this._mustRerender&&this._render();const o=performance.now(),a=performance.now();this._mustCallGenerators&&this._callGenerators();const s=performance.now(),l=performance.now();this._tooltipsChanged&&this._recalculateTooltips();const A=performance.now(),h=performance.now();this._contextMenuChanged&&this._recalculateContextMenu();const c=performance.now(),g=performance.now();this._annotationsChanged&&this._recalculateAnnotations();const p=performance.now();this._mustResize&&(this.primaryRenderer.resizeDebounced(),this.rangeGraphRenderer&&this.rangeGraphRenderer.resizeDebounced()),this._frameRequested=!1,this._mustRerender=!1,this._dataChanged=!1,this._primarySizeChanged=!1,this._rangeGraphSizeChanged=!1,this._modifiedSeries.clear(),this._seriesChangedFromPromises.clear(),this._tooltipsChanged=!1,this._contextMenuChanged=!1,this._annotationsChanged=!1,this._mustCallGenerators=!1,this._mustResize=!1;const d=performance.now();for(let e of[...Object.values(this._deferredPriorityEmissions),...Object.values(this._deferredEmissions)])this.emit(...e);const u=performance.now();this._deferredEmissions={},this._deferredPriorityEmissions={};const m=performance.now(),C={frameExecution:m-t,frameRequestAndExecution:m-e,generators:s-a,dataProcessing:r-n,renderPipeline:o-i,tooltips:A-l,contextMenu:c-h,annotations:p-g,callbacks:u-d};this.lastLoopTime=C,this._timingFrameCount&&(this._timingBuffer.length<this._timingFrameCount?this._timingBuffer.push(C):this._timingBuffer[this._timingIndex%this._timingFrameCount]=C,this._timingIndex++),this.emit("render_time",m-t,C)}))}deferredEmit(...e){this._deferredEmissions[e[0]]=e}deferredPriorityEmit(...e){this._deferredPriorityEmissions[e[0]]=e}_seriesToSimpleData(e){const t=K(e);if(i.includes(t))return e.data;let n=this._dataCache.get(e.data);if(n&&this._seriesChangedFromPromises.has(e.data))return n;if(n||(n=[],this._dataCache.set(e.data,n),e.simpleData=n),"object_observable"===t||"tuple_observable"===t){let t=this._observablesToSeries.get(e.data);if(t){const r=t.values().next().value;if(n=r.simpleData,!n)throw new Error(`Cannot find simpleData in ${r.name||r.yKey||r.data}`);this._dataCache.set(e.data,n),e.simpleData=n}else t=new Set,e.simpleData=n,this._observablesToSeries.set(e.data,t);t.add(e),this._listenToObservableData({observable:e.data,currentData:n})}return"generator"===t&&(this._generatorsToSeries.has(e.data)||this._generatorsToSeries.set(e.data,new Set),this._generatorsToSeries.get(e.data).add(e),this._generators.has(e.data)||(this._generators.add(e.data),this._callGenerator(e.data))),n}_listenToPromise(e,t){t.then((t=>{this._dataCache.set(e.data,t),e.simpleData=t,this._seriesChangedFromPromises.add(e.data),this._dataChanged=!0,this._markDirty()}))}_listenToObservableData({observable:e,currentData:t}){if(this._subscriptions.has(e))return;this._subscriptions.set(e,!0);const n=e.observe((n=>{if(Array.isArray(n))for(let e of n)t.push(e);else t.push(n);this.emit("observable_modified",e),this.markObservableModified(e)}));this._subscriptions.set(e,n)}markObservableModified(e){if(this._observablesToSeries.has(e)){for(let t of this._observablesToSeries.get(e))this._modifiedSeries.add(t);this._markDirty()}}_unsubscribeFromStaleSeries(){const e=new Set(this._series);for(let[t,n]of this._observablesToSeries){let r=!1;for(let t of n)if(e.has(t)){r=!0;break}r||(this._subscriptions.get(t).unsubscribe(),this._subscriptions.delete(t),this._observablesToSeries.delete(t))}for(let[t,n]of this._generatorsToSeries){let r=!1;for(let t of n)if(e.has(t)){r=!0;break}r||(this._generatorsToSeries.delete(t),this._generators.delete(t),this._generatorCallArgs.delete(t))}}async _callGenerator(e){const t={minX:this._selection.minX,maxX:this._selection.maxX,sizing:this.primaryRenderer.sizing};if(r=t,void 0===(n=this._generatorCallArgs.get(e))||void 0===r?n===r:n.minX===r.minX&&n.maxX===r.maxX&&n.sizing.elementWidth===r.sizing.elementWidth&&n.sizing.renderWidth===r.sizing.renderWidth)return;var n,r;this._generatorCallArgs.set(e,t);const i=await Promise.resolve(e(t));if(i&&this._generatorsToSeries.has(e))if(this._dataChanged=!0,this._markDirty(),"function"==typeof i.observe){const t=[];this._dataCache.set(e,t);for(let n of this._generatorsToSeries.get(e))n.simpleData=t;for(let t of this._generatorsToSeries.get(e))this._observablesToSeries.has(i)||this._observablesToSeries.set(i,new Set),this._observablesToSeries.get(i).add(t);this._listenToObservableData({observable:i,currentData:t})}else{this._dataCache.set(e,i);for(let t of this._generatorsToSeries.get(e))t.simpleData=i}}_callGenerators(){for(let e of this._generators)this._callGenerator(e)}_recalculateTooltips(){this.primaryRenderer&&this.primaryRenderer.sizing&&(this._tooltipState=function({mousePresent:e,mouseX:t,mouseY:n,sizing:r,series:i,alwaysTooltipped:o,savedTooltips:a,allTooltipped:s,closestSpacing:l}){a=a.filter((e=>e.series.axis));for(let e of a)De({mouseX:t,mouseY:n,sizing:r},e);if(!e)return{mouseX:t,mouseY:n,elementWidth:r.elementWidth,elementHeight:r.elementHeight,tooltips:[...a]};const A=[];let h=1/0;for(let e=0;e<i.length;e++){const a=i[e];if(a.hidden)continue;const c=a.axis,g=c.scale,p=c.currentBounds,{minY:d,maxY:u}=ye({...p,scale:g}),m=t/r.elementWidth*(p.maxX-p.minX)+p.minX;let C=a.inDataSpace;a.ignoreDiscontinuities&&(C=C.filter((e=>"number"==typeof e[1])));const x=xe(C,m,{returnIndex:!0}),b=C[x];if(!b)continue;const[f,y]=b;if(null===f)continue;let B=(f-p.minX)/(p.maxX-p.minX)*r.elementWidth;const _=(1-(("log"===g?Math.log10(y):y)-d)/(u-d))*r.elementHeight;if(_>r.elementHeight||_<0)continue;const E=o.has(a)||s;let v=20,k=20,S=20;if("bar"===a.rendering){const e=a.axis.series.indexOf(a),t=a.axis.series.length,{totalBarWidth:n,barWidth:i}=H({closestSpacing:l,bounds:p,sizing:r,axisSeriesCount:t});B-=n/2/r.pixelRatio,B+=i*(e+.5)/r.pixelRatio,v=i/2/r.pixelRatio,k=100,S=v+k}const D=Math.abs(B-t),Y=Math.abs(_-n),X=Math.sqrt(D**2+(_-n)**2);if(D>v||!E&&Y>k||!E&&X>S)continue;let R,T;const F=a.simpleData||a.data,M=F.length&&!!a.hasEnum;if(a.xLabel||a.yLabel||M){let e;e=F.length===C.length?F[x]:ve(F,{series:a,inDataSpace:C})[x][1],a.xLabel?R=e[a.xLabel]:a.hasXEnum&&(R=Se(e,a)),a.yLabel?T=e[a.yLabel]:M&&(T=ke(e,a))}X<h&&(h=X);let P=w(a.color,e,a.multigrapherSeriesIndex);y<0&&a.negativeColor?P=a.negativeColor:0===y&&a.zeroLineColor&&(P=a.zeroLineColor),A.push({pixelWidth:r.elementWidth,pixelX:B,pixelY:isNaN(_)?r.elementHeight/2:_,x:f,y,color:P,distance:X,xDistance:D,index:e,series:a,xLabel:R,yLabel:T,fullYPrecision:a.fullYPrecision,ignoreYDistance:E})}const c=A.filter((({distance:e,ignoreYDistance:t})=>e===h||t)).sort(((e,t)=>t.distance-e.distance));return{mousePresent:e,mouseX:t,mouseY:n,elementWidth:r.elementWidth,elementHeight:r.elementHeight,unsavedTooltipsCount:c.length,tooltips:[...a,...c]}}({mousePresent:this._tooltipState.mousePresent,mouseX:this._tooltipState.mouseX,mouseY:this._tooltipState.mouseY,sizing:this.primaryRenderer.sizing,series:this._series,alwaysTooltipped:this._alwaysTooltipped,savedTooltips:this._savedTooltips,allTooltipped:this._tooltipAllNext,closestSpacing:this._globalBounds.closestSpacing}),this._tooltipAllNext=!1,this.deferredEmit("tooltip_state_changed",this._tooltipState,this._tooltipStateArg),this._tooltipStateArg=null)}_recalculateContextMenu(){if(!this.primaryRenderer||!this.primaryRenderer.sizing)return;const e=this.primaryRenderer.boundingRect,t=this.primaryRenderer.sizing;let n=null,r=null;for(let i of this._series){const o=i.axis.currentBounds;r=this._contextMenuPosition.x-e.left,this._contextMenuPosition.x>2*(e.right-t.elementWidth)&&(r-=130),n="timestamp"===i.xKey||"time"===i.xKey||"date"===i.xKey?new Date((this._contextMenuPosition.x-e.left)/t.elementWidth*(o.maxX-o.minX)+o.minX):(this._contextMenuPosition.x-e.left)/t.elementWidth*(o.maxX-o.minX)+o.minX}this._contextMenuPosition={x:r,y:this._contextMenuPosition.y-e.top,showing:this._contextMenuPosition.showing,value:n},this.deferredEmit("context_menu_position_changed",this._contextMenuPosition)}_recalculateAnnotations(){this.primaryRenderer&&this.primaryRenderer.sizing&&(this._annotationsState=function({annotations:e,series:t,sizing:n,selection:r}){const i=new Set(t.map(((e,t)=>({name:Re(e,t),hidden:e.hidden}))).filter((({hidden:e})=>!e)).map((({name:e})=>e))),{elementWidth:o}=n,{minX:a,maxX:s}=r;return{annotations:e.filter((e=>{if(!e.series)return!0;for(let t of e.series)if(i.has(t))return!0;return!1})).map((e=>{let t=e.x;"string"==typeof t?t=new Date(t).valueOf():t instanceof Date&&(t=t.valueOf());let n=e.xEnd||t;"string"==typeof n?n=new Date(n).valueOf():n instanceof Date&&(n=n.valueOf());const r=Math.min(t,n),i=Math.max(t,n),l=(r-a)/(s-a)*o,A=(i-a)/(s-a)*o,h=Math.max(A-l,1);return{...e,pixelX:l,width:h}})),elementWidth:o}}({annotations:this._annotations,series:this._series,sizing:this.primaryRenderer.sizing,selection:this._selection}),this.deferredEmit("annotations_changed",this._annotationsState))}_onDataChange(){this._expandYWith=[];const e=[];for(let t of this._series){if(t.hidden)continue;const n=this._seriesToSimpleData(t);t.inDataSpace=Ae({...t,data:n},{stateController:this}),t.simpleDataSliceStart=n.length,t.dataBounds=ue(t.inDataSpace),"bar"===t.rendering&&(t.dataBounds=Ce(t.dataBounds,{extendXForNBars:t.inDataSpace.length,expandYWith:t.expandYWith})),e.push(t.dataBounds),t.expandYWith&&this._expandYWith.push(t.expandYWith)}this._unsubscribeFromStaleSeries(),this._dataBounds=me(e),this._recalculateSelection({disableSwap:!0});for(let e of this._series)e.hidden||(e.selectedBounds=ue(e.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.hasAreaBottom&&(e.selectedBoundsAreaTop=e.selectedBounds,e.selectedBoundsAreaBottom=ue(e.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.selectedBounds=me([e.selectedBoundsAreaTop,e.selectedBoundsAreaBottom])));this._recalculateAxisBounds();for(let e of this._series)e.hidden||(this._calculatePrimarySizeDependents(e,{dataChanged:!0}),this._calculateRangeGraphSizeDependents(e,{dataChanged:!0}))}_onDataAdd(e){const t=new Map,n=new Set,r=new Set;for(let t of e)r.add(t);for(let r of e){if(n.add(r.axis),!r.inDataSpace)throw new Error("inDataSpace must be present for onDataAdd to be called");const e=this._seriesToSimpleData(r);let i;r.inDataSpace.length&&(i=r.inDataSpace[r.inDataSpace.length-1][1]);const o=Ae(r,{data:e.slice(r.simpleDataSliceStart||0),valueXStart:r.inDataSpace.length,prevY:i,stateController:this});if(t.set(r,o),r.simpleDataSliceStart=e.length,o.length<32)r.inDataSpace.push(...o);else for(let e of o)r.inDataSpace.push(e);let a=ue(o);"bar"===r.rendering&&(a=Ce(a,{extendXForNBars:r.inDataSpace.length,expandYWith:r.expandYWith})),r.dataBounds=me([r.dataBounds,a]),this._dataBounds=me([this._dataBounds,a]),r.newPointCount=o.length,r.newDataBounds=a}const i=this._selection;this._recalculateSelection();for(let n of e){if(!n.inSelectedSpace.data.length){n.selectedBounds=ue(n.inSelectedSpace.data);continue}const e=n.inSelectedSpace.data[0][0],r=n.inSelectedSpace.data[n.inSelectedSpace.data.length-1][0];if(!(i.minX>=e&&i.maxX<=r)||100!==this._percentile){n.selectedBounds=ue(n.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.hasAreaBottom&&(n.selectedBoundsAreaTop=n.selectedBounds,n.selectedBoundsAreaBottom=ue(n.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.selectedBounds=me([n.selectedBoundsAreaTop,n.selectedBoundsAreaBottom]));continue}const o=t.get(n).filter((e=>e[0]>=this._selection.minX&&e[0]<=this._selection.maxX));n.newSelectedData=o,n.selectedBounds=me([n.selectedBounds,ue(o)])}this._recalculateAxisBounds(),this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)));for(let e of n)for(let t of e.series)this._calculatePrimarySizeDependents(t),this._calculateRangeGraphSizeDependents(t)}_recalculateAxisBounds(){for(let e of this._axes){if(this._selection.fixedY||!this._autoscaleY){e.targetBounds=this._selection,e.targetBounds.byAxis&&(e.targetBounds=e.targetBounds.byAxis[e.axisIndex]),e.currentBounds=e.targetBounds;continue}const t=[],n=[];for(let r of e.series)t.push(r.selectedBounds),r.expandYWith&&n.push(...r.expandYWith),"bar"===r.rendering&&n.push(r.dataBounds.minY,r.dataBounds.maxY);e.selectedDataBounds=me(t),e.targetBounds=e.currentBounds=Ce(e.selectedDataBounds,{expandYWith:n})}this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)))}_recalculateSelection({disableSwap:e=!1}={}){this._globalBounds=Ce(this._dataBounds,{expandYWith:this._expandYWith.flat()}),this.deferredPriorityEmit("global_bounds_changed",this._globalBounds),this._selection=function(e,t){const n=Object.assign({},e,t(e));return n.maxX instanceof Date&&(n.maxX=n.maxX.valueOf()),n.minX instanceof Date&&(n.minX=n.minX.valueOf()),n.maxX<n.minX&&(n.maxX=n.minX),n.minX<e.minX&&(n.minX=e.minX),n.maxX>e.maxX&&(n.maxX=e.maxX),n}(this._globalBounds,this._boundsCalculator),this.deferredPriorityEmit("selection_changed",this._selection);for(let t of this._series)t.hidden||(t.inSelectedSpace=be({data:t.hasAreaBottom?t.inDataSpace.filter(((e,t)=>t%2==1)):t.inDataSpace,swap:e?null:t.inSelectedSpace,minX:this._selection.minX,maxX:this._selection.maxX,ignoreDiscontinuities:t.ignoreDiscontinuities,square:t.square}),t.hasAreaBottom&&(t.inSelectedSpaceAreaBottom=be({data:t.inDataSpace.filter(((e,t)=>t%2==0)),swap:e?null:t.inSelectedSpaceAreaBottom,minX:this._selection.minX,maxX:this._selection.maxX,ignoreDiscontinuities:t.ignoreDiscontinuities,square:t.square})))}_render(){if(this.primaryRenderer&&this.primaryRenderer.sizing){this.primaryRenderer.clear(),this.rangeGraphRenderer&&this.rangeGraphRenderer.clear();for(let e of this._series){if(e.hidden)continue;const t=e.shadowColor||{day:"white",export:"transparent",night:"black"}[this._theme]||"black",n=void 0;this.primaryRenderer.renderBackground(e.inBackgroundSpacePrimary),this.primaryRenderer.render(e,e.inRenderSpacePrimary,{highlighted:this._highlightedSeries===e.index,showIndividualPoints:this._showIndividualPoints,shadowColor:t,shadowBlur:n,defaultLineWidth:this._defaultLineWidth,globalBounds:this._globalBounds,inRenderSpaceAreaBottom:e.inRenderSpacePrimaryAreaBottom}),this.rangeGraphRenderer&&this.rangeGraphRenderer.sizing&&this.rangeGraphRenderer.render(e,e.inRenderSpaceRangeGraph,{shadowColor:"transparent",shadowBlur:0,width:1,bounds:this._globalBounds,globalBounds:this._globalBounds,inRenderSpaceAreaBottom:e.inRenderSpaceRangeGraphAreaBottom})}}}_calculatePrimarySizeDependents(e,{dataChanged:t=!1}={}){if(!this.primaryRenderer||!this.primaryRenderer.sizing)return;if(!e){for(let e of this._series)this._calculatePrimarySizeDependents(e);return}if(!this._series.includes(e))throw new Error("Series no longer exists");if(e.hidden)return;const{currentBounds:n,scale:r}=e.axis,i=Math.ceil(this.primaryRenderer.sizing.renderWidth/2),o=Math.ceil(this.primaryRenderer.sizing.renderHeight),a={minX:n.minX,maxX:n.maxX,renderWidth:i,dataChanged:t};e.inCondensedSelectedSpacePrimary=Xe({data:e.inSelectedSpace.data,swap:e.inCondensedSelectedSpacePrimary,...a});const s={minX:n.minX,maxX:n.maxX,minY:n.minY,maxY:n.maxY,renderWidth:i,renderHeight:o,scale:r,dataChanged:t};e.inRenderSpacePrimary=we({data:e.inCondensedSelectedSpacePrimary.data,swap:e.inRenderSpacePrimary,...s}),e.inBackgroundSpacePrimary=Te({data:e.inCondensedSelectedSpacePrimary.data,background:e.background,swap:e.inBackgroundSpacePrimary,minX:n.minX,maxX:n.maxX}),e.hasAreaBottom&&(e.inCondensedSelectedSpacePrimaryAreaBottom=Xe({data:e.inSelectedSpaceAreaBottom.data,swap:e.inCondensedSelectedSpacePrimaryAreaBottom,...a}),e.inRenderSpacePrimaryAreaBottom=we({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,swap:e.inRenderSpacePrimaryAreaBottom,...s}),e.inBackgroundSpacePrimaryAreaBottom=Te({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,background:e.background,swap:e.inBackgroundSpacePrimaryAreaBottom,minX:n.minX,maxX:n.maxX}))}_calculateRangeGraphSizeDependents(e,{dataChanged:t=!1}={}){if(!this.rangeGraphRenderer||!this.rangeGraphRenderer.sizing)return;if(!e){for(let e of this._series)this._calculateRangeGraphSizeDependents(e);return}if(!this._series.includes(e))throw new Error("Series no longer exists");if(e.hidden)return;const{scale:n}=e.axis,r=this._globalBounds,i=Math.ceil(this.rangeGraphRenderer.sizing.renderWidth/2),o=Math.ceil(this.rangeGraphRenderer.sizing.renderHeight),a={minX:r.minX,maxX:r.maxX,ignoreDiscontinuities:e.ignoreDiscontinuities,square:e.square};e.inSelectedSpaceRangeGraph=be({data:e.hasAreaBottom?e.inDataSpace.filter(((e,t)=>t%2==1)):e.inDataSpace,swap:e.inSelectedSpaceRangeGraph,...a});const s={minX:r.minX,maxX:r.maxX,renderWidth:i,dataChanged:t};e.inCondensedSelectedSpaceRangeGraph=Xe({data:e.inSelectedSpaceRangeGraph.data,swap:e.inCondensedSelectedSpaceRangeGraph});const l={minX:r.minX,maxX:r.maxX,minY:r.minY,maxY:r.maxY,renderWidth:i,renderHeight:o,scale:n,dataChanged:t};e.inRenderSpaceRangeGraph=we({data:e.inCondensedSelectedSpaceRangeGraph.data,swap:e.inRenderSpaceRangeGraph,...l}),e.hasAreaBottom&&(e.inSelectedSpaceRangeGraphAreaBottom=be({data:e.inDataSpace.filter(((e,t)=>t%2==0)),swap:e.inSelectedSpaceRangeGraphAreaBottom,...a}),e.inCondensedSelectedSpaceRangeGraphAreaBottom=Xe({data:e.inSelectedSpaceRangeGraphAreaBottom.data,swap:e.inCondensedSelectedSpaceRangeGraphAreaBottom,...s}),e.inRenderSpaceRangeGraphAreaBottom=we({data:e.inCondensedSelectedSpaceRangeGraphAreaBottom.data,swap:e.inRenderSpaceRangeGraphAreaBottom,...l}))}_createAxis({side:e}){const t={series:[],scale:"linear",side:e,axisIndex:this._axes.length};return this._axes.push(t),t}_moveAxis(e,t){if(!this._series.includes(e))throw new Error("Series no longer exists");let n;if(n="new-left"===t||"new-right"===t?this._createAxis({side:t.split("-")[1]}):this._axes[parseInt(t)],e.axis===n)return;const r=e.axis,i=r.series.indexOf(e);if(-1===i)throw new Error("Series not present in axis");r.series.splice(i,1),n.series.push(e),e.axis=n,this._dataChanged=!0,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("left_axes_changed",this.leftAxes),this.deferredEmit("right_axes_changed",this.rightAxes),this.deferredEmit("exported_axes_changed",this.exportedAxes),this._markDirty()}_assignAxisTo(e){if(e.axis&&"object"==typeof e.axis)return;let t;if(e.axisIndex){const{axisIndex:n}=e;t="new-left"===n||"new-right"===n?this._createAxis({side:n.split("-")[1]}):this._axes[parseInt(n)]}else if(e.axis){e.originalAxis=e.axis;let[n,r]=e.axis.split("-");t=function({axes:e,side:t,number:n}){let r;n=n&&parseInt(n)||0;let i=0;for(let o of e)if(o.side===t){if(i===n){r=o;break}i++}return r}({axes:this._axes,side:n,number:r}),t||(t=this._createAxis({side:n}))}else t=this._axes[0];t.series.push(e),e.axis=t,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("exported_axes_changed",this.exportedAxes),"left"===e.axis.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_removeSeries(e){this._seriesFromOriginalSeries.delete(e.originalSeries);const{axis:t,data:n}=e;t.series.splice(t.series.indexOf(e),1);const r=this._observablesToSeries.get(n);r&&(r.delete(e),0===r.size&&this._observablesToSeries.delete(n)),this._generatorsToSeries.has(n)&&(this._generatorsToSeries.get(n).delete(e),0===this._generatorsToSeries.get(n).size&&(this._generatorsToSeries.delete(n),this._generators.delete(n))),this._alwaysTooltipped.delete(e),e.axis=e.originalAxis,delete e.originalAxis,delete e.inDataSpace,delete e.inSelectedSpace,delete e.inValueSpacePrimary,delete e.inValueSpaceRangeGraph,delete e.inRenderSpacePrimary,delete e.inRenderSpaceRangeGraph,delete e.newPointCount,delete e.newDataBounds,delete e.simpleDataSliceStart,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("exported_axes_changed",this.exportedAxes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_hideSeries(e){const{axis:t}=e,n=t.series.indexOf(e);e.indexInAxis=n,t.series.splice(n,1),this.deferredEmit("axes_changed",this._axes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_showSeries(e){const{axis:t}=e;t.series.splice(e.indexInAxis,0,e),this.deferredEmit("axes_changed",this._axes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}get boundCalculator(){return this._boundsCalculator}get axes(){return this._axes}get leftAxes(){const e=this._axes.filter((({side:e,series:t})=>"left"===e&&t.length>0)).reverse();return 0===e.length&&0===this.rightAxes.length&&e.push(this._axes[0]),e}get rightAxes(){return this._axes.filter((({side:e,series:t})=>"right"===e&&t.length>0))}get bounds(){return this._axes.map((({targetBounds:e})=>e))}get selection(){return this._selection}get globalBounds(){return this._globalBounds}get series(){return this._series}get highlightedSeries(){return this._highlightedSeries}get showIndividualPoints(){return this._showIndividualPoints}get autoscaleY(){return this._autoscaleY}get boundHistory(){return{hasNextBounds:this._boundsIndex<this._boundsHistory.length-1,hasPreviousBounds:this._boundsIndex>0}}get tooltipState(){return this._tooltipState}get contextMenuState(){return this._contextMenuPosition}get alwaysTooltipped(){return this._alwaysTooltipped}get draggingY(){return this._draggingY}get averageLoopTime(){return function(e){const t={};for(let n of e)for(let[e,r]of Object.entries(n))t[e]=(t[e]||0)+r;for(let[n,r]of Object.entries(t))t[n]=r/e.length;return t}(this._timingBuffer)}get exportedAxes(){const e=new Map;let t=0,n=0;for(let r of this._axes){let i;"left"===r.side?(i=`left-${t}`,t++):(i=`right-${n}`,n++);for(let t of r.series)e.set(t,i)}return this.series.map((t=>({...t.originalSeries,axis:e.get(t)})))}get percentile(){return this._percentile}get percentileAsymmetry(){return this._percentileAsymmetry}get showingOptions(){return this._showingOptions}get maxPrecision(){return this._maxPrecision}get showingSidebar(){return this._showingSidebar}get showingAnnotations(){return this._showingAnnotations}get userCreatedSeries(){return this._series.filter((e=>e.userCreated))}get grapherID(){return this._grapherID}get annotationState(){return this._annotationsState}get sizing(){return this.primaryRenderer&&this.primaryRenderer.sizing}get theme(){return this._theme}get exportMode(){return this._exportMode}get enumMap(){return this._enumMap}get hasXEnum(){return this._hasXEnum}markSizeChanged(e){e===this.primaryRenderer?(this.deferredEmit("primary_size_change",this.primaryRenderer.sizing),this.deferredEmit("primary_bounding_rect_change",this.primaryRenderer.boundingRect),this._primarySizeChanged=!0):e===this.rangeGraphRenderer&&(this.deferredEmit("range_graph_size_change",this.rangeGraphRenderer.sizing),this.deferredEmit("range_graph_bounding_rect_change",this.rangeGraphRenderer.boundingRect),this._rangeGraphSizeChanged=!0),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0,this._mustCallGenerators=!0,this._markDirty()}set theme(e){this._theme=e,this._mustRerender=!0,this.deferredEmit("theme_change",this._theme),this._markDirty()}set exportMode(e){this._exportMode=e,e?(this._nonExportTheme=this.theme,this.theme="export"):this.theme=this._nonExportTheme,this.deferredEmit("export_mode_change",this._exportMode),this._markDirty()}set defaultLineWidth(e){this._defaultLineWidth=e,this._mustRerender=!0,this._markDirty()}set boundCalculator(e){e&&e!==this._boundsCalculator&&(e.debounceHistory?(clearTimeout(this._boundingCalculatorDebouncer),this._boundingCalculatorDebouncer=setTimeout((()=>{this._addBoundCalculatorToHistory(e)}),250)):this._addBoundCalculatorToHistory(e),this._boundsCalculator=e,this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this._dataChanged=!0,this._mustCallGenerators=!0,this._markDirty())}set customBoundsSelectors(e){this._customBoundsSelectors=this._customBoundsSelectors||{};const t={};for(let{label:n,calculator:r}of e)t[n]=r,this._boundsCalculator===this._customBoundsSelectors[n]&&this._boundsCalculator!==r&&(this.boundCalculator=r);this._customBoundsSelectors=t}_addBoundCalculatorToHistory(e){this._boundsIndex++,this._boundsHistory=this._boundsHistory.slice(0,this._boundsIndex),this._boundsHistory.push(e),this.emit("bound_history_changed",this.boundHistory)}registerSeriesClick(e){this.emit("series_click",this._series[e],e)}setHighlightedSeries(e){this._highlightedSeries=e,this.deferredEmit("highlighted_series_changed",e),this._mustRerender=!0,this._markDirty()}toggleIndividualPoints(){this._showIndividualPoints=!this._showIndividualPoints,this.deferredEmit("show_individual_points_changed",this._showIndividualPoints),this._mustRerender=!0,this._markDirty()}toggleYAutoscaling(){this._autoscaleY=!this._autoscaleY,this.deferredEmit("autoscale_y_changed",this._autoscaleY),this._markDirty()}toggleExportMode(){this.exportMode=!this._exportMode}setBoundsFromSelection(e){this.boundCalculator=function({minPixelX:e,maxPixelX:t,minPixelY:n,maxPixelY:r},{elementWidth:i,elementHeight:o,selection:a,axes:s}){if(Math.abs(t-e)<1||Math.abs(r-n)<1)return;const l=e/i*(a.maxX-a.minX)+a.minX,A=t/i*(a.maxX-a.minX)+a.minX,h=[];for(let{currentBounds:e,scale:t}of s){const i=ye({...e,scale:t});let a=(1-n/o)*(i.maxY-i.minY)+i.minY,s=(1-r/o)*(i.maxY-i.minY)+i.minY;"log"===t&&(s=Math.pow(10,s),a=Math.pow(10,a)),h.push({minX:l,maxX:A,minY:s,maxY:a})}return()=>({minX:l,maxX:A,byAxis:h})}(e,{elementWidth:this.primaryRenderer.sizing.elementWidth,elementHeight:this.primaryRenderer.sizing.elementHeight,selection:this._selection,axes:this._axes})}nextBounds(){this._boundsIndex++,this._boundsCalculator=this._boundsHistory[this._boundsIndex],this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this.deferredEmit("bound_history_changed",this.boundHistory),this._dataChanged=!0,this._markDirty()}previousBounds(){this._boundsIndex--,this._boundsCalculator=this._boundsHistory[this._boundsIndex],this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this.deferredEmit("bound_history_changed",this.boundHistory),this._dataChanged=!0,this._markDirty()}setLabel({axisIndex:e,label:t}){this._axes[e].label=t,this.deferredEmit("axes_changed",[...this._axes]),this._markDirty()}toggleScale({axisIndex:e}){const t=this._axes[e].scale;this._axes[e].scale="log"===t?"linear":"log",this._dataChanged=!0,this.deferredEmit("axes_changed",[...this._axes]),this._markDirty()}recalculateTooltips(){this.primaryRenderer.recalculatePosition(),this.setTooltipMousePosition({clientX:this._tooltipClientX,clientY:this._tooltipClientY,shiftKey:this.shiftKeyPressedOnMove,tooltipAllNext:this._tooltipAllNext,tooltipStateArg:this._tooltipStateArg})}setTooltipMousePosition({clientX:e,clientY:t,shiftKey:n,mouseX:r,mouseY:i,tooltipAllNext:o,tooltipStateArg:a}){const s=this.primaryRenderer.sizing;if(!s)return;if("number"==typeof e){if(this._tooltipClientX=e,e<s.boundingRect.left||e>s.boundingRect.right)return void this.showOnlySavedTooltips()}else if("number"!=typeof i)return;if("number"==typeof t){if(this._tooltipClientY=t,t<s.boundingRect.top||t>s.boundingRect.bottom)return void this.showOnlySavedTooltips()}else if("number"!=typeof i)return;const l=r||e-s.boundingRect.left,A=i||t-s.boundingRect.top;this._tooltipState.mousePresent&&l===this._tooltipState.mouseX&&A===this._tooltipState.mouseY||(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!0,this._tooltipState.mouseX=l,this._tooltipState.mouseY=A,this.shiftKeyPressedOnMove=n,this._tooltipAllNext=o,this._tooltipStateArg=a,this._markDirty())}setContextMenuMousePosition({clientX:e,clientY:t}){this._contextMenuPosition={x:e,y:t,showing:!this._contextMenuPosition.showing},this._contextMenuChanged=!0,this._markDirty()}toggleAlwaysTooltipped(e,t){if(this._alwaysTooltipped.has(e))t?this._alwaysTooltipped.clear():this._alwaysTooltipped.delete(e);else if(t)for(let e of this._series)this._alwaysTooltipped.add(e);else this._alwaysTooltipped.add(e);this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped),this._markDirty()}showOnlySavedTooltips(e){this._tooltipState.mousePresent&&(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!1,this._tooltipStateArg=e,this._markDirty())}registerClick({clientX:e}){if(!this._listeners.series_click)return;const t=this.primaryRenderer.boundingRect,n=this.primaryRenderer.sizing;for(let r of this._series){const i=r.axis.currentBounds,o=(e-t.left)/n.elementWidth*(i.maxX-i.minX)+i.minX;this.emit("series_click",{x:o,series:r})}}toggleTooltipSaved(){const e=this._savedTooltips;this._savedTooltips=function({currentTooltips:e,savedTooltips:t}){if(!e.length)return t;const n=e[e.length-1];if(n.xDistance>20||!n.ignoreYDistance&&n.distance>20)return t;const r=t.findIndex((e=>e.x===n.x&&e.y===n.y));return-1===r?[...t,n]:t.filter(((e,t)=>t!==r))}({currentTooltips:this._tooltipState.tooltips,savedTooltips:this._savedTooltips}),this._tooltipsChanged=this._savedTooltips!==e,this._markDirty()}clearSavedTooltips(){0!==this._savedTooltips.length&&(this._savedTooltips=[],this._tooltipsChanged=!0,this._markDirty())}markDragStart(){this._draggingY||(this._draggingY=!0,this.deferredEmit("dragging_y_changed",this._draggingY),this._markDirty())}finalizeDrag(e,t,n){if(!this._draggingY)return;this._draggingY=!1,this.deferredEmit("dragging_y_changed",this._draggingY);const r=t&&0!==t,i=n===this._grapherID;r&&i?(this._moveAxis(e,t),this.deferredEmit("dragging_y_finalized",{draggedSeries:e,axisIndex:t,grapherID:n})):n&&this.deferredEmit("dragging_y_finalized",{draggedSeries:e,axisIndex:t,grapherID:n}),this._markDirty()}set timingFrameCount(e){"number"==typeof e&&(this._timingBuffer=[],this._timingIndex=0,this._timingFrameCount=e)}set percentile(e){void 0!==e&&(this.deferredEmit("percentile_changed",e),""===e&&(e=100),e=parseFloat(e),!isNaN(e)&&e<=100&&e>=0&&(this._percentile=e,this._dataChanged=!0),this._markDirty())}set percentileAsymmetry(e){void 0!==e&&(this.deferredEmit("percentile_asymmetry_changed",e),""===e&&(e=0),e=parseFloat(e),!isNaN(e)&&e<=50&&e>=-50&&(this._percentileAsymmetry=e,this._dataChanged=!0),this._markDirty())}set showingOptions(e){void 0!==e&&(this._showingOptions=e,this.deferredEmit("showing_options_changed",e),this._markDirty())}toggleShowingOptions(){this.showingOptions=!this.showingOptions}toggleMaxPrecision(){this._maxPrecision=!this._maxPrecision,this.deferredEmit("max_precision_changed",this._maxPrecision),this._markDirty()}toggleShowingAnnotations(){this._showingAnnotations=!this._showingAnnotations,this.deferredEmit("showing_annotations_changed",this._showingAnnotations),this._markDirty()}toggleShowingSidebar(){this._showingSidebar=!this._showingSidebar,this.deferredEmit("showing_sidebar_changed",this._showingSidebar),this._markDirty()}setShowing(e,t){e.hidden=!t,this._series=[...this._series],e.hidden?this._hideSeries(e):this._showSeries(e),this.deferredEmit("series_changed",this._series,{skipResize:!0}),this._dataChanged=!0,this._markDirty()}set annotations(e){this._annotations=e||[],this._annotationsChanged=!0,this._markDirty()}enumToNumber(e,t,n){const r=this._enumMap[e];if("number"==typeof r)return r;const i=Object.keys(this._enumMap).length;return this._enumMap[e]=i,this._series[t.index].hasEnum=!0,n&&(this._series[t.index].hasXEnum=!0,this._hasXEnum=!0,this.deferredEmit("has_x_enum_change",this._hasXEnum),this.deferredEmit("x_enum_map_change",this._enumMap)),this.deferredEmit("enum_map_change",this._enumMap),i}triggerResize(){this._mustResize=!0,this._markDirty()}}function Me(t,n,r=null,i=[]){if("function"==typeof r){const e=r;r=()=>e}const[o,a]=(0,e.useState)(r);return(0,e.useEffect)((()=>{const e=e=>{if("function"==typeof e){const t=e;e=()=>t}a(e)};return t.on(n,e),()=>{t.off(n,e)}}),[...i,a,t]),o}function Pe(e){return Me(e,"primary_size_change",e.primaryRenderer?e.primaryRenderer.sizing:{elementWidth:0,elementHeight:0,renderWidth:0,renderHeight:0})}function ze(e){return Me(e,"axes_changed",e.axes)}function $e(e){return Me(e,"series_changed",e.series)}function Ie(e){return Me(e,"highlighted_series_changed",e.highlightedSeries)}function Oe(e){return Ne(e).length}function Le(e){return Ge(e).length}function Ne(e){return Me(e,"right_axes_changed",e.rightAxes)}function Ge(e){return Me(e,"left_axes_changed",e.leftAxes)}function We(e){return Me(e,"axis_bounds_changed",e.axes.map((({currentBounds:e})=>e)))}function qe(e){return Me(e,"autoscale_y_changed",e.autoscaleY)}function Ue(e){return Me(e,"showing_options_changed",e.showingOptions)}function He(e){return Me(e,"max_precision_changed",e.maxPrecision)}function Ke(e){return Me(e,"showing_sidebar_changed",e.showingSidebar)}function je(e){return Me(e,"showing_annotations_changed",e.showingAnnotations)}function Ve(e){return Me(e,"primary_size_change",e.sizing)}function Je(e){return Me(e,"theme_change",e.theme)}class Ze extends t().PureComponent{render(){const{bodyHeight:e,annotationState:n}=this.props,{annotations:r,elementWidth:i}=n;return t().createElement("div",{className:"grapher-annotations"},r.map((({pixelX:n,width:r,content:o,lineOnly:a},s)=>{if(a)return t().createElement("div",{key:s,className:"grapher-annotation",style:{left:n}},t().createElement("div",{className:"annotation-marker",style:{width:r,height:e}}));const l={top:21*s};return i-n<5.5*o.length?l.left=n-i:l.left=0,t().createElement("div",{key:s,className:"grapher-annotation",style:{left:n}},t().createElement("div",{className:"annotation-marker",style:{width:r,height:e}}),t().createElement("div",{className:"annotation-text",style:l},o))})))}}Ze.propTypes={annotationState:r().shape({annotations:r().arrayOf(r().object).isRequired,elementWidth:r().number.isRequired}),bodyHeight:r().number,lineOnly:r().bool};const Qe=t().memo(et);function et({stateController:e,draggablePoints:n,onPointDrag:r,onDraggablePointsDoubleClick:i}){const o=We(e)[0],a=Ve(e);if(!a)return null;const s=i&&(e=>{const t=(e.clientX-a.boundingRect.left)/a.elementWidth,n=1-(e.clientY-a.boundingRect.top)/a.elementHeight;i(e,{x:t*(o.maxX-o.minX)+o.minX,y:n*(o.maxY-o.minY)+o.minY})});return t().createElement("div",{className:"grapher-draggable-points",onDoubleClick:s},t().createElement("svg",{width:a.elementWidth,height:a.elementHeight},n.map(((e,n)=>{const i=(e.x-o.minX)/(o.maxX-o.minX),s=1-(e.y-o.minY)/(o.maxY-o.minY);if(i<0||i>1||s<0||s>1)return null;const l=i*a.elementWidth,A=s*a.elementHeight,h=e.radius||5,c=e.fillColor||E[0],g=e.strokeColor||"white",p=e.strokeWidth||1,d=e.onClick&&(t=>{e.onClick(t,e)}),u=e.onDoubleClick&&(t=>{t.stopPropagation(),e.onDoubleClick(t,e)});return t().createElement("circle",{key:n,cx:l,cy:A,r:h,fill:c,stroke:g,strokeWidth:p,onMouseDown:t=>{if(t.stopPropagation(),!r)return;const i=l-t.clientX,s=A-t.clientY,h=t=>{const l=(t.clientX+i)/a.elementWidth,A=1-(t.clientY+s)/a.elementHeight;r({index:n,point:e,x:l*(o.maxX-o.minX)+o.minX,y:A*(o.maxY-o.minY)+o.minY},t)},c=()=>{window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",c)};window.addEventListener("mousemove",h),window.addEventListener("mouseup",c)},onClick:d,onDoubleClick:u})}))))}et.propTypes={stateController:r().instanceOf(Fe).isRequired,draggablePoints:B.DraggablePoints.isRequired,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func};const tt=t().memo(nt);function nt({stateController:e,verticalLines:n,isRangeGraph:r,bounds:i,elementWidth:o,elementHeight:a}){i=i||We(e)[0];const s=Ve(e);if(!s)return null;const l=n.filter((e=>!(r&&!e.onRangeGraph||e.onRangeGraphOnly&&!r)));return 0===l.length?null:t().createElement("div",{className:"grapher-vertical-lines"},t().createElement("svg",{width:o||s.elementWidth,height:a||s.elementHeight},l.map(((e,n)=>{r&&"object"==typeof e.onRangeGraph&&(e={...e,...e.onRangeGraph});const l=(e.x-i.minX)/(i.maxX-i.minX);if(l<0||l>1)return null;const A=l*(o||s.elementWidth);if("number"==typeof e.minPixelX&&A<e.minPixelX)return null;if("number"==typeof e.maxPixelX&&A>e.maxPixelX)return null;const h={stroke:e.color,strokeWidth:e.width,...e.style||{}},c={fill:e.color,...e.markerStyle||{}},g={fontSize:"12px",fill:e.color,stroke:"none",textAnchor:"middle",dominantBaseline:"hanging",...e.textStyle||{}};let p=0;"number"==typeof e.lineTop?p=e.lineTop:e.text&&(p=18);let d=5;return"number"==typeof e.textTop&&(d=e.textTop),t().createElement(t().Fragment,{key:n},t().createElement("line",{x1:A,y1:p,x2:A,y2:a||s.elementHeight,style:h}),e.markTop&&t().createElement("polygon",{points:`${A-3},0 ${A+3},0 ${A},3`,style:c}),e.text&&t().createElement("text",{x:A,y:d,style:g},e.text))}))))}function rt(){return rt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rt.apply(this,arguments)}nt.propTypes={stateController:r().instanceOf(Fe).isRequired,verticalLines:B.VerticalLines.isRequired,isRangeGraph:r().bool,bounds:r().object,elementWidth:r().number,elementHeight:r().number};const it=t().memo(ot);function ot({stateController:n,webgl:r,bodyHeight:i,boundsSelectionEnabled:o,showTooltips:a,tooltipOptions:s,checkIntersection:l,draggablePoints:A,onPointDrag:h,onDraggablePointsDoubleClick:c,verticalLines:g,clockStyle:p,timeZone:d}){const u=(0,e.useCallback)((e=>{if(n.primaryRenderer&&n.primaryRenderer.dispose(),!e)return;const t=new j({stateController:n,canvasElement:e,webgl:r,checkIntersection:l});n.primaryRenderer=t,t.resize()}),[r,n]),[m,C]=(0,e.useState)({showing:!1,start:{},style:{}}),x=qe(n),b=ze(n).length,f=function(e){return Me(e,"tooltip_state_changed",e.tooltipState)}(n),y=He(n),B=je(n),_=function(e){return Me(e,"annotations_changed",e.annotationState)}(n),E=function(e){return Me(e,"context_menu_position_changed",e.contextMenuState)}(n);return(0,e.useEffect)((()=>{const e=()=>{a&&n.recalculateTooltips()},t=e=>{a&&n.setTooltipMousePosition({clientX:e.clientX,clientY:e.clientY,shiftKey:e.shiftKey})};return window.addEventListener("scroll",e,{passive:!0}),window.addEventListener("mousemove",t,{passive:!0}),()=>{window.removeEventListener("scroll",e),window.removeEventListener("mousemove",t)}}),[]),t().createElement("div",{className:"graph-body graph-body-primary",onMouseMove:e=>{if(m.showing){const t=n.primaryRenderer.boundingRect,r=e.clientX-t.left,i=e.clientY-t.top;C((({start:e})=>({showing:!0,start:e,style:{left:Math.min(r,e.x),top:x?0:Math.min(i,e.y),width:Math.abs(r-e.x),height:x?t.height:Math.abs(i-e.y)}})))}},onMouseLeave:()=>{n.setContextMenuMousePosition({showing:!1})},onMouseDown:e=>{if(!o)return;let t=e.target;for(let e=0;e<10&&t;e++){if(t.classList.contains("grapher-tooltip"))return;t=t.parentNode}const r=n.primaryRenderer.boundingRect,i={x:e.clientX-r.left,y:e.clientY-r.top};C({showing:!0,start:i,style:{left:i.x,top:i.y,width:0,height:0}});const a=e=>{if(window.removeEventListener("mouseup",a),!o)return;const t=e.clientX-r.left,s=e.clientY-r.top;n.setBoundsFromSelection({minPixelX:Math.min(t,i.x),maxPixelX:Math.max(t,i.x),minPixelY:Math.min(s,i.y),maxPixelY:Math.max(s,i.y)}),C({showing:!1,style:{}})};window.addEventListener("mouseup",a)},onClick:e=>{n.registerClick({clientX:e.clientX,clientY:e.clientY}),s&&s.savingDisabled?n.clearSavedTooltips():(e.target.closest(".grapher-context-menu")||n.setContextMenuMousePosition({showing:!1}),window.getSelection&&"Range"===window.getSelection().type||n.toggleTooltipSaved())},onDoubleClick:()=>{n.clearSavedTooltips()},onContextMenu:e=>{e.preventDefault(),n.setContextMenuMousePosition({clientX:e.clientX,clientY:e.clientY,showing:!0})},style:"number"==typeof i?{height:i}:void 0},t().createElement("canvas",{ref:u}),a&&t().createElement(se,rt({axisCount:b,maxPrecision:y,clockStyle:p,timeZone:d},s||{},f)),E.showing&&t().createElement(le,{contextMenu:E}),B&&t().createElement(Ze,{bodyHeight:i,annotationState:_}),g&&t().createElement(tt,{stateController:n,verticalLines:g}),A&&t().createElement(Qe,{stateController:n,draggablePoints:A,onPointDrag:h,onDraggablePointsDoubleClick:c}),o&&m.showing&&t().createElement("div",{className:"bounds-selection",style:m.style}))}ot.propTypes={stateController:r().instanceOf(Fe).isRequired,webgl:r().bool,checkIntersection:r().bool,bodyHeight:r().number,boundsSelectionEnabled:r().bool.isRequired,showTooltips:r().bool.isRequired,tooltipOptions:B.TooltipOptions,verticalLines:B.VerticalLines,draggablePoints:B.DraggablePoints,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string};var at=o(72),st=o.n(at),lt=o(825),At=o.n(lt),ht=o(659),ct=o.n(ht),gt=o(56),pt=o.n(gt),dt=o(540),ut=o.n(dt),mt=o(113),Ct=o.n(mt),xt=o(557),bt={};function ft(e,{scale:t,min:n,max:r,inverted:i,totalSize:o,precision:a,formatter:s,dates:l,justTime:A,justDate:h,formatOptions:c={}},g={}){let p=e;"log"===t&&(p=10**e);let d=(e-n)/(r-n);i&&(d=1-d);let u=d*o;return isNaN(u)&&(u=0),{pixelValue:u,trueValue:p,label:s(p,{...c,precision:a,log:"log"===t,dates:l,justTime:A,justDate:h}),size:"major",...g}}function yt(e,{scale:t,min:n,max:r,inverted:i,totalSize:o,precision:a,formatter:s,dates:l,justTime:A,justDate:h,formatOptions:c={}},g={}){let p=e/o;i&&(p=1-p);let d=p*(r-n)+n;return"log"===t&&(d=Math.pow(10,d)),{pixelValue:e,trueValue:d,label:s(d,{...c,precision:a,log:"log"===t,dates:l,justTime:A,justDate:h}),size:"major",...g}}function Bt(e,t){if(e<=1)return 1;if(1===t)return Math.round(e);if(e>=t)return Math.round(e/t)*t;let n;if(24===t)n=[1,2,6,12,24];else{if(60!==t)throw new Error("Invalid divisor");n=[1,2,5,10,15,30,60]}let r=1/0,i=1;for(let t=0;t<n.length;t++){const o=Math.abs(n[t]-e);o<r&&(i=n[t],r=o)}return i}function _t(e){return e.dates?function({min:e,max:t,precision:n,expectedLabelSize:r,labelPadding:i,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:A,inverted:h=!1,formatOptions:c}){const g=r+2*i,p=[],d={scale:l,min:e,max:t,inverted:h,totalSize:o,precision:n,formatter:A,formatOptions:c,dates:!0},{amount:u,unit:m}=function(e,t,n){const r=e/t;return r<6e4&&(!n||"second"===n)?{amount:Bt(r/1e3,60),unit:"s"}:r<36e5&&(!n||"minute"===n)?{amount:Bt(r/6e4,60),unit:"m"}:r<864e5&&(!n||"hour"===n)?{amount:Bt(r/36e5,24),unit:"h"}:"day"===n||r<2592e6&&!n?{amount:Bt(r/864e5,1),unit:"d"}:r>2592e6&&(!n||"month"===n)?{amount:Bt(r/30*24*60*60*1e3,1),unit:"month"}:"year"===n?{amount:Bt(r/365*24*60*60*1e3,1),unit:"year"}:{unit:"m",amount:60}}(t-e,o/g,c.unitOverride),C="month"===m;a||p.push(yt(0,{...d,justDate:C},{position:"first"}));let x=new Date(e);"h"===m?x.setMinutes(0,0,0):"m"===m?x.setSeconds(0,0):"s"===m?x.setMilliseconds(0):"month"===m?(x=ee(x,c.timeZone),x.setDate(1)):"d"===m&&(x=ee(x,c.timeZone));let b=A(x,{...c,...d,justDate:!0});for(;x<t;){let e=864e5;"h"===m?e=60*(u-x.getHours()%u)*60*1e3:"m"===m?e=60*(u-x.getMinutes()%u)*1e3:"s"===m?e=1e3*(u-x.getSeconds()%u):"month"===m?(e=0,x=11===x.getMonth()?new Date(x.getFullYear()+1,0,1):new Date(x.getFullYear(),x.getMonth()+1,1)):"year"===m&&(x=new Date(x.getFullYear()+1,0,0)),x=new Date(x.valueOf()+e);const t=A(x,{...c,...d,justDate:!0})===b,n=ft(x,{...d,justTime:t,justDate:C});p.length&&n.pixelValue-p[p.length-1].pixelValue<r+(i||0)||n.pixelValue+r/2>=o||(p.push(n),b=A(x,{...c,...d,justDate:!0}))}const f=b===A(t,{...c,...d,justDate:!0});return!s&&p[p.length-1].pixelValue+r<o&&p.push(yt(o,{...d,justTime:f,justDate:C},{position:"last"})),p.filter((({pixelValue:e})=>e<=o&&e>=0))}(e):function({min:e,max:t,precision:n,expectedLabelSize:r,labelPadding:i,totalSize:o,scale:a="linear",formatter:s,inverted:l=!1,formatOptions:A}){const h=r+2*i,c=[],g={scale:a,min:e,max:t,inverted:l,totalSize:o,precision:n,formatter:s,formatOptions:A,dates:!1},p=function(e,t){const n=e/t,r=1-Math.log10(Math.abs(n)),i=r-Math.floor(r)>.5?2:1,o=10**Math.floor(r)*i;return Math.round(n*o)/o}(t-e,Math.floor((o-2*r)/h));if(p>0)for(let n=function(e,t){return Math.round(e/t)*t}(e,p);n<t;n+=p)c.push(ft(n,g));return c.length&&l&&c[c.length-1].pixelValue>i&&c.push(yt(r/2,g)),c.filter((({pixelValue:e})=>e<=o&&e>=0))}(e)}bt.styleTagTransform=Ct(),bt.setAttributes=pt(),bt.insert=ct().bind(null,"head"),bt.domAPI=At(),bt.insertStyleElement=ut(),st()(xt.A,bt),xt.A&&xt.A.locals&&xt.A.locals;const Et=t().memo(wt);function wt({showAxes:e,showGrid:n,stateController:r,bigLabels:i,xTickUnit:o,clockStyle:a,timeZone:s,integersOnly:l,formatXAxisLabel:A}){if(!e&&!n)return null;const{elementWidth:h,elementHeight:c}=Pe(r),{minX:g,maxX:p,dates:d}=function(e){return Me(e,"selection_changed",e.selection)}(r),u=function(e){return Me(e,"has_x_enum_change",e.hasXEnum)}(r),m=function(e){return Me(e,"enum_map_change",e.enumMap)}(r);let C;C=d?function(e,t){e=new Date(e);const n=(t=new Date(t)).valueOf()-e.valueOf();return n<3e3?"ms":n<6e5?"s":"m"}(g,p):V(p-g);let x=null;if(u){x={};for(const[e,t]of Object.entries(m))x[t]=e}const b={unitOverride:o,clockStyle:a,timeZone:s,integersOnly:l,inverseEnumMap:x,formatter:A},f=te(g,{...b,dates:d,precision:C}).toString(),y=te(p,{...b,dates:d,precision:C}).toString();let B=4*Math.max(f.length,y.length);i&&(B*=2);const _=_t({min:g,max:p,totalSize:h,precision:C,dates:d,formatter:A||te,expectedLabelSize:B,labelPadding:30,formatOptions:b});return t().createElement("svg",{className:"axis x-axis",style:e?void 0:{marginBottom:-20}},e&&t().createElement("path",{d:`M-1,0 H${h}`,className:"axis-line"}),e&&t().createElement("path",{d:`M-2,1 H${h+1}`,className:"axis-line-shadow"}),_.map((({pixelValue:r,label:o,size:a,position:s,skipGrid:l},A)=>{if(isNaN(r))return null;const h=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return i&&h.push("axis-item-big-labels"),t().createElement("g",{key:A,className:h.join(" ")},e&&t().createElement("path",{d:`M${r},1 v6`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${r},0 v-${c}`}),e&&t().createElement("text",{x:r,y:15},o))})))}wt.propTypes={stateController:r().instanceOf(Fe).isRequired,showAxes:r().bool.isRequired,showGrid:r().bool.isRequired,bigLabels:r().bool,xTickUnit:r().oneOf(["year"]),clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,integersOnly:r().bool,formatXAxisLabel:r().func};const vt=t().memo(kt);function kt({stateController:n,showAxes:r,showGrid:i,showSeriesKey:o,axis:a,sideIndex:s,bodyHeight:l,theme:A,grapherID:h,dragPositionYOffset:c=0,bigLabels:g,showAxisColors:p}){if(!r&&!i)return null;const{side:d,scale:u,axisIndex:m,label:C}=ze(n)[a.axisIndex],{elementWidth:x,elementHeight:b}=Pe(n);let{minY:f,maxY:y}=We(n)[m];const B=ye({minY:f,maxY:y,scale:u});f=B.minY,y=B.maxY;const _=_t({min:f,max:y,totalSize:b,scale:u,precision:V(y-f),formatter:ne,inverted:!0,expectedLabelSize:g?20:10,labelPadding:30});let E=5;"log"===u&&(E=2);const v=Ie(n),[k,S]=(0,e.useState)(null),[D,Y]=(0,e.useState)({dx:0,dy:0}),X="day"===A?1:.5,R="day"===A?.8:.3;return t().createElement("svg",{className:`axis y-axis y-axis-${d}`,"data-axis-index":m,"data-grapher-id":h,style:{width:re,marginLeft:r?void 0:-32,height:"number"==typeof l?l:void 0}},r&&p&&a.series.map(((e,n)=>{const r=b/a.series.length;return t().createElement("rect",{x:"left"===d?0:2,y:n*r,width:30,height:r,key:e.index,fill:w(e.color,e.index,e.multigrapherSeriesIndex),opacity:e.index===v?X:R,"data-element-height":b,"data-series-length":a.series.length})})),r&&t().createElement("path",{d:`M${"left"===d?31:1},3 V${b}`,className:"axis-line"}),r&&t().createElement("path",{d:`M${"left"===d?30:0},3 V${b+1}`,className:"axis-line-shadow"}),_.map((({pixelValue:e,label:n,size:o,skipGrid:a},l)=>{const A="left"===d?(s+1)*re:-s*re,h=("left"===d?1:-1)*(x+1),c=["axis-item",`axis-item-${o}`];return g&&c.push("axis-item-big-labels"),t().createElement("g",{key:l,className:c.join(" ")},i&&!a&&t().createElement("path",{d:`M${A},${e} h${h}`}),i&&!a&&s>0&&t().createElement("path",{d:`M${"left"===d?re:0},${e} h${("left"===d?1:-1)*s*re}`,strokeDasharray:"2,2"}),r&&t().createElement("text",{x:"left"===d?re-E:E,y:e},n))})),o&&r&&a.series.map(((e,r)=>{let i=18+14*(r%2-1),o=-14*Math.ceil(a.series.length/2)+14*Math.floor(r/2);return e===k&&(i+=D.dx,o+=D.dy-c),t().createElement("rect",{className:"series-color-box",onMouseDown:t=>((e,t)=>{let r=e.clientX,i=e.clientY;"left"===d&&(r+=re),"right"===d&&(r-=re),Y({dx:0,dy:0});const o=e=>{Y({dx:e.clientX-r,dy:e.clientY-i})},a=e=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",a);let r=e.target;for(;r&&!(r.dataset||{}).axisIndex;)r=r.parentNode;S(null),n.finalizeDrag(t,r&&(r.dataset||{}).axisIndex,r&&(r.dataset||{}).grapherId)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",a),S(t),n.markDragStart()})(t,e),x:i,y:o,width:10,height:10,key:e.index,fill:w(e.color,e.index,e.multigrapherSeriesIndex),onMouseOver:()=>n.setHighlightedSeries(e.index),onMouseOut:()=>n.setHighlightedSeries(null)})})),r&&!!C&&t().createElement("text",{className:"y-axis-label"+(g?" y-axis-big-label":""),x:"left"===d?10:22,y:b/2+("left"===d?-1:1)*(m+1)*(g?20:0),transform:`rotate(${"left"===d?-90:90}, ${"left"===d?10:22}, ${b/2})`},C))}kt.propTypes={stateController:r().instanceOf(Fe),showAxes:r().bool.isRequired,showGrid:r().bool.isRequired,showAxisColors:r().bool.isRequired,showSeriesKey:r().bool.isRequired,axis:B.Axis.isRequired,sideIndex:r().number.isRequired,bodyHeight:r().number,theme:r().string,grapherID:r().string,dragPositionYOffset:r().number,bigLabels:r().bool};const St=t().memo(Dt);function Dt({selected:e,disabled:n,className:r,onClick:i,children:o,description:a}){const s=["range-button"];return e&&s.push("range-button-selected"),n&&s.push("range-button-disabled"),r&&s.push(r),a&&s.push("option-tooltip"),t().createElement("div",{className:s.join(" "),onClick:i&&(e=>n||i(e))},o,a&&t().createElement("div",{className:"option-tooltip-text"},a))}Dt.propTypes={selected:r().bool.isRequired,onClick:r().func,children:r().node.isRequired,disabled:r().bool,className:r().string,description:r().string};const Yt=t().memo(Xt);function Xt({stateController:e,currentBoundCalculator:n,boundCalculator:r,children:i,disabled:o}){return t().createElement(St,{selected:n===r,onClick:()=>e.boundCalculator=r,disabled:o},i)}Xt.propTypes={stateController:r().instanceOf(Fe).isRequired,boundCalculator:r().func.isRequired,currentBoundCalculator:r().func.isRequired,children:r().node.isRequired,disabled:r().bool};const Rt=t().memo(Tt);function Tt({stateController:n}){const r=function(e){return Me(e,"percentile_changed",e.percentile)}(n),i=function(e){return Me(e,"percentile_asymmetry_changed",e.percentileAsymmetry)}(n),[o,a]=(0,e.useState)(!1);return[o?t().createElement(St,{key:"asymmetry button",className:"percentile-button",selected:!0,description:"Percentile asymmetry"},t().createElement("input",{onClick:e=>e.stopPropagation(),value:i,onChange:e=>n.percentileAsymmetry=e.target.value,onKeyUp:e=>13===e.keyCode&&a(!1),type:"number",min:-50,max:50}),t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"})))):null,t().createElement(St,{key:"main-button",className:"percentile-button",selected:o||100!==parseFloat(r),onClick:()=>a(!o),description:"Edit percentile"},o&&t().createElement("div",null,t().createElement("input",{onClick:e=>e.stopPropagation(),autoFocus:!0,value:r,onChange:e=>n.percentile=e.target.value,onKeyUp:e=>13===e.keyCode&&a(!1),type:"number",min:0,max:100})),t().createElement("div",{className:"icon-container icon-container-narrow"},t().createElement("svg",{focusable:"false",viewBox:"0 0 448 512"},t().createElement("path",{fill:"currentColor",d:"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"}))))]}Tt.propTypes={stateController:r().instanceOf(Fe).isRequired};const Ft=t().memo(Mt);function Mt({stateController:e,sidebarEnabled:n}){const r=function(e){return Me(e,"show_individual_points_changed",e.showIndividualPoints)}(e),i=qe(e),o=He(e),a=Ke(e),s=je(e),l=Je(e);return t().createElement("div",{className:"options-bar"},n&&t().createElement(St,{selected:a,onClick:()=>e.toggleShowingSidebar(),description:"Show sidebar"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"})))),t().createElement(St,{selected:"export"===l,onClick:()=>e.toggleExportMode(),description:"Export mode"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"})))),t().createElement(St,{selected:s,onClick:()=>e.toggleShowingAnnotations(),description:"Show annotations"},t().createElement("div",{className:"icon-container icon-container-448"},t().createElement("svg",{focusable:"false",viewBox:"0 0 448 512"},t().createElement("path",{fill:"currentColor",d:"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"})))),t().createElement(Rt,{stateController:e}),t().createElement(St,{selected:o,onClick:()=>e.toggleMaxPrecision(),description:"Max precision"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"})))),t().createElement(St,{selected:i,onClick:()=>e.toggleYAutoscaling(),description:"Autoscale y axis"},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"})))),t().createElement(St,{selected:r,onClick:()=>e.toggleIndividualPoints(),description:"Show individual points"},t().createElement("div",{className:"icon-container icon-container-narrow"},t().createElement("svg",{focusable:"false",viewBox:"0 0 192 512"},t().createElement("path",{fill:"currentColor",d:"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"})))))}Mt.propTypes={stateController:r().instanceOf(Fe).isRequired,sidebarEnabled:r().bool};const Pt=t().memo(zt);function zt({stateController:e,customBoundsSelectors:n,customBoundsSelectorsOnly:r,sidebarEnabled:i}){const o=Oe(e),a=Le(e),s=Ue(e);let l=re*o;o>0&&(l+=5);let A=re*a;a>0&&(A+=5);const{dates:h}=function(e){return Me(e,"global_bounds_changed",e.globalBounds)}(e),c=function(e){return Me(e,"bound_calculator_changed",e.boundCalculator)}(e),{hasPreviousBounds:g,hasNextBounds:p}=function(e){return Me(e,"bound_history_changed",e.boundHistory)}(e),d=new Set(n.map((({label:e})=>e)));return t().createElement("div",{className:"range-selection"+(h?"":" range-not-dates"),style:{marginRight:l,marginLeft:A}},t().createElement("div",{className:"range-buttons"},s&&t().createElement(Ft,{stateController:e,sidebarEnabled:i}),t().createElement(St,{className:"showing-options-button",selected:s,onClick:()=>e.toggleShowingOptions(),description:"Show additional options"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"})))),t().createElement(St,{className:"range-selection-history",selected:!1,onClick:()=>e.previousBounds(),disabled:!g},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"})))),t().createElement(St,{className:"range-selection-history",selected:!1,onClick:()=>e.nextBounds(),disabled:!p},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"})))),n.map((({label:n,calculator:r,datesOnly:i},o)=>t().createElement(Yt,{key:o,stateController:e,currentBoundCalculator:c,boundCalculator:r,disabled:i&&!h},n))),!d.has("1m")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastMinute,disabled:!h},"1m"),!d.has("10m")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.last10Minutes,disabled:!h},"10m"),!d.has("1h")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastHour,disabled:!h},"1h"),!d.has("1d")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastDay,disabled:!h},"1d"),t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.all,disabled:!1},"All")))}zt.propTypes={stateController:r().instanceOf(Fe).isRequired,customBoundsSelectors:B.CustomBoundsSelectors.isRequired,customBoundsSelectorsOnly:r().bool,sidebarEnabled:r().bool};class $t extends t().PureComponent{constructor(e){super(e),this.state={elementWidth:0,elementHeight:0,selectionBounds:{minX:0,maxX:0},globalBounds:{minX:0,maxX:0}},this.onMouseMove=this.onMouseMove.bind(this),this.stopDragging=this.stopDragging.bind(this),this.startScroll=this.startScroll.bind(this),this.startLeftDrag=this.startLeftDrag.bind(this),this.startRightDrag=this.startRightDrag.bind(this)}componentDidMount(){this._renderer=new j({stateController:this.props.stateController,canvasElement:this.el,webgl:this.props.webgl,checkIntersection:this.props.checkIntersection}),this.props.stateController.rangeGraphRenderer=this._renderer,this._renderer.on("size_changed",(e=>{this.setState(e)})),this.setState({selectionBounds:this.props.stateController._selection,globalBounds:this.props.stateController._globalBounds}),this.props.stateController.on("selection_changed",(e=>{this.setState({selectionBounds:e})})),this.props.stateController.on("global_bounds_changed",(e=>{this.setState({globalBounds:e})}))}componentDidUpdate(e){e.draggingY!==this.props.draggingY&&this._renderer.resize()}componentWillUnmount(){this._renderer.dispose(),this._renderer=null}onMouseMove(e){if(!this._dragType)return;let t;const n=this.el.getBoundingClientRect().left;this.setState((({selectionBounds:r,globalBounds:i,elementWidth:o})=>{let a=(e.clientX-n)/o;a=Math.max(a,0),a=Math.min(a,1);let s=a*(i.maxX-i.minX)+i.minX;if("scroll"===this._dragType){const e=r.maxX-r.minX;let n=s-e*this._scrollAnchorPercentage,o=s+e*(1-this._scrollAnchorPercentage);return n<i.minX&&(n=i.minX,o=n+e),o>i.maxX&&(o=i.maxX,n=o-e),t=()=>({minX:n,maxX:o}),{selectionBounds:Object.assign({},r,{minX:n,maxX:o})}}if("left"===this._dragType){s>r.maxX&&(s=r.maxX);const e=i.maxX===r.maxX;return t=()=>e?{minX:s}:{minX:s,maxX:r.maxX},{selectionBounds:Object.assign({},r,{minX:s})}}if("right"===this._dragType){s<r.minX&&(s=r.minX);const e=i.minX===r.minX;return t=()=>e?{maxX:s}:{minX:r.minX,maxX:s},{selectionBounds:Object.assign({},r,{maxX:s})}}}),(()=>{t&&(t.debounceHistory=!0,this.props.stateController.boundCalculator=t)}))}addListeners(){window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.stopDragging)}stopDragging(){this._dragType=null,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.stopDragging)}startScroll(e){this._dragType="scroll";const{selectionBounds:t,globalBounds:n,elementWidth:r}=this.state,i=this.el.getBoundingClientRect().left,o=e.clientX-i,a=(t.minX-n.minX)/(n.maxX-n.minX)*r||0,s=(t.maxX-n.minX)/(n.maxX-n.minX)*r||0;this._scrollAnchorPercentage=(o-a)/(s-a),this.addListeners()}startLeftDrag(){this._dragType="left",this.addListeners()}startRightDrag(){this._dragType="right",this.addListeners()}render(){const{globalBounds:e,selectionBounds:n,elementWidth:r,elementHeight:i}=this.state;let o,a=Math.min(Math.max((n.minX-e.minX)/(e.maxX-e.minX),0),1)*r||0,s=Math.min(Math.max((n.maxX-e.minX)/(e.maxX-e.minX),0),1)*r||0;return(isNaN(a)||!isFinite(a)||n.maxX<n.minX)&&(a=0),(isNaN(s)||!isFinite(s)||n.maxX<n.minX)&&(s=0),n.dates&&this.props.markDates&&(o=_t({min:e.minX,max:e.maxX,totalSize:r,precision:"day",dates:n.dates,formatter:te,expectedLabelSize:30,labelPadding:5,formatOptions:{justMonthAndDay:!0,unitOverride:"day",timeZone:this.props.timeZone},skipFirst:!0,skipLast:!0})),t().createElement("div",{className:"range-selection-graph"},t().createElement("div",{className:"graph-body graph-body-secondary"},t().createElement("canvas",{ref:e=>this.el=e}),t().createElement("svg",null,t().createElement("g",null,t().createElement("rect",{x:0,y:i,width:r,height:14,className:"selection-bar-track"}),o&&o.map((({pixelValue:e,label:n,size:r,position:o},a)=>{if(isNaN(e))return null;const s=["axis-item",`axis-item-${r}`,`axis-item-${o}`];return t().createElement("g",{key:a,className:s.join(" ")},t().createElement("path",{d:`M${e},0 v${i}`}),t().createElement("text",{x:e+3,y:i},n))})),t().createElement("rect",{x:a,y:i,width:s-a,height:14,className:"selection-bar",onMouseDown:this.startScroll}),t().createElement("path",{d:"M -3 3.5 L -3 9.333333333333334 M 0 3.5 L 0 9.333333333333334 M 3 3.5 L 3 9.333333333333334",className:"selection-bar-rifles",transform:`translate(${a+(s-a)/2},${i})`,onMouseDown:this.startScroll})),t().createElement("g",null,t().createElement("rect",{x:a,y:0,width:s-a,height:i,className:"target-selection",onMouseDown:this.startScroll}),t().createElement("rect",{x:a,y:0,width:s-a,height:i+14,className:"target-selection-outline"})),t().createElement("g",null,t().createElement("path",{d:"M -4.5 0.5 L 3.5 0.5 L 3.5 15.5 L -4.5 15.5 L -4.5 0.5 M -1.5 4 L -1.5 12 M 0.5 4 L 0.5 12",className:"selection-bar-handle",transform:`translate(${a},${(i-15)/2})`,onMouseDown:this.startLeftDrag})),t().createElement("g",null,t().createElement("path",{d:"M -4.5 0.5 L 3.5 0.5 L 3.5 15.5 L -4.5 15.5 L -4.5 0.5 M -1.5 4 L -1.5 12 M 0.5 4 L 0.5 12",className:"selection-bar-handle",transform:`translate(${s},${(i-15)/2})`,onMouseDown:this.startRightDrag}))),this.props.verticalLines&&t().createElement(tt,{stateController:this.props.stateController,verticalLines:this.props.verticalLines,isRangeGraph:!0,bounds:e,elementHeight:i,elementWidth:r})))}}$t.defaultProps={width:3,shadowColor:"transparent"},$t.propTypes={stateController:r().instanceOf(Fe).isRequired,webgl:r().bool,draggingY:r().bool,checkIntersection:r().bool,markDates:r().bool,timeZone:r().string,verticalLines:B.VerticalLines};const It=t().memo(Ot);function Ot({series:e,i:n,style:r,onMouseDown:i,theme:o,stateController:a,highlighted:s}){const l=w(e.color,n,e.multigrapherSeriesIndex);r="day"===o?Object.assign({},r,{backgroundColor:l}):Object.assign({},r,{color:l});const A=["series-key-item"];s&&A.push("series-key-item-highlighted");const h=Re(e,n);return t().createElement("div",{className:A.join(" "),style:r,onMouseDown:i,onMouseOver:()=>a.setHighlightedSeries(n),onMouseOut:()=>a.setHighlightedSeries(null),onClick:()=>a.registerSeriesClick(n)},h)}Ot.propTypes={series:B.SingleSeries.isRequired,stateController:r().instanceOf(Fe),i:r().number.isRequired,style:r().object,onMouseDown:r().func,theme:r().string.isRequired,highlighted:r().bool};class Lt extends t().PureComponent{constructor(e){super(e),this.state={showingLabelInput:!1},this.toggleLabelInputShowing=this.toggleLabelInputShowing.bind(this)}toggleLabelInputShowing(){this.setState((({showingLabelInput:e})=>({showingLabelInput:!e})))}render(){const{children:e,stateController:n,axisIndex:r,scale:i,label:o,grapherID:a}=this.props,{showingLabelInput:s}=this.state;return t().createElement("div",{className:"series-key-axis-container"+(s?" series-key-axis-container-showing-label":""),"data-axis-index":r,"data-grapher-id":a},t().createElement("div",{className:"scale-label",onClick:()=>n.toggleScale({axisIndex:r})},i.slice(0,s?6:3)),t().createElement("div",{className:"series-key-axis-container-body"},t().createElement("div",null,e,t().createElement("svg",{className:"label-input-toggler",viewBox:"0 0 512 512",onClick:this.toggleLabelInputShowing},t().createElement("path",{d:"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"}))),t().createElement("div",{className:"series-key-axis-label-container"},t().createElement("input",{onChange:e=>n.setLabel({axisIndex:r,label:e.target.value}),placeholder:"Enter label",value:o||""}))))}}Lt.propTypes={stateController:r().instanceOf(Fe).isRequired,children:r().node.isRequired,axisIndex:r().number.isRequired,scale:r().string.isRequired,label:r().string,grapherID:r().string};const Nt=t().memo(Gt);function Gt({stateController:n,theme:r,draggingY:i,grapherID:o,dragPositionYOffset:a=0}){const s=$e(n),[l,A]=(0,e.useState)(null),[h,c]=(0,e.useState)({x:0,y:0}),g=Ie(n),p=(0,e.useRef)(null),[d,u]=(0,e.useState)(5*s.map((({name:e,yKey:t},n)=>(e||t||n).toString().length)).reduce(((e,t)=>e+t),0));let m;(0,e.useEffect)((()=>{p.current&&(cancelAnimationFrame(m),m=requestAnimationFrame((()=>{if(!p.current)return;const e=[...p.current.querySelectorAll(".series-key-axis-container")].map((e=>e.clientWidth)).reduce(((e,t)=>e+t),0);u(e)})))}),[s,p.current]);const C=function({stateController:e,keyWidth:t}){const n=Oe(e),r=Le(e),i=Ue(e);let o=re*n;n>0&&(o+=5),o+=250,i&&(o+=70);let a,s=re*r;r>0&&(s+=5),s=Math.max(o,s),o=Math.max(o,s);const{elementWidth:l}=Pe(e);return l-s-o<t&&(s=0,o=0,a=10),{marginRight:o,marginLeft:s,marginBottom:a}}({stateController:n,keyWidth:d}),x=ze(n),b=function(e){return Me(e,"always_tooltipped_changed",e.alwaysTooltipped)}(n);return t().createElement("div",{className:"series-key",style:C,ref:p},i&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-left","data-grapher-id":o}),x.map(((e,i)=>!e.series.length&&x.length>1?null:t().createElement(Lt,{key:i,label:e.label,axisIndex:e.axisIndex,scale:e.scale,stateController:n,grapherID:o},e.series.map((e=>e.hideFromKey?null:t().createElement(It,{key:e.index,series:e,i:e.index,onMouseDown:(t,r)=>((e,t)=>{let r=e.target;for(;r&&"series-key"!==r.className;)r=r.parentNode;const i=e.target.getBoundingClientRect().left;let o=r.getBoundingClientRect().left,a=r.style.marginLeft;const s=e.clientX,l=e.clientY,h=e.clientX,g=e.clientY;A(t),c({x:e.clientX-s+(i-o)-2,y:e.clientY-l+1});const p=e=>{r.style.marginLeft!==a&&(o=r.getBoundingClientRect().left,a=r.style.marginLeft),c({x:e.clientX-s+(i-o)-2,y:e.clientY-l+1})},d=e=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",d);let r=e.target;for(;r&&!(r.dataset||{}).axisIndex&&!(r.dataset||{}).grapherId;)r=r.parentNode;A(null),n.finalizeDrag(t,r&&(r.dataset||{}).axisIndex,r&&(r.dataset||{}).grapherId),e.clientX===h&&e.clientY===g&&n.toggleAlwaysTooltipped(t,e.shiftKey)};window.addEventListener("mousemove",p),window.addEventListener("mouseup",d),n.markDragStart()})(t,e),theme:r,stateController:n,highlighted:g===e.index||b.has(e)})))))),i&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-right","data-grapher-id":o}),l&&t().createElement(It,{style:{left:h.x,top:h.y-a,position:"absolute",pointerEvents:"none",zIndex:1},series:l,i:l.index,theme:r,stateController:n}))}Gt.propTypes={stateController:r().instanceOf(Fe).isRequired,theme:r().string.isRequired,draggingY:r().bool.isRequired,grapherID:r().string,dragPositionYOffset:r().number};const Wt=t().memo(qt);function qt({title:e}){return t().createElement("div",{className:"grapher-title"},e)}qt.propTypes={title:r().string.isRequired};class Ut extends t().PureComponent{constructor(e){super(e),this.onChange=this.onChange.bind(this)}onChange(e){setTimeout((()=>{this.props.stateController.setShowing(this.props.singleSeries,e.target.checked)}))}render(){const{singleSeries:e}=this.props,n=w(e.color,e.index,e.multigrapherSeriesIndex);let r=e.name||e.yKey;return r||(r=e.index),t().createElement("div",{className:"series-toggle"},t().createElement("label",null,t().createElement("input",{type:"checkbox",defaultChecked:!e.hidden,ref:e=>e&&e.addEventListener("change",this.onChange)}),t().createElement("span",{className:"checkmark",style:{background:n,borderColor:n}}),r))}}function Ht({stateController:e}){const n=$e(e);return t().createElement("div",{className:"grapher-sidebar"},n.map(((n,r)=>t().createElement(Ut,{key:r,singleSeries:n,stateController:e}))))}function Kt(){return Kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kt.apply(this,arguments)}Ut.propTypes={singleSeries:B.SingleSeries.isRequired,stateController:r().instanceOf(Fe).isRequired},Ht.propTypes={stateController:r().instanceOf(Fe).isRequired};const jt=t().memo(Jt),Vt={theme:"night",showAxes:!0,showRangeGraph:!0,showRangeSelectors:!0,showSeriesKey:!0,showTooltips:!0,boundsSelectionEnabled:!0,customBoundsSelectors:[],sidebarEnabled:!1,defaultShowAnnotations:!0,defaultShowOptions:!0};function Jt(n){n={...Vt,...n};const r=(0,e.useMemo)((()=>new Fe({grapherID:n.id,...n,...n.stateControllerInitialization})),[]);(0,e.useEffect)((()=>()=>{r.dispose()}),[r]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(r)}),[r,n.exportStateController]),(0,e.useEffect)((()=>{r.timingFrameCount=n.timingFrameCount}),[r,n.timingFrameCount]),(0,e.useEffect)((()=>(n.onRenderTime&&r.on("render_time",n.onRenderTime),()=>{n.onRenderTime&&r.off("render_time",n.onRenderTime)})),[r,n.onRenderTime]),(0,e.useEffect)((()=>{r.setSeries(n.series)}),[r,n.series]),(0,e.useEffect)((()=>{r.theme=n.theme}),[r,n.theme]);const i=Je(r),o=n.bigLabels||"export"===i,a=n.defaultLineWidth||("export"===i?3:void 0);(0,e.useEffect)((()=>{r.defaultLineWidth=a}),[r,a]),(0,e.useEffect)((()=>{r.percentile=n.percentile}),[r,n.percentile]),(0,e.useEffect)((()=>{r.customBoundsSelectors=n.customBoundsSelectors}),[r,n.customBoundsSelectors]),(0,e.useEffect)((()=>{r.annotations=n.annotations}),[r,n.annotations]),(0,e.useEffect)((()=>n.onAxisChange?(r.on("exported_axes_changed",n.onAxisChange),()=>{r.off("exported_axes_changed",n.onAxisChange)}):()=>{}),[r,n.onAxisChange]),(0,e.useEffect)((()=>{r.primaryRenderer.resize()}),[n.height]);const s=function(e){return Me(e,"dragging_y_changed",e.draggingY)}(r),{styles:l,classNames:A}=function(e,{draggingY:t,theme:n}){const{fullscreen:r,height:i,width:o}=e,a=["grapher",`grapher-${n}`],s={};return t&&a.push("grapher-dragging-y"),r?(a.push("grapher-fullscreen"),a.push("grapher-fixed-height")):i&&(a.push("grapher-fixed-height"),s.height="number"==typeof i?i-20:`calc(${i} - 20px)`),o&&(s.width=o),{styles:s,classNames:a}}(n,{draggingY:s,theme:i}),h=Ne(r),c=Ge(r),g=Ke(r),p="boolean"==typeof n.showAxisColors?n.showAxisColors:"export"!==i,d="boolean"==typeof n.showGrid?n.showGrid:"export"!==i,u={stateController:r,showAxes:n.showAxes,showGrid:d,showSeriesKey:n.showSeriesKey,bodyHeight:n.bodyHeight,theme:i,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset,showAxisColors:p,bigLabels:o};return t().createElement("div",{className:A.join(" "),style:l,"data-grapher-id":n.id},n.title&&t().createElement(Wt,{title:n.title}),t().createElement("div",{className:"grapher-primary-container-outer"},g&&t().createElement(Ht,{stateController:r}),t().createElement("div",{className:"grapher-primary-container-body"},n.showSeriesKey&&t().createElement(Nt,{stateController:r,draggingY:s,theme:n.theme,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset}),n.showRangeSelectors&&t().createElement(Pt,{stateController:r,customBoundsSelectors:n.customBoundsSelectors,customBoundsSelectorsOnly:n.customBoundsSelectorsOnly,sidebarEnabled:n.sidebarEnabled}),t().createElement("div",{className:"grapher-main-row"},s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-left","data-grapher-id":n.id,style:{width:re,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}}),c.map(((e,n)=>t().createElement(vt,Kt({key:n,axis:e,sideIndex:c.length-n-1},u)))),t().createElement("div",{className:"central-container"},t().createElement(it,{stateController:r,webgl:n.webgl,bodyHeight:n.bodyHeight,boundsSelectionEnabled:n.boundsSelectionEnabled,showTooltips:n.showTooltips,tooltipOptions:n.tooltipOptions,checkIntersection:n.checkIntersection,draggablePoints:n.draggablePoints,onPointDrag:n.onPointDrag,onDraggablePointsDoubleClick:n.onDraggablePointsDoubleClick,verticalLines:n.verticalLines,clockStyle:n.clockStyle,timeZone:n.timeZone}),t().createElement(Et,{showGrid:d,showAxes:n.showAxes,stateController:r,bigLabels:o,xTickUnit:n.xTickUnit,clockStyle:n.clockStyle,timeZone:n.timeZone,integersOnly:n.xAxisIntegersOnly,formatXAxisLabel:n.formatXAxisLabel}),n.showRangeGraph&&t().createElement("div",{className:"range-graph-container"},t().createElement($t,{stateController:r,webgl:n.webgl,checkIntersection:n.checkIntersection,markDates:n.markRangeGraphDates,timeZone:n.timeZone,verticalLines:n.verticalLines}))),h.map(((e,n)=>t().createElement(vt,Kt({key:n,axis:e,sideIndex:n},u)))),s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-right","data-grapher-id":n.id,style:{width:re,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}})))))}Jt.propTypes={series:B.Series.isRequired,webgl:r().bool,requireWASM:r().bool,checkIntersection:r().bool,onAxisChange:r().func,onRenderTime:r().func,exportStateController:r().func,timingFrameCount:r().number,stateControllerInitialization:r().object,syncPool:r().instanceOf(class{constructor({syncBounds:e=!0,syncTooltips:t=!0,syncDragState:n=!1}={}){this._stateControllers=new Set,this._syncBounds=e,this._syncTooltips=t,this._syncDragState=n}add(e){this._stateControllers.add(e),this._syncBounds&&this.syncBounds(e),this._syncTooltips&&this.syncTooltips(e),this._syncDragState&&this.syncDragState(e)}remove(e){this._stateControllers.delete(e)}syncDragState(e){e.on("dragging_y_changed",(t=>{for(let n of this._stateControllers)e!==n&&(t?n.markDragStart():n.finalizeDrag(null,null))}))}syncBounds(e){e.on("bound_calculator_changed",(t=>{for(let n of this._stateControllers)e!==n&&(n.boundCalculator=t)}))}syncTooltips(e){e.on("tooltip_state_changed",((t,n)=>{if(this._tooltipIgnoreState===n)return;const r=0===t.unsavedTooltipsCount||!t.mousePresent||"onShift"===this._syncTooltips&&!e.shiftKeyPressedOnMove;r&&(this._tooltipIgnoreState=Math.random());for(let n of this._stateControllers)e!==n&&(r?n.showOnlySavedTooltips(this._tooltipIgnoreState):n.setTooltipMousePosition({mouseX:t.mouseX,mouseY:t.mouseY,tooltipAllNext:!0,tooltipStateArg:this._tooltipIgnoreState}))}))}}),id:r().string,dragPositionYOffset:r().number,theme:r().oneOf(["day","night","export"]),title:r().string,fullscreen:r().bool,bodyHeight:r().number,height:r().number,width:r().number,showAxes:r().bool,showRangeGraph:r().bool,showRangeSelectors:r().bool,showSeriesKey:r().bool,showTooltips:r().bool,showGrid:r().bool,showAxisColors:r().bool,bigLabels:r().bool,xTickUnit:r().oneOf(["year"]),formatXAxisLabel:r().func,xAxisIntegersOnly:r().bool,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,markRangeGraphDates:r().bool,boundsSelectionEnabled:r().bool,sidebarEnabled:r().bool,percentile:r().number,defaultShowOptions:r().bool,defaultShowIndividualPoints:r().bool,defaultShowSidebar:r().bool,defaultShowAnnotations:r().bool,defaultLineWidth:r().number,tooltipOptions:B.TooltipOptions,customBoundsSelectors:B.CustomBoundsSelectors,customBoundsSelectorsOnly:r().bool,defaultBoundsCalculator:r().string,annotations:B.Annotations,draggablePoints:B.DraggablePoints,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func,verticalLines:B.VerticalLines};const Zt=E,Qt=Ye})(),a})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.Grapher=t(require("react")):e.Grapher=t(e.react)}(globalThis,(e=>(()=>{var t,n,r={557:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(354),i=n.n(r),o=n(314),a=n.n(o)()(i());a.push([e.id,'.grapher-night{position:relative;background:linear-gradient(to bottom right, #2a2a2b, #3e3e40);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-night *,.grapher-night :after,.grapher-night :before{box-sizing:content-box}.grapher-night .grapher-title{text-align:center;color:#fff;font-size:18px;margin-bottom:8px}.grapher-night .grapher-primary-container-outer{display:flex}.grapher-night .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#111, transparent 75%, transparent 100%);color:#eee;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-night .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-night .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-night .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-night .series-key .scale-label{display:inline-block;background:#111;color:silver;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-night .series-key .series-key-axis-container{display:inline-block;border:1px solid #111;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-night .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-night .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#e0e0e3}.grapher-night .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-night .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-night .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-night .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-night .series-key .series-key-axis-container .label-input-toggler path{fill:#111}.grapher-night .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#e0e0e3}.grapher-night .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none;background:rgba(0,0,0,0)}.grapher-night .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-night .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px silver}.grapher-night .range-selection{color:silver;user-select:none}.grapher-night .range-selection.range-not-dates{color:#aaa}.grapher-night .range-selection .range-buttons{text-align:right}.grapher-night .range-selection .range-buttons .options-bar{display:inline-block}.grapher-night .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-night .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:silver;background:#000;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-night .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-night .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-night .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:6px;border-radius:2px;background:#505053}.grapher-night .range-selection .range-buttons .range-button.range-button-selected{color:silver;background:#000}.grapher-night .range-selection .range-buttons .range-button.range-button-disabled,.grapher-night .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#aaa;background:#7a7a7a}.grapher-night .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-night .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-night .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-night .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-night .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-night .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-night .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #505053;margin:2px 8px 2px 0;color:#e0e0e3;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-night .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#e0e0e3}.grapher-night .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-night .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-night .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-night .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-night .grapher-main-row{display:flex}.grapher-night .grapher-main-row .central-container{width:100%}.grapher-night .range-graph-container{display:flex}.grapher-night .graph-body{width:100%;height:400px;position:relative}.grapher-night .graph-body canvas{width:100%;height:100%}.grapher-night .graph-body .grapher-tooltip,.grapher-night .graph-body .grapher-draggable-points,.grapher-night .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-night .graph-body .grapher-tooltip>svg,.grapher-night .graph-body .grapher-draggable-points>svg,.grapher-night .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-night .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-night .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(0,0,0,.6)}.grapher-night .graph-body .grapher-tooltip .tooltip-item text{fill:#f0f0f0;dominant-baseline:hanging;text-anchor:start}.grapher-night .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#000}.grapher-night .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #ccc}.grapher-night .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-night .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-night .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;max-width:max-content;width:200px}.grapher-night .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-night .graph-body .grapher-vertical-lines line{stroke:#ccc}.grapher-night .graph-body .grapher-vertical-lines polygon{fill:#ccc}.grapher-night .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-night .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(255,255,255,.3)}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;max-width:max-content;width:200px}.grapher-night .graph-body .bounds-selection{position:absolute;background:rgba(255,255,255,.1)}.grapher-night .axis{overflow:visible;user-select:none}.grapher-night .axis.x-axis{width:1px;height:20px;display:block}.grapher-night .axis.x-axis .axis-item text{text-anchor:middle}.grapher-night .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-night .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-night .axis.y-axis{height:400px}.grapher-night .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-night .axis.y-axis .y-axis-label{text-anchor:middle;fill:#e0e0e3}.grapher-night .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-night .axis.y-axis .series-color-box{cursor:pointer}.grapher-night .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-night .axis .axis-line{stroke:silver;stroke-width:2px}.grapher-night .axis .axis-line-shadow{stroke:#505053;stroke-width:1px}.grapher-night .axis .axis-item path{stroke:#505053;stroke-width:1px}.grapher-night .axis .axis-item text{fill:#e0e0e3;font-size:8px}.grapher-night .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-night .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-night .range-selection-graph{width:100%;padding-bottom:14px}.grapher-night .range-selection-graph .graph-body-secondary{height:50px}.grapher-night .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-night .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(255,255,255,.1);cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#808083;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#303033}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#fff}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#aaa;stroke-width:1;fill:#666;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#aaa;fill:none}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#505053;stroke-width:1px}.grapher-night input,.grapher-night textarea{background:rgba(0,0,0,0);border:1px solid #505053;margin:2px 0;color:#e0e0e3;padding:1px 2px;text-align:center}.grapher-night input:focus,.grapher-night textarea:focus{outline:none;border-color:#e0e0e3}.grapher-night.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-night.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-night.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-night.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-night.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-night.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#ddd}.grapher-day{position:relative;background:linear-gradient(to bottom right, #FFF, #FFF);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-day *,.grapher-day :after,.grapher-day :before{box-sizing:content-box}.grapher-day .grapher-title{text-align:center;color:#000;font-size:18px;margin-bottom:8px}.grapher-day .grapher-primary-container-outer{display:flex}.grapher-day .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#EEE, transparent 75%, transparent 100%);color:#111;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-day .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-day .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-day .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-day .series-key .scale-label{display:inline-block;background:#b0b0b7;color:#000;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-day .series-key .series-key-axis-container{display:inline-block;border:1px solid #b0b0b7;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-day .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-day .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#505053}.grapher-day .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-day .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-day .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-day .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-day .series-key .series-key-axis-container .label-input-toggler path{fill:#b0b0b7}.grapher-day .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#505053}.grapher-day .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none}.grapher-day .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-day .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px #000}.grapher-day .range-selection{color:#444;user-select:none}.grapher-day .range-selection.range-not-dates{color:#888}.grapher-day .range-selection .range-buttons{text-align:right}.grapher-day .range-selection .range-buttons .options-bar{display:inline-block}.grapher-day .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-day .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:#000;background:#fff;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-day .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-day .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-day .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:4px;border-radius:2px;background:#fff;border:1px dotted silver}.grapher-day .range-selection .range-buttons .range-button.range-button-selected{color:#000;background:#fff;border:1px solid #000}.grapher-day .range-selection .range-buttons .range-button.range-button-disabled,.grapher-day .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#888;background:#eee}.grapher-day .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-day .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-day .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-day .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-day .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-day .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-day .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 8px 2px 0;color:#222;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-day .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#505053}.grapher-day .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-day .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-day .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-day .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-day .grapher-main-row{display:flex}.grapher-day .grapher-main-row .central-container{width:100%}.grapher-day .range-graph-container{display:flex}.grapher-day .graph-body{width:100%;height:400px;position:relative}.grapher-day .graph-body canvas{width:100%;height:100%}.grapher-day .graph-body .grapher-tooltip,.grapher-day .graph-body .grapher-draggable-points,.grapher-day .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-day .graph-body .grapher-tooltip>svg,.grapher-day .graph-body .grapher-draggable-points>svg,.grapher-day .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-day .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-day .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(255,255,255,.6)}.grapher-day .graph-body .grapher-tooltip .tooltip-item text{fill:#0f0f0f;dominant-baseline:hanging;text-anchor:start}.grapher-day .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#fff}.grapher-day .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #333}.grapher-day .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-day .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-day .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-day .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-day .graph-body .grapher-vertical-lines line{stroke:#333}.grapher-day .graph-body .grapher-vertical-lines polygon{fill:#333}.grapher-day .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-day .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(0,0,0,.3)}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-day .graph-body .bounds-selection{position:absolute;background:rgba(0,0,0,.02)}.grapher-day .axis{overflow:visible;user-select:none}.grapher-day .axis.x-axis{width:1px;height:20px;display:block}.grapher-day .axis.x-axis .axis-item text{text-anchor:middle}.grapher-day .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-day .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-day .axis.y-axis{height:400px}.grapher-day .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-day .axis.y-axis .y-axis-label{text-anchor:middle;fill:#1f1f1c}.grapher-day .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-day .axis.y-axis .series-color-box{cursor:pointer}.grapher-day .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-day .axis .axis-line{stroke:#656565;stroke-width:2px}.grapher-day .axis .axis-line-shadow{stroke:#bfbfbf;stroke-width:1px}.grapher-day .axis .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-day .axis .axis-item text{fill:#1f1f1c;font-size:8px}.grapher-day .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-day .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-day .range-selection-graph{width:100%;padding-bottom:14px}.grapher-day .range-selection-graph .graph-body-secondary{height:50px}.grapher-day .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-day .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(0,0,0,.02);cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#eee}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#333}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;stroke-width:1;fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#333;fill:none}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-day input,.grapher-day textarea{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 0;color:#222;padding:1px 2px;text-align:center}.grapher-day input:focus,.grapher-day textarea:focus{outline:none;border-color:#505053}.grapher-day.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-day.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-day.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-day.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-day.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-day.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#222}.grapher-export{position:relative;background:linear-gradient(to bottom right, #FFF, #FFF);padding:10px;font-family:sans-serif;font-size:12px;line-height:normal}.grapher-export *,.grapher-export :after,.grapher-export :before{box-sizing:content-box}.grapher-export .grapher-title{text-align:center;color:#000;font-size:18px;margin-bottom:8px}.grapher-export .grapher-primary-container-outer{display:flex}.grapher-export .grapher-primary-container-outer .grapher-sidebar{background:linear-gradient(#EEE, transparent 75%, transparent 100%);color:#111;padding:50px 6px 5px 10px;margin-left:-10px;margin-top:-10px;margin-bottom:-10px;overflow-y:auto;flex-shrink:0}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle{white-space:nowrap}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle+.series-toggle{margin-top:3px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle label{display:inline-block;position:relative;user-select:none}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input[type=checkbox]{opacity:0;cursor:pointer;height:0;width:0;margin-right:11px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input:not(:checked)~.checkmark{background-color:rgba(0,0,0,0) !important}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle input:checked~.checkmark:after{display:block}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark{position:absolute;top:1px;left:0;height:7px;width:7px;background-color:#eee;border:2px solid;border-radius:1px}.grapher-export .grapher-primary-container-outer .grapher-sidebar .series-toggle .checkmark:after{content:"";position:absolute;display:none;left:.5px;top:-1.5px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.grapher-export .grapher-primary-container-outer .grapher-primary-container-body{width:100%;padding-left:2px}.grapher-export .series-key{text-align:center;margin-bottom:-14px;position:relative}.grapher-export .series-key .scale-label{display:inline-block;background:#b0b0b7;color:#000;transform:rotate(-90deg);width:24px;margin-left:-5px;vertical-align:top;margin-top:4px;padding-bottom:2px;cursor:pointer;user-select:none}.grapher-export .series-key .series-key-axis-container{display:inline-block;border:1px solid #b0b0b7;min-width:18px;min-height:24px;vertical-align:top;white-space:nowrap}.grapher-export .series-key .series-key-axis-container+.series-key-axis-container{margin-left:4px}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .scale-label{width:46px;margin-top:15px;margin-left:-15px;margin-right:-12px}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .series-key-axis-label-container{display:block}.grapher-export .series-key .series-key-axis-container.series-key-axis-container-showing-label .label-input-toggler path{fill:#505053}.grapher-export .series-key .series-key-axis-container .series-key-axis-container-body{display:inline-block}.grapher-export .series-key .series-key-axis-container .series-key-axis-container-body>div{white-space:initial}.grapher-export .series-key .series-key-axis-container .series-key-axis-label-container{display:none}.grapher-export .series-key .series-key-axis-container .label-input-toggler{width:16px;cursor:pointer;display:inline-block;vertical-align:top;margin:4px 2px}.grapher-export .series-key .series-key-axis-container .label-input-toggler path{fill:#b0b0b7}.grapher-export .series-key .series-key-axis-container .label-input-toggler:hover path{fill:#505053}.grapher-export .series-key .series-key-item{border:1px solid currentColor;padding:2px;margin:2px;display:inline-block;cursor:pointer;user-select:none}.grapher-export .series-key .series-key-item+.series-key-item{margin-left:4px}.grapher-export .series-key .series-key-item.series-key-item-highlighted{box-shadow:0 0 4px #000}.grapher-export .range-selection{color:#444;user-select:none}.grapher-export .range-selection.range-not-dates{color:#888}.grapher-export .range-selection .range-buttons{text-align:right}.grapher-export .range-selection .range-buttons .options-bar{display:inline-block}.grapher-export .range-selection .range-buttons .option-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.grapher-export .range-selection .range-buttons .option-tooltip .option-tooltip-text{visibility:hidden;color:#000;background:#fff;text-align:center;padding:5px 5px;border-radius:6px;position:absolute;z-index:1;border:1px solid #000;width:120px;margin-left:-65px;top:calc(100% + 7px);left:50%}.grapher-export .range-selection .range-buttons .option-tooltip:hover .option-tooltip-text{visibility:visible}.grapher-export .range-selection .range-buttons .option-tooltip .option-tooltip-text::after{content:" ";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.grapher-export .range-selection .range-buttons .range-button{display:inline-block;cursor:pointer;padding:4px 8px;margin-left:4px;border-radius:2px;background:#fff;border:1px dotted silver}.grapher-export .range-selection .range-buttons .range-button.range-button-selected{color:#000;background:#fff;border:1px solid #000}.grapher-export .range-selection .range-buttons .range-button.range-button-disabled,.grapher-export .range-selection .range-buttons .range-button.range-button-selected.range-button-disabled{cursor:not-allowed;color:#888;background:#eee}.grapher-export .range-selection .range-buttons .range-button .icon-container{position:relative;width:0}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-narrow svg{left:-3px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-square{width:5px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-square svg{left:-5px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-448{width:3px}.grapher-export .range-selection .range-buttons .range-button .icon-container.icon-container-448 svg{left:-5px}.grapher-export .range-selection .range-buttons .range-button .icon-container:before{content:"A";opacity:0}.grapher-export .range-selection .range-buttons .range-button .icon-container svg{height:15px;position:absolute;top:-1px;left:-4px}.grapher-export .range-selection .range-buttons .range-selection-history+.range-selection-history{margin-right:8px;margin-left:4px}.grapher-export .range-selection .range-buttons .percentile-button>div{display:inline-block}.grapher-export .range-selection .range-buttons .percentile-button input{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 8px 2px 0;color:#222;padding:1px 2px;width:20px;font-size:11px;-moz-appearance:textfield}.grapher-export .range-selection .range-buttons .percentile-button input:focus{outline:none;border-color:#505053}.grapher-export .range-selection .range-buttons .percentile-button input::-webkit-outer-spin-button,.grapher-export .range-selection .range-buttons .percentile-button input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.grapher-export .range-selection .range-buttons .percentile-button .icon-container.icon-container-narrow svg{height:12px;top:1px;left:-5px}.grapher-export .range-selection .range-buttons .showing-options-button{margin-right:8px}.grapher-export .grapher-main-row{display:flex}.grapher-export .grapher-main-row .central-container{width:100%}.grapher-export .range-graph-container{display:flex}.grapher-export .graph-body{width:100%;height:400px;position:relative}.grapher-export .graph-body canvas{width:100%;height:100%}.grapher-export .graph-body .grapher-tooltip,.grapher-export .graph-body .grapher-draggable-points,.grapher-export .graph-body .grapher-vertical-lines{position:absolute;top:0;left:0;right:0}.grapher-export .graph-body .grapher-tooltip>svg,.grapher-export .graph-body .grapher-draggable-points>svg,.grapher-export .graph-body .grapher-vertical-lines>svg{position:absolute;overflow:visible;left:0}.grapher-export .graph-body .grapher-vertical-lines{pointer-events:none;user-select:none}.grapher-export .graph-body .grapher-tooltip .tooltip-item path{fill:rgba(255,255,255,.6)}.grapher-export .graph-body .grapher-tooltip .tooltip-item text{fill:#0f0f0f;dominant-baseline:hanging;text-anchor:start}.grapher-export .graph-body .grapher-tooltip .tooltip-item.tooltip-item-fixed path{fill:#fff}.grapher-export .graph-body .grapher-tooltip .line{position:absolute;height:400px;border-left:1px solid #333}.grapher-export .graph-body .grapher-tooltip .custom-tooltip-container{position:absolute}.grapher-export .graph-body .grapher-context-menu{position:absolute;top:0;left:0}.grapher-export .graph-body .grapher-context-menu .menu-item .menu-text{user-select:all;position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-export .graph-body .grapher-draggable-points circle{cursor:pointer}.grapher-export .graph-body .grapher-vertical-lines line{stroke:#333}.grapher-export .graph-body .grapher-vertical-lines polygon{fill:#333}.grapher-export .graph-body .grapher-annotations{position:absolute;top:0;pointer-events:none;user-select:none}.grapher-export .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;height:400px;background:rgba(0,0,0,.3)}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;top:0;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;max-width:max-content;width:200px}.grapher-export .graph-body .bounds-selection{position:absolute;background:rgba(0,0,0,.02)}.grapher-export .axis{overflow:visible;user-select:none}.grapher-export .axis.x-axis{width:1px;height:20px;display:block}.grapher-export .axis.x-axis .axis-item text{text-anchor:middle}.grapher-export .axis.x-axis .axis-item.axis-item-first text{text-anchor:start}.grapher-export .axis.x-axis .axis-item.axis-item-last text{text-anchor:end}.grapher-export .axis.y-axis{height:400px}.grapher-export .axis.y-axis .axis-item text{text-anchor:end;alignment-baseline:middle}.grapher-export .axis.y-axis .y-axis-label{text-anchor:middle;fill:#000}.grapher-export .axis.y-axis .y-axis-label.y-axis-big-label{font-size:18px}.grapher-export .axis.y-axis .series-color-box{cursor:pointer}.grapher-export .axis.y-axis.y-axis-right .axis-item text{text-anchor:start}.grapher-export .axis .axis-line{stroke:#000;stroke-width:1px}.grapher-export .axis .axis-line-shadow{stroke:#bfbfbf;stroke-width:1px}.grapher-export .axis .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-export .axis .axis-item text{fill:#000;font-size:8px}.grapher-export .axis .axis-item.axis-item-major .axis-tick{stroke-width:2px}.grapher-export .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-export .range-selection-graph{width:100%;padding-bottom:14px}.grapher-export .range-selection-graph .graph-body-secondary{height:50px}.grapher-export .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;height:50px;width:100%;overflow:visible}.grapher-export .range-selection-graph .graph-body-secondary svg .target-selection{fill:rgba(0,0,0,.02);cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar{fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-track{fill:#eee}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{fill:none;stroke-width:1;stroke:#333}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;stroke-width:1;fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .target-selection-outline{stroke:#333;fill:none}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#9f9f9f;text-anchor:start;font-size:8px;user-select:none;dominant-baseline:text-after-edge}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item path{stroke:#bfbfbf;stroke-width:1px}.grapher-export input,.grapher-export textarea{background:rgba(0,0,0,0);border:1px solid #e0e0e3;margin:2px 0;color:#222;padding:1px 2px;text-align:center}.grapher-export input:focus,.grapher-export textarea:focus{outline:none;border-color:#505053}.grapher-export.grapher-dragging-y .y-axis{border:2px dashed silver;margin:-2px;flex-shrink:0}.grapher-export.grapher-dragging-y .y-axis+.y-axis{border-left:none}.grapher-export.grapher-fullscreen{height:calc(100vh - 2*10px)}.grapher-export.grapher-fixed-height .grapher-primary-container-outer{height:100%}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body{height:100%;display:flex;flex-direction:column}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row{flex-grow:1}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container{display:flex;flex-direction:column;height:100%}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .central-container>.graph-body{flex-grow:1;height:unset}.grapher-export.grapher-fixed-height .grapher-primary-container-outer .grapher-primary-container-body .grapher-main-row .axis.y-axis{height:calc(100% - 40px)}.grapher-export.new-grapher{height:auto;border:2px dashed silver;text-align:center;color:#222}',"",{version:3,sources:["webpack://./src/grapher.scss"],names:[],mappings:"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",sourcesContent:["@mixin grapher(\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n\n $background-color-1: #2a2a2b,\n $background-color-2: #3e3e40,\n\n $tooltip-line-color: #CCC,\n $tooltip-background-color: rgba(0, 0, 0, 0.6),\n $tooltip-text-color: #F0F0F0,\n $vertical-line-color: #CCC,\n\n $axis-line-color: silver,\n $axis-line-width: 2px,\n $axis-tick-color: #505053,\n $axis-text-color: #E0E0E3,\n\n $range-selection-text-color: silver,\n $range-selection-button-color: #505053,\n $range-selection-button-selected-color: black,\n $range-selection-text-selected-color: silver,\n $range-selection-text-color-faded: #AAA,\n $range-selection-button-color-faded: #7A7A7A,\n $range-selection-button-border: null,\n $range-selection-selected-button-border: null,\n\n $range-graph-selection-bar-size: 14px,\n $range-graph-selection-range-color: rgba(255, 255, 255, 0.1),\n $range-graph-selection-outline-color: #AAA,\n $range-graph-selection-bar-color: #808083,\n $range-graph-selection-bar-track-color: #303033,\n $range-graph-selection-bar-rifles-color: #FFF,\n $range-graph-handle-color: #AAA,\n $range-graph-handle-fill-color: #666,\n $range-graph-axis-text-color: #9f9f9f,\n\n $annotation-background-color: rgba(255, 255, 255, 0.3),\n\n $series-key-axis-container-color: #111,\n $series-key-input-border-color: #505053,\n $series-key-input-selected-border-color: #E0E0E3,\n $series-key-input-text-color: #E0E0E3,\n $series-key-background: transparent,\n $scale-label-color: silver,\n $series-key-shadow-color: silver,\n\n $title-color: white,\n\n $sidebar-background-color: #111,\n $sidebar-text-color: #EEE,\n\n $new-grapher-color: #DDD\n) {\n $x-axis-height: 20px;\n $padding: 10px;\n\n $axis-z-index: 0;\n $graph-body-z-index: 1;\n\n position: relative;\n background: linear-gradient(to bottom right, $background-color-1, $background-color-2);\n padding: $padding;\n\n font-family: sans-serif;\n font-size: 12px;\n line-height: normal;\n\n *, :after, :before {\n box-sizing: content-box;\n }\n\n .grapher-title {\n text-align: center;\n color: $title-color;\n font-size: 18px;\n margin-bottom: 8px;\n }\n\n .grapher-primary-container-outer {\n display: flex;\n\n .grapher-sidebar {\n background: linear-gradient($sidebar-background-color, transparent 75%, transparent 100%);\n color: $sidebar-text-color;\n padding: 50px 6px 5px 10px;\n margin-left: -$padding;\n margin-top: -$padding;\n margin-bottom: -$padding;\n overflow-y: auto;\n flex-shrink: 0;\n\n .series-toggle {\n white-space: nowrap;\n\n & + .series-toggle {\n margin-top: 3px;\n }\n\n label {\n display: inline-block;\n position: relative;\n user-select: none;\n }\n\n input[type='checkbox'] {\n opacity: 0;\n cursor: pointer;\n height: 0;\n width: 0;\n margin-right: 11px;\n }\n\n input:not(:checked) ~ .checkmark {\n background-color: transparent !important;\n }\n\n input:checked ~ .checkmark:after {\n display: block;\n }\n\n .checkmark {\n position: absolute;\n top: 1px;\n left: 0;\n height: 7px;\n width: 7px;\n background-color: #eee;\n border: 2px solid;\n border-radius: 1px;\n }\n\n .checkmark:after {\n content: \"\";\n position: absolute;\n display: none;\n\n left: 0.5px;\n top: -1.5px;\n width: 3px;\n height: 6px;\n border: solid white;\n border-width: 0 2px 2px 0;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n }\n }\n\n .grapher-primary-container-body {\n width: 100%;\n padding-left: 2px;\n }\n }\n\n .series-key {\n text-align: center;\n margin-bottom: -14px;\n position: relative;\n\n .scale-label {\n display: inline-block;\n background: $series-key-axis-container-color;\n color: $scale-label-color;\n transform: rotate(-90deg);\n width: 24px;\n margin-left: -5px;\n vertical-align: top;\n margin-top: 4px;\n padding-bottom: 2px;\n cursor: pointer;\n user-select: none;\n }\n\n .series-key-axis-container {\n display: inline-block;\n border: 1px solid $series-key-axis-container-color;\n\n min-width: 18px;\n min-height: 24px;\n vertical-align: top;\n\n white-space: nowrap;\n\n & + .series-key-axis-container {\n margin-left: 4px;\n }\n\n &.series-key-axis-container-showing-label {\n .scale-label {\n width: 46px;\n margin-top: 15px;\n margin-left: -15px;\n margin-right: -12px;\n }\n\n .series-key-axis-label-container {\n display: block;\n }\n\n .label-input-toggler {\n path {\n fill: $series-key-input-selected-border-color;\n }\n }\n }\n\n .series-key-axis-container-body {\n display: inline-block;\n\n & > div {\n white-space: initial;\n }\n }\n\n .series-key-axis-label-container {\n display: none;\n }\n\n .label-input-toggler {\n width: 16px;\n cursor: pointer;\n display: inline-block;\n vertical-align: top;\n margin: 4px 2px;\n\n path {\n fill: $series-key-axis-container-color;\n }\n\n &:hover {\n path {\n fill: $series-key-input-selected-border-color;\n }\n }\n }\n }\n\n .series-key-item {\n border: 1px solid currentColor;\n padding: 2px;\n margin: 2px;\n display: inline-block;\n cursor: pointer;\n user-select: none;\n background: $series-key-background;\n\n & + .series-key-item {\n margin-left: 4px;\n }\n\n &.series-key-item-highlighted {\n box-shadow: 0 0 4px $series-key-shadow-color;\n }\n }\n }\n\n .range-selection {\n color: $range-selection-text-color;\n user-select: none;\n\n &.range-not-dates {\n color: $range-selection-text-color-faded;\n }\n\n .range-buttons {\n text-align: right;\n\n .options-bar {\n display: inline-block;\n }\n\n .option-tooltip {\n position: relative;\n display: inline-block;\n border-bottom: 1px dotted black;\n\n .option-tooltip-text {\n visibility: hidden;\n color: $range-selection-text-selected-color;\n background: $range-selection-button-selected-color;\n text-align: center;\n padding: 5px 5px;\n border-radius: 6px;\n position: absolute;\n z-index: 1;\n border: 1px solid black;\n\n width: 120px;\n margin-left: -65px;\n top: calc(100% + 7px);\n left: 50%;\n }\n\n &:hover .option-tooltip-text {\n visibility: visible;\n }\n\n .option-tooltip-text::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent black transparent;\n }\n }\n\n .range-button {\n display: inline-block;\n cursor: pointer;\n padding: 4px 8px;\n @if ($range-selection-button-border == null) {\n margin-left: 6px;\n } @else {\n margin-left: 4px;\n }\n\n border-radius: 2px;\n background: $range-selection-button-color;\n border: $range-selection-button-border;\n\n &.range-button-selected {\n color: $range-selection-text-selected-color;\n background: $range-selection-button-selected-color;\n border: $range-selection-selected-button-border;\n }\n\n &.range-button-disabled, &.range-button-selected.range-button-disabled {\n cursor: not-allowed;\n color: $range-selection-text-color-faded;\n background: $range-selection-button-color-faded;\n }\n\n .icon-container {\n position: relative;\n width: 0;\n\n &.icon-container-narrow {\n svg {\n left: -3px;\n }\n }\n\n &.icon-container-square {\n width: 5px;\n\n svg {\n left: -5px;\n }\n }\n\n &.icon-container-448 {\n width: 3px;\n\n svg {\n left: -5px;\n }\n }\n\n &:before {\n content: 'A';\n opacity: 0;\n }\n\n svg {\n height: 15px;\n position: absolute;\n top: -1px;\n left: -4px;\n }\n }\n }\n\n .range-selection-history + .range-selection-history {\n margin-right: 8px;\n margin-left: 4px;\n }\n\n .percentile-button {\n & > div {\n display: inline-block;\n }\n\n input {\n background: transparent;\n border: 1px solid $series-key-input-border-color;\n margin: 2px 8px 2px 0;\n color: $series-key-input-text-color;\n padding: 1px 2px;\n width: 20px;\n font-size: 11px;\n -moz-appearance: textfield;\n\n &:focus {\n outline: none;\n border-color: $series-key-input-selected-border-color;\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n\n .icon-container.icon-container-narrow {\n svg {\n height: 12px;\n top: 1px;\n left: -5px;\n }\n }\n }\n\n .showing-options-button {\n margin-right: 8px;\n }\n }\n }\n\n .grapher-main-row {\n display: flex;\n\n .central-container {\n width: 100%;\n }\n }\n\n .range-graph-container {\n display: flex;\n }\n\n .graph-body {\n width: 100%;\n height: $primary-graph-body-height;\n position: relative;\n\n canvas {\n width: 100%;\n height: 100%;\n }\n\n .grapher-tooltip, .grapher-draggable-points, .grapher-vertical-lines {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n > svg {\n position: absolute;\n overflow: visible;\n left: 0;\n }\n }\n\n .grapher-vertical-lines {\n pointer-events: none;\n user-select: none;\n }\n\n .grapher-tooltip {\n .tooltip-item {\n path {\n fill: $tooltip-background-color;\n }\n\n text {\n fill: $tooltip-text-color;\n dominant-baseline: hanging;\n text-anchor: start;\n }\n\n &.tooltip-item-fixed {\n path {\n fill: rgba($tooltip-background-color, 1);\n }\n }\n }\n\n .line {\n position: absolute;\n height: 400px;\n border-left: 1px solid $tooltip-line-color;\n }\n\n .custom-tooltip-container {\n position: absolute;\n }\n }\n\n .grapher-context-menu {\n position: absolute;\n top: 0;\n left: 0;\n .menu-item {\n\n .menu-text {\n user-select: all;\n position: absolute;\n top: 0;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n max-width: max-content;\n width: 200px;\n }\n }\n }\n\n .grapher-draggable-points {\n circle {\n cursor: pointer;\n }\n }\n\n .grapher-vertical-lines {\n line {\n stroke: $vertical-line-color;\n }\n\n polygon {\n fill: $vertical-line-color;\n }\n }\n\n .grapher-annotations {\n position: absolute;\n top: 0;\n pointer-events: none;\n user-select: none;\n\n .grapher-annotation {\n position: absolute;\n\n .annotation-marker {\n display: inline-block;\n height: $primary-graph-body-height;\n background: $annotation-background-color;\n }\n\n .annotation-text {\n position: absolute;\n top: 0;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n max-width: max-content;\n width: 200px;\n }\n }\n }\n\n .bounds-selection {\n position: absolute;\n background: $range-graph-selection-range-color;\n }\n }\n\n .axis {\n overflow: visible;\n user-select: none;\n\n &.x-axis {\n width: 1px;\n height: $x-axis-height;\n display: block;\n\n .axis-item {\n text {\n text-anchor: middle;\n }\n\n &.axis-item-first {\n text {\n text-anchor: start;\n }\n }\n\n &.axis-item-last {\n text {\n text-anchor: end;\n }\n }\n }\n }\n\n &.y-axis {\n height: $primary-graph-body-height;\n\n .axis-item text {\n text-anchor: end;\n alignment-baseline: middle;\n }\n\n .y-axis-label {\n text-anchor: middle;\n fill: $axis-text-color;\n\n &.y-axis-big-label {\n font-size: 18px;\n }\n }\n\n .series-color-box {\n cursor: pointer;\n }\n\n &.y-axis-right {\n .axis-item text {\n text-anchor: start;\n }\n }\n }\n\n .axis-line {\n stroke: $axis-line-color;\n stroke-width: $axis-line-width;\n }\n\n .axis-line-shadow {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n\n .axis-item {\n path {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n\n text {\n fill: $axis-text-color;\n font-size: 8px;\n }\n\n &.axis-item-major {\n .axis-tick {\n stroke-width: 2px;\n }\n }\n\n &.axis-item-big-labels {\n text {\n font-size: 16px;\n }\n }\n }\n }\n\n .range-selection-graph {\n width: 100%;\n padding-bottom: $range-graph-selection-bar-size;\n\n .graph-body-secondary {\n height: $secondary-graph-body-height;\n\n svg {\n position: absolute;\n left: 0;\n height: $secondary-graph-body-height;\n width: 100%;\n overflow: visible;\n\n .target-selection {\n fill: $range-graph-selection-range-color;\n cursor: ew-resize;\n }\n\n .selection-bar {\n fill: $range-graph-selection-bar-color;\n cursor: ew-resize;\n }\n\n .selection-bar-track {\n fill: $range-graph-selection-bar-track-color;\n }\n\n .selection-bar-rifles {\n fill: none;\n stroke-width: 1;\n stroke: $range-graph-selection-bar-rifles-color;\n }\n\n .selection-bar-handle {\n stroke: $range-graph-handle-color;\n stroke-width: 1;\n fill: $range-graph-handle-fill-color;\n cursor: ew-resize;\n }\n\n .target-selection-outline {\n stroke: $range-graph-selection-outline-color;\n fill: none;\n }\n\n .axis-item {\n text {\n fill: $range-graph-axis-text-color;\n text-anchor: start;\n font-size: 8px;\n user-select: none;\n dominant-baseline: text-after-edge;\n }\n\n path {\n stroke: $axis-tick-color;\n stroke-width: 1px;\n }\n }\n }\n }\n }\n\n input, textarea {\n background: transparent;\n border: 1px solid $series-key-input-border-color;\n margin: 2px 0;\n color: $series-key-input-text-color;\n padding: 1px 2px;\n text-align: center;\n\n &:focus {\n outline: none;\n border-color: $series-key-input-selected-border-color;\n }\n }\n\n &.grapher-dragging-y {\n .y-axis {\n border: 2px dashed silver;\n margin: -2px;\n flex-shrink: 0;\n\n & + .y-axis {\n border-left: none;\n }\n }\n }\n\n &.grapher-fullscreen {\n height: calc(100vh - 2*#{$padding});\n }\n\n &.grapher-fixed-height {\n .grapher-primary-container-outer {\n height: 100%;\n\n .grapher-primary-container-body {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .grapher-main-row {\n flex-grow: 1;\n\n .central-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n > .graph-body {\n flex-grow: 1;\n height: unset;\n }\n }\n\n .axis.y-axis {\n height: calc(100% - #{2*$x-axis-height});\n }\n }\n }\n }\n }\n\n &.new-grapher {\n height: auto;\n border: 2px dashed silver;\n text-align: center;\n color: $new-grapher-color;\n }\n}\n\n@mixin grapher-theme-night (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height\n );\n}\n\n@mixin grapher-theme-day (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height,\n\n $background-color-1: #FFF,\n $background-color-2: #FFF,\n\n $tooltip-line-color: invert(#CCC),\n $tooltip-background-color: invert(rgba(0, 0, 0, 0.6)),\n $tooltip-text-color: invert(#F0F0F0),\n $vertical-line-color: invert(#CCC),\n\n $axis-line-color: #656565,\n $axis-tick-color: #BFBFBF,\n $axis-text-color: invert(#E0E0E3),\n\n $range-selection-text-color: #444,\n $range-selection-button-color: white,\n $range-selection-button-selected-color: white,\n $range-selection-text-selected-color: black,\n $range-selection-text-color-faded: #888,\n $range-selection-button-color-faded: #EEE,\n $range-selection-button-border: 1px dotted silver,\n $range-selection-selected-button-border: 1px solid black,\n\n $range-graph-selection-range-color: rgba(0, 0, 0, 0.02),\n $range-graph-selection-outline-color: #333,\n $range-graph-selection-bar-color: #B0B0B7,\n $range-graph-selection-bar-track-color: #EEE,\n $range-graph-selection-bar-rifles-color: #333,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n\n $annotation-background-color: rgba(0, 0, 0, 0.3),\n\n $series-key-axis-container-color: #B0B0B7,\n $series-key-input-border-color: #E0E0E3,\n $series-key-input-selected-border-color: #505053,\n $series-key-input-text-color: #222,\n $series-key-background: null,\n $series-key-shadow-color: black,\n $scale-label-color: black,\n\n $title-color: black,\n\n $sidebar-background-color: #EEE,\n $sidebar-text-color: #111,\n\n $new-grapher-color: #222\n );\n}\n\n@mixin grapher-theme-export (\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n) {\n @include grapher(\n $primary-graph-body-height,\n $secondary-graph-body-height,\n\n $background-color-1: #FFF,\n $background-color-2: #FFF,\n\n $tooltip-line-color: invert(#CCC),\n $tooltip-background-color: invert(rgba(0, 0, 0, 0.6)),\n $tooltip-text-color: invert(#F0F0F0),\n $vertical-line-color: invert(#CCC),\n\n $axis-line-color: black,\n $axis-line-width: 1px,\n $axis-tick-color: #BFBFBF,\n $axis-text-color: black,\n\n $range-selection-text-color: #444,\n $range-selection-button-color: white,\n $range-selection-button-selected-color: white,\n $range-selection-text-selected-color: black,\n $range-selection-text-color-faded: #888,\n $range-selection-button-color-faded: #EEE,\n $range-selection-button-border: 1px dotted silver,\n $range-selection-selected-button-border: 1px solid black,\n\n $range-graph-selection-range-color: rgba(0, 0, 0, 0.02),\n $range-graph-selection-outline-color: #333,\n $range-graph-selection-bar-color: #B0B0B7,\n $range-graph-selection-bar-track-color: #EEE,\n $range-graph-selection-bar-rifles-color: #333,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n\n $annotation-background-color: rgba(0, 0, 0, 0.3),\n\n $series-key-axis-container-color: #B0B0B7,\n $series-key-input-border-color: #E0E0E3,\n $series-key-input-selected-border-color: #505053,\n $series-key-input-text-color: #222,\n $series-key-background: null,\n $series-key-shadow-color: black,\n $scale-label-color: black,\n\n $title-color: black,\n\n $sidebar-background-color: #EEE,\n $sidebar-text-color: #111,\n\n $new-grapher-color: #222\n );\n}\n\n.grapher-night {\n @include grapher-theme-night();\n}\n\n.grapher-day {\n @include grapher-theme-day();\n}\n\n.grapher-export {\n @include grapher-theme-export();\n}\n"],sourceRoot:""}]);const s=a},314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,i,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var A=0;A<e.length;A++){var h=[].concat(e[A]);r&&a[h[0]]||(void 0!==o&&(void 0===h[5]||(h[1]="@layer".concat(h[5].length>0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),n&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=n):h[2]=n),i&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=i):h[4]="".concat(i)),t.push(h))}},t}},354:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},694:(e,t,n)=>{"use strict";var r=n(925);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},556:(e,t,n)=>{e.exports=n(694)()},925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},72:e=>{"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var o={},a=[],s=0;s<e.length;s++){var l=e[s],A=r.base?l[0]+r.base:l[0],h=o[A]||0,c="".concat(A," ").concat(h);o[A]=h+1;var g=n(c),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==g)t[g].references++,t[g].updater(p);else{var d=i(p,r);r.byIndex=s,t.splice(s,0,{identifier:c,updater:d,references:1})}a.push(c)}return a}function i(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,i){var o=r(e=e||[],i=i||{});return function(e){e=e||[];for(var a=0;a<o.length;a++){var s=n(o[a]);t[s].references--}for(var l=r(e,i),A=0;A<o.length;A++){var h=n(o[A]);0===t[h].references&&(t[h].updater(),t.splice(h,1))}o=l}}},659:e=>{"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},56:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,i&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},400:e=>{e.exports="precision highp float;\n\nuniform vec4 color;\n\nvoid main() {\n gl_FragColor = vec4(color);\n}\n"},765:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\n\nvoid main() {\n gl_Position = vec4((position - 0.5)*2.0, 0.0, 1.0);\n}\n"},120:e=>{e.exports="#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n#endif\n\nprecision mediump float;\n\nuniform vec4 color;\n\n// Adapted and modified from https://www.desultoryquest.com/blog/drawing-anti-aliased-circular-points-using-opengl-slash-webgl/\nvoid main() {\n float delta = 0.0;\n float alpha = 1.0;\n vec2 center = 2.0 * gl_PointCoord - 1.0;\n float r = dot(center, center);\n\n if (r > 1.0) {\n discard;\n }\n\n #ifdef GL_OES_standard_derivatives\n delta = fwidth(r);\n alpha = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n #endif\n\n gl_FragColor = color * alpha;\n}\n"},789:e=>{e.exports="precision mediump float;\n\nattribute vec2 position;\n\nuniform float width;\nuniform float height;\nuniform float pointSize;\n\nvoid main() {\n gl_Position = vec4(2.0*position.x/width - 1.0, 1.0 - 2.0*position.y/height, 0.0, 1.0);\n gl_PointSize = pointSize;\n}"},390:e=>{e.exports="precision highp float;\n\nuniform vec4 color;\nuniform float thickness;\nuniform float shadowBlur;\nuniform vec4 shadowColor;\n\nvarying vec2 position_vec;\nvarying vec2 prev_position_vec;\n\n/**\n * Calculate distance between point and line in screen space (ie, inputs in pixels, returns distance in pixels)\n */\nfloat distance_from_line() {\n float x0 = gl_FragCoord.x;\n float y0 = gl_FragCoord.y;\n\n // let line be defined by ax + by + c = 0;\n float a, b, c;\n\n if (position_vec.x == prev_position_vec.x) {\n a = 1.0;\n b = 0.0;\n c = -position_vec.x;\n } else {\n float slope = (position_vec.y - prev_position_vec.y)/(position_vec.x - prev_position_vec.x);\n float y_intercept = position_vec.y - slope*position_vec.x;\n\n // y = slope*x + y_intercept\n // (-slope)(x) + (1)(y) - y_intercept = 0;\n a = -slope;\n b = 1.0;\n c = -y_intercept;\n }\n\n return abs(a*x0 + b*y0 + c)/length(vec2(a, b));\n}\n\nvoid main() {\n vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\n\n float dist = distance_from_line();\n\n if (dist + shadowBlur >= thickness) {\n float percent_shadowed = ((thickness - dist) / shadowBlur);\n gl_FragColor = mix(transparent, shadowColor, percent_shadowed*percent_shadowed);\n } else {\n gl_FragColor = vec4(color);\n gl_FragColor.rgb *= gl_FragColor.a;\n }\n}\n"},39:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\nattribute vec2 prevPosition;\nattribute float vertex;\n\nuniform float width;\nuniform float height;\nuniform float thickness;\n\nvarying vec2 position_vec;\nvarying vec2 prev_position_vec;\n\nvoid main() {\n vec2 delta = position - prevPosition;\n vec2 alpha = prevPosition;\n vec2 beta = position;\n\n vec2 normalized_delta = normalize(delta);\n vec2 normal = vec2(-thickness/2.0 * normalized_delta.y, thickness/2.0 * normalized_delta.x);\n\n vec2 vertex_position =\n step(0.5, mod(vertex, 2.0))*alpha + // alpha if vertex is odd, 0 otherwise\n step(0.5, mod(vertex + 1.0, 2.0))*beta + // beta if vertex is even, 0 otherwise\n 2.0*(step(1.5, vertex)-0.5)*normal // -normal if vertex < 2, +normal otherwise\n ;\n\n position_vec = vec2(position.x, height - position.y);\n prev_position_vec = vec2(prevPosition.x, height - prevPosition.y);\n\n gl_Position = vec4(2.0*vertex_position.x/width - 1.0, 1.0 - 2.0*vertex_position.y/height, 0.0, 1.0);\n}\n"},155:t=>{"use strict";t.exports=e}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={id:e,exports:{}};return r[e](n,n.exports,o),n.exports}o.m=r,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,n)=>(o.f[n](e,t),t)),[])),o.u=e=>e+".bundle.js",o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},n="Grapher:",o.l=(e,r,i,a)=>{if(t[e])t[e].push(r);else{var s,l;if(void 0!==i)for(var A=document.getElementsByTagName("script"),h=0;h<A.length;h++){var c=A[h];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==n+i){s=c;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",n+i),s.src=e),t[e]=[r];var g=(n,r)=>{s.onerror=s.onload=null,clearTimeout(p);var i=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(r))),n)return n(r)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),l&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/assets/",(()=>{o.b=document.baseURI||self.location.href;var e={792:0};o.f.j=(t,n)=>{var r=o.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=e[t]=[n,i]));n.push(r[2]=i);var a=o.p+o.u(t),s=new Error;o.l(a,(n=>{if(o.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",s.name="ChunkLoadError",s.type=i,s.request=a,r[1](s)}}),"chunk-"+t,t)}};var t=(t,n)=>{var r,i,[a,s,l]=n,A=0;if(a.some((t=>0!==e[t]))){for(r in s)o.o(s,r)&&(o.m[r]=s[r]);l&&l(o)}for(t&&t(n);A<a.length;A++)i=a[A],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},n=globalThis.webpackChunkGrapher=globalThis.webpackChunkGrapher||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),o.nc=void 0;var a={};return(()=>{"use strict";o.r(a),o.d(a,{AVAILABLE_COLORS:()=>Zt,BUILT_IN_BOUND_CALCULATORS:()=>Qt,default:()=>jt});var e=o(155),t=o.n(e),n=o(556),r=o.n(n);const i=["values","tuples","objects"],s=[...i,"tuple_observable","object_observable","generator"],l=r().any,A=r().shape({data:l.isRequired,type:r().oneOf([...s,"infer"]),xKey:r().string,yKey:r().string,xUnixDates:r().bool,color:r().oneOfType([r().string,r().number]),name:r().string,xLabel:r().string,yLabel:r().string,ignoreDiscontinuities:r().bool,dashed:r().bool,dashPattern:r().arrayOf(r().number),width:r().number,rangeSelectorWidth:r().number,axis:r().oneOfType([r().string,r().object]),expandYWith:r().arrayOf(r().number),defaultAlwaysTooltipped:r().bool,square:r().bool,shiftXBy:r().number,graph:r().number,background:r().object,hideFromKey:r().bool,showIndividualPoints:r().bool,rendering:r().oneOf(["line","bar","area"]),negativeColor:r().string,gradient:r().array,zeroLineWidth:r().number,zeroLineColor:r().string,zeroLineY:r().oneOfType([r().number,r().string]),pointRadius:r().number,tooltipWidth:r().number,hasAreaBottom:r().bool,shadowColor:r().string,rangeKey:r().string}),h=r().arrayOf(A),c=r().shape({axisIndex:r().number.isRequired,series:r().array.isRequired,side:r().oneOf(["left","right"]).isRequired,scale:r().oneOf(["linear","log"]).isRequired,label:r().string}),g=r().arrayOf(c),p=r().shape({label:r().string.isRequired,calculator:r().func.isRequired,datesOnly:r().bool}),d=r().arrayOf(p),u={includeSeriesLabel:r().bool,includeXLabel:r().bool,includeYLabel:r().bool,includeXValue:r().bool,includeYValue:r().bool,floating:r().bool,alwaysFixedPosition:r().bool,floatPosition:r().oneOf(["top","bottom"]),floatDelta:r().number,savingDisabled:r().bool,customTooltip:r().func,combineTooltips:r().oneOfType([r().bool,r().number])},m=r().shape(u),C=r().shape({x:r().oneOfType([r().string,r().number,r().instanceOf(Date)]).isRequired,xEnd:r().oneOfType([r().string,r().number,r().instanceOf(Date)]),series:r().arrayOf(r().string),content:r().string.isRequired}),x=r().arrayOf(C),b=r().shape({x:r().number.isRequired,y:r().number.isRequired,radius:r().number,fillColor:r().string,strokeColor:r().string,strokeWidth:r().number,onClick:r().func,onDoubleClick:r().func}),f=r().arrayOf(b),y=r().shape({x:r().number.isRequired,color:r().string,lineTop:r().number,width:r().number,markTop:r().bool,style:r().object,markerStyle:r().object,text:r().string,textTop:r().number,textStyle:r().object,minPixelX:r().number,maxPixelX:r().number,onRangeGraph:r().oneOfType([r().bool,r().object]),onRangeGraphOnly:r().bool}),B={Data:l,SingleSeries:A,Series:h,Axis:c,Axes:g,CustomBoundsSelector:p,CustomBoundsSelectors:d,TooltipOptions:m,TooltipOptionsRaw:u,Annotations:x,DraggablePoint:b,DraggablePoints:f,VerticalLine:y,VerticalLines:r().arrayOf(y)};async function _(e,t,{reset:n=!0}={}){n&&(e.width="",e.height="",e.style.width="0",e.style.height="",await new Promise((e=>requestAnimationFrame(e))));let r=e.parentNode.getBoundingClientRect();for(;0===r.width;)await new Promise((e=>requestAnimationFrame(e))),r=e.getBoundingClientRect();const i=2*(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),o=r.width,a=r.height,s=o*i,l=a*i;return e.width=s,e.height=l,e.style.width=`${o}px`,e.style.height=`${a}px`,{pixelRatio:i,elementWidth:o,elementHeight:a,renderWidth:s,renderHeight:l,boundingRect:r}}const E=["#F1C232","#1259f8","#cb4b4b","#4da74d","#9440ed","#61e0ed","#ed6d2c","#ed13c6","#bbed59"];function w(e,t,n){return"string"==typeof e?e:"number"==typeof e?E[e%E.length]:void 0!==n?E[n%E.length]:E[t%E.length]}var v=o(390),k=o.n(v),S=o(39),D=o.n(S),Y=o(120),X=o.n(Y),R=o(789),T=o.n(R);function F(e){if("black"===e)e="#000000";else if("white"===e)e="#FFFFFF";else if("transparent"===e)return[0,0,0,0];if(e.startsWith("rgb")){const t=e.split(",").map((e=>parseFloat(e.match(/\d+(\.\d+)?/)[0])));return[t[0]/255,t[1]/255,t[2]/255,t.length>=4?t[3]:1]}if("string"!=typeof e||!/^#[\dA-F]{6}$/i.test(e))throw new Error(`Color must be a hex string: ${e}`);return[parseInt(e.substr(1,2),16)/255,parseInt(e.substr(3,2),16)/255,parseInt(e.substr(5,2),16)/255,1]}function M(e,{splitAtY:t}={}){const n=[];let r=[],i=!0;const{nullMask:o,maxYValues:a,minYValues:s,yValues:l}=e;for(let e=0;e<l.length;e++){const A=2*e,h=l[e];if(1&o[e]){i||(n.push(r),r=[]),i=!0;continue}r.push([A,h]);const c=s[e],g=a[e];if(c!==g&&(2&o[e]||r.push([A,c]),4&o[e]||r.push([A,g]),r.push([A,h])),i=!1,"number"==typeof t&&e>0){const a=l[e-1];(!(1&o[e-1])&&a<t&&h>=t||a>t&&h<=t||a===t&&h!==t)&&(i||(n.push(r),r=[[A,h]]),i=!0)}}return i||n.push(r),n}let P;function z(e,{dashed:t,dashPattern:n}){let r=0;for(let i of e)if(t)for(let e=0;e<i.length;e++)t&&e%(n[0]+n[1])>=n[0]||r++;else r+=i.length;const i=new Float32Array(8*r),o=new Float32Array(8*r),a=new Float32Array(4*r),s=new Uint32Array(6*r);if(r>0){const e=new Float32Array([0,1,2,3]);a.set(e);let t=e.length,n=e.length;for(;t<a.length;)t+n>a.length&&(n=a.length-t),a.copyWithin(t,0,n),t+=n,n<<=1}let l=0;for(let r of e)for(let e=0;e<r.length;e++){if(t&&e%(n[0]+n[1])>=n[0])continue;const[a,A]=r[e];let h,c;0===e?(h=a-1,c=A):[h,c]=r[e-1];for(let e=0;e<4;e++)i[8*l+2*e]=a,i[8*l+2*e+1]=A,o[8*l+2*e]=h,o[8*l+2*e+1]=c;s[6*l]=4*l,s[6*l+1]=4*l+1,s[6*l+2]=4*l+3,s[6*l+3]=4*l,s[6*l+4]=4*l+2,s[6*l+5]=4*l+3,l++}return{positions:i,prevPositions:o,vertices:a,indices:s}}function $(e,t,n){const r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,t),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.error(e.getShaderInfoLog(r));const i=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(i,n),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)||console.error(e.getShaderInfoLog(i));const o=e.createProgram();return e.attachShader(o,r),e.attachShader(o,i),e.linkProgram(o),e.validateProgram(o),e.getProgramParameter(o,e.LINK_STATUS)||console.error(e.getProgramInfoLog(o)),o}o.e(744).then(o.bind(o,744)).then((e=>{P=e}));class I{constructor(e){this._gl=e,this._program=$(e,D(),k()),this._circleProgram=$(e,T(),X()),this._positionBuffer=e.createBuffer(),this._prevPositionBuffer=e.createBuffer(),this._vertexBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),this._individualPointBuffer=e.createBuffer(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}dispose(){}clear(){const e=this._gl,t=e.drawingBufferWidth,n=e.drawingBufferHeight;e.clearColor(0,0,0,0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT),e.viewport(0,0,t,n)}draw(e,t){const n=this._gl,r=n.drawingBufferWidth,i=n.drawingBufferHeight;n.useProgram(this._program);const o=2*((t.width||1)+(t.highlighted?2:0)),a=void 0===t.shadowBlur?2:t.shadowBlur,s=t.shadowColor||"black",l=t.dashed||!1,A=t.dashPattern||[5,5],{positions:h,prevPositions:c,vertices:g,indices:p}=function(e,{dashed:t,dashPattern:n}){if(e.paths)return z(e.paths,{dashed:t,dashPattern:n});if(!P)return z(M(e),{dashed:t,dashPattern:n});const r=P.get_point_number(e.nullMask,e.yValues,e.minYValues,e.maxYValues,t,n[0],n[1]);let i=new Float32Array(8*r),o=new Float32Array(8*r),a=new Float32Array(4*r),s=new Uint32Array(6*r);return P.extract_vertices(2,e.nullMask,e.yValues,e.minYValues,e.maxYValues,i,o,a,s,t,n[0],n[1]),{positions:i,prevPositions:o,vertices:a,indices:s}}(e,{dashed:l,dashPattern:A}),d=n.getAttribLocation(this._program,"position"),u=n.getAttribLocation(this._program,"prevPosition"),m=n.getAttribLocation(this._program,"vertex");if(n.enableVertexAttribArray(d),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,h,n.STATIC_DRAW),n.vertexAttribPointer(d,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(u),n.bindBuffer(n.ARRAY_BUFFER,this._prevPositionBuffer),n.bufferData(n.ARRAY_BUFFER,c,n.STATIC_DRAW),n.vertexAttribPointer(u,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(m),n.bindBuffer(n.ARRAY_BUFFER,this._vertexBuffer),n.bufferData(n.ARRAY_BUFFER,g,n.STATIC_DRAW),n.vertexAttribPointer(m,1,n.FLOAT,!1,0,0),n.uniform1f(n.getUniformLocation(this._program,"width"),r),n.uniform1f(n.getUniformLocation(this._program,"height"),i),n.uniform1f(n.getUniformLocation(this._program,"thickness"),Math.max(o,1)+a),n.uniform1f(n.getUniformLocation(this._program,"shadowBlur"),a),n.uniform4f(n.getUniformLocation(this._program,"color"),...F(t.color)),n.uniform4f(n.getUniformLocation(this._program,"shadowColor"),...F(s)),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,p,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,p.length,n.UNSIGNED_INT,0),t.showIndividualPoints){n.useProgram(this._circleProgram),n.uniform1f(n.getUniformLocation(this._circleProgram,"width"),r),n.uniform1f(n.getUniformLocation(this._circleProgram,"height"),i),n.uniform1f(n.getUniformLocation(this._circleProgram,"pointSize"),2*(o+6)),n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...F(t.color));const e=t.getIndividualPoints();n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(e.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,e.length)}}}class O{constructor(){this._listeners={}}clearListeners(){this._listeners={}}on(e,t){this._listeners[e]=this._listeners[e]||new Set,this._listeners[e].add(t)}off(e,t){this._listeners[e]&&(this._listeners[e].delete(t),0===this._listeners[e].size&&delete this._listeners[e])}emit(e){if(!this._listeners[e])return;const t=[];for(let e=1;e<arguments.length;e++)t.push(arguments[e]);this._listeners[e].forEach((e=>{e.apply(this,t)}))}}var L=o(400),N=o.n(L),G=o(765),W=o.n(G);class q{constructor(e){this._gl=e,this._program=$(e,W(),N()),this._vertexBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}draw({data:e}){const t=this._gl;t.useProgram(this._program);for(let{minXt:n,maxXt:r,color:i}of e){t.uniform4f(t.getUniformLocation(this._program,"color"),...F(i));const e=new Float32Array([n,1,r,1,r,-1,n,1,r,-1,n,-1]);t.bindBuffer(t.ARRAY_BUFFER,this._vertexBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW);const o=t.getAttribLocation(this._program,"position");t.enableVertexAttribArray(o),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.drawArrays(t.TRIANGLES,0,6)}}}function U(e,{context:t,sizing:n,color:r,zeroColor:i,zeroWidth:o}){o&&(t.strokeStyle=i||r,t.lineWidth=o,t.beginPath(),t.moveTo(0,e),t.lineTo(n.renderWidth,e),t.stroke())}function H({closestSpacing:e,bounds:t,sizing:n,axisSeriesCount:r}){const i=e/(t.maxX-t.minX)*n.renderWidth,o=.8*i;return{barWidth:o/r,totalBarWidth:o,barSpacing:.2*i}}function K(e,t={useSimpleData:!1}){if(e.type&&"infer"!==e.type)return e.type;const n=t.data||t.useSimpleData&&e.simpleData||e.data;if(!n)throw new Error("Data must be provided");if(Array.isArray(n))return 0===n.length||Array.isArray(n[0])?"tuples":"number"!=typeof n[0]&&n[0]?"objects":"values";if(n.observe)return e.xKey?"object_observable":"tuple_observable";if("function"==typeof n)return"generator";throw new Error("Could not infer type")}class j extends O{constructor({stateController:e,canvasElement:t,webgl:n=!1,checkIntersection:r=!0}){super(),this._stateController=e,this._checkIntersection=r,this._canvas=t,this._webgl=n,n&&(this._context=this._canvas.getContext("webgl"),this._context?this._lineProgram=new I(this._context):(alert("WebGL failed! Attempting fallback to CPU rendering"),this._webgl=!1)),this._webgl||(this._context=this._canvas.getContext("2d"),this._context2d=this._context),this._initialized=this._initializeCanvas(),this._boundResize=this.resize.bind(this),this._cachedAxisCount=null,this._onAxisChange=e=>{const t=e.filter((({series:e})=>e.length>0)).length;this._cachedAxisCount!==t&&(this._cachedAxisCount=t,this.resize())},e.on("axes_changed",this._onAxisChange),e.on("dragging_y_changed",this._boundResize),e.on("showing_sidebar_changed",this._boundResize)}dispose(){this.clearListeners(),this._lineProgram&&this._lineProgram.dispose(),this._cachedAxisCount=null,this._stateController.off("axes_changed",this._onAxisChange),this._stateController.off("dragging_y_changed",this._boundResize),this._resizeObserver&&this._resizeObserver.disconnect(),this._intersectionObserver&&this._intersectionObserver.disconnect()}clear(){this._webgl?this._lineProgram.clear():this._context.clearRect(0,0,this._context.canvas.width,this._context.canvas.height)}render(e,t,{highlighted:n,showIndividualPoints:r,shadowColor:i,shadowBlur:o,width:a,defaultLineWidth:s,bounds:l,globalBounds:A,inRenderSpaceAreaBottom:h}){const c=t=>{l||(l=e.axis.currentBounds);const n=[];let r=e.inSelectedSpace.data;t&&(r=e.inDataSpace);for(let[e,t]of r)null!==t&&n.push([(e-l.minX)/(l.maxX-l.minX)*this._sizing.renderWidth,(1-(t-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight]);return n};let g;if("bar"===e.rendering||"area"===e.rendering){this._context2d=this._context2d||this._canvas.getContext("2d"),this._webgl&&this._context.flush(),l||(l=e.axis.currentBounds);const t="bottom"===e.zeroLineY?this._sizing.renderHeight:(1-((e.zeroLineY||0)-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight;g={context:this._context2d,color:w(e.color,e.index,e.multigrapherSeriesIndex),sizing:this._sizing,zero:t,hasNegatives:!!e.inDataSpace.find((e=>e[1]<0)),negativeColor:e.negativeColor,zeroWidth:e.zeroLineWidth,zeroColor:e.zeroLineColor},!g.hasNegatives&&e.expandYWith&&(g.hasNegatives=e.expandYWith.some((e=>e<0)))}if("bar"===e.rendering)return void function(e,{color:t,context:n,sizing:r,indexInAxis:i,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:A,zeroWidth:h,closestSpacing:c,bounds:g}){n.strokeStyle=t,n.fillStyle=t;const{barWidth:p,totalBarWidth:d}=H({closestSpacing:c,bounds:g,sizing:r,axisSeriesCount:o}),u=s?a:r.renderHeight;for(let r=0;r<e.length;r++){const[o,A]=e[r];s&&(n.fillStyle=A<=a?t:l),n.fillRect(o-d/2+p*i,A,p,u-A)}h&&U(u,{context:n,sizing:r,color:t,zero:a,zeroColor:A,zeroWidth:h})}(c(!0),{...g,indexInAxis:e.axis.series.indexOf(e),axisSeriesCount:e.axis.series.length,closestSpacing:A.closestSpacing,bounds:l});if("area"===e.rendering)return void function(e,t,{color:n,context:r,sizing:i,zero:o,hasNegatives:a,gradient:s,zeroColor:l,zeroWidth:A,showIndividualPoints:h,negativeColor:c,pointRadius:g,width:p,highlighted:d,shadowColor:u="black",shadowBlur:m=5,inRenderSpaceAreaBottom:C}){if(r.fillStyle=n,r.shadowColor=u,r.shadowBlur=m,s&&s.length>2){const e=r.createLinearGradient(0,0,0,i.renderHeight);for(let t=0;t<s.length;t++){const n=s[t];Array.isArray(n)?e.addColorStop(n[0],n[1]):e.addColorStop(t/(s.length-1),n)}r.fillStyle=e,"gradient"===n&&(r.strokeStyle=e)}else r.fillStyle=n;if(!e.length)return;const x=a?o:i.renderHeight,b=M(t),f=C&&M(C),y=M(t,{splitAtY:o});for(let e=0;e<b.length;e++){const t=b[e],n=f&&f[e];r.beginPath();const[i,o]=t[0],[a,s]=t[t.length-1];f||r.moveTo(i,x);for(let e=0;e<t.length;e++){const[n,i]=t[e];r.lineTo(n,i)}if(n&&n.length){for(let e=n.length-1;e>=0;e--){const[t,i]=n[e];r.lineTo(t,i)}r.lineTo(...t[0])}else r.lineTo(a,x);r.fill()}d&&(p+=2),p*=2,r.strokeStyle=n,r.lineWidth=p;for(let e of y)if(e.length){if(a){let t=!0;t=e.length>=2?e[1][1]<=o:e[0][1]<=o,r.strokeStyle=t?n:c}r.beginPath();for(let t=0;t<e.length;t++){const[n,i]=e[t];0===t?r.moveTo(n,i):r.lineTo(n,i)}r.stroke()}if(A&&U(x,{context:r,sizing:i,color:n,zero:o,zeroColor:l,zeroWidth:A}),h){r.fillStyle=n;for(let[t,i]of e)c&&a&&(r.fillStyle=i===o&&l?l:i<o?n:c),r.beginPath(),r.arc(t,i,g||8,0,2*Math.PI,!1),r.fill()}}(c(!0),t,{...g,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:r,gradient:e.gradient,pointRadius:e.pointRadius,highlighted:n,width:a||e.width||s,shadowColor:i,shadowBlur:o,inRenderSpaceAreaBottom:h});const p={color:w(e.color,e.index,e.multigrapherSeriesIndex),context:this._context,width:a||e.width||s,shadowColor:i,shadowBlur:o,dashed:e.dashed,dashPattern:e.dashPattern,highlighted:n,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:r,getIndividualPoints:c,getRanges:e.rangeKey?()=>(l||(l=e.axis.currentBounds),e.rangeKey?"objects"!==K(e,{useSimpleData:!0})?[]:(e.simpleData||e.data).map((t=>{const n=t[e.rangeKey];if(!n)return null;const r=n.min,i=n.max,o=t[e.xKey];return{x:o,range:n,pixelX:(o-l.minX)/(l.maxX-l.minX)*this._sizing.renderWidth,pixelMinY:"number"==typeof r?(1-(r-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight:null,pixelMaxY:"number"==typeof i?(1-(i-l.minY)/(l.maxY-l.minY))*this._sizing.renderHeight:null}})):[]):null};this._webgl?this._lineProgram.draw(t,p):function(e,{color:t,width:n=1,context:r,shadowColor:i="black",shadowBlur:o=5,dashed:a=!1,dashPattern:s=null,highlighted:l=!1,showIndividualPoints:A=!1,getIndividualPoints:h,getRanges:c}){l&&(n+=2),n*=2,r.strokeStyle=t,r.lineWidth=n,r.shadowColor=i,r.shadowBlur=o,a?r.setLineDash(s||[5,5]):r.setLineDash([]);const g=M(e);for(let e of g){r.beginPath();for(let t=0;t<e.length;t++){const[n,i]=e[t];0===t?r.moveTo(n,i):r.lineTo(n,i)}r.stroke()}if(c){const e=c();r.lineWidth=n,r.strokeStyle=t,r.setLineDash([]);const i=16;for(let t of e){if(!t)continue;const{pixelX:e,pixelMinY:n,pixelMaxY:o}=t;null!==n&&(r.beginPath(),r.moveTo(e-i/2,n),r.lineTo(e+i/2,n),r.stroke()),null!==o&&(r.beginPath(),r.moveTo(e-i/2,o),r.lineTo(e+i/2,o),r.stroke()),null!==n&&null!==o&&(r.beginPath(),r.moveTo(e,n),r.lineTo(e,o),r.stroke())}}if(A){r.fillStyle=t;const e=h();for(let[t,i]of e)r.beginPath(),r.arc(t,i,n+4,0,2*Math.PI,!1),r.fill()}}(t,p)}renderBackground(e){e&&(this._webgl?(this._backgroundProgram||(this._backgroundProgram=new q(this._context)),this._backgroundProgram.draw(e)):function({data:e},{context:t}){const n=t.canvas.width,r=t.canvas.height;for(let{minXt:i,maxXt:o,color:a}of e)t.fillStyle=a,t.fillRect(i*n,0,(o-i)*n,r)}(e,{context:this._context}))}async _initializeCanvas(){if(this._sizing=await _(this._canvas,this._context),this.emit("size_changed",this._sizing),this._stateController.markSizeChanged(),window.ResizeObserver){let e=!0,t=!1;this._resizeObserver=new window.ResizeObserver((()=>{e?e=!1:t||(t=!0,this.resize().then((()=>{t=!1})))})),this._resizeObserver.observe(this._canvas.parentNode)}this._checkIntersection&&window.IntersectionObserver&&(this._intersectionObserver=new window.IntersectionObserver((e=>{clearTimeout(this._intersectionTimeout),e[0].isIntersecting&&(this._intersectionTimeout=setTimeout((()=>{this.resize()}),50))}),{threshold:.1}),this._intersectionObserver.observe(this._canvas.parentNode))}async resize(){const e=_(this._canvas,this._context,{reset:!0});this._initialized=e,this._sizing=await this._initialized,this._initialized===e&&(this.emit("size_changed",this._sizing),this._stateController.markSizeChanged(this))}resizeDebounced(){this._resizeTimeout&&clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout((()=>{this.resize(),this._resizeTimeout=null}),50)}recalculatePosition(){this._sizing&&(this._sizing.boundingRect=this._canvas.getBoundingClientRect())}get boundingRect(){return this._sizing.boundingRect}get sizing(){return this._sizing}}function V(e){return Math.max(2-Math.log10(Math.abs(e)),0)}function J(e,t=null){if(null===t&&(t=V(e)),isNaN(t)||t>100)return e.toString();const n=e.toFixed(Math.ceil(t));let r=n;return n.includes(".")&&(r=r.replace(/\.?0+$/g,"")),""===r?"0":r}const Z={};function Q(e,t){try{let n=Z[e];if(!n){let t=e;e&&"local"!==e||(t=Intl.DateTimeFormat().resolvedOptions().timeZone),n=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}),Z[e]=n}const r=n.formatToParts(t).find((e=>"timeZoneName"===e.type));if(!r)return null;if("GMT"===r.value)return 0;if(!/^GMT[+-]\d{2}:\d{2}$/.test(r.value))return null;const[i,o]=r.value.slice(3).split(":");return 60*parseInt(i)*60*1e3+60*parseInt(o)*1e3}catch(n){return console.error(new Error(`Could not parse timezone offset for ${t} in ${e}`)),console.error(n),null}}function ee(e,t){if(!t){const t=new Date(e);return t.setHours(0,0,0,0),t}const n=Q(t,e);let r=new Date(e);return r.setUTCHours(0,0,0,0),r.valueOf()-e.valueOf()>n&&(r=new Date(r.valueOf()-864e5)),new Date(r.valueOf()-n)}function te(e,{dates:t=!1,precision:n=null,justTime:r=!1,justDate:i=!1,justMonthAndDay:o=!1,clockStyle:a="24h",unitOverride:s,timeZone:l,integersOnly:A=!1,inverseEnumMap:h}={}){return!t||e instanceof Date||(e=new Date(e),!isNaN(e))?e instanceof Date?function(e,{precision:t,justTime:n,justDate:r,justMonthAndDay:i,unitOverride:o,clockStyle:a="24h",timeZone:s}){const l=s&&"utc"===s.toLowerCase();if(s&&!l&&"local"!==s&&window.Intl&&window.Intl.DateTimeFormat){const t=Q(s,e),n=Q("local",e);"number"==typeof t&&"number"==typeof n&&(e=new Date(e.valueOf()+t-n))}const A=l?e.getUTCFullYear():e.getFullYear(),h=(l?e.getUTCMonth():e.getMonth())+1,c=l?e.getUTCDate():e.getDate();if("year"===o)return A.toString();if(r)return l?`${h}/${c}/${A}`:e.toLocaleDateString();if(i)return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][h-1]} ${c}`;const g=l?e.getUTCHours():e.getHours(),p=l?e.getUTCMinutes():e.getMinutes(),d=l?e.getUTCSeconds():e.getSeconds(),u=l?e.getUTCMilliseconds():e.getMilliseconds();let m;return m="12h"===a?`${((g+11)%12+1).toString()}:${p.toString().padStart(2,"0")}`:`${g.toString().padStart(2,"0")}:${p.toString().padStart(2,"0")}`,"s"!==t&&"ms"!==t||(m+=`:${d.toString().padStart(2,"0")}`),"ms"===t&&(m+=`.${u.toString().padStart(3,"0")}`),"12h"===a&&(m+=g>=12?"pm":"am"),n?m:(l&&(m+=" UTC"),(l?`${h}/${c}/${A}`:e.toLocaleDateString())+" "+m)}(e,{precision:n,justTime:r,justDate:i,justMonthAndDay:o,unitOverride:s,clockStyle:a,timeZone:l}):isNaN(e)?"NaN":h?Math.abs(e-Math.round(e))>1e-10?"":h[Math.round(e)]:A&&Math.abs(e-Math.round(e))>1e-10?"":J(e,n):"Invalid Date"}function ne(e,{precision:t=null,log:n=!1}={}){return null===e?"null":isNaN(e)?"NaN":n?`10^${J(Math.log10(e),t)}`:J(e,t)}const re=32;function ie(){return ie=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ie.apply(this,arguments)}function oe({yLabel:e,y:t,fullYPrecision:n}){return n&&!e?void 0===t?"undefined":null===t?"null":t.toString():"number"==typeof e?n?e.toString():ne(e):"object"==typeof e?ne(t):e||ne(t)}function ae({axisLabel:e,x:n,y:r,xLabel:i,yLabel:o,textLeft:a,textTop:s,includeSeriesLabel:l,includeXValue:A,includeYValue:h,includeXLabel:c,includeYLabel:g,fullYPrecision:p,formatXOptions:d}){let u=0;return t().createElement("g",null,l&&t().createElement("text",{x:a,y:s+12*u++},e),A&&t().createElement("text",{x:a,y:s+12*u++},c&&"x: ",i||te(n,d)),h&&t().createElement("text",{x:a,y:s+12*u++},g&&"y: ",oe({yLabel:o,y:r,fullYPrecision:p})))}ae.propTypes={axisLabel:r().string,x:r().oneOfType([r().number,r().instanceOf(Date)]),y:r().number,xLabel:r().string,yLabel:r().oneOfType([r().number,r().string]),textLeft:r().number.isRequired,textTop:r().number.isRequired,fullYPrecision:r().bool,formatXOptions:r().object,...B.TooltipOptionsRaw};class se extends t().PureComponent{render(){let e=42;this.props.includeSeriesLabel||(e-=12),this.props.includeXValue||(e-=12),this.props.includeYValue||(e-=12);const n=e/2,r=3-n,i={clockStyle:this.props.clockStyle,timeZone:this.props.timeZone},o={includeSeriesLabel:this.props.includeSeriesLabel,includeXLabel:this.props.includeXLabel,includeYLabel:this.props.includeYLabel,includeXValue:this.props.includeXValue,includeYValue:this.props.includeYValue,formatXOptions:i},a=this.props.tooltips.map((t=>{const{x:a,y:s,pixelY:l,pixelX:A,series:h,index:c,xLabel:g,yLabel:p,fullYPrecision:d}=t;if("number"!=typeof A)return null;const u=(h.name||h.yKey||c).toString();let m=7.5*Math.max(u.length,(g||te(a,i)).length+4,oe({yLabel:p,y:s,fullYPrecision:d}).length+4);h.tooltipWidth&&(m=h.tooltipWidth);let C=this.props.elementWidth<m+14+8,x=1;A>=this.props.elementWidth-(m+14+4)&&(x=-1),A<m+14+4&&-1===x&&(C=!0),null===s&&(C=!0),this.props.alwaysFixedPosition&&(C=!0);let b=11;if(x<0?b=-m-b:b+=6,!isFinite(A))return null;const f=`translate(${A},${l})`,y={fullYPrecision:d||this.props.maxPrecision,x:a,y:s,axisLabel:u,xLabel:g,yLabel:p,...o};let B,_=0;return C&&(b=6,B=this.props.elementWidth/2-m/2,m>this.props.elementWidth&&!this.props.floating&&(B-=re*this.props.axisCount/2),_=18,this.props.floating&&(_="bottom"===this.props.floatPosition?this.props.elementHeight+n+4:-e,this.props.floatDelta&&(_+=this.props.floatDelta))),{...t,label:u,indexInAxis:h?.axis?.series?.indexOf(h),axisLabel:u,width:m,fixedPosition:C,multiplier:x,textLeft:b,transform:f,commonLabelProps:y,textTop:r,height:e,caretSize:7,halfHeight:n,caretPadding:4,yTranslation:_,baseLeft:B}})).filter(Boolean),s=this.props.customTooltip;let l;if(this.props.combineTooltips){let e=50;"number"==typeof this.props.combineTooltips&&(e=this.props.combineTooltips),l=[];for(let t of a){let n=!1;for(let r of l)if(Math.abs(r.pixelX-t.pixelX)<=e){r.tooltips.push(t),t.pixelX>r.pixelX&&(r.pixelX=t.pixelX,r.multiplier=t.multiplier),t.pixelY<r.pixelY&&(r.pixelY=t.pixelY),n=!0;break}n||l.push({pixelX:t.pixelX,pixelY:t.pixelY,multiplier:t.multiplier,tooltips:[t]})}for(let e of l){let t=0,n=0;e.tooltips.sort(((e,t)=>e.indexInAxis-t.indexInAxis));for(let r=0;r<e.tooltips.length;r++)e.tooltips[r].textTop=t,t+=e.tooltips[r].height,n=Math.max(n,e.tooltips[r].width);for(let n=0;n<e.tooltips.length;n++)e.tooltips[n].textTop-=t/2,e.tooltips[n].textTop+=3;e.height=t,e.halfHeight=t/2,e.caretSize=7,e.width=n}}return t().createElement("div",{className:"grapher-tooltip"},t().createElement("svg",null,a.map(((e,r)=>{const{color:i,fixedPosition:o,width:a,transform:s,baseLeft:A,commonLabelProps:h,yTranslation:c,multiplier:g,textLeft:p,textTop:d}=e;return this.props.customTooltip||l?t().createElement("g",{key:r,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:i})):o?t().createElement("g",{key:r,className:"tooltip-item tooltip-item-fixed"},t().createElement("circle",{r:4,fill:i,transform:s}),t().createElement("g",{transform:`translate(${A}, ${c})`},t().createElement("path",{stroke:i,d:`M0,0 V-${n} h${a} V${n} h${-a} V0`}),t().createElement(ae,ie({textLeft:p,textTop:d},h)))):t().createElement("g",{key:r,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:i}),t().createElement("path",{stroke:i,d:`M${4*g},0 L${7*g*2},-7 V-${n} h${g*a} V${n} h${g*-a} V7 L${4*g},0`}),t().createElement(ae,ie({textLeft:p,textTop:d},h)))})),!this.props.customTooltip&&l&&l.map((({tooltips:e,pixelX:n,pixelY:r,halfHeight:i,multiplier:o,color:a,width:s},l)=>t().createElement("g",{key:l,transform:`translate(${n},${r})`,className:"tooltip-item"},t().createElement("path",{stroke:a,d:`M${4*o},0 L${7*o*2},-7 V-${i} h${o*s} V${i} h${o*-s} V7 L${4*o},0`}),e.map(((e,n)=>t().createElement(ae,ie({key:n,textTop:e.textTop,textLeft:e.textLeft},e.commonLabelProps)))))))),this.props.customTooltip&&(l||a).map(((e,n)=>t().createElement("div",{key:n,className:"custom-tooltip-container",style:{top:e.pixelY,left:e.pixelX}},t().createElement(s,e)))))}}se.defaultProps={includeSeriesLabel:!0,includeXLabel:!0,includeYLabel:!0,includeXValue:!0,includeYValue:!0},se.propTypes={mouseX:r().number.isRequired,mouseY:r().number.isRequired,elementHeight:r().number.isRequired,elementWidth:r().number.isRequired,tooltips:r().arrayOf(r().shape({x:r().oneOfType([r().number,r().instanceOf(Date)]),y:r().number,pixelY:r().number,color:r().string,xLabel:r().string,yLabel:r().any,fullYPrecision:r().bool})),axisCount:r().number.isRequired,maxPrecision:r().bool.isRequired,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,...B.TooltipOptionsRaw};class le extends t().PureComponent{constructor(e){super(e),this.setTextRef=this.setTextRef.bind(this)}setTextRef(e){if(this.textRef=e,this.props.contextMenu.showing&&this.textRef){const e=document.createRange(),t=window.getSelection();t.removeAllRanges(),e.selectNodeContents(this.textRef),t.addRange(e),this.textRef.focus()}}formatDateTime(e){const[t,n]=e.split(", "),[r,i,o]=t.split("/"),a=`${r.padStart(2,"0")}/${i.padStart(2,"0")}/${o}`,[s,l]=n.split(" "),[A,h]=s.split(":");return`${a} ${A.padStart(2,"0")}:${h} ${l}`}render(){const{x:e,y:n,showing:r,value:i}=this.props.contextMenu,o={left:e,top:n,width:"150px"};if(!r||!i||"Invalid Date"===i.toLocaleString()||isNaN(e)||isNaN(n))return null;const a=i instanceof Date?this.formatDateTime(i.toLocaleString()):i;return t().createElement("div",{className:"grapher-context-menu",style:o},t().createElement("div",{className:"menu-item"},t().createElement("div",{className:"menu-text",autoFocus:!0,ref:this.setTextRef},a)))}}function Ae(e,t={}){const n=K(e,{useSimpleData:!0,data:t.data});if(!i.includes(n))throw new Error(`Cannot normalize ${n} (expected a simple type)`);const r={tuples:ce,values:he,objects:pe}[n](t.data||e.simpleData||e.data,e,t);if(e.square){const e=[];let n=t.prevY;for(let t of r)void 0!==n&&e.push([t[0],n]),e.push(t),n=t[1];return e}if(e.shiftXBy)for(let n of r)if("string"==typeof n[0]){const r=n[0];n[0]=new Date(new Date(n[0]).valueOf()+e.shiftXBy),isNaN(n[0])&&(n[0]=t.stateController.enumToNumber(r,e))}else n[0]instanceof Date?n[0]=new Date(n[0].valueOf()+e.shiftXBy):"number"==typeof n[0]&&(n[0]+=e.shiftXBy);if(e.xUnixDates)for(let e of r)"number"==typeof e[0]&&(e[0]=new Date(1e3*e[0]));return r}function he(e,t,n){const r=[];for(let i=0;i<e.length;i++){let o=e[i];"string"==typeof o&&(o=n.stateController.enumToNumber(o,t)),"boolean"==typeof o&&(o=+o),r.push([i+(n.valueXStart||0),o])}return r}function ce(e,t,n){return[...e.map((([e,r])=>{if(void 0===r&&(r=null),"string"==typeof e){const r=e;e=new Date(e),isNaN(e)&&(e=n.stateController.enumToNumber(r,t,!0))}return"string"==typeof r&&(r=n.stateController.enumToNumber(r,t)),"boolean"==typeof r&&(r=+r),[e,r]}))]}function ge(e,t,n){const r=e.getUint32(t+2+Uint32Array.BYTES_PER_ELEMENT*n,!0);if(0===r)return null;const i=e.getUint8(r);if(0===i)return e.getFloat64(t+r+1,!0);if(1===i||6===i)return null;if(3===i)return new Date(e.getFloat64(t+r+1,!0));throw new Error(`Binary format type ${i} not supported`)}function pe(e,t,n){if(!t.xKey||"string"!=typeof t.xKey)throw new Error("xKey must be provided in the series");if(!t.yKey||"string"!=typeof t.yKey)throw new Error("yKey must be provided in the series");const r=[];for(let i of e)if(i.buffer instanceof ArrayBuffer){const e=new DataView(i.buffer),n=i.channels[t.xKey],o=i.channels[t.yKey];for(let t of i.offsets)r.push([ge(e,t,n),ge(e,t,o)])}else if(Array.isArray(i[t.yKey]))if(i[t.yKey].length&&!Array.isArray(i[t.yKey][0])&&"object"==typeof i[t.yKey][0])for(let e of i[t.yKey]){let i=e[t.yKey];void 0===i&&(i=null),"string"==typeof i&&(i=n.stateController.enumToNumber(i,t)),"boolean"==typeof i&&(i=+i);let o=e[t.xKey];"string"==typeof o&&(o=new Date(o)),r.push([o,i])}else r.push(...i[t.yKey]);else{let e=i[t.yKey];void 0===e&&(e=null);let o=i[t.xKey];"string"==typeof o&&(o=new Date(o)),"string"==typeof e&&(e=n.stateController.enumToNumber(e,t)),"boolean"==typeof e&&(e=+e),r.push([o,e])}return r}function de(e,{dates:t}){const n=null===e.minX&&null===e.maxX||null===e.minY||null===e.maxY;for(let t of Object.keys(e))"number"!=typeof e[t]&&(e[t]=0);return e.initial=n,e.dates=t,e}function ue(e,{percentile:t=100,percentileAsymmetry:n=0}={}){let r={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null};if(100!==t&&e.length)return function(e,t,{percentile:n=100,percentileAsymmetry:r=0}={}){let i=!1;t.minX=e[0][0],t.minX instanceof Date&&(t.minX=t.minX.valueOf(),i=!0),t.maxX=e[e.length-1][0],t.maxX instanceof Date&&(t.maxX=t.maxX.valueOf(),i=!0);const o=e.filter((([e,t])=>"number"==typeof t)).sort((([e,t],[n,r])=>t-r));if(!o.length)return de(t,{dates:i});const a=Math.min(Math.abs(r),(100-n)/2)*(r<0?-1:1),s=(100-n)/2+a,l=(100-n)/2-a,A=Math.floor((o.length-1)*s/100),h=Math.floor((o.length-1)*(100-l)/100);return t.minY=o[A][1],t.maxY=o[h][1],de(t,{dates:i})}(e,r,{percentile:t,percentileAsymmetry:n});let i=!1,o=null;for(let[t,n]of e){if(t instanceof Date&&(t=t.valueOf(),i=!0),("number"!=typeof r.minX||t<r.minX)&&(r.minX=t),("number"!=typeof r.maxX||t>r.maxX)&&(r.maxX=t),"number"==typeof o&&"number"==typeof t){const e=t-o;("number"!=typeof r.closestSpacing||e<r.closestSpacing)&&(r.closestSpacing=e)}o=t,"number"==typeof n&&(("number"!=typeof r.minY||n<r.minY)&&(r.minY=n),("number"!=typeof r.maxY||n>r.maxY)&&(r.maxY=n))}return de(r,{dates:i})}function me(e){const t={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null,dates:!1,initial:!0};for(let{minX:n,maxX:r,minY:i,maxY:o,dates:a,initial:s,closestSpacing:l}of e)a&&(t.dates=!0),s||(t.initial=!1,(null===t.minX||n<t.minX)&&(t.minX=n),(null===t.maxX||r>t.maxX)&&(t.maxX=r),(null===t.closestSpacing||l<t.closestSpacing)&&(t.closestSpacing=l),(null===t.minY||i<t.minY)&&(t.minY=i),(null===t.maxY||o>t.maxY)&&(t.maxY=o));return null===t.minX&&(t.minX=0),null===t.maxX&&(t.maxX=0),null===t.closestSpacing&&(t.closestSpacing=1),null===t.minY&&(t.minY=0),null===t.maxY&&(t.maxY=0),t}function Ce(e,{expandYWith:t=[],extendXForNBars:n=0}){const r=Object.assign({},e);for(let e of t)null!=e&&(("number"!=typeof r.minY||e<r.minY)&&(r.minY=e),("number"!=typeof r.maxY||e>r.maxY)&&(r.maxY=e));r.unscaledMinY=r.minY,r.unscaledMaxY=r.maxY;const i=r.maxY-r.minY,o=r.minY+i/2;if(r.minY=o-1.05*i/2,r.maxY=o+1.05*i/2,r.minY===r.maxY&&null!==r.minY&&(r.minY>0?(r.minY*=.95,r.maxY*=1.05):r.minY<0?(r.minY*=1.05,r.maxY*=.95):(r.minY-=1,r.maxY+=1)),n&&r.minX!==r.maxX&&null!==r.minX&&null!==r.maxX){const e=(r.maxX-r.minX)/n;r.minX-=e/2,r.maxX+=e/2}return r}function xe(e,t,n={},r=0,i=void 0){if(void 0===i&&(i=e.length-1),0===e.length)return n.returnIndex?-1:[null,null];const o=Math.floor((r+i)/2);if(t===e[o][0]||e[o][0]instanceof Date&&e[o][0].valueOf()===t)return n.returnIndex?o:e[o];if(r===i)return e[r][0]<t&&"before"===n.searchType||e[r][0]>t&&"after"===n.searchType?n.returnIndex?r:e[r]:n.returnIndex?-1:[null,null];if(i-1===r){let o;return o="before"===n.searchType?r:"after"===n.searchType||Math.abs(e[r][0]-t)>Math.abs(e[i][0]-t)?i:r,n.returnIndex?o:e[o]}return t>e[o][0]?xe(e,t,n,o,i):t<e[o][0]?xe(e,t,n,r,o):void 0}function be({data:e,swap:t,minX:n,maxX:r,ignoreDiscontinuities:i,square:o}){if(!e.length||e.length&&n>e[e.length-1][0]||e.length&&r<e[0][0])return{data:[[n,null],[r,null]],firstAdded:!0,lastAdded:!0};let a,s=xe(e,n,{searchType:"before",returnIndex:!0})||0,l=xe(e,r,{searchType:"after",returnIndex:!0})||0;for(-1===l&&(l=0);s>=0&&e[s][0]>=n;)s--;for(;l<e.length&&e[l][0]<=r;)l++;let A=!1,h=!1,c=!1,g=s,p=l;if(i){for(;g>=0&&null===e[g][1];)g--;for(;p<e.length&&null===e[p][1];)p++}if(t){if(a=t.data,t.lastAdded&&a.pop(),n===t.minX&&(A=!0),s!==t.beforeIndex){A=!1,t.firstAdded&&a.shift();let r=t.beforeIndex;for(;r>=0&&a.length&&a[0][0]>=n;)i&&!e[r][1]&&0!==e[r][1]||a.unshift(e[r]),r--;for(;r<e.length&&a.length&&a[0][0]<n;)a.shift(),r++}if(i&&!t.ignoreDiscontinuities&&(a=a.filter((([e,t])=>null!=t))),s===t.beforeIndex&&t.firstAdded){h=!0;let t=s+1;if(i)for(;t<e.length&&null===e[t][1];)t++;-1===g&&a.length?a[0]=[n,null]:o&&a.length?a[0]=[n,e[g][1]]:a.length&&(a[0]=[n,fe(e,g,t,n)]),e[s+1][0]===a[0][0]&&e[s+1][1]===a[0][1]&&(h=!1)}let c=t.afterIndex;if(t.ignoreDiscontinuities&&!i){let t=s+1,n=0;for(h&&n++;n<=a.length&&t<e.length&&t<l;)e[t][0]<=r&&null===e[t][1]&&(!a[n]||a[n][0]!==e[t][0]||a[n][1]!==e[t][1])&&(a.splice(n,0,e[t]),t>=c&&(c=t+1)),t++,n++}let p=c||0;for(;p<e.length&&e[p][0]<=r;)e[p][0]>=n&&(i&&!e[p][1]&&0!==e[p][1]||a.push(e[p])),p++;for(;a.length&&a[a.length-1][0]>r;)a.pop()}else a=e.slice(s+1,l),i&&(a=a.filter((([e,t])=>null!=t)));if(a.length||(a=o?g<0?[[n,null],[r,null]]:[[n,e[g][1]],[r,e[g][1]]]:[[n,fe(e,g,p,n)],[r,fe(e,g,p,r)]],h=!0,c=!0),!A){let t=s+1;if(i)for(;t<e.length&&null===e[t][1];)t++;a.length&&a[0][0]>n&&(h=!0,-1===g?a.unshift([n,null]):o?a.unshift([n,e[g][1]]):a.unshift([n,fe(e,g,t,n)]))}if(a.length&&a[a.length-1][0]<r){c=!0;let t=l-1;if(i)for(;t>=0&&null===e[t][1];)t--;p===e.length?a.push([r,null]):o?a.push([r,a[a.length-1][1]]):a.push([r,fe(e,t,p,r)])}if(1===a.length){let t,i;o?(t=g<0?[n,null]:[n,e[g][1]],i=[r,a[0][1]]):(t=[n,fe(e,g,s+1,n)],i=[r,fe(e,l-1,p,r)]),a.unshift(t),a.push(i),h=!0,c=!0}return{data:a,minX:n,maxX:r,beforeIndex:s,afterIndex:l,firstAdded:h,lastAdded:c,ignoreDiscontinuities:i}}function fe(e,t,n,r){if(t<0||n<0)return null;if(t>=e.length||n>=e.length)return null;if(t===n)return e[t][1];const[i,o]=e[t],[a,s]=e[n];if(r===i&&null!==o)return o;if(r===a&&null!==s)return s;if(null===o||null===s)return null;const l=(r-i)/(a-i);return l<0||l>1?null:l*(s-o)+o}function ye({minY:e,maxY:t,scale:n}){return"log"===n&&(t=Math.log10(t),e=e<=0?t>0?-t:2*t:Math.log10(e)),{minY:e,maxY:t}}let Be;le.propTypes={contextMenu:r().shape({x:r().number,y:r().number,showing:r().bool,value:r().oneOfType([r().instanceOf(Date),r().number,r().object])}).isRequired};const _e=o.e(744).then(o.bind(o,744)).then((e=>e.default().then((()=>{Be=e}))));function Ee(){return Be}function we({data:e,swap:t,renderWidth:n,renderHeight:r,minX:i,maxX:o,minY:a,maxY:s,scale:l,dataChanged:A}){t&&t.yValues.length!==n&&(t=null);const h=t&&t.nullMask||new Uint8Array(n);h.fill(0);const c=new Float64Array(n),g=new Float64Array(n),p=new Float64Array(n),d=ye({minY:a,maxY:s,scale:l}),u={data:e,renderWidth:n,renderHeight:r,minX:i,maxX:o,minY:a=d.minY,maxY:s=d.maxY,scale:l};let m,C;if(Ee()){let n=0;const r=t&&t.dataNullMask&&t.dataF64,a=!A&&r&&t.minX===i&&t.maxX<=o&&t.length<=e.length;if(!a||t.dataNullMask.length<e.length){const n=1.25;m=new Float64Array(Math.floor(2*e.length*n)),C=new Uint8Array(Math.floor(e.length*n)),a&&(C.set(t.dataNullMask),m.set(t.dataF64))}else m=t.dataF64,C=t.dataNullMask;a&&(n=Math.max(t.length-1,0));for(let t=n;t<e.length;t++)m[2*t]=e[t][0],m[2*t+1]=e[t][1],null===e[t][1]?C[t]=1:C[t]=0;Ee().selected_space_to_render_space(e.length,m,C,u,h,c,g,p)}else!function({data:e,renderWidth:t,renderHeight:n,minX:r,maxX:i,minY:o,maxY:a,scale:s},{nullMask:l,yValues:A,minYValues:h,maxYValues:c}){let g=0,p=g-1;for(let d=0;d<t;d++){const u=d/(t-1)*(i-r)+r;let m=null,C=null;for(g>0&&g<=e.length&&null===e[g-1][1]&&g--,g<e.length-2&&e[g+1][0]<u&&g++;g<e.length-2&&e[g+1][0]<u;g++){const t=e[g][1];null!==t&&((null===m||t<m)&&(m=t),(null===C||t>C)&&(C=t))}if(h[d]=null===m?0:n*(1-(("log"===s?Math.log10(m):m)-o)/(a-o)),c[d]=null===C?0:n*(1-(("log"===s?Math.log10(C):C)-o)/(a-o)),g>=e.length-1||null===e[g][1]||null===e[g+1][1]){const t=g>=e.length-1?null:e[g][1];l[d]=null===t|(null===m)<<1|(null===C)<<2,A[d]=null===t?0:n*(1-(("log"===s?Math.log10(t):t)-o)/(a-o)),g++;continue}const[x,b]=e[g],[f,y]=e[g+1];let B=(u-x)/(f-x)*(y-b)+b;p!==g&&(B=b),A[d]=null===B?0:n*(1-(("log"===s?Math.log10(B):B)-o)/(a-o)),l[d]=null===B|(null===m)<<1|(null===C)<<2,p=g}}(u,{nullMask:h,yValues:c,minYValues:g,maxYValues:p});return{nullMask:h,yValues:c,minYValues:g,maxYValues:p,dataF64:m,dataNullMask:C,minX:i,maxX:o,length:e.length}}function ve(e,{series:t,inDataSpace:n}){const r=[];let i=0;for(let o of e){const e=ke(o,t);if(t.yKey&&Array.isArray(e)){for(let e of o[t.yKey]){if(t.ignoreDiscontinuities&&"number"!=typeof e[t.yKey]&&!Array.isArray(e))continue;const o=n[i++][0];t.square&&r.length>0&&r.push([o,r[r.length-1][1]]),r.push([o,e])}continue}if(t.ignoreDiscontinuities&&null==e)continue;const a=n[i++][0];t.square&&r.length>0&&r.push([a,r[r.length-1][1]]),r.push([a,o])}return r.length!==n.length&&console.warn("Flattening didn't give the same length as it has in data space"),r}function ke(e,t){return t.yKey?e[t.yKey]:Array.isArray(e)?1===e.length?e[0]:e[1]:e}function Se(e,t){return t.xKey?e[t.xKey]:Array.isArray(e)?e[0]:e}function De({mouseX:e,mouseY:t,sizing:n},r){const{x:i,y:o}=r,a=r.series.axis.scale,s=r.series.axis.currentBounds,{minY:l,maxY:A}=ye({...s,scale:a}),h=(i-s.minX)/(s.maxX-s.minX)*n.elementWidth,c=(1-(("log"===a?Math.log10(o):o)-l)/(A-l))*n.elementHeight,g=Math.sqrt((h-e)**2+(c-t)**2),p=Math.abs(h-e);Object.assign(r,{pixelWidth:n.elementWidth,pixelX:h,pixelY:isNaN(c)?n.elementHeight/2:c,xDistance:p,distance:g})}const Ye={all:()=>{},lastMinute:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-6e4,e.minX)}},last10Minutes:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-6e5,e.minX)}},lastHour:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-36e5,e.minX)}},lastDay:e=>{if(e.dates)return{minX:Math.max(new Date(e.maxX).valueOf()-864e5,e.minX)}}};function Xe({data:e,swap:t,minX:n,maxX:r,renderWidth:i,dataChanged:o}){const a=2*i;let s;if(!o&&t&&t.minX===n&&t.maxX<=r&&t.length<=e.length?(s=t.data,e.length>t.length&&(e.length>0&&s.length>0&&(s[s.length-1]=e[t.length-1]),s=s.concat(e.slice(t.length)))):s=[...e],s.length/a<4)return{data:s,minX:n,maxX:r,length:e.length};const l=[],A=(r-n)/a;let h=null,c=null,g=0;e.length&&l.push(e[0]);for(let e of s){const[t,r]=e;if(null===r)continue;const i=Math.floor((t-n)/A);i!==g&&(h&&c&&(h===c?l[l.length-1]!==h&&l.push(h):h[0]<c[0]?l.push(c,h):l.push(h,c)),h=null,c=null,g=i),(!h||r<h[1])&&(h=e),(!c||r>c[1])&&(c=e)}return h&&c&&(h===c?l.push(h):h[0]<c[0]?l.push(c,h):l.push(h,c)),e.length>=2&&e[e.length-1]!==h&&e[e.length-1]!==c&&l.push(e[e.length-1]),{data:l,minX:n,maxX:r,length:e.length}}function Re(e,t){let n=e.name||e.yKey;return n||(n=t.toString()),n}function Te({data:e,background:t,minX:n,maxX:r}){if(!t)return null;const i=[];for(let[e,n]of Object.entries(t)){if("object"==typeof n){if("function"!=typeof n.evaluator)throw new Error("Invalid background declaration: "+e+" (evaluator must be a function)");i.push(Object.assign({key:e,comparator:"custom",comparedAgainst:null},n));continue}if("null"===e){i.push({evaluator:e=>null===e&&n,color:n,key:e,comparator:"=",comparedAgainst:null});continue}const[t,r]=e.split(" ");if(!t||!r||isNaN(parseFloat(r)))throw new Error("Invalid background declaration: "+e);const o=parseFloat(r);let a;if("="===t)a=e=>"number"==typeof e&&e===o&&n;else if("<"===t)a=e=>"number"==typeof e&&e<o&&n;else if(">"===t)a=e=>"number"==typeof e&&e>o&&n;else if("<="===t)a=e=>"number"==typeof e&&e<=o&&n;else{if(">="!==t)throw new Error("Invalid background declaration: "+e);a=e=>"number"==typeof e&&e>=o&&n}i.push({evaluator:a,color:n,key:e,comparator:t,comparedAgainst:o})}const o=[];let a=null;for(let t=0;t<e.length;t++){let[s,l]=e[t];s instanceof Date&&(s=s.valueOf());for(let A of a?[a.condition,...i]:i){const i=A.evaluator(l);if(a){if(a.color===i)break;let h=s;if(t>0){let[n,r]=e[t-1];n instanceof Date&&(n=n.valueOf()),h=null===a.condition.comparedAgainst?s:null===l?n:n+(A.comparedAgainst-r)/(l-r)*(s-n)}o.push({...a,maxX:h,maxXt:(h-n)/(r-n)}),a=null}if(i){let o=s;if(t>0){let[n,r]=e[t-1];n instanceof Date&&(n=n.valueOf()),o=null===A.comparedAgainst?n:null===r?s:n+(A.comparedAgainst-r)/(l-r)*(s-n)}a={minX:o,minXt:(o-n)/(r-n),color:i,condition:A};break}}}return a&&o.push({...a,maxX:e[e.length-1][0],maxXt:(e[e.length-1][0]-n)/(r-n)}),{data:o}}class Fe extends O{constructor({defaultBoundsCalculator:e,customBoundsSelectors:t,requireWASM:n,defaultShowIndividualPoints:r,defaultShowSidebar:i,defaultShowAnnotations:o,defaultShowOptions:a,syncPool:s,grapherID:l,sharedDataCache:A,sharedSubscriptions:h,fullscreen:c}){super(),this._requireWASM=n,n&&_e.then((()=>{this._markDirty()})),this._series=[],this._seriesFromOriginalSeries=new Map,this._axes=[{series:[],scale:"linear",side:"left",axisIndex:0}],this._highlightedSeries=null,this._showIndividualPoints=r||!1,this._autoscaleY=!0,this._percentile=100,this._percentileAsymmetry=0,this._showingOptions=a,this._maxPrecision=!1,this._showingSidebar=i||!1,this._showingAnnotations=o||!1,this._grapherID=l,this._fullscreen=c||!1,this._alwaysTooltipped=new Set,this._tooltipState={mousePresent:!1,mouseX:0,mouseY:0,elementWidth:0,elementHeight:0,tooltips:[]},this._contextMenuPosition={x:0,y:0,showing:!1,value:null},this._savedTooltips=[],this._draggingY=!1,this._annotations=[],this._annotationsState={elementWidth:0,annotations:[]},this._enumMap={},this._hasXEnum=!1,this._timingBuffer=[],this._timingIndex=0,this._timingFrameCount=0,this._modifiedSeries=new Set,this._deferredEmissions={},this._deferredPriorityEmissions={},this.primaryRenderer=null,this.rangeGraphRenderer=null,this._boundsCalculator=function(e,t){if(Ye[e])return Ye[e];for(let{label:n,calculator:r}of t)if(e===n)return r;return Ye.all}(e,t),this._boundsHistory=[this._boundsCalculator],this._boundsIndex=0,this._dataCache=A||new Map,this._subscriptions=h||new Map,this._subscriptionsShared=!!h,this._observablesToSeries=new Map,this._generators=new Set,this._generatorsToSeries=new Map,this._generatorCallArgs=new Map,this._seriesChangedFromPromises=new Set,this._syncPool=s,this._syncPool&&this._syncPool.add(this),this._onDataChange()}dispose(){if(this.emit("dispose",this),this.clearListeners(),!this._subscriptionsShared){for(let e of this._subscriptions.values())e.unsubscribe();this._subscriptions.clear()}for(let e of this._series)this._removeSeries(e);this._syncPool&&this._syncPool.remove(this),this.disposed=!0}setSeries(e){const t=this._series.filter((e=>e.userCreated)),n=this._series.filter((e=>!e.userCreated));if(e.length===n.length){let t=!1;for(let n=0;n<e.length;n++)if(e[n]!==this._series[n].originalSeries){t=!0;break}if(!t)return}else this._mustResize=this._mustResize||this._fullscreen;const r=new Set(e);for(let e of n)r.has(e.originalSeries)||this._removeSeries(e);this._series.splice(0);for(let t=0;t<e.length;t++){const n=e[t];let r=this._seriesFromOriginalSeries.get(n);r||(r={...n,originalSeries:n},this._seriesFromOriginalSeries.set(n,r),r.defaultAlwaysTooltipped&&(this._alwaysTooltipped.add(r),this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped))),r.index=t,this._series.push(r),this._assignAxisTo(r),r.hidden&&this._hideSeries(r)}for(let n=0;n<t.length;n++){const r=t[n];r.index=n+e.length,this._series.push(r)}this.deferredEmit("series_changed",this._series),this._dataChanged=!0,this._markDirty()}_markDirty(){if(this._frameRequested)return;if(this._requireWASM&&!Ee)return;const e=performance.now();this._frameRequested=!0,requestAnimationFrame((()=>{if(this.disposed)return;const t=performance.now(),n=performance.now();this._dataChanged?(this._onDataChange(),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0):this._modifiedSeries.size?(this._onDataAdd(this._modifiedSeries),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0):(this._primarySizeChanged&&(this._calculatePrimarySizeDependents(),this._mustRerender=!0),this._rangeGraphSizeChanged&&(this._calculateRangeGraphSizeDependents(),this._mustRerender=!0));const r=performance.now(),i=performance.now();this._mustRerender&&this._render();const o=performance.now(),a=performance.now();this._mustCallGenerators&&this._callGenerators();const s=performance.now(),l=performance.now();this._tooltipsChanged&&this._recalculateTooltips();const A=performance.now(),h=performance.now();this._contextMenuChanged&&this._recalculateContextMenu();const c=performance.now(),g=performance.now();this._annotationsChanged&&this._recalculateAnnotations();const p=performance.now();this._mustResize&&(this.primaryRenderer.resizeDebounced(),this.rangeGraphRenderer&&this.rangeGraphRenderer.resizeDebounced()),this._frameRequested=!1,this._mustRerender=!1,this._dataChanged=!1,this._primarySizeChanged=!1,this._rangeGraphSizeChanged=!1,this._modifiedSeries.clear(),this._seriesChangedFromPromises.clear(),this._tooltipsChanged=!1,this._contextMenuChanged=!1,this._annotationsChanged=!1,this._mustCallGenerators=!1,this._mustResize=!1;const d=performance.now();for(let e of[...Object.values(this._deferredPriorityEmissions),...Object.values(this._deferredEmissions)])this.emit(...e);const u=performance.now();this._deferredEmissions={},this._deferredPriorityEmissions={};const m=performance.now(),C={frameExecution:m-t,frameRequestAndExecution:m-e,generators:s-a,dataProcessing:r-n,renderPipeline:o-i,tooltips:A-l,contextMenu:c-h,annotations:p-g,callbacks:u-d};this.lastLoopTime=C,this._timingFrameCount&&(this._timingBuffer.length<this._timingFrameCount?this._timingBuffer.push(C):this._timingBuffer[this._timingIndex%this._timingFrameCount]=C,this._timingIndex++),this.emit("render_time",m-t,C)}))}deferredEmit(...e){this._deferredEmissions[e[0]]=e}deferredPriorityEmit(...e){this._deferredPriorityEmissions[e[0]]=e}_seriesToSimpleData(e){const t=K(e);if(i.includes(t))return e.data;let n=this._dataCache.get(e.data);if(n&&this._seriesChangedFromPromises.has(e.data))return n;if(n||(n=[],this._dataCache.set(e.data,n),e.simpleData=n),"object_observable"===t||"tuple_observable"===t){let t=this._observablesToSeries.get(e.data);if(t){const r=t.values().next().value;if(n=r.simpleData,!n)throw new Error(`Cannot find simpleData in ${r.name||r.yKey||r.data}`);this._dataCache.set(e.data,n),e.simpleData=n}else t=new Set,e.simpleData=n,this._observablesToSeries.set(e.data,t);t.add(e),this._listenToObservableData({observable:e.data,currentData:n})}return"generator"===t&&(this._generatorsToSeries.has(e.data)||this._generatorsToSeries.set(e.data,new Set),this._generatorsToSeries.get(e.data).add(e),this._generators.has(e.data)||(this._generators.add(e.data),this._callGenerator(e.data))),n}_listenToPromise(e,t){t.then((t=>{this._dataCache.set(e.data,t),e.simpleData=t,this._seriesChangedFromPromises.add(e.data),this._dataChanged=!0,this._markDirty()}))}_listenToObservableData({observable:e,currentData:t}){if(this._subscriptions.has(e))return;this._subscriptions.set(e,!0);const n=e.observe((n=>{if(Array.isArray(n))for(let e of n)t.push(e);else t.push(n);this.emit("observable_modified",e),this.markObservableModified(e)}));this._subscriptions.set(e,n)}markObservableModified(e){if(this._observablesToSeries.has(e)){for(let t of this._observablesToSeries.get(e))this._modifiedSeries.add(t);this._markDirty()}}_unsubscribeFromStaleSeries(){const e=new Set(this._series);for(let[t,n]of this._observablesToSeries){let r=!1;for(let t of n)if(e.has(t)){r=!0;break}r||(this._subscriptions.get(t).unsubscribe(),this._subscriptions.delete(t),this._observablesToSeries.delete(t))}for(let[t,n]of this._generatorsToSeries){let r=!1;for(let t of n)if(e.has(t)){r=!0;break}r||(this._generatorsToSeries.delete(t),this._generators.delete(t),this._generatorCallArgs.delete(t))}}async _callGenerator(e){const t={minX:this._selection.minX,maxX:this._selection.maxX,sizing:this.primaryRenderer.sizing};if(r=t,void 0===(n=this._generatorCallArgs.get(e))||void 0===r?n===r:n.minX===r.minX&&n.maxX===r.maxX&&n.sizing.elementWidth===r.sizing.elementWidth&&n.sizing.renderWidth===r.sizing.renderWidth)return;var n,r;this._generatorCallArgs.set(e,t);const i=await Promise.resolve(e(t));if(i&&this._generatorsToSeries.has(e))if(this._dataChanged=!0,this._markDirty(),"function"==typeof i.observe){const t=[];this._dataCache.set(e,t);for(let n of this._generatorsToSeries.get(e))n.simpleData=t;for(let t of this._generatorsToSeries.get(e))this._observablesToSeries.has(i)||this._observablesToSeries.set(i,new Set),this._observablesToSeries.get(i).add(t);this._listenToObservableData({observable:i,currentData:t})}else{this._dataCache.set(e,i);for(let t of this._generatorsToSeries.get(e))t.simpleData=i}}_callGenerators(){for(let e of this._generators)this._callGenerator(e)}_recalculateTooltips(){this.primaryRenderer&&this.primaryRenderer.sizing&&(this._tooltipState=function({mousePresent:e,mouseX:t,mouseY:n,sizing:r,series:i,alwaysTooltipped:o,savedTooltips:a,allTooltipped:s,closestSpacing:l}){a=a.filter((e=>e.series.axis));for(let e of a)De({mouseX:t,mouseY:n,sizing:r},e);if(!e)return{mouseX:t,mouseY:n,elementWidth:r.elementWidth,elementHeight:r.elementHeight,tooltips:[...a]};const A=[];let h=1/0;for(let e=0;e<i.length;e++){const a=i[e];if(a.hidden)continue;const c=a.axis,g=c.scale,p=c.currentBounds,{minY:d,maxY:u}=ye({...p,scale:g}),m=t/r.elementWidth*(p.maxX-p.minX)+p.minX;let C=a.inDataSpace;a.ignoreDiscontinuities&&(C=C.filter((e=>"number"==typeof e[1])));const x=xe(C,m,{returnIndex:!0}),b=C[x];if(!b)continue;const[f,y]=b;if(null===f)continue;let B=(f-p.minX)/(p.maxX-p.minX)*r.elementWidth;const _=(1-(("log"===g?Math.log10(y):y)-d)/(u-d))*r.elementHeight;if(_>r.elementHeight||_<0)continue;const E=o.has(a)||s;let v=20,k=20,S=20;if("bar"===a.rendering){const e=a.axis.series.indexOf(a),t=a.axis.series.length,{totalBarWidth:n,barWidth:i}=H({closestSpacing:l,bounds:p,sizing:r,axisSeriesCount:t});B-=n/2/r.pixelRatio,B+=i*(e+.5)/r.pixelRatio,v=i/2/r.pixelRatio,k=100,S=v+k}const D=Math.abs(B-t),Y=Math.abs(_-n),X=Math.sqrt(D**2+(_-n)**2);if(D>v||!E&&Y>k||!E&&X>S)continue;let R,T;const F=a.simpleData||a.data,M=F.length&&!!a.hasEnum;if(a.xLabel||a.yLabel||M){let e;e=F.length===C.length?F[x]:ve(F,{series:a,inDataSpace:C})[x][1],a.xLabel?R=e[a.xLabel]:a.hasXEnum&&(R=Se(e,a)),a.yLabel?T=e[a.yLabel]:M&&(T=ke(e,a))}X<h&&(h=X);let P=w(a.color,e,a.multigrapherSeriesIndex);y<0&&a.negativeColor?P=a.negativeColor:0===y&&a.zeroLineColor&&(P=a.zeroLineColor),A.push({pixelWidth:r.elementWidth,pixelX:B,pixelY:isNaN(_)?r.elementHeight/2:_,x:f,y,color:P,distance:X,xDistance:D,index:e,series:a,xLabel:R,yLabel:T,fullYPrecision:a.fullYPrecision,ignoreYDistance:E})}const c=A.filter((({distance:e,ignoreYDistance:t})=>e===h||t)).sort(((e,t)=>t.distance-e.distance));return{mousePresent:e,mouseX:t,mouseY:n,elementWidth:r.elementWidth,elementHeight:r.elementHeight,unsavedTooltipsCount:c.length,tooltips:[...a,...c]}}({mousePresent:this._tooltipState.mousePresent,mouseX:this._tooltipState.mouseX,mouseY:this._tooltipState.mouseY,sizing:this.primaryRenderer.sizing,series:this._series,alwaysTooltipped:this._alwaysTooltipped,savedTooltips:this._savedTooltips,allTooltipped:this._tooltipAllNext,closestSpacing:this._globalBounds.closestSpacing}),this._tooltipAllNext=!1,this.deferredEmit("tooltip_state_changed",this._tooltipState,this._tooltipStateArg),this._tooltipStateArg=null)}_recalculateContextMenu(){if(!this.primaryRenderer||!this.primaryRenderer.sizing)return;const e=this.primaryRenderer.boundingRect,t=this.primaryRenderer.sizing;let n=null,r=null;for(let i of this._series){const o=i.axis.currentBounds;r=this._contextMenuPosition.x-e.left,this._contextMenuPosition.x>2*(e.right-t.elementWidth)&&(r-=130),n="timestamp"===i.xKey||"time"===i.xKey||"date"===i.xKey?new Date((this._contextMenuPosition.x-e.left)/t.elementWidth*(o.maxX-o.minX)+o.minX):(this._contextMenuPosition.x-e.left)/t.elementWidth*(o.maxX-o.minX)+o.minX}this._contextMenuPosition={x:r,y:this._contextMenuPosition.y-e.top,showing:this._contextMenuPosition.showing,value:n},this.deferredEmit("context_menu_position_changed",this._contextMenuPosition)}_recalculateAnnotations(){this.primaryRenderer&&this.primaryRenderer.sizing&&(this._annotationsState=function({annotations:e,series:t,sizing:n,selection:r}){const i=new Set(t.map(((e,t)=>({name:Re(e,t),hidden:e.hidden}))).filter((({hidden:e})=>!e)).map((({name:e})=>e))),{elementWidth:o}=n,{minX:a,maxX:s}=r;return{annotations:e.filter((e=>{if(!e.series)return!0;for(let t of e.series)if(i.has(t))return!0;return!1})).map((e=>{let t=e.x;"string"==typeof t?t=new Date(t).valueOf():t instanceof Date&&(t=t.valueOf());let n=e.xEnd||t;"string"==typeof n?n=new Date(n).valueOf():n instanceof Date&&(n=n.valueOf());const r=Math.min(t,n),i=Math.max(t,n),l=(r-a)/(s-a)*o,A=(i-a)/(s-a)*o,h=Math.max(A-l,1);return{...e,pixelX:l,width:h}})),elementWidth:o}}({annotations:this._annotations,series:this._series,sizing:this.primaryRenderer.sizing,selection:this._selection}),this.deferredEmit("annotations_changed",this._annotationsState))}_onDataChange(){this._expandYWith=[];const e=[];for(let t of this._series){if(t.hidden)continue;const n=this._seriesToSimpleData(t);t.inDataSpace=Ae({...t,data:n},{stateController:this}),t.simpleDataSliceStart=n.length,t.dataBounds=ue(t.inDataSpace),"bar"===t.rendering&&(t.dataBounds=Ce(t.dataBounds,{extendXForNBars:t.inDataSpace.length,expandYWith:t.expandYWith})),e.push(t.dataBounds),t.expandYWith&&this._expandYWith.push(t.expandYWith)}this._unsubscribeFromStaleSeries(),this._dataBounds=me(e),this._recalculateSelection({disableSwap:!0});for(let e of this._series)e.hidden||(e.selectedBounds=ue(e.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.hasAreaBottom&&(e.selectedBoundsAreaTop=e.selectedBounds,e.selectedBoundsAreaBottom=ue(e.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.selectedBounds=me([e.selectedBoundsAreaTop,e.selectedBoundsAreaBottom])));this._recalculateAxisBounds();for(let e of this._series)e.hidden||(this._calculatePrimarySizeDependents(e,{dataChanged:!0}),this._calculateRangeGraphSizeDependents(e,{dataChanged:!0}))}_onDataAdd(e){const t=new Map,n=new Set,r=new Set;for(let t of e)r.add(t);for(let r of e){if(n.add(r.axis),!r.inDataSpace)throw new Error("inDataSpace must be present for onDataAdd to be called");const e=this._seriesToSimpleData(r);let i;r.inDataSpace.length&&(i=r.inDataSpace[r.inDataSpace.length-1][1]);const o=Ae(r,{data:e.slice(r.simpleDataSliceStart||0),valueXStart:r.inDataSpace.length,prevY:i,stateController:this});if(t.set(r,o),r.simpleDataSliceStart=e.length,o.length<32)r.inDataSpace.push(...o);else for(let e of o)r.inDataSpace.push(e);let a=ue(o);"bar"===r.rendering&&(a=Ce(a,{extendXForNBars:r.inDataSpace.length,expandYWith:r.expandYWith})),r.dataBounds=me([r.dataBounds,a]),this._dataBounds=me([this._dataBounds,a]),r.newPointCount=o.length,r.newDataBounds=a}const i=this._selection;this._recalculateSelection();for(let n of e){if(!n.inSelectedSpace.data.length){n.selectedBounds=ue(n.inSelectedSpace.data);continue}const e=n.inSelectedSpace.data[0][0],r=n.inSelectedSpace.data[n.inSelectedSpace.data.length-1][0];if(!(i.minX>=e&&i.maxX<=r)||100!==this._percentile){n.selectedBounds=ue(n.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.hasAreaBottom&&(n.selectedBoundsAreaTop=n.selectedBounds,n.selectedBoundsAreaBottom=ue(n.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.selectedBounds=me([n.selectedBoundsAreaTop,n.selectedBoundsAreaBottom]));continue}const o=t.get(n).filter((e=>e[0]>=this._selection.minX&&e[0]<=this._selection.maxX));n.newSelectedData=o,n.selectedBounds=me([n.selectedBounds,ue(o)])}this._recalculateAxisBounds(),this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)));for(let e of n)for(let t of e.series)this._calculatePrimarySizeDependents(t),this._calculateRangeGraphSizeDependents(t)}_recalculateAxisBounds(){for(let e of this._axes){if(this._selection.fixedY||!this._autoscaleY){e.targetBounds=this._selection,e.targetBounds.byAxis&&(e.targetBounds=e.targetBounds.byAxis[e.axisIndex]),e.currentBounds=e.targetBounds;continue}const t=[],n=[];for(let r of e.series)t.push(r.selectedBounds),r.expandYWith&&n.push(...r.expandYWith),"bar"===r.rendering&&n.push(r.dataBounds.minY,r.dataBounds.maxY);e.selectedDataBounds=me(t),e.targetBounds=e.currentBounds=Ce(e.selectedDataBounds,{expandYWith:n})}this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)))}_recalculateSelection({disableSwap:e=!1}={}){this._globalBounds=Ce(this._dataBounds,{expandYWith:this._expandYWith.flat()}),this.deferredPriorityEmit("global_bounds_changed",this._globalBounds),this._selection=function(e,t){const n=Object.assign({},e,t(e));return n.maxX instanceof Date&&(n.maxX=n.maxX.valueOf()),n.minX instanceof Date&&(n.minX=n.minX.valueOf()),n.maxX<n.minX&&(n.maxX=n.minX),n.minX<e.minX&&(n.minX=e.minX),n.maxX>e.maxX&&(n.maxX=e.maxX),n}(this._globalBounds,this._boundsCalculator),this.deferredPriorityEmit("selection_changed",this._selection);for(let t of this._series)t.hidden||(t.inSelectedSpace=be({data:t.hasAreaBottom?t.inDataSpace.filter(((e,t)=>t%2==1)):t.inDataSpace,swap:e?null:t.inSelectedSpace,minX:this._selection.minX,maxX:this._selection.maxX,ignoreDiscontinuities:t.ignoreDiscontinuities,square:t.square}),t.hasAreaBottom&&(t.inSelectedSpaceAreaBottom=be({data:t.inDataSpace.filter(((e,t)=>t%2==0)),swap:e?null:t.inSelectedSpaceAreaBottom,minX:this._selection.minX,maxX:this._selection.maxX,ignoreDiscontinuities:t.ignoreDiscontinuities,square:t.square})))}_render(){if(this.primaryRenderer&&this.primaryRenderer.sizing){this.primaryRenderer.clear(),this.rangeGraphRenderer&&this.rangeGraphRenderer.clear();for(let e of this._series){if(e.hidden)continue;const t=e.shadowColor||{day:"white",export:"transparent",night:"black"}[this._theme]||"black",n=void 0;this.primaryRenderer.renderBackground(e.inBackgroundSpacePrimary),this.primaryRenderer.render(e,e.inRenderSpacePrimary,{highlighted:this._highlightedSeries===e.index,showIndividualPoints:this._showIndividualPoints,shadowColor:t,shadowBlur:n,defaultLineWidth:this._defaultLineWidth,globalBounds:this._globalBounds,inRenderSpaceAreaBottom:e.inRenderSpacePrimaryAreaBottom}),this.rangeGraphRenderer&&this.rangeGraphRenderer.sizing&&this.rangeGraphRenderer.render(e,e.inRenderSpaceRangeGraph,{shadowColor:"transparent",shadowBlur:0,width:1,bounds:this._globalBounds,globalBounds:this._globalBounds,inRenderSpaceAreaBottom:e.inRenderSpaceRangeGraphAreaBottom})}}}_calculatePrimarySizeDependents(e,{dataChanged:t=!1}={}){if(!this.primaryRenderer||!this.primaryRenderer.sizing)return;if(!e){for(let e of this._series)this._calculatePrimarySizeDependents(e);return}if(!this._series.includes(e))throw new Error("Series no longer exists");if(e.hidden)return;const{currentBounds:n,scale:r}=e.axis,i=Math.ceil(this.primaryRenderer.sizing.renderWidth/2),o=Math.ceil(this.primaryRenderer.sizing.renderHeight),a={minX:n.minX,maxX:n.maxX,renderWidth:i,dataChanged:t};e.inCondensedSelectedSpacePrimary=Xe({data:e.inSelectedSpace.data,swap:e.inCondensedSelectedSpacePrimary,...a});const s={minX:n.minX,maxX:n.maxX,minY:n.minY,maxY:n.maxY,renderWidth:i,renderHeight:o,scale:r,dataChanged:t};e.inRenderSpacePrimary=we({data:e.inCondensedSelectedSpacePrimary.data,swap:e.inRenderSpacePrimary,...s}),e.inBackgroundSpacePrimary=Te({data:e.inCondensedSelectedSpacePrimary.data,background:e.background,swap:e.inBackgroundSpacePrimary,minX:n.minX,maxX:n.maxX}),e.hasAreaBottom&&(e.inCondensedSelectedSpacePrimaryAreaBottom=Xe({data:e.inSelectedSpaceAreaBottom.data,swap:e.inCondensedSelectedSpacePrimaryAreaBottom,...a}),e.inRenderSpacePrimaryAreaBottom=we({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,swap:e.inRenderSpacePrimaryAreaBottom,...s}),e.inBackgroundSpacePrimaryAreaBottom=Te({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,background:e.background,swap:e.inBackgroundSpacePrimaryAreaBottom,minX:n.minX,maxX:n.maxX}))}_calculateRangeGraphSizeDependents(e,{dataChanged:t=!1}={}){if(!this.rangeGraphRenderer||!this.rangeGraphRenderer.sizing)return;if(!e){for(let e of this._series)this._calculateRangeGraphSizeDependents(e);return}if(!this._series.includes(e))throw new Error("Series no longer exists");if(e.hidden)return;const{scale:n}=e.axis,r=this._globalBounds,i=Math.ceil(this.rangeGraphRenderer.sizing.renderWidth/2),o=Math.ceil(this.rangeGraphRenderer.sizing.renderHeight),a={minX:r.minX,maxX:r.maxX,ignoreDiscontinuities:e.ignoreDiscontinuities,square:e.square};e.inSelectedSpaceRangeGraph=be({data:e.hasAreaBottom?e.inDataSpace.filter(((e,t)=>t%2==1)):e.inDataSpace,swap:e.inSelectedSpaceRangeGraph,...a});const s={minX:r.minX,maxX:r.maxX,renderWidth:i,dataChanged:t};e.inCondensedSelectedSpaceRangeGraph=Xe({data:e.inSelectedSpaceRangeGraph.data,swap:e.inCondensedSelectedSpaceRangeGraph});const l={minX:r.minX,maxX:r.maxX,minY:r.minY,maxY:r.maxY,renderWidth:i,renderHeight:o,scale:n,dataChanged:t};e.inRenderSpaceRangeGraph=we({data:e.inCondensedSelectedSpaceRangeGraph.data,swap:e.inRenderSpaceRangeGraph,...l}),e.hasAreaBottom&&(e.inSelectedSpaceRangeGraphAreaBottom=be({data:e.inDataSpace.filter(((e,t)=>t%2==0)),swap:e.inSelectedSpaceRangeGraphAreaBottom,...a}),e.inCondensedSelectedSpaceRangeGraphAreaBottom=Xe({data:e.inSelectedSpaceRangeGraphAreaBottom.data,swap:e.inCondensedSelectedSpaceRangeGraphAreaBottom,...s}),e.inRenderSpaceRangeGraphAreaBottom=we({data:e.inCondensedSelectedSpaceRangeGraphAreaBottom.data,swap:e.inRenderSpaceRangeGraphAreaBottom,...l}))}_createAxis({side:e}){const t={series:[],scale:"linear",side:e,axisIndex:this._axes.length};return this._axes.push(t),t}_moveAxis(e,t){if(!this._series.includes(e))throw new Error("Series no longer exists");let n;if(n="new-left"===t||"new-right"===t?this._createAxis({side:t.split("-")[1]}):this._axes[parseInt(t)],e.axis===n)return;const r=e.axis,i=r.series.indexOf(e);if(-1===i)throw new Error("Series not present in axis");r.series.splice(i,1),n.series.push(e),e.axis=n,this._dataChanged=!0,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("left_axes_changed",this.leftAxes),this.deferredEmit("right_axes_changed",this.rightAxes),this.deferredEmit("exported_axes_changed",this.exportedAxes),this._markDirty()}_assignAxisTo(e){if(e.axis&&"object"==typeof e.axis)return;let t;if(e.axisIndex){const{axisIndex:n}=e;t="new-left"===n||"new-right"===n?this._createAxis({side:n.split("-")[1]}):this._axes[parseInt(n)]}else if(e.axis){e.originalAxis=e.axis;let[n,r]=e.axis.split("-");t=function({axes:e,side:t,number:n}){let r;n=n&&parseInt(n)||0;let i=0;for(let o of e)if(o.side===t){if(i===n){r=o;break}i++}return r}({axes:this._axes,side:n,number:r}),t||(t=this._createAxis({side:n}))}else t=this._axes[0];t.series.push(e),e.axis=t,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("exported_axes_changed",this.exportedAxes),"left"===e.axis.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_removeSeries(e){this._seriesFromOriginalSeries.delete(e.originalSeries);const{axis:t,data:n}=e;t.series.splice(t.series.indexOf(e),1);const r=this._observablesToSeries.get(n);r&&(r.delete(e),0===r.size&&this._observablesToSeries.delete(n)),this._generatorsToSeries.has(n)&&(this._generatorsToSeries.get(n).delete(e),0===this._generatorsToSeries.get(n).size&&(this._generatorsToSeries.delete(n),this._generators.delete(n))),this._alwaysTooltipped.delete(e),e.axis=e.originalAxis,delete e.originalAxis,delete e.inDataSpace,delete e.inSelectedSpace,delete e.inValueSpacePrimary,delete e.inValueSpaceRangeGraph,delete e.inRenderSpacePrimary,delete e.inRenderSpaceRangeGraph,delete e.newPointCount,delete e.newDataBounds,delete e.simpleDataSliceStart,this.deferredEmit("axes_changed",this._axes),this.deferredEmit("exported_axes_changed",this.exportedAxes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_hideSeries(e){const{axis:t}=e,n=t.series.indexOf(e);e.indexInAxis=n,t.series.splice(n,1),this.deferredEmit("axes_changed",this._axes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}_showSeries(e){const{axis:t}=e;t.series.splice(e.indexInAxis,0,e),this.deferredEmit("axes_changed",this._axes),"left"===t.side?this.deferredEmit("left_axes_changed",this.leftAxes):this.deferredEmit("right_axes_changed",this.rightAxes)}get boundCalculator(){return this._boundsCalculator}get axes(){return this._axes}get leftAxes(){const e=this._axes.filter((({side:e,series:t})=>"left"===e&&t.length>0)).reverse();return 0===e.length&&0===this.rightAxes.length&&e.push(this._axes[0]),e}get rightAxes(){return this._axes.filter((({side:e,series:t})=>"right"===e&&t.length>0))}get bounds(){return this._axes.map((({targetBounds:e})=>e))}get selection(){return this._selection}get globalBounds(){return this._globalBounds}get series(){return this._series}get highlightedSeries(){return this._highlightedSeries}get showIndividualPoints(){return this._showIndividualPoints}get autoscaleY(){return this._autoscaleY}get boundHistory(){return{hasNextBounds:this._boundsIndex<this._boundsHistory.length-1,hasPreviousBounds:this._boundsIndex>0}}get tooltipState(){return this._tooltipState}get contextMenuState(){return this._contextMenuPosition}get alwaysTooltipped(){return this._alwaysTooltipped}get draggingY(){return this._draggingY}get averageLoopTime(){return function(e){const t={};for(let n of e)for(let[e,r]of Object.entries(n))t[e]=(t[e]||0)+r;for(let[n,r]of Object.entries(t))t[n]=r/e.length;return t}(this._timingBuffer)}get exportedAxes(){const e=new Map;let t=0,n=0;for(let r of this._axes){let i;"left"===r.side?(i=`left-${t}`,t++):(i=`right-${n}`,n++);for(let t of r.series)e.set(t,i)}return this.series.map((t=>({...t.originalSeries,axis:e.get(t)})))}get percentile(){return this._percentile}get percentileAsymmetry(){return this._percentileAsymmetry}get showingOptions(){return this._showingOptions}get maxPrecision(){return this._maxPrecision}get showingSidebar(){return this._showingSidebar}get showingAnnotations(){return this._showingAnnotations}get userCreatedSeries(){return this._series.filter((e=>e.userCreated))}get grapherID(){return this._grapherID}get annotationState(){return this._annotationsState}get sizing(){return this.primaryRenderer&&this.primaryRenderer.sizing}get theme(){return this._theme}get exportMode(){return this._exportMode}get enumMap(){return this._enumMap}get hasXEnum(){return this._hasXEnum}markSizeChanged(e){e===this.primaryRenderer?(this.deferredEmit("primary_size_change",this.primaryRenderer.sizing),this.deferredEmit("primary_bounding_rect_change",this.primaryRenderer.boundingRect),this._primarySizeChanged=!0):e===this.rangeGraphRenderer&&(this.deferredEmit("range_graph_size_change",this.rangeGraphRenderer.sizing),this.deferredEmit("range_graph_bounding_rect_change",this.rangeGraphRenderer.boundingRect),this._rangeGraphSizeChanged=!0),this._mustRerender=!0,this._tooltipsChanged=!0,this._annotationsChanged=!0,this._mustCallGenerators=!0,this._markDirty()}set theme(e){this._theme=e,this._mustRerender=!0,this.deferredEmit("theme_change",this._theme),this._markDirty()}set exportMode(e){this._exportMode=e,e?(this._nonExportTheme=this.theme,this.theme="export"):this.theme=this._nonExportTheme,this.deferredEmit("export_mode_change",this._exportMode),this._markDirty()}set defaultLineWidth(e){this._defaultLineWidth=e,this._mustRerender=!0,this._markDirty()}set boundCalculator(e){e&&e!==this._boundsCalculator&&(e.debounceHistory?(clearTimeout(this._boundingCalculatorDebouncer),this._boundingCalculatorDebouncer=setTimeout((()=>{this._addBoundCalculatorToHistory(e)}),250)):this._addBoundCalculatorToHistory(e),this._boundsCalculator=e,this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this._dataChanged=!0,this._mustCallGenerators=!0,this._markDirty())}set customBoundsSelectors(e){this._customBoundsSelectors=this._customBoundsSelectors||{};const t={};for(let{label:n,calculator:r}of e)t[n]=r,this._boundsCalculator===this._customBoundsSelectors[n]&&this._boundsCalculator!==r&&(this.boundCalculator=r);this._customBoundsSelectors=t}_addBoundCalculatorToHistory(e){this._boundsIndex++,this._boundsHistory=this._boundsHistory.slice(0,this._boundsIndex),this._boundsHistory.push(e),this.emit("bound_history_changed",this.boundHistory)}registerSeriesClick(e){this.emit("series_click",this._series[e],e)}setHighlightedSeries(e){this._highlightedSeries=e,this.deferredEmit("highlighted_series_changed",e),this._mustRerender=!0,this._markDirty()}toggleIndividualPoints(){this._showIndividualPoints=!this._showIndividualPoints,this.deferredEmit("show_individual_points_changed",this._showIndividualPoints),this._mustRerender=!0,this._markDirty()}toggleYAutoscaling(){this._autoscaleY=!this._autoscaleY,this.deferredEmit("autoscale_y_changed",this._autoscaleY),this._markDirty()}toggleExportMode(){this.exportMode=!this._exportMode}setBoundsFromSelection(e){this.boundCalculator=function({minPixelX:e,maxPixelX:t,minPixelY:n,maxPixelY:r},{elementWidth:i,elementHeight:o,selection:a,axes:s}){if(Math.abs(t-e)<1||Math.abs(r-n)<1)return;const l=e/i*(a.maxX-a.minX)+a.minX,A=t/i*(a.maxX-a.minX)+a.minX,h=[];for(let{currentBounds:e,scale:t}of s){const i=ye({...e,scale:t});let a=(1-n/o)*(i.maxY-i.minY)+i.minY,s=(1-r/o)*(i.maxY-i.minY)+i.minY;"log"===t&&(s=Math.pow(10,s),a=Math.pow(10,a)),h.push({minX:l,maxX:A,minY:s,maxY:a})}return()=>({minX:l,maxX:A,byAxis:h})}(e,{elementWidth:this.primaryRenderer.sizing.elementWidth,elementHeight:this.primaryRenderer.sizing.elementHeight,selection:this._selection,axes:this._axes})}nextBounds(){this._boundsIndex++,this._boundsCalculator=this._boundsHistory[this._boundsIndex],this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this.deferredEmit("bound_history_changed",this.boundHistory),this._dataChanged=!0,this._markDirty()}previousBounds(){this._boundsIndex--,this._boundsCalculator=this._boundsHistory[this._boundsIndex],this.deferredEmit("bound_calculator_changed",this._boundsCalculator),this.deferredEmit("bound_history_changed",this.boundHistory),this._dataChanged=!0,this._markDirty()}setLabel({axisIndex:e,label:t}){this._axes[e].label=t,this.deferredEmit("axes_changed",[...this._axes]),this._markDirty()}toggleScale({axisIndex:e}){const t=this._axes[e].scale;this._axes[e].scale="log"===t?"linear":"log",this._dataChanged=!0,this.deferredEmit("axes_changed",[...this._axes]),this._markDirty()}recalculateTooltips(){this.primaryRenderer.recalculatePosition(),this.setTooltipMousePosition({clientX:this._tooltipClientX,clientY:this._tooltipClientY,shiftKey:this.shiftKeyPressedOnMove,tooltipAllNext:this._tooltipAllNext,tooltipStateArg:this._tooltipStateArg})}setTooltipMousePosition({clientX:e,clientY:t,shiftKey:n,mouseX:r,mouseY:i,tooltipAllNext:o,tooltipStateArg:a}){const s=this.primaryRenderer.sizing;if(!s)return;if("number"==typeof e){if(this._tooltipClientX=e,e<s.boundingRect.left||e>s.boundingRect.right)return void this.showOnlySavedTooltips()}else if("number"!=typeof i)return;if("number"==typeof t){if(this._tooltipClientY=t,t<s.boundingRect.top||t>s.boundingRect.bottom)return void this.showOnlySavedTooltips()}else if("number"!=typeof i)return;const l=r||e-s.boundingRect.left,A=i||t-s.boundingRect.top;this._tooltipState.mousePresent&&l===this._tooltipState.mouseX&&A===this._tooltipState.mouseY||(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!0,this._tooltipState.mouseX=l,this._tooltipState.mouseY=A,this.shiftKeyPressedOnMove=n,this._tooltipAllNext=o,this._tooltipStateArg=a,this._markDirty())}setContextMenuMousePosition({clientX:e,clientY:t}){this._contextMenuPosition={x:e,y:t,showing:!this._contextMenuPosition.showing},this._contextMenuChanged=!0,this._markDirty()}toggleAlwaysTooltipped(e,t){if(this._alwaysTooltipped.has(e))t?this._alwaysTooltipped.clear():this._alwaysTooltipped.delete(e);else if(t)for(let e of this._series)this._alwaysTooltipped.add(e);else this._alwaysTooltipped.add(e);this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped),this._markDirty()}showOnlySavedTooltips(e){this._tooltipState.mousePresent&&(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!1,this._tooltipStateArg=e,this._markDirty())}registerClick({clientX:e}){if(!this._listeners.series_click)return;const t=this.primaryRenderer.boundingRect,n=this.primaryRenderer.sizing;for(let r of this._series){const i=r.axis.currentBounds,o=(e-t.left)/n.elementWidth*(i.maxX-i.minX)+i.minX;this.emit("series_click",{x:o,series:r})}}toggleTooltipSaved(){const e=this._savedTooltips;this._savedTooltips=function({currentTooltips:e,savedTooltips:t}){if(!e.length)return t;const n=e[e.length-1];if(n.xDistance>20||!n.ignoreYDistance&&n.distance>20)return t;const r=t.findIndex((e=>e.x===n.x&&e.y===n.y));return-1===r?[...t,n]:t.filter(((e,t)=>t!==r))}({currentTooltips:this._tooltipState.tooltips,savedTooltips:this._savedTooltips}),this._tooltipsChanged=this._savedTooltips!==e,this._markDirty()}clearSavedTooltips(){0!==this._savedTooltips.length&&(this._savedTooltips=[],this._tooltipsChanged=!0,this._markDirty())}markDragStart(){this._draggingY||(this._draggingY=!0,this.deferredEmit("dragging_y_changed",this._draggingY),this._markDirty())}finalizeDrag(e,t,n){if(!this._draggingY)return;this._draggingY=!1,this.deferredEmit("dragging_y_changed",this._draggingY);const r=t&&0!==t,i=n===this._grapherID;r&&i?(this._moveAxis(e,t),this.deferredEmit("dragging_y_finalized",{draggedSeries:e,axisIndex:t,grapherID:n})):n&&this.deferredEmit("dragging_y_finalized",{draggedSeries:e,axisIndex:t,grapherID:n}),this._markDirty()}set timingFrameCount(e){"number"==typeof e&&(this._timingBuffer=[],this._timingIndex=0,this._timingFrameCount=e)}set percentile(e){void 0!==e&&(this.deferredEmit("percentile_changed",e),""===e&&(e=100),e=parseFloat(e),!isNaN(e)&&e<=100&&e>=0&&(this._percentile=e,this._dataChanged=!0),this._markDirty())}set percentileAsymmetry(e){void 0!==e&&(this.deferredEmit("percentile_asymmetry_changed",e),""===e&&(e=0),e=parseFloat(e),!isNaN(e)&&e<=50&&e>=-50&&(this._percentileAsymmetry=e,this._dataChanged=!0),this._markDirty())}set showingOptions(e){void 0!==e&&(this._showingOptions=e,this.deferredEmit("showing_options_changed",e),this._markDirty())}toggleShowingOptions(){this.showingOptions=!this.showingOptions}toggleMaxPrecision(){this._maxPrecision=!this._maxPrecision,this.deferredEmit("max_precision_changed",this._maxPrecision),this._markDirty()}toggleShowingAnnotations(){this._showingAnnotations=!this._showingAnnotations,this.deferredEmit("showing_annotations_changed",this._showingAnnotations),this._markDirty()}toggleShowingSidebar(){this._showingSidebar=!this._showingSidebar,this.deferredEmit("showing_sidebar_changed",this._showingSidebar),this._markDirty()}setShowing(e,t){e.hidden=!t,this._series=[...this._series],e.hidden?this._hideSeries(e):this._showSeries(e),this.deferredEmit("series_changed",this._series,{skipResize:!0}),this._dataChanged=!0,this._markDirty()}set annotations(e){this._annotations=e||[],this._annotationsChanged=!0,this._markDirty()}enumToNumber(e,t,n){const r=this._enumMap[e];if("number"==typeof r)return r;const i=Object.keys(this._enumMap).length;return this._enumMap[e]=i,this._series[t.index].hasEnum=!0,n&&(this._series[t.index].hasXEnum=!0,this._hasXEnum=!0,this.deferredEmit("has_x_enum_change",this._hasXEnum),this.deferredEmit("x_enum_map_change",this._enumMap)),this.deferredEmit("enum_map_change",this._enumMap),i}triggerResize(){this._mustResize=!0,this._markDirty()}}function Me(t,n,r=null,i=[]){if("function"==typeof r){const e=r;r=()=>e}const[o,a]=(0,e.useState)(r);return(0,e.useEffect)((()=>{const e=e=>{if("function"==typeof e){const t=e;e=()=>t}a(e)};return t.on(n,e),()=>{t.off(n,e)}}),[...i,a,t]),o}function Pe(e){return Me(e,"primary_size_change",e.primaryRenderer?e.primaryRenderer.sizing:{elementWidth:0,elementHeight:0,renderWidth:0,renderHeight:0})}function ze(e){return Me(e,"axes_changed",e.axes)}function $e(e){return Me(e,"series_changed",e.series)}function Ie(e){return Me(e,"highlighted_series_changed",e.highlightedSeries)}function Oe(e){return Ne(e).length}function Le(e){return Ge(e).length}function Ne(e){return Me(e,"right_axes_changed",e.rightAxes)}function Ge(e){return Me(e,"left_axes_changed",e.leftAxes)}function We(e){return Me(e,"axis_bounds_changed",e.axes.map((({currentBounds:e})=>e)))}function qe(e){return Me(e,"autoscale_y_changed",e.autoscaleY)}function Ue(e){return Me(e,"showing_options_changed",e.showingOptions)}function He(e){return Me(e,"max_precision_changed",e.maxPrecision)}function Ke(e){return Me(e,"showing_sidebar_changed",e.showingSidebar)}function je(e){return Me(e,"showing_annotations_changed",e.showingAnnotations)}function Ve(e){return Me(e,"primary_size_change",e.sizing)}function Je(e){return Me(e,"theme_change",e.theme)}class Ze extends t().PureComponent{render(){const{bodyHeight:e,annotationState:n}=this.props,{annotations:r,elementWidth:i}=n;return t().createElement("div",{className:"grapher-annotations"},r.map((({pixelX:n,width:r,content:o,lineOnly:a},s)=>{if(a)return t().createElement("div",{key:s,className:"grapher-annotation",style:{left:n}},t().createElement("div",{className:"annotation-marker",style:{width:r,height:e}}));const l={top:21*s};return i-n<5.5*o.length?l.left=n-i:l.left=0,t().createElement("div",{key:s,className:"grapher-annotation",style:{left:n}},t().createElement("div",{className:"annotation-marker",style:{width:r,height:e}}),t().createElement("div",{className:"annotation-text",style:l},o))})))}}Ze.propTypes={annotationState:r().shape({annotations:r().arrayOf(r().object).isRequired,elementWidth:r().number.isRequired}),bodyHeight:r().number,lineOnly:r().bool};const Qe=t().memo(et);function et({stateController:e,draggablePoints:n,onPointDrag:r,onDraggablePointsDoubleClick:i}){const o=We(e)[0],a=Ve(e);if(!a)return null;const s=i&&(e=>{const t=(e.clientX-a.boundingRect.left)/a.elementWidth,n=1-(e.clientY-a.boundingRect.top)/a.elementHeight;i(e,{x:t*(o.maxX-o.minX)+o.minX,y:n*(o.maxY-o.minY)+o.minY})});return t().createElement("div",{className:"grapher-draggable-points",onDoubleClick:s},t().createElement("svg",{width:a.elementWidth,height:a.elementHeight},n.map(((e,n)=>{const i=(e.x-o.minX)/(o.maxX-o.minX),s=1-(e.y-o.minY)/(o.maxY-o.minY);if(i<0||i>1||s<0||s>1)return null;const l=i*a.elementWidth,A=s*a.elementHeight,h=e.radius||5,c=e.fillColor||E[0],g=e.strokeColor||"white",p=e.strokeWidth||1,d=e.onClick&&(t=>{e.onClick(t,e)}),u=e.onDoubleClick&&(t=>{t.stopPropagation(),e.onDoubleClick(t,e)});return t().createElement("circle",{key:n,cx:l,cy:A,r:h,fill:c,stroke:g,strokeWidth:p,onMouseDown:t=>{if(t.stopPropagation(),!r)return;const i=l-t.clientX,s=A-t.clientY,h=t=>{const l=(t.clientX+i)/a.elementWidth,A=1-(t.clientY+s)/a.elementHeight;r({index:n,point:e,x:l*(o.maxX-o.minX)+o.minX,y:A*(o.maxY-o.minY)+o.minY},t)},c=()=>{window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",c)};window.addEventListener("mousemove",h),window.addEventListener("mouseup",c)},onClick:d,onDoubleClick:u})}))))}et.propTypes={stateController:r().instanceOf(Fe).isRequired,draggablePoints:B.DraggablePoints.isRequired,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func};const tt=t().memo(nt);function nt({stateController:e,verticalLines:n,isRangeGraph:r,bounds:i,elementWidth:o,elementHeight:a}){i=i||We(e)[0];const s=Ve(e);if(!s)return null;const l=n.filter((e=>!(r&&!e.onRangeGraph||e.onRangeGraphOnly&&!r)));return 0===l.length?null:t().createElement("div",{className:"grapher-vertical-lines"},t().createElement("svg",{width:o||s.elementWidth,height:a||s.elementHeight},l.map(((e,n)=>{r&&"object"==typeof e.onRangeGraph&&(e={...e,...e.onRangeGraph});const l=(e.x-i.minX)/(i.maxX-i.minX);if(l<0||l>1)return null;const A=l*(o||s.elementWidth);if("number"==typeof e.minPixelX&&A<e.minPixelX)return null;if("number"==typeof e.maxPixelX&&A>e.maxPixelX)return null;const h={stroke:e.color,strokeWidth:e.width,...e.style||{}},c={fill:e.color,...e.markerStyle||{}},g={fontSize:"12px",fill:e.color,stroke:"none",textAnchor:"middle",dominantBaseline:"hanging",...e.textStyle||{}};let p=0;"number"==typeof e.lineTop?p=e.lineTop:e.text&&(p=18);let d=5;return"number"==typeof e.textTop&&(d=e.textTop),t().createElement(t().Fragment,{key:n},t().createElement("line",{x1:A,y1:p,x2:A,y2:a||s.elementHeight,style:h}),e.markTop&&t().createElement("polygon",{points:`${A-3},0 ${A+3},0 ${A},3`,style:c}),e.text&&t().createElement("text",{x:A,y:d,style:g},e.text))}))))}function rt(){return rt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rt.apply(this,arguments)}nt.propTypes={stateController:r().instanceOf(Fe).isRequired,verticalLines:B.VerticalLines.isRequired,isRangeGraph:r().bool,bounds:r().object,elementWidth:r().number,elementHeight:r().number};const it=t().memo(ot);function ot({stateController:n,webgl:r,bodyHeight:i,boundsSelectionEnabled:o,showTooltips:a,tooltipOptions:s,checkIntersection:l,draggablePoints:A,onPointDrag:h,onDraggablePointsDoubleClick:c,verticalLines:g,clockStyle:p,timeZone:d}){const u=(0,e.useCallback)((e=>{if(n.primaryRenderer&&n.primaryRenderer.dispose(),!e)return;const t=new j({stateController:n,canvasElement:e,webgl:r,checkIntersection:l});n.primaryRenderer=t,t.resize()}),[r,n]),[m,C]=(0,e.useState)({showing:!1,start:{},style:{}}),x=qe(n),b=ze(n).length,f=function(e){return Me(e,"tooltip_state_changed",e.tooltipState)}(n),y=He(n),B=je(n),_=function(e){return Me(e,"annotations_changed",e.annotationState)}(n),E=function(e){return Me(e,"context_menu_position_changed",e.contextMenuState)}(n);return(0,e.useEffect)((()=>{const e=()=>{a&&n.recalculateTooltips()},t=e=>{a&&n.setTooltipMousePosition({clientX:e.clientX,clientY:e.clientY,shiftKey:e.shiftKey})};return window.addEventListener("scroll",e,{passive:!0}),window.addEventListener("mousemove",t,{passive:!0}),()=>{window.removeEventListener("scroll",e),window.removeEventListener("mousemove",t)}}),[]),t().createElement("div",{className:"graph-body graph-body-primary",onMouseMove:e=>{if(m.showing){const t=n.primaryRenderer.boundingRect,r=e.clientX-t.left,i=e.clientY-t.top;C((({start:e})=>({showing:!0,start:e,style:{left:Math.min(r,e.x),top:x?0:Math.min(i,e.y),width:Math.abs(r-e.x),height:x?t.height:Math.abs(i-e.y)}})))}},onMouseLeave:()=>{n.setContextMenuMousePosition({showing:!1})},onMouseDown:e=>{if(!o)return;let t=e.target;for(let e=0;e<10&&t;e++){if(t.classList.contains("grapher-tooltip"))return;t=t.parentNode}const r=n.primaryRenderer.boundingRect,i={x:e.clientX-r.left,y:e.clientY-r.top};C({showing:!0,start:i,style:{left:i.x,top:i.y,width:0,height:0}});const a=e=>{if(window.removeEventListener("mouseup",a),!o)return;const t=e.clientX-r.left,s=e.clientY-r.top;n.setBoundsFromSelection({minPixelX:Math.min(t,i.x),maxPixelX:Math.max(t,i.x),minPixelY:Math.min(s,i.y),maxPixelY:Math.max(s,i.y)}),C({showing:!1,style:{}})};window.addEventListener("mouseup",a)},onClick:e=>{n.registerClick({clientX:e.clientX,clientY:e.clientY}),s&&s.savingDisabled?n.clearSavedTooltips():(e.target.closest(".grapher-context-menu")||n.setContextMenuMousePosition({showing:!1}),window.getSelection&&"Range"===window.getSelection().type||n.toggleTooltipSaved())},onDoubleClick:()=>{n.clearSavedTooltips()},onContextMenu:e=>{e.preventDefault(),n.setContextMenuMousePosition({clientX:e.clientX,clientY:e.clientY,showing:!0})},style:"number"==typeof i?{height:i}:void 0},t().createElement("canvas",{ref:u}),a&&t().createElement(se,rt({axisCount:b,maxPrecision:y,clockStyle:p,timeZone:d},s||{},f)),E.showing&&t().createElement(le,{contextMenu:E}),B&&t().createElement(Ze,{bodyHeight:i,annotationState:_}),g&&t().createElement(tt,{stateController:n,verticalLines:g}),A&&t().createElement(Qe,{stateController:n,draggablePoints:A,onPointDrag:h,onDraggablePointsDoubleClick:c}),o&&m.showing&&t().createElement("div",{className:"bounds-selection",style:m.style}))}ot.propTypes={stateController:r().instanceOf(Fe).isRequired,webgl:r().bool,checkIntersection:r().bool,bodyHeight:r().number,boundsSelectionEnabled:r().bool.isRequired,showTooltips:r().bool.isRequired,tooltipOptions:B.TooltipOptions,verticalLines:B.VerticalLines,draggablePoints:B.DraggablePoints,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string};var at=o(72),st=o.n(at),lt=o(825),At=o.n(lt),ht=o(659),ct=o.n(ht),gt=o(56),pt=o.n(gt),dt=o(540),ut=o.n(dt),mt=o(113),Ct=o.n(mt),xt=o(557),bt={};function ft(e,{scale:t,min:n,max:r,inverted:i,totalSize:o,precision:a,formatter:s,dates:l,justTime:A,justDate:h,formatOptions:c={}},g={}){let p=e;"log"===t&&(p=10**e);let d=(e-n)/(r-n);i&&(d=1-d);let u=d*o;return isNaN(u)&&(u=0),{pixelValue:u,trueValue:p,label:s(p,{...c,precision:a,log:"log"===t,dates:l,justTime:A,justDate:h}),size:"major",...g}}function yt(e,{scale:t,min:n,max:r,inverted:i,totalSize:o,precision:a,formatter:s,dates:l,justTime:A,justDate:h,formatOptions:c={}},g={}){let p=e/o;i&&(p=1-p);let d=p*(r-n)+n;return"log"===t&&(d=Math.pow(10,d)),{pixelValue:e,trueValue:d,label:s(d,{...c,precision:a,log:"log"===t,dates:l,justTime:A,justDate:h}),size:"major",...g}}function Bt(e,t){if(e<=1)return 1;if(1===t)return Math.round(e);if(e>=t)return Math.round(e/t)*t;let n;if(24===t)n=[1,2,6,12,24];else{if(60!==t)throw new Error("Invalid divisor");n=[1,2,5,10,15,30,60]}let r=1/0,i=1;for(let t=0;t<n.length;t++){const o=Math.abs(n[t]-e);o<r&&(i=n[t],r=o)}return i}function _t(e){return e.dates?function({min:e,max:t,precision:n,expectedLabelSize:r,labelPadding:i,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:A,inverted:h=!1,formatOptions:c}){const g=r+2*i,p=[],d={scale:l,min:e,max:t,inverted:h,totalSize:o,precision:n,formatter:A,formatOptions:c,dates:!0},{amount:u,unit:m}=function(e,t,n){const r=e/t;return r<6e4&&(!n||"second"===n)?{amount:Bt(r/1e3,60),unit:"s"}:r<36e5&&(!n||"minute"===n)?{amount:Bt(r/6e4,60),unit:"m"}:r<864e5&&(!n||"hour"===n)?{amount:Bt(r/36e5,24),unit:"h"}:"day"===n||r<2592e6&&!n?{amount:Bt(r/864e5,1),unit:"d"}:r>2592e6&&(!n||"month"===n)?{amount:Bt(r/30*24*60*60*1e3,1),unit:"month"}:"year"===n?{amount:Bt(r/365*24*60*60*1e3,1),unit:"year"}:{unit:"m",amount:60}}(t-e,o/g,c.unitOverride),C="month"===m;a||p.push(yt(0,{...d,justDate:C},{position:"first"}));let x=new Date(e);"h"===m?x.setMinutes(0,0,0):"m"===m?x.setSeconds(0,0):"s"===m?x.setMilliseconds(0):"month"===m?(x=ee(x,c.timeZone),x.setDate(1)):"d"===m&&(x=ee(x,c.timeZone));let b=A(x,{...c,...d,justDate:!0});for(;x<t;){let e=864e5;"h"===m?e=60*(u-x.getHours()%u)*60*1e3:"m"===m?e=60*(u-x.getMinutes()%u)*1e3:"s"===m?e=1e3*(u-x.getSeconds()%u):"month"===m?(e=0,x=11===x.getMonth()?new Date(x.getFullYear()+1,0,1):new Date(x.getFullYear(),x.getMonth()+1,1)):"year"===m&&(x=new Date(x.getFullYear()+1,0,0)),x=new Date(x.valueOf()+e);const t=A(x,{...c,...d,justDate:!0})===b,n=ft(x,{...d,justTime:t,justDate:C});p.length&&n.pixelValue-p[p.length-1].pixelValue<r+(i||0)||n.pixelValue+r/2>=o||(p.push(n),b=A(x,{...c,...d,justDate:!0}))}const f=b===A(t,{...c,...d,justDate:!0});return!s&&p[p.length-1].pixelValue+r<o&&p.push(yt(o,{...d,justTime:f,justDate:C},{position:"last"})),p.filter((({pixelValue:e})=>e<=o&&e>=0))}(e):function({min:e,max:t,precision:n,expectedLabelSize:r,labelPadding:i,totalSize:o,scale:a="linear",formatter:s,inverted:l=!1,formatOptions:A}){const h=r+2*i,c=[],g={scale:a,min:e,max:t,inverted:l,totalSize:o,precision:n,formatter:s,formatOptions:A,dates:!1},p=function(e,t){const n=e/t,r=1-Math.log10(Math.abs(n)),i=r-Math.floor(r)>.5?2:1,o=10**Math.floor(r)*i;return Math.round(n*o)/o}(t-e,Math.floor((o-2*r)/h));if(p>0)for(let n=function(e,t){return Math.round(e/t)*t}(e,p);n<t;n+=p)c.push(ft(n,g));return c.length&&l&&c[c.length-1].pixelValue>i&&c.push(yt(r/2,g)),c.filter((({pixelValue:e})=>e<=o&&e>=0))}(e)}bt.styleTagTransform=Ct(),bt.setAttributes=pt(),bt.insert=ct().bind(null,"head"),bt.domAPI=At(),bt.insertStyleElement=ut(),st()(xt.A,bt),xt.A&&xt.A.locals&&xt.A.locals;const Et=t().memo(wt);function wt({showAxes:e,showGrid:n,stateController:r,bigLabels:i,xTickUnit:o,clockStyle:a,timeZone:s,integersOnly:l,formatXAxisLabel:A}){if(!e&&!n)return null;const{elementWidth:h,elementHeight:c}=Pe(r),{minX:g,maxX:p,dates:d}=function(e){return Me(e,"selection_changed",e.selection)}(r),u=function(e){return Me(e,"has_x_enum_change",e.hasXEnum)}(r),m=function(e){return Me(e,"enum_map_change",e.enumMap)}(r);let C;C=d?function(e,t){e=new Date(e);const n=(t=new Date(t)).valueOf()-e.valueOf();return n<3e3?"ms":n<6e5?"s":"m"}(g,p):V(p-g);let x=null;if(u){x={};for(const[e,t]of Object.entries(m))x[t]=e}const b={unitOverride:o,clockStyle:a,timeZone:s,integersOnly:l,inverseEnumMap:x,formatter:A},f=te(g,{...b,dates:d,precision:C}).toString(),y=te(p,{...b,dates:d,precision:C}).toString();let B=4*Math.max(f.length,y.length);i&&(B*=2);const _=_t({min:g,max:p,totalSize:h,precision:C,dates:d,formatter:A||te,expectedLabelSize:B,labelPadding:30,formatOptions:b});return t().createElement("svg",{className:"axis x-axis",style:e?void 0:{marginBottom:-20}},e&&t().createElement("path",{d:`M-1,0 H${h}`,className:"axis-line"}),e&&t().createElement("path",{d:`M-2,1 H${h+1}`,className:"axis-line-shadow"}),_.map((({pixelValue:r,label:o,size:a,position:s,skipGrid:l},A)=>{if(isNaN(r))return null;const h=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return i&&h.push("axis-item-big-labels"),t().createElement("g",{key:A,className:h.join(" ")},e&&t().createElement("path",{d:`M${r},1 v6`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${r},0 v-${c}`}),e&&t().createElement("text",{x:r,y:15},o))})))}wt.propTypes={stateController:r().instanceOf(Fe).isRequired,showAxes:r().bool.isRequired,showGrid:r().bool.isRequired,bigLabels:r().bool,xTickUnit:r().oneOf(["year"]),clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,integersOnly:r().bool,formatXAxisLabel:r().func};const vt=t().memo(kt);function kt({stateController:n,showAxes:r,showGrid:i,showSeriesKey:o,axis:a,sideIndex:s,bodyHeight:l,theme:A,grapherID:h,dragPositionYOffset:c=0,bigLabels:g,showAxisColors:p}){if(!r&&!i)return null;const{side:d,scale:u,axisIndex:m,label:C}=ze(n)[a.axisIndex],{elementWidth:x,elementHeight:b}=Pe(n);let{minY:f,maxY:y}=We(n)[m];const B=ye({minY:f,maxY:y,scale:u});f=B.minY,y=B.maxY;const _=_t({min:f,max:y,totalSize:b,scale:u,precision:V(y-f),formatter:ne,inverted:!0,expectedLabelSize:g?20:10,labelPadding:30});let E=5;"log"===u&&(E=2);const v=Ie(n),[k,S]=(0,e.useState)(null),[D,Y]=(0,e.useState)({dx:0,dy:0}),X="day"===A?1:.5,R="day"===A?.8:.3;return t().createElement("svg",{className:`axis y-axis y-axis-${d}`,"data-axis-index":m,"data-grapher-id":h,style:{width:re,marginLeft:r?void 0:-32,height:"number"==typeof l?l:void 0}},r&&p&&a.series.map(((e,n)=>{const r=b/a.series.length;return t().createElement("rect",{x:"left"===d?0:2,y:n*r,width:30,height:r,key:e.index,fill:w(e.color,e.index,e.multigrapherSeriesIndex),opacity:e.index===v?X:R,"data-element-height":b,"data-series-length":a.series.length})})),r&&t().createElement("path",{d:`M${"left"===d?31:1},3 V${b}`,className:"axis-line"}),r&&t().createElement("path",{d:`M${"left"===d?30:0},3 V${b+1}`,className:"axis-line-shadow"}),_.map((({pixelValue:e,label:n,size:o,skipGrid:a},l)=>{const A="left"===d?(s+1)*re:-s*re,h=("left"===d?1:-1)*(x+1),c=["axis-item",`axis-item-${o}`];return g&&c.push("axis-item-big-labels"),t().createElement("g",{key:l,className:c.join(" ")},i&&!a&&t().createElement("path",{d:`M${A},${e} h${h}`}),i&&!a&&s>0&&t().createElement("path",{d:`M${"left"===d?re:0},${e} h${("left"===d?1:-1)*s*re}`,strokeDasharray:"2,2"}),r&&t().createElement("text",{x:"left"===d?re-E:E,y:e},n))})),o&&r&&a.series.map(((e,r)=>{let i=18+14*(r%2-1),o=-14*Math.ceil(a.series.length/2)+14*Math.floor(r/2);return e===k&&(i+=D.dx,o+=D.dy-c),t().createElement("rect",{className:"series-color-box",onMouseDown:t=>((e,t)=>{let r=e.clientX,i=e.clientY;"left"===d&&(r+=re),"right"===d&&(r-=re),Y({dx:0,dy:0});const o=e=>{Y({dx:e.clientX-r,dy:e.clientY-i})},a=e=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",a);let r=e.target;for(;r&&!(r.dataset||{}).axisIndex;)r=r.parentNode;S(null),n.finalizeDrag(t,r&&(r.dataset||{}).axisIndex,r&&(r.dataset||{}).grapherId)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",a),S(t),n.markDragStart()})(t,e),x:i,y:o,width:10,height:10,key:e.index,fill:w(e.color,e.index,e.multigrapherSeriesIndex),onMouseOver:()=>n.setHighlightedSeries(e.index),onMouseOut:()=>n.setHighlightedSeries(null)})})),r&&!!C&&t().createElement("text",{className:"y-axis-label"+(g?" y-axis-big-label":""),x:"left"===d?10:22,y:b/2+("left"===d?-1:1)*(m+1)*(g?20:0),transform:`rotate(${"left"===d?-90:90}, ${"left"===d?10:22}, ${b/2})`},C))}kt.propTypes={stateController:r().instanceOf(Fe),showAxes:r().bool.isRequired,showGrid:r().bool.isRequired,showAxisColors:r().bool.isRequired,showSeriesKey:r().bool.isRequired,axis:B.Axis.isRequired,sideIndex:r().number.isRequired,bodyHeight:r().number,theme:r().string,grapherID:r().string,dragPositionYOffset:r().number,bigLabels:r().bool};const St=t().memo(Dt);function Dt({selected:e,disabled:n,className:r,onClick:i,children:o,description:a}){const s=["range-button"];return e&&s.push("range-button-selected"),n&&s.push("range-button-disabled"),r&&s.push(r),a&&s.push("option-tooltip"),t().createElement("div",{className:s.join(" "),onClick:i&&(e=>n||i(e))},o,a&&t().createElement("div",{className:"option-tooltip-text"},a))}Dt.propTypes={selected:r().bool.isRequired,onClick:r().func,children:r().node.isRequired,disabled:r().bool,className:r().string,description:r().string};const Yt=t().memo(Xt);function Xt({stateController:e,currentBoundCalculator:n,boundCalculator:r,children:i,disabled:o}){return t().createElement(St,{selected:n===r,onClick:()=>e.boundCalculator=r,disabled:o},i)}Xt.propTypes={stateController:r().instanceOf(Fe).isRequired,boundCalculator:r().func.isRequired,currentBoundCalculator:r().func.isRequired,children:r().node.isRequired,disabled:r().bool};const Rt=t().memo(Tt);function Tt({stateController:n}){const r=function(e){return Me(e,"percentile_changed",e.percentile)}(n),i=function(e){return Me(e,"percentile_asymmetry_changed",e.percentileAsymmetry)}(n),[o,a]=(0,e.useState)(!1);return[o?t().createElement(St,{key:"asymmetry button",className:"percentile-button",selected:!0,description:"Percentile asymmetry"},t().createElement("input",{onClick:e=>e.stopPropagation(),value:i,onChange:e=>n.percentileAsymmetry=e.target.value,onKeyUp:e=>13===e.keyCode&&a(!1),type:"number",min:-50,max:50}),t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"})))):null,t().createElement(St,{key:"main-button",className:"percentile-button",selected:o||100!==parseFloat(r),onClick:()=>a(!o),description:"Edit percentile"},o&&t().createElement("div",null,t().createElement("input",{onClick:e=>e.stopPropagation(),autoFocus:!0,value:r,onChange:e=>n.percentile=e.target.value,onKeyUp:e=>13===e.keyCode&&a(!1),type:"number",min:0,max:100})),t().createElement("div",{className:"icon-container icon-container-narrow"},t().createElement("svg",{focusable:"false",viewBox:"0 0 448 512"},t().createElement("path",{fill:"currentColor",d:"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"}))))]}Tt.propTypes={stateController:r().instanceOf(Fe).isRequired};const Ft=t().memo(Mt);function Mt({stateController:e,sidebarEnabled:n}){const r=function(e){return Me(e,"show_individual_points_changed",e.showIndividualPoints)}(e),i=qe(e),o=He(e),a=Ke(e),s=je(e),l=Je(e);return t().createElement("div",{className:"options-bar"},n&&t().createElement(St,{selected:a,onClick:()=>e.toggleShowingSidebar(),description:"Show sidebar"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"})))),t().createElement(St,{selected:"export"===l,onClick:()=>e.toggleExportMode(),description:"Export mode"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"})))),t().createElement(St,{selected:s,onClick:()=>e.toggleShowingAnnotations(),description:"Show annotations"},t().createElement("div",{className:"icon-container icon-container-448"},t().createElement("svg",{focusable:"false",viewBox:"0 0 448 512"},t().createElement("path",{fill:"currentColor",d:"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"})))),t().createElement(Rt,{stateController:e}),t().createElement(St,{selected:o,onClick:()=>e.toggleMaxPrecision(),description:"Max precision"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"})))),t().createElement(St,{selected:i,onClick:()=>e.toggleYAutoscaling(),description:"Autoscale y axis"},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"})))),t().createElement(St,{selected:r,onClick:()=>e.toggleIndividualPoints(),description:"Show individual points"},t().createElement("div",{className:"icon-container icon-container-narrow"},t().createElement("svg",{focusable:"false",viewBox:"0 0 192 512"},t().createElement("path",{fill:"currentColor",d:"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"})))))}Mt.propTypes={stateController:r().instanceOf(Fe).isRequired,sidebarEnabled:r().bool};const Pt=t().memo(zt);function zt({stateController:e,customBoundsSelectors:n,customBoundsSelectorsOnly:r,sidebarEnabled:i}){const o=Oe(e),a=Le(e),s=Ue(e);let l=re*o;o>0&&(l+=5);let A=re*a;a>0&&(A+=5);const{dates:h}=function(e){return Me(e,"global_bounds_changed",e.globalBounds)}(e),c=function(e){return Me(e,"bound_calculator_changed",e.boundCalculator)}(e),{hasPreviousBounds:g,hasNextBounds:p}=function(e){return Me(e,"bound_history_changed",e.boundHistory)}(e),d=new Set(n.map((({label:e})=>e)));return t().createElement("div",{className:"range-selection"+(h?"":" range-not-dates"),style:{marginRight:l,marginLeft:A}},t().createElement("div",{className:"range-buttons"},s&&t().createElement(Ft,{stateController:e,sidebarEnabled:i}),t().createElement(St,{className:"showing-options-button",selected:s,onClick:()=>e.toggleShowingOptions(),description:"Show additional options"},t().createElement("div",{className:"icon-container icon-container-square"},t().createElement("svg",{focusable:"false",viewBox:"0 0 512 512"},t().createElement("path",{fill:"currentColor",d:"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"})))),t().createElement(St,{className:"range-selection-history",selected:!1,onClick:()=>e.previousBounds(),disabled:!g},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"})))),t().createElement(St,{className:"range-selection-history",selected:!1,onClick:()=>e.nextBounds(),disabled:!p},t().createElement("div",{className:"icon-container"},t().createElement("svg",{focusable:"false",viewBox:"0 0 256 512"},t().createElement("path",{fill:"currentColor",d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"})))),n.map((({label:n,calculator:r,datesOnly:i},o)=>t().createElement(Yt,{key:o,stateController:e,currentBoundCalculator:c,boundCalculator:r,disabled:i&&!h},n))),!d.has("1m")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastMinute,disabled:!h},"1m"),!d.has("10m")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.last10Minutes,disabled:!h},"10m"),!d.has("1h")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastHour,disabled:!h},"1h"),!d.has("1d")&&!r&&t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.lastDay,disabled:!h},"1d"),t().createElement(Yt,{stateController:e,currentBoundCalculator:c,boundCalculator:Ye.all,disabled:!1},"All")))}zt.propTypes={stateController:r().instanceOf(Fe).isRequired,customBoundsSelectors:B.CustomBoundsSelectors.isRequired,customBoundsSelectorsOnly:r().bool,sidebarEnabled:r().bool};class $t extends t().PureComponent{constructor(e){super(e),this.state={elementWidth:0,elementHeight:0,selectionBounds:{minX:0,maxX:0},globalBounds:{minX:0,maxX:0}},this.onMouseMove=this.onMouseMove.bind(this),this.stopDragging=this.stopDragging.bind(this),this.startScroll=this.startScroll.bind(this),this.startLeftDrag=this.startLeftDrag.bind(this),this.startRightDrag=this.startRightDrag.bind(this)}componentDidMount(){this._renderer=new j({stateController:this.props.stateController,canvasElement:this.el,webgl:this.props.webgl,checkIntersection:this.props.checkIntersection}),this.props.stateController.rangeGraphRenderer=this._renderer,this._renderer.on("size_changed",(e=>{this.setState(e)})),this.setState({selectionBounds:this.props.stateController._selection,globalBounds:this.props.stateController._globalBounds}),this.props.stateController.on("selection_changed",(e=>{this.setState({selectionBounds:e})})),this.props.stateController.on("global_bounds_changed",(e=>{this.setState({globalBounds:e})}))}componentDidUpdate(e){e.draggingY!==this.props.draggingY&&this._renderer.resize()}componentWillUnmount(){this._renderer.dispose(),this._renderer=null}onMouseMove(e){if(!this._dragType)return;let t;const n=this.el.getBoundingClientRect().left;this.setState((({selectionBounds:r,globalBounds:i,elementWidth:o})=>{let a=(e.clientX-n)/o;a=Math.max(a,0),a=Math.min(a,1);let s=a*(i.maxX-i.minX)+i.minX;if("scroll"===this._dragType){const e=r.maxX-r.minX;let n=s-e*this._scrollAnchorPercentage,o=s+e*(1-this._scrollAnchorPercentage);return n<i.minX&&(n=i.minX,o=n+e),o>i.maxX&&(o=i.maxX,n=o-e),t=()=>({minX:n,maxX:o}),{selectionBounds:Object.assign({},r,{minX:n,maxX:o})}}if("left"===this._dragType){s>r.maxX&&(s=r.maxX);const e=i.maxX===r.maxX;return t=()=>e?{minX:s}:{minX:s,maxX:r.maxX},{selectionBounds:Object.assign({},r,{minX:s})}}if("right"===this._dragType){s<r.minX&&(s=r.minX);const e=i.minX===r.minX;return t=()=>e?{maxX:s}:{minX:r.minX,maxX:s},{selectionBounds:Object.assign({},r,{maxX:s})}}}),(()=>{t&&(t.debounceHistory=!0,this.props.stateController.boundCalculator=t)}))}addListeners(){window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.stopDragging)}stopDragging(){this._dragType=null,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.stopDragging)}startScroll(e){this._dragType="scroll";const{selectionBounds:t,globalBounds:n,elementWidth:r}=this.state,i=this.el.getBoundingClientRect().left,o=e.clientX-i,a=(t.minX-n.minX)/(n.maxX-n.minX)*r||0,s=(t.maxX-n.minX)/(n.maxX-n.minX)*r||0;this._scrollAnchorPercentage=(o-a)/(s-a),this.addListeners()}startLeftDrag(){this._dragType="left",this.addListeners()}startRightDrag(){this._dragType="right",this.addListeners()}render(){const{globalBounds:e,selectionBounds:n,elementWidth:r,elementHeight:i}=this.state;let o,a=Math.min(Math.max((n.minX-e.minX)/(e.maxX-e.minX),0),1)*r||0,s=Math.min(Math.max((n.maxX-e.minX)/(e.maxX-e.minX),0),1)*r||0;return(isNaN(a)||!isFinite(a)||n.maxX<n.minX)&&(a=0),(isNaN(s)||!isFinite(s)||n.maxX<n.minX)&&(s=0),n.dates&&this.props.markDates&&(o=_t({min:e.minX,max:e.maxX,totalSize:r,precision:"day",dates:n.dates,formatter:te,expectedLabelSize:30,labelPadding:5,formatOptions:{justMonthAndDay:!0,unitOverride:"day",timeZone:this.props.timeZone},skipFirst:!0,skipLast:!0})),t().createElement("div",{className:"range-selection-graph"},t().createElement("div",{className:"graph-body graph-body-secondary"},t().createElement("canvas",{ref:e=>this.el=e}),t().createElement("svg",null,t().createElement("g",null,t().createElement("rect",{x:0,y:i,width:r,height:14,className:"selection-bar-track"}),o&&o.map((({pixelValue:e,label:n,size:r,position:o},a)=>{if(isNaN(e))return null;const s=["axis-item",`axis-item-${r}`,`axis-item-${o}`];return t().createElement("g",{key:a,className:s.join(" ")},t().createElement("path",{d:`M${e},0 v${i}`}),t().createElement("text",{x:e+3,y:i},n))})),t().createElement("rect",{x:a,y:i,width:s-a,height:14,className:"selection-bar",onMouseDown:this.startScroll}),t().createElement("path",{d:"M -3 3.5 L -3 9.333333333333334 M 0 3.5 L 0 9.333333333333334 M 3 3.5 L 3 9.333333333333334",className:"selection-bar-rifles",transform:`translate(${a+(s-a)/2},${i})`,onMouseDown:this.startScroll})),t().createElement("g",null,t().createElement("rect",{x:a,y:0,width:s-a,height:i,className:"target-selection",onMouseDown:this.startScroll}),t().createElement("rect",{x:a,y:0,width:s-a,height:i+14,className:"target-selection-outline"})),t().createElement("g",null,t().createElement("path",{d:"M -4.5 0.5 L 3.5 0.5 L 3.5 15.5 L -4.5 15.5 L -4.5 0.5 M -1.5 4 L -1.5 12 M 0.5 4 L 0.5 12",className:"selection-bar-handle",transform:`translate(${a},${(i-15)/2})`,onMouseDown:this.startLeftDrag})),t().createElement("g",null,t().createElement("path",{d:"M -4.5 0.5 L 3.5 0.5 L 3.5 15.5 L -4.5 15.5 L -4.5 0.5 M -1.5 4 L -1.5 12 M 0.5 4 L 0.5 12",className:"selection-bar-handle",transform:`translate(${s},${(i-15)/2})`,onMouseDown:this.startRightDrag}))),this.props.verticalLines&&t().createElement(tt,{stateController:this.props.stateController,verticalLines:this.props.verticalLines,isRangeGraph:!0,bounds:e,elementHeight:i,elementWidth:r})))}}$t.defaultProps={width:3,shadowColor:"transparent"},$t.propTypes={stateController:r().instanceOf(Fe).isRequired,webgl:r().bool,draggingY:r().bool,checkIntersection:r().bool,markDates:r().bool,timeZone:r().string,verticalLines:B.VerticalLines};const It=t().memo(Ot);function Ot({series:e,i:n,style:r,onMouseDown:i,theme:o,stateController:a,highlighted:s}){const l=w(e.color,n,e.multigrapherSeriesIndex);r="day"===o?Object.assign({},r,{backgroundColor:l}):Object.assign({},r,{color:l});const A=["series-key-item"];s&&A.push("series-key-item-highlighted");const h=Re(e,n);return t().createElement("div",{className:A.join(" "),style:r,onMouseDown:i,onMouseOver:()=>a.setHighlightedSeries(n),onMouseOut:()=>a.setHighlightedSeries(null),onClick:()=>a.registerSeriesClick(n)},h)}Ot.propTypes={series:B.SingleSeries.isRequired,stateController:r().instanceOf(Fe),i:r().number.isRequired,style:r().object,onMouseDown:r().func,theme:r().string.isRequired,highlighted:r().bool};class Lt extends t().PureComponent{constructor(e){super(e),this.state={showingLabelInput:!1},this.toggleLabelInputShowing=this.toggleLabelInputShowing.bind(this)}toggleLabelInputShowing(){this.setState((({showingLabelInput:e})=>({showingLabelInput:!e})))}render(){const{children:e,stateController:n,axisIndex:r,scale:i,label:o,grapherID:a}=this.props,{showingLabelInput:s}=this.state;return t().createElement("div",{className:"series-key-axis-container"+(s?" series-key-axis-container-showing-label":""),"data-axis-index":r,"data-grapher-id":a},t().createElement("div",{className:"scale-label",onClick:()=>n.toggleScale({axisIndex:r})},i.slice(0,s?6:3)),t().createElement("div",{className:"series-key-axis-container-body"},t().createElement("div",null,e,t().createElement("svg",{className:"label-input-toggler",viewBox:"0 0 512 512",onClick:this.toggleLabelInputShowing},t().createElement("path",{d:"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"}))),t().createElement("div",{className:"series-key-axis-label-container"},t().createElement("input",{onChange:e=>n.setLabel({axisIndex:r,label:e.target.value}),placeholder:"Enter label",value:o||""}))))}}Lt.propTypes={stateController:r().instanceOf(Fe).isRequired,children:r().node.isRequired,axisIndex:r().number.isRequired,scale:r().string.isRequired,label:r().string,grapherID:r().string};const Nt=t().memo(Gt);function Gt({stateController:n,theme:r,draggingY:i,grapherID:o,dragPositionYOffset:a=0}){const s=$e(n),[l,A]=(0,e.useState)(null),[h,c]=(0,e.useState)({x:0,y:0}),g=Ie(n),p=(0,e.useRef)(null),[d,u]=(0,e.useState)(5*s.map((({name:e,yKey:t},n)=>(e||t||n).toString().length)).reduce(((e,t)=>e+t),0));let m;(0,e.useEffect)((()=>{p.current&&(cancelAnimationFrame(m),m=requestAnimationFrame((()=>{if(!p.current)return;const e=[...p.current.querySelectorAll(".series-key-axis-container")].map((e=>e.clientWidth)).reduce(((e,t)=>e+t),0);u(e)})))}),[s,p.current]);const C=function({stateController:e,keyWidth:t}){const n=Oe(e),r=Le(e),i=Ue(e);let o=re*n;n>0&&(o+=5),o+=250,i&&(o+=70);let a,s=re*r;r>0&&(s+=5),s=Math.max(o,s),o=Math.max(o,s);const{elementWidth:l}=Pe(e);return l-s-o<t&&(s=0,o=0,a=10),{marginRight:o,marginLeft:s,marginBottom:a}}({stateController:n,keyWidth:d}),x=ze(n),b=function(e){return Me(e,"always_tooltipped_changed",e.alwaysTooltipped)}(n);return t().createElement("div",{className:"series-key",style:C,ref:p},i&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-left","data-grapher-id":o}),x.map(((e,i)=>!e.series.length&&x.length>1?null:t().createElement(Lt,{key:i,label:e.label,axisIndex:e.axisIndex,scale:e.scale,stateController:n,grapherID:o},e.series.map((e=>e.hideFromKey?null:t().createElement(It,{key:e.index,series:e,i:e.index,onMouseDown:(t,r)=>((e,t)=>{let r=e.target;for(;r&&"series-key"!==r.className;)r=r.parentNode;const i=e.target.getBoundingClientRect().left;let o=r.getBoundingClientRect().left,a=r.style.marginLeft;const s=e.clientX,l=e.clientY,h=e.clientX,g=e.clientY;A(t),c({x:e.clientX-s+(i-o)-2,y:e.clientY-l+1});const p=e=>{r.style.marginLeft!==a&&(o=r.getBoundingClientRect().left,a=r.style.marginLeft),c({x:e.clientX-s+(i-o)-2,y:e.clientY-l+1})},d=e=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",d);let r=e.target;for(;r&&!(r.dataset||{}).axisIndex&&!(r.dataset||{}).grapherId;)r=r.parentNode;A(null),n.finalizeDrag(t,r&&(r.dataset||{}).axisIndex,r&&(r.dataset||{}).grapherId),e.clientX===h&&e.clientY===g&&n.toggleAlwaysTooltipped(t,e.shiftKey)};window.addEventListener("mousemove",p),window.addEventListener("mouseup",d),n.markDragStart()})(t,e),theme:r,stateController:n,highlighted:g===e.index||b.has(e)})))))),i&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-right","data-grapher-id":o}),l&&t().createElement(It,{style:{left:h.x,top:h.y-a,position:"absolute",pointerEvents:"none",zIndex:1},series:l,i:l.index,theme:r,stateController:n}))}Gt.propTypes={stateController:r().instanceOf(Fe).isRequired,theme:r().string.isRequired,draggingY:r().bool.isRequired,grapherID:r().string,dragPositionYOffset:r().number};const Wt=t().memo(qt);function qt({title:e}){return t().createElement("div",{className:"grapher-title"},e)}qt.propTypes={title:r().string.isRequired};class Ut extends t().PureComponent{constructor(e){super(e),this.onChange=this.onChange.bind(this)}onChange(e){setTimeout((()=>{this.props.stateController.setShowing(this.props.singleSeries,e.target.checked)}))}render(){const{singleSeries:e}=this.props,n=w(e.color,e.index,e.multigrapherSeriesIndex);let r=e.name||e.yKey;return r||(r=e.index),t().createElement("div",{className:"series-toggle"},t().createElement("label",null,t().createElement("input",{type:"checkbox",defaultChecked:!e.hidden,ref:e=>e&&e.addEventListener("change",this.onChange)}),t().createElement("span",{className:"checkmark",style:{background:n,borderColor:n}}),r))}}function Ht({stateController:e}){const n=$e(e);return t().createElement("div",{className:"grapher-sidebar"},n.map(((n,r)=>t().createElement(Ut,{key:r,singleSeries:n,stateController:e}))))}function Kt(){return Kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kt.apply(this,arguments)}Ut.propTypes={singleSeries:B.SingleSeries.isRequired,stateController:r().instanceOf(Fe).isRequired},Ht.propTypes={stateController:r().instanceOf(Fe).isRequired};const jt=t().memo(Jt),Vt={theme:"night",showAxes:!0,showRangeGraph:!0,showRangeSelectors:!0,showSeriesKey:!0,showTooltips:!0,boundsSelectionEnabled:!0,customBoundsSelectors:[],sidebarEnabled:!1,defaultShowAnnotations:!0,defaultShowOptions:!0};function Jt(n){n={...Vt,...n};const r=(0,e.useMemo)((()=>new Fe({grapherID:n.id,...n,...n.stateControllerInitialization})),[]);(0,e.useEffect)((()=>()=>{r.dispose()}),[r]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(r)}),[r,n.exportStateController]),(0,e.useEffect)((()=>{r.timingFrameCount=n.timingFrameCount}),[r,n.timingFrameCount]),(0,e.useEffect)((()=>(n.onRenderTime&&r.on("render_time",n.onRenderTime),()=>{n.onRenderTime&&r.off("render_time",n.onRenderTime)})),[r,n.onRenderTime]),(0,e.useEffect)((()=>{r.setSeries(n.series)}),[r,n.series]),(0,e.useEffect)((()=>{r.theme=n.theme}),[r,n.theme]);const i=Je(r),o=n.bigLabels||"export"===i,a=n.defaultLineWidth||("export"===i?3:void 0);(0,e.useEffect)((()=>{r.defaultLineWidth=a}),[r,a]),(0,e.useEffect)((()=>{r.percentile=n.percentile}),[r,n.percentile]),(0,e.useEffect)((()=>{r.customBoundsSelectors=n.customBoundsSelectors}),[r,n.customBoundsSelectors]),(0,e.useEffect)((()=>{r.annotations=n.annotations}),[r,n.annotations]),(0,e.useEffect)((()=>n.onAxisChange?(r.on("exported_axes_changed",n.onAxisChange),()=>{r.off("exported_axes_changed",n.onAxisChange)}):()=>{}),[r,n.onAxisChange]),(0,e.useEffect)((()=>{r.primaryRenderer.resize()}),[n.height]);const s=function(e){return Me(e,"dragging_y_changed",e.draggingY)}(r),{styles:l,classNames:A}=function(e,{draggingY:t,theme:n}){const{fullscreen:r,height:i,width:o}=e,a=["grapher",`grapher-${n}`],s={};return t&&a.push("grapher-dragging-y"),r?(a.push("grapher-fullscreen"),a.push("grapher-fixed-height")):i&&(a.push("grapher-fixed-height"),s.height="number"==typeof i?i-20:`calc(${i} - 20px)`),o&&(s.width=o),{styles:s,classNames:a}}(n,{draggingY:s,theme:i}),h=Ne(r),c=Ge(r),g=Ke(r),p="boolean"==typeof n.showAxisColors?n.showAxisColors:"export"!==i,d="boolean"==typeof n.showGrid?n.showGrid:"export"!==i,u={stateController:r,showAxes:n.showAxes,showGrid:d,showSeriesKey:n.showSeriesKey,bodyHeight:n.bodyHeight,theme:i,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset,showAxisColors:p,bigLabels:o};return t().createElement("div",{className:A.join(" "),style:l,"data-grapher-id":n.id},n.title&&t().createElement(Wt,{title:n.title}),t().createElement("div",{className:"grapher-primary-container-outer"},g&&t().createElement(Ht,{stateController:r}),t().createElement("div",{className:"grapher-primary-container-body"},n.showSeriesKey&&t().createElement(Nt,{stateController:r,draggingY:s,theme:n.theme,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset}),n.showRangeSelectors&&t().createElement(Pt,{stateController:r,customBoundsSelectors:n.customBoundsSelectors,customBoundsSelectorsOnly:n.customBoundsSelectorsOnly,sidebarEnabled:n.sidebarEnabled}),t().createElement("div",{className:"grapher-main-row"},s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-left","data-grapher-id":n.id,style:{width:re,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}}),c.map(((e,n)=>t().createElement(vt,Kt({key:n,axis:e,sideIndex:c.length-n-1},u)))),t().createElement("div",{className:"central-container"},t().createElement(it,{stateController:r,webgl:n.webgl,bodyHeight:n.bodyHeight,boundsSelectionEnabled:n.boundsSelectionEnabled,showTooltips:n.showTooltips,tooltipOptions:n.tooltipOptions,checkIntersection:n.checkIntersection,draggablePoints:n.draggablePoints,onPointDrag:n.onPointDrag,onDraggablePointsDoubleClick:n.onDraggablePointsDoubleClick,verticalLines:n.verticalLines,clockStyle:n.clockStyle,timeZone:n.timeZone}),t().createElement(Et,{showGrid:d,showAxes:n.showAxes,stateController:r,bigLabels:o,xTickUnit:n.xTickUnit,clockStyle:n.clockStyle,timeZone:n.timeZone,integersOnly:n.xAxisIntegersOnly,formatXAxisLabel:n.formatXAxisLabel}),n.showRangeGraph&&t().createElement("div",{className:"range-graph-container"},t().createElement($t,{stateController:r,webgl:n.webgl,checkIntersection:n.checkIntersection,markDates:n.markRangeGraphDates,timeZone:n.timeZone,verticalLines:n.verticalLines}))),h.map(((e,n)=>t().createElement(vt,Kt({key:n,axis:e,sideIndex:n},u)))),s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-right","data-grapher-id":n.id,style:{width:re,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}})))))}Jt.propTypes={series:B.Series.isRequired,webgl:r().bool,requireWASM:r().bool,checkIntersection:r().bool,onAxisChange:r().func,onRenderTime:r().func,exportStateController:r().func,timingFrameCount:r().number,stateControllerInitialization:r().object,syncPool:r().instanceOf(class{constructor({syncBounds:e=!0,syncTooltips:t=!0,syncDragState:n=!1}={}){this._stateControllers=new Set,this._syncBounds=e,this._syncTooltips=t,this._syncDragState=n}add(e){this._stateControllers.add(e),this._syncBounds&&this.syncBounds(e),this._syncTooltips&&this.syncTooltips(e),this._syncDragState&&this.syncDragState(e)}remove(e){this._stateControllers.delete(e)}syncDragState(e){e.on("dragging_y_changed",(t=>{for(let n of this._stateControllers)e!==n&&(t?n.markDragStart():n.finalizeDrag(null,null))}))}syncBounds(e){e.on("bound_calculator_changed",(t=>{for(let n of this._stateControllers)e!==n&&(n.boundCalculator=t)}))}syncTooltips(e){e.on("tooltip_state_changed",((t,n)=>{if(this._tooltipIgnoreState===n)return;const r=0===t.unsavedTooltipsCount||!t.mousePresent||"onShift"===this._syncTooltips&&!e.shiftKeyPressedOnMove;r&&(this._tooltipIgnoreState=Math.random());for(let n of this._stateControllers)e!==n&&(r?n.showOnlySavedTooltips(this._tooltipIgnoreState):n.setTooltipMousePosition({mouseX:t.mouseX,mouseY:t.mouseY,tooltipAllNext:!0,tooltipStateArg:this._tooltipIgnoreState}))}))}}),id:r().string,dragPositionYOffset:r().number,theme:r().oneOf(["day","night","export"]),title:r().string,fullscreen:r().bool,bodyHeight:r().number,height:r().number,width:r().number,showAxes:r().bool,showRangeGraph:r().bool,showRangeSelectors:r().bool,showSeriesKey:r().bool,showTooltips:r().bool,showGrid:r().bool,showAxisColors:r().bool,bigLabels:r().bool,xTickUnit:r().oneOf(["year"]),formatXAxisLabel:r().func,xAxisIntegersOnly:r().bool,clockStyle:r().oneOf(["12h","24h"]),timeZone:r().string,markRangeGraphDates:r().bool,boundsSelectionEnabled:r().bool,sidebarEnabled:r().bool,percentile:r().number,defaultShowOptions:r().bool,defaultShowIndividualPoints:r().bool,defaultShowSidebar:r().bool,defaultShowAnnotations:r().bool,defaultLineWidth:r().number,tooltipOptions:B.TooltipOptions,customBoundsSelectors:B.CustomBoundsSelectors,customBoundsSelectorsOnly:r().bool,defaultBoundsCalculator:r().string,annotations:B.Annotations,draggablePoints:B.DraggablePoints,onPointDrag:r().func,onDraggablePointsDoubleClick:r().func,verticalLines:B.VerticalLines};const Zt=E,Qt=Ye})(),a})()));
|
|
2
2
|
//# sourceMappingURL=bundle.js.map
|