From 6cdd7d6a09d4a09dc60b016474a0ecf1f0027ddc Mon Sep 17 00:00:00 2001 From: Jeff Allen Date: Wed, 11 Dec 2024 11:00:30 -0500 Subject: [PATCH] css, build --- docs/_app/immutable/assets/7.0326b12b.css | 1 - docs/_app/immutable/assets/7.c8ef3a7a.css | 1 + docs/_app/immutable/assets/_page.0326b12b.css | 1 - docs/_app/immutable/assets/_page.c8ef3a7a.css | 1 + .../immutable/chunks/singletons.60f5b3a0.js | 1 + .../immutable/chunks/singletons.6faf3746.js | 1 - .../{app.c8036975.js => app.1b25f105.js} | 2 +- .../{start.3ac2646e.js => start.82febf71.js} | 2 +- .../nodes/{1.c20d0cd9.js => 1.7290de78.js} | 2 +- .../nodes/{6.bb284344.js => 6.da769bf3.js} | 2 +- .../nodes/{7.094030d9.js => 7.8733e24e.js} | 18 +++++----- docs/_app/version.json | 2 +- docs/efit-analysis.html | 34 +++++++++---------- docs/growth.html | 12 +++---- docs/index.html | 12 +++---- docs/station-relations-2023.html | 12 +++---- docs/trips-062024.html | 12 +++---- src/lib/LineChart.svelte | 4 +-- src/routes/efit-analysis/+page.svelte | 5 +-- 19 files changed, 63 insertions(+), 62 deletions(-) delete mode 100644 docs/_app/immutable/assets/7.0326b12b.css create mode 100644 docs/_app/immutable/assets/7.c8ef3a7a.css delete mode 100644 docs/_app/immutable/assets/_page.0326b12b.css create mode 100644 docs/_app/immutable/assets/_page.c8ef3a7a.css create mode 100644 docs/_app/immutable/chunks/singletons.60f5b3a0.js delete mode 100644 docs/_app/immutable/chunks/singletons.6faf3746.js rename docs/_app/immutable/entry/{app.c8036975.js => app.1b25f105.js} (96%) rename docs/_app/immutable/entry/{start.3ac2646e.js => start.82febf71.js} (99%) rename docs/_app/immutable/nodes/{1.c20d0cd9.js => 1.7290de78.js} (93%) rename docs/_app/immutable/nodes/{6.bb284344.js => 6.da769bf3.js} (79%) rename docs/_app/immutable/nodes/{7.094030d9.js => 7.8733e24e.js} (59%) diff --git a/docs/_app/immutable/assets/7.0326b12b.css b/docs/_app/immutable/assets/7.0326b12b.css deleted file mode 100644 index 4a8f679..0000000 --- a/docs/_app/immutable/assets/7.0326b12b.css +++ /dev/null @@ -1 +0,0 @@ -body{padding:0;margin:0;background-color:var(--brandWhite);background-color:#fff;overflow-x:scroll}main{margin:50px auto;width:100%;min-width:360px;max-width:1400px;position:relative;background:var(--brandWhite)}.intro{position:relative;max-height:67vh;overflow:hidden;border-bottom:solid 1px var(--brandGray)}.intro video{width:100%;height:auto;min-height:500px;display:block;object-fit:cover}.intro:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff6b;z-index:1}.intro-overlay{position:absolute;max-width:700px;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:100%;color:#fff;z-index:2}.intro-overlay h1{margin:0}.title{background-color:none;max-width:760px;width:calc(100% - 30px);min-width:360px;margin:25px auto 0;border-bottom:solid 1px #e6841a;padding-left:15px;padding-right:15px;position:relative}.title p{line-height:34px;font-size:16px}.text{background-color:none;max-width:750px;width:calc(100% - 30px);min-width:360px;margin:0 auto;position:relative;padding-left:15px;padding-right:15px}.topImg{width:100%;height:500px;overflow:hidden;background-color:none}.topImg img{width:100%;height:500px;object-fit:none}@media (max-width: 420px){.topImg{width:420px}}.bottom-image{border-top:solid 1px var(--brandGray);padding-top:50px;max-width:700px;margin:35px auto 0}.bottom-image img{max-width:100%;height:auto}h1{margin:40px 0 20px;font-family:RobotoBold;font-size:29px;color:var(--brandDarkGreen);opacity:1;text-decoration:none}h2{text-align:left;font-family:RobotoBold;font-size:30px;border-bottom:solid 1px var(--brandBlack);margin-top:0;color:var(--brandBlack)}h3{text-align:left;font-family:RobotoBold;font-size:22px;border-bottom:solid 1px var(--brandGray);color:var(--brandBlack);padding-top:20px}p{font-family:SourceSerifPro;color:var(--brandBlack);text-align:left;padding-top:2px;padding-bottom:2px;font-size:18px;line-height:30px}.notes{font-size:14px;line-height:24px}a{color:var(--brandDarkBlue);text-decoration:underline}a:hover{color:var(--brandMedBlue)}.graph-title{text-align:center}.graph-title.svelte-18x9z4j{font-size:14px;font-family:RobotoRegular;margin-bottom:-20px}@media (min-width: 700px){.radial.svelte-18x9z4j{margin-bottom:-20px}}@media (min-width: 400px) and (max-width: 700px){.radial.svelte-18x9z4j{transform:scale(1.2);transform-origin:center;margin:40px}}.svg-container.svelte-p68fwc{min-width:420px;margin-left:15px}.graph-title.svelte-p68fwc{font-size:18px;margin-bottom:10px;font-family:RobotoBold}.button-container.svelte-p68fwc{margin-left:25px}.button.svelte-p68fwc{background-color:#f0f0f0;border:1px solid #ccc;color:#333;padding:5px;font-size:12px;border-radius:4px;width:170px;cursor:pointer;transition:background-color .2s,border-color .3s}.button.svelte-p68fwc:hover{background-color:#e0e0e0;border-color:#bbb}.button-off.svelte-p68fwc{opacity:.5}@media (max-width: 420px){.button-container.svelte-p68fwc{margin-left:100px}.svg-container.svelte-p68fwc{margin-left:80px}}.photo.svelte-1b7oemr.svelte-1b7oemr{max-width:100%;max-height:750px;width:auto;height:auto;display:block;margin:25px auto 0}.caption.svelte-1b7oemr.svelte-1b7oemr{font-size:14px;margin-top:2px}.radial-title.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;margin:0 auto}.radial-legend.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;margin-top:0;margin-bottom:0;height:30px}.legend-item.svelte-1b7oemr.svelte-1b7oemr{display:flex;align-items:center;margin:0 20px}.legend-circ.svelte-1b7oemr.svelte-1b7oemr{width:30px;height:30px;margin-right:10px}.legend-item.svelte-1b7oemr p.svelte-1b7oemr{font-size:12px;color:#000;font-family:RobotoRegular}#bar.svelte-1b7oemr.svelte-1b7oemr{position:fixed;overflow:hidden;top:0;height:50px;background-color:var(--brandWhite);margin-bottom:20px;border-bottom:1px solid var(--brandDarkGreen);width:100%;min-width:200px;padding-left:0;padding-right:0;z-index:5;opacity:.9}#bar.svelte-1b7oemr #logo.svelte-1b7oemr{margin:auto;max-width:230px;height:50px;z-index:6}#bar.svelte-1b7oemr a.svelte-1b7oemr{color:#000}#bar.svelte-1b7oemr a.svelte-1b7oemr:hover{opacity:.7}#bar.svelte-1b7oemr img.svelte-1b7oemr{height:50px}#bar.svelte-1b7oemr img.svelte-1b7oemr:hover{height:50px;opacity:.5;cursor:pointer}.chart-container.svelte-1b7oemr.svelte-1b7oemr{margin:0;display:flex;justify-content:center;align-items:center;height:100%;overflow-x:hidden}.radial-container.svelte-1b7oemr.svelte-1b7oemr{margin-top:10px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;height:100%;overflow:hidden}.flex-container-weekday.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:normal;flex-wrap:wrap;width:100%;margin:0;padding:0}.flex-container-weekend.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 25%;text-align:center}@media (width > 1460px){.radial-container.svelte-1b7oemr.svelte-1b7oemr{display:none}}@media (width < 1460px){.flex-container-weekday.svelte-1b7oemr.svelte-1b7oemr,.flex-container-weekend.svelte-1b7oemr.svelte-1b7oemr{display:none}}@media (max-width: 1460px){.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 50%;width:20%}}@media (max-width: 700px){.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 100%;transform:scale(1.5);margin:100px 0;display:none}.weekend-item.svelte-1b7oemr.svelte-1b7oemr{display:none}} diff --git a/docs/_app/immutable/assets/7.c8ef3a7a.css b/docs/_app/immutable/assets/7.c8ef3a7a.css new file mode 100644 index 0000000..9479451 --- /dev/null +++ b/docs/_app/immutable/assets/7.c8ef3a7a.css @@ -0,0 +1 @@ +body{padding:0;margin:0;background-color:var(--brandWhite);background-color:#fff;overflow-x:scroll}main{margin:50px auto;width:100%;min-width:360px;max-width:1400px;position:relative;background:var(--brandWhite)}.intro{position:relative;max-height:67vh;overflow:hidden;border-bottom:solid 1px var(--brandGray)}.intro video{width:100%;height:auto;min-height:500px;display:block;object-fit:cover}.intro:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff6b;z-index:1}.intro-overlay{position:absolute;max-width:700px;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:100%;color:#fff;z-index:2}.intro-overlay h1{margin:0}.title{background-color:none;max-width:760px;width:calc(100% - 30px);min-width:360px;margin:25px auto 0;border-bottom:solid 1px #e6841a;padding-left:15px;padding-right:15px;position:relative}.title p{line-height:34px;font-size:16px}.text{background-color:none;max-width:750px;width:calc(100% - 30px);min-width:360px;margin:0 auto;position:relative;padding-left:15px;padding-right:15px}.topImg{width:100%;height:500px;overflow:hidden;background-color:none}.topImg img{width:100%;height:500px;object-fit:none}@media (max-width: 420px){.topImg{width:420px}}.bottom-image{border-top:solid 1px var(--brandGray);padding-top:50px;max-width:700px;margin:35px auto 0}.bottom-image img{max-width:100%;height:auto}h1{margin:40px 0 20px;font-family:RobotoBold;font-size:29px;color:var(--brandDarkGreen);opacity:1;text-decoration:none}h2{text-align:left;font-family:RobotoBold;font-size:30px;border-bottom:solid 1px var(--brandBlack);margin-top:0;color:var(--brandBlack)}h3{text-align:left;font-family:RobotoBold;font-size:22px;border-bottom:solid 1px var(--brandGray);color:var(--brandBlack);padding-top:20px}p{font-family:SourceSerifPro;color:var(--brandBlack);text-align:left;padding-top:2px;padding-bottom:2px;font-size:18px;line-height:30px}.notes{font-size:14px;line-height:24px}a{color:var(--brandDarkBlue);text-decoration:underline}a:hover{color:var(--brandMedBlue)}.graph-title{text-align:center}.graph-title.svelte-18x9z4j{font-size:14px;font-family:RobotoRegular;margin-bottom:-20px}@media (min-width: 700px){.radial.svelte-18x9z4j{margin-bottom:-20px}}@media (min-width: 400px) and (max-width: 700px){.radial.svelte-18x9z4j{transform:scale(1.2);transform-origin:center;margin:40px}}.svg-container.svelte-x329w9{min-width:420px;margin-left:15px}.graph-title.svelte-x329w9{font-size:18px;margin-bottom:10px;font-family:RobotoBold}.button-container.svelte-x329w9{margin-left:25px}.button.svelte-x329w9{background-color:#f0f0f0;border:1px solid #ccc;color:#333;padding:5px;font-size:12px;border-radius:4px;width:170px;cursor:pointer;transition:background-color .2s,border-color .3s}.button.svelte-x329w9:hover{background-color:#e0e0e0;border-color:#bbb}.button-off.svelte-x329w9{opacity:.5}@media (max-width: 420px){.button-container.svelte-x329w9{margin-left:120px}.svg-container.svelte-x329w9{margin-left:100px}}.photo.svelte-15vghzv.svelte-15vghzv{max-width:100%;max-height:750px;width:auto;height:auto;display:block;margin:25px auto 0}.caption.svelte-15vghzv.svelte-15vghzv{font-size:14px;margin-top:2px;line-height:18px}.radial-title.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;margin:0 auto}.radial-legend.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;margin-top:0;margin-bottom:0;height:30px}.legend-item.svelte-15vghzv.svelte-15vghzv{display:flex;align-items:center;margin:0 20px}.legend-circ.svelte-15vghzv.svelte-15vghzv{width:30px;height:30px;margin-right:10px}.legend-item.svelte-15vghzv p.svelte-15vghzv{font-size:12px;color:#000;font-family:RobotoRegular}#bar.svelte-15vghzv.svelte-15vghzv{position:fixed;overflow:hidden;top:0;height:50px;background-color:var(--brandWhite);margin-bottom:20px;border-bottom:1px solid var(--brandDarkGreen);width:100%;min-width:200px;padding-left:0;padding-right:0;z-index:5;opacity:.9}#bar.svelte-15vghzv #logo.svelte-15vghzv{margin:auto;max-width:230px;height:50px;z-index:6}#bar.svelte-15vghzv a.svelte-15vghzv{color:#000}#bar.svelte-15vghzv a.svelte-15vghzv:hover{opacity:.7}#bar.svelte-15vghzv img.svelte-15vghzv{height:50px}#bar.svelte-15vghzv img.svelte-15vghzv:hover{height:50px;opacity:.5;cursor:pointer}.chart-container.svelte-15vghzv.svelte-15vghzv{margin:0;display:flex;justify-content:center;align-items:center;height:100%;overflow-x:hidden}.radial-container.svelte-15vghzv.svelte-15vghzv{margin-top:10px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;height:100%;overflow:hidden}.flex-container-weekday.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:normal;flex-wrap:wrap;width:100%;margin:0;padding:0}.flex-container-weekend.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 25%;text-align:center}@media (width > 1460px){.radial-container.svelte-15vghzv.svelte-15vghzv{display:none}}@media (width < 1460px){.flex-container-weekday.svelte-15vghzv.svelte-15vghzv,.flex-container-weekend.svelte-15vghzv.svelte-15vghzv{display:none}}@media (max-width: 1460px){.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 50%;width:20%}}@media (max-width: 700px){.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 100%;transform:scale(1.5);margin:100px 0;display:none}.weekend-item.svelte-15vghzv.svelte-15vghzv{display:none}} diff --git a/docs/_app/immutable/assets/_page.0326b12b.css b/docs/_app/immutable/assets/_page.0326b12b.css deleted file mode 100644 index 4a8f679..0000000 --- a/docs/_app/immutable/assets/_page.0326b12b.css +++ /dev/null @@ -1 +0,0 @@ -body{padding:0;margin:0;background-color:var(--brandWhite);background-color:#fff;overflow-x:scroll}main{margin:50px auto;width:100%;min-width:360px;max-width:1400px;position:relative;background:var(--brandWhite)}.intro{position:relative;max-height:67vh;overflow:hidden;border-bottom:solid 1px var(--brandGray)}.intro video{width:100%;height:auto;min-height:500px;display:block;object-fit:cover}.intro:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff6b;z-index:1}.intro-overlay{position:absolute;max-width:700px;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:100%;color:#fff;z-index:2}.intro-overlay h1{margin:0}.title{background-color:none;max-width:760px;width:calc(100% - 30px);min-width:360px;margin:25px auto 0;border-bottom:solid 1px #e6841a;padding-left:15px;padding-right:15px;position:relative}.title p{line-height:34px;font-size:16px}.text{background-color:none;max-width:750px;width:calc(100% - 30px);min-width:360px;margin:0 auto;position:relative;padding-left:15px;padding-right:15px}.topImg{width:100%;height:500px;overflow:hidden;background-color:none}.topImg img{width:100%;height:500px;object-fit:none}@media (max-width: 420px){.topImg{width:420px}}.bottom-image{border-top:solid 1px var(--brandGray);padding-top:50px;max-width:700px;margin:35px auto 0}.bottom-image img{max-width:100%;height:auto}h1{margin:40px 0 20px;font-family:RobotoBold;font-size:29px;color:var(--brandDarkGreen);opacity:1;text-decoration:none}h2{text-align:left;font-family:RobotoBold;font-size:30px;border-bottom:solid 1px var(--brandBlack);margin-top:0;color:var(--brandBlack)}h3{text-align:left;font-family:RobotoBold;font-size:22px;border-bottom:solid 1px var(--brandGray);color:var(--brandBlack);padding-top:20px}p{font-family:SourceSerifPro;color:var(--brandBlack);text-align:left;padding-top:2px;padding-bottom:2px;font-size:18px;line-height:30px}.notes{font-size:14px;line-height:24px}a{color:var(--brandDarkBlue);text-decoration:underline}a:hover{color:var(--brandMedBlue)}.graph-title{text-align:center}.graph-title.svelte-18x9z4j{font-size:14px;font-family:RobotoRegular;margin-bottom:-20px}@media (min-width: 700px){.radial.svelte-18x9z4j{margin-bottom:-20px}}@media (min-width: 400px) and (max-width: 700px){.radial.svelte-18x9z4j{transform:scale(1.2);transform-origin:center;margin:40px}}.svg-container.svelte-p68fwc{min-width:420px;margin-left:15px}.graph-title.svelte-p68fwc{font-size:18px;margin-bottom:10px;font-family:RobotoBold}.button-container.svelte-p68fwc{margin-left:25px}.button.svelte-p68fwc{background-color:#f0f0f0;border:1px solid #ccc;color:#333;padding:5px;font-size:12px;border-radius:4px;width:170px;cursor:pointer;transition:background-color .2s,border-color .3s}.button.svelte-p68fwc:hover{background-color:#e0e0e0;border-color:#bbb}.button-off.svelte-p68fwc{opacity:.5}@media (max-width: 420px){.button-container.svelte-p68fwc{margin-left:100px}.svg-container.svelte-p68fwc{margin-left:80px}}.photo.svelte-1b7oemr.svelte-1b7oemr{max-width:100%;max-height:750px;width:auto;height:auto;display:block;margin:25px auto 0}.caption.svelte-1b7oemr.svelte-1b7oemr{font-size:14px;margin-top:2px}.radial-title.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;margin:0 auto}.radial-legend.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;margin-top:0;margin-bottom:0;height:30px}.legend-item.svelte-1b7oemr.svelte-1b7oemr{display:flex;align-items:center;margin:0 20px}.legend-circ.svelte-1b7oemr.svelte-1b7oemr{width:30px;height:30px;margin-right:10px}.legend-item.svelte-1b7oemr p.svelte-1b7oemr{font-size:12px;color:#000;font-family:RobotoRegular}#bar.svelte-1b7oemr.svelte-1b7oemr{position:fixed;overflow:hidden;top:0;height:50px;background-color:var(--brandWhite);margin-bottom:20px;border-bottom:1px solid var(--brandDarkGreen);width:100%;min-width:200px;padding-left:0;padding-right:0;z-index:5;opacity:.9}#bar.svelte-1b7oemr #logo.svelte-1b7oemr{margin:auto;max-width:230px;height:50px;z-index:6}#bar.svelte-1b7oemr a.svelte-1b7oemr{color:#000}#bar.svelte-1b7oemr a.svelte-1b7oemr:hover{opacity:.7}#bar.svelte-1b7oemr img.svelte-1b7oemr{height:50px}#bar.svelte-1b7oemr img.svelte-1b7oemr:hover{height:50px;opacity:.5;cursor:pointer}.chart-container.svelte-1b7oemr.svelte-1b7oemr{margin:0;display:flex;justify-content:center;align-items:center;height:100%;overflow-x:hidden}.radial-container.svelte-1b7oemr.svelte-1b7oemr{margin-top:10px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;height:100%;overflow:hidden}.flex-container-weekday.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:normal;flex-wrap:wrap;width:100%;margin:0;padding:0}.flex-container-weekend.svelte-1b7oemr.svelte-1b7oemr{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 25%;text-align:center}@media (width > 1460px){.radial-container.svelte-1b7oemr.svelte-1b7oemr{display:none}}@media (width < 1460px){.flex-container-weekday.svelte-1b7oemr.svelte-1b7oemr,.flex-container-weekend.svelte-1b7oemr.svelte-1b7oemr{display:none}}@media (max-width: 1460px){.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 50%;width:20%}}@media (max-width: 700px){.weekday-item.svelte-1b7oemr.svelte-1b7oemr{flex:1 1 100%;transform:scale(1.5);margin:100px 0;display:none}.weekend-item.svelte-1b7oemr.svelte-1b7oemr{display:none}} diff --git a/docs/_app/immutable/assets/_page.c8ef3a7a.css b/docs/_app/immutable/assets/_page.c8ef3a7a.css new file mode 100644 index 0000000..9479451 --- /dev/null +++ b/docs/_app/immutable/assets/_page.c8ef3a7a.css @@ -0,0 +1 @@ +body{padding:0;margin:0;background-color:var(--brandWhite);background-color:#fff;overflow-x:scroll}main{margin:50px auto;width:100%;min-width:360px;max-width:1400px;position:relative;background:var(--brandWhite)}.intro{position:relative;max-height:67vh;overflow:hidden;border-bottom:solid 1px var(--brandGray)}.intro video{width:100%;height:auto;min-height:500px;display:block;object-fit:cover}.intro:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff6b;z-index:1}.intro-overlay{position:absolute;max-width:700px;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:100%;color:#fff;z-index:2}.intro-overlay h1{margin:0}.title{background-color:none;max-width:760px;width:calc(100% - 30px);min-width:360px;margin:25px auto 0;border-bottom:solid 1px #e6841a;padding-left:15px;padding-right:15px;position:relative}.title p{line-height:34px;font-size:16px}.text{background-color:none;max-width:750px;width:calc(100% - 30px);min-width:360px;margin:0 auto;position:relative;padding-left:15px;padding-right:15px}.topImg{width:100%;height:500px;overflow:hidden;background-color:none}.topImg img{width:100%;height:500px;object-fit:none}@media (max-width: 420px){.topImg{width:420px}}.bottom-image{border-top:solid 1px var(--brandGray);padding-top:50px;max-width:700px;margin:35px auto 0}.bottom-image img{max-width:100%;height:auto}h1{margin:40px 0 20px;font-family:RobotoBold;font-size:29px;color:var(--brandDarkGreen);opacity:1;text-decoration:none}h2{text-align:left;font-family:RobotoBold;font-size:30px;border-bottom:solid 1px var(--brandBlack);margin-top:0;color:var(--brandBlack)}h3{text-align:left;font-family:RobotoBold;font-size:22px;border-bottom:solid 1px var(--brandGray);color:var(--brandBlack);padding-top:20px}p{font-family:SourceSerifPro;color:var(--brandBlack);text-align:left;padding-top:2px;padding-bottom:2px;font-size:18px;line-height:30px}.notes{font-size:14px;line-height:24px}a{color:var(--brandDarkBlue);text-decoration:underline}a:hover{color:var(--brandMedBlue)}.graph-title{text-align:center}.graph-title.svelte-18x9z4j{font-size:14px;font-family:RobotoRegular;margin-bottom:-20px}@media (min-width: 700px){.radial.svelte-18x9z4j{margin-bottom:-20px}}@media (min-width: 400px) and (max-width: 700px){.radial.svelte-18x9z4j{transform:scale(1.2);transform-origin:center;margin:40px}}.svg-container.svelte-x329w9{min-width:420px;margin-left:15px}.graph-title.svelte-x329w9{font-size:18px;margin-bottom:10px;font-family:RobotoBold}.button-container.svelte-x329w9{margin-left:25px}.button.svelte-x329w9{background-color:#f0f0f0;border:1px solid #ccc;color:#333;padding:5px;font-size:12px;border-radius:4px;width:170px;cursor:pointer;transition:background-color .2s,border-color .3s}.button.svelte-x329w9:hover{background-color:#e0e0e0;border-color:#bbb}.button-off.svelte-x329w9{opacity:.5}@media (max-width: 420px){.button-container.svelte-x329w9{margin-left:120px}.svg-container.svelte-x329w9{margin-left:100px}}.photo.svelte-15vghzv.svelte-15vghzv{max-width:100%;max-height:750px;width:auto;height:auto;display:block;margin:25px auto 0}.caption.svelte-15vghzv.svelte-15vghzv{font-size:14px;margin-top:2px;line-height:18px}.radial-title.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;margin:0 auto}.radial-legend.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;margin-top:0;margin-bottom:0;height:30px}.legend-item.svelte-15vghzv.svelte-15vghzv{display:flex;align-items:center;margin:0 20px}.legend-circ.svelte-15vghzv.svelte-15vghzv{width:30px;height:30px;margin-right:10px}.legend-item.svelte-15vghzv p.svelte-15vghzv{font-size:12px;color:#000;font-family:RobotoRegular}#bar.svelte-15vghzv.svelte-15vghzv{position:fixed;overflow:hidden;top:0;height:50px;background-color:var(--brandWhite);margin-bottom:20px;border-bottom:1px solid var(--brandDarkGreen);width:100%;min-width:200px;padding-left:0;padding-right:0;z-index:5;opacity:.9}#bar.svelte-15vghzv #logo.svelte-15vghzv{margin:auto;max-width:230px;height:50px;z-index:6}#bar.svelte-15vghzv a.svelte-15vghzv{color:#000}#bar.svelte-15vghzv a.svelte-15vghzv:hover{opacity:.7}#bar.svelte-15vghzv img.svelte-15vghzv{height:50px}#bar.svelte-15vghzv img.svelte-15vghzv:hover{height:50px;opacity:.5;cursor:pointer}.chart-container.svelte-15vghzv.svelte-15vghzv{margin:0;display:flex;justify-content:center;align-items:center;height:100%;overflow-x:hidden}.radial-container.svelte-15vghzv.svelte-15vghzv{margin-top:10px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;height:100%;overflow:hidden}.flex-container-weekday.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:normal;flex-wrap:wrap;width:100%;margin:0;padding:0}.flex-container-weekend.svelte-15vghzv.svelte-15vghzv{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 25%;text-align:center}@media (width > 1460px){.radial-container.svelte-15vghzv.svelte-15vghzv{display:none}}@media (width < 1460px){.flex-container-weekday.svelte-15vghzv.svelte-15vghzv,.flex-container-weekend.svelte-15vghzv.svelte-15vghzv{display:none}}@media (max-width: 1460px){.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 50%;width:20%}}@media (max-width: 700px){.weekday-item.svelte-15vghzv.svelte-15vghzv{flex:1 1 100%;transform:scale(1.5);margin:100px 0;display:none}.weekend-item.svelte-15vghzv.svelte-15vghzv{display:none}} diff --git a/docs/_app/immutable/chunks/singletons.60f5b3a0.js b/docs/_app/immutable/chunks/singletons.60f5b3a0.js new file mode 100644 index 0000000..b4b9fee --- /dev/null +++ b/docs/_app/immutable/chunks/singletons.60f5b3a0.js @@ -0,0 +1 @@ +import{n as d,s as E}from"./scheduler.9ccb0b1a.js";const u=[];function p(e,t=d){let n;const o=new Set;function r(s){if(E(e,s)&&(e=s,n)){const c=!u.length;for(const l of o)l[1](),u.push(l,e);if(c){for(let l=0;l{o.delete(l),o.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:a}}var g;const w=((g=globalThis.__sveltekit_yzyue6)==null?void 0:g.base)??"/bike-share-toronto";var k;const A=((k=globalThis.__sveltekit_yzyue6)==null?void 0:k.assets)??w,R="1733932668937",x="sveltekit:snapshot",O="sveltekit:scroll",U="sveltekit:index",_={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},y=location.origin;function L(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function N(){return{x:pageXOffset,y:pageYOffset}}function f(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const b={..._,"":_.hover};function m(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function z(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=m(e)}}function P(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const o=e instanceof SVGAElement?e.target.baseVal:e.target,r=!n||!!o||T(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),i=(n==null?void 0:n.origin)===y&&e.hasAttribute("download");return{url:n,external:r,target:o,download:i}}function V(e){let t=null,n=null,o=null,r=null,i=null,a=null,s=e;for(;s&&s!==document.documentElement;)o===null&&(o=f(s,"preload-code")),r===null&&(r=f(s,"preload-data")),t===null&&(t=f(s,"keepfocus")),n===null&&(n=f(s,"noscroll")),i===null&&(i=f(s,"reload")),a===null&&(a=f(s,"replacestate")),s=m(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return null}}return{preload_code:b[o??"off"],preload_data:b[r??"off"],keep_focus:c(t),noscroll:c(n),reload:c(i),replace_state:c(a)}}function h(e){const t=p(e);let n=!0;function o(){n=!0,t.update(a=>a)}function r(a){n=!1,t.set(a)}function i(a){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&a(s=c)})}return{notify:o,set:r,subscribe:i}}function S(){const{set:e,subscribe:t}=p(!1);let n;async function o(){clearTimeout(n);try{const r=await fetch(`${A}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const a=(await r.json()).version!==R;return a&&(e(!0),clearTimeout(n)),a}catch{return!1}}return{subscribe:t,check:o}}function T(e,t){return e.origin!==y||!e.pathname.startsWith(t)}let v;function Y(e){v=e.client}function j(e){return(...t)=>v[e](...t)}const q={url:h({}),page:h({}),navigating:p(null),updated:S()};export{U as I,_ as P,O as S,x as a,P as b,V as c,q as d,w as e,z as f,L as g,Y as h,T as i,j,y as o,N as s}; diff --git a/docs/_app/immutable/chunks/singletons.6faf3746.js b/docs/_app/immutable/chunks/singletons.6faf3746.js deleted file mode 100644 index 3d02a8f..0000000 --- a/docs/_app/immutable/chunks/singletons.6faf3746.js +++ /dev/null @@ -1 +0,0 @@ -import{n as d,s as E}from"./scheduler.9ccb0b1a.js";const u=[];function p(e,t=d){let n;const o=new Set;function r(s){if(E(e,s)&&(e=s,n)){const c=!u.length;for(const i of o)i[1](),u.push(i,e);if(c){for(let i=0;i{o.delete(i),o.size===0&&n&&(n(),n=null)}}return{set:r,update:l,subscribe:a}}var g;const w=((g=globalThis.__sveltekit_13628yi)==null?void 0:g.base)??"/bike-share-toronto";var k;const A=((k=globalThis.__sveltekit_13628yi)==null?void 0:k.assets)??w,R="1733930571635",x="sveltekit:snapshot",O="sveltekit:scroll",U="sveltekit:index",_={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},m=location.origin;function L(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function N(){return{x:pageXOffset,y:pageYOffset}}function f(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const b={..._,"":_.hover};function v(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function P(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=v(e)}}function V(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const o=e instanceof SVGAElement?e.target.baseVal:e.target,r=!n||!!o||T(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),l=(n==null?void 0:n.origin)===m&&e.hasAttribute("download");return{url:n,external:r,target:o,download:l}}function Y(e){let t=null,n=null,o=null,r=null,l=null,a=null,s=e;for(;s&&s!==document.documentElement;)o===null&&(o=f(s,"preload-code")),r===null&&(r=f(s,"preload-data")),t===null&&(t=f(s,"keepfocus")),n===null&&(n=f(s,"noscroll")),l===null&&(l=f(s,"reload")),a===null&&(a=f(s,"replacestate")),s=v(s);function c(i){switch(i){case"":case"true":return!0;case"off":case"false":return!1;default:return null}}return{preload_code:b[o??"off"],preload_data:b[r??"off"],keep_focus:c(t),noscroll:c(n),reload:c(l),replace_state:c(a)}}function h(e){const t=p(e);let n=!0;function o(){n=!0,t.update(a=>a)}function r(a){n=!1,t.set(a)}function l(a){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&a(s=c)})}return{notify:o,set:r,subscribe:l}}function S(){const{set:e,subscribe:t}=p(!1);let n;async function o(){clearTimeout(n);try{const r=await fetch(`${A}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const a=(await r.json()).version!==R;return a&&(e(!0),clearTimeout(n)),a}catch{return!1}}return{subscribe:t,check:o}}function T(e,t){return e.origin!==m||!e.pathname.startsWith(t)}let y;function j(e){y=e.client}function q(e){return(...t)=>y[e](...t)}const K={url:h({}),page:h({}),navigating:p(null),updated:S()};export{U as I,_ as P,O as S,x as a,V as b,Y as c,K as d,w as e,P as f,L as g,j as h,T as i,q as j,m as o,N as s}; diff --git a/docs/_app/immutable/entry/app.c8036975.js b/docs/_app/immutable/entry/app.1b25f105.js similarity index 96% rename from docs/_app/immutable/entry/app.c8036975.js rename to docs/_app/immutable/entry/app.1b25f105.js index 1bd87f1..ae34e72 100644 --- a/docs/_app/immutable/entry/app.c8036975.js +++ b/docs/_app/immutable/entry/app.1b25f105.js @@ -1 +1 @@ -import{s as U,a as j,o as W,t as z,b as I}from"../chunks/scheduler.9ccb0b1a.js";import{S as F,i as G,s as H,e as m,c as J,a as g,t as p,b as L,d as h,f as w,g as K,h as M,j as Q,k as T,l as R,m as X,n as Y,o as Z,p as P,q as b,r as k,u as O,v as E,w as v}from"../chunks/index.d088b87a.js";const x="modulepreload",ee=function(a,e){return new URL(a,e).href},y={},d=function(e,n,s){if(!n||n.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(n.map(f=>{if(f=ee(f,s),f in y)return;y[f]=!0;const t=f.endsWith(".css"),o=t?'[rel="stylesheet"]':"";if(!!s)for(let l=i.length-1;l>=0;l--){const u=i[l];if(u.href===f&&(!t||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${o}`))return;const _=document.createElement("link");if(_.rel=t?"stylesheet":x,t||(_.as="script",_.crossOrigin=""),_.href=f,document.head.appendChild(_),t)return new Promise((l,u)=>{_.addEventListener("load",l),_.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${f}`)))})})).then(()=>e()).catch(f=>{const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=f,window.dispatchEvent(t),!t.defaultPrevented)throw f})},ce={};function te(a){let e,n,s;var i=a[1][0];function f(t,o){return{props:{data:t[3],form:t[2]}}}return i&&(e=b(i,f(a)),a[15](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][0])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[15](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&8&&(r.data=t[3]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[15](null),e&&v(e,t)}}}function ne(a){let e,n,s;var i=a[1][0];function f(t,o){return{props:{data:t[3],$$slots:{default:[oe]},$$scope:{ctx:t}}}}return i&&(e=b(i,f(a)),a[14](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][0])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[14](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&8&&(r.data=t[3]),o&65591&&(r.$$scope={dirty:o,ctx:t}),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[14](null),e&&v(e,t)}}}function ie(a){let e,n,s;var i=a[1][1];function f(t,o){return{props:{data:t[4],form:t[2]}}}return i&&(e=b(i,f(a)),a[13](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][1])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[13](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&16&&(r.data=t[4]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[13](null),e&&v(e,t)}}}function re(a){let e,n,s;var i=a[1][1];function f(t,o){return{props:{data:t[4],$$slots:{default:[se]},$$scope:{ctx:t}}}}return i&&(e=b(i,f(a)),a[12](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][1])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[12](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&16&&(r.data=t[4]),o&65575&&(r.$$scope={dirty:o,ctx:t}),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[12](null),e&&v(e,t)}}}function se(a){let e,n,s;var i=a[1][2];function f(t,o){return{props:{data:t[5],form:t[2]}}}return i&&(e=b(i,f(a)),a[11](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][2])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[11](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&32&&(r.data=t[5]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[11](null),e&&v(e,t)}}}function oe(a){let e,n,s,i;const f=[re,ie],t=[];function o(r,_){return r[1][2]?0:1}return e=o(a),n=t[e]=f[e](a),{c(){n.c(),s=m()},l(r){n.l(r),s=m()},m(r,_){t[e].m(r,_),g(r,s,_),i=!0},p(r,_){let l=e;e=o(r),e===l?t[e].p(r,_):(P(),p(t[l],1,1,()=>{t[l]=null}),L(),n=t[e],n?n.p(r,_):(n=t[e]=f[e](r),n.c()),h(n,1),n.m(s.parentNode,s))},i(r){i||(h(n),i=!0)},o(r){p(n),i=!1},d(r){r&&w(s),t[e].d(r)}}}function A(a){let e,n=a[7]&&N(a);return{c(){e=K("div"),n&&n.c(),this.h()},l(s){e=M(s,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var i=Q(e);n&&n.l(i),i.forEach(w),this.h()},h(){T(e,"id","svelte-announcer"),T(e,"aria-live","assertive"),T(e,"aria-atomic","true"),R(e,"position","absolute"),R(e,"left","0"),R(e,"top","0"),R(e,"clip","rect(0 0 0 0)"),R(e,"clip-path","inset(50%)"),R(e,"overflow","hidden"),R(e,"white-space","nowrap"),R(e,"width","1px"),R(e,"height","1px")},m(s,i){g(s,e,i),n&&n.m(e,null)},p(s,i){s[7]?n?n.p(s,i):(n=N(s),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(s){s&&w(e),n&&n.d()}}}function N(a){let e;return{c(){e=X(a[8])},l(n){e=Y(n,a[8])},m(n,s){g(n,e,s)},p(n,s){s&256&&Z(e,n[8])},d(n){n&&w(e)}}}function ae(a){let e,n,s,i,f;const t=[ne,te],o=[];function r(l,u){return l[1][1]?0:1}e=r(a),n=o[e]=t[e](a);let _=a[6]&&A(a);return{c(){n.c(),s=H(),_&&_.c(),i=m()},l(l){n.l(l),s=J(l),_&&_.l(l),i=m()},m(l,u){o[e].m(l,u),g(l,s,u),_&&_.m(l,u),g(l,i,u),f=!0},p(l,[u]){let D=e;e=r(l),e===D?o[e].p(l,u):(P(),p(o[D],1,1,()=>{o[D]=null}),L(),n=o[e],n?n.p(l,u):(n=o[e]=t[e](l),n.c()),h(n,1),n.m(s.parentNode,s)),l[6]?_?_.p(l,u):(_=A(l),_.c(),_.m(i.parentNode,i)):_&&(_.d(1),_=null)},i(l){f||(h(n),f=!0)},o(l){p(n),f=!1},d(l){l&&(w(s),w(i)),o[e].d(l),_&&_.d(l)}}}function fe(a,e,n){let{stores:s}=e,{page:i}=e,{constructors:f}=e,{components:t=[]}=e,{form:o}=e,{data_0:r=null}=e,{data_1:_=null}=e,{data_2:l=null}=e;j(s.page.notify);let u=!1,D=!1,V=null;W(()=>{const c=s.page.subscribe(()=>{u&&(n(7,D=!0),z().then(()=>{n(8,V=document.title||"untitled page")}))});return n(6,u=!0),c});function $(c){I[c?"unshift":"push"](()=>{t[2]=c,n(0,t)})}function S(c){I[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function C(c){I[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function q(c){I[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}function B(c){I[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}return a.$$set=c=>{"stores"in c&&n(9,s=c.stores),"page"in c&&n(10,i=c.page),"constructors"in c&&n(1,f=c.constructors),"components"in c&&n(0,t=c.components),"form"in c&&n(2,o=c.form),"data_0"in c&&n(3,r=c.data_0),"data_1"in c&&n(4,_=c.data_1),"data_2"in c&&n(5,l=c.data_2)},a.$$.update=()=>{a.$$.dirty&1536&&s.page.set(i)},[t,f,o,r,_,l,u,D,V,s,i,$,S,C,q,B]}class ue extends F{constructor(e){super(),G(this,e,fe,ae,U,{stores:9,page:10,constructors:1,components:0,form:2,data_0:3,data_1:4,data_2:5})}}const me=[()=>d(()=>import("../nodes/0.ddbdbecb.js"),["../nodes/0.ddbdbecb.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/1.c20d0cd9.js"),["../nodes/1.c20d0cd9.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/singletons.6faf3746.js"],import.meta.url),()=>d(()=>import("../nodes/2.66f19943.js"),["../nodes/2.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/3.66f19943.js"),["../nodes/3.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/4.ddbdbecb.js"),["../nodes/4.ddbdbecb.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/5.66f19943.js"),["../nodes/5.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/6.bb284344.js"),["../nodes/6.bb284344.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/singletons.6faf3746.js"],import.meta.url),()=>d(()=>import("../nodes/7.094030d9.js"),["../nodes/7.094030d9.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/linear.d97c9073.js","../assets/7.0326b12b.css","../assets/global-styles.071aba25.css"],import.meta.url),()=>d(()=>import("../nodes/8.e977b53b.js"),["../nodes/8.e977b53b.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/top-logo-full.85e1d8e3.js","../chunks/linear.d97c9073.js","../assets/8.2874c3c5.css","../assets/global-styles.071aba25.css","../assets/green-page-styles.6d76ab63.css"],import.meta.url),()=>d(()=>import("../nodes/9.4f3b0b8a.js"),["../nodes/9.4f3b0b8a.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../assets/9.ba51d2d1.css","../assets/global-styles.071aba25.css","../assets/green-page-styles.6d76ab63.css"],import.meta.url),()=>d(()=>import("../nodes/10.33e539de.js"),["../nodes/10.33e539de.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/top-logo-full.85e1d8e3.js","../assets/10.a8c9c0b1.css","../assets/global-styles.071aba25.css"],import.meta.url)],pe=[],he={"/":[6],"/efit-analysis":[7,[2]],"/growth":[8,[3]],"/station-relations-2023":[9,[4]],"/trips-062024":[10,[5]]},de={handleError:({error:a})=>{console.error(a)}};export{he as dictionary,de as hooks,ce as matchers,me as nodes,ue as root,pe as server_loads}; +import{s as U,a as j,o as W,t as z,b as I}from"../chunks/scheduler.9ccb0b1a.js";import{S as F,i as G,s as H,e as m,c as J,a as g,t as p,b as L,d as h,f as w,g as K,h as M,j as Q,k as T,l as R,m as X,n as Y,o as Z,p as P,q as b,r as k,u as O,v as E,w as v}from"../chunks/index.d088b87a.js";const x="modulepreload",ee=function(a,e){return new URL(a,e).href},y={},d=function(e,n,s){if(!n||n.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(n.map(f=>{if(f=ee(f,s),f in y)return;y[f]=!0;const t=f.endsWith(".css"),o=t?'[rel="stylesheet"]':"";if(!!s)for(let l=i.length-1;l>=0;l--){const u=i[l];if(u.href===f&&(!t||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${o}`))return;const _=document.createElement("link");if(_.rel=t?"stylesheet":x,t||(_.as="script",_.crossOrigin=""),_.href=f,document.head.appendChild(_),t)return new Promise((l,u)=>{_.addEventListener("load",l),_.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${f}`)))})})).then(()=>e()).catch(f=>{const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=f,window.dispatchEvent(t),!t.defaultPrevented)throw f})},ce={};function te(a){let e,n,s;var i=a[1][0];function f(t,o){return{props:{data:t[3],form:t[2]}}}return i&&(e=b(i,f(a)),a[15](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][0])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[15](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&8&&(r.data=t[3]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[15](null),e&&v(e,t)}}}function ne(a){let e,n,s;var i=a[1][0];function f(t,o){return{props:{data:t[3],$$slots:{default:[oe]},$$scope:{ctx:t}}}}return i&&(e=b(i,f(a)),a[14](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][0])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[14](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&8&&(r.data=t[3]),o&65591&&(r.$$scope={dirty:o,ctx:t}),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[14](null),e&&v(e,t)}}}function ie(a){let e,n,s;var i=a[1][1];function f(t,o){return{props:{data:t[4],form:t[2]}}}return i&&(e=b(i,f(a)),a[13](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][1])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[13](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&16&&(r.data=t[4]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[13](null),e&&v(e,t)}}}function re(a){let e,n,s;var i=a[1][1];function f(t,o){return{props:{data:t[4],$$slots:{default:[se]},$$scope:{ctx:t}}}}return i&&(e=b(i,f(a)),a[12](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][1])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[12](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&16&&(r.data=t[4]),o&65575&&(r.$$scope={dirty:o,ctx:t}),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[12](null),e&&v(e,t)}}}function se(a){let e,n,s;var i=a[1][2];function f(t,o){return{props:{data:t[5],form:t[2]}}}return i&&(e=b(i,f(a)),a[11](e)),{c(){e&&k(e.$$.fragment),n=m()},l(t){e&&O(e.$$.fragment,t),n=m()},m(t,o){e&&E(e,t,o),g(t,n,o),s=!0},p(t,o){if(o&2&&i!==(i=t[1][2])){if(e){P();const r=e;p(r.$$.fragment,1,0,()=>{v(r,1)}),L()}i?(e=b(i,f(t)),t[11](e),k(e.$$.fragment),h(e.$$.fragment,1),E(e,n.parentNode,n)):e=null}else if(i){const r={};o&32&&(r.data=t[5]),o&4&&(r.form=t[2]),e.$set(r)}},i(t){s||(e&&h(e.$$.fragment,t),s=!0)},o(t){e&&p(e.$$.fragment,t),s=!1},d(t){t&&w(n),a[11](null),e&&v(e,t)}}}function oe(a){let e,n,s,i;const f=[re,ie],t=[];function o(r,_){return r[1][2]?0:1}return e=o(a),n=t[e]=f[e](a),{c(){n.c(),s=m()},l(r){n.l(r),s=m()},m(r,_){t[e].m(r,_),g(r,s,_),i=!0},p(r,_){let l=e;e=o(r),e===l?t[e].p(r,_):(P(),p(t[l],1,1,()=>{t[l]=null}),L(),n=t[e],n?n.p(r,_):(n=t[e]=f[e](r),n.c()),h(n,1),n.m(s.parentNode,s))},i(r){i||(h(n),i=!0)},o(r){p(n),i=!1},d(r){r&&w(s),t[e].d(r)}}}function A(a){let e,n=a[7]&&N(a);return{c(){e=K("div"),n&&n.c(),this.h()},l(s){e=M(s,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var i=Q(e);n&&n.l(i),i.forEach(w),this.h()},h(){T(e,"id","svelte-announcer"),T(e,"aria-live","assertive"),T(e,"aria-atomic","true"),R(e,"position","absolute"),R(e,"left","0"),R(e,"top","0"),R(e,"clip","rect(0 0 0 0)"),R(e,"clip-path","inset(50%)"),R(e,"overflow","hidden"),R(e,"white-space","nowrap"),R(e,"width","1px"),R(e,"height","1px")},m(s,i){g(s,e,i),n&&n.m(e,null)},p(s,i){s[7]?n?n.p(s,i):(n=N(s),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(s){s&&w(e),n&&n.d()}}}function N(a){let e;return{c(){e=X(a[8])},l(n){e=Y(n,a[8])},m(n,s){g(n,e,s)},p(n,s){s&256&&Z(e,n[8])},d(n){n&&w(e)}}}function ae(a){let e,n,s,i,f;const t=[ne,te],o=[];function r(l,u){return l[1][1]?0:1}e=r(a),n=o[e]=t[e](a);let _=a[6]&&A(a);return{c(){n.c(),s=H(),_&&_.c(),i=m()},l(l){n.l(l),s=J(l),_&&_.l(l),i=m()},m(l,u){o[e].m(l,u),g(l,s,u),_&&_.m(l,u),g(l,i,u),f=!0},p(l,[u]){let D=e;e=r(l),e===D?o[e].p(l,u):(P(),p(o[D],1,1,()=>{o[D]=null}),L(),n=o[e],n?n.p(l,u):(n=o[e]=t[e](l),n.c()),h(n,1),n.m(s.parentNode,s)),l[6]?_?_.p(l,u):(_=A(l),_.c(),_.m(i.parentNode,i)):_&&(_.d(1),_=null)},i(l){f||(h(n),f=!0)},o(l){p(n),f=!1},d(l){l&&(w(s),w(i)),o[e].d(l),_&&_.d(l)}}}function fe(a,e,n){let{stores:s}=e,{page:i}=e,{constructors:f}=e,{components:t=[]}=e,{form:o}=e,{data_0:r=null}=e,{data_1:_=null}=e,{data_2:l=null}=e;j(s.page.notify);let u=!1,D=!1,V=null;W(()=>{const c=s.page.subscribe(()=>{u&&(n(7,D=!0),z().then(()=>{n(8,V=document.title||"untitled page")}))});return n(6,u=!0),c});function $(c){I[c?"unshift":"push"](()=>{t[2]=c,n(0,t)})}function S(c){I[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function C(c){I[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function q(c){I[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}function B(c){I[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}return a.$$set=c=>{"stores"in c&&n(9,s=c.stores),"page"in c&&n(10,i=c.page),"constructors"in c&&n(1,f=c.constructors),"components"in c&&n(0,t=c.components),"form"in c&&n(2,o=c.form),"data_0"in c&&n(3,r=c.data_0),"data_1"in c&&n(4,_=c.data_1),"data_2"in c&&n(5,l=c.data_2)},a.$$.update=()=>{a.$$.dirty&1536&&s.page.set(i)},[t,f,o,r,_,l,u,D,V,s,i,$,S,C,q,B]}class ue extends F{constructor(e){super(),G(this,e,fe,ae,U,{stores:9,page:10,constructors:1,components:0,form:2,data_0:3,data_1:4,data_2:5})}}const me=[()=>d(()=>import("../nodes/0.ddbdbecb.js"),["../nodes/0.ddbdbecb.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/1.7290de78.js"),["../nodes/1.7290de78.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/singletons.60f5b3a0.js"],import.meta.url),()=>d(()=>import("../nodes/2.66f19943.js"),["../nodes/2.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/3.66f19943.js"),["../nodes/3.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/4.ddbdbecb.js"),["../nodes/4.ddbdbecb.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/5.66f19943.js"),["../nodes/5.66f19943.js","../chunks/layout.57dd2e8f.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js"],import.meta.url),()=>d(()=>import("../nodes/6.da769bf3.js"),["../nodes/6.da769bf3.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/singletons.60f5b3a0.js"],import.meta.url),()=>d(()=>import("../nodes/7.8733e24e.js"),["../nodes/7.8733e24e.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/linear.d97c9073.js","../assets/7.c8ef3a7a.css","../assets/global-styles.071aba25.css"],import.meta.url),()=>d(()=>import("../nodes/8.e977b53b.js"),["../nodes/8.e977b53b.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/top-logo-full.85e1d8e3.js","../chunks/linear.d97c9073.js","../assets/8.2874c3c5.css","../assets/global-styles.071aba25.css","../assets/green-page-styles.6d76ab63.css"],import.meta.url),()=>d(()=>import("../nodes/9.4f3b0b8a.js"),["../nodes/9.4f3b0b8a.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../assets/9.ba51d2d1.css","../assets/global-styles.071aba25.css","../assets/green-page-styles.6d76ab63.css"],import.meta.url),()=>d(()=>import("../nodes/10.33e539de.js"),["../nodes/10.33e539de.js","../chunks/scheduler.9ccb0b1a.js","../chunks/index.d088b87a.js","../chunks/top-logo-full.85e1d8e3.js","../assets/10.a8c9c0b1.css","../assets/global-styles.071aba25.css"],import.meta.url)],pe=[],he={"/":[6],"/efit-analysis":[7,[2]],"/growth":[8,[3]],"/station-relations-2023":[9,[4]],"/trips-062024":[10,[5]]},de={handleError:({error:a})=>{console.error(a)}};export{he as dictionary,de as hooks,ce as matchers,me as nodes,ue as root,pe as server_loads}; diff --git a/docs/_app/immutable/entry/start.3ac2646e.js b/docs/_app/immutable/entry/start.82febf71.js similarity index 99% rename from docs/_app/immutable/entry/start.3ac2646e.js rename to docs/_app/immutable/entry/start.82febf71.js index b7b35fc..289f6ff 100644 --- a/docs/_app/immutable/entry/start.3ac2646e.js +++ b/docs/_app/immutable/entry/start.82febf71.js @@ -1,3 +1,3 @@ -import{o as me,t as we}from"../chunks/scheduler.9ccb0b1a.js";import{S as Ge,a as Je,I as M,g as Ce,f as De,b as ye,c as le,s as te,i as _e,d as B,e as q,o as Fe,P as Me,h as Ze}from"../chunks/singletons.6faf3746.js";function Qe(t,r){return t==="/"||r==="ignore"?t:r==="never"?t.endsWith("/")?t.slice(0,-1):t:r==="always"&&!t.endsWith("/")?t+"/":t}function et(t){return t.split("%25").map(decodeURI).join("%25")}function tt(t){for(const r in t)t[r]=decodeURIComponent(t[r]);return t}const nt=["href","pathname","search","searchParams","toString","toJSON"];function at(t,r){const f=new URL(t);for(const i of nt)Object.defineProperty(f,i,{get(){return r(),t[i]},enumerable:!0,configurable:!0});return rt(f),f}function rt(t){Object.defineProperty(t,"hash",{get(){throw new Error("Cannot access event.url.hash. Consider using `$page.url.hash` inside a component instead")}})}const ot="/__data.json";function it(t){return t.replace(/\/$/,"")+ot}function st(...t){let r=5381;for(const f of t)if(typeof f=="string"){let i=f.length;for(;i;)r=r*33^f.charCodeAt(--i)}else if(ArrayBuffer.isView(f)){const i=new Uint8Array(f.buffer,f.byteOffset,f.byteLength);let h=i.length;for(;h;)r=r*33^i[--h]}else throw new TypeError("value must be a string or TypedArray");return(r>>>0).toString(36)}const Ke=window.fetch;window.fetch=(t,r)=>((t instanceof Request?t.method:(r==null?void 0:r.method)||"GET")!=="GET"&&ae.delete(Se(t)),Ke(t,r));const ae=new Map;function ct(t){const r=atob(t),f=new Uint8Array(r.length);for(let i=0;i0){const i=Se(t,f),h=ae.get(i);if(h){if(performance.now(){const h=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(i);if(h)return r.push({name:h[1],matcher:h[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const u=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(i);if(u)return r.push({name:u[1],matcher:u[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!i)return;const E=i.split(/\[(.+?)\](?!\])/);return"/"+E.map((g,m)=>{if(m%2){if(g.startsWith("x+"))return ve(String.fromCharCode(parseInt(g.slice(2),16)));if(g.startsWith("u+"))return ve(String.fromCharCode(...g.slice(2).split("-").map(U=>parseInt(U,16))));const d=ut.exec(g);if(!d)throw new Error(`Invalid param: ${g}. Params and matcher names can only have underscores and alphanumeric characters.`);const[,N,T,R,D]=d;return r.push({name:R,matcher:D,optional:!!N,rest:!!T,chained:T?m===1&&E[0]==="":!1}),T?"(.*?)":N?"([^/]*)?":"([^/]+?)"}return ve(g)}).join("")}).join("")}/?$`),params:r}}function ht(t){return!/^\([^)]+\)$/.test(t)}function pt(t){return t.slice(1).split("/").filter(ht)}function gt(t,r,f){const i={},h=t.slice(1),u=h.filter(l=>l!==void 0);let E=0;for(let l=0;ld).join("/"),E=0),m===void 0){g.rest&&(i[g.name]="");continue}if(!g.matcher||f[g.matcher](m)){i[g.name]=m;const d=r[l+1],N=h[l+1];d&&!d.rest&&d.optional&&N&&g.chained&&(E=0),!d&&!N&&Object.keys(i).length===u.length&&(E=0);continue}if(g.optional&&g.chained){E++;continue}return}if(!E)return i}function ve(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function mt({nodes:t,server_loads:r,dictionary:f,matchers:i}){const h=new Set(r);return Object.entries(f).map(([l,[g,m,d]])=>{const{pattern:N,params:T}=dt(l),R={id:l,exec:D=>{const U=N.exec(D);if(U)return gt(U,T,i)},errors:[1,...d||[]].map(D=>t[D]),layouts:[0,...m||[]].map(E),leaf:u(g)};return R.errors.length=R.layouts.length=Math.max(R.errors.length,R.layouts.length),R});function u(l){const g=l<0;return g&&(l=~l),[g,t[l]]}function E(l){return l===void 0?l:[h.has(l),t[l]]}}function ze(t){try{return JSON.parse(sessionStorage[t])}catch{}}function Ve(t,r){const f=JSON.stringify(r);try{sessionStorage[t]=f}catch{}}const wt=-1,yt=-2,_t=-3,vt=-4,bt=-5,Et=-6;function St(t,r){if(typeof t=="number")return h(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const f=t,i=Array(f.length);function h(u,E=!1){if(u===wt)return;if(u===_t)return NaN;if(u===vt)return 1/0;if(u===bt)return-1/0;if(u===Et)return-0;if(E)throw new Error("Invalid input");if(u in i)return i[u];const l=f[u];if(!l||typeof l!="object")i[u]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const g=l[0],m=r==null?void 0:r[g];if(m)return i[u]=m(h(l[1]));switch(g){case"Date":i[u]=new Date(l[1]);break;case"Set":const d=new Set;i[u]=d;for(let R=1;Rr!=null)}const We=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...We];const Rt=new Set([...We]);[...Rt];async function At(t,r){var f;for(const i in t)if(typeof((f=t[i])==null?void 0:f.then)=="function")return Object.fromEntries(await Promise.all(Object.entries(t).map(async([h,u])=>[h,await u])));return t}class ne{constructor(r,f){this.status=r,typeof f=="string"?this.body={message:f}:f?this.body=f:this.body={message:`Error: ${r}`}}toString(){return JSON.stringify(this.body)}}class qe{constructor(r,f){this.status=r,this.location=f}}class It extends Error{constructor(r){super(),this.status=404,this.message=`Not found: ${r}`}}const Lt="x-sveltekit-invalidated",Pt="x-sveltekit-trailing-slash",J=ze(Ge)??{},ee=ze(Je)??{};function be(t){J[t]=te()}function K(t){return location.href=t.href,new Promise(()=>{})}function Ot(t,r){var je;const f=mt(t),i=t.nodes[0],h=t.nodes[1];i(),h();const u=document.documentElement,E=[],l=[];let g=null;const m={before_navigate:[],on_navigate:[],after_navigate:[]};let d={branch:[],error:null,url:null},N=!1,T=!1,R=!0,D=!1,U=!1,C=!1,z=!1,V,x=(je=history.state)==null?void 0:je[M];x||(x=Date.now(),history.replaceState({...history.state,[M]:x},"",location.href));const fe=J[x];fe&&(history.scrollRestoration="manual",scrollTo(fe.x,fe.y));let H,W,Y;async function ke(){if(Y=Y||Promise.resolve(),await Y,!Y)return;Y=null;const e=new URL(location.href),s=Z(e,!0);g=null;const n=W={},o=s&&await he(s);if(n===W&&o){if(o.type==="redirect")return re(new URL(o.location,e).href,{},1,n);o.props.page!==void 0&&(H=o.props.page),V.$set(o.props)}}function Re(e){l.some(s=>s==null?void 0:s.snapshot)&&(ee[e]=l.map(s=>{var n;return(n=s==null?void 0:s.snapshot)==null?void 0:n.capture()}))}function Ae(e){var s;(s=ee[e])==null||s.forEach((n,o)=>{var a,c;(c=(a=l[o])==null?void 0:a.snapshot)==null||c.restore(n)})}function Ie(){be(x),Ve(Ge,J),Re(x),Ve(Je,ee)}async function re(e,{noScroll:s=!1,replaceState:n=!1,keepFocus:o=!1,state:a={},invalidateAll:c=!1},p,_){return typeof e=="string"&&(e=new URL(e,Ce(document))),ce({url:e,scroll:s?te():null,keepfocus:o,redirect_count:p,details:{state:a,replaceState:n},nav_token:_,accepted:()=>{c&&(z=!0)},blocked:()=>{},type:"goto"})}async function Le(e){return g={id:e.id,promise:he(e).then(s=>(s.type==="loaded"&&s.state.error&&(g=null),s))},g.promise}async function oe(...e){const n=f.filter(o=>e.some(a=>o.exec(a))).map(o=>Promise.all([...o.layouts,o.leaf].map(a=>a==null?void 0:a[1]())));await Promise.all(n)}function Pe(e){var o;d=e.state;const s=document.querySelector("style[data-sveltekit]");s&&s.remove(),H=e.props.page,V=new t.root({target:r,props:{...e.props,stores:B,components:l},hydrate:!0}),Ae(x);const n={from:null,to:{params:d.params,route:{id:((o=d.route)==null?void 0:o.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};m.after_navigate.forEach(a=>a(n)),T=!0}async function X({url:e,params:s,branch:n,status:o,error:a,route:c,form:p}){let _="never";for(const y of n)(y==null?void 0:y.slash)!==void 0&&(_=y.slash);e.pathname=Qe(e.pathname,_),e.search=e.search;const b={type:"loaded",state:{url:e,params:s,branch:n,error:a,route:c},props:{constructors:kt(n).map(y=>y.node.component)}};p!==void 0&&(b.props.form=p);let v={},L=!H,A=0;for(let y=0;y(_.route=!0,w[O])}),params:new Proxy(o,{get:(w,O)=>(_.params.add(O),w[O])}),data:(c==null?void 0:c.data)??null,url:at(n,()=>{_.url=!0}),async fetch(w,O){let j;w instanceof Request?(j=w.url,O={body:w.method==="GET"||w.method==="HEAD"?void 0:await w.blob(),cache:w.cache,credentials:w.credentials,headers:w.headers,integrity:w.integrity,keepalive:w.keepalive,method:w.method,mode:w.mode,redirect:w.redirect,referrer:w.referrer,referrerPolicy:w.referrerPolicy,signal:w.signal,...O}):j=w;const F=new URL(j,n);return P(F.href),F.origin===n.origin&&(j=F.href.slice(n.origin.length)),T?ft(j,F.href,O):lt(j,O)},setHeaders:()=>{},depends:P,parent(){return _.parent=!0,s()}};p=await b.universal.load.call(null,y)??null,p=p?await At(p,a.id):null}return{node:b,loader:e,server:c,universal:(L=b.universal)!=null&&L.load?{type:"data",data:p,uses:_}:null,data:p??(c==null?void 0:c.data)??null,slash:n.pathname===q||n.pathname===q+"/"?"always":((A=b.universal)==null?void 0:A.trailingSlash)??(c==null?void 0:c.slash)}}function Oe(e,s,n,o,a){if(z)return!0;if(!o)return!1;if(o.parent&&e||o.route&&s||o.url&&n)return!0;for(const c of o.params)if(a[c]!==d.params[c])return!0;for(const c of o.dependencies)if(E.some(p=>p(new URL(c))))return!0;return!1}function de(e,s){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?s??null:null}async function he({id:e,invalidating:s,url:n,params:o,route:a}){if((g==null?void 0:g.id)===e)return g.promise;const{errors:c,layouts:p,leaf:_}=a,b=[...p,_];c.forEach(S=>S==null?void 0:S().catch(()=>{})),b.forEach(S=>S==null?void 0:S[1]().catch(()=>{}));let v=null;const L=d.url?e!==d.url.pathname+d.url.search:!1,A=d.route?a.id!==d.route.id:!1;let P=!1;const y=b.map((S,I)=>{var G;const k=d.branch[I],$=!!(S!=null&&S[0])&&((k==null?void 0:k.loader)!==S[1]||Oe(P,A,L,(G=k.server)==null?void 0:G.uses,o));return $&&(P=!0),$});if(y.some(Boolean)){try{v=await He(n,y)}catch(S){return ie({status:S instanceof ne?S.status:500,error:await Q(S,{url:n,params:o,route:{id:a.id}}),url:n,route:a})}if(v.type==="redirect")return v}const w=v==null?void 0:v.nodes;let O=!1;const j=b.map(async(S,I)=>{var pe;if(!S)return;const k=d.branch[I],$=w==null?void 0:w[I];if((!$||$.type==="skip")&&S[1]===(k==null?void 0:k.loader)&&!Oe(O,A,L,(pe=k.universal)==null?void 0:pe.uses,o))return k;if(O=!0,($==null?void 0:$.type)==="error")throw $;return ue({loader:S[1],url:n,params:o,route:a,parent:async()=>{var Te;const $e={};for(let ge=0;ge{});const F=[];for(let S=0;SPromise.resolve({}),server_data_node:de(c)}),b={node:await h(),loader:h,universal:null,server:null,data:null};return await X({url:n,params:a,branch:[_,b],status:e,error:s,route:null})}function Z(e,s){if(_e(e,q))return;const n=se(e);for(const o of f){const a=o.exec(n);if(a)return{id:e.pathname+e.search,invalidating:s,route:o,params:tt(a),url:e}}}function se(e){return et(e.pathname.slice(q.length)||"/")}function Ue({url:e,type:s,intent:n,delta:o}){let a=!1;const c=Be(d,n,e,s);o!==void 0&&(c.navigation.delta=o);const p={...c.navigation,cancel:()=>{a=!0,c.reject(new Error("navigation was cancelled"))}};return U||m.before_navigate.forEach(_=>_(p)),a?null:c}async function ce({url:e,scroll:s,keepfocus:n,redirect_count:o,details:a,type:c,delta:p,nav_token:_={},accepted:b,blocked:v}){var j,F,S;const L=Z(e,!1),A=Ue({url:e,type:c,delta:p,intent:L});if(!A){v();return}const P=x;b(),U=!0,T&&B.navigating.set(A.navigation),W=_;let y=L&&await he(L);if(!y){if(_e(e,q))return await K(e);y=await Ne(e,{id:null},await Q(new Error(`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(L==null?void 0:L.url)||e,W!==_)return A.reject(new Error("navigation was aborted")),!1;if(y.type==="redirect")if(o>=20)y=await ie({status:500,error:await Q(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return re(new URL(y.location,e).href,{},o+1,_),!1;else((j=y.props.page)==null?void 0:j.status)>=400&&await B.updated.check()&&await K(e);if(E.length=0,z=!1,D=!0,be(P),Re(P),(F=y.props.page)!=null&&F.url&&y.props.page.url.pathname!==e.pathname&&(e.pathname=(S=y.props.page)==null?void 0:S.url.pathname),a){const I=a.replaceState?0:1;if(a.state[M]=x+=I,history[a.replaceState?"replaceState":"pushState"](a.state,"",e),!a.replaceState){let k=x+1;for(;ee[k]||J[k];)delete ee[k],delete J[k],k+=1}}if(g=null,T){d=y.state,y.props.page&&(y.props.page.url=e);const I=(await Promise.all(m.on_navigate.map(k=>k(A.navigation)))).filter(k=>typeof k=="function");if(I.length>0){let k=function(){m.after_navigate=m.after_navigate.filter($=>!I.includes($))};I.push(k),m.after_navigate.push(...I)}V.$set(y.props)}else Pe(y);const{activeElement:w}=document;if(await we(),R){const I=e.hash&&document.getElementById(decodeURIComponent(e.hash.slice(1)));s?scrollTo(s.x,s.y):I?I.scrollIntoView():scrollTo(0,0)}const O=document.activeElement!==w&&document.activeElement!==document.body;!n&&!O&&Ee(),R=!0,y.props.page&&(H=y.props.page),U=!1,c==="popstate"&&Ae(x),A.fulfil(void 0),m.after_navigate.forEach(I=>I(A.navigation)),B.navigating.set(null),D=!1}async function Ne(e,s,n,o){return e.origin===Fe&&e.pathname===location.pathname&&!N?await ie({status:o,error:n,url:e,route:s}):await K(e)}function Xe(){let e;u.addEventListener("mousemove",c=>{const p=c.target;clearTimeout(e),e=setTimeout(()=>{o(p,2)},20)});function s(c){o(c.composedPath()[0],1)}u.addEventListener("mousedown",s),u.addEventListener("touchstart",s,{passive:!0});const n=new IntersectionObserver(c=>{for(const p of c)p.isIntersecting&&(oe(se(new URL(p.target.href))),n.unobserve(p.target))},{threshold:0});function o(c,p){const _=De(c,u);if(!_)return;const{url:b,external:v,download:L}=ye(_,q);if(v||L)return;const A=le(_);if(!A.reload)if(p<=A.preload_data){const P=Z(b,!1);P&&Le(P)}else p<=A.preload_code&&oe(se(b))}function a(){n.disconnect();for(const c of u.querySelectorAll("a")){const{url:p,external:_,download:b}=ye(c,q);if(_||b)continue;const v=le(c);v.reload||(v.preload_code===Me.viewport&&n.observe(c),v.preload_code===Me.eager&&oe(se(p)))}}m.after_navigate.push(a),a()}function Q(e,s){return e instanceof ne?e.body:t.hooks.handleError({error:e,event:s})??{message:s.route.id===null&&e instanceof It?"Not Found":"Internal Error"}}return{after_navigate:e=>{me(()=>(m.after_navigate.push(e),()=>{const s=m.after_navigate.indexOf(e);m.after_navigate.splice(s,1)}))},before_navigate:e=>{me(()=>(m.before_navigate.push(e),()=>{const s=m.before_navigate.indexOf(e);m.before_navigate.splice(s,1)}))},on_navigate:e=>{me(()=>(m.on_navigate.push(e),()=>{const s=m.on_navigate.indexOf(e);m.on_navigate.splice(s,1)}))},disable_scroll_handling:()=>{(D||!T)&&(R=!1)},goto:(e,s={})=>re(e,s,0),invalidate:e=>{if(typeof e=="function")E.push(e);else{const{href:s}=new URL(e,location.href);E.push(n=>n.href===s)}return ke()},invalidate_all:()=>(z=!0,ke()),preload_data:async e=>{const s=new URL(e,Ce(document)),n=Z(s,!1);if(!n)throw new Error(`Attempted to preload a URL that does not belong to this app: ${s}`);await Le(n)},preload_code:oe,apply_action:async e=>{if(e.type==="error"){const s=new URL(location.href),{branch:n,route:o}=d;if(!o)return;const a=await xe(d.branch.length,n,o.errors);if(a){const c=await X({url:s,params:d.params,branch:n.slice(0,a.idx).concat(a.node),status:e.status??500,error:e.error,route:o});d=c.state,V.$set(c.props),we().then(Ee)}}else e.type==="redirect"?re(e.location,{invalidateAll:!0},0):(V.$set({form:null,page:{...H,form:e.data,status:e.status}}),await we(),V.$set({form:e.data}),e.type==="success"&&Ee())},_start_router:()=>{var s;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let o=!1;if(Ie(),!U){const a=Be(d,void 0,null,"leave"),c={...a.navigation,cancel:()=>{o=!0,a.reject(new Error("navigation was cancelled"))}};m.before_navigate.forEach(p=>p(c))}o?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ie()}),(s=navigator.connection)!=null&&s.saveData||Xe(),u.addEventListener("click",n=>{var P;if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const o=De(n.composedPath()[0],u);if(!o)return;const{url:a,external:c,target:p,download:_}=ye(o,q);if(!a)return;if(p==="_parent"||p==="_top"){if(window.parent!==window)return}else if(p&&p!=="_self")return;const b=le(o);if(!(o instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||_)return;if(c||b.reload){Ue({url:a,type:"link"})?U=!0:n.preventDefault();return}const[L,A]=a.href.split("#");if(A!==void 0&&L===location.href.split("#")[0]){if(d.url.hash===a.hash){n.preventDefault(),(P=o.ownerDocument.getElementById(A))==null||P.scrollIntoView();return}if(C=!0,be(x),e(a),!b.replace_state)return;C=!1,n.preventDefault()}ce({url:a,scroll:b.noscroll?te():null,keepfocus:b.keep_focus??!1,redirect_count:0,details:{state:{},replaceState:b.replace_state??a.href===location.href},accepted:()=>n.preventDefault(),blocked:()=>n.preventDefault(),type:"link"})}),u.addEventListener("submit",n=>{if(n.defaultPrevented)return;const o=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formMethod)||o.method)!=="get")return;const p=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||o.action);if(_e(p,q))return;const _=n.target,{keep_focus:b,noscroll:v,reload:L,replace_state:A}=le(_);if(L)return;n.preventDefault(),n.stopPropagation();const P=new FormData(_),y=a==null?void 0:a.getAttribute("name");y&&P.append(y,(a==null?void 0:a.getAttribute("value"))??""),p.search=new URLSearchParams(P).toString(),ce({url:p,scroll:v?te():null,keepfocus:b??!1,redirect_count:0,details:{state:{},replaceState:A??p.href===location.href},nav_token:{},accepted:()=>{},blocked:()=>{},type:"form"})}),addEventListener("popstate",async n=>{var o,a;if(W={},(o=n.state)!=null&&o[M]){if(n.state[M]===x)return;const c=J[n.state[M]],p=new URL(location.href);if(((a=d.url)==null?void 0:a.href.split("#")[0])===location.href.split("#")[0]){e(p),J[x]=te(),x=n.state[M],scrollTo(c.x,c.y);return}const _=n.state[M]-x;await ce({url:p,scroll:c,keepfocus:!1,redirect_count:0,details:null,accepted:()=>{x=n.state[M]},blocked:()=>{history.go(-_)},type:"popstate",delta:_,nav_token:W})}else if(!C){const c=new URL(location.href);e(c)}}),addEventListener("hashchange",()=>{C&&(C=!1,history.replaceState({...history.state,[M]:++x},"",location.href))});for(const n of document.querySelectorAll("link"))n.rel==="icon"&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&B.navigating.set(null)});function e(n){d.url=n,B.page.set({...H,url:n}),B.page.notify()}},_hydrate:async({status:e=200,error:s,node_ids:n,params:o,route:a,data:c,form:p})=>{N=!0;const _=new URL(location.href);({params:o={},route:a={id:null}}=Z(_,!1)||{});let b;try{const v=n.map(async(P,y)=>{const w=c[y];return w!=null&&w.uses&&(w.uses=Ye(w.uses)),ue({loader:t.nodes[P],url:_,params:o,route:a,parent:async()=>{const O={};for(let j=0;jP===a.id);if(A){const P=A.layouts;for(let y=0;yu?"1":"0").join(""));const i=await Ke(f.href);if((h=i.headers.get("content-type"))!=null&&h.includes("text/html")&&await K(t),!i.ok)throw new ne(i.status,await i.json());return new Promise(async u=>{var N;const E=new Map,l=i.body.getReader(),g=new TextDecoder;function m(T){return St(T,{Promise:R=>new Promise((D,U)=>{E.set(R,{fulfil:D,reject:U})})})}let d="";for(;;){const{done:T,value:R}=await l.read();if(T&&!d)break;for(d+=!R&&d?` +import{o as me,t as we}from"../chunks/scheduler.9ccb0b1a.js";import{S as Ge,a as Je,I as M,g as Ce,f as De,b as ye,c as le,s as te,i as _e,d as B,e as q,o as Fe,P as Me,h as Ze}from"../chunks/singletons.60f5b3a0.js";function Qe(t,r){return t==="/"||r==="ignore"?t:r==="never"?t.endsWith("/")?t.slice(0,-1):t:r==="always"&&!t.endsWith("/")?t+"/":t}function et(t){return t.split("%25").map(decodeURI).join("%25")}function tt(t){for(const r in t)t[r]=decodeURIComponent(t[r]);return t}const nt=["href","pathname","search","searchParams","toString","toJSON"];function at(t,r){const f=new URL(t);for(const i of nt)Object.defineProperty(f,i,{get(){return r(),t[i]},enumerable:!0,configurable:!0});return rt(f),f}function rt(t){Object.defineProperty(t,"hash",{get(){throw new Error("Cannot access event.url.hash. Consider using `$page.url.hash` inside a component instead")}})}const ot="/__data.json";function it(t){return t.replace(/\/$/,"")+ot}function st(...t){let r=5381;for(const f of t)if(typeof f=="string"){let i=f.length;for(;i;)r=r*33^f.charCodeAt(--i)}else if(ArrayBuffer.isView(f)){const i=new Uint8Array(f.buffer,f.byteOffset,f.byteLength);let h=i.length;for(;h;)r=r*33^i[--h]}else throw new TypeError("value must be a string or TypedArray");return(r>>>0).toString(36)}const Ke=window.fetch;window.fetch=(t,r)=>((t instanceof Request?t.method:(r==null?void 0:r.method)||"GET")!=="GET"&&ae.delete(Se(t)),Ke(t,r));const ae=new Map;function ct(t){const r=atob(t),f=new Uint8Array(r.length);for(let i=0;i0){const i=Se(t,f),h=ae.get(i);if(h){if(performance.now(){const h=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(i);if(h)return r.push({name:h[1],matcher:h[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const u=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(i);if(u)return r.push({name:u[1],matcher:u[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!i)return;const E=i.split(/\[(.+?)\](?!\])/);return"/"+E.map((g,m)=>{if(m%2){if(g.startsWith("x+"))return ve(String.fromCharCode(parseInt(g.slice(2),16)));if(g.startsWith("u+"))return ve(String.fromCharCode(...g.slice(2).split("-").map(U=>parseInt(U,16))));const d=ut.exec(g);if(!d)throw new Error(`Invalid param: ${g}. Params and matcher names can only have underscores and alphanumeric characters.`);const[,N,T,R,D]=d;return r.push({name:R,matcher:D,optional:!!N,rest:!!T,chained:T?m===1&&E[0]==="":!1}),T?"(.*?)":N?"([^/]*)?":"([^/]+?)"}return ve(g)}).join("")}).join("")}/?$`),params:r}}function ht(t){return!/^\([^)]+\)$/.test(t)}function pt(t){return t.slice(1).split("/").filter(ht)}function gt(t,r,f){const i={},h=t.slice(1),u=h.filter(l=>l!==void 0);let E=0;for(let l=0;ld).join("/"),E=0),m===void 0){g.rest&&(i[g.name]="");continue}if(!g.matcher||f[g.matcher](m)){i[g.name]=m;const d=r[l+1],N=h[l+1];d&&!d.rest&&d.optional&&N&&g.chained&&(E=0),!d&&!N&&Object.keys(i).length===u.length&&(E=0);continue}if(g.optional&&g.chained){E++;continue}return}if(!E)return i}function ve(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function mt({nodes:t,server_loads:r,dictionary:f,matchers:i}){const h=new Set(r);return Object.entries(f).map(([l,[g,m,d]])=>{const{pattern:N,params:T}=dt(l),R={id:l,exec:D=>{const U=N.exec(D);if(U)return gt(U,T,i)},errors:[1,...d||[]].map(D=>t[D]),layouts:[0,...m||[]].map(E),leaf:u(g)};return R.errors.length=R.layouts.length=Math.max(R.errors.length,R.layouts.length),R});function u(l){const g=l<0;return g&&(l=~l),[g,t[l]]}function E(l){return l===void 0?l:[h.has(l),t[l]]}}function ze(t){try{return JSON.parse(sessionStorage[t])}catch{}}function Ve(t,r){const f=JSON.stringify(r);try{sessionStorage[t]=f}catch{}}const wt=-1,yt=-2,_t=-3,vt=-4,bt=-5,Et=-6;function St(t,r){if(typeof t=="number")return h(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const f=t,i=Array(f.length);function h(u,E=!1){if(u===wt)return;if(u===_t)return NaN;if(u===vt)return 1/0;if(u===bt)return-1/0;if(u===Et)return-0;if(E)throw new Error("Invalid input");if(u in i)return i[u];const l=f[u];if(!l||typeof l!="object")i[u]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const g=l[0],m=r==null?void 0:r[g];if(m)return i[u]=m(h(l[1]));switch(g){case"Date":i[u]=new Date(l[1]);break;case"Set":const d=new Set;i[u]=d;for(let R=1;Rr!=null)}const We=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...We];const Rt=new Set([...We]);[...Rt];async function At(t,r){var f;for(const i in t)if(typeof((f=t[i])==null?void 0:f.then)=="function")return Object.fromEntries(await Promise.all(Object.entries(t).map(async([h,u])=>[h,await u])));return t}class ne{constructor(r,f){this.status=r,typeof f=="string"?this.body={message:f}:f?this.body=f:this.body={message:`Error: ${r}`}}toString(){return JSON.stringify(this.body)}}class qe{constructor(r,f){this.status=r,this.location=f}}class It extends Error{constructor(r){super(),this.status=404,this.message=`Not found: ${r}`}}const Lt="x-sveltekit-invalidated",Pt="x-sveltekit-trailing-slash",J=ze(Ge)??{},ee=ze(Je)??{};function be(t){J[t]=te()}function K(t){return location.href=t.href,new Promise(()=>{})}function Ot(t,r){var je;const f=mt(t),i=t.nodes[0],h=t.nodes[1];i(),h();const u=document.documentElement,E=[],l=[];let g=null;const m={before_navigate:[],on_navigate:[],after_navigate:[]};let d={branch:[],error:null,url:null},N=!1,T=!1,R=!0,D=!1,U=!1,C=!1,z=!1,V,x=(je=history.state)==null?void 0:je[M];x||(x=Date.now(),history.replaceState({...history.state,[M]:x},"",location.href));const fe=J[x];fe&&(history.scrollRestoration="manual",scrollTo(fe.x,fe.y));let H,W,Y;async function ke(){if(Y=Y||Promise.resolve(),await Y,!Y)return;Y=null;const e=new URL(location.href),s=Z(e,!0);g=null;const n=W={},o=s&&await he(s);if(n===W&&o){if(o.type==="redirect")return re(new URL(o.location,e).href,{},1,n);o.props.page!==void 0&&(H=o.props.page),V.$set(o.props)}}function Re(e){l.some(s=>s==null?void 0:s.snapshot)&&(ee[e]=l.map(s=>{var n;return(n=s==null?void 0:s.snapshot)==null?void 0:n.capture()}))}function Ae(e){var s;(s=ee[e])==null||s.forEach((n,o)=>{var a,c;(c=(a=l[o])==null?void 0:a.snapshot)==null||c.restore(n)})}function Ie(){be(x),Ve(Ge,J),Re(x),Ve(Je,ee)}async function re(e,{noScroll:s=!1,replaceState:n=!1,keepFocus:o=!1,state:a={},invalidateAll:c=!1},p,_){return typeof e=="string"&&(e=new URL(e,Ce(document))),ce({url:e,scroll:s?te():null,keepfocus:o,redirect_count:p,details:{state:a,replaceState:n},nav_token:_,accepted:()=>{c&&(z=!0)},blocked:()=>{},type:"goto"})}async function Le(e){return g={id:e.id,promise:he(e).then(s=>(s.type==="loaded"&&s.state.error&&(g=null),s))},g.promise}async function oe(...e){const n=f.filter(o=>e.some(a=>o.exec(a))).map(o=>Promise.all([...o.layouts,o.leaf].map(a=>a==null?void 0:a[1]())));await Promise.all(n)}function Pe(e){var o;d=e.state;const s=document.querySelector("style[data-sveltekit]");s&&s.remove(),H=e.props.page,V=new t.root({target:r,props:{...e.props,stores:B,components:l},hydrate:!0}),Ae(x);const n={from:null,to:{params:d.params,route:{id:((o=d.route)==null?void 0:o.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};m.after_navigate.forEach(a=>a(n)),T=!0}async function X({url:e,params:s,branch:n,status:o,error:a,route:c,form:p}){let _="never";for(const y of n)(y==null?void 0:y.slash)!==void 0&&(_=y.slash);e.pathname=Qe(e.pathname,_),e.search=e.search;const b={type:"loaded",state:{url:e,params:s,branch:n,error:a,route:c},props:{constructors:kt(n).map(y=>y.node.component)}};p!==void 0&&(b.props.form=p);let v={},L=!H,A=0;for(let y=0;y(_.route=!0,w[O])}),params:new Proxy(o,{get:(w,O)=>(_.params.add(O),w[O])}),data:(c==null?void 0:c.data)??null,url:at(n,()=>{_.url=!0}),async fetch(w,O){let j;w instanceof Request?(j=w.url,O={body:w.method==="GET"||w.method==="HEAD"?void 0:await w.blob(),cache:w.cache,credentials:w.credentials,headers:w.headers,integrity:w.integrity,keepalive:w.keepalive,method:w.method,mode:w.mode,redirect:w.redirect,referrer:w.referrer,referrerPolicy:w.referrerPolicy,signal:w.signal,...O}):j=w;const F=new URL(j,n);return P(F.href),F.origin===n.origin&&(j=F.href.slice(n.origin.length)),T?ft(j,F.href,O):lt(j,O)},setHeaders:()=>{},depends:P,parent(){return _.parent=!0,s()}};p=await b.universal.load.call(null,y)??null,p=p?await At(p,a.id):null}return{node:b,loader:e,server:c,universal:(L=b.universal)!=null&&L.load?{type:"data",data:p,uses:_}:null,data:p??(c==null?void 0:c.data)??null,slash:n.pathname===q||n.pathname===q+"/"?"always":((A=b.universal)==null?void 0:A.trailingSlash)??(c==null?void 0:c.slash)}}function Oe(e,s,n,o,a){if(z)return!0;if(!o)return!1;if(o.parent&&e||o.route&&s||o.url&&n)return!0;for(const c of o.params)if(a[c]!==d.params[c])return!0;for(const c of o.dependencies)if(E.some(p=>p(new URL(c))))return!0;return!1}function de(e,s){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?s??null:null}async function he({id:e,invalidating:s,url:n,params:o,route:a}){if((g==null?void 0:g.id)===e)return g.promise;const{errors:c,layouts:p,leaf:_}=a,b=[...p,_];c.forEach(S=>S==null?void 0:S().catch(()=>{})),b.forEach(S=>S==null?void 0:S[1]().catch(()=>{}));let v=null;const L=d.url?e!==d.url.pathname+d.url.search:!1,A=d.route?a.id!==d.route.id:!1;let P=!1;const y=b.map((S,I)=>{var G;const k=d.branch[I],$=!!(S!=null&&S[0])&&((k==null?void 0:k.loader)!==S[1]||Oe(P,A,L,(G=k.server)==null?void 0:G.uses,o));return $&&(P=!0),$});if(y.some(Boolean)){try{v=await He(n,y)}catch(S){return ie({status:S instanceof ne?S.status:500,error:await Q(S,{url:n,params:o,route:{id:a.id}}),url:n,route:a})}if(v.type==="redirect")return v}const w=v==null?void 0:v.nodes;let O=!1;const j=b.map(async(S,I)=>{var pe;if(!S)return;const k=d.branch[I],$=w==null?void 0:w[I];if((!$||$.type==="skip")&&S[1]===(k==null?void 0:k.loader)&&!Oe(O,A,L,(pe=k.universal)==null?void 0:pe.uses,o))return k;if(O=!0,($==null?void 0:$.type)==="error")throw $;return ue({loader:S[1],url:n,params:o,route:a,parent:async()=>{var Te;const $e={};for(let ge=0;ge{});const F=[];for(let S=0;SPromise.resolve({}),server_data_node:de(c)}),b={node:await h(),loader:h,universal:null,server:null,data:null};return await X({url:n,params:a,branch:[_,b],status:e,error:s,route:null})}function Z(e,s){if(_e(e,q))return;const n=se(e);for(const o of f){const a=o.exec(n);if(a)return{id:e.pathname+e.search,invalidating:s,route:o,params:tt(a),url:e}}}function se(e){return et(e.pathname.slice(q.length)||"/")}function Ue({url:e,type:s,intent:n,delta:o}){let a=!1;const c=Be(d,n,e,s);o!==void 0&&(c.navigation.delta=o);const p={...c.navigation,cancel:()=>{a=!0,c.reject(new Error("navigation was cancelled"))}};return U||m.before_navigate.forEach(_=>_(p)),a?null:c}async function ce({url:e,scroll:s,keepfocus:n,redirect_count:o,details:a,type:c,delta:p,nav_token:_={},accepted:b,blocked:v}){var j,F,S;const L=Z(e,!1),A=Ue({url:e,type:c,delta:p,intent:L});if(!A){v();return}const P=x;b(),U=!0,T&&B.navigating.set(A.navigation),W=_;let y=L&&await he(L);if(!y){if(_e(e,q))return await K(e);y=await Ne(e,{id:null},await Q(new Error(`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(L==null?void 0:L.url)||e,W!==_)return A.reject(new Error("navigation was aborted")),!1;if(y.type==="redirect")if(o>=20)y=await ie({status:500,error:await Q(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return re(new URL(y.location,e).href,{},o+1,_),!1;else((j=y.props.page)==null?void 0:j.status)>=400&&await B.updated.check()&&await K(e);if(E.length=0,z=!1,D=!0,be(P),Re(P),(F=y.props.page)!=null&&F.url&&y.props.page.url.pathname!==e.pathname&&(e.pathname=(S=y.props.page)==null?void 0:S.url.pathname),a){const I=a.replaceState?0:1;if(a.state[M]=x+=I,history[a.replaceState?"replaceState":"pushState"](a.state,"",e),!a.replaceState){let k=x+1;for(;ee[k]||J[k];)delete ee[k],delete J[k],k+=1}}if(g=null,T){d=y.state,y.props.page&&(y.props.page.url=e);const I=(await Promise.all(m.on_navigate.map(k=>k(A.navigation)))).filter(k=>typeof k=="function");if(I.length>0){let k=function(){m.after_navigate=m.after_navigate.filter($=>!I.includes($))};I.push(k),m.after_navigate.push(...I)}V.$set(y.props)}else Pe(y);const{activeElement:w}=document;if(await we(),R){const I=e.hash&&document.getElementById(decodeURIComponent(e.hash.slice(1)));s?scrollTo(s.x,s.y):I?I.scrollIntoView():scrollTo(0,0)}const O=document.activeElement!==w&&document.activeElement!==document.body;!n&&!O&&Ee(),R=!0,y.props.page&&(H=y.props.page),U=!1,c==="popstate"&&Ae(x),A.fulfil(void 0),m.after_navigate.forEach(I=>I(A.navigation)),B.navigating.set(null),D=!1}async function Ne(e,s,n,o){return e.origin===Fe&&e.pathname===location.pathname&&!N?await ie({status:o,error:n,url:e,route:s}):await K(e)}function Xe(){let e;u.addEventListener("mousemove",c=>{const p=c.target;clearTimeout(e),e=setTimeout(()=>{o(p,2)},20)});function s(c){o(c.composedPath()[0],1)}u.addEventListener("mousedown",s),u.addEventListener("touchstart",s,{passive:!0});const n=new IntersectionObserver(c=>{for(const p of c)p.isIntersecting&&(oe(se(new URL(p.target.href))),n.unobserve(p.target))},{threshold:0});function o(c,p){const _=De(c,u);if(!_)return;const{url:b,external:v,download:L}=ye(_,q);if(v||L)return;const A=le(_);if(!A.reload)if(p<=A.preload_data){const P=Z(b,!1);P&&Le(P)}else p<=A.preload_code&&oe(se(b))}function a(){n.disconnect();for(const c of u.querySelectorAll("a")){const{url:p,external:_,download:b}=ye(c,q);if(_||b)continue;const v=le(c);v.reload||(v.preload_code===Me.viewport&&n.observe(c),v.preload_code===Me.eager&&oe(se(p)))}}m.after_navigate.push(a),a()}function Q(e,s){return e instanceof ne?e.body:t.hooks.handleError({error:e,event:s})??{message:s.route.id===null&&e instanceof It?"Not Found":"Internal Error"}}return{after_navigate:e=>{me(()=>(m.after_navigate.push(e),()=>{const s=m.after_navigate.indexOf(e);m.after_navigate.splice(s,1)}))},before_navigate:e=>{me(()=>(m.before_navigate.push(e),()=>{const s=m.before_navigate.indexOf(e);m.before_navigate.splice(s,1)}))},on_navigate:e=>{me(()=>(m.on_navigate.push(e),()=>{const s=m.on_navigate.indexOf(e);m.on_navigate.splice(s,1)}))},disable_scroll_handling:()=>{(D||!T)&&(R=!1)},goto:(e,s={})=>re(e,s,0),invalidate:e=>{if(typeof e=="function")E.push(e);else{const{href:s}=new URL(e,location.href);E.push(n=>n.href===s)}return ke()},invalidate_all:()=>(z=!0,ke()),preload_data:async e=>{const s=new URL(e,Ce(document)),n=Z(s,!1);if(!n)throw new Error(`Attempted to preload a URL that does not belong to this app: ${s}`);await Le(n)},preload_code:oe,apply_action:async e=>{if(e.type==="error"){const s=new URL(location.href),{branch:n,route:o}=d;if(!o)return;const a=await xe(d.branch.length,n,o.errors);if(a){const c=await X({url:s,params:d.params,branch:n.slice(0,a.idx).concat(a.node),status:e.status??500,error:e.error,route:o});d=c.state,V.$set(c.props),we().then(Ee)}}else e.type==="redirect"?re(e.location,{invalidateAll:!0},0):(V.$set({form:null,page:{...H,form:e.data,status:e.status}}),await we(),V.$set({form:e.data}),e.type==="success"&&Ee())},_start_router:()=>{var s;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let o=!1;if(Ie(),!U){const a=Be(d,void 0,null,"leave"),c={...a.navigation,cancel:()=>{o=!0,a.reject(new Error("navigation was cancelled"))}};m.before_navigate.forEach(p=>p(c))}o?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ie()}),(s=navigator.connection)!=null&&s.saveData||Xe(),u.addEventListener("click",n=>{var P;if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const o=De(n.composedPath()[0],u);if(!o)return;const{url:a,external:c,target:p,download:_}=ye(o,q);if(!a)return;if(p==="_parent"||p==="_top"){if(window.parent!==window)return}else if(p&&p!=="_self")return;const b=le(o);if(!(o instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||_)return;if(c||b.reload){Ue({url:a,type:"link"})?U=!0:n.preventDefault();return}const[L,A]=a.href.split("#");if(A!==void 0&&L===location.href.split("#")[0]){if(d.url.hash===a.hash){n.preventDefault(),(P=o.ownerDocument.getElementById(A))==null||P.scrollIntoView();return}if(C=!0,be(x),e(a),!b.replace_state)return;C=!1,n.preventDefault()}ce({url:a,scroll:b.noscroll?te():null,keepfocus:b.keep_focus??!1,redirect_count:0,details:{state:{},replaceState:b.replace_state??a.href===location.href},accepted:()=>n.preventDefault(),blocked:()=>n.preventDefault(),type:"link"})}),u.addEventListener("submit",n=>{if(n.defaultPrevented)return;const o=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formMethod)||o.method)!=="get")return;const p=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||o.action);if(_e(p,q))return;const _=n.target,{keep_focus:b,noscroll:v,reload:L,replace_state:A}=le(_);if(L)return;n.preventDefault(),n.stopPropagation();const P=new FormData(_),y=a==null?void 0:a.getAttribute("name");y&&P.append(y,(a==null?void 0:a.getAttribute("value"))??""),p.search=new URLSearchParams(P).toString(),ce({url:p,scroll:v?te():null,keepfocus:b??!1,redirect_count:0,details:{state:{},replaceState:A??p.href===location.href},nav_token:{},accepted:()=>{},blocked:()=>{},type:"form"})}),addEventListener("popstate",async n=>{var o,a;if(W={},(o=n.state)!=null&&o[M]){if(n.state[M]===x)return;const c=J[n.state[M]],p=new URL(location.href);if(((a=d.url)==null?void 0:a.href.split("#")[0])===location.href.split("#")[0]){e(p),J[x]=te(),x=n.state[M],scrollTo(c.x,c.y);return}const _=n.state[M]-x;await ce({url:p,scroll:c,keepfocus:!1,redirect_count:0,details:null,accepted:()=>{x=n.state[M]},blocked:()=>{history.go(-_)},type:"popstate",delta:_,nav_token:W})}else if(!C){const c=new URL(location.href);e(c)}}),addEventListener("hashchange",()=>{C&&(C=!1,history.replaceState({...history.state,[M]:++x},"",location.href))});for(const n of document.querySelectorAll("link"))n.rel==="icon"&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&B.navigating.set(null)});function e(n){d.url=n,B.page.set({...H,url:n}),B.page.notify()}},_hydrate:async({status:e=200,error:s,node_ids:n,params:o,route:a,data:c,form:p})=>{N=!0;const _=new URL(location.href);({params:o={},route:a={id:null}}=Z(_,!1)||{});let b;try{const v=n.map(async(P,y)=>{const w=c[y];return w!=null&&w.uses&&(w.uses=Ye(w.uses)),ue({loader:t.nodes[P],url:_,params:o,route:a,parent:async()=>{const O={};for(let j=0;jP===a.id);if(A){const P=A.layouts;for(let y=0;yu?"1":"0").join(""));const i=await Ke(f.href);if((h=i.headers.get("content-type"))!=null&&h.includes("text/html")&&await K(t),!i.ok)throw new ne(i.status,await i.json());return new Promise(async u=>{var N;const E=new Map,l=i.body.getReader(),g=new TextDecoder;function m(T){return St(T,{Promise:R=>new Promise((D,U)=>{E.set(R,{fulfil:D,reject:U})})})}let d="";for(;;){const{done:T,value:R}=await l.read();if(T&&!d)break;for(d+=!R&&d?` `:g.decode(R);;){const D=d.indexOf(` `);if(D===-1)break;const U=JSON.parse(d.slice(0,D));if(d=d.slice(D+1),U.type==="redirect")return u(U);if(U.type==="data")(N=U.nodes)==null||N.forEach(C=>{(C==null?void 0:C.type)==="data"&&(C.uses=Ye(C.uses),C.data=m(C.data))}),u(U);else if(U.type==="chunk"){const{id:C,data:z,error:V}=U,x=E.get(C);E.delete(C),V?x.reject(m(V)):x.fulfil(m(z))}}}})}function Ye(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url)}}function Ee(){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const r=document.body,f=r.getAttribute("tabindex");r.tabIndex=-1,r.focus({preventScroll:!0,focusVisible:!1}),f!==null?r.setAttribute("tabindex",f):r.removeAttribute("tabindex");const i=getSelection();if(i&&i.type!=="None"){const h=[];for(let u=0;u{if(i.rangeCount===h.length){for(let u=0;u{h=d,u=N});return E.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((g=t.route)==null?void 0:g.id)??null},url:t.url},to:f&&{params:(r==null?void 0:r.params)??null,route:{id:((m=r==null?void 0:r.route)==null?void 0:m.id)??null},url:f},willUnload:!r,type:i,complete:E},fulfil:h,reject:u}}async function Nt(t,r,f){const i=Ot(t,r);Ze({client:i}),f?await i._hydrate(f):i.goto(location.href,{replaceState:!0}),i._start_router()}export{Nt as start}; diff --git a/docs/_app/immutable/nodes/1.c20d0cd9.js b/docs/_app/immutable/nodes/1.7290de78.js similarity index 93% rename from docs/_app/immutable/nodes/1.c20d0cd9.js rename to docs/_app/immutable/nodes/1.7290de78.js index 3303425..53ad7e6 100644 --- a/docs/_app/immutable/nodes/1.c20d0cd9.js +++ b/docs/_app/immutable/nodes/1.7290de78.js @@ -1 +1 @@ -import{s as x,n as _,c as S}from"../chunks/scheduler.9ccb0b1a.js";import{S as j,i as q,g as f,m as d,s as y,h as g,j as h,n as v,f as u,c as C,a as m,x as $,o as E}from"../chunks/index.d088b87a.js";import{d as H}from"../chunks/singletons.6faf3746.js";const P=()=>{const s=H;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},k={subscribe(s){return P().page.subscribe(s)}};function w(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",l;return{c(){t=f("h1"),o=d(r),n=y(),i=f("p"),l=d(c)},l(e){t=g(e,"H1",{});var a=h(t);o=v(a,r),a.forEach(u),n=C(e),i=g(e,"P",{});var p=h(i);l=v(p,c),p.forEach(u)},m(e,a){m(e,t,a),$(t,o),m(e,n,a),m(e,i,a),$(i,l)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&E(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&E(l,c)},i:_,o:_,d(e){e&&(u(t),u(n),u(i))}}}function z(s,t,r){let o;return S(s,k,n=>r(0,o=n)),[o]}let F=class extends j{constructor(t){super(),q(this,t,z,w,x,{})}};export{F as component}; +import{s as x,n as _,c as S}from"../chunks/scheduler.9ccb0b1a.js";import{S as j,i as q,g as f,m as d,s as y,h as g,j as h,n as v,f as u,c as C,a as m,x as $,o as E}from"../chunks/index.d088b87a.js";import{d as H}from"../chunks/singletons.60f5b3a0.js";const P=()=>{const s=H;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},k={subscribe(s){return P().page.subscribe(s)}};function w(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",l;return{c(){t=f("h1"),o=d(r),n=y(),i=f("p"),l=d(c)},l(e){t=g(e,"H1",{});var a=h(t);o=v(a,r),a.forEach(u),n=C(e),i=g(e,"P",{});var p=h(i);l=v(p,c),p.forEach(u)},m(e,a){m(e,t,a),$(t,o),m(e,n,a),m(e,i,a),$(i,l)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&E(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&E(l,c)},i:_,o:_,d(e){e&&(u(t),u(n),u(i))}}}function z(s,t,r){let o;return S(s,k,n=>r(0,o=n)),[o]}let F=class extends j{constructor(t){super(),q(this,t,z,w,x,{})}};export{F as component}; diff --git a/docs/_app/immutable/nodes/6.bb284344.js b/docs/_app/immutable/nodes/6.da769bf3.js similarity index 79% rename from docs/_app/immutable/nodes/6.bb284344.js rename to docs/_app/immutable/nodes/6.da769bf3.js index 84a3e1e..0464a9c 100644 --- a/docs/_app/immutable/nodes/6.bb284344.js +++ b/docs/_app/immutable/nodes/6.da769bf3.js @@ -1 +1 @@ -import{s as a,n as o,o as s}from"../chunks/scheduler.9ccb0b1a.js";import{S as i,i as l,m as c,n as m,a as p,f as u}from"../chunks/index.d088b87a.js";import{j as f}from"../chunks/singletons.6faf3746.js";const _=!0,j=Object.freeze(Object.defineProperty({__proto__:null,prerender:_},Symbol.toStringTag,{value:"Module"})),d=f("goto");function g(n){let t;return{c(){t=c("Hello World!")},l(e){t=m(e,"Hello World!")},m(e,r){p(e,t,r)},p:o,i:o,o,d(e){e&&u(t)}}}function h(n){return s(()=>{d("/bike-share-toronto/growth")}),[]}class v extends i{constructor(t){super(),l(this,t,h,g,a,{})}}export{v as component,j as universal}; +import{s as a,n as o,o as s}from"../chunks/scheduler.9ccb0b1a.js";import{S as i,i as l,m as c,n as m,a as p,f as u}from"../chunks/index.d088b87a.js";import{j as f}from"../chunks/singletons.60f5b3a0.js";const _=!0,j=Object.freeze(Object.defineProperty({__proto__:null,prerender:_},Symbol.toStringTag,{value:"Module"})),d=f("goto");function g(n){let t;return{c(){t=c("Hello World!")},l(e){t=m(e,"Hello World!")},m(e,r){p(e,t,r)},p:o,i:o,o,d(e){e&&u(t)}}}function h(n){return s(()=>{d("/bike-share-toronto/growth")}),[]}class v extends i{constructor(t){super(),l(this,t,h,g,a,{})}}export{v as component,j as universal}; diff --git a/docs/_app/immutable/nodes/7.094030d9.js b/docs/_app/immutable/nodes/7.8733e24e.js similarity index 59% rename from docs/_app/immutable/nodes/7.094030d9.js rename to docs/_app/immutable/nodes/7.8733e24e.js index f048198..ca80cce 100644 --- a/docs/_app/immutable/nodes/7.094030d9.js +++ b/docs/_app/immutable/nodes/7.8733e24e.js @@ -1,22 +1,22 @@ -import{s as qe,n as ue,o as Xe,b as Yn,f as Kt,r as Di}from"../chunks/scheduler.9ccb0b1a.js";import{S as Ye,i as Ue,g as O,m as ie,s as V,y as Un,h as D,j as B,n as re,f as E,c as P,z as Wn,k as N,a as G,x,o as Gn,A as dn,r as xt,B as zi,C as tt,u as It,v as Tt,d as L,t as U,b as Mt,w as Ct,D as pn,e as ce,p as At}from"../chunks/index.d088b87a.js";import{i as bt,c as _n,a as mn,b as Li,I as vn,d as Jn,l as ae,e as Zt}from"../chunks/linear.d97c9073.js";/* empty css */const Ri=!0,ms=Object.freeze(Object.defineProperty({__proto__:null,prerender:Ri},Symbol.toStringTag,{value:"Module"})),$i=""+new URL("../assets/top-logo-full-green.5561d31d.svg",import.meta.url).href;function ht(t,e){let n;if(e===void 0)for(const i of t)i!=null&&(n=i)&&(n=i);else{let i=-1;for(let r of t)(r=e(r,++i,t))!=null&&(n=r)&&(n=r)}return n}function Vi(t,e){let n;if(e===void 0)for(const i of t)i!=null&&(n>i||n===void 0&&i>=i)&&(n=i);else{let i=-1;for(let r of t)(r=e(r,++i,t))!=null&&(n>r||n===void 0&&r>=r)&&(n=r)}return n}function Pi(t,e,n){t=+t,e=+e,n=(r=arguments.length)<2?(e=t,t=0,1):r<3?1:+n;for(var i=-1,r=Math.max(0,Math.ceil((e-t)/n))|0,a=new Array(r);++i+t(e)}function Yi(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Ui(){return!this.__axis}function Kn(t,e){var n=[],i=null,r=null,a=6,o=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,s=t===Ce||t===$t?-1:1,d=t===$t||t===Ee?"x":"y",c=t===Ce||t===Oe?Bi:qi;function f(h){var p=i??(e.ticks?e.ticks.apply(e,n):e.domain()),v=r??(e.tickFormat?e.tickFormat.apply(e,n):Hi),T=Math.max(a,0)+l,w=e.range(),b=+w[0]+u,k=+w[w.length-1]+u,M=(e.bandwidth?Yi:Xi)(e.copy(),u),S=h.selection?h.selection():h,H=S.selectAll(".domain").data([null]),y=S.selectAll(".tick").data(p,e).order(),z=y.exit(),Y=y.enter().append("g").attr("class","tick"),Z=y.select("line"),J=y.select("text");H=H.merge(H.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),y=y.merge(Y),Z=Z.merge(Y.append("line").attr("stroke","currentColor").attr(d+"2",s*a)),J=J.merge(Y.append("text").attr("fill","currentColor").attr(d,s*T).attr("dy",t===Ce?"0em":t===Oe?"0.71em":"0.32em")),h!==S&&(H=H.transition(h),y=y.transition(h),Z=Z.transition(h),J=J.transition(h),z=z.transition(h).attr("opacity",gn).attr("transform",function(Q){return isFinite(Q=M(Q))?c(Q+u):this.getAttribute("transform")}),Y.attr("opacity",gn).attr("transform",function(Q){var it=this.parentNode.__axis;return c((it&&isFinite(it=it(Q))?it:M(Q))+u)})),z.remove(),H.attr("d",t===$t||t===Ee?o?"M"+s*o+","+b+"H"+u+"V"+k+"H"+s*o:"M"+u+","+b+"V"+k:o?"M"+b+","+s*o+"V"+u+"H"+k+"V"+s*o:"M"+b+","+u+"H"+k),y.attr("opacity",1).attr("transform",function(Q){return c(M(Q)+u)}),Z.attr(d+"2",s*a),J.attr(d,s*T).text(v),S.filter(Ui).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Ee?"start":t===$t?"end":"middle"),S.each(function(){this.__axis=M})}return f.scale=function(h){return arguments.length?(e=h,f):e},f.ticks=function(){return n=Array.from(arguments),f},f.tickArguments=function(h){return arguments.length?(n=h==null?[]:Array.from(h),f):n.slice()},f.tickValues=function(h){return arguments.length?(i=h==null?null:Array.from(h),f):i&&i.slice()},f.tickFormat=function(h){return arguments.length?(r=h,f):r},f.tickSize=function(h){return arguments.length?(a=o=+h,f):a},f.tickSizeInner=function(h){return arguments.length?(a=+h,f):a},f.tickSizeOuter=function(h){return arguments.length?(o=+h,f):o},f.tickPadding=function(h){return arguments.length?(l=+h,f):l},f.offset=function(h){return arguments.length?(u=+h,f):u},f}function Wi(t){return Kn(Oe,t)}function Gi(t){return Kn($t,t)}var Ji={value:()=>{}};function Zn(){for(var t=0,e=arguments.length,n={},i;t=0&&(i=n.slice(r+1),n=n.slice(0,r)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}oe.prototype=Zn.prototype={constructor:oe,on:function(t,e){var n=this._,i=Ki(t+"",n),r,a=-1,o=i.length;if(arguments.length<2){for(;++a0)for(var n=new Array(r),i=0,r,a;i=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),wn.hasOwnProperty(e)?{space:wn[e],local:t}:t}function Qi(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===De&&e.documentElement.namespaceURI===De?e.createElement(t):e.createElementNS(n,t)}}function ji(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Qn(t){var e=me(t);return(e.local?ji:Qi)(e)}function tr(){}function We(t){return t==null?tr:function(){return this.querySelector(t)}}function er(t){typeof t!="function"&&(t=We(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=k&&(k=b+1);!(S=T[k])&&++k=0;)(o=i[r])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Cr(t){t||(t=Er);function e(c,f){return c&&f?t(c.__data__,f.__data__):!c-!f}for(var n=this._groups,i=n.length,r=new Array(i),a=0;ae?1:t>=e?0:NaN}function Mr(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ar(){return Array.from(this)}function Nr(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?Hr:typeof e=="function"?qr:Br)(t,e,n??"")):St(this.node(),t)}function St(t,e){return t.style.getPropertyValue(e)||ii(t).getComputedStyle(t,null).getPropertyValue(e)}function Yr(t){return function(){delete this[t]}}function Ur(t,e){return function(){this[t]=e}}function Wr(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Gr(t,e){return arguments.length>1?this.each((e==null?Yr:typeof e=="function"?Wr:Ur)(t,e)):this.node()[t]}function ri(t){return t.trim().split(/^|\s+/)}function Ge(t){return t.classList||new ai(t)}function ai(t){this._node=t,this._names=ri(t.getAttribute("class")||"")}ai.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function oi(t,e){for(var n=Ge(t),i=-1,r=e.length;++i=0&&(n=e.slice(i+1),e=e.slice(0,i)),{type:e,name:n}})}function ka(t){return function(){var e=this.__on;if(e){for(var n=0,i=-1,r=e.length,a;n180?d+=360:d-s>180&&(s+=360),f.push({i:c.push(r(c)+"rotate(",null,i)-2,x:bt(s,d)})):d&&c.push(r(c)+"rotate("+d+i)}function l(s,d,c,f){s!==d?f.push({i:c.push(r(c)+"skewX(",null,i)-2,x:bt(s,d)}):d&&c.push(r(c)+"skewX("+d+i)}function u(s,d,c,f,h,p){if(s!==c||d!==f){var v=h.push(r(h)+"scale(",null,",",null,")");p.push({i:v-4,x:bt(s,c)},{i:v-2,x:bt(d,f)})}else(c!==1||f!==1)&&h.push(r(h)+"scale("+c+","+f+")")}return function(s,d){var c=[],f=[];return s=t(s),d=t(d),a(s.translateX,s.translateY,d.translateX,d.translateY,c,f),o(s.rotate,d.rotate,c,f),l(s.skewX,d.skewX,c,f),u(s.scaleX,s.scaleY,d.scaleX,d.scaleY,c,f),s=d=null,function(h){for(var p=-1,v=f.length,T;++p=0&&t._call.call(void 0,e),t=t._next;--Ft}function kn(){Et=(de=Xt.now())+ve,Ft=Vt=0;try{za()}finally{Ft=0,Ra(),Et=0}}function La(){var t=Xt.now(),e=t-de;e>hi&&(ve-=e,de=t)}function Ra(){for(var t,e=he,n,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:he=n);Pt=t,Le(i)}function Le(t){if(!Ft){Vt&&(Vt=clearTimeout(Vt));var e=t-Et;e>24?(t<1/0&&(Vt=setTimeout(kn,t-Xt.now()-ve)),zt&&(zt=clearInterval(zt))):(zt||(de=Xt.now(),zt=setInterval(La,hi)),Ft=1,di(kn))}}function xn(t,e,n){var i=new pe;return e=e==null?0:+e,i.restart(r=>{i.stop(),t(r+e)},e,n),i}var $a=Zn("start","end","cancel","interrupt"),Va=[],_i=0,In=1,Re=2,se=3,Tn=4,$e=5,le=6;function ge(t,e,n,i,r,a){var o=t.__transition;if(!o)t.__transition={};else if(n in o)return;Pa(t,n,{name:e,index:i,group:r,on:$a,tween:Va,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:_i})}function Ke(t,e){var n=nt(t,e);if(n.state>_i)throw new Error("too late; already scheduled");return n}function at(t,e){var n=nt(t,e);if(n.state>se)throw new Error("too late; already running");return n}function nt(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Pa(t,e,n){var i=t.__transition,r;i[e]=n,n.timer=pi(a,0,n.time);function a(s){n.state=In,n.timer.restart(o,n.delay,n.time),n.delay<=s&&o(s-n.delay)}function o(s){var d,c,f,h;if(n.state!==In)return u();for(d in i)if(h=i[d],h.name===n.name){if(h.state===se)return xn(o);h.state===Tn?(h.state=le,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[d]):+dRe&&i.state<$e,i.state=le,i.timer.stop(),i.on.call(r?"interrupt":"cancel",t,t.__data__,i.index,i.group),delete n[o]}a&&delete t.__transition}}function Ba(t){return this.each(function(){Ha(this,t)})}function qa(t,e){var n,i;return function(){var r=at(this,t),a=r.tween;if(a!==n){i=n=a;for(var o=0,l=i.length;o=0&&(e=e.slice(0,n)),!e||e==="start"})}function go(t,e,n){var i,r,a=vo(e)?Ke:at;return function(){var o=a(this,t),l=o.on;l!==i&&(r=(i=l).copy()).on(e,n),o.on=r}}function yo(t,e){var n=this._id;return arguments.length<2?nt(this.node(),n).on.on(t):this.each(go(n,t,e))}function wo(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function bo(){return this.on("end.remove",wo(this._id))}function ko(t){var e=this._name,n=this._id;typeof t!="function"&&(t=We(t));for(var i=this._groups,r=i.length,a=new Array(r),o=0;o+t;function qo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Xo={time:null,delay:0,duration:250,ease:qo};function Yo(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Uo(t){var e,n;t instanceof lt?(e=t._id,t=t._name):(e=gi(),(n=Xo).time=Je(),t=t==null?null:t+"");for(var i=this._groups,r=i.length,a=0;a=0))throw new Error(`invalid digits: ${t}`);if(e>15)return yi;const n=10**e;return function(i){this._+=i[0];for(let r=1,a=i.length;rkt)if(!(Math.abs(c*u-s*d)>kt)||!a)this._append`L${this._x1=e},${this._y1=n}`;else{let h=i-o,p=r-l,v=u*u+s*s,T=h*h+p*p,w=Math.sqrt(v),b=Math.sqrt(f),k=a*Math.tan((Ve-Math.acos((v+f-T)/(2*w*b)))/2),M=k/b,S=k/w;Math.abs(M-1)>kt&&this._append`L${e+M*d},${n+M*c}`,this._append`A${a},${a},0,0,${+(c*h>d*p)},${this._x1=e+S*u},${this._y1=n+S*s}`}}arc(e,n,i,r,a,o){if(e=+e,n=+n,i=+i,o=!!o,i<0)throw new Error(`negative radius: ${i}`);let l=i*Math.cos(r),u=i*Math.sin(r),s=e+l,d=n+u,c=1^o,f=o?r-a:a-r;this._x1===null?this._append`M${s},${d}`:(Math.abs(this._x1-s)>kt||Math.abs(this._y1-d)>kt)&&this._append`L${s},${d}`,i&&(f<0&&(f=f%Pe+Pe),f>Wo?this._append`A${i},${i},0,1,${c},${e-l},${n-u}A${i},${i},0,1,${c},${this._x1=s},${this._y1=d}`:f>kt&&this._append`A${i},${i},0,${+(f>=Ve)},${c},${this._x1=e+i*Math.cos(a)},${this._y1=n+i*Math.sin(a)}`)}rect(e,n,i,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}}var Cn={},Me={},Ae=34,Lt=10,Ne=13;function wi(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Ko(t,e){var n=wi(t);return function(i,r){return e(n(i),r,t)}}function En(t){var e=Object.create(null),n=[];return t.forEach(function(i){for(var r in i)r in e||n.push(e[r]=r)}),n}function K(t,e){var n=t+"",i=n.length;return i9999?"+"+K(t,6):K(t,4)}function Qo(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),i=t.getUTCSeconds(),r=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Zo(t.getUTCFullYear())+"-"+K(t.getUTCMonth()+1,2)+"-"+K(t.getUTCDate(),2)+(r?"T"+K(e,2)+":"+K(n,2)+":"+K(i,2)+"."+K(r,3)+"Z":i?"T"+K(e,2)+":"+K(n,2)+":"+K(i,2)+"Z":n||e?"T"+K(e,2)+":"+K(n,2)+"Z":"")}function jo(t){var e=new RegExp('["'+t+` -\r]`),n=t.charCodeAt(0);function i(c,f){var h,p,v=r(c,function(T,w){if(h)return h(T,w-1);p=T,h=f?Ko(T,f):wi(T)});return v.columns=p||[],v}function r(c,f){var h=[],p=c.length,v=0,T=0,w,b=p<=0,k=!1;c.charCodeAt(p-1)===Lt&&--p,c.charCodeAt(p-1)===Ne&&--p;function M(){if(b)return Me;if(k)return k=!1,Cn;var H,y=v,z;if(c.charCodeAt(y)===Ae){for(;v++=p?b=!0:(z=c.charCodeAt(v++))===Lt?k=!0:z===Ne&&(k=!0,c.charCodeAt(v)===Lt&&++v),c.slice(y+1,H-1).replace(/""/g,'"')}for(;v=i)&&(n=i);else{let i=-1;for(let r of t)(r=e(r,++i,t))!=null&&(n=r)&&(n=r)}return n}function Vi(t,e){let n;if(e===void 0)for(const i of t)i!=null&&(n>i||n===void 0&&i>=i)&&(n=i);else{let i=-1;for(let r of t)(r=e(r,++i,t))!=null&&(n>r||n===void 0&&r>=r)&&(n=r)}return n}function Pi(t,e,n){t=+t,e=+e,n=(r=arguments.length)<2?(e=t,t=0,1):r<3?1:+n;for(var i=-1,r=Math.max(0,Math.ceil((e-t)/n))|0,a=new Array(r);++i+t(e)}function Yi(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Ui(){return!this.__axis}function Kn(t,e){var n=[],i=null,r=null,a=6,o=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,s=t===Ce||t===$t?-1:1,d=t===$t||t===Ee?"x":"y",c=t===Ce||t===Fe?Bi:qi;function h(f){var p=i??(e.ticks?e.ticks.apply(e,n):e.domain()),g=r??(e.tickFormat?e.tickFormat.apply(e,n):Hi),T=Math.max(a,0)+l,w=e.range(),k=+w[0]+u,b=+w[w.length-1]+u,M=(e.bandwidth?Yi:Xi)(e.copy(),u),S=f.selection?f.selection():f,H=S.selectAll(".domain").data([null]),y=S.selectAll(".tick").data(p,e).order(),D=y.exit(),Y=y.enter().append("g").attr("class","tick"),Z=y.select("line"),J=y.select("text");H=H.merge(H.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),y=y.merge(Y),Z=Z.merge(Y.append("line").attr("stroke","currentColor").attr(d+"2",s*a)),J=J.merge(Y.append("text").attr("fill","currentColor").attr(d,s*T).attr("dy",t===Ce?"0em":t===Fe?"0.71em":"0.32em")),f!==S&&(H=H.transition(f),y=y.transition(f),Z=Z.transition(f),J=J.transition(f),D=D.transition(f).attr("opacity",mn).attr("transform",function(Q){return isFinite(Q=M(Q))?c(Q+u):this.getAttribute("transform")}),Y.attr("opacity",mn).attr("transform",function(Q){var it=this.parentNode.__axis;return c((it&&isFinite(it=it(Q))?it:M(Q))+u)})),D.remove(),H.attr("d",t===$t||t===Ee?o?"M"+s*o+","+k+"H"+u+"V"+b+"H"+s*o:"M"+u+","+k+"V"+b:o?"M"+k+","+s*o+"V"+u+"H"+b+"V"+s*o:"M"+k+","+u+"H"+b),y.attr("opacity",1).attr("transform",function(Q){return c(M(Q)+u)}),Z.attr(d+"2",s*a),J.attr(d,s*T).text(g),S.filter(Ui).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Ee?"start":t===$t?"end":"middle"),S.each(function(){this.__axis=M})}return h.scale=function(f){return arguments.length?(e=f,h):e},h.ticks=function(){return n=Array.from(arguments),h},h.tickArguments=function(f){return arguments.length?(n=f==null?[]:Array.from(f),h):n.slice()},h.tickValues=function(f){return arguments.length?(i=f==null?null:Array.from(f),h):i&&i.slice()},h.tickFormat=function(f){return arguments.length?(r=f,h):r},h.tickSize=function(f){return arguments.length?(a=o=+f,h):a},h.tickSizeInner=function(f){return arguments.length?(a=+f,h):a},h.tickSizeOuter=function(f){return arguments.length?(o=+f,h):o},h.tickPadding=function(f){return arguments.length?(l=+f,h):l},h.offset=function(f){return arguments.length?(u=+f,h):u},h}function Wi(t){return Kn(Fe,t)}function Gi(t){return Kn($t,t)}var Ji={value:()=>{}};function Zn(){for(var t=0,e=arguments.length,n={},i;t=0&&(i=n.slice(r+1),n=n.slice(0,r)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}oe.prototype=Zn.prototype={constructor:oe,on:function(t,e){var n=this._,i=Ki(t+"",n),r,a=-1,o=i.length;if(arguments.length<2){for(;++a0)for(var n=new Array(r),i=0,r,a;i=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),wn.hasOwnProperty(e)?{space:wn[e],local:t}:t}function Qi(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Oe&&e.documentElement.namespaceURI===Oe?e.createElement(t):e.createElementNS(n,t)}}function ji(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Qn(t){var e=ve(t);return(e.local?ji:Qi)(e)}function tr(){}function We(t){return t==null?tr:function(){return this.querySelector(t)}}function er(t){typeof t!="function"&&(t=We(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=b&&(b=k+1);!(S=T[b])&&++b=0;)(o=i[r])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Cr(t){t||(t=Er);function e(c,h){return c&&h?t(c.__data__,h.__data__):!c-!h}for(var n=this._groups,i=n.length,r=new Array(i),a=0;ae?1:t>=e?0:NaN}function Mr(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ar(){return Array.from(this)}function Nr(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?Hr:typeof e=="function"?qr:Br)(t,e,n??"")):St(this.node(),t)}function St(t,e){return t.style.getPropertyValue(e)||ii(t).getComputedStyle(t,null).getPropertyValue(e)}function Yr(t){return function(){delete this[t]}}function Ur(t,e){return function(){this[t]=e}}function Wr(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Gr(t,e){return arguments.length>1?this.each((e==null?Yr:typeof e=="function"?Wr:Ur)(t,e)):this.node()[t]}function ri(t){return t.trim().split(/^|\s+/)}function Ge(t){return t.classList||new ai(t)}function ai(t){this._node=t,this._names=ri(t.getAttribute("class")||"")}ai.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function oi(t,e){for(var n=Ge(t),i=-1,r=e.length;++i=0&&(n=e.slice(i+1),e=e.slice(0,i)),{type:e,name:n}})}function ba(t){return function(){var e=this.__on;if(e){for(var n=0,i=-1,r=e.length,a;n180?d+=360:d-s>180&&(s+=360),h.push({i:c.push(r(c)+"rotate(",null,i)-2,x:kt(s,d)})):d&&c.push(r(c)+"rotate("+d+i)}function l(s,d,c,h){s!==d?h.push({i:c.push(r(c)+"skewX(",null,i)-2,x:kt(s,d)}):d&&c.push(r(c)+"skewX("+d+i)}function u(s,d,c,h,f,p){if(s!==c||d!==h){var g=f.push(r(f)+"scale(",null,",",null,")");p.push({i:g-4,x:kt(s,c)},{i:g-2,x:kt(d,h)})}else(c!==1||h!==1)&&f.push(r(f)+"scale("+c+","+h+")")}return function(s,d){var c=[],h=[];return s=t(s),d=t(d),a(s.translateX,s.translateY,d.translateX,d.translateY,c,h),o(s.rotate,d.rotate,c,h),l(s.skewX,d.skewX,c,h),u(s.scaleX,s.scaleY,d.scaleX,d.scaleY,c,h),s=d=null,function(f){for(var p=-1,g=h.length,T;++p=0&&t._call.call(void 0,e),t=t._next;--zt}function bn(){Et=(de=Xt.now())+ge,zt=Vt=0;try{Da()}finally{zt=0,Ra(),Et=0}}function La(){var t=Xt.now(),e=t-de;e>fi&&(ge-=e,de=t)}function Ra(){for(var t,e=fe,n,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:fe=n);Pt=t,Le(i)}function Le(t){if(!zt){Vt&&(Vt=clearTimeout(Vt));var e=t-Et;e>24?(t<1/0&&(Vt=setTimeout(bn,t-Xt.now()-ge)),Dt&&(Dt=clearInterval(Dt))):(Dt||(de=Xt.now(),Dt=setInterval(La,fi)),zt=1,di(bn))}}function xn(t,e,n){var i=new pe;return e=e==null?0:+e,i.restart(r=>{i.stop(),t(r+e)},e,n),i}var $a=Zn("start","end","cancel","interrupt"),Va=[],_i=0,In=1,Re=2,se=3,Tn=4,$e=5,le=6;function me(t,e,n,i,r,a){var o=t.__transition;if(!o)t.__transition={};else if(n in o)return;Pa(t,n,{name:e,index:i,group:r,on:$a,tween:Va,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:_i})}function Ke(t,e){var n=nt(t,e);if(n.state>_i)throw new Error("too late; already scheduled");return n}function at(t,e){var n=nt(t,e);if(n.state>se)throw new Error("too late; already running");return n}function nt(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Pa(t,e,n){var i=t.__transition,r;i[e]=n,n.timer=pi(a,0,n.time);function a(s){n.state=In,n.timer.restart(o,n.delay,n.time),n.delay<=s&&o(s-n.delay)}function o(s){var d,c,h,f;if(n.state!==In)return u();for(d in i)if(f=i[d],f.name===n.name){if(f.state===se)return xn(o);f.state===Tn?(f.state=le,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[d]):+dRe&&i.state<$e,i.state=le,i.timer.stop(),i.on.call(r?"interrupt":"cancel",t,t.__data__,i.index,i.group),delete n[o]}a&&delete t.__transition}}function Ba(t){return this.each(function(){Ha(this,t)})}function qa(t,e){var n,i;return function(){var r=at(this,t),a=r.tween;if(a!==n){i=n=a;for(var o=0,l=i.length;o=0&&(e=e.slice(0,n)),!e||e==="start"})}function mo(t,e,n){var i,r,a=go(e)?Ke:at;return function(){var o=a(this,t),l=o.on;l!==i&&(r=(i=l).copy()).on(e,n),o.on=r}}function yo(t,e){var n=this._id;return arguments.length<2?nt(this.node(),n).on.on(t):this.each(mo(n,t,e))}function wo(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function ko(){return this.on("end.remove",wo(this._id))}function bo(t){var e=this._name,n=this._id;typeof t!="function"&&(t=We(t));for(var i=this._groups,r=i.length,a=new Array(r),o=0;o+t;function qo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Xo={time:null,delay:0,duration:250,ease:qo};function Yo(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Uo(t){var e,n;t instanceof lt?(e=t._id,t=t._name):(e=mi(),(n=Xo).time=Je(),t=t==null?null:t+"");for(var i=this._groups,r=i.length,a=0;a=0))throw new Error(`invalid digits: ${t}`);if(e>15)return yi;const n=10**e;return function(i){this._+=i[0];for(let r=1,a=i.length;rbt)if(!(Math.abs(c*u-s*d)>bt)||!a)this._append`L${this._x1=e},${this._y1=n}`;else{let f=i-o,p=r-l,g=u*u+s*s,T=f*f+p*p,w=Math.sqrt(g),k=Math.sqrt(h),b=a*Math.tan((Ve-Math.acos((g+h-T)/(2*w*k)))/2),M=b/k,S=b/w;Math.abs(M-1)>bt&&this._append`L${e+M*d},${n+M*c}`,this._append`A${a},${a},0,0,${+(c*f>d*p)},${this._x1=e+S*u},${this._y1=n+S*s}`}}arc(e,n,i,r,a,o){if(e=+e,n=+n,i=+i,o=!!o,i<0)throw new Error(`negative radius: ${i}`);let l=i*Math.cos(r),u=i*Math.sin(r),s=e+l,d=n+u,c=1^o,h=o?r-a:a-r;this._x1===null?this._append`M${s},${d}`:(Math.abs(this._x1-s)>bt||Math.abs(this._y1-d)>bt)&&this._append`L${s},${d}`,i&&(h<0&&(h=h%Pe+Pe),h>Wo?this._append`A${i},${i},0,1,${c},${e-l},${n-u}A${i},${i},0,1,${c},${this._x1=s},${this._y1=d}`:h>bt&&this._append`A${i},${i},0,${+(h>=Ve)},${c},${this._x1=e+i*Math.cos(a)},${this._y1=n+i*Math.sin(a)}`)}rect(e,n,i,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}}var Cn={},Me={},Ae=34,Lt=10,Ne=13;function wi(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function Ko(t,e){var n=wi(t);return function(i,r){return e(n(i),r,t)}}function En(t){var e=Object.create(null),n=[];return t.forEach(function(i){for(var r in i)r in e||n.push(e[r]=r)}),n}function K(t,e){var n=t+"",i=n.length;return i9999?"+"+K(t,6):K(t,4)}function Qo(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),i=t.getUTCSeconds(),r=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Zo(t.getUTCFullYear())+"-"+K(t.getUTCMonth()+1,2)+"-"+K(t.getUTCDate(),2)+(r?"T"+K(e,2)+":"+K(n,2)+":"+K(i,2)+"."+K(r,3)+"Z":i?"T"+K(e,2)+":"+K(n,2)+":"+K(i,2)+"Z":n||e?"T"+K(e,2)+":"+K(n,2)+"Z":"")}function jo(t){var e=new RegExp('["'+t+` +\r]`),n=t.charCodeAt(0);function i(c,h){var f,p,g=r(c,function(T,w){if(f)return f(T,w-1);p=T,f=h?Ko(T,h):wi(T)});return g.columns=p||[],g}function r(c,h){var f=[],p=c.length,g=0,T=0,w,k=p<=0,b=!1;c.charCodeAt(p-1)===Lt&&--p,c.charCodeAt(p-1)===Ne&&--p;function M(){if(k)return Me;if(b)return b=!1,Cn;var H,y=g,D;if(c.charCodeAt(y)===Ae){for(;g++=p?k=!0:(D=c.charCodeAt(g++))===Lt?b=!0:D===Ne&&(b=!0,c.charCodeAt(g)===Lt&&++g),c.slice(y+1,H-1).replace(/""/g,'"')}for(;g=0))throw new RangeError(`invalid digits: ${n}`);e=i}return t},()=>new Jo(e)}function Ii(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Ti(t){this._context=t}Ti.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function je(t){return new Ti(t)}function Ci(t){return t[0]}function Ei(t){return t[1]}function Nt(t,e){var n=W(!0),i=null,r=je,a=null,o=xi(l);t=typeof t=="function"?t:t===void 0?Ci:W(t),e=typeof e=="function"?e:e===void 0?Ei:W(e);function l(u){var s,d=(u=Ii(u)).length,c,f=!1,h;for(i==null&&(a=r(h=o())),s=0;s<=d;++s)!(s=h;--p)l.point(k[p],M[p]);l.lineEnd(),l.areaEnd()}w&&(k[f]=+t(T,f,c),M[f]=+e(T,f,c),l.point(i?+i(T,f,c):k[f],n?+n(T,f,c):M[f]))}if(b)return l=null,b+""||null}function d(){return Nt().defined(r).curve(o).context(a)}return s.x=function(c){return arguments.length?(t=typeof c=="function"?c:W(+c),i=null,s):t},s.x0=function(c){return arguments.length?(t=typeof c=="function"?c:W(+c),s):t},s.x1=function(c){return arguments.length?(i=c==null?null:typeof c=="function"?c:W(+c),s):i},s.y=function(c){return arguments.length?(e=typeof c=="function"?c:W(+c),n=null,s):e},s.y0=function(c){return arguments.length?(e=typeof c=="function"?c:W(+c),s):e},s.y1=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:W(+c),s):n},s.lineX0=s.lineY0=function(){return d().x(t).y(e)},s.lineY1=function(){return d().x(t).y(n)},s.lineX1=function(){return d().x(i).y(e)},s.defined=function(c){return arguments.length?(r=typeof c=="function"?c:W(!!c),s):r},s.curve=function(c){return arguments.length?(o=c,a!=null&&(l=o(a)),s):o},s.context=function(c){return arguments.length?(c==null?a=l=null:l=o(a=c),s):a},s}var Mi=tn(je);function Ai(t){this._curve=t}Ai.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};function tn(t){function e(n){return new Ai(t(n))}return e._curve=t,e}function Bt(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(n){return arguments.length?e(tn(n)):e()._curve},t}function An(){return Bt(Nt().curve(Mi))}function Nn(){var t=Ht().curve(Mi),e=t.curve,n=t.lineX0,i=t.lineX1,r=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Bt(n())},delete t.lineX0,t.lineEndAngle=function(){return Bt(i())},delete t.lineX1,t.lineInnerRadius=function(){return Bt(r())},delete t.lineY0,t.lineOuterRadius=function(){return Bt(a())},delete t.lineY1,t.curve=function(o){return arguments.length?e(tn(o)):e()._curve},t}function Sn(){}function Be(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Ni(t,e){this._context=t,this._k=(1-e)/6}Ni.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Be(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Be(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(i){return new Ni(i,e)}return n.tension=function(i){return t(+i)},n})(0);function Si(t,e){this._context=t,this._k=(1-e)/6}Si.prototype={areaStart:Sn,areaEnd:Sn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Be(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const ee=function t(e){function n(i){return new Si(i,e)}return n.tension=function(i){return t(+i)},n}(0);function Fn(t){return t<0?-1:1}function On(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),l=(a*r+o*i)/(i+r);return(Fn(a)+Fn(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(l))||0}function Dn(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Se(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,l=(a-i)/3;t._context.bezierCurveTo(i+l,r+l*e,a-l,o-l*n,a,o)}function _e(t){this._context=t}_e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Se(this,this._t0,Dn(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Se(this,Dn(this,n=On(this,t,e)),n);break;default:Se(this,this._t0,n=On(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};Object.create(_e.prototype).point=function(t,e){_e.prototype.point.call(this,e,t)};function ct(t){return new _e(t)}function qt(t,e,n){this.k=t,this.x=e,this.y=n}qt.prototype={constructor:qt,scale:function(t){return t===1?this:new qt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new qt(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};qt.prototype;function as(t){let e,n,i,r,a;return{c(){e=O("div"),n=O("p"),i=ie(t[0]),r=V(),a=Un("svg"),this.h()},l(o){e=D(o,"DIV",{class:!0});var l=B(e);n=D(l,"P",{class:!0});var u=B(n);i=re(u,t[0]),u.forEach(E),r=P(l),a=Wn(l,"svg",{}),B(a).forEach(E),l.forEach(E),this.h()},h(){N(n,"class","graph-title svelte-18x9z4j"),N(e,"class","radial svelte-18x9z4j")},m(o,l){G(o,e,l),x(e,n),x(n,i),x(e,r),x(e,a),t[3](a)},p(o,[l]){l&1&&Gn(i,o[0])},i:ue,o:ue,d(o){o&&E(e),t[3](null)}}}const ne=350,Rt=2e3;function os(t,e,n){let i,{data:r}=e,{title:a}=e;const o={top:50,right:0,bottom:0,left:0},l=ne,u=Math.min(ne,l)/2-Math.max(o.top,o.bottom);let s=!1;Xe(async()=>{const h=new IntersectionObserver(d,{threshold:.1});return h.observe(i),()=>h.disconnect()});function d(h){h[0].isIntersecting&&!s&&(s=!0,c())}function c(){const h=et(i).attr("width",ne).attr("height",l).append("g").attr("transform",`translate(${ne/2}, ${l/2})`),p=Qe().domain(r.map(y=>y.half_hour_intervals)).range([0,2*Math.PI]).padding(.1),v=ae().domain([0,ht(r,y=>Math.max(y.EFIT,y.ICONIC))+.004]).range([0,u]);h.selectAll(".x-axis").data(r).enter().append("line").attr("class","x-axis").attr("x1",0).attr("y1",0).attr("x2",(y,z)=>z%2===0?Math.cos(p(y.half_hour_intervals))*u:0).attr("y2",(y,z)=>z%2===0?Math.sin(p(y.half_hour_intervals))*u:0).attr("stroke","lightgray").attr("stroke-width",(y,z)=>z%3===0?"0.6":"0.3").attr("stroke-dasharray",(y,z)=>z%3===0?"0,0":"4,3"),h.append("circle").attr("class","circle-border").attr("cx",0).attr("cy",0).attr("r",u).attr("fill","none").attr("stroke","lightgray").attr("stroke-width",1);const T=An().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).radius(y=>v(y.ICONIC)).curve(ee);h.append("path").datum(r).attr("class","area-iconic").attr("d",Nn().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).innerRadius(0).outerRadius(y=>v(y.ICONIC)).curve(ee)(r)).attr("fill","var(--brandDarkGreen)").attr("opacity",0).transition().delay(1500).duration(Rt).ease(jt).attr("opacity",.03),h.append("path").datum(r).attr("class","area-efit").attr("d",Nn().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).innerRadius(0).outerRadius(y=>v(y.EFIT)).curve(ee)(r)).attr("fill","#e6841a").attr("opacity",0).transition().delay(1500).duration(Rt).ease(jt).attr("opacity",.03);const w=h.append("path").datum(r).attr("class","curve-iconic").attr("fill","none").attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1.5).attr("d",T),b=w.node().getTotalLength();w.attr("stroke-dasharray",b).attr("stroke-dashoffset",b).transition().ease(jt).duration(Rt).attr("stroke-dashoffset",0);const k=An().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).radius(y=>v(y.EFIT)).curve(ee),M=h.append("path").datum(r).attr("class","curve-efit").attr("fill","none").attr("stroke","#e6841a").attr("stroke-width",1.5).attr("d",k),S=M.node().getTotalLength();M.attr("stroke-dasharray",S).attr("stroke-dashoffset",S).transition().duration(Rt).ease(jt).attr("stroke-dashoffset",0),s&&setTimeout(()=>{h.selectAll(".area-iconic, .area-efit").on("mouseover",function(){et(this).transition().duration(200).attr("opacity",.1)}).on("mouseout",function(){et(this).transition().duration(200).attr("opacity",.03)}),H()},Rt+100);function H(){const y=new MouseEvent("mouseover");document.querySelectorAll(".area-iconic, .area-efit").forEach(Y=>{Y.matches(":hover")&&Y.dispatchEvent(y)})}h.selectAll(".x-label").data(r).enter().append("text").attr("fill","rgba(0, 0, 0, 0.7)").attr("class","x-label").attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x",y=>Math.cos(p(y.half_hour_intervals)-Math.PI/2+Math.PI)*(u+20)).attr("y",y=>Math.sin(p(y.half_hour_intervals)-Math.PI/2+Math.PI)*(u+15)).style("font-size","10px").style("fill","grey").text((y,z)=>z%2===0?y.half_hour_intervals:""),h.append("g").attr("transform","translate(-60, 270)"),h.append("circle").attr("class","x-axis-circle").attr("cx",0).attr("cy",0).attr("r",0).attr("fill","white").attr("stroke","lightgray").attr("stroke-width",.5),h.append("text").attr("x",12).attr("y",-u+10).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill","grey").text("PM"),h.append("text").attr("x",-12).attr("y",u-10).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill","grey").text("AM")}function f(h){Yn[h?"unshift":"push"](()=>{i=h,n(1,i)})}return t.$$set=h=>{"data"in h&&n(2,r=h.data),"title"in h&&n(0,a=h.title)},[a,i,r,f]}class ye extends Ye{constructor(e){super(),Ue(this,e,os,as,qe,{data:2,title:0})}}function ss(t){let e,n,i,r,a,o,l,u,s,d,c,f,h,p,v,T;return{c(){e=O("p"),n=ie(t[0]),i=V(),r=O("div"),a=Un("svg"),o=V(),l=O("div"),u=O("button"),s=ie("Normalized by type of bike"),c=V(),f=O("button"),h=ie("Total number of trips"),this.h()},l(w){e=D(w,"P",{class:!0});var b=B(e);n=re(b,t[0]),b.forEach(E),i=P(w),r=D(w,"DIV",{class:!0});var k=B(r);a=Wn(k,"svg",{}),B(a).forEach(E),k.forEach(E),o=P(w),l=D(w,"DIV",{class:!0});var M=B(l);u=D(M,"BUTTON",{class:!0});var S=B(u);s=re(S,"Normalized by type of bike"),S.forEach(E),c=P(M),f=D(M,"BUTTON",{class:!0});var H=B(f);h=re(H,"Total number of trips"),H.forEach(E),M.forEach(E),this.h()},h(){N(e,"class","graph-title svelte-p68fwc"),N(r,"class","svg-container svelte-p68fwc"),N(u,"class",d=Kt(t[2]?"button button-on":"button button-off")+" svelte-p68fwc"),N(f,"class",p=Kt(t[2]?"button button-off":"button button-on")+" svelte-p68fwc"),N(l,"class","button-container svelte-p68fwc")},m(w,b){G(w,e,b),x(e,n),G(w,i,b),G(w,r,b),x(r,a),t[16](a),G(w,o,b),G(w,l,b),x(l,u),x(u,s),x(l,c),x(l,f),x(f,h),v||(T=[dn(u,"click",t[17]),dn(f,"click",t[18])],v=!0)},p(w,[b]){b&1&&Gn(n,w[0]),b&4&&d!==(d=Kt(w[2]?"button button-on":"button button-off")+" svelte-p68fwc")&&N(u,"class",d),b&4&&p!==(p=Kt(w[2]?"button button-off":"button button-on")+" svelte-p68fwc")&&N(f,"class",p)},i:ue,o:ue,d(w){w&&(E(e),E(i),E(r),E(o),E(l)),t[16](null),v=!1,Di(T)}}}const zn=650,ls=390,Ln=.5,ft=400;function us(t,e,n){let i,r=[];const a={top:20,right:40,bottom:50,left:55};let o=Math.min(window.innerWidth-a.left-a.right,zn),l=o*Ln,{csvData:u}=e,{title:s}=e,{xlabel:d}=e,{medianEFIT:c}=e,{medianICONIC:f}=e,{suffix:h}=e,{xdivider:p}=e,{xdecimal:v}=e,{xtickamount:T}=e,{xunit:w}=e,{medianadjust:b}=e,k=!0,M,S=!0;Xe(async()=>{r=await He(u,m=>({EFIT:+m.EFIT,EFIT_normalized:+m.EFIT_normalized,ICONIC:+m.ICONIC,ICONIC_normalized:+m.ICONIC_normalized,interval_start:+m.interval_start})),y(),window.addEventListener("resize",H)});function H(){o=Math.min(window.innerWidth-a.left-a.right,zn),o=Math.max(o,ls),l=o*Ln,y()}function y(){et(i).selectAll("*").remove();const m=ae().domain([Vi(r,I=>I.interval_start),ht(r,I=>I.interval_start)]).range([0,o]),C=ae().domain([0,ht(r,I=>k?Math.max(I.EFIT_normalized,I.ICONIC_normalized):Math.max(I.EFIT,I.ICONIC))]).range([l,0]),F=et(i).attr("width",o+a.left+a.right).attr("height",l+a.top+a.bottom).append("g").attr("transform",`translate(${a.left},${a.top})`);F.append("g").attr("transform",`translate(0,${l})`).call(Wi(m).ticks(T).tickSizeOuter(0).tickFormat(I=>`${(I/p).toFixed(v)}`)).selectAll(".domain, .tick line").attr("stroke","lightgrey").attr("stroke-width",1),F.selectAll("g.tick text").style("fill","grey"),M=F.append("g"),z(C);const Ot=Ht().x(I=>m(I.interval_start)).y0(C(0)).y1(I=>C(k?I.ICONIC_normalized:I.ICONIC)).curve(ct);F.append("path").datum(r).attr("class",`area-iconic-${h}`).attr("fill","var(--brandDarkGreen)").attr("opacity",.03).attr("d",Ot);const ot=Ht().x(I=>m(I.interval_start)).y0(C(0)).y1(I=>C(k?I.EFIT_normalized:I.EFIT)).curve(ct);F.append("path").datum(r).attr("class",`area-efit-${h}`).attr("fill","#e6841a").attr("opacity",.03).attr("d",ot),F.selectAll(`.area-iconic-${h}, .area-efit-${h}`).on("mouseover",function(){S&&et(this).transition().duration(ft-200).attr("opacity",.1)}).on("mouseout",function(){S&&et(this).transition().duration(ft-200).attr("opacity",.03)});const Ut=Nt().x(I=>m(I.interval_start)).y(I=>C(k?I.EFIT_normalized:I.EFIT)).curve(ct);F.append("path").datum(r).attr("class",`line-efit-${h}`).attr("fill","none").attr("stroke","#e6841a").attr("stroke-width",1.5).attr("d",Ut);const Dt=Nt().x(I=>m(I.interval_start)).y(I=>C(k?I.ICONIC_normalized:I.ICONIC)).curve(ct);F.append("path").datum(r).attr("class",`line-iconic-${h}`).attr("fill","none").attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1.5).attr("d",Dt),F.append("line").attr("class",`median-line-iconic-${h}`).attr("x1",m(f)).attr("x2",m(f)).attr("y1",0).attr("y2",l).attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1).attr("stroke-dasharray","4"),F.append("text").attr("class",`median-label-iconic-${h}`).attr("x",m(f)+5).attr("y",1/l+7).attr("fill","var(--brandDarkGreen)").style("font-size","12px").attr("text-anchor","start").append("tspan").text("ICONIC").attr("x",m(f)+5).attr("dy","0em").append("tspan").text("Median: "+(f/p).toFixed(1)+" "+w).attr("x",m(f)+5).attr("dy","1.2em"),F.append("line").attr("class",`median-line-efit-${h}`).attr("x1",m(c)).attr("x2",m(c)).attr("y1",(1-ht(r,I=>I.EFIT_normalized)/ht(r,I=>I.ICONIC_normalized))*l+b).attr("y2",l).attr("stroke","#e6841a").attr("stroke-width",1).attr("stroke-dasharray","4"),F.append("text").attr("class",`median-label-efit-${h}`).attr("x",m(c)+5).attr("y",(1-ht(r,I=>I.EFIT_normalized)/ht(r,I=>I.ICONIC_normalized))*l+b+7).attr("fill","#e6841a").style("font-size","12px").attr("text-anchor","start").append("tspan").text("EFIT").attr("x",m(c)+5).attr("dy","0em").append("tspan").text("Median: "+(c/p).toFixed(1)+" "+w).attr("x",m(c)+5).attr("dy","1.2em"),F.append("text").attr("text-anchor","middle").attr("x",o/2).attr("y",l+a.bottom-10).style("font-size","14px").style("font-family","RobotoBold").text(d)}function z(m){const C=Math.max(2,Math.floor(l/25));M.call(Gi(m).ticks(C)).selectAll(".tick text").attr("fill","grey"),M.selectAll(".domain, .tick line").attr("stroke","lightgrey")}function Y(){const m=ae().domain([0,ht(r,C=>k?Math.max(C.EFIT_normalized,C.ICONIC_normalized):Math.max(C.EFIT,C.ICONIC))]).range([l,0]);z(m),et(`.line-iconic-${h}`).transition().duration(ft).attr("d",Nt().x(C=>te().domain(r.map(F=>F.interval_start)).range([0,o])(C.interval_start)).y(C=>m(k?C.ICONIC_normalized:C.ICONIC)).curve(ct)),et(`.area-iconic-${h}`).transition().duration(ft).attr("d",Ht().x(C=>te().domain(r.map(F=>F.interval_start)).range([0,o])(C.interval_start)).y0(l).y1(C=>m(k?C.ICONIC_normalized:C.ICONIC)).curve(ct)),et(`.line-efit-${h}`).transition().duration(ft).attr("d",Nt().x(C=>te().domain(r.map(F=>F.interval_start)).range([0,o])(C.interval_start)).y(C=>m(k?C.EFIT_normalized:C.EFIT)).curve(ct)),et(`.area-efit-${h}`).transition().duration(ft).attr("d",Ht().x(C=>te().domain(r.map(F=>F.interval_start)).range([0,o])(C.interval_start)).y0(l).y1(C=>m(k?C.EFIT_normalized:C.EFIT)).curve(ct))}function Z(){const m=new MouseEvent("mouseover");i.querySelectorAll(`.area-iconic-${h}, .area-efit-${h}`).forEach(F=>{F.matches(":hover")&&F.dispatchEvent(m)})}function J(m){Yn[m?"unshift":"push"](()=>{i=m,n(1,i)})}const Q=()=>{n(2,k=!k),Y(),n(3,S=!1),setTimeout(()=>{n(3,S=!0),Z()},ft)},it=()=>{n(2,k=!k),Y(),n(3,S=!1),setTimeout(()=>{n(3,S=!0),Z()},ft)};return t.$$set=m=>{"csvData"in m&&n(6,u=m.csvData),"title"in m&&n(0,s=m.title),"xlabel"in m&&n(7,d=m.xlabel),"medianEFIT"in m&&n(8,c=m.medianEFIT),"medianICONIC"in m&&n(9,f=m.medianICONIC),"suffix"in m&&n(10,h=m.suffix),"xdivider"in m&&n(11,p=m.xdivider),"xdecimal"in m&&n(12,v=m.xdecimal),"xtickamount"in m&&n(13,T=m.xtickamount),"xunit"in m&&n(14,w=m.xunit),"medianadjust"in m&&n(15,b=m.medianadjust)},[s,i,k,S,Y,Z,u,d,c,f,h,p,v,T,w,b,J,Q,it]}class Fe extends Ye{constructor(e){super(),Ue(this,e,us,ss,qe,{csvData:6,title:0,xlabel:7,medianEFIT:8,medianICONIC:9,suffix:10,xdivider:11,xdecimal:12,xtickamount:13,xunit:14,medianadjust:15})}}function Rn(t,e,n){const i=t.slice();return i[6]=e[n][0],i[7]=e[n][1],i}function $n(t,e,n){const i=t.slice();return i[6]=e[n][0],i[7]=e[n][1],i}function Vn(t){let e,n;return e=new ye({props:{data:t[1],title:"Weekdays"}}),{c(){xt(e.$$.fragment)},l(i){It(e.$$.fragment,i)},m(i,r){Tt(e,i,r),n=!0},p(i,r){const a={};r&2&&(a.data=i[1]),e.$set(a)},i(i){n||(L(e.$$.fragment,i),n=!0)},o(i){U(e.$$.fragment,i),n=!1},d(i){Ct(e,i)}}}function Pn(t){let e,n;return e=new ye({props:{data:t[2],title:"Weekends"}}),{c(){xt(e.$$.fragment)},l(i){It(e.$$.fragment,i)},m(i,r){Tt(e,i,r),n=!0},p(i,r){const a={};r&4&&(a.data=i[2]),e.$set(a)},i(i){n||(L(e.$$.fragment,i),n=!0)},o(i){U(e.$$.fragment,i),n=!1},d(i){Ct(e,i)}}}function Hn(t){let e,n,i,r;return n=new ye({props:{data:t[7],title:t[6]}}),{c(){e=O("div"),xt(n.$$.fragment),i=V(),this.h()},l(a){e=D(a,"DIV",{class:!0});var o=B(e);It(n.$$.fragment,o),i=P(o),o.forEach(E),this.h()},h(){N(e,"class","weekday-item svelte-1b7oemr")},m(a,o){G(a,e,o),Tt(n,e,null),x(e,i),r=!0},p(a,o){const l={};o&1&&(l.data=a[7]),o&1&&(l.title=a[6]),n.$set(l)},i(a){r||(L(n.$$.fragment,a),r=!0)},o(a){U(n.$$.fragment,a),r=!1},d(a){a&&E(e),Ct(n)}}}function Bn(t){let e,n,i=t[7].length>0&&Hn(t);return{c(){i&&i.c(),e=ce()},l(r){i&&i.l(r),e=ce()},m(r,a){i&&i.m(r,a),G(r,e,a),n=!0},p(r,a){r[7].length>0?i?(i.p(r,a),a&1&&L(i,1)):(i=Hn(r),i.c(),L(i,1),i.m(e.parentNode,e)):i&&(At(),U(i,1,1,()=>{i=null}),Mt())},i(r){n||(L(i),n=!0)},o(r){U(i),n=!1},d(r){r&&E(e),i&&i.d(r)}}}function qn(t){let e,n,i,r;return n=new ye({props:{data:t[7],title:t[6]}}),{c(){e=O("div"),xt(n.$$.fragment),i=V(),this.h()},l(a){e=D(a,"DIV",{class:!0});var o=B(e);It(n.$$.fragment,o),i=P(o),o.forEach(E),this.h()},h(){N(e,"class","weekend-item svelte-1b7oemr")},m(a,o){G(a,e,o),Tt(n,e,null),x(e,i),r=!0},p(a,o){const l={};o&1&&(l.data=a[7]),o&1&&(l.title=a[6]),n.$set(l)},i(a){r||(L(n.$$.fragment,a),r=!0)},o(a){U(n.$$.fragment,a),r=!1},d(a){a&&E(e),Ct(n)}}}function Xn(t){let e,n,i=t[7].length>0&&qn(t);return{c(){i&&i.c(),e=ce()},l(r){i&&i.l(r),e=ce()},m(r,a){i&&i.m(r,a),G(r,e,a),n=!0},p(r,a){r[7].length>0?i?(i.p(r,a),a&1&&L(i,1)):(i=qn(r),i.c(),L(i,1),i.m(e.parentNode,e)):i&&(At(),U(i,1,1,()=>{i=null}),Mt())},i(r){n||(L(i),n=!0)},o(r){U(i),n=!1},d(r){r&&E(e),i&&i.d(r)}}}function cs(t){let e,n,i,r=``,a,o,l='map of bike lanes and bike-share stations in toronto with a white background',u,s,d,c=`

Exploring E-Bike Usage in Toronto’s Bike Share System

Lanrick Bennett Jr., Scott McCallum, Jeff Allen
- December, 2024

`,f,h,p=`

As cycling becomes an increasingly popular mode of transportation in Toronto, one trend is gaining significant traction: the rise of electric bikes (e-bikes) within Toronto's Bike Share system. Ridership data shared by Bike Share Toronto from June 2024 has given us a detailed look at how these e-bikes, known as EFIT, compare to their classic non-electric counterparts, the ICONIC bikes.

The introduction of e-bikes in Toronto is not just about offering a new mode of transportation –it’s about making cycling more accessible, efficient, and appealing to a wider range of people. Whether it’s older adults who may need extra assistance with pedaling, people with longer commutes, or those who want to avoid arriving at their destination sweaty, e-bikes have the potential to address many of the challenges that have historically limited bike usage in the city.

Photo of a Bike Share station in Kensington Market

Left: Classic (ICONIC) bike. Right: E-bike (EFIT) with pedal assist.

From a sustainability perspective, e-bikes provide a viable alternative to cars for longer trips and can help cut down on vehicle emissions, especially during peak traffic hours. As the city works toward its ambitious net-zero targets, the role of e-bikes in encouraging a shift from motorized transport to more sustainable, human-powered options cannot be understated.

Overall, in June 2024, there were more than 762,000 Bike Share trips in Toronto. 17.4% of these trips were by e-bike. Looking at the relative characteristics of these trips reveals some intriguing patterns that could shape the future of urban mobility in Toronto.

One of the most notable differences between e-bikes and classic bikes is the distance covered during trips. On average, e-bike users tend to ride +`)}function s(c){return c.map(d).join(t)}function d(c){return c==null?"":c instanceof Date?Qo(c):e.test(c+="")?'"'+c.replace(/"/g,'""')+'"':c}return{parse:i,parseRows:r,format:o,formatBody:l,formatRows:u,formatRow:s,formatValue:d}}var ts=jo(","),es=ts.parse;function ns(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function is(t,e){return fetch(t,e).then(ns)}function rs(t){return function(e,n,i){return arguments.length===2&&typeof n=="function"&&(i=n,n=void 0),is(e,n).then(function(r){return t(r,i)})}}var He=rs(es);const Mn=Symbol("implicit");function ki(){var t=new gn,e=[],n=[],i=Mn;function r(a){let o=t.get(a);if(o===void 0){if(i!==Mn)return i;t.set(a,o=e.push(a)-1)}return n[o%n.length]}return r.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new gn;for(const o of a)t.has(o)||t.set(o,e.push(o)-1);return r},r.range=function(a){return arguments.length?(n=Array.from(a),r):n.slice()},r.unknown=function(a){return arguments.length?(i=a,r):i},r.copy=function(){return ki(e,n).unknown(i)},Jn.apply(r,arguments),r}function Qe(){var t=ki().unknown(void 0),e=t.domain,n=t.range,i=0,r=1,a,o,l=!1,u=0,s=0,d=.5;delete t.unknown;function c(){var h=e().length,f=r=0))throw new RangeError(`invalid digits: ${n}`);e=i}return t},()=>new Jo(e)}function Ii(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Ti(t){this._context=t}Ti.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function je(t){return new Ti(t)}function Ci(t){return t[0]}function Ei(t){return t[1]}function Nt(t,e){var n=W(!0),i=null,r=je,a=null,o=xi(l);t=typeof t=="function"?t:t===void 0?Ci:W(t),e=typeof e=="function"?e:e===void 0?Ei:W(e);function l(u){var s,d=(u=Ii(u)).length,c,h=!1,f;for(i==null&&(a=r(f=o())),s=0;s<=d;++s)!(s=f;--p)l.point(b[p],M[p]);l.lineEnd(),l.areaEnd()}w&&(b[h]=+t(T,h,c),M[h]=+e(T,h,c),l.point(i?+i(T,h,c):b[h],n?+n(T,h,c):M[h]))}if(k)return l=null,k+""||null}function d(){return Nt().defined(r).curve(o).context(a)}return s.x=function(c){return arguments.length?(t=typeof c=="function"?c:W(+c),i=null,s):t},s.x0=function(c){return arguments.length?(t=typeof c=="function"?c:W(+c),s):t},s.x1=function(c){return arguments.length?(i=c==null?null:typeof c=="function"?c:W(+c),s):i},s.y=function(c){return arguments.length?(e=typeof c=="function"?c:W(+c),n=null,s):e},s.y0=function(c){return arguments.length?(e=typeof c=="function"?c:W(+c),s):e},s.y1=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:W(+c),s):n},s.lineX0=s.lineY0=function(){return d().x(t).y(e)},s.lineY1=function(){return d().x(t).y(n)},s.lineX1=function(){return d().x(i).y(e)},s.defined=function(c){return arguments.length?(r=typeof c=="function"?c:W(!!c),s):r},s.curve=function(c){return arguments.length?(o=c,a!=null&&(l=o(a)),s):o},s.context=function(c){return arguments.length?(c==null?a=l=null:l=o(a=c),s):a},s}var Mi=tn(je);function Ai(t){this._curve=t}Ai.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};function tn(t){function e(n){return new Ai(t(n))}return e._curve=t,e}function Bt(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(n){return arguments.length?e(tn(n)):e()._curve},t}function An(){return Bt(Nt().curve(Mi))}function Nn(){var t=Ht().curve(Mi),e=t.curve,n=t.lineX0,i=t.lineX1,r=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Bt(n())},delete t.lineX0,t.lineEndAngle=function(){return Bt(i())},delete t.lineX1,t.lineInnerRadius=function(){return Bt(r())},delete t.lineY0,t.lineOuterRadius=function(){return Bt(a())},delete t.lineY1,t.curve=function(o){return arguments.length?e(tn(o)):e()._curve},t}function Sn(){}function Be(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Ni(t,e){this._context=t,this._k=(1-e)/6}Ni.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Be(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Be(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(i){return new Ni(i,e)}return n.tension=function(i){return t(+i)},n})(0);function Si(t,e){this._context=t,this._k=(1-e)/6}Si.prototype={areaStart:Sn,areaEnd:Sn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Be(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const ee=function t(e){function n(i){return new Si(i,e)}return n.tension=function(i){return t(+i)},n}(0);function zn(t){return t<0?-1:1}function Fn(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),l=(a*r+o*i)/(i+r);return(zn(a)+zn(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(l))||0}function On(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Se(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,l=(a-i)/3;t._context.bezierCurveTo(i+l,r+l*e,a-l,o-l*n,a,o)}function _e(t){this._context=t}_e.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Se(this,this._t0,On(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Se(this,On(this,n=Fn(this,t,e)),n);break;default:Se(this,this._t0,n=Fn(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};Object.create(_e.prototype).point=function(t,e){_e.prototype.point.call(this,e,t)};function ct(t){return new _e(t)}function qt(t,e,n){this.k=t,this.x=e,this.y=n}qt.prototype={constructor:qt,scale:function(t){return t===1?this:new qt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new qt(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};qt.prototype;function as(t){let e,n,i,r,a;return{c(){e=F("div"),n=F("p"),i=ie(t[0]),r=V(),a=Un("svg"),this.h()},l(o){e=O(o,"DIV",{class:!0});var l=B(e);n=O(l,"P",{class:!0});var u=B(n);i=re(u,t[0]),u.forEach(E),r=P(l),a=Wn(l,"svg",{}),B(a).forEach(E),l.forEach(E),this.h()},h(){N(n,"class","graph-title svelte-18x9z4j"),N(e,"class","radial svelte-18x9z4j")},m(o,l){G(o,e,l),x(e,n),x(n,i),x(e,r),x(e,a),t[3](a)},p(o,[l]){l&1&&Gn(i,o[0])},i:ue,o:ue,d(o){o&&E(e),t[3](null)}}}const ne=350,Rt=2e3;function os(t,e,n){let i,{data:r}=e,{title:a}=e;const o={top:50,right:0,bottom:0,left:0},l=ne,u=Math.min(ne,l)/2-Math.max(o.top,o.bottom);let s=!1;Xe(async()=>{const f=new IntersectionObserver(d,{threshold:.1});return f.observe(i),()=>f.disconnect()});function d(f){f[0].isIntersecting&&!s&&(s=!0,c())}function c(){const f=et(i).attr("width",ne).attr("height",l).append("g").attr("transform",`translate(${ne/2}, ${l/2})`),p=Qe().domain(r.map(y=>y.half_hour_intervals)).range([0,2*Math.PI]).padding(.1),g=ae().domain([0,ft(r,y=>Math.max(y.EFIT,y.ICONIC))+.004]).range([0,u]);f.selectAll(".x-axis").data(r).enter().append("line").attr("class","x-axis").attr("x1",0).attr("y1",0).attr("x2",(y,D)=>D%2===0?Math.cos(p(y.half_hour_intervals))*u:0).attr("y2",(y,D)=>D%2===0?Math.sin(p(y.half_hour_intervals))*u:0).attr("stroke","lightgray").attr("stroke-width",(y,D)=>D%3===0?"0.6":"0.3").attr("stroke-dasharray",(y,D)=>D%3===0?"0,0":"4,3"),f.append("circle").attr("class","circle-border").attr("cx",0).attr("cy",0).attr("r",u).attr("fill","none").attr("stroke","lightgray").attr("stroke-width",1);const T=An().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).radius(y=>g(y.ICONIC)).curve(ee);f.append("path").datum(r).attr("class","area-iconic").attr("d",Nn().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).innerRadius(0).outerRadius(y=>g(y.ICONIC)).curve(ee)(r)).attr("fill","var(--brandDarkGreen)").attr("opacity",0).transition().delay(1500).duration(Rt).ease(jt).attr("opacity",.03),f.append("path").datum(r).attr("class","area-efit").attr("d",Nn().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).innerRadius(0).outerRadius(y=>g(y.EFIT)).curve(ee)(r)).attr("fill","#e6841a").attr("opacity",0).transition().delay(1500).duration(Rt).ease(jt).attr("opacity",.03);const w=f.append("path").datum(r).attr("class","curve-iconic").attr("fill","none").attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1.5).attr("d",T),k=w.node().getTotalLength();w.attr("stroke-dasharray",k).attr("stroke-dashoffset",k).transition().ease(jt).duration(Rt).attr("stroke-dashoffset",0);const b=An().angle(y=>p(y.half_hour_intervals)+p.bandwidth()/2+Math.PI).radius(y=>g(y.EFIT)).curve(ee),M=f.append("path").datum(r).attr("class","curve-efit").attr("fill","none").attr("stroke","#e6841a").attr("stroke-width",1.5).attr("d",b),S=M.node().getTotalLength();M.attr("stroke-dasharray",S).attr("stroke-dashoffset",S).transition().duration(Rt).ease(jt).attr("stroke-dashoffset",0),s&&setTimeout(()=>{f.selectAll(".area-iconic, .area-efit").on("mouseover",function(){et(this).transition().duration(200).attr("opacity",.1)}).on("mouseout",function(){et(this).transition().duration(200).attr("opacity",.03)}),H()},Rt+100);function H(){const y=new MouseEvent("mouseover");document.querySelectorAll(".area-iconic, .area-efit").forEach(Y=>{Y.matches(":hover")&&Y.dispatchEvent(y)})}f.selectAll(".x-label").data(r).enter().append("text").attr("fill","rgba(0, 0, 0, 0.7)").attr("class","x-label").attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x",y=>Math.cos(p(y.half_hour_intervals)-Math.PI/2+Math.PI)*(u+20)).attr("y",y=>Math.sin(p(y.half_hour_intervals)-Math.PI/2+Math.PI)*(u+15)).style("font-size","10px").style("fill","grey").text((y,D)=>D%2===0?y.half_hour_intervals:""),f.append("g").attr("transform","translate(-60, 270)"),f.append("circle").attr("class","x-axis-circle").attr("cx",0).attr("cy",0).attr("r",0).attr("fill","white").attr("stroke","lightgray").attr("stroke-width",.5),f.append("text").attr("x",12).attr("y",-u+10).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill","grey").text("PM"),f.append("text").attr("x",-12).attr("y",u-10).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill","grey").text("AM")}function h(f){Yn[f?"unshift":"push"](()=>{i=f,n(1,i)})}return t.$$set=f=>{"data"in f&&n(2,r=f.data),"title"in f&&n(0,a=f.title)},[a,i,r,h]}class ye extends Ye{constructor(e){super(),Ue(this,e,os,as,qe,{data:2,title:0})}}function ss(t){let e,n,i,r,a,o,l,u,s,d,c,h,f,p,g,T;return{c(){e=F("p"),n=ie(t[0]),i=V(),r=F("div"),a=Un("svg"),o=V(),l=F("div"),u=F("button"),s=ie("Normalized by type of bike"),c=V(),h=F("button"),f=ie("Total number of trips"),this.h()},l(w){e=O(w,"P",{class:!0});var k=B(e);n=re(k,t[0]),k.forEach(E),i=P(w),r=O(w,"DIV",{class:!0});var b=B(r);a=Wn(b,"svg",{}),B(a).forEach(E),b.forEach(E),o=P(w),l=O(w,"DIV",{class:!0});var M=B(l);u=O(M,"BUTTON",{class:!0});var S=B(u);s=re(S,"Normalized by type of bike"),S.forEach(E),c=P(M),h=O(M,"BUTTON",{class:!0});var H=B(h);f=re(H,"Total number of trips"),H.forEach(E),M.forEach(E),this.h()},h(){N(e,"class","graph-title svelte-x329w9"),N(r,"class","svg-container svelte-x329w9"),N(u,"class",d=Kt(t[2]?"button button-on":"button button-off")+" svelte-x329w9"),N(h,"class",p=Kt(t[2]?"button button-off":"button button-on")+" svelte-x329w9"),N(l,"class","button-container svelte-x329w9")},m(w,k){G(w,e,k),x(e,n),G(w,i,k),G(w,r,k),x(r,a),t[16](a),G(w,o,k),G(w,l,k),x(l,u),x(u,s),x(l,c),x(l,h),x(h,f),g||(T=[dn(u,"click",t[17]),dn(h,"click",t[18])],g=!0)},p(w,[k]){k&1&&Gn(n,w[0]),k&4&&d!==(d=Kt(w[2]?"button button-on":"button button-off")+" svelte-x329w9")&&N(u,"class",d),k&4&&p!==(p=Kt(w[2]?"button button-off":"button button-on")+" svelte-x329w9")&&N(h,"class",p)},i:ue,o:ue,d(w){w&&(E(e),E(i),E(r),E(o),E(l)),t[16](null),g=!1,Oi(T)}}}const Dn=650,ls=390,Ln=.5,ht=400;function us(t,e,n){let i,r=[];const a={top:20,right:40,bottom:50,left:55};let o=Math.min(window.innerWidth-a.left-a.right,Dn),l=o*Ln,{csvData:u}=e,{title:s}=e,{xlabel:d}=e,{medianEFIT:c}=e,{medianICONIC:h}=e,{suffix:f}=e,{xdivider:p}=e,{xdecimal:g}=e,{xtickamount:T}=e,{xunit:w}=e,{medianadjust:k}=e,b=!0,M,S=!0;Xe(async()=>{r=await He(u,v=>({EFIT:+v.EFIT,EFIT_normalized:+v.EFIT_normalized,ICONIC:+v.ICONIC,ICONIC_normalized:+v.ICONIC_normalized,interval_start:+v.interval_start})),y(),window.addEventListener("resize",H)});function H(){o=Math.min(window.innerWidth-a.left-a.right,Dn),o=Math.max(o,ls),l=o*Ln,y()}function y(){et(i).selectAll("*").remove();const v=ae().domain([Vi(r,I=>I.interval_start),ft(r,I=>I.interval_start)]).range([0,o]),C=ae().domain([0,ft(r,I=>b?Math.max(I.EFIT_normalized,I.ICONIC_normalized):Math.max(I.EFIT,I.ICONIC))]).range([l,0]),z=et(i).attr("width",o+a.left+a.right).attr("height",l+a.top+a.bottom).append("g").attr("transform",`translate(${a.left},${a.top})`);z.append("g").attr("transform",`translate(0,${l})`).call(Wi(v).ticks(T).tickSizeOuter(0).tickFormat(I=>`${(I/p).toFixed(g)}`)).selectAll(".domain, .tick line").attr("stroke","lightgrey").attr("stroke-width",1),z.selectAll("g.tick text").style("fill","grey"),M=z.append("g"),D(C);const Ft=Ht().x(I=>v(I.interval_start)).y0(C(0)).y1(I=>C(b?I.ICONIC_normalized:I.ICONIC)).curve(ct);z.append("path").datum(r).attr("class",`area-iconic-${f}`).attr("fill","var(--brandDarkGreen)").attr("opacity",.03).attr("d",Ft);const ot=Ht().x(I=>v(I.interval_start)).y0(C(0)).y1(I=>C(b?I.EFIT_normalized:I.EFIT)).curve(ct);z.append("path").datum(r).attr("class",`area-efit-${f}`).attr("fill","#e6841a").attr("opacity",.03).attr("d",ot),z.selectAll(`.area-iconic-${f}, .area-efit-${f}`).on("mouseover",function(){S&&et(this).transition().duration(ht-200).attr("opacity",.1)}).on("mouseout",function(){S&&et(this).transition().duration(ht-200).attr("opacity",.03)});const Ut=Nt().x(I=>v(I.interval_start)).y(I=>C(b?I.EFIT_normalized:I.EFIT)).curve(ct);z.append("path").datum(r).attr("class",`line-efit-${f}`).attr("fill","none").attr("stroke","#e6841a").attr("stroke-width",1.5).attr("d",Ut);const Ot=Nt().x(I=>v(I.interval_start)).y(I=>C(b?I.ICONIC_normalized:I.ICONIC)).curve(ct);z.append("path").datum(r).attr("class",`line-iconic-${f}`).attr("fill","none").attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1.5).attr("d",Ot),z.append("line").attr("class",`median-line-iconic-${f}`).attr("x1",v(h)).attr("x2",v(h)).attr("y1",0).attr("y2",l).attr("stroke","var(--brandDarkGreen)").attr("stroke-width",1).attr("stroke-dasharray","4"),z.append("text").attr("class",`median-label-iconic-${f}`).attr("x",v(h)+5).attr("y",1/l+7).attr("fill","var(--brandDarkGreen)").style("font-size","12px").attr("text-anchor","start").append("tspan").text("ICONIC").attr("x",v(h)+5).attr("dy","0em").append("tspan").text("Median: "+(h/p).toFixed(1)+" "+w).attr("x",v(h)+5).attr("dy","1.2em"),z.append("line").attr("class",`median-line-efit-${f}`).attr("x1",v(c)).attr("x2",v(c)).attr("y1",(1-ft(r,I=>I.EFIT_normalized)/ft(r,I=>I.ICONIC_normalized))*l+k).attr("y2",l).attr("stroke","#e6841a").attr("stroke-width",1).attr("stroke-dasharray","4"),z.append("text").attr("class",`median-label-efit-${f}`).attr("x",v(c)+5).attr("y",(1-ft(r,I=>I.EFIT_normalized)/ft(r,I=>I.ICONIC_normalized))*l+k+7).attr("fill","#e6841a").style("font-size","12px").attr("text-anchor","start").append("tspan").text("EFIT").attr("x",v(c)+5).attr("dy","0em").append("tspan").text("Median: "+(c/p).toFixed(1)+" "+w).attr("x",v(c)+5).attr("dy","1.2em"),z.append("text").attr("text-anchor","middle").attr("x",o/2).attr("y",l+a.bottom-10).style("font-size","14px").style("font-family","RobotoBold").text(d)}function D(v){const C=Math.max(2,Math.floor(l/25));M.call(Gi(v).ticks(C)).selectAll(".tick text").attr("fill","grey"),M.selectAll(".domain, .tick line").attr("stroke","lightgrey")}function Y(){const v=ae().domain([0,ft(r,C=>b?Math.max(C.EFIT_normalized,C.ICONIC_normalized):Math.max(C.EFIT,C.ICONIC))]).range([l,0]);D(v),et(`.line-iconic-${f}`).transition().duration(ht).attr("d",Nt().x(C=>te().domain(r.map(z=>z.interval_start)).range([0,o])(C.interval_start)).y(C=>v(b?C.ICONIC_normalized:C.ICONIC)).curve(ct)),et(`.area-iconic-${f}`).transition().duration(ht).attr("d",Ht().x(C=>te().domain(r.map(z=>z.interval_start)).range([0,o])(C.interval_start)).y0(l).y1(C=>v(b?C.ICONIC_normalized:C.ICONIC)).curve(ct)),et(`.line-efit-${f}`).transition().duration(ht).attr("d",Nt().x(C=>te().domain(r.map(z=>z.interval_start)).range([0,o])(C.interval_start)).y(C=>v(b?C.EFIT_normalized:C.EFIT)).curve(ct)),et(`.area-efit-${f}`).transition().duration(ht).attr("d",Ht().x(C=>te().domain(r.map(z=>z.interval_start)).range([0,o])(C.interval_start)).y0(l).y1(C=>v(b?C.EFIT_normalized:C.EFIT)).curve(ct))}function Z(){const v=new MouseEvent("mouseover");i.querySelectorAll(`.area-iconic-${f}, .area-efit-${f}`).forEach(z=>{z.matches(":hover")&&z.dispatchEvent(v)})}function J(v){Yn[v?"unshift":"push"](()=>{i=v,n(1,i)})}const Q=()=>{n(2,b=!b),Y(),n(3,S=!1),setTimeout(()=>{n(3,S=!0),Z()},ht)},it=()=>{n(2,b=!b),Y(),n(3,S=!1),setTimeout(()=>{n(3,S=!0),Z()},ht)};return t.$$set=v=>{"csvData"in v&&n(6,u=v.csvData),"title"in v&&n(0,s=v.title),"xlabel"in v&&n(7,d=v.xlabel),"medianEFIT"in v&&n(8,c=v.medianEFIT),"medianICONIC"in v&&n(9,h=v.medianICONIC),"suffix"in v&&n(10,f=v.suffix),"xdivider"in v&&n(11,p=v.xdivider),"xdecimal"in v&&n(12,g=v.xdecimal),"xtickamount"in v&&n(13,T=v.xtickamount),"xunit"in v&&n(14,w=v.xunit),"medianadjust"in v&&n(15,k=v.medianadjust)},[s,i,b,S,Y,Z,u,d,c,h,f,p,g,T,w,k,J,Q,it]}class ze extends Ye{constructor(e){super(),Ue(this,e,us,ss,qe,{csvData:6,title:0,xlabel:7,medianEFIT:8,medianICONIC:9,suffix:10,xdivider:11,xdecimal:12,xtickamount:13,xunit:14,medianadjust:15})}}function Rn(t,e,n){const i=t.slice();return i[6]=e[n][0],i[7]=e[n][1],i}function $n(t,e,n){const i=t.slice();return i[6]=e[n][0],i[7]=e[n][1],i}function Vn(t){let e,n;return e=new ye({props:{data:t[1],title:"Weekdays"}}),{c(){xt(e.$$.fragment)},l(i){It(e.$$.fragment,i)},m(i,r){Tt(e,i,r),n=!0},p(i,r){const a={};r&2&&(a.data=i[1]),e.$set(a)},i(i){n||(L(e.$$.fragment,i),n=!0)},o(i){U(e.$$.fragment,i),n=!1},d(i){Ct(e,i)}}}function Pn(t){let e,n;return e=new ye({props:{data:t[2],title:"Weekends"}}),{c(){xt(e.$$.fragment)},l(i){It(e.$$.fragment,i)},m(i,r){Tt(e,i,r),n=!0},p(i,r){const a={};r&4&&(a.data=i[2]),e.$set(a)},i(i){n||(L(e.$$.fragment,i),n=!0)},o(i){U(e.$$.fragment,i),n=!1},d(i){Ct(e,i)}}}function Hn(t){let e,n,i,r;return n=new ye({props:{data:t[7],title:t[6]}}),{c(){e=F("div"),xt(n.$$.fragment),i=V(),this.h()},l(a){e=O(a,"DIV",{class:!0});var o=B(e);It(n.$$.fragment,o),i=P(o),o.forEach(E),this.h()},h(){N(e,"class","weekday-item svelte-15vghzv")},m(a,o){G(a,e,o),Tt(n,e,null),x(e,i),r=!0},p(a,o){const l={};o&1&&(l.data=a[7]),o&1&&(l.title=a[6]),n.$set(l)},i(a){r||(L(n.$$.fragment,a),r=!0)},o(a){U(n.$$.fragment,a),r=!1},d(a){a&&E(e),Ct(n)}}}function Bn(t){let e,n,i=t[7].length>0&&Hn(t);return{c(){i&&i.c(),e=ce()},l(r){i&&i.l(r),e=ce()},m(r,a){i&&i.m(r,a),G(r,e,a),n=!0},p(r,a){r[7].length>0?i?(i.p(r,a),a&1&&L(i,1)):(i=Hn(r),i.c(),L(i,1),i.m(e.parentNode,e)):i&&(At(),U(i,1,1,()=>{i=null}),Mt())},i(r){n||(L(i),n=!0)},o(r){U(i),n=!1},d(r){r&&E(e),i&&i.d(r)}}}function qn(t){let e,n,i,r;return n=new ye({props:{data:t[7],title:t[6]}}),{c(){e=F("div"),xt(n.$$.fragment),i=V(),this.h()},l(a){e=O(a,"DIV",{class:!0});var o=B(e);It(n.$$.fragment,o),i=P(o),o.forEach(E),this.h()},h(){N(e,"class","weekend-item svelte-15vghzv")},m(a,o){G(a,e,o),Tt(n,e,null),x(e,i),r=!0},p(a,o){const l={};o&1&&(l.data=a[7]),o&1&&(l.title=a[6]),n.$set(l)},i(a){r||(L(n.$$.fragment,a),r=!0)},o(a){U(n.$$.fragment,a),r=!1},d(a){a&&E(e),Ct(n)}}}function Xn(t){let e,n,i=t[7].length>0&&qn(t);return{c(){i&&i.c(),e=ce()},l(r){i&&i.l(r),e=ce()},m(r,a){i&&i.m(r,a),G(r,e,a),n=!0},p(r,a){r[7].length>0?i?(i.p(r,a),a&1&&L(i,1)):(i=qn(r),i.c(),L(i,1),i.m(e.parentNode,e)):i&&(At(),U(i,1,1,()=>{i=null}),Mt())},i(r){n||(L(i),n=!0)},o(r){U(i),n=!1},d(r){r&&E(e),i&&i.d(r)}}}function cs(t){let e,n,i,r=`

`,a,o,l='map of bike lanes and bike-share stations in toronto with a white background',u,s,d,c=`

Exploring E-Bike Usage in Toronto’s Bike Share System

Lanrick Bennett Jr., Scott McCallum, Jeff Allen
+ December, 2024

`,h,f,p=`

As cycling becomes an increasingly popular mode of transportation in Toronto, one trend is gaining significant traction: the rise of electric bikes (e-bikes) within Toronto's Bike Share system. Ridership data shared by Bike Share Toronto from June 2024 has given us a detailed look at how these e-bikes, known as EFIT, compare to their classic non-electric counterparts, the ICONIC bikes.

The introduction of e-bikes in Toronto is not just about offering a new mode of transportation –it’s about making cycling more accessible, efficient, and appealing to a wider range of people. Whether it’s older adults who may need extra assistance with pedaling, people with longer commutes, or those who want to avoid arriving at their destination sweaty, e-bikes have the potential to address many of the challenges that have historically limited bike usage in the city.

Photo of a Bike Share station in Kensington Market

Left: Classic (ICONIC) bike. Right: E-bike (EFIT) with pedal assist.

From a sustainability perspective, e-bikes provide a viable alternative to cars for longer trips and can help cut down on vehicle emissions, especially during peak traffic hours. As the city works toward its ambitious net-zero targets, the role of e-bikes in encouraging a shift from motorized transport to more sustainable, human-powered options cannot be understated.

Overall, in June 2024, there were more than 762,000 Bike Share trips in Toronto. 17.4% of these trips were by e-bike. Looking at the relative characteristics of these trips reveals some intriguing patterns that could shape the future of urban mobility in Toronto.

One of the most notable differences between e-bikes and classic bikes is the distance covered during trips. On average, e-bike users tend to ride further, capitalizing on the extra power that electric motors provide. These longer trips suggest that e-bikes are enabling riders to explore parts of the city that might have been less accessible via traditional pedal bikes. Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for - cycling trips across Toronto.

`,v,T,w,b,k,M,S=`

Interestingly, despite these longer trips, there is little difference in + cycling trips across Toronto.

`,g,T,w,k,b,M,S=`

Interestingly, despite these longer trips, there is little difference in the duration of e-bike trips compared to classic bikes. Riders are thus traveling faster on e-bikes on average, which makes sense given their assisted pedaling capabilities. Higher speeds not only allow cyclists to reach destinations quicker but could also make cycling more attractive to those who may have previously found it too time-consuming or physically demanding. With e-bikes, the barriers to entry for cycling are lowered, - making it a more practical and inclusive option for a broader demographic.

`,H,y,z,Y,Z,J,Q=`

Another key insight from the data is that e-bike trips tend to involve + making it a more practical and inclusive option for a broader demographic.

`,H,y,D,Y,Z,J,Q=`

Another key insight from the data is that e-bike trips tend to involve slightly more elevation gain. In a city like Toronto, where hills and slopes can make cycling more challenging, the extra boost from an e-bike's motor can make a big difference. For example, riders can now tackle @@ -24,10 +24,10 @@ import{s as qe,n as ue,o as Xe,b as Yn,f as Kt,r as Di}from"../chunks/scheduler. the Scarborough Bluffs, with greater ease. This ability to flatten out the city’s topography opens up new opportunities for riders, making cycling a more attractive option in areas that were previously considered difficult - to navigate on a bike.

`,it,m,C,F,Ot,ot,Ut=`

The data also shows some intriguing differences in the time of day when e-bikes are used. While we’re still investigating the reasons behind this + to navigate on a bike.

`,it,v,C,z,Ft,ot,Ut=`

The data also shows some intriguing differences in the time of day when e-bikes are used. While we’re still investigating the reasons behind this trend, it could be related to the availability of bikes at different stations during peak and off-peak hours. E-bikes may also be more popular for commuters who are looking for a reliable and faster way to get to work or run errands during busy periods. Understanding these temporal patterns will be crucial as we explore how to optimize the distribution and - availability of e-bikes throughout the day.

`,Dt,I,en="

24-hour trip distributions

",we,dt,nn='

ICONIC

EFIT

',be,rt,Wt,ke,pt,xe,_t,Ie,mt,rn='

Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for cycling trips across Toronto.

At the same time, recent developments in policy and urban mobility have brought new challenges and opportunities for cyclists. The Ontario government has officially passed Bill 212 – a controversial piece of legislation that gives the province sweeping control over municipal bike lanes. The fast-tracked bill, which passed at Queen's Park in late 2024, requires municipalities to seek provincial approval to install bike lanes when doing so would reduce lanes for vehicle traffic. This bill also permits the removal of three major bike lanes in Toronto, located on Bloor Street, Yonge Street, and University Avenue. However, provincial officials have yet to provide specific details on whether all or only sections of these lanes will be removed. Many cycling advocates have expressed concerns, staging protests to oppose the legislation's potential impact on active transportation.

In addition to Bill 212, a significant update on e-bike policies has emerged from the Toronto Transit Commission (TTC). Effective November 15, 2024, lithium-ion-powered e-scooters and e-bikes are prohibited on TTC vehicles and inside stations through April 15, following a board decision aimed at mitigating fire risks. This decision follows a December 31, 2023, incident when an e-bike’s lithium-ion battery caught fire onboard a subway train at Sheppard-Yonge Station.

“I’ve tried to do the best to strike a balance between safety and equity,” TTC Board Chair Jamaal Myers stated. Although the board considered alternative safety measures, such as requiring batteries to meet specific standards, staff concluded that a seasonal ban was the safest course of action. To address the needs of riders impacted by the ban, Myers has proposed collaboration between the TTC, food delivery companies, and labour unions to explore secure e-bike storage and charging solutions near transit stations, with a policy expected by March 2025.

The ban does not apply to electric wheelchairs or other mobility devices used by individuals with disabilities, which remain permitted on TTC vehicles under specific conditions.

While the TTC’s racial equity office acknowledged the ban's disproportionate impact on low-income and gig workers, the board determined that the perceived safety risks outweighed these concerns. Efforts to mitigate this impact, such as improving access to secure storage and charging, aim to support e-bike users while prioritizing safety.

These developments illustrate the complexities of managing urban mobility in a way that supports accessibility, safety, and sustainability. As e-bikes continue to reshape how Torontonians navigate the city, ongoing discussions around infrastructure, equity, and policy will play a crucial role in determining the future of cycling in Toronto.

',Te,vt,an='
Photo of a Bike Share station in Kensington Market

Data and methodology

Bike Share Toronto shared data with us on all Bike Share trips in June 2024, which included for each trip thestart station, end station, duration, and type of bike (EFIT or ICONIC). We additionally computed the network distance and elevation gain of each trip via Graphhopper, a network analysis software (as described in this post).

All the charts shown on this page were created by analyzing data in Python and visualizing with D3. All medians and distributions shown for each category are significantly different from each other via Mann-Whitney U (for testing difference in medians) and Kolmogorov-Smirnov (for testing difference in distributions) tests.

Code and data for this page are on GitHub




',Gt;b=new Fe({props:{title:"Distribution of trips by distance",suffix:"distance",csvData:"distance_counts.csv",medianEFIT:2806.437,medianICONIC:2303.089,xlabel:"Trip distance (kilometers)",xdivider:1e3,xdecimal:0,xtickamount:10,xunit:"km",medianadjust:0}}),Y=new Fe({props:{title:"Distribution of trips by duration",suffix:"duration",csvData:"duration_counts.csv",medianEFIT:747,medianICONIC:720,xlabel:"Trip duration (minutes)",xdivider:60,xdecimal:0,xtickamount:20,xunit:"minutes",medianadjust:30}}),F=new Fe({props:{title:"Distribution of trips by elevation gain",suffix:"elevation",csvData:"elevation_counts.csv",medianEFIT:0,medianICONIC:-.5,xlabel:"Elevation gain or loss (metres)",xdivider:1,xdecimal:0,xtickamount:20,xunit:"m",medianadjust:0}});let q=t[1].length>0&&Vn(t),X=t[2].length>0&&Pn(t),gt=Zt(Object.entries(t[0]).slice(0,4)),R=[];for(let g=0;gU(R[g],1,1,()=>{R[g]=null});let yt=Zt(Object.entries(t[0]).slice(4,7)),$=[];for(let g=0;gU($[g],1,1,()=>{$[g]=null});return{c(){e=O("meta"),n=V(),i=O("div"),i.innerHTML=r,a=V(),o=O("div"),o.innerHTML=l,u=V(),s=O("main"),d=O("div"),d.innerHTML=c,f=V(),h=O("div"),h.innerHTML=p,v=V(),T=O("div"),w=O("div"),xt(b.$$.fragment),k=V(),M=O("div"),M.innerHTML=S,H=V(),y=O("div"),z=O("div"),xt(Y.$$.fragment),Z=V(),J=O("div"),J.innerHTML=Q,it=V(),m=O("div"),C=O("div"),xt(F.$$.fragment),Ot=V(),ot=O("div"),ot.innerHTML=Ut,Dt=V(),I=O("div"),I.innerHTML=en,we=V(),dt=O("div"),dt.innerHTML=nn,be=V(),rt=O("div"),q&&q.c(),Wt=V(),X&&X.c(),ke=V(),pt=O("div");for(let g=0;g0?q?(q.p(g,A),A&2&&L(q,1)):(q=Vn(g),q.c(),L(q,1),q.m(rt,Wt)):q&&(At(),U(q,1,1,()=>{q=null}),Mt()),g[2].length>0?X?(X.p(g,A),A&4&&L(X,1)):(X=Pn(g),X.c(),L(X,1),X.m(rt,null)):X&&(At(),U(X,1,1,()=>{X=null}),Mt()),A&1){gt=Zt(Object.entries(g[0]).slice(0,4));let _;for(_=0;_({half_hour_intervals:s.half_hour_intervals,EFIT:+s.EFIT_normalized,ICONIC:+s.ICONIC_normalized,day_of_week:s.day_of_week}));for(let s in a)n(0,a[s]=i.filter(d=>d.day_of_week===s),a);r=await He("freq_counts_by_day_category.csv",s=>({half_hour_intervals:s.half_hour_intervals,EFIT:+s.EFIT_normalized,ICONIC:+s.ICONIC_normalized,day:s.day_category})),n(1,o=r.filter(s=>s.day==="Weekday")),n(2,l=r.filter(s=>s.day==="Weekend"))}return Xe(()=>{u()}),[a,o,l]}class vs extends Ye{constructor(e){super(),Ue(this,e,fs,cs,qe,{})}}export{vs as component,ms as universal}; + availability of e-bikes throughout the day.

`,Ot,I,en="

24-hour trip distributions

",we,dt,nn='

ICONIC

EFIT

',ke,rt,Wt,be,pt,xe,_t,Ie,vt,rn='

Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for cycling trips across Toronto.

At the same time, recent developments in policy and urban mobility have brought new challenges and opportunities for cyclists. The Ontario government has officially passed Bill 212 – a controversial piece of legislation that gives the province sweeping control over municipal bike lanes. The fast-tracked bill, which passed at Queen's Park in late 2024, requires municipalities to seek provincial approval to install bike lanes when doing so would reduce lanes for vehicle traffic. This bill also permits the removal of three major bike lanes in Toronto, located on Bloor Street, Yonge Street, and University Avenue. However, provincial officials have yet to provide specific details on whether all or only sections of these lanes will be removed. Many cycling advocates have expressed concerns, staging protests to oppose the legislation's potential impact on active transportation.

In addition to Bill 212, a significant update on e-bike policies has emerged from the Toronto Transit Commission (TTC). Effective November 15, 2024, lithium-ion-powered e-scooters and e-bikes are prohibited on TTC vehicles and inside stations through April 15, following a board decision aimed at mitigating fire risks. This decision follows a December 31, 2023, incident when an e-bike’s lithium-ion battery caught fire onboard a subway train at Sheppard-Yonge Station.

“I’ve tried to do the best to strike a balance between safety and equity,” TTC Board Chair Jamaal Myers stated. Although the board considered alternative safety measures, such as requiring batteries to meet specific standards, staff concluded that a seasonal ban was the safest course of action. To address the needs of riders impacted by the ban, Myers has proposed collaboration between the TTC, food delivery companies, and labour unions to explore secure e-bike storage and charging solutions near transit stations, with a policy expected by March 2025.

The ban does not apply to electric wheelchairs or other mobility devices used by individuals with disabilities, which remain permitted on TTC vehicles under specific conditions.

While the TTC’s racial equity office acknowledged the ban's disproportionate impact on low-income and gig workers, the board determined that the perceived safety risks outweighed these concerns. Efforts to mitigate this impact, such as improving access to secure storage and charging, aim to support e-bike users while prioritizing safety.

These developments illustrate the complexities of managing urban mobility in a way that supports accessibility, safety, and sustainability. As e-bikes continue to reshape how Torontonians navigate the city, ongoing discussions around infrastructure, equity, and policy will play a crucial role in determining the future of cycling in Toronto.

',Te,gt,an='
Photo of a Bike Share station in Kensington Market

Data and methodology

Bike Share Toronto shared data with us on all Bike Share trips in June 2024, which included for each trip thestart station, end station, duration, and type of bike (EFIT or ICONIC). We additionally computed the network distance and elevation gain of each trip via Graphhopper, a network analysis software (as described in this post).

All the charts shown on this page were created by analyzing data in Python and visualizing with D3. All medians and distributions shown for each category are significantly different from each other via Mann-Whitney U (for testing difference in medians) and Kolmogorov-Smirnov (for testing difference in distributions) tests.

Code and data for this page are on GitHub




',Gt;k=new ze({props:{title:"Distribution of trips by distance",suffix:"distance",csvData:"distance_counts.csv",medianEFIT:2806.437,medianICONIC:2303.089,xlabel:"Trip distance (kilometers)",xdivider:1e3,xdecimal:0,xtickamount:10,xunit:"km",medianadjust:0}}),Y=new ze({props:{title:"Distribution of trips by duration",suffix:"duration",csvData:"duration_counts.csv",medianEFIT:747,medianICONIC:720,xlabel:"Trip duration (minutes)",xdivider:60,xdecimal:0,xtickamount:6,xunit:"minutes",medianadjust:30}}),z=new ze({props:{title:"Distribution of trips by elevation gain",suffix:"elevation",csvData:"elevation_counts.csv",medianEFIT:0,medianICONIC:-.5,xlabel:"Elevation gain or loss (metres)",xdivider:1,xdecimal:0,xtickamount:10,xunit:"m",medianadjust:0}});let q=t[1].length>0&&Vn(t),X=t[2].length>0&&Pn(t),mt=Zt(Object.entries(t[0]).slice(0,4)),R=[];for(let m=0;mU(R[m],1,1,()=>{R[m]=null});let yt=Zt(Object.entries(t[0]).slice(4,7)),$=[];for(let m=0;mU($[m],1,1,()=>{$[m]=null});return{c(){e=F("meta"),n=V(),i=F("div"),i.innerHTML=r,a=V(),o=F("div"),o.innerHTML=l,u=V(),s=F("main"),d=F("div"),d.innerHTML=c,h=V(),f=F("div"),f.innerHTML=p,g=V(),T=F("div"),w=F("div"),xt(k.$$.fragment),b=V(),M=F("div"),M.innerHTML=S,H=V(),y=F("div"),D=F("div"),xt(Y.$$.fragment),Z=V(),J=F("div"),J.innerHTML=Q,it=V(),v=F("div"),C=F("div"),xt(z.$$.fragment),Ft=V(),ot=F("div"),ot.innerHTML=Ut,Ot=V(),I=F("div"),I.innerHTML=en,we=V(),dt=F("div"),dt.innerHTML=nn,ke=V(),rt=F("div"),q&&q.c(),Wt=V(),X&&X.c(),be=V(),pt=F("div");for(let m=0;m0?q?(q.p(m,A),A&2&&L(q,1)):(q=Vn(m),q.c(),L(q,1),q.m(rt,Wt)):q&&(At(),U(q,1,1,()=>{q=null}),Mt()),m[2].length>0?X?(X.p(m,A),A&4&&L(X,1)):(X=Pn(m),X.c(),L(X,1),X.m(rt,null)):X&&(At(),U(X,1,1,()=>{X=null}),Mt()),A&1){mt=Zt(Object.entries(m[0]).slice(0,4));let _;for(_=0;_({half_hour_intervals:s.half_hour_intervals,EFIT:+s.EFIT_normalized,ICONIC:+s.ICONIC_normalized,day_of_week:s.day_of_week}));for(let s in a)n(0,a[s]=i.filter(d=>d.day_of_week===s),a);r=await He("freq_counts_by_day_category.csv",s=>({half_hour_intervals:s.half_hour_intervals,EFIT:+s.EFIT_normalized,ICONIC:+s.ICONIC_normalized,day:s.day_category})),n(1,o=r.filter(s=>s.day==="Weekday")),n(2,l=r.filter(s=>s.day==="Weekend"))}return Xe(()=>{u()}),[a,o,l]}class gs extends Ye{constructor(e){super(),Ue(this,e,hs,cs,qe,{})}}export{gs as component,vs as universal}; diff --git a/docs/_app/version.json b/docs/_app/version.json index 17be2c3..9ae1254 100644 --- a/docs/_app/version.json +++ b/docs/_app/version.json @@ -1 +1 @@ -{"version":"1733930571635"} \ No newline at end of file +{"version":"1733932668937"} \ No newline at end of file diff --git a/docs/efit-analysis.html b/docs/efit-analysis.html index f74cca1..268d70d 100644 --- a/docs/efit-analysis.html +++ b/docs/efit-analysis.html @@ -6,17 +6,17 @@ - + - + - - + + - + Bike Share Toronto E-Bike Analysis | School of Cities @@ -28,15 +28,15 @@ gtag('config', 'G-XB09CWTEWB'); -
map of bike lanes and bike-share stations in toronto with a white background

Exploring E-Bike Usage in Toronto’s Bike Share System

Lanrick Bennett Jr., Scott McCallum, Jeff Allen
- December, 2024

As cycling becomes an increasingly popular mode of transportation in Toronto, one trend is gaining significant traction: the rise of electric bikes (e-bikes) within Toronto's Bike Share system. Ridership data shared by Bike Share Toronto from June 2024 has given us a detailed look at how these e-bikes, known as EFIT, compare to their classic non-electric counterparts, the ICONIC bikes.

The introduction of e-bikes in Toronto is not just about offering a new mode of transportation –it’s about making cycling more accessible, efficient, and appealing to a wider range of people. Whether it’s older adults who may need extra assistance with pedaling, people with longer commutes, or those who want to avoid arriving at their destination sweaty, e-bikes have the potential to address many of the challenges that have historically limited bike usage in the city.

Photo of a Bike Share station in Kensington Market

Left: Classic (ICONIC) bike. Right: E-bike (EFIT) with pedal assist.

From a sustainability perspective, e-bikes provide a viable alternative to cars for longer trips and can help cut down on vehicle emissions, especially during peak traffic hours. As the city works toward its ambitious net-zero targets, the role of e-bikes in encouraging a shift from motorized transport to more sustainable, human-powered options cannot be understated.

Overall, in June 2024, there were more than 762,000 Bike Share trips in Toronto. 17.4% of these trips were by e-bike. Looking at the relative characteristics of these trips reveals some intriguing patterns that could shape the future of urban mobility in Toronto.

One of the most notable differences between e-bikes and classic bikes is the distance covered during trips. On average, e-bike users tend to ride +

map of bike lanes and bike-share stations in toronto with a white background

Exploring E-Bike Usage in Toronto’s Bike Share System

Lanrick Bennett Jr., Scott McCallum, Jeff Allen
+ December, 2024

As cycling becomes an increasingly popular mode of transportation in Toronto, one trend is gaining significant traction: the rise of electric bikes (e-bikes) within Toronto's Bike Share system. Ridership data shared by Bike Share Toronto from June 2024 has given us a detailed look at how these e-bikes, known as EFIT, compare to their classic non-electric counterparts, the ICONIC bikes.

The introduction of e-bikes in Toronto is not just about offering a new mode of transportation –it’s about making cycling more accessible, efficient, and appealing to a wider range of people. Whether it’s older adults who may need extra assistance with pedaling, people with longer commutes, or those who want to avoid arriving at their destination sweaty, e-bikes have the potential to address many of the challenges that have historically limited bike usage in the city.

Photo of a Bike Share station in Kensington Market

Left: Classic (ICONIC) bike. Right: E-bike (EFIT) with pedal assist.

From a sustainability perspective, e-bikes provide a viable alternative to cars for longer trips and can help cut down on vehicle emissions, especially during peak traffic hours. As the city works toward its ambitious net-zero targets, the role of e-bikes in encouraging a shift from motorized transport to more sustainable, human-powered options cannot be understated.

Overall, in June 2024, there were more than 762,000 Bike Share trips in Toronto. 17.4% of these trips were by e-bike. Looking at the relative characteristics of these trips reveals some intriguing patterns that could shape the future of urban mobility in Toronto.

One of the most notable differences between e-bikes and classic bikes is the distance covered during trips. On average, e-bike users tend to ride further, capitalizing on the extra power that electric motors provide. These longer trips suggest that e-bikes are enabling riders to explore parts of the city that might have been less accessible via traditional pedal bikes. Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for - cycling trips across Toronto.

Distribution of trips by distance

Distribution of trips by distance

Interestingly, despite these longer trips, there is little difference in the duration of e-bike trips compared to classic bikes. Riders are thus traveling faster on e-bikes on average, which makes sense given their assisted pedaling capabilities. @@ -44,8 +44,8 @@ reach destinations quicker but could also make cycling more attractive to those who may have previously found it too time-consuming or physically demanding. With e-bikes, the barriers to entry for cycling are lowered, - making it a more practical and inclusive option for a broader demographic.

Distribution of trips by duration

Distribution of trips by duration

Another key insight from the data is that e-bike trips tend to involve slightly more elevation gain. In a city like Toronto, where hills and slopes can make cycling more challenging, the extra boost from an e-bike's @@ -54,19 +54,19 @@ the Scarborough Bluffs, with greater ease. This ability to flatten out the city’s topography opens up new opportunities for riders, making cycling a more attractive option in areas that were previously considered difficult - to navigate on a bike.

Distribution of trips by elevation gain

Distribution of trips by elevation gain

The data also shows some intriguing differences in the time of day when e-bikes are used. While we’re still investigating the reasons behind this trend, it could be related to the availability of bikes at different stations during peak and off-peak hours. E-bikes may also be more popular for commuters who are looking for a reliable and faster way to get to work or run errands during busy periods. Understanding these temporal patterns will be crucial as we explore how to optimize the distribution and - availability of e-bikes throughout the day.

24-hour trip distributions

ICONIC

EFIT

Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for cycling trips across Toronto.

At the same time, recent developments in policy and urban mobility have brought new challenges and opportunities for cyclists. The Ontario government has officially passed Bill 212 – a controversial piece of legislation that gives the province sweeping control over municipal bike lanes. The fast-tracked bill, which passed at Queen's Park in late 2024, requires municipalities to seek provincial approval to install bike lanes when doing so would reduce lanes for vehicle traffic. This bill also permits the removal of three major bike lanes in Toronto, located on Bloor Street, Yonge Street, and University Avenue. However, provincial officials have yet to provide specific details on whether all or only sections of these lanes will be removed. Many cycling advocates have expressed concerns, staging protests to oppose the legislation's potential impact on active transportation.

In addition to Bill 212, a significant update on e-bike policies has emerged from the Toronto Transit Commission (TTC). Effective November 15, 2024, lithium-ion-powered e-scooters and e-bikes are prohibited on TTC vehicles and inside stations through April 15, following a board decision aimed at mitigating fire risks. This decision follows a December 31, 2023, incident when an e-bike’s lithium-ion battery caught fire onboard a subway train at Sheppard-Yonge Station.

“I’ve tried to do the best to strike a balance between safety and equity,” TTC Board Chair Jamaal Myers stated. Although the board considered alternative safety measures, such as requiring batteries to meet specific standards, staff concluded that a seasonal ban was the safest course of action. To address the needs of riders impacted by the ban, Myers has proposed collaboration between the TTC, food delivery companies, and labour unions to explore secure e-bike storage and charging solutions near transit stations, with a policy expected by March 2025.

The ban does not apply to electric wheelchairs or other mobility devices used by individuals with disabilities, which remain permitted on TTC vehicles under specific conditions.

While the TTC’s racial equity office acknowledged the ban's disproportionate impact on low-income and gig workers, the board determined that the perceived safety risks outweighed these concerns. Efforts to mitigate this impact, such as improving access to secure storage and charging, aim to support e-bike users while prioritizing safety.

These developments illustrate the complexities of managing urban mobility in a way that supports accessibility, safety, and sustainability. As e-bikes continue to reshape how Torontonians navigate the city, ongoing discussions around infrastructure, equity, and policy will play a crucial role in determining the future of cycling in Toronto.


Photo of a Bike Share station in Kensington Market

Data and methodology

Bike Share Toronto shared data with us on all Bike Share trips in June 2024, which included for each trip thestart station, end station, duration, and type of bike (EFIT or ICONIC). We additionally computed the network distance and elevation gain of each trip via Graphhopper, a network analysis software (as described in this post).

All the charts shown on this page were created by analyzing data in Python and visualizing with D3. All medians and distributions shown for each category are significantly different from each other via Mann-Whitney U (for testing difference in medians) and Kolmogorov-Smirnov (for testing difference in distributions) tests.

Code and data for this page are on GitHub




+ availability of e-bikes throughout the day.

24-hour trip distributions

ICONIC

EFIT

Whether it's covering more ground on commutes or leisurely rides, the data reflects how e-bikes are expanding the possibilities for cycling trips across Toronto.

At the same time, recent developments in policy and urban mobility have brought new challenges and opportunities for cyclists. The Ontario government has officially passed Bill 212 – a controversial piece of legislation that gives the province sweeping control over municipal bike lanes. The fast-tracked bill, which passed at Queen's Park in late 2024, requires municipalities to seek provincial approval to install bike lanes when doing so would reduce lanes for vehicle traffic. This bill also permits the removal of three major bike lanes in Toronto, located on Bloor Street, Yonge Street, and University Avenue. However, provincial officials have yet to provide specific details on whether all or only sections of these lanes will be removed. Many cycling advocates have expressed concerns, staging protests to oppose the legislation's potential impact on active transportation.

In addition to Bill 212, a significant update on e-bike policies has emerged from the Toronto Transit Commission (TTC). Effective November 15, 2024, lithium-ion-powered e-scooters and e-bikes are prohibited on TTC vehicles and inside stations through April 15, following a board decision aimed at mitigating fire risks. This decision follows a December 31, 2023, incident when an e-bike’s lithium-ion battery caught fire onboard a subway train at Sheppard-Yonge Station.

“I’ve tried to do the best to strike a balance between safety and equity,” TTC Board Chair Jamaal Myers stated. Although the board considered alternative safety measures, such as requiring batteries to meet specific standards, staff concluded that a seasonal ban was the safest course of action. To address the needs of riders impacted by the ban, Myers has proposed collaboration between the TTC, food delivery companies, and labour unions to explore secure e-bike storage and charging solutions near transit stations, with a policy expected by March 2025.

The ban does not apply to electric wheelchairs or other mobility devices used by individuals with disabilities, which remain permitted on TTC vehicles under specific conditions.

While the TTC’s racial equity office acknowledged the ban's disproportionate impact on low-income and gig workers, the board determined that the perceived safety risks outweighed these concerns. Efforts to mitigate this impact, such as improving access to secure storage and charging, aim to support e-bike users while prioritizing safety.

These developments illustrate the complexities of managing urban mobility in a way that supports accessibility, safety, and sustainability. As e-bikes continue to reshape how Torontonians navigate the city, ongoing discussions around infrastructure, equity, and policy will play a crucial role in determining the future of cycling in Toronto.


Photo of a Bike Share station in Kensington Market

Data and methodology

Bike Share Toronto shared data with us on all Bike Share trips in June 2024, which included for each trip thestart station, end station, duration, and type of bike (EFIT or ICONIC). We additionally computed the network distance and elevation gain of each trip via Graphhopper, a network analysis software (as described in this post).

All the charts shown on this page were created by analyzing data in Python and visualizing with D3. All medians and distributions shown for each category are significantly different from each other via Mann-Whitney U (for testing difference in medians) and Kolmogorov-Smirnov (for testing difference in distributions) tests.

Code and data for this page are on GitHub