PageSourceSearch

https://mass511.com/tray-search-roadway-ba08a2725aaaa5ab2730.js

js mass511.com collected 2026-09-24 11:15:58 UTC 20,211 bytes, 394 lines download raw bytes

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.