@windborne/grapher 1.0.39 → 1.0.41
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/dist/bundle.cjs +1 -1
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.esm.js +1 -1
- package/dist/bundle.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/format.js +1 -1
- package/src/helpers/place_grid.js +32 -11
- package/src/renderer/draw_area.js +4 -1
- package/src/renderer/draw_line.js +42 -22
- package/src/renderer/graph_body_renderer.js +5 -1
- package/src/renderer/line_program.js +4 -2
- package/src/renderer/shadow_program.js +4 -4
package/dist/bundle.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var e,t,n={365:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LINE_COLORS:()=>i,applyReducedOpacity:()=>o,applyReducedOpacityToGradient:()=>a,createDefaultGradient:()=>s,default:()=>r});const i=["#F1C232","#1259f8","#cb4b4b","#4da74d","#9440ed","#61e0ed","#ed6d2c","#ed13c6","#bbed59"];function r(e,t,n){return"string"==typeof e?e:"number"==typeof e?i[e%i.length]:void 0!==n?i[n%i.length]:i[t%i.length]}function o(e,t){if(!e)return e;if(e.startsWith("rgba(")){const n=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);if(n){const[,e,i,r,o]=n;return`rgba(${e}, ${i}, ${r}, ${parseFloat(o)*t})`}}if(e.startsWith("rgb(")){const n=e.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);if(n){const[,e,i,r]=n;return`rgba(${e}, ${i}, ${r}, ${t})`}}if(e.startsWith("#")){let n=e.slice(1);return 3===n.length&&(n=n.split("").map((e=>e+e)).join("")),`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}return e}function a(e,t){return e&&Array.isArray(e)?e.map((e=>{if(Array.isArray(e)&&2===e.length){const[n,i]=e;return[n,o(i,t)]}return"string"==typeof e?o(e,t):e})):e}function s(e){if(!e)return[[0,"transparent"],[1,"transparent"]];const t=o(e,.5);return[[0,t],[1,t]]}},557:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var i=n(354),r=n.n(i),o=n(314),a=n.n(o)()(r());a.push([e.id,'.grapher-night{position:relative;background:linear-gradient(to bottom right, #131313, #1e1e1e);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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-night .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(255,255,255,.3)}.grapher-night .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-night .axis.y-axis{height:400px}.grapher-night .axis.y-axis .axis-item text{text-anchor:end}.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:rgba(192,192,192,.3);stroke-width:1px}.grapher-night .axis .axis-item path{stroke:rgba(192,192,192,.3);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:1px}.grapher-night .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-night .range-selection-graph{width:100%;background-color:rgba(0,0,0,.3);height:calc(50px + 14px)}.grapher-night .range-selection-graph .graph-body-secondary{height:50px}.grapher-night .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-night .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#aaa;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#808083;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#fff;stroke-width:1px;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#aaa;fill:#666;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#aaa;stroke-width:1;transition:stroke-width .15s ease}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.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:#9f9f9f;stroke-width:1px}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#fff}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#fff}.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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-day .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(0,0,0,.3)}.grapher-day .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-day .axis.y-axis{height:400px}.grapher-day .axis.y-axis .axis-item text{text-anchor:end}.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: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:1px}.grapher-day .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-day .range-selection-graph{width:100%;background-color:rgba(255,255,255,.3);height:calc(50px + 14px)}.grapher-day .range-selection-graph .graph-body-secondary{height:50px}.grapher-day .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-day .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#333;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#333;stroke-width:1px;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;fill:#b0b0b7;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#333;stroke-width:1;transition:stroke-width .15s ease}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#555;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:#555;stroke-width:1px}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#000}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#000}.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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-export .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(0,0,0,.3)}.grapher-export .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-export .axis.y-axis{height:400px}.grapher-export .axis.y-axis .axis-item text{text-anchor:end}.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-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:1px}.grapher-export .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-export .range-selection-graph{width:100%;background-color:rgba(255,255,255,.3);height:calc(50px + 14px)}.grapher-export .range-selection-graph .graph-body-secondary{height:50px}.grapher-export .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-export .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#333;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#333;stroke-width:1px;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;fill:#b0b0b7;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#333;stroke-width:1;transition:stroke-width .15s ease}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#333;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:#333;stroke-width:1px}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#000}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#000}.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: #131313,\n $background-color-2: #1e1e1e,\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: rgb(192, 192, 192, 0.3),\n $axis-line-width: 1px,\n $axis-tick-color: rgb(192, 192, 192, 0.3),\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-background-color: rgba(0, 0, 0, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #AAA,\n $range-graph-handle-fill-color: #666,\n $range-graph-axis-text-color: #9f9f9f,\n $range-graph-tick-highlighted-color: #FFF,\n $range-graph-text-highlighted-color: #FFF,\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 $x-axis-dual-height: 30px;\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 margin-top: 10px;\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 z-index: 20;\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 z-index: 10;\n\n .grapher-annotation {\n position: absolute;\n\n .annotation-marker {\n display: inline-block;\n background: $annotation-background-color;\n }\n\n &.grapher-annotation-range {\n .annotation-range-marker {\n display: inline-block;\n background-color: rgba(128, 128, 128, 0.2);\n background-image: repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);\n background-size: 40px 40px;\n border-right: 1px solid white;\n border-left: 1px solid white;\n }\n }\n\n .annotation-text {\n position: absolute;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n white-space: nowrap;\n font-size: 10px;\n z-index: 10;\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 \n &.x-axis-dual {\n height: $x-axis-dual-height;\n }\n display: block;\n }\n\n &.y-axis {\n height: $primary-graph-body-height;\n\n .axis-item text {\n text-anchor: end;\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-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: 1px;\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 background-color: $range-graph-selection-background-color;\n height: calc(#{$secondary-graph-body-height} + #{$range-graph-selection-bar-height}); \n\n .graph-body-secondary {\n height: $secondary-graph-body-height;\n\n canvas {\n height: 100%;\n }\n\n svg {\n position: absolute;\n left: 0;\n width: 100%;\n overflow: visible;\n\n .target-selection {\n fill: $range-graph-selection-range-color;\n cursor: ew-resize;\n }\n\n\n .target-selection-outline {\n stroke: $range-graph-selection-outline-color;\n cursor: ew-resize;\n fill: transparent;\n }\n\n .selection-bar-track {\n fill: $range-graph-selection-bar-track-color;\n }\n\n .selection-bar {\n fill: $range-graph-selection-bar-color;\n cursor: ew-resize;\n }\n\n .selection-bar-rifles {\n stroke: $range-graph-selection-bar-rifles-color;\n stroke-width: 1px;\n cursor: ew-resize;\n }\n\n .selection-bar-handle-hit {\n cursor: ew-resize;\n }\n\n .selection-bar-handle {\n stroke: $range-graph-handle-color;\n fill: $range-graph-handle-fill-color;\n stroke-width: 1px;\n cursor: ew-resize;\n transition: stroke-width 0.15s ease, fill 0.15s ease;\n }\n\n .selection-handle {\n .selection-handle-hit {\n cursor: ew-resize;\n }\n\n .selection-handle-line {\n stroke: $range-graph-handle-color;\n stroke-width: 1;\n transition: stroke-width 0.15s ease;\n }\n\n &:hover .selection-handle-line {\n stroke-width: 3;\n }\n\n &.selection-handle-dragging .selection-handle-line {\n stroke-width: 3;\n }\n\n &:hover .selection-bar-handle {\n stroke-width: 2px;\n }\n\n &.selection-handle-dragging .selection-bar-handle {\n stroke-width: 2px;\n }\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: $range-graph-axis-text-color;\n stroke-width: 1px;\n }\n \n &.axis-item-highlighted {\n path {\n stroke: $range-graph-tick-highlighted-color;\n }\n \n text {\n fill: $range-graph-text-highlighted-color;\n }\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-background-color: rgba(255, 255, 255, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n $range-graph-axis-text-color: #555,\n $range-graph-tick-highlighted-color: #000,\n $range-graph-text-highlighted-color: #000,\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-background-color: rgba(255, 255, 255, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n $range-graph-axis-text-color: #333,\n $range-graph-tick-highlighted-color: #000,\n $range-graph-text-highlighted-color: #000,\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="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var h=0;h<e.length;h++){var c=[].concat(e[h]);i&&a[c[0]]||(void 0!==o&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=o),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},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 i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),o="/*# ".concat(r," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},694:(e,t,n)=>{"use strict";var i=n(925);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,a){if(a!==i){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:r};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,i=0;i<t.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var o={},a=[],s=0;s<e.length;s++){var l=e[s],h=i.base?l[0]+i.base:l[0],c=o[h]||0,g="".concat(h," ").concat(c);o[h]=c+1;var A=n(g),d={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==A)t[A].references++,t[A].updater(d);else{var p=r(d,i);i.byIndex=s,t.splice(s,0,{identifier:g,updater:p,references:1})}a.push(g)}return a}function r(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,r){var o=i(e=e||[],r=r||{});return function(e){e=e||[];for(var a=0;a<o.length;a++){var s=n(o[a]);t[s].references--}for(var l=i(e,r),h=0;h<o.length;h++){var c=n(o[h]);0===t[c].references&&(t[c].updater(),t.splice(c,1))}o=l}}},659:e=>{"use strict";var t={};e.exports=function(e,n){var i=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(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.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 i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(i,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;\nuniform float width; // Canvas width for normalization\nuniform float cutoffX; // Cutoff X position as ratio (0.0-1.0)\nuniform float cutoffOpacity; // Opacity for pre-cutoff area\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 // Apply cutoff opacity if active\n vec4 finalColor = vec4(color);\n if (cutoffX >= 0.0) {\n // Convert pixel position to normalized coordinate (0.0 to 1.0)\n float normalizedX = gl_FragCoord.x / width;\n \n // Apply reduced opacity to pixels left of cutoff\n if (normalizedX < cutoffX) {\n finalColor.a *= cutoffOpacity;\n }\n }\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 = finalColor;\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"},744:e=>{e.exports="precision highp float;\n\nvarying vec4 trapBounds; // [x1, lineY1, x2, lineY2]\nvarying vec4 trapBottom; // [x1, bottomY1, x2, bottomY2] \nvarying vec2 worldPos; // World position\n\nuniform int gradientCount;\nuniform sampler2D gradientTexture; // Texture containing gradient data\nuniform vec4 fallbackColor;\n\nvec4 interpolateGradient(float position) {\n if (gradientCount <= 0) {\n return fallbackColor;\n }\n if (gradientCount == 1) {\n return texture2D(gradientTexture, vec2(0.5 / float(gradientCount * 2), 0.5));\n }\n\n float textureWidth = float(gradientCount * 2);\n float firstStop = texture2D(gradientTexture, vec2(0.5 / textureWidth, 0.5)).r;\n float lastStop = texture2D(gradientTexture, vec2((float((gradientCount - 1) * 2) + 0.5) / textureWidth, 0.5)).r;\n \n // Scale position to fit the gradient range\n if (lastStop > firstStop) {\n position = firstStop + position * (lastStop - firstStop);\n }\n \n position = clamp(position, 0.0, 1.0);\n\n // Handle boundary cases first\n vec4 firstColor = texture2D(gradientTexture, vec2(1.5 / textureWidth, 0.5));\n vec4 lastColor = texture2D(gradientTexture, vec2((float((gradientCount - 1) * 2 + 1) + 0.5) / textureWidth, 0.5));\n \n if (position <= firstStop) return firstColor;\n if (position >= lastStop) return lastColor;\n \n // Calculate normalized position within the gradient range\n float normalizedPos = (position - firstStop) / max(lastStop - firstStop, 0.001);\n normalizedPos = clamp(normalizedPos, 0.0, 1.0);\n \n // Map to segment index using only float operations\n float segmentFloat = normalizedPos * float(gradientCount - 1);\n float segmentIndex = floor(segmentFloat);\n \n // Ensure segment index is within valid bounds using float operations\n segmentIndex = min(segmentIndex, float(gradientCount - 2));\n segmentIndex = max(segmentIndex, 0.0);\n \n // Calculate texture coordinates for the two colors to interpolate\n float texCoordA = (segmentIndex * 2.0 + 1.0 + 0.5) / textureWidth;\n float texCoordB = ((segmentIndex + 1.0) * 2.0 + 1.0 + 0.5) / textureWidth;\n \n // Sample the two colors\n vec4 colorA = texture2D(gradientTexture, vec2(texCoordA, 0.5));\n vec4 colorB = texture2D(gradientTexture, vec2(texCoordB, 0.5));\n \n // Get the actual gradient stops for proper interpolation\n float stopA = texture2D(gradientTexture, vec2((segmentIndex * 2.0 + 0.5) / textureWidth, 0.5)).r;\n float stopB = texture2D(gradientTexture, vec2(((segmentIndex + 1.0) * 2.0 + 0.5) / textureWidth, 0.5)).r;\n \n // Calculate interpolation factor based on actual stop positions\n float stopRange = stopB - stopA;\n float t = stopRange > 0.001 ? (position - stopA) / stopRange : 0.0;\n t = clamp(t, 0.0, 1.0);\n \n return mix(colorA, colorB, t);\n}\n\nvoid main() {\n float pixelX = worldPos.x;\n float pixelY = worldPos.y;\n \n // Extract trapezoid corners\n float x1 = trapBounds.x;\n float lineY1 = trapBounds.y;\n float x2 = trapBounds.z;\n float lineY2 = trapBounds.w;\n \n float bottomX1 = trapBottom.x;\n float bottomY1 = trapBottom.y;\n float bottomX2 = trapBottom.z;\n float bottomY2 = trapBottom.w;\n \n // Interpolate line Y at current pixel X\n float t = (pixelX - x1) / (x2 - x1 + 0.001); // Avoid division by zero\n t = clamp(t, 0.0, 1.0);\n \n float lineYAtPixel = mix(lineY1, lineY2, t);\n float bottomYAtPixel = mix(bottomY1, bottomY2, t);\n \n // Calculate gradient position: 0.0 at line, 1.0 at bottom\n float totalDistance = abs(bottomYAtPixel - lineYAtPixel);\n float gradientPos = totalDistance > 0.001 ? \n abs(pixelY - lineYAtPixel) / totalDistance : 0.0;\n \n vec4 color = interpolateGradient(gradientPos);\n gl_FragColor = color;\n}\n"},885:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\nattribute vec4 trapezoidBounds; // [x1, y1_line, x2, y2_line] - the line segment \nattribute vec4 trapezoidBottom; // [x1, y1_bottom, x2, y2_bottom] - the bottom segment\n\nuniform float width;\nuniform float height;\n\nvarying vec4 trapBounds; // Pass trapezoid line bounds to fragment\nvarying vec4 trapBottom; // Pass trapezoid bottom bounds to fragment \nvarying vec2 worldPos; // Pass world position\n\nvoid main() {\n trapBounds = trapezoidBounds;\n trapBottom = trapezoidBottom;\n worldPos = position;\n \n gl_Position = vec4(2.0*position.x/width - 1.0, 1.0 - 2.0*position.y/height, 0.0, 1.0);\n}\n"}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var o=i[e]={id:e,exports:{}};return n[e](o,o.exports,r),o.exports}r.m=n,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,n)=>(r.f[n](e,t),t)),[])),r.u=e=>e+".bundle.cjs",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="Grapher:",r.l=(n,i,o,a)=>{if(e[n])e[n].push(i);else{var s,l;if(void 0!==o)for(var h=document.getElementsByTagName("script"),c=0;c<h.length;c++){var g=h[c];if(g.getAttribute("src")==n||g.getAttribute("data-webpack")==t+o){s=g;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",t+o),s.src=n),e[n]=[i];var A=(t,i)=>{s.onerror=s.onload=null,clearTimeout(d);var r=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach((e=>e(i))),t)return t(i)},d=setTimeout(A.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=A.bind(null,s.onerror),s.onload=A.bind(null,s.onload),l&&document.head.appendChild(s)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/assets/",(()=>{r.b=document.baseURI||self.location.href;var e={792:0};r.f.j=(t,n)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{var o=new Promise(((n,r)=>i=e[t]=[n,r]));n.push(i[2]=o);var a=r.p+r.u(t),s=new Error;r.l(a,(n=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,i[1](s)}}),"chunk-"+t,t)}};var t=(t,n)=>{var i,o,[a,s,l]=n,h=0;if(a.some((t=>0!==e[t]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);l&&l(r)}for(t&&t(n);h<a.length;h++)o=a[h],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0},n=globalThis.webpackChunkGrapher=globalThis.webpackChunkGrapher||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{AVAILABLE_COLORS:()=>dn,BUILT_IN_BOUND_CALCULATORS:()=>pn,Grapher:()=>cn,MultiGrapher:()=>fn,RangeSelection:()=>Kt,SyncPool:()=>ln,default:()=>cn});const e=require("react");var t=r.n(e),n=r(556),i=r.n(n);const a=["values","tuples","objects"],s=[...a,"tuple_observable","object_observable","generator"],l=i().any,h=i().shape({data:l.isRequired,type:i().oneOf([...s,"infer"]),xKey:i().string,yKey:i().string,xUnixDates:i().bool,color:i().oneOfType([i().string,i().number]),name:i().string,xLabel:i().string,yLabel:i().string,ignoreDiscontinuities:i().bool,dashed:i().bool,dashPattern:i().arrayOf(i().number),width:i().number,rangeSelectorWidth:i().number,axis:i().oneOfType([i().string,i().object]),expandYWith:i().arrayOf(i().number),defaultAlwaysTooltipped:i().bool,square:i().bool,shiftXBy:i().number,graph:i().number,background:i().object,hideFromKey:i().bool,showIndividualPoints:i().bool,minPointSpacing:i().number,rendering:i().oneOf(["line","bar","area","shadow"]),negativeColor:i().string,gradient:i().array,negativeGradient:i().array,zeroLineWidth:i().number,zeroLineColor:i().string,zeroLineY:i().oneOfType([i().number,i().string]),pointRadius:i().number,tooltipWidth:i().number,hasAreaBottom:i().bool,shadowColor:i().string,gradient:i().arrayOf(i().oneOfType([i().string,i().array])),rangeKey:i().string}),c=i().arrayOf(h),g=i().shape({axisIndex:i().number.isRequired,series:i().array.isRequired,side:i().oneOf(["left","right"]).isRequired,scale:i().oneOf(["linear","log"]).isRequired,label:i().string}),A=i().arrayOf(g),d=i().shape({label:i().string.isRequired,calculator:i().func.isRequired,datesOnly:i().bool}),p=i().arrayOf(d),u={includeSeriesLabel:i().bool,includeXLabel:i().bool,includeYLabel:i().bool,includeXValue:i().bool,includeYValue:i().bool,floating:i().bool,alwaysFixedPosition:i().bool,floatPosition:i().oneOf(["top","bottom"]),floatDelta:i().number,savingDisabled:i().bool,customTooltip:i().func,combineTooltips:i().oneOfType([i().bool,i().number])},m=i().shape(u),f=i().shape({x:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),startX:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),endX:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),series:i().arrayOf(i().string),content:i().string,lineOnly:i().bool}),C=i().arrayOf(f),x=i().shape({x:i().number.isRequired,y:i().number.isRequired,radius:i().number,fillColor:i().string,strokeColor:i().string,strokeWidth:i().number,onClick:i().func,onDoubleClick:i().func}),b=i().arrayOf(x),y=i().shape({x:i().oneOfType([i().number,i().instanceOf(Date)]).isRequired,color:i().string,lineTop:i().number,width:i().number,markTop:i().bool,style:i().object,markerStyle:i().object,text:i().string,textTop:i().number,textStyle:i().object,minPixelX:i().number,maxPixelX:i().number,onRangeGraph:i().oneOfType([i().bool,i().object]),onRangeGraphOnly:i().bool}),_={Data:l,SingleSeries:h,Series:c,Axis:g,Axes:A,CustomBoundsSelector:d,CustomBoundsSelectors:p,TooltipOptions:m,TooltipOptionsRaw:u,Annotations:C,DraggablePoint:x,DraggablePoints:b,VerticalLine:y,VerticalLines:i().arrayOf(y)};class B{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 v=r(365);function w(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")}var E=r(400),k=r.n(E),S=r(765),D=r.n(S);function T(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]{3}$|^#[\dA-F]{6}$/i.test(e))throw new Error(`Color must be a hex string: ${e}`);return 4===e.length&&(e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),[parseInt(e.substr(1,2),16)/255,parseInt(e.substr(3,2),16)/255,parseInt(e.substr(5,2),16)/255,1]}function z(e,t,n){const i=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(i,t),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(i)),null;const r=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(r)),null;const o=e.createProgram();return e.attachShader(o,i),e.attachShader(o,r),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.validateProgram(o),e.getProgramParameter(o,e.VALIDATE_STATUS)?o:(console.error("Shader program validation failed:",e.getProgramInfoLog(o)),null)):(console.error("Shader program linking failed:",e.getProgramInfoLog(o)),null)}class R{constructor(e){this._gl=e,this._program=z(e,D(),k()),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:i,color:r}of e){t.uniform4f(t.getUniformLocation(this._program,"color"),...T(r));const e=new Float32Array([n,1,i,1,i,-1,n,1,i,-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)}}}const X=2;async function Y(e,t,{reset:n=!0}={}){n&&(e.width="",e.height="",e.style.width="0",e.style.height="",await new Promise((e=>requestAnimationFrame(e))));let i=e.parentNode.getBoundingClientRect();for(;0===i.width;)await new Promise((e=>requestAnimationFrame(e))),i=e.getBoundingClientRect();const r=window.devicePixelRatio||1,o=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1,a=X*r/o,s=i.width,l=i.height,h=s*a,c=l*a;return e.width=h,e.height=c,e.style.width=`${s}px`,e.style.height=`${l}px`,{pixelRatio:a,elementWidth:s,elementHeight:l,renderWidth:h,renderHeight:c,boundingRect:i}}function P(e,{splitAtY:t}={}){const n=[];let i=[],r=!0;const{nullMask:o,maxYValues:a,minYValues:s,yValues:l}=e;for(let e=0;e<l.length;e++){const h=e*X,c=l[e];if(1&o[e]){r||(n.push(i),i=[]),r=!0;continue}i.push([h,c]);const g=s[e],A=a[e];if(g!==A&&(2&o[e]||i.push([h,g]),4&o[e]||i.push([h,A]),i.push([h,c])),r=!1,"number"==typeof t&&e>0){const a=l[e-1];(!(1&o[e-1])&&a<t&&c>=t||a>t&&c<=t||a===t&&c!==t)&&(r||(n.push(i),i=[[h,c]]),r=!0)}}return r||n.push(i),n}function M(e,{context:t,sizing:n,color:i,zeroColor:r,zeroWidth:o}){o&&(t?(t.strokeStyle=r||i,t.lineWidth=o,t.beginPath(),t.moveTo(0,e),t.lineTo(n.renderWidth,e),t.stroke()):console.error("Canvas context is null in drawZeroLine"))}function F(e,t,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s}){if(i.fillStyle=n,s&&s.length>=2){const e=i.createLinearGradient(0,0,0,r.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)}i.fillStyle=e}const l=a?o:r.renderHeight;i.beginPath();const[h,c]=e[0],[g,A]=e[e.length-1];t||i.moveTo(h,l);for(let t=0;t<e.length;t++){const[n,r]=e[t];i.lineTo(n,r)}if(t&&t.length){for(let e=t.length-1;e>=0;e--){const[n,r]=t[e];i.lineTo(n,r)}i.lineTo(...e[0])}else i.lineTo(g,l);i.fill()}function L(e,t,n,i,r,{color:o,context:a,sizing:s,zero:l,hasNegatives:h,gradient:c,areaBottomPaths:g}){if(a.fillStyle=o,c&&c.length>=2){const e=a.createLinearGradient(0,0,0,s.renderHeight);for(let t=0;t<c.length;t++){const n=c[t];if(Array.isArray(n)){const t=r?(0,v.applyReducedOpacity)(n[1],.35):n[1];e.addColorStop(n[0],t)}else{const i=r?(0,v.applyReducedOpacity)(n,.35):n;e.addColorStop(t/(c.length-1),i)}}a.fillStyle=e}const A=h?l:s.renderHeight;if(a.beginPath(),r){const r=i?n+1:n,[o]=e[0];g||a.moveTo(o,A);for(let t=0;t<=r&&t<e.length;t++){const[n,o]=t===r&&i?i:e[t];a.lineTo(n,o)}if(t&&t.length){for(let e=Math.min(r,t.length-1);e>=0;e--){const[n,i]=t[e];a.lineTo(n,i)}a.lineTo(...e[0])}else{const t=i||e[r]||e[e.length-1];a.lineTo(t[0],A)}}else{const r=i?n:n+1,o=i||e[r];if(o){a.moveTo(o[0],A),i&&a.lineTo(...i);for(let t=r;t<e.length;t++)a.lineTo(...e[t]);if(t&&t.length){for(let e=t.length-1;e>=Math.max(r,0);e--){const[n,i]=t[e];a.lineTo(n,i)}i&&a.lineTo(i[0],A)}else{const[t]=e[e.length-1];a.lineTo(t,A)}}}a.fill()}function I(e,{color:t,context:n,negativeColor:i,hasNegatives:r,zero:o,zeroColor:a,pointRadius:s}){if(e&&Array.isArray(e))for(let l=0;l<e.length;l++){const[h,c]=e[l];let g=t;i&&r&&(g=c===o&&a?a:c<o?t:i),n.fillStyle=g,n.beginPath(),n.arc(h,c,s||8,0,2*Math.PI,!1),n.fill()}}function O(e,{color:t,context:n,hasNegatives:i,negativeColor:r,width:o,highlighted:a}){if(e&&Array.isArray(e)){a&&(o+=2),o*=X;for(let a of e)if(a.length){n.strokeStyle=i&&r?r:t,n.lineWidth=o,n.beginPath();for(let e=0;e<a.length;e++){const[t,i]=a[e];0===e?n.moveTo(t,i):n.lineTo(t,i)}n.stroke()}}}function G(e,t,{color:n,context:i,hasNegatives:r,negativeColor:o,zero:a,width:s,highlighted:l,cutoffOpacity:h}){if(!e||!Array.isArray(e))return;l&&(s+=2),s*=X;const c=t*i.canvas.width,g=[],A=[];for(let t of e){if(!t.length)continue;const e=[],n=[];let i=null,r=-1;for(let i=0;i<t.length;i++){const[o,a]=t[i];o<c?(e.push([o,a]),r=i):n.push([o,a])}if(e.length>0&&n.length>0){const t=e[e.length-1],r=n[0],[o,a]=t,[s,l]=r;s!==o&&(i=[c,a+(c-o)/(s-o)*(l-a)],e.push(i),n.unshift(i))}e.length>0&&g.push(e),n.length>0&&A.push(n)}if(g.length>0){const e=(0,v.applyReducedOpacity)(n,h);i.strokeStyle=e,i.lineWidth=s;for(let e of g)if(e.length>1){i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}}if(A.length>0){i.strokeStyle=r&&o?o:n,i.lineWidth=s;for(let e of A)if(e.length>1){i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}}}function $(e,t,{color:n,context:i,negativeColor:r,hasNegatives:o,zero:a,zeroColor:s,pointRadius:l,cutoffOpacity:h}){if(!e||!Array.isArray(e))return;const c=t*i.canvas.width;for(let t=0;t<e.length;t++){const[g,A]=e[t],d=g<c;let p=n;d&&(p=(0,v.applyReducedOpacity)(n,h)),r&&o&&(p=A===a&&s?s:A<a?d?(0,v.applyReducedOpacity)(n,h):n:d?(0,v.applyReducedOpacity)(r,h):r),i.fillStyle=p,i.beginPath(),i.arc(g,A,l||8,0,2*Math.PI,!1),i.fill()}}function N({closestSpacing:e,bounds:t,sizing:n,axisSeriesCount:i}){const r=e/(t.maxX-t.minX)*n.renderWidth,o=.8*r;return{barWidth:o/i,totalBarWidth:o,barSpacing:.2*r}}function W(e,t){if(!t||e.length<=1)return e;const n=[];let i=-1/0;for(const r of e){const[e]=r;e-i>=t&&(n.push(r),i=e)}return n}var U=r(390),H=r.n(U),q=r(39),j=r.n(q),K=r(120),V=r.n(K),J=r(789),Z=r.n(J);let Q;const ee=r.e(744).then(r.bind(r,363)).then((e=>e.default().then((()=>{Q=e}))));function te(){return Q}function ne(e,{dashed:t,dashPattern:n}){let i=0;for(let r of e)if(t)for(let e=0;e<r.length;e++)t&&e%(n[0]+n[1])>=n[0]||i++;else i+=r.length;const r=new Float32Array(8*i),o=new Float32Array(8*i),a=new Float32Array(4*i),s=new Uint32Array(6*i);if(i>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 i of e)for(let e=0;e<i.length;e++){if(t&&e%(n[0]+n[1])>=n[0])continue;const[a,h]=i[e];let c,g;0===e?(c=a-1,g=h):[c,g]=i[e-1];for(let e=0;e<4;e++)r[8*l+2*e]=a,r[8*l+2*e+1]=h,o[8*l+2*e]=c,o[8*l+2*e+1]=g;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:r,prevPositions:o,vertices:a,indices:s}}class ie{constructor(e){this._gl=e,this._program=z(e,j(),H()),this._circleProgram=z(e,Z(),V()),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.viewport(0,0,t,n)}draw(e,t){const n=this._gl,i=n.drawingBufferWidth,r=n.drawingBufferHeight;n.useProgram(this._program);const o=X*((t.width||1)+(t.highlighted?2:0)),a=void 0===t.shadowBlur?2:t.shadowBlur,s=t.shadowColor||"black",l=t.dashed||!1,h=t.dashPattern||[5,5];if(t.renderCutoffGradient&&void 0!==t.cutoffIndex&&t.originalData)return void this.drawLineWithCutoff(e,t);const{positions:c,prevPositions:g,vertices:A,indices:d}=function(e,{dashed:t,dashPattern:n}){if(e&&e.paths)return ne(e.paths,{dashed:t,dashPattern:n});if(!te())return ne(P(e),{dashed:t,dashPattern:n});const i=te().get_point_number(e.nullMask,e.yValues,e.minYValues,e.maxYValues,t,n[0],n[1]);let r=new Float32Array(8*i),o=new Float32Array(8*i),a=new Float32Array(4*i),s=new Uint32Array(6*i);return te().extract_vertices(X,e.nullMask,e.yValues,e.minYValues,e.maxYValues,r,o,a,s,t,n[0],n[1]),{positions:r,prevPositions:o,vertices:a,indices:s}}(e,{dashed:l,dashPattern:h});if(!this._program)return void console.error("WebGL line program is null - shader compilation failed!");const p=n.getAttribLocation(this._program,"position"),u=n.getAttribLocation(this._program,"prevPosition"),m=n.getAttribLocation(this._program,"vertex");n.enableVertexAttribArray(p),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,c,n.STATIC_DRAW),n.vertexAttribPointer(p,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(u),n.bindBuffer(n.ARRAY_BUFFER,this._prevPositionBuffer),n.bufferData(n.ARRAY_BUFFER,g,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,A,n.STATIC_DRAW),n.vertexAttribPointer(m,1,n.FLOAT,!1,0,0),n.uniform1f(n.getUniformLocation(this._program,"width"),i),n.uniform1f(n.getUniformLocation(this._program,"height"),r),n.uniform1f(n.getUniformLocation(this._program,"thickness"),Math.max(o,1)+a),n.uniform1f(n.getUniformLocation(this._program,"shadowBlur"),a);const f=T(t.color);n.uniform4f(n.getUniformLocation(this._program,"color"),...f),n.uniform4f(n.getUniformLocation(this._program,"shadowColor"),...T(s));const C=void 0!==t.cutoffX?t.cutoffX:-1,x=void 0!==t.cutoffOpacity?t.cutoffOpacity:.35;if(n.uniform1f(n.getUniformLocation(this._program,"cutoffX"),C),n.uniform1f(n.getUniformLocation(this._program,"cutoffOpacity"),x),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,d,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,d.length,n.UNSIGNED_INT,0),t.showIndividualPoints){n.useProgram(this._circleProgram),n.uniform1f(n.getUniformLocation(this._circleProgram,"width"),i),n.uniform1f(n.getUniformLocation(this._circleProgram,"height"),r);const e=t.pointRadius?2*t.pointRadius*X:2*(o+6);n.uniform1f(n.getUniformLocation(this._circleProgram,"pointSize"),e);let a=t.getIndividualPoints();if(t.minPointSpacing&&a.length>1){const e=[];let n=-1/0;for(const i of a){const[r]=i;r-n>=t.minPointSpacing&&(e.push(i),n=r)}a=e}if(void 0!==t.cutoffIndex&&t.cutoffIndex>0&&t.originalData){const{originalData:e}=t;let r;if("object"==typeof e[0]&&2===e[0].length){const n=Math.floor(t.cutoffIndex),i=t.cutoffIndex-n;if(0===i||n>=e.length-1){const t=e[Math.min(n,e.length-1)][0];r=t instanceof Date?t.getTime():t}else{const t=e[n][0],o=e[n+1][0],a=t instanceof Date?t.getTime():t;r=a+i*((o instanceof Date?o.getTime():o)-a)}}const o=[],s=[];if(t.isPreview){const e=t.selectionBounds.minX instanceof Date?t.selectionBounds.minX.getTime():t.selectionBounds.minX,n=(r-e)/((t.selectionBounds.maxX instanceof Date?t.selectionBounds.maxX.getTime():t.selectionBounds.maxX)-e)*i;for(let e=0;e<a.length;e++){const[t,i]=a[e];t<n?o.push(a[e]):s.push(a[e])}}else if(t.selectionBounds){const e=t.selectionBounds.minX instanceof Date?t.selectionBounds.minX.getTime():t.selectionBounds.minX,n=t.selectionBounds.maxX instanceof Date?t.selectionBounds.maxX.getTime():t.selectionBounds.maxX;if(r<e)s.push(...a);else if(r>n)"shadow"===t.rendering?s.push(...a):o.push(...a);else{const t=(r-e)/(n-e)*this._gl.canvas.width;a.forEach(((e,n)=>{const[i,r]=e;i<t?o.push(e):s.push(e)}))}}else s.push(...a);if(o.length>0){const e=(0,v.applyReducedOpacity)(t.color,t.cutoffOpacity||.35);n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(e)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(o.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,o.length)}s.length>0&&(n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(t.color)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(s.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,s.length))}else n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(t.color)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(a.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,a.length)}}drawLineWithCutoff(e,t){const{cutoffIndex:n,cutoffOpacity:i,originalData:r,selectionBounds:o}=t;let a;if("object"==typeof r[0]&&2===r[0].length){const e=Math.floor(n),t=n-e;if(0===t||e>=r.length-1){const t=r[Math.min(e,r.length-1)][0];a=t instanceof Date?t.getTime():t}else{const n=r[e][0],i=r[e+1][0],o=n instanceof Date?n.getTime():n;a=o+t*((i instanceof Date?i.getTime():i)-o)}}else a=n;if(t.isPreview){const n=this._gl,r=o.minX instanceof Date?o.minX.getTime():o.minX,s=(a-r)/((o.maxX instanceof Date?o.maxX.getTime():o.maxX)-r);if(s<0)this.draw(e,{...t,renderCutoffGradient:!1});else if(s>1){const n=(0,v.applyReducedOpacity)(t.color,i);this.draw(e,{...t,color:n,renderCutoffGradient:!1})}else n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA),this.draw(e,{...t,renderCutoffGradient:!1,cutoffX:s,cutoffOpacity:i||.35})}else{if(!o)return void this.draw(e,{...t,renderCutoffGradient:!1});const n=o.minX instanceof Date?o.minX.getTime():o.minX,r=o.maxX instanceof Date?o.maxX.getTime():o.maxX;if(a<n)this.draw(e,{...t,renderCutoffGradient:!1});else if(a>r){const n=(0,v.applyReducedOpacity)(t.color,i);this.draw(e,{...t,color:n,renderCutoffGradient:!1})}else{const o=(a-n)/(r-n),s=this._gl;s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),this.draw(e,{...t,renderCutoffGradient:!1,cutoffX:o,cutoffOpacity:i||.35})}}}}var re=r(744),oe=r.n(re),ae=r(885),se=r.n(ae);class le{constructor(e){if(this._gl=e,this._program=z(e,se(),oe()),!this._program)return console.error("Failed to create shadow shader program"),void(this._program=null);e.validateProgram(this._program),e.getProgramParameter(this._program,e.VALIDATE_STATUS)||console.error("Shadow program validation failed:",e.getProgramInfoLog(this._program));const t=e.getAttribLocation(this._program,"position"),n=e.getAttribLocation(this._program,"trapezoidBounds"),i=e.getAttribLocation(this._program,"trapezoidBottom");-1!==t&&-1!==n&&-1!==i||console.error("Missing required shader attributes"),this._positionBuffer=e.createBuffer(),this._trapezoidBoundsBuffer=e.createBuffer(),this._trapezoidBottomBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),this._gradientTexture=e.createTexture(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}dispose(){const e=this._gl;this._gradientTexture&&(e.deleteTexture(this._gradientTexture),this._gradientTexture=null)}generateTrapezoidGeometry(e){const t=[],n=[],i=[],r=[];let o=0;for(const a of e){const{x1:e,y1:s,x2:l,y2:h,bottomY1:c,bottomY2:g}=a,A=[[e,s],[l,h],[l,g],[e,c]],d=[e,s,l,h],p=[e,c,l,g];for(let e=0;e<4;e++){const[r,o]=A[e];t.push(r,o),n.push(...d),i.push(...p)}r.push(o,o+1,o+2,o,o+2,o+3),o+=4}return{positions:new Float32Array(t),trapezoidBounds:new Float32Array(n),trapezoidBottom:new Float32Array(i),indices:new Uint32Array(r)}}parseGradient(e,t){if(!e||!Array.isArray(e)||e.length<2){const e=T(t);return{textureData:new Uint8Array([0,0,0,255,Math.floor(255*e[0]),Math.floor(255*e[1]),Math.floor(255*e[2]),Math.floor(255*e[3])]),textureWidth:2,gradientCount:1,fallbackColor:e}}const n=[],i=[];for(let t=0;t<e.length;t++){const r=e[t];Array.isArray(r)?(i.push(r[0]),n.push(T(r[1]))):(i.push(t/(e.length-1)),n.push(T(r)))}const r=2*n.length,o=new Uint8Array(4*r);for(let e=0;e<n.length;e++){const t=8*e,r=t+4;o[t]=Math.floor(255*i[e]),o[t+1]=0,o[t+2]=0,o[t+3]=255,o[r]=Math.floor(255*n[e][0]),o[r+1]=Math.floor(255*n[e][1]),o[r+2]=Math.floor(255*n[e][2]),o[r+3]=Math.floor(255*n[e][3])}return{textureData:o,textureWidth:r,gradientCount:n.length,fallbackColor:T(t)}}draw(e,t){if(!e||e.length<2)return;const n=this._gl,i=n.drawingBufferWidth,r=n.drawingBufferHeight;if(n.useProgram(this._program),t.renderCutoffGradient&&void 0!==t.cutoffIndex&&t.originalData)return void this.drawShadowWithCutoff(e,t);const o=[],a=[],s=[],{zero:l,inRenderSpaceAreaBottom:h,negativeGradient:c,hasNegatives:g}=t;for(let t=0;t<e.length-1;t++){const[n,r]=e[t],[h,A]=e[t+1];let d=l,p=l;const u=r-l,m=A-l;if(u*m<0){const e=n+(h-n)*(Math.abs(u)/(Math.abs(u)+Math.abs(m))),t=l;if(Math.abs(r-t)>.1){const i={x1:n,y1:r,x2:e,y2:t,bottomY1:d,bottomY2:l};o.push(i),g&&c&&(r<=l?a.push(i):s.push(i))}if(Math.abs(A-t)>.1){const n={x1:e,y1:t,x2:h,y2:A,bottomY1:l,bottomY2:p};o.push(n),g&&c&&(A<=l?a.push(n):s.push(n))}}else{if(n>i||h<0)continue;let e=h,t=A,u=p;if(h>i){const o=(i-n)/(h-n);e=i,t=r+(A-r)*o,u=d+(p-d)*o}const m={x1:n,y1:r,x2:e,y2:t,bottomY1:d,bottomY2:u};o.push(m),g&&c&&((r+t)/2<=l?a.push(m):s.push(m))}}if(0===o.length)return;const A=n.getAttribLocation(this._program,"position"),d=n.getAttribLocation(this._program,"trapezoidBounds"),p=n.getAttribLocation(this._program,"trapezoidBottom");n.uniform1f(n.getUniformLocation(this._program,"width"),i),n.uniform1f(n.getUniformLocation(this._program,"height"),r),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA);const u=(e,t,i)=>{if(0===e.length)return;const r=this.generateTrapezoidGeometry(e);n.enableVertexAttribArray(A),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,r.positions,n.STATIC_DRAW),n.vertexAttribPointer(A,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(d),n.bindBuffer(n.ARRAY_BUFFER,this._trapezoidBoundsBuffer),n.bufferData(n.ARRAY_BUFFER,r.trapezoidBounds,n.STATIC_DRAW),n.vertexAttribPointer(d,4,n.FLOAT,!1,0,0),n.enableVertexAttribArray(p),n.bindBuffer(n.ARRAY_BUFFER,this._trapezoidBottomBuffer),n.bufferData(n.ARRAY_BUFFER,r.trapezoidBottom,n.STATIC_DRAW),n.vertexAttribPointer(p,4,n.FLOAT,!1,0,0);const o=this.parseGradient(t,i);n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this._gradientTexture),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,o.textureWidth,1,0,n.RGBA,n.UNSIGNED_BYTE,o.textureData),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.uniform1i(n.getUniformLocation(this._program,"gradientTexture"),0),n.uniform1i(n.getUniformLocation(this._program,"gradientCount"),o.gradientCount),n.uniform4fv(n.getUniformLocation(this._program,"fallbackColor"),o.fallbackColor),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,r.indices,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,r.indices.length,n.UNSIGNED_INT,0)};g&&c&&(a.length>0||s.length>0)?(u(a,t.gradient,t.color),u(s,c,t.color)):u(o,t.gradient,t.color);const m=n.getError();m!==n.NO_ERROR&&console.error("WebGL error in shadow rendering:",m)}drawShadowWithCutoff(e,t){const{cutoffIndex:n,cutoffOpacity:i,originalData:r,selectionBounds:o,zero:a}=t;let s;if(this._lastIndividualPoints=null,this._lastParams=null,Array.isArray(r[0])&&2===r[0].length){const e=Math.floor(n),t=n-e;if(0===t||e>=r.length-1){const t=r[Math.min(e,r.length-1)][0];s=t instanceof Date?t.getTime():t}else{const n=r[e],i=r[e+1],o=n[0],a=i[0],l=o instanceof Date?o.getTime():o;s=l+t*((a instanceof Date?a.getTime():a)-l)}}else s=n;const l=t.selectionBounds;let h,c;if(l&&void 0!==l.minX&&void 0!==l.maxX)h=l.minX instanceof Date?l.minX.getTime():l.minX,c=l.maxX instanceof Date?l.maxX.getTime():l.maxX;else{const e=r[0],t=r[r.length-1],n=e[0],i=t[0];h=n instanceof Date?n.getTime():n,c=i instanceof Date?i.getTime():i}const g=(s-h)/(c-h);if(g<0)this.draw(e,{...t,renderCutoffGradient:!1});else if(g>1){const n=(0,v.applyReducedOpacity)(t.color,i),r=(0,v.applyReducedOpacityToGradient)(t.gradient,i);this.draw(e,{...t,color:n,gradient:r,renderCutoffGradient:!1})}else this.drawSplitShadowTrapezoids(e,{...t,selectionBounds:t.selectionBounds},g,s)}drawSplitShadowTrapezoids(e,t,n,i){const{zero:r,cutoffOpacity:o,selectionBounds:a}=t,s=n*this._gl.canvas.width,l=[],h=[];for(let t=0;t<e.length;t++){const[n,i]=e[t];n<s?l.push(e[t]):h.push(e[t])}let c=null;if(l.length>0&&h.length>0){const e=l[l.length-1],t=h[0],[n,i]=e,[r,o]=t;r!==n&&(c=[s,i+(s-n)/(r-n)*(o-i)],l.push(c),h.unshift(c))}if(l.length>=2){const e=(0,v.applyReducedOpacity)(t.color,o),n=this._gl;n.disable(n.DEPTH_TEST),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA);const i=(0,v.applyReducedOpacityToGradient)(t.gradient,o);this.draw(l,{...t,color:e,gradient:i,renderCutoffGradient:!1})}h.length>=2&&this.draw(h,{...t,renderCutoffGradient:!1})}}class he extends B{constructor({stateController:e,canvasElement:t,webgl:n=!1,checkIntersection:i=!0}){return super(),this._stateController=e,this._checkIntersection=i,this._canvas=t,this._webgl=n,this._canvas?(n&&(this._context=this._canvas.getContext("webgl"),this._context?(this._lineProgram=new ie(this._context),this._shadowProgram=new le(this._context)):(console.error("❌ WebGL context creation failed"),alert("WebGL failed! Attempting fallback to CPU rendering"),this._webgl=!1)),this._webgl||(this._context=this._canvas.getContext("2d"),this._context2d=this._context),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),void e.on("showing_sidebar_changed",this._boundResize)):(console.error("Failed to get canvas context in GraphBodyRenderer"),void(this._initialized=!1))):(console.error("Canvas element is null in GraphBodyRenderer constructor"),void(this._initialized=!1))}dispose(){this.clearListeners(),this._lineProgram&&this._lineProgram.dispose(),this._shadowProgram&&this._shadowProgram.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(),this._zeroLineCanvas&&this._zeroLineCanvas.parentNode&&(this._zeroLineCanvas.parentNode.removeChild(this._zeroLineCanvas),this._zeroLineCanvas=null,this._zeroLineContext=null)}clear(){this._webgl?(this._lineProgram.clear(),this._overlayContext&&this._overlayContext.clearRect(0,0,this._overlayCanvas.width,this._overlayCanvas.height),this._overlayCanvasInitialized=!1):this._context.clearRect(0,0,this._context.canvas.width,this._context.canvas.height)}render(e,t,{highlighted:n,showIndividualPoints:i,shadowColor:o,shadowBlur:a,width:s,defaultLineWidth:l,bounds:h,globalBounds:c,inRenderSpaceAreaBottom:g}){if(!this._initialized||!this._context||!this._canvas)return void console.warn("GraphBodyRenderer: Cannot render - not initialized, missing context, or missing canvas");let A=-1,d=null,p=e.data;if(e.data&&e.data.length>0&&"object"==typeof e.data[0]&&!Array.isArray(e.data[0])&&e.cutoffTime&&(p=e.data.map((t=>{const n=t[e.xKey||"x"],i=t[e.yKey||"y"];return["string"==typeof n?new Date(n):n,i]}))),e.cutoffTime&&e.data&&e.data.length>0){let t;t="now"===e.cutoffTime?new Date:"number"==typeof e.cutoffTime?new Date(e.cutoffTime):e.cutoffTime,d=t instanceof Date?t.getTime():t;for(let e=0;e<p.length-1;e++){const t=p[e],n=p[e+1],i=t[0]instanceof Date?t[0].getTime():t[0],r=n[0]instanceof Date?n[0].getTime():n[0];if(i<=d&&d<=r){A=e+(d-i)/(r-i);break}if(i>d){A=e;break}}-1===A&&(A=p.length-1)}const u=(n,r=!1)=>{if(!n&&t&&t.yValues&&!i){h||(h=e.axis.currentBounds);const n=[],{yValues:i,nullMask:o}=t,a=i.length/2;let s=0;const l=[];for(let e=0;e<i.length;e++)if(0===o[e]){const t=e*X;n.push([t,i[e]]),e>a&&(s++,l.length<3&&l.push({pixelX:e,xCoord:t,nullMask:o[e]}))}return n.length<50?u(!0,r):n}h||(h=e.axis.currentBounds);const o=[];let a=e.inSelectedSpace.data;n&&(a=e.inDataSpace);let s=h.minX instanceof Date?h.minX.getTime():h.minX,l=h.maxX instanceof Date?h.maxX.getTime():h.maxX,c=!1,g=null;for(let t=0;t<a.length;t++){let n,i;if(Array.isArray(a[t]))[n,i]=a[t];else{if("object"!=typeof a[t]||null===a[t])continue;n=a[t][e.xKey],i=a[t][e.yKey]}if(null==i)continue;let A=n instanceof Date?n.getTime():n;if(A<s){r&&(g=[A,i]);continue}if(A>l){if(!r||c)break;c=!0}const d=(A-s)/(l-s)*(this._sizing.renderWidth/X-1)*X,p=(1-(i-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;o.push([d,p])}if(g&&r){const[e,t]=g,n=(e-s)/(l-s)*(this._sizing.renderWidth/X-1)*X,i=(1-(t-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;o.unshift([n,i])}return o};let m;if("bar"===e.rendering||"area"===e.rendering){if(this._webgl)return void console.warn(`CPU rendering (${e.rendering}) is not supported with webgl={true}. Use webgl={false} or switch to 'line' rendering.`);if(this._context2d||(this._context2d=this._canvas.getContext("2d",{willReadFrequently:!1})),!this._context2d)return void console.error("Failed to get 2D context for CPU rendering");if(this._webgl&&this._context.flush(),h||(h=e.axis?.currentBounds),!h)return void console.error("No bounds available for rendering");const t="bottom"===e.zeroLineY?this._sizing.renderHeight:(1-((e.zeroLineY||0)-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;m={context:this._context2d,color:(0,v.default)(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},!m.hasNegatives&&e.expandYWith&&(m.hasNegatives=e.expandYWith.some((e=>e<0)))}if("bar"===e.rendering){let t={...m,indexInAxis:e.axis.series.indexOf(e),axisSeriesCount:e.axis.series.length,closestSpacing:c.closestSpacing,bounds:h};if(e.cutoffTime){t.cutoffIndex=A,t.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,t.originalData=p,t.renderCutoffGradient=A>=0;const n=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;t.selectionBounds=n}return void function(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,renderCutoffGradient:m,selectionBounds:f}){if(!n)return void console.error("Canvas context is null in drawBars");n.strokeStyle=t,n.fillStyle=t;const{barWidth:C,totalBarWidth:x}=N({closestSpacing:g,bounds:A,sizing:i,axisSeriesCount:o}),b=s?a:i.renderHeight;if(m&&void 0!==d&&u)!function(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,selectionBounds:m,barWidth:f,totalBarWidth:C,barBottom:x}){let b;if("object"==typeof u[0]&&2===u[0].length){const e=Math.floor(d),t=d-e;if(0===t||e>=u.length-1){const t=u[Math.min(e,u.length-1)][0];b=t instanceof Date?t.getTime():t}else{const n=u[e][0],i=u[e+1][0],r=n instanceof Date?n.getTime():n;b=r+t*((i instanceof Date?i.getTime():i)-r)}}else b=d;for(let i=0;i<e.length;i++){const[o,h]=e[i];let c=t,g=!1;if(i<u.length){const e=u[i];g=(e[0]instanceof Date?e[0].getTime():e[0])<b,g&&(c=(0,v.applyReducedOpacity)(t,p))}if(s)if(h<=a)n.fillStyle=c;else{const e=g?(0,v.applyReducedOpacity)(l,p):l;n.fillStyle=e}else n.fillStyle=c;n.fillRect(o-C/2+f*r,h,f,x-h)}c&&M(x,{context:n,sizing:i,color:t,zero:a,zeroColor:h,zeroWidth:c})}(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,selectionBounds:f,barWidth:C,totalBarWidth:x,barBottom:b});else{for(let i=0;i<e.length;i++){const[o,h]=e[i];s&&(n.fillStyle=h<=a?t:l),n.fillRect(o-x/2+C*r,h,C,b-h)}c&&M(b,{context:n,sizing:i,color:t,zero:a,zeroColor:h,zeroWidth:c})}}(u(!0),t)}if("area"===e.rendering){let r={...m,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:i,gradient:e.gradient,negativeGradient:e.negativeGradient,pointRadius:e.pointRadius,minPointSpacing:e.minPointSpacing,highlighted:n,width:s||e.width||l,shadowColor:o,shadowBlur:a,inRenderSpaceAreaBottom:g};if(e.cutoffTime){r.cutoffIndex=A,r.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,r.originalData=p,r.renderCutoffGradient=A>=0,r.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;r.selectionBounds=t}!function(e,t,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s,negativeGradient:l,zeroColor:h,zeroWidth:c,showIndividualPoints:g,negativeColor:A,pointRadius:d,minPointSpacing:p,width:u,highlighted:m,shadowColor:f="black",shadowBlur:C=5,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffOpacity:y,originalData:_,renderCutoffGradient:B,selectionBounds:w,isPreview:E}){if(!i)return void console.error("Canvas context is null in drawArea");if(i.fillStyle=n,i.shadowColor=f,i.shadowBlur=C,s&&s.length>=2){const R=i.createLinearGradient(0,0,0,r.renderHeight);for(let Y=0;Y<s.length;Y++){const N=s[Y];Array.isArray(N)?R.addColorStop(N[0],N[1]):R.addColorStop(Y/(s.length-1),N)}i.fillStyle=R,"gradient"===n&&(i.strokeStyle=R)}else i.fillStyle=n;if(!e.length)return;const k=a?o:r.renderHeight,S=a&&l,D=P(t,S?{splitAtY:o}:void 0),T=x&&P(x,S?{splitAtY:o}:void 0),z=P(t,{splitAtY:o});if(B&&void 0!==b&&_)!function(e,t,n,i,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,showIndividualPoints:A,negativeColor:d,pointRadius:p,width:u,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffOpacity:y,originalData:_,selectionBounds:B,isPreview:w}){let E,k,S;if("object"==typeof _[0]&&2===_[0].length){const e=Math.floor(b),t=b-e;if(0===t||e>=_.length-1){const t=_[Math.min(e,_.length-1)][0];E=t instanceof Date?t.getTime():t}else{const n=_[e][0],i=_[e+1][0],r=n instanceof Date?n.getTime():n;E=r+t*((i instanceof Date?i.getTime():i)-r)}}else E=b;w&&B?(k=B.minX instanceof Date?B.minX.getTime():B.minX,S=B.maxX instanceof Date?B.maxX.getTime():B.maxX):(k=_[0][0]instanceof Date?_[0][0].getTime():_[0][0],S=_[_.length-1][0]instanceof Date?_[_.length-1][0].getTime():_[_.length-1][0]);const D=(E-k)/(S-k);if(D<0)for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});else if(D>1){const e=h?(0,v.applyReducedOpacityToGradient)(h,y):null;for(let i=0;i<t.length;i++)F(t[i],n&&n[i],{color:(0,v.applyReducedOpacity)(r,y),context:o,sizing:a,zero:s,hasNegatives:l,gradient:e,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}else{if(w){for(let e=0;e<t.length;e++){const i=t[e],A=n&&n[e];if(!i.length)continue;const d=D*i.length,p=Math.floor(d),u=d-p;let b=null;if(p<i.length-1&&u>0){const[e,t]=i[p],[n,r]=i[p+1];b=[e+u*(n-e),t+u*(r-t)]}if(p>0||0===p&&u>0){const e=i.slice(0,p+1);b&&p<i.length-1&&e.push(b);const t=A?A.slice(0,p+1):null;if(b&&t&&p<A.length-1){const e=[b[0],s];t.push(e)}const n=h?(0,v.applyReducedOpacityToGradient)(h,y):null;F(e,t,{color:(0,v.applyReducedOpacity)(r,y),context:o,sizing:a,zero:s,hasNegatives:l,gradient:n,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}if(p<i.length-1||p===i.length-1&&0===u){const e=[];b&&p<i.length-1&&e.push(b),e.push(...i.slice(p+1));const t=[];if(b&&A&&p<A.length-1){const e=[b[0],s];t.push(e)}A&&t.push(...A.slice(p+1)),F(e,t.length?t:null,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}}i&&i.length>0&&G(i,D,{color:r,context:o,hasNegatives:l,negativeColor:d,zero:s,width:u,highlighted:m,cutoffOpacity:y}),A&&e&&e.length>0&&$(e,D,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p,cutoffOpacity:y})}else if(B){const e=B.minX instanceof Date?B.minX.getTime():B.minX,i=B.maxX instanceof Date?B.maxX.getTime():B.maxX;if(E<e)for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});else if(E>i){const e=h?(0,v.applyReducedOpacityToGradient)(h,y):null;for(let i=0;i<t.length;i++)F(t[i],n&&n[i],{color:(0,v.applyReducedOpacity)(r,y),context:o,sizing:a,zero:s,hasNegatives:l,gradient:e,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}else{const c=(E-e)/(i-e);for(let e=0;e<t.length;e++){const i=t[e],g=n&&n[e];if(!i.length)continue;const A=c*i.length,d=Math.floor(A),p=A-d;let u=null;if(d<i.length-1&&p>0){const[e,t]=i[d],[n,r]=i[d+1];u=[e+p*(n-e),t+p*(r-t)]}(d>0||0===d&&p>0)&&L(i,g,d,u,!0,{color:(0,v.applyReducedOpacity)(r,y),context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,areaBottomPaths:n}),d<i.length-1&&L(i,g,d,u,!1,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,areaBottomPaths:n})}}}else for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});if(D>=0&&D<=1&&!w)if(B){const e=B.minX instanceof Date?B.minX.getTime():B.minX,t=B.maxX instanceof Date?B.maxX.getTime():B.maxX;E<e?O(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m}):E>t?O(i,{color:(0,v.applyReducedOpacity)(r,y),context:o,hasNegatives:l,negativeColor:d?(0,v.applyReducedOpacity)(d,y):d,width:u,highlighted:m}):G(i,(E-e)/(t-e),{color:r,context:o,hasNegatives:l,negativeColor:d,zero:s,width:u,highlighted:m,cutoffOpacity:y})}else O(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m});else w||O(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m});if(g&&M(l?s:a.renderHeight,{context:o,sizing:a,color:r,zero:s,zeroColor:c,zeroWidth:g}),A&&!w)if(D>=0&&D<=1)if(B){const t=B.minX instanceof Date?B.minX.getTime():B.minX,n=B.maxX instanceof Date?B.maxX.getTime():B.maxX;E<t?I(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p}):E>n?I(e,{color:(0,v.applyReducedOpacity)(r,y),context:o,negativeColor:d?(0,v.applyReducedOpacity)(d,y):d,hasNegatives:l,zero:s,zeroColor:c?(0,v.applyReducedOpacity)(c,y):c,pointRadius:p}):$(e,(E-t)/(n-t),{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p,cutoffOpacity:y})}else I(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p});else I(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p})}}(e,D,T,z,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s,zeroColor:h,zeroWidth:c,showIndividualPoints:g,negativeColor:A,pointRadius:d,width:u,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffOpacity:y,originalData:_,selectionBounds:w,isPreview:E});else{for(let W=0;W<D.length;W++){const U=D[W],H=T&&T[W];let q=!0;if(a&&l&&U.length>0){let Z=0;for(let Q=0;Q<U.length;Q++)Z+=U[Q][1];q=Z/U.length<=o}if(a&&l)if(q)if(s&&s.length>=2){const ee=i.createLinearGradient(0,0,0,r.renderHeight);for(let te=0;te<s.length;te++){const ne=s[te];Array.isArray(ne)?ee.addColorStop(ne[0],ne[1]):ee.addColorStop(te/(s.length-1),ne)}i.fillStyle=ee}else i.fillStyle=n;else if(l.length>=2){const ie=i.createLinearGradient(0,0,0,r.renderHeight);for(let re=0;re<l.length;re++){const oe=l[re];Array.isArray(oe)?ie.addColorStop(oe[0],oe[1]):ie.addColorStop(re/(l.length-1),oe)}i.fillStyle=ie}else i.fillStyle=A||n;i.beginPath();const[j,K]=U[0],[V,J]=U[U.length-1];T||i.moveTo(j,k);for(let ae=0;ae<U.length;ae++){const[se,le]=U[ae];i.lineTo(se,le)}if(H&&H.length){for(let he=H.length-1;he>=0;he--){const[ce,ge]=H[he];i.lineTo(ce,ge)}i.lineTo(...U[0])}else i.lineTo(V,k);i.fill()}m&&(u+=2),u*=X,i.strokeStyle=n,i.lineWidth=u;for(let Ae of z)if(Ae.length){if(a&&A){let de=!0;de=Ae.length>=2?Ae[1][1]<=o:Ae[0][1]<=o,i.strokeStyle=de?n:A}else i.strokeStyle=n;i.beginPath();for(let pe=0;pe<Ae.length;pe++){const[ue,me]=Ae[pe];0===pe?i.moveTo(ue,me):i.lineTo(ue,me)}i.stroke()}if(c&&M(k,{context:i,sizing:r,color:n,zero:o,zeroColor:h,zeroWidth:c}),g&&!B){function fe(e,t){if(!t||e.length<=1)return e;const n=[];let i=-1/0;for(const r of e){const[e]=r;e-i>=t&&(n.push(r),i=e)}return n}const Ce=fe(e,p);for(let[xe,be]of Ce){let ye=n;A&&a&&(ye=be===o&&h?h:be<o?n:A),i.fillStyle=ye,i.beginPath(),i.arc(xe,be,d||8,0,2*Math.PI,!1),i.fill()}}}}(u(!0),t,r)}if("shadow"===e.rendering){if(!this._webgl||!this._shadowProgram)return void console.warn("Shadow rendering requires WebGL. Enable webgl={true} on your Grapher component.",{webgl:!!this._webgl,shadowProgram:!!this._shadowProgram,program:!!this._shadowProgram?._program});if(!this._shadowProgram._program)return void console.error("ShadowProgram has no valid WebGL program");if(!t)return void console.error("inRenderSpace is null for shadow rendering");if(h||(h=e.axis?.currentBounds),!h)return void console.error("No bounds available for shadow rendering");let n;n="bottom"===e.zeroLineY?this._sizing.renderHeight:void 0!==e.zeroLineY?(1-(e.zeroLineY-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:h.minY<=0&&h.maxY>=0?(1-(0-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:this._sizing.renderHeight;const i=!this._lastBounds||h.minY!==this._lastBounds.minY||h.maxY!==this._lastBounds.maxY||this._sizing.renderHeight!==this._lastRenderHeight;this._lastBounds={...h},this._lastRenderHeight=this._sizing.renderHeight,i&&this._lastShadowCache&&(this._lastShadowCache=null),n>1.5*this._sizing.renderHeight?n=this._sizing.renderHeight:n<.5*-this._sizing.renderHeight&&(n=0);const r=(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),o=!!e.inDataSpace.find((e=>e[1]<0));let a={color:r,gradient:e.gradient||(0,v.createDefaultGradient)(r),negativeGradient:e.negativeGradient,hasNegatives:o,zero:n,sizing:this._sizing,inRenderSpaceAreaBottom:g};if(e.cutoffTime){a.cutoffIndex=A,a.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,a.originalData=p,a.renderCutoffGradient=A>=0,a.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;a.selectionBounds=t||h}if(this._shadowProgram.draw(u(!1,!0),a),this._webgl){const e=this._context;e.disable(e.BLEND),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA)}e.zeroLineWidth&&e.zeroLineWidth>0&&(this._context2d?(this._context2d.save(),this._context2d.strokeStyle=e.zeroLineColor||(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),this._context2d.lineWidth=e.zeroLineWidth,this._context2d.globalCompositeOperation="source-over",this._context2d.beginPath(),this._context2d.moveTo(0,n),this._context2d.lineTo(this._sizing.renderWidth,n),this._context2d.stroke(),this._context2d.restore()):(this._zeroLineCanvas||(this._zeroLineCanvas=document.createElement("canvas"),this._zeroLineCanvas.style.position="absolute",this._zeroLineCanvas.style.top="0",this._zeroLineCanvas.style.left="0",this._zeroLineCanvas.style.pointerEvents="none",this._zeroLineContext=this._zeroLineCanvas.getContext("2d"),this._canvas.parentNode.insertBefore(this._zeroLineCanvas,this._canvas.nextSibling)),this._zeroLineCanvas.width=this._canvas.width,this._zeroLineCanvas.height=this._canvas.height,this._zeroLineCanvas.style.width=this._canvas.style.width,this._zeroLineCanvas.style.height=this._canvas.style.height,this._zeroLineContext.clearRect(0,0,this._zeroLineCanvas.width,this._zeroLineCanvas.height),this._zeroLineContext.strokeStyle=e.zeroLineColor||(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),this._zeroLineContext.lineWidth=e.zeroLineWidth,this._zeroLineContext.beginPath(),this._zeroLineContext.moveTo(0,n),this._zeroLineContext.lineTo(this._sizing.renderWidth,n),this._zeroLineContext.stroke()))}const f=!(this===this._stateController.rangeGraphRenderer)&&("boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:i);let C;h||(h=e.axis?.currentBounds||c),C="bottom"===e.zeroLineY?this._sizing.renderHeight:void 0!==e.zeroLineY&&h?(1-(e.zeroLineY-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:h&&h.minY<=0&&h.maxY>=0?(1-(0-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:this._sizing.renderHeight;const x=!!e.inDataSpace.find((e=>e[1]<0));let b=this._context;if(this._webgl&&"shadow"===e.rendering)this._overlayCanvas||(this._overlayCanvas=document.createElement("canvas"),this._overlayCanvas.style.position="absolute",this._overlayCanvas.style.top="0",this._overlayCanvas.style.left="0",this._overlayCanvas.style.pointerEvents="none",this._overlayContext=this._overlayCanvas.getContext("2d"),this._canvas.parentNode.insertBefore(this._overlayCanvas,this._canvas.nextSibling)),this._overlayCanvasInitialized||(this._overlayCanvas.width=this._canvas.width,this._overlayCanvas.height=this._canvas.height,this._overlayCanvas.style.width=this._canvas.style.width,this._overlayCanvas.style.height=this._canvas.style.height,this._overlayCanvasInitialized=!0),b=this._overlayContext;else if(this._context2d)b=this._context2d;else if(this._webgl){if(console.warn("Creating fallback 2D context for WebGL shadow chart"),!this._fallbackContext){const e=document.createElement("canvas");e.width=this._canvas.width,e.height=this._canvas.height,this._fallbackContext=e.getContext("2d")}b=this._fallbackContext}const y={color:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),context:b,width:s||e.width||l,shadowColor:o,shadowBlur:a,dashed:e.dashed,dashPattern:e.dashPattern,highlighted:n,showIndividualPoints:f,pointRadius:e.pointRadius,minPointSpacing:e.minPointSpacing,getIndividualPoints:u,getRanges:e.rangeKey?()=>(h||(h=e.axis.currentBounds),e.rangeKey?"objects"!==w(e,{useSimpleData:!0})?[]:(e.simpleData||e.data).map((t=>{const n=t[e.rangeKey];if(!n)return null;const i=n.min,r=n.max,o=t[e.xKey];return{x:o,range:n,pixelX:(o-h.minX)/(h.maxX-h.minX)*this._sizing.renderWidth,pixelMinY:"number"==typeof i?(1-(i-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:null,pixelMaxY:"number"==typeof r?(1-(r-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:null}})):[]):null,rendering:e.rendering,negativeColor:e.negativeColor,hasNegatives:x,zero:C,zeroColor:e.zeroLineColor};if(this._webgl&&"shadow"===e.rendering&&e.cutoffTime&&(s>0||f)){y.cutoffIndex=A,y.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,y.originalData=p,y.renderCutoffGradient=A>=0;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;y.selectionBounds=t||h,y.currentBounds=h}if(t){if(e.cutoffTime){y.cutoffIndex=A,y.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,y.originalData=p,y.renderCutoffGradient=A>=0,y.currentBounds=h,y.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;y.selectionBounds=t||h}this._webgl&&"shadow"!==e.rendering?this._lineProgram.draw(t,y):function(e,{color:t,width:n=1,context:i,shadowColor:o="black",shadowBlur:a=5,dashed:s=!1,dashPattern:l=null,highlighted:h=!1,showIndividualPoints:c=!1,pointRadius:g,minPointSpacing:A,getIndividualPoints:d,getRanges:p,cutoffIndex:u,cutoffOpacity:m,originalData:f,renderCutoffGradient:C,currentBounds:x,selectionBounds:b,rendering:y,isPreview:_,negativeColor:B,hasNegatives:w,zero:E,zeroColor:k}){if(!i)return void console.error("Canvas context is null in drawLine");if(!i.setLineDash)return void console.error("drawLine called with WebGL context instead of 2D context");h&&(n+=2),n*=X,i.strokeStyle=t,i.lineWidth=n,i.shadowColor=o,i.shadowBlur=a,s?i.setLineDash(l||[5,5]):i.setLineDash([]);const S=P(e,w&&B?{splitAtY:E}:void 0);for(let e of S)if(C&&void 0!==u&&f){let r;if("object"==typeof f[0]&&2===f[0].length){const e=Math.floor(u),t=u-e;if(0===t||e>=f.length-1){const t=f[Math.min(e,f.length-1)][0];r=t instanceof Date?t.getTime():t}else{const n=f[e][0],i=f[e+1][0],o=n instanceof Date?n.getTime():n;r=o+t*((i instanceof Date?i.getTime():i)-o)}}else r=u;if(_){const o=f[0][0]instanceof Date?f[0][0].getTime():f[0][0],a=(r-o)/((f[f.length-1][0]instanceof Date?f[f.length-1][0].getTime():f[f.length-1][0])-o);if(a<0){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else if(a>1){const r=(0,v.applyReducedOpacity)(t,m);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else{const r=a*(e.length-1),o=Math.floor(r),s=r-o;let l=null;if(o<e.length-1&&s>0){const[t,n]=e[o],[i,r]=e[o+1];l=[t+s*(i-t),n+s*(r-n)]}if(o>0||0===o&&s>0){const r=(0,v.applyReducedOpacity)(t,m);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<=o;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}l&&i.lineTo(l[0],l[1]),i.stroke()}if(o<e.length-1){i.strokeStyle=t,i.lineWidth=n,i.beginPath(),l?i.moveTo(l[0],l[1]):i.moveTo(e[o+1][0],e[o+1][1]);for(let t=o+1;t<e.length;t++){const[n,r]=e[t];i.lineTo(n,r)}i.stroke()}}}else{if(!b){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke();continue}const o=b.minX instanceof Date?b.minX.getTime():b.minX,a=b.maxX instanceof Date?b.maxX.getTime():b.maxX;if(r<o){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else if(r>a){const r=(0,v.applyReducedOpacity)(t,m);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke(),i.strokeStyle=t}else{const s=(r-o)/(a-o)*e.length,l=[],h=[];let c=null;if(s>0&&s<e.length-1){const t=Math.floor(s),n=Math.ceil(s);if(t!==n){const i=s-t,r=e[t],o=e[n];c=[r[0]+i*(o[0]-r[0]),r[1]+i*(o[1]-r[1])]}else c=e[s]}for(let t=0;t<e.length;t++)t<s?l.push(e[t]):h.push(e[t]);if(c&&(l.length>0&&l.push(c),h.length>0&&h.unshift(c)),l.length>1){const e=(0,v.applyReducedOpacity)(t,m);i.strokeStyle=e,i.lineWidth=n,i.beginPath();for(let e=0;e<l.length;e++){const[t,n]=l[e];0===e?i.moveTo(t,n):i.lineTo(t,n)}i.stroke()}if(h.length>1){i.strokeStyle=t,i.lineWidth=n,i.beginPath();for(let e=0;e<h.length;e++){const[t,n]=h[e];0===e?i.moveTo(t,n):i.lineTo(t,n)}i.stroke()}}}}else{if(w&&B){let n=!0;e.length>=2?n=e[1][1]<=E:e.length>0&&(n=e[0][1]<=E),i.strokeStyle=n?t:B}else i.strokeStyle=t;i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}if(p){const e=p();i.lineWidth=n,i.strokeStyle=t,i.setLineDash([]);const r=8*X;for(let t of e){if(!t)continue;const{pixelX:e,pixelMinY:n,pixelMaxY:o}=t;null!==n&&(i.beginPath(),i.moveTo(e-r/2,n),i.lineTo(e+r/2,n),i.stroke()),null!==o&&(i.beginPath(),i.moveTo(e-r/2,o),i.lineTo(e+r/2,o),i.stroke()),null!==n&&null!==o&&(i.beginPath(),i.moveTo(e,n),i.lineTo(e,o),i.stroke())}}if(c){const e=d();if(C&&void 0!==u&&f&&b){const n=b;let o,a,s;if(n&&void 0!==n.minX&&void 0!==n.maxX)o=n.minX instanceof Date?n.minX.getTime():n.minX,a=n.maxX instanceof Date?n.maxX.getTime():n.maxX;else{const e=f[0],t=f[f.length-1],n=e[0],i=t[0];o=n instanceof Date?n.getTime():n,a=i instanceof Date?i.getTime():i}if("string"==typeof u&&"now"===u)s=Date.now();else if("object"==typeof f[0]&&2===f[0].length){const e=Math.floor(u),t=u-e;if(0===t||e>=f.length-1){const t=f[Math.min(e,f.length-1)][0];s=t instanceof Date?t.getTime():t}else{const n=f[e][0],i=f[e+1][0],r=n instanceof Date?n.getTime():n;s=r+t*((i instanceof Date?i.getTime():i)-r)}}else s=u;if(null!==s&&(s-o)/(a-o)>1){const n=W(e,A);for(let e=0;e<n.length;e++){const[o,a]=n[e];let s=t;B&&w&&(s=a===E&&k?k:a<E?t:B);const{applyReducedOpacity:l}=r(365),h=l(s,m);i.fillStyle=h,i.beginPath(),i.arc(o,a,g||8,0,2*Math.PI,!1),i.fill()}return}if(_){const n=b.minX instanceof Date?b.minX.getTime():b.minX,r=b.maxX instanceof Date?b.maxX.getTime():b.maxX,o=W(e,A);for(let e=0;e<o.length;e++){const[a,l]=o[e];let h=!1;h=!(s<n)&&(s>r?"shadow"!==y:a<(s-n)/(r-n)*i.canvas.width);let c=t;if(B&&w&&(c=l===E&&k?k:l<E?t:B),h){const e=(0,v.applyReducedOpacity)(c,m);i.fillStyle=e}else i.fillStyle=c;i.beginPath(),i.arc(a,l,g||8,0,2*Math.PI,!1),i.fill()}}else if(b){const n=b.minX instanceof Date?b.minX.getTime():b.minX,r=b.maxX instanceof Date?b.maxX.getTime():b.maxX,o=W(e,A);for(let e=0;e<o.length;e++){const[a,l]=o[e];let h=!1;h=!(s<n)&&(s>r?"shadow"!==y:a<(s-n)/(r-n)*i.canvas.width);let c=t;if(B&&w&&(c=l===E&&k?k:l<E?t:B),h){const e=(0,v.applyReducedOpacity)(c,m);i.fillStyle=e}else i.fillStyle=c;i.beginPath(),i.arc(a,l,g||8,0,2*Math.PI,!1),i.fill()}}else{const n=W(e,A);for(let e=0;e<n.length;e++){const[r,o]=n[e];let a=t;B&&w&&(a=o===E&&k?k:o<E?t:B),i.fillStyle=a,i.beginPath(),i.arc(r,o,g||8,0,2*Math.PI,!1),i.fill()}}}else{const n=W(e,A);for(let e=0;e<n.length;e++){const[r,o]=n[e];let a=t;B&&w&&(a=o===E&&k?k:o<E?t:B),i.fillStyle=a,i.beginPath(),i.arc(r,o,g||8,0,2*Math.PI,!1),i.fill()}}}}(t,y)}else console.error("inRenderSpace is null for line rendering")}renderBackground(e){e&&(this._webgl?(this._backgroundProgram||(this._backgroundProgram=new R(this._context)),this._backgroundProgram.draw(e)):function({data:e},{context:t}){if(!t)return void console.error("Canvas context is null in drawBackground");const n=t.canvas.width,i=t.canvas.height;for(let{minXt:r,maxXt:o,color:a}of e)t.fillStyle=a,t.fillRect(r*n,0,(o-r)*n,i)}(e,{context:this._context}))}async _initializeCanvas(){if(this._sizing=await Y(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=Y(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 ce(e){return Math.max(2-Math.log10(Math.abs(e)),0)}function ge(e,t=null){if(null===t&&(t=ce(e)),isNaN(t)||t>100)return e.toString();const n=e.toFixed(Math.ceil(t));let i=n;return n.includes(".")&&(i=i.replace(/\.?0+$/g,"")),""===i?"0":i}const Ae={};function de(e,t){try{let n=Ae[e];if(!n){let t=e;e&&"local"!==e||(t=Intl.DateTimeFormat().resolvedOptions().timeZone),n=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}),Ae[e]=n}const i=n.formatToParts(t).find((e=>"timeZoneName"===e.type));if(!i)return null;if("GMT"===i.value)return 0;if(!/^GMT[+-]\d{2}:\d{2}$/.test(i.value))return null;const[r,o]=i.value.slice(3).split(":");return 60*parseInt(r)*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 pe(e,t){if(!t){const t=new Date(e);return t.setHours(0,0,0,0),t}const n=de(t,e);let i=new Date(e);return i.setUTCHours(0,0,0,0),i.valueOf()-e.valueOf()>n&&(i=new Date(i.valueOf()-864e5)),new Date(i.valueOf()-n)}function ue(e,{dates:t=!1,precision:n=null,justTime:i=!1,justDate:r=!1,justMonthAndDay:o=!1,clockStyle:a="24h",unitOverride:s,timeZone:l,integersOnly:h=!1,inverseEnumMap:c}={}){return!t||e instanceof Date||(e=new Date(e),!isNaN(e))?e instanceof Date?function(e,{precision:t,justTime:n,justDate:i,justMonthAndDay:r,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=de(s,e),n=de("local",e);"number"==typeof t&&"number"==typeof n&&(e=new Date(e.valueOf()+t-n))}const h=l?e.getUTCFullYear():e.getFullYear(),c=(l?e.getUTCMonth():e.getMonth())+1,g=l?e.getUTCDate():e.getDate();if("year"===o)return h.toString();if(i)return l?`${c}/${g}/${h}`:e.toLocaleDateString();if(r)return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][c-1]} ${g}`;const A=l?e.getUTCHours():e.getHours(),d=l?e.getUTCMinutes():e.getMinutes(),p=l?e.getUTCSeconds():e.getSeconds(),u=l?e.getUTCMilliseconds():e.getMilliseconds();let m;return m="12h"===a?`${((A+11)%12+1).toString()}:${d.toString().padStart(2,"0")}`:`${A.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`,"s"!==t&&"ms"!==t||(m+=`:${p.toString().padStart(2,"0")}`),"ms"===t&&(m+=`.${u.toString().padStart(3,"0")}`),"12h"===a&&(m+=A>=12?"pm":"am"),n?m:(l&&(m+=" UTC"),(l?`${c}/${g}/${h}`:e.toLocaleDateString())+" "+m)}(e,{precision:n,justTime:i,justDate:r,justMonthAndDay:o,unitOverride:s,clockStyle:a,timeZone:l}):isNaN(e)?"NaN":c?Math.abs(e-Math.round(e))>1e-10?"":c[Math.round(e)]:h&&Math.abs(e-Math.round(e))>1e-10?"":ge(e,n):"Invalid Date"}function me(e,{precision:t=null,log:n=!1}={}){return null===e?"null":isNaN(e)?"NaN":n?`10^${ge(Math.log10(e),t)}`:ge(e,t)}const fe=32;function Ce(){return Ce=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Ce.apply(this,arguments)}function xe({yLabel:e,y:t,fullYPrecision:n}){return n&&!e?void 0===t?"undefined":null===t?"null":t.toString():"number"==typeof e?n?e.toString():me(e):"object"==typeof e?me(t):e||me(t)}function be({axisLabel:e,x:n,y:i,xLabel:r,yLabel:o,textLeft:a,textTop:s,includeSeriesLabel:l,includeXValue:h,includeYValue:c,includeXLabel:g,includeYLabel:A,fullYPrecision:d,formatXOptions:p}){let u=0;return t().createElement("g",null,l&&t().createElement("text",{x:a,y:s+12*u++},e),h&&t().createElement("text",{x:a,y:s+12*u++},g&&"x: ",r||ue(n,p)),c&&t().createElement("text",{x:a,y:s+12*u++},A&&"y: ",xe({yLabel:o,y:i,fullYPrecision:d})))}be.propTypes={axisLabel:i().string,x:i().oneOfType([i().number,i().instanceOf(Date)]),y:i().number,xLabel:i().string,yLabel:i().oneOfType([i().number,i().string]),textLeft:i().number.isRequired,textTop:i().number.isRequired,fullYPrecision:i().bool,formatXOptions:i().object,..._.TooltipOptionsRaw};class ye 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,i=3-n,r={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:r},a=this.props.tooltips.map((t=>{const{x:a,y:s,pixelY:l,pixelX:h,series:c,index:g,xLabel:A,yLabel:d,fullYPrecision:p}=t;if("number"!=typeof h)return null;const u=(c.name||c.yKey||g).toString();let m=7.5*Math.max(u.length,(A||ue(a,r)).length+4,xe({yLabel:d,y:s,fullYPrecision:p}).length+4);c.tooltipWidth&&(m=c.tooltipWidth);let f=this.props.elementWidth<m+14+8,C=1;h>=this.props.elementWidth-(m+14+4)&&(C=-1),h<m+14+4&&-1===C&&(f=!0),null===s&&(f=!0),this.props.alwaysFixedPosition&&(f=!0);let x=11;if(C<0?x=-m-x:x+=6,!isFinite(h))return null;const b=`translate(${h},${l})`,y={fullYPrecision:p||this.props.maxPrecision,x:a,y:s,axisLabel:u,xLabel:A,yLabel:d,...o};let _,B=0;return f&&(x=6,_=this.props.elementWidth/2-m/2,m>this.props.elementWidth&&!this.props.floating&&(_-=fe*this.props.axisCount/2),B=18,this.props.floating&&(B="bottom"===this.props.floatPosition?this.props.elementHeight+n+4:-e,this.props.floatDelta&&(B+=this.props.floatDelta))),{...t,label:u,indexInAxis:c?.axis?.series?.indexOf(c),axisLabel:u,width:m,fixedPosition:f,multiplier:C,textLeft:x,transform:b,commonLabelProps:y,textTop:i,height:e,caretSize:7,halfHeight:n,caretPadding:4,yTranslation:B,baseLeft:_}})).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 i of l)if(Math.abs(i.pixelX-t.pixelX)<=e){i.tooltips.push(t),t.pixelX>i.pixelX&&(i.pixelX=t.pixelX,i.multiplier=t.multiplier),t.pixelY<i.pixelY&&(i.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 i=0;i<e.tooltips.length;i++)e.tooltips[i].textTop=t,t+=e.tooltips[i].height,n=Math.max(n,e.tooltips[i].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,i)=>{const{color:r,fixedPosition:o,width:a,transform:s,baseLeft:h,commonLabelProps:c,yTranslation:g,multiplier:A,textLeft:d,textTop:p}=e;return this.props.customTooltip||l?t().createElement("g",{key:i,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:r})):o?t().createElement("g",{key:i,className:"tooltip-item tooltip-item-fixed"},t().createElement("circle",{r:4,fill:r,transform:s}),t().createElement("g",{transform:`translate(${h}, ${g})`},t().createElement("path",{stroke:r,d:`M0,0 V-${n} h${a} V${n} h${-a} V0`}),t().createElement(be,Ce({textLeft:d,textTop:p},c)))):t().createElement("g",{key:i,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:r}),t().createElement("path",{stroke:r,d:`M${4*A},0 L${7*A*2},-7 V-${n} h${A*a} V${n} h${A*-a} V7 L${4*A},0`}),t().createElement(be,Ce({textLeft:d,textTop:p},c)))})),!this.props.customTooltip&&l&&l.map((({tooltips:e,pixelX:n,pixelY:i,halfHeight:r,multiplier:o,color:a,width:s},l)=>t().createElement("g",{key:l,transform:`translate(${n},${i})`,className:"tooltip-item"},t().createElement("path",{stroke:a,d:`M${4*o},0 L${7*o*2},-7 V-${r} h${o*s} V${r} h${o*-s} V7 L${4*o},0`}),e.map(((e,n)=>t().createElement(be,Ce({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)))))}}ye.defaultProps={includeSeriesLabel:!0,includeXLabel:!0,includeYLabel:!0,includeXValue:!0,includeYValue:!0},ye.propTypes={mouseX:i().number.isRequired,mouseY:i().number.isRequired,elementHeight:i().number.isRequired,elementWidth:i().number.isRequired,tooltips:i().arrayOf(i().shape({x:i().oneOfType([i().number,i().instanceOf(Date)]),y:i().number,pixelY:i().number,color:i().string,xLabel:i().string,yLabel:i().any,fullYPrecision:i().bool})),axisCount:i().number.isRequired,maxPrecision:i().bool.isRequired,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,..._.TooltipOptionsRaw};class _e 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(", "),[i,r,o]=t.split("/"),a=`${i.padStart(2,"0")}/${r.padStart(2,"0")}/${o}`,[s,l]=n.split(" "),[h,c]=s.split(":");return`${a} ${h.padStart(2,"0")}:${c} ${l}`}render(){const{x:e,y:n,showing:i,value:r}=this.props.contextMenu,o={left:e,top:n,width:"150px"};if(!i||!r||"Invalid Date"===r.toLocaleString()||isNaN(e)||isNaN(n))return null;const a=r instanceof Date?this.formatDateTime(r.toLocaleString()):r;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 Be(e,t={}){const n=w(e,{useSimpleData:!0,data:t.data});if(!a.includes(n))throw new Error(`Cannot normalize ${n} (expected a simple type)`);const i={tuples:we,values:ve,objects:ke}[n](t.data||e.simpleData||e.data,e,t);if(e.square){const e=[];let n=t.prevY;for(let t of i)void 0!==n&&e.push([t[0],n]),e.push(t),n=t[1];return e}if(e.shiftXBy)for(let n of i)if("string"==typeof n[0]){const i=n[0];n[0]=new Date(new Date(n[0]).valueOf()+e.shiftXBy),isNaN(n[0])&&(n[0]=t.stateController.enumToNumber(i,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 i)"number"==typeof e[0]&&(e[0]=new Date(1e3*e[0]));return i}function ve(e,t,n){const i=[];for(let r=0;r<e.length;r++){let o=e[r];"string"==typeof o&&(o=n.stateController.enumToNumber(o,t)),"boolean"==typeof o&&(o=+o),i.push([r+(n.valueXStart||0),o])}return i}function we(e,t,n){return[...e.map((([e,i])=>{if(void 0===i&&(i=null),"string"==typeof e){const i=e;e=new Date(e),isNaN(e)&&(e=n.stateController.enumToNumber(i,t,!0))}return"string"==typeof i&&(i=n.stateController.enumToNumber(i,t)),"boolean"==typeof i&&(i=+i),[e,i]}))]}function Ee(e,t,n){const i=e.getUint32(t+2+Uint32Array.BYTES_PER_ELEMENT*n,!0);if(0===i)return null;const r=e.getUint8(i);if(0===r)return e.getFloat64(t+i+1,!0);if(1===r||6===r)return null;if(3===r)return new Date(e.getFloat64(t+i+1,!0));throw new Error(`Binary format type ${r} not supported`)}function ke(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 i=[];for(let r of e)if(r.buffer instanceof ArrayBuffer){const e=new DataView(r.buffer),n=r.channels[t.xKey],o=r.channels[t.yKey];for(let t of r.offsets)i.push([Ee(e,t,n),Ee(e,t,o)])}else if(Array.isArray(r[t.yKey]))if(r[t.yKey].length&&!Array.isArray(r[t.yKey][0])&&"object"==typeof r[t.yKey][0])for(let e of r[t.yKey]){let r=e[t.yKey];void 0===r&&(r=null),"string"==typeof r&&(r=n.stateController.enumToNumber(r,t)),"boolean"==typeof r&&(r=+r);let o=e[t.xKey];"string"==typeof o&&(o=new Date(o)),i.push([o,r])}else i.push(...r[t.yKey]);else{let e=r[t.yKey];void 0===e&&(e=null);let o=r[t.xKey];"string"==typeof o&&(o=new Date(o)),"string"==typeof e&&(e=n.stateController.enumToNumber(e,t)),"boolean"==typeof e&&(e=+e),i.push([o,e])}return i}function Se(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 De(e,{percentile:t=100,percentileAsymmetry:n=0}={}){let i={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null};if(100!==t&&e.length)return function(e,t,{percentile:n=100,percentileAsymmetry:i=0}={}){let r=!1;t.minX=e[0][0],t.minX instanceof Date&&(t.minX=t.minX.valueOf(),r=!0),t.maxX=e[e.length-1][0],t.maxX instanceof Date&&(t.maxX=t.maxX.valueOf(),r=!0);const o=e.filter((([e,t])=>"number"==typeof t)).sort((([e,t],[n,i])=>t-i));if(!o.length)return Se(t,{dates:r});const a=Math.min(Math.abs(i),(100-n)/2)*(i<0?-1:1),s=(100-n)/2+a,l=(100-n)/2-a,h=Math.floor((o.length-1)*s/100),c=Math.floor((o.length-1)*(100-l)/100);return t.minY=o[h][1],t.maxY=o[c][1],Se(t,{dates:r})}(e,i,{percentile:t,percentileAsymmetry:n});let r=!1,o=null;for(let[t,n]of e){if(t instanceof Date&&(t=t.valueOf(),r=!0),("number"!=typeof i.minX||t<i.minX)&&(i.minX=t),("number"!=typeof i.maxX||t>i.maxX)&&(i.maxX=t),"number"==typeof o&&"number"==typeof t){const e=t-o;("number"!=typeof i.closestSpacing||e<i.closestSpacing)&&(i.closestSpacing=e)}o=t,"number"==typeof n&&(("number"!=typeof i.minY||n<i.minY)&&(i.minY=n),("number"!=typeof i.maxY||n>i.maxY)&&(i.maxY=n))}return Se(i,{dates:r})}function Te(e){const t={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null,dates:!1,initial:!0};for(let{minX:n,maxX:i,minY:r,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||i>t.maxX)&&(t.maxX=i),(null===t.closestSpacing||l<t.closestSpacing)&&(t.closestSpacing=l),(null===t.minY||r<t.minY)&&(t.minY=r),(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 ze(e,{expandYWith:t=[],extendXForNBars:n=0}){const i=Object.assign({},e);for(let e of t)null!=e&&(("number"!=typeof i.minY||e<i.minY)&&(i.minY=e),("number"!=typeof i.maxY||e>i.maxY)&&(i.maxY=e));i.unscaledMinY=i.minY,i.unscaledMaxY=i.maxY;const r=i.maxY-i.minY,o=i.minY+r/2;if(i.minY=o-1.05*r/2,i.maxY=o+1.05*r/2,i.minY===i.maxY&&null!==i.minY&&(i.minY>0?(i.minY*=.95,i.maxY*=1.05):i.minY<0?(i.minY*=1.05,i.maxY*=.95):(i.minY-=1,i.maxY+=1)),n&&i.minX!==i.maxX&&null!==i.minX&&null!==i.maxX){const e=(i.maxX-i.minX)/n;i.minX-=e/2,i.maxX+=e/2}return i}function Re(e,t,n={},i=0,r=void 0){if(void 0===r&&(r=e.length-1),0===e.length)return n.returnIndex?-1:[null,null];const o=Math.floor((i+r)/2);if(t===e[o][0]||e[o][0]instanceof Date&&e[o][0].valueOf()===t)return n.returnIndex?o:e[o];if(i===r)return e[i][0]<t&&"before"===n.searchType||e[i][0]>t&&"after"===n.searchType?n.returnIndex?i:e[i]:n.returnIndex?-1:[null,null];if(r-1===i){let o;return o="before"===n.searchType?i:"after"===n.searchType||Math.abs(e[i][0]-t)>Math.abs(e[r][0]-t)?r:i,n.returnIndex?o:e[o]}return t>e[o][0]?Re(e,t,n,o,r):t<e[o][0]?Re(e,t,n,i,o):void 0}function Xe({data:e,swap:t,minX:n,maxX:i,ignoreDiscontinuities:r,square:o}){if(!e.length||e.length&&n>e[e.length-1][0]||e.length&&i<e[0][0])return{data:[[n,null],[i,null]],firstAdded:!0,lastAdded:!0};let a,s=Re(e,n,{searchType:"before",returnIndex:!0})||0,l=Re(e,i,{searchType:"after",returnIndex:!0})||0;for(-1===l&&(l=0);s>=0&&e[s][0]>=n;)s--;for(;l<e.length&&e[l][0]<=i;)l++;let h=!1,c=!1,g=!1,A=s,d=l;if(r){for(;A>=0&&null===e[A][1];)A--;for(;d<e.length&&null===e[d][1];)d++}if(t){if(a=t.data,t.lastAdded&&a.pop(),n===t.minX&&(h=!0),s!==t.beforeIndex){h=!1,t.firstAdded&&a.shift();let i=t.beforeIndex;for(;i>=0&&a.length&&a[0][0]>=n;)r&&!e[i][1]&&0!==e[i][1]||a.unshift(e[i]),i--;for(;i<e.length&&a.length&&a[0][0]<n;)a.shift(),i++}if(r&&!t.ignoreDiscontinuities&&(a=a.filter((([e,t])=>null!=t))),s===t.beforeIndex&&t.firstAdded){c=!0;let t=s+1;if(r)for(;t<e.length&&null===e[t][1];)t++;-1===A&&a.length?a[0]=[n,null]:o&&a.length?a[0]=[n,e[A][1]]:a.length&&(a[0]=[n,Ye(e,A,t,n)]),e[s+1][0]===a[0][0]&&e[s+1][1]===a[0][1]&&(c=!1)}let g=t.afterIndex;if(t.ignoreDiscontinuities&&!r){let t=s+1,n=0;for(c&&n++;n<=a.length&&t<e.length&&t<l;)e[t][0]<=i&&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>=g&&(g=t+1)),t++,n++}let d=g||0;for(;d<e.length&&e[d][0]<=i;)e[d][0]>=n&&(r&&!e[d][1]&&0!==e[d][1]||a.push(e[d])),d++;for(;a.length&&a[a.length-1][0]>i;)a.pop()}else a=e.slice(s+1,l),r&&(a=a.filter((([e,t])=>null!=t)));if(a.length||(a=o?A<0?[[n,null],[i,null]]:[[n,e[A][1]],[i,e[A][1]]]:[[n,Ye(e,A,d,n)],[i,Ye(e,A,d,i)]],c=!0,g=!0),!h){let t=s+1;if(r)for(;t<e.length&&null===e[t][1];)t++;a.length&&a[0][0]>n&&(c=!0,-1===A?a.unshift([n,null]):o?a.unshift([n,e[A][1]]):a.unshift([n,Ye(e,A,t,n)]))}if(a.length&&a[a.length-1][0]<i){g=!0;let t=l-1;if(r)for(;t>=0&&null===e[t][1];)t--;d===e.length?a.push([i,null]):o?a.push([i,a[a.length-1][1]]):a.push([i,Ye(e,t,d,i)])}if(1===a.length){let t,r;o?(t=A<0?[n,null]:[n,e[A][1]],r=[i,a[0][1]]):(t=[n,Ye(e,A,s+1,n)],r=[i,Ye(e,l-1,d,i)]),a.unshift(t),a.push(r),c=!0,g=!0}return{data:a,minX:n,maxX:i,beforeIndex:s,afterIndex:l,firstAdded:c,lastAdded:g,ignoreDiscontinuities:r}}function Ye(e,t,n,i){if(t<0||n<0)return null;if(t>=e.length||n>=e.length)return null;if(t===n)return e[t][1];const[r,o]=e[t],[a,s]=e[n];if(i===r&&null!==o)return o;if(i===a&&null!==s)return s;if(null===o||null===s)return null;const l=(i-r)/(a-r);return l<0||l>1?null:l*(s-o)+o}function Pe({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}}function Me({data:e,swap:t,renderWidth:n,renderHeight:i,minX:r,maxX:o,minY:a,maxY:s,scale:l,dataChanged:h}){t&&t.yValues.length!==n&&(t=null);const c=t&&t.nullMask||new Uint8Array(n);c.fill(0);const g=new Float64Array(n),A=new Float64Array(n),d=new Float64Array(n),p=Pe({minY:a,maxY:s,scale:l}),u={data:e,renderWidth:n,renderHeight:i,minX:r,maxX:o,minY:a=p.minY,maxY:s=p.maxY,scale:l};let m,f;if(te()){let n=0;const i=t&&t.dataNullMask&&t.dataF64,a=!h&&i&&t.minX===r&&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)),f=new Uint8Array(Math.floor(e.length*n)),a&&(f.set(t.dataNullMask),m.set(t.dataF64))}else m=t.dataF64,f=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]?f[t]=1:f[t]=0;te().selected_space_to_render_space(e.length,m,f,u,c,g,A,d)}else!function({data:e,renderWidth:t,renderHeight:n,minX:i,maxX:r,minY:o,maxY:a,scale:s},{nullMask:l,yValues:h,minYValues:c,maxYValues:g}){let A=0,d=A-1;for(let p=0;p<t;p++){const u=p/(t-1)*(r-i)+i;let m=null,f=null;for(A>0&&A<=e.length&&null===e[A-1][1]&&A--,A<e.length-2&&e[A+1][0]<u&&A++;A<e.length-2&&e[A+1][0]<u;A++){const t=e[A][1];null!==t&&((null===m||t<m)&&(m=t),(null===f||t>f)&&(f=t))}if(c[p]=null===m?0:n*(1-(("log"===s?Math.log10(m):m)-o)/(a-o)),g[p]=null===f?0:n*(1-(("log"===s?Math.log10(f):f)-o)/(a-o)),A>=e.length-1||null===e[A][1]||null===e[A+1][1]){const t=A>=e.length-1?null:e[A][1];l[p]=null===t|(null===m)<<1|(null===f)<<2,h[p]=null===t?0:n*(1-(("log"===s?Math.log10(t):t)-o)/(a-o)),A++;continue}const[C,x]=e[A],[b,y]=e[A+1];let _=(u-C)/(b-C)*(y-x)+x;d!==A&&(_=x),h[p]=null===_?0:n*(1-(("log"===s?Math.log10(_):_)-o)/(a-o)),l[p]=null===_|(null===m)<<1|(null===f)<<2,d=A}}(u,{nullMask:c,yValues:g,minYValues:A,maxYValues:d});return{nullMask:c,yValues:g,minYValues:A,maxYValues:d,dataF64:m,dataNullMask:f,minX:r,maxX:o,length:e.length}}function Fe(e,{series:t,inDataSpace:n}){const i=[];let r=0;for(let o of e){const e=Le(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[r++][0];t.square&&i.length>0&&i.push([o,i[i.length-1][1]]),i.push([o,e])}continue}if(t.ignoreDiscontinuities&&null==e)continue;const a=n[r++][0];t.square&&i.length>0&&i.push([a,i[i.length-1][1]]),i.push([a,o])}return i.length!==n.length&&console.warn("Flattening didn't give the same length as it has in data space"),i}function Le(e,t){return t.yKey?e[t.yKey]:Array.isArray(e)?1===e.length?e[0]:e[1]:e}function Ie(e,t){return t.xKey?e[t.xKey]:Array.isArray(e)?e[0]:e}function Oe({mouseX:e,mouseY:t,sizing:n},i){const{x:r,y:o}=i,a=i.series.axis.scale,s=i.series.axis.currentBounds,{minY:l,maxY:h}=Pe({...s,scale:a}),c=(r-s.minX)/(s.maxX-s.minX)*n.elementWidth,g=(1-(("log"===a?Math.log10(o):o)-l)/(h-l))*n.elementHeight,A=Math.sqrt((c-e)**2+(g-t)**2),d=Math.abs(c-e);Object.assign(i,{pixelWidth:n.elementWidth,pixelX:c,pixelY:isNaN(g)?n.elementHeight/2:g,xDistance:d,distance:A})}_e.propTypes={contextMenu:i().shape({x:i().number,y:i().number,showing:i().bool,value:i().oneOfType([i().instanceOf(Date),i().number,i().object])}).isRequired};const Ge={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 $e({data:e,swap:t,minX:n,maxX:i,renderWidth:r,dataChanged:o}){const a=2*r;let s;if(!o&&t&&t.minX===n&&t.maxX<=i&&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:i,length:e.length};const l=[],h=(i-n)/a;let c=null,g=null,A=0;e.length&&l.push(e[0]);for(let e of s){const[t,i]=e;if(null===i)continue;const r=Math.floor((t-n)/h);r!==A&&(c&&g&&(c===g?l[l.length-1]!==c&&l.push(c):c[0]<g[0]?l.push(g,c):l.push(c,g)),c=null,g=null,A=r),(!c||i<c[1])&&(c=e),(!g||i>g[1])&&(g=e)}return c&&g&&(c===g?l.push(c):c[0]<g[0]?l.push(g,c):l.push(c,g)),e.length>=2&&e[e.length-1]!==c&&e[e.length-1]!==g&&l.push(e[e.length-1]),{data:l,minX:n,maxX:i,length:e.length}}function Ne(e,t){let n=e.name||e.yKey;return n||(n=t.toString()),n}function We({data:e,background:t,minX:n,maxX:i}){if(!t)return null;const r=[];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)");r.push(Object.assign({key:e,comparator:"custom",comparedAgainst:null},n));continue}if("null"===e){r.push({evaluator:e=>null===e&&n,color:n,key:e,comparator:"=",comparedAgainst:null});continue}const[t,i]=e.split(" ");if(!t||!i||isNaN(parseFloat(i)))throw new Error("Invalid background declaration: "+e);const o=parseFloat(i);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}r.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 h of a?[a.condition,...r]:r){const r=h.evaluator(l);if(a){if(a.color===r)break;let c=s;if(t>0){let[n,i]=e[t-1];n instanceof Date&&(n=n.valueOf()),c=null===a.condition.comparedAgainst?s:null===l?n:n+(h.comparedAgainst-i)/(l-i)*(s-n)}o.push({...a,maxX:c,maxXt:(c-n)/(i-n)}),a=null}if(r){let o=s;if(t>0){let[n,i]=e[t-1];n instanceof Date&&(n=n.valueOf()),o=null===h.comparedAgainst?n:null===i?s:n+(h.comparedAgainst-i)/(l-i)*(s-n)}a={minX:o,minXt:(o-n)/(i-n),color:r,condition:h};break}}}return a&&o.push({...a,maxX:e[e.length-1][0],maxXt:(e[e.length-1][0]-n)/(i-n)}),{data:o}}class Ue extends B{constructor({defaultBoundsCalculator:e,customBoundsSelectors:t,requireWASM:n,defaultShowIndividualPoints:i,defaultShowSidebar:r,defaultShowAnnotations:o,defaultShowOptions:a,syncPool:s,grapherID:l,sharedDataCache:h,sharedSubscriptions:c,fullscreen:g}){super(),this._requireWASM=n,n&&ee.then((()=>{this._markDirty()})),this._series=[],this._seriesFromOriginalSeries=new Map,this._axes=[{series:[],scale:"linear",side:"left",axisIndex:0}],this._highlightedSeries=null,this._showIndividualPoints=i||!1,this._autoscaleY=!0,this._percentile=100,this._percentileAsymmetry=0,this._showingOptions=a,this._maxPrecision=!1,this._showingSidebar=r||!1,this._showingAnnotations=o||!1,this._grapherID=l,this._fullscreen=g||!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(Ge[e])return Ge[e];for(let{label:n,calculator:i}of t)if(e===n)return i;return Ge.all}(e,t),this._boundsHistory=[this._boundsCalculator],this._boundsIndex=0,this._dataCache=h||new Map,this._subscriptions=c||new Map,this._subscriptionsShared=!!c,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 i=new Set(e);for(let e of n)i.has(e.originalSeries)||this._removeSeries(e);this._series.splice(0);for(let t=0;t<e.length;t++){const n=e[t];let i=this._seriesFromOriginalSeries.get(n);i||(i={...n,originalSeries:n},this._seriesFromOriginalSeries.set(n,i),i.defaultAlwaysTooltipped&&(this._alwaysTooltipped.add(i),this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped))),i.index=t,this._series.push(i),this._assignAxisTo(i),i.hidden&&this._hideSeries(i)}for(let n=0;n<t.length;n++){const i=t[n];i.index=n+e.length,this._series.push(i)}this.deferredEmit("series_changed",this._series),this._dataChanged=!0,this._markDirty()}_markDirty(){if(this._frameRequested)return;if(this._requireWASM&&!te)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 i=performance.now(),r=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 h=performance.now(),c=performance.now();this._contextMenuChanged&&this._recalculateContextMenu();const g=performance.now(),A=performance.now();this._annotationsChanged&&this._recalculateAnnotations();const d=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 p=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(),f={frameExecution:m-t,frameRequestAndExecution:m-e,generators:s-a,dataProcessing:i-n,renderPipeline:o-r,tooltips:h-l,contextMenu:g-c,annotations:d-A,callbacks:u-p};this.lastLoopTime=f,this._timingFrameCount&&(this._timingBuffer.length<this._timingFrameCount?this._timingBuffer.push(f):this._timingBuffer[this._timingIndex%this._timingFrameCount]=f,this._timingIndex++),this.emit("render_time",m-t,f)}))}deferredEmit(...e){this._deferredEmissions[e[0]]=e}deferredPriorityEmit(...e){this._deferredPriorityEmissions[e[0]]=e}_seriesToSimpleData(e){const t=w(e);if(a.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 i=t.values().next().value;if(n=i.simpleData,!n)throw new Error(`Cannot find simpleData in ${i.name||i.yKey||i.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 i=!1;for(let t of n)if(e.has(t)){i=!0;break}i||(this._subscriptions.get(t).unsubscribe(),this._subscriptions.delete(t),this._observablesToSeries.delete(t))}for(let[t,n]of this._generatorsToSeries){let i=!1;for(let t of n)if(e.has(t)){i=!0;break}i||(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(i=t,void 0===(n=this._generatorCallArgs.get(e))||void 0===i?n===i:n.minX===i.minX&&n.maxX===i.maxX&&n.sizing.elementWidth===i.sizing.elementWidth&&n.sizing.renderWidth===i.sizing.renderWidth)return;var n,i;this._generatorCallArgs.set(e,t);const r=await Promise.resolve(e(t));if(r&&this._generatorsToSeries.has(e))if(this._dataChanged=!0,this._markDirty(),"function"==typeof r.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(r)||this._observablesToSeries.set(r,new Set),this._observablesToSeries.get(r).add(t);this._listenToObservableData({observable:r,currentData:t})}else{this._dataCache.set(e,r);for(let t of this._generatorsToSeries.get(e))t.simpleData=r}}_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:i,series:r,alwaysTooltipped:o,savedTooltips:a,allTooltipped:s,closestSpacing:l}){a=a.filter((e=>e.series.axis));for(let e of a)Oe({mouseX:t,mouseY:n,sizing:i},e);if(!e)return{mouseX:t,mouseY:n,elementWidth:i.elementWidth,elementHeight:i.elementHeight,tooltips:[...a]};const h=[];let c=1/0;for(let e=0;e<r.length;e++){const a=r[e];if(a.hidden)continue;const g=a.axis,A=g.scale,d=g.currentBounds,{minY:p,maxY:u}=Pe({...d,scale:A}),m=t/i.elementWidth*(d.maxX-d.minX)+d.minX;let f=a.inDataSpace;if(a.ignoreDiscontinuities&&(f=f.filter((e=>"number"==typeof e[1]))),0===f.length)continue;let C=f[0][0],x=f[f.length-1][0];C instanceof Date&&(C=C.getTime()),x instanceof Date&&(x=x.getTime());const b=0;if(m<C-b||m>x+b)continue;const y=Re(f,m,{returnIndex:!0}),_=f[y];if(!_)continue;const[B,w]=_;if(null===B)continue;let E=(B-d.minX)/(d.maxX-d.minX)*i.elementWidth;const k=(1-(("log"===A?Math.log10(w):w)-p)/(u-p))*i.elementHeight;if(k>i.elementHeight||k<0)continue;const S=o.has(a)||s;let D=20,T=20,z=20;if("bar"===a.rendering){const e=a.axis.series.indexOf(a),t=a.axis.series.length,{totalBarWidth:n,barWidth:r}=N({closestSpacing:l,bounds:d,sizing:i,axisSeriesCount:t});E-=n/2/i.pixelRatio,E+=r*(e+.5)/i.pixelRatio,D=r/2/i.pixelRatio,T=100,z=D+T}const R=Math.abs(E-t),X=Math.abs(k-n),Y=Math.sqrt(R**2+(k-n)**2);if(!S&&(R>D||X>T||Y>z))continue;let P,M;const F=a.simpleData||a.data,L=F.length&&!!a.hasEnum;if(a.xLabel||a.yLabel||L){let e;e=F.length===f.length?F[y]:Fe(F,{series:a,inDataSpace:f})[y][1],a.xLabel?P=e[a.xLabel]:a.hasXEnum&&(P=Ie(e,a)),a.yLabel?M=e[a.yLabel]:L&&(M=Le(e,a))}Y<c&&(c=Y);let I=(0,v.default)(a.color,e,a.multigrapherSeriesIndex);w<0&&a.negativeColor?I=a.negativeColor:0===w&&a.zeroLineColor&&(I=a.zeroLineColor),h.push({pixelWidth:i.elementWidth,pixelX:E,pixelY:isNaN(k)?i.elementHeight/2:k,x:B,y:w,color:I,distance:Y,xDistance:R,index:e,series:a,xLabel:P,yLabel:M,fullYPrecision:a.fullYPrecision,ignoreYDistanceCheck:S})}const g=h.filter((({distance:e,ignoreYDistanceCheck:t})=>e===c||t)).sort(((e,t)=>t.distance-e.distance));return{mousePresent:e,mouseX:t,mouseY:n,elementWidth:i.elementWidth,elementHeight:i.elementHeight,unsavedTooltipsCount:g.length,tooltips:[...a,...g]}}({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,i=null;for(let r of this._series){const o=r.axis.currentBounds;i=this._contextMenuPosition.x-e.left,this._contextMenuPosition.x>2*(e.right-t.elementWidth)&&(i-=130),n="timestamp"===r.xKey||"time"===r.xKey||"date"===r.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:i,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:i}){const r=new Set(t.map(((e,t)=>({name:Ne(e,t),hidden:e.hidden}))).filter((({hidden:e})=>!e)).map((({name:e})=>e))),{elementWidth:o}=n,{minX:a,maxX:s}=i,l=s-a;return 0===l?{annotations:[],elementWidth:o}:{annotations:e.filter((e=>{if(!e.series)return!0;for(let t of e.series)if(r.has(t))return!0;return!1})).map((e=>{const t=void 0!==e.startX&&void 0!==e.endX,n=void 0!==e.x;let i=e.startX,r=e.endX;if(!t&&n)i=e.x,r=e.x;else if(!t&&!n)return null;const s=e=>"string"==typeof e?new Date(e).valueOf():e instanceof Date?e.valueOf():e;let h=s(i),c=s(r);h>c&&([h,c]=[c,h]);let g=(h-a)/l*o,A=(c-a)/l*o;g=Math.max(0,Math.min(o,g)),A=Math.max(0,Math.min(o,A));let d=A-g;return d<1&&A>0&&g<o&&(!t&&n?(d=1,g-=.5):d=t?1:0),g=Math.max(0,Math.min(o-d,g)),d<=0?null:{...e,isRange:t,pixelStartX:g,pixelWidth:d}})).filter((e=>null!==e)),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=Be({...t,data:n},{stateController:this}),t.simpleDataSliceStart=n.length,t.dataBounds=De(t.inDataSpace),"bar"===t.rendering&&(t.dataBounds=ze(t.dataBounds,{extendXForNBars:t.inDataSpace.length,expandYWith:t.expandYWith})),e.push(t.dataBounds),t.expandYWith&&this._expandYWith.push(t.expandYWith)}this._unsubscribeFromStaleSeries(),this._dataBounds=Te(e),this._recalculateSelection({disableSwap:!0});for(let e of this._series)e.hidden||(e.selectedBounds=De(e.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.hasAreaBottom&&(e.selectedBoundsAreaTop=e.selectedBounds,e.selectedBoundsAreaBottom=De(e.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.selectedBounds=Te([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,i=new Set;for(let t of e)i.add(t);for(let i of e){if(n.add(i.axis),!i.inDataSpace)throw new Error("inDataSpace must be present for onDataAdd to be called");const e=this._seriesToSimpleData(i);let r;i.inDataSpace.length&&(r=i.inDataSpace[i.inDataSpace.length-1][1]);const o=Be(i,{data:e.slice(i.simpleDataSliceStart||0),valueXStart:i.inDataSpace.length,prevY:r,stateController:this});if(t.set(i,o),i.simpleDataSliceStart=e.length,o.length<32)i.inDataSpace.push(...o);else for(let e of o)i.inDataSpace.push(e);let a=De(o);"bar"===i.rendering&&(a=ze(a,{extendXForNBars:i.inDataSpace.length,expandYWith:i.expandYWith})),i.dataBounds=Te([i.dataBounds,a]),this._dataBounds=Te([this._dataBounds,a]),i.newPointCount=o.length,i.newDataBounds=a}const r=this._selection;this._recalculateSelection();for(let n of e){if(!n.inSelectedSpace.data.length){n.selectedBounds=De(n.inSelectedSpace.data);continue}const e=n.inSelectedSpace.data[0][0],i=n.inSelectedSpace.data[n.inSelectedSpace.data.length-1][0];if(!(r.minX>=e&&r.maxX<=i)||100!==this._percentile){n.selectedBounds=De(n.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.hasAreaBottom&&(n.selectedBoundsAreaTop=n.selectedBounds,n.selectedBoundsAreaBottom=De(n.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.selectedBounds=Te([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=Te([n.selectedBounds,De(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 i of e.series)t.push(i.selectedBounds),i.expandYWith&&n.push(...i.expandYWith),"bar"===i.rendering&&n.push(i.selectedBounds.minY,i.selectedBounds.maxY);e.selectedDataBounds=Te(t),e.targetBounds=e.currentBounds=ze(e.selectedDataBounds,{expandYWith:n})}this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)))}_recalculateSelection({disableSwap:e=!1}={}){this._globalBounds=ze(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=Xe({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=Xe({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;if(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){const t={...this._globalBounds,minY:void 0!==this._globalBounds.unscaledMinY?this._globalBounds.unscaledMinY:this._globalBounds.minY,maxY:void 0!==this._globalBounds.unscaledMaxY?this._globalBounds.unscaledMaxY:this._globalBounds.maxY};this.rangeGraphRenderer.render(e,e.inRenderSpaceRangeGraph,{shadowColor:"transparent",shadowBlur:0,width:1,showIndividualPoints:!1,bounds:t,globalBounds:t,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:i}=e.axis,r=Math.ceil(this.primaryRenderer.sizing.renderWidth/X),o=Math.ceil(this.primaryRenderer.sizing.renderHeight),a={minX:n.minX,maxX:n.maxX,renderWidth:r,dataChanged:t};e.inCondensedSelectedSpacePrimary=$e({data:e.inSelectedSpace.data,swap:e.inCondensedSelectedSpacePrimary,...a});const s={minX:n.minX,maxX:n.maxX,minY:n.minY,maxY:n.maxY,renderWidth:r,renderHeight:o,scale:i,dataChanged:t};e.inRenderSpacePrimary=Me({data:e.inCondensedSelectedSpacePrimary.data,swap:e.inRenderSpacePrimary,...s}),e.inBackgroundSpacePrimary=We({data:e.inCondensedSelectedSpacePrimary.data,background:e.background,swap:e.inBackgroundSpacePrimary,minX:n.minX,maxX:n.maxX}),e.hasAreaBottom&&(e.inCondensedSelectedSpacePrimaryAreaBottom=$e({data:e.inSelectedSpaceAreaBottom.data,swap:e.inCondensedSelectedSpacePrimaryAreaBottom,...a}),e.inRenderSpacePrimaryAreaBottom=Me({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,swap:e.inRenderSpacePrimaryAreaBottom,...s}),e.inBackgroundSpacePrimaryAreaBottom=We({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,i=this._globalBounds,r={...i,minY:void 0!==i.unscaledMinY?i.unscaledMinY:i.minY,maxY:void 0!==i.unscaledMaxY?i.unscaledMaxY:i.maxY},o=Math.ceil(this.rangeGraphRenderer.sizing.renderWidth/X),a=Math.ceil(this.rangeGraphRenderer.sizing.renderHeight),s={minX:i.minX,maxX:i.maxX,ignoreDiscontinuities:e.ignoreDiscontinuities,square:e.square};e.inSelectedSpaceRangeGraph=Xe({data:e.hasAreaBottom?e.inDataSpace.filter(((e,t)=>t%2==1)):e.inDataSpace,swap:e.inSelectedSpaceRangeGraph,...s});const l={minX:i.minX,maxX:i.maxX,renderWidth:o,dataChanged:t};e.inCondensedSelectedSpaceRangeGraph=$e({data:e.inSelectedSpaceRangeGraph.data,swap:e.inCondensedSelectedSpaceRangeGraph});const h={minX:r.minX,maxX:r.maxX,minY:r.minY,maxY:r.maxY,renderWidth:o,renderHeight:a,scale:n,dataChanged:t};e.inRenderSpaceRangeGraph=Me({data:e.inCondensedSelectedSpaceRangeGraph.data,swap:e.inRenderSpaceRangeGraph,...h}),e.hasAreaBottom&&(e.inSelectedSpaceRangeGraphAreaBottom=Xe({data:e.inDataSpace.filter(((e,t)=>t%2==0)),swap:e.inSelectedSpaceRangeGraphAreaBottom,...s}),e.inCondensedSelectedSpaceRangeGraphAreaBottom=$e({data:e.inSelectedSpaceRangeGraphAreaBottom.data,swap:e.inCondensedSelectedSpaceRangeGraphAreaBottom,...l}),e.inRenderSpaceRangeGraphAreaBottom=Me({data:e.inCondensedSelectedSpaceRangeGraphAreaBottom.data,swap:e.inRenderSpaceRangeGraphAreaBottom,...h}))}_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 i=e.axis,r=i.series.indexOf(e);if(-1===r)throw new Error("Series not present in axis");i.series.splice(r,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,i]=e.axis.split("-");t=function({axes:e,side:t,number:n}){let i;n=n&&parseInt(n)||0;let r=0;for(let o of e)if(o.side===t){if(r===n){i=o;break}r++}return i}({axes:this._axes,side:n,number:i}),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 i=this._observablesToSeries.get(n);i&&(i.delete(e),0===i.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,i]of Object.entries(n))t[e]=(t[e]||0)+i;for(let[n,i]of Object.entries(t))t[n]=i/e.length;return t}(this._timingBuffer)}get exportedAxes(){const e=new Map;let t=0,n=0;for(let i of this._axes){let r;"left"===i.side?(r=`left-${t}`,t++):(r=`right-${n}`,n++);for(let t of i.series)e.set(t,r)}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:i}of e)t[n]=i,this._boundsCalculator===this._customBoundsSelectors[n]&&this._boundsCalculator!==i&&(this.boundCalculator=i);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:i},{elementWidth:r,elementHeight:o,selection:a,axes:s}){if(Math.abs(t-e)<1||Math.abs(i-n)<1)return;const l=e/r*(a.maxX-a.minX)+a.minX,h=t/r*(a.maxX-a.minX)+a.minX,c=[];for(let{currentBounds:e,scale:t}of s){const r=Pe({...e,scale:t});let a=(1-n/o)*(r.maxY-r.minY)+r.minY,s=(1-i/o)*(r.maxY-r.minY)+r.minY;"log"===t&&(s=Math.pow(10,s),a=Math.pow(10,a)),c.push({minX:l,maxX:h,minY:s,maxY:a})}return()=>({minX:l,maxX:h,byAxis:c})}(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:i,mouseY:r,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 r)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 r)return;const l=i||e-s.boundingRect.left,h=r||t-s.boundingRect.top;this._tooltipState.mousePresent&&l===this._tooltipState.mouseX&&h===this._tooltipState.mouseY||(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!0,this._tooltipState.mouseX=l,this._tooltipState.mouseY=h,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 i of this._series){const r=i.axis.currentBounds,o=(e-t.left)/n.elementWidth*(r.maxX-r.minX)+r.minX;this.emit("series_click",{x:o,series:i})}}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.ignoreYDistanceCheck&&n.distance>20)return t;const i=t.findIndex((e=>e.x===n.x&&e.y===n.y));return-1===i?[...t,n]:t.filter(((e,t)=>t!==i))}({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 i=t&&0!==t,r=n===this._grapherID;i&&r?(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 i=this._enumMap[e];if("number"==typeof i)return i;const r=Object.keys(this._enumMap).length;return this._enumMap[e]=r,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),r}triggerResize(){this._mustResize=!0,this._markDirty()}}function He(t,n,i=null,r=[]){if("function"==typeof i){const e=i;i=()=>e}const[o,a]=(0,e.useState)(i);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)}}),[...r,a,t]),o}function qe(e){return He(e,"primary_size_change",e.primaryRenderer?e.primaryRenderer.sizing:{elementWidth:0,elementHeight:0,renderWidth:0,renderHeight:0})}function je(e){return He(e,"axes_changed",e.axes)}function Ke(e){return He(e,"series_changed",e.series)}function Ve(e){return He(e,"highlighted_series_changed",e.highlightedSeries)}function Je(e){return Qe(e).length}function Ze(e){return et(e).length}function Qe(e){return He(e,"right_axes_changed",e.rightAxes)}function et(e){return He(e,"left_axes_changed",e.leftAxes)}function tt(e){return He(e,"axis_bounds_changed",e.axes.map((({currentBounds:e})=>e)))}function nt(e){return He(e,"autoscale_y_changed",e.autoscaleY)}function it(e){return He(e,"dragging_y_changed",e.draggingY)}function rt(e){return He(e,"showing_options_changed",e.showingOptions)}function ot(e){return He(e,"max_precision_changed",e.maxPrecision)}function at(e){return He(e,"showing_sidebar_changed",e.showingSidebar)}function st(e){return He(e,"showing_annotations_changed",e.showingAnnotations)}function lt(e){return He(e,"primary_size_change",e.sizing)}function ht(e){return He(e,"theme_change",e.theme)}class ct extends t().PureComponent{render(){const{bodyHeight:e,annotationState:n}=this.props,{annotations:i,elementWidth:r}=n,o=i.filter((e=>void 0!==e.pixelStartX&&void 0!==e.pixelWidth));return t().createElement("div",{className:"grapher-annotations"},o.map((({pixelStartX:n,pixelWidth:i,content:o,isRange:a,lineOnly:s},l)=>{const h={left:n};if(a)return t().createElement("div",{key:`range-${l}`,className:"grapher-annotation grapher-annotation-range",style:h},t().createElement("div",{className:"annotation-range-marker",style:{width:i,height:e}}));{const a=s?i:Math.max(i,1),c={};if(o){c.top=21*l,c.position="absolute";const e=5.5*(o||"").length;r>0&&r-n<e+10?(c.left=-e-5,c.textAlign="right"):c.left=a+5}return t().createElement("div",{key:`point-${l}`,className:"grapher-annotation grapher-annotation-point",style:h},t().createElement("div",{className:"annotation-marker",style:{width:a,height:e}}),o&&!s&&t().createElement("div",{className:"annotation-text",style:c},o))}})))}}ct.propTypes={annotationState:i().shape({annotations:i().arrayOf(i().shape({pixelStartX:i().number,pixelWidth:i().number,content:i().string,isRange:i().bool,lineOnly:i().bool})).isRequired,elementWidth:i().number.isRequired}),bodyHeight:i().number};const gt=t().memo(At);function At({stateController:e,draggablePoints:n,onPointDrag:i,onDraggablePointsDoubleClick:r}){const o=tt(e)[0],a=lt(e);if(!a)return null;const s=r&&(e=>{const t=(e.clientX-a.boundingRect.left)/a.elementWidth,n=1-(e.clientY-a.boundingRect.top)/a.elementHeight;r(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 r=(e.x-o.minX)/(o.maxX-o.minX),s=1-(e.y-o.minY)/(o.maxY-o.minY);if(r<0||r>1||s<0||s>1)return null;const l=r*a.elementWidth,h=s*a.elementHeight,c=e.radius||5,g=e.fillColor||v.LINE_COLORS[0],A=e.strokeColor||"white",d=e.strokeWidth||1,p=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:h,r:c,fill:g,stroke:A,strokeWidth:d,onMouseDown:t=>{if(t.stopPropagation(),!i)return;const r=l-t.clientX,s=h-t.clientY,c=t=>{const l=(t.clientX+r)/a.elementWidth,h=1-(t.clientY+s)/a.elementHeight;i({index:n,point:e,x:l*(o.maxX-o.minX)+o.minX,y:h*(o.maxY-o.minY)+o.minY},t)},g=()=>{window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",g)};window.addEventListener("mousemove",c),window.addEventListener("mouseup",g)},onClick:p,onDoubleClick:u})}))))}At.propTypes={stateController:i().instanceOf(Ue).isRequired,draggablePoints:_.DraggablePoints.isRequired,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func};const dt=t().memo(pt);function pt({stateController:e,verticalLines:n,isRangeGraph:i,bounds:r,elementWidth:o,elementHeight:a}){r=r||tt(e)[0];const s=lt(e);if(!s)return null;const l=n.filter((e=>!(i&&!e.onRangeGraph||e.onRangeGraphOnly&&!i)));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)=>{i&&"object"==typeof e.onRangeGraph&&(e={...e,...e.onRangeGraph});const l=(e.x-r.minX)/(r.maxX-r.minX);if(l<0||l>1)return null;const h=l*(o||s.elementWidth);if("number"==typeof e.minPixelX&&h<e.minPixelX)return null;if("number"==typeof e.maxPixelX&&h>e.maxPixelX)return null;const c={stroke:e.color,strokeWidth:e.width,...e.style||{}},g={fill:e.color,...e.markerStyle||{}},A={fontSize:"12px",fill:e.color,stroke:"none",textAnchor:"middle",dominantBaseline:"hanging",...e.textStyle||{}};let d=0;"number"==typeof e.lineTop?d=e.lineTop:e.text&&(d=18);let p=5;return"number"==typeof e.textTop&&(p=e.textTop),t().createElement(t().Fragment,{key:n},t().createElement("line",{x1:h,y1:d,x2:h,y2:a||s.elementHeight,style:c}),e.markTop&&t().createElement("polygon",{points:`${h-3},0 ${h+3},0 ${h},3`,style:g}),e.text&&t().createElement("text",{x:h,y:p,style:A},e.text))}))))}function ut(){return ut=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ut.apply(this,arguments)}pt.propTypes={stateController:i().instanceOf(Ue).isRequired,verticalLines:_.VerticalLines.isRequired,isRangeGraph:i().bool,bounds:i().object,elementWidth:i().number,elementHeight:i().number};const mt=t().memo(ft);function ft({stateController:n,webgl:i,bodyHeight:r,boundsSelectionEnabled:o,showTooltips:a,showContextMenu:s=!0,tooltipOptions:l,checkIntersection:h,draggablePoints:c,onPointDrag:g,onDraggablePointsDoubleClick:A,verticalLines:d,clockStyle:p,timeZone:u,onPointClick:m}){const f=(0,e.useCallback)((e=>{if(n.primaryRenderer&&n.primaryRenderer.dispose(),!e)return;const t=new he({stateController:n,canvasElement:e,webgl:i,checkIntersection:h});n.primaryRenderer=t,t.resize()}),[i,n]),[C,x]=(0,e.useState)({showing:!1,start:{},style:{}}),b=nt(n),y=je(n).length,_=function(e){return He(e,"tooltip_state_changed",e.tooltipState)}(n),B=ot(n),v=st(n),w=function(e){return He(e,"annotations_changed",e.annotationState)}(n),E=function(e){return He(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})},i=e=>e.touches?.[0]||e.changedTouches?.[0],r=e=>{if(!a)return;const t=i(e);t&&(n.setTooltipMousePosition({clientX:t.clientX,clientY:t.clientY}),e.cancelable&&e.target.closest(".graph-body")&&e.preventDefault())},o=e=>{if(!a)return;const t=i(e);t&&(n.setTooltipMousePosition({clientX:t.clientX,clientY:t.clientY}),e.cancelable&&e.target.closest(".graph-body")&&e.preventDefault())},s=()=>{n.showOnlySavedTooltips()};return window.addEventListener("scroll",e,{passive:!0}),window.addEventListener("mousemove",t,{passive:!0}),window.addEventListener("touchstart",r,{passive:!1}),window.addEventListener("touchmove",o,{passive:!1}),window.addEventListener("touchend",s,{passive:!0}),window.addEventListener("touchcancel",s,{passive:!0}),()=>{window.removeEventListener("scroll",e),window.removeEventListener("mousemove",t),window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",o),window.removeEventListener("touchend",s),window.removeEventListener("touchcancel",s)}}),[]),t().createElement("div",{className:"graph-body graph-body-primary",onMouseMove:e=>{if(C.showing){const t=n.primaryRenderer.boundingRect,i=e.clientX-t.left,r=e.clientY-t.top;x((({start:e})=>({showing:!0,start:e,style:{left:Math.min(i,e.x),top:b?0:Math.min(r,e.y),width:Math.abs(i-e.x),height:b?t.height:Math.abs(r-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 i=n.primaryRenderer.boundingRect,r={x:e.clientX-i.left,y:e.clientY-i.top};x({showing:!0,start:r,style:{left:r.x,top:r.y,width:0,height:0}});const a=e=>{if(window.removeEventListener("mouseup",a),!o)return;const t=e.clientX-i.left,s=e.clientY-i.top;n.setBoundsFromSelection({minPixelX:Math.min(t,r.x),maxPixelX:Math.max(t,r.x),minPixelY:Math.min(s,r.y),maxPixelY:Math.max(s,r.y)}),x({showing:!1,style:{}})};window.addEventListener("mouseup",a)},onClick:e=>{if(n.registerClick({clientX:e.clientX,clientY:e.clientY}),l&&l.savingDisabled)n.clearSavedTooltips();else if(e.target.closest(".grapher-context-menu")||n.setContextMenuMousePosition({showing:!1}),window.getSelection&&"Range"===window.getSelection().type||n.toggleTooltipSaved(),m){const t={},i=n.series;for(let e=0;e<i.length;e++){const r=i[e],o=n.sizing,a=r.axis.currentBounds,s=n.tooltipState.mouseX/o.elementWidth*(a.maxX-a.minX)+a.minX;let l=r.inDataSpace;r.ignoreDiscontinuities&&(l=l.filter((e=>"number"==typeof e[1])));const h=l[Re(l,s,{returnIndex:!0})];t[r.name]=h[0]}m(e,t)}},onDoubleClick:()=>{n.clearSavedTooltips()},onContextMenu:e=>{e.preventDefault(),!1!==s&&n.setContextMenuMousePosition({clientX:e.clientX,clientY:e.clientY,showing:!0})},style:"number"==typeof r?{height:r}:void 0},t().createElement("canvas",{ref:f}),a&&t().createElement(ye,ut({axisCount:y,maxPrecision:B,clockStyle:p,timeZone:u},l||{},_)),E.showing&&t().createElement(_e,{contextMenu:E}),v&&t().createElement(ct,{bodyHeight:r||n?.primaryRenderer?.boundingRect?.height,annotationState:w}),d&&t().createElement(dt,{stateController:n,verticalLines:d}),c&&t().createElement(gt,{stateController:n,draggablePoints:c,onPointDrag:g,onDraggablePointsDoubleClick:A}),o&&C.showing&&t().createElement("div",{className:"bounds-selection",style:C.style}))}ft.propTypes={stateController:i().instanceOf(Ue).isRequired,webgl:i().bool,checkIntersection:i().bool,bodyHeight:i().number,boundsSelectionEnabled:i().bool.isRequired,showTooltips:i().bool.isRequired,tooltipOptions:_.TooltipOptions,verticalLines:_.VerticalLines,draggablePoints:_.DraggablePoints,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func,onPointClick:i().func,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string};var Ct=r(72),xt=r.n(Ct),bt=r(825),yt=r.n(bt),_t=r(659),Bt=r.n(_t),vt=r(56),wt=r.n(vt),Et=r(540),kt=r.n(Et),St=r(113),Dt=r.n(St),Tt=r(557),zt={};function Rt(e,{scale:t,min:n,max:i,inverted:r,totalSize:o,precision:a,formatter:s,dates:l,justTime:h,justDate:c,formatOptions:g={}},A={}){let d=e;"log"===t&&(d=10**e);let p=(e-n)/(i-n);r&&(p=1-p);let u=p*o;return isNaN(u)&&(u=0),{pixelValue:u,trueValue:d,label:s(d,{...g,precision:a,log:"log"===t,dates:l,justTime:h,justDate:c}),size:"major",...A}}function Xt(e,{scale:t,min:n,max:i,inverted:r,totalSize:o,precision:a,formatter:s,dates:l,justTime:h,justDate:c,formatOptions:g={}},A={}){let d=e/o;r&&(d=1-d);let p=d*(i-n)+n;return"log"===t&&(p=Math.pow(10,p)),{pixelValue:e,trueValue:p,label:s(p,{...g,precision:a,log:"log"===t,dates:l,justTime:h,justDate:c}),size:"major",...A}}function Yt(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 i=1/0,r=1;for(let t=0;t<n.length;t++){const o=Math.abs(n[t]-e);o<i&&(r=n[t],i=o)}return r}function Pt(e,t,n){const i=e/t;return i<6e4&&(!n||"second"===n)?{amount:Yt(i/1e3,60),unit:"s"}:i<36e5&&(!n||"minute"===n)?{amount:Yt(i/6e4,60),unit:"m"}:i<864e5&&(!n||"hour"===n)?{amount:Yt(i/36e5,24),unit:"h"}:"day"===n||i<2592e6&&!n?{amount:Yt(i/864e5,1),unit:"d"}:i>2592e6&&(!n||"month"===n)?{amount:Yt(i/30*24*60*60*1e3,1),unit:"month"}:"year"===n?{amount:Yt(i/365*24*60*60*1e3,1),unit:"year"}:{unit:"m",amount:60}}function Mt(e){return e.dates?function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g}){const A=i+2*r,d=[],p={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:h,formatOptions:g,dates:!0},{amount:u,unit:m}=Pt(t-e,o/A,g.unitOverride),f="month"===m;a||d.push(Xt(0,{...p,justDate:f},{position:"first"}));let C=new Date(e);"h"===m?C.setMinutes(0,0,0):"m"===m?C.setSeconds(0,0):"s"===m?C.setMilliseconds(0):"month"===m?(C=pe(C,g.timeZone),C.setDate(1)):"d"===m&&(C=pe(C,g.timeZone));let x=h(C,{...g,...p,justDate:!0});for(;C<t;){let e=864e5;"h"===m?e=60*(u-C.getHours()%u)*60*1e3:"m"===m?e=60*(u-C.getMinutes()%u)*1e3:"s"===m?e=1e3*(u-C.getSeconds()%u):"month"===m?(e=0,C=11===C.getMonth()?new Date(C.getFullYear()+1,0,1):new Date(C.getFullYear(),C.getMonth()+1,1)):"year"===m&&(C=new Date(C.getFullYear()+1,0,0)),C=new Date(C.valueOf()+e);const t=h(C,{...g,...p,justDate:!0})===x,n=Rt(C,{...p,justTime:t,justDate:f});d.length&&n.pixelValue-d[d.length-1].pixelValue<i+(r||0)||n.pixelValue+i/2>=o||(d.push(n),x=h(C,{...g,...p,justDate:!0}))}const b=x===h(t,{...g,...p,justDate:!0});return!s&&d[d.length-1].pixelValue+i<o&&d.push(Xt(o,{...p,justTime:b,justDate:f},{position:"last"})),d.filter((({pixelValue:e})=>e<=o&&e>=0))}(e):function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,scale:a="linear",formatter:s,inverted:l=!1,formatOptions:h}){const c=i+2*r,g=[],A={scale:a,min:e,max:t,inverted:l,totalSize:o,precision:n,formatter:s,formatOptions:h,dates:!1},d=function(e,t){const n=e/t,i=1-Math.log10(Math.abs(n)),r=i-Math.floor(i)>.5?2:1,o=10**Math.floor(i)*r;return Math.round(n*o)/o}(t-e,Math.floor((o-2*i)/c));if(d>0)for(let n=function(e,t){return Math.round(e/t)*t}(e,d);n<t;n+=d)g.push(Rt(n,A));return g.length&&l&&g[g.length-1].pixelValue>r&&g.push(Xt(i/2,A)),g.filter((({pixelValue:e})=>e<=o&&e>=0))}(e)}zt.styleTagTransform=Dt(),zt.setAttributes=wt(),zt.insert=Bt().bind(null,"head"),zt.domAPI=yt(),zt.insertStyleElement=kt(),xt()(Tt.A,zt),Tt.A&&Tt.A.locals&&Tt.A.locals;const Ft=t().memo(Lt);function Lt({showAxes:e,showGrid:n,stateController:i,bigLabels:r,xTickUnit:o,clockStyle:a,timeZone:s,integersOnly:l,formatXAxisLabel:h}){if(!e&&!n)return null;const{elementWidth:c,elementHeight:g}=qe(i),{minX:A,maxX:d,dates:p}=function(e){return He(e,"selection_changed",e.selection)}(i),u=function(e){return He(e,"has_x_enum_change",e.hasXEnum)}(i),m=function(e){return He(e,"enum_map_change",e.enumMap)}(i);let f;f=p?function(e,t){e=new Date(e);const n=(t=new Date(t)).valueOf()-e.valueOf();return n<3e3?"ms":n<6e5?"s":"m"}(A,d):ce(d-A);let C=null;if(u){C={};for(const[e,t]of Object.entries(m))C[t]=e}const x={unitOverride:o,clockStyle:a,timeZone:s,integersOnly:l,inverseEnumMap:C,formatter:h},b=ue(A,{...x,dates:p,precision:f}).toString(),y=ue(d,{...x,dates:p,precision:f}).toString();let _=Math.max(b.length,y.length);r&&(_*=2);let B=null,v=null,w=null;p?(B=function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g={}}){const A=i+2*r,d=[],p={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:h,formatOptions:g,dates:!0},u=Math.floor(o/A);let m,f;const C=(t-e)/36e5;C<=8*u?(m="h",f=Math.max(1,Math.ceil(C/u)),f<=6||(f=f<=12?12:f<=24?24:24*Math.ceil(f/24))):(m="h",f=24),a||d.push(Xt(0,{...p,justTime:!0},{position:"first"}));let x=new Date(e);if("h"===m)if(x.setMinutes(0,0,0),24===f)x.setHours(0);else if(12===f){const e=x.getHours()<12?0:12;x.setHours(e)}else{const e=x.getHours(),t=Math.floor(e/f)*f;x.setHours(t)}else if("m"===m){x.setSeconds(0,0);const e=x.getMinutes(),t=Math.floor(e/f)*f;x.setMinutes(t)}else if("s"===m){x.setMilliseconds(0);const e=x.getSeconds(),t=Math.floor(e/f)*f;x.setSeconds(t)}for(;x<e;)"h"===m?x=new Date(x.valueOf()+60*f*60*1e3):"m"===m?x=new Date(x.valueOf()+60*f*1e3):"s"===m&&(x=new Date(x.valueOf()+1e3*f));for(;x<t;){const e=Rt(x,{...p,justTime:!0}),t=o-(i+r);if(d.length&&e.pixelValue-d[d.length-1].pixelValue<i+r);else{if(!(e.pixelValue+i<t))break;d.push(e)}if("h"===m)x=new Date(x.valueOf()+60*f*60*1e3);else if("m"===m)x=new Date(x.valueOf()+60*f*1e3);else{if("s"!==m)break;x=new Date(x.valueOf()+1e3*f)}}if(!s){const e=Rt(t,{...p,justTime:!0},{position:"last"});0===d.length||e.pixelValue-d[d.length-1].pixelValue>=i+r/2?d.push(e):d[d.length-1]=e}return d.filter((({pixelValue:e})=>e<=o&&e>=0))}({min:A,max:d,totalSize:c,precision:f,expectedLabelSize:_,labelPadding:24,formatter:h||ue,formatOptions:x}),v=function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g={}}){const A=i+2*r,d=[],p=new Date(e).getFullYear()!==new Date(t).getFullYear(),u={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:(e,t)=>{const n=new Date(e),i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getMonth()],r=n.getDate(),o=n.getFullYear();return p?`${i} ${r} ${o}`:`${i} ${r}`},formatOptions:g,dates:!0},m=t-e,f=m/36e5;let{amount:C,unit:x}=Pt(m,o/A,g.unitOverride);if(("h"===x||"m"===x||"s"===x)&&f>=48)x="d",C=Math.max(1,Math.ceil(f/24/Math.floor(o/A)));else if(("h"===x||"m"===x||"s"===x)&&f<48){const n=Rt(e,{...u,justDate:!0},{position:"first"}),a=Rt(t,{...u,justDate:!0},{position:"last"}),s=[n];return a.pixelValue-n.pixelValue>=i+r&&s.push(a),s.filter((({pixelValue:e})=>e<=o&&e>=0))}a||d.push(Xt(0,{...u,justDate:!0},{position:"first"}));let b=new Date(e);for("month"===x?(b=pe(b,g.timeZone),b.setDate(1)):"d"===x&&(b=pe(b,g.timeZone),b.setHours(0,0,0,0));b<t;){let e=864e5;"month"===x?(e=0,b=11===b.getMonth()?new Date(b.getFullYear()+1,0,1):new Date(b.getFullYear(),b.getMonth()+1,1)):"year"===x?(b=new Date(b.getFullYear()+1,0,1),e=0):"d"===x&&(e=24*C*60*60*1e3),e>0&&(b=new Date(b.valueOf()+e));const t=Rt(b,{...u,justDate:!0}),n=o-(i+r);if(!(d.length&&t.pixelValue-d[d.length-1].pixelValue<i+(r||0))){if(!(t.pixelValue+i<n))break;d.push(t)}}if(!s){const e=Rt(t,{...u,justDate:!0},{position:"last"});0===d.length||e.pixelValue-d[d.length-1].pixelValue>=i+r/2?d.push(e):d[d.length-1]=e}return 0===d.length&&f>=48&&d.push(Xt(0,{...u,justDate:!0},{position:"first"})),d.filter((({pixelValue:e})=>e<=o&&e>=0))}({min:A,max:d,totalSize:c,precision:f,expectedLabelSize:2*_,labelPadding:45,formatter:h||ue,formatOptions:x})):w=Mt({min:A,max:d,totalSize:c,precision:f,dates:p,formatter:h||ue,expectedLabelSize:_,labelPadding:30,formatOptions:x});const E=p?30:20;return t().createElement("svg",{className:"axis x-axis"+(p?" x-axis-dual":""),style:e?void 0:{marginBottom:-20}},e&&t().createElement("path",{d:`M-1,0 H${c}`,className:"axis-line"}),p&&B&&B.map((({pixelValue:i,label:o,size:a,position:s,skipGrid:l},h)=>{const c=1===B.length;if(isNaN(i))return null;const A=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return r&&A.push("axis-item-big-labels"),t().createElement("g",{key:`time-${h}`,className:A.join(" ")},e&&t().createElement("path",{d:`M${i},1 v12`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${i},0 v-${g}`}),e&&t().createElement("text",{x:"last"!==s||c?i+3:i-3,y:12,textAnchor:"last"!==s||c?"start":"end",className:"x-axis-text x-axis-time-text"},o))})),p&&v&&v.map((({pixelValue:n,label:i,size:o,position:a,trueValue:l},h)=>{if(isNaN(n))return null;const c=["axis-item",`axis-item-${o}`,`axis-item-${a}`];let g;return r&&c.push("axis-item-big-labels"),s&&0===h&&(g="utc"===s.toLowerCase()?"UTC":s),t().createElement("g",{key:`date-${h}`,className:c.join(" ")},e&&t().createElement("text",{x:"last"===a?n-3:n+3,y:25,textAnchor:"last"===a?"end":"start",className:"x-axis-text x-axis-date-text"},t().createElement("tspan",{className:"x-axis-date-label"},i),g&&t().createElement("tspan",{className:"x-axis-timezone-label"}," ","(",g,")")))})),!p&&w&&w.map((({pixelValue:i,label:o,size:a,position:s,skipGrid:l},h)=>{if(isNaN(i))return null;const c=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return r&&c.push("axis-item-big-labels"),t().createElement("g",{key:h,className:c.join(" ")},e&&t().createElement("path",{d:`M${i},1 v12`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${i},0 v-${g}`}),e&&t().createElement("text",{x:"last"===s?i-3:i+3,y:E-5,textAnchor:"last"===s?"end":"start",className:"x-axis-text"},o))})))}Lt.propTypes={stateController:i().instanceOf(Ue).isRequired,showAxes:i().bool.isRequired,showGrid:i().bool.isRequired,bigLabels:i().bool,xTickUnit:i().oneOf(["year"]),clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,integersOnly:i().bool,formatXAxisLabel:i().func};const It=t().memo(Ot);function Ot({stateController:n,showAxes:i,showGrid:r,showSeriesKey:o,axis:a,sideIndex:s,bodyHeight:l,theme:h,grapherID:c,dragPositionYOffset:g=0,bigLabels:A,showAxisColors:d}){if(!i&&!r)return null;const{side:p,scale:u,axisIndex:m,label:f}=je(n)[a.axisIndex],{elementWidth:C,elementHeight:x}=qe(n);let{minY:b,maxY:y}=tt(n)[m];const _=Pe({minY:b,maxY:y,scale:u});b=_.minY,y=_.maxY;const B=Mt({min:b,max:y,totalSize:x,scale:u,precision:ce(y-b),formatter:me,inverted:!0,expectedLabelSize:A?20:10,labelPadding:30});let w=5;"log"===u&&(w=2);const E=Ve(n),[k,S]=(0,e.useState)(null),[D,T]=(0,e.useState)({dx:0,dy:0}),z="day"===h?1:.5,R="day"===h?.8:.3;return t().createElement("svg",{className:`axis y-axis y-axis-${p}`,"data-axis-index":m,"data-grapher-id":c,style:{width:fe,marginLeft:i?void 0:-32,height:"number"==typeof l?l:void 0}},i&&d&&a.series.map(((e,n)=>{const i=x/a.series.length;return t().createElement("rect",{x:"left"===p?0:2,y:n*i,width:30,height:i,key:e.index,fill:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),opacity:e.index===E?z:R,"data-element-height":x,"data-series-length":a.series.length})})),i&&t().createElement("path",{d:`M${"left"===p?31:1},3 V${x}`,className:"axis-line"}),B.map((({pixelValue:e,label:n,size:o,skipGrid:a},l)=>{const h="left"===p?(s+1)*fe:-s*fe,c=("left"===p?1:-1)*(C+1),g=["axis-item",`axis-item-${o}`];return A&&g.push("axis-item-big-labels"),t().createElement("g",{key:l,className:g.join(" ")},r&&!a&&t().createElement("path",{d:`M${h},${e} h${c}`}),r&&!a&&s>0&&t().createElement("path",{d:`M${"left"===p?fe:0},${e} h${("left"===p?1:-1)*s*fe}`,strokeDasharray:"2,2"}),i&&t().createElement("text",{x:"left"===p?fe-w:w,y:e},n))})),o&&i&&a.series.map(((e,i)=>{let r=18+14*(i%2-1),o=-14*Math.ceil(a.series.length/2)+14*Math.floor(i/2);return e===k&&(r+=D.dx,o+=D.dy-g),t().createElement("rect",{className:"series-color-box",onMouseDown:t=>((e,t)=>{let i=e.clientX,r=e.clientY;"left"===p&&(i+=fe),"right"===p&&(i-=fe),T({dx:0,dy:0});const o=e=>{T({dx:e.clientX-i,dy:e.clientY-r})},a=e=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",a);let i=e.target;for(;i&&!(i.dataset||{}).axisIndex;)i=i.parentNode;S(null),n.finalizeDrag(t,i&&(i.dataset||{}).axisIndex,i&&(i.dataset||{}).grapherId)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",a),S(t),n.markDragStart()})(t,e),x:r,y:o,width:10,height:10,key:e.index,fill:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),onMouseOver:()=>n.setHighlightedSeries(e.index),onMouseOut:()=>n.setHighlightedSeries(null)})})),i&&!!f&&t().createElement("text",{className:"y-axis-label"+(A?" y-axis-big-label":""),x:"left"===p?10:22,y:x/2+("left"===p?-1:1)*(m+1)*(A?20:0),transform:`rotate(${"left"===p?-90:90}, ${"left"===p?10:22}, ${x/2})`},f))}Ot.propTypes={stateController:i().instanceOf(Ue),showAxes:i().bool.isRequired,showGrid:i().bool.isRequired,showAxisColors:i().bool.isRequired,showSeriesKey:i().bool.isRequired,axis:_.Axis.isRequired,sideIndex:i().number.isRequired,bodyHeight:i().number,theme:i().string,grapherID:i().string,dragPositionYOffset:i().number,bigLabels:i().bool};const Gt=t().memo($t);function $t({selected:e,disabled:n,className:i,onClick:r,children:o,description:a}){const s=["range-button"];return e&&s.push("range-button-selected"),n&&s.push("range-button-disabled"),i&&s.push(i),a&&s.push("option-tooltip"),t().createElement("div",{className:s.join(" "),onClick:r&&(e=>n||r(e))},o,a&&t().createElement("div",{className:"option-tooltip-text"},a))}$t.propTypes={selected:i().bool.isRequired,onClick:i().func,children:i().node.isRequired,disabled:i().bool,className:i().string,description:i().string};const Nt=t().memo(Wt);function Wt({stateController:e,currentBoundCalculator:n,boundCalculator:i,children:r,disabled:o}){return t().createElement(Gt,{selected:n===i,onClick:()=>e.boundCalculator=i,disabled:o},r)}Wt.propTypes={stateController:i().instanceOf(Ue).isRequired,boundCalculator:i().func.isRequired,currentBoundCalculator:i().func.isRequired,children:i().node.isRequired,disabled:i().bool};const Ut=t().memo(Ht);function Ht({stateController:n}){const i=function(e){return He(e,"percentile_changed",e.percentile)}(n),r=function(e){return He(e,"percentile_asymmetry_changed",e.percentileAsymmetry)}(n),[o,a]=(0,e.useState)(!1);return[o?t().createElement(Gt,{key:"asymmetry button",className:"percentile-button",selected:!0,description:"Percentile asymmetry"},t().createElement("input",{onClick:e=>e.stopPropagation(),value:r,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(Gt,{key:"main-button",className:"percentile-button",selected:o||100!==parseFloat(i),onClick:()=>a(!o),description:"Edit percentile"},o&&t().createElement("div",null,t().createElement("input",{onClick:e=>e.stopPropagation(),autoFocus:!0,value:i,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"}))))]}Ht.propTypes={stateController:i().instanceOf(Ue).isRequired};const qt=t().memo(jt);function jt({stateController:e,sidebarEnabled:n}){const i=function(e){return He(e,"show_individual_points_changed",e.showIndividualPoints)}(e),r=nt(e),o=ot(e),a=at(e),s=st(e),l=ht(e);return t().createElement("div",{className:"options-bar"},n&&t().createElement(Gt,{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(Gt,{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(Gt,{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(Ut,{stateController:e}),t().createElement(Gt,{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(Gt,{selected:r,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(Gt,{selected:i,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"})))))}jt.propTypes={stateController:i().instanceOf(Ue).isRequired,sidebarEnabled:i().bool};const Kt=t().memo(Vt);function Vt({stateController:e,customBoundsSelectors:n,customBoundsSelectorsOnly:i,sidebarEnabled:r}){const o=Je(e),a=Ze(e),s=rt(e);let l=fe*o;o>0&&(l+=5);let h=fe*a;a>0&&(h+=5);const{dates:c}=function(e){return He(e,"global_bounds_changed",e.globalBounds)}(e),g=function(e){return He(e,"bound_calculator_changed",e.boundCalculator)}(e),{hasPreviousBounds:A,hasNextBounds:d}=function(e){return He(e,"bound_history_changed",e.boundHistory)}(e),p=new Set(n.map((({label:e})=>e)));return t().createElement("div",{className:"range-selection"+(c?"":" range-not-dates"),style:{marginRight:l,marginLeft:h}},t().createElement("div",{className:"range-buttons"},s&&t().createElement(qt,{stateController:e,sidebarEnabled:r}),t().createElement(Gt,{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(Gt,{className:"range-selection-history",selected:!1,onClick:()=>e.previousBounds(),disabled:!A},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(Gt,{className:"range-selection-history",selected:!1,onClick:()=>e.nextBounds(),disabled:!d},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:i,datesOnly:r},o)=>t().createElement(Nt,{key:o,stateController:e,currentBoundCalculator:g,boundCalculator:i,disabled:r&&!c},n))),!p.has("1m")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastMinute,disabled:!c},"1m"),!p.has("10m")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.last10Minutes,disabled:!c},"10m"),!p.has("1h")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastHour,disabled:!c},"1h"),!p.has("1d")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastDay,disabled:!c},"1d"),t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.all,disabled:!1},"All")))}Vt.propTypes={stateController:i().instanceOf(Ue).isRequired,customBoundsSelectors:_.CustomBoundsSelectors.isRequired,customBoundsSelectorsOnly:i().bool,sidebarEnabled:i().bool};class Jt 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)}getClientX(e){return e&&e.touches&&e.touches[0]?e.touches[0].clientX:e&&e.changedTouches&&e.changedTouches[0]?e.changedTouches[0].clientX:e.clientX}componentDidMount(){this._renderer=new he({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&&this._renderer.resize()}componentWillUnmount(){this._renderer&&(this._renderer.dispose(),this._renderer=null)}onMouseMove(e){if(!this._dragType)return;let t;e&&e.touches&&e.preventDefault&&e.preventDefault();const n=this.el.getBoundingClientRect().left;this.setState((({selectionBounds:i,globalBounds:r,elementWidth:o})=>{let a=(this.getClientX(e)-n)/o;a=Math.max(a,0),a=Math.min(a,1);let s=a*(r.maxX-r.minX)+r.minX;if("scroll"===this._dragType){const e=i.maxX-i.minX;let n=s-e*this._scrollAnchorPercentage,o=s+e*(1-this._scrollAnchorPercentage);return n<r.minX&&(n=r.minX,o=n+e),o>r.maxX&&(o=r.maxX,n=o-e),t=()=>({minX:n,maxX:o}),{selectionBounds:Object.assign({},i,{minX:n,maxX:o})}}if("left"===this._dragType){s>i.maxX&&(s=i.maxX);const e=r.maxX===i.maxX;return t=()=>e?{minX:s}:{minX:s,maxX:i.maxX},{selectionBounds:Object.assign({},i,{minX:s})}}if("right"===this._dragType){s<i.minX&&(s=i.minX);const e=r.minX===i.minX;return t=()=>e?{maxX:s}:{minX:i.minX,maxX:s},{selectionBounds:Object.assign({},i,{maxX:s})}}}),(()=>{t&&(t.debounceHistory=!0,this.props.stateController.boundCalculator=t)}))}addListeners(){window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.stopDragging),window.addEventListener("touchmove",this.onMouseMove,{passive:!1}),window.addEventListener("touchend",this.stopDragging),window.addEventListener("touchcancel",this.stopDragging)}stopDragging(){this._dragType=null,this.forceUpdate(),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.stopDragging),window.removeEventListener("touchmove",this.onMouseMove),window.removeEventListener("touchend",this.stopDragging),window.removeEventListener("touchcancel",this.stopDragging)}startScroll(e){this._dragType="scroll";const{selectionBounds:t,globalBounds:n,elementWidth:i}=this.state,r=this.el.getBoundingClientRect().left,o=this.getClientX(e)-r,a=(t.minX-n.minX)/(n.maxX-n.minX)*i||0,s=(t.maxX-n.minX)/(n.maxX-n.minX)*i||0;this._scrollAnchorPercentage=(o-a)/(s-a),this.addListeners()}startLeftDrag(e){this._dragType="left",this.addListeners()}startRightDrag(e){this._dragType="right",this.addListeners()}render(){const{globalBounds:e,selectionBounds:n,elementWidth:i,elementHeight:r}=this.state;let o=Math.min(Math.max((n.minX-e.minX)/(e.maxX-e.minX),0),1)*i||0,a=Math.min(Math.max((n.maxX-e.minX)/(e.maxX-e.minX),0),1)*i||0;(isNaN(o)||!isFinite(o)||n.maxX<n.minX)&&(o=0),(isNaN(a)||!isFinite(a)||n.maxX<n.minX)&&(a=0);const s=r+14;let l;return n.dates&&this.props.markDates&&(l=Mt({min:e.minX,max:e.maxX,totalSize:i,precision:"day",dates:n.dates,formatter:ue,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",style:{touchAction:"none"}},t().createElement("canvas",{ref:e=>this.el=e}),t().createElement("svg",{style:{height:s}},t().createElement("g",null,t().createElement("rect",{x:0,y:r,width:i,height:14,className:"selection-bar-track"}),l&&l.map((({pixelValue:e,label:n,size:i,position:s},l)=>{if(isNaN(e))return null;const h=["axis-item",`axis-item-${i}`,`axis-item-${s}`];return e>=o&&e<=a&&h.push("axis-item-highlighted"),t().createElement("g",{key:l,className:h.join(" ")},t().createElement("path",{d:`M${e},0 v${r}`}),t().createElement("text",{x:e+3,y:r},n))})),t().createElement("rect",{x:o,y:r,width:a-o,height:14,className:"selection-bar",onMouseDown:this.startScroll,onTouchStart: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(${o+(a-o)/2},${r})`,onMouseDown:this.startScroll,onTouchStart:this.startScroll})),t().createElement("g",null,t().createElement("rect",{x:o,y:0,width:a-o,height:s,className:"target-selection-outline",onMouseDown:this.startScroll,onTouchStart:this.startScroll})),t().createElement("g",{className:"selection-handle"+("left"===this._dragType||"scroll"===this._dragType?" selection-handle-dragging":"")},t().createElement("rect",{x:o-15,y:(r-30)/2,width:30,height:30,fill:"transparent",className:"selection-bar-handle-hit",onMouseDown:this.startLeftDrag,onTouchStart:this.startLeftDrag}),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(${o},${(r-15)/2})`,onMouseDown:this.startLeftDrag,onTouchStart:this.startLeftDrag})),t().createElement("g",{className:"selection-handle"+("right"===this._dragType||"scroll"===this._dragType?" selection-handle-dragging":"")},t().createElement("rect",{x:a-15,y:(r-30)/2,width:30,height:30,fill:"transparent",className:"selection-bar-handle-hit",onMouseDown:this.startRightDrag,onTouchStart:this.startRightDrag}),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},${(r-15)/2})`,onMouseDown:this.startRightDrag,onTouchStart:this.startRightDrag}))),this.props.verticalLines&&t().createElement(dt,{stateController:this.props.stateController,verticalLines:this.props.verticalLines,isRangeGraph:!0,bounds:e,elementHeight:r,elementWidth:i})))}}Jt.defaultProps={width:3,shadowColor:"transparent"},Jt.propTypes={stateController:i().instanceOf(Ue).isRequired,webgl:i().bool,draggingY:i().bool,checkIntersection:i().bool,markDates:i().bool,timeZone:i().string,verticalLines:_.VerticalLines};const Zt=t().memo(Qt);function Qt({series:e,i:n,style:i,onMouseDown:r,theme:o,stateController:a,highlighted:s}){const l=(0,v.default)(e.color,n,e.multigrapherSeriesIndex);i="day"===o?Object.assign({},i,{backgroundColor:l}):Object.assign({},i,{color:l});const h=["series-key-item"];s&&h.push("series-key-item-highlighted");const c=Ne(e,n);return t().createElement("div",{className:h.join(" "),style:i,onMouseDown:r,onMouseOver:()=>a.setHighlightedSeries(n),onMouseOut:()=>a.setHighlightedSeries(null),onClick:()=>a.registerSeriesClick(n)},c)}Qt.propTypes={series:_.SingleSeries.isRequired,stateController:i().instanceOf(Ue),i:i().number.isRequired,style:i().object,onMouseDown:i().func,theme:i().string.isRequired,highlighted:i().bool};class en 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:i,scale:r,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":i,"data-grapher-id":a},t().createElement("div",{className:"scale-label",onClick:()=>n.toggleScale({axisIndex:i})},r.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:i,label:e.target.value}),placeholder:"Enter label",value:o||""}))))}}en.propTypes={stateController:i().instanceOf(Ue).isRequired,children:i().node.isRequired,axisIndex:i().number.isRequired,scale:i().string.isRequired,label:i().string,grapherID:i().string};const tn=t().memo(nn);function nn({stateController:n,theme:i,draggingY:r,grapherID:o,dragPositionYOffset:a=0}){const s=Ke(n),[l,h]=(0,e.useState)(null),[c,g]=(0,e.useState)({x:0,y:0}),A=Ve(n),d=(0,e.useRef)(null),[p,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)((()=>{d.current&&(cancelAnimationFrame(m),m=requestAnimationFrame((()=>{if(!d.current)return;const e=[...d.current.querySelectorAll(".series-key-axis-container")].map((e=>e.clientWidth)).reduce(((e,t)=>e+t),0);u(e)})))}),[s,d.current]);const f=function({stateController:e,keyWidth:t}){const n=Je(e),i=Ze(e),r=rt(e);let o=fe*n;n>0&&(o+=5),o+=250,r&&(o+=70);let a,s=fe*i;i>0&&(s+=5),s=Math.max(o,s),o=Math.max(o,s);const{elementWidth:l}=qe(e);return l-s-o<t&&(s=0,o=0,a=10),{marginRight:o,marginLeft:s,marginBottom:a}}({stateController:n,keyWidth:p}),C=je(n),x=function(e){return He(e,"always_tooltipped_changed",e.alwaysTooltipped)}(n);return t().createElement("div",{className:"series-key",style:f,ref:d},r&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-left","data-grapher-id":o}),C.map(((e,r)=>!e.series.length&&C.length>1?null:t().createElement(en,{key:r,label:e.label,axisIndex:e.axisIndex,scale:e.scale,stateController:n,grapherID:o},e.series.map((e=>e.hideFromKey?null:t().createElement(Zt,{key:e.index,series:e,i:e.index,onMouseDown:(t,i)=>((e,t)=>{let i=e.target;for(;i&&"series-key"!==i.className;)i=i.parentNode;const r=e.target.getBoundingClientRect().left;let o=i.getBoundingClientRect().left,a=i.style.marginLeft;const s=e.clientX,l=e.clientY,c=e.clientX,A=e.clientY;h(t),g({x:e.clientX-s+(r-o)-2,y:e.clientY-l+1});const d=e=>{i.style.marginLeft!==a&&(o=i.getBoundingClientRect().left,a=i.style.marginLeft),g({x:e.clientX-s+(r-o)-2,y:e.clientY-l+1})},p=e=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",p);let i=e.target;for(;i&&!(i.dataset||{}).axisIndex&&!(i.dataset||{}).grapherId;)i=i.parentNode;h(null),n.finalizeDrag(t,i&&(i.dataset||{}).axisIndex,i&&(i.dataset||{}).grapherId),e.clientX===c&&e.clientY===A&&n.toggleAlwaysTooltipped(t,e.shiftKey)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",p),n.markDragStart()})(t,e),theme:i,stateController:n,highlighted:A===e.index||x.has(e)})))))),r&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-right","data-grapher-id":o}),l&&t().createElement(Zt,{style:{left:c.x,top:c.y-a,position:"absolute",pointerEvents:"none",zIndex:1},series:l,i:l.index,theme:i,stateController:n}))}nn.propTypes={stateController:i().instanceOf(Ue).isRequired,theme:i().string.isRequired,draggingY:i().bool.isRequired,grapherID:i().string,dragPositionYOffset:i().number};const rn=t().memo(on);function on({title:e}){return t().createElement("div",{className:"grapher-title"},e)}on.propTypes={title:i().string.isRequired};class an 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=(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex);let i=e.name||e.yKey;return i||(i=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}}),i))}}function sn({stateController:e}){const n=Ke(e);return t().createElement("div",{className:"grapher-sidebar"},n.map(((n,i)=>t().createElement(an,{key:i,singleSeries:n,stateController:e}))))}an.propTypes={singleSeries:_.SingleSeries.isRequired,stateController:i().instanceOf(Ue).isRequired},sn.propTypes={stateController:i().instanceOf(Ue).isRequired};class ln{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 i=0===t.unsavedTooltipsCount||!t.mousePresent||"onShift"===this._syncTooltips&&!e.shiftKeyPressedOnMove;i&&(this._tooltipIgnoreState=Math.random());for(let n of this._stateControllers)e!==n&&(i?n.showOnlySavedTooltips(this._tooltipIgnoreState):n.setTooltipMousePosition({mouseX:t.mouseX,mouseY:t.mouseY,tooltipAllNext:!0,tooltipStateArg:this._tooltipIgnoreState}))}))}}function hn(){return hn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},hn.apply(this,arguments)}const cn=t().memo(An),gn={theme:"night",showAxes:!0,showRangeGraph:!0,showRangeSelectors:!0,showSeriesKey:!0,showTooltips:!0,boundsSelectionEnabled:!0,customBoundsSelectors:[],sidebarEnabled:!1,defaultShowAnnotations:!0,defaultShowOptions:!0};function An(n){n={...gn,...n};const i=(0,e.useMemo)((()=>new Ue({grapherID:n.id,...n,...n.stateControllerInitialization})),[]);(0,e.useEffect)((()=>()=>{i.dispose()}),[i]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(i)}),[i,n.exportStateController]),(0,e.useEffect)((()=>{i.timingFrameCount=n.timingFrameCount}),[i,n.timingFrameCount]),(0,e.useEffect)((()=>(n.onRenderTime&&i.on("render_time",n.onRenderTime),()=>{n.onRenderTime&&i.off("render_time",n.onRenderTime)})),[i,n.onRenderTime]),(0,e.useEffect)((()=>{i.setSeries(n.series)}),[i,n.series]),(0,e.useEffect)((()=>{i.theme=n.theme}),[i,n.theme]);const r=ht(i),o=n.bigLabels||"export"===r,a=n.defaultLineWidth||("export"===r?3:void 0);(0,e.useEffect)((()=>{i.defaultLineWidth=a}),[i,a]),(0,e.useEffect)((()=>{i.percentile=n.percentile}),[i,n.percentile]),(0,e.useEffect)((()=>{i.customBoundsSelectors=n.customBoundsSelectors}),[i,n.customBoundsSelectors]),(0,e.useEffect)((()=>{i.annotations=n.annotations}),[i,n.annotations]),(0,e.useEffect)((()=>n.onAxisChange?(i.on("exported_axes_changed",n.onAxisChange),()=>{i.off("exported_axes_changed",n.onAxisChange)}):()=>{}),[i,n.onAxisChange]),(0,e.useEffect)((()=>{i.primaryRenderer.resize()}),[n.height]);const s=it(i),{styles:l,classNames:h}=function(e,{draggingY:t,theme:n}){const{fullscreen:i,height:r,width:o}=e,a=["grapher",`grapher-${n}`],s={};return t&&a.push("grapher-dragging-y"),i?(a.push("grapher-fullscreen"),a.push("grapher-fixed-height")):r&&(a.push("grapher-fixed-height"),s.height="number"==typeof r?r-20:`calc(${r} - 20px)`),o&&(s.width=o),{styles:s,classNames:a}}(n,{draggingY:s,theme:r}),c=Qe(i),g=et(i),A=at(i),d="boolean"==typeof n.showAxisColors?n.showAxisColors:"export"!==r,p="boolean"!=typeof n.showGrid||n.showGrid,u="boolean"==typeof n.showAxes&&n.showAxes,m={stateController:i,showAxes:u,showGrid:p,showSeriesKey:n.showSeriesKey,bodyHeight:n.bodyHeight,theme:r,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset,showAxisColors:d,bigLabels:o};return t().createElement("div",{className:h.join(" "),style:l,"data-grapher-id":n.id},n.title&&t().createElement(rn,{title:n.title}),t().createElement("div",{className:"grapher-primary-container-outer"},A&&t().createElement(sn,{stateController:i}),t().createElement("div",{className:"grapher-primary-container-body"},n.showSeriesKey&&t().createElement(tn,{stateController:i,draggingY:s,theme:n.theme,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset}),n.showRangeSelectors&&t().createElement(Kt,{stateController:i,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:fe,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}}),g.map(((e,n)=>t().createElement(It,hn({key:n,axis:e,sideIndex:g.length-n-1},m)))),t().createElement("div",{className:"central-container"},t().createElement(mt,{stateController:i,webgl:n.webgl,bodyHeight:n.bodyHeight,boundsSelectionEnabled:n.boundsSelectionEnabled,showTooltips:n.showTooltips,showContextMenu:n.showContextMenu,tooltipOptions:n.tooltipOptions,checkIntersection:n.checkIntersection,draggablePoints:n.draggablePoints,onPointDrag:n.onPointDrag,onDraggablePointsDoubleClick:n.onDraggablePointsDoubleClick,onPointClick:n.onPointClick,verticalLines:n.verticalLines,clockStyle:n.clockStyle,timeZone:n.timeZone}),t().createElement(Ft,{showGrid:p,showAxes:u,stateController:i,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(Jt,{stateController:i,webgl:n.webgl,checkIntersection:n.checkIntersection,markDates:n.markRangeGraphDates,timeZone:n.timeZone,verticalLines:n.verticalLines}))),c.map(((e,n)=>t().createElement(It,hn({key:n,axis:e,sideIndex:n},m)))),s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-right","data-grapher-id":n.id,style:{width:fe,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}})))))}An.propTypes={series:_.Series.isRequired,webgl:i().bool,requireWASM:i().bool,checkIntersection:i().bool,onAxisChange:i().func,onRenderTime:i().func,exportStateController:i().func,timingFrameCount:i().number,stateControllerInitialization:i().object,syncPool:i().instanceOf(ln),id:i().string,dragPositionYOffset:i().number,theme:i().oneOf(["day","night","export"]),title:i().string,fullscreen:i().bool,bodyHeight:i().number,height:i().number,width:i().number,showAxes:i().bool,showRangeGraph:i().bool,showRangeSelectors:i().bool,showSeriesKey:i().bool,showTooltips:i().bool,showGrid:i().bool,showAxisColors:i().bool,bigLabels:i().bool,xTickUnit:i().oneOf(["year"]),formatXAxisLabel:i().func,xAxisIntegersOnly:i().bool,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,markRangeGraphDates:i().bool,boundsSelectionEnabled:i().bool,sidebarEnabled:i().bool,percentile:i().number,defaultShowOptions:i().bool,defaultShowIndividualPoints:i().bool,defaultShowSidebar:i().bool,defaultShowAnnotations:i().bool,defaultLineWidth:i().number,tooltipOptions:_.TooltipOptions,customBoundsSelectors:_.CustomBoundsSelectors,customBoundsSelectorsOnly:i().bool,defaultBoundsCalculator:i().string,annotations:_.Annotations,draggablePoints:_.DraggablePoints,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func,verticalLines:_.VerticalLines,onPointClick:i().func};const dn=v.LINE_COLORS,pn=Ge;class un extends B{constructor({id:e}){super(),this._id=e,this._multiSeries=[],this._seriesToGraphIndices=new Map,this._graphIndicesToSeries=new Map,this._modifiedSeries=new Map,this._originalSeriesByMultigrapherIndex=new Map,this._stateControllers=new Set,this._prevSeries=[],this._dataCache=new Map,this._subscriptions=new Map,this._draggingY=!1,this.on("multi_series_changed",(()=>{for(let e of this._stateControllers)e._multiSeries=this._multiSeries}))}setSeries(e){if(this._prevSeries.length===e.length){let t=!1;for(let n=0;n<e.length;n++)if(e[n]!==this._prevSeries[n]){t=!0;break}if(!t)return}this._prevSeries=e;const t=new Set,n=new Set(e);for(let n of e){let e=n.graph||0;this._seriesToGraphIndices.has(n)&&(e=this._seriesToGraphIndices.get(n)),t.add(e);let i=this._graphIndicesToSeries.get(e);i||(i=new Set,this._graphIndicesToSeries.set(e,i)),i.add(n)}const i=[...t].sort();this._multiSeries=[];let r=0;for(let e of i){const t=[];for(let i of this._graphIndicesToSeries.get(e)){if(!n.has(i)){this._graphIndicesToSeries.get(e).delete(i);continue}if(this._modifiedSeries.has(i)){r++,t.push(this._modifiedSeries.get(i));continue}const o=(0,v.default)(i.color,r),a=Ne(i,r),s={...i,multigrapherSeriesIndex:r,multigrapherGraphIndex:e,color:o,name:a};this._modifiedSeries.set(i,s),this._originalSeriesByMultigrapherIndex.set(r,i),r++,t.push(s)}this._multiSeries.push(t)}this._nextMultigrapherSeriesIndex?this._nextMultigrapherSeriesIndex=this._nextMultigrapherSeriesIndex-this._multiSeriesCount+r:this._nextMultigrapherSeriesIndex=r,this._multiSeriesCount=r,this.emit("multi_series_changed",this.multiSeries)}registerStateController(e){this._stateControllers.has(e)||(this._stateControllers.add(e),e._multigraphStateController=this,e._multiSeries=this._multiSeries,e.on("dragging_y_finalized",(({grapherID:t,axisIndex:n,draggedSeries:i}={})=>{if(t===e.grapherID)return;const[r,o,a]=t.split("-");"multigrapher"===r&&o===this._id&&setTimeout((()=>{this.moveSeries({axisIndex:n,draggedSeries:i,graphIndex:a})}))})),e.on("dragging_y_changed",(e=>{e!==this._draggingY&&(this._draggingY=e,this.emit("dragging_y_changed",this._draggingY))})),e.on("observable_modified",(t=>{for(let n of this._stateControllers)e!==n&&n.markObservableModified(t)})),e.on("dispose",(()=>{this._stateControllers.delete(e)})))}moveSeries({axisIndex:e,draggedSeries:t,graphIndex:n}){const i=this.graphCount,r=this._originalSeriesByMultigrapherIndex.get(t.multigrapherSeriesIndex),o=this._modifiedSeries.get(r);this._multiSeries[o.multigrapherGraphIndex].splice(this._multiSeries[o.multigrapherGraphIndex].indexOf(o),1),this._multiSeries[o.multigrapherGraphIndex]=[...this._multiSeries[o.multigrapherGraphIndex]],o.multigrapherGraphIndex="top"===n?this._createGraphAtTop():"bottom"===n?this._createGraphAtBottom():parseInt(n),o.axisIndex=e,delete o.axis,this._multiSeries[o.multigrapherGraphIndex]=[...this._multiSeries[o.multigrapherGraphIndex],o],this._multiSeries=[...this._multiSeries];for(let e=0;e<this._multiSeries.length;e++){const t=this._multiSeries[e].map((({multigrapherSeriesIndex:e})=>this._originalSeriesByMultigrapherIndex.get(e)));this._graphIndicesToSeries.set(e,new Set(t));for(let n of t)this._seriesToGraphIndices.set(n,e)}this.emit("multi_series_changed",this.multiSeries),this.emit("graph_count_changed",this.graphCount,i)}_createGraphAtTop(){let e=null;for(let t=0;t<this._multiSeries.length&&0===this._multiSeries[t].length;t++)e=t;if(null!==e)return e;this._multiSeries=[[],...this._multiSeries];for(let e=0;e<this._multiSeries.length;e++)if(this._multiSeries[e].length){this._multiSeries[e]=[...this._multiSeries[e]];for(let t of this._multiSeries[e])t.multigrapherGraphIndex=e}return 0}_createGraphAtBottom(){let e=null;for(let t=this._multiSeries.length-1;t>=0&&0===this._multiSeries[t].length;t--)e=t;return null!==e?e:(this._multiSeries=[...this._multiSeries,[]],this._multiSeries.length-1)}get multiSeries(){return this._multiSeries.filter((e=>e.length))}get series(){return[...this._stateControllers].map((e=>e.series)).flat()}get graphCount(){return this.multiSeries.length}get draggingY(){return this._draggingY}dispose(){this.clearListeners();for(let e of this._subscriptions.values())e.unsubscribe();this._subscriptions.clear()}get stateControllerInitialization(){return{sharedDataCache:this._dataCache,sharedSubscriptions:this._subscriptions}}incrementMultigrapherSeriesIndex(){const e=this._nextMultigrapherSeriesIndex;return this._nextMultigrapherSeriesIndex++,e}}function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},mn.apply(this,arguments)}const fn=t().memo(Cn);function Cn(n){const i=(0,e.useMemo)((()=>Math.random().toString(36).slice(2)),[]),r=(0,e.useMemo)((()=>new un({id:i,...n})),[]),o=function(e){return He(e,"multi_series_changed",e.multiSeries)}(r),a=(0,e.useMemo)((()=>new ln({syncBounds:n.syncBounds,syncTooltips:n.syncTooltips,syncDragState:!0})),[]),s=(0,e.useMemo)((()=>r.registerStateController.bind(r)),[r]);(0,e.useEffect)((()=>()=>{r.dispose()}),[r]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(r)}),[r,n.exportStateController]),(0,e.useEffect)((()=>{r.setSeries(n.series)}),[r,n.series]),(0,e.useEffect)((()=>n.onMultiseriesChange?(r.on("multi_series_changed",n.onMultiseriesChange),()=>{r.off("multi_series_changed",n.onMultiseriesChange)}):()=>{}),[r,n.onMultiseriesChange]);const l=it(r);return t().createElement("div",{className:"multigrapher"},l&&n.newUpperEnabled&&t().createElement("div",{className:`new-grapher grapher-${n.theme}`,"data-grapher-id":`multigrapher-${i}-top`},"New grapher"),o.map(((e,o)=>t().createElement(cn,mn({key:o},n,{syncPool:a,stateControllerInitialization:r.stateControllerInitialization,series:e,id:`multigrapher-${i}-${o}`,dragPositionYOffset:n.newUpperEnabled?38:0,exportStateController:s})))),l&&t().createElement("div",{className:`new-grapher grapher-${n.theme}`,"data-grapher-id":`multigrapher-${i}-bottom`},"New grapher"))}Cn.defaultProps={theme:"night"},Cn.propTypes=Object.assign({},cn.propTypes,{syncBounds:i().bool,syncTooltips:i().bool,newUpperEnabled:i().bool,onMultiseriesChange:i().func})})(),module.exports.Grapher=o})();
|
|
1
|
+
(()=>{var e,t,n={365:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LINE_COLORS:()=>i,applyReducedOpacity:()=>o,applyReducedOpacityToGradient:()=>a,createDefaultGradient:()=>s,default:()=>r});const i=["#F1C232","#1259f8","#cb4b4b","#4da74d","#9440ed","#61e0ed","#ed6d2c","#ed13c6","#bbed59"];function r(e,t,n){return"string"==typeof e?e:"number"==typeof e?i[e%i.length]:void 0!==n?i[n%i.length]:i[t%i.length]}function o(e,t){if(!e)return e;if(e.startsWith("rgba(")){const n=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);if(n){const[,e,i,r,o]=n;return`rgba(${e}, ${i}, ${r}, ${parseFloat(o)*t})`}}if(e.startsWith("rgb(")){const n=e.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);if(n){const[,e,i,r]=n;return`rgba(${e}, ${i}, ${r}, ${t})`}}if(e.startsWith("#")){let n=e.slice(1);return 3===n.length&&(n=n.split("").map((e=>e+e)).join("")),`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}return e}function a(e,t){return e&&Array.isArray(e)?e.map((e=>{if(Array.isArray(e)&&2===e.length){const[n,i]=e;return[n,o(i,t)]}return"string"==typeof e?o(e,t):e})):e}function s(e){if(!e)return[[0,"transparent"],[1,"transparent"]];const t=o(e,.5);return[[0,t],[1,t]]}},557:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var i=n(354),r=n.n(i),o=n(314),a=n.n(o)()(r());a.push([e.id,'.grapher-night{position:relative;background:linear-gradient(to bottom right, #131313, #1e1e1e);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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-night .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(255,255,255,.3)}.grapher-night .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-night .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);color:#f0f0f0;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-night .axis.y-axis{height:400px}.grapher-night .axis.y-axis .axis-item text{text-anchor:end}.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:rgba(192,192,192,.3);stroke-width:1px}.grapher-night .axis .axis-item path{stroke:rgba(192,192,192,.3);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:1px}.grapher-night .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-night .range-selection-graph{width:100%;background-color:rgba(0,0,0,.3);height:calc(50px + 14px)}.grapher-night .range-selection-graph .graph-body-secondary{height:50px}.grapher-night .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-night .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#aaa;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#808083;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#fff;stroke-width:1px;cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#aaa;fill:#666;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#aaa;stroke-width:1;transition:stroke-width .15s ease}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-night .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.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:#9f9f9f;stroke-width:1px}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#fff}.grapher-night .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#fff}.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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-day .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(0,0,0,.3)}.grapher-day .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-day .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-day .axis.y-axis{height:400px}.grapher-day .axis.y-axis .axis-item text{text-anchor:end}.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: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:1px}.grapher-day .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-day .range-selection-graph{width:100%;background-color:rgba(255,255,255,.3);height:calc(50px + 14px)}.grapher-day .range-selection-graph .graph-body-secondary{height:50px}.grapher-day .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-day .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#333;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#b0b0b7;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#333;stroke-width:1px;cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;fill:#b0b0b7;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#333;stroke-width:1;transition:stroke-width .15s ease}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-day .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#555;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:#555;stroke-width:1px}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#000}.grapher-day .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#000}.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;margin-top:10px}.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;z-index:20}.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;z-index:10}.grapher-export .graph-body .grapher-annotations .grapher-annotation{position:absolute}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-marker{display:inline-block;background:rgba(0,0,0,.3)}.grapher-export .graph-body .grapher-annotations .grapher-annotation.grapher-annotation-range .annotation-range-marker{display:inline-block;background-color:rgba(128,128,128,.2);background-image:repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);background-size:40px 40px;border-right:1px solid #fff;border-left:1px solid #fff}.grapher-export .graph-body .grapher-annotations .grapher-annotation .annotation-text{position:absolute;background:rgba(255,255,255,.6);border:1px solid rgba(0,0,0,.3);color:#0f0f0f;padding:2px 4px;white-space:nowrap;font-size:10px;z-index:10}.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.x-axis-dual{height:30px}.grapher-export .axis.y-axis{height:400px}.grapher-export .axis.y-axis .axis-item text{text-anchor:end}.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-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:1px}.grapher-export .axis .axis-item.axis-item-big-labels text{font-size:16px}.grapher-export .range-selection-graph{width:100%;background-color:rgba(255,255,255,.3);height:calc(50px + 14px)}.grapher-export .range-selection-graph .graph-body-secondary{height:50px}.grapher-export .range-selection-graph .graph-body-secondary canvas{height:100%}.grapher-export .range-selection-graph .graph-body-secondary svg{position:absolute;left:0;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 .target-selection-outline{stroke:#333;cursor:ew-resize;fill:rgba(0,0,0,0)}.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{fill:#b0b0b7;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-rifles{stroke:#333;stroke-width:1px;cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle-hit{cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-bar-handle{stroke:#333;fill:#b0b0b7;stroke-width:1px;cursor:ew-resize;transition:stroke-width .15s ease,fill .15s ease}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-hit{cursor:ew-resize}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle .selection-handle-line{stroke:#333;stroke-width:1;transition:stroke-width .15s ease}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-handle-line{stroke-width:3}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-handle-line{stroke-width:3}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle:hover .selection-bar-handle{stroke-width:2px}.grapher-export .range-selection-graph .graph-body-secondary svg .selection-handle.selection-handle-dragging .selection-bar-handle{stroke-width:2px}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item text{fill:#333;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:#333;stroke-width:1px}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted path{stroke:#000}.grapher-export .range-selection-graph .graph-body-secondary svg .axis-item.axis-item-highlighted text{fill:#000}.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:"AAs8BA,eAv4BE,iBAAA,CACA,6DAAA,CACA,YAPU,CASV,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8DACE,sBAAA,CAGF,8BACE,iBAAA,CACA,UA5BY,CA6BZ,cAAA,CACA,iBAAA,CAGF,gDACE,YAAA,CAEA,iEACE,mEAAA,CACA,UAnCiB,CAoCjB,yBAAA,CACA,iBAAA,CACA,gBAAA,CACA,mBAAA,CACA,eAAA,CACA,aAAA,CAEA,gFACE,kBAAA,CAEA,+FACE,cAAA,CAGF,sFACE,oBAAA,CACA,iBAAA,CACA,gBAAA,CAGF,qGACE,SAAA,CACA,cAAA,CACA,QAAA,CACA,OAAA,CACA,iBAAA,CAGF,+GACE,yCAAA,CAGF,+GACE,aAAA,CAGF,2FACE,iBAAA,CACA,OAAA,CACA,MAAA,CACA,UAAA,CACA,SAAA,CACA,qBAAA,CACA,gBAAA,CACA,iBAAA,CAGF,iGACE,UAAA,CACA,iBAAA,CACA,YAAA,CAEA,SAAA,CACA,UAAA,CACA,SAAA,CACA,UAAA,CACA,iBAAA,CACA,wBAAA,CACA,+BAAA,CACA,2BAAA,CACA,uBAAA,CAKN,gFACE,UAAA,CACA,gBAAA,CAIJ,2BACE,iBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,wCACE,oBAAA,CACA,eA7H8B,CA8H9B,YAzHgB,CA0HhB,wBAAA,CACA,UAAA,CACA,gBAAA,CACA,kBAAA,CACA,cAAA,CACA,kBAAA,CACA,cAAA,CACA,gBAAA,CAGF,sDACE,oBAAA,CACA,qBAAA,CAEA,cAAA,CACA,eAAA,CACA,kBAAA,CAEA,kBAAA,CAEA,iFACE,eAAA,CAIA,2GACE,UAAA,CACA,eAAA,CACA,iBAAA,CACA,kBAAA,CAGF,+HACE,aAAA,CAIA,wHACE,YAnK+B,CAwKrC,sFACE,oBAAA,CAEA,0FACE,mBAAA,CAIJ,uFACE,YAAA,CAGF,2EACE,UAAA,CACA,cAAA,CACA,oBAAA,CACA,kBAAA,CACA,cAAA,CAEA,gFACE,SA9L0B,CAkM1B,sFACE,YAjM+B,CAuMvC,4CACE,6BAAA,CACA,WAAA,CACA,UAAA,CACA,oBAAA,CACA,cAAA,CACA,gBAAA,CACA,wBA5MoB,CA8MpB,6DACE,eAAA,CAGF,wEACE,yBAAA,CAKN,gCACE,YArP2B,CAsP3B,gBAAA,CAEA,gDACE,UArP+B,CAwPjC,+CACE,gBAAA,CAEA,4DACE,oBAAA,CAGF,+DACE,iBAAA,CACA,oBAAA,CACA,6BAAA,CAEA,oFACE,iBAAA,CACA,YAvQ8B,CAwQ9B,eAzQgC,CA0QhC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,qBAAA,CAEA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,QAAA,CAGF,0FACE,kBAAA,CAGF,2FACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,gBAAA,CACA,gBAAA,CACA,kBAAA,CACA,2DAAA,CAIJ,6DACE,oBAAA,CACA,cAAA,CACA,eAAA,CAEE,eAAA,CAKF,iBAAA,CACA,kBAnTyB,CAsTzB,mFACE,YArT8B,CAsT9B,eAvTgC,CA2TlC,4LACE,kBAAA,CACA,UA3T2B,CA4T3B,kBA3T6B,CA8T/B,6EACE,iBAAA,CACA,OAAA,CAGE,uGACE,SAAA,CAIJ,mGACE,SAAA,CAEA,uGACE,SAAA,CAIJ,gGACE,SAAA,CAEA,oGACE,SAAA,CAIJ,oFACE,WAAA,CACA,SAAA,CAGF,iFACE,WAAA,CACA,iBAAA,CACA,QAAA,CACA,SAAA,CAKN,iGACE,gBAAA,CACA,eAAA,CAIA,sEACE,oBAAA,CAGF,wEACE,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,aA9VsB,CA+VtB,eAAA,CACA,UAAA,CACA,cAAA,CACA,yBAAA,CAEA,8EACE,YAAA,CACA,oBAvW+B,CA0WjC,sMAEE,uBAAA,CACA,QAAA,CAKF,4GACE,WAAA,CACA,OAAA,CACA,SAAA,CAKN,uEACE,gBAAA,CAKN,iCACE,YAAA,CAEA,oDACE,UAAA,CAIJ,sCACE,YAAA,CACA,eAAA,CAGF,2BACE,UAAA,CACA,YAwY0B,CAvY1B,iBAAA,CAEA,kCACE,UAAA,CACA,WAAA,CAGF,oJACE,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,UAAA,CAEA,gKACE,iBAAA,CACA,gBAAA,CACA,MAAA,CAIJ,mDACE,mBAAA,CACA,gBAAA,CAKE,+DACE,mBAhdmB,CAmdrB,+DACE,YAnda,CAodb,yBAAA,CACA,iBAAA,CAIA,kFACE,SAAA,CAKN,kDACE,iBAAA,CACA,YAAA,CACA,0BAAA,CAGF,sEACE,iBAAA,CAIJ,iDACE,iBAAA,CACA,KAAA,CACA,MAAA,CAGE,uEACE,eAAA,CACA,iBAAA,CACA,KAAA,CACA,yBArfmB,CAsfnB,qCAAA,CACA,aAtfa,CAufb,eAAA,CACA,qBAAA,CACA,WAAA,CAMJ,4DACE,cAAA,CAKF,wDACE,WArgBgB,CAwgBlB,2DACE,SAzgBgB,CA6gBpB,gDACE,iBAAA,CACA,KAAA,CACA,mBAAA,CACA,gBAAA,CACA,UAAA,CAEA,oEACE,iBAAA,CAEA,uFACE,oBAAA,CACA,+BA5fsB,CAggBtB,sHACE,oBAAA,CACA,qCAAA,CACA,mIAAA,CACA,yBAAA,CACA,2BAAA,CACA,0BAAA,CAIJ,qFACE,iBAAA,CACA,yBA3iBmB,CA4iBnB,qCAAA,CACA,aA5iBa,CA6iBb,eAAA,CACA,kBAAA,CACA,cAAA,CACA,UAAA,CAKN,6CACE,iBAAA,CACA,+BAriBgC,CAyiBpC,qBACE,gBAAA,CACA,gBAAA,CAEA,4BACE,SAAA,CACA,WAlhBY,CAuhBZ,aAAA,CAHA,wCACE,WAphBe,CAyhBnB,4BACE,YA+OwB,CA7OxB,4CACE,eAAA,CAGF,0CACE,kBAAA,CACA,YA5kBY,CA8kBZ,2DACE,cAAA,CAIJ,8CACE,cAAA,CAIA,yDACE,iBAAA,CAKN,gCACE,2BAlmBc,CAmmBd,gBAlmBc,CAsmBd,qCACE,2BAtmBY,CAumBZ,gBAAA,CAGF,qCACE,YA1mBY,CA2mBZ,aAAA,CAIA,2DACE,gBAAA,CAKF,0DACE,cAAA,CAMR,sCACE,UAAA,CACA,+BAnnBuC,CAonBvC,wBAAA,CAEA,4DACE,WAkL0B,CAhL1B,mEACE,WAAA,CAGF,gEACE,iBAAA,CACA,MAAA,CACA,UAAA,CACA,gBAAA,CAEA,kFACE,yBAnoB4B,CAooB5B,gBAAA,CAIF,0FACE,WAxoB8B,CAyoB9B,gBAAA,CACA,kBAAA,CAGF,qFACE,YA5oBgC,CA+oBlC,+EACE,YAjpB0B,CAkpB1B,gBAAA,CAGF,sFACE,WAppBiC,CAqpBjC,gBAAA,CACA,gBAAA,CAGF,0FACE,gBAAA,CAGF,sFACE,WA5pBmB,CA6pBnB,SA5pBwB,CA6pBxB,gBAAA,CACA,gBAAA,CACA,gDAAA,CAIA,wGACE,gBAAA,CAGF,yGACE,WAzqBiB,CA0qBjB,cAAA,CACA,iCAAA,CAGF,+GACE,cAAA,CAGF,mIACE,cAAA,CAGF,8GACE,gBAAA,CAGF,kIACE,gBAAA,CAKF,gFACE,YA/rBoB,CAgsBpB,iBAAA,CACA,aAAA,CACA,gBAAA,CACA,iCAAA,CAGF,gFACE,cAvsBoB,CAwsBpB,gBAAA,CAIA,sGACE,WA5sByB,CA+sB3B,sGACE,SA/sByB,CAutBrC,6CACE,wBAAA,CACA,wBAAA,CACA,YAAA,CACA,aAptB4B,CAqtB5B,eAAA,CACA,iBAAA,CAEA,yDACE,YAAA,CACA,oBA3tBqC,CAguBvC,0CACE,wBAAA,CACA,WAAA,CACA,aAAA,CAEA,kDACE,gBAAA,CAKN,kCACE,2BAAA,CAIA,qEACE,WAAA,CAEA,qGACE,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,uHACE,WAAA,CAEA,0IACE,YAAA,CACA,qBAAA,CACA,WAAA,CAEA,sJACE,WAAA,CACA,YAAA,CAIJ,oIACE,wBAAA,CAOV,2BACE,WAAA,CACA,wBAAA,CACA,iBAAA,CACA,UAvwBkB,CAo5BtB,aA34BE,iBAAA,CACA,uDAAA,CACA,YAPU,CASV,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,wDACE,sBAAA,CAGF,4BACE,iBAAA,CACA,UAkzBoB,CAjzBpB,cAAA,CACA,iBAAA,CAGF,8CACE,YAAA,CAEA,+DACE,mEAAA,CACA,UA2yByB,CA1yBzB,yBAAA,CACA,iBAAA,CACA,gBAAA,CACA,mBAAA,CACA,eAAA,CACA,aAAA,CAEA,8EACE,kBAAA,CAEA,6FACE,cAAA,CAGF,oFACE,oBAAA,CACA,iBAAA,CACA,gBAAA,CAGF,mGACE,SAAA,CACA,cAAA,CACA,QAAA,CACA,OAAA,CACA,iBAAA,CAGF,6GACE,yCAAA,CAGF,6GACE,aAAA,CAGF,yFACE,iBAAA,CACA,OAAA,CACA,MAAA,CACA,UAAA,CACA,SAAA,CACA,qBAAA,CACA,gBAAA,CACA,iBAAA,CAGF,+FACE,UAAA,CACA,iBAAA,CACA,YAAA,CAEA,SAAA,CACA,UAAA,CACA,SAAA,CACA,UAAA,CACA,iBAAA,CACA,wBAAA,CACA,+BAAA,CACA,2BAAA,CACA,uBAAA,CAKN,8EACE,UAAA,CACA,gBAAA,CAIJ,yBACE,iBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,sCACE,oBAAA,CACA,kBAitBsC,CAhtBtC,UAstBwB,CArtBxB,wBAAA,CACA,UAAA,CACA,gBAAA,CACA,kBAAA,CACA,cAAA,CACA,kBAAA,CACA,cAAA,CACA,gBAAA,CAGF,oDACE,oBAAA,CACA,wBAAA,CAEA,cAAA,CACA,eAAA,CACA,kBAAA,CAEA,kBAAA,CAEA,+EACE,eAAA,CAIA,yGACE,UAAA,CACA,eAAA,CACA,iBAAA,CACA,kBAAA,CAGF,6HACE,aAAA,CAIA,sHACE,YA2qBuC,CAtqB7C,oFACE,oBAAA,CAEA,wFACE,mBAAA,CAIJ,qFACE,YAAA,CAGF,yEACE,UAAA,CACA,cAAA,CACA,oBAAA,CACA,kBAAA,CACA,cAAA,CAEA,8EACE,YAgpBkC,CA5oBlC,oFACE,YA6oBuC,CAvoB/C,0CACE,6BAAA,CACA,WAAA,CACA,UAAA,CACA,oBAAA,CACA,cAAA,CACA,gBAAA,CAGA,2DACE,eAAA,CAGF,sEACE,uBAAA,CAKN,8BACE,UAylBmC,CAxlBnC,gBAAA,CAEA,8CACE,UAylBuC,CAtlBzC,6CACE,gBAAA,CAEA,0DACE,oBAAA,CAGF,6DACE,iBAAA,CACA,oBAAA,CACA,6BAAA,CAEA,kFACE,iBAAA,CACA,UAukBsC,CAtkBtC,eAqkBwC,CApkBxC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,qBAAA,CAEA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,QAAA,CAGF,wFACE,kBAAA,CAGF,yFACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,gBAAA,CACA,gBAAA,CACA,kBAAA,CACA,2DAAA,CAIJ,2DACE,oBAAA,CACA,cAAA,CACA,eAAA,CAIE,eAAA,CAGF,iBAAA,CACA,eA2hBiC,CA1hBjC,wBA+hBkC,CA7hBlC,iFACE,UAyhBsC,CAxhBtC,eAuhBwC,CAthBxC,qBA2hByC,CAxhB3C,wLACE,kBAAA,CACA,UAmhBmC,CAlhBnC,eAmhBqC,CAhhBvC,2EACE,iBAAA,CACA,OAAA,CAGE,qGACE,SAAA,CAIJ,iGACE,SAAA,CAEA,qGACE,SAAA,CAIJ,8FACE,SAAA,CAEA,kGACE,SAAA,CAIJ,kFACE,WAAA,CACA,SAAA,CAGF,+EACE,WAAA,CACA,iBAAA,CACA,QAAA,CACA,SAAA,CAKN,+FACE,gBAAA,CACA,eAAA,CAIA,oEACE,oBAAA,CAGF,sEACE,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,UAgf8B,CA/e9B,eAAA,CACA,UAAA,CACA,cAAA,CACA,yBAAA,CAEA,4EACE,YAAA,CACA,oBAueuC,CApezC,kMAEE,uBAAA,CACA,QAAA,CAKF,0GACE,WAAA,CACA,OAAA,CACA,SAAA,CAKN,qEACE,gBAAA,CAKN,+BACE,YAAA,CAEA,kDACE,UAAA,CAIJ,oCACE,YAAA,CACA,eAAA,CAGF,yBACE,UAAA,CACA,YAkZ0B,CAjZ1B,iBAAA,CAEA,gCACE,UAAA,CACA,WAAA,CAGF,8IACE,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,UAAA,CAEA,0JACE,iBAAA,CACA,gBAAA,CACA,MAAA,CAIJ,iDACE,mBAAA,CACA,gBAAA,CAKE,6DACE,yBA+X2B,CA5X7B,6DACE,YA4XqB,CA3XrB,yBAAA,CACA,iBAAA,CAIA,gFACE,SAAA,CAKN,gDACE,iBAAA,CACA,YAAA,CACA,0BAAA,CAGF,oEACE,iBAAA,CAIJ,+CACE,iBAAA,CACA,KAAA,CACA,MAAA,CAGE,qEACE,eAAA,CACA,iBAAA,CACA,KAAA,CACA,+BA0V2B,CAzV3B,+BAAA,CACA,aAyVqB,CAxVrB,eAAA,CACA,qBAAA,CACA,WAAA,CAMJ,0DACE,cAAA,CAKF,sDACE,WA0UwB,CAvU1B,yDACE,SAsUwB,CAlU5B,8CACE,iBAAA,CACA,KAAA,CACA,mBAAA,CACA,gBAAA,CACA,UAAA,CAEA,kEACE,iBAAA,CAEA,qFACE,oBAAA,CACA,yBAkV8B,CA9U9B,oHACE,oBAAA,CACA,qCAAA,CACA,mIAAA,CACA,yBAAA,CACA,2BAAA,CACA,0BAAA,CAIJ,mFACE,iBAAA,CACA,+BAoS2B,CAnS3B,+BAAA,CACA,aAmSqB,CAlSrB,eAAA,CACA,kBAAA,CACA,cAAA,CACA,UAAA,CAKN,2CACE,iBAAA,CACA,0BAySwC,CArS5C,mBACE,gBAAA,CACA,gBAAA,CAEA,0BACE,SAAA,CACA,WAlhBY,CAuhBZ,aAAA,CAHA,sCACE,WAphBe,CAyhBnB,0BACE,YAyPwB,CAvPxB,0CACE,eAAA,CAGF,wCACE,kBAAA,CACA,YAkQoB,CAhQpB,yDACE,cAAA,CAIJ,4CACE,cAAA,CAIA,uDACE,iBAAA,CAKN,8BACE,cA6OsB,CA5OtB,gBAlmBc,CAsmBd,mCACE,cAwOoB,CAvOpB,gBAAA,CAGF,mCACE,YAoOoB,CAnOpB,aAAA,CAIA,yDACE,gBAAA,CAKF,wDACE,cAAA,CAMR,oCACE,UAAA,CACA,qCA2N+C,CA1N/C,wBAAA,CAEA,0DACE,WA4L0B,CA1L1B,iEACE,WAAA,CAGF,8DACE,iBAAA,CACA,MAAA,CACA,UAAA,CACA,gBAAA,CAEA,gFACE,oBA2MoC,CA1MpC,gBAAA,CAIF,wFACE,WAsMsC,CArMtC,gBAAA,CACA,kBAAA,CAGF,mFACE,SAkMwC,CA/L1C,6EACE,YA6LkC,CA5LlC,gBAAA,CAGF,oFACE,WA0LyC,CAzLzC,gBAAA,CACA,gBAAA,CAGF,wFACE,gBAAA,CAGF,oFACE,WAkL2B,CAjL3B,YAkLgC,CAjLhC,gBAAA,CACA,gBAAA,CACA,gDAAA,CAIA,sGACE,gBAAA,CAGF,uGACE,WAqKyB,CApKzB,cAAA,CACA,iCAAA,CAGF,6GACE,cAAA,CAGF,iIACE,cAAA,CAGF,4GACE,gBAAA,CAGF,gIACE,gBAAA,CAKF,8EACE,SA+I4B,CA9I5B,iBAAA,CACA,aAAA,CACA,gBAAA,CACA,iCAAA,CAGF,8EACE,WAuI4B,CAtI5B,gBAAA,CAIA,oGACE,WAkIiC,CA/HnC,oGACE,SA+HiC,CAvH7C,yCACE,wBAAA,CACA,wBAAA,CACA,YAAA,CACA,UA0HoC,CAzHpC,eAAA,CACA,iBAAA,CAEA,qDACE,YAAA,CACA,oBAmH6C,CA9G/C,wCACE,wBAAA,CACA,WAAA,CACA,aAAA,CAEA,gDACE,gBAAA,CAKN,gCACE,2BAAA,CAIA,mEACE,WAAA,CAEA,mGACE,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,qHACE,WAAA,CAEA,wIACE,YAAA,CACA,qBAAA,CACA,WAAA,CAEA,oJACE,WAAA,CACA,YAAA,CAIJ,kIACE,wBAAA,CAOV,yBACE,WAAA,CACA,wBAAA,CACA,iBAAA,CACA,UAuE0B,CA0E9B,gBA/4BE,iBAAA,CACA,uDAAA,CACA,YAPU,CASV,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,iEACE,sBAAA,CAGF,+BACE,iBAAA,CACA,UAg3BoB,CA/2BpB,cAAA,CACA,iBAAA,CAGF,iDACE,YAAA,CAEA,kEACE,mEAAA,CACA,UAy2ByB,CAx2BzB,yBAAA,CACA,iBAAA,CACA,gBAAA,CACA,mBAAA,CACA,eAAA,CACA,aAAA,CAEA,iFACE,kBAAA,CAEA,gGACE,cAAA,CAGF,uFACE,oBAAA,CACA,iBAAA,CACA,gBAAA,CAGF,sGACE,SAAA,CACA,cAAA,CACA,QAAA,CACA,OAAA,CACA,iBAAA,CAGF,gHACE,yCAAA,CAGF,gHACE,aAAA,CAGF,4FACE,iBAAA,CACA,OAAA,CACA,MAAA,CACA,UAAA,CACA,SAAA,CACA,qBAAA,CACA,gBAAA,CACA,iBAAA,CAGF,kGACE,UAAA,CACA,iBAAA,CACA,YAAA,CAEA,SAAA,CACA,UAAA,CACA,SAAA,CACA,UAAA,CACA,iBAAA,CACA,wBAAA,CACA,+BAAA,CACA,2BAAA,CACA,uBAAA,CAKN,iFACE,UAAA,CACA,gBAAA,CAIJ,4BACE,iBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,yCACE,oBAAA,CACA,kBA+wBsC,CA9wBtC,UAoxBwB,CAnxBxB,wBAAA,CACA,UAAA,CACA,gBAAA,CACA,kBAAA,CACA,cAAA,CACA,kBAAA,CACA,cAAA,CACA,gBAAA,CAGF,uDACE,oBAAA,CACA,wBAAA,CAEA,cAAA,CACA,eAAA,CACA,kBAAA,CAEA,kBAAA,CAEA,kFACE,eAAA,CAIA,4GACE,UAAA,CACA,eAAA,CACA,iBAAA,CACA,kBAAA,CAGF,gIACE,aAAA,CAIA,yHACE,YAyuBuC,CApuB7C,uFACE,oBAAA,CAEA,2FACE,mBAAA,CAIJ,wFACE,YAAA,CAGF,4EACE,UAAA,CACA,cAAA,CACA,oBAAA,CACA,kBAAA,CACA,cAAA,CAEA,iFACE,YA8sBkC,CA1sBlC,uFACE,YA2sBuC,CArsB/C,6CACE,6BAAA,CACA,WAAA,CACA,UAAA,CACA,oBAAA,CACA,cAAA,CACA,gBAAA,CAGA,8DACE,eAAA,CAGF,yEACE,uBAAA,CAKN,iCACE,UAupBmC,CAtpBnC,gBAAA,CAEA,iDACE,UAupBuC,CAppBzC,gDACE,gBAAA,CAEA,6DACE,oBAAA,CAGF,gEACE,iBAAA,CACA,oBAAA,CACA,6BAAA,CAEA,qFACE,iBAAA,CACA,UAqoBsC,CApoBtC,eAmoBwC,CAloBxC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,iBAAA,CACA,SAAA,CACA,qBAAA,CAEA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,QAAA,CAGF,2FACE,kBAAA,CAGF,4FACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,gBAAA,CACA,gBAAA,CACA,kBAAA,CACA,2DAAA,CAIJ,8DACE,oBAAA,CACA,cAAA,CACA,eAAA,CAIE,eAAA,CAGF,iBAAA,CACA,eAylBiC,CAxlBjC,wBA6lBkC,CA3lBlC,oFACE,UAulBsC,CAtlBtC,eAqlBwC,CAplBxC,qBAylByC,CAtlB3C,8LACE,kBAAA,CACA,UAilBmC,CAhlBnC,eAilBqC,CA9kBvC,8EACE,iBAAA,CACA,OAAA,CAGE,wGACE,SAAA,CAIJ,oGACE,SAAA,CAEA,wGACE,SAAA,CAIJ,iGACE,SAAA,CAEA,qGACE,SAAA,CAIJ,qFACE,WAAA,CACA,SAAA,CAGF,kFACE,WAAA,CACA,iBAAA,CACA,QAAA,CACA,SAAA,CAKN,kGACE,gBAAA,CACA,eAAA,CAIA,uEACE,oBAAA,CAGF,yEACE,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,UA8iB8B,CA7iB9B,eAAA,CACA,UAAA,CACA,cAAA,CACA,yBAAA,CAEA,+EACE,YAAA,CACA,oBAqiBuC,CAliBzC,wMAEE,uBAAA,CACA,QAAA,CAKF,6GACE,WAAA,CACA,OAAA,CACA,SAAA,CAKN,wEACE,gBAAA,CAKN,kCACE,YAAA,CAEA,qDACE,UAAA,CAIJ,uCACE,YAAA,CACA,eAAA,CAGF,4BACE,UAAA,CACA,YA+c0B,CA9c1B,iBAAA,CAEA,mCACE,UAAA,CACA,WAAA,CAGF,uJACE,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,UAAA,CAEA,mKACE,iBAAA,CACA,gBAAA,CACA,MAAA,CAIJ,oDACE,mBAAA,CACA,gBAAA,CAKE,gEACE,yBA4b2B,CAzb7B,gEACE,YAybqB,CAxbrB,yBAAA,CACA,iBAAA,CAIA,mFACE,SAAA,CAKN,mDACE,iBAAA,CACA,YAAA,CACA,0BAAA,CAGF,uEACE,iBAAA,CAIJ,kDACE,iBAAA,CACA,KAAA,CACA,MAAA,CAGE,wEACE,eAAA,CACA,iBAAA,CACA,KAAA,CACA,+BAuZ2B,CAtZ3B,+BAAA,CACA,aAsZqB,CArZrB,eAAA,CACA,qBAAA,CACA,WAAA,CAMJ,6DACE,cAAA,CAKF,yDACE,WAuYwB,CApY1B,4DACE,SAmYwB,CA/X5B,iDACE,iBAAA,CACA,KAAA,CACA,mBAAA,CACA,gBAAA,CACA,UAAA,CAEA,qEACE,iBAAA,CAEA,wFACE,oBAAA,CACA,yBAgZ8B,CA5Y9B,uHACE,oBAAA,CACA,qCAAA,CACA,mIAAA,CACA,yBAAA,CACA,2BAAA,CACA,0BAAA,CAIJ,sFACE,iBAAA,CACA,+BAiW2B,CAhW3B,+BAAA,CACA,aAgWqB,CA/VrB,eAAA,CACA,kBAAA,CACA,cAAA,CACA,UAAA,CAKN,8CACE,iBAAA,CACA,0BAuWwC,CAnW5C,sBACE,gBAAA,CACA,gBAAA,CAEA,6BACE,SAAA,CACA,WAlhBY,CAuhBZ,aAAA,CAHA,yCACE,WAphBe,CAyhBnB,6BACE,YAsTwB,CApTxB,6CACE,eAAA,CAGF,2CACE,kBAAA,CACA,SAgUoB,CA9TpB,4DACE,cAAA,CAIJ,+CACE,cAAA,CAIA,0DACE,iBAAA,CAKN,iCACE,WA0SsB,CAzStB,gBA0SsB,CAtStB,sCACE,cAsSoB,CArSpB,gBAAA,CAGF,sCACE,SAkSoB,CAjSpB,aAAA,CAIA,4DACE,gBAAA,CAKF,2DACE,cAAA,CAMR,uCACE,UAAA,CACA,qCAyR+C,CAxR/C,wBAAA,CAEA,6DACE,WAyP0B,CAvP1B,oEACE,WAAA,CAGF,iEACE,iBAAA,CACA,MAAA,CACA,UAAA,CACA,gBAAA,CAEA,mFACE,oBAyQoC,CAxQpC,gBAAA,CAIF,2FACE,WAoQsC,CAnQtC,gBAAA,CACA,kBAAA,CAGF,sFACE,SAgQwC,CA7P1C,gFACE,YA2PkC,CA1PlC,gBAAA,CAGF,uFACE,WAwPyC,CAvPzC,gBAAA,CACA,gBAAA,CAGF,2FACE,gBAAA,CAGF,uFACE,WAgP2B,CA/O3B,YAgPgC,CA/OhC,gBAAA,CACA,gBAAA,CACA,gDAAA,CAIA,yGACE,gBAAA,CAGF,0GACE,WAmOyB,CAlOzB,cAAA,CACA,iCAAA,CAGF,gHACE,cAAA,CAGF,oIACE,cAAA,CAGF,+GACE,gBAAA,CAGF,mIACE,gBAAA,CAKF,iFACE,SA6M4B,CA5M5B,iBAAA,CACA,aAAA,CACA,gBAAA,CACA,iCAAA,CAGF,iFACE,WAqM4B,CApM5B,gBAAA,CAIA,uGACE,WAgMiC,CA7LnC,uGACE,SA6LiC,CArL7C,+CACE,wBAAA,CACA,wBAAA,CACA,YAAA,CACA,UAwLoC,CAvLpC,eAAA,CACA,iBAAA,CAEA,2DACE,YAAA,CACA,oBAiL6C,CA5K/C,2CACE,wBAAA,CACA,WAAA,CACA,aAAA,CAEA,mDACE,gBAAA,CAKN,mCACE,2BAAA,CAIA,sEACE,WAAA,CAEA,sGACE,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,wHACE,WAAA,CAEA,2IACE,YAAA,CACA,qBAAA,CACA,WAAA,CAEA,uJACE,WAAA,CACA,YAAA,CAIJ,qIACE,wBAAA,CAOV,4BACE,WAAA,CACA,wBAAA,CACA,iBAAA,CACA,UAqI0B",sourcesContent:["@mixin grapher(\n $primary-graph-body-height: 400px,\n $secondary-graph-body-height: 50px,\n\n $background-color-1: #131313,\n $background-color-2: #1e1e1e,\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: rgb(192, 192, 192, 0.3),\n $axis-line-width: 1px,\n $axis-tick-color: rgb(192, 192, 192, 0.3),\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-background-color: rgba(0, 0, 0, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #AAA,\n $range-graph-handle-fill-color: #666,\n $range-graph-axis-text-color: #9f9f9f,\n $range-graph-tick-highlighted-color: #FFF,\n $range-graph-text-highlighted-color: #FFF,\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 $x-axis-dual-height: 30px;\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 margin-top: 10px;\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 z-index: 20;\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 z-index: 10;\n\n .grapher-annotation {\n position: absolute;\n\n .annotation-marker {\n display: inline-block;\n background: $annotation-background-color;\n }\n\n &.grapher-annotation-range {\n .annotation-range-marker {\n display: inline-block;\n background-color: rgba(128, 128, 128, 0.2);\n background-image: repeating-linear-gradient(53deg, #626266, #626266 1px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.1) 4px);\n background-size: 40px 40px;\n border-right: 1px solid white;\n border-left: 1px solid white;\n }\n }\n\n .annotation-text {\n position: absolute;\n background: $tooltip-background-color;\n border: 1px solid $annotation-background-color;\n color: $tooltip-text-color;\n padding: 2px 4px;\n white-space: nowrap;\n font-size: 10px;\n z-index: 10;\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 \n &.x-axis-dual {\n height: $x-axis-dual-height;\n }\n display: block;\n }\n\n &.y-axis {\n height: $primary-graph-body-height;\n\n .axis-item text {\n text-anchor: end;\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-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: 1px;\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 background-color: $range-graph-selection-background-color;\n height: calc(#{$secondary-graph-body-height} + #{$range-graph-selection-bar-height}); \n\n .graph-body-secondary {\n height: $secondary-graph-body-height;\n\n canvas {\n height: 100%;\n }\n\n svg {\n position: absolute;\n left: 0;\n width: 100%;\n overflow: visible;\n\n .target-selection {\n fill: $range-graph-selection-range-color;\n cursor: ew-resize;\n }\n\n\n .target-selection-outline {\n stroke: $range-graph-selection-outline-color;\n cursor: ew-resize;\n fill: transparent;\n }\n\n .selection-bar-track {\n fill: $range-graph-selection-bar-track-color;\n }\n\n .selection-bar {\n fill: $range-graph-selection-bar-color;\n cursor: ew-resize;\n }\n\n .selection-bar-rifles {\n stroke: $range-graph-selection-bar-rifles-color;\n stroke-width: 1px;\n cursor: ew-resize;\n }\n\n .selection-bar-handle-hit {\n cursor: ew-resize;\n }\n\n .selection-bar-handle {\n stroke: $range-graph-handle-color;\n fill: $range-graph-handle-fill-color;\n stroke-width: 1px;\n cursor: ew-resize;\n transition: stroke-width 0.15s ease, fill 0.15s ease;\n }\n\n .selection-handle {\n .selection-handle-hit {\n cursor: ew-resize;\n }\n\n .selection-handle-line {\n stroke: $range-graph-handle-color;\n stroke-width: 1;\n transition: stroke-width 0.15s ease;\n }\n\n &:hover .selection-handle-line {\n stroke-width: 3;\n }\n\n &.selection-handle-dragging .selection-handle-line {\n stroke-width: 3;\n }\n\n &:hover .selection-bar-handle {\n stroke-width: 2px;\n }\n\n &.selection-handle-dragging .selection-bar-handle {\n stroke-width: 2px;\n }\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: $range-graph-axis-text-color;\n stroke-width: 1px;\n }\n \n &.axis-item-highlighted {\n path {\n stroke: $range-graph-tick-highlighted-color;\n }\n \n text {\n fill: $range-graph-text-highlighted-color;\n }\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-background-color: rgba(255, 255, 255, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n $range-graph-axis-text-color: #555,\n $range-graph-tick-highlighted-color: #000,\n $range-graph-text-highlighted-color: #000,\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-background-color: rgba(255, 255, 255, 0.3),\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-selection-bar-height: 14px,\n $range-graph-handle-color: #333,\n $range-graph-handle-fill-color: #B0B0B7,\n $range-graph-axis-text-color: #333,\n $range-graph-tick-highlighted-color: #000,\n $range-graph-text-highlighted-color: #000,\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="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var h=0;h<e.length;h++){var c=[].concat(e[h]);i&&a[c[0]]||(void 0!==o&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=o),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},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 i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),o="/*# ".concat(r," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},694:(e,t,n)=>{"use strict";var i=n(925);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,a){if(a!==i){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:r};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,i=0;i<t.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var o={},a=[],s=0;s<e.length;s++){var l=e[s],h=i.base?l[0]+i.base:l[0],c=o[h]||0,g="".concat(h," ").concat(c);o[h]=c+1;var A=n(g),d={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==A)t[A].references++,t[A].updater(d);else{var p=r(d,i);i.byIndex=s,t.splice(s,0,{identifier:g,updater:p,references:1})}a.push(g)}return a}function r(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,r){var o=i(e=e||[],r=r||{});return function(e){e=e||[];for(var a=0;a<o.length;a++){var s=n(o[a]);t[s].references--}for(var l=i(e,r),h=0;h<o.length;h++){var c=n(o[h]);0===t[c].references&&(t[c].updater(),t.splice(c,1))}o=l}}},659:e=>{"use strict";var t={};e.exports=function(e,n){var i=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(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.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 i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(i,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;\nuniform float width; // Canvas width for normalization\nuniform float cutoffX; // Cutoff X position as ratio (0.0-1.0)\nuniform float cutoffOpacity; // Opacity for pre-cutoff area\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 // Apply cutoff opacity if active\n vec4 finalColor = vec4(color);\n if (cutoffX >= 0.0) {\n // Convert pixel position to normalized coordinate (0.0 to 1.0)\n float normalizedX = gl_FragCoord.x / width;\n \n // Apply reduced opacity to pixels left of cutoff\n if (normalizedX < cutoffX) {\n finalColor.a *= cutoffOpacity;\n }\n }\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 = finalColor;\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"},744:e=>{e.exports="precision highp float;\n\nvarying vec4 trapBounds; // [x1, lineY1, x2, lineY2]\nvarying vec4 trapBottom; // [x1, bottomY1, x2, bottomY2] \nvarying vec2 worldPos; // World position\n\nuniform int gradientCount;\nuniform sampler2D gradientTexture; // Texture containing gradient data\nuniform vec4 fallbackColor;\n\nvec4 interpolateGradient(float position) {\n if (gradientCount <= 0) {\n return fallbackColor;\n }\n if (gradientCount == 1) {\n return texture2D(gradientTexture, vec2(0.5 / float(gradientCount * 2), 0.5));\n }\n\n float textureWidth = float(gradientCount * 2);\n float firstStop = texture2D(gradientTexture, vec2(0.5 / textureWidth, 0.5)).r;\n float lastStop = texture2D(gradientTexture, vec2((float((gradientCount - 1) * 2) + 0.5) / textureWidth, 0.5)).r;\n \n // Scale position to fit the gradient range\n if (lastStop > firstStop) {\n position = firstStop + position * (lastStop - firstStop);\n }\n \n position = clamp(position, 0.0, 1.0);\n\n // Handle boundary cases first\n vec4 firstColor = texture2D(gradientTexture, vec2(1.5 / textureWidth, 0.5));\n vec4 lastColor = texture2D(gradientTexture, vec2((float((gradientCount - 1) * 2 + 1) + 0.5) / textureWidth, 0.5));\n \n if (position <= firstStop) return firstColor;\n if (position >= lastStop) return lastColor;\n \n // Calculate normalized position within the gradient range\n float normalizedPos = (position - firstStop) / max(lastStop - firstStop, 0.001);\n normalizedPos = clamp(normalizedPos, 0.0, 1.0);\n \n // Map to segment index using only float operations\n float segmentFloat = normalizedPos * float(gradientCount - 1);\n float segmentIndex = floor(segmentFloat);\n \n // Ensure segment index is within valid bounds using float operations\n segmentIndex = min(segmentIndex, float(gradientCount - 2));\n segmentIndex = max(segmentIndex, 0.0);\n \n // Calculate texture coordinates for the two colors to interpolate\n float texCoordA = (segmentIndex * 2.0 + 1.0 + 0.5) / textureWidth;\n float texCoordB = ((segmentIndex + 1.0) * 2.0 + 1.0 + 0.5) / textureWidth;\n \n // Sample the two colors\n vec4 colorA = texture2D(gradientTexture, vec2(texCoordA, 0.5));\n vec4 colorB = texture2D(gradientTexture, vec2(texCoordB, 0.5));\n \n // Get the actual gradient stops for proper interpolation\n float stopA = texture2D(gradientTexture, vec2((segmentIndex * 2.0 + 0.5) / textureWidth, 0.5)).r;\n float stopB = texture2D(gradientTexture, vec2(((segmentIndex + 1.0) * 2.0 + 0.5) / textureWidth, 0.5)).r;\n \n // Calculate interpolation factor based on actual stop positions\n float stopRange = stopB - stopA;\n float t = stopRange > 0.001 ? (position - stopA) / stopRange : 0.0;\n t = clamp(t, 0.0, 1.0);\n \n return mix(colorA, colorB, t);\n}\n\nvoid main() {\n float pixelX = worldPos.x;\n float pixelY = worldPos.y;\n \n // Extract trapezoid corners\n float x1 = trapBounds.x;\n float lineY1 = trapBounds.y;\n float x2 = trapBounds.z;\n float lineY2 = trapBounds.w;\n \n float bottomX1 = trapBottom.x;\n float bottomY1 = trapBottom.y;\n float bottomX2 = trapBottom.z;\n float bottomY2 = trapBottom.w;\n \n // Interpolate line Y at current pixel X\n float t = (pixelX - x1) / (x2 - x1 + 0.001); // Avoid division by zero\n t = clamp(t, 0.0, 1.0);\n \n float lineYAtPixel = mix(lineY1, lineY2, t);\n float bottomYAtPixel = mix(bottomY1, bottomY2, t);\n \n // Calculate gradient position: 0.0 at line, 1.0 at bottom\n float totalDistance = abs(bottomYAtPixel - lineYAtPixel);\n float gradientPos = totalDistance > 0.001 ? \n abs(pixelY - lineYAtPixel) / totalDistance : 0.0;\n \n vec4 color = interpolateGradient(gradientPos);\n gl_FragColor = color;\n}\n"},885:e=>{e.exports="precision highp float;\n\nattribute vec2 position;\nattribute vec4 trapezoidBounds; // [x1, y1_line, x2, y2_line] - the line segment \nattribute vec4 trapezoidBottom; // [x1, y1_bottom, x2, y2_bottom] - the bottom segment\n\nuniform float width;\nuniform float height;\n\nvarying vec4 trapBounds; // Pass trapezoid line bounds to fragment\nvarying vec4 trapBottom; // Pass trapezoid bottom bounds to fragment \nvarying vec2 worldPos; // Pass world position\n\nvoid main() {\n trapBounds = trapezoidBounds;\n trapBottom = trapezoidBottom;\n worldPos = position;\n \n gl_Position = vec4(2.0*position.x/width - 1.0, 1.0 - 2.0*position.y/height, 0.0, 1.0);\n}\n"}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var o=i[e]={id:e,exports:{}};return n[e](o,o.exports,r),o.exports}r.m=n,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,n)=>(r.f[n](e,t),t)),[])),r.u=e=>e+".bundle.cjs",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="Grapher:",r.l=(n,i,o,a)=>{if(e[n])e[n].push(i);else{var s,l;if(void 0!==o)for(var h=document.getElementsByTagName("script"),c=0;c<h.length;c++){var g=h[c];if(g.getAttribute("src")==n||g.getAttribute("data-webpack")==t+o){s=g;break}}s||(l=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",t+o),s.src=n),e[n]=[i];var A=(t,i)=>{s.onerror=s.onload=null,clearTimeout(d);var r=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach((e=>e(i))),t)return t(i)},d=setTimeout(A.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=A.bind(null,s.onerror),s.onload=A.bind(null,s.onload),l&&document.head.appendChild(s)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/assets/",(()=>{r.b=document.baseURI||self.location.href;var e={792:0};r.f.j=(t,n)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{var o=new Promise(((n,r)=>i=e[t]=[n,r]));n.push(i[2]=o);var a=r.p+r.u(t),s=new Error;r.l(a,(n=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,i[1](s)}}),"chunk-"+t,t)}};var t=(t,n)=>{var i,o,[a,s,l]=n,h=0;if(a.some((t=>0!==e[t]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);l&&l(r)}for(t&&t(n);h<a.length;h++)o=a[h],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0},n=globalThis.webpackChunkGrapher=globalThis.webpackChunkGrapher||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{AVAILABLE_COLORS:()=>dn,BUILT_IN_BOUND_CALCULATORS:()=>pn,Grapher:()=>cn,MultiGrapher:()=>fn,RangeSelection:()=>Vt,SyncPool:()=>ln,default:()=>cn});const e=require("react");var t=r.n(e),n=r(556),i=r.n(n);const a=["values","tuples","objects"],s=[...a,"tuple_observable","object_observable","generator"],l=i().any,h=i().shape({data:l.isRequired,type:i().oneOf([...s,"infer"]),xKey:i().string,yKey:i().string,xUnixDates:i().bool,color:i().oneOfType([i().string,i().number]),name:i().string,xLabel:i().string,yLabel:i().string,ignoreDiscontinuities:i().bool,dashed:i().bool,dashPattern:i().arrayOf(i().number),width:i().number,rangeSelectorWidth:i().number,axis:i().oneOfType([i().string,i().object]),expandYWith:i().arrayOf(i().number),defaultAlwaysTooltipped:i().bool,square:i().bool,shiftXBy:i().number,graph:i().number,background:i().object,hideFromKey:i().bool,showIndividualPoints:i().bool,minPointSpacing:i().number,rendering:i().oneOf(["line","bar","area","shadow"]),negativeColor:i().string,gradient:i().array,negativeGradient:i().array,zeroLineWidth:i().number,zeroLineColor:i().string,zeroLineY:i().oneOfType([i().number,i().string]),pointRadius:i().number,tooltipWidth:i().number,hasAreaBottom:i().bool,shadowColor:i().string,gradient:i().arrayOf(i().oneOfType([i().string,i().array])),rangeKey:i().string}),c=i().arrayOf(h),g=i().shape({axisIndex:i().number.isRequired,series:i().array.isRequired,side:i().oneOf(["left","right"]).isRequired,scale:i().oneOf(["linear","log"]).isRequired,label:i().string}),A=i().arrayOf(g),d=i().shape({label:i().string.isRequired,calculator:i().func.isRequired,datesOnly:i().bool}),p=i().arrayOf(d),u={includeSeriesLabel:i().bool,includeXLabel:i().bool,includeYLabel:i().bool,includeXValue:i().bool,includeYValue:i().bool,floating:i().bool,alwaysFixedPosition:i().bool,floatPosition:i().oneOf(["top","bottom"]),floatDelta:i().number,savingDisabled:i().bool,customTooltip:i().func,combineTooltips:i().oneOfType([i().bool,i().number])},m=i().shape(u),f=i().shape({x:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),startX:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),endX:i().oneOfType([i().string,i().number,i().instanceOf(Date)]),series:i().arrayOf(i().string),content:i().string,lineOnly:i().bool}),C=i().arrayOf(f),x=i().shape({x:i().number.isRequired,y:i().number.isRequired,radius:i().number,fillColor:i().string,strokeColor:i().string,strokeWidth:i().number,onClick:i().func,onDoubleClick:i().func}),b=i().arrayOf(x),y=i().shape({x:i().oneOfType([i().number,i().instanceOf(Date)]).isRequired,color:i().string,lineTop:i().number,width:i().number,markTop:i().bool,style:i().object,markerStyle:i().object,text:i().string,textTop:i().number,textStyle:i().object,minPixelX:i().number,maxPixelX:i().number,onRangeGraph:i().oneOfType([i().bool,i().object]),onRangeGraphOnly:i().bool}),_={Data:l,SingleSeries:h,Series:c,Axis:g,Axes:A,CustomBoundsSelector:d,CustomBoundsSelectors:p,TooltipOptions:m,TooltipOptionsRaw:u,Annotations:C,DraggablePoint:x,DraggablePoints:b,VerticalLine:y,VerticalLines:i().arrayOf(y)};class B{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 v=r(365);function w(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")}var E=r(400),k=r.n(E),S=r(765),D=r.n(S);function T(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]{3}$|^#[\dA-F]{6}$/i.test(e))throw new Error(`Color must be a hex string: ${e}`);return 4===e.length&&(e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),[parseInt(e.substr(1,2),16)/255,parseInt(e.substr(3,2),16)/255,parseInt(e.substr(5,2),16)/255,1]}function z(e,t,n){const i=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(i,t),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(i)),null;const r=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(r)),null;const o=e.createProgram();return e.attachShader(o,i),e.attachShader(o,r),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.validateProgram(o),e.getProgramParameter(o,e.VALIDATE_STATUS)?o:(console.error("Shader program validation failed:",e.getProgramInfoLog(o)),null)):(console.error("Shader program linking failed:",e.getProgramInfoLog(o)),null)}class R{constructor(e){this._gl=e,this._program=z(e,D(),k()),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:i,color:r}of e){t.uniform4f(t.getUniformLocation(this._program,"color"),...T(r));const e=new Float32Array([n,1,i,1,i,-1,n,1,i,-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)}}}const X=2;async function Y(e,t,{reset:n=!0}={}){n&&(e.width="",e.height="",e.style.width="0",e.style.height="",await new Promise((e=>requestAnimationFrame(e))));let i=e.parentNode.getBoundingClientRect();for(;0===i.width;)await new Promise((e=>requestAnimationFrame(e))),i=e.getBoundingClientRect();const r=window.devicePixelRatio||1,o=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1,a=X*r/o,s=i.width,l=i.height,h=s*a,c=l*a;return e.width=h,e.height=c,e.style.width=`${s}px`,e.style.height=`${l}px`,{pixelRatio:a,elementWidth:s,elementHeight:l,renderWidth:h,renderHeight:c,boundingRect:i}}function P(e,{splitAtY:t}={}){const n=[];let i=[],r=!0;const{nullMask:o,maxYValues:a,minYValues:s,yValues:l}=e;for(let e=0;e<l.length;e++){const h=e*X,c=l[e];if(1&o[e]){r||(n.push(i),i=[]),r=!0;continue}i.push([h,c]);const g=s[e],A=a[e];if(g!==A&&(2&o[e]||i.push([h,g]),4&o[e]||i.push([h,A]),i.push([h,c])),r=!1,"number"==typeof t&&e>0){const a=l[e-1];(!(1&o[e-1])&&a<t&&c>=t||a>t&&c<=t||a===t&&c!==t)&&(r||(n.push(i),i=[[h,c]]),r=!0)}}return r||n.push(i),n}function M(e,{context:t,sizing:n,color:i,zeroColor:r,zeroWidth:o}){o&&(t?(t.strokeStyle=r||i,t.lineWidth=o,t.beginPath(),t.moveTo(0,e),t.lineTo(n.renderWidth,e),t.stroke()):console.error("Canvas context is null in drawZeroLine"))}function F(e,t,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s}){if(i.fillStyle=n,s&&s.length>=2){const e=i.createLinearGradient(0,0,0,r.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)}i.fillStyle=e}const l=a?o:r.renderHeight;i.beginPath();const[h,c]=e[0],[g,A]=e[e.length-1];t||i.moveTo(h,l);for(let t=0;t<e.length;t++){const[n,r]=e[t];i.lineTo(n,r)}if(t&&t.length){for(let e=t.length-1;e>=0;e--){const[n,r]=t[e];i.lineTo(n,r)}i.lineTo(...e[0])}else i.lineTo(g,l);i.fill()}function L(e,t,n,i,r,{color:o,context:a,sizing:s,zero:l,hasNegatives:h,gradient:c,areaBottomPaths:g}){if(a.fillStyle=o,c&&c.length>=2){const e=a.createLinearGradient(0,0,0,s.renderHeight);for(let t=0;t<c.length;t++){const n=c[t];if(Array.isArray(n)){const t=r?(0,v.applyReducedOpacity)(n[1],.35):n[1];e.addColorStop(n[0],t)}else{const i=r?(0,v.applyReducedOpacity)(n,.35):n;e.addColorStop(t/(c.length-1),i)}}a.fillStyle=e}const A=h?l:s.renderHeight;if(a.beginPath(),r){const r=i?n+1:n,[o]=e[0];g||a.moveTo(o,A);for(let t=0;t<=r&&t<e.length;t++){const[n,o]=t===r&&i?i:e[t];a.lineTo(n,o)}if(t&&t.length){for(let e=Math.min(r,t.length-1);e>=0;e--){const[n,i]=t[e];a.lineTo(n,i)}a.lineTo(...e[0])}else{const t=i||e[r]||e[e.length-1];a.lineTo(t[0],A)}}else{const r=i?n:n+1,o=i||e[r];if(o){a.moveTo(o[0],A),i&&a.lineTo(...i);for(let t=r;t<e.length;t++)a.lineTo(...e[t]);if(t&&t.length){for(let e=t.length-1;e>=Math.max(r,0);e--){const[n,i]=t[e];a.lineTo(n,i)}i&&a.lineTo(i[0],A)}else{const[t]=e[e.length-1];a.lineTo(t,A)}}}a.fill()}function O(e,{color:t,context:n,negativeColor:i,hasNegatives:r,zero:o,zeroColor:a,pointRadius:s}){if(e&&Array.isArray(e))for(let l=0;l<e.length;l++){const[h,c]=e[l];let g=t;i&&r&&(g=c===o&&a?a:c<o?t:i),n.fillStyle=g,n.beginPath(),n.arc(h,c,s||8,0,2*Math.PI,!1),n.fill()}}function I(e,{color:t,context:n,hasNegatives:i,negativeColor:r,width:o,highlighted:a}){if(e&&Array.isArray(e)){a&&(o+=2),o*=X;for(let a of e)if(a.length){n.strokeStyle=i&&r?r:t,n.lineWidth=o,n.beginPath();for(let e=0;e<a.length;e++){const[t,i]=a[e];0===e?n.moveTo(t,i):n.lineTo(t,i)}n.stroke()}}}function G(e,t,{color:n,context:i,hasNegatives:r,negativeColor:o,zero:a,width:s,highlighted:l,cutoffOpacity:h}){if(!e||!Array.isArray(e))return;l&&(s+=2),s*=X;const c=t*i.canvas.width,g=[],A=[];for(let t of e){if(!t.length)continue;const e=[],n=[];let i=null,r=-1;for(let i=0;i<t.length;i++){const[o,a]=t[i];o<c?(e.push([o,a]),r=i):n.push([o,a])}if(e.length>0&&n.length>0){const t=e[e.length-1],r=n[0],[o,a]=t,[s,l]=r;s!==o&&(i=[c,a+(c-o)/(s-o)*(l-a)],e.push(i),n.unshift(i))}e.length>0&&g.push(e),n.length>0&&A.push(n)}if(g.length>0){const e=(0,v.applyReducedOpacity)(n,h);i.strokeStyle=e,i.lineWidth=s;for(let e of g)if(e.length>1){i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}}if(A.length>0){i.strokeStyle=r&&o?o:n,i.lineWidth=s;for(let e of A)if(e.length>1){i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}}}function $(e,t,{color:n,context:i,negativeColor:r,hasNegatives:o,zero:a,zeroColor:s,pointRadius:l,cutoffOpacity:h}){if(!e||!Array.isArray(e))return;const c=t*i.canvas.width;for(let t=0;t<e.length;t++){const[g,A]=e[t],d=g<c;let p=n;d&&(p=(0,v.applyReducedOpacity)(n,h)),r&&o&&(p=A===a&&s?s:A<a?d?(0,v.applyReducedOpacity)(n,h):n:d?(0,v.applyReducedOpacity)(r,h):r),i.fillStyle=p,i.beginPath(),i.arc(g,A,l||8,0,2*Math.PI,!1),i.fill()}}function N({closestSpacing:e,bounds:t,sizing:n,axisSeriesCount:i}){const r=e/(t.maxX-t.minX)*n.renderWidth,o=.8*r;return{barWidth:o/i,totalBarWidth:o,barSpacing:.2*r}}function W(e,t){if(!t||e.length<=1)return e;const n=[];let i=-1/0;for(const r of e){const[e]=r;e-i>=t&&(n.push(r),i=e)}return n}var U=r(390),H=r.n(U),q=r(39),j=r.n(q),V=r(120),K=r.n(V),J=r(789),Z=r.n(J);let Q;const ee=r.e(744).then(r.bind(r,363)).then((e=>e.default().then((()=>{Q=e}))));function te(){return Q}function ne(e,{dashed:t,dashPattern:n}){let i=0;for(let r of e)if(t)for(let e=0;e<r.length;e++)t&&e%(n[0]+n[1])>=n[0]||i++;else i+=r.length;const r=new Float32Array(8*i),o=new Float32Array(8*i),a=new Float32Array(4*i),s=new Uint32Array(6*i);if(i>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 i of e)for(let e=0;e<i.length;e++){if(t&&e%(n[0]+n[1])>=n[0])continue;const[a,h]=i[e];let c,g;0===e?(c=a-1,g=h):[c,g]=i[e-1];for(let e=0;e<4;e++)r[8*l+2*e]=a,r[8*l+2*e+1]=h,o[8*l+2*e]=c,o[8*l+2*e+1]=g;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:r,prevPositions:o,vertices:a,indices:s}}class ie{constructor(e){this._gl=e,this._program=z(e,j(),H()),this._circleProgram=z(e,Z(),K()),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.viewport(0,0,t,n)}draw(e,t){const n=this._gl,i=n.drawingBufferWidth,r=n.drawingBufferHeight;n.useProgram(this._program);const o=X*((t.width||1)+(t.highlighted?2:0)),a=void 0===t.shadowBlur?2:t.shadowBlur,s=t.shadowColor||"black",l=t.dashed||!1,h=t.dashPattern||[5,5];if(t.renderCutoffGradient&&void 0!==t.cutoffIndex&&t.originalData)return void this.drawLineWithCutoff(e,t);const{positions:c,prevPositions:g,vertices:A,indices:d}=function(e,{dashed:t,dashPattern:n}){if(e&&e.paths)return ne(e.paths,{dashed:t,dashPattern:n});if(!te())return ne(P(e),{dashed:t,dashPattern:n});const i=te().get_point_number(e.nullMask,e.yValues,e.minYValues,e.maxYValues,t,n[0],n[1]);let r=new Float32Array(8*i),o=new Float32Array(8*i),a=new Float32Array(4*i),s=new Uint32Array(6*i);return te().extract_vertices(X,e.nullMask,e.yValues,e.minYValues,e.maxYValues,r,o,a,s,t,n[0],n[1]),{positions:r,prevPositions:o,vertices:a,indices:s}}(e,{dashed:l,dashPattern:h});if(!this._program)return void console.error("WebGL line program is null - shader compilation failed!");const p=n.getAttribLocation(this._program,"position"),u=n.getAttribLocation(this._program,"prevPosition"),m=n.getAttribLocation(this._program,"vertex");n.enableVertexAttribArray(p),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,c,n.STATIC_DRAW),n.vertexAttribPointer(p,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(u),n.bindBuffer(n.ARRAY_BUFFER,this._prevPositionBuffer),n.bufferData(n.ARRAY_BUFFER,g,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,A,n.STATIC_DRAW),n.vertexAttribPointer(m,1,n.FLOAT,!1,0,0),n.uniform1f(n.getUniformLocation(this._program,"width"),i),n.uniform1f(n.getUniformLocation(this._program,"height"),r),n.uniform1f(n.getUniformLocation(this._program,"thickness"),Math.max(o,1)+a),n.uniform1f(n.getUniformLocation(this._program,"shadowBlur"),a);const f=T(t.color);n.uniform4f(n.getUniformLocation(this._program,"color"),...f),n.uniform4f(n.getUniformLocation(this._program,"shadowColor"),...T(s));const C=void 0!==t.cutoffX?t.cutoffX:-1,x=void 0!==t.cutoffOpacity?t.cutoffOpacity:.35;if(n.uniform1f(n.getUniformLocation(this._program,"cutoffX"),C),n.uniform1f(n.getUniformLocation(this._program,"cutoffOpacity"),x),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,d,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,d.length,n.UNSIGNED_INT,0),t.showIndividualPoints){n.useProgram(this._circleProgram),n.uniform1f(n.getUniformLocation(this._circleProgram,"width"),i),n.uniform1f(n.getUniformLocation(this._circleProgram,"height"),r);const e=t.pointRadius?2*t.pointRadius*X:2*(o+6);n.uniform1f(n.getUniformLocation(this._circleProgram,"pointSize"),e);let a=t.getIndividualPoints();if(t.minPointSpacing&&a.length>1){const e=[];let n=-1/0;for(const i of a){const[r]=i;r-n>=t.minPointSpacing&&(e.push(i),n=r)}a=e}if(void 0!==t.cutoffIndex&&t.cutoffIndex>0&&t.originalData){const{originalData:e}=t;let r;if("object"==typeof e[0]&&2===e[0].length){const n=Math.floor(t.cutoffIndex),i=t.cutoffIndex-n;if(0===i||n>=e.length-1){const t=e[Math.min(n,e.length-1)][0];r=t instanceof Date?t.getTime():t}else{const t=e[n][0],o=e[n+1][0],a=t instanceof Date?t.getTime():t;r=a+i*((o instanceof Date?o.getTime():o)-a)}}const o=[],s=[];if(t.isPreview){const e=t.selectionBounds.minX instanceof Date?t.selectionBounds.minX.getTime():t.selectionBounds.minX,n=(r-e)/((t.selectionBounds.maxX instanceof Date?t.selectionBounds.maxX.getTime():t.selectionBounds.maxX)-e)*i;for(let e=0;e<a.length;e++){const[t,i]=a[e];t<n?o.push(a[e]):s.push(a[e])}}else if(t.selectionBounds){const e=t.selectionBounds.minX instanceof Date?t.selectionBounds.minX.getTime():t.selectionBounds.minX,n=t.selectionBounds.maxX instanceof Date?t.selectionBounds.maxX.getTime():t.selectionBounds.maxX;if(r<e)s.push(...a);else if(r>n)"shadow"===t.rendering?s.push(...a):o.push(...a);else{const t=(r-e)/(n-e)*this._gl.canvas.width;a.forEach(((e,n)=>{const[i,r]=e;i<t?o.push(e):s.push(e)}))}}else s.push(...a);if(o.length>0){const e=(0,v.applyReducedOpacity)(t.color,t.cutoffOpacity||.35);n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(e)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(o.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,o.length)}s.length>0&&(n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(t.color)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(s.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,s.length))}else n.uniform4f(n.getUniformLocation(this._circleProgram,"color"),...T(t.color)),n.enableVertexAttribArray(0),n.bindBuffer(n.ARRAY_BUFFER,this._individualPointBuffer),n.bufferData(n.ARRAY_BUFFER,new Float32Array(a.flat()),n.STATIC_DRAW),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,0),n.drawArrays(n.POINTS,0,a.length)}}drawLineWithCutoff(e,t){const{cutoffIndex:n,cutoffTimeValue:i,cutoffOpacity:r,originalData:o,selectionBounds:a}=t;let s;if(null!=i)s=i;else if("object"==typeof o[0]&&2===o[0].length){const e=Math.floor(n),t=n-e;if(0===t||e>=o.length-1){const t=o[Math.min(e,o.length-1)][0];s=t instanceof Date?t.getTime():t}else{const n=o[e][0],i=o[e+1][0],r=n instanceof Date?n.getTime():n;s=r+t*((i instanceof Date?i.getTime():i)-r)}}else s=n;if(t.isPreview){const n=this._gl,i=a.minX instanceof Date?a.minX.getTime():a.minX,o=(s-i)/((a.maxX instanceof Date?a.maxX.getTime():a.maxX)-i);if(o<0)this.draw(e,{...t,renderCutoffGradient:!1});else if(o>1){const n=(0,v.applyReducedOpacity)(t.color,r);this.draw(e,{...t,color:n,renderCutoffGradient:!1})}else n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA),this.draw(e,{...t,renderCutoffGradient:!1,cutoffX:o,cutoffOpacity:r||.35})}else{if(!a)return void this.draw(e,{...t,renderCutoffGradient:!1});const n=a.minX instanceof Date?a.minX.getTime():a.minX,i=a.maxX instanceof Date?a.maxX.getTime():a.maxX;if(s<n)this.draw(e,{...t,renderCutoffGradient:!1});else if(s>i){const n=(0,v.applyReducedOpacity)(t.color,r);this.draw(e,{...t,color:n,renderCutoffGradient:!1})}else{const o=(s-n)/(i-n),a=this._gl;a.enable(a.BLEND),a.blendFunc(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA),this.draw(e,{...t,renderCutoffGradient:!1,cutoffX:o,cutoffOpacity:r||.35})}}}}var re=r(744),oe=r.n(re),ae=r(885),se=r.n(ae);class le{constructor(e){if(this._gl=e,this._program=z(e,se(),oe()),!this._program)return console.error("Failed to create shadow shader program"),void(this._program=null);e.validateProgram(this._program),e.getProgramParameter(this._program,e.VALIDATE_STATUS)||console.error("Shadow program validation failed:",e.getProgramInfoLog(this._program));const t=e.getAttribLocation(this._program,"position"),n=e.getAttribLocation(this._program,"trapezoidBounds"),i=e.getAttribLocation(this._program,"trapezoidBottom");-1!==t&&-1!==n&&-1!==i||console.error("Missing required shader attributes"),this._positionBuffer=e.createBuffer(),this._trapezoidBoundsBuffer=e.createBuffer(),this._trapezoidBottomBuffer=e.createBuffer(),this._indexBuffer=e.createBuffer(),this._gradientTexture=e.createTexture(),e.getExtension("OES_element_index_uint")||console.error("Your browser does not support OES_element_index_uint")}dispose(){const e=this._gl;this._gradientTexture&&(e.deleteTexture(this._gradientTexture),this._gradientTexture=null)}generateTrapezoidGeometry(e){const t=[],n=[],i=[],r=[];let o=0;for(const a of e){const{x1:e,y1:s,x2:l,y2:h,bottomY1:c,bottomY2:g}=a,A=[[e,s],[l,h],[l,g],[e,c]],d=[e,s,l,h],p=[e,c,l,g];for(let e=0;e<4;e++){const[r,o]=A[e];t.push(r,o),n.push(...d),i.push(...p)}r.push(o,o+1,o+2,o,o+2,o+3),o+=4}return{positions:new Float32Array(t),trapezoidBounds:new Float32Array(n),trapezoidBottom:new Float32Array(i),indices:new Uint32Array(r)}}parseGradient(e,t){if(!e||!Array.isArray(e)||e.length<2){const e=T(t);return{textureData:new Uint8Array([0,0,0,255,Math.floor(255*e[0]),Math.floor(255*e[1]),Math.floor(255*e[2]),Math.floor(255*e[3])]),textureWidth:2,gradientCount:1,fallbackColor:e}}const n=[],i=[];for(let t=0;t<e.length;t++){const r=e[t];Array.isArray(r)?(i.push(r[0]),n.push(T(r[1]))):(i.push(t/(e.length-1)),n.push(T(r)))}const r=2*n.length,o=new Uint8Array(4*r);for(let e=0;e<n.length;e++){const t=8*e,r=t+4;o[t]=Math.floor(255*i[e]),o[t+1]=0,o[t+2]=0,o[t+3]=255,o[r]=Math.floor(255*n[e][0]),o[r+1]=Math.floor(255*n[e][1]),o[r+2]=Math.floor(255*n[e][2]),o[r+3]=Math.floor(255*n[e][3])}return{textureData:o,textureWidth:r,gradientCount:n.length,fallbackColor:T(t)}}draw(e,t){if(!e||e.length<2)return;const n=this._gl,i=n.drawingBufferWidth,r=n.drawingBufferHeight;if(n.useProgram(this._program),t.renderCutoffGradient&&void 0!==t.cutoffIndex&&t.originalData)return void this.drawShadowWithCutoff(e,t);const o=[],a=[],s=[],{zero:l,inRenderSpaceAreaBottom:h,negativeGradient:c,hasNegatives:g}=t;for(let t=0;t<e.length-1;t++){const[n,r]=e[t],[h,A]=e[t+1];let d=l,p=l;const u=r-l,m=A-l;if(u*m<0){const e=n+(h-n)*(Math.abs(u)/(Math.abs(u)+Math.abs(m))),t=l;if(Math.abs(r-t)>.1){const i={x1:n,y1:r,x2:e,y2:t,bottomY1:d,bottomY2:l};o.push(i),g&&c&&(r<=l?a.push(i):s.push(i))}if(Math.abs(A-t)>.1){const n={x1:e,y1:t,x2:h,y2:A,bottomY1:l,bottomY2:p};o.push(n),g&&c&&(A<=l?a.push(n):s.push(n))}}else{if(n>i||h<0)continue;let e=h,t=A,u=p;if(h>i){const o=(i-n)/(h-n);e=i,t=r+(A-r)*o,u=d+(p-d)*o}const m={x1:n,y1:r,x2:e,y2:t,bottomY1:d,bottomY2:u};o.push(m),g&&c&&((r+t)/2<=l?a.push(m):s.push(m))}}if(0===o.length)return;const A=n.getAttribLocation(this._program,"position"),d=n.getAttribLocation(this._program,"trapezoidBounds"),p=n.getAttribLocation(this._program,"trapezoidBottom");n.uniform1f(n.getUniformLocation(this._program,"width"),i),n.uniform1f(n.getUniformLocation(this._program,"height"),r),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA);const u=(e,t,i)=>{if(0===e.length)return;const r=this.generateTrapezoidGeometry(e);n.enableVertexAttribArray(A),n.bindBuffer(n.ARRAY_BUFFER,this._positionBuffer),n.bufferData(n.ARRAY_BUFFER,r.positions,n.STATIC_DRAW),n.vertexAttribPointer(A,2,n.FLOAT,!1,0,0),n.enableVertexAttribArray(d),n.bindBuffer(n.ARRAY_BUFFER,this._trapezoidBoundsBuffer),n.bufferData(n.ARRAY_BUFFER,r.trapezoidBounds,n.STATIC_DRAW),n.vertexAttribPointer(d,4,n.FLOAT,!1,0,0),n.enableVertexAttribArray(p),n.bindBuffer(n.ARRAY_BUFFER,this._trapezoidBottomBuffer),n.bufferData(n.ARRAY_BUFFER,r.trapezoidBottom,n.STATIC_DRAW),n.vertexAttribPointer(p,4,n.FLOAT,!1,0,0);const o=this.parseGradient(t,i);n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this._gradientTexture),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,o.textureWidth,1,0,n.RGBA,n.UNSIGNED_BYTE,o.textureData),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.uniform1i(n.getUniformLocation(this._program,"gradientTexture"),0),n.uniform1i(n.getUniformLocation(this._program,"gradientCount"),o.gradientCount),n.uniform4fv(n.getUniformLocation(this._program,"fallbackColor"),o.fallbackColor),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this._indexBuffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,r.indices,n.STATIC_DRAW),n.drawElements(n.TRIANGLES,r.indices.length,n.UNSIGNED_INT,0)};g&&c&&(a.length>0||s.length>0)?(u(a,t.gradient,t.color),u(s,c,t.color)):u(o,t.gradient,t.color);const m=n.getError();m!==n.NO_ERROR&&console.error("WebGL error in shadow rendering:",m)}drawShadowWithCutoff(e,t){const{cutoffIndex:n,cutoffTimeValue:i,cutoffOpacity:r,originalData:o,selectionBounds:a,zero:s}=t;let l;if(this._lastIndividualPoints=null,this._lastParams=null,null!=i)l=i;else if(Array.isArray(o[0])&&2===o[0].length){const e=Math.floor(n),t=n-e;if(0===t||e>=o.length-1){const t=o[Math.min(e,o.length-1)][0];l=t instanceof Date?t.getTime():t}else{const n=o[e],i=o[e+1],r=n[0],a=i[0],s=r instanceof Date?r.getTime():r;l=s+t*((a instanceof Date?a.getTime():a)-s)}}else l=n;const h=t.selectionBounds;let c,g;if(h&&void 0!==h.minX&&void 0!==h.maxX)c=h.minX instanceof Date?h.minX.getTime():h.minX,g=h.maxX instanceof Date?h.maxX.getTime():h.maxX;else{const e=o[0],t=o[o.length-1],n=e[0],i=t[0];c=n instanceof Date?n.getTime():n,g=i instanceof Date?i.getTime():i}const A=(l-c)/(g-c);if(A<0)this.draw(e,{...t,renderCutoffGradient:!1});else if(A>1){const n=(0,v.applyReducedOpacity)(t.color,r),i=(0,v.applyReducedOpacityToGradient)(t.gradient,r);this.draw(e,{...t,color:n,gradient:i,renderCutoffGradient:!1})}else this.drawSplitShadowTrapezoids(e,{...t,selectionBounds:t.selectionBounds},A,l)}drawSplitShadowTrapezoids(e,t,n,i){const{zero:r,cutoffOpacity:o,selectionBounds:a}=t,s=n*this._gl.canvas.width,l=[],h=[];for(let t=0;t<e.length;t++){const[n,i]=e[t];n<s?l.push(e[t]):h.push(e[t])}let c=null;if(l.length>0&&h.length>0){const e=l[l.length-1],t=h[0],[n,i]=e,[r,o]=t;r!==n&&(c=[s,i+(s-n)/(r-n)*(o-i)],l.push(c),h.unshift(c))}if(l.length>=2){const e=(0,v.applyReducedOpacity)(t.color,o),n=this._gl;n.disable(n.DEPTH_TEST),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA);const i=(0,v.applyReducedOpacityToGradient)(t.gradient,o);this.draw(l,{...t,color:e,gradient:i,renderCutoffGradient:!1})}h.length>=2&&this.draw(h,{...t,renderCutoffGradient:!1})}}class he extends B{constructor({stateController:e,canvasElement:t,webgl:n=!1,checkIntersection:i=!0}){return super(),this._stateController=e,this._checkIntersection=i,this._canvas=t,this._webgl=n,this._canvas?(n&&(this._context=this._canvas.getContext("webgl"),this._context?(this._lineProgram=new ie(this._context),this._shadowProgram=new le(this._context)):(console.error("❌ WebGL context creation failed"),alert("WebGL failed! Attempting fallback to CPU rendering"),this._webgl=!1)),this._webgl||(this._context=this._canvas.getContext("2d"),this._context2d=this._context),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),void e.on("showing_sidebar_changed",this._boundResize)):(console.error("Failed to get canvas context in GraphBodyRenderer"),void(this._initialized=!1))):(console.error("Canvas element is null in GraphBodyRenderer constructor"),void(this._initialized=!1))}dispose(){this.clearListeners(),this._lineProgram&&this._lineProgram.dispose(),this._shadowProgram&&this._shadowProgram.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(),this._zeroLineCanvas&&this._zeroLineCanvas.parentNode&&(this._zeroLineCanvas.parentNode.removeChild(this._zeroLineCanvas),this._zeroLineCanvas=null,this._zeroLineContext=null)}clear(){this._webgl?(this._lineProgram.clear(),this._overlayContext&&this._overlayContext.clearRect(0,0,this._overlayCanvas.width,this._overlayCanvas.height),this._overlayCanvasInitialized=!1):this._context.clearRect(0,0,this._context.canvas.width,this._context.canvas.height)}render(e,t,{highlighted:n,showIndividualPoints:i,shadowColor:o,shadowBlur:a,width:s,defaultLineWidth:l,bounds:h,globalBounds:c,inRenderSpaceAreaBottom:g}){if(!this._initialized||!this._context||!this._canvas)return void console.warn("GraphBodyRenderer: Cannot render - not initialized, missing context, or missing canvas");let A=-1,d=null,p=e.data;if(e.data&&e.data.length>0&&"object"==typeof e.data[0]&&!Array.isArray(e.data[0])&&e.cutoffTime&&(p=e.data.map((t=>{const n=t[e.xKey||"x"],i=t[e.yKey||"y"];return["string"==typeof n?new Date(n):n,i]}))),e.cutoffTime&&e.data&&e.data.length>0){let t;t="now"===e.cutoffTime?new Date:"number"==typeof e.cutoffTime?new Date(e.cutoffTime):e.cutoffTime,d=t instanceof Date?t.getTime():t;for(let e=0;e<p.length-1;e++){const t=p[e],n=p[e+1],i=t[0]instanceof Date?t[0].getTime():t[0],r=n[0]instanceof Date?n[0].getTime():n[0];if(i<=d&&d<=r){A=e+(d-i)/(r-i);break}if(i>d){A=e;break}}-1===A&&(A=p.length-1)}const u=(n,r=!1)=>{if(!n&&t&&t.yValues&&!i){h||(h=e.axis.currentBounds);const n=[],{yValues:i,nullMask:o}=t,a=i.length/2;let s=0;const l=[];for(let e=0;e<i.length;e++)if(0===o[e]){const t=e*X;n.push([t,i[e]]),e>a&&(s++,l.length<3&&l.push({pixelX:e,xCoord:t,nullMask:o[e]}))}return n.length<50?u(!0,r):n}h||(h=e.axis.currentBounds);const o=[];let a=e.inSelectedSpace.data;n&&(a=e.inDataSpace);let s=h.minX instanceof Date?h.minX.getTime():h.minX,l=h.maxX instanceof Date?h.maxX.getTime():h.maxX,c=!1,g=null;for(let t=0;t<a.length;t++){let n,i;if(Array.isArray(a[t]))[n,i]=a[t];else{if("object"!=typeof a[t]||null===a[t])continue;n=a[t][e.xKey],i=a[t][e.yKey]}if(null==i)continue;let A=n instanceof Date?n.getTime():n;if(A<s){r&&(g=[A,i]);continue}if(A>l){if(!r||c)break;c=!0}const d=(A-s)/(l-s)*(this._sizing.renderWidth/X-1)*X,p=(1-(i-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;o.push([d,p])}if(g&&r){const[e,t]=g,n=(e-s)/(l-s)*(this._sizing.renderWidth/X-1)*X,i=(1-(t-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;o.unshift([n,i])}return o};let m;if("bar"===e.rendering||"area"===e.rendering){if(this._webgl)return void console.warn(`CPU rendering (${e.rendering}) is not supported with webgl={true}. Use webgl={false} or switch to 'line' rendering.`);if(this._context2d||(this._context2d=this._canvas.getContext("2d",{willReadFrequently:!1})),!this._context2d)return void console.error("Failed to get 2D context for CPU rendering");if(this._webgl&&this._context.flush(),h||(h=e.axis?.currentBounds),!h)return void console.error("No bounds available for rendering");const t="bottom"===e.zeroLineY?this._sizing.renderHeight:(1-((e.zeroLineY||0)-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight;m={context:this._context2d,color:(0,v.default)(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},!m.hasNegatives&&e.expandYWith&&(m.hasNegatives=e.expandYWith.some((e=>e<0)))}if("bar"===e.rendering){let t={...m,indexInAxis:e.axis.series.indexOf(e),axisSeriesCount:e.axis.series.length,closestSpacing:c.closestSpacing,bounds:h};if(e.cutoffTime){t.cutoffIndex=A,t.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,t.originalData=p,t.renderCutoffGradient=A>=0;const n=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;t.selectionBounds=n}return void function(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,renderCutoffGradient:m,selectionBounds:f}){if(!n)return void console.error("Canvas context is null in drawBars");n.strokeStyle=t,n.fillStyle=t;const{barWidth:C,totalBarWidth:x}=N({closestSpacing:g,bounds:A,sizing:i,axisSeriesCount:o}),b=s?a:i.renderHeight;if(m&&void 0!==d&&u)!function(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,selectionBounds:m,barWidth:f,totalBarWidth:C,barBottom:x}){let b;if("object"==typeof u[0]&&2===u[0].length){const e=Math.floor(d),t=d-e;if(0===t||e>=u.length-1){const t=u[Math.min(e,u.length-1)][0];b=t instanceof Date?t.getTime():t}else{const n=u[e][0],i=u[e+1][0],r=n instanceof Date?n.getTime():n;b=r+t*((i instanceof Date?i.getTime():i)-r)}}else b=d;for(let i=0;i<e.length;i++){const[o,h]=e[i];let c=t,g=!1;if(i<u.length){const e=u[i];g=(e[0]instanceof Date?e[0].getTime():e[0])<b,g&&(c=(0,v.applyReducedOpacity)(t,p))}if(s)if(h<=a)n.fillStyle=c;else{const e=g?(0,v.applyReducedOpacity)(l,p):l;n.fillStyle=e}else n.fillStyle=c;n.fillRect(o-C/2+f*r,h,f,x-h)}c&&M(x,{context:n,sizing:i,color:t,zero:a,zeroColor:h,zeroWidth:c})}(e,{color:t,context:n,sizing:i,indexInAxis:r,axisSeriesCount:o,zero:a,hasNegatives:s,negativeColor:l,zeroColor:h,zeroWidth:c,closestSpacing:g,bounds:A,cutoffIndex:d,cutoffOpacity:p,originalData:u,selectionBounds:f,barWidth:C,totalBarWidth:x,barBottom:b});else{for(let i=0;i<e.length;i++){const[o,h]=e[i];s&&(n.fillStyle=h<=a?t:l),n.fillRect(o-x/2+C*r,h,C,b-h)}c&&M(b,{context:n,sizing:i,color:t,zero:a,zeroColor:h,zeroWidth:c})}}(u(!0),t)}if("area"===e.rendering){let r={...m,showIndividualPoints:"boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:i,gradient:e.gradient,negativeGradient:e.negativeGradient,pointRadius:e.pointRadius,minPointSpacing:e.minPointSpacing,highlighted:n,width:s||e.width||l,shadowColor:o,shadowBlur:a,inRenderSpaceAreaBottom:g};if(e.cutoffTime){r.cutoffIndex=A,r.cutoffTimeValue=d,r.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,r.originalData=p,r.renderCutoffGradient=A>=0,r.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;r.selectionBounds=t}!function(e,t,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s,negativeGradient:l,zeroColor:h,zeroWidth:c,showIndividualPoints:g,negativeColor:A,pointRadius:d,minPointSpacing:p,width:u,highlighted:m,shadowColor:f="black",shadowBlur:C=5,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffOpacity:y,originalData:_,renderCutoffGradient:B,selectionBounds:w,isPreview:E}){if(!i)return void console.error("Canvas context is null in drawArea");if(i.fillStyle=n,i.shadowColor=f,i.shadowBlur=C,s&&s.length>=2){const R=i.createLinearGradient(0,0,0,r.renderHeight);for(let Y=0;Y<s.length;Y++){const N=s[Y];Array.isArray(N)?R.addColorStop(N[0],N[1]):R.addColorStop(Y/(s.length-1),N)}i.fillStyle=R,"gradient"===n&&(i.strokeStyle=R)}else i.fillStyle=n;if(!e.length)return;const k=a?o:r.renderHeight,S=a&&l,D=P(t,S?{splitAtY:o}:void 0),T=x&&P(x,S?{splitAtY:o}:void 0),z=P(t,{splitAtY:o});if(B&&void 0!==b&&_)!function(e,t,n,i,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,showIndividualPoints:A,negativeColor:d,pointRadius:p,width:u,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffTimeValue:y,cutoffOpacity:_,originalData:B,selectionBounds:w,isPreview:E}){let k,S,D;if(null!=y)k=y;else if("object"==typeof B[0]&&2===B[0].length){const e=Math.floor(b),t=b-e;if(0===t||e>=B.length-1){const t=B[Math.min(e,B.length-1)][0];k=t instanceof Date?t.getTime():t}else{const n=B[e][0],i=B[e+1][0],r=n instanceof Date?n.getTime():n;k=r+t*((i instanceof Date?i.getTime():i)-r)}}else k=b;E&&w?(S=w.minX instanceof Date?w.minX.getTime():w.minX,D=w.maxX instanceof Date?w.maxX.getTime():w.maxX):(S=B[0][0]instanceof Date?B[0][0].getTime():B[0][0],D=B[B.length-1][0]instanceof Date?B[B.length-1][0].getTime():B[B.length-1][0]);const T=(k-S)/(D-S);if(T<0)for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});else if(T>1){const e=h?(0,v.applyReducedOpacityToGradient)(h,_):null;for(let i=0;i<t.length;i++)F(t[i],n&&n[i],{color:(0,v.applyReducedOpacity)(r,_),context:o,sizing:a,zero:s,hasNegatives:l,gradient:e,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}else{if(E){for(let e=0;e<t.length;e++){const i=t[e],A=n&&n[e];if(!i.length)continue;const d=T*i.length,p=Math.floor(d),u=d-p;let b=null;if(p<i.length-1&&u>0){const[e,t]=i[p],[n,r]=i[p+1];b=[e+u*(n-e),t+u*(r-t)]}if(p>0||0===p&&u>0){const e=i.slice(0,p+1);b&&p<i.length-1&&e.push(b);const t=A?A.slice(0,p+1):null;if(b&&t&&p<A.length-1){const e=[b[0],s];t.push(e)}const n=h?(0,v.applyReducedOpacityToGradient)(h,_):null;F(e,t,{color:(0,v.applyReducedOpacity)(r,_),context:o,sizing:a,zero:s,hasNegatives:l,gradient:n,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}if(p<i.length-1||p===i.length-1&&0===u){const e=[];b&&p<i.length-1&&e.push(b),e.push(...i.slice(p+1));const t=[];if(b&&A&&p<A.length-1){const e=[b[0],s];t.push(e)}A&&t.push(...A.slice(p+1)),F(e,t.length?t:null,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}}i&&i.length>0&&G(i,T,{color:r,context:o,hasNegatives:l,negativeColor:d,zero:s,width:u,highlighted:m,cutoffOpacity:_}),A&&e&&e.length>0&&$(e,T,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p,cutoffOpacity:_})}else if(w){const e=w.minX instanceof Date?w.minX.getTime():w.minX,i=w.maxX instanceof Date?w.maxX.getTime():w.maxX;if(k<e)for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});else if(k>i){const e=h?(0,v.applyReducedOpacityToGradient)(h,_):null;for(let i=0;i<t.length;i++)F(t[i],n&&n[i],{color:(0,v.applyReducedOpacity)(r,_),context:o,sizing:a,zero:s,hasNegatives:l,gradient:e,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x})}else{const c=(k-e)/(i-e);for(let e=0;e<t.length;e++){const i=t[e],g=n&&n[e];if(!i.length)continue;const A=c*i.length,d=Math.floor(A),p=A-d;let u=null;if(d<i.length-1&&p>0){const[e,t]=i[d],[n,r]=i[d+1];u=[e+p*(n-e),t+p*(r-t)]}(d>0||0===d&&p>0)&&L(i,g,d,u,!0,{color:(0,v.applyReducedOpacity)(r,_),context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,areaBottomPaths:n}),d<i.length-1&&L(i,g,d,u,!1,{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,areaBottomPaths:n})}}}else for(let e=0;e<t.length;e++)F(t[e],n&&n[e],{color:r,context:o,sizing:a,zero:s,hasNegatives:l,gradient:h,zeroColor:c,zeroWidth:g,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x});if(T>=0&&T<=1&&!E)if(w){const e=w.minX instanceof Date?w.minX.getTime():w.minX,t=w.maxX instanceof Date?w.maxX.getTime():w.maxX;k<e?I(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m}):k>t?I(i,{color:(0,v.applyReducedOpacity)(r,_),context:o,hasNegatives:l,negativeColor:d?(0,v.applyReducedOpacity)(d,_):d,width:u,highlighted:m}):G(i,(k-e)/(t-e),{color:r,context:o,hasNegatives:l,negativeColor:d,zero:s,width:u,highlighted:m,cutoffOpacity:_})}else I(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m});else E||I(i,{color:r,context:o,hasNegatives:l,negativeColor:d,width:u,highlighted:m});if(g&&M(l?s:a.renderHeight,{context:o,sizing:a,color:r,zero:s,zeroColor:c,zeroWidth:g}),A&&!E)if(T>=0&&T<=1)if(w){const t=w.minX instanceof Date?w.minX.getTime():w.minX,n=w.maxX instanceof Date?w.maxX.getTime():w.maxX;k<t?O(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p}):k>n?O(e,{color:(0,v.applyReducedOpacity)(r,_),context:o,negativeColor:d?(0,v.applyReducedOpacity)(d,_):d,hasNegatives:l,zero:s,zeroColor:c?(0,v.applyReducedOpacity)(c,_):c,pointRadius:p}):$(e,(k-t)/(n-t),{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p,cutoffOpacity:_})}else O(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p});else O(e,{color:r,context:o,negativeColor:d,hasNegatives:l,zero:s,zeroColor:c,pointRadius:p})}}(e,D,T,z,{color:n,context:i,sizing:r,zero:o,hasNegatives:a,gradient:s,zeroColor:h,zeroWidth:c,showIndividualPoints:g,negativeColor:A,pointRadius:d,width:u,highlighted:m,shadowColor:f,shadowBlur:C,inRenderSpaceAreaBottom:x,cutoffIndex:b,cutoffOpacity:y,originalData:_,selectionBounds:w,isPreview:E});else{for(let W=0;W<D.length;W++){const U=D[W],H=T&&T[W];let q=!0;if(a&&l&&U.length>0){let Z=0;for(let Q=0;Q<U.length;Q++)Z+=U[Q][1];q=Z/U.length<=o}if(a&&l)if(q)if(s&&s.length>=2){const ee=i.createLinearGradient(0,0,0,r.renderHeight);for(let te=0;te<s.length;te++){const ne=s[te];Array.isArray(ne)?ee.addColorStop(ne[0],ne[1]):ee.addColorStop(te/(s.length-1),ne)}i.fillStyle=ee}else i.fillStyle=n;else if(l.length>=2){const ie=i.createLinearGradient(0,0,0,r.renderHeight);for(let re=0;re<l.length;re++){const oe=l[re];Array.isArray(oe)?ie.addColorStop(oe[0],oe[1]):ie.addColorStop(re/(l.length-1),oe)}i.fillStyle=ie}else i.fillStyle=A||n;i.beginPath();const[j,V]=U[0],[K,J]=U[U.length-1];T||i.moveTo(j,k);for(let ae=0;ae<U.length;ae++){const[se,le]=U[ae];i.lineTo(se,le)}if(H&&H.length){for(let he=H.length-1;he>=0;he--){const[ce,ge]=H[he];i.lineTo(ce,ge)}i.lineTo(...U[0])}else i.lineTo(K,k);i.fill()}m&&(u+=2),u*=X,i.strokeStyle=n,i.lineWidth=u;for(let Ae of z)if(Ae.length){if(a&&A){let de=!0;de=Ae.length>=2?Ae[1][1]<=o:Ae[0][1]<=o,i.strokeStyle=de?n:A}else i.strokeStyle=n;i.beginPath();for(let pe=0;pe<Ae.length;pe++){const[ue,me]=Ae[pe];0===pe?i.moveTo(ue,me):i.lineTo(ue,me)}i.stroke()}if(c&&M(k,{context:i,sizing:r,color:n,zero:o,zeroColor:h,zeroWidth:c}),g&&!B){function fe(e,t){if(!t||e.length<=1)return e;const n=[];let i=-1/0;for(const r of e){const[e]=r;e-i>=t&&(n.push(r),i=e)}return n}const Ce=fe(e,p);for(let[xe,be]of Ce){let ye=n;A&&a&&(ye=be===o&&h?h:be<o?n:A),i.fillStyle=ye,i.beginPath(),i.arc(xe,be,d||8,0,2*Math.PI,!1),i.fill()}}}}(u(!0),t,r)}if("shadow"===e.rendering){if(!this._webgl||!this._shadowProgram)return void console.warn("Shadow rendering requires WebGL. Enable webgl={true} on your Grapher component.",{webgl:!!this._webgl,shadowProgram:!!this._shadowProgram,program:!!this._shadowProgram?._program});if(!this._shadowProgram._program)return void console.error("ShadowProgram has no valid WebGL program");if(!t)return void console.error("inRenderSpace is null for shadow rendering");if(h||(h=e.axis?.currentBounds),!h)return void console.error("No bounds available for shadow rendering");let n;n="bottom"===e.zeroLineY?this._sizing.renderHeight:void 0!==e.zeroLineY?(1-(e.zeroLineY-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:h.minY<=0&&h.maxY>=0?(1-(0-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:this._sizing.renderHeight;const i=!this._lastBounds||h.minY!==this._lastBounds.minY||h.maxY!==this._lastBounds.maxY||this._sizing.renderHeight!==this._lastRenderHeight;this._lastBounds={...h},this._lastRenderHeight=this._sizing.renderHeight,i&&this._lastShadowCache&&(this._lastShadowCache=null),n>1.5*this._sizing.renderHeight?n=this._sizing.renderHeight:n<.5*-this._sizing.renderHeight&&(n=0);const r=(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),o=!!e.inDataSpace.find((e=>e[1]<0));let a={color:r,gradient:e.gradient||(0,v.createDefaultGradient)(r),negativeGradient:e.negativeGradient,hasNegatives:o,zero:n,sizing:this._sizing,inRenderSpaceAreaBottom:g};if(e.cutoffTime){a.cutoffIndex=A,a.cutoffTimeValue=d,a.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,a.originalData=p,a.renderCutoffGradient=A>=0,a.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;a.selectionBounds=t||h}if(this._shadowProgram.draw(u(!1,!0),a),this._webgl){const e=this._context;e.disable(e.BLEND),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA)}e.zeroLineWidth&&e.zeroLineWidth>0&&(this._context2d?(this._context2d.save(),this._context2d.strokeStyle=e.zeroLineColor||(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),this._context2d.lineWidth=e.zeroLineWidth,this._context2d.globalCompositeOperation="source-over",this._context2d.beginPath(),this._context2d.moveTo(0,n),this._context2d.lineTo(this._sizing.renderWidth,n),this._context2d.stroke(),this._context2d.restore()):(this._zeroLineCanvas||(this._zeroLineCanvas=document.createElement("canvas"),this._zeroLineCanvas.style.position="absolute",this._zeroLineCanvas.style.top="0",this._zeroLineCanvas.style.left="0",this._zeroLineCanvas.style.pointerEvents="none",this._zeroLineContext=this._zeroLineCanvas.getContext("2d"),this._canvas.parentNode.insertBefore(this._zeroLineCanvas,this._canvas.nextSibling)),this._zeroLineCanvas.width=this._canvas.width,this._zeroLineCanvas.height=this._canvas.height,this._zeroLineCanvas.style.width=this._canvas.style.width,this._zeroLineCanvas.style.height=this._canvas.style.height,this._zeroLineContext.clearRect(0,0,this._zeroLineCanvas.width,this._zeroLineCanvas.height),this._zeroLineContext.strokeStyle=e.zeroLineColor||(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),this._zeroLineContext.lineWidth=e.zeroLineWidth,this._zeroLineContext.beginPath(),this._zeroLineContext.moveTo(0,n),this._zeroLineContext.lineTo(this._sizing.renderWidth,n),this._zeroLineContext.stroke()))}const f=!(this===this._stateController.rangeGraphRenderer)&&("boolean"==typeof e.showIndividualPoints?e.showIndividualPoints:i);let C;h||(h=e.axis?.currentBounds||c),C="bottom"===e.zeroLineY?this._sizing.renderHeight:void 0!==e.zeroLineY&&h?(1-(e.zeroLineY-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:h&&h.minY<=0&&h.maxY>=0?(1-(0-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:this._sizing.renderHeight;const x=!!e.inDataSpace.find((e=>e[1]<0));let b=this._context;if(this._webgl&&"shadow"===e.rendering)this._overlayCanvas||(this._overlayCanvas=document.createElement("canvas"),this._overlayCanvas.style.position="absolute",this._overlayCanvas.style.top="0",this._overlayCanvas.style.left="0",this._overlayCanvas.style.pointerEvents="none",this._overlayContext=this._overlayCanvas.getContext("2d"),this._canvas.parentNode.insertBefore(this._overlayCanvas,this._canvas.nextSibling)),this._overlayCanvasInitialized||(this._overlayCanvas.width=this._canvas.width,this._overlayCanvas.height=this._canvas.height,this._overlayCanvas.style.width=this._canvas.style.width,this._overlayCanvas.style.height=this._canvas.style.height,this._overlayCanvasInitialized=!0),b=this._overlayContext;else if(this._context2d)b=this._context2d;else if(this._webgl){if(console.warn("Creating fallback 2D context for WebGL shadow chart"),!this._fallbackContext){const e=document.createElement("canvas");e.width=this._canvas.width,e.height=this._canvas.height,this._fallbackContext=e.getContext("2d")}b=this._fallbackContext}const y={color:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),context:b,width:s||e.width||l,shadowColor:o,shadowBlur:a,dashed:e.dashed,dashPattern:e.dashPattern,highlighted:n,showIndividualPoints:f,pointRadius:e.pointRadius,minPointSpacing:e.minPointSpacing,getIndividualPoints:u,getRanges:e.rangeKey?()=>(h||(h=e.axis.currentBounds),e.rangeKey?"objects"!==w(e,{useSimpleData:!0})?[]:(e.simpleData||e.data).map((t=>{const n=t[e.rangeKey];if(!n)return null;const i=n.min,r=n.max,o=t[e.xKey];return{x:o,range:n,pixelX:(o-h.minX)/(h.maxX-h.minX)*this._sizing.renderWidth,pixelMinY:"number"==typeof i?(1-(i-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:null,pixelMaxY:"number"==typeof r?(1-(r-h.minY)/(h.maxY-h.minY))*this._sizing.renderHeight:null}})):[]):null,rendering:e.rendering,negativeColor:e.negativeColor,hasNegatives:x,zero:C,zeroColor:e.zeroLineColor};if(this._webgl&&"shadow"===e.rendering&&e.cutoffTime&&(s>0||f)){y.cutoffIndex=A,y.cutoffTimeValue=d,y.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,y.originalData=p,y.renderCutoffGradient=A>=0;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;y.selectionBounds=t||h,y.currentBounds=h}if(t){if(e.cutoffTime){y.cutoffIndex=A,y.cutoffTimeValue=d,y.cutoffOpacity=void 0!==e.cutoffOpacity?e.cutoffOpacity:.35,y.originalData=p,y.renderCutoffGradient=A>=0,y.currentBounds=h,y.isPreview=this===this._stateController.rangeGraphRenderer;const t=this===this._stateController.rangeGraphRenderer?this._stateController._bounds:this._stateController._selection||this._stateController._bounds;y.selectionBounds=t||h}this._webgl&&"shadow"!==e.rendering?this._lineProgram.draw(t,y):function(e,{color:t,width:n=1,context:i,shadowColor:o="black",shadowBlur:a=5,dashed:s=!1,dashPattern:l=null,highlighted:h=!1,showIndividualPoints:c=!1,pointRadius:g,minPointSpacing:A,getIndividualPoints:d,getRanges:p,cutoffIndex:u,cutoffTimeValue:m,cutoffOpacity:f,originalData:C,renderCutoffGradient:x,currentBounds:b,selectionBounds:y,rendering:_,isPreview:B,negativeColor:w,hasNegatives:E,zero:k,zeroColor:S}){if(!i)return void console.error("Canvas context is null in drawLine");if(!i.setLineDash)return void console.error("drawLine called with WebGL context instead of 2D context");h&&(n+=2),n*=X,i.strokeStyle=t,i.lineWidth=n,i.shadowColor=o,i.shadowBlur=a,s?i.setLineDash(l||[5,5]):i.setLineDash([]);const D=P(e,E&&w?{splitAtY:k}:void 0);for(let e of D)if(x&&void 0!==u&&C){let r;if(null!=m)r=m;else if("object"==typeof C[0]&&2===C[0].length){const e=Math.floor(u),t=u-e;if(0===t||e>=C.length-1){const t=C[Math.min(e,C.length-1)][0];r=t instanceof Date?t.getTime():t}else{const n=C[e][0],i=C[e+1][0],o=n instanceof Date?n.getTime():n;r=o+t*((i instanceof Date?i.getTime():i)-o)}}else r=u;if(B){const o=C[0][0]instanceof Date?C[0][0].getTime():C[0][0],a=(r-o)/((C[C.length-1][0]instanceof Date?C[C.length-1][0].getTime():C[C.length-1][0])-o);if(a<0){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else if(a>1){const r=(0,v.applyReducedOpacity)(t,f);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else{const r=a*(e.length-1),o=Math.floor(r),s=r-o;let l=null;if(o<e.length-1&&s>0){const[t,n]=e[o],[i,r]=e[o+1];l=[t+s*(i-t),n+s*(r-n)]}if(o>0||0===o&&s>0){const r=(0,v.applyReducedOpacity)(t,f);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<=o;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}l&&i.lineTo(l[0],l[1]),i.stroke()}if(o<e.length-1){i.strokeStyle=t,i.lineWidth=n,i.beginPath(),l?i.moveTo(l[0],l[1]):i.moveTo(e[o+1][0],e[o+1][1]);for(let t=o+1;t<e.length;t++){const[n,r]=e[t];i.lineTo(n,r)}i.stroke()}}}else{if(!y){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke();continue}const o=y.minX instanceof Date?y.minX.getTime():y.minX,a=y.maxX instanceof Date?y.maxX.getTime():y.maxX;if(r<o){i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}else if(r>a){const r=(0,v.applyReducedOpacity)(t,f);i.strokeStyle=r,i.lineWidth=n,i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke(),i.strokeStyle=t}else{const s=(r-o)/(a-o)*i.canvas.width;let l=-1,h=null;for(let t=0;t<e.length-1;t++){const[n]=e[t],[i]=e[t+1];if(n<=s&&s<=i){const r=(s-n)/(i-n);l=t+r;const[,o]=e[t],[,a]=e[t+1];h=[s,o+r*(a-o)];break}}if(-1===l){const t=C[C.length-1][0];t instanceof Date&&t.getTime(),s>=e[e.length-1][0]?l=e.length-1:s<e[0][0]&&(l=0)}const c=[],g=[];for(let t=0;t<e.length;t++)t<l?c.push(e[t]):g.push(e[t]);if(h&&(c.length>0&&c.push(h),g.length>0&&g.unshift(h)),c.length>1){const e=(0,v.applyReducedOpacity)(t,f);i.strokeStyle=e,i.lineWidth=n,i.beginPath();for(let e=0;e<c.length;e++){const[t,n]=c[e];0===e?i.moveTo(t,n):i.lineTo(t,n)}i.stroke()}if(g.length>1){i.strokeStyle=t,i.lineWidth=n,i.beginPath();for(let e=0;e<g.length;e++){const[t,n]=g[e];0===e?i.moveTo(t,n):i.lineTo(t,n)}i.stroke()}}}}else{if(E&&w){let n=!0;e.length>=2?n=e[1][1]<=k:e.length>0&&(n=e[0][1]<=k),i.strokeStyle=n?t:w}else i.strokeStyle=t;i.beginPath();for(let t=0;t<e.length;t++){const[n,r]=e[t];0===t?i.moveTo(n,r):i.lineTo(n,r)}i.stroke()}if(p){const e=p();i.lineWidth=n,i.strokeStyle=t,i.setLineDash([]);const r=8*X;for(let t of e){if(!t)continue;const{pixelX:e,pixelMinY:n,pixelMaxY:o}=t;null!==n&&(i.beginPath(),i.moveTo(e-r/2,n),i.lineTo(e+r/2,n),i.stroke()),null!==o&&(i.beginPath(),i.moveTo(e-r/2,o),i.lineTo(e+r/2,o),i.stroke()),null!==n&&null!==o&&(i.beginPath(),i.moveTo(e,n),i.lineTo(e,o),i.stroke())}}if(c){const e=d();if(x&&void 0!==u&&C&&y){const n=y;let o,a,s;if(n&&void 0!==n.minX&&void 0!==n.maxX)o=n.minX instanceof Date?n.minX.getTime():n.minX,a=n.maxX instanceof Date?n.maxX.getTime():n.maxX;else{const e=C[0],t=C[C.length-1],n=e[0],i=t[0];o=n instanceof Date?n.getTime():n,a=i instanceof Date?i.getTime():i}if("string"==typeof u&&"now"===u)s=Date.now();else if("object"==typeof C[0]&&2===C[0].length){const e=Math.floor(u),t=u-e;if(0===t||e>=C.length-1){const t=C[Math.min(e,C.length-1)][0];s=t instanceof Date?t.getTime():t}else{const n=C[e][0],i=C[e+1][0],r=n instanceof Date?n.getTime():n;s=r+t*((i instanceof Date?i.getTime():i)-r)}}else s=u;if(null!==s&&(s-o)/(a-o)>1){const n=W(e,A);for(let e=0;e<n.length;e++){const[o,a]=n[e];let s=t;w&&E&&(s=a===k&&S?S:a<k?t:w);const{applyReducedOpacity:l}=r(365),h=l(s,f);i.fillStyle=h,i.beginPath(),i.arc(o,a,g||8,0,2*Math.PI,!1),i.fill()}return}if(B){const n=y.minX instanceof Date?y.minX.getTime():y.minX,r=y.maxX instanceof Date?y.maxX.getTime():y.maxX,o=W(e,A);for(let e=0;e<o.length;e++){const[a,l]=o[e];let h=!1;h=!(s<n)&&(s>r?"shadow"!==_:a<(s-n)/(r-n)*i.canvas.width);let c=t;if(w&&E&&(c=l===k&&S?S:l<k?t:w),h){const e=(0,v.applyReducedOpacity)(c,f);i.fillStyle=e}else i.fillStyle=c;i.beginPath(),i.arc(a,l,g||8,0,2*Math.PI,!1),i.fill()}}else if(y){const n=y.minX instanceof Date?y.minX.getTime():y.minX,r=y.maxX instanceof Date?y.maxX.getTime():y.maxX,o=W(e,A);for(let e=0;e<o.length;e++){const[a,l]=o[e];let h=!1;h=!(s<n)&&(s>r?"shadow"!==_:a<(s-n)/(r-n)*i.canvas.width);let c=t;if(w&&E&&(c=l===k&&S?S:l<k?t:w),h){const e=(0,v.applyReducedOpacity)(c,f);i.fillStyle=e}else i.fillStyle=c;i.beginPath(),i.arc(a,l,g||8,0,2*Math.PI,!1),i.fill()}}else{const n=W(e,A);for(let e=0;e<n.length;e++){const[r,o]=n[e];let a=t;w&&E&&(a=o===k&&S?S:o<k?t:w),i.fillStyle=a,i.beginPath(),i.arc(r,o,g||8,0,2*Math.PI,!1),i.fill()}}}else{const n=W(e,A);for(let e=0;e<n.length;e++){const[r,o]=n[e];let a=t;w&&E&&(a=o===k&&S?S:o<k?t:w),i.fillStyle=a,i.beginPath(),i.arc(r,o,g||8,0,2*Math.PI,!1),i.fill()}}}}(t,y)}else console.error("inRenderSpace is null for line rendering")}renderBackground(e){e&&(this._webgl?(this._backgroundProgram||(this._backgroundProgram=new R(this._context)),this._backgroundProgram.draw(e)):function({data:e},{context:t}){if(!t)return void console.error("Canvas context is null in drawBackground");const n=t.canvas.width,i=t.canvas.height;for(let{minXt:r,maxXt:o,color:a}of e)t.fillStyle=a,t.fillRect(r*n,0,(o-r)*n,i)}(e,{context:this._context}))}async _initializeCanvas(){if(this._sizing=await Y(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=Y(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 ce(e){return Math.max(2-Math.log10(Math.abs(e)),0)}function ge(e,t=null){if(null===t&&(t=ce(e)),isNaN(t)||t>100)return e.toString();const n=e.toFixed(Math.ceil(t));let i=n;return n.includes(".")&&(i=i.replace(/\.?0+$/g,"")),""===i?"0":i}const Ae={};function de(e,t){try{let n=Ae[e];if(!n){let t=e;e&&"local"!==e||(t=Intl.DateTimeFormat().resolvedOptions().timeZone),n=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}),Ae[e]=n}const i=n.formatToParts(t).find((e=>"timeZoneName"===e.type));if(!i)return null;if("GMT"===i.value)return 0;if(!/^GMT[+-]\d{2}:\d{2}$/.test(i.value))return null;const[r,o]=i.value.slice(3).split(":");return 60*parseInt(r)*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 pe(e,t){if(!t){const t=new Date(e);return t.setHours(0,0,0,0),t}const n=de(t,e);let i=new Date(e);return i.setUTCHours(0,0,0,0),i.valueOf()-e.valueOf()>n&&(i=new Date(i.valueOf()-864e5)),new Date(i.valueOf()-n)}function ue(e,{dates:t=!1,precision:n=null,justTime:i=!1,justDate:r=!1,justMonthAndDay:o=!1,clockStyle:a="24h",unitOverride:s,timeZone:l,integersOnly:h=!1,inverseEnumMap:c}={}){return!t||e instanceof Date||(e=new Date(e),!isNaN(e))?e instanceof Date?function(e,{precision:t,justTime:n,justDate:i,justMonthAndDay:r,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=de(s,e),n=de("local",e);"number"==typeof t&&"number"==typeof n&&(e=new Date(e.valueOf()+t-n))}const h=l?e.getUTCFullYear():e.getFullYear(),c=(l?e.getUTCMonth():e.getMonth())+1,g=l?e.getUTCDate():e.getDate();if("year"===o)return h.toString();if(i)return l?`${c}/${g}/${h}`:e.toLocaleDateString();if(r)return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][c-1]} ${g}`;const A=l?e.getUTCHours():e.getHours(),d=l?e.getUTCMinutes():e.getMinutes(),p=l?e.getUTCSeconds():e.getSeconds(),u=l?e.getUTCMilliseconds():e.getMilliseconds();let m;return m="12h"===a?`${((A+11)%12+1).toString()}:${d.toString().padStart(2,"0")}`:`${A.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`,"s"!==t&&"ms"!==t||(m+=`:${p.toString().padStart(2,"0")}`),"ms"===t&&(m+=`.${u.toString().padStart(3,"0")}`),"12h"===a&&(m+=A>=12?"pm":"am"),n?m:(l&&(m+=" UTC"),(l?`${c}/${g}/${h}`:e.toLocaleDateString())+" "+m)}(e,{precision:n,justTime:i,justDate:r,justMonthAndDay:o,unitOverride:s,clockStyle:a,timeZone:l}):isNaN(e)?"NaN":c?Math.abs(e-Math.round(e))>1e-10?"":c[Math.round(e)]:h&&Math.abs(e-Math.round(e))>1e-10?"":ge(e,n):"Invalid Date"}function me(e,{precision:t=null,log:n=!1}={}){return null===e?"null":isNaN(e)?"NaN":n?`10^${ge(Math.log10(e),t)}`:ge(e,t)}const fe=32;function Ce(){return Ce=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Ce.apply(this,arguments)}function xe({yLabel:e,y:t,fullYPrecision:n}){return n&&!e?void 0===t?"undefined":null===t?"null":t.toString():"number"==typeof e?n?e.toString():me(e):"object"==typeof e?me(t):e||me(t)}function be({axisLabel:e,x:n,y:i,xLabel:r,yLabel:o,textLeft:a,textTop:s,includeSeriesLabel:l,includeXValue:h,includeYValue:c,includeXLabel:g,includeYLabel:A,fullYPrecision:d,formatXOptions:p}){let u=0;return t().createElement("g",null,l&&t().createElement("text",{x:a,y:s+12*u++},e),h&&t().createElement("text",{x:a,y:s+12*u++},g&&"x: ",r||ue(n,p)),c&&t().createElement("text",{x:a,y:s+12*u++},A&&"y: ",xe({yLabel:o,y:i,fullYPrecision:d})))}be.propTypes={axisLabel:i().string,x:i().oneOfType([i().number,i().instanceOf(Date)]),y:i().number,xLabel:i().string,yLabel:i().oneOfType([i().number,i().string]),textLeft:i().number.isRequired,textTop:i().number.isRequired,fullYPrecision:i().bool,formatXOptions:i().object,..._.TooltipOptionsRaw};class ye 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,i=3-n,r={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:r},a=this.props.tooltips.map((t=>{const{x:a,y:s,pixelY:l,pixelX:h,series:c,index:g,xLabel:A,yLabel:d,fullYPrecision:p}=t;if("number"!=typeof h)return null;const u=(c.name||c.yKey||g).toString();let m=7.5*Math.max(u.length,(A||ue(a,r)).length+4,xe({yLabel:d,y:s,fullYPrecision:p}).length+4);c.tooltipWidth&&(m=c.tooltipWidth);let f=this.props.elementWidth<m+14+8,C=1;h>=this.props.elementWidth-(m+14+4)&&(C=-1),h<m+14+4&&-1===C&&(f=!0),null===s&&(f=!0),this.props.alwaysFixedPosition&&(f=!0);let x=11;if(C<0?x=-m-x:x+=6,!isFinite(h))return null;const b=`translate(${h},${l})`,y={fullYPrecision:p||this.props.maxPrecision,x:a,y:s,axisLabel:u,xLabel:A,yLabel:d,...o};let _,B=0;return f&&(x=6,_=this.props.elementWidth/2-m/2,m>this.props.elementWidth&&!this.props.floating&&(_-=fe*this.props.axisCount/2),B=18,this.props.floating&&(B="bottom"===this.props.floatPosition?this.props.elementHeight+n+4:-e,this.props.floatDelta&&(B+=this.props.floatDelta))),{...t,label:u,indexInAxis:c?.axis?.series?.indexOf(c),axisLabel:u,width:m,fixedPosition:f,multiplier:C,textLeft:x,transform:b,commonLabelProps:y,textTop:i,height:e,caretSize:7,halfHeight:n,caretPadding:4,yTranslation:B,baseLeft:_}})).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 i of l)if(Math.abs(i.pixelX-t.pixelX)<=e){i.tooltips.push(t),t.pixelX>i.pixelX&&(i.pixelX=t.pixelX,i.multiplier=t.multiplier),t.pixelY<i.pixelY&&(i.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 i=0;i<e.tooltips.length;i++)e.tooltips[i].textTop=t,t+=e.tooltips[i].height,n=Math.max(n,e.tooltips[i].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,i)=>{const{color:r,fixedPosition:o,width:a,transform:s,baseLeft:h,commonLabelProps:c,yTranslation:g,multiplier:A,textLeft:d,textTop:p}=e;return this.props.customTooltip||l?t().createElement("g",{key:i,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:r})):o?t().createElement("g",{key:i,className:"tooltip-item tooltip-item-fixed"},t().createElement("circle",{r:4,fill:r,transform:s}),t().createElement("g",{transform:`translate(${h}, ${g})`},t().createElement("path",{stroke:r,d:`M0,0 V-${n} h${a} V${n} h${-a} V0`}),t().createElement(be,Ce({textLeft:d,textTop:p},c)))):t().createElement("g",{key:i,transform:s,className:"tooltip-item"},t().createElement("circle",{r:4,fill:r}),t().createElement("path",{stroke:r,d:`M${4*A},0 L${7*A*2},-7 V-${n} h${A*a} V${n} h${A*-a} V7 L${4*A},0`}),t().createElement(be,Ce({textLeft:d,textTop:p},c)))})),!this.props.customTooltip&&l&&l.map((({tooltips:e,pixelX:n,pixelY:i,halfHeight:r,multiplier:o,color:a,width:s},l)=>t().createElement("g",{key:l,transform:`translate(${n},${i})`,className:"tooltip-item"},t().createElement("path",{stroke:a,d:`M${4*o},0 L${7*o*2},-7 V-${r} h${o*s} V${r} h${o*-s} V7 L${4*o},0`}),e.map(((e,n)=>t().createElement(be,Ce({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)))))}}ye.defaultProps={includeSeriesLabel:!0,includeXLabel:!0,includeYLabel:!0,includeXValue:!0,includeYValue:!0},ye.propTypes={mouseX:i().number.isRequired,mouseY:i().number.isRequired,elementHeight:i().number.isRequired,elementWidth:i().number.isRequired,tooltips:i().arrayOf(i().shape({x:i().oneOfType([i().number,i().instanceOf(Date)]),y:i().number,pixelY:i().number,color:i().string,xLabel:i().string,yLabel:i().any,fullYPrecision:i().bool})),axisCount:i().number.isRequired,maxPrecision:i().bool.isRequired,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,..._.TooltipOptionsRaw};class _e 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(", "),[i,r,o]=t.split("/"),a=`${i.padStart(2,"0")}/${r.padStart(2,"0")}/${o}`,[s,l]=n.split(" "),[h,c]=s.split(":");return`${a} ${h.padStart(2,"0")}:${c} ${l}`}render(){const{x:e,y:n,showing:i,value:r}=this.props.contextMenu,o={left:e,top:n,width:"150px"};if(!i||!r||"Invalid Date"===r.toLocaleString()||isNaN(e)||isNaN(n))return null;const a=r instanceof Date?this.formatDateTime(r.toLocaleString()):r;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 Be(e,t={}){const n=w(e,{useSimpleData:!0,data:t.data});if(!a.includes(n))throw new Error(`Cannot normalize ${n} (expected a simple type)`);const i={tuples:we,values:ve,objects:ke}[n](t.data||e.simpleData||e.data,e,t);if(e.square){const e=[];let n=t.prevY;for(let t of i)void 0!==n&&e.push([t[0],n]),e.push(t),n=t[1];return e}if(e.shiftXBy)for(let n of i)if("string"==typeof n[0]){const i=n[0];n[0]=new Date(new Date(n[0]).valueOf()+e.shiftXBy),isNaN(n[0])&&(n[0]=t.stateController.enumToNumber(i,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 i)"number"==typeof e[0]&&(e[0]=new Date(1e3*e[0]));return i}function ve(e,t,n){const i=[];for(let r=0;r<e.length;r++){let o=e[r];"string"==typeof o&&(o=n.stateController.enumToNumber(o,t)),"boolean"==typeof o&&(o=+o),i.push([r+(n.valueXStart||0),o])}return i}function we(e,t,n){return[...e.map((([e,i])=>{if(void 0===i&&(i=null),"string"==typeof e){const i=e;e=new Date(e),isNaN(e)&&(e=n.stateController.enumToNumber(i,t,!0))}return"string"==typeof i&&(i=n.stateController.enumToNumber(i,t)),"boolean"==typeof i&&(i=+i),[e,i]}))]}function Ee(e,t,n){const i=e.getUint32(t+2+Uint32Array.BYTES_PER_ELEMENT*n,!0);if(0===i)return null;const r=e.getUint8(i);if(0===r)return e.getFloat64(t+i+1,!0);if(1===r||6===r)return null;if(3===r)return new Date(e.getFloat64(t+i+1,!0));throw new Error(`Binary format type ${r} not supported`)}function ke(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 i=[];for(let r of e)if(r.buffer instanceof ArrayBuffer){const e=new DataView(r.buffer),n=r.channels[t.xKey],o=r.channels[t.yKey];for(let t of r.offsets)i.push([Ee(e,t,n),Ee(e,t,o)])}else if(Array.isArray(r[t.yKey]))if(r[t.yKey].length&&!Array.isArray(r[t.yKey][0])&&"object"==typeof r[t.yKey][0])for(let e of r[t.yKey]){let r=e[t.yKey];void 0===r&&(r=null),"string"==typeof r&&(r=n.stateController.enumToNumber(r,t)),"boolean"==typeof r&&(r=+r);let o=e[t.xKey];"string"==typeof o&&(o=new Date(o)),i.push([o,r])}else i.push(...r[t.yKey]);else{let e=r[t.yKey];void 0===e&&(e=null);let o=r[t.xKey];"string"==typeof o&&(o=new Date(o)),"string"==typeof e&&(e=n.stateController.enumToNumber(e,t)),"boolean"==typeof e&&(e=+e),i.push([o,e])}return i}function Se(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 De(e,{percentile:t=100,percentileAsymmetry:n=0}={}){let i={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null};if(100!==t&&e.length)return function(e,t,{percentile:n=100,percentileAsymmetry:i=0}={}){let r=!1;t.minX=e[0][0],t.minX instanceof Date&&(t.minX=t.minX.valueOf(),r=!0),t.maxX=e[e.length-1][0],t.maxX instanceof Date&&(t.maxX=t.maxX.valueOf(),r=!0);const o=e.filter((([e,t])=>"number"==typeof t)).sort((([e,t],[n,i])=>t-i));if(!o.length)return Se(t,{dates:r});const a=Math.min(Math.abs(i),(100-n)/2)*(i<0?-1:1),s=(100-n)/2+a,l=(100-n)/2-a,h=Math.floor((o.length-1)*s/100),c=Math.floor((o.length-1)*(100-l)/100);return t.minY=o[h][1],t.maxY=o[c][1],Se(t,{dates:r})}(e,i,{percentile:t,percentileAsymmetry:n});let r=!1,o=null;for(let[t,n]of e){if(t instanceof Date&&(t=t.valueOf(),r=!0),("number"!=typeof i.minX||t<i.minX)&&(i.minX=t),("number"!=typeof i.maxX||t>i.maxX)&&(i.maxX=t),"number"==typeof o&&"number"==typeof t){const e=t-o;("number"!=typeof i.closestSpacing||e<i.closestSpacing)&&(i.closestSpacing=e)}o=t,"number"==typeof n&&(("number"!=typeof i.minY||n<i.minY)&&(i.minY=n),("number"!=typeof i.maxY||n>i.maxY)&&(i.maxY=n))}return Se(i,{dates:r})}function Te(e){const t={minX:null,maxX:null,minY:null,maxY:null,closestSpacing:null,dates:!1,initial:!0};for(let{minX:n,maxX:i,minY:r,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||i>t.maxX)&&(t.maxX=i),(null===t.closestSpacing||l<t.closestSpacing)&&(t.closestSpacing=l),(null===t.minY||r<t.minY)&&(t.minY=r),(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 ze(e,{expandYWith:t=[],extendXForNBars:n=0}){const i=Object.assign({},e);for(let e of t)null!=e&&(("number"!=typeof i.minY||e<i.minY)&&(i.minY=e),("number"!=typeof i.maxY||e>i.maxY)&&(i.maxY=e));i.unscaledMinY=i.minY,i.unscaledMaxY=i.maxY;const r=i.maxY-i.minY,o=i.minY+r/2;if(i.minY=o-1.05*r/2,i.maxY=o+1.05*r/2,i.minY===i.maxY&&null!==i.minY&&(i.minY>0?(i.minY*=.95,i.maxY*=1.05):i.minY<0?(i.minY*=1.05,i.maxY*=.95):(i.minY-=1,i.maxY+=1)),n&&i.minX!==i.maxX&&null!==i.minX&&null!==i.maxX){const e=(i.maxX-i.minX)/n;i.minX-=e/2,i.maxX+=e/2}return i}function Re(e,t,n={},i=0,r=void 0){if(void 0===r&&(r=e.length-1),0===e.length)return n.returnIndex?-1:[null,null];const o=Math.floor((i+r)/2);if(t===e[o][0]||e[o][0]instanceof Date&&e[o][0].valueOf()===t)return n.returnIndex?o:e[o];if(i===r)return e[i][0]<t&&"before"===n.searchType||e[i][0]>t&&"after"===n.searchType?n.returnIndex?i:e[i]:n.returnIndex?-1:[null,null];if(r-1===i){let o;return o="before"===n.searchType?i:"after"===n.searchType||Math.abs(e[i][0]-t)>Math.abs(e[r][0]-t)?r:i,n.returnIndex?o:e[o]}return t>e[o][0]?Re(e,t,n,o,r):t<e[o][0]?Re(e,t,n,i,o):void 0}function Xe({data:e,swap:t,minX:n,maxX:i,ignoreDiscontinuities:r,square:o}){if(!e.length||e.length&&n>e[e.length-1][0]||e.length&&i<e[0][0])return{data:[[n,null],[i,null]],firstAdded:!0,lastAdded:!0};let a,s=Re(e,n,{searchType:"before",returnIndex:!0})||0,l=Re(e,i,{searchType:"after",returnIndex:!0})||0;for(-1===l&&(l=0);s>=0&&e[s][0]>=n;)s--;for(;l<e.length&&e[l][0]<=i;)l++;let h=!1,c=!1,g=!1,A=s,d=l;if(r){for(;A>=0&&null===e[A][1];)A--;for(;d<e.length&&null===e[d][1];)d++}if(t){if(a=t.data,t.lastAdded&&a.pop(),n===t.minX&&(h=!0),s!==t.beforeIndex){h=!1,t.firstAdded&&a.shift();let i=t.beforeIndex;for(;i>=0&&a.length&&a[0][0]>=n;)r&&!e[i][1]&&0!==e[i][1]||a.unshift(e[i]),i--;for(;i<e.length&&a.length&&a[0][0]<n;)a.shift(),i++}if(r&&!t.ignoreDiscontinuities&&(a=a.filter((([e,t])=>null!=t))),s===t.beforeIndex&&t.firstAdded){c=!0;let t=s+1;if(r)for(;t<e.length&&null===e[t][1];)t++;-1===A&&a.length?a[0]=[n,null]:o&&a.length?a[0]=[n,e[A][1]]:a.length&&(a[0]=[n,Ye(e,A,t,n)]),e[s+1][0]===a[0][0]&&e[s+1][1]===a[0][1]&&(c=!1)}let g=t.afterIndex;if(t.ignoreDiscontinuities&&!r){let t=s+1,n=0;for(c&&n++;n<=a.length&&t<e.length&&t<l;)e[t][0]<=i&&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>=g&&(g=t+1)),t++,n++}let d=g||0;for(;d<e.length&&e[d][0]<=i;)e[d][0]>=n&&(r&&!e[d][1]&&0!==e[d][1]||a.push(e[d])),d++;for(;a.length&&a[a.length-1][0]>i;)a.pop()}else a=e.slice(s+1,l),r&&(a=a.filter((([e,t])=>null!=t)));if(a.length||(a=o?A<0?[[n,null],[i,null]]:[[n,e[A][1]],[i,e[A][1]]]:[[n,Ye(e,A,d,n)],[i,Ye(e,A,d,i)]],c=!0,g=!0),!h){let t=s+1;if(r)for(;t<e.length&&null===e[t][1];)t++;a.length&&a[0][0]>n&&(c=!0,-1===A?a.unshift([n,null]):o?a.unshift([n,e[A][1]]):a.unshift([n,Ye(e,A,t,n)]))}if(a.length&&a[a.length-1][0]<i){g=!0;let t=l-1;if(r)for(;t>=0&&null===e[t][1];)t--;d===e.length?a.push([i,null]):o?a.push([i,a[a.length-1][1]]):a.push([i,Ye(e,t,d,i)])}if(1===a.length){let t,r;o?(t=A<0?[n,null]:[n,e[A][1]],r=[i,a[0][1]]):(t=[n,Ye(e,A,s+1,n)],r=[i,Ye(e,l-1,d,i)]),a.unshift(t),a.push(r),c=!0,g=!0}return{data:a,minX:n,maxX:i,beforeIndex:s,afterIndex:l,firstAdded:c,lastAdded:g,ignoreDiscontinuities:r}}function Ye(e,t,n,i){if(t<0||n<0)return null;if(t>=e.length||n>=e.length)return null;if(t===n)return e[t][1];const[r,o]=e[t],[a,s]=e[n];if(i===r&&null!==o)return o;if(i===a&&null!==s)return s;if(null===o||null===s)return null;const l=(i-r)/(a-r);return l<0||l>1?null:l*(s-o)+o}function Pe({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}}function Me({data:e,swap:t,renderWidth:n,renderHeight:i,minX:r,maxX:o,minY:a,maxY:s,scale:l,dataChanged:h}){t&&t.yValues.length!==n&&(t=null);const c=t&&t.nullMask||new Uint8Array(n);c.fill(0);const g=new Float64Array(n),A=new Float64Array(n),d=new Float64Array(n),p=Pe({minY:a,maxY:s,scale:l}),u={data:e,renderWidth:n,renderHeight:i,minX:r,maxX:o,minY:a=p.minY,maxY:s=p.maxY,scale:l};let m,f;if(te()){let n=0;const i=t&&t.dataNullMask&&t.dataF64,a=!h&&i&&t.minX===r&&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)),f=new Uint8Array(Math.floor(e.length*n)),a&&(f.set(t.dataNullMask),m.set(t.dataF64))}else m=t.dataF64,f=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]?f[t]=1:f[t]=0;te().selected_space_to_render_space(e.length,m,f,u,c,g,A,d)}else!function({data:e,renderWidth:t,renderHeight:n,minX:i,maxX:r,minY:o,maxY:a,scale:s},{nullMask:l,yValues:h,minYValues:c,maxYValues:g}){let A=0,d=A-1;for(let p=0;p<t;p++){const u=p/(t-1)*(r-i)+i;let m=null,f=null;for(A>0&&A<=e.length&&null===e[A-1][1]&&A--,A<e.length-2&&e[A+1][0]<u&&A++;A<e.length-2&&e[A+1][0]<u;A++){const t=e[A][1];null!==t&&((null===m||t<m)&&(m=t),(null===f||t>f)&&(f=t))}if(c[p]=null===m?0:n*(1-(("log"===s?Math.log10(m):m)-o)/(a-o)),g[p]=null===f?0:n*(1-(("log"===s?Math.log10(f):f)-o)/(a-o)),A>=e.length-1||null===e[A][1]||null===e[A+1][1]){const t=A>=e.length-1?null:e[A][1];l[p]=null===t|(null===m)<<1|(null===f)<<2,h[p]=null===t?0:n*(1-(("log"===s?Math.log10(t):t)-o)/(a-o)),A++;continue}const[C,x]=e[A],[b,y]=e[A+1];let _=(u-C)/(b-C)*(y-x)+x;d!==A&&(_=x),h[p]=null===_?0:n*(1-(("log"===s?Math.log10(_):_)-o)/(a-o)),l[p]=null===_|(null===m)<<1|(null===f)<<2,d=A}}(u,{nullMask:c,yValues:g,minYValues:A,maxYValues:d});return{nullMask:c,yValues:g,minYValues:A,maxYValues:d,dataF64:m,dataNullMask:f,minX:r,maxX:o,length:e.length}}function Fe(e,{series:t,inDataSpace:n}){const i=[];let r=0;for(let o of e){const e=Le(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[r++][0];t.square&&i.length>0&&i.push([o,i[i.length-1][1]]),i.push([o,e])}continue}if(t.ignoreDiscontinuities&&null==e)continue;const a=n[r++][0];t.square&&i.length>0&&i.push([a,i[i.length-1][1]]),i.push([a,o])}return i.length!==n.length&&console.warn("Flattening didn't give the same length as it has in data space"),i}function Le(e,t){return t.yKey?e[t.yKey]:Array.isArray(e)?1===e.length?e[0]:e[1]:e}function Oe(e,t){return t.xKey?e[t.xKey]:Array.isArray(e)?e[0]:e}function Ie({mouseX:e,mouseY:t,sizing:n},i){const{x:r,y:o}=i,a=i.series.axis.scale,s=i.series.axis.currentBounds,{minY:l,maxY:h}=Pe({...s,scale:a}),c=(r-s.minX)/(s.maxX-s.minX)*n.elementWidth,g=(1-(("log"===a?Math.log10(o):o)-l)/(h-l))*n.elementHeight,A=Math.sqrt((c-e)**2+(g-t)**2),d=Math.abs(c-e);Object.assign(i,{pixelWidth:n.elementWidth,pixelX:c,pixelY:isNaN(g)?n.elementHeight/2:g,xDistance:d,distance:A})}_e.propTypes={contextMenu:i().shape({x:i().number,y:i().number,showing:i().bool,value:i().oneOfType([i().instanceOf(Date),i().number,i().object])}).isRequired};const Ge={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 $e({data:e,swap:t,minX:n,maxX:i,renderWidth:r,dataChanged:o}){const a=2*r;let s;if(!o&&t&&t.minX===n&&t.maxX<=i&&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:i,length:e.length};const l=[],h=(i-n)/a;let c=null,g=null,A=0;e.length&&l.push(e[0]);for(let e of s){const[t,i]=e;if(null===i)continue;const r=Math.floor((t-n)/h);r!==A&&(c&&g&&(c===g?l[l.length-1]!==c&&l.push(c):c[0]<g[0]?l.push(g,c):l.push(c,g)),c=null,g=null,A=r),(!c||i<c[1])&&(c=e),(!g||i>g[1])&&(g=e)}return c&&g&&(c===g?l.push(c):c[0]<g[0]?l.push(g,c):l.push(c,g)),e.length>=2&&e[e.length-1]!==c&&e[e.length-1]!==g&&l.push(e[e.length-1]),{data:l,minX:n,maxX:i,length:e.length}}function Ne(e,t){let n=e.name||e.yKey;return n||(n=t.toString()),n}function We({data:e,background:t,minX:n,maxX:i}){if(!t)return null;const r=[];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)");r.push(Object.assign({key:e,comparator:"custom",comparedAgainst:null},n));continue}if("null"===e){r.push({evaluator:e=>null===e&&n,color:n,key:e,comparator:"=",comparedAgainst:null});continue}const[t,i]=e.split(" ");if(!t||!i||isNaN(parseFloat(i)))throw new Error("Invalid background declaration: "+e);const o=parseFloat(i);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}r.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 h of a?[a.condition,...r]:r){const r=h.evaluator(l);if(a){if(a.color===r)break;let c=s;if(t>0){let[n,i]=e[t-1];n instanceof Date&&(n=n.valueOf()),c=null===a.condition.comparedAgainst?s:null===l?n:n+(h.comparedAgainst-i)/(l-i)*(s-n)}o.push({...a,maxX:c,maxXt:(c-n)/(i-n)}),a=null}if(r){let o=s;if(t>0){let[n,i]=e[t-1];n instanceof Date&&(n=n.valueOf()),o=null===h.comparedAgainst?n:null===i?s:n+(h.comparedAgainst-i)/(l-i)*(s-n)}a={minX:o,minXt:(o-n)/(i-n),color:r,condition:h};break}}}return a&&o.push({...a,maxX:e[e.length-1][0],maxXt:(e[e.length-1][0]-n)/(i-n)}),{data:o}}class Ue extends B{constructor({defaultBoundsCalculator:e,customBoundsSelectors:t,requireWASM:n,defaultShowIndividualPoints:i,defaultShowSidebar:r,defaultShowAnnotations:o,defaultShowOptions:a,syncPool:s,grapherID:l,sharedDataCache:h,sharedSubscriptions:c,fullscreen:g}){super(),this._requireWASM=n,n&&ee.then((()=>{this._markDirty()})),this._series=[],this._seriesFromOriginalSeries=new Map,this._axes=[{series:[],scale:"linear",side:"left",axisIndex:0}],this._highlightedSeries=null,this._showIndividualPoints=i||!1,this._autoscaleY=!0,this._percentile=100,this._percentileAsymmetry=0,this._showingOptions=a,this._maxPrecision=!1,this._showingSidebar=r||!1,this._showingAnnotations=o||!1,this._grapherID=l,this._fullscreen=g||!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(Ge[e])return Ge[e];for(let{label:n,calculator:i}of t)if(e===n)return i;return Ge.all}(e,t),this._boundsHistory=[this._boundsCalculator],this._boundsIndex=0,this._dataCache=h||new Map,this._subscriptions=c||new Map,this._subscriptionsShared=!!c,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 i=new Set(e);for(let e of n)i.has(e.originalSeries)||this._removeSeries(e);this._series.splice(0);for(let t=0;t<e.length;t++){const n=e[t];let i=this._seriesFromOriginalSeries.get(n);i||(i={...n,originalSeries:n},this._seriesFromOriginalSeries.set(n,i),i.defaultAlwaysTooltipped&&(this._alwaysTooltipped.add(i),this._tooltipsChanged=!0,this.deferredEmit("always_tooltipped_changed",this._alwaysTooltipped))),i.index=t,this._series.push(i),this._assignAxisTo(i),i.hidden&&this._hideSeries(i)}for(let n=0;n<t.length;n++){const i=t[n];i.index=n+e.length,this._series.push(i)}this.deferredEmit("series_changed",this._series),this._dataChanged=!0,this._markDirty()}_markDirty(){if(this._frameRequested)return;if(this._requireWASM&&!te)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 i=performance.now(),r=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 h=performance.now(),c=performance.now();this._contextMenuChanged&&this._recalculateContextMenu();const g=performance.now(),A=performance.now();this._annotationsChanged&&this._recalculateAnnotations();const d=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 p=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(),f={frameExecution:m-t,frameRequestAndExecution:m-e,generators:s-a,dataProcessing:i-n,renderPipeline:o-r,tooltips:h-l,contextMenu:g-c,annotations:d-A,callbacks:u-p};this.lastLoopTime=f,this._timingFrameCount&&(this._timingBuffer.length<this._timingFrameCount?this._timingBuffer.push(f):this._timingBuffer[this._timingIndex%this._timingFrameCount]=f,this._timingIndex++),this.emit("render_time",m-t,f)}))}deferredEmit(...e){this._deferredEmissions[e[0]]=e}deferredPriorityEmit(...e){this._deferredPriorityEmissions[e[0]]=e}_seriesToSimpleData(e){const t=w(e);if(a.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 i=t.values().next().value;if(n=i.simpleData,!n)throw new Error(`Cannot find simpleData in ${i.name||i.yKey||i.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 i=!1;for(let t of n)if(e.has(t)){i=!0;break}i||(this._subscriptions.get(t).unsubscribe(),this._subscriptions.delete(t),this._observablesToSeries.delete(t))}for(let[t,n]of this._generatorsToSeries){let i=!1;for(let t of n)if(e.has(t)){i=!0;break}i||(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(i=t,void 0===(n=this._generatorCallArgs.get(e))||void 0===i?n===i:n.minX===i.minX&&n.maxX===i.maxX&&n.sizing.elementWidth===i.sizing.elementWidth&&n.sizing.renderWidth===i.sizing.renderWidth)return;var n,i;this._generatorCallArgs.set(e,t);const r=await Promise.resolve(e(t));if(r&&this._generatorsToSeries.has(e))if(this._dataChanged=!0,this._markDirty(),"function"==typeof r.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(r)||this._observablesToSeries.set(r,new Set),this._observablesToSeries.get(r).add(t);this._listenToObservableData({observable:r,currentData:t})}else{this._dataCache.set(e,r);for(let t of this._generatorsToSeries.get(e))t.simpleData=r}}_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:i,series:r,alwaysTooltipped:o,savedTooltips:a,allTooltipped:s,closestSpacing:l}){a=a.filter((e=>e.series.axis));for(let e of a)Ie({mouseX:t,mouseY:n,sizing:i},e);if(!e)return{mouseX:t,mouseY:n,elementWidth:i.elementWidth,elementHeight:i.elementHeight,tooltips:[...a]};const h=[];let c=1/0;for(let e=0;e<r.length;e++){const a=r[e];if(a.hidden)continue;const g=a.axis,A=g.scale,d=g.currentBounds,{minY:p,maxY:u}=Pe({...d,scale:A}),m=t/i.elementWidth*(d.maxX-d.minX)+d.minX;let f=a.inDataSpace;if(a.ignoreDiscontinuities&&(f=f.filter((e=>"number"==typeof e[1]))),0===f.length)continue;let C=f[0][0],x=f[f.length-1][0];C instanceof Date&&(C=C.getTime()),x instanceof Date&&(x=x.getTime());const b=0;if(m<C-b||m>x+b)continue;const y=Re(f,m,{returnIndex:!0}),_=f[y];if(!_)continue;const[B,w]=_;if(null===B)continue;let E=(B-d.minX)/(d.maxX-d.minX)*i.elementWidth;const k=(1-(("log"===A?Math.log10(w):w)-p)/(u-p))*i.elementHeight;if(k>i.elementHeight||k<0)continue;const S=o.has(a)||s;let D=20,T=20,z=20;if("bar"===a.rendering){const e=a.axis.series.indexOf(a),t=a.axis.series.length,{totalBarWidth:n,barWidth:r}=N({closestSpacing:l,bounds:d,sizing:i,axisSeriesCount:t});E-=n/2/i.pixelRatio,E+=r*(e+.5)/i.pixelRatio,D=r/2/i.pixelRatio,T=100,z=D+T}const R=Math.abs(E-t),X=Math.abs(k-n),Y=Math.sqrt(R**2+(k-n)**2);if(!S&&(R>D||X>T||Y>z))continue;let P,M;const F=a.simpleData||a.data,L=F.length&&!!a.hasEnum;if(a.xLabel||a.yLabel||L){let e;e=F.length===f.length?F[y]:Fe(F,{series:a,inDataSpace:f})[y][1],a.xLabel?P=e[a.xLabel]:a.hasXEnum&&(P=Oe(e,a)),a.yLabel?M=e[a.yLabel]:L&&(M=Le(e,a))}Y<c&&(c=Y);let O=(0,v.default)(a.color,e,a.multigrapherSeriesIndex);w<0&&a.negativeColor?O=a.negativeColor:0===w&&a.zeroLineColor&&(O=a.zeroLineColor),h.push({pixelWidth:i.elementWidth,pixelX:E,pixelY:isNaN(k)?i.elementHeight/2:k,x:B,y:w,color:O,distance:Y,xDistance:R,index:e,series:a,xLabel:P,yLabel:M,fullYPrecision:a.fullYPrecision,ignoreYDistanceCheck:S})}const g=h.filter((({distance:e,ignoreYDistanceCheck:t})=>e===c||t)).sort(((e,t)=>t.distance-e.distance));return{mousePresent:e,mouseX:t,mouseY:n,elementWidth:i.elementWidth,elementHeight:i.elementHeight,unsavedTooltipsCount:g.length,tooltips:[...a,...g]}}({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,i=null;for(let r of this._series){const o=r.axis.currentBounds;i=this._contextMenuPosition.x-e.left,this._contextMenuPosition.x>2*(e.right-t.elementWidth)&&(i-=130),n="timestamp"===r.xKey||"time"===r.xKey||"date"===r.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:i,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:i}){const r=new Set(t.map(((e,t)=>({name:Ne(e,t),hidden:e.hidden}))).filter((({hidden:e})=>!e)).map((({name:e})=>e))),{elementWidth:o}=n,{minX:a,maxX:s}=i,l=s-a;return 0===l?{annotations:[],elementWidth:o}:{annotations:e.filter((e=>{if(!e.series)return!0;for(let t of e.series)if(r.has(t))return!0;return!1})).map((e=>{const t=void 0!==e.startX&&void 0!==e.endX,n=void 0!==e.x;let i=e.startX,r=e.endX;if(!t&&n)i=e.x,r=e.x;else if(!t&&!n)return null;const s=e=>"string"==typeof e?new Date(e).valueOf():e instanceof Date?e.valueOf():e;let h=s(i),c=s(r);h>c&&([h,c]=[c,h]);let g=(h-a)/l*o,A=(c-a)/l*o;g=Math.max(0,Math.min(o,g)),A=Math.max(0,Math.min(o,A));let d=A-g;return d<1&&A>0&&g<o&&(!t&&n?(d=1,g-=.5):d=t?1:0),g=Math.max(0,Math.min(o-d,g)),d<=0?null:{...e,isRange:t,pixelStartX:g,pixelWidth:d}})).filter((e=>null!==e)),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=Be({...t,data:n},{stateController:this}),t.simpleDataSliceStart=n.length,t.dataBounds=De(t.inDataSpace),"bar"===t.rendering&&(t.dataBounds=ze(t.dataBounds,{extendXForNBars:t.inDataSpace.length,expandYWith:t.expandYWith})),e.push(t.dataBounds),t.expandYWith&&this._expandYWith.push(t.expandYWith)}this._unsubscribeFromStaleSeries(),this._dataBounds=Te(e),this._recalculateSelection({disableSwap:!0});for(let e of this._series)e.hidden||(e.selectedBounds=De(e.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.hasAreaBottom&&(e.selectedBoundsAreaTop=e.selectedBounds,e.selectedBoundsAreaBottom=De(e.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),e.selectedBounds=Te([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,i=new Set;for(let t of e)i.add(t);for(let i of e){if(n.add(i.axis),!i.inDataSpace)throw new Error("inDataSpace must be present for onDataAdd to be called");const e=this._seriesToSimpleData(i);let r;i.inDataSpace.length&&(r=i.inDataSpace[i.inDataSpace.length-1][1]);const o=Be(i,{data:e.slice(i.simpleDataSliceStart||0),valueXStart:i.inDataSpace.length,prevY:r,stateController:this});if(t.set(i,o),i.simpleDataSliceStart=e.length,o.length<32)i.inDataSpace.push(...o);else for(let e of o)i.inDataSpace.push(e);let a=De(o);"bar"===i.rendering&&(a=ze(a,{extendXForNBars:i.inDataSpace.length,expandYWith:i.expandYWith})),i.dataBounds=Te([i.dataBounds,a]),this._dataBounds=Te([this._dataBounds,a]),i.newPointCount=o.length,i.newDataBounds=a}const r=this._selection;this._recalculateSelection();for(let n of e){if(!n.inSelectedSpace.data.length){n.selectedBounds=De(n.inSelectedSpace.data);continue}const e=n.inSelectedSpace.data[0][0],i=n.inSelectedSpace.data[n.inSelectedSpace.data.length-1][0];if(!(r.minX>=e&&r.maxX<=i)||100!==this._percentile){n.selectedBounds=De(n.inSelectedSpace.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.hasAreaBottom&&(n.selectedBoundsAreaTop=n.selectedBounds,n.selectedBoundsAreaBottom=De(n.inSelectedSpaceAreaBottom.data,{percentile:this._percentile,percentileAsymmetry:this._percentileAsymmetry}),n.selectedBounds=Te([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=Te([n.selectedBounds,De(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 i of e.series)t.push(i.selectedBounds),i.expandYWith&&n.push(...i.expandYWith),"bar"===i.rendering&&n.push(i.selectedBounds.minY,i.selectedBounds.maxY);e.selectedDataBounds=Te(t),e.targetBounds=e.currentBounds=ze(e.selectedDataBounds,{expandYWith:n})}this.deferredPriorityEmit("axis_bounds_changed",this._axes.map((({currentBounds:e})=>e)))}_recalculateSelection({disableSwap:e=!1}={}){this._globalBounds=ze(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=Xe({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=Xe({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;if(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){const t={...this._globalBounds,minY:void 0!==this._globalBounds.unscaledMinY?this._globalBounds.unscaledMinY:this._globalBounds.minY,maxY:void 0!==this._globalBounds.unscaledMaxY?this._globalBounds.unscaledMaxY:this._globalBounds.maxY};this.rangeGraphRenderer.render(e,e.inRenderSpaceRangeGraph,{shadowColor:"transparent",shadowBlur:0,width:1,showIndividualPoints:!1,bounds:t,globalBounds:t,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:i}=e.axis,r=Math.ceil(this.primaryRenderer.sizing.renderWidth/X),o=Math.ceil(this.primaryRenderer.sizing.renderHeight),a={minX:n.minX,maxX:n.maxX,renderWidth:r,dataChanged:t};e.inCondensedSelectedSpacePrimary=$e({data:e.inSelectedSpace.data,swap:e.inCondensedSelectedSpacePrimary,...a});const s={minX:n.minX,maxX:n.maxX,minY:n.minY,maxY:n.maxY,renderWidth:r,renderHeight:o,scale:i,dataChanged:t};e.inRenderSpacePrimary=Me({data:e.inCondensedSelectedSpacePrimary.data,swap:e.inRenderSpacePrimary,...s}),e.inBackgroundSpacePrimary=We({data:e.inCondensedSelectedSpacePrimary.data,background:e.background,swap:e.inBackgroundSpacePrimary,minX:n.minX,maxX:n.maxX}),e.hasAreaBottom&&(e.inCondensedSelectedSpacePrimaryAreaBottom=$e({data:e.inSelectedSpaceAreaBottom.data,swap:e.inCondensedSelectedSpacePrimaryAreaBottom,...a}),e.inRenderSpacePrimaryAreaBottom=Me({data:e.inCondensedSelectedSpacePrimaryAreaBottom.data,swap:e.inRenderSpacePrimaryAreaBottom,...s}),e.inBackgroundSpacePrimaryAreaBottom=We({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,i=this._globalBounds,r={...i,minY:void 0!==i.unscaledMinY?i.unscaledMinY:i.minY,maxY:void 0!==i.unscaledMaxY?i.unscaledMaxY:i.maxY},o=Math.ceil(this.rangeGraphRenderer.sizing.renderWidth/X),a=Math.ceil(this.rangeGraphRenderer.sizing.renderHeight),s={minX:i.minX,maxX:i.maxX,ignoreDiscontinuities:e.ignoreDiscontinuities,square:e.square};e.inSelectedSpaceRangeGraph=Xe({data:e.hasAreaBottom?e.inDataSpace.filter(((e,t)=>t%2==1)):e.inDataSpace,swap:e.inSelectedSpaceRangeGraph,...s});const l={minX:i.minX,maxX:i.maxX,renderWidth:o,dataChanged:t};e.inCondensedSelectedSpaceRangeGraph=$e({data:e.inSelectedSpaceRangeGraph.data,swap:e.inCondensedSelectedSpaceRangeGraph});const h={minX:r.minX,maxX:r.maxX,minY:r.minY,maxY:r.maxY,renderWidth:o,renderHeight:a,scale:n,dataChanged:t};e.inRenderSpaceRangeGraph=Me({data:e.inCondensedSelectedSpaceRangeGraph.data,swap:e.inRenderSpaceRangeGraph,...h}),e.hasAreaBottom&&(e.inSelectedSpaceRangeGraphAreaBottom=Xe({data:e.inDataSpace.filter(((e,t)=>t%2==0)),swap:e.inSelectedSpaceRangeGraphAreaBottom,...s}),e.inCondensedSelectedSpaceRangeGraphAreaBottom=$e({data:e.inSelectedSpaceRangeGraphAreaBottom.data,swap:e.inCondensedSelectedSpaceRangeGraphAreaBottom,...l}),e.inRenderSpaceRangeGraphAreaBottom=Me({data:e.inCondensedSelectedSpaceRangeGraphAreaBottom.data,swap:e.inRenderSpaceRangeGraphAreaBottom,...h}))}_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 i=e.axis,r=i.series.indexOf(e);if(-1===r)throw new Error("Series not present in axis");i.series.splice(r,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,i]=e.axis.split("-");t=function({axes:e,side:t,number:n}){let i;n=n&&parseInt(n)||0;let r=0;for(let o of e)if(o.side===t){if(r===n){i=o;break}r++}return i}({axes:this._axes,side:n,number:i}),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 i=this._observablesToSeries.get(n);i&&(i.delete(e),0===i.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,i]of Object.entries(n))t[e]=(t[e]||0)+i;for(let[n,i]of Object.entries(t))t[n]=i/e.length;return t}(this._timingBuffer)}get exportedAxes(){const e=new Map;let t=0,n=0;for(let i of this._axes){let r;"left"===i.side?(r=`left-${t}`,t++):(r=`right-${n}`,n++);for(let t of i.series)e.set(t,r)}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:i}of e)t[n]=i,this._boundsCalculator===this._customBoundsSelectors[n]&&this._boundsCalculator!==i&&(this.boundCalculator=i);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:i},{elementWidth:r,elementHeight:o,selection:a,axes:s}){if(Math.abs(t-e)<1||Math.abs(i-n)<1)return;const l=e/r*(a.maxX-a.minX)+a.minX,h=t/r*(a.maxX-a.minX)+a.minX,c=[];for(let{currentBounds:e,scale:t}of s){const r=Pe({...e,scale:t});let a=(1-n/o)*(r.maxY-r.minY)+r.minY,s=(1-i/o)*(r.maxY-r.minY)+r.minY;"log"===t&&(s=Math.pow(10,s),a=Math.pow(10,a)),c.push({minX:l,maxX:h,minY:s,maxY:a})}return()=>({minX:l,maxX:h,byAxis:c})}(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:i,mouseY:r,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 r)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 r)return;const l=i||e-s.boundingRect.left,h=r||t-s.boundingRect.top;this._tooltipState.mousePresent&&l===this._tooltipState.mouseX&&h===this._tooltipState.mouseY||(this._tooltipsChanged=!0,this._tooltipState.mousePresent=!0,this._tooltipState.mouseX=l,this._tooltipState.mouseY=h,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 i of this._series){const r=i.axis.currentBounds,o=(e-t.left)/n.elementWidth*(r.maxX-r.minX)+r.minX;this.emit("series_click",{x:o,series:i})}}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.ignoreYDistanceCheck&&n.distance>20)return t;const i=t.findIndex((e=>e.x===n.x&&e.y===n.y));return-1===i?[...t,n]:t.filter(((e,t)=>t!==i))}({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 i=t&&0!==t,r=n===this._grapherID;i&&r?(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 i=this._enumMap[e];if("number"==typeof i)return i;const r=Object.keys(this._enumMap).length;return this._enumMap[e]=r,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),r}triggerResize(){this._mustResize=!0,this._markDirty()}}function He(t,n,i=null,r=[]){if("function"==typeof i){const e=i;i=()=>e}const[o,a]=(0,e.useState)(i);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)}}),[...r,a,t]),o}function qe(e){return He(e,"primary_size_change",e.primaryRenderer?e.primaryRenderer.sizing:{elementWidth:0,elementHeight:0,renderWidth:0,renderHeight:0})}function je(e){return He(e,"axes_changed",e.axes)}function Ve(e){return He(e,"series_changed",e.series)}function Ke(e){return He(e,"highlighted_series_changed",e.highlightedSeries)}function Je(e){return Qe(e).length}function Ze(e){return et(e).length}function Qe(e){return He(e,"right_axes_changed",e.rightAxes)}function et(e){return He(e,"left_axes_changed",e.leftAxes)}function tt(e){return He(e,"axis_bounds_changed",e.axes.map((({currentBounds:e})=>e)))}function nt(e){return He(e,"autoscale_y_changed",e.autoscaleY)}function it(e){return He(e,"dragging_y_changed",e.draggingY)}function rt(e){return He(e,"showing_options_changed",e.showingOptions)}function ot(e){return He(e,"max_precision_changed",e.maxPrecision)}function at(e){return He(e,"showing_sidebar_changed",e.showingSidebar)}function st(e){return He(e,"showing_annotations_changed",e.showingAnnotations)}function lt(e){return He(e,"primary_size_change",e.sizing)}function ht(e){return He(e,"theme_change",e.theme)}class ct extends t().PureComponent{render(){const{bodyHeight:e,annotationState:n}=this.props,{annotations:i,elementWidth:r}=n,o=i.filter((e=>void 0!==e.pixelStartX&&void 0!==e.pixelWidth));return t().createElement("div",{className:"grapher-annotations"},o.map((({pixelStartX:n,pixelWidth:i,content:o,isRange:a,lineOnly:s},l)=>{const h={left:n};if(a)return t().createElement("div",{key:`range-${l}`,className:"grapher-annotation grapher-annotation-range",style:h},t().createElement("div",{className:"annotation-range-marker",style:{width:i,height:e}}));{const a=s?i:Math.max(i,1),c={};if(o){c.top=21*l,c.position="absolute";const e=5.5*(o||"").length;r>0&&r-n<e+10?(c.left=-e-5,c.textAlign="right"):c.left=a+5}return t().createElement("div",{key:`point-${l}`,className:"grapher-annotation grapher-annotation-point",style:h},t().createElement("div",{className:"annotation-marker",style:{width:a,height:e}}),o&&!s&&t().createElement("div",{className:"annotation-text",style:c},o))}})))}}ct.propTypes={annotationState:i().shape({annotations:i().arrayOf(i().shape({pixelStartX:i().number,pixelWidth:i().number,content:i().string,isRange:i().bool,lineOnly:i().bool})).isRequired,elementWidth:i().number.isRequired}),bodyHeight:i().number};const gt=t().memo(At);function At({stateController:e,draggablePoints:n,onPointDrag:i,onDraggablePointsDoubleClick:r}){const o=tt(e)[0],a=lt(e);if(!a)return null;const s=r&&(e=>{const t=(e.clientX-a.boundingRect.left)/a.elementWidth,n=1-(e.clientY-a.boundingRect.top)/a.elementHeight;r(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 r=(e.x-o.minX)/(o.maxX-o.minX),s=1-(e.y-o.minY)/(o.maxY-o.minY);if(r<0||r>1||s<0||s>1)return null;const l=r*a.elementWidth,h=s*a.elementHeight,c=e.radius||5,g=e.fillColor||v.LINE_COLORS[0],A=e.strokeColor||"white",d=e.strokeWidth||1,p=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:h,r:c,fill:g,stroke:A,strokeWidth:d,onMouseDown:t=>{if(t.stopPropagation(),!i)return;const r=l-t.clientX,s=h-t.clientY,c=t=>{const l=(t.clientX+r)/a.elementWidth,h=1-(t.clientY+s)/a.elementHeight;i({index:n,point:e,x:l*(o.maxX-o.minX)+o.minX,y:h*(o.maxY-o.minY)+o.minY},t)},g=()=>{window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",g)};window.addEventListener("mousemove",c),window.addEventListener("mouseup",g)},onClick:p,onDoubleClick:u})}))))}At.propTypes={stateController:i().instanceOf(Ue).isRequired,draggablePoints:_.DraggablePoints.isRequired,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func};const dt=t().memo(pt);function pt({stateController:e,verticalLines:n,isRangeGraph:i,bounds:r,elementWidth:o,elementHeight:a}){r=r||tt(e)[0];const s=lt(e);if(!s)return null;const l=n.filter((e=>!(i&&!e.onRangeGraph||e.onRangeGraphOnly&&!i)));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)=>{i&&"object"==typeof e.onRangeGraph&&(e={...e,...e.onRangeGraph});const l=(e.x-r.minX)/(r.maxX-r.minX);if(l<0||l>1)return null;const h=l*(o||s.elementWidth);if("number"==typeof e.minPixelX&&h<e.minPixelX)return null;if("number"==typeof e.maxPixelX&&h>e.maxPixelX)return null;const c={stroke:e.color,strokeWidth:e.width,...e.style||{}},g={fill:e.color,...e.markerStyle||{}},A={fontSize:"12px",fill:e.color,stroke:"none",textAnchor:"middle",dominantBaseline:"hanging",...e.textStyle||{}};let d=0;"number"==typeof e.lineTop?d=e.lineTop:e.text&&(d=18);let p=5;return"number"==typeof e.textTop&&(p=e.textTop),t().createElement(t().Fragment,{key:n},t().createElement("line",{x1:h,y1:d,x2:h,y2:a||s.elementHeight,style:c}),e.markTop&&t().createElement("polygon",{points:`${h-3},0 ${h+3},0 ${h},3`,style:g}),e.text&&t().createElement("text",{x:h,y:p,style:A},e.text))}))))}function ut(){return ut=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ut.apply(this,arguments)}pt.propTypes={stateController:i().instanceOf(Ue).isRequired,verticalLines:_.VerticalLines.isRequired,isRangeGraph:i().bool,bounds:i().object,elementWidth:i().number,elementHeight:i().number};const mt=t().memo(ft);function ft({stateController:n,webgl:i,bodyHeight:r,boundsSelectionEnabled:o,showTooltips:a,showContextMenu:s=!0,tooltipOptions:l,checkIntersection:h,draggablePoints:c,onPointDrag:g,onDraggablePointsDoubleClick:A,verticalLines:d,clockStyle:p,timeZone:u,onPointClick:m}){const f=(0,e.useCallback)((e=>{if(n.primaryRenderer&&n.primaryRenderer.dispose(),!e)return;const t=new he({stateController:n,canvasElement:e,webgl:i,checkIntersection:h});n.primaryRenderer=t,t.resize()}),[i,n]),[C,x]=(0,e.useState)({showing:!1,start:{},style:{}}),b=nt(n),y=je(n).length,_=function(e){return He(e,"tooltip_state_changed",e.tooltipState)}(n),B=ot(n),v=st(n),w=function(e){return He(e,"annotations_changed",e.annotationState)}(n),E=function(e){return He(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})},i=e=>e.touches?.[0]||e.changedTouches?.[0],r=e=>{if(!a)return;const t=i(e);t&&(n.setTooltipMousePosition({clientX:t.clientX,clientY:t.clientY}),e.cancelable&&e.target.closest(".graph-body")&&e.preventDefault())},o=e=>{if(!a)return;const t=i(e);t&&(n.setTooltipMousePosition({clientX:t.clientX,clientY:t.clientY}),e.cancelable&&e.target.closest(".graph-body")&&e.preventDefault())},s=()=>{n.showOnlySavedTooltips()};return window.addEventListener("scroll",e,{passive:!0}),window.addEventListener("mousemove",t,{passive:!0}),window.addEventListener("touchstart",r,{passive:!1}),window.addEventListener("touchmove",o,{passive:!1}),window.addEventListener("touchend",s,{passive:!0}),window.addEventListener("touchcancel",s,{passive:!0}),()=>{window.removeEventListener("scroll",e),window.removeEventListener("mousemove",t),window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",o),window.removeEventListener("touchend",s),window.removeEventListener("touchcancel",s)}}),[]),t().createElement("div",{className:"graph-body graph-body-primary",onMouseMove:e=>{if(C.showing){const t=n.primaryRenderer.boundingRect,i=e.clientX-t.left,r=e.clientY-t.top;x((({start:e})=>({showing:!0,start:e,style:{left:Math.min(i,e.x),top:b?0:Math.min(r,e.y),width:Math.abs(i-e.x),height:b?t.height:Math.abs(r-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 i=n.primaryRenderer.boundingRect,r={x:e.clientX-i.left,y:e.clientY-i.top};x({showing:!0,start:r,style:{left:r.x,top:r.y,width:0,height:0}});const a=e=>{if(window.removeEventListener("mouseup",a),!o)return;const t=e.clientX-i.left,s=e.clientY-i.top;n.setBoundsFromSelection({minPixelX:Math.min(t,r.x),maxPixelX:Math.max(t,r.x),minPixelY:Math.min(s,r.y),maxPixelY:Math.max(s,r.y)}),x({showing:!1,style:{}})};window.addEventListener("mouseup",a)},onClick:e=>{if(n.registerClick({clientX:e.clientX,clientY:e.clientY}),l&&l.savingDisabled)n.clearSavedTooltips();else if(e.target.closest(".grapher-context-menu")||n.setContextMenuMousePosition({showing:!1}),window.getSelection&&"Range"===window.getSelection().type||n.toggleTooltipSaved(),m){const t={},i=n.series;for(let e=0;e<i.length;e++){const r=i[e],o=n.sizing,a=r.axis.currentBounds,s=n.tooltipState.mouseX/o.elementWidth*(a.maxX-a.minX)+a.minX;let l=r.inDataSpace;r.ignoreDiscontinuities&&(l=l.filter((e=>"number"==typeof e[1])));const h=l[Re(l,s,{returnIndex:!0})];t[r.name]=h[0]}m(e,t)}},onDoubleClick:()=>{n.clearSavedTooltips()},onContextMenu:e=>{e.preventDefault(),!1!==s&&n.setContextMenuMousePosition({clientX:e.clientX,clientY:e.clientY,showing:!0})},style:"number"==typeof r?{height:r}:void 0},t().createElement("canvas",{ref:f}),a&&t().createElement(ye,ut({axisCount:y,maxPrecision:B,clockStyle:p,timeZone:u},l||{},_)),E.showing&&t().createElement(_e,{contextMenu:E}),v&&t().createElement(ct,{bodyHeight:r||n?.primaryRenderer?.boundingRect?.height,annotationState:w}),d&&t().createElement(dt,{stateController:n,verticalLines:d}),c&&t().createElement(gt,{stateController:n,draggablePoints:c,onPointDrag:g,onDraggablePointsDoubleClick:A}),o&&C.showing&&t().createElement("div",{className:"bounds-selection",style:C.style}))}ft.propTypes={stateController:i().instanceOf(Ue).isRequired,webgl:i().bool,checkIntersection:i().bool,bodyHeight:i().number,boundsSelectionEnabled:i().bool.isRequired,showTooltips:i().bool.isRequired,tooltipOptions:_.TooltipOptions,verticalLines:_.VerticalLines,draggablePoints:_.DraggablePoints,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func,onPointClick:i().func,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string};var Ct=r(72),xt=r.n(Ct),bt=r(825),yt=r.n(bt),_t=r(659),Bt=r.n(_t),vt=r(56),wt=r.n(vt),Et=r(540),kt=r.n(Et),St=r(113),Dt=r.n(St),Tt=r(557),zt={};function Rt(e,{scale:t,min:n,max:i,inverted:r,totalSize:o,precision:a,formatter:s,dates:l,justTime:h,justDate:c,formatOptions:g={}},A={}){let d=e;"log"===t&&(d=10**e);let p=(e-n)/(i-n);r&&(p=1-p);let u=p*o;return isNaN(u)&&(u=0),{pixelValue:u,trueValue:d,label:s(d,{...g,precision:a,log:"log"===t,dates:l,justTime:h,justDate:c}),size:"major",...A}}function Xt(e,{scale:t,min:n,max:i,inverted:r,totalSize:o,precision:a,formatter:s,dates:l,justTime:h,justDate:c,formatOptions:g={}},A={}){let d=e/o;r&&(d=1-d);let p=d*(i-n)+n;return"log"===t&&(p=Math.pow(10,p)),{pixelValue:e,trueValue:p,label:s(p,{...g,precision:a,log:"log"===t,dates:l,justTime:h,justDate:c}),size:"major",...A}}function Yt(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 i=1/0,r=1;for(let t=0;t<n.length;t++){const o=Math.abs(n[t]-e);o<i&&(r=n[t],i=o)}return r}function Pt(e,t,n){const i=e/t;return i<6e4&&(!n||"second"===n)?{amount:Yt(i/1e3,60),unit:"s"}:i<36e5&&(!n||"minute"===n)?{amount:Yt(i/6e4,60),unit:"m"}:i<864e5&&(!n||"hour"===n)?{amount:Yt(i/36e5,24),unit:"h"}:"day"===n||i<2592e6&&!n?{amount:Yt(i/864e5,1),unit:"d"}:i>2592e6&&(!n||"month"===n)?{amount:Yt(i/30*24*60*60*1e3,1),unit:"month"}:"year"===n?{amount:Yt(i/365*24*60*60*1e3,1),unit:"year"}:{unit:"m",amount:60}}function Mt(e){return e.dates?function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g}){const A=i+2*r,d=[],p={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:h,formatOptions:g,dates:!0},{amount:u,unit:m}=Pt(t-e,o/A,g.unitOverride),f="month"===m;a||d.push(Xt(0,{...p,justDate:f},{position:"first"}));let C=new Date(e);"h"===m?C.setMinutes(0,0,0):"m"===m?C.setSeconds(0,0):"s"===m?C.setMilliseconds(0):"month"===m?(C=pe(C,g.timeZone),C.setDate(1)):"d"===m&&(C=pe(C,g.timeZone));let x=h(C,{...g,...p,justDate:!0});for(;C<t;){let e=864e5;"h"===m?e=60*(u-C.getHours()%u)*60*1e3:"m"===m?e=60*(u-C.getMinutes()%u)*1e3:"s"===m?e=1e3*(u-C.getSeconds()%u):"month"===m?(e=0,C=11===C.getMonth()?new Date(C.getFullYear()+1,0,1):new Date(C.getFullYear(),C.getMonth()+1,1)):"year"===m&&(C=new Date(C.getFullYear()+1,0,0)),C=new Date(C.valueOf()+e);const t=h(C,{...g,...p,justDate:!0})===x,n=Rt(C,{...p,justTime:t,justDate:f});d.length&&n.pixelValue-d[d.length-1].pixelValue<i+(r||0)||n.pixelValue+i/2>=o||(d.push(n),x=h(C,{...g,...p,justDate:!0}))}const b=x===h(t,{...g,...p,justDate:!0});return!s&&d[d.length-1].pixelValue+i<o&&d.push(Xt(o,{...p,justTime:b,justDate:f},{position:"last"})),d.filter((({pixelValue:e})=>e<=o&&e>=0))}(e):function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,scale:a="linear",formatter:s,inverted:l=!1,formatOptions:h}){const c=i+2*r,g=[],A={scale:a,min:e,max:t,inverted:l,totalSize:o,precision:n,formatter:s,formatOptions:h,dates:!1},d=function(e,t){const n=e/t,i=1-Math.log10(Math.abs(n)),r=i-Math.floor(i)>.5?2:1,o=10**Math.floor(i)*r;return Math.round(n*o)/o}(t-e,Math.floor((o-2*i)/c));if(d>0)for(let n=function(e,t){return Math.round(e/t)*t}(e,d);n<t;n+=d)g.push(Rt(n,A));return g.length&&l&&g[g.length-1].pixelValue>r&&g.push(Xt(i/2,A)),g.filter((({pixelValue:e})=>e<=o&&e>=0))}(e)}zt.styleTagTransform=Dt(),zt.setAttributes=wt(),zt.insert=Bt().bind(null,"head"),zt.domAPI=yt(),zt.insertStyleElement=kt(),xt()(Tt.A,zt),Tt.A&&Tt.A.locals&&Tt.A.locals;const Ft=t().memo(Lt);function Lt({showAxes:e,showGrid:n,stateController:i,bigLabels:r,xTickUnit:o,clockStyle:a,timeZone:s,integersOnly:l,formatXAxisLabel:h}){if(!e&&!n)return null;const{elementWidth:c,elementHeight:g}=qe(i),{minX:A,maxX:d,dates:p}=function(e){return He(e,"selection_changed",e.selection)}(i),u=function(e){return He(e,"has_x_enum_change",e.hasXEnum)}(i),m=function(e){return He(e,"enum_map_change",e.enumMap)}(i);let f;f=p?function(e,t){e=new Date(e);const n=(t=new Date(t)).valueOf()-e.valueOf();return n<3e3?"ms":n<6e5?"s":"m"}(A,d):ce(d-A);let C=null;if(u){C={};for(const[e,t]of Object.entries(m))C[t]=e}const x={unitOverride:o,clockStyle:a,timeZone:s,integersOnly:l,inverseEnumMap:C,formatter:h},b=ue(A,{...x,dates:p,precision:f}).toString(),y=ue(d,{...x,dates:p,precision:f}).toString();let _=Math.max(b.length,y.length);r&&(_*=2);let B=null,v=null,w=null;p?(B=function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g={}}){const A=i+2*r,d=[],p={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:h,formatOptions:g,dates:!0},u=Math.floor(o/A);let m,f;const C=(t-e)/36e5;C<=8*u?(m="h",f=Math.max(1,Math.ceil(C/u)),f<=6||(f=f<=12?12:f<=24?24:24*Math.ceil(f/24))):(m="h",f=24),a||d.push(Xt(0,{...p,justTime:!0},{position:"first"}));let x=new Date(e);if("h"===m)if(24===f)x=pe(x,g.timeZone);else{const e=g.timeZone?de(g.timeZone,x):0,t=de("local",x);if(null!==e&&null!==t){const n=new Date(x.valueOf()+e-t);if(n.setMinutes(0,0,0),12===f){const e=n.getHours()<12?0:12;n.setHours(e)}else{const e=n.getHours(),t=Math.floor(e/f)*f;n.setHours(t)}x=new Date(n.valueOf()-e+t)}else if(x.setMinutes(0,0,0),12===f){const e=x.getHours()<12?0:12;x.setHours(e)}else{const e=x.getHours(),t=Math.floor(e/f)*f;x.setHours(t)}}else if("m"===m){x.setSeconds(0,0);const e=x.getMinutes(),t=Math.floor(e/f)*f;x.setMinutes(t)}else if("s"===m){x.setMilliseconds(0);const e=x.getSeconds(),t=Math.floor(e/f)*f;x.setSeconds(t)}for(;x<e;)"h"===m?x=new Date(x.valueOf()+60*f*60*1e3):"m"===m?x=new Date(x.valueOf()+60*f*1e3):"s"===m&&(x=new Date(x.valueOf()+1e3*f));for(;x<t;){const e=Rt(x,{...p,justTime:!0}),t=o-(i+r);if(d.length&&e.pixelValue-d[d.length-1].pixelValue<i+r);else{if(!(e.pixelValue+i<t))break;d.push(e)}if("h"===m)x=new Date(x.valueOf()+60*f*60*1e3);else if("m"===m)x=new Date(x.valueOf()+60*f*1e3);else{if("s"!==m)break;x=new Date(x.valueOf()+1e3*f)}}if(!s){const e=Rt(t,{...p,justTime:!0},{position:"last"});0===d.length||e.pixelValue-d[d.length-1].pixelValue>=i+r/2?d.push(e):d[d.length-1]=e}return d.filter((({pixelValue:e})=>e<=o&&e>=0))}({min:A,max:d,totalSize:c,precision:f,expectedLabelSize:_,labelPadding:24,formatter:h||ue,formatOptions:x}),v=function({min:e,max:t,precision:n,expectedLabelSize:i,labelPadding:r,totalSize:o,skipFirst:a=!1,skipLast:s=!1,scale:l="linear",formatter:h,inverted:c=!1,formatOptions:g={}}){const A=i+2*r,d=[],p=new Date(e).getFullYear()!==new Date(t).getFullYear(),u={scale:l,min:e,max:t,inverted:c,totalSize:o,precision:n,formatter:(e,t)=>{const n=new Date(e),i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getMonth()],r=n.getDate(),o=n.getFullYear();return p?`${i} ${r} ${o}`:`${i} ${r}`},formatOptions:g,dates:!0},m=t-e,f=m/36e5;let{amount:C,unit:x}=Pt(m,o/A,g.unitOverride);if(("h"===x||"m"===x||"s"===x)&&f>=48)x="d",C=Math.max(1,Math.ceil(f/24/Math.floor(o/A)));else if(("h"===x||"m"===x||"s"===x)&&f<48){const n=Rt(e,{...u,justDate:!0},{position:"first"}),a=Rt(t,{...u,justDate:!0},{position:"last"}),s=[n];return a.pixelValue-n.pixelValue>=i+r&&s.push(a),s.filter((({pixelValue:e})=>e<=o&&e>=0))}a||d.push(Xt(0,{...u,justDate:!0},{position:"first"}));let b=new Date(e);for("month"===x?(b=pe(b,g.timeZone),b.setDate(1)):"d"===x&&(b=pe(b,g.timeZone));b<t;){let e=864e5;"month"===x?(e=0,b=11===b.getMonth()?new Date(b.getFullYear()+1,0,1):new Date(b.getFullYear(),b.getMonth()+1,1)):"year"===x?(b=new Date(b.getFullYear()+1,0,1),e=0):"d"===x&&(e=24*C*60*60*1e3),e>0&&(b=new Date(b.valueOf()+e));const t=Rt(b,{...u,justDate:!0}),n=o-(i+r);if(!(d.length&&t.pixelValue-d[d.length-1].pixelValue<i+(r||0))){if(!(t.pixelValue+i<n))break;d.push(t)}}if(!s){const e=Rt(t,{...u,justDate:!0},{position:"last"});0===d.length||e.pixelValue-d[d.length-1].pixelValue>=i+r/2?d.push(e):d[d.length-1]=e}return 0===d.length&&f>=48&&d.push(Xt(0,{...u,justDate:!0},{position:"first"})),d.filter((({pixelValue:e})=>e<=o&&e>=0))}({min:A,max:d,totalSize:c,precision:f,expectedLabelSize:2*_,labelPadding:45,formatter:h||ue,formatOptions:x})):w=Mt({min:A,max:d,totalSize:c,precision:f,dates:p,formatter:h||ue,expectedLabelSize:_,labelPadding:30,formatOptions:x});const E=p?30:20;return t().createElement("svg",{className:"axis x-axis"+(p?" x-axis-dual":""),style:e?void 0:{marginBottom:-20}},e&&t().createElement("path",{d:`M-1,0 H${c}`,className:"axis-line"}),p&&B&&B.map((({pixelValue:i,label:o,size:a,position:s,skipGrid:l},h)=>{const c=1===B.length;if(isNaN(i))return null;const A=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return r&&A.push("axis-item-big-labels"),t().createElement("g",{key:`time-${h}`,className:A.join(" ")},e&&t().createElement("path",{d:`M${i},1 v12`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${i},0 v-${g}`}),e&&t().createElement("text",{x:"last"!==s||c?i+3:i-3,y:12,textAnchor:"last"!==s||c?"start":"end",className:"x-axis-text x-axis-time-text"},o))})),p&&v&&v.map((({pixelValue:n,label:i,size:o,position:a,trueValue:l},h)=>{if(isNaN(n))return null;const c=["axis-item",`axis-item-${o}`,`axis-item-${a}`];let g;return r&&c.push("axis-item-big-labels"),s&&0===h&&(g="utc"===s.toLowerCase()?"UTC":s),t().createElement("g",{key:`date-${h}`,className:c.join(" ")},e&&t().createElement("text",{x:"last"===a?n-3:n+3,y:25,textAnchor:"last"===a?"end":"start",className:"x-axis-text x-axis-date-text"},t().createElement("tspan",{className:"x-axis-date-label"},i),g&&t().createElement("tspan",{className:"x-axis-timezone-label"}," ","(",g,")")))})),!p&&w&&w.map((({pixelValue:i,label:o,size:a,position:s,skipGrid:l},h)=>{if(isNaN(i))return null;const c=["axis-item",`axis-item-${a}`,`axis-item-${s}`];return r&&c.push("axis-item-big-labels"),t().createElement("g",{key:h,className:c.join(" ")},e&&t().createElement("path",{d:`M${i},1 v12`,className:"axis-tick"}),n&&!l&&t().createElement("path",{d:`M${i},0 v-${g}`}),e&&t().createElement("text",{x:"last"===s?i-3:i+3,y:E-5,textAnchor:"last"===s?"end":"start",className:"x-axis-text"},o))})))}Lt.propTypes={stateController:i().instanceOf(Ue).isRequired,showAxes:i().bool.isRequired,showGrid:i().bool.isRequired,bigLabels:i().bool,xTickUnit:i().oneOf(["year"]),clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,integersOnly:i().bool,formatXAxisLabel:i().func};const Ot=t().memo(It);function It({stateController:n,showAxes:i,showGrid:r,showSeriesKey:o,axis:a,sideIndex:s,bodyHeight:l,theme:h,grapherID:c,dragPositionYOffset:g=0,bigLabels:A,showAxisColors:d}){if(!i&&!r)return null;const{side:p,scale:u,axisIndex:m,label:f}=je(n)[a.axisIndex],{elementWidth:C,elementHeight:x}=qe(n);let{minY:b,maxY:y}=tt(n)[m];const _=Pe({minY:b,maxY:y,scale:u});b=_.minY,y=_.maxY;const B=Mt({min:b,max:y,totalSize:x,scale:u,precision:ce(y-b),formatter:me,inverted:!0,expectedLabelSize:A?20:10,labelPadding:30});let w=5;"log"===u&&(w=2);const E=Ke(n),[k,S]=(0,e.useState)(null),[D,T]=(0,e.useState)({dx:0,dy:0}),z="day"===h?1:.5,R="day"===h?.8:.3;return t().createElement("svg",{className:`axis y-axis y-axis-${p}`,"data-axis-index":m,"data-grapher-id":c,style:{width:fe,marginLeft:i?void 0:-32,height:"number"==typeof l?l:void 0}},i&&d&&a.series.map(((e,n)=>{const i=x/a.series.length;return t().createElement("rect",{x:"left"===p?0:2,y:n*i,width:30,height:i,key:e.index,fill:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),opacity:e.index===E?z:R,"data-element-height":x,"data-series-length":a.series.length})})),i&&t().createElement("path",{d:`M${"left"===p?31:1},3 V${x}`,className:"axis-line"}),B.map((({pixelValue:e,label:n,size:o,skipGrid:a},l)=>{const h="left"===p?(s+1)*fe:-s*fe,c=("left"===p?1:-1)*(C+1),g=["axis-item",`axis-item-${o}`];return A&&g.push("axis-item-big-labels"),t().createElement("g",{key:l,className:g.join(" ")},r&&!a&&t().createElement("path",{d:`M${h},${e} h${c}`}),r&&!a&&s>0&&t().createElement("path",{d:`M${"left"===p?fe:0},${e} h${("left"===p?1:-1)*s*fe}`,strokeDasharray:"2,2"}),i&&t().createElement("text",{x:"left"===p?fe-w:w,y:e},n))})),o&&i&&a.series.map(((e,i)=>{let r=18+14*(i%2-1),o=-14*Math.ceil(a.series.length/2)+14*Math.floor(i/2);return e===k&&(r+=D.dx,o+=D.dy-g),t().createElement("rect",{className:"series-color-box",onMouseDown:t=>((e,t)=>{let i=e.clientX,r=e.clientY;"left"===p&&(i+=fe),"right"===p&&(i-=fe),T({dx:0,dy:0});const o=e=>{T({dx:e.clientX-i,dy:e.clientY-r})},a=e=>{window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",a);let i=e.target;for(;i&&!(i.dataset||{}).axisIndex;)i=i.parentNode;S(null),n.finalizeDrag(t,i&&(i.dataset||{}).axisIndex,i&&(i.dataset||{}).grapherId)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",a),S(t),n.markDragStart()})(t,e),x:r,y:o,width:10,height:10,key:e.index,fill:(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex),onMouseOver:()=>n.setHighlightedSeries(e.index),onMouseOut:()=>n.setHighlightedSeries(null)})})),i&&!!f&&t().createElement("text",{className:"y-axis-label"+(A?" y-axis-big-label":""),x:"left"===p?10:22,y:x/2+("left"===p?-1:1)*(m+1)*(A?20:0),transform:`rotate(${"left"===p?-90:90}, ${"left"===p?10:22}, ${x/2})`},f))}It.propTypes={stateController:i().instanceOf(Ue),showAxes:i().bool.isRequired,showGrid:i().bool.isRequired,showAxisColors:i().bool.isRequired,showSeriesKey:i().bool.isRequired,axis:_.Axis.isRequired,sideIndex:i().number.isRequired,bodyHeight:i().number,theme:i().string,grapherID:i().string,dragPositionYOffset:i().number,bigLabels:i().bool};const Gt=t().memo($t);function $t({selected:e,disabled:n,className:i,onClick:r,children:o,description:a}){const s=["range-button"];return e&&s.push("range-button-selected"),n&&s.push("range-button-disabled"),i&&s.push(i),a&&s.push("option-tooltip"),t().createElement("div",{className:s.join(" "),onClick:r&&(e=>n||r(e))},o,a&&t().createElement("div",{className:"option-tooltip-text"},a))}$t.propTypes={selected:i().bool.isRequired,onClick:i().func,children:i().node.isRequired,disabled:i().bool,className:i().string,description:i().string};const Nt=t().memo(Wt);function Wt({stateController:e,currentBoundCalculator:n,boundCalculator:i,children:r,disabled:o}){return t().createElement(Gt,{selected:n===i,onClick:()=>e.boundCalculator=i,disabled:o},r)}Wt.propTypes={stateController:i().instanceOf(Ue).isRequired,boundCalculator:i().func.isRequired,currentBoundCalculator:i().func.isRequired,children:i().node.isRequired,disabled:i().bool};const Ut=t().memo(Ht);function Ht({stateController:n}){const i=function(e){return He(e,"percentile_changed",e.percentile)}(n),r=function(e){return He(e,"percentile_asymmetry_changed",e.percentileAsymmetry)}(n),[o,a]=(0,e.useState)(!1);return[o?t().createElement(Gt,{key:"asymmetry button",className:"percentile-button",selected:!0,description:"Percentile asymmetry"},t().createElement("input",{onClick:e=>e.stopPropagation(),value:r,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(Gt,{key:"main-button",className:"percentile-button",selected:o||100!==parseFloat(i),onClick:()=>a(!o),description:"Edit percentile"},o&&t().createElement("div",null,t().createElement("input",{onClick:e=>e.stopPropagation(),autoFocus:!0,value:i,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"}))))]}Ht.propTypes={stateController:i().instanceOf(Ue).isRequired};const qt=t().memo(jt);function jt({stateController:e,sidebarEnabled:n}){const i=function(e){return He(e,"show_individual_points_changed",e.showIndividualPoints)}(e),r=nt(e),o=ot(e),a=at(e),s=st(e),l=ht(e);return t().createElement("div",{className:"options-bar"},n&&t().createElement(Gt,{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(Gt,{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(Gt,{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(Ut,{stateController:e}),t().createElement(Gt,{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(Gt,{selected:r,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(Gt,{selected:i,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"})))))}jt.propTypes={stateController:i().instanceOf(Ue).isRequired,sidebarEnabled:i().bool};const Vt=t().memo(Kt);function Kt({stateController:e,customBoundsSelectors:n,customBoundsSelectorsOnly:i,sidebarEnabled:r}){const o=Je(e),a=Ze(e),s=rt(e);let l=fe*o;o>0&&(l+=5);let h=fe*a;a>0&&(h+=5);const{dates:c}=function(e){return He(e,"global_bounds_changed",e.globalBounds)}(e),g=function(e){return He(e,"bound_calculator_changed",e.boundCalculator)}(e),{hasPreviousBounds:A,hasNextBounds:d}=function(e){return He(e,"bound_history_changed",e.boundHistory)}(e),p=new Set(n.map((({label:e})=>e)));return t().createElement("div",{className:"range-selection"+(c?"":" range-not-dates"),style:{marginRight:l,marginLeft:h}},t().createElement("div",{className:"range-buttons"},s&&t().createElement(qt,{stateController:e,sidebarEnabled:r}),t().createElement(Gt,{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(Gt,{className:"range-selection-history",selected:!1,onClick:()=>e.previousBounds(),disabled:!A},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(Gt,{className:"range-selection-history",selected:!1,onClick:()=>e.nextBounds(),disabled:!d},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:i,datesOnly:r},o)=>t().createElement(Nt,{key:o,stateController:e,currentBoundCalculator:g,boundCalculator:i,disabled:r&&!c},n))),!p.has("1m")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastMinute,disabled:!c},"1m"),!p.has("10m")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.last10Minutes,disabled:!c},"10m"),!p.has("1h")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastHour,disabled:!c},"1h"),!p.has("1d")&&!i&&t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.lastDay,disabled:!c},"1d"),t().createElement(Nt,{stateController:e,currentBoundCalculator:g,boundCalculator:Ge.all,disabled:!1},"All")))}Kt.propTypes={stateController:i().instanceOf(Ue).isRequired,customBoundsSelectors:_.CustomBoundsSelectors.isRequired,customBoundsSelectorsOnly:i().bool,sidebarEnabled:i().bool};class Jt 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)}getClientX(e){return e&&e.touches&&e.touches[0]?e.touches[0].clientX:e&&e.changedTouches&&e.changedTouches[0]?e.changedTouches[0].clientX:e.clientX}componentDidMount(){this._renderer=new he({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&&this._renderer.resize()}componentWillUnmount(){this._renderer&&(this._renderer.dispose(),this._renderer=null)}onMouseMove(e){if(!this._dragType)return;let t;e&&e.touches&&e.preventDefault&&e.preventDefault();const n=this.el.getBoundingClientRect().left;this.setState((({selectionBounds:i,globalBounds:r,elementWidth:o})=>{let a=(this.getClientX(e)-n)/o;a=Math.max(a,0),a=Math.min(a,1);let s=a*(r.maxX-r.minX)+r.minX;if("scroll"===this._dragType){const e=i.maxX-i.minX;let n=s-e*this._scrollAnchorPercentage,o=s+e*(1-this._scrollAnchorPercentage);return n<r.minX&&(n=r.minX,o=n+e),o>r.maxX&&(o=r.maxX,n=o-e),t=()=>({minX:n,maxX:o}),{selectionBounds:Object.assign({},i,{minX:n,maxX:o})}}if("left"===this._dragType){s>i.maxX&&(s=i.maxX);const e=r.maxX===i.maxX;return t=()=>e?{minX:s}:{minX:s,maxX:i.maxX},{selectionBounds:Object.assign({},i,{minX:s})}}if("right"===this._dragType){s<i.minX&&(s=i.minX);const e=r.minX===i.minX;return t=()=>e?{maxX:s}:{minX:i.minX,maxX:s},{selectionBounds:Object.assign({},i,{maxX:s})}}}),(()=>{t&&(t.debounceHistory=!0,this.props.stateController.boundCalculator=t)}))}addListeners(){window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.stopDragging),window.addEventListener("touchmove",this.onMouseMove,{passive:!1}),window.addEventListener("touchend",this.stopDragging),window.addEventListener("touchcancel",this.stopDragging)}stopDragging(){this._dragType=null,this.forceUpdate(),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.stopDragging),window.removeEventListener("touchmove",this.onMouseMove),window.removeEventListener("touchend",this.stopDragging),window.removeEventListener("touchcancel",this.stopDragging)}startScroll(e){this._dragType="scroll";const{selectionBounds:t,globalBounds:n,elementWidth:i}=this.state,r=this.el.getBoundingClientRect().left,o=this.getClientX(e)-r,a=(t.minX-n.minX)/(n.maxX-n.minX)*i||0,s=(t.maxX-n.minX)/(n.maxX-n.minX)*i||0;this._scrollAnchorPercentage=(o-a)/(s-a),this.addListeners()}startLeftDrag(e){this._dragType="left",this.addListeners()}startRightDrag(e){this._dragType="right",this.addListeners()}render(){const{globalBounds:e,selectionBounds:n,elementWidth:i,elementHeight:r}=this.state;let o=Math.min(Math.max((n.minX-e.minX)/(e.maxX-e.minX),0),1)*i||0,a=Math.min(Math.max((n.maxX-e.minX)/(e.maxX-e.minX),0),1)*i||0;(isNaN(o)||!isFinite(o)||n.maxX<n.minX)&&(o=0),(isNaN(a)||!isFinite(a)||n.maxX<n.minX)&&(a=0);const s=r+14;let l;return n.dates&&this.props.markDates&&(l=Mt({min:e.minX,max:e.maxX,totalSize:i,precision:"day",dates:n.dates,formatter:ue,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",style:{touchAction:"none"}},t().createElement("canvas",{ref:e=>this.el=e}),t().createElement("svg",{style:{height:s}},t().createElement("g",null,t().createElement("rect",{x:0,y:r,width:i,height:14,className:"selection-bar-track"}),l&&l.map((({pixelValue:e,label:n,size:i,position:s},l)=>{if(isNaN(e))return null;const h=["axis-item",`axis-item-${i}`,`axis-item-${s}`];return e>=o&&e<=a&&h.push("axis-item-highlighted"),t().createElement("g",{key:l,className:h.join(" ")},t().createElement("path",{d:`M${e},0 v${r}`}),t().createElement("text",{x:e+3,y:r},n))})),t().createElement("rect",{x:o,y:r,width:a-o,height:14,className:"selection-bar",onMouseDown:this.startScroll,onTouchStart: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(${o+(a-o)/2},${r})`,onMouseDown:this.startScroll,onTouchStart:this.startScroll})),t().createElement("g",null,t().createElement("rect",{x:o,y:0,width:a-o,height:s,className:"target-selection-outline",onMouseDown:this.startScroll,onTouchStart:this.startScroll})),t().createElement("g",{className:"selection-handle"+("left"===this._dragType||"scroll"===this._dragType?" selection-handle-dragging":"")},t().createElement("rect",{x:o-15,y:(r-30)/2,width:30,height:30,fill:"transparent",className:"selection-bar-handle-hit",onMouseDown:this.startLeftDrag,onTouchStart:this.startLeftDrag}),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(${o},${(r-15)/2})`,onMouseDown:this.startLeftDrag,onTouchStart:this.startLeftDrag})),t().createElement("g",{className:"selection-handle"+("right"===this._dragType||"scroll"===this._dragType?" selection-handle-dragging":"")},t().createElement("rect",{x:a-15,y:(r-30)/2,width:30,height:30,fill:"transparent",className:"selection-bar-handle-hit",onMouseDown:this.startRightDrag,onTouchStart:this.startRightDrag}),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},${(r-15)/2})`,onMouseDown:this.startRightDrag,onTouchStart:this.startRightDrag}))),this.props.verticalLines&&t().createElement(dt,{stateController:this.props.stateController,verticalLines:this.props.verticalLines,isRangeGraph:!0,bounds:e,elementHeight:r,elementWidth:i})))}}Jt.defaultProps={width:3,shadowColor:"transparent"},Jt.propTypes={stateController:i().instanceOf(Ue).isRequired,webgl:i().bool,draggingY:i().bool,checkIntersection:i().bool,markDates:i().bool,timeZone:i().string,verticalLines:_.VerticalLines};const Zt=t().memo(Qt);function Qt({series:e,i:n,style:i,onMouseDown:r,theme:o,stateController:a,highlighted:s}){const l=(0,v.default)(e.color,n,e.multigrapherSeriesIndex);i="day"===o?Object.assign({},i,{backgroundColor:l}):Object.assign({},i,{color:l});const h=["series-key-item"];s&&h.push("series-key-item-highlighted");const c=Ne(e,n);return t().createElement("div",{className:h.join(" "),style:i,onMouseDown:r,onMouseOver:()=>a.setHighlightedSeries(n),onMouseOut:()=>a.setHighlightedSeries(null),onClick:()=>a.registerSeriesClick(n)},c)}Qt.propTypes={series:_.SingleSeries.isRequired,stateController:i().instanceOf(Ue),i:i().number.isRequired,style:i().object,onMouseDown:i().func,theme:i().string.isRequired,highlighted:i().bool};class en 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:i,scale:r,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":i,"data-grapher-id":a},t().createElement("div",{className:"scale-label",onClick:()=>n.toggleScale({axisIndex:i})},r.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:i,label:e.target.value}),placeholder:"Enter label",value:o||""}))))}}en.propTypes={stateController:i().instanceOf(Ue).isRequired,children:i().node.isRequired,axisIndex:i().number.isRequired,scale:i().string.isRequired,label:i().string,grapherID:i().string};const tn=t().memo(nn);function nn({stateController:n,theme:i,draggingY:r,grapherID:o,dragPositionYOffset:a=0}){const s=Ve(n),[l,h]=(0,e.useState)(null),[c,g]=(0,e.useState)({x:0,y:0}),A=Ke(n),d=(0,e.useRef)(null),[p,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)((()=>{d.current&&(cancelAnimationFrame(m),m=requestAnimationFrame((()=>{if(!d.current)return;const e=[...d.current.querySelectorAll(".series-key-axis-container")].map((e=>e.clientWidth)).reduce(((e,t)=>e+t),0);u(e)})))}),[s,d.current]);const f=function({stateController:e,keyWidth:t}){const n=Je(e),i=Ze(e),r=rt(e);let o=fe*n;n>0&&(o+=5),o+=250,r&&(o+=70);let a,s=fe*i;i>0&&(s+=5),s=Math.max(o,s),o=Math.max(o,s);const{elementWidth:l}=qe(e);return l-s-o<t&&(s=0,o=0,a=10),{marginRight:o,marginLeft:s,marginBottom:a}}({stateController:n,keyWidth:p}),C=je(n),x=function(e){return He(e,"always_tooltipped_changed",e.alwaysTooltipped)}(n);return t().createElement("div",{className:"series-key",style:f,ref:d},r&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-left","data-grapher-id":o}),C.map(((e,r)=>!e.series.length&&C.length>1?null:t().createElement(en,{key:r,label:e.label,axisIndex:e.axisIndex,scale:e.scale,stateController:n,grapherID:o},e.series.map((e=>e.hideFromKey?null:t().createElement(Zt,{key:e.index,series:e,i:e.index,onMouseDown:(t,i)=>((e,t)=>{let i=e.target;for(;i&&"series-key"!==i.className;)i=i.parentNode;const r=e.target.getBoundingClientRect().left;let o=i.getBoundingClientRect().left,a=i.style.marginLeft;const s=e.clientX,l=e.clientY,c=e.clientX,A=e.clientY;h(t),g({x:e.clientX-s+(r-o)-2,y:e.clientY-l+1});const d=e=>{i.style.marginLeft!==a&&(o=i.getBoundingClientRect().left,a=i.style.marginLeft),g({x:e.clientX-s+(r-o)-2,y:e.clientY-l+1})},p=e=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",p);let i=e.target;for(;i&&!(i.dataset||{}).axisIndex&&!(i.dataset||{}).grapherId;)i=i.parentNode;h(null),n.finalizeDrag(t,i&&(i.dataset||{}).axisIndex,i&&(i.dataset||{}).grapherId),e.clientX===c&&e.clientY===A&&n.toggleAlwaysTooltipped(t,e.shiftKey)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",p),n.markDragStart()})(t,e),theme:i,stateController:n,highlighted:A===e.index||x.has(e)})))))),r&&t().createElement("div",{className:"series-key-axis-container","data-axis-index":"new-right","data-grapher-id":o}),l&&t().createElement(Zt,{style:{left:c.x,top:c.y-a,position:"absolute",pointerEvents:"none",zIndex:1},series:l,i:l.index,theme:i,stateController:n}))}nn.propTypes={stateController:i().instanceOf(Ue).isRequired,theme:i().string.isRequired,draggingY:i().bool.isRequired,grapherID:i().string,dragPositionYOffset:i().number};const rn=t().memo(on);function on({title:e}){return t().createElement("div",{className:"grapher-title"},e)}on.propTypes={title:i().string.isRequired};class an 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=(0,v.default)(e.color,e.index,e.multigrapherSeriesIndex);let i=e.name||e.yKey;return i||(i=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}}),i))}}function sn({stateController:e}){const n=Ve(e);return t().createElement("div",{className:"grapher-sidebar"},n.map(((n,i)=>t().createElement(an,{key:i,singleSeries:n,stateController:e}))))}an.propTypes={singleSeries:_.SingleSeries.isRequired,stateController:i().instanceOf(Ue).isRequired},sn.propTypes={stateController:i().instanceOf(Ue).isRequired};class ln{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 i=0===t.unsavedTooltipsCount||!t.mousePresent||"onShift"===this._syncTooltips&&!e.shiftKeyPressedOnMove;i&&(this._tooltipIgnoreState=Math.random());for(let n of this._stateControllers)e!==n&&(i?n.showOnlySavedTooltips(this._tooltipIgnoreState):n.setTooltipMousePosition({mouseX:t.mouseX,mouseY:t.mouseY,tooltipAllNext:!0,tooltipStateArg:this._tooltipIgnoreState}))}))}}function hn(){return hn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},hn.apply(this,arguments)}const cn=t().memo(An),gn={theme:"night",showAxes:!0,showRangeGraph:!0,showRangeSelectors:!0,showSeriesKey:!0,showTooltips:!0,boundsSelectionEnabled:!0,customBoundsSelectors:[],sidebarEnabled:!1,defaultShowAnnotations:!0,defaultShowOptions:!0};function An(n){n={...gn,...n};const i=(0,e.useMemo)((()=>new Ue({grapherID:n.id,...n,...n.stateControllerInitialization})),[]);(0,e.useEffect)((()=>()=>{i.dispose()}),[i]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(i)}),[i,n.exportStateController]),(0,e.useEffect)((()=>{i.timingFrameCount=n.timingFrameCount}),[i,n.timingFrameCount]),(0,e.useEffect)((()=>(n.onRenderTime&&i.on("render_time",n.onRenderTime),()=>{n.onRenderTime&&i.off("render_time",n.onRenderTime)})),[i,n.onRenderTime]),(0,e.useEffect)((()=>{i.setSeries(n.series)}),[i,n.series]),(0,e.useEffect)((()=>{i.theme=n.theme}),[i,n.theme]);const r=ht(i),o=n.bigLabels||"export"===r,a=n.defaultLineWidth||("export"===r?3:void 0);(0,e.useEffect)((()=>{i.defaultLineWidth=a}),[i,a]),(0,e.useEffect)((()=>{i.percentile=n.percentile}),[i,n.percentile]),(0,e.useEffect)((()=>{i.customBoundsSelectors=n.customBoundsSelectors}),[i,n.customBoundsSelectors]),(0,e.useEffect)((()=>{i.annotations=n.annotations}),[i,n.annotations]),(0,e.useEffect)((()=>n.onAxisChange?(i.on("exported_axes_changed",n.onAxisChange),()=>{i.off("exported_axes_changed",n.onAxisChange)}):()=>{}),[i,n.onAxisChange]),(0,e.useEffect)((()=>{i.primaryRenderer.resize()}),[n.height]);const s=it(i),{styles:l,classNames:h}=function(e,{draggingY:t,theme:n}){const{fullscreen:i,height:r,width:o}=e,a=["grapher",`grapher-${n}`],s={};return t&&a.push("grapher-dragging-y"),i?(a.push("grapher-fullscreen"),a.push("grapher-fixed-height")):r&&(a.push("grapher-fixed-height"),s.height="number"==typeof r?r-20:`calc(${r} - 20px)`),o&&(s.width=o),{styles:s,classNames:a}}(n,{draggingY:s,theme:r}),c=Qe(i),g=et(i),A=at(i),d="boolean"==typeof n.showAxisColors?n.showAxisColors:"export"!==r,p="boolean"!=typeof n.showGrid||n.showGrid,u="boolean"==typeof n.showAxes&&n.showAxes,m={stateController:i,showAxes:u,showGrid:p,showSeriesKey:n.showSeriesKey,bodyHeight:n.bodyHeight,theme:r,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset,showAxisColors:d,bigLabels:o};return t().createElement("div",{className:h.join(" "),style:l,"data-grapher-id":n.id},n.title&&t().createElement(rn,{title:n.title}),t().createElement("div",{className:"grapher-primary-container-outer"},A&&t().createElement(sn,{stateController:i}),t().createElement("div",{className:"grapher-primary-container-body"},n.showSeriesKey&&t().createElement(tn,{stateController:i,draggingY:s,theme:n.theme,grapherID:n.id,dragPositionYOffset:n.dragPositionYOffset}),n.showRangeSelectors&&t().createElement(Vt,{stateController:i,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:fe,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}}),g.map(((e,n)=>t().createElement(Ot,hn({key:n,axis:e,sideIndex:g.length-n-1},m)))),t().createElement("div",{className:"central-container"},t().createElement(mt,{stateController:i,webgl:n.webgl,bodyHeight:n.bodyHeight,boundsSelectionEnabled:n.boundsSelectionEnabled,showTooltips:n.showTooltips,showContextMenu:n.showContextMenu,tooltipOptions:n.tooltipOptions,checkIntersection:n.checkIntersection,draggablePoints:n.draggablePoints,onPointDrag:n.onPointDrag,onDraggablePointsDoubleClick:n.onDraggablePointsDoubleClick,onPointClick:n.onPointClick,verticalLines:n.verticalLines,clockStyle:n.clockStyle,timeZone:n.timeZone}),t().createElement(Ft,{showGrid:p,showAxes:u,stateController:i,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(Jt,{stateController:i,webgl:n.webgl,checkIntersection:n.checkIntersection,markDates:n.markRangeGraphDates,timeZone:n.timeZone,verticalLines:n.verticalLines}))),c.map(((e,n)=>t().createElement(Ot,hn({key:n,axis:e,sideIndex:n},m)))),s&&t().createElement("div",{className:"axis y-axis","data-axis-index":"new-right","data-grapher-id":n.id,style:{width:fe,height:"number"==typeof n.bodyHeight?n.bodyHeight:void 0}})))))}An.propTypes={series:_.Series.isRequired,webgl:i().bool,requireWASM:i().bool,checkIntersection:i().bool,onAxisChange:i().func,onRenderTime:i().func,exportStateController:i().func,timingFrameCount:i().number,stateControllerInitialization:i().object,syncPool:i().instanceOf(ln),id:i().string,dragPositionYOffset:i().number,theme:i().oneOf(["day","night","export"]),title:i().string,fullscreen:i().bool,bodyHeight:i().number,height:i().number,width:i().number,showAxes:i().bool,showRangeGraph:i().bool,showRangeSelectors:i().bool,showSeriesKey:i().bool,showTooltips:i().bool,showGrid:i().bool,showAxisColors:i().bool,bigLabels:i().bool,xTickUnit:i().oneOf(["year"]),formatXAxisLabel:i().func,xAxisIntegersOnly:i().bool,clockStyle:i().oneOf(["12h","24h"]),timeZone:i().string,markRangeGraphDates:i().bool,boundsSelectionEnabled:i().bool,sidebarEnabled:i().bool,percentile:i().number,defaultShowOptions:i().bool,defaultShowIndividualPoints:i().bool,defaultShowSidebar:i().bool,defaultShowAnnotations:i().bool,defaultLineWidth:i().number,tooltipOptions:_.TooltipOptions,customBoundsSelectors:_.CustomBoundsSelectors,customBoundsSelectorsOnly:i().bool,defaultBoundsCalculator:i().string,annotations:_.Annotations,draggablePoints:_.DraggablePoints,onPointDrag:i().func,onDraggablePointsDoubleClick:i().func,verticalLines:_.VerticalLines,onPointClick:i().func};const dn=v.LINE_COLORS,pn=Ge;class un extends B{constructor({id:e}){super(),this._id=e,this._multiSeries=[],this._seriesToGraphIndices=new Map,this._graphIndicesToSeries=new Map,this._modifiedSeries=new Map,this._originalSeriesByMultigrapherIndex=new Map,this._stateControllers=new Set,this._prevSeries=[],this._dataCache=new Map,this._subscriptions=new Map,this._draggingY=!1,this.on("multi_series_changed",(()=>{for(let e of this._stateControllers)e._multiSeries=this._multiSeries}))}setSeries(e){if(this._prevSeries.length===e.length){let t=!1;for(let n=0;n<e.length;n++)if(e[n]!==this._prevSeries[n]){t=!0;break}if(!t)return}this._prevSeries=e;const t=new Set,n=new Set(e);for(let n of e){let e=n.graph||0;this._seriesToGraphIndices.has(n)&&(e=this._seriesToGraphIndices.get(n)),t.add(e);let i=this._graphIndicesToSeries.get(e);i||(i=new Set,this._graphIndicesToSeries.set(e,i)),i.add(n)}const i=[...t].sort();this._multiSeries=[];let r=0;for(let e of i){const t=[];for(let i of this._graphIndicesToSeries.get(e)){if(!n.has(i)){this._graphIndicesToSeries.get(e).delete(i);continue}if(this._modifiedSeries.has(i)){r++,t.push(this._modifiedSeries.get(i));continue}const o=(0,v.default)(i.color,r),a=Ne(i,r),s={...i,multigrapherSeriesIndex:r,multigrapherGraphIndex:e,color:o,name:a};this._modifiedSeries.set(i,s),this._originalSeriesByMultigrapherIndex.set(r,i),r++,t.push(s)}this._multiSeries.push(t)}this._nextMultigrapherSeriesIndex?this._nextMultigrapherSeriesIndex=this._nextMultigrapherSeriesIndex-this._multiSeriesCount+r:this._nextMultigrapherSeriesIndex=r,this._multiSeriesCount=r,this.emit("multi_series_changed",this.multiSeries)}registerStateController(e){this._stateControllers.has(e)||(this._stateControllers.add(e),e._multigraphStateController=this,e._multiSeries=this._multiSeries,e.on("dragging_y_finalized",(({grapherID:t,axisIndex:n,draggedSeries:i}={})=>{if(t===e.grapherID)return;const[r,o,a]=t.split("-");"multigrapher"===r&&o===this._id&&setTimeout((()=>{this.moveSeries({axisIndex:n,draggedSeries:i,graphIndex:a})}))})),e.on("dragging_y_changed",(e=>{e!==this._draggingY&&(this._draggingY=e,this.emit("dragging_y_changed",this._draggingY))})),e.on("observable_modified",(t=>{for(let n of this._stateControllers)e!==n&&n.markObservableModified(t)})),e.on("dispose",(()=>{this._stateControllers.delete(e)})))}moveSeries({axisIndex:e,draggedSeries:t,graphIndex:n}){const i=this.graphCount,r=this._originalSeriesByMultigrapherIndex.get(t.multigrapherSeriesIndex),o=this._modifiedSeries.get(r);this._multiSeries[o.multigrapherGraphIndex].splice(this._multiSeries[o.multigrapherGraphIndex].indexOf(o),1),this._multiSeries[o.multigrapherGraphIndex]=[...this._multiSeries[o.multigrapherGraphIndex]],o.multigrapherGraphIndex="top"===n?this._createGraphAtTop():"bottom"===n?this._createGraphAtBottom():parseInt(n),o.axisIndex=e,delete o.axis,this._multiSeries[o.multigrapherGraphIndex]=[...this._multiSeries[o.multigrapherGraphIndex],o],this._multiSeries=[...this._multiSeries];for(let e=0;e<this._multiSeries.length;e++){const t=this._multiSeries[e].map((({multigrapherSeriesIndex:e})=>this._originalSeriesByMultigrapherIndex.get(e)));this._graphIndicesToSeries.set(e,new Set(t));for(let n of t)this._seriesToGraphIndices.set(n,e)}this.emit("multi_series_changed",this.multiSeries),this.emit("graph_count_changed",this.graphCount,i)}_createGraphAtTop(){let e=null;for(let t=0;t<this._multiSeries.length&&0===this._multiSeries[t].length;t++)e=t;if(null!==e)return e;this._multiSeries=[[],...this._multiSeries];for(let e=0;e<this._multiSeries.length;e++)if(this._multiSeries[e].length){this._multiSeries[e]=[...this._multiSeries[e]];for(let t of this._multiSeries[e])t.multigrapherGraphIndex=e}return 0}_createGraphAtBottom(){let e=null;for(let t=this._multiSeries.length-1;t>=0&&0===this._multiSeries[t].length;t--)e=t;return null!==e?e:(this._multiSeries=[...this._multiSeries,[]],this._multiSeries.length-1)}get multiSeries(){return this._multiSeries.filter((e=>e.length))}get series(){return[...this._stateControllers].map((e=>e.series)).flat()}get graphCount(){return this.multiSeries.length}get draggingY(){return this._draggingY}dispose(){this.clearListeners();for(let e of this._subscriptions.values())e.unsubscribe();this._subscriptions.clear()}get stateControllerInitialization(){return{sharedDataCache:this._dataCache,sharedSubscriptions:this._subscriptions}}incrementMultigrapherSeriesIndex(){const e=this._nextMultigrapherSeriesIndex;return this._nextMultigrapherSeriesIndex++,e}}function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},mn.apply(this,arguments)}const fn=t().memo(Cn);function Cn(n){const i=(0,e.useMemo)((()=>Math.random().toString(36).slice(2)),[]),r=(0,e.useMemo)((()=>new un({id:i,...n})),[]),o=function(e){return He(e,"multi_series_changed",e.multiSeries)}(r),a=(0,e.useMemo)((()=>new ln({syncBounds:n.syncBounds,syncTooltips:n.syncTooltips,syncDragState:!0})),[]),s=(0,e.useMemo)((()=>r.registerStateController.bind(r)),[r]);(0,e.useEffect)((()=>()=>{r.dispose()}),[r]),(0,e.useEffect)((()=>{n.exportStateController&&n.exportStateController(r)}),[r,n.exportStateController]),(0,e.useEffect)((()=>{r.setSeries(n.series)}),[r,n.series]),(0,e.useEffect)((()=>n.onMultiseriesChange?(r.on("multi_series_changed",n.onMultiseriesChange),()=>{r.off("multi_series_changed",n.onMultiseriesChange)}):()=>{}),[r,n.onMultiseriesChange]);const l=it(r);return t().createElement("div",{className:"multigrapher"},l&&n.newUpperEnabled&&t().createElement("div",{className:`new-grapher grapher-${n.theme}`,"data-grapher-id":`multigrapher-${i}-top`},"New grapher"),o.map(((e,o)=>t().createElement(cn,mn({key:o},n,{syncPool:a,stateControllerInitialization:r.stateControllerInitialization,series:e,id:`multigrapher-${i}-${o}`,dragPositionYOffset:n.newUpperEnabled?38:0,exportStateController:s})))),l&&t().createElement("div",{className:`new-grapher grapher-${n.theme}`,"data-grapher-id":`multigrapher-${i}-bottom`},"New grapher"))}Cn.defaultProps={theme:"night"},Cn.propTypes=Object.assign({},cn.propTypes,{syncBounds:i().bool,syncTooltips:i().bool,newUpperEnabled:i().bool,onMultiseriesChange:i().func})})(),module.exports.Grapher=o})();
|
|
2
2
|
//# sourceMappingURL=bundle.cjs.map
|