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.