1"use strict";(self.webpackChunkone_web=self.webpackChunkone_web||[]).push([[3232],{49602:(e,t,r)=>{r.d(t,{A:()=>l});var i=r(71413),a=r(5218),s=r(52850),o=r(80027);r(82477);const l=function(e,t=""){return e?.type===s.i65.INTERNAL_SERVER_ERROR?i.qy` 2 <tray-failure> 3 <h4 slot="headline">${o.KP.title}</h4> 4 <p class="text-muted text-smaller">${(0,a._)(o.KP.description)}</p> 5 </tray-failure> 6 `:e?.type===s.i65.NOT_FOUND?i.qy` 7 <tray-failure> 8 <h4 slot="headline">This ${t} information has expired</h4> 9 <p class="text-muted text-smaller">Any details below are no longer valid.</p> 10 </tray-failure> 11 `:void 0}},27902:(e,t,r)=>{r.r(t),r.d(t,{TraySearchRoadway:()=>C,default:()=>_});var i=r(71413),a=r(52706),s=r(35135),o=r(65160),l=r(56599),c=r(70192),n=r(5218),d=r(80027),u=r(52850),h=r(10388),p=r(98451),y=r(95050),m=r(95504),v=r(49602),g=r(8986),b=(r(55453),r(70544),r(62600),r(70909),r(82477),r(97187),r(58877),r(16053),r(20732)),f=Object.defineProperty,$=Object.getOwnPropertyDescriptor,w=(e,t,r,i)=>{for(var a,s=i>1?void 0:i?$(t,r):t,o=e.length-1;o>=0;o--)(a=e[o])&&(s=(i?a(t,r,s):a(s))||s);return i&&s&&f(t,r,s),s};let C=class extends((0,l.N)(h.M_)(g.Ay)){constructor(){super(),this.roadwayName="",this.activeLayers={},this.cameraViews=[],this.resultCount=0,this.trayName="roadway"}render(){if(this.useTabs)return this.renderWithTabs();const e=(0,v.A)(this?.error);let t=this.results?this.results.filter((e=>!!e)):[];t=(0,g.Q9)(t);const r=this.cameraViews||[],a=t.filter((e=>!!((0,c.ju)(e)&&e.priority<=1)));return this.isLoading||!this.results?i.qy` 12 ${e} 13 <card-result-list role="list"> 14 <!-- https://www.w3.org/WAI/WCAG21/Techniques/aria/ARIA22 --> 15 <h2 slot="title" class="h-display" role="status"> 16 Loading results for 17 <strong class="directions-origin-color">${this.roadwayName}</strong> 18 </h2> 19 ${this.activeLayers[u.f2p.NORMAL_CAMERA]||this.activeLayers[u.f2p.HOT_CAMERA]?i.qy` 20 <card-media-carousel 21 full-width 22 @crc:carousel:scrolltocard=${this.onCarouselScrollToCard} 23 > 24 <card-media visible></card-media> 25 <card-media visible></card-media> 26 <card-media></card-media> 27 </card-media-carousel> 28 `:""} 29 <card-result loading role="listitem"></card-result> 30 </card-result-list> 31 `:i.qy` 32 ${e} 33 ${this.roadWayFeature?i.qy`<map-feature .feature=${this.roadWayFeature}></map-feature>`:i.qy``} 34 <card-result-list style="margin-bottom: 0;" role="list"> 35 <h2 class="h-display" slot="title"> 36 ${this.resultCount?`${this.resultCount} Events`:"Results"} for 37 <strong class="directions-origin-color">${this.roadwayName}</strong> 38 </h2> 39 ${this.llmSummary?this.renderLLMSummary():i.qy``} 40 ${r.length>0?i.qy` 41 <card-media-carousel 42 @crc:carousel:scrolltocard=${this.onCarouselScrollToCard} 43 role="list" 44 > 45 ${r.map((e=>e&&e.category===u.NaE.LINK?i.qy` 46 <card-media-external-link 47 role="listitem" 48 @card-click=${this.cameraViewClicked} 49 uri=${e.uri} 50 category="${e.category}" 51 src=${(0,s.J)(e.url??void 0)} 52 title=${e.title} 53 hover-uri="${(0,s.J)(null===e.parentCollection.uri?void 0:e.parentCollection.uri)}" 54 > 55 ${e.title} 56 </card-media-external-link> 57 `:e?i.qy` 58 <card-media 59 @card-click=${this.cameraViewClicked} 60 @crc:card:mouseover=${b.A} 61 @crc:card:mouseout=${b.n} 62 uri=${e.uri} 63 hover-uri=${e.parentCollection?.uri} 64 category="${e.category}" 65 src=${(0,s.J)(e.url??void 0)} 66 title=${e.title} 67 > 68 ${i.qy` 69 <favorite-camera-view-button 70 slot="card-button" 71 class="card_header-button-container" 72 contentUri=${e.uri} 73 contentType=${u.Gqw.CAMERA} 74 hide-labels 75 ></favorite-camera-view-button> 76 `} 77 ${e.title} 78 </card-media> 79 `:i.qy``))}</card-media-carousel 80 > 81 `:i.qy`</card-media-carousel>`} 82 </card-result-list>
83 ${0===t.length?i.qy` 84 <card-result icon="${"/images/icon-search-fill-solid.svg"}" role="listitem"> 85 <h3>No results found.</h3> 86 <p class="text-muted text-smaller"> 87 We can't find any critical road or weather events on your searched route. 88 </p> 89 </card-result> 90 `:i.qy`${a.length?i.qy` 91 <card-result-list style="margin-bottom: 0;" role="list"> 92 <h2 slot="title" class="h-display heading-list-title"> 93 Critical Information 94 <context-help-tooltip slot="prefix"> 95 <h3>What's This?</h3> 96 <p>${(0,n._)(d.d2.criticalInformation)}</p> 97 </context-help-tooltip> 98 </h2> 99 ${a.map((e=>{const t=((0,c.ju)(e)&&e.delayDescriptions?e.delayDescriptions:[]).filter((e=>!e?.segmentDelays?.length)),r=(0,c.ju)(e)&&e.quantities;return i.qy` 100 <card-result 101 role="listitem" 102 .result=${e} 103 uri="/${e.uri}?hasNavigatedFromSearch=true" 104 hover-uri=${e.uri} 105 thumb-url=${(0,s.J)(e?.views?.[0]?.url??void 0)} 106 thumb-alt=${(0,s.J)(e?.title??void 0)} 107 thumb-category=${(0,s.J)(e.views&&e.views[0]?e.views[0].category:u.NaE.UNKNOWN)} 108 .quantities=${r||[]} 109 border-color=${(0,s.J)(e.color??void 0)} 110 icon=${(0,s.J)(e.icon??void 0)} 111 .delayDescriptions=${t} 112 .restAreaStatusSummary=${e.restAreaStatusSummary} 113 @crc:card:mouseover=${b.A} 114 @crc:card:mouseout=${b.n} 115 > 116 <h3>${e.title}</h3> 117 <p class="text-muted text-smaller">${e.cityReference}</p> 118 </card-result> 119 `}))} 120 </card-result-list> 121 `:i.qy``} 122 123 <card-result-list style="margin-bottom: 0;" role="list"> 124 ${a.length?i.qy` 125 <h2 slot="title" class="h-display heading-list-title"> 126 Other Information 127 <context-help-tooltip slot="prefix"> 128 <h3>What's This?</h3> 129 <p>${(0,n._)(d.d2.otherInformation)}</p> 130 </context-help-tooltip> 131 </h2> 132 `:i.qy``} 133 ${t.filter((e=>!((0,c.ju)(e)&&e.priority<=1))).map((e=>{const t=((0,c.ju)(e)&&e.delayDescriptions?e.delayDescriptions:[]).filter((e=>!e?.segmentDelays?.length)),r=(0,c.ju)(e)&&e.quantities;return i.qy` 134 <card-result 135 role="listitem" 136 .result=${e} 137 uri="/${e.uri}?hasNavigatedFromSearch=true" 138 hover-uri=${e.uri} 139 thumb-url=${(0,s.J)(e?.views?.[0]?.url??void 0)} 140 thumb-alt=${(0,s.J)(e?.title??void 0)} 141 thumb-category=${(0,s.J)(e.views&&e.views[0]?e.views[0].category:u.NaE.UNKNOWN)} 142 .quantities=${r||[]} 143 border-color=${(0,s.J)(e.color??void 0)} 144 icon=${(0,s.J)(e.icon??void 0)} 145 .delayDescriptions=${t} 146 .restAreaStatusSummary=${e.restAreaStatusSummary} 147 @crc:card:mouseover=${b.A} 148 @crc:card:mouseout=${b.n} 149 > 150 <h3>${e.title}</h3> 151 <p class="text-muted text-smaller">${e.cityReference}</p> 152 </card-result> 153 `}))} 154 </card-result-list> `} 155 `}renderWithTabs(){const e=(0,v.A)(this?.error),t=this.cameraViews||[];return this.isLoading||!this.results?i.qy` 156 ${e} 157 <card-result-list role="list"> 158 <h2 slot="title" class="h-display" role="status"> 159 Loading results for 160 <strong class="directions-origin-color">${this.roadwayName}</strong> 161 </h2> 162 ${this.activeLayers[u.f2p.NORMAL_CAMERA]||this.activeLayers[u.f2p.HOT_CAMERA]?i.qy` 163 <card-media-carousel 164 role="list" 165 full-width 166 @crc:carousel:scrolltocard=${this.onCarouselScrollToCard} 167 > 168 <card-media visible></card-media> 169 <card-media visible></card-media> 170 <card-media></card-media> 171 </card-media-carousel> 172 `:""} 173 <card-result loading role="listitem"></card-result> 174 </card-result-list> 175 `:i.qy` 176 ${e} 177 ${this.roadWayFeature?i.qy`<map-feature .feature=${this.roadWayFeature}></map-feature>`:i.qy``} 178 <card-result-list style="margin-bottom: 0;" role="list"> 179 <h2 class="h-display" slot="title"> 180 ${this.resultCount?`${this.resultCount} Events`:"Results"} for 181 <strong class="directions-origin-color">${this.roadwayName}</strong> 182 </h2> 183 ${t.length>0?i.qy` 184 <card-media-carousel 185 @crc:carousel:scrolltocard=${this.onCarouselScrollToCard} 186 role="list" 187 > 188 ${t.map((e=>e&&e.category===u.NaE.LINK?i.qy` 189 <card-media-external-link 190 role="listitem" 191 @card-click=${this.cameraViewClicked} 192 uri=${e.uri} 193 category="${e.category}" 194 src=${(0,s.J)(e.url??void 0)} 195 title=${e.title} 196 hover-uri="${(0,s.J)(null===e.parentCollection.uri?void 0:e.parentCollection.uri)}" 197 > 198 ${e.title} 199 </card-media-external-link> 200 `:e?i.qy` 201 <card-media 202 @card-click=${this.cameraViewClicked} 203 @crc:card:mouseover=${b.A} 204 @crc:card:mouseout=${b.n} 205 uri=${e.uri} 206 hover-uri=${e.parentCollection?.uri} 207 category="${e.category}" 208 src=${(0,s.J)(e.url??void 0)} 209 title=${e.title} 210 role="listitem" 211 > 212 ${i.qy` 213 <favorite-camera-view-button 214 slot="card-button" 215 class="card_header-button-container" 216 contentUri=${e.uri} 217 contentType=${u.Gqw.CAMERA} 218 hide-labels 219 ></favorite-camera-view-button>
219 220 `} 221 ${e.title} 222 </card-media> 223 `:i.qy``))}</card-media-carousel 224 > 225 `:i.qy`</card-media-carousel>`} 226 </card-result-list> 227 228 ${this.renderTabNav()} ${"results"===this.tab?this.renderTabResults():null} 229 ${"ev"===this.tab?this.renderTabEV():null} 230 `}stateChanged(e){this.roadwayName=e.search.urlRoadwayName,this.isLoading=e.tray.isLoading,this.error=e.tray.error,this.activeLayers=e.app.activeLayers,this.roadWayFeature=(0,y.u)(e),this.isLoggedIn=(0,m.M3)(e);const t=this.results;if(this.results=(0,y.p5)(e),d.DR.endpoints.llmSummary&&t!==this.results){this.llmSummary=void 0;let e=this.results?this.results.filter((e=>!!e)):[];e=(0,g.Q9)(e);const t=e.filter((e=>!!((0,c.ju)(e)&&e.priority<=1)));(t.length||e.length)&&this.loadLLM(t,e)}this.cameraViews=(0,y.Cv)(e),this.resultCount=(0,y.QB)(e)}disconnectedCallback(){h.M_.dispatch({type:u.ZZ7}),(0,p.c6)(),super.disconnectedCallback()}updated(e){super.updated(e),e.has("roadwayName")&&(0,o.D)({title:`${this.roadwayName} | ${d.s1.pageTitle}`})}};w([(0,a.MZ)({type:String})],C.prototype,"roadwayName",2),w([(0,a.MZ)({type:Object})],C.prototype,"activeLayers",2),w([(0,a.MZ)({type:Object})],C.prototype,"roadWayFeature",2),w([(0,a.MZ)({type:Array})],C.prototype,"cameraViews",2),w([(0,a.MZ)({type:Number})],C.prototype,"resultCount",2),C=w([(0,a.EM)("tray-search-roadway")],C);const _=C},97187:(e,t,r)=>{var i=r(71413),a=r(52706),s=r(30555),o=r(10427),l=r(5366),c=r(24634),n=r(10388),d=r(21379),u=r(52850),h=r(99863),p=r(65585),y=Object.defineProperty,m=Object.getOwnPropertyDescriptor,v=(e,t,r,i)=>{for(var a,s=i>1?void 0:i?m(t,r):t,o=e.length-1;o>=0;o--)(a=e[o])&&(s=(i?a(t,r,s):a(s))||s);return i&&s&&y(t,r,s),s};let g=class extends i.WF{constructor(){super(...arguments),this.iconSource="/images/icon-favorite-fill-solid.svg",this.expanded=!1,this.message="Saved Successfully!",this.isError=!1,this.onBodyClick=e=>{const t=this.renderRoot.querySelector("#toggler");(0,p.A)(t,e)||(this.expanded=!1)}}static get styles(){return[...o.Ay.styles,c.A,i.AH` 231 :host { 232 display: inline-block; 233 vertical-align: sub; 234 235 --bg-color_success: rgb(var(--peter-river)); 236 --bg-color_error: rgb(var(--danger)); 237 --text-color: #fff; 238 } 239 240 :host([center-vertically]) { 241 margin: -1.25rem -0.75rem -1rem; 242 vertical-align: middle; 243 } 244 245 .content-wrapper { 246 padding: 1rem; 247 width: max-content; 248 max-width: 360px; 249 border-radius: var(--border-radius); 250 box-shadow: var(--shadow-sm); 251 text-align: left; 252 text-transform: initial; 253 color: var(--text-color); 254 display: flex; 255 fill: white; 256 } 257 258 .content-wrapper_success { 259 background-color: var(--bg-color_success); 260 } 261 262 .content-wrapper_error { 263 background-color: var(--bg-color_error); 264 } 265 266 .popper-container_success { 267 --tail-color: var(--bg-color_success); 268 --tail-border-width: 0; 269 } 270 271 .popper-container_error { 272 --tail-color: var(--bg-color_error); 273 --tail-border-width: 0; 274 } 275 276 .close-btn { 277 padding: 0 0 0 0.75rem; 278 align-items: flex-start; 279 } 280 281 .btn_icon { 282 height: 0.75rem; 283 width: 0.75rem; 284 } 285 .favorite-btn_label { 286 color: #6c797a; 287 } 288 `]}render(){const e="number"==typeof this.favoriteId?"/images/icon-favorite-fill-solid-selected.svg":"/images/icon-favorite-fill-solid.svg";return i.qy` 289 <popper-container 290 class=${(0,s.H)({"popper-container_success":!this.isError,"popper-container_error":this.isError})} 291 position=${l.kl.BOTTOM} 292 ?is-visible="${this.expanded}" 293 is-flip 294 aria-hidden="true" 295 > 296 <button slot="toggler" class="btn favorite-btn" @click=${this.favoritesClick}> 297 <img src="${e}" class="favorite-btn_icon" alt="" role="presentation" /> 298 <span class="favorite-btn_label"><slot></slot></span> 299 </button> 300 <div 301 class=${(0,s.H)({"content-wrapper":!0,"content-wrapper_success":!this.isError,"content-wrapper_error":this.isError})} 302 > 303 <slot name="message"></slot> 304 <button class="btn close-btn" @click="${this.onDismissClick}" aria-label="Close"> 305 <svg class="btn_icon" role="presentation" aria-hidden="true"> 306 <use href="${"/images/sprites.svg#close"}"></use> 307 </svg> 308 </button> 309 </div> 310 </popper-container> 311 `}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.onBodyClick)}disconnectedCallback(){document.removeEventListener("click",this.onBodyClick),super.disconnectedCallback()}updated(){this.expanded||this.dispatchEvent(new CustomEvent("hide"))}favoritesClick(){if(!this.favoriteType)throw new Error("Fav button missing data.");"number"==typeof this.favoriteId?n.M_.dispatch((0,d.z)(`${u.Gqw.FAVORITE}/${this.favoriteType}/${h.u2.EDIT}/${this.favoriteId}`)):n.M_.dispatch((0,d.z)(`${u.Gqw.FAVORITE}/${this.favoriteType}/${h.u2.CREATE}`))}onDismissClick(){this.expanded=!1}};v([(0,a.MZ)({type:String})],g.prototype,"iconSource",2),v([(0,a.MZ)({type:Boolean,reflect:!0})],g.prototype,"expanded",2),v([(0,a.MZ)({type:String})],g.prototype,"message",2),v([(0,a.MZ)({type:Boolean})],g.prototype,"isError",2),v([(0,a.MZ)({type:String})],g.prototype,"favoriteType",2),v([(0,a.MZ)({type:Number})],g.prototype,"favoriteId",2),g=v([(0,a.EM)("favorite-button")],g)},16053:(e,t,r)=>{var i=r(71413),a=r(52706),s=r(56599),o=r(10388),l=r(52850),c=r(80027),n=r(32701),d=r(24634);const u=e=>({type:l.gNy,contentUri:e});var h=r(91780),p=r(21379),y=r(95504),m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,g=(e,t,r,i)=>{for(var a,s=i>1?void 0:i?v(t,r):t,o=e.length-1;o>=0;o--)(a=e[o])&&(s=(i?a(t,r,s):a(s))||s);return i&&s&&m(t,r,s),s};let b=class extends((0,s.N)(o.M_)(i.WF)){constructor(){super(...arguments),this.contentUri="",this.contentType="page",this.hideLabels=!1,this.favoriteCameraIsSubmitting=!1,this.isFavorited=!1,this.isLoggedIn=!1}static get styles(){return[n.A,d.A,i.AH` 312 :host { 313 width: 100%; 314 height: 100%; 315 } 316 317 @media screen and (prefers-reduced-motion: reduce) { 318 .heart-btn { 319 transition: none; 320 } 321 } 322 323 .heart-btn { 324 padding: 0; 325 } 326 327 .heart-btn[disabled] { 328 opacity: 0.5; 329 pointer-events: none; 330 cursor: wait; 331 } 332 333 .heart-btn_label { 334 display: block; 335 white-space: initial; 336 font-size: var(--smallest); 337 margin-top: var(--gap); 338 } 339 .heart-btn_icon { 340 width: 100%; 341 height: 100%; 342 } 343 `]}stateChanged(e){this.favoriteCameraIsSubmitting=e.your511Favorites.pendingFavoriteCameraViewUris.has(this.contentUri),this.isFavorited=e.your511Favorites.favoriteCameraViewUris?.includes(this.contentUri)??!1,this.isLoggedIn=(0,y.M3)(e)}addFavorite(){this.favoriteCameraIsSubmitting||(o.M_.dispatch(u(this.contentUri)),o.M_.dispatch((0,h.oS)(this.contentUri)))}removeFavorite(){this.favoriteCameraIsSubmitting||(o.M_.dispatch(u(this.contentUri)),o.M_.dispatch((0,h.tN)(this.contentUri)))}onFavoriteCameraClick(e){return e.preventDefault(),e.stopPropagation(),this.isLoggedIn?(this.isFavorited&&this.removeFavorite(),this.addFavorite()):o.M_.dispatch((0,p.z)(`${l.Gqw.LOGIN}`))}render(){const e=this.isFavorited?c.Lk.favorite.getUnsaveLabel(this.contentType):c.Lk.favorite.getSaveLabel(this.contentType),t=this.isFavorited?"/images/icon-favorite-fill-solid-selected.svg":"/images/icon-favorite-fill-solid.svg",r=!this.hideLabels&&!c.Lk.alwaysHideLabels;return i.qy` 344 <button 345 class="btn btn-light heart-btn" 346 @click="${this.onFavoriteCameraClick}" 347 title="${e}" 348 aria-label="${e}" 349 ?disabled=${this.favoriteCameraIsSubmitting} 350 part="button" 351 > 352 <img src="${t}" class="heart-btn_icon" alt="" part="icon" role="presentation" /> 353 ${r?i.qy` <span class="heart-btn_label">${e}</span> `:""} 354 </button> 355 `}};g([(0,a.MZ)({type:String,reflect:!0}
355)],b.prototype,"contentUri",2),g([(0,a.MZ)({type:String,reflect:!0})],b.prototype,"contentType",2),g([(0,a.MZ)({type:Boolean,reflect:!0,attribute:"hide-labels"})],b.prototype,"hideLabels",2),g([(0,a.MZ)({type:Boolean})],b.prototype,"favoriteCameraIsSubmitting",2),g([(0,a.MZ)({type:Boolean})],b.prototype,"isFavorited",2),g([(0,a.MZ)({type:Boolean})],b.prototype,"isLoggedIn",2),b=g([(0,a.EM)("favorite-camera-view-button")],b)},58877:(e,t,r)=>{var i=r(71413),a=r(52706),s=r(30836);Object.defineProperty,Object.getOwnPropertyDescriptor;let o=class extends i.WF{set feature(e){s.W.getMap().then((t=>{if(this._feature&&this._feature.getId()!==e.id){const r=this._feature.getId();t.data.overrideStyle(t.data.getFeatureById(r),e.properties)}else[this._feature]=t.data.addGeoJson(e)}))}disconnectedCallback(){s.W.getMap().then((e=>{this._feature&&(e.data.remove(this._feature),delete this._feature,super.disconnectedCallback())}))}createRenderRoot(){return this}};o=((e,t,r,i)=>{for(var a,s=t,o=e.length-1;o>=0;o--)(a=e[o])&&(s=a(s)||s);return s})([(0,a.EM)("map-feature")],o)},82477:(e,t,r)=>{var i=r(71413),a=r(52706),s=r(80480),o=r(5218),l=r(32701),c=r(5124),n=r(80027),d=r(96548);Object.defineProperty,Object.getOwnPropertyDescriptor;let u=class extends d.Ay{constructor(){super(...arguments),this._backgroundColor=n.KP.backgroundColor,this._borderColor=n.KP.borderColor}static get styles(){return[l.A,c.A,i.AH` 356 :host { 357 box-shadow: var(--shadow-sm); 358 display: flex; 359 } 360 361 .default-failure-border { 362 flex: 0 0 var(--gap); 363 align-self: stretch; 364 } 365 366 .default-failure-content { 367 display: flex; 368 border: var(--border-width) solid rgb(var(--silver)); 369 border-right: 0; 370 border-left: 0; 371 flex: 1; 372 } 373 `]}render(){return i.qy` 374 <div 375 class="default-failure-border" 376 style="${(0,s.W)({backgroundColor:this.borderColor})}" 377 ></div> 378 <section 379 class="default-failure-content" 380 style="${(0,s.W)({backgroundColor:this.backgroundColor,borderColor:this.borderColor})}" 381 > 382 <slot name="icon"> 383 <img src="${n.KP.icon}" role="presentation" alt="" class="card_icon " /> 384 </slot> 385 <div class="card_header-text card_description"> 386 <slot name="headline"> 387 <h4>${n.KP.title}</h4> 388 </slot> 389 <slot> 390 <div class="text-muted">${(0,o._)(n.KP.description)}</div> 391 </slot> 392 </div> 393 </section> 394 `}};u=((e,t,r,i)=>{for(var a,s=t,o=e.length-1;o>=0;o--)(a=e[o])&&(s=a(s)||s);return s})([(0,a.EM)("tray-failure")],u)}}]);
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.