PageSourceSearch

https://trains.fyi/_next/static/chunks/pages/networks/[networkSlug]/[odSlug]-c6d2f9c6658151ce.js

js trains.fyi collected 2026-09-24 09:55:09 UTC 23,266 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9834],{5876:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var n=s(37876);s(14232);var r=s(28766);let a=({text:e,className:t=""})=>(0,n.jsxs)("div",{className:`flex flex-col justify-center items-center ${t}`,children:[(0,n.jsxs)("div",{className:"relative w-10 h-10","aria-hidden":!0,children:[(0,n.jsx)("div",{className:"absolute inset-0 rounded-full border-2 border-gray-200 border-t-blue-600 animate-spin"}),(0,n.jsx)("div",{className:"absolute inset-0 flex items-center justify-center",children:(0,n.jsx)("img",{src:r.A.src??r.A,alt:"",className:"w-6 h-6 object-contain pointer-events-none"})})]}),e&&(0,n.jsx)("p",{className:"mt-2 text-sm text-gray-600",children:e})]})},12107:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});var n=s(14232);let r=n.forwardRef(function({title:e,titleId:t,...s},r){return n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},s),e?n.createElement("title",{id:t},e):null,n.createElement("path",{fillRule:"evenodd",d:"M8.161 2.58a1.875 1.875 0 0 1 1.678 0l4.993 2.498c.106.052.23.052.336 0l3.869-1.935A1.875 1.875 0 0 1 21.75 4.82v12.485c0 .71-.401 1.36-1.037 1.677l-4.875 2.437a1.875 1.875 0 0 1-1.676 0l-4.994-2.497a.375.375 0 0 0-.336 0l-3.868 1.935A1.875 1.875 0 0 1 2.25 19.18V6.695c0-.71.401-1.36 1.036-1.677l4.875-2.437ZM9 6a.75.75 0 0 1 .75.75V15a.75.75 0 0 1-1.5 0V6.75A.75.75 0 0 1 9 6Zm6.75 3a.75.75 0 0 0-1.5 0v8.25a.75.75 0 0 0 1.5 0V9Z",clipRule:"evenodd"}))})},18847:(e,t,s)=>{e.exports=s(75808)},29479:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=s(72687)._(s(14232)),r=s(41413),a=[],l=[],i=!1;function o(e){let t=e(),s={loading:!0,loaded:null,error:null};return s.promise=t.then(e=>(s.loading=!1,s.loaded=e,e)).catch(e=>{throw s.loading=!1,s.error=e,e}),s}class d{constructor(e,t){this._loadFn=e,this._opts=t,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:e,_opts:t}=this;e.loading&&("number"==typeof t.delay&&(0===t.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},t.delay)),"number"==typeof t.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},t.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(e=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(e){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...e},this._callbacks.forEach(e=>e())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(e){return this._callbacks.add(e),()=>{this._callbacks.delete(e)}}}function c(e){return function(e,t){let s=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},t),a=null;function o(){if(!a){let t=new d(e,s);a={getCurrentValue:t.getCurrentValue.bind(t),subscribe:t.subscribe.bind(t),retry:t.retry.bind(t),promise:t.promise.bind(t)}}return a.promise()}if(!i){let e=s.webpack&&1?s.webpack():s.modules;e&&l.push(t=>{for(let s of e)if(t.includes(s))return o()})}function c(e,t){let l;o(),(l=n.default.useContext(r.LoadableContext))&&Array.isArray(s.modules)&&s.modules.forEach(e=>{l(e)});let i=n.default.useSyncExternalStore(a.subscribe,a.getCurrentValue,a.getCurrentValue);return n.default.useImperativeHandle(t,()=>({retry:a.retry}),[]),n.default.useMemo(()=>{var t;return i.loading||i.error?n.default.createElement(s.loading,{isLoading:i.loading,pastDelay:i.pastDelay,timedOut:i.timedOut,error:i.error,retry:a.retry}):i.loaded?n.default.createElement((t=i.loaded)&&t.default?t.default:t,e):null},[e,i])}return c.preload=()=>o(),c.displayName="LoadableComponent",n.default.forwardRef(c)}(o,e)}function m(e,t){let s=[];for(;e.length;){let n=e.pop();s.push(n(t))}return Promise.all(s).then(()=>
1{if(e.length)return m(e,t)})}c.preloadAll=()=>new Promise((e,t)=>{m(a).then(e,t)}),c.preloadReady=(e=[])=>new Promise(t=>{let s=()=>(i=!0,t());m(l,e).then(s,s)}),window.__NEXT_PRELOADREADY=c.preloadReady;let u=c},34299:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});var n=s(14232);let r=n.forwardRef(function({title:e,titleId:t,...s},r){return n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},s),e?n.createElement("title",{id:t},e):null,n.createElement("path",{fillRule:"evenodd",d:"M2.25 13.5a8.25 8.25 0 0 1 8.25-8.25.75.75 0 0 1 .75.75v6.75H18a.75.75 0 0 1 .75.75 8.25 8.25 0 0 1-16.5 0Z",clipRule:"evenodd"}),n.createElement("path",{fillRule:"evenodd",d:"M12.75 3a.75.75 0 0 1 .75-.75 8.25 8.25 0 0 1 8.25 8.25.75.75 0 0 1-.75.75h-7.5a.75.75 0 0 1-.75-.75V3Z",clipRule:"evenodd"}))})},41413:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"LoadableContext",{enumerable:!0,get:function(){return n}});let n=s(72687)._(s(14232)).default.createContext(null)},49915:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var n=s(37876),r=s(60570),a=s(48230),l=s.n(a);function i({pages:e}){return(0,n.jsx)("nav",{"aria-label":"Breadcrumb",className:"flex",children:(0,n.jsxs)("ol",{role:"list",className:"flex items-center space-x-4 pt-6",children:[(0,n.jsx)("li",{children:(0,n.jsx)("div",{children:(0,n.jsxs)(l(),{href:"/",className:"text-gray-400 hover:text-gray-500",children:[(0,n.jsx)(r.A,{"aria-hidden":"true",className:"h-5 w-5 flex-shrink-0"}),(0,n.jsx)("span",{className:"sr-only",children:"Home"})]})})}),e.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("svg",{fill:"currentColor",viewBox:"0 0 20 20","aria-hidden":"true",className:"h-5 w-5 flex-shrink-0 text-gray-300",children:(0,n.jsx)("path",{d:"M5.555 17.776l8-16 .894.448-8 16-.894-.448z"})}),(0,n.jsx)(l(),{href:e.href,"aria-current":e.current?"page":void 0,className:"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700",children:e.name})]})},e.name))]})})}},56785:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var n=s(12107),r=s(34299),a=s(89099),l=s(74880);function i({networkName:e,networkSlug:t,network:s}){let o=(0,a.useRouter)(),d=s??l.Y.getNetwork(t),c=[{name:"Trains",href:`/networks/${t}/`,icon:n.A},{name:"Statistics",href:`/networks/${t}/statistics/`,icon:r.A},...["ttc","stm","translink"].includes(t)?[{name:"Metro Map",href:`/networks/${t}/metromap/`,icon:n.A}]:[]].map(e=>{let s="Trains"===e.name&&(o.asPath===`/networks/${t}/`||o.asPath.includes(`/networks/${t}/trains`)||o.asPath.includes(`/networks/${t}/train`))||"Stations"===e.name&&o.asPath.includes(`/networks/${t}/stations`)||"Routes"===e.name&&o.asPath.includes(`/networks/${t}/routes`)||"Statistics"===e.name&&o.asPath.includes(`/networks/${t}/statistics`)||"Metro Map"===e.name&&o.asPath.includes(`/networks/${t}/metromap`);return{...e,isActive:s}});return{networkName:e,networkSlug:t,network:d,links:c}}},60570:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});var n=s(14232);let r=n.forwardRef(function({title:e,titleId:t,...s},r){return n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},s),e?n.createElement("title",{id:t},e):null,n.createElement("path",{fillRule:"evenodd",d:"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z",clipRule:"evenodd"}))})},69973:(e,t,s)=>{"use strict";s.d(t,{A:()=>l});var n=s(37876),r=s(77604);function a({gtfsTime:e,className:t=""}){if(!e)return(0,n.jsx)("span",{className:t,children:"N/A"});let{time:s,dayLabel:l}=(0,r.Pq)(e);return(0,n.jsxs)("span",{className:t,children:[s,l&&(0,n.jsx)("span",{className:"text-[10px] text-gray-400 ml-0.5",children:l})]})}let l=({stopName:e,onClick:t,highlightColor:s="#3182ce",isSelected:l=!1,isPassed:i=!1,isCurrent:o=!1,isNext:d=!1,isFinalStop:c=!1,arrival:m,departure:u,realtimeArrival:h=null,realtimeDeparture:x=null,delaySeconds:p=null,realtimeStatus:g=null,containerClassName:f=""})=>{let y=!!(m||u),b=i||o||l,j=l?{color:s}:{}
1,_=g&&"scheduled"!==g,v=null!==p&&p>0,w=function(e){if(null==e)return null;let t=Math.round(e/60);return 0===t?null:t>0?`${(0,r.Zn)(t)} late`:`${(0,r.Zn)(Math.abs(t))} early`}(p);return(0,n.jsxs)("div",{className:f,children:[(0,n.jsx)("div",{className:"absolute left-0 top-1 z-10",children:b?(0,n.jsx)("div",{className:"h-6 w-6 rounded-full border-2 flex items-center justify-center bg-white",style:{borderColor:s},children:(0,n.jsx)("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:s}})}):(0,n.jsx)("div",{className:"h-6 w-6 rounded-full border-2 flex items-center justify-center border-gray-300 bg-white",style:d?{animation:"pulse-next-outer 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite","--highlight-color":s}:{},children:(0,n.jsx)("div",{className:`h-2 w-2 rounded-full ${d?"":"bg-gray-300"}`,style:d?{animation:"pulse-next-inner 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite","--highlight-color":s}:{}})})}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("h3",{className:`text-sm font-medium flex items-center ${i?"text-gray-500 line-through":"text-gray-900"} ${t?"cursor-pointer hover:text-blue-600":""}`,onClick:t,style:j,children:e}),o&&(0,n.jsx)("span",{className:"inline-flex items-center border bg-white px-2 py-1 text-xs font-medium text-gray-900",style:{borderColor:s},children:"Currently Stopped Here"}),d&&!o&&(0,n.jsx)("span",{className:"inline-flex items-center border bg-white px-2 py-1 text-xs font-medium text-gray-900",style:{borderColor:s},children:c?"Next & Final Stop":"Next Stop"}),_&&!i&&w&&(0,n.jsx)("span",{className:`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border ${v?"text-red-600 bg-red-50 border-red-200":"text-green-700 bg-green-50 border-green-200"}`,children:w}),_&&!i&&!w&&(0,n.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border text-green-700 bg-green-50 border-green-200",children:"On Time"})]}),y&&(0,n.jsx)("div",{className:`mt-1 text-xs ${i?"text-gray-300":"text-gray-500"}`,children:_&&!i?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{children:"Arr:"}),(0,n.jsx)(a,{gtfsTime:h||m,className:v?"text-red-600 font-medium":"font-medium"}),h&&h!==m&&(0,n.jsxs)("span",{className:"text-gray-400",children:["(sched. ",(0,n.jsx)(a,{gtfsTime:m}),")"]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{children:"Dep:"}),(0,n.jsx)(a,{gtfsTime:x||u,className:v?"text-red-600 font-medium":"font-medium"}),x&&x!==u&&(0,n.jsxs)("span",{className:"text-gray-400",children:["(sched. ",(0,n.jsx)(a,{gtfsTime:u}),")"]})]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{children:["Scheduled Arrival: ",(0,n.jsx)(a,{gtfsTime:m})]}),(0,n.jsxs)("div",{children:["Scheduled Departure: ",(0,n.jsx)(a,{gtfsTime:u})]})]})})]})]})}},75147:(e,t,s)=>{"use strict";s.r(t),s.d(t,{__N_SSP:()=>k,default:()=>$});var n=s(37876),r=s(18847),a=s.n(r),l=s(77328),i=s.n(l),o=s(48230),d=s.n(o),c=s(89099),m=s(14232),u=s(49915),h=s(85392),x=s(74),p=s(5876),g=s(94292),f=s(93408),y=s(56785),b=s(69973),j=s(78240),_=s(77604);let v=a()(()=>Promise.all([s.e(1808),s.e(9863),s.e(3368),s.e(7707),s.e(8831)]).then(s.bind(s,98831)),{loadableGenerated:{webpack:()=>[98831]},ssr:!1});function w(e){if(!e)return"";let t=e.split(":");if(t.length<2)return e;let s=parseInt(t[0],10),n=t[1],r=(s%=24)>=12?"PM":"AM",a=0===s?12:s>12?s-12:s;return`${a}:${n} ${r}`}function N(e,t,s,n){let r=Math.sin((s-e)*Math.PI/180/2)**2+Math.cos(e*Math.PI/180)*Math.cos(s*Math.PI/180)*Math.sin((n-t)*Math.PI/180/2)**2;return 12742*Math.atan2(Math.sqrt(r),Math.sqrt(1-r))}var k=!0;function $({network:e,odPair:t,networkSlug:s}){let r=(0,c.useRouter)(),a=(0,y.A)({networkName:e?.name,networkSlug:s,network:e}),{trips:l,segmentShape:o,isLoading:k}=(0,j.AJ)(e?.slug,t?.origin_stop_id,t?.destination_stop_id),A=(0,m.useMemo)(()=>l.filter(e=>e.active_train).map(e=>e.active_train),[l]),M=(0,m.useMemo)(()=>l.length&&l.reduce((e,t)=>(e.stops?.length||0)>=(t.stops?.length||0)?e:t,l[0]).stops||[],[l]),C=e?.color||"FFCB06",T=(0,m.useMemo)(()=>M.map((e,t)=>({...e,name:e.stop_name,stopId:e.stop_id,isFirst:0===t,isLast:t===M.length-1})),[M]),P=(0,m.useMemo)(()=>[{name:"Networks",href:"/networks",current:!1},{name:e?.name||s,href:`/networks/${s}/`,current:!1},{name:`${t.origin_name} to ${t.destination_name}`,href:`/networks/${s}/${t.slug}/`,current:!0}],[e?.name,s,t]);(0,m.useEffect)(()=>{window.gtag&&window.gtag("event","page_view",{page_title:`${t.origin_name} to ${t.destination_name} Train Tracker | ${e?.name}`,page_location:window.location.href,page_path:`/networks/${s}/${t.slug}/`})},[s,t.slug,e?.name,t.origin_name,t.destination_name]);let E=`${t.origin_name} to ${t.destination_name} Train Tracker | ${e?.name||"Transit"}`,R=M.length>2?M.length-2:0,S=`Track ${e?.name||"transit"} trains from ${t.origin_name} to ${t.destination_name} in real-time. Live positions, delays, schedules${R>0?`, and ${R} stops along the way`:""}.`,O=`/networks/${s}/${t.slug}/`,I=`${t.origin_name} to ${t.destination_name} train, ${e?.name} train tracker, ${t.origin_name} ${t.destination_name}, train schedule`,L=`/api/og?mode=od&origin=${encodeURIComponent(t.origin_name)}&destination=${encodeURIComponent(t.destination_name)}&network=${encodeURIComponent(e?.name||"")}&bg=${encodeURIComponent(C)}&tc=${encodeURIComponent(e?.textColor||"ffffff")}`,D={"@context":"https://schema.org","@type":"WebPage",name:E,description:S,url:`https://trains.fyi${O}`,breadcrumb:{"@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Networks",item:"https://trains.fyi/networks/"},{"@type":"ListItem",position:2,name:e?.name,item:`https://trains.fyi/networks/${s}/`},{"@type":"ListItem",position:3,name:`${t.origin_name} to ${t.destination_name}`}]}};return(0,n.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,n.jsx)(f.A,{title:E,description:S,canonical:O,image:L,keywords:I}),(0,n.jsx)(i(),{children:(0,n.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(D)}})}),(0,n.jsx)(x.A,{...a}),(0,n.jsxs)("main",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-6",children:[(0,n.jsx)(u.A,{pages:P}),(0,n.jsxs)("div",{className:"mt-4 mb-6",children:[(0,n.jsxs)("h1",{className:"text-3xl font-bold tracking-tight text-gray-900",children:[t.origin_name," to ",t.destination_name," Train Tracker"]}),(0,n.jsxs)("p",{className:"mt-2 text-base text-gray-600",children:["Track ",e?.name," trains from ",t.origin_name," to ",t.destination_name," in real-time."]})]}),(0,n.jsx)("div",{className:"mb-8",children:(0,n.jsx)(v,{segmentShape:o,stops:M,activeTrains:A,networkSlug:s,networkColor:C,originName:t.origin_name,destinationName:t.destination_name})}),(0,n.jsxs)("section",{className:"mb-10",children:[(0,n.jsx)("h2",{className:"text-2xl font-bold text-gray-900 mb-4",children:"Today's Schedule"}),k?(0,n.jsx)("div",{className:"flex justify-center py-8",children:(0,n.jsx)(p.A,{})}):l.length>0?(0,n.jsx)("div",{className:"overflow-x-auto",children:(0,n.jsxs)("table",{className:"min-w-full divide-y divide-gray-200 bg-white rounded-lg border border-gray-200",children:[(0,n.jsx)("thead",{className:"bg-gray-50",children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Train"}),(0,n.jsxs)("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:["Departs ",t.origin_name]}),(0,n.jsxs)("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:["Arrives ",t.destination_name]}),(0,n.jsx)("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Duration"}),(0,n.jsx)("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Status"})]})}),(0,n.jsx)("tbody",{className:"divide-y divide-gray-200",children:l.map(e=>{let t=!!e.active_train,a=e.delay_seconds&&e.delay_seconds>60,l=t?function(e,t,s){if(!s?.length||!e||!t)return null;let n=1/0,r=0;for(let a=0;a<s.length;a++){let l=N(e,t,s[a].stop_lat,s[a].stop_lon);l<n&&(n=l,r=a)}if(1e3*n<=300)return{label:"Stopped At",stop:s[r]};let a=Math.min(r+1,s.length-1),l=s[a];return{label:3>=N(e,t,l.stop_lat,l.stop_lon)?"Arriving At":"En Route To",stop:l}}(e.active_train.lat,e.active_train.lng,e.stops):null,i=t?`/networks/${s}/trains/${encodeURIComponent(e.active_train.vehicle_id)}/`:null;return(0,n.jsxs)("tr",{className:`transition-colors ${t?"bg-blue-50 cursor-pointer hover:bg-blue-100":"hover:bg-gray-50"}`,onClick:i?()=>r.push(i):void 0,children:[(0,n.jsx)("td",{className:"px-4 py-3 text-sm font-medium text-gray-900",children:e.trip_short_name}),(0,n.jsx)("td",{className:"px-4 py-3 text-sm text-gray-600",children:w(e.departure_time)}),(0,n.jsx)("td",{className:"px-4 py-3 text-sm text-gray-600",children:w(e.arrival_time)}),(0,n.jsx)("td",{className:"px-4 py-3 text-sm text-gray-600",children:e.duration_minutes?`${Math.floor(e.duration_minutes/60)}h ${e.duration_minutes%60}m`:"—"}),(0,n.jsx)("td",{className:"px-4 py-3 text-sm",children:t?(0,n.jsxs)("div",{className:"space-y-0.5",children:[a&&(0,n.jsxs)("div",{className:"text-amber-600 font-medium",children:["+",(0,_.Zn)(Math.round(e.delay_seconds/60))," late"]}),l?(0,n.jsxs)("div",{className:"text-gray-700",children:[l.label," ",(0,n.jsx)("span",{className:"font-medium",children:l.stop.stop_name})]}):(0,n.jsx)("div",{className:"text-green-600 font-medium",children:"Active"})]}):e.is_complete?(0,n.jsx)("span",{className:"text-gray-500",children:"Complete"}):(0,n.jsx)("span",{className:"text-gray-400",children:"Scheduled"})})]},e.trip_id)})})]})}):k?null:(0,n.jsx)("p",{className:"text-gray-500",children:"No scheduled trains found for today."})]}),T.length>0&&(0,n.jsxs)("section",{className:"mb-10",children:[(0,n.jsx)("h2",{className:"text-2xl font-bold text-gray-900 mb-4",children:"Stops Along the Way"}),(0,n.jsx)("div",{className:"bg-white rounded-lg border border-gray-200 p-4",children:(0,n.jsx)(g.A,{items:T,renderItem:e=>
1(0,n.jsx)(b.A,{stopName:e.name,highlightColor:`#${C}`,isSelected:e.isFirst||e.isLast,onClick:()=>r.push(`/networks/${s}/stations/${e.stopId}/`)}),connectingLineColor:"bg-gray-200"})})]}),(0,n.jsxs)("section",{className:"mb-10",children:[(0,n.jsx)("h2",{className:"text-2xl font-bold text-gray-900 mb-4",children:"About This Route"}),(0,n.jsx)("div",{className:"prose prose-gray max-w-none",children:(0,n.jsxs)("p",{children:["The ",t.origin_name," to ",t.destination_name," train service is operated by"," ",(0,n.jsx)(d(),{href:`/networks/${s}/`,className:"text-blue-600 hover:text-blue-800",children:e?.name}),"."," ",l.length>0&&(0,n.jsxs)(n.Fragment,{children:["There ",1===l.length?"is":"are"," ",l.length," scheduled"," ",1===l.length?"train":"trains"," running this route today",M.length>2&&`, stopping at ${M.length-2} intermediate ${M.length-2==1?"station":"stations"}`,"."]})," ","Use this page to track trains in real-time between ",t.origin_name," and"," ",t.destination_name,", view the schedule, and check for delays."]})})]})]}),(0,n.jsx)(h.A,{})]})}},75808:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return d},noSSR:function(){return o}};for(var r in n)Object.defineProperty(t,r,{enumerable:!0,get:n[r]});let a=s(72687);s(37876),s(14232);let l=a._(s(29479));function i(e){return{default:e?.default||e}}function o(e,t){return delete t.webpack,delete t.modules,e(t)}function d(e,t){let s=l.default,n={loading:({error:e,isLoading:t,pastDelay:s})=>null};e instanceof Promise?n.loader=()=>e:"function"==typeof e?n.loader=e:"object"==typeof e&&(n={...n,...e});let r=(n={...n,...t}).loader;return(n.loadableGenerated&&(n={...n,...n.loadableGenerated},delete n.loadableGenerated),"boolean"!=typeof n.ssr||n.ssr)?s({...n,loader:()=>null!=r?r().then(i):Promise.resolve(i(()=>null))}):(delete n.webpack,delete n.modules,o(s,n))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77808:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});var n=s(14232);let r=n.forwardRef(function({title:e,titleId:t,...s},r){return n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},s),e?n.createElement("title",{id:t},e):null,n.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"}))})},90356:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/networks/[networkSlug]/[odSlug]",function(){return s(75147)}])},94292:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var n=s(37876),r=s(14232);let a=({items:e=[],renderItem:t,showConnectingLines:s=!0,connectingLineColor:a="bg-gray-200",getLineColor:l})=>{let i=(0,r.useMemo)(()=>{if(!e?.length)return[[],[],[]];let t=Math.ceil(e.length/3);return[e.slice(0,t),e.slice(t,2*t),e.slice(2*t)]},[e]);return e?.length?(0,n.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3",children:i.map((e,r)=>{let o=l?l(e[e.length-1],i[r+1]?.[0]):a,d=l?l(e[e.length-1],i[r+1]?.[0]):a,c=l?l(e[0],i[r+1]?.[0]):a,m=l?l(e[0],i[r+1]?.[0]):a;return(0,n.jsxs)("div",{className:"relative",children:[s&&r<i.length-1&&(0,n.jsx)("div",{className:`absolute left-[11px] top-4 bottom-0 w-0.5 ${"string"==typeof o?o:""}`,style:"object"==typeof o?o:{}}),e.map((r,i)=>{let o=l?l(r,e[i+1]):a;return(0,n.jsxs)("div",{className:"relative pl-8 mb-8 last:mb-0",children:[s&&i<e.length-1&&(0,n.jsx)("div",{style:{height:"calc(100% + 2rem)",..."object"==typeof o?o:{}},className:`absolute left-[11px] top-4 w-0.5 ${"string"==typeof o?o:""}`}),t(r,i)]},i)}),r<i.length-1&&(0,n.jsx)("div",{className:"hidden md:block absolute bottom-0 left-0 right-0 ml-[11px]",children:(0,n.jsx)("div",{className:`h-[2px] mr-[40px] ${"string"==typeof d?d:""}`,style:"object"==typeof d?d:{}})}),r<i.length-1&&(0,n.jsx)("div",{className:"hidden md:block absolute top-0 right-0 w-[40px]",children:(0,n.jsx)("div",{className:`h-[2px] mt-[15px] ${"string"==typeof c?c:""}`,style:"object"==typeof c?c:{}})}),r<i.length-1&&(0,n.jsx)("div",{className:"hidden md:block absolute top-0 bottom-0 right-0 px-10 mt-[15px]",children:(0,n.jsx)("div",{className:`w-[2px] h-full ${"string"==typeof m?m:""}`,style:"object"==typeof m?m:{}})})]},r)})}):(0,n.jsx)("div",{className:"text-gray-500 text-center py-4",children:"No items available"})}}},e=>{e.O(0,[6701,3927,2325,3990,8447,5392,636,6593,8792],()=>e(e.s=90356)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.