From 7bd567a7fc1ea04f9a5814b2de157b755cb95318 Mon Sep 17 00:00:00 2001 From: Marco Kreeft Date: Tue, 20 Dec 2022 23:27:27 +0100 Subject: [PATCH 1/2] Added cardsize method --- src/cards/base-card.ts | 2 ++ src/cards/constructor-standings.ts | 4 ++++ src/cards/driver-standings.ts | 4 ++++ src/cards/last-result.ts | 6 +++++- src/cards/next-race.ts | 6 +++++- src/cards/schedule.ts | 6 +++++- src/index.ts | 24 +++++++++++++++++++----- 7 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/cards/base-card.ts b/src/cards/base-card.ts index 876d71b..8ed1148 100644 --- a/src/cards/base-card.ts +++ b/src/cards/base-card.ts @@ -23,4 +23,6 @@ export abstract class BaseCard { } abstract render() : HTMLTemplateResult; + + abstract cardSize() : number; } diff --git a/src/cards/constructor-standings.ts b/src/cards/constructor-standings.ts index 33de916..cfa98f6 100644 --- a/src/cards/constructor-standings.ts +++ b/src/cards/constructor-standings.ts @@ -8,6 +8,10 @@ export default class ConstructorStandings extends BaseCard { constructor(sensor: string, hass: HomeAssistant, config: FormulaOneCardConfig) { super(sensor, hass, config); } + + cardSize(): number { + throw new Error("Method not implemented."); + } renderStandingRow(standing: ConstructorStanding): HTMLTemplateResult { return html` diff --git a/src/cards/driver-standings.ts b/src/cards/driver-standings.ts index af9957a..17b9e9e 100644 --- a/src/cards/driver-standings.ts +++ b/src/cards/driver-standings.ts @@ -10,6 +10,10 @@ export default class DriverStandings extends BaseCard { constructor(sensor: string, hass: HomeAssistant, config: FormulaOneCardConfig) { super(sensor, hass, config); } + + cardSize(): number { + throw new Error("Method not implemented."); + } getCountryFlag = (nationality: string) => { const country = countries.filter(x => x.Nationality === nationality)[0].Country; diff --git a/src/cards/last-result.ts b/src/cards/last-result.ts index 021bca1..bdaa40b 100644 --- a/src/cards/last-result.ts +++ b/src/cards/last-result.ts @@ -8,7 +8,11 @@ export default class LastResult extends BaseCard { constructor(sensor: string, hass: HomeAssistant, config: FormulaOneCardConfig) { super(sensor, hass, config); - } + } + + cardSize(): number { + throw new Error("Method not implemented."); + } renderResultRow(result: Result): HTMLTemplateResult { diff --git a/src/cards/next-race.ts b/src/cards/next-race.ts index 343114a..ec559f8 100644 --- a/src/cards/next-race.ts +++ b/src/cards/next-race.ts @@ -16,7 +16,11 @@ export default class NextRace extends BaseCard { const sensorEntity = this.hass.states[this.sensor_entity_id]; this.next_race = sensorEntity.attributes['next_race'] as Race; - } + } + + cardSize(): number { + throw new Error("Method not implemented."); + } renderHeader(): HTMLTemplateResult { diff --git a/src/cards/schedule.ts b/src/cards/schedule.ts index 18a7600..2430da8 100644 --- a/src/cards/schedule.ts +++ b/src/cards/schedule.ts @@ -14,7 +14,11 @@ export default class Schedule extends BaseCard { const sensorEntity = this.hass.states[this.sensor_entity_id]; this.next_race = sensorEntity.attributes['next_race'] as Race; - } + } + + cardSize(): number { + throw new Error("Method not implemented."); + } renderSeasonEnded(): HTMLTemplateResult { return html`
Season is over. See you next year!
`; diff --git a/src/index.ts b/src/index.ts index 2ab9822..40df687 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,6 +10,7 @@ import DriverStandings from './cards/driver-standings'; import Schedule from './cards/schedule'; import NextRace from './cards/next-race'; import LastResult from './cards/last-result'; +import { BaseCard } from './cards/base-card'; console.info( `%c FORMULAONE-CARD %c ${packageJson.version}`, @@ -31,6 +32,7 @@ console.info( export default class FormulaOneCard extends LitElement { @property() _hass?: HomeAssistant; @property() config?: FormulaOneCardConfig; + @property() card: BaseCard; setConfig(config: FormulaOneCardConfig) { @@ -54,18 +56,26 @@ export default class FormulaOneCard extends LitElement { } renderCardType(): HTMLTemplateResult { + let card: BaseCard; switch(this.config.card_type) { case FormulaOneCardType.ConstructorStandings: - return new ConstructorStandings(this.config.sensor, this._hass, this.config).render(); + card = new ConstructorStandings(this.config.sensor, this._hass, this.config); + break; case FormulaOneCardType.DriverStandings: - return new DriverStandings(this.config.sensor, this._hass, this.config).render(); + card = new DriverStandings(this.config.sensor, this._hass, this.config); + break; case FormulaOneCardType.Schedule: - return new Schedule(this.config.sensor, this._hass, this.config).render(); + card = new Schedule(this.config.sensor, this._hass, this.config); + break; case FormulaOneCardType.NextRace: - return new NextRace(this.config.sensor, this._hass, this.config).render(); + card = new NextRace(this.config.sensor, this._hass, this.config); + break; case FormulaOneCardType.LastResult: - return new LastResult(this.config.sensor, this._hass, this.config).render(); + card = new LastResult(this.config.sensor, this._hass, this.config); + break; } + + return card.render(); } render() : HTMLTemplateResult { @@ -82,4 +92,8 @@ export default class FormulaOneCard extends LitElement { return html`${error.toString()}`; } } + + getCardSize() { + return this.card.cardSize(); + } } \ No newline at end of file From 97684a462e6e648e8d2383d3225081f16725b769 Mon Sep 17 00:00:00 2001 From: Marco Kreeft Date: Sat, 24 Dec 2022 21:33:49 +0100 Subject: [PATCH 2/2] Added cardsize for correct layout --- formulaone-card.js | 18 ++++++------- formulaone-card.js.gz | Bin 19743 -> 19824 bytes package-lock.json | 4 +-- package.json | 2 +- src/cards/constructor-standings.ts | 9 +++++-- src/cards/driver-standings.ts | 7 ++++- src/cards/last-result.ts | 7 ++++- src/cards/next-race.ts | 7 ++++- src/cards/schedule.ts | 7 ++++- src/index.ts | 13 +++++---- tests/cards/constructor-standings.test.ts | 30 +++++++++++++++++++++ tests/cards/driver-standings.test.ts | 30 +++++++++++++++++++++ tests/cards/last-result.test.ts | 31 ++++++++++++++++++++++ tests/cards/next-race.test.ts | 21 +++++++++++++++ tests/cards/schedule.test.ts | 30 +++++++++++++++++++++ tests/index.test.ts | 21 +++++++++++++++ 16 files changed, 212 insertions(+), 25 deletions(-) diff --git a/formulaone-card.js b/formulaone-card.js index 6c3caef..0c4d128 100644 --- a/formulaone-card.js +++ b/formulaone-card.js @@ -1,5 +1,5 @@ /*! For license information please see formulaone-card.js.LICENSE.txt */ -(()=>{"use strict";var t={197:(t,e,i)=>{i.r(e),i.d(e,{DEFAULT_DOMAIN_ICON:()=>J,DEFAULT_PANEL:()=>Q,DEFAULT_VIEW_ENTITY_ID:()=>st,DOMAINS_HIDE_MORE_INFO:()=>et,DOMAINS_MORE_INFO_NO_HISTORY:()=>it,DOMAINS_TOGGLE:()=>rt,DOMAINS_WITH_CARD:()=>X,DOMAINS_WITH_MORE_INFO:()=>tt,NumberFormat:()=>n,STATES_OFF:()=>nt,TimeFormat:()=>r,UNIT_C:()=>at,UNIT_F:()=>ot,applyThemesOnElement:()=>F,computeCardSize:()=>L,computeDomain:()=>B,computeEntity:()=>H,computeRTL:()=>j,computeRTLDirection:()=>z,computeStateDisplay:()=>Z,computeStateDomain:()=>K,createThing:()=>dt,debounce:()=>ht,domainIcon:()=>yt,evaluateFilter:()=>pt,fireEvent:()=>lt,fixedIcons:()=>mt,formatDate:()=>c,formatDateMonth:()=>v,formatDateMonthYear:()=>f,formatDateNumeric:()=>h,formatDateShort:()=>y,formatDateTime:()=>w,formatDateTimeNumeric:()=>O,formatDateTimeWithSeconds:()=>$,formatDateWeekday:()=>l,formatDateYear:()=>C,formatNumber:()=>V,formatTime:()=>E,formatTimeWeekday:()=>D,formatTimeWithSeconds:()=>T,forwardHaptic:()=>ft,getLovelace:()=>Ot,handleAction:()=>bt,handleActionConfig:()=>Ct,handleClick:()=>St,hasAction:()=>wt,hasConfigOrEntityChanged:()=>Nt,hasDoubleClick:()=>$t,isNumericState:()=>W,navigate:()=>gt,numberFormatToLocale:()=>G,relativeTime:()=>M,round:()=>q,stateIcon:()=>xt,timerTimeRemaining:()=>R,toggleEntity:()=>_t,turnOnOffEntities:()=>At,turnOnOffEntity:()=>vt});var n,r,a,o=function(){return o=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0)return{value:Math.round(h),unit:"year"};var m=12*h+c.getMonth()-d.getMonth();if(Math.round(Math.abs(m))>0)return{value:Math.round(m),unit:"month"};var y=r/604800;return{value:Math.round(y),unit:"week"}}(t,i);return n?function(t){return new Intl.RelativeTimeFormat(t.language,{numeric:"auto"})}(e).format(r.value,r.unit):Intl.NumberFormat(e.language,{style:"unit",unit:r.unit,unitDisplay:"long"}).format(Math.abs(r.value))};function R(t){var e,i=3600*(e=t.attributes.remaining.split(":").map(Number))[0]+60*e[1]+e[2];if("active"===t.state){var n=(new Date).getTime(),r=new Date(t.last_changed).getTime();i=Math.max(i-(n-r)/1e3,0)}return i}function U(){return(U=Object.assign||function(t){for(var e=1;e-1?t.split(".")[1].length:0;i.minimumFractionDigits=n,i.maximumFractionDigits=n}return i},Z=function(t,e,i,n){var r=void 0!==n?n:e.state;if("unknown"===r||"unavailable"===r)return t("state.default."+r);if(W(e)){if("monetary"===e.attributes.device_class)try{return V(r,i,{style:"currency",currency:e.attributes.unit_of_measurement})}catch(t){}return V(r,i)+(e.attributes.unit_of_measurement?" "+e.attributes.unit_of_measurement:"")}var a=K(e);if("input_datetime"===a){var o;if(void 0===n)return e.attributes.has_date&&e.attributes.has_time?(o=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day,e.attributes.hour,e.attributes.minute),w(o,i)):e.attributes.has_date?(o=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day),c(o,i)):e.attributes.has_time?((o=new Date).setHours(e.attributes.hour,e.attributes.minute),E(o,i)):e.state;try{var s=n.split(" ");if(2===s.length)return w(new Date(s.join("T")),i);if(1===s.length){if(n.includes("-"))return c(new Date(n+"T00:00"),i);if(n.includes(":")){var l=new Date;return E(new Date(l.toISOString().split("T")[0]+"T"+n),i)}}return n}catch(t){return n}}return"humidifier"===a&&"on"===r&&e.attributes.humidity?e.attributes.humidity+" %":"counter"===a||"number"===a||"input_number"===a?V(r,i):e.attributes.device_class&&t("component."+a+".state."+e.attributes.device_class+"."+r)||t("component."+a+".state._."+r)||r},J="mdi:bookmark",Q="lovelace",X=["climate","cover","configurator","input_select","input_number","input_text","lock","media_player","scene","script","timer","vacuum","water_heater","weblink"],tt=["alarm_control_panel","automation","camera","climate","configurator","cover","fan","group","history_graph","input_datetime","light","lock","media_player","script","sun","updater","vacuum","water_heater","weather"],et=["input_number","input_select","input_text","scene","weblink"],it=["camera","configurator","history_graph","scene"],nt=["closed","locked","off"],rt=new Set(["fan","input_boolean","light","switch","group","automation"]),at="°C",ot="°F",st="group.default_view",lt=function(t,e,i,n){n=n||{},i=null==i?{}:i;var r=new Event(e,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return r.detail=i,t.dispatchEvent(r),r},ut=new Set(["call-service","divider","section","weblink","cast","select"]),ct={alert:"toggle",automation:"toggle",climate:"climate",cover:"cover",fan:"toggle",group:"group",input_boolean:"toggle",input_number:"input-number",input_select:"input-select",input_text:"input-text",light:"toggle",lock:"lock",media_player:"media-player",remote:"toggle",scene:"scene",script:"script",sensor:"sensor",timer:"timer",switch:"toggle",vacuum:"toggle",water_heater:"climate",input_datetime:"input-datetime"},dt=function(t,e){void 0===e&&(e=!1);var i=function(t,e){return n("hui-error-card",{type:"error",error:t,config:e})},n=function(t,e){var n=window.document.createElement(t);try{if(!n.setConfig)return;n.setConfig(e)}catch(n){return console.error(t,n),i(n.message,e)}return n};if(!t||"object"!=typeof t||!e&&!t.type)return i("No type defined",t);var r=t.type;if(r&&r.startsWith("custom:"))r=r.substr("custom:".length);else if(e)if(ut.has(r))r="hui-"+r+"-row";else{if(!t.entity)return i("Invalid config given.",t);var a=t.entity.split(".",1)[0];r="hui-"+(ct[a]||"text")+"-entity-row"}else r="hui-"+r+"-card";if(customElements.get(r))return n(r,t);var o=i("Custom element doesn't exist: "+t.type+".",t);o.style.display="None";var s=setTimeout((function(){o.style.display=""}),2e3);return customElements.whenDefined(t.type).then((function(){clearTimeout(s),lt(o,"ll-rebuild",{},o)})),o},ht=function(t,e,i){var n;return void 0===i&&(i=!1),function(){var r=[].slice.call(arguments),a=this,o=function(){n=null,i||t.apply(a,r)},s=i&&!n;clearTimeout(n),n=setTimeout(o,e),s&&t.apply(a,r)}},mt={alert:"mdi:alert",automation:"mdi:playlist-play",calendar:"mdi:calendar",camera:"mdi:video",climate:"mdi:thermostat",configurator:"mdi:settings",conversation:"mdi:text-to-speech",device_tracker:"mdi:account",fan:"mdi:fan",group:"mdi:google-circles-communities",history_graph:"mdi:chart-line",homeassistant:"mdi:home-assistant",homekit:"mdi:home-automation",image_processing:"mdi:image-filter-frames",input_boolean:"mdi:drawing",input_datetime:"mdi:calendar-clock",input_number:"mdi:ray-vertex",input_select:"mdi:format-list-bulleted",input_text:"mdi:textbox",light:"mdi:lightbulb",mailbox:"mdi:mailbox",notify:"mdi:comment-alert",person:"mdi:account",plant:"mdi:flower",proximity:"mdi:apple-safari",remote:"mdi:remote",scene:"mdi:google-pages",script:"mdi:file-document",sensor:"mdi:eye",simple_alarm:"mdi:bell",sun:"mdi:white-balance-sunny",switch:"mdi:flash",timer:"mdi:timer",updater:"mdi:cloud-upload",vacuum:"mdi:robot-vacuum",water_heater:"mdi:thermometer",weblink:"mdi:open-in-new"};function yt(t,e){if(t in mt)return mt[t];switch(t){case"alarm_control_panel":switch(e){case"armed_home":return"mdi:bell-plus";case"armed_night":return"mdi:bell-sleep";case"disarmed":return"mdi:bell-outline";case"triggered":return"mdi:bell-ring";default:return"mdi:bell"}case"binary_sensor":return e&&"off"===e?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"cover":return"closed"===e?"mdi:window-closed":"mdi:window-open";case"lock":return e&&"unlocked"===e?"mdi:lock-open":"mdi:lock";case"media_player":return e&&"off"!==e&&"idle"!==e?"mdi:cast-connected":"mdi:cast";case"zwave":switch(e){case"dead":return"mdi:emoticon-dead";case"sleeping":return"mdi:sleep";case"initializing":return"mdi:timer-sand";default:return"mdi:z-wave"}default:return console.warn("Unable to find icon for domain "+t+" ("+e+")"),"mdi:bookmark"}}var pt=function(t,e){var i=e.value||e,n=e.attribute?t.attributes[e.attribute]:t.state;switch(e.operator||"=="){case"==":return n===i;case"<=":return n<=i;case"<":return n=":return n>=i;case">":return n>i;case"!=":return n!==i;case"regex":return n.match(i);default:return!1}},ft=function(t){lt(window,"haptic",t)},gt=function(t,e,i){void 0===i&&(i=!1),i?history.replaceState(null,"",e):history.pushState(null,"",e),lt(window,"location-changed",{replace:i})},vt=function(t,e,i){void 0===i&&(i=!0);var n,r=B(e),a="group"===r?"homeassistant":r;switch(r){case"lock":n=i?"unlock":"lock";break;case"cover":n=i?"open_cover":"close_cover";break;default:n=i?"turn_on":"turn_off"}return t.callService(a,n,{entity_id:e})},_t=function(t,e){var i=nt.includes(t.states[e].state);return vt(t,e,i)},Ct=function(t,e,i,n){if(n||(n={action:"more-info"}),!n.confirmation||n.confirmation.exemptions&&n.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||(ft("warning"),confirm(n.confirmation.text||"Are you sure you want to "+n.action+"?")))switch(n.action){case"more-info":(i.entity||i.camera_image)&<(t,"hass-more-info",{entityId:i.entity?i.entity:i.camera_image});break;case"navigate":n.navigation_path&>(0,n.navigation_path);break;case"url":n.url_path&&window.open(n.url_path);break;case"toggle":i.entity&&(_t(e,i.entity),ft("success"));break;case"call-service":if(!n.service)return void ft("failure");var r=n.service.split(".",2);e.callService(r[0],r[1],n.service_data,n.target),ft("success");break;case"fire-dom-event":lt(t,"ll-custom",n)}},bt=function(t,e,i,n){var r;"double_tap"===n&&i.double_tap_action?r=i.double_tap_action:"hold"===n&&i.hold_action?r=i.hold_action:"tap"===n&&i.tap_action&&(r=i.tap_action),Ct(t,e,i,r)},St=function(t,e,i,n,r){var a;if(r&&i.double_tap_action?a=i.double_tap_action:n&&i.hold_action?a=i.hold_action:!n&&i.tap_action&&(a=i.tap_action),a||(a={action:"more-info"}),!a.confirmation||a.confirmation.exemptions&&a.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||confirm(a.confirmation.text||"Are you sure you want to "+a.action+"?"))switch(a.action){case"more-info":(a.entity||i.entity||i.camera_image)&&(lt(t,"hass-more-info",{entityId:a.entity?a.entity:i.entity?i.entity:i.camera_image}),a.haptic&&ft(a.haptic));break;case"navigate":a.navigation_path&&(gt(0,a.navigation_path),a.haptic&&ft(a.haptic));break;case"url":a.url_path&&window.open(a.url_path),a.haptic&&ft(a.haptic);break;case"toggle":i.entity&&(_t(e,i.entity),a.haptic&&ft(a.haptic));break;case"call-service":if(!a.service)return;var o=a.service.split(".",2),s=o[0],l=o[1],u=U({},a.service_data);"entity"===u.entity_id&&(u.entity_id=i.entity),e.callService(s,l,u,a.target),a.haptic&&ft(a.haptic);break;case"fire-dom-event":lt(t,"ll-custom",a),a.haptic&&ft(a.haptic)}};function wt(t){return void 0!==t&&"none"!==t.action}function Nt(t,e,i){if(e.has("config")||i)return!0;if(t.config.entity){var n=e.get("hass");return!n||n.states[t.config.entity]!==t.hass.states[t.config.entity]}return!1}function $t(t){return void 0!==t&&"none"!==t.action}var At=function(t,e,i){void 0===i&&(i=!0);var n={};e.forEach((function(e){if(nt.includes(t.states[e].state)===i){var r=B(e),a=["cover","lock"].includes(r)?r:"homeassistant";a in n||(n[a]=[]),n[a].push(e)}})),Object.keys(n).forEach((function(e){var r;switch(e){case"lock":r=i?"unlock":"lock";break;case"cover":r=i?"open_cover":"close_cover";break;default:r=i?"turn_on":"turn_off"}t.callService(e,r,{entity_id:n[e]})}))},Ot=function(){var t=document.querySelector("home-assistant");if(t=(t=(t=(t=(t=(t=(t=(t=t&&t.shadowRoot)&&t.querySelector("home-assistant-main"))&&t.shadowRoot)&&t.querySelector("app-drawer-layout partial-panel-resolver"))&&t.shadowRoot||t)&&t.querySelector("ha-panel-lovelace"))&&t.shadowRoot)&&t.querySelector("hui-root")){var e=t.lovelace;return e.current_view=t.___curView,e}return null},It={humidity:"mdi:water-percent",illuminance:"mdi:brightness-5",temperature:"mdi:thermometer",pressure:"mdi:gauge",power:"mdi:flash",signal_strength:"mdi:wifi"},Et={binary_sensor:function(t,e){var i="off"===t;switch(null==e?void 0:e.attributes.device_class){case"battery":return i?"mdi:battery":"mdi:battery-outline";case"battery_charging":return i?"mdi:battery":"mdi:battery-charging";case"cold":return i?"mdi:thermometer":"mdi:snowflake";case"connectivity":return i?"mdi:server-network-off":"mdi:server-network";case"door":return i?"mdi:door-closed":"mdi:door-open";case"garage_door":return i?"mdi:garage":"mdi:garage-open";case"power":case"plug":return i?"mdi:power-plug-off":"mdi:power-plug";case"gas":case"problem":case"safety":case"tamper":return i?"mdi:check-circle":"mdi:alert-circle";case"smoke":return i?"mdi:check-circle":"mdi:smoke";case"heat":return i?"mdi:thermometer":"mdi:fire";case"light":return i?"mdi:brightness-5":"mdi:brightness-7";case"lock":return i?"mdi:lock":"mdi:lock-open";case"moisture":return i?"mdi:water-off":"mdi:water";case"motion":return i?"mdi:walk":"mdi:run";case"occupancy":case"presence":return i?"mdi:home-outline":"mdi:home";case"opening":return i?"mdi:square":"mdi:square-outline";case"running":return i?"mdi:stop":"mdi:play";case"sound":return i?"mdi:music-note-off":"mdi:music-note";case"update":return i?"mdi:package":"mdi:package-up";case"vibration":return i?"mdi:crop-portrait":"mdi:vibrate";case"window":return i?"mdi:window-closed":"mdi:window-open";default:return i?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},cover:function(t){var e="closed"!==t.state;switch(t.attributes.device_class){case"garage":return e?"mdi:garage-open":"mdi:garage";case"door":return e?"mdi:door-open":"mdi:door-closed";case"shutter":return e?"mdi:window-shutter-open":"mdi:window-shutter";case"blind":return e?"mdi:blinds-open":"mdi:blinds";case"window":return e?"mdi:window-open":"mdi:window-closed";default:return yt("cover",t.state)}},sensor:function(t){var e=t.attributes.device_class;if(e&&e in It)return It[e];if("battery"===e){var i=Number(t.state);if(isNaN(i))return"mdi:battery-unknown";var n=10*Math.round(i/10);return n>=100?"mdi:battery":n<=0?"mdi:battery-alert":"hass:battery-"+n}var r=t.attributes.unit_of_measurement;return"°C"===r||"°F"===r?"mdi:thermometer":yt("sensor")},input_datetime:function(t){return t.attributes.has_date?t.attributes.has_time?yt("input_datetime"):"mdi:calendar":"mdi:clock"}},xt=function(t){if(!t)return"mdi:bookmark";if(t.attributes.icon)return t.attributes.icon;var e=B(t.entity_id);return e in Et?Et[e](t):yt(e,t.state)}},243:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BaseCard=void 0,e.BaseCard=class{constructor(t,e,i){this.sensor_entity_id=t,this.hass=e,this.config=i,this.sensor=this.getSensor()}getSensor(){const t=this.hass.states[this.sensor_entity_id];return{last_update:new Date(t.attributes.last_update),data:t.attributes.data}}}},521:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(243);class a extends r.BaseCard{constructor(t,e,i){super(t,e,i)}renderStandingRow(t){return n.html` +(()=>{"use strict";var t={197:(t,e,i)=>{i.r(e),i.d(e,{DEFAULT_DOMAIN_ICON:()=>J,DEFAULT_PANEL:()=>Q,DEFAULT_VIEW_ENTITY_ID:()=>st,DOMAINS_HIDE_MORE_INFO:()=>et,DOMAINS_MORE_INFO_NO_HISTORY:()=>it,DOMAINS_TOGGLE:()=>rt,DOMAINS_WITH_CARD:()=>X,DOMAINS_WITH_MORE_INFO:()=>tt,NumberFormat:()=>n,STATES_OFF:()=>nt,TimeFormat:()=>r,UNIT_C:()=>at,UNIT_F:()=>ot,applyThemesOnElement:()=>F,computeCardSize:()=>L,computeDomain:()=>B,computeEntity:()=>H,computeRTL:()=>j,computeRTLDirection:()=>z,computeStateDisplay:()=>Z,computeStateDomain:()=>K,createThing:()=>dt,debounce:()=>ht,domainIcon:()=>yt,evaluateFilter:()=>pt,fireEvent:()=>lt,fixedIcons:()=>mt,formatDate:()=>u,formatDateMonth:()=>v,formatDateMonthYear:()=>f,formatDateNumeric:()=>h,formatDateShort:()=>y,formatDateTime:()=>w,formatDateTimeNumeric:()=>O,formatDateTimeWithSeconds:()=>$,formatDateWeekday:()=>l,formatDateYear:()=>C,formatNumber:()=>V,formatTime:()=>E,formatTimeWeekday:()=>D,formatTimeWithSeconds:()=>k,forwardHaptic:()=>ft,getLovelace:()=>Ot,handleAction:()=>bt,handleActionConfig:()=>Ct,handleClick:()=>St,hasAction:()=>wt,hasConfigOrEntityChanged:()=>Nt,hasDoubleClick:()=>$t,isNumericState:()=>W,navigate:()=>gt,numberFormatToLocale:()=>G,relativeTime:()=>M,round:()=>q,stateIcon:()=>xt,timerTimeRemaining:()=>R,toggleEntity:()=>_t,turnOnOffEntities:()=>At,turnOnOffEntity:()=>vt});var n,r,a,o=function(){return o=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0)return{value:Math.round(h),unit:"year"};var m=12*h+u.getMonth()-d.getMonth();if(Math.round(Math.abs(m))>0)return{value:Math.round(m),unit:"month"};var y=r/604800;return{value:Math.round(y),unit:"week"}}(t,i);return n?function(t){return new Intl.RelativeTimeFormat(t.language,{numeric:"auto"})}(e).format(r.value,r.unit):Intl.NumberFormat(e.language,{style:"unit",unit:r.unit,unitDisplay:"long"}).format(Math.abs(r.value))};function R(t){var e,i=3600*(e=t.attributes.remaining.split(":").map(Number))[0]+60*e[1]+e[2];if("active"===t.state){var n=(new Date).getTime(),r=new Date(t.last_changed).getTime();i=Math.max(i-(n-r)/1e3,0)}return i}function U(){return(U=Object.assign||function(t){for(var e=1;e-1?t.split(".")[1].length:0;i.minimumFractionDigits=n,i.maximumFractionDigits=n}return i},Z=function(t,e,i,n){var r=void 0!==n?n:e.state;if("unknown"===r||"unavailable"===r)return t("state.default."+r);if(W(e)){if("monetary"===e.attributes.device_class)try{return V(r,i,{style:"currency",currency:e.attributes.unit_of_measurement})}catch(t){}return V(r,i)+(e.attributes.unit_of_measurement?" "+e.attributes.unit_of_measurement:"")}var a=K(e);if("input_datetime"===a){var o;if(void 0===n)return e.attributes.has_date&&e.attributes.has_time?(o=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day,e.attributes.hour,e.attributes.minute),w(o,i)):e.attributes.has_date?(o=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day),u(o,i)):e.attributes.has_time?((o=new Date).setHours(e.attributes.hour,e.attributes.minute),E(o,i)):e.state;try{var s=n.split(" ");if(2===s.length)return w(new Date(s.join("T")),i);if(1===s.length){if(n.includes("-"))return u(new Date(n+"T00:00"),i);if(n.includes(":")){var l=new Date;return E(new Date(l.toISOString().split("T")[0]+"T"+n),i)}}return n}catch(t){return n}}return"humidifier"===a&&"on"===r&&e.attributes.humidity?e.attributes.humidity+" %":"counter"===a||"number"===a||"input_number"===a?V(r,i):e.attributes.device_class&&t("component."+a+".state."+e.attributes.device_class+"."+r)||t("component."+a+".state._."+r)||r},J="mdi:bookmark",Q="lovelace",X=["climate","cover","configurator","input_select","input_number","input_text","lock","media_player","scene","script","timer","vacuum","water_heater","weblink"],tt=["alarm_control_panel","automation","camera","climate","configurator","cover","fan","group","history_graph","input_datetime","light","lock","media_player","script","sun","updater","vacuum","water_heater","weather"],et=["input_number","input_select","input_text","scene","weblink"],it=["camera","configurator","history_graph","scene"],nt=["closed","locked","off"],rt=new Set(["fan","input_boolean","light","switch","group","automation"]),at="°C",ot="°F",st="group.default_view",lt=function(t,e,i,n){n=n||{},i=null==i?{}:i;var r=new Event(e,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return r.detail=i,t.dispatchEvent(r),r},ct=new Set(["call-service","divider","section","weblink","cast","select"]),ut={alert:"toggle",automation:"toggle",climate:"climate",cover:"cover",fan:"toggle",group:"group",input_boolean:"toggle",input_number:"input-number",input_select:"input-select",input_text:"input-text",light:"toggle",lock:"lock",media_player:"media-player",remote:"toggle",scene:"scene",script:"script",sensor:"sensor",timer:"timer",switch:"toggle",vacuum:"toggle",water_heater:"climate",input_datetime:"input-datetime"},dt=function(t,e){void 0===e&&(e=!1);var i=function(t,e){return n("hui-error-card",{type:"error",error:t,config:e})},n=function(t,e){var n=window.document.createElement(t);try{if(!n.setConfig)return;n.setConfig(e)}catch(n){return console.error(t,n),i(n.message,e)}return n};if(!t||"object"!=typeof t||!e&&!t.type)return i("No type defined",t);var r=t.type;if(r&&r.startsWith("custom:"))r=r.substr("custom:".length);else if(e)if(ct.has(r))r="hui-"+r+"-row";else{if(!t.entity)return i("Invalid config given.",t);var a=t.entity.split(".",1)[0];r="hui-"+(ut[a]||"text")+"-entity-row"}else r="hui-"+r+"-card";if(customElements.get(r))return n(r,t);var o=i("Custom element doesn't exist: "+t.type+".",t);o.style.display="None";var s=setTimeout((function(){o.style.display=""}),2e3);return customElements.whenDefined(t.type).then((function(){clearTimeout(s),lt(o,"ll-rebuild",{},o)})),o},ht=function(t,e,i){var n;return void 0===i&&(i=!1),function(){var r=[].slice.call(arguments),a=this,o=function(){n=null,i||t.apply(a,r)},s=i&&!n;clearTimeout(n),n=setTimeout(o,e),s&&t.apply(a,r)}},mt={alert:"mdi:alert",automation:"mdi:playlist-play",calendar:"mdi:calendar",camera:"mdi:video",climate:"mdi:thermostat",configurator:"mdi:settings",conversation:"mdi:text-to-speech",device_tracker:"mdi:account",fan:"mdi:fan",group:"mdi:google-circles-communities",history_graph:"mdi:chart-line",homeassistant:"mdi:home-assistant",homekit:"mdi:home-automation",image_processing:"mdi:image-filter-frames",input_boolean:"mdi:drawing",input_datetime:"mdi:calendar-clock",input_number:"mdi:ray-vertex",input_select:"mdi:format-list-bulleted",input_text:"mdi:textbox",light:"mdi:lightbulb",mailbox:"mdi:mailbox",notify:"mdi:comment-alert",person:"mdi:account",plant:"mdi:flower",proximity:"mdi:apple-safari",remote:"mdi:remote",scene:"mdi:google-pages",script:"mdi:file-document",sensor:"mdi:eye",simple_alarm:"mdi:bell",sun:"mdi:white-balance-sunny",switch:"mdi:flash",timer:"mdi:timer",updater:"mdi:cloud-upload",vacuum:"mdi:robot-vacuum",water_heater:"mdi:thermometer",weblink:"mdi:open-in-new"};function yt(t,e){if(t in mt)return mt[t];switch(t){case"alarm_control_panel":switch(e){case"armed_home":return"mdi:bell-plus";case"armed_night":return"mdi:bell-sleep";case"disarmed":return"mdi:bell-outline";case"triggered":return"mdi:bell-ring";default:return"mdi:bell"}case"binary_sensor":return e&&"off"===e?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"cover":return"closed"===e?"mdi:window-closed":"mdi:window-open";case"lock":return e&&"unlocked"===e?"mdi:lock-open":"mdi:lock";case"media_player":return e&&"off"!==e&&"idle"!==e?"mdi:cast-connected":"mdi:cast";case"zwave":switch(e){case"dead":return"mdi:emoticon-dead";case"sleeping":return"mdi:sleep";case"initializing":return"mdi:timer-sand";default:return"mdi:z-wave"}default:return console.warn("Unable to find icon for domain "+t+" ("+e+")"),"mdi:bookmark"}}var pt=function(t,e){var i=e.value||e,n=e.attribute?t.attributes[e.attribute]:t.state;switch(e.operator||"=="){case"==":return n===i;case"<=":return n<=i;case"<":return n=":return n>=i;case">":return n>i;case"!=":return n!==i;case"regex":return n.match(i);default:return!1}},ft=function(t){lt(window,"haptic",t)},gt=function(t,e,i){void 0===i&&(i=!1),i?history.replaceState(null,"",e):history.pushState(null,"",e),lt(window,"location-changed",{replace:i})},vt=function(t,e,i){void 0===i&&(i=!0);var n,r=B(e),a="group"===r?"homeassistant":r;switch(r){case"lock":n=i?"unlock":"lock";break;case"cover":n=i?"open_cover":"close_cover";break;default:n=i?"turn_on":"turn_off"}return t.callService(a,n,{entity_id:e})},_t=function(t,e){var i=nt.includes(t.states[e].state);return vt(t,e,i)},Ct=function(t,e,i,n){if(n||(n={action:"more-info"}),!n.confirmation||n.confirmation.exemptions&&n.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||(ft("warning"),confirm(n.confirmation.text||"Are you sure you want to "+n.action+"?")))switch(n.action){case"more-info":(i.entity||i.camera_image)&<(t,"hass-more-info",{entityId:i.entity?i.entity:i.camera_image});break;case"navigate":n.navigation_path&>(0,n.navigation_path);break;case"url":n.url_path&&window.open(n.url_path);break;case"toggle":i.entity&&(_t(e,i.entity),ft("success"));break;case"call-service":if(!n.service)return void ft("failure");var r=n.service.split(".",2);e.callService(r[0],r[1],n.service_data,n.target),ft("success");break;case"fire-dom-event":lt(t,"ll-custom",n)}},bt=function(t,e,i,n){var r;"double_tap"===n&&i.double_tap_action?r=i.double_tap_action:"hold"===n&&i.hold_action?r=i.hold_action:"tap"===n&&i.tap_action&&(r=i.tap_action),Ct(t,e,i,r)},St=function(t,e,i,n,r){var a;if(r&&i.double_tap_action?a=i.double_tap_action:n&&i.hold_action?a=i.hold_action:!n&&i.tap_action&&(a=i.tap_action),a||(a={action:"more-info"}),!a.confirmation||a.confirmation.exemptions&&a.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||confirm(a.confirmation.text||"Are you sure you want to "+a.action+"?"))switch(a.action){case"more-info":(a.entity||i.entity||i.camera_image)&&(lt(t,"hass-more-info",{entityId:a.entity?a.entity:i.entity?i.entity:i.camera_image}),a.haptic&&ft(a.haptic));break;case"navigate":a.navigation_path&&(gt(0,a.navigation_path),a.haptic&&ft(a.haptic));break;case"url":a.url_path&&window.open(a.url_path),a.haptic&&ft(a.haptic);break;case"toggle":i.entity&&(_t(e,i.entity),a.haptic&&ft(a.haptic));break;case"call-service":if(!a.service)return;var o=a.service.split(".",2),s=o[0],l=o[1],c=U({},a.service_data);"entity"===c.entity_id&&(c.entity_id=i.entity),e.callService(s,l,c,a.target),a.haptic&&ft(a.haptic);break;case"fire-dom-event":lt(t,"ll-custom",a),a.haptic&&ft(a.haptic)}};function wt(t){return void 0!==t&&"none"!==t.action}function Nt(t,e,i){if(e.has("config")||i)return!0;if(t.config.entity){var n=e.get("hass");return!n||n.states[t.config.entity]!==t.hass.states[t.config.entity]}return!1}function $t(t){return void 0!==t&&"none"!==t.action}var At=function(t,e,i){void 0===i&&(i=!0);var n={};e.forEach((function(e){if(nt.includes(t.states[e].state)===i){var r=B(e),a=["cover","lock"].includes(r)?r:"homeassistant";a in n||(n[a]=[]),n[a].push(e)}})),Object.keys(n).forEach((function(e){var r;switch(e){case"lock":r=i?"unlock":"lock";break;case"cover":r=i?"open_cover":"close_cover";break;default:r=i?"turn_on":"turn_off"}t.callService(e,r,{entity_id:n[e]})}))},Ot=function(){var t=document.querySelector("home-assistant");if(t=(t=(t=(t=(t=(t=(t=(t=t&&t.shadowRoot)&&t.querySelector("home-assistant-main"))&&t.shadowRoot)&&t.querySelector("app-drawer-layout partial-panel-resolver"))&&t.shadowRoot||t)&&t.querySelector("ha-panel-lovelace"))&&t.shadowRoot)&&t.querySelector("hui-root")){var e=t.lovelace;return e.current_view=t.___curView,e}return null},It={humidity:"mdi:water-percent",illuminance:"mdi:brightness-5",temperature:"mdi:thermometer",pressure:"mdi:gauge",power:"mdi:flash",signal_strength:"mdi:wifi"},Et={binary_sensor:function(t,e){var i="off"===t;switch(null==e?void 0:e.attributes.device_class){case"battery":return i?"mdi:battery":"mdi:battery-outline";case"battery_charging":return i?"mdi:battery":"mdi:battery-charging";case"cold":return i?"mdi:thermometer":"mdi:snowflake";case"connectivity":return i?"mdi:server-network-off":"mdi:server-network";case"door":return i?"mdi:door-closed":"mdi:door-open";case"garage_door":return i?"mdi:garage":"mdi:garage-open";case"power":case"plug":return i?"mdi:power-plug-off":"mdi:power-plug";case"gas":case"problem":case"safety":case"tamper":return i?"mdi:check-circle":"mdi:alert-circle";case"smoke":return i?"mdi:check-circle":"mdi:smoke";case"heat":return i?"mdi:thermometer":"mdi:fire";case"light":return i?"mdi:brightness-5":"mdi:brightness-7";case"lock":return i?"mdi:lock":"mdi:lock-open";case"moisture":return i?"mdi:water-off":"mdi:water";case"motion":return i?"mdi:walk":"mdi:run";case"occupancy":case"presence":return i?"mdi:home-outline":"mdi:home";case"opening":return i?"mdi:square":"mdi:square-outline";case"running":return i?"mdi:stop":"mdi:play";case"sound":return i?"mdi:music-note-off":"mdi:music-note";case"update":return i?"mdi:package":"mdi:package-up";case"vibration":return i?"mdi:crop-portrait":"mdi:vibrate";case"window":return i?"mdi:window-closed":"mdi:window-open";default:return i?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},cover:function(t){var e="closed"!==t.state;switch(t.attributes.device_class){case"garage":return e?"mdi:garage-open":"mdi:garage";case"door":return e?"mdi:door-open":"mdi:door-closed";case"shutter":return e?"mdi:window-shutter-open":"mdi:window-shutter";case"blind":return e?"mdi:blinds-open":"mdi:blinds";case"window":return e?"mdi:window-open":"mdi:window-closed";default:return yt("cover",t.state)}},sensor:function(t){var e=t.attributes.device_class;if(e&&e in It)return It[e];if("battery"===e){var i=Number(t.state);if(isNaN(i))return"mdi:battery-unknown";var n=10*Math.round(i/10);return n>=100?"mdi:battery":n<=0?"mdi:battery-alert":"hass:battery-"+n}var r=t.attributes.unit_of_measurement;return"°C"===r||"°F"===r?"mdi:thermometer":yt("sensor")},input_datetime:function(t){return t.attributes.has_date?t.attributes.has_time?yt("input_datetime"):"mdi:calendar":"mdi:clock"}},xt=function(t){if(!t)return"mdi:bookmark";if(t.attributes.icon)return t.attributes.icon;var e=B(t.entity_id);return e in Et?Et[e](t):yt(e,t.state)}},243:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BaseCard=void 0,e.BaseCard=class{constructor(t,e,i){this.sensor_entity_id=t,this.hass=e,this.config=i,this.sensor=this.getSensor()}getSensor(){const t=this.hass.states[this.sensor_entity_id];return{last_update:new Date(t.attributes.last_update),data:t.attributes.data}}}},521:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(243);class a extends r.BaseCard{constructor(t,e,i){super(t,e,i)}cardSize(){const t=this.sensor.data;return t?1+(0==t.length?1:t.length/2):2}renderStandingRow(t){return n.html` ${t.position} ${t.Constructor.name} @@ -19,7 +19,7 @@ ${t.map((t=>this.renderStandingRow(t)))} - `}}e.default=a},412:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(593),a=i(243),o=i(634);class s extends a.BaseCard{constructor(t,e,i){super(t,e,i),this.getCountryFlag=t=>{const e=o.filter((e=>e.Nationality===t))[0].Country.replace(" ","-");return(0,r.getCountryFlagUrl)(e)}}renderStandingRow(t){var e,i;return n.html` + `}}e.default=a},412:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(593),a=i(243),o=i(634);class s extends a.BaseCard{constructor(t,e,i){super(t,e,i),this.getCountryFlag=t=>{const e=o.filter((e=>e.Nationality===t))[0].Country.replace(" ","-");return(0,r.getCountryFlagUrl)(e)}}cardSize(){const t=this.sensor.data;return t?1+(0==t.length?1:t.length/2):2}renderStandingRow(t){var e,i;return n.html` ${t.position} ${(null===(e=this.config.standings)||void 0===e?void 0:e.show_flag)?n.html` `:""}${t.Driver.code} @@ -42,7 +42,7 @@ ${e.map((t=>this.renderStandingRow(t)))} - `}}e.default=s},958:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(593),a=i(243);class o extends a.BaseCard{constructor(t,e,i){super(t,e,i)}renderResultRow(t){return n.html` + `}}e.default=s},958:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(593),a=i(243);class o extends a.BaseCard{constructor(t,e,i){super(t,e,i)}cardSize(){const t=this.sensor.data;return t&&t.Results?1+(0==t.Results.length?1:t.Results.length/2):2}renderResultRow(t){return n.html` ${t.position} ${(0,r.getDriverName)(t.Driver,this.config)} @@ -70,7 +70,7 @@ ${t.Results.map((t=>this.renderResultRow(t)))} - `}}e.default=o},249:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(247),a=i(347),o=i(593),s=i(243);class l extends s.BaseCard{constructor(t,e,i){super(t,e,i);const n=this.hass.states[this.sensor_entity_id];this.next_race=n.attributes.next_race}renderHeader(){const t=this.next_race.Circuit.Location.country.replace(" ","-"),e=(0,o.getCircuitName)(t),i=n.html``,r=this.config.image_clickable?n.html`${i}`:i;return n.html`

  ${this.next_race.round} : ${this.next_race.raceName}

${r}
`}renderSeasonEnded(){return n.html`
Season is over. See you next year!
`}render(){if(!this.sensor_entity_id.endsWith("_races")||void 0===this.next_race)throw new Error("Please pass the correct sensor (races)");if(!this.next_race)return this.renderSeasonEnded();const t=new Date(this.next_race.date+"T"+this.next_race.time),e=(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.FirstPractice.date+"T"+this.next_race.FirstPractice.time),this.hass.locale),i=(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.SecondPractice.date+"T"+this.next_race.SecondPractice.time),this.hass.locale),o=void 0!==this.next_race.ThirdPractice?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.ThirdPractice.date+"T"+this.next_race.ThirdPractice.time),this.hass.locale):"-",s=(0,a.formatDateTimeRaceInfo)(t,this.hass.locale),l=void 0!==this.next_race.Qualifying?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.Qualifying.date+"T"+this.next_race.Qualifying.time),this.hass.locale):"-",u=void 0!==this.next_race.Sprint?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.Sprint.date+"T"+this.next_race.Sprint.time),this.hass.locale):"-";return n.html` + `}}e.default=o},249:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(692),r=i(247),a=i(347),o=i(593),s=i(243);class l extends s.BaseCard{constructor(t,e,i){super(t,e,i);const n=this.hass.states[this.sensor_entity_id];this.next_race=n.attributes.next_race}cardSize(){return this.next_race?8:2}renderHeader(){const t=this.next_race.Circuit.Location.country.replace(" ","-"),e=(0,o.getCircuitName)(t),i=n.html``,r=this.config.image_clickable?n.html`${i}`:i;return n.html`

  ${this.next_race.round} : ${this.next_race.raceName}

${r}
`}renderSeasonEnded(){return n.html`
Season is over. See you next year!
`}render(){if(!this.sensor_entity_id.endsWith("_races")||void 0===this.next_race)throw new Error("Please pass the correct sensor (races)");if(!this.next_race)return this.renderSeasonEnded();const t=new Date(this.next_race.date+"T"+this.next_race.time),e=(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.FirstPractice.date+"T"+this.next_race.FirstPractice.time),this.hass.locale),i=(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.SecondPractice.date+"T"+this.next_race.SecondPractice.time),this.hass.locale),o=void 0!==this.next_race.ThirdPractice?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.ThirdPractice.date+"T"+this.next_race.ThirdPractice.time),this.hass.locale):"-",s=(0,a.formatDateTimeRaceInfo)(t,this.hass.locale),l=void 0!==this.next_race.Qualifying?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.Qualifying.date+"T"+this.next_race.Qualifying.time),this.hass.locale):"-",c=void 0!==this.next_race.Sprint?(0,a.formatDateTimeRaceInfo)(new Date(this.next_race.Sprint.date+"T"+this.next_race.Sprint.time),this.hass.locale):"-";return n.html` @@ -81,11 +81,11 @@ - +
Race${this.next_race.round} Practice 2${i}
Race name${this.next_race.raceName} Practice 3${o}
Circuit name${this.next_race.Circuit.circuitName} Qualifying${l}
Location${this.next_race.Circuit.Location.country} Sprint${u}
Location${this.next_race.Circuit.Location.country} Sprint${c}
City${this.next_race.Circuit.Location.locality} Race${s}
- `}}e.default=l},269:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0});const n=i(197),r=i(692),a=i(247),o=i(243);class s extends o.BaseCard{constructor(t,e,i){super(t,e,i);const n=this.hass.states[this.sensor_entity_id];this.next_race=n.attributes.next_race}renderSeasonEnded(){return r.html`
Season is over. See you next year!
`}renderLocation(t){const e=`${t.Location.locality}, ${t.Location.country}`;return this.config.location_clickable?r.html`${e}`:e}renderScheduleRow(t){const e=new Date(t.date+"T"+t.time),i=this.config.previous_race&&e{Object.defineProperty(e,"__esModule",{value:!0});const n=i(197),r=i(692),a=i(247),o=i(243);class s extends o.BaseCard{constructor(t,e,i){super(t,e,i);const n=this.hass.states[this.sensor_entity_id];this.next_race=n.attributes.next_race}cardSize(){const t=this.sensor.data;return t?1+(0==t.length?1:t.length/2):2}renderSeasonEnded(){return r.html`
Season is over. See you next year!
`}renderLocation(t){const e=`${t.Location.locality}, ${t.Location.country}`;return this.config.location_clickable?r.html`${e}`:e}renderScheduleRow(t){const e=new Date(t.date+"T"+t.time),i=this.config.previous_race&&e ${t.round} ${t.Circuit.circuitName} @@ -107,12 +107,12 @@ ${t.map((t=>this.renderScheduleRow(t)))} - `:this.renderSeasonEnded()}}e.default=s},607:function(t,e,i){var n=this&&this.__decorate||function(t,e,i,n){var r,a=arguments.length,o=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(a<3?r(o):a>3?r(e,i,o):r(e,i))||o);return a>3&&o&&Object.defineProperty(e,i,o),o};Object.defineProperty(e,"__esModule",{value:!0});const r=i(147),a=i(595),o=i(98),s=i(392),l=i(593),u=i(299),c=i(521),d=i(412),h=i(269),m=i(249),y=i(958);console.info(`%c FORMULAONE-CARD %c ${r.version}`,"color: cyan; background: black; font-weight: bold;","color: darkblue; background: white; font-weight: bold;"),window.customCards=window.customCards||[],window.customCards.push({type:"formulaone-card",name:"FormulaOne card",preview:!1,description:"Present the data of hass-formulaoneapi in a pretty way"});let p=class extends s.LitElement{setConfig(t){(0,l.checkConfig)(t),this.config=Object.assign({},t)}shouldUpdate(t){return(0,l.hasConfigOrEntitiesChanged)(this.config,t)}set hass(t){this._hass=t,this.config.hass=t}static get styles(){return u.style}renderCardType(){switch(this.config.card_type){case o.FormulaOneCardType.ConstructorStandings:return new c.default(this.config.sensor,this._hass,this.config).render();case o.FormulaOneCardType.DriverStandings:return new d.default(this.config.sensor,this._hass,this.config).render();case o.FormulaOneCardType.Schedule:return new h.default(this.config.sensor,this._hass,this.config).render();case o.FormulaOneCardType.NextRace:return new m.default(this.config.sensor,this._hass,this.config).render();case o.FormulaOneCardType.LastResult:return new y.default(this.config.sensor,this._hass,this.config).render()}}render(){if(!this._hass||!this.config)return s.html``;try{return s.html` + `:this.renderSeasonEnded()}}e.default=s},607:function(t,e,i){var n=this&&this.__decorate||function(t,e,i,n){var r,a=arguments.length,o=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(a<3?r(o):a>3?r(e,i,o):r(e,i))||o);return a>3&&o&&Object.defineProperty(e,i,o),o};Object.defineProperty(e,"__esModule",{value:!0});const r=i(147),a=i(595),o=i(98),s=i(392),l=i(593),c=i(299),u=i(521),d=i(412),h=i(269),m=i(249),y=i(958);console.info(`%c FORMULAONE-CARD %c ${r.version}`,"color: cyan; background: black; font-weight: bold;","color: darkblue; background: white; font-weight: bold;"),window.customCards=window.customCards||[],window.customCards.push({type:"formulaone-card",name:"FormulaOne card",preview:!1,description:"Present the data of hass-formulaoneapi in a pretty way"});let p=class extends s.LitElement{setConfig(t){(0,l.checkConfig)(t),this.config=Object.assign({},t)}shouldUpdate(t){return(0,l.hasConfigOrEntitiesChanged)(this.config,t)}set hass(t){this._hass=t,this.config.hass=t}static get styles(){return c.style}renderCardType(){switch(this.config.card_type){case o.FormulaOneCardType.ConstructorStandings:this.card=new u.default(this.config.sensor,this._hass,this.config);break;case o.FormulaOneCardType.DriverStandings:this.card=new d.default(this.config.sensor,this._hass,this.config);break;case o.FormulaOneCardType.Schedule:this.card=new h.default(this.config.sensor,this._hass,this.config);break;case o.FormulaOneCardType.NextRace:this.card=new m.default(this.config.sensor,this._hass,this.config);break;case o.FormulaOneCardType.LastResult:this.card=new y.default(this.config.sensor,this._hass,this.config)}return this.card.render()}render(){if(!this._hass||!this.config)return s.html``;try{return s.html` ${this.config.title?s.html`

${this.config.title}

`:""} ${this.renderCardType()}
- `}catch(t){return s.html`${t.toString()}`}}};n([(0,a.property)()],p.prototype,"_hass",void 0),n([(0,a.property)()],p.prototype,"config",void 0),p=n([(0,a.customElement)("formulaone-card")],p),e.default=p},623:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TimeFormat=e.NumberFormat=e.SECONDARY_INFO_VALUES=e.TIMESTAMP_FORMATS=e.LAST_UPDATED=e.LAST_CHANGED=e.UNAVAILABLE_STATES=e.UNKNOWN=e.UNAVAILABLE=void 0,e.UNAVAILABLE="unavailable",e.UNKNOWN="unknown",e.UNAVAILABLE_STATES=[e.UNAVAILABLE,e.UNKNOWN],e.LAST_CHANGED="last-changed",e.LAST_UPDATED="last-updated",e.TIMESTAMP_FORMATS=["relative","total","date","time","datetime"],e.SECONDARY_INFO_VALUES=["entity-id","last-changed","last-updated","last-triggered","position","tilt-position","brightness"],e.NumberFormat={language:"language",system:"system",comma_decimal:"comma_decimal",decimal_comma:"decimal_comma",space_comma:"space_comma",none:"none"},e.TimeFormat={language:"language",system:"system",am_pm:"12",twenty_four:"24"}},247:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatDateNumeric=e.formatDate=void 0,e.formatDate=(t,e,i)=>new Intl.DateTimeFormat(null!=i?i:e.language,{month:"2-digit",day:"2-digit"}).format(t),e.formatDateNumeric=(t,e,i)=>new Intl.DateTimeFormat(null!=i?i:e.language,{year:"2-digit",month:"2-digit",day:"2-digit"}).format(t)},347:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatDateTimeRaceInfo=e.formatDateTime=void 0;const n=i(100);e.formatDateTime=(t,e)=>new Intl.DateTimeFormat(e.language,{year:"numeric",month:"long",day:"numeric",hour:(0,n.useAmPm)(e)?"numeric":"2-digit",minute:"2-digit",hour12:(0,n.useAmPm)(e)}).format(t),e.formatDateTimeRaceInfo=(t,e)=>new Intl.DateTimeFormat(e.language,{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:(0,n.useAmPm)(e)}).format(t)},100:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.useAmPm=void 0;const n=i(623);e.useAmPm=t=>{if(t.time_format===n.TimeFormat.language||t.time_format===n.TimeFormat.system){const e=t.time_format===n.TimeFormat.language?t.language:void 0,i=(new Date).toLocaleString(e);return i.includes("AM")||i.includes("PM")}return t.time_format===n.TimeFormat.am_pm}},299:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.style=void 0;const n=i(392);e.style=n.css` + `}catch(t){return s.html`${t.toString()}`}}getCardSize(){return this.card.cardSize()}};n([(0,a.property)()],p.prototype,"_hass",void 0),n([(0,a.property)()],p.prototype,"config",void 0),n([(0,a.property)()],p.prototype,"card",void 0),p=n([(0,a.customElement)("formulaone-card")],p),e.default=p},623:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TimeFormat=e.NumberFormat=e.SECONDARY_INFO_VALUES=e.TIMESTAMP_FORMATS=e.LAST_UPDATED=e.LAST_CHANGED=e.UNAVAILABLE_STATES=e.UNKNOWN=e.UNAVAILABLE=void 0,e.UNAVAILABLE="unavailable",e.UNKNOWN="unknown",e.UNAVAILABLE_STATES=[e.UNAVAILABLE,e.UNKNOWN],e.LAST_CHANGED="last-changed",e.LAST_UPDATED="last-updated",e.TIMESTAMP_FORMATS=["relative","total","date","time","datetime"],e.SECONDARY_INFO_VALUES=["entity-id","last-changed","last-updated","last-triggered","position","tilt-position","brightness"],e.NumberFormat={language:"language",system:"system",comma_decimal:"comma_decimal",decimal_comma:"decimal_comma",space_comma:"space_comma",none:"none"},e.TimeFormat={language:"language",system:"system",am_pm:"12",twenty_four:"24"}},247:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatDateNumeric=e.formatDate=void 0,e.formatDate=(t,e,i)=>new Intl.DateTimeFormat(null!=i?i:e.language,{month:"2-digit",day:"2-digit"}).format(t),e.formatDateNumeric=(t,e,i)=>new Intl.DateTimeFormat(null!=i?i:e.language,{year:"2-digit",month:"2-digit",day:"2-digit"}).format(t)},347:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatDateTimeRaceInfo=e.formatDateTime=void 0;const n=i(100);e.formatDateTime=(t,e)=>new Intl.DateTimeFormat(e.language,{year:"numeric",month:"long",day:"numeric",hour:(0,n.useAmPm)(e)?"numeric":"2-digit",minute:"2-digit",hour12:(0,n.useAmPm)(e)}).format(t),e.formatDateTimeRaceInfo=(t,e)=>new Intl.DateTimeFormat(e.language,{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:(0,n.useAmPm)(e)}).format(t)},100:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.useAmPm=void 0;const n=i(623);e.useAmPm=t=>{if(t.time_format===n.TimeFormat.language||t.time_format===n.TimeFormat.system){const e=t.time_format===n.TimeFormat.language?t.language:void 0,i=(new Date).toLocaleString(e);return i.includes("AM")||i.includes("PM")}return t.time_format===n.TimeFormat.am_pm}},299:(t,e,i)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.style=void 0;const n=i(392);e.style=n.css` table { width: 100%; border-spacing: 0; @@ -157,4 +157,4 @@ text-decoration: none; color: var(--secondary-text-color); } -`},98:(t,e)=>{var i,n;Object.defineProperty(e,"__esModule",{value:!0}),e.FormulaOneCardType=e.PreviousRaceDisplay=void 0,(n=e.PreviousRaceDisplay||(e.PreviousRaceDisplay={})).Strikethrough="strikethrough",n.Italic="italic",n.Hide="hide",(i=e.FormulaOneCardType||(e.FormulaOneCardType={})).DriverStandings="driver_standings",i.ConstructorStandings="constructor_standings",i.NextRace="next_race",i.Schedule="schedule",i.LastResult="last_result"},593:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getDriverName=e.getCircuitName=e.getCountryFlagUrl=e.checkConfig=e.hasConfigOrEntitiesChanged=void 0,e.hasConfigOrEntitiesChanged=(t,e)=>{if(e.has("config"))return!0;const i=e.get("_hass");return!!i&&i.states[t.sensor]!==t.hass.states[t.sensor]},e.checkConfig=t=>{if(void 0===t.card_type)throw new Error("Please define FormulaOne card type (card_type).");if(void 0===t.sensor)throw new Error("Please define FormulaOne sensor.")},e.getCountryFlagUrl=t=>{const e=[{countryDashed:"USA",name:"United-States-of-America"},{countryDashed:"UAE",name:"United-Arab-Emirates"}].filter((e=>e.countryDashed==t));return e.length>0&&(t=e[0].name),`https://www.countries-ofthe-world.com/flags-normal/flag-of-${t}.png`},e.getCircuitName=t=>{const e=[{countryDashed:"UAE",name:"Abu_Dhabi"}].filter((e=>e.countryDashed==t));return e.length>0&&(t=e[0].name),t},e.getDriverName=(t,e)=>{const i="VER"==t.code?1:t.permanentNumber;return`${t.givenName} ${t.familyName}${e.show_carnumber?` #${i}`:""}`}},692:(t,e,i)=>{var n;i.r(e),i.d(e,{_$LH:()=>H,html:()=>w,noChange:()=>$,nothing:()=>A,render:()=>I,svg:()=>N});const r=window,a=r.trustedTypes,o=a?a.createPolicy("lit-html",{createHTML:t=>t}):void 0,s=`lit$${(Math.random()+"").slice(9)}$`,l="?"+s,u=`<${l}>`,c=document,d=(t="")=>c.createComment(t),h=t=>null===t||"object"!=typeof t&&"function"!=typeof t,m=Array.isArray,y=t=>m(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]),p=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,f=/-->/g,g=/>/g,v=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),_=/'/g,C=/"/g,b=/^(?:script|style|textarea|title)$/i,S=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),w=S(1),N=S(2),$=Symbol.for("lit-noChange"),A=Symbol.for("lit-nothing"),O=new WeakMap,I=(t,e,i)=>{var n,r;const a=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:e;let o=a._$litPart$;if(void 0===o){const t=null!==(r=null==i?void 0:i.renderBefore)&&void 0!==r?r:null;a._$litPart$=o=new P(e.insertBefore(d(),t),t,void 0,null!=i?i:{})}return o._$AI(t),o},E=c.createTreeWalker(c,129,null,!1),x=(t,e)=>{const i=t.length-1,n=[];let r,a=2===e?"":"",l=p;for(let e=0;e"===c[0]?(l=null!=r?r:p,d=-1):void 0===c[1]?d=-2:(d=l.lastIndex-c[2].length,o=c[1],l=void 0===c[3]?v:'"'===c[3]?C:_):l===C||l===_?l=v:l===f||l===g?l=p:(l=v,r=void 0);const m=l===v&&t[e+1].startsWith("/>")?" ":"";a+=l===p?i+u:d>=0?(n.push(o),i.slice(0,d)+"$lit$"+i.slice(d)+s+m):i+s+(-2===d?(n.push(void 0),e):m)}const c=a+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==o?o.createHTML(c):c,n]};class T{constructor({strings:t,_$litType$:e},i){let n;this.parts=[];let r=0,o=0;const u=t.length-1,c=this.parts,[h,m]=x(t,e);if(this.el=T.createElement(h,i),E.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(n=E.nextNode())&&c.length0){n.textContent=a?a.emptyScript:"";for(let i=0;i2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,n){const r=this.strings;let a=!1;if(void 0===r)t=k(this,t,e,0),a=!h(t)||t!==this._$AH&&t!==$,a&&(this._$AH=t);else{const n=t;let o,s;for(t=r[0],o=0;o{i.r(e),i.d(e,{customElement:()=>n,eventOptions:()=>l,property:()=>a,query:()=>u,queryAll:()=>c,queryAssignedElements:()=>y,queryAssignedNodes:()=>p,queryAsync:()=>d,state:()=>o});const n=t=>e=>"function"==typeof e?((t,e)=>(customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:i,elements:n}=e;return{kind:i,elements:n,finisher(e){customElements.define(t,e)}}})(t,e),r=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(i){i.createProperty(e.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};function a(t){return(e,i)=>void 0!==i?((t,e,i)=>{e.constructor.createProperty(i,t)})(t,e,i):r(t,e)}function o(t){return a({...t,state:!0})}const s=({finisher:t,descriptor:e})=>(i,n)=>{var r;if(void 0===n){const n=null!==(r=i.originalKey)&&void 0!==r?r:i.key,a=null!=e?{kind:"method",placement:"prototype",key:n,descriptor:e(i.key)}:{...i,key:n};return null!=t&&(a.finisher=function(e){t(e,n)}),a}{const r=i.constructor;void 0!==e&&Object.defineProperty(i,n,e(n)),null==t||t(r,n)}};function l(t){return s({finisher:(e,i)=>{Object.assign(e.prototype[i],t)}})}function u(t,e){return s({descriptor:i=>{const n={get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(e){const e="symbol"==typeof i?Symbol():"__"+i;n.get=function(){var i,n;return void 0===this[e]&&(this[e]=null!==(n=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==n?n:null),this[e]}}return n}})}function c(t){return s({descriptor:e=>({get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelectorAll(t))&&void 0!==i?i:[]},enumerable:!0,configurable:!0})})}function d(t){return s({descriptor:e=>({async get(){var e;return await this.updateComplete,null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t)},enumerable:!0,configurable:!0})})}var h;const m=null!=(null===(h=window.HTMLSlotElement)||void 0===h?void 0:h.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));function y(t){const{slot:e,selector:i}=null!=t?t:{};return s({descriptor:n=>({get(){var n;const r="slot"+(e?`[name=${e}]`:":not([name])"),a=null===(n=this.renderRoot)||void 0===n?void 0:n.querySelector(r),o=null!=a?m(a,t):[];return i?o.filter((t=>t.matches(i))):o},enumerable:!0,configurable:!0})})}function p(t,e,i){let n,r=t;return"object"==typeof t?(r=t.slot,n=t):n={flatten:e},i?y({slot:r,flatten:e,selector:i}):s({descriptor:t=>({get(){var t,e;const i="slot"+(r?`[name=${r}]`:":not([name])"),a=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(i);return null!==(e=null==a?void 0:a.assignedNodes(n))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}},392:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>s,LitElement:()=>$,ReactiveElement:()=>C,UpdatingElement:()=>N,_$LE:()=>O,_$LH:()=>w._$LH,adoptStyles:()=>c,css:()=>u,defaultConverter:()=>g,getCompatibleStyle:()=>d,html:()=>w.html,noChange:()=>w.noChange,notEqual:()=>v,nothing:()=>w.nothing,render:()=>w.render,supportsAdoptingStyleSheets:()=>r,svg:()=>w.svg,unsafeCSS:()=>l});const n=window,r=n.ShadowRoot&&(void 0===n.ShadyCSS||n.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),o=new WeakMap;class s{constructor(t,e,i){if(this._$cssResult$=!0,i!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(r&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=o.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&o.set(e,t))}return t}toString(){return this.cssText}}const l=t=>new s("string"==typeof t?t:t+"",void 0,a),u=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new s(i,t,a)},c=(t,e)=>{r?t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((e=>{const i=document.createElement("style"),r=n.litNonce;void 0!==r&&i.setAttribute("nonce",r),i.textContent=e.cssText,t.appendChild(i)}))},d=r?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return l(e)})(t):t;var h;const m=window,y=m.trustedTypes,p=y?y.emptyScript:"",f=m.reactiveElementPolyfillSupport,g={toAttribute(t,e){switch(e){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},v=(t,e)=>e!==t&&(e==e||t==t),_={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:v};class C extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;null!==(e=this.h)&&void 0!==e||(this.h=[]),this.h.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const n=this._$Ep(i,e);void 0!==n&&(this._$Ev.set(n,i),t.push(n))})),t}static createProperty(t,e=_){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,i,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(n){const r=this[t];this[e]=n,this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||_}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(d(t))}else void 0!==t&&e.push(d(t));return e}static _$Ep(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const e=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return c(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e,i=_){var n;const r=this.constructor._$Ep(t,i);if(void 0!==r&&!0===i.reflect){const a=(void 0!==(null===(n=i.converter)||void 0===n?void 0:n.toAttribute)?i.converter:g).toAttribute(e,i.type);this._$El=t,null==a?this.removeAttribute(r):this.setAttribute(r,a),this._$El=null}}_$AK(t,e){var i;const n=this.constructor,r=n._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=n.getPropertyOptions(r),a="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(i=t.converter)||void 0===i?void 0:i.fromAttribute)?t.converter:g;this._$El=r,this[r]=a.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,i){let n=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||v)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}C.finalized=!0,C.elementProperties=new Map,C.elementStyles=[],C.shadowRootOptions={mode:"open"},null==f||f({ReactiveElement:C}),(null!==(h=m.reactiveElementVersions)&&void 0!==h?h:m.reactiveElementVersions=[]).push("1.4.1");var b,S,w=i(692);const N=C;class $ extends C{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,w.render)(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return w.noChange}}$.finalized=!0,$._$litElement$=!0,null===(b=globalThis.litElementHydrateSupport)||void 0===b||b.call(globalThis,{LitElement:$});const A=globalThis.litElementPolyfillSupport;null==A||A({LitElement:$});const O={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(S=globalThis.litElementVersions)&&void 0!==S?S:globalThis.litElementVersions=[]).push("3.2.2")},147:t=>{t.exports=JSON.parse('{"name":"formulaone-card","version":"0.1.6","description":"Frontend card for hass-formulaoneapi","main":"index.js","scripts":{"lint":"eslint src/**/*.ts","dev":"webpack -c webpack.config.js","build":"yarn lint && webpack -c webpack.config.js","test":"jest","coverage":"jest --coverage","workflow":"jest --coverage --json --outputFile=/home/runner/work/formulaone-card/formulaone-card/jest.results.json"},"repository":{"type":"git","url":"git+https://github.com/marcokreeft87/formulaone-card.git"},"keywords":[],"author":"","license":"ISC","bugs":{"url":"https://github.com/marcokreeft87/formulaone-card/issues"},"homepage":"https://github.com/marcokreeft87/formulaone-card#readme","devDependencies":{"@types/jest":"^29.1.1","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","eslint":"^8.24.0","home-assistant-js-websocket":"^8.0.0","lit":"^2.3.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"dependencies":{"@babel/plugin-transform-runtime":"^7.19.1","@babel/preset-env":"^7.19.3","@lit-labs/scoped-registry-mixin":"^1.0.1","babel-jest":"^29.1.2","compression-webpack-plugin":"^10.0.0","custom-card-helpers":"^1.9.0","jest-environment-jsdom":"^29.1.2","jest-ts-auto-mock":"^2.1.0","ts-auto-mock":"^3.6.2","ts-jest":"^29.0.3","ts-loader":"^9.4.1","ttypescript":"^1.5.13","yarn":"^1.22.19"}}')},634:t=>{t.exports=JSON.parse('[{"Code":"AD","Country":"Andorra","ISO":"53","Nationality":"Andorian"},{"Code":"AE","Country":"United Arab Emirates","ISO":"126","Nationality":"Emirian"},{"Code":"AF","Country":"Afghanistan","ISO":"133","Nationality":"Afghani"},{"Code":"AI","Country":"Anguilla","ISO":"55","Nationality":"Anguillan"},{"Code":"AM","Country":"Armenia","ISO":"58","Nationality":"Armenian"},{"Code":"AO","Country":"Angola","ISO":"54","Nationality":"Angolian"},{"Code":"AQ","Country":"Antarctica","ISO":"55","Nationality":"Antarctic"},{"Code":"AR","Country":"Argentina","ISO":"57","Nationality":"Argentine"},{"Code":"AS","Country":"Austria","ISO":"3","Nationality":"Austrian"},{"Code":"AU","Country":"Australia","ISO":"2","Nationality":"Australian"},{"Code":"AW","Country":"Aruba","ISO":"59","Nationality":"Arubian"},{"Code":"BA","Country":"Bangladesh","ISO":"45","Nationality":"Bangladeshi"},{"Code":"BB","Country":"Barbados","ISO":"63","Nationality":"Barbadian"},{"Code":"BE","Country":"Belgium","ISO":"4","Nationality":"Belgian"},{"Code":"BH","Country":"Bahrain","ISO":"62","Nationality":"Bahrainian"},{"Code":"BM","Country":"Bermuda","ISO":"67","Nationality":"Bermuda"},{"Code":"BO","Country":"Bolivia","ISO":"69","Nationality":"Bolivian"},{"Code":"BR","Country":"Brazil","ISO":"43","Nationality":"Brazilian"},{"Code":"BS","Country":"Bahamas","ISO":"61","Nationality":"Bahameese"},{"Code":"BT","Country":"Bhutan","ISO":"68","Nationality":"Bhutanese"},{"Code":"BU","Country":"Bulgaria","ISO":"44","Nationality":"Bulgarian"},{"Code":"BY","Country":"Belarus","ISO":"64","Nationality":"Belarusian"},{"Code":"BZ","Country":"Belize","ISO":"65","Nationality":"Belizean"},{"Code":"CA","Country":"Canada","ISO":"6","Nationality":"Canadian"},{"Code":"CG","Country":"Congo","ISO":"72","Nationality":"Congolese"},{"Code":"CH","Country":"China","ISO":"51","Nationality":"Chinese"},{"Code":"CH","Country":"Switzerland","ISO":"35","Nationality":"Swiss"},{"Code":"CL","Country":"Chile","ISO":"71","Nationality":"Chilean"},{"Code":"CM","Country":"Cambodia","ISO":"5","Nationality":"Cambodian"},{"Code":"CM","Country":"Cameroon","ISO":"70","Nationality":"Cameroonian"},{"Code":"CO","Country":"Columbia","ISO":"46","Nationality":"Columbian"},{"Code":"CR","Country":"Czech Republic","ISO":"50","Nationality":"Czech"},{"Code":"CR","Country":"Costa Rica","ISO":"73","Nationality":"Costa Rican"},{"Code":"CU","Country":"Cuba","ISO":"75","Nationality":"Cuban"},{"Code":"CY","Country":"Cyprus","ISO":"76","Nationality":"Cypriot"},{"Code":"DE","Country":"Germany","ISO":"10","Nationality":"German"},{"Code":"DK","Country":"Denmark","ISO":"7","Nationality":"Danish"},{"Code":"DM","Country":"Dominica","ISO":"77","Nationality":"Dominican"},{"Code":"EC","Country":"Ecuador","ISO":"78","Nationality":"Ecuadorean"},{"Code":"EE","Country":"Estonia","ISO":"79","Nationality":"Estonian"},{"Code":"EG","Country":"Egypt","ISO":"8","Nationality":"Egyptian"},{"Code":"ET","Country":"Ethiopia","ISO":"80","Nationality":"Ethiopian"},{"Code":"FI","Country":"Finland","ISO":"82","Nationality":"Finnish"},{"Code":"FJ","Country":"Fiji","ISO":"81","Nationality":"Fijian"},{"Code":"FR","Country":"France","ISO":"9","Nationality":"French"},{"Code":"GB","Country":"United Kingdom","ISO":"39","Nationality":"British"},{"Code":"GE","Country":"Georgia","ISO":"83","Nationality":"Georgian"},{"Code":"GH","Country":"Ghana","ISO":"84","Nationality":"Ghanaian"},{"Code":"GN","Country":"Guinea","ISO":"86","Nationality":"Guinean"},{"Code":"GR","Country":"Greece","ISO":"11","Nationality":"Greek"},{"Code":"GY","Country":"Guyana","ISO":"87","Nationality":"Guyanese"},{"Code":"HK","Country":"Hong Kong","ISO":"13","Nationality":"Chinese"},{"Code":"HR","Country":"Croatia","ISO":"74","Nationality":"Croatian"},{"Code":"HU","Country":"Hungary","ISO":"14","Nationality":"Hungarian"},{"Code":"ID","Country":"Indonesia","ISO":"16","Nationality":"Indonesian"},{"Code":"IE","Country":"Ireland","ISO":"90","Nationality":"Irish"},{"Code":"IN","Country":"India","ISO":"15","Nationality":"Indian"},{"Code":"IQ","Country":"Iraq","ISO":"89","Nationality":"Iraqi"},{"Code":"IR","Country":"Iran","ISO":"17","Nationality":"Iranian"},{"Code":"IS","Country":"Israel","ISO":"18","Nationality":"Israeli"},{"Code":"IS","Country":"Iceland","ISO":"88","Nationality":"Icelander"},{"Code":"IT","Country":"Italy","ISO":"19","Nationality":"Italian"},{"Code":"JM","Country":"Jamaica","ISO":"91","Nationality":"Jamaican"},{"Code":"JO","Country":"Jordan","ISO":"92","Nationality":"Jordanian"},{"Code":"JP","Country":"Japan","ISO":"20","Nationality":"Japanese"},{"Code":"KE","Country":"Kenya","ISO":"94","Nationality":"Kenyan"},{"Code":"KO","Country":"Korea","ISO":"21","Nationality":"Korean"},{"Code":"KW","Country":"Kuwait","ISO":"95","Nationality":"Kuwaiti"},{"Code":"KZ","Country":"Kazakhstan","ISO":"134","Nationality":"Kazakhstani"},{"Code":"KZ","Country":"Kazakhstan","ISO":"93","Nationality":"Kazakhstani"},{"Code":"LB","Country":"Lebanon","ISO":"96","Nationality":"Lebanese"},{"Code":"LK","Country":"Sri Lanka","ISO":"33","Nationality":"Sri Lankan"},{"Code":"LT","Country":"Lithuania","ISO":"97","Nationality":"Lithuanian"},{"Code":"LU","Country":"Luxembourg","ISO":"98","Nationality":"Luxembourger"},{"Code":"MA","Country":"Morocco","ISO":"104","Nationality":"Moroccan"},{"Code":"MC","Country":"Monaco","ISO":"102","Nationality":"Monegasque"},{"Code":"ME","Country":"Mexico","ISO":"47","Nationality":"Mexican"},{"Code":"MM","Country":"Myanmar","ISO":"105","Nationality":"Mayanmarese"},{"Code":"MN","Country":"Mongolia","ISO":"103","Nationality":"Mongolian"},{"Code":"MO","Country":"Macau","ISO":"42","Nationality":"Macau"},{"Code":"MU","Country":"Mauritius","ISO":"100","Nationality":"Mauritian"},{"Code":"MV","Country":"Maldives","ISO":"99","Nationality":"Maldivan"},{"Code":"MY","Country":"Malaysia","ISO":"22","Nationality":"Malaysian"},{"Code":"NA","Country":"Namibia","ISO":"106","Nationality":"Namibian"},{"Code":"NG","Country":"Nigeria","ISO":"108","Nationality":"Nigerian"},{"Code":"NL","Country":"Netherlands","ISO":"12","Nationality":"Dutch"},{"Code":"NO","Country":"Norway","ISO":"24","Nationality":"Norwegian"},{"Code":"NP","Country":"Nepal","ISO":"107","Nationality":"Nepalese"},{"Code":"NZ","Country":"New Zealand","ISO":"23","Nationality":"New Zealander"},{"Code":"OM","Country":"Oman","ISO":"109","Nationality":"Omani"},{"Code":"PA","Country":"Panama","ISO":"110","Nationality":"Panamanian"},{"Code":"PE","Country":"Peru","ISO":"112","Nationality":"Peruvian"},{"Code":"PH","Country":"Philippines","ISO":"27","Nationality":"Filipino"},{"Code":"PK","Country":"Pakistan","ISO":"26","Nationality":"Pakistani"},{"Code":"PO","Country":"Poland","ISO":"28","Nationality":"Polish"},{"Code":"PT","Country":"Portugal","ISO":"113","Nationality":"Portugees"},{"Code":"PY","Country":"Paraguay","ISO":"111","Nationality":"Paraguayan"},{"Code":"QA","Country":"Qatar","ISO":"115","Nationality":"Qatari"},{"Code":"RO","Country":"Romania","ISO":"48","Nationality":"Romanian"},{"Code":"RU","Country":"Russia","ISO":"29","Nationality":"Russian"},{"Code":"SA","Country":"Saudi Arabia","ISO":"116","Nationality":"Saudi Arabian"},{"Code":"SC","Country":"Seychelles","ISO":"119","Nationality":"Seychellois"},{"Code":"SE","Country":"Sweden","ISO":"34","Nationality":"Swedish"},{"Code":"SG","Country":"Singapore","ISO":"30","Nationality":"Singaporean"},{"Code":"SK","Country":"Slovakia","ISO":"120","Nationality":"Slovakian"},{"Code":"SN","Country":"Senegal","ISO":"117","Nationality":"Senegalese"},{"Code":"SO","Country":"Somalia","ISO":"121","Nationality":"Somali"},{"Code":"SP","Country":"Spain","ISO":"32","Nationality":"Spanish"},{"Code":"TH","Country":"Thailand","ISO":"37","Nationality":"Thai"},{"Code":"TN","Country":"Tunisia","ISO":"123","Nationality":"Tunisian"},{"Code":"TR","Country":"Turkey","ISO":"38","Nationality":"Turkish"},{"Code":"TW","Country":"Taiwan","ISO":"36","Nationality":"Taiwanese"},{"Code":"TZ","Country":"Tanzania","ISO":"122","Nationality":"Tanzanian"},{"Code":"UA","Country":"Ukraine","ISO":"125","Nationality":"Ukrainian"},{"Code":"UG","Country":"Uganda","ISO":"124","Nationality":"Ugandan"},{"Code":"US","Country":"United States of America","ISO":"40","Nationality":"American"},{"Code":"UY","Country":"Uruguay","ISO":"127","Nationality":"Uruguayan"},{"Code":"UZ","Country":"Uzbekistan","ISO":"128","Nationality":"Uzbekistani"},{"Code":"VE","Country":"Venezuela","ISO":"49","Nationality":"Venezuelan"},{"Code":"VN","Country":"Vietnam","ISO":"1","Nationality":"Vietnamese"},{"Code":"YE","Country":"Yemen","ISO":"130","Nationality":"Yemeni"},{"Code":"ZA","Country":"South Africa","ISO":"31","Nationality":"South African"},{"Code":"ZM","Country":"Zambia","ISO":"131","Nationality":"Zambian"},{"Code":"ZW","Country":"Zimbabwe","ISO":"132","Nationality":"Zimbabwean"}]')}},e={};function i(n){var r=e[n];if(void 0!==r)return r.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,i),a.exports}i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i(607)})(); \ No newline at end of file +`},98:(t,e)=>{var i,n;Object.defineProperty(e,"__esModule",{value:!0}),e.FormulaOneCardType=e.PreviousRaceDisplay=void 0,(n=e.PreviousRaceDisplay||(e.PreviousRaceDisplay={})).Strikethrough="strikethrough",n.Italic="italic",n.Hide="hide",(i=e.FormulaOneCardType||(e.FormulaOneCardType={})).DriverStandings="driver_standings",i.ConstructorStandings="constructor_standings",i.NextRace="next_race",i.Schedule="schedule",i.LastResult="last_result"},593:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getDriverName=e.getCircuitName=e.getCountryFlagUrl=e.checkConfig=e.hasConfigOrEntitiesChanged=void 0,e.hasConfigOrEntitiesChanged=(t,e)=>{if(e.has("config"))return!0;const i=e.get("_hass");return!!i&&i.states[t.sensor]!==t.hass.states[t.sensor]},e.checkConfig=t=>{if(void 0===t.card_type)throw new Error("Please define FormulaOne card type (card_type).");if(void 0===t.sensor)throw new Error("Please define FormulaOne sensor.")},e.getCountryFlagUrl=t=>{const e=[{countryDashed:"USA",name:"United-States-of-America"},{countryDashed:"UAE",name:"United-Arab-Emirates"}].filter((e=>e.countryDashed==t));return e.length>0&&(t=e[0].name),`https://www.countries-ofthe-world.com/flags-normal/flag-of-${t}.png`},e.getCircuitName=t=>{const e=[{countryDashed:"UAE",name:"Abu_Dhabi"}].filter((e=>e.countryDashed==t));return e.length>0&&(t=e[0].name),t},e.getDriverName=(t,e)=>{const i="VER"==t.code?1:t.permanentNumber;return`${t.givenName} ${t.familyName}${e.show_carnumber?` #${i}`:""}`}},692:(t,e,i)=>{var n;i.r(e),i.d(e,{_$LH:()=>H,html:()=>w,noChange:()=>$,nothing:()=>A,render:()=>I,svg:()=>N});const r=window,a=r.trustedTypes,o=a?a.createPolicy("lit-html",{createHTML:t=>t}):void 0,s=`lit$${(Math.random()+"").slice(9)}$`,l="?"+s,c=`<${l}>`,u=document,d=(t="")=>u.createComment(t),h=t=>null===t||"object"!=typeof t&&"function"!=typeof t,m=Array.isArray,y=t=>m(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]),p=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,f=/-->/g,g=/>/g,v=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),_=/'/g,C=/"/g,b=/^(?:script|style|textarea|title)$/i,S=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),w=S(1),N=S(2),$=Symbol.for("lit-noChange"),A=Symbol.for("lit-nothing"),O=new WeakMap,I=(t,e,i)=>{var n,r;const a=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:e;let o=a._$litPart$;if(void 0===o){const t=null!==(r=null==i?void 0:i.renderBefore)&&void 0!==r?r:null;a._$litPart$=o=new P(e.insertBefore(d(),t),t,void 0,null!=i?i:{})}return o._$AI(t),o},E=u.createTreeWalker(u,129,null,!1),x=(t,e)=>{const i=t.length-1,n=[];let r,a=2===e?"":"",l=p;for(let e=0;e"===u[0]?(l=null!=r?r:p,d=-1):void 0===u[1]?d=-2:(d=l.lastIndex-u[2].length,o=u[1],l=void 0===u[3]?v:'"'===u[3]?C:_):l===C||l===_?l=v:l===f||l===g?l=p:(l=v,r=void 0);const m=l===v&&t[e+1].startsWith("/>")?" ":"";a+=l===p?i+c:d>=0?(n.push(o),i.slice(0,d)+"$lit$"+i.slice(d)+s+m):i+s+(-2===d?(n.push(void 0),e):m)}const u=a+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==o?o.createHTML(u):u,n]};class k{constructor({strings:t,_$litType$:e},i){let n;this.parts=[];let r=0,o=0;const c=t.length-1,u=this.parts,[h,m]=x(t,e);if(this.el=k.createElement(h,i),E.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(n=E.nextNode())&&u.length0){n.textContent=a?a.emptyScript:"";for(let i=0;i2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,n){const r=this.strings;let a=!1;if(void 0===r)t=T(this,t,e,0),a=!h(t)||t!==this._$AH&&t!==$,a&&(this._$AH=t);else{const n=t;let o,s;for(t=r[0],o=0;o{i.r(e),i.d(e,{customElement:()=>n,eventOptions:()=>l,property:()=>a,query:()=>c,queryAll:()=>u,queryAssignedElements:()=>y,queryAssignedNodes:()=>p,queryAsync:()=>d,state:()=>o});const n=t=>e=>"function"==typeof e?((t,e)=>(customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:i,elements:n}=e;return{kind:i,elements:n,finisher(e){customElements.define(t,e)}}})(t,e),r=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(i){i.createProperty(e.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};function a(t){return(e,i)=>void 0!==i?((t,e,i)=>{e.constructor.createProperty(i,t)})(t,e,i):r(t,e)}function o(t){return a({...t,state:!0})}const s=({finisher:t,descriptor:e})=>(i,n)=>{var r;if(void 0===n){const n=null!==(r=i.originalKey)&&void 0!==r?r:i.key,a=null!=e?{kind:"method",placement:"prototype",key:n,descriptor:e(i.key)}:{...i,key:n};return null!=t&&(a.finisher=function(e){t(e,n)}),a}{const r=i.constructor;void 0!==e&&Object.defineProperty(i,n,e(n)),null==t||t(r,n)}};function l(t){return s({finisher:(e,i)=>{Object.assign(e.prototype[i],t)}})}function c(t,e){return s({descriptor:i=>{const n={get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(e){const e="symbol"==typeof i?Symbol():"__"+i;n.get=function(){var i,n;return void 0===this[e]&&(this[e]=null!==(n=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==n?n:null),this[e]}}return n}})}function u(t){return s({descriptor:e=>({get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelectorAll(t))&&void 0!==i?i:[]},enumerable:!0,configurable:!0})})}function d(t){return s({descriptor:e=>({async get(){var e;return await this.updateComplete,null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t)},enumerable:!0,configurable:!0})})}var h;const m=null!=(null===(h=window.HTMLSlotElement)||void 0===h?void 0:h.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));function y(t){const{slot:e,selector:i}=null!=t?t:{};return s({descriptor:n=>({get(){var n;const r="slot"+(e?`[name=${e}]`:":not([name])"),a=null===(n=this.renderRoot)||void 0===n?void 0:n.querySelector(r),o=null!=a?m(a,t):[];return i?o.filter((t=>t.matches(i))):o},enumerable:!0,configurable:!0})})}function p(t,e,i){let n,r=t;return"object"==typeof t?(r=t.slot,n=t):n={flatten:e},i?y({slot:r,flatten:e,selector:i}):s({descriptor:t=>({get(){var t,e;const i="slot"+(r?`[name=${r}]`:":not([name])"),a=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(i);return null!==(e=null==a?void 0:a.assignedNodes(n))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}},392:(t,e,i)=>{i.r(e),i.d(e,{CSSResult:()=>s,LitElement:()=>$,ReactiveElement:()=>C,UpdatingElement:()=>N,_$LE:()=>O,_$LH:()=>w._$LH,adoptStyles:()=>u,css:()=>c,defaultConverter:()=>g,getCompatibleStyle:()=>d,html:()=>w.html,noChange:()=>w.noChange,notEqual:()=>v,nothing:()=>w.nothing,render:()=>w.render,supportsAdoptingStyleSheets:()=>r,svg:()=>w.svg,unsafeCSS:()=>l});const n=window,r=n.ShadowRoot&&(void 0===n.ShadyCSS||n.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),o=new WeakMap;class s{constructor(t,e,i){if(this._$cssResult$=!0,i!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(r&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=o.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&o.set(e,t))}return t}toString(){return this.cssText}}const l=t=>new s("string"==typeof t?t:t+"",void 0,a),c=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new s(i,t,a)},u=(t,e)=>{r?t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((e=>{const i=document.createElement("style"),r=n.litNonce;void 0!==r&&i.setAttribute("nonce",r),i.textContent=e.cssText,t.appendChild(i)}))},d=r?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return l(e)})(t):t;var h;const m=window,y=m.trustedTypes,p=y?y.emptyScript:"",f=m.reactiveElementPolyfillSupport,g={toAttribute(t,e){switch(e){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},v=(t,e)=>e!==t&&(e==e||t==t),_={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:v};class C extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;null!==(e=this.h)&&void 0!==e||(this.h=[]),this.h.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const n=this._$Ep(i,e);void 0!==n&&(this._$Ev.set(n,i),t.push(n))})),t}static createProperty(t,e=_){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,i,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(n){const r=this[t];this[e]=n,this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||_}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(d(t))}else void 0!==t&&e.push(d(t));return e}static _$Ep(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const e=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return u(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e,i=_){var n;const r=this.constructor._$Ep(t,i);if(void 0!==r&&!0===i.reflect){const a=(void 0!==(null===(n=i.converter)||void 0===n?void 0:n.toAttribute)?i.converter:g).toAttribute(e,i.type);this._$El=t,null==a?this.removeAttribute(r):this.setAttribute(r,a),this._$El=null}}_$AK(t,e){var i;const n=this.constructor,r=n._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=n.getPropertyOptions(r),a="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(i=t.converter)||void 0===i?void 0:i.fromAttribute)?t.converter:g;this._$El=r,this[r]=a.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,i){let n=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||v)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}C.finalized=!0,C.elementProperties=new Map,C.elementStyles=[],C.shadowRootOptions={mode:"open"},null==f||f({ReactiveElement:C}),(null!==(h=m.reactiveElementVersions)&&void 0!==h?h:m.reactiveElementVersions=[]).push("1.4.1");var b,S,w=i(692);const N=C;class $ extends C{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,w.render)(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return w.noChange}}$.finalized=!0,$._$litElement$=!0,null===(b=globalThis.litElementHydrateSupport)||void 0===b||b.call(globalThis,{LitElement:$});const A=globalThis.litElementPolyfillSupport;null==A||A({LitElement:$});const O={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(S=globalThis.litElementVersions)&&void 0!==S?S:globalThis.litElementVersions=[]).push("3.2.2")},147:t=>{t.exports=JSON.parse('{"name":"formulaone-card","version":"0.1.7","description":"Frontend card for hass-formulaoneapi","main":"index.js","scripts":{"lint":"eslint src/**/*.ts","dev":"webpack -c webpack.config.js","build":"yarn lint && webpack -c webpack.config.js","test":"jest","coverage":"jest --coverage","workflow":"jest --coverage --json --outputFile=/home/runner/work/formulaone-card/formulaone-card/jest.results.json"},"repository":{"type":"git","url":"git+https://github.com/marcokreeft87/formulaone-card.git"},"keywords":[],"author":"","license":"ISC","bugs":{"url":"https://github.com/marcokreeft87/formulaone-card/issues"},"homepage":"https://github.com/marcokreeft87/formulaone-card#readme","devDependencies":{"@types/jest":"^29.1.1","@typescript-eslint/eslint-plugin":"^5.39.0","@typescript-eslint/parser":"^5.39.0","eslint":"^8.24.0","home-assistant-js-websocket":"^8.0.0","lit":"^2.3.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"dependencies":{"@babel/plugin-transform-runtime":"^7.19.1","@babel/preset-env":"^7.19.3","@lit-labs/scoped-registry-mixin":"^1.0.1","babel-jest":"^29.1.2","compression-webpack-plugin":"^10.0.0","custom-card-helpers":"^1.9.0","jest-environment-jsdom":"^29.1.2","jest-ts-auto-mock":"^2.1.0","ts-auto-mock":"^3.6.2","ts-jest":"^29.0.3","ts-loader":"^9.4.1","ttypescript":"^1.5.13","yarn":"^1.22.19"}}')},634:t=>{t.exports=JSON.parse('[{"Code":"AD","Country":"Andorra","ISO":"53","Nationality":"Andorian"},{"Code":"AE","Country":"United Arab Emirates","ISO":"126","Nationality":"Emirian"},{"Code":"AF","Country":"Afghanistan","ISO":"133","Nationality":"Afghani"},{"Code":"AI","Country":"Anguilla","ISO":"55","Nationality":"Anguillan"},{"Code":"AM","Country":"Armenia","ISO":"58","Nationality":"Armenian"},{"Code":"AO","Country":"Angola","ISO":"54","Nationality":"Angolian"},{"Code":"AQ","Country":"Antarctica","ISO":"55","Nationality":"Antarctic"},{"Code":"AR","Country":"Argentina","ISO":"57","Nationality":"Argentine"},{"Code":"AS","Country":"Austria","ISO":"3","Nationality":"Austrian"},{"Code":"AU","Country":"Australia","ISO":"2","Nationality":"Australian"},{"Code":"AW","Country":"Aruba","ISO":"59","Nationality":"Arubian"},{"Code":"BA","Country":"Bangladesh","ISO":"45","Nationality":"Bangladeshi"},{"Code":"BB","Country":"Barbados","ISO":"63","Nationality":"Barbadian"},{"Code":"BE","Country":"Belgium","ISO":"4","Nationality":"Belgian"},{"Code":"BH","Country":"Bahrain","ISO":"62","Nationality":"Bahrainian"},{"Code":"BM","Country":"Bermuda","ISO":"67","Nationality":"Bermuda"},{"Code":"BO","Country":"Bolivia","ISO":"69","Nationality":"Bolivian"},{"Code":"BR","Country":"Brazil","ISO":"43","Nationality":"Brazilian"},{"Code":"BS","Country":"Bahamas","ISO":"61","Nationality":"Bahameese"},{"Code":"BT","Country":"Bhutan","ISO":"68","Nationality":"Bhutanese"},{"Code":"BU","Country":"Bulgaria","ISO":"44","Nationality":"Bulgarian"},{"Code":"BY","Country":"Belarus","ISO":"64","Nationality":"Belarusian"},{"Code":"BZ","Country":"Belize","ISO":"65","Nationality":"Belizean"},{"Code":"CA","Country":"Canada","ISO":"6","Nationality":"Canadian"},{"Code":"CG","Country":"Congo","ISO":"72","Nationality":"Congolese"},{"Code":"CH","Country":"China","ISO":"51","Nationality":"Chinese"},{"Code":"CH","Country":"Switzerland","ISO":"35","Nationality":"Swiss"},{"Code":"CL","Country":"Chile","ISO":"71","Nationality":"Chilean"},{"Code":"CM","Country":"Cambodia","ISO":"5","Nationality":"Cambodian"},{"Code":"CM","Country":"Cameroon","ISO":"70","Nationality":"Cameroonian"},{"Code":"CO","Country":"Columbia","ISO":"46","Nationality":"Columbian"},{"Code":"CR","Country":"Czech Republic","ISO":"50","Nationality":"Czech"},{"Code":"CR","Country":"Costa Rica","ISO":"73","Nationality":"Costa Rican"},{"Code":"CU","Country":"Cuba","ISO":"75","Nationality":"Cuban"},{"Code":"CY","Country":"Cyprus","ISO":"76","Nationality":"Cypriot"},{"Code":"DE","Country":"Germany","ISO":"10","Nationality":"German"},{"Code":"DK","Country":"Denmark","ISO":"7","Nationality":"Danish"},{"Code":"DM","Country":"Dominica","ISO":"77","Nationality":"Dominican"},{"Code":"EC","Country":"Ecuador","ISO":"78","Nationality":"Ecuadorean"},{"Code":"EE","Country":"Estonia","ISO":"79","Nationality":"Estonian"},{"Code":"EG","Country":"Egypt","ISO":"8","Nationality":"Egyptian"},{"Code":"ET","Country":"Ethiopia","ISO":"80","Nationality":"Ethiopian"},{"Code":"FI","Country":"Finland","ISO":"82","Nationality":"Finnish"},{"Code":"FJ","Country":"Fiji","ISO":"81","Nationality":"Fijian"},{"Code":"FR","Country":"France","ISO":"9","Nationality":"French"},{"Code":"GB","Country":"United Kingdom","ISO":"39","Nationality":"British"},{"Code":"GE","Country":"Georgia","ISO":"83","Nationality":"Georgian"},{"Code":"GH","Country":"Ghana","ISO":"84","Nationality":"Ghanaian"},{"Code":"GN","Country":"Guinea","ISO":"86","Nationality":"Guinean"},{"Code":"GR","Country":"Greece","ISO":"11","Nationality":"Greek"},{"Code":"GY","Country":"Guyana","ISO":"87","Nationality":"Guyanese"},{"Code":"HK","Country":"Hong Kong","ISO":"13","Nationality":"Chinese"},{"Code":"HR","Country":"Croatia","ISO":"74","Nationality":"Croatian"},{"Code":"HU","Country":"Hungary","ISO":"14","Nationality":"Hungarian"},{"Code":"ID","Country":"Indonesia","ISO":"16","Nationality":"Indonesian"},{"Code":"IE","Country":"Ireland","ISO":"90","Nationality":"Irish"},{"Code":"IN","Country":"India","ISO":"15","Nationality":"Indian"},{"Code":"IQ","Country":"Iraq","ISO":"89","Nationality":"Iraqi"},{"Code":"IR","Country":"Iran","ISO":"17","Nationality":"Iranian"},{"Code":"IS","Country":"Israel","ISO":"18","Nationality":"Israeli"},{"Code":"IS","Country":"Iceland","ISO":"88","Nationality":"Icelander"},{"Code":"IT","Country":"Italy","ISO":"19","Nationality":"Italian"},{"Code":"JM","Country":"Jamaica","ISO":"91","Nationality":"Jamaican"},{"Code":"JO","Country":"Jordan","ISO":"92","Nationality":"Jordanian"},{"Code":"JP","Country":"Japan","ISO":"20","Nationality":"Japanese"},{"Code":"KE","Country":"Kenya","ISO":"94","Nationality":"Kenyan"},{"Code":"KO","Country":"Korea","ISO":"21","Nationality":"Korean"},{"Code":"KW","Country":"Kuwait","ISO":"95","Nationality":"Kuwaiti"},{"Code":"KZ","Country":"Kazakhstan","ISO":"134","Nationality":"Kazakhstani"},{"Code":"KZ","Country":"Kazakhstan","ISO":"93","Nationality":"Kazakhstani"},{"Code":"LB","Country":"Lebanon","ISO":"96","Nationality":"Lebanese"},{"Code":"LK","Country":"Sri Lanka","ISO":"33","Nationality":"Sri Lankan"},{"Code":"LT","Country":"Lithuania","ISO":"97","Nationality":"Lithuanian"},{"Code":"LU","Country":"Luxembourg","ISO":"98","Nationality":"Luxembourger"},{"Code":"MA","Country":"Morocco","ISO":"104","Nationality":"Moroccan"},{"Code":"MC","Country":"Monaco","ISO":"102","Nationality":"Monegasque"},{"Code":"ME","Country":"Mexico","ISO":"47","Nationality":"Mexican"},{"Code":"MM","Country":"Myanmar","ISO":"105","Nationality":"Mayanmarese"},{"Code":"MN","Country":"Mongolia","ISO":"103","Nationality":"Mongolian"},{"Code":"MO","Country":"Macau","ISO":"42","Nationality":"Macau"},{"Code":"MU","Country":"Mauritius","ISO":"100","Nationality":"Mauritian"},{"Code":"MV","Country":"Maldives","ISO":"99","Nationality":"Maldivan"},{"Code":"MY","Country":"Malaysia","ISO":"22","Nationality":"Malaysian"},{"Code":"NA","Country":"Namibia","ISO":"106","Nationality":"Namibian"},{"Code":"NG","Country":"Nigeria","ISO":"108","Nationality":"Nigerian"},{"Code":"NL","Country":"Netherlands","ISO":"12","Nationality":"Dutch"},{"Code":"NO","Country":"Norway","ISO":"24","Nationality":"Norwegian"},{"Code":"NP","Country":"Nepal","ISO":"107","Nationality":"Nepalese"},{"Code":"NZ","Country":"New Zealand","ISO":"23","Nationality":"New Zealander"},{"Code":"OM","Country":"Oman","ISO":"109","Nationality":"Omani"},{"Code":"PA","Country":"Panama","ISO":"110","Nationality":"Panamanian"},{"Code":"PE","Country":"Peru","ISO":"112","Nationality":"Peruvian"},{"Code":"PH","Country":"Philippines","ISO":"27","Nationality":"Filipino"},{"Code":"PK","Country":"Pakistan","ISO":"26","Nationality":"Pakistani"},{"Code":"PO","Country":"Poland","ISO":"28","Nationality":"Polish"},{"Code":"PT","Country":"Portugal","ISO":"113","Nationality":"Portugees"},{"Code":"PY","Country":"Paraguay","ISO":"111","Nationality":"Paraguayan"},{"Code":"QA","Country":"Qatar","ISO":"115","Nationality":"Qatari"},{"Code":"RO","Country":"Romania","ISO":"48","Nationality":"Romanian"},{"Code":"RU","Country":"Russia","ISO":"29","Nationality":"Russian"},{"Code":"SA","Country":"Saudi Arabia","ISO":"116","Nationality":"Saudi Arabian"},{"Code":"SC","Country":"Seychelles","ISO":"119","Nationality":"Seychellois"},{"Code":"SE","Country":"Sweden","ISO":"34","Nationality":"Swedish"},{"Code":"SG","Country":"Singapore","ISO":"30","Nationality":"Singaporean"},{"Code":"SK","Country":"Slovakia","ISO":"120","Nationality":"Slovakian"},{"Code":"SN","Country":"Senegal","ISO":"117","Nationality":"Senegalese"},{"Code":"SO","Country":"Somalia","ISO":"121","Nationality":"Somali"},{"Code":"SP","Country":"Spain","ISO":"32","Nationality":"Spanish"},{"Code":"TH","Country":"Thailand","ISO":"37","Nationality":"Thai"},{"Code":"TN","Country":"Tunisia","ISO":"123","Nationality":"Tunisian"},{"Code":"TR","Country":"Turkey","ISO":"38","Nationality":"Turkish"},{"Code":"TW","Country":"Taiwan","ISO":"36","Nationality":"Taiwanese"},{"Code":"TZ","Country":"Tanzania","ISO":"122","Nationality":"Tanzanian"},{"Code":"UA","Country":"Ukraine","ISO":"125","Nationality":"Ukrainian"},{"Code":"UG","Country":"Uganda","ISO":"124","Nationality":"Ugandan"},{"Code":"US","Country":"United States of America","ISO":"40","Nationality":"American"},{"Code":"UY","Country":"Uruguay","ISO":"127","Nationality":"Uruguayan"},{"Code":"UZ","Country":"Uzbekistan","ISO":"128","Nationality":"Uzbekistani"},{"Code":"VE","Country":"Venezuela","ISO":"49","Nationality":"Venezuelan"},{"Code":"VN","Country":"Vietnam","ISO":"1","Nationality":"Vietnamese"},{"Code":"YE","Country":"Yemen","ISO":"130","Nationality":"Yemeni"},{"Code":"ZA","Country":"South Africa","ISO":"31","Nationality":"South African"},{"Code":"ZM","Country":"Zambia","ISO":"131","Nationality":"Zambian"},{"Code":"ZW","Country":"Zimbabwe","ISO":"132","Nationality":"Zimbabwean"}]')}},e={};function i(n){var r=e[n];if(void 0!==r)return r.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,i),a.exports}i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i(607)})(); \ No newline at end of file diff --git a/formulaone-card.js.gz b/formulaone-card.js.gz index c57ec8f44316815df57e926543d02297b47f3f16..cefc471ad6ee69f713e3cd4dbd8893da12f975ad 100644 GIT binary patch delta 19269 zcmV($K;yrkngQ^d0e>Hh2mk;80006C)qVS3<3^L{|N9h1%MvNb1~YeggqLBM4Bs%o zH)fJe2%ksTjjbR{jwHhn&^w)HI8Sz}sxRu6WSE&GyLZ?O7OU0q#Wx4vzBztVb> zq^&3%u{dL`Fuq9AS&)ZG+?q!$fTWDE7A7vDAcmLVJv#Id&_7(6bG&o7cR*?XRB1o%@BK8~J3QGx`FXhinliK8<#x1-+vrYE-Q0Y#_;e6iVjYWKKx8&!m`ZC(GNcy>``i3rv9{l@^-kp^MN<` zUuL@5UY@&$i`h9#-w-h=Ep`VdJ12XC;nABnJRx^a!Wq+wr0&PV{gdG?eFQoG;)Rpk z4d(Oc=48rdEIW$#BKRBgYH!?8GMg`QwhKcu2>)P|dVe5OUnjF5j4ADvOxug|Fu$R+ zw=(U+38(XKTEgovWg}z;%K1a)4DtZrhS@v{IFMh=oU+At?kHuDbTSR&38jp4cg)U{ zMLgnoPT`x%?~g!V{oIT;!slJbtO>;b5zOuDa@w> z2KbM82UfNGpBTFw3-U%I(+oSSL8NqiCVQGef+IlCZfE-7h%Ntssrni6=Wqm;Ag zF4UT^G36gp{_A9Mu7g?4-7phGChnuupWHaO3McY&lDn}sAy1NnWE4a^?*})9UghCc zIfn1u6d07Z`n#JURK=a2b2o=_DHi^~kZ~nve{l0;GKuubHH5;8G(L)tE-olJWSq!5 z)qf0L{wgmVlAE!cx`CVc7cftdK(=$6GOW=`{G;>VU{ZF1EDI;`-JL3uJGU@$HdY5= z>v!GQ57Nm3bbxXZ2=CNcTeI`i^vq}QkJA(Q<$r~nbVyd&`83R21==ax%)iZu)4az|+*ufd zz`$SAWRZGXTP||vlfsS4UV|i19Up<-=y0}$t`_dd*LyAs#q7GZALmg=PO&$lLMH-7 zS_BhNI@e+%SWyyBEO$n7L3~hp%(=-bpp`{4GUEy|<8MXg2B))X@d0F}&B)9u$bZcK zT4dCB4WFB4eC8E==HH5s(V#>pL-|Y1UoS#HqDZnB)se2f3Z6fgy5!Enq*;Vg)J z%lO26@pDKSzGZw8#5w2~nX7$ZUVjWGsBhuFmaBI&Z^SOIVFzM!Hk?C3cMCuAYmiJg z!wV2VzP0t(D(n>cn^J#C4i5}sh8I9El>S3bZ{PP*)$rY2J&!l*+>%W8m)Gr=_=POzRl=TT0uo6UL)xF=m-9N|}kDW?CcK+A(L#V{1 z9Xo37*nXvB`~MwMpZ85G{J@~>HRJxdg8S!h#r-SMxok$~q=L@LpF-!a8~NAG=pI+l zJ^o*U?t24WH*{l=d?d|4-haekEyn)JCYP&erKnbrK|$st)*$V#ZO3s{RtQ-k3TJL3 z`-z>{w_sK}Zg_VG$!_Y~>v?;fIU8N}s0ZTueUMK(!Fgt<&da#NJK%5%-J*}lJSsuv zK9q46ahQXNLFKH1nhE@LiN^h6<8yL1ygn@sF4H(g#@I9FEtGeB$%@5i#cF&E;``)y;(#NdY-n^9-H5) zbq-!3GIgBo&81jOB^D@r1R68HyY>Bao!TR}Ts9^?mbEmyx22gH2ZSP;x}hzBQHx{C>(Or+pOFTnY@(bJye$U|J=vSq2kejZAdykOx6y71axgs3fsM0H zDt%tC)1ol9L1H+aSunRbmX33}dA9y^^LuvMJzHm|TW2_IR(~);f>$?Sx9aW5E6ZCmw*Ny=L7wzbZB3O=;&TVVU+-vp=)rg=ez z_+mcBa2(EotZ#mT^!2X8c${2!2Gd}CvpX29tyK~_G=F;ri}O5Xz-KN9?3m+_`Qv0n zMDP5*VCl_(MSweuu{C3Pa2f|Qm=lOwdz3^;dS(#`GUqnKk=~JWMG*yx#W_Gj^E?A3 zl;2at&5*^l0;;Yf6i9Fi6q={tGo?2i0qYFmPVR;4^r|hZ79*!93iqJFh_GZ5a0N1Q zash4xv^gUK&3)s`cD%=$D0!ucMws-A^DIy8P2d|C2KM;~c%}oLD(C3irt)U#^{!U_ zH(gZOF(@QJ^6rk4st7KB$-&*-O1H%H53Ogvk+qfP5y;Ib2i2!az0*no?K+IYg2Qmk zC;m?je;imYlJl%5N*W%$Dmi9YEQ5bQTdA^|f3He^UZhYcyMlj4nO2f~ zX;G*r_}f!MD9099`S)hCxnf~%Ij*Me^Y7_n4i;y36Dm0y=6B)#ST|X@DDD3M!b`aA zC9^hPg1{A47kq<(B@7b}_^!DPKX#W8&W}qw$^E6tsvz#>v_nqo$H0IjKB(V|_!8VR z)C_(K;&c%QS3wvB=MhVqK$%q zIP7d73?(NdfeZ2 zuk8dUwAYB=Ux5fXUdx)`ebw4<(5QI}xMubjqQ9qqU~^tZzT!q-Eaz5>8+2PR8q)Na zgL19>6+7$vmV~iwoq!dCt|8Ru>NSwJV=WllhH?VRqJ$E!TPK^F-sYwyf#`L>x8gh! zsUAzCWv_%0fehRq97!=Ky8(!yF9v_tV+3AER*y^WS1D2&PZzUr9A1Q^ko;h6%}V$j zuW}wpuYb5vbN&Kmr+|6dir>`Jkos`4se)$^g`hxSTKtff1u53Dzw> zik-@o)N4T*lsR{IODhjWfwXY{;ajtD=$$9YCD_-Omitd1{Aa%GZMpyDpIVbJ3_loG z!Dz9V!H;V|ARSI|V+E#Pv-2p7FRe3^hYTivivY_{z(|_IUvNkv`(`*vgZWhTM#(hj zQ8=02*E7+hY=Ka@$98|uzzBn1XD-8@HPW&|X+c^^#F924LMS_KcDLFwUj59CsZx|= zY%F?3Kaz_J$V_vZl>?UBr-D!%2VkFw(YK@rx2-iwYQu5nxIyk)|M&mwT5du=-hdl_ z2tTN-a@4Ovb`8#2-k_>uT&4q`JoKf>b6a?!aP<*I+BJh4uFe5hVU#7LKWuXtBLDwT;2?e;;M=x}5j0+PQA6){VpA2}EZeh41mI0UmF=)uuS9T#Ta zNGB#nNZJ`oaTWuy#^F^s<{ZSgBWVMFi_Dx6i8&ttH5a*m3yxn3YMAfHu-uZ|Wt!l9 zubc$L^q%B>7}2sYjfE$N&lu*ikj|eT=Y_W9R-IX8o@CvUb7cJhGoBrj|al zJU-9ba-M+=l3>4NJz{20P6<8q(~@_0ws?8|}Poi4&QxgfM9(QevC zxWUGceGwK?As@bBO>D3O9Z41fn)0}Qkn`I%hNo_qEe;l(qj?s1-*bi!9SxMZ7-OnP=}}v+H&1$r^&TN1&KH^ zUZEklA72F#3@RUj)+B`4-ce`7^DpOX{K2&|THFOp;! z%r_s#0cKT?n~)igPA7|8i)=c#wK`VexLfRzl8zO8ucs`2&4<+%+XVA`&41b<{&LS}S!OZ5L*V8a(?QR zuJqul+DyfN)n@r=e%6!0Y95|$^m#l{hRHH1m`OwAbxVYe6{$c}EHbO76^qGmua(Op z#^$0RNOLM%F9jluCL%8fUg>1Q(x!qGI;_O9%ke9y`gs@!Fx7>5CIj9KJ#+9v&|vC| zX)_LC6h61lVU#Z|DHYi05);vzWn&>t1Y+FImCXu&FQ){^4WqV5_w+OzGy#NWv5wUu z7H(1r2@`l7PkoE(hKE?~+zMHPRyYQfR}?g~_ii8&OEVBFDDx7;NmsvKQPC9-x5@XU$QST8V{UGFSXQ{Dp5-lN!wbvZCP$xOA|>e zTDcX~O3EgnB2-3aM%H)eROr9b1`OynMS4i`Aq+72#8EgN(kQ<>>@%CqX~}nOZE02~1LA8YyS}`= z$XH6t9r&XYj=@R?bS}UPLQ#Oi#c>6HSi8~ynl>;8cT(26Nfs?!a-bjAFv2K1to69V zJGE~0!O?TXkjqpt@@0QLI~1N6?jGi5@sMmiXKgJ)Lc%1;vUXWRj@ACylU4ijhi8H) z9G#Qop&VeQj`$52fxgbCYipC--gIl}M*T$^VO97e>Iml@xzaAvjXEMyp)iGic{9XV znEVDu2N$UpBeZpKn}yE#dK}7=K>+%6bjJxHT!0w~V_``zT$R-P+bwXd4aQHw-*wZ| z?wPBKqrD9Cp#xq!_^lP}bmZ_j99V_3Hp4KQ1k2?^ zpvi}&lEQvSR7fcOpcEAk2@f~ua0R`#2J=9EI7@^|P!}pTNtIg07Xc=JX%j4wHf8!U zSYIcEz5t)PGzu!xNCdTlM$zMDeuCmAfYWiHSbSN5LfNbe&($yQ8)CKd z#TYx%h+=_|z(Y=NiLX&YpVR)XZMMJV6&&ukl(@(vME!qpvttTVwG&u85&m0$j zkj;#-bc|c-n?~b%HjOH?mKkPk`bB1K`ZZ>4y3DLK?OEogx;-0z)3#OIxauC|ekHD& zFWqfgiP_QafZT8VKgU>UHVr^LeMpkr!Owf4wb7-t9OvPB!F=Avh#t7N;H4*vyfqI} zbb{LyW@)DkTv#Mk71-TfGaiAcsMgiL1PcuEr;sN%MDYEc96(R)nBhBs_*y9x7!HS! z@*{k>Of9v5Csw$B`?-HBH!Fz91_rCz;Ny-c#ui2qWXBjU6A`r(BSJA)VeKd2ErQZU zcNlbQLx5`zG|5!fBv{~K#5qO?jc6P0KM$f|mZy9dmx!=jgjV710fI*4$7^ziWC$pi z6QH(ZaM^Y$K2Ode8_2Aj=#WQPRI>h6iE4>d+?k(Fv}nkG{V-H%IR&F}wW3Z*5o?c= zYarQW8MmU?Pk4oTs!|)38H{7h^6MnMY$JWVh71|POSF)hfPiUc(2G*Ekk=$gF+AQ> znP*v^_Mz7#9tM9^;h{uzF9U~qgjI2kKFewo?^#pKF)U+@T6j^X`YZvN zhpt(r3ZL>Nq3K)Ip_PzYjYu|x1LqH1mxhx+lhU zjtr8osB=teA>si^D+Pm8RsEWT&}BxGcw+sEF!E~RN{sPzk>{*dQBXLAPW4Q)l#9#?ddX{2<7;e`cQ5kFw~jc1TF08?&kN}k%DleyIGzX+=krEifW8s z`eu??ZuH2dP>I$$H|tYcPSnD!e{(9_Z)FUU0H)RVxU(#pikQ= zwBNina5xkw<%Tx3c_z=s(g{p1{yptrrbcM3gyUiy!82ziq!f6_?8#PFy9@4X3EJcM z$9`x(eX)hdL_-?}2-1<3t)Rs|=fGNjSu0g!ZX$5Dm^1lNjMU*ZlRBIjgt=3uA0)+^YdhUQ*R8p0#A(FxxY;#+ca?;r>M4I zLW2Z-06rCkI%MPrh5NX>^%skpCodjhn2XCC7q<>Ree_rgpG*m#;ERQiD~0tg?k7rb z-bBH~2bzev!2G1cH(S{@^S4>&kSysS0`@1)#?6u)QCF@-@K zG;%1y_P5JEaXPp6r)A*dZmr)!npOSvvBq)!T+41l9OD4Z(f|nX3lODdhbAU~a0?raB8WqBash}T!mqaS$ESQy4s4JEXnXptY)Vu$k8isZXce zU$0^WnEy`g0ysq3Jcxa3>tRj9nTztP+4r$m{xEyxlD+aq_L^>=Kms+qjFbL9QE}{V zR&iP3zIgKd?^JO@vnAi4*}h7(V6^`O%b-)4(lX*(*EVL7u61~S&i}Z*{b%L06t0sr z9RGJ%>dU)}Ug6?Fk@^;9!@Z`vi@}-QFdZ$zymKJ-x^+fN3>Lh_LmDf*4ksb4E$UjB z@J1!P`5!_JPxE}9c^ezo*Vi3!Re2ZBplygdPBzBDY~v!CwXfMZ3?$pw+U!1Wr)8 z1t8x=Kf1Hrb{J)HWy3DEt!4Uv}#fpO&WX|9;8~DFj<1$61=4XzfZw0QS|qfYgC*+fSmfu zno3ENhpG^Yw;Of$L;5?x;NpwFJR0_l>+eVS zBas?CGc|gDq%?Z=#Ts3;_NB2yN{*qSAxahy;95LTCF^#AGzW}&{pU){H>(>}@+%Y# zLq(I+6itpQ=zmhturF6M>7P?H&6JZ`Clp#I{5q|ZG-;i@qIJxc4HZ<$s_3KC)JFqQ z5lOrUKgV{}=o3;Fh2%1~@g?wj5>K`{m{tg8F8bnstpVeEB@vGnURkp8azhj)!A}B5 zPHRm!evt~qE>)tFMxVc46B0y+?+jY00MqAF1I>DJ8kG@!a{w@yPnU;O(s3)21^(8>gE&-*EkhzHZ%C>D zIGKijsjA=qCR7a&OEEP|EkV=+$p?DiUNrKC{zXgs_s>NTg%>yA&3;?w%KA%trWLub zTcf2o4(2Hs8sCN=ue+Q-c=kPb{W-&Qxux=e@i#6bJx{E!GGdooRI*t#i;-4b7M5Ob z?bVznX3~9NBI{5Pt5D#S*~&j9Q@6S@sRaywF@c`Zo*?X<2s=KEHV(LkcB3MC5Ra{; zc!XbrM+@Vn_aIZMz6bDmv=pD@OYsrP{{fVwi7+Y+rlr`Gvvw(V(U)Q;jk$+0tD1dF z(c=?$DQY7PwFiALPQd);E6^jJhbl|)(;2mfUG^o|eYGzVfiLp(FY-mYFP?E4KEYWy${{7v!&61#7ZR)BhRURPr62lov}MpU~H>Go;%x(&aq*)YC0VA-?6w zRn6&0mD5qiv&f?;oe;kHPDpL^Fqov+Xv&bOL=0CVs%x=2F%?WmjRc$Y@B{ z*4Rr~wZF8KXIVXSY^uRxIXWoat?kx-x5ZL5&9Z!-#xm*pZx6<$%JG#@oNtdESL`Im zW?!qszlBD0>a%>0uBlb$Z{I-D;G6vkcdR*F=IF!w zj|V$PhkI>&Otu9{tG8(fw*%k;<0rhDGD=dfHM$AnUh6yK-fL#gtl0!`a+)Pi~4%J`cW z<+XzRIys^Ga3oG(1nlw#e+?Sad`LIQ@q7G}PB|d5roNp=?oh~oxVXdWWQHxIh%=yb z#pjlNG1j@Y!U4daeW$FAuMgo9@$q$xEAQ)=r^oxUjF-}0G%@iql~4)%7B4qxwl_?bTj z|KrZV$GrihpX|Ti8=UOCKOUl@-Z{avgPp<2@Z<68os+%S@^km?&fyRA`SEb)$DRFy zomU5YL;l1&CB8d6`svWjE>D5ziN@0jZdp~mu;4bfacZQN_0HT1hE_!PrO6wnD&66^ z{OAVd)(LQbYRLz(@hGug_+abJq&*cEOSD6}N!!4wf&~98ug!BU zx&MkaW+BPu1ex3?9Fs zp)gtTi;$wXSv~$rZTUv6M{m^P#(`&lW?s~y^}e2eR&uG9rb2_uo|Qz8WW^8rp~vb^ z7^?>(=`B(DRcMb`He&USjq>+Q%V#XV6o zjPbJWvu}T$mSQf8jP1;hXSg-&t6to#R$e-g1`)oZGwOwQ{?@m6boNi-Rk%RnKR37n za((cBKuzJ`$$UJ)(eP4qtO6;N<1h z$&GG#Pv*v*QI>IQlEO8uTV;b$ywPjn_MM(eJWtXwUepP)8t*j*z|}19q@!S-F|U=e zd4PeAvdBCbk9oEE=T`Tr_=o3nyD*<>7?eJLcw6}AS3zpG+k`1zV%`q$cu!2qwOuXk zw*H+l7##z;+semU3ksnp5)CSbVK!Pi@>&tQ$PEywR^7mgzj}+W3i2==<~coMl}Uo| z@a3M-G>pbJ-rMB-oqg_TK|`$_y^lQ8sHDyf)%fA@ra59A6_>6RebQX?X+zPc)uPjX za16{?E*glt-@O*v1V%}GLF|%Yuz4|=R(mLdZ5SbG;iV64QO4zzQZ(&G%3kTM6ZM;;sjwm(RfIqcZ33vDwKL#{Z z2W2cbY>dVDmbNr%7MC#w-%{%gm@LB_&@b@|Q_CO$xBKOO?81HW;!k;6#;FH>Et*U%$((yvU8KkWgORHZ<>TTM6+BNOdn8kB~Hf-Pk5_ z(5%A{L6$@f`(L>W{=%-FkZ^hE@ z>mUQ(@vM)79U0C27>D4Zwdqphtesr6cgSiCfQ4$ccJ?Z@cGBRyy*CR{r)E}hW}a>} zs?+h-@?I~#p0K@%4<`Feo;Y-W+)w(3Tn->4yz(h)Unglarro)Ck~3?^Xr4s$ftat} z<^^u2{Uj-(G3@>1C_A=uz8Joq2It{l(wn@fO(n_Jl69>g_dZy}TgjNw_5+xmvjCqo zcLyjhTOLlzNs)p0|mc!TpmlKk9{}0;>m~F za*VhcJMhyEh&wQTNqpkdB0)b8PxBlnAdhcsD+=>AHVnduXS_Xmf8gPoUm>4kbu<4H z6kA=r6)(qwe#-LD&`{|efF?6iM5bMEY4H~Oc4;_LKZ+rMUK-}A&( z$Jv;;7yd@Oy$wGm{s#WJ@;|W2-sib(ZQq@?e$9W4f4%rMJwwo^|N8aU>{si%ZGYoz z-LbXY?|uCP%AWp9eM5y$FSq?OXw$m;&bf1(yHy9@LbDuq=x=-nZSMLT7W_H)H~s~6 z`Kr(z88CNfYXm@l^g9aLI;$I@J3vwa3wAmkc=fUyu(MEs2pN+X6~E4VlEmkat8e^`BU9`97Gt`+jAHxT)aez~`|E z@VorlGqijbykY)B%)WD@)@g1K%PZUJ*fx`GJ++S$j6kQDBoFDJ-J%GggqbO{1+;dZxP zP-Pdd&;MK#YUO&d8~dkcL;+m>-r_GvyaYk9ZGl{ZSvv3GpkM*!Z}!;Bu*cTdoe~n> z?L-807cgso0pJvhVU^zWWhk1#tBUEyntgm+*Pp^nkMJ7iksUgskN(2xIa6ON=Hm38 z_br%Qc%9PXw0qW%{0mP}R-{byl&!PAeGdLhmfQH@(4E(Ea=qNJ)-jdl0d2H)^tzAE z5Km0RmaqEOHg9(mU`Ar-aWv=DPp5o|j}U=05Z_~ey$5YfJB6`yugTzL5UB!o+c_Jib>odm-;g8)$RvD|ha`AyV z-pna~I7SOUShw@j5T6r!*#{KXZOLC7lEL^n3PUWDJYFFaP}^T&TWN3&qsHwoVS9z* zy)(QUG=eG65`w4|ARuLEo~l7k`bnqMT=v587H)i2h%J(r#(v0KDb;dU6Lze?-6hEI zG2iWoSF>hn4*8of(9-T5>GN#im&M)FsXIG=^FPzHq|3E1i$(rr*%-mPz{4H87(3{(4nBi)#Zb=ROJ5+gY>??_S3@>7kU0g- z-cp+G(S|C_v+>^8h3M1EQIFOnyFPyueaud1(VHIBg~8iVTR)+i!Vd_A;DxD&I}T!h zG{970G?uUec@^buG0uv>7))pE%qa!Y>@-%N`SHfH{!@J%c<({d)Ak+%{!dS|t*L^uZ9o6fCKmdrxDK>ubS-pjI-h6sW6!fxnPnNl;FzT-nf%-hi}FJ96K?eQxwci!OC4hYo)=EInogd=p6@q>yTS6Dr3}_okH!0w$lg=AcBC@!A)`6e2@FKlwXN&XE6VH z-!;1oRDqXKD&B++{r4k50pOz&Qbcc~ViVNX07rs9?Sy|1KvJu$;OgUbbvwP-a&!d^ zh0bchl#C>H00+#8Nxl|a^J~kD@^kS|qh2rCS%OdYq z=mxOTT~bG0T=)tdFf0`9m|t~*I2Qv?4o0Atb$YTs^A=7goZ%I-gnH=Wz4xZ}N{K-O zL#Lp|1h;>26KtaxA0wsNSq=c#G6~LaK1sRyWxXv*!s*#(!kiB9-3b6Z2=SKG2@w_y zYOh-@3XF<_6u_vWyoNtQSgR^eRTbg@tn>=Xi)^uf?MkT{#C?4|J1Y`WnpH;Uh|?P< zX4gSdO1nNSX7o~)Fttl5ACi=(_MB3s0kHBzqTheFL*X63l)yuy>t&vlSzC@L3xRw^ z21XIadHA?~B&2-3hEPC?_*;r)-}*btd3#6W?N{;=P2zKLg=WIvVew;`wLA1nfyIBt zl8P}{h`aI;Izx=%L-N{GplhdGbxD1do7JsJh{=+hk`PjryA_J{Im$JQ>b5pT&D*cA z#a@5)VF_TcZkJ+=QmgSWl?DYPReWD!kS>u6J5&I)W^?wdLa+tL1Vj@GHDYGu6WlY^ z$92V>yE`%G!D^?A?)$bHYe05KZl_+|`CvOb8#rDrkAq?Yl!MPzQG6AzdM(e4c1nwy z9~U{PYk*tX zi`8l^Ak4I+l)#i)*8~!`RK$kCOIx|_QXnY7!ka5js^VM5S9F&Ir8h`zOT2roHk8K- zhg~F?t-T!2P_4yH9tW82#?%CaVscTc_xe#UoA2^NHG_KXO(FUvyymrM0aqB<*(t8Qnu z-nsHaSK+`DPHkGhCB+89(vaM#u+QlsDRF|0ah(wgl_hwJ4CLzX%1C%2_z3ZtE2MV{ zL$ki#i(j%b%u?b=Yb!V(422lu+7W**?Z-|*C3V52mz7s^Q-3P=8A9P>;|@dqJQWyj zg!f7pbU*sGITr(Ja`yC{6<#R#3q=kaJmIP6G292b88|pFwrxZkAl$0d#Ni!WZPRPZ&8(l38a61fzGst2dIxm)u&e+C5Ba&%k+4LDkS2nc^^G=#pWN> zaSfB<<+=xj>nsC#N&Ulz=QKfgwLN?@ z?jX#7I@oo-pkxwFLDpOuKU6J?7nt?^lsdJ@5FuU9lM9#d-tRF#(jU~9k_425AILitHS-w z2RRz%Z}VAnoJ2RMat4bzdigz0;ot7=ezPy#W5>12ps}j+BR^)BRhQjr1uzW5O(Sco z^QhCsjT28^JkgfK&BbuzbOSAG$1Xi-c*KcDNs%j$P0(lH(j#Z|d&Gb5M0_26AwKC0 z8XF6^9LkNEM`1E@%9zWHn|MSCW0y9q(CL36o0gDX=6oE@WwC_#9OmwET1O)efbW;U0cIbBl5&6C^Xw5&%_FG zw?&!b^lx!>p==r7ew3RE)IKMCZjcz(<49W9y&F$wrpjOQg~yG$edjg14sYH=G0DIm8{d<@k}D;CXsP%L2VBeWKK&mr}vXNzmLq?5`;vaczy1^Knp8?&&Anfx|mI=dM99Z5>;wwSk3Q^;Oe<@?a zfk@TX+v^Veau+ea91Eo6PKxFzi0!y3c;^H4JhNKrqu@QJ-#}e_^<4h$@Y6lK3JkkN zFFUP|e;I3iQZ)P2O48ORJcQN?p%@FsxLcne(9belOHqEd zSWnMXpUkzo#0=x-Xu+g%&d`NaYX63@TBn8cdm$~>(M`-SOSCNuIBH@+!{@6V26Y{I zOZEVCt*v7ZQ*CW6p|uJ|A!_OH7v-%5=CuU8o^<%>Yyq~H*%lAP>XI?{fAV!p-WK2n zc*_oq7Tdn)eKj_z}HHy7r5WTY1v@4uE{uQmSAE-fQcewSsB}KVIXttaa!mXPoa8<9vsZ z=qj-|iQ5rvyE+1kXu=IRVI)S6dP4NUho@h!@;_Lgqm>fv8e{+zw6ap~{^oz&f z`C(7I`@2IN!cgD||c~^3K?yic;qlqtXnrd1-P(kHAf4<6!CkH4c%=m>;$BfSN z`72#@@gdI`t0bt*H+}QZh3&{)e!+OWuLYOX;$&%@@Qx7=r>O# z=NU_{*jV2^%VWqF7;K??XL{OZ+JRz5?9FZ5CRECUxLj-7yCM}7 z)3b>jRj?=ve_Wb2_dBX+39fhy9eyB?!cWKtdDWIi!uC$wCr= zTJBhA1Br15muPP;tDffkhFyw(xWbD7HzCXAHEC{&e@}r`t$NeuZ^BK4%=MS2o5zJV zS%AYblt9X%R0dylDJbdj=oCtlLyfU0$zvENObgA@i;B4|9*4^Y{RDHLny6 zSEgvFVm((?ET^))zRUuKKLyjN@kU6#lO4q0vI3kNvB+6f5i-7WrXB=74bRNG!bAtT zqvRV@f8}YmSdhoxFr7B511C$BfxA=MMPEIWQBEw{Z$KMq(0R7I8=Gj$;&qC6KtStC zj$H{I)&UD_8eZh~n6^&QPVREA7p^6cbfH{zW>exxLdw`mt%($QlDMmf_-aNk2FRK$ zVRP%h*nU%3lzIW@uWO+;K<#3yVj|)@{!y-C#KQDF7J=7(qJHD0z3m>UQhZHf z>D`t>+L$chFxEJ~I?^?UH$%}HpDbrOD=pwGSP#dhf(x)-F%GlkMEGkFeXTY1Fs@3} z33FH>r*AI+iSrKa6=M4%lgmDOAFbi=d0JNC)yWakUbNpo>`cVXXFm-}`L zZ6DyY9%^mc4>;{ly`=@UeSzK1W84==!QXRt;9iSIkAxsN^pg=m7k{ti!-Gq0du>^m znrX0xtBbgKWygfH-dM;?a@_@hNh8iy#t6TCO@!paFDGS#0sc9gfdw71; z<#Sx#J=Ks#B74)7tD@>znbJvUAhmOk_aUfQ&##N^*GWxm8%IdM;ke((=WR6?`G)4Y z+Qsc+%*%!5qF6O&=qf)DCpdqfmPuuk=l�&V%R#8!pSdy&2=BUSh#QN9O$Q?wm{F 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 delta 19193 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 { diff --git a/src/cards/last-result.ts b/src/cards/last-result.ts index bdaa40b..d626597 100644 --- a/src/cards/last-result.ts +++ b/src/cards/last-result.ts @@ -11,7 +11,12 @@ export default class LastResult extends BaseCard { } cardSize(): number { - throw new Error("Method not implemented."); + const data = this.sensor.data as Race; + if(!data || !data.Results) { + return 2; + } + + return (data.Results.length == 0 ? 1 : data.Results.length / 2 ) + 1; } renderResultRow(result: Result): HTMLTemplateResult { diff --git a/src/cards/next-race.ts b/src/cards/next-race.ts index ec559f8..4e7fa22 100644 --- a/src/cards/next-race.ts +++ b/src/cards/next-race.ts @@ -19,7 +19,12 @@ export default class NextRace extends BaseCard { } cardSize(): number { - throw new Error("Method not implemented."); + const data = this.next_race; + if(!data) { + return 2; + } + + return 8; } renderHeader(): HTMLTemplateResult { diff --git a/src/cards/schedule.ts b/src/cards/schedule.ts index 2430da8..6d7114a 100644 --- a/src/cards/schedule.ts +++ b/src/cards/schedule.ts @@ -17,7 +17,12 @@ export default class Schedule extends BaseCard { } cardSize(): number { - throw new Error("Method not implemented."); + const data = this.sensor.data as Race[]; + if(!data) { + return 2; + } + + return (data.length == 0 ? 1 : data.length / 2 ) + 1; } renderSeasonEnded(): HTMLTemplateResult { diff --git a/src/index.ts b/src/index.ts index 40df687..41adc3b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -56,26 +56,25 @@ export default class FormulaOneCard extends LitElement { } renderCardType(): HTMLTemplateResult { - let card: BaseCard; switch(this.config.card_type) { case FormulaOneCardType.ConstructorStandings: - card = new ConstructorStandings(this.config.sensor, this._hass, this.config); + this.card = new ConstructorStandings(this.config.sensor, this._hass, this.config); break; case FormulaOneCardType.DriverStandings: - card = new DriverStandings(this.config.sensor, this._hass, this.config); + this.card = new DriverStandings(this.config.sensor, this._hass, this.config); break; case FormulaOneCardType.Schedule: - card = new Schedule(this.config.sensor, this._hass, this.config); + this.card = new Schedule(this.config.sensor, this._hass, this.config); break; case FormulaOneCardType.NextRace: - card = new NextRace(this.config.sensor, this._hass, this.config); + this.card = new NextRace(this.config.sensor, this._hass, this.config); break; case FormulaOneCardType.LastResult: - card = new LastResult(this.config.sensor, this._hass, this.config); + this.card = new LastResult(this.config.sensor, this._hass, this.config); break; } - return card.render(); + return this.card.render(); } render() : HTMLTemplateResult { diff --git a/tests/cards/constructor-standings.test.ts b/tests/cards/constructor-standings.test.ts index add6dd5..41ed767 100644 --- a/tests/cards/constructor-standings.test.ts +++ b/tests/cards/constructor-standings.test.ts @@ -41,5 +41,35 @@ describe('Testing constructor-standings file', () => { const htmlResult = getRenderString(result); expect(htmlResult).toMatch('
  Constructor Pts Wins
1 Red Bull 576 13
2 Ferrari 439 4
3 Mercedes 373 0
4 McLaren 129 0
5 Alpine F1 Team 125 0
6 Alfa Romeo 52 0
7 Aston Martin 37 0
8 Haas F1 Team 34 0
9 AlphaTauri 34 0
10 Williams 6 0
'); + }), + test('Calling cardSize with hass and sensor', () => { + + hassEntity.attributes['data'] = data as ConstructorStanding[]; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new ConstructorStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(6); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = []; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new ConstructorStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(2); + }) + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = undefined; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new ConstructorStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(2); }) }); \ No newline at end of file diff --git a/tests/cards/driver-standings.test.ts b/tests/cards/driver-standings.test.ts index 9f77705..236890b 100644 --- a/tests/cards/driver-standings.test.ts +++ b/tests/cards/driver-standings.test.ts @@ -57,5 +57,35 @@ describe('Testing driver-standings file', () => { const htmlResult = getRenderString(result); expect(htmlResult).toMatch('
  Driver Team Pts Wins
1  VER Max Verstappen Red Bull 341 11
2  LEC Charles Leclerc Ferrari 237 3
3  PER Sergio Pérez Red Bull 235 2
4  RUS George Russell Mercedes 203 0
5  SAI Carlos Sainz Ferrari 202 1
6  HAM Lewis Hamilton Mercedes 170 0
7  NOR Lando Norris McLaren 100 0
8  OCO Esteban Ocon Alpine F1 Team 66 0
9  ALO Fernando Alonso Alpine F1 Team 59 0
10  BOT Valtteri Bottas Alfa Romeo 46 0
11  RIC Daniel Ricciardo McLaren 29 0
12  VET Sebastian Vettel Aston Martin 24 0
13  GAS Pierre Gasly AlphaTauri 23 0
14  MAG Kevin Magnussen Haas F1 Team 22 0
15  STR Lance Stroll Aston Martin 13 0
16  MSC Mick Schumacher Haas F1 Team 12 0
17  TSU Yuki Tsunoda AlphaTauri 11 0
18  ZHO Guanyu Zhou Alfa Romeo 6 0
19  ALB Alexander Albon Williams 4 0
20  DEV Nyck de Vries Williams 2 0
21  LAT Nicholas Latifi Williams 0 0
22  HUL Nico Hülkenberg Aston Martin 0 0
'); + }), + test('Calling cardSize with hass and sensor', () => { + + hassEntity.attributes['data'] = data as DriverStanding[]; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new DriverStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(12); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = []; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new DriverStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(2); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = undefined; + hass.states = { + 'sensor.test_sensor_constructors': hassEntity + }; + + const card = new DriverStandings('sensor.test_sensor_constructors', hass, config); + expect(card.cardSize()).toBe(2); }) }); \ No newline at end of file diff --git a/tests/cards/last-result.test.ts b/tests/cards/last-result.test.ts index 0a60e92..67cee4c 100644 --- a/tests/cards/last-result.test.ts +++ b/tests/cards/last-result.test.ts @@ -67,5 +67,36 @@ describe('Testing last-result file', () => { const htmlResult = getRenderString(result); expect(htmlResult).toMatch('

  17 : Singapore Grand Prix


'); + }), + test('Calling cardSize with hass and sensor', () => { + + hassEntity.attributes['data'] = data as Race; + hass.states = { + 'sensor.test_sensor_last_result': hassEntity + }; + + const card = new LastResult('sensor.test_sensor_last_result', hass, config); + expect(card.cardSize()).toBe(11); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = undefined; + hass.states = { + 'sensor.test_sensor_last_result': hassEntity + }; + + const card = new LastResult('sensor.test_sensor_last_result', hass, config); + expect(card.cardSize()).toBe(2); + }), + test('Calling cardSize with hass and sensor', () => { + const raceData = data as Race; + raceData.Results = []; + hassEntity.attributes['data'] = raceData; + hass.states = { + 'sensor.test_sensor_last_result': hassEntity + }; + + const card = new LastResult('sensor.test_sensor_last_result', hass, config); + expect(card.cardSize()).toBe(2); }) }); \ No newline at end of file diff --git a/tests/cards/next-race.test.ts b/tests/cards/next-race.test.ts index 57e8b81..4d10b14 100644 --- a/tests/cards/next-race.test.ts +++ b/tests/cards/next-race.test.ts @@ -117,5 +117,26 @@ describe('Testing next-race file', () => { const htmlResult = getRenderString(result); expect(htmlResult).toMatch('
Season is over. See you next year!
'); + }), + test('Calling cardSize with hass and sensor', () => { + + const raceData = data as Race; + hassEntity.attributes['next_race'] = raceData; + hass.states = { + 'sensor.test_sensor_races': hassEntity + }; + + const card = new NextRace('sensor.test_sensor_races', hass, config); + expect(card.cardSize()).toBe(8); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['next_race'] = undefined; + hass.states = { + 'sensor.test_sensor_races': hassEntity + }; + + const card = new NextRace('sensor.test_sensor_races', hass, config); + expect(card.cardSize()).toBe(2); }) }); \ No newline at end of file diff --git a/tests/cards/schedule.test.ts b/tests/cards/schedule.test.ts index d260396..c66486e 100644 --- a/tests/cards/schedule.test.ts +++ b/tests/cards/schedule.test.ts @@ -99,5 +99,35 @@ describe('Testing schedule file', () => { const htmlResult = getRenderString(result); expect(htmlResult).toMatch('
Season is over. See you next year!
'); + }), + test('Calling cardSize with hass and sensor', () => { + + hassEntity.attributes['data'] = data as Race[]; + hass.states = { + 'sensor.test_sensor_races': hassEntity + }; + + const card = new Schedule('sensor.test_sensor_races', hass, config); + expect(card.cardSize()).toBe(12); + }), + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = []; + hass.states = { + 'sensor.test_sensor_races': hassEntity + }; + + const card = new Schedule('sensor.test_sensor_races', hass, config); + expect(card.cardSize()).toBe(2); + }) + test('Calling cardSize with hass and sensor without data', () => { + + hassEntity.attributes['data'] = undefined; + hass.states = { + 'sensor.test_sensor_races': hassEntity + }; + + const card = new Schedule('sensor.test_sensor_races', hass, config); + expect(card.cardSize()).toBe(2); }) }); \ No newline at end of file diff --git a/tests/index.test.ts b/tests/index.test.ts index e8724ca..de60835 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -179,6 +179,27 @@ describe('Testing index file function setConfig', () => { const result = card['shouldUpdate'](props); expect(result).toBeTruthy(); + }), + test.each` + type | expected + ${FormulaOneCardType.ConstructorStandings}, ${2} + ${FormulaOneCardType.DriverStandings}, ${2} + ${FormulaOneCardType.LastResult}, ${2} + ${FormulaOneCardType.NextRace}, ${8} + ${FormulaOneCardType.Schedule}, ${2} + `('Calling getCardSize with type should return card size', ({ type, expected }) => { + + const config: FormulaOneCardConfig = { + type: '', + title: 'Test', + card_type: type.toString(), + sensor: 'sensor.test_sensor_races' + } + + card.setConfig(config); + card.hass = hass; + card.render(); + expect(card.getCardSize()).toBe(expected); }) })