PageSourceSearch

https://mass511.com/544-0cbfcc13acc3770df9b1.js

js mass511.com collected 2026-09-24 11:14:45 UTC 21,618 bytes, 459 lines download raw bytes

1"use strict";(self.webpackChunkone_web=self.webpackChunkone_web||[]).push([[544],{70544:(e,t,i)=>{var s=i(71413),r=i(52706),a=i(30555),l=i(24634),n=i(52850),o=i(56188),d=i(14834),c=i(30849),g=i(55453),h=i(36295),p=Object.defineProperty,v=Object.getOwnPropertyDescriptor,u=(e,t,i,s)=>{for(var r,a=s>1?void 0:s?v(t,i):t,l=e.length-1;l>=0;l--)(r=e[l])&&(a=(s?r(t,i,a):r(a))||a);return s&&a&&p(t,i,a),a};let m=class extends s.WF{constructor(){super(),this.disableLeftNav=!0,this.disableRightNav=!0,this.unscrollable=!1,this.scrollToIndex=0,this.fullWidthScrolling=!0,this._scroller=null,this.init=async()=>{const e=this.getItems();if(this.unscrollable=null!=window.appDimensions&&window.appDimensions.sidebarWidth>0&&e.length<3,this.fullWidthScrolling=e?.[0]&&e[0].clientWidth*e.length>this.offsetWidth,e.length>0){const t=this.scrollToIndex>=e.length?0:this.scrollToIndex;await e[t].updateComplete,this.scrollToCard(e[t],"auto",!1)}},this.addEventListener(h.Ns,(e=>{this.scrollToCard(e.detail.target)})),this._mediaQuery=window.matchMedia(`(min-width: ${n.EA.PHONE_XL}) and (max-width: ${n.EA.DESKTOP})`),this._mediaQuery.addListener(this.init)}get scroller(){return this._scroller}static get styles(){const e=(0,s.iz)(n.EA.PHONE_XL),t=(0,s.iz)(n.EA.TABLET),i=(0,s.iz)(n.EA.DESKTOP);return[l.A,s.AH`
2				:host {
3					display: block;
4					position: relative;
5					/* https://stackoverflow.com/questions/43311943/prevent-content-from-expanding-grid-items */
6					min-width: 0;
7
8					margin-bottom: calc(var(--gap) * 2);
9
10					--card-width: ${(0,s.iz)(n.Ruo)};
11					--carousel-overscroll: 1.5rem;
12					--carousel-full-width-padding-x: var(--gap);
13				}
14
15				::slotted(*) {
16					scroll-snap-align: center;
17					padding: 0 calc(var(--gap) * 0.5);
18					position: relative;
19				}
20
21				.tamer {
22					display: grid;
23					grid-template-columns: min-content 1fr min-content;
24				}
25
26				#scroller {
27					grid-area: 1 / 1 / 1 / span 3;
28					overflow-x: auto;
29					overscroll-behavior-x: contain;
30					-webkit-overflow-scrolling: touch;
31					display: flex;
32					scroll-snap-type: x mandatory;
33					margin: -0.25rem 0 0 0;
34					padding: 0.25rem 0 1rem;
35					scrollbar-color: rgba(140, 155, 156, 0.5) transparent;
36				}
37
38				#scroller::-webkit-scrollbar {
39					background: transparent;
40					height: 0.75rem;
41				}
42
43				#scroller::-webkit-scrollbar-thumb {
44					background-color: rgb(var(--silver));
45					border-radius: 0.5rem;
46					transition: all 0.3s ease-in-out;
47				}
48
49				:host([unscrollable]) #scroller {
50					overflow: initial;
51					padding-bottom: 0.25rem;
52					padding-left: calc(var(--gap) * 2);
53					margin-bottom: -0.25rem;
54					display: flex;
55					flex-wrap: wrap;
56					gap: var(--gap);
57				}
58
59				#scroller::-webkit-scrollbar-thumb:horizontal:focus {
60					background-color: rgba(140, 155, 156, 0.5);
61				}
62
63				#scroller::-webkit-scrollbar-thumb:hover {
64					background-color: rgba(var(--asbestos), 0.8);
65				}
66
67				.scroll-padding:before,
68				.scroll-padding:after {
69					content: '';
70					height: 1px;
71					flex: 0 0 calc(50% - var(--card-width) / 2 - 0.375rem + var(--carousel-overscroll));
72				}
73
74				:host([unscrollable]) ::slotted(*) {
75					padding-left: 0;
76					padding-right: 0;
77				}
78
79				:host([unscrollable]) .scroll-padding:before,
80				:host([unscrollable]) .scroll-padding:after {
81					flex: 0 0 var(--carousel-overscroll);
82				}
83
84				@media screen and (prefers-reduced-motion: reduce) {
85					.nav {
86						transition: none;
87					}
88				}
89
90				.nav-left {
91					cursor: pointer;
92					position: absolute;
93					left: 0;
94					top: 50%;
95					transform: translateY(-50%);
96					transition: opacity, background-color ease-in-out 0.15s;
97					border: solid 1px transparent;
98					border-radius: 0 1rem 1rem 0;
99					background-color: transparent;
100					overflow: hidden;
101					padding: var(--gap);
102					z-index: 2;
103				}
104
105				.nav-right {
106					cursor: pointer;
107					position: absolute;
108					right: 0;
109					top: 50%;
110					transform: translateY(-50%);
111					transition: opacity, background-color ease-in-out 0.15s;
112					border: solid 1px transparent;
113					border-radius: 1rem 0 0 1rem;
114					background-color: transparent;
115					overflow: hidden;
116					padding: var(--gap);
117					z-index: 2;
118				}
119
120				.nav-right:hover,
121				.nav-left:hover {
122					background-color: rgb(var(--darkest)) !important;
123				}
124
125				.nav-right svg,
126				.nav-left svg {
127					height: 3.25rem;
128					width: 1.625rem;
129					fill: #fff;
130					stroke: rgb(var(--darkest));
131					stroke-width: 12;
132					pointer-events: none;
133				}
134
135				:host([unscrollable]) .nav {
136					display: none;
137				}
138
139				:host .nav-left[disabled],
140				:host .nav-right[disabled] {
141					opacity: 0 !important;
142					pointer-events: none;
143				}
144
145				.nav--left {
146					grid-area: 1 / 1;
147				}
148
149				.nav--right {
150					grid-area: 1 / 3;
151				}
152
153				@media (pointer: coarse) and (max-width: ${e}) {
154					.nav {
155						display: none;
156					}
157				}
158
159				@media (min-width: ${t}) {
160					.scroll-padding:before,
161					.scroll-padding:after {
162						flex: 0 0
163							calc(
164								50% - var(--carousel-card-width-tablet) / 2 - 0.375rem + var(--carousel-overscroll)
165							);
166					}
167
168					#scroller:not(.full-width-scrolling) {
169						padding-bottom: 0.25rem;
170						margin-bottom: -0.25rem;
171					}
172
173					.scroll-padding:before,
174					.scroll-padding:after {
175						flex: 0;
176					}
177
178					.full-width-scrolling:before,
179					.full-width-scrolling:after {
180						flex: 0 0 var(--carousel-overscroll);
181					}
182
183					::slotted(*:first-child) {
184						scroll-snap-align: start;
185						padding-left: var(--carousel-full-width-padding-x);
186					}
187
188					::slotted(*:nth-child(2)),
189					::slotted(*:nth-last-child(2)) {
190						scroll-snap-align: none;
191					}
192
193					::slotted(*:last-child) {
194						scroll-snap-align: end;
195						padding-right: var(--carousel-full-width-padding-x);
196					}
197				}
198
199				.skip-cam-button,
200				.skip-cam-button-end {
201					outline: rgb(var(--peter-river)) solid 0.25rem;
202					z-index: 5;
203				}
204
205				.skip-cam-button {
206					position: absolute;
207					top: -20px;
208					left: 0;
209					overflow: hidden;
210					height: 0.5px;
211					width: 0;
212					opacity: 0;
213				}
214
215				.skip-cam-button-end {
216					top: auto;
217					bottom: -10px;
218				}
219
220				.skip-cam-button:focus {
221					height: auto;
222					width: auto;
223					opacity: 1;
224				}
225
226				@media (min-width: ${i}) {
227					::slotted(*) {
228						scroll-snap-align: none;
229					}
230					::slotted(*)::after {
231						content: '';
232						position: absolute;
233						bottom: 0;
234						top: 0;
235						transform: translateX(50%);
236						/* center in between cards for above phone size */
237						right: 0;
238						width: 1rem;
239						scroll-snap-align: center;
240					}
241
242					::slotted(*:first-child)::after,
243					::slotted(*:last-child)::after,
244					::slotted(*:nth-last-child(2))::after {
245						content: initial;
246					}
247				}
248			`]}render(){return s.qy`
249			<div class="tamer">
250				<button class="skip-cam-button" id="camStart" @click=${this.endCam} type="button">
251					Skip Camera List
252				</button>
253				<button
254					class="nav nav-left"
255					@click=${this.scrollPrev}
256					?disabled="${this.disableLeftNav}"
257					aria-label="Previous camera"
258					title="Previous camera"
259					tabindex="-1"
260				>
261					<svg aria-hidden="true">
262						<use href="${"/images/sprites.svg#arrow-left-lg"}"></use>
263					</svg>
264				</button>
265				<div
266					id="scroller"
267					class="${(0,a.H)({"scroll-padding":!this.unscrollable,"full-width-scrolling":!this.unscrollable&&this.fullWidthScrolling})}"
268					role="list"
269					@scroll="${this.onScroll}"
270				>
271					<slot id="card-slot"></slot>
272				</div>
273				<button
274					class="nav nav-right"
275					@click=${this.scrollNext}
276					?disabled="${this.disableRightNav}"
277					aria-label="Next camera"
278					title="Next camera"
279					tabindex="-1"
280				>
281					<svg aria-hidden="true">
282						<use href="${"/images/sprites.svg#arrow-right-lg"}"></use>
283					</svg>
284				</button>
285				<button
286					class="skip-cam-button skip-cam-button-end"
287					id="camEnd"
288					@click=${this.startCam}
289					type="button"
290				>
291					Go To Camera List Start
292				</button>
293			</div>
294		`}endCam(){this.linkEnd?.focus()}startCam(){this.linkStart?.focus()}disconnectedCallback(){super.disconnectedCallback(),this._mediaQuery.removeListener(this.init)}firstUpdated(){this._scroller=this.renderRoot.querySelector("#scroller"),this.renderRoot.querySelector("#card-slot").addEventListener("slotchange",(()=>{this.init()}))}updated(e){e.has("scrollToIndex")&&void 0!==e.get("scrollToIndex")&&this.init()}willUpdate(e){super.willUpdate(e),e.has("itemKeys")&&this.highlightItems()}scrollPrev(){if(this.scroller){let e=this.scroller.scrollLeft-this.scroller.offsetWidth;e<0&&(e=0),this.scroller.scrollTo({left:e,behavior:"smooth"})}}scrollNext(){if(this.scroller){let e=this.scroller.scrollLeft+this.scroller.offsetWidth;e>this.scroller.scrollWidth&&(e=this.scroller.scrollWidth-this.scroller.offsetWidth),this.scroller.scrollTo({left:e,behavior:"smooth"})}}scrollToCard(e,t="smooth",i=!0){i&&setTimeout((()=>{this.nextFocusTarget=e,this.focusOnNextTarget()}),100);const s=window.matchMedia(`(min-width: ${n.EA.DESKTOP})`).matches?e.offsetWidth:e.offsetWidth/2,r=e.offsetLeft+s,a=this.scroller.clientWidth/2,l=Math.ceil(r-a);this.dispatchEvent((0,o.h)("crc:carousel:scrolltocard")),this.scroller.scroll({left:l,behavior:t}),this.onScroll()}focusOnNextTarget(e=!0){this.nextFocusTarget&&this.nextFocusTarget.card&&(this.nextFocusTarget.card.focus({preventScroll:e}),this.nextFocusTarget=void 0)}onScroll(){this.scroller&&(this.disableLeftNav=this.scroller.scrollLeft<=.15*window.innerWidth,this.disableRightNav=this.scroller.scrollLeft+this.scroller.clientWidth>=this.scroller.scrollWidth-.15*window.innerWidth,this.highlightItems())}getItems(){return this.cardSlot?this.cardSlot.assignedNodes().filter((e=>e instanceof g.A||e instanceof d.A||e instanceof c.A)):[]}
294highlightItems(){this.getItems().forEach(((e,t,i)=>{e.visible=e.offsetLeft+e.offsetWidth>=this.scroller.scrollLeft&&e.offsetLeft-e.offsetWidth<=this.scroller.scrollLeft+this.scroller.offsetWidth,e.highlighted=i.length<3||e.offsetLeft+16>=this.scroller.scrollLeft&&e.offsetLeft+e.offsetWidth-16<=this.scroller.scrollLeft+this.scroller.offsetWidth})),this.requestUpdate()}};u([(0,r.MZ)({type:Boolean})],m.prototype,"disableLeftNav",2),u([(0,r.MZ)({type:Boolean})],m.prototype,"disableRightNav",2),u([(0,r.MZ)({type:Boolean,reflect:!0,attribute:"unscrollable"})],m.prototype,"unscrollable",2),u([(0,r.MZ)({type:Number,attribute:"scroll-to-index"})],m.prototype,"scrollToIndex",2),u([(0,r.MZ)({type:Boolean})],m.prototype,"fullWidthScrolling",2),u([(0,r.P)("#card-slot")],m.prototype,"cardSlot",2),u([(0,r.P)("#camStart")],m.prototype,"linkStart",2),u([(0,r.P)("#camEnd")],m.prototype,"linkEnd",2),u([(0,r.MZ)({type:Array})],m.prototype,"itemKeys",2),m=u([(0,r.EM)("card-media-carousel")],m)},30849:(e,t,i)=>{i.d(t,{A:()=>S});var s=i(20492),r=i(71413),a=i(52706),l=i(80480),n=i(30555),o=i(13446),d=i(70192),c=i(52850),g=i(5218),h=i(11457),p=i(4983),v=i(5124),u=i(32701),m=i(29109),f=i(36295),b=i(96548),y=i(54833),w=(i(47531),i(24634)),x=Object.defineProperty,$=Object.getOwnPropertyDescriptor,k=(e,t,i,s)=>{for(var r,a=s>1?void 0:s?$(t,i):t,l=e.length-1;l>=0;l--)(r=e[l])&&(a=(s?r(t,i,a):r(a))||a);return s&&a&&x(t,i,a),a};let S=class extends b.Wj{constructor(){super(...arguments),this.highlighted=!1,this.visible=!1,this.error=!1,this.preserveAspectRatio=!1,this.tpimSign="",this.tpimID=""}static get styles(){return[u.A,v.A,m.A,w.A,r.AH`
295				:host {
296					--card-aspect-ratio: 3 / 7;
297					--sign-background-color: 0 0 0;
298				}
299
300				.card-media_figure {
301					display: grid;
302				}
303
304				.card-sign-overlay-loading {
305					position: absolute;
306					top: 0;
307					left: 0;
308					bottom: 0;
309					right: 0;
310				}
311				.card-media_img-bg {
312					background-color: rgb(var(--sign-background-color));
313				}
314				.gantry-sign {
315					display: flex;
316					justify-content: center;
317					padding: 3px;
318				}
319				.gantry-sign img {
320					width: 100%;
321				}
322				.gantry-signs {
323					display: flex;
324					justify-content: space-around;
325					padding: var(--gap) 0;
326				}
327				.top-gantry-sign {
328					display: flex;
329					justify-content: center;
330					padding-bottom: var(--gap);
331				}
332				.top-gantry-sign .card-media_img {
333					width: 70%;
334				}
335				.sign-svg {
336					height: 100%;
337					width: 100%;
338					background: black;
339					display: flex;
340					justify-content: center;
341					align-items: center;
342				}
343
344				.bg-w {
345					background: white;
346				}
347			`]}render(){return r.qy`
348			<a
349				id="card"
350				href="#${this.uri??""}"
351				class=${(0,n.H)({"card-media_figure":!0,"card--link":!0,card:!this.sign})}
352				@click=${this.onClicked}
353				@mouseover=${this.onCardMouseOver}
354				@mouseout=${this.onCardMouseOut}
355				@focus=${this.onCardMouseOver}
356				@blur=${this.onCardMouseOut}
357				@keydown=${this.onPressed}
358			>
359				<slot></slot>
360				${(0,h.T)(this.renderCardContent(),r.qy`${this.generateLoadingContent()}`)}
361			</a>
362		`}updated(e){if(e.has("view")&&this.view&&this.setAttribute("type",this.view.__typename??""),(e.has("visible")||e.has("view"))&&this.visible&&this.view&&(this.error=!1,(0,d.Cm)(this.view))){const e=document.createElement("img");e.src=this.view.imageUrl,e.onerror=()=>{this.error=!0}}}emitNextFocus(e){this.dispatchEvent(new CustomEvent(f.Ns,{bubbles:!0,composed:!0,detail:{target:e}}))}onClicked(e){e.preventDefault(),this.emitNextFocus(this),this.hasAttribute("highlighted")&&this.dispatchEvent(new Event("card-click"))}onPressed(e){if(e.key&&"Enter"!==e.key&&" "!==e.key){if("ArrowLeft"===e.key||!0===e.shiftKey&&"Tab"===e.key){const t=this.previousElementSibling;t&&t instanceof S&&(e.preventDefault(),this.emitNextFocus(t))}else if("ArrowRight"===e.key||"Tab"===e.key){const t=this.nextElementSibling;t&&t instanceof S&&(e.preventDefault(),this.emitNextFocus(t))}}else this.onClicked(e)}delegateFocus(){this.cardFigureElement&&this.cardFigureElement.focus({preventScroll:!0})}shouldUpdate(e){return!this.hasUpdated||e.has("visible")||this.visible}connectedCallback(){super.connectedCallback(),this.addEventListener("focus",this.delegateFocus)}disconnectedCallback(){this.loadObserver&&this.loadObserver.disconnect(),this.removeEventListener("focus",this.delegateFocus),super.disconnectedCallback()}get cardFigureElement(){return this.renderRoot.querySelector("#card")}async renderCardContent(){if(this&&this.sign&&this.sign.variableSpeedLimits&&this.sign?.variableSpeedLimits?.length>0){const e=`Speed limit ${this.sign.variableSpeedLimits[0]} MPH, Vehicles over 26,000 GVWR ${this.sign.variableSpeedLimits[1]} MPH`;return this.generateVariableSpeedLimitSignContent(e,this.sign.variableSpeedLimits)}return this.view||this.sign?.gantrySigns?.length?this.error?this.generateFailureContent():await this.generateSignDisplayContent():this.generateLoadingContent()}generateFailureContent(){return r.qy`
363			<div
364				class="card-media_img card-media-error"
365				role="img"
366				aria-label="${this.title??"Sign unavailable"}"
367				alt="Camera image error"
368				style=${(0,l.W)({"padding-top":this.view&&(0,d.B_)(this.view)?"0":"1.5rem",background:"no-repeat center / cover url(/images/icon-traveltime-inactive-fill-solid.svg)"})}
369			></div>
370		`}generateLoadingContent(){return r.qy`
371			<div
372				class="card-media_img card-media-loading"
373				role="img"
374				aria-label="Loading sign"
375				style=${(0,l.W)({"padding-top":this.view&&(0,d.B_)(this.view)?"0":"1.5rem","--card-aspect-ratio":this.view&&(0,d.B_)(this.view)?"3 / 4":"inherit","background-image":"url(/images/loading.svg)"})}
376			></div>
377		`}generateGantryImageSignContent(e){const t=e.views?.[0];return r.qy`
378			<div class="gantry-sign-wrapper">
379				${t?.imageUrl.startsWith("data")?r.qy``:r.qy`
380							<div class="top-gantry-sign">
381								<div
382									class="${(0,n.H)({"card-media_img":!0,"card-media_img-bg":!0,"card-media_img-default":!this.preserveAspectRatio,"card-media_img-preserve":this.preserveAspectRatio})}"
383									role="img"
384									aria-label=${this.title}
385									style="background-image: url(${t?.imageUrl})"
386								></div>
387							</div>
388					  `}
389				<div class="gantry-signs">
390					${this.sign?.gantrySigns?.map((e=>r.qy`
391							<div class="gantry-sign">
392								<img
393									src="${(e?.views?.[0]).imageUrl}"
394									alt=${e.title||"Gantry Sign"}
395								/>
396							</div>
397						`))}
398				</div>
399			</div>
400		`}async generateSignDisplayContent(){const e=this.signDisplayStatus===p.Ol.DisplayingMessage;if(!this.view&&!this.sign?.gantrySigns?.length)return this.generateLoadingContent();if(this.sign&&(this.view?.category===c.A68.GANTRY||this.sign?.gantrySigns?.length))return this.generateGantryImageSignContent(this.sign);if(!this.view)return this.generateLoadingContent();if((0,d.jq)(this.view)&&e){if(this.view.imageUrl===this.tpimID&&this.tpimSign)return r.qy`<div class="sign-svg">${(0,g._)(this.tpimSign)}</div>`;const e=await fetch(this.view.imageUrl),t=await e.text(),i=this.view?.textLines?.[0]?.split(" ").filter((e=>!!e))||["","",""];let s=0;const a=t.replaceAll('<tspan x="0" y="0">--</tspan>',(e=>{const t=i[s];return t?(s+=1,`<tspan x="${-1*(t.length-1)*48}" y="0">${t}</tspan>`):'<tspan x="0" y="0">--</tspan>'}));if(a.includes("svg"))return this.tpimID=this.view.imageUrl,this.tpimSign=a,r.qy`<div class="sign-svg">${(0,g._)(a)}</div>`}return(0,d.f2)(this.view)&&e?this.generateEmbeddedImageSignContent(this.view.textLines,this.view.imageUrl,this.view.textJustification):(0,d.Cm)(this.view)&&e?this.generateVMSImageSignContent(this.view.imageUrl):(0,d.B_)(this.view)&&e?r.qy`<sign-overlay-travel-time
401				class="${(0,n.H)({"card-media_img":!0})}"
402				imageUrl=${this.view.imageUrl}
403				imageLayout=${this.view.imageLayout}
404				.travelTimes=${this.view.travelTimes}
405				title=${this.view.title}
406			>
407				<div
408					slot="loader"
409					class="card-sign-overlay-loading"
410					role="img"
411					aria-label="Loading sign"
412					style=${(0,l.W)({"background-image":"url(/images/loading.svg)"})}
413				></div>
414			</sign-overlay-travel-time>`:(0,d.uv)(this.view)?this.view.category===c.A68.POSTED?this.generatePostedSignContent(this.view.textLines):this.view.category===c.A68.BRIDGE_HEIGHT?(0,s.A)(this.view.textLines,248,"4rem"):this.generateTextSignContent(this.view.textLines,this.view.textJustification):this.generateFailureContent()}async generatePostedSignContent(e){let t="/images/weight-restriction.svg";this.view?.title.includes("CSX/US20/WESTFLD")&&(t="/images/weight-restriction_i90i90.svg");const i=await fetch(t),s=await i.text();let a=3,l=s.replaceAll('<tspan x="0" y="0">0T</tspan>',(t=>{const i=e[a];return i?(a-=1,`<tspan x="0" y="0">${i}T</tspan>`):'<tspan x="0" y="0">--</tspan>'}));return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&(l=l.replace('data-safari=""','height="300" width="200"')),l.includes("svg")?r.qy` <div class="sign-svg bg-w">${(0,g._)(l)}</div>`:r.qy``}generateVMSImageSignContent(e){return r.qy`
415			<div
416				class="${(0,n.H)({"card-media_img":!0,"card-media_img-bg":!0,"card-media_img-default":!this.preserveAspectRatio,"card-media_img-preserve":this.preserveAspectRatio})}"
417				role="img"
418				aria-label=${this.title}
419				style="background-image: url(${e})"
420			></div>
421		`}generateEmbeddedImageSignContent(e,t,i){const s=this.signDisplayStatus===p.Ol.DisplayingMessage,a=(0,y.u)(i);return r.qy`
422			<div
423				class="${(0,n.H)({"card-media_embedded-image":!0,"card-media_text":!0,"card-media-success":!0,"card-media_img-default":!this.preserveAspectRatio,"card-media_img-preserve":this.preserveAspectRatio})}"
424				role="presentation"
425			>
426				${t?r.qy`<img class="image-side" src=${t} role="presentation" />
427								<div class="text-side">
428									<card-sign-media-text
429										textAlign=${a}
430										?preserveAspectRatio=${this.preserveAspectRatio}
431										?signIsActive=${s}
432										.signPageLines=${e}
433										inViewport
434									></card-sign-media-text>
435								</div>`:r.qy`<card-sign-media-text
436								textAlign=${a}
437								?preserveAspectRatio=${this.preserveAspectRatio}
438								?signIsActive=${s}
439								.signPageLines=${e}
440								inViewport
441						  ></card-sign-media-text>`}
442				
443					
444				</div>
445			</div>
446		`}generateTextSignContent(e,t){const i=this.signDisplayStatus===p.Ol.DisplayingMessage,s=(0,y.u)(t);return r.qy`
447			<div
448				class="${(0,n.H)({"card-media_text":!0,"card-media-success":!0,"card-media_img-default":!this.preserveAspectRatio,"card-media_img-preserve":this.preserveAspectRatio})}"
449				style="${(0,l.W)({background:"transparent"})}"
450			>
451				<card-sign-media-text
452					textAlign=${s}
453					?preserveAspectRatio=${this.preserveAspectRatio}
454					?signIsActive=${i}
455					.signPageLines=${e}
456					inViewport
457				></card-sign-media-text>
458			</div>
459		`}async generateVariableSpeedLimitSignContent(e,[t,i]){const s=await fetch("/images/variable-speed-limit-sign.svg");let a=await s.text();return a=a.replace("<svg",`<svg aria-label="${e}"`),a=a.replace("--",`${t}`),a=a.replace("--",`${i}`),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&(a=a.replace('data-safari=""','height="300" width="200"')),a.includes("svg")?r.qy`<div class="sign-svg bg-w">${(0,g._)(a)}</div>`:r.qy``}};k([(0,a.MZ)({type:Boolean,reflect:!0})],S.prototype,"highlighted",2),k([(0,a.MZ)({type:Boolean,reflect:!0})],S.prototype,"visible",2),k([(0,a.MZ)({type:Object,hasChanged:(e,t)=>!(0,o.A)(e,t)})],S.prototype,"view",2),k([(0,a.MZ)({type:Object,hasChanged:(e,t)=>e?.uri!==t?.uri})],S.prototype,"sign",2),k([(0,a.MZ)({type:Boolean,reflect:!0})],S.prototype,"error",2),k([(0,a.MZ)({type:String,reflect:!0,attribute:"display-status"})],S.prototype,"signDisplayStatus",2),k([(0,a.MZ)({type:Boolean,reflect:!0,attribute:"preserve-aspect-ratio"})],S.prototype,"preserveAspectRatio",2),S=k([(0,a.EM)("card-sign-media")],S)}}]);

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.