diff --git a/screen_manager/app/static/assets/de-B5ljNtf2.js b/screen_manager/app/static/assets/de-B5ljNtf2.js new file mode 100644 index 0000000..2ad105f --- /dev/null +++ b/screen_manager/app/static/assets/de-B5ljNtf2.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Ein"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Aus"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Nicht verfügbar"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Aus"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Heizbetrieb"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Kühlbetrieb"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Heizen/Kühlen"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Entfeuchtung"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Nur Lüftung"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Heizbetrieb"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Kühlbetrieb"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Leerlauf"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Aus"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Entfeuchtung"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Lüftung"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Vorheizen"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Enteisung"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Geöffnet"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Geschlossen"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Wird geöffnet"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Wird geschlossen"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Wiedergabe"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Pausiert"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Leerlauf"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"Standby"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Zuhause"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Abwesend"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Über dem Horizont"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Unter dem Horizont"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Angedockt"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Reinigt"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Pausiert"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Rückkehr zur Ladestation"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Leerlauf"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Sonnig"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Klare Nacht"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Bewölkt"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Teilweise bewölkt"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Regnerisch"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Strömender Regen"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Schneefall"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Schneeregen"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Nebel"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Hagel"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Gewitter"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Gewitter, regnerisch"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Windig"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Außergewöhnlich"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Niedrig"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Wird geladen"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Wird nicht geladen"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Kalt"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Verbunden"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Getrennt"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Geöffnet"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Geschlossen"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Geöffnet"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Geschlossen"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Heiß"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Licht erkannt"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Kein Licht"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Aufgeschlossen"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Abgeschlossen"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Nass"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Trocken"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"Bewegt sich"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Bewegt sich nicht"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Geöffnet"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Geschlossen"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Eingesteckt"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Ausgesteckt"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Ein"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Aus"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Zuhause"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Abwesend"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problem"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"In Betrieb"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Außer Betrieb"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Unsicher"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Sicher"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Manipulation erkannt"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Update verfügbar"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Aktuell"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Erkannt"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Frei"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Geöffnet"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Geschlossen"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Aktivieren"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Ausführen"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Drücken"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Gerade eben"}},minutes_ago:{t:0,b:{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Min."}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Vor 1 Stunde"},{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Stunden"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Gestern"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Vor 1 Tag"},{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Tagen"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Vor 1 Woche"},{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Wochen"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Vor 1 Monat"},{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Monaten"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Vor 1 Jahr"},{t:2,i:[{t:3,v:"Vor "},{t:4,k:"n"},{t:3,v:" Jahren"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" Min."}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"In 1 Stunde"},{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" Stunden"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Morgen"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"In 1 Tag"},{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" Tagen"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"AM"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"PM"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"Sonntag"}},{t:0,b:{t:2,i:[{t:3}],s:"Montag"}},{t:0,b:{t:2,i:[{t:3}],s:"Dienstag"}},{t:0,b:{t:2,i:[{t:3}],s:"Mittwoch"}},{t:0,b:{t:2,i:[{t:3}],s:"Donnerstag"}},{t:0,b:{t:2,i:[{t:3}],s:"Freitag"}},{t:0,b:{t:2,i:[{t:3}],s:"Samstag"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"So"}},{t:0,b:{t:2,i:[{t:3}],s:"Mo"}},{t:0,b:{t:2,i:[{t:3}],s:"Di"}},{t:0,b:{t:2,i:[{t:3}],s:"Mi"}},{t:0,b:{t:2,i:[{t:3}],s:"Do"}},{t:0,b:{t:2,i:[{t:3}],s:"Fr"}},{t:0,b:{t:2,i:[{t:3}],s:"Sa"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"So"}},{t:0,b:{t:2,i:[{t:3}],s:"Mo"}},{t:0,b:{t:2,i:[{t:3}],s:"Di"}},{t:0,b:{t:2,i:[{t:3}],s:"Mi"}},{t:0,b:{t:2,i:[{t:3}],s:"Do"}},{t:0,b:{t:2,i:[{t:3}],s:"Fr"}},{t:0,b:{t:2,i:[{t:3}],s:"Sa"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"Januar"}},{t:0,b:{t:2,i:[{t:3}],s:"Februar"}},{t:0,b:{t:2,i:[{t:3}],s:"März"}},{t:0,b:{t:2,i:[{t:3}],s:"April"}},{t:0,b:{t:2,i:[{t:3}],s:"Mai"}},{t:0,b:{t:2,i:[{t:3}],s:"Juni"}},{t:0,b:{t:2,i:[{t:3}],s:"Juli"}},{t:0,b:{t:2,i:[{t:3}],s:"August"}},{t:0,b:{t:2,i:[{t:3}],s:"September"}},{t:0,b:{t:2,i:[{t:3}],s:"Oktober"}},{t:0,b:{t:2,i:[{t:3}],s:"November"}},{t:0,b:{t:2,i:[{t:3}],s:"Dezember"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"Jan."}},{t:0,b:{t:2,i:[{t:3}],s:"Feb."}},{t:0,b:{t:2,i:[{t:3}],s:"März"}},{t:0,b:{t:2,i:[{t:3}],s:"Apr."}},{t:0,b:{t:2,i:[{t:3}],s:"Mai"}},{t:0,b:{t:2,i:[{t:3}],s:"Juni"}},{t:0,b:{t:2,i:[{t:3}],s:"Juli"}},{t:0,b:{t:2,i:[{t:3}],s:"Aug."}},{t:0,b:{t:2,i:[{t:3}],s:"Sept."}},{t:0,b:{t:2,i:[{t:3}],s:"Okt."}},{t:0,b:{t:2,i:[{t:3}],s:"Nov."}},{t:0,b:{t:2,i:[{t:3}],s:"Dez."}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:". "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:". "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:". "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:"."}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"1"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Seite "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/de-D8f1sCWy.js b/screen_manager/app/static/assets/de-D8f1sCWy.js deleted file mode 100644 index a8fe755..0000000 --- a/screen_manager/app/static/assets/de-D8f1sCWy.js +++ /dev/null @@ -1 +0,0 @@ -const e={name:"Deutsch",english:"German",script:"latin",plural:"one_other",clock:"24",checked:!1},t={},c={_meta:e,editor:t};export{e as _meta,c as default,t as editor}; diff --git a/screen_manager/app/static/assets/en-GB-BZ7UoEeO.js b/screen_manager/app/static/assets/en-GB-BZ7UoEeO.js deleted file mode 100644 index 3d7a3b4..0000000 --- a/screen_manager/app/static/assets/en-GB-BZ7UoEeO.js +++ /dev/null @@ -1 +0,0 @@ -const e={name:"English (UK)",english:"English (UK)",script:"latin",plural:"one_other",clock:"24",checked:!0},n={_meta:e};export{e as _meta,n as default}; diff --git a/screen_manager/app/static/assets/en-GB-v9zPRS2K.js b/screen_manager/app/static/assets/en-GB-v9zPRS2K.js new file mode 100644 index 0000000..09acdc1 --- /dev/null +++ b/screen_manager/app/static/assets/en-GB-v9zPRS2K.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"On"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Heat"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Cool"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Heat/Cool"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Dry"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Fan only"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Heating"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Cooling"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Drying"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Fan"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Preheating"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Defrosting"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Opening"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Closing"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Playing"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Paused"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"Standby"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Away"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Above horizon"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Below horizon"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Docked"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Cleaning"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Paused"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Returning to dock"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Sunny"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Clear, night"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Cloudy"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Partly cloudy"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Rainy"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Pouring"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Snowy"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Snowy, rainy"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Fog"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Hail"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Lightning"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Lightning, rainy"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Windy"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Exceptional"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Low"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Charging"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Not charging"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Cold"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Connected"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Disconnected"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Hot"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Light detected"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"No light"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Unlocked"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Locked"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Wet"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Dry"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"Moving"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Not moving"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Plugged in"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Unplugged"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"On"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Away"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problem"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"Running"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Not running"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Unsafe"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Safe"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Tampering detected"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Update available"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Up-to-date"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Unavailable"}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Activate"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Run"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Press"}}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/es-CkwupUxz.js b/screen_manager/app/static/assets/es-CkwupUxz.js deleted file mode 100644 index fc92e16..0000000 --- a/screen_manager/app/static/assets/es-CkwupUxz.js +++ /dev/null @@ -1 +0,0 @@ -const e={name:"Español",english:"Spanish",script:"latin",plural:"one_other",clock:"24",checked:!1},s={},t={_meta:e,editor:s};export{e as _meta,t as default,s as editor}; diff --git a/screen_manager/app/static/assets/es-DUs4hvEG.js b/screen_manager/app/static/assets/es-DUs4hvEG.js new file mode 100644 index 0000000..5831974 --- /dev/null +++ b/screen_manager/app/static/assets/es-DUs4hvEG.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Encendido"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Apagado"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"No disponible"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Apagado"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Calor"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Frío"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Calor/Frío"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Seco"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Solo ventilador"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Calefacción"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Refrigeración"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactivo"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Apagado"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Secando"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Ventilador"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Precalentamiento"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Antihielo"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Abierto"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Cerrado"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Abriendo"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Cerrando"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Reproduciendo"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"En pausa"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactivo"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"En espera"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"En casa"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Fuera"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Sobre el horizonte"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Bajo el horizonte"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"En la base"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Limpiando"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"En pausa"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Volviendo a la base"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactivo"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Soleado"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Despejado, de noche"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Nublado"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Parcialmente nublado"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Lluvioso"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Lluvia torrencial"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Nevado"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Nevado, lluvioso"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Niebla"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Granizo"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Relámpagos"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Relámpagos, lluvioso"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Ventoso"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Excepcional"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Bajo"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Cargando"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"No está cargando"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Frío"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Conectado"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Desconectado"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Abierto"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Cerrado"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Abierto"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Cerrado"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Caliente"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Luz detectada"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Sin luz"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Desbloqueado"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Bloqueado"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Húmedo"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Seco"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"En movimiento"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"No se mueve"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Abierto"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Cerrado"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Enchufado"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Desenchufado"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Encendido"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Apagado"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"En casa"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Fuera"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problema"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"Ejecutando"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"No se está ejecutando"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Inseguro"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Seguro"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Manipulación detectada"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Actualización disponible"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Actualizado"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Detectado"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"No detectado"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Abierto"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Cerrado"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Activar"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Ejecutar"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Pulsa"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Justo ahora"}},minutes_ago:{t:0,b:{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" min"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Hace 1 hora"},{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" horas"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Ayer"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Hace 1 día"},{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" días"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Hace 1 semana"},{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" semanas"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Hace 1 mes"},{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" meses"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Hace 1 año"},{t:2,i:[{t:3,v:"Hace "},{t:4,k:"n"},{t:3,v:" años"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"En "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"En 1 hora"},{t:2,i:[{t:3,v:"En "},{t:4,k:"n"},{t:3,v:" horas"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Mañana"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"En 1 día"},{t:2,i:[{t:3,v:"En "},{t:4,k:"n"},{t:3,v:" días"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"a. m."}},pm:{t:0,b:{t:2,i:[{t:3}],s:"p. m."}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"domingo"}},{t:0,b:{t:2,i:[{t:3}],s:"lunes"}},{t:0,b:{t:2,i:[{t:3}],s:"martes"}},{t:0,b:{t:2,i:[{t:3}],s:"miércoles"}},{t:0,b:{t:2,i:[{t:3}],s:"jueves"}},{t:0,b:{t:2,i:[{t:3}],s:"viernes"}},{t:0,b:{t:2,i:[{t:3}],s:"sábado"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"dom"}},{t:0,b:{t:2,i:[{t:3}],s:"lun"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"mié"}},{t:0,b:{t:2,i:[{t:3}],s:"jue"}},{t:0,b:{t:2,i:[{t:3}],s:"vie"}},{t:0,b:{t:2,i:[{t:3}],s:"sáb"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"dom"}},{t:0,b:{t:2,i:[{t:3}],s:"lun"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"mié"}},{t:0,b:{t:2,i:[{t:3}],s:"jue"}},{t:0,b:{t:2,i:[{t:3}],s:"vie"}},{t:0,b:{t:2,i:[{t:3}],s:"sáb"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"enero"}},{t:0,b:{t:2,i:[{t:3}],s:"febrero"}},{t:0,b:{t:2,i:[{t:3}],s:"marzo"}},{t:0,b:{t:2,i:[{t:3}],s:"abril"}},{t:0,b:{t:2,i:[{t:3}],s:"mayo"}},{t:0,b:{t:2,i:[{t:3}],s:"junio"}},{t:0,b:{t:2,i:[{t:3}],s:"julio"}},{t:0,b:{t:2,i:[{t:3}],s:"agosto"}},{t:0,b:{t:2,i:[{t:3}],s:"septiembre"}},{t:0,b:{t:2,i:[{t:3}],s:"octubre"}},{t:0,b:{t:2,i:[{t:3}],s:"noviembre"}},{t:0,b:{t:2,i:[{t:3}],s:"diciembre"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"ene"}},{t:0,b:{t:2,i:[{t:3}],s:"feb"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"abr"}},{t:0,b:{t:2,i:[{t:3}],s:"may"}},{t:0,b:{t:2,i:[{t:3}],s:"jun"}},{t:0,b:{t:2,i:[{t:3}],s:"jul"}},{t:0,b:{t:2,i:[{t:3}],s:"ago"}},{t:0,b:{t:2,i:[{t:3}],s:"sept"}},{t:0,b:{t:2,i:[{t:3}],s:"oct"}},{t:0,b:{t:2,i:[{t:3}],s:"nov"}},{t:0,b:{t:2,i:[{t:3}],s:"dic"}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" de "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:"."}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"2"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Página "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/fr-C0TB0UkD.js b/screen_manager/app/static/assets/fr-C0TB0UkD.js new file mode 100644 index 0000000..9e6a135 --- /dev/null +++ b/screen_manager/app/static/assets/fr-C0TB0UkD.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Activé"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Désactivé"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Indisponible"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Éteint"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Chauffage"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Climatisation"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Chauffage/Climatisation"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Déshumidification"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Ventilation uniquement"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Chauffe"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Rafraîchit"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactif"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Éteint"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Déshumidifie"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Ventile"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Préchauffage"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Dégivrage"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Ouvert"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Fermé"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Ouverture"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Fermeture"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Lecture en cours"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"En pause"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactif"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"En veille"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Maison"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Absent"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Au-dessus de l'horizon"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Sous l'horizon"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"À la station d'accueil"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Nettoyage"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"En pause"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Retour à la station d'accueil"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactif"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Ensoleillé"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Nuit dégagée"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Nuageux"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Éclaircies"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Pluvieux"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Averses"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Neigeux"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Neigeux, pluvieux"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Brouillard"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Grêle"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Orage"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Orage / Pluie"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Venteux"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Exceptionnel"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Faible"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"En charge"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Pas en charge"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Détecté"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détecté"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Froid"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Connecté"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Déconnecté"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Ouvert"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Fermé"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Ouvert"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Fermé"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Détecté"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détecté"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Chaud"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Lumière détectée"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Pas de lumière"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Déverrouillé"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Verrouillé"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Humide"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Sec"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Détecté"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détecté"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"En mouvement"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Immobile"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Détecté"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détecté"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Ouvert"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Fermé"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Branché"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Débranché"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Activé"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Désactivé"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Maison"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Absent"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problème"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"En cours"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Arrêté"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Dangereux"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Sûr"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Détectée"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détectée"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Détecté"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détecté"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Manipulation détectée"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détectée"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Mise à jour disponible"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"À jour"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Détectée"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Non détectée"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Ouvert"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Fermé"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Activer"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Exécuter"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Appuyer"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"À l'instant"}},minutes_ago:{t:0,b:{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" min"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" heure"}]},{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" heures"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Hier"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" jour"}]},{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" jours"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" semaine"}]},{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" semaines"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" mois"}]},{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" mois"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" an"}]},{t:2,i:[{t:3,v:"Il y a "},{t:4,k:"n"},{t:3,v:" ans"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"Dans "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Dans "},{t:4,k:"n"},{t:3,v:" heure"}]},{t:2,i:[{t:3,v:"Dans "},{t:4,k:"n"},{t:3,v:" heures"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Demain"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Dans "},{t:4,k:"n"},{t:3,v:" jour"}]},{t:2,i:[{t:3,v:"Dans "},{t:4,k:"n"},{t:3,v:" jours"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"AM"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"PM"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"dimanche"}},{t:0,b:{t:2,i:[{t:3}],s:"lundi"}},{t:0,b:{t:2,i:[{t:3}],s:"mardi"}},{t:0,b:{t:2,i:[{t:3}],s:"mercredi"}},{t:0,b:{t:2,i:[{t:3}],s:"jeudi"}},{t:0,b:{t:2,i:[{t:3}],s:"vendredi"}},{t:0,b:{t:2,i:[{t:3}],s:"samedi"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"dim."}},{t:0,b:{t:2,i:[{t:3}],s:"lun."}},{t:0,b:{t:2,i:[{t:3}],s:"mar."}},{t:0,b:{t:2,i:[{t:3}],s:"mer."}},{t:0,b:{t:2,i:[{t:3}],s:"jeu."}},{t:0,b:{t:2,i:[{t:3}],s:"ven."}},{t:0,b:{t:2,i:[{t:3}],s:"sam."}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"dim."}},{t:0,b:{t:2,i:[{t:3}],s:"lun."}},{t:0,b:{t:2,i:[{t:3}],s:"mar."}},{t:0,b:{t:2,i:[{t:3}],s:"mer."}},{t:0,b:{t:2,i:[{t:3}],s:"jeu."}},{t:0,b:{t:2,i:[{t:3}],s:"ven."}},{t:0,b:{t:2,i:[{t:3}],s:"sam."}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"janvier"}},{t:0,b:{t:2,i:[{t:3}],s:"février"}},{t:0,b:{t:2,i:[{t:3}],s:"mars"}},{t:0,b:{t:2,i:[{t:3}],s:"avril"}},{t:0,b:{t:2,i:[{t:3}],s:"mai"}},{t:0,b:{t:2,i:[{t:3}],s:"juin"}},{t:0,b:{t:2,i:[{t:3}],s:"juillet"}},{t:0,b:{t:2,i:[{t:3}],s:"août"}},{t:0,b:{t:2,i:[{t:3}],s:"septembre"}},{t:0,b:{t:2,i:[{t:3}],s:"octobre"}},{t:0,b:{t:2,i:[{t:3}],s:"novembre"}},{t:0,b:{t:2,i:[{t:3}],s:"décembre"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"janv."}},{t:0,b:{t:2,i:[{t:3}],s:"févr."}},{t:0,b:{t:2,i:[{t:3}],s:"mars"}},{t:0,b:{t:2,i:[{t:3}],s:"avr."}},{t:0,b:{t:2,i:[{t:3}],s:"mai"}},{t:0,b:{t:2,i:[{t:3}],s:"juin"}},{t:0,b:{t:2,i:[{t:3}],s:"juil."}},{t:0,b:{t:2,i:[{t:3}],s:"août"}},{t:0,b:{t:2,i:[{t:3}],s:"sept."}},{t:0,b:{t:2,i:[{t:3}],s:"oct."}},{t:0,b:{t:2,i:[{t:3}],s:"nov."}},{t:0,b:{t:2,i:[{t:3}],s:"déc."}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:" "}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"1"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Page "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/fr-DqQ0gkYe.js b/screen_manager/app/static/assets/fr-DqQ0gkYe.js deleted file mode 100644 index 83d4cae..0000000 --- a/screen_manager/app/static/assets/fr-DqQ0gkYe.js +++ /dev/null @@ -1 +0,0 @@ -const e={name:"Français",english:"French",script:"latin",plural:"one_upto_1",clock:"24",checked:!1},t={},a={_meta:e,editor:t};export{e as _meta,a as default,t as editor}; diff --git a/screen_manager/app/static/assets/index-CUv9rdNM.js b/screen_manager/app/static/assets/index-CUv9rdNM.js deleted file mode 100644 index 835bb56..0000000 --- a/screen_manager/app/static/assets/index-CUv9rdNM.js +++ /dev/null @@ -1,30 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const r of i.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();function al(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const De={},Wn=[],Gt=()=>{},Er=()=>!1,Do=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fo=e=>e.startsWith("onUpdate:"),st=Object.assign,rl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zu=Object.prototype.hasOwnProperty,Ae=(e,t)=>zu.call(e,t),de=Array.isArray,Cn=e=>Ys(e)==="[object Map]",dn=e=>Ys(e)==="[object Set]",Bl=e=>Ys(e)==="[object Date]",be=e=>typeof e=="function",Ye=e=>typeof e=="string",Xt=e=>typeof e=="symbol",Ie=e=>e!==null&&typeof e=="object",Tr=e=>(Ie(e)||be(e))&&be(e.then)&&be(e.catch),Ar=Object.prototype.toString,Ys=e=>Ar.call(e),Qu=e=>Ys(e).slice(8,-1),Pr=e=>Ys(e)==="[object Object]",cl=e=>Ye(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Cs=al(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Uo=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Zu=/-\w/g,dt=Uo(e=>e.replace(Zu,t=>t.slice(1).toUpperCase())),ed=/\B([A-Z])/g,Nn=Uo(e=>e.replace(ed,"-$1").toLowerCase()),jo=Uo(e=>e.charAt(0).toUpperCase()+e.slice(1)),oi=Uo(e=>e?`on${jo(e)}`:""),qt=(e,t)=>!Object.is(e,t),fo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ho=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Kl;const Vo=()=>Kl||(Kl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function He(e){if(de(e)){const t={};for(let n=0;nn.startsWith("/*")?"":n).split(td).forEach(n=>{if(n){const s=n.split(nd);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ve(e){let t="";if(Ye(e))t=e;else if(de(e))for(let n=0;nMt(n,t))}const Or=e=>!!(e&&e.__v_isRef===!0),f=e=>Ye(e)?e:e==null?"":de(e)||Ie(e)&&(e.toString===Ar||!be(e.toString))?Or(e)?f(e.value):JSON.stringify(e,Nr,2):String(e),Nr=(e,t)=>Or(t)?Nr(e,t.value):Cn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],i)=>(n[ii(s,i)+" =>"]=o,n),{})}:dn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ii(n))}:Xt(t)?ii(t):Ie(t)&&!de(t)&&!Pr(t)?String(t):t,ii=(e,t="")=>{var n;return Xt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let ze;class Mr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ze&&(ze.active?(this.parent=ze,this.index=(ze.scopes||(ze.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t0&&--this._on===0){if(ze===this)ze=this.prevScope;else{let t=ze;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Ts){let t=Ts;for(Ts=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Es;){let t=Es;for(Es=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function jr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Hr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),pl(s),dd(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Ai(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Vr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Vr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Os)||(e.globalVersion=Os,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ai(e))))return;e.flags|=2;const t=e.dep,n=Fe,s=Nt;Fe=e,Nt=!0;try{jr(e);const o=e.fn(e._value);(t.version===0||qt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Fe=n,Nt=s,Hr(e),e.flags&=-3}}function pl(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)pl(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dd(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Nt=!0;const Wr=[];function fn(){Wr.push(Nt),Nt=!1}function pn(){const e=Wr.pop();Nt=e===void 0?!0:e}function Gl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Fe;Fe=void 0;try{t()}finally{Fe=n}}}let Os=0;class fd{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class hl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Fe||!Nt||Fe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Fe)n=this.activeLink=new fd(Fe,this),Fe.deps?(n.prevDep=Fe.depsTail,Fe.depsTail.nextDep=n,Fe.depsTail=n):Fe.deps=Fe.depsTail=n,Br(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Fe.depsTail,n.nextDep=void 0,Fe.depsTail.nextDep=n,Fe.depsTail=n,Fe.deps===n&&(Fe.deps=s)}return n}trigger(t){this.version++,Os++,this.notify(t)}notify(t){dl();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{fl()}}}function Br(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Br(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Pi=new WeakMap,Bn=Symbol(""),Li=Symbol(""),Ns=Symbol("");function it(e,t,n){if(Nt&&Fe){let s=Pi.get(e);s||Pi.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new hl),o.map=s,o.key=n),o.track()}}function on(e,t,n,s,o,i){const r=Pi.get(e);if(!r){Os++;return}const c=d=>{d&&d.trigger()};if(dl(),t==="clear")r.forEach(c);else{const d=de(e),h=d&&cl(n);if(d&&n==="length"){const p=Number(s);r.forEach((g,v)=>{(v==="length"||v===Ns||!Xt(v)&&v>=p)&&c(g)})}else switch((n!==void 0||r.has(void 0))&&c(r.get(n)),h&&c(r.get(Ns)),t){case"add":d?h&&c(r.get("length")):(c(r.get(Bn)),Cn(e)&&c(r.get(Li)));break;case"delete":d||(c(r.get(Bn)),Cn(e)&&c(r.get(Li)));break;case"set":Cn(e)&&c(r.get(Bn));break}}fl()}function Zn(e){const t=Se(e);return t===e||(it(t,"iterate",Ns),Ct(e))?t:zt(e)?En(e)?t.map(n=>An(Pt(n))):t.map(An):t.map(Pt)}function Wo(e){return it(e=Se(e),"iterate",Ns),e}function Kt(e,t){return zt(e)?An(En(e)?Pt(t):t):Pt(t)}const pd={__proto__:null,[Symbol.iterator](){return ai(this,Symbol.iterator,e=>Kt(this,e))},concat(...e){return Zn(this).concat(...e.map(t=>de(t)?Zn(t):t))},entries(){return ai(this,"entries",e=>(e[1]=Kt(this,e[1]),e))},every(e,t){return Qt(this,"every",e,t,void 0,arguments)},filter(e,t){return Qt(this,"filter",e,t,n=>n.map(s=>Kt(this,s)),arguments)},find(e,t){return Qt(this,"find",e,t,n=>Kt(this,n),arguments)},findIndex(e,t){return Qt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Qt(this,"findLast",e,t,n=>Kt(this,n),arguments)},findLastIndex(e,t){return Qt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Qt(this,"forEach",e,t,void 0,arguments)},includes(...e){return ri(this,"includes",e)},indexOf(...e){return ri(this,"indexOf",e)},join(e){return Zn(this).join(e)},lastIndexOf(...e){return ri(this,"lastIndexOf",e)},map(e,t){return Qt(this,"map",e,t,void 0,arguments)},pop(){return vs(this,"pop")},push(...e){return vs(this,"push",e)},reduce(e,...t){return Jl(this,"reduce",e,t)},reduceRight(e,...t){return Jl(this,"reduceRight",e,t)},shift(){return vs(this,"shift")},some(e,t){return Qt(this,"some",e,t,void 0,arguments)},splice(...e){return vs(this,"splice",e)},toReversed(){return Zn(this).toReversed()},toSorted(e){return Zn(this).toSorted(e)},toSpliced(...e){return Zn(this).toSpliced(...e)},unshift(...e){return vs(this,"unshift",e)},values(){return ai(this,"values",e=>Kt(this,e))}};function ai(e,t,n){const s=Wo(e),o=s[t]();return s!==e&&!Ct(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.done||(i.value=n(i.value)),i}),o}const hd=Array.prototype;function Qt(e,t,n,s,o,i){const r=Wo(e),c=r!==e&&!Ct(e),d=r[t];if(d!==hd[t]){const g=d.apply(e,i);return c?Pt(g):g}let h=n;r!==e&&(c?h=function(g,v){return n.call(this,Kt(e,g),v,e)}:n.length>2&&(h=function(g,v){return n.call(this,g,v,e)}));const p=d.call(r,h,s);return c&&o?o(p):p}function Jl(e,t,n,s){const o=Wo(e),i=o!==e&&!Ct(e);let r=n,c=!1;o!==e&&(i?(c=s.length===0,r=function(h,p,g){return c&&(c=!1,h=Kt(e,h)),n.call(this,h,Kt(e,p),g,e)}):n.length>3&&(r=function(h,p,g){return n.call(this,h,p,g,e)}));const d=o[t](r,...s);return c?Kt(e,d):d}function ri(e,t,n){const s=Se(e);it(s,"iterate",Ns);const o=s[t](...n);return(o===-1||o===!1)&&vl(n[0])?(n[0]=Se(n[0]),s[t](...n)):o}function vs(e,t,n=[]){fn(),dl();const s=Se(e)[t].apply(e,n);return fl(),pn(),s}const md=al("__proto__,__v_isRef,__isVue"),Kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xt));function gd(e){Xt(e)||(e=String(e));const t=Se(this);return it(t,"has",e),t.hasOwnProperty(e)}class Yr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(o?i?Cd:Xr:i?Jr:Gr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const r=de(t);if(!o){let d;if(r&&(d=pd[n]))return d;if(n==="hasOwnProperty")return gd}const c=Reflect.get(t,n,nt(t)?t:s);if((Xt(n)?Kr.has(n):md(n))||(o||it(t,"get",n),i))return c;if(nt(c)){const d=r&&cl(n)?c:c.value;return o&&Ie(d)?Oi(d):d}return Ie(c)?o?Oi(c):Xn(c):c}}class qr extends Yr{constructor(t=!1){super(!1,t)}set(t,n,s,o){let i=t[n];const r=de(t)&&cl(n);if(!this._isShallow){const h=zt(i);if(!Ct(s)&&!zt(s)&&(i=Se(i),s=Se(s)),!r&&nt(i)&&!nt(s))return h||(i.value=s),!0}const c=r?Number(n)e,no=e=>Reflect.getPrototypeOf(e);function wd(e,t,n){return function(...s){const o=this.__v_raw,i=Se(o),r=Cn(i),c=e==="entries"||e===Symbol.iterator&&r,d=e==="keys"&&r,h=o[e](...s),p=n?Ii:t?An:Pt;return!t&&it(i,"iterate",d?Li:Bn),st(Object.create(h),{next(){const{value:g,done:v}=h.next();return v?{value:g,done:v}:{value:c?[p(g[0]),p(g[1])]:p(g),done:v}}})}}function so(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function kd(e,t){const n={get(o){const i=this.__v_raw,r=Se(i),c=Se(o);e||(qt(o,c)&&it(r,"get",o),it(r,"get",c));const{has:d}=no(r),h=t?Ii:e?An:Pt;if(d.call(r,o))return h(i.get(o));if(d.call(r,c))return h(i.get(c));i!==r&&i.get(o)},get size(){const o=this.__v_raw;return!e&&it(Se(o),"iterate",Bn),o.size},has(o){const i=this.__v_raw,r=Se(i),c=Se(o);return e||(qt(o,c)&&it(r,"has",o),it(r,"has",c)),o===c?i.has(o):i.has(o)||i.has(c)},forEach(o,i){const r=this,c=r.__v_raw,d=Se(c),h=t?Ii:e?An:Pt;return!e&&it(d,"iterate",Bn),c.forEach((p,g)=>o.call(i,h(p),h(g),r))}};return st(n,e?{add:so("add"),set:so("set"),delete:so("delete"),clear:so("clear")}:{add(o){const i=Se(this),r=no(i),c=Se(o),d=!t&&!Ct(o)&&!zt(o)?c:o;return r.has.call(i,d)||qt(o,d)&&r.has.call(i,o)||qt(c,d)&&r.has.call(i,c)||(i.add(d),on(i,"add",d,d)),this},set(o,i){!t&&!Ct(i)&&!zt(i)&&(i=Se(i));const r=Se(this),{has:c,get:d}=no(r);let h=c.call(r,o);h||(o=Se(o),h=c.call(r,o));const p=d.call(r,o);return r.set(o,i),h?qt(i,p)&&on(r,"set",o,i):on(r,"add",o,i),this},delete(o){const i=Se(this),{has:r,get:c}=no(i);let d=r.call(i,o);d||(o=Se(o),d=r.call(i,o)),c&&c.call(i,o);const h=i.delete(o);return d&&on(i,"delete",o,void 0),h},clear(){const o=Se(this),i=o.size!==0,r=o.clear();return i&&on(o,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=wd(o,e,t)}),n}function ml(e,t){const n=kd(e,t);return(s,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(Ae(n,o)&&o in s?n:s,o,i)}const $d={get:ml(!1,!1)},Sd={get:ml(!1,!0)},xd={get:ml(!0,!1)};const Gr=new WeakMap,Jr=new WeakMap,Xr=new WeakMap,Cd=new WeakMap;function Ed(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xn(e){return zt(e)?e:gl(e,!1,_d,$d,Gr)}function Td(e){return gl(e,!1,bd,Sd,Jr)}function Oi(e){return gl(e,!0,yd,xd,Xr)}function gl(e,t,n,s,o){if(!Ie(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=o.get(e);if(i)return i;const r=Ed(Qu(e));if(r===0)return e;const c=new Proxy(e,r===2?s:n);return o.set(e,c),c}function En(e){return zt(e)?En(e.__v_raw):!!(e&&e.__v_isReactive)}function zt(e){return!!(e&&e.__v_isReadonly)}function Ct(e){return!!(e&&e.__v_isShallow)}function vl(e){return e?!!e.__v_raw:!1}function Se(e){const t=e&&e.__v_raw;return t?Se(t):e}function Ad(e){return!Ae(e,"__v_skip")&&Object.isExtensible(e)&&Lr(e,"__v_skip",!0),e}const Pt=e=>Ie(e)?Xn(e):e,An=e=>Ie(e)?Oi(e):e;function nt(e){return e?e.__v_isRef===!0:!1}function ke(e){return zr(e,!1)}function Pd(e){return zr(e,!0)}function zr(e,t){return nt(e)?e:new Ld(e,t)}class Ld{constructor(t,n){this.dep=new hl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Se(t),this._value=n?t:Pt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ct(t)||zt(t);t=s?t:Se(t),qt(t,n)&&(this._rawValue=t,this._value=s?t:Pt(t),this.dep.trigger())}}function a(e){return nt(e)?e.value:e}const Id={get:(e,t,n)=>t==="__v_raw"?e:a(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return nt(o)&&!nt(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Qr(e){return En(e)?e:new Proxy(e,Id)}class Od{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new hl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Os-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Fe!==this)return Ur(this,!0),!0}get value(){const t=this.dep.track();return Vr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nd(e,t,n=!1){let s,o;return be(e)?s=e:(s=e.get,o=e.set),new Od(s,o,n)}const oo={},go=new WeakMap;let Hn;function Md(e,t=!1,n=Hn){if(n){let s=go.get(n);s||go.set(n,s=[]),s.push(e)}}function Rd(e,t,n=De){const{immediate:s,deep:o,once:i,scheduler:r,augmentJob:c,call:d}=n,h=x=>o?x:Ct(x)||o===!1||o===0?ln(x,1):ln(x);let p,g,v,$,U=!1,A=!1;if(nt(e)?(g=()=>e.value,U=Ct(e)):En(e)?(g=()=>h(e),U=!0):de(e)?(A=!0,U=e.some(x=>En(x)||Ct(x)),g=()=>e.map(x=>{if(nt(x))return x.value;if(En(x))return h(x);if(be(x))return d?d(x,2):x()})):be(e)?t?g=d?()=>d(e,2):e:g=()=>{if(v){fn();try{v()}finally{pn()}}const x=Hn;Hn=p;try{return d?d(e,3,[$]):e($)}finally{Hn=x}}:g=Gt,t&&o){const x=g,j=o===!0?1/0:o;g=()=>ln(x(),j)}const T=Rr(),k=()=>{p.stop(),T&&T.active&&rl(T.effects,p)};if(i&&t){const x=t;t=(...j)=>{const O=x(...j);return k(),O}}let S=A?new Array(e.length).fill(oo):oo;const F=x=>{if(!(!(p.flags&1)||!p.dirty&&!x))if(t){const j=p.run();if(x||o||U||(A?j.some((O,C)=>qt(O,S[C])):qt(j,S))){v&&v();const O=Hn;Hn=p;try{const C=[j,S===oo?void 0:A&&S[0]===oo?[]:S,$];S=j,d?d(t,3,C):t(...C)}finally{Hn=O}}}else p.run()};return c&&c(F),p=new Dr(g),p.scheduler=r?()=>r(F,!1):F,$=x=>Md(x,!1,p),v=p.onStop=()=>{const x=go.get(p);if(x){if(d)d(x,4);else for(const j of x)j();go.delete(p)}},t?s?F(!0):S=p.run():r?r(F.bind(null,!0),!0):p.run(),k.pause=p.pause.bind(p),k.resume=p.resume.bind(p),k.stop=k,k}function ln(e,t=1/0,n){if(t<=0||!Ie(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,nt(e))ln(e.value,t,n);else if(de(e))for(let s=0;s{ln(s,t,n)});else if(Pr(e)){for(const s in e)ln(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ln(e[s],t,n)}return e}function qs(e,t,n,s){try{return s?e(...s):e()}catch(o){Bo(o,t,n)}}function Rt(e,t,n,s){if(be(e)){const o=qs(e,t,n,s);return o&&Tr(o)&&o.catch(i=>{Bo(i,t,n)}),o}if(de(e)){const o=[];for(let i=0;i>>1,o=ut[s],i=Ms(o);i=Ms(n)?ut.push(e):ut.splice(Fd(t),0,e),e.flags|=1,ec()}}function ec(){vo||(vo=Zr.then(nc))}function Ud(e){if(!de(e))$n&&e.id===-1?$n.splice(es+1,0,e):e.flags&1||(os.push(e),e.flags|=1);else for(let t=0;tMs(n)-Ms(s));if(os.length=0,$n){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function nc(e){try{for(Wt=0;Wt{s._d&&wo(-1);const i=_o(t),r=Kn.length;let c;try{c=e(...o)}finally{for(let d=Kn.length;d>r;d--)Ac();_o(i),s._d&&wo(1)}return c};return s._n=!0,s._c=!0,s._d=!0,s}function Pe(e,t){if(vt===null)return e;const n=Jo(vt),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&be(t)?t.call(s&&s.proxy):t}}const Hd=Symbol.for("v-scx"),Vd=()=>As(Hd);function Et(e,t,n){return oc(e,t,n)}function oc(e,t,n=De){const{immediate:s,deep:o,flush:i,once:r}=n,c=st({},n),d=t&&s||!t&&i!=="post";let h;if(Fs){if(i==="sync"){const $=Vd();h=$.__watcherHandles||($.__watcherHandles=[])}else if(!d){const $=()=>{};return $.stop=Gt,$.resume=Gt,$.pause=Gt,$}}const p=lt;c.call=($,U,A)=>Rt($,p,U,A);let g=!1;i==="post"?c.scheduler=$=>{pt($,p&&p.suspense)}:i!=="sync"&&(g=!0,c.scheduler=($,U)=>{U?$():_l($)}),c.augmentJob=$=>{t&&($.flags|=4),g&&($.flags|=2,p&&($.id=p.uid,$.i=p))};const v=Rd(e,t,c);return Fs&&(h?h.push(v):d&&v()),v}function Wd(e,t,n){const s=this.proxy,o=Ye(e)?e.includes(".")?ic(s,e):()=>s[e]:e.bind(s,s);let i;be(t)?i=t:(i=t.handler,n=t);const r=Xs(this),c=oc(o,i.bind(s),n);return r(),c}function ic(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,ci=Symbol("_leaveCb");function Kd(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==hn){t=n;break}}return t}function lc(e){if(!bl(e))return Yo(e.type)&&e.children?Kd(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&be(n.default))return n.default()}}function yl(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;yl(Yo(n.type)&&lc(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Me(e,t){return be(e)?st({name:e.name},t,{setup:e}):e}function ac(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function zl(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const yo=new WeakMap;function Ps(e,t,n,s,o=!1){if(de(e)){e.forEach((A,T)=>Ps(A,t&&(de(t)?t[T]:t),n,s,o));return}if(Ls(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Ps(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Jo(s.component):s.el,r=o?null:i,{i:c,r:d}=e,h=t&&t.r,p=c.refs===De?c.refs={}:c.refs,g=c.setupState,v=Se(g),$=g===De?Er:A=>zl(p,A)?!1:Ae(v,A),U=(A,T)=>!(T&&zl(p,T));if(h!=null&&h!==d){if(Ql(t),Ye(h))p[h]=null,$(h)&&(g[h]=null);else if(nt(h)){const A=t;U(h,A.k)&&(h.value=null),A.k&&(p[A.k]=null)}}if(be(d))qs(d,c,12,[r,p]);else{const A=Ye(d),T=nt(d);if(A||T){const k=()=>{if(e.f){const S=A?$(d)?g[d]:p[d]:U()||!e.k?d.value:p[e.k];if(o)de(S)&&rl(S,i);else if(de(S))S.includes(i)||S.push(i);else if(A)p[d]=[i],$(d)&&(g[d]=p[d]);else{const F=[i];U(d,e.k)&&(d.value=F),e.k&&(p[e.k]=F)}}else A?(p[d]=r,$(d)&&(g[d]=r)):T&&(U(d,e.k)&&(d.value=r),e.k&&(p[e.k]=r))};if(r){const S=()=>{k(),yo.delete(e)};S.id=-1,yo.set(e,S),pt(S,n)}else Ql(e),k()}}}function Ql(e){const t=yo.get(e);t&&(t.flags|=8,yo.delete(e))}Vo().requestIdleCallback;Vo().cancelIdleCallback;const Ls=e=>!!e.type.__asyncLoader,bl=e=>e.type.__isKeepAlive;function Yd(e,t){rc(e,"a",t)}function qd(e,t){rc(e,"da",t)}function rc(e,t,n=lt){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(qo(t,s,n),n){let o=n.parent;for(;o&&o.parent;)bl(o.parent.vnode)&&Gd(s,t,n,o),o=o.parent}}function Gd(e,t,n,s){const o=qo(t,e,s,!0);wl(()=>{rl(s[t],o)},n)}function qo(e,t,n=lt,s=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{fn();const c=Xs(n),d=Rt(t,n,e,r);return c(),pn(),d});return s?o.unshift(i):o.push(i),i}}const _n=e=>(t,n=lt)=>{(!Fs||e==="sp")&&qo(e,(...s)=>t(...s),n)},Jd=_n("bm"),Mn=_n("m"),Xd=_n("bu"),zd=_n("u"),ms=_n("bum"),wl=_n("um"),Qd=_n("sp"),Zd=_n("rtg"),ef=_n("rtc");function tf(e,t=lt){qo("ec",e,t)}const cc="components";function Gs(e,t){return dc(cc,e,!0,t)||e}const uc=Symbol.for("v-ndc");function nf(e){return Ye(e)?dc(cc,e,!1)||e:e||uc}function dc(e,t,n=!0,s=!1){const o=vt||lt;if(o){const i=o.type;{const c=jf(i,!1);if(c&&(c===t||c===dt(t)||c===jo(dt(t))))return i}const r=Zl(o[e]||i[e],t)||Zl(o.appContext[e],t);return!r&&s?i:r}}function Zl(e,t){return e&&(e[t]||e[dt(t)]||e[jo(dt(t))])}function ge(e,t,n,s){let o;const i=n,r=de(e);if(r||Ye(e)){const c=r&&En(e);let d=!1,h=!1;c&&(d=!Ct(e),h=zt(e),e=Wo(e)),o=new Array(e.length);for(let p=0,g=e.length;pt(c,d,void 0,i));else{const c=Object.keys(e);o=new Array(c.length);for(let d=0,h=c.length;de?Oc(e)?Jo(e):Ni(e.parent):null,Is=st(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ni(e.parent),$root:e=>Ni(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>pc(e),$forceUpdate:e=>e.f||(e.f=()=>{_l(e.update)}),$nextTick:e=>e.n||(e.n=Ko.bind(e.proxy)),$watch:e=>Wd.bind(e)}),ui=(e,t)=>e!==De&&!e.__isScriptSetup&&Ae(e,t),sf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:i,accessCache:r,type:c,appContext:d}=e;if(t[0]!=="$"){const v=r[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(ui(s,t))return r[t]=1,s[t];if(o!==De&&Ae(o,t))return r[t]=2,o[t];if(Ae(i,t))return r[t]=3,i[t];if(n!==De&&Ae(n,t))return r[t]=4,n[t];Mi&&(r[t]=0)}}const h=Is[t];let p,g;if(h)return t==="$attrs"&&it(e.attrs,"get",""),h(e);if((p=c.__cssModules)&&(p=p[t]))return p;if(n!==De&&Ae(n,t))return r[t]=4,n[t];if(g=d.config.globalProperties,Ae(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:i}=e;return ui(o,t)?(o[t]=n,!0):s!==De&&Ae(s,t)?(s[t]=n,!0):Ae(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:i,type:r}},c){let d;return!!(n[c]||e!==De&&c[0]!=="$"&&Ae(e,c)||ui(t,c)||Ae(i,c)||Ae(s,c)||Ae(Is,c)||Ae(o.config.globalProperties,c)||(d=r.__cssModules)&&d[c])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ae(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ea(e){return de(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Mi=!0;function of(e){const t=pc(e),n=e.proxy,s=e.ctx;Mi=!1,t.beforeCreate&&ta(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:r,watch:c,provide:d,inject:h,created:p,beforeMount:g,mounted:v,beforeUpdate:$,updated:U,activated:A,deactivated:T,beforeDestroy:k,beforeUnmount:S,destroyed:F,unmounted:x,render:j,renderTracked:O,renderTriggered:C,errorCaptured:I,serverPrefetch:K,expose:M,inheritAttrs:he,components:z,directives:oe,filters:pe}=t;if(h&&lf(h,s,null),r)for(const ye in r){const $e=r[ye];be($e)&&(s[ye]=$e.bind(n))}if(o){const ye=o.call(n,n);Ie(ye)&&(e.data=Xn(ye))}if(Mi=!0,i)for(const ye in i){const $e=i[ye],Ge=be($e)?$e.bind(n,n):be($e.get)?$e.get.bind(n,n):Gt,ae=!be($e)&&be($e.set)?$e.set.bind(n):Gt,ee=L({get:Ge,set:ae});Object.defineProperty(s,ye,{enumerable:!0,configurable:!0,get:()=>ee.value,set:Y=>ee.value=Y})}if(c)for(const ye in c)fc(c[ye],s,n,ye);if(d){const ye=be(d)?d.call(n):d;Reflect.ownKeys(ye).forEach($e=>{jd($e,ye[$e])})}p&&ta(p,e,"c");function ce(ye,$e){de($e)?$e.forEach(Ge=>ye(Ge.bind(n))):$e&&ye($e.bind(n))}if(ce(Jd,g),ce(Mn,v),ce(Xd,$),ce(zd,U),ce(Yd,A),ce(qd,T),ce(tf,I),ce(ef,O),ce(Zd,C),ce(ms,S),ce(wl,x),ce(Qd,K),de(M))if(M.length){const ye=e.exposed||(e.exposed={});M.forEach($e=>{Object.defineProperty(ye,$e,{get:()=>n[$e],set:Ge=>n[$e]=Ge,enumerable:!0})})}else e.exposed||(e.exposed={});j&&e.render===Gt&&(e.render=j),he!=null&&(e.inheritAttrs=he),z&&(e.components=z),oe&&(e.directives=oe),K&&ac(e)}function lf(e,t,n=Gt){de(e)&&(e=Ri(e));for(const s in e){const o=e[s];let i;Ie(o)?"default"in o?i=As(o.from||s,o.default,!0):i=As(o.from||s):i=As(o),nt(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:r=>i.value=r}):t[s]=i}}function ta(e,t,n){Rt(de(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function fc(e,t,n,s){let o=s.includes(".")?ic(n,s):()=>n[s];if(Ye(e)){const i=t[e];be(i)&&Et(o,i)}else if(be(e))Et(o,e.bind(n));else if(Ie(e))if(de(e))e.forEach(i=>fc(i,t,n,s));else{const i=be(e.handler)?e.handler.bind(n):t[e.handler];be(i)&&Et(o,i,e)}}function pc(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:r}}=e.appContext,c=i.get(t);let d;return c?d=c:!o.length&&!n&&!s?d=t:(d={},o.length&&o.forEach(h=>bo(d,h,r,!0)),bo(d,t,r)),Ie(t)&&i.set(t,d),d}function bo(e,t,n,s=!1){const{mixins:o,extends:i}=t;i&&bo(e,i,n,!0),o&&o.forEach(r=>bo(e,r,n,!0));for(const r in t)if(!(s&&r==="expose")){const c=af[r]||n&&n[r];e[r]=c?c(e[r],t[r]):t[r]}return e}const af={data:na,props:sa,emits:sa,methods:ws,computed:ws,beforeCreate:rt,created:rt,beforeMount:rt,mounted:rt,beforeUpdate:rt,updated:rt,beforeDestroy:rt,beforeUnmount:rt,destroyed:rt,unmounted:rt,activated:rt,deactivated:rt,errorCaptured:rt,serverPrefetch:rt,components:ws,directives:ws,watch:cf,provide:na,inject:rf};function na(e,t){return t?e?function(){return st(be(e)?e.call(this,this):e,be(t)?t.call(this,this):t)}:t:e}function rf(e,t){return ws(Ri(e),Ri(t))}function Ri(e){if(de(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${dt(t)}Modifiers`]||e[`${Nn(t)}Modifiers`];function pf(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||De;let o=n;const i=t.startsWith("update:"),r=i&&ff(s,t.slice(7));r&&(r.trim&&(o=n.map(p=>Ye(p)?p.trim():p)),r.number&&(o=o.map(Ho)));let c,d=s[c=oi(t)]||s[c=oi(dt(t))];!d&&i&&(d=s[c=oi(Nn(t))]),d&&Rt(d,e,6,o);const h=s[c+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Rt(h,e,6,o)}}const hf=new WeakMap;function mc(e,t,n=!1){const s=n?hf:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const i=e.emits;let r={},c=!1;if(!be(e)){const d=h=>{const p=mc(h,t,!0);p&&(c=!0,st(r,p))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!i&&!c?(Ie(e)&&s.set(e,null),null):(de(i)?i.forEach(d=>r[d]=null):st(r,i),Ie(e)&&s.set(e,r),r)}function Go(e,t){return!e||!Do(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Ae(e,t[0].toLowerCase()+t.slice(1))||Ae(e,Nn(t))||Ae(e,t))}function oa(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[i],slots:r,attrs:c,emit:d,render:h,renderCache:p,props:g,data:v,setupState:$,ctx:U,inheritAttrs:A}=e,T=_o(e);let k,S;try{if(n.shapeFlag&4){const x=o||s,j=x;k=Yt(h.call(j,x,p,g,$,v,U)),S=c}else{const x=t;k=Yt(x.length>1?x(g,{attrs:c,slots:r,emit:d}):x(g,null)),S=t.props?c:mf(c)}}catch(x){Kn.length=0,Bo(x,e,1),k=ne(hn)}let F=k;if(S&&A!==!1){const x=Object.keys(S),{shapeFlag:j}=F;x.length&&j&7&&(i&&x.some(Fo)&&(S=gf(S,i)),F=rs(F,S,!1,!0))}if(n.dirs&&(F=rs(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition){const x=Yo(F.type)&&lc(F)||F;yl(x,n.transition)}return k=F,_o(T),k}const mf=e=>{let t;for(const n in e)(n==="class"||n==="style"||Do(n))&&((t||(t={}))[n]=e[n]);return t},gf=(e,t)=>{const n={};for(const s in e)(!Fo(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function vf(e,t,n){const{props:s,children:o,component:i}=e,{props:r,children:c,patchFlag:d}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return s?ia(s,r,h):!!r;if(d&8){const p=t.dynamicProps;for(let g=0;gObject.create(vc),yc=e=>Object.getPrototypeOf(e)===vc;function yf(e,t,n,s=!1){const o={},i=_c();e.propsDefaults=Object.create(null),bc(e,t,o,i);for(const r in e.propsOptions[0])r in o||(o[r]=void 0);n?e.props=s?o:Td(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function bf(e,t,n,s){const{props:o,attrs:i,vnode:{patchFlag:r}}=e,c=Se(o),[d]=e.propsOptions;let h=!1;if((s||r>0)&&!(r&16)){if(r&8){const p=e.vnode.dynamicProps;for(let g=0;g{d=!0;const[v,$]=wc(g,t,!0);st(r,v),$&&c.push(...$)};!n&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!i&&!d)return Ie(e)&&s.set(e,Wn),Wn;if(de(i))for(let p=0;pe==="_"||e==="_ctx"||e==="$stable",$l=e=>de(e)?e.map(Yt):[Yt(e)],kf=(e,t,n)=>{if(t._n)return t;const s=ie((...o)=>$l(t(...o)),n);return s._c=!1,s},kc=(e,t,n)=>{const s=e._ctx;for(const o in e){if(kl(o))continue;const i=e[o];if(be(i))t[o]=kf(o,i,s);else if(i!=null){const r=$l(i);t[o]=()=>r}}},$c=(e,t)=>{const n=$l(t);e.slots.default=()=>n},Sc=(e,t,n)=>{for(const s in t)(n||!kl(s))&&(e[s]=t[s])},$f=(e,t,n)=>{const s=e.slots=_c();if(e.vnode.shapeFlag&32){const o=t._;o?(Sc(s,t,n),n&&Lr(s,"_",o,!0)):kc(t,s)}else t&&$c(e,t)},Sf=(e,t,n)=>{const{vnode:s,slots:o}=e;let i=!0,r=De;if(s.shapeFlag&32){const c=t._;c?n&&c===1?i=!1:Sc(o,t,n):(i=!t.$stable,kc(t,o)),r=t}else t&&($c(e,t),r={default:1});if(i)for(const c in o)!kl(c)&&r[c]==null&&delete o[c]},pt=Af;function xf(e){return Cf(e)}function Cf(e,t){const n=Vo();n.__VUE__=!0;const{insert:s,remove:o,patchProp:i,createElement:r,createText:c,createComment:d,setText:h,setElementText:p,parentNode:g,nextSibling:v,setScopeId:$=Gt,insertStaticContent:U}=e,A=(E,P,H,q=null,W=null,B=null,y=void 0,w=null,N=!!P.dynamicChildren)=>{if(E===P)return;E&&!_s(E,P)&&(q=we(E),Y(E,W,B,!0),E=null),P.patchFlag===-2&&(N=!1,P.dynamicChildren=null),P.dynamicChildren&&E&&E.dynamicChildren&&E.dynamicChildren.hasOnce&&(P.dynamicChildren===Wn&&(P.dynamicChildren=[]),P.dynamicChildren.hasOnce=!0);const{type:R,ref:Z,shapeFlag:X}=P;switch(R){case Js:T(E,P,H,q);break;case hn:k(E,P,H,q);break;case fi:E==null&&S(P,H,q,y);break;case J:z(E,P,H,q,W,B,y,w,N);break;default:X&1?j(E,P,H,q,W,B,y,w,N):X&6?oe(E,P,H,q,W,B,y,w,N):(X&64||X&128)&&R.process(E,P,H,q,W,B,y,w,N,Ft)}Z!=null&&W?Ps(Z,E&&E.ref,B,P||E,!P):Z==null&&E&&E.ref!=null&&Ps(E.ref,null,B,E,!0)},T=(E,P,H,q)=>{if(E==null)s(P.el=c(P.children),H,q);else{const W=P.el=E.el;P.children!==E.children&&h(W,P.children)}},k=(E,P,H,q)=>{E==null?s(P.el=d(P.children||""),H,q):P.el=E.el},S=(E,P,H,q)=>{[E.el,E.anchor]=U(E.children,P,H,q,E.el,E.anchor)},F=({el:E,anchor:P},H,q)=>{let W;for(;E&&E!==P;)W=v(E),s(E,H,q),E=W;s(P,H,q)},x=({el:E,anchor:P})=>{let H;for(;E&&E!==P;)H=v(E),o(E),E=H;o(P)},j=(E,P,H,q,W,B,y,w,N)=>{if(P.type==="svg"?y="svg":P.type==="math"&&(y="mathml"),E==null)O(P,H,q,W,B,y,w,N);else{const R=E.el&&E.el._isVueCE?E.el:null;try{R&&R._beginPatch(),K(E,P,W,B,y,w,N)}finally{R&&R._endPatch()}}},O=(E,P,H,q,W,B,y,w)=>{let N,R;const{props:Z,shapeFlag:X,transition:Q,dirs:D}=E;if(N=E.el=r(E.type,B,Z&&Z.is,Z),X&8?p(N,E.children):X&16&&I(E.children,N,null,q,W,di(E,B),y,w),D&&Un(E,null,q,"created"),C(N,E,E.scopeId,y,q),Z){for(const re in Z)re!=="value"&&!Cs(re)&&i(N,re,null,Z[re],B,q);"value"in Z&&i(N,"value",null,Z.value,B),(R=Z.onVnodeBeforeMount)&&jt(R,q,E)}D&&Un(E,null,q,"beforeMount");const V=Ef(W,Q);V&&Q.beforeEnter(N),s(N,P,H),((R=Z&&Z.onVnodeMounted)||V||D)&&pt(()=>{R&&jt(R,q,E),V&&Q.enter(N),D&&Un(E,null,q,"mounted")},W)},C=(E,P,H,q,W)=>{if(H&&$(E,H),q)for(let B=0;B{for(let R=N;R{const w=P.el=E.el;let{patchFlag:N,dynamicChildren:R,dirs:Z}=P;N|=E.patchFlag&16;const X=E.props||De,Q=P.props||De;let D;if(H&&jn(H,!1),(D=Q.onVnodeBeforeUpdate)&&jt(D,H,P,E),Z&&Un(P,E,H,"beforeUpdate"),H&&jn(H,!0),R&&(!E.dynamicChildren||E.dynamicChildren.length!==R.length)&&(N=0,y=!1,R=null),(X.innerHTML&&Q.innerHTML==null||X.textContent&&Q.textContent==null)&&p(w,""),R?M(E.dynamicChildren,R,w,H,q,di(P,W),B):y||$e(E,P,w,null,H,q,di(P,W),B,!1),N>0){if(N&16)he(w,X,Q,H,W);else if(N&2&&X.class!==Q.class&&i(w,"class",null,Q.class,W),N&4&&i(w,"style",X.style,Q.style,W),N&8){const V=P.dynamicProps;for(let re=0;re{D&&jt(D,H,P,E),Z&&Un(P,E,H,"updated")},q)},M=(E,P,H,q,W,B,y)=>{for(let w=0;w{if(P!==H){if(P!==De)for(const B in P)!Cs(B)&&!(B in H)&&i(E,B,P[B],null,W,q);for(const B in H){if(Cs(B))continue;const y=H[B],w=P[B];y!==w&&B!=="value"&&i(E,B,w,y,W,q)}"value"in H&&i(E,"value",P.value,H.value,W)}},z=(E,P,H,q,W,B,y,w,N)=>{const R=P.el=E?E.el:c(""),Z=P.anchor=E?E.anchor:c("");let{patchFlag:X,dynamicChildren:Q,slotScopeIds:D}=P;D&&(w=w?w.concat(D):D),E==null?(s(R,H,q),s(Z,H,q),I(P.children||[],H,Z,W,B,y,w,N)):X>0&&X&64&&Q&&E.dynamicChildren&&E.dynamicChildren.length===Q.length?(M(E.dynamicChildren,Q,H,W,B,y,w),(P.key!=null||W&&P===W.subTree)&&xc(E,P,!0)):$e(E,P,H,Z,W,B,y,w,N)},oe=(E,P,H,q,W,B,y,w,N)=>{P.slotScopeIds=w,E==null?P.shapeFlag&512?W.ctx.activate(P,H,q,y,N):pe(P,H,q,W,B,y,N):se(E,P,N)},pe=(E,P,H,q,W,B,y)=>{const w=E.component=Mf(E,q,W);if(bl(E)&&(w.ctx.renderer=Ft),Rf(w,!1,y),w.asyncDep){if(W&&W.registerDep(w,ce,y),!E.el){const N=w.subTree=ne(hn);k(null,N,P,H),E.placeholder=N.el}}else ce(w,E,P,H,W,B,y)},se=(E,P,H)=>{const q=P.component=E.component;if(vf(E,P,H))if(q.asyncDep&&!q.asyncResolved){P.el=E.el,ye(q,P,H);return}else q.next=P,q.update();else P.el=E.el,q.vnode=P},ce=(E,P,H,q,W,B,y)=>{const w=()=>{if(E.isMounted){let{next:X,bu:Q,u:D,parent:V,vnode:re}=E;{const kt=Cc(E);if(kt){X&&(X.el=re.el,ye(E,X,y)),kt.asyncDep.then(()=>{pt(()=>{E.isUnmounted||R()},W)});return}}let ue=X,Oe;jn(E,!1),X?(X.el=re.el,ye(E,X,y)):X=re,Q&&fo(Q),(Oe=X.props&&X.props.onVnodeBeforeUpdate)&&jt(Oe,V,X,re),jn(E,!0);const je=oa(E),Be=E.subTree;E.subTree=je,A(Be,je,g(Be.el),we(Be),E,W,B),X.el=je.el,ue===null&&_f(E,je.el),D&&pt(D,W),(Oe=X.props&&X.props.onVnodeUpdated)&&pt(()=>jt(Oe,V,X,re),W)}else{let X;const{el:Q,props:D}=P,{bm:V,m:re,parent:ue,root:Oe,type:je}=E,Be=Ls(P);jn(E,!1),V&&fo(V),!Be&&(X=D&&D.onVnodeBeforeMount)&&jt(X,ue,P),jn(E,!0);{Oe.ce&&Oe.ce._hasShadowRoot()&&Oe.ce._injectChildStyle(je,E.parent?E.parent.type:void 0);const kt=E.subTree=oa(E);A(null,kt,H,q,E,W,B),P.el=kt.el}if(re&&pt(re,W),!Be&&(X=D&&D.onVnodeMounted)){const kt=P;pt(()=>jt(X,ue,kt),W)}(P.shapeFlag&256||ue&&Ls(ue.vnode)&&ue.vnode.shapeFlag&256)&&E.a&&pt(E.a,W),E.isMounted=!0,P=H=q=null}};E.scope.on();const N=E.effect=new Dr(w);E.scope.off();const R=E.update=N.run.bind(N),Z=E.job=N.runIfDirty.bind(N);Z.i=E,Z.id=E.uid,N.scheduler=()=>_l(Z),jn(E,!0),R()},ye=(E,P,H)=>{P.component=E;const q=E.vnode.props;E.vnode=P,E.next=null,bf(E,P.props,q,H),Sf(E,P.children,H),fn(),Xl(E),pn()},$e=(E,P,H,q,W,B,y,w,N=!1)=>{const R=E&&E.children,Z=E?E.shapeFlag:0,X=P.children,{patchFlag:Q,shapeFlag:D}=P;if(Q>0){if(Q&128){ae(R,X,H,q,W,B,y,w,N);return}else if(Q&256){Ge(R,X,H,q,W,B,y,w,N);return}}D&8?(Z&16&&Ee(R,W,B),X!==R&&p(H,X)):Z&16?D&16?ae(R,X,H,q,W,B,y,w,N):Ee(R,W,B,!0):(Z&8&&p(H,""),D&16&&I(X,H,q,W,B,y,w,N))},Ge=(E,P,H,q,W,B,y,w,N)=>{E=E||Wn,P=P||Wn;const R=E.length,Z=P.length,X=Math.min(R,Z);let Q;for(Q=0;QZ?Ee(E,W,B,!0,!1,X):I(P,H,q,W,B,y,w,N,X)},ae=(E,P,H,q,W,B,y,w,N)=>{let R=0;const Z=P.length;let X=E.length-1,Q=Z-1;for(;R<=X&&R<=Q;){const D=E[R],V=P[R]=N?tn(P[R]):Yt(P[R]);if(_s(D,V))A(D,V,H,null,W,B,y,w,N);else break;R++}for(;R<=X&&R<=Q;){const D=E[X],V=P[Q]=N?tn(P[Q]):Yt(P[Q]);if(_s(D,V))A(D,V,H,null,W,B,y,w,N);else break;X--,Q--}if(R>X){if(R<=Q){const D=Q+1,V=DQ)for(;R<=X;)Y(E[R],W,B,!0),R++;else{const D=R,V=R,re=new Map;for(R=V;R<=Q;R++){const gt=P[R]=N?tn(P[R]):Yt(P[R]);gt.key!=null&&re.set(gt.key,R)}let ue,Oe=0;const je=Q-V+1;let Be=!1,kt=0;const Qn=new Array(je);for(R=0;R=je){Y(gt,W,B,!0);continue}let Ut;if(gt.key!=null)Ut=re.get(gt.key);else for(ue=V;ue<=Q;ue++)if(Qn[ue-V]===0&&_s(gt,P[ue])){Ut=ue;break}Ut===void 0?Y(gt,W,B,!0):(Qn[Ut-V]=R+1,Ut>=kt?kt=Ut:Be=!0,A(gt,P[Ut],H,null,W,B,y,w,N),Oe++)}const Hl=Be?Tf(Qn):Wn;for(ue=Hl.length-1,R=je-1;R>=0;R--){const gt=V+R,Ut=P[gt],Vl=P[gt+1],Wl=gt+1{const{el:B,type:y,transition:w,children:N,shapeFlag:R}=E;if(R&6){ee(E.component.subTree,P,H,q);return}if(R&128){E.suspense.move(P,H,q);return}if(R&64){y.move(E,P,H,Ft);return}if(y===J){s(B,P,H);for(let X=0;Xw.enter(B),W));else{const{leave:X,delayLeave:Q,afterLeave:D}=w,V=()=>{E.ctx.isUnmounted?o(B):s(B,P,H)},re=()=>{const ue=B._isLeaving||!!B[ci];B._isLeaving&&B[ci](!0),w.persisted&&!ue?V():X(B,()=>{V(),D&&D()})};Q?Q(B,V,re):re()}else s(B,P,H)},Y=(E,P,H,q=!1,W=!1)=>{const{type:B,props:y,ref:w,children:N,dynamicChildren:R,shapeFlag:Z,patchFlag:X,dirs:Q,cacheIndex:D,memo:V}=E;if((X===-2||R&&R.hasOnce)&&(W=!1),w!=null&&(fn(),Ps(w,null,H,E,!0),pn()),D!=null&&(!E.ctx||E.ctx===P)&&(P.renderCache[D]=void 0),Z&256){P.ctx.deactivate(E);return}const re=Z&1&&Q,ue=!Ls(E);let Oe;if(ue&&(Oe=y&&y.onVnodeBeforeUnmount)&&jt(Oe,P,E),Z&6)te(E.component,H,q);else{if(Z&128){E.suspense.unmount(H,q);return}re&&Un(E,null,P,"beforeUnmount"),Z&64?E.type.remove(E,P,H,Ft,q):R&&!R.hasOnce&&(B!==J||X>0&&X&64)?Ee(R,P,H,!1,!0):(B===J&&X&384||!W&&Z&16)&&Ee(N,P,H),q&&fe(E)}const je=V!=null&&D==null;(ue&&(Oe=y&&y.onVnodeUnmounted)||re||je)&&pt(()=>{Oe&&jt(Oe,P,E),re&&Un(E,null,P,"unmounted"),je&&(E.el=null)},H)},fe=E=>{const{type:P,el:H,anchor:q,transition:W}=E;if(P===J){me(H,q);return}if(P===fi){x(E),W&&!W.persisted&&W.afterLeave&&W.afterLeave();return}const B=()=>{o(H),W&&!W.persisted&&W.afterLeave&&W.afterLeave()};if(E.shapeFlag&1&&W&&!W.persisted){const{leave:y,delayLeave:w}=W,N=()=>y(H,B);w?w(E.el,B,N):N()}else B()},me=(E,P)=>{let H;for(;E!==P;)H=v(E),o(E),E=H;o(P)},te=(E,P,H)=>{const{bum:q,scope:W,job:B,subTree:y,um:w,m:N,a:R}=E;aa(N),aa(R),q&&fo(q),W.stop(),B?(B.flags|=8,Y(y,E,P,H)):E.vnode.el&&y&&(y.transition=E.vnode.transition,Y(y,E,P,H)),w&&pt(w,P),pt(()=>{E.isUnmounted=!0},P)},Ee=(E,P,H,q=!1,W=!1,B=0)=>{for(let y=B;y{if(E.shapeFlag&6)return we(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const P=v(E.anchor||E.el),H=P&&P[Bd];return H?v(H):P};let yn=!1;const zn=(E,P,H)=>{let q;E==null?P._vnode&&(Y(P._vnode,null,null,!0),q=P._vnode.component):A(P._vnode||null,E,P,null,null,null,H),P._vnode=E,yn||(yn=!0,Xl(q),tc(),yn=!1)},Ft={p:A,um:Y,m:ee,r:fe,mt:pe,mc:I,pc:$e,pbc:M,n:we,o:e};return{render:zn,hydrate:void 0,createApp:df(zn)}}function di({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function jn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ef(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function xc(e,t,n=!1){const s=e.children,o=t.children;if(de(s)&&de(o))for(let i=0;i>1,e[n[c]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,r=n[i-1];i-- >0;)n[i]=r,r=t[r];return n}function Cc(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Cc(t)}function aa(e){if(e)for(let t=0;te.__isSuspense;function Af(e,t){t&&t.pendingBranch?de(e)?t.effects.push(...e):t.effects.push(e):Ud(e)}const J=Symbol.for("v-fgt"),Js=Symbol.for("v-txt"),hn=Symbol.for("v-cmt"),fi=Symbol.for("v-stc"),Kn=[];let _t=null;function _(e=!1){Kn.push(_t=e?null:[])}function Ac(){Kn.pop(),_t=Kn[Kn.length-1]||null}let Rs=1;function wo(e,t=!1){Rs+=e,e<0&&_t&&t&&(_t.hasOnce=!0)}function Pc(e){return e.dynamicChildren=Rs>0?_t||Wn:null,Ac(),Rs>0&&_t&&_t.push(e),e}function b(e,t,n,s,o,i){return Pc(l(e,t,n,s,o,i,!0))}function at(e,t,n,s,o){return Pc(ne(e,t,n,s,o,!0))}function ko(e){return e?e.__v_isVNode===!0:!1}function _s(e,t){return e.type===t.type&&e.key===t.key}const Lc=({key:e})=>e??null,po=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ye(e)||nt(e)||be(e)?{i:vt,r:e,k:t,f:!!n}:e:null);function l(e,t=null,n=null,s=0,o=null,i=e===J?0:1,r=!1,c=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Lc(t),ref:t&&po(t),scopeId:sc,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:vt};return c?($o(d,n),i&128&&e.normalize(d)):n&&(d.shapeFlag|=Ye(n)?8:16),Rs>0&&!r&&_t&&(d.patchFlag>0||i&6)&&d.patchFlag!==32&&_t.push(d),d}const ne=Pf;function Pf(e,t=null,n=null,s=0,o=null,i=!1){if((!e||e===uc)&&(e=hn),ko(e)){const c=rs(e,t,!0);return n&&$o(c,n),Rs>0&&!i&&_t&&(c.shapeFlag&6?_t[_t.indexOf(e)]=c:_t.push(c)),c.patchFlag=-2,c}if(Hf(e)&&(e=e.__vccOpts),t){t=Lf(t);let{class:c,style:d}=t;c&&!Ye(c)&&(t.class=ve(c)),Ie(d)&&(vl(d)&&!de(d)&&(d=st({},d)),t.style=He(d))}const r=Ye(e)?1:Tc(e)?128:Yo(e)?64:Ie(e)?4:be(e)?2:0;return l(e,t,n,s,o,r,i,!0)}function Lf(e){return e?vl(e)||yc(e)?st({},e):e:null}function rs(e,t,n=!1,s=!1){const{props:o,ref:i,patchFlag:r,children:c,transition:d}=e,h=t?If(o||{},t):o,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Lc(h),ref:t&&t.ref?n&&i?de(i)?i.concat(po(t)):[i,po(t)]:po(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:c,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==J?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rs(e.ssContent),ssFallback:e.ssFallback&&rs(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return d&&s&&yl(p,d.clone(p)),p}function Re(e=" ",t=0){return ne(Js,null,e,t)}function G(e="",t=!1){return t?(_(),at(hn,null,e)):ne(hn,null,e)}function Yt(e){return e==null||typeof e=="boolean"?ne(hn):de(e)?ne(J,null,e.slice()):ko(e)?tn(e):ne(Js,null,String(e))}function tn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rs(e)}function $o(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(de(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),$o(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!yc(t)?t._ctx=vt:o===3&&vt&&(vt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(be(t)){if(s&65){$o(e,{default:t});return}t={default:t,_ctx:vt},n=32}else t=String(t),s&64?(n=16,t=[Re(t)]):n=8;e.children=t,e.shapeFlag|=n}function If(...e){const t={};for(let n=0;nlt||vt;let So,Ds;{const e=Vo(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),i=>{o.length>1?o.forEach(r=>r(i)):o[0](i)}};So=t("__VUE_INSTANCE_SETTERS__",n=>lt=n),Ds=t("__VUE_SSR_SETTERS__",n=>Fs=n)}const Xs=e=>{const t=lt;return So(e),e.scope.on(),()=>{e.scope.off(),So(t)}},ra=()=>{lt&<.scope.off(),So(null)};function Oc(e){return e.vnode.shapeFlag&4}let Fs=!1;function Rf(e,t=!1,n=!1){t&&Ds(t);const{props:s,children:o}=e.vnode,i=Oc(e);yf(e,s,i,t),$f(e,o,n||t);const r=i?Df(e,t):void 0;return t&&Ds(!1),r}function Df(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,sf);const{setup:s}=n;if(s){fn();const o=e.setupContext=s.length>1?Uf(e):null,i=Xs(e),r=qs(s,e,0,[e.props,o]),c=Tr(r);if(pn(),i(),(c||e.sp)&&!Ls(e)&&ac(e),c){if(r.then(ra,ra),t)return r.then(d=>{Ds(!0);try{ca(e,d,t)}finally{Ds(!1)}}).catch(d=>{Bo(d,e,0)});e.asyncDep=r}else ca(e,r)}else Nc(e)}function ca(e,t,n){be(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ie(t)&&(e.setupState=Qr(t)),Nc(e)}function Nc(e,t,n){const s=e.type;e.render||(e.render=s.render||Gt);{const o=Xs(e);fn();try{of(e)}finally{pn(),o()}}}const Ff={get(e,t){return it(e,"get",""),e[t]}};function Uf(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ff),slots:e.slots,emit:e.emit,expose:t}}function Jo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Qr(Ad(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Is)return Is[n](e)},has(t,n){return n in t||n in Is}})):e.proxy}function jf(e,t=!0){return be(e)?e.displayName||e.name:e.name||t&&e.__name}function Hf(e){return be(e)&&"__vccOpts"in e}const L=(e,t)=>Nd(e,t,Fs);function xo(e,t,n){try{wo(-1);const s=arguments.length;return s===2?Ie(t)&&!de(t)?ko(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&ko(n)&&(n=[n]),ne(e,t,n))}finally{wo(1)}}const Vf="3.5.43";let Fi;const ua=typeof window<"u"&&window.trustedTypes;if(ua)try{Fi=ua.createPolicy("vue",{createHTML:e=>e})}catch{}const Mc=Fi?e=>Fi.createHTML(e):e=>e,Wf="http://www.w3.org/2000/svg",Bf="http://www.w3.org/1998/Math/MathML",en=typeof document<"u"?document:null,da=en&&en.createElement("template"),Kf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?en.createElementNS(Wf,e):t==="mathml"?en.createElementNS(Bf,e):n?en.createElement(e,{is:n}):en.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>en.createTextNode(e),createComment:e=>en.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>en.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,i){const r=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{da.innerHTML=Mc(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const c=da.content;if(s==="svg"||s==="mathml"){const d=c.firstChild;for(;d.firstChild;)c.appendChild(d.firstChild);c.removeChild(d)}t.insertBefore(c,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Yf=Symbol("_vtc");function qf(e,t,n){const s=e[Yf];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const fa=Symbol("_vod"),Gf=Symbol("_vsh"),Jf=Symbol(""),Xf=/(?:^|;)\s*display\s*:/;function zf(e,t,n){const s=e.style,o=Ye(n);let i=!1;if(n&&!o){if(t)if(Ye(t))for(const r of t.split(";")){const c=r.slice(0,r.indexOf(":")).trim();n[c]==null&&ks(s,c,"")}else for(const r in t)n[r]==null&&ks(s,r,"");for(const r in n){r==="display"&&(i=!0);const c=n[r];c!=null?Zf(e,r,!Ye(t)&&t?t[r]:void 0,c)||ks(s,r,c):ks(s,r,"")}}else if(o){if(t!==n){const r=s[Jf];r&&(n+=";"+r),s.cssText=n,i=Xf.test(n)}}else t&&e.removeAttribute("style");fa in e&&(e[fa]=i?s.display:"",e[Gf]&&(s.display="none"))}const io=/\s*!important$/;function ks(e,t,n){if(de(n))n.forEach(s=>ks(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))io.test(n)?e.setProperty(t,n.replace(io,""),"important"):e.setProperty(t,n);else{const s=Qf(e,t);io.test(n)?e.setProperty(Nn(s),n.replace(io,""),"important"):e[s]=n}}const pa=["Webkit","Moz","ms"],pi={};function Qf(e,t){const n=pi[t];if(n)return n;let s=dt(t);if(s!=="filter"&&s in e)return pi[t]=s;s=jo(s);for(let o=0;ohi||(ip.then(()=>hi=0),hi=Date.now());function ap(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(de(o)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const r=o.slice(),c=[s];for(let d=0;de.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,rp=(e,t,n,s,o,i)=>{const r=o==="svg";t==="class"?qf(e,s,r):t==="style"?zf(e,n,s):Do(t)?Fo(t)||tp(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):cp(e,t,s,r))?(ga(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ma(e,t,s,r,i,t!=="value")):e._isVueCE&&(up(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Ye(s)))?ga(e,dt(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ma(e,t,s,r))};function cp(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&_a(t)&&be(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return _a(t)&&Ye(n)?!1:t in e}function up(e,t){const n=e._def.props;if(!n)return!1;const s=dt(t);return Array.isArray(n)?n.some(o=>dt(o)===s):Object.keys(n).some(o=>dt(o)===s)}const Pn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return de(t)?n=>fo(t,n):t};function dp(e){e.target.composing=!0}function ya(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const yt=Symbol("_assign"),lo=Symbol("_initialValue");function mi(e,t,n){return t&&(e=e.trim()),n&&(e=Ho(e)),e}const Qe={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e.parentNode&&(e.type==="text"?e[lo]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[lo]=e.defaultValue.replace(/\r\n?/g,` -`))),e[yt]=Pn(o);const i=s||o.props&&o.props.type==="number";an(e,t?"change":"input",r=>{r.target.composing||e[yt](mi(e.value,n,i))}),(n||i)&&an(e,"change",()=>{e.value=mi(e.value,n,i)}),t||(an(e,"compositionstart",dp),an(e,"compositionend",ya),an(e,"change",ya))},mounted(e,{value:t,modifiers:{trim:n,number:s}}){const o=t??"",i=e[lo];delete e[lo],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[yt](mi(e.value,n,s)):e.value=o},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:i}},r){if(e[yt]=Pn(r),e.composing)return;const c=(i||e.type==="number")&&!/^0\d/.test(e.value)?Ho(e.value):e.value,d=t??"";if(c===d)return;const h=e.getRootNode();(h instanceof Document||h instanceof ShadowRoot)&&h.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===d)||(e.value=d)}},fp={deep:!0,created(e,t,n){e[yt]=Pn(n),an(e,"change",()=>{const s=e._modelValue,o=cs(e),i=e.checked,r=e[yt];if(de(s)){const c=ul(s,o),d=c!==-1;if(i&&!d)r(s.concat(o));else if(!i&&d){const h=[...s];h.splice(c,1),r(h)}}else if(dn(s)){const c=new Set(s);i?c.add(o):c.delete(o),r(c)}else r(Rc(e,i))})},mounted:ba,beforeUpdate(e,t,n){e[yt]=Pn(n),ba(e,t,n)}};function ba(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(de(t))o=ul(t,s.props.value)>-1;else if(dn(t))o=t.has(s.props.value);else{if(t===n)return;o=Mt(t,Rc(e,!0))}e.checked!==o&&(e.checked=o)}const wa={created(e,{value:t},n){e.checked=Mt(t,n.props.value),e[yt]=Pn(n),an(e,"change",()=>{e[yt](cs(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[yt]=Pn(s),t!==n&&(e.checked=Mt(t,s.props.value))}},Yn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,an(e,"change",()=>{const o=Array.prototype.filter.call(e.options,d=>d.selected).map(d=>n?Ho(cs(d)):cs(d)),i=e.multiple,r=i?dn(e._modelValue)?new Set(o):o:o[0],c=e._pendingValue=[i,i?de(r)?o.slice():o:r];try{e[yt](r)}finally{Ko(()=>{e._pendingValue===c&&(e._pendingValue=void 0)})}}),e[yt]=Pn(s)},mounted(e,{value:t}){ka(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[yt]=Pn(n)},updated(e,{value:t}){const n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!pp(t,n[1],n[0]))&&ka(e,t)}};function pp(e,t,n){if(!n||de(e))return Mt(e,t);if(dn(e)){if(e.size!==t.length)return!1;for(const s of t)if(!e.has(s))return!1;return!0}return!1}function ka(e,t){const n=e.multiple,s=de(t);if(!(n&&!s&&!dn(t))){for(let o=0,i=e.options.length;oString(h)===String(c)):r.selected=ul(t,c)>-1}else r.selected=t.has(c);else if(Mt(cs(r),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function cs(e){return"_value"in e?e._value:e.value}function Rc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const hp=["ctrl","shift","alt","meta"],mp={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>hp.some(n=>e[`${n}Key`]&&!t.includes(n))},Lt=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...i)=>{for(let r=0;r{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const i=Nn(o.key);if(t.some(r=>r===i||gp[r]===i))return e(o)}))},vp=st({patchProp:rp},Kf);let $a;function _p(){return $a||($a=xf(vp))}const yp=((...e)=>{const t=_p().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=wp(s);if(!o)return;const i=t._component;!be(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const r=n(o,!1,bp(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),r},t});function bp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wp(e){return Ye(e)?document.querySelector(e):e}const kp="modulepreload",$p=function(e,t){return new URL(e,t).href},Sa={},bn=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){let h=function(p){return Promise.all(p.map(g=>Promise.resolve(g).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};const r=document.getElementsByTagName("link"),c=document.querySelector("meta[property=csp-nonce]"),d=c?.nonce||c?.getAttribute("nonce");o=h(n.map(p=>{if(p=$p(p,s),p in Sa)return;Sa[p]=!0;const g=p.endsWith(".css"),v=g?'[rel="stylesheet"]':"";if(s)for(let U=r.length-1;U>=0;U--){const A=r[U];if(A.href===p&&(!g||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${p}"]${v}`))return;const $=document.createElement("link");if($.rel=g?"stylesheet":kp,g||($.as="script"),$.crossOrigin="",$.href=p,d&&$.setAttribute("nonce",d),document.head.appendChild($),g)return new Promise((U,A)=>{$.addEventListener("load",U),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${p}`)))})}))}function i(r){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=r,window.dispatchEvent(c),!c.defaultPrevented)throw r}return o.then(r=>{for(const c of r||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})};const Co=typeof window<"u",Rn=(e,t=!1)=>t?Symbol.for(e):Symbol(e),Sp=(e,t,n)=>xp({l:e,k:t,s:n}),xp=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Xe=e=>typeof e=="number"&&isFinite(e),Fc=e=>xl(e)==="[object Date]",Eo=e=>xl(e)==="[object RegExp]",Sl=e=>Ue(e)&&Object.keys(e).length===0,Ze=Object.assign,Cp=Object.create,Ne=(e=null)=>Cp(e);let xa;const Ep=()=>xa||(xa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Ne()),Tp=Object.prototype.hasOwnProperty;function xt(e,t){return Tp.call(e,t)}const Ve=Array.isArray,qe=e=>typeof e=="function",le=e=>typeof e=="string",Ke=e=>typeof e=="boolean",xe=e=>e!==null&&typeof e=="object",Ap=e=>xe(e)&&qe(e.then)&&qe(e.catch),Uc=Object.prototype.toString,xl=e=>Uc.call(e),Ue=e=>xl(e)==="[object Object]",Pp=e=>e==null?"":Ve(e)||Ue(e)&&e.toString===Uc?JSON.stringify(e,null,2):String(e);function Cl(e,t=""){return e.reduce((n,s,o)=>o===0?n+s:n+t+s,"")}function Lp(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}function Ca(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function Ip(e){return e.replace(/&(?![a-z0-9#]{2,6};)/gi,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}const Op=/^javascript:/i,Np=/^(?:href|src|action|formaction)$/i,Mp=/&#(?:x([0-9a-f]+)|(\d+));?/gi,Rp=/&(?:Tab|NewLine);/g,Dp=/:?/gi,Fp=/[\u0000-\u0020\u007f-\u009f]/g,Up=/(?:^|[\s"'<>/])on\w+\s*=\s*["']?[^"'>]+["']?/i,jp=/(^|[\s"'<>/])on(\w+\s*=)/gi,Hp=/(^|[\s"'<>/])((?:href|src|action|formaction)\s*=\s*)([^\s"'=<>`]+)/gi;function Vp(e,t,n){const s=t||n;if(!s)return e;const o=Number.parseInt(s,t?16:10);return o<=127?String.fromCharCode(o):e}function El(e){const t=e.replace(Mp,Vp).replace(Rp,"").replace(Dp,":").replace(Fp,"");return Op.test(t)}function Wp(e){const t=/url\s*\(/gi;let n="",s=0,o;for(;(o=t.exec(e))!==null;){const i=o.index,r=t.lastIndex-1;let c=r+1,d=1,h=null;for(;c`${n}="${Ea(n,s)}"`),e=e.replace(/([\w:-]+)\s*=\s*'([^']*)'/g,(t,n,s)=>`${n}='${Ea(n,s)}'`),Up.test(e)&&(e=e.replace(jp,"$1on$2")),e=e.replace(Hp,(t,n,s,o)=>El(o)?`${n}${s}about:blank`:t),e}const Ta=e=>!xe(e)||Ve(e);function ho(e,t){if(Ta(e)||Ta(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:s,des:o}=n.pop();Object.keys(s).forEach(i=>{if(i==="__proto__")return;const r=s[i];if(Ve(r)){const c=[];c.length=r.length,o[i]=c,n.push({src:r,des:c})}else xe(r)?((!xe(o[i])||Ve(o[i]))&&(o[i]=Ne()),n.push({src:r,des:o[i]})):o[i]=r})}}function Kp(e,t,n){return{line:e,column:t,offset:n}}function Ui(e,t,n){return{start:e,end:t}}const Te={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14},Yp=17;function Xo(e,t,n={}){const{domain:s,messages:o,args:i}=n,r=e,c=new SyntaxError(String(r));return c.code=e,t&&(c.location=t),c.domain=s,c}function qp(e){throw e}const Ht=" ",Gp="\r",ot=` -`,Jp="\u2028",Xp="\u2029";function zp(e){const t=e;let n=0,s=1,o=1,i=0;const r=C=>t[C]===Gp&&t[C+1]===ot,c=C=>t[C]===ot,d=C=>t[C]===Xp,h=C=>t[C]===Jp,p=C=>r(C)||c(C)||d(C)||h(C),g=()=>n,v=()=>s,$=()=>o,U=()=>i,A=C=>r(C)||d(C)||h(C)?ot:t[C],T=()=>A(n),k=()=>A(n+i);function S(){return i=0,p(n)&&(s++,o=0),r(n)&&n++,n++,o++,t[n]}function F(){return r(n+i)&&i++,i++,t[n+i]}function x(){n=0,s=1,o=1,i=0}function j(C=0){i=C}function O(){const C=n+i;for(;C!==n;)S();i=0}return{index:g,line:v,column:$,peekOffset:U,charAt:A,currentChar:T,currentPeek:k,next:S,peek:F,reset:x,resetPeek:j,skipToPeek:O}}const Zt=void 0,Qp=".",Aa="'",Zp="tokenizer";function eh(e,t={}){const n=t.location!==!1,s=zp(e),o=()=>s.index(),i=()=>Kp(s.line(),s.column(),s.index()),r=i(),c=o(),d={currentType:13,offset:c,startLoc:r,endLoc:r,lastType:13,lastOffset:c,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},h=()=>d,{onError:p}=t;function g(y,w,N,...R){const Z=h();if(w.column+=N,w.offset+=N,p){const X=n?Ui(Z.startLoc,w):null,Q=Xo(y,X,{domain:Zp,args:R});p(Q)}}function v(y,w,N){y.endLoc=i(),y.currentType=w;const R={type:w};return n&&(R.loc=Ui(y.startLoc,y.endLoc)),N!=null&&(R.value=N),R}const $=y=>v(y,13);function U(y,w){return y.currentChar()===w?(y.next(),w):(g(Te.EXPECTED_TOKEN,i(),0,w),"")}function A(y){let w="";for(;y.currentPeek()===Ht||y.currentPeek()===ot;)w+=y.currentPeek(),y.peek();return w}function T(y){const w=A(y);return y.skipToPeek(),w}function k(y){if(y===Zt)return!1;const w=y.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w===95}function S(y){if(y===Zt)return!1;const w=y.charCodeAt(0);return w>=48&&w<=57}function F(y,w){const{currentType:N}=w;if(N!==2)return!1;A(y);const R=k(y.currentPeek());return y.resetPeek(),R}function x(y,w){const{currentType:N}=w;if(N!==2)return!1;A(y);const R=y.currentPeek()==="-"?y.peek():y.currentPeek(),Z=S(R);return y.resetPeek(),Z}function j(y,w){const{currentType:N}=w;if(N!==2)return!1;A(y);const R=y.currentPeek()===Aa;return y.resetPeek(),R}function O(y,w){const{currentType:N}=w;if(N!==7)return!1;A(y);const R=y.currentPeek()===".";return y.resetPeek(),R}function C(y,w){const{currentType:N}=w;if(N!==8)return!1;A(y);const R=k(y.currentPeek());return y.resetPeek(),R}function I(y,w){const{currentType:N}=w;if(!(N===7||N===11))return!1;A(y);const R=y.currentPeek()===":";return y.resetPeek(),R}function K(y,w){const{currentType:N}=w;if(N!==9)return!1;const R=()=>{const X=y.currentPeek();return X==="{"?k(y.peek()):X==="@"||X==="|"||X===":"||X==="."||X===Ht||!X?!1:X===ot?(y.peek(),R()):he(y,!1)},Z=R();return y.resetPeek(),Z}function M(y){A(y);const w=y.currentPeek()==="|";return y.resetPeek(),w}function he(y,w=!0){const N=(Z=!1,X="")=>{const Q=y.currentPeek();return Q==="{"||Q==="@"||!Q?Z:Q==="|"?!(X===Ht||X===ot):Q===Ht?(y.peek(),N(!0,Ht)):Q===ot?(y.peek(),N(!0,ot)):!0},R=N();return w&&y.resetPeek(),R}function z(y,w){const N=y.currentChar();return N===Zt?Zt:w(N)?(y.next(),N):null}function oe(y){const w=y.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36}function pe(y){return z(y,oe)}function se(y){const w=y.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36||w===45}function ce(y){return z(y,se)}function ye(y){const w=y.charCodeAt(0);return w>=48&&w<=57}function $e(y){return z(y,ye)}function Ge(y){const w=y.charCodeAt(0);return w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102}function ae(y){return z(y,Ge)}function ee(y){let w="",N="";for(;w=$e(y);)N+=w;return N}function Y(y){let w="";for(;;){const N=y.currentChar();if(N==="\\"){const R=y.peek();R==="{"||R==="}"||R==="@"||R==="|"||R==="\\"?(w+=N+R,y.next(),y.next()):(y.resetPeek(),w+=N,y.next())}else{if(N==="{"||N==="}"||N==="@"||N==="|"||!N)break;if(N===Ht||N===ot)if(he(y))w+=N,y.next();else{if(M(y))break;w+=N,y.next()}else w+=N,y.next()}}return w}function fe(y){T(y);let w="",N="";for(;w=ce(y);)N+=w;const R=y.currentChar();if(R&&R!=="}"&&R!==Zt&&R!==Ht&&R!==ot&&R!==" "){const Z=Ft(y);return g(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,N+Z),N+Z}return y.currentChar()===Zt&&g(Te.UNTERMINATED_CLOSING_BRACE,i(),0),N}function me(y){T(y);let w="";return y.currentChar()==="-"?(y.next(),w+=`-${ee(y)}`):w+=ee(y),y.currentChar()===Zt&&g(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w}function te(y){return y!==Aa&&y!==ot}function Ee(y){T(y),U(y,"'");let w="",N="";for(;w=z(y,te);)w==="\\"?N+=we(y):N+=w;const R=y.currentChar();return R===ot||R===Zt?(g(Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),R===ot&&(y.next(),U(y,"'")),N):(U(y,"'"),N)}function we(y){const w=y.currentChar();switch(w){case"\\":case"'":return y.next(),`\\${w}`;case"u":return yn(y,w,4);case"U":return yn(y,w,6);default:return g(Te.UNKNOWN_ESCAPE_SEQUENCE,i(),0,w),""}}function yn(y,w,N){U(y,w);let R="";for(let Z=0;Z{const R=y.currentChar();return R==="{"||R==="@"||R==="|"||R==="("||R===")"||!R||R===Ht?N:(N+=R,y.next(),w(N))};return w("")}function P(y){T(y);const w=U(y,"|");return T(y),w}function H(y,w){let N=null;switch(y.currentChar()){case"{":return w.braceNest>=1&&g(Te.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),y.next(),N=v(w,2,"{"),T(y),w.braceNest++,N;case"}":return w.braceNest>0&&w.currentType===2&&g(Te.EMPTY_PLACEHOLDER,i(),0),y.next(),N=v(w,3,"}"),w.braceNest--,w.braceNest>0&&T(y),w.inLinked&&w.braceNest===0&&(w.inLinked=!1),N;case"@":return w.braceNest>0&&g(Te.UNTERMINATED_CLOSING_BRACE,i(),0),N=q(y,w)||$(w),w.braceNest=0,N;default:{let Z=!0,X=!0,Q=!0;if(M(y))return w.braceNest>0&&g(Te.UNTERMINATED_CLOSING_BRACE,i(),0),N=v(w,1,P(y)),w.braceNest=0,w.inLinked=!1,N;if(w.braceNest>0&&(w.currentType===4||w.currentType===5||w.currentType===6))return g(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w.braceNest=0,W(y,w);if(Z=F(y,w))return N=v(w,4,fe(y)),T(y),N;if(X=x(y,w))return N=v(w,5,me(y)),T(y),N;if(Q=j(y,w))return N=v(w,6,Ee(y)),T(y),N;if(!Z&&!X&&!Q)return N=v(w,12,Ft(y)),g(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,N.value),T(y),N;break}}return N}function q(y,w){const{currentType:N}=w;let R=null;const Z=y.currentChar();switch((N===7||N===8||N===11||N===9)&&(Z===ot||Z===Ht)&&g(Te.INVALID_LINKED_FORMAT,i(),0),Z){case"@":return y.next(),R=v(w,7,"@"),w.inLinked=!0,R;case".":return T(y),y.next(),v(w,8,".");case":":return T(y),y.next(),v(w,9,":");default:return M(y)?(R=v(w,1,P(y)),w.braceNest=0,w.inLinked=!1,R):O(y,w)||I(y,w)?(T(y),q(y,w)):C(y,w)?(T(y),v(w,11,to(y))):K(y,w)?(T(y),Z==="{"?H(y,w)||R:v(w,10,E(y))):(N===7&&g(Te.INVALID_LINKED_FORMAT,i(),0),w.braceNest=0,w.inLinked=!1,W(y,w))}}function W(y,w){let N={type:13};if(w.braceNest>0)return H(y,w)||$(w);if(w.inLinked)return q(y,w)||$(w);switch(y.currentChar()){case"{":return H(y,w)||$(w);case"}":return g(Te.UNBALANCED_CLOSING_BRACE,i(),0),y.next(),v(w,3,"}");case"@":return q(y,w)||$(w);default:{if(M(y))return N=v(w,1,P(y)),w.braceNest=0,w.inLinked=!1,N;if(he(y))return v(w,0,Y(y));break}}return N}function B(){const{currentType:y,offset:w,startLoc:N,endLoc:R}=d;return d.lastType=y,d.lastOffset=w,d.lastStartLoc=N,d.lastEndLoc=R,d.offset=o(),d.startLoc=i(),s.currentChar()===Zt?v(d,13):W(s,d)}return{nextToken:B,currentOffset:o,currentPosition:i,context:h}}const th="parser",nh=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g,sh=/\\([\\@{}|])/g;function oh(e,t){return t}function ih(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const s=parseInt(t||n,16);return s<=55295||s>=57344?String.fromCodePoint(s):"�"}}}function lh(e={}){const t=e.location!==!1,{onError:n}=e;function s(k,S,F,x,...j){const O=k.currentPosition();if(O.offset+=x,O.column+=x,n){const C=t?Ui(F,O):null,I=Xo(S,C,{domain:th,args:j});n(I)}}function o(k,S,F){const x={type:k};return t&&(x.start=S,x.end=S,x.loc={start:F,end:F}),x}function i(k,S,F,x){t&&(k.end=S,k.loc&&(k.loc.end=F))}function r(k,S){const F=k.context(),x=o(3,F.offset,F.startLoc);return x.value=S.replace(sh,oh),i(x,k.currentOffset(),k.currentPosition()),x}function c(k,S){const F=k.context(),{lastOffset:x,lastStartLoc:j}=F,O=o(5,x,j);return O.index=parseInt(S,10),k.nextToken(),i(O,k.currentOffset(),k.currentPosition()),O}function d(k,S){const F=k.context(),{lastOffset:x,lastStartLoc:j}=F,O=o(4,x,j);return O.key=S,k.nextToken(),i(O,k.currentOffset(),k.currentPosition()),O}function h(k,S){const F=k.context(),{lastOffset:x,lastStartLoc:j}=F,O=o(9,x,j);return O.value=S.replace(nh,ih),k.nextToken(),i(O,k.currentOffset(),k.currentPosition()),O}function p(k){const S=k.nextToken(),F=k.context(),{lastOffset:x,lastStartLoc:j}=F,O=o(8,x,j);return S.type!==11?(s(k,Te.UNEXPECTED_EMPTY_LINKED_MODIFIER,F.lastStartLoc,0),O.value="",i(O,x,j),{nextConsumeToken:S,node:O}):(S.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Vt(S)),O.value=S.value||"",i(O,k.currentOffset(),k.currentPosition()),{node:O})}function g(k,S){const F=k.context(),x=o(7,F.offset,F.startLoc);return x.value=S,i(x,k.currentOffset(),k.currentPosition()),x}function v(k){const S=k.context(),F=o(6,S.offset,S.startLoc);let x=k.nextToken();if(x.type===8){const j=p(k);F.modifier=j.node,x=j.nextConsumeToken||k.nextToken()}switch(x.type!==9&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(x)),x=k.nextToken(),x.type===2&&(x=k.nextToken()),x.type){case 10:x.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(x)),F.key=g(k,x.value||"");break;case 4:x.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(x)),F.key=d(k,x.value||"");break;case 5:x.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(x)),F.key=c(k,x.value||"");break;case 6:x.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(x)),F.key=h(k,x.value||"");break;default:{s(k,Te.UNEXPECTED_EMPTY_LINKED_KEY,S.lastStartLoc,0);const j=k.context(),O=o(7,j.offset,j.startLoc);return O.value="",i(O,j.offset,j.startLoc),F.key=O,i(F,j.offset,j.startLoc),{nextConsumeToken:x,node:F}}}return i(F,k.currentOffset(),k.currentPosition()),{node:F}}function $(k){const S=k.context(),F=S.currentType===1?k.currentOffset():S.offset,x=S.currentType===1?S.endLoc:S.startLoc,j=o(2,F,x);j.items=[];let O=null;do{const K=O||k.nextToken();switch(O=null,K.type){case 0:K.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(K)),j.items.push(r(k,K.value||""));break;case 5:K.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(K)),j.items.push(c(k,K.value||""));break;case 4:K.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(K)),j.items.push(d(k,K.value||""));break;case 6:K.value==null&&s(k,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Vt(K)),j.items.push(h(k,K.value||""));break;case 7:{const M=v(k);j.items.push(M.node),O=M.nextConsumeToken||null;break}}}while(S.currentType!==13&&S.currentType!==1);const C=S.currentType===1?S.lastOffset:k.currentOffset(),I=S.currentType===1?S.lastEndLoc:k.currentPosition();return i(j,C,I),j}function U(k,S,F,x){const j=k.context();let O=x.items.length===0;const C=o(1,S,F);C.cases=[],C.cases.push(x);do{const I=$(k);O||(O=I.items.length===0),C.cases.push(I)}while(j.currentType!==13);return O&&s(k,Te.MUST_HAVE_MESSAGES_IN_PLURAL,F,0),i(C,k.currentOffset(),k.currentPosition()),C}function A(k){const S=k.context(),{offset:F,startLoc:x}=S,j=$(k);return S.currentType===13?j:U(k,F,x,j)}function T(k){const S=eh(k,Ze({},e)),F=S.context(),x=o(0,F.offset,F.startLoc);return t&&x.loc&&(x.loc.source=k),x.body=A(S),e.onCacheKey&&(x.cacheKey=e.onCacheKey(k)),F.currentType!==13&&s(S,Te.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,k[F.offset]||""),i(x,S.currentOffset(),S.currentPosition()),x}return{parse:T}}function Vt(e){if(e.type===13)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function ah(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function Pa(e,t){for(let n=0;nLa(n)),e}function La(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;nr;function d(A,T){r.code+=A}function h(A,T=!0){const k=T?s:"";d(o?k+" ".repeat(A):k)}function p(A=!0){const T=++r.indentLevel;A&&h(T)}function g(A=!0){const T=--r.indentLevel;A&&h(T)}function v(){h(r.indentLevel)}return{context:c,push:d,indent:p,deindent:g,newline:v,helper:A=>`_${A}`,needIndent:()=>r.needIndent}}function dh(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),us(e,t.key),t.modifier?(e.push(", "),us(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function fh(e,t){const{helper:n,needIndent:s}=e;e.push(`${n("normalize")}([`),e.indent(s());const o=t.items.length;for(let i=0;i1){e.push(`${n("plural")}([`),e.indent(s());const o=t.cases.length;for(let i=0;i{const n=le(t.mode)?t.mode:"normal",s=le(t.filename)?t.filename:"message.intl";t.sourceMap;const o=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` -`,i=t.needIndent?t.needIndent:n!=="arrow",r=e.helpers||[],c=uh(e,{filename:s,breakLineCode:o,needIndent:i});c.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),c.indent(i),r.length>0&&(c.push(`const { ${Cl(r.map(p=>`${p}: _${p}`),", ")} } = ctx`),c.newline()),c.push("return "),us(c,e),c.deindent(i),c.push("}"),delete e.helpers;const{code:d,map:h}=c.context();return{ast:e,code:d,map:h?h.toJSON():void 0}};function gh(e,t={}){const n=Ze({},t),s=!!n.jit,o=!!n.minify,i=n.optimize==null?!0:n.optimize,c=lh(n).parse(e);return s?(i&&ch(c),o&&ts(c),{ast:c,code:""}):(rh(c,n),mh(c,n))}function Jt(e){return xe(e)&&Al(e)===0&&(xt(e,"b")||xt(e,"body"))}const jc=["b","body"];function vh(e){return Dn(e,jc)}const Hc=["c","cases"];function _h(e){return Dn(e,Hc,[])}const Vc=["s","static"];function yh(e){return Dn(e,Vc)}const Wc=["i","items"];function bh(e){return Dn(e,Wc,[])}const Bc=["t","type"];function Al(e){return Dn(e,Bc)}const Kc=["v","value"];function ao(e,t){const n=Dn(e,Kc);if(n!=null)return n;throw Us(t)}const Yc=["m","modifier"];function wh(e){return Dn(e,Yc)}const qc=["k","key"];function kh(e){const t=Dn(e,qc);if(t)return t;throw Us(6)}function Dn(e,t,n){for(let s=0;s$h(n,e)}function $h(e,t){const n=vh(t);if(n==null)throw Us(0);if(Al(n)===1){const i=_h(n);return e.plural(i.reduce((r,c)=>[...r,Ia(e,c)],[]))}else return Ia(e,n)}function Ia(e,t){const n=yh(t);if(n!=null)return e.type==="text"?n:e.normalize([n]);{const s=bh(t).reduce((o,i)=>[...o,ji(e,i)],[]);return e.normalize(s)}}function ji(e,t){const n=Al(t);switch(n){case 3:return ao(t,n);case 9:return ao(t,n);case 4:{const s=t;if(xt(s,"k")&&s.k)return e.interpolate(e.named(s.k));if(xt(s,"key")&&s.key)return e.interpolate(e.named(s.key));throw Us(n)}case 5:{const s=t;if(xt(s,"i")&&Xe(s.i))return e.interpolate(e.list(s.i));if(xt(s,"index")&&Xe(s.index))return e.interpolate(e.list(s.index));throw Us(n)}case 6:{const s=t,o=wh(s),i=kh(s);return e.linked(ji(e,i),o?ji(e,o):void 0,e.type)}case 7:return ao(t,n);case 8:return ao(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const Sh=e=>e;let ro=Ne();function xh(e,t={}){let n=!1;const s=t.onError||qp;return t.onError=o=>{n=!0,s(o)},{...gh(e,t),detectError:n}}function Ch(e,t){if(le(e)){Ke(t.warnHtmlMessage)&&t.warnHtmlMessage;const s=(t.onCacheKey||Sh)(e),o=ro[s];if(o)return o;const{ast:i,detectError:r}=xh(e,{...t,location:!1,jit:!0}),c=gi(i);return r?c:ro[s]=c}else{const n=e.cacheKey;if(n){const s=ro[n];return s||(ro[n]=gi(e))}else return gi(e)}}const rn={INVALID_ARGUMENT:Yp,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},Eh=24;function cn(e){return Xo(e,null,void 0)}function Pl(e,t){return t.locale!=null?Oa(t.locale):Oa(e.locale)}let vi;function Oa(e){if(le(e))return e;if(qe(e)){if(e.resolvedOnce&&vi!=null)return vi;if(e.constructor.name==="Function"){const t=e();if(Ap(t))throw cn(rn.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return vi=t}else throw cn(rn.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw cn(rn.NOT_SUPPORT_LOCALE_TYPE)}function Th(e,t,n){return[...new Set([n,...Ve(t)?t:xe(t)?Object.keys(t).filter(s=>s!=="default"):le(t)?[t]:[n]])]}function Hi(e,t,n){const s=le(n)?n:To,o=e;let i;xe(t)?(o.__localeChainObjectCache||(o.__localeChainObjectCache=new WeakMap),i=o.__localeChainObjectCache.get(t),i||(i=new Map,o.__localeChainObjectCache.set(t,i))):(o.__localeChainCache||(o.__localeChainCache=new Map),i=o.__localeChainCache.get(t),i||(i=new Map,o.__localeChainCache.set(t,i)));const r=i.get(s);if(r)return r;const c=[];let d=[n];for(;Ve(d);)d=Na(c,d,t);const h=Ve(t)||!Ue(t)?t:t.default?t.default:null;return d=le(h)?[h]:h,Ve(d)&&Na(c,d,!1),i.set(s,c),c}function Na(e,t,n){let s=!0;for(let o=0;o{r===void 0?r=c:r+=c},v[1]=()=>{r!==void 0&&(t.push(r),r=void 0)},v[2]=()=>{v[0](),o++},v[3]=()=>{if(o>0)o--,s=4,v[0]();else{if(o=0,r===void 0||(r=Mh(r),r===!1))return!1;v[1]()}};function $(){const U=e[n+1];if(s===5&&U==="'"||s===6&&U==='"')return n++,c="\\"+U,v[0](),!0}for(;s!==null;)if(n++,i=e[n],!(i==="\\"&&$())){if(d=Nh(i),g=Fn[s],h=g[d]||g.l||8,h===8||(s=h[0],h[1]!==void 0&&(p=v[h[1]],p&&(c=i,p()===!1))))return;if(s===7)return t}}const Ma=new Map;function Dh(e,t){return xe(e)?e[t]:null}function Fh(e,t){if(!xe(e))return null;let n=Ma.get(t);if(n||(n=Rh(t),n&&Ma.set(t,n)),!n)return null;const s=n.length;let o=e,i=0;for(;i`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function jh(){return{upper:(e,t)=>t==="text"&&le(e)?e.toUpperCase():t==="vnode"&&xe(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&le(e)?e.toLowerCase():t==="vnode"&&xe(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&le(e)?Ra(e):t==="vnode"&&xe(e)&&"__v_isVNode"in e?Ra(e.children):e}}let Jc;function Hh(e){Jc=e}let Xc;function Vh(e){Xc=e}let zc;function Wh(e){zc=e}let Qc=null;const Da=e=>{Qc=e},Fa=()=>Qc;let Ua=0;function Bh(e={}){const t=qe(e.onWarn)?e.onWarn:Lp,n=le(e.version)?e.version:Uh,s=le(e.locale)||qe(e.locale)?e.locale:To,o=qe(s)?To:s,i=Ve(e.fallbackLocale)||Ue(e.fallbackLocale)||le(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:o,r=Ue(e.messages)?e.messages:_i(o),c=Ue(e.datetimeFormats)?e.datetimeFormats:_i(o),d=Ue(e.numberFormats)?e.numberFormats:_i(o),h=Ze(Ne(),e.modifiers,jh()),p=e.pluralRules||Ne(),g=qe(e.missing)?e.missing:null,v=Ke(e.missingWarn)||Eo(e.missingWarn)?e.missingWarn:!0,$=Ke(e.fallbackWarn)||Eo(e.fallbackWarn)?e.fallbackWarn:!0,U=!!e.fallbackFormat,A=!!e.unresolving,T=qe(e.postTranslation)?e.postTranslation:null,k=Ue(e.processor)?e.processor:null,S=Ke(e.warnHtmlMessage)?e.warnHtmlMessage:!0,F=!!e.escapeParameter,x=qe(e.messageCompiler)?e.messageCompiler:Jc,j=qe(e.messageResolver)?e.messageResolver:Xc||Dh,O=qe(e.localeFallbacker)?e.localeFallbacker:zc||Th,C=xe(e.fallbackContext)?e.fallbackContext:void 0,I=e,K=xe(I.__datetimeFormatters)?I.__datetimeFormatters:new Map,M=xe(I.__numberFormatters)?I.__numberFormatters:new Map,he=xe(I.__meta)?I.__meta:{};Ua++;const z={version:n,cid:Ua,locale:s,fallbackLocale:i,messages:r,modifiers:h,pluralRules:p,missing:g,missingWarn:v,fallbackWarn:$,fallbackFormat:U,unresolving:A,postTranslation:T,processor:k,warnHtmlMessage:S,escapeParameter:F,messageCompiler:x,messageResolver:j,localeFallbacker:O,fallbackContext:C,onWarn:t,__meta:he};return z.datetimeFormats=c,z.numberFormats=d,z.__datetimeFormatters=K,z.__numberFormatters=M,z}const _i=e=>({[e]:Ne()});function Zc(e,t,n,s,o){const{missing:i,onWarn:r}=e;if(i!==null){const c=i(e,n,t,o);return le(c)?c:t}else return t}function ja(e,t){const n=e;xe(t)?n.__localeChainObjectCache?.delete(t):n.__localeChainCache?.delete(t)}function co(e,t,n){ja(e,n),e.fallbackContext&&ja(e.fallbackContext,n),e.localeFallbacker(e,n,t)}function Kh(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Yh(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let s=n+1;s{s.includes(d)?c[d]=o[d]:t[d]=o[d]}),le(i)?t.locale=i:Ue(i)&&(c=i),Ue(r)&&(c=r),c}function Ha(e,...t){const{datetimeFormats:n,unresolving:s,onWarn:o}=e,{__datetimeFormatters:i}=e;if(!le(t[0])&&!Fc(t[0])&&!Xe(t[0]))return Ao;const[r,c,d,h]=Vi(...t),p=Ke(d.missingWarn)?d.missingWarn:e.missingWarn,g=Ke(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn,v=!!d.part,$=Pl(e,d);if(!le(r)||r===""){const S=new Intl.DateTimeFormat($.replace(/!/g,""),h);return v?S.formatToParts(c):S.format(c)}const U=eu(e,r,$,n,p,g,"datetime format");if(!le(U))return s?zo:r;const A=n[U][r],T=tu(U,r,h);let k=i.get(T);return k||(k=new Intl.DateTimeFormat(U,Ze({},A,h)),i.set(T,k)),v?k.formatToParts(c):k.format(c)}const ou=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function Vi(...e){const[t]=e,n=Ne(),s=Ne();let o;if(le(t)){const r=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!r)throw cn(rn.INVALID_ISO_DATE_ARGUMENT);const c=r[3]?r[3].trim().startsWith("T")?`${r[1].trim()}${r[3].trim()}`:`${r[1].trim()}T${r[3].trim()}`:r[1].trim();o=new Date(c);try{o.toISOString()}catch{throw cn(rn.INVALID_ISO_DATE_ARGUMENT)}}else if(Fc(t)){if(isNaN(t.getTime()))throw cn(rn.INVALID_DATE_ARGUMENT);o=t}else if(Xe(t))o=t;else throw cn(rn.INVALID_ARGUMENT);const i=su(e,n,s,ou);return[n.key||"",o,n,i]}function Va(e,t,n){nu(e.__datetimeFormatters,t,n)}function Wa(e,...t){const{numberFormats:n,unresolving:s,onWarn:o}=e,{__numberFormatters:i}=e;if(!Xe(t[0]))return Ao;const[r,c,d,h]=Wi(...t),p=Ke(d.missingWarn)?d.missingWarn:e.missingWarn,g=Ke(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn,v=!!d.part,$=Pl(e,d);if(!le(r)||r===""){const S=new Intl.NumberFormat($.replace(/!/g,""),h);return v?S.formatToParts(c):S.format(c)}const U=eu(e,r,$,n,p,g,"number format");if(!le(U))return s?zo:r;const A=n[U][r],T=tu(U,r,h);let k=i.get(T);return k||(k=new Intl.NumberFormat(U,Ze({},A,h)),i.set(T,k)),v?k.formatToParts(c):k.format(c)}const iu=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function Wi(...e){const[t]=e,n=Ne(),s=Ne();if(!Xe(t))throw cn(rn.INVALID_ARGUMENT);const o=t,i=su(e,n,s,iu);return[n.key||"",o,n,i]}function Ba(e,t,n){nu(e.__numberFormatters,t,n)}const qh=e=>e,Gh=e=>"",Jh="text",Xh=e=>e.length===0?"":Cl(e),zh=Pp;function yi(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function Qh(e){const t=Xe(e.pluralIndex)?e.pluralIndex:-1;return Xe(e.named?.count)?e.named.count:Xe(e.named?.n)?e.named.n:t}function Zh(e={}){const t=e.locale,n=Qh(e),s=le(t)&&qe(e.pluralRules?.[t])?e.pluralRules[t]:yi,o=s===yi?void 0:yi,i=k=>k[s(n,k.length,o)],r=e.list||[],c=k=>r[k],d=e.named||Ne();Xe(e.pluralIndex)&&(d.count||=e.pluralIndex,d.n||=e.pluralIndex);const h=k=>d[k];function p(k,S){const F=qe(e.messages)?e.messages(k,!!S):xe(e.messages)?e.messages[k]:!1;return F||(e.parent?e.parent.message(k):Gh)}const g=k=>e.modifiers?e.modifiers[k]:qh,v=qe(e.processor?.normalize)?e.processor.normalize:Xh,$=qe(e.processor?.interpolate)?e.processor.interpolate:zh,U=le(e.processor?.type)?e.processor.type:Jh,T={list:c,named:h,plural:i,linked:(k,...S)=>{const[F,x]=S;let j="text",O="";S.length===1?xe(F)?(O=F.modifier||O,j=F.type||j):le(F)&&(O=F||O):S.length===2&&(le(F)&&(O=F||O),le(x)&&(j=x||j));const C=p(k,!0)(T),I=C===""||C===void 0?k:C,K=j==="vnode"&&Ve(I)&&O?I[0]:I;return O?g(O)(K,j):K},message:p,type:U,interpolate:$,normalize:v,values:Ze(Ne(),r,d)};return T}const Ka=()=>"",un=e=>qe(e);function Ya(e,...t){const{fallbackFormat:n,postTranslation:s,unresolving:o,messageCompiler:i,fallbackLocale:r,messages:c}=e,[d,h]=Bi(...t),p=Ke(h.missingWarn)?h.missingWarn:e.missingWarn,g=Ke(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,v=Ke(h.escapeParameter)?h.escapeParameter:e.escapeParameter,$=!!h.resolvedMessage,U=le(h.default)||Ke(h.default)?Ke(h.default)?i?d:()=>d:h.default:n?i?d:()=>d:null,A=n||U!=null&&(le(U)||qe(U)),T=Pl(e,h);v&&em(h);let[k,S,F]=$?[d,T,c[T]||Ne()]:lu(e,d,T,r,g,p),x=k,j=d;if(!$&&!(le(x)||Jt(x)||un(x))&&A&&(x=U,j=x),!$&&(!(le(x)||Jt(x)||un(x))||!le(S)))return o?zo:d;let O=!1;const C=()=>{O=!0},I=un(x)?x:au(e,d,S,x,j,C);if(O)return x;const K=sm(e,S,F,h),M=Zh(K),he=tm(e,I,M);let z=s?s(he,d):he;return v&&le(z)&&(z=Bp(z)),z}function em(e){Ve(e.list)?e.list=e.list.map(t=>le(t)?Ca(t):t):xe(e.named)&&Object.keys(e.named).forEach(t=>{le(e.named[t])&&(e.named[t]=Ca(e.named[t]))})}function lu(e,t,n,s,o,i){const{messages:r,onWarn:c,messageResolver:d,localeFallbacker:h}=e,p=h(e,s,n);let g=Ne(),v,$=null;const U="translate";for(let A=0;As);return h.locale=n,h.key=t,h}const d=r(s,nm(e,n,o,s,c,i));return d.locale=n,d.key=t,d.source=s,d}function tm(e,t,n){return t(n)}function Bi(...e){const[t,n,s]=e,o=Ne();if(!le(t)&&!Xe(t)&&!un(t)&&!Jt(t))throw cn(rn.INVALID_ARGUMENT);const i=Xe(t)?String(t):(un(t),t);return Xe(n)?o.plural=n:le(n)?o.default=n:Ue(n)&&!Sl(n)?o.named=n:Ve(n)&&(o.list=n),Xe(s)?o.plural=s:le(s)?o.default=s:Ue(s)&&Ze(o,s),[i,o]}function nm(e,t,n,s,o,i){return{locale:t,key:n,warnHtmlMessage:o,onError:r=>{throw i&&i(r),r},onCacheKey:r=>Sp(t,n,r)}}function sm(e,t,n,s){const{modifiers:o,pluralRules:i,messageResolver:r,fallbackLocale:c,fallbackWarn:d,missingWarn:h,fallbackContext:p}=e,v={locale:t,modifiers:o,pluralRules:i,messages:($,U)=>{let A=r(n,$);if(A==null&&(p||U)){const[T,,k]=lu(p||e,$,t,c,d,h);A=T??r(k,$)}if(le(A)||Jt(A)){let T=!1;const S=au(e,$,t,A,$,()=>{T=!0});return T?Ka:S}else return un(A)?A:Ka}};return e.processor&&(v.processor=e.processor),s.list&&(v.list=s.list),s.named&&(v.named=s.named),Xe(s.plural)&&(v.pluralIndex=s.plural),v}const om="11.4.12",bt={UNEXPECTED_RETURN_TYPE:Eh,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Tt(e,...t){return Xo(e,null,void 0)}const Ki=Rn("__translateVNode"),Yi=Rn("__datetimeParts"),qi=Rn("__numberParts"),im=Rn("__setPluralRules"),lm=Rn("__injectWithOption"),ss=Rn("__dispose");let ru=null;{const e=Ep().__VUE_INSTANCE_SETTERS__;Ve(e)&&e.push(t=>{ru=t})}function js(e){if(!xe(e)||Jt(e))return e;for(const t in e)if(xt(e,t))if(!t.includes("."))xe(e[t])&&js(e[t]);else{const n=t.split("."),s=n.length-1;let o=e,i=!1;for(let r=0;r{if("locale"in c&&"resource"in c){const{locale:d,resource:h}=c;d?(r[d]=r[d]||Ne(),ho(h,r[d])):ho(h,r)}else le(c)&&ho(JSON.parse(c),r)}),o==null&&i)for(const c in r)xt(r,c)&&js(r[c]);return r}function am(e){return e.type}function rm(e,t,n){let s=xe(t.messages)?t.messages:Ne();"__i18nGlobal"in n&&(s=cu(e.locale.value,{messages:s,__i18n:n.__i18nGlobal}));const o=Object.keys(s);o.length&&o.forEach(i=>{e.mergeLocaleMessage(i,s[i])});{if(xe(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])})}if(xe(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(r=>{e.mergeNumberFormat(r,t.numberFormats[r])})}}}function qa(e){return ne(Js,null,e,0)}function uu(){return ru??Ic()}const Ga=()=>[],cm=()=>!1;let Ja=0;function Xa(e){return((t,n,s,o)=>e(n,s,uu()||void 0,o))}function Gi(e={}){const{__root:t,__injectWithOption:n}=e,s=t===void 0,o=e.flatJson,i=Co?ke:Pd;let r=Ke(e.inheritLocale)?e.inheritLocale:!0;const c=i(t&&r?t.locale.value:le(e.locale)?e.locale:To),d=i(t&&r?t.fallbackLocale.value:le(e.fallbackLocale)||Ve(e.fallbackLocale)||Ue(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),h=i(cu(c.value,e)),p=i(Ue(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),g=i(Ue(e.numberFormats)?e.numberFormats:{[c.value]:{}});let v=t?t.missingWarn:Ke(e.missingWarn)||Eo(e.missingWarn)?e.missingWarn:!0,$=t?t.fallbackWarn:Ke(e.fallbackWarn)||Eo(e.fallbackWarn)?e.fallbackWarn:!0,U=t?t.fallbackRoot:Ke(e.fallbackRoot)?e.fallbackRoot:!0,A=!!e.fallbackFormat,T=qe(e.missing)?e.missing:null,k=qe(e.missing)?Xa(e.missing):null,S=qe(e.postTranslation)?e.postTranslation:null,F=t?t.warnHtmlMessage:Ke(e.warnHtmlMessage)?e.warnHtmlMessage:!0,x=!!e.escapeParameter;const j=t?t.modifiers:Ue(e.modifiers)?e.modifiers:{};let O=e.pluralRules||t&&t.pluralRules,C;C=(()=>{s&&Da(null);const D={version:om,locale:c.value,fallbackLocale:d.value,messages:h.value,modifiers:j,pluralRules:O,missing:k===null?void 0:k,missingWarn:v,fallbackWarn:$,fallbackFormat:A,unresolving:!0,postTranslation:S===null?void 0:S,warnHtmlMessage:F,escapeParameter:x,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};D.datetimeFormats=p.value,D.numberFormats=g.value,D.__datetimeFormatters=Ue(C)?C.__datetimeFormatters:void 0,D.__numberFormatters=Ue(C)?C.__numberFormatters:void 0;const V=Bh(D);return s&&Da(V),V})(),co(C,c.value,d.value);function K(){return[c.value,d.value,h.value,p.value,g.value]}const M=L({get:()=>c.value,set:D=>{C.locale=D,c.value=D}});function he(D){s||(C.fallbackContext=t?Fa():void 0);try{co(C,c.value,D)}finally{s||(C.fallbackContext=void 0)}}const z=L({get:()=>d.value,set:D=>{d.value=D,C.fallbackLocale=d.value,he(d.value)}}),oe=L(()=>h.value),pe=L(()=>p.value),se=L(()=>g.value);function ce(){return qe(S)?S:null}function ye(D){S=D,C.postTranslation=D}function $e(){return T}function Ge(D){D!==null&&(k=Xa(D)),T=D,C.missing=k}const ae=(D,V,re,ue,Oe,je)=>{K();let Be;try{s||(C.fallbackContext=t?Fa():void 0),Be=D(C)}finally{s||(C.fallbackContext=void 0)}if(re!=="translate exists"&&Xe(Be)&&Be===zo||re==="translate exists"&&!Be){const[kt,Qn]=V();return t&&U?ue(t):Oe(kt)}else{if(je(Be))return Be;throw Tt(bt.UNEXPECTED_RETURN_TYPE)}};function ee(...D){return ae(V=>Reflect.apply(Ya,null,[V,...D]),()=>Bi(...D),"translate",V=>Reflect.apply(V.t,V,[...D]),V=>V,V=>le(V))}function Y(...D){const[V,re,ue]=D;if(ue&&!xe(ue))throw Tt(bt.INVALID_ARGUMENT);return ee(V,re,Ze({resolvedMessage:!0},ue||{}))}function fe(...D){return ae(V=>Reflect.apply(Ha,null,[V,...D]),()=>Vi(...D),"datetime format",V=>Reflect.apply(V.d,V,[...D]),()=>Ao,V=>le(V)||Ve(V))}function me(...D){return ae(V=>Reflect.apply(Wa,null,[V,...D]),()=>Wi(...D),"number format",V=>Reflect.apply(V.n,V,[...D]),()=>Ao,V=>le(V)||Ve(V))}function te(D){return D.map(V=>le(V)||Xe(V)||Ke(V)?qa(String(V)):V)}const we={normalize:te,interpolate:D=>D,type:"vnode"};function yn(...D){return ae(V=>{let re;const ue=V;try{ue.processor=we,re=Reflect.apply(Ya,null,[ue,...D])}finally{ue.processor=null}return re},()=>Bi(...D),"translate",V=>V[Ki](...D),V=>[qa(V)],V=>Ve(V))}function zn(...D){return ae(V=>Reflect.apply(Wa,null,[V,...D]),()=>Wi(...D),"number format",V=>V[qi](...D),Ga,V=>le(V)||Ve(V))}function Ft(...D){return ae(V=>Reflect.apply(Ha,null,[V,...D]),()=>Vi(...D),"datetime format",V=>V[Yi](...D),Ga,V=>le(V)||Ve(V))}function to(D){O=D,C.pluralRules=O}function E(D,V){return ae(()=>{if(!D)return!1;const re=le(V)?V:c.value,ue=le(V)?[re]:Hi(C,d.value,re);for(let Oe=0;Oe[D],"translate exists",re=>Reflect.apply(re.te,re,[D,V]),cm,re=>Ke(re))}function P(D){let V=null;const re=Hi(C,d.value,c.value);for(let ue=0;uehe(d.value),{deep:!0,flush:"sync"}),t&&Co&&(Et(t.locale,D=>{r&&(c.value=D,C.locale=D,co(C,c.value,d.value))}),Et(t.fallbackLocale,D=>{r&&(d.value=D,C.fallbackLocale=d.value,co(C,c.value,d.value))}));const Q={id:Ja,locale:M,fallbackLocale:z,get inheritLocale(){return r},set inheritLocale(D){r=D,D&&t&&(M.value=t.locale.value,z.value=t.fallbackLocale.value)},get availableLocales(){return Object.keys(h.value).sort()},messages:oe,get modifiers(){return j},get pluralRules(){return O||{}},get isGlobal(){return s},get missingWarn(){return v},set missingWarn(D){v=D,C.missingWarn=v},get fallbackWarn(){return $},set fallbackWarn(D){$=D,C.fallbackWarn=$},get fallbackRoot(){return U},set fallbackRoot(D){U=D},get fallbackFormat(){return A},set fallbackFormat(D){A=D,C.fallbackFormat=A},get warnHtmlMessage(){return F},set warnHtmlMessage(D){F=D,C.warnHtmlMessage=D},get escapeParameter(){return x},set escapeParameter(D){x=D,C.escapeParameter=D},t:ee,getLocaleMessage:q,setLocaleMessage:W,mergeLocaleMessage:B,getPostTranslationHandler:ce,setPostTranslationHandler:ye,getMissingHandler:$e,setMissingHandler:Ge,[im]:to};return Q.datetimeFormats=pe,Q.numberFormats=se,Q.rt=Y,Q.te=E,Q.tm=H,Q.d=fe,Q.n=me,Q.getDateTimeFormat=y,Q.setDateTimeFormat=w,Q.mergeDateTimeFormat=N,Q.getNumberFormat=R,Q.setNumberFormat=Z,Q.mergeNumberFormat=X,Q[lm]=n,Q[Ki]=yn,Q[Yi]=Ft,Q[qi]=zn,Q}const Ll={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function um({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((s,o)=>[...s,...o.type===J?o.children:[o]],[]):t.reduce((n,s)=>{const o=e[s];return o&&(n[s]=o()),n},Ne())}function du(){return J}const dm=Me({name:"i18n-t",props:Ze({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Xe(e)||!isNaN(e)}},Ll),setup(e,t){const{slots:n,attrs:s}=t,o=e.i18n||Il({useScope:e.scope,__useComponent:!0});return()=>{const i=()=>{const d=Object.keys(n).filter(g=>g[0]!=="_"),h=Ne();e.locale&&(h.locale=e.locale),e.plural!==void 0&&(h.plural=le(e.plural)?+e.plural:e.plural);const p=um(t,d);return o[Ki](e.keypath,p,h)},r=Ze(Ne(),s),c=le(e.tag)||xe(e.tag)?e.tag:du();return xe(c)?xo(c,r,{default:i}):xo(c,r,i())}}}),za=dm;function fm(e){return Ve(e)&&!le(e[0])}function fu(e,t,n,s){const{slots:o,attrs:i}=t;return()=>{const r=()=>{const h={part:!0};let p=Ne();e.locale&&(h.locale=e.locale),le(e.format)?h.key=e.format:xe(e.format)&&(le(e.format.key)&&(h.key=e.format.key),p=Object.keys(e.format).reduce(($,U)=>n.includes(U)?Ze(Ne(),$,{[U]:e.format[U]}):$,Ne()));const g=s(e.value,h,p);let v=[h.key];return Ve(g)?v=g.map(($,U)=>{const A=o[$.type],T=A?A({[$.type]:$.value,index:U,parts:g}):[$.value];return fm(T)&&(T[0].key=`${$.type}-${U}`),T}):le(g)&&(v=[g]),v},c=Ze(Ne(),i),d=le(e.tag)||xe(e.tag)?e.tag:du();return xe(d)?xo(d,c,{default:r}):xo(d,c,r())}}const pm=Me({name:"i18n-n",props:Ze({value:{type:Number,required:!0},format:{type:[String,Object]}},Ll),setup(e,t){const n=e.i18n||Il({useScope:e.scope,__useComponent:!0});return fu(e,t,iu,(...s)=>n[qi](...s))}}),Qa=pm;function hm(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const s=n.__getInstance(t);return s!=null?s.__composer:e.global.__composer}}function mm(e){const t=r=>{const{instance:c,value:d}=r;if(!c||!c.$)throw Tt(bt.UNEXPECTED_ERROR);const h=hm(e,c.$),p=Za(d);return[Reflect.apply(h.t,h,[...er(p)]),h]};return{created:(r,c)=>{const[d,h]=t(c);Co&&(r.__i18nWatcher=Et(h.locale,()=>{c.instance&&c.instance.$forceUpdate()})),r.__composer=h,r.textContent=d},unmounted:r=>{Co&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:c})=>{if(r.__composer){const d=r.__composer,h=Za(c);r.textContent=Reflect.apply(d.t,d,[...er(h)])}},getSSRProps:r=>{const[c]=t(r);return{textContent:c}}}}function Za(e){if(le(e))return{path:e};if(Ue(e)){if(!("path"in e))throw Tt(bt.REQUIRED_VALUE,"path");return e}else throw Tt(bt.INVALID_VALUE)}function er(e){const{path:t,locale:n,args:s,choice:o,plural:i}=e,r={},c=s||{};return le(n)&&(r.locale=n),Xe(o)&&(r.plural=o),Xe(i)&&(r.plural=i),[t,c,r]}function gm(e,t,...n){const s=Ue(n[0])?n[0]:{};(!Ke(s.globalInstall)||s.globalInstall)&&([za.name,"I18nT"].forEach(i=>e.component(i,za)),[Qa.name,"I18nN"].forEach(i=>e.component(i,Qa)),[sr.name,"I18nD"].forEach(i=>e.component(i,sr))),e.directive("t",mm(t))}const vm=Rn("global-vue-i18n");function _m(e={}){const t=Ke(e.globalInjection)?e.globalInjection:!0,n=new Map,[s,o]=ym(e),i=Rn("");function r(p){return n.get(p)||null}function c(p,g){n.set(p,g)}function d(p){n.delete(p)}const h={get mode(){return"composition"},async install(p,...g){if(p.__VUE_I18N_SYMBOL__=i,p.provide(p.__VUE_I18N_SYMBOL__,h),Ue(g[0])){const U=g[0];h.__composerExtend=U.__composerExtend,h.__vueI18nExtend=U.__vueI18nExtend}let v=null;t&&(v=Cm(p,h.global)),gm(p,h,...g);const $=p.unmount;p.unmount=()=>{v&&v(),h.dispose(),$()}},get global(){return o},dispose(){s.stop()},__instances:n,__getInstance:r,__setInstance:c,__deleteInstance:d};return h}function Il(e={}){const t=uu();if(t==null)throw Tt(bt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Tt(bt.NOT_INSTALLED);const n=bm(t),s=km(n),o=am(t),i=wm(e,o);if(i==="global")return rm(s,e,o),s;if(i==="parent"){let d=tr(n,t,e.__useComponent);return d==null&&(d=s),d}if(i==="isolated"){if(n.mode!=="composition")throw Tt(bt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const d=n,h=Ze({},e),p=tr(n,t);h.__root=p||s;const g=Gi(h);return d.__composerExtend&&(g[ss]=d.__composerExtend(g)),Rr()&&ud(()=>{const $=g[ss];$&&($(),delete g[ss])}),g}const r=n;let c=r.__getInstance(t);if(c==null){const d=Ze({},e);"__i18n"in o&&(d.__i18n=o.__i18n),s&&(d.__root=s),c=Gi(d),r.__composerExtend&&(c[ss]=r.__composerExtend(c)),Sm(r,t,c),r.__setInstance(t,c)}return c}function ym(e,t){const n=cd(),s=n.run(()=>Gi(e));if(s==null)throw Tt(bt.UNEXPECTED_ERROR);return[n,s]}function bm(e){const t=As(e.isCE?vm:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Tt(e.isCE?bt.NOT_INSTALLED_WITH_PROVIDE:bt.UNEXPECTED_ERROR);return t}function wm(e,t){return Sl(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function km(e){return e.mode==="composition"?e.global:e.global.__composer}function tr(e,t,n=!1){let s=null;const o=t.root;let i=$m(t,n);for(;i!=null;){const r=e;if(e.mode==="composition"&&(s=r.__getInstance(i)),s!=null||o===i)break;i=i.parent}return s}function $m(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Sm(e,t,n){Mn(()=>{},t),wl(()=>{const s=n;e.__deleteInstance(t);const o=s[ss];o&&(o(),delete s[ss])},t)}const xm=["locale","fallbackLocale","availableLocales"],nr=["t","rt","d","n","tm","te"];function Cm(e,t){const n=Object.create(null);return xm.forEach(o=>{const i=Object.getOwnPropertyDescriptor(t,o);if(!i)throw Tt(bt.UNEXPECTED_ERROR);const r=nt(i.value)?{get(){return i.value.value},set(c){i.value.value=c}}:{get(){return i.get&&i.get()}};Object.defineProperty(n,o,r)}),e.config.globalProperties.$i18n=n,nr.forEach(o=>{const i=Object.getOwnPropertyDescriptor(t,o);if(!i||!i.value)throw Tt(bt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${o}`,i)}),()=>{delete e.config.globalProperties.$i18n,nr.forEach(o=>{delete e.config.globalProperties[`$${o}`]})}}const Em=Me({name:"i18n-d",props:Ze({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Ll),setup(e,t){const n=e.i18n||Il({useScope:e.scope,__useComponent:!0});return fu(e,t,ou,(...s)=>n[Yi](...s))}}),sr=Em;Hh(Ch);Vh(Fh);Wh(Hi);const Tm={name:"English (US)",english:"English (US)",script:"latin",plural:"one_other",clock:"12",checked:!0},Am=JSON.parse(`{"common":{"undo":"Undo","online":"Online","offline":"Offline","unknown":"unknown","unsaved":"Unsaved changes","cancel":"Cancel","open_integrations":"Open Devices & services","save_send":"Save & send","saving":"Saving…","read_current_data":"Read current data","results":"1 result. Keep typing to narrow it down. | {n} results. Keep typing to narrow it down.","close":"Close","remove":"Remove","change":"Change","loading":"Loading…","back":"← Back","copy":"Copy"},"nav":{"new_screen":"New screen","firmware":"Firmware & USB","alerts":"Alerts","settings":"Settings","new_screen_detail":"Connect and install"},"api":{"failed":"That didn't work. Refresh the page and try again."},"copy":{"api_key":{"copied":"API key copied.","selected":"API key is selected. Copy with Ctrl+C or Command+C."},"layout_json":{"copied":"Layout JSON copied.","selected":"Layout JSON is selected. Copy with Ctrl+C or Command+C."},"action_name":{"copied":"Action name copied.","selected":"Action name is selected. Copy with Ctrl+C or Command+C."},"yaml":{"copied":"YAML copied.","selected":"YAML is selected. Copy with Ctrl+C or Command+C."},"icon_name":{"copied":"Icon name copied.","selected":"Icon name is selected. Copy with Ctrl+C or Command+C."},"empty_color":{"copied":"Empty color copied.","selected":"Empty color is selected. Copy with Ctrl+C or Command+C."},"color_name":{"copied":"Color name copied.","selected":"Color name is selected. Copy with Ctrl+C or Command+C."}},"sidebar":{"connection":{"unreachable":"Management page unreachable · retrying…","connected":"Home Assistant connected","reconnecting":"Reconnecting to Home Assistant…"},"search":"Search","screens":"Screens","more":"More","refresh":"Refresh","update":{"pill":"Update","button":"Update","queued":"Queued for the update","available":"Update {version}","no_profile":"No ESPHome profile found with this device name.","whats_new":"What's new","full_log":"Full log"},"host":{"hint":"The IP address, once; new firmware reports it itself.","placeholder":"IP address, e.g. 192.168.1.50","label":"IP address","start":"Start"},"pending":{"installed":"Installed, but not yet in Home Assistant. Add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and turn on “Allow the device to perform Home Assistant actions” under Configure.","downloaded":"Firmware downloaded, not yet in Home Assistant. Put it on the screen with ESPHome Web, then add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and allow the Home Assistant actions under Configure.","not_flashed":"Not yet in Home Assistant. Already flashed? Add the ESPHome device under Settings → Devices & services, then allow the Home Assistant actions under Configure. Not flashed yet? Firmware & USB → {file}."},"copy_api_key":"Copy API key"},"palette":{"groups":{"screens":"Screens","actions":"Actions","add":"Add to this screen"},"alerts_detail":"Cheatsheet and a test alert","settings_detail":"Updates, Claude","nothing_to_save":"Nothing to save","identify":"Identify this screen","identify_detail":"Blinks the backlight and shows a card","identify_needs":"Needs a newer firmware","export":"Export layout","export_detail":"Download and copy as JSON","placeholder":"Search screens, entities, actions…","empty":"Nothing matches. Type part of a screen, entity or action."},"empty":{"choose":{"title":"Choose a screen","text":"Pick one of your screens on the left to change its tiles, top bar and settings."},"start":{"title":"Start with a screen","text":"Connect a CYD or Guition via USB to your Home Assistant machine. Profile, firmware, and the first flash happen in one go.","button":"Install new screen"}},"screen_view":{"confirm":{"switch":"You have unsaved changes. Open a different screen anyway?","copy":"Replace the unsaved layout with a copy of the other screen's?","import":"Replace the unsaved layout with the imported one?"},"saved":{"current":"Saved. Your screen is being updated.","other":"Saved. {name} is being updated.","other_unnamed":"Saved. The screen is being updated.","newer_edit":"Saved. Your newest change isn't sent yet: press Save & send again."},"identified":"{name} blinks and shows a card for a few seconds.","offline":"Offline · changes are saved","tabs":{"layout":"Layout","settings":"Screen settings"},"sent":"Saved · sent to screen","all_saved":"All saved","more":"More","menu":{"identify":"Identify","identify_hint":"blink the screen","identify_needs":"Needs firmware 0.2.31 or newer","inspect_hint":"from Home Assistant","copy":"Copy layout from…","copy_screens":"{n} screen | {n} screens","copy_none":"no other screen","copy_tiles":"{n} tile | {n} tiles","export":"Export layout","import":"Import layout…","override":"Override YAML","override_hint":"advanced","override_none":"No ESPHome profile found for this screen","update":"Update firmware"}},"layout":{"removed":"{name} removed","no_room":"There is no room for this tile on page {page}.","no_free_page":"No page is free for a full-page tile. Free a page first.","page_taken":"This screen already has a tile that goes to page {page}.","copied":"Layout of {name} copied. Save & send when it looks right.","copied_part":"Layout of {name} copied: {kept} of {total} tiles fit this screen's firmware. Save & send when it looks right.","imported":"Layout imported. Save & send when it looks right.","imported_part":"Layout imported: {kept} of {total} tiles fit this screen's firmware. Save & send when it looks right.","not_json":"That isn't JSON. Export a layout first, or paste one from another ESP Screens.","no_tiles_in_file":"No tiles in this file. Expected a layout exported from ESP Screens.","count":"{n} page · {tiles} / {limit} tiles | {n} pages · {tiles} / {limit} tiles","no_tiles":"Add your first light, scene, or device from the library.","how_to":"Tap the top bar or a tile to change it. Drag to move; drop on the next page for a new one.","positions_hint":"Empty slots and fixed positions work from firmware 0.2.26. This screen (firmware {firmware}) shifts the tiles up to the first free slot until that update.","aria":"Screen layout","add_page":"+ Add page","max_pages":"1 page is the most | {n} pages is the most"},"page":{"label":"Page {page}","remove":"Remove page","remove_title":"The pages after this one shift up one slot","edit_bar":"Edit top bar","cell":{"title":"Empty slot. Click to add a tile here, or drag one over.","aria":"Empty slot {slot} on page {page}: add the next tile here","next":"Next tile goes here","empty":"Empty"}},"library":{"title":"Library","entities":"{n} entity | {n} entities","search":"Search by name, device, or room…","search_label":"Add an entity","filters":{"all":"All","light":"Lights","climate":"Climate","switch":"Switches","binary_sensor":"Status","button":"Actions","script":"Scripts","fan":"Fans","cover":"Covers","scene":"Scenes","vacuum":"Vacuum","sensor":"Sensors","media_player":"Media","weather":"Weather","number":"Values","select":"Selects","person":"People","timer":"Timers","screen":"Screen"},"room":"Room","all_rooms":"All rooms","hide_placed":"Hide placed","hide_placed_title":"Hide what is already on this screen","all_placed":"Everything here is already on this screen.","none_found":"No entities found. Try a different name, room or filter.","full":"This screen holds 1 tile. | This screen holds {n} tiles.","full_update":"This screen holds 1 tile; update its firmware for 48. | This screen holds {n} tiles; update its firmware for 48.","hint":"Drag onto a page, or tap + to add to the first free slot. ⌘K searches everything."},"domains":{"light":"Light","climate":"Climate","vacuum":"Vacuum","fan":"Fan","cover":"Cover","media_player":"Media","sensor":"Sensor","binary_sensor":"Status","switch":"Switch","input_boolean":"Switch","scene":"Scene","script":"Script","weather":"Weather","number":"Value","input_number":"Value","select":"Select","input_select":"Select","button":"Action","input_button":"Action","screen":"Screen","sun":"Sun","timer":"Timer","person":"Person","camera":"Camera","image":"Image","entity":"Entity"},"displays":{"standard":"standard","watch":"large value","forecast":"weather forecast","graph":"graph","digital":"digital clock","analog":"analog clock","sunpath":"sun path"},"sizes":{"single":"normal","wide":"double","full":"full page"},"tile":{"name":"Name on the screen","icon":{"auto_ha":"Automatic (from Home Assistant)","auto_default":"Automatic (default)","needs_firmware":"The screen shows a chosen icon from firmware 0.2.18."},"goes_to":{"label":"Goes to page","empty":"{page} (empty)","needs_firmware":"Navigation tiles need firmware 0.2.62: press Update on the screen first.","no_page":"This screen has no page {page}, so a tap opens its last page. Choose another page.","hint":"A tap on the tile opens that page."},"display":{"label":"Display","digital":"Digital clock","analog":"Analog clock","standard":"Name and status","watch":"Large value","forecast":"Weather forecast","graph":"Graph","sunpath":"Sun path","no_graph":"Home Assistant has no numbers for this entity, so the graph stays empty. Choose another display.","no_forecast":"This weather service has no daily forecast in Home Assistant. Choose another display."},"size":{"label":"Size","single":"Normal","wide":"Double-width","full":"Full page","full_hint":"Full page: one big button that lights up while on; a slider, controls or a graph sit at the bottom of it.","needs_firmware":"A full-page tile needs firmware 0.2.62: press Update on the screen first."},"page":{"label":"Page","new":"New page"},"controls":{"label":"Direct control on the tile","not_offered":"Home Assistant doesn't offer this control for this entity, so it stays empty on the screen. Choose another one.","full_hint":"At the bottom of the full-page tile; a tap anywhere else works as set below.","wide_hint":"On the right of the double-width tile, like the rows in Home Assistant. Tapping the name works as set below.","needs_firmware":"The screen shows direct control from firmware 0.2.19; until then the tile stays as it was."},"tap":{"label":"On tap","auto":"Automatic","detail":"Open control","none":"View only","toggle":"On / off","action":"Perform action","no_toggle":"Home Assistant can't turn this on and off, so a tap does nothing. Choose another option.","toggle_needs_firmware":"The screen switches this from firmware 0.2.58: press Update on the screen. Until then a tap opens its card.","hold":"Hold the tile to open its card."},"slider":{"label":"Small slider on the tile","no":"No","yes":"Yes, control directly","nothing":"Home Assistant has nothing a slider can change for this entity. Choose No."},"history":{"label":"History","hours":"{n} hour | {n} hours"},"background":{"label":"Pastel background","aria":"Background: {name}"}},"tile_card":{"label":"{name}, slot {slot} on page {page}. Enter: configure, arrow keys: move","remove":"Remove tile","remove_named":"Remove {name}"},"action":{"label":"Action","asking":"Asking Home Assistant which actions this entity has…","not_answering":"Home Assistant isn't answering right now. Try again in a moment.","choose":"Choose an action","search":"Search, for example toggle, position, or play","search_label":"Search for an action","none_found":"No action found.","gone":"Home Assistant doesn't offer this action for this entity any more, so a tap does nothing. Choose another one.","optional":"{name} (optional)","not_set":"Not set","on":"On","off":"Off","needs":"Home Assistant needs {fields}.","needs_firmware":"The screen performs an action from firmware 0.2.58: press Update on the screen. Until then a tap works as Automatic."},"icon":{"label":"Icon","none":"No icon","search":"Search, for example lamp, music, or door","search_label":"Search for an icon","none_text_only":"No icon, text only","aria":"Icon: {name}","none_found":"No icon found."},"inspect":{"title":"Current data","subtitle":"Connection, status, and supported properties","reading":"Reading…","fetching":"Fetching current HA status...","status":"Status: {status}","options":"Small slider: {slider} · Display: {display} · Size: {size} · Control: {control} · Background: {background}","yes":"yes","no":"no","control_none":"none","background_default":"Default","read_again":"Read again"},"topbar":{"removed":"{name} removed from the top bar","full":"The top bar has room for 1 item. | The top bar has room for {n} items.","already":"This is already in the top bar.","title":"Top bar","aria":"Top bar: {name}","builtin":"From the screen itself, also works without Home Assistant","items":"{used} of {n} item | {used} of {n} items","name":"Left: name","name_placeholder":"For example: Living room","right":"Right: time, sensors, or a clock","item_label":"{name}, slot {slot}. Enter: configure, arrows: move","remove_named":"Remove {name} from the top bar","max":"Maximum 1 item | Maximum {n} items","add_title":"Add the time, date, analog clock, or an entity","add_button":"+ Add time, date, or an entity","hint":{"overflow":"Not everything fits next to the name: the screen drops the dashed items. Remove one or choose a shorter name.","reorder":"Drag to reorder; tap an item to configure it.","needs_firmware":"Sensors, the date, and the analog clock appear from firmware {version}; until that update, this screen shows the name and, if the time is in the bar, the clock."},"detail":{"hidden":"Hidden: not active right now","overflow":"Doesn't fit next to the name","dial":"Dial"},"live":{"hidden":"Hidden right now: not active","overflow":"Doesn't currently fit next to the name","looks":"How it looks on the screen"},"analog_sample":"Small dial with the time","content":{"label":"What to show","hint":"Last changed keeps counting on the screen itself: “Just now”, “5 min ago”, “Yesterday”."},"auto_icon":"Automatic (like Home Assistant)","show":{"label":"Show","hint":"Only when active hides the item as long as it's off, closed, away, or 0. Handy for an open door, a running washing machine, or who's home."},"clock_24":"24 hour clock · change under {settings}","clock_12":"12 hour clock · change under {settings}","clock_settings":"Settings → Language & region","date_hint":"{date} today. The date follows the screen's own clock.","up":"↑ Up","down":"↓ Down","add":{"title":"Add to the top bar","slots":"{used} of {n} slot used | {used} of {n} slots used","builtin":"From the screen itself","added":"Already added","suggestions":"Suggestions from Home Assistant","entity":"An entity","search":"Search by name, room, or entity, e.g. temperature or door","search_label":"Search for an entity for the top bar","none_found":"No entities found."}},"screen_settings":{"groups":{"brightness":"Brightness","night":"Night","screen":"Screen"},"rows":{"brightness":"Brightness","dark_mode":"Dark mode","standby_enabled":"Auto standby","standby_seconds":"Standby after","standby_brightness":"Standby brightness","night_enabled":"Night mode","night_start":"Starts","night_end":"Ends","night_brightness":"Night brightness","auto_home":"Back to page 1","auto_home_seconds":"After","home_on_standby":"Also on standby","swipe_pages":"Swipe between pages","page_buttons":"Page buttons","rotation":"Rotation"},"duration":{"seconds":"{n} sec","minutes":"{n} min","hours":"{n} h","hours_minutes":"{h} h {m}"},"time":{"am":"{time} AM","pm":"{time} PM"},"other_screen_busy":"Still saving the other screen's settings. Try again in a moment.","reach":{"intro":"Page buttons and swiping are off, so only Go to page tiles change the page.","pages":"page {list} | pages {list}","tiles":"You have {n} Go to page tile, to {targets}. | You have {n} Go to page tiles, to {targets}.","tiles_missing_one":"You have {n} Go to page tile, to {targets}, but none to {missing}, so you can't reach it. | You have {n} Go to page tiles, to {targets}, but none to {missing}, so you can't reach it.","tiles_missing_more":"You have {n} Go to page tile, to {targets}, but none to {missing}, so you can't reach them. | You have {n} Go to page tiles, to {targets}, but none to {missing}, so you can't reach them.","none":"You have no Go to page tiles.","none_missing_one":"You have no Go to page tiles to {missing}, so you can't reach it.","none_missing_more":"You have no Go to page tiles to {missing}, so you can't reach them.","cut_off":"The tiles to {pages} are only on pages you can't reach.","no_way_back":"From {pages} no tile leads back to page 1."},"status":{"offline":"This screen is offline. Its settings can change once it's back.","screen":"Changes apply on the screen at once, and show up here when they change there.","app":"Changes apply at once. Firmware 0.2.49 lets the screen keep them itself."},"unavailable":"This entity is off in Home Assistant, or the screen is restarting.","lower":"{name} lower","higher":"{name} higher"},"update":{"starting":"Starting update…","building":"Building the firmware…","writing":"Writing the firmware over Wi-Fi…","phases":{"install":"Building and installing…","verify":"Waiting for the screen to come back…","settle":"Checking that it stays stable…"},"new_language":"New language: {name}"},"settings":{"updates":{"auto_on":"Screens will now update automatically at night.","auto_off":"Automatic updates are off.","title":"Firmware updates","busy":"Updating to firmware {version}…","no_screens":"No screen paired yet. New screens get firmware {version}.","available":"Firmware {version} is available for {n} screen. | Firmware {version} is available for {n} screens.","current":"All screens have firmware {version}.","all":"Update 1 screen | Update all {n} screens","whats_new":"What's new in firmware {version}","auto_label":"Update automatically every night","auto_hint":"Between 03:00 and 06:00, one screen at a time. Stops on an error and reports it in Home Assistant."},"claude":{"installed":"Skill installed. Claude Code picks it up right away.","installed_restart":"Skill installed. Restart Claude Code once so it finds the new skills folder.","text":"Teach Claude about ESP Screens, then ask: \\"Show an alert on all my screens when the mailbox is full.\\" Claude knows the alert events, every field, color, and icon.","install":"Install for Claude Code","install_again":"Install again","update":"Update the skill","not_installed":"Not installed","installed_chip":"● Installed","newer":"Installed · a newer version is ready","writes":"For Claude Code in Home Assistant. Writes one file to {path}; installing again replaces it.","download":"Download for claude.ai","upload":"Upload the zip in Claude under Customize → Skills."},"title":"Everything around your screens.","back":"← My screens","screens":{"title":"Screens","text":"Add a screen, or build and reinstall the firmware of one you already have.","firmware_detail":"Build and install via USB or Wi-Fi"},"language":{"title":"Language & region","screen_language":"Screen language","auto":"Home Assistant's language ({name})","auto_plain":"Home Assistant's language","ha_missing":"The screens use English until Home Assistant's language is available.","unchecked":"{name} · not checked yet, help welcome","help":"{name} is not checked yet, help welcome: {guide}","guide":"how to translate","update_hint":"After a change every screen needs a firmware update, one build each: with its Update button, or in the nightly updates.","time":"Time format","time_auto":"Automatic, follows the language ({clock})","clock_24":"24 hour","clock_12":"12 hour","numbers":"Number format","numbers_auto":"Automatic, follows the language ({example})","profile":"Your Home Assistant profile: {formats}","use_profile":"Use these","editor_hint":"The editor itself follows the language of your Home Assistant profile.","saved":"Saved.","saved_language":"Saved. Every screen takes the new language with its next update."},"alerts":{"text":"A card over the whole screen from an automation, on one screen or on all of them. The cheatsheet has the action names, fields, icons, and colors, and a form to try one.","detail":"Full-screen notifications, from an automation"}},"firmware":{"title":"Build and install screen firmware","intro":"The built-in ESPHome CLI uses your own profile (YAML with keys) and secrets. Choose the screen's profile, then a USB port (screen connected to the Home Assistant machine), {ota} with the hostname, or {download} to put the firmware on the screen from your own computer. {check} only validates, {build} compiles, {install} puts the firmware on the screen. Your tiles stay as they are in ESP Screens. The first build takes a few minutes.","ota":"Wi-Fi / OTA","download":"Download","check":"Check","build":"Build only","install":"Build & install","build_download":"Build & download","no_cli":"The ESPHome CLI is missing. Update the app to 0.2.0.","choose":"Choose the intended profile, then a USB port, an IP address, or Download.","profile":"ESPHome profile","install_to":"Install to","no_board":"USB · no board found on the Home Assistant machine yet","download_target":"Download · flash from your own computer","host":"IP address or hostname","download_file":"Download {name}","download_how":"Put it on the screen with {esphome_web} in Chrome or Edge: Connect, choose the screen's USB port, Install, and select this file. It holds your Wi-Fi password and the screen's keys: keep it to yourself."},"installer":{"title":{"setup":"Connect and install.","saved":"Profile saved.","running":"One moment…","ready":"Ready to download.","done":"Done.","failed":"That didn't work."},"intro":"ESP Screens creates the screen's own profile with unique keys and builds the firmware. Connect the screen with a USB data cable to the machine running Home Assistant, or download the firmware and put it on the screen from your own computer.","board":"Which screen do you have?","board_cyd":"CYD · 2.8 inch","board_guition":"Guition · 4 inch","name":"Name","name_placeholder":"Living room screen","device_name":"Device name","customize":"customize","name_hint":"Every screen gets its own profile with its own keys. Four screens? Go through this four times with a different name.","device_name_hint":"Lowercase letters, digits, and dashes. A different name for each screen.","wifi":{"title":"Wi-Fi","ssid":"Wi-Fi name (2.4 GHz)","password":"Wi-Fi password","new":"Fill in once: ESP Screens saves this in ESPHome secrets.yaml, later screens use it automatically.","missing":"Your ESPHome secrets.yaml is still missing Wi-Fi details. ESP Screens only fills in the missing lines.","ready":"Wi-Fi comes from your ESPHome secrets.yaml.","invalid":"secrets.yaml in the ESPHome folder isn't valid YAML. Fix the file first; it won't be overwritten."},"install_via":"Install via","later":"Later · save profile only","target":{"usb":"Connect the screen with a USB data cable to the Home Assistant machine; the list refreshes on its own. Or choose Download to use your own computer.","download":"Download the firmware and put it on the screen from your own computer, in Chrome or Edge. After that, updates go over Wi-Fi.","later":"The profile goes into the ESPHome folder. You can install later via Firmware & USB, or from ESPHome Device Builder.","several":"More than one board connected: choose this screen's port.","once":"Once over USB; after that, everything is wireless."},"install":"Install","save_profile":"Save profile","busy":"A build or installation is already running ({file}). Wait for it to finish.","no_cli":"The ESPHome CLI is missing from this installation; only saving the profile is possible.","progress":{"saved":"{file} is in the ESPHome folder","writing":"Writing firmware to {name}…","building":"Building firmware…","ready":"Firmware for {name} is ready","installed":"Firmware is on {name}","build_failed":"Build failed","install_failed":"Install failed"},"detail":{"saved":"Install it later from Firmware & USB: choose this profile, then the USB port of the Home Assistant machine, or Download to put the firmware on the screen from your own computer. Save the API key for pairing:","uploading":"Don't disconnect the USB cable yet.","building":"A first build takes a few minutes on a Raspberry Pi. You can leave this page: the installation keeps running and you'll find it again under New screen.","building_download":"A first build takes a few minutes on a Raspberry Pi. You can leave this page: the build keeps running and you'll find it again under New screen.","downloaded":"Put it on the screen from your own computer, then pair the screen with Home Assistant.","booted":"The screen boots up and connects to your Wi-Fi. Pair it with Home Assistant now:","booted_cyd":"The screen boots up and connects to your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs. Pair it with Home Assistant now:","see_log":"See the log below."},"download_steps":{"plug":"{bold} with a USB data cable.","plug_bold":"Plug the screen into your computer","open":"{bold} in Chrome or Edge, click Connect and choose the screen's USB port.","open_bold":"Open {esphome_web}","install":"{bold} and select {file}. The screen restarts and joins your Wi-Fi.","install_cyd":"{bold} and select {file}. The screen restarts and joins your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs.","install_bold":"Click Install"},"download_keep":"The file holds your Wi-Fi password and the screen's keys: keep it to yourself.","api_key":"API key","pairing":{"ha":"{bold} This happens outside ESP Screens. Home Assistant discovers {name} as an ESPHome device; click Add. Not discovered? Add ESPHome manually with the screen's IP address.","ha_bold":"Go to Home Assistant → Settings → Devices & services.","key":"{bold} above when Home Assistant asks for an encryption key.","key_bold":"Paste the API key","actions":"{bold} ESPHome integration → Configure → “Allow the device to perform Home Assistant actions”. Without this, the screen sees everything but controls nothing.","actions_bold":"Allow HA actions:","tiles":"{bold} Back in ESP Screens, the screen appears in the list on the left within about thirty seconds; until then it's shown there as “not yet in Home Assistant”.","tiles_bold":"Choose your tiles."},"log":"ESPHome log","retry":"Retry","another":"Install another screen","start_over":"Start over","done":"Done"},"alerts":{"eyebrow":"Alerts · cheatsheet","title":"A full-screen notification, from an automation.","intro":"Every screen has the {action} action. It places a card over everything, wakes the screen, and keeps the backlight at normal brightness until someone taps the button or the timeout runs out. Home Assistant itself shows no explanation or dropdowns for ESPHome actions; everything you can fill in is listed here.","loading":"The cheatsheet is still loading; one moment.","example":{"title":"Someone is at the door","subtitle":"Door 3, back","button":"Coming"},"sections":"Sections","nav":{"try":"Try it","screens":"Your screens","howto":"In an automation","all":"All screens","fields":"The fields","icons":"Icons","colors":"Colors","behaviour":"Behavior","events":"Events","tips":"Tips"},"try":{"text":"Send one alert now, with the same fields an automation sends. The screen shows the card and, with blinking on, flashes its backlight.","screen":"Screen","all":"All screens ({ready} ready)","not_ready":"{name} · not ready","title":"Title","subtitle":"Subtitle","icon":"Icon","color":"Color","button":"Button text","timeout":"Timeout (seconds, 0 waits for the button)","flash":"Blink the backlight","flash_hint":"Four times when the alert arrives.","sending":"Sending…","send":"Send alert","sent_all":"Sent to {n} screen. | Sent to {n} screens.","sent_to":"Sent to {name}.","sent_one":"Sent to the screen.","skipped":"1 skipped (offline or old firmware). | {n} skipped (offline or old firmware).","left_empty":"Left empty: {fields}.","nothing":"No screen could show it: check that a screen is online with firmware {version} or newer."},"white":"White (default)","screens":{"text":"Every screen has its own action, with the device name in it. From firmware {version}; update an older screen with its Update button under Screens.","none":"No screen paired yet. Install one via New screen; the action appears once Home Assistant sees the screen.","ready":"● firmware {version}","update":"Update needed · firmware {version}","unknown":"Device name unknown · update the screen","show":"Show alert","dismiss":"Dismiss alert"},"howto":{"add":"{add} and search for {esphome}. Choose your screen's action: Home Assistant calls it \\"Performs the action show_alert of the node {device}\\".","add_bold":"Add action","device":"device name","fields":"{bold} Home Assistant asks for all seven; leave what you don't use empty ({empty}, {zero}, off).","fields_bold":"Fill in the fields.","yaml":"Prefer YAML? Choose {edit} on the action and paste the example below.","example_for":"Example for","no_screen":"a screen (not paired yet)"},"edit_yaml":"Edit in YAML","copy_yaml":"Copy YAML","all":{"title":"All screens at once","text":"Fire the event {show} with the same fields, and ESP Screens passes the alert on to every screen that is online, including screens you add later. {dismiss} clears it everywhere. In an automation, add the {event} action or paste the example under {edit}. Leave out the fields you don't use. ESP Screens has to be running for this.","event":"Event"},"fields":{"text":"Text is free-form; the limit is in bytes, and an accented letter counts as two. What doesn't fit gets an ellipsis (title) or is dropped (subtitle).","field":"Field","type":"Type","what":"What it does","example":"Example","limit":"Limit","types":{"string":"text","int":"number","bool":"on / off","entity":"entity"},"bytes":"CYD {cyd} · Guition {guition} bytes","seconds":"0 to 86400 s","camera_limit":"Guition, firmware 0.2.57+"},"icons":{"text":"Fill in the name in {field}, for example {example}. {mdi} and the hex codepoint ({hex}) also work. Only these icons are included in the firmware; any other name shows the warning triangle. Tap an icon to copy its name.","handy":"Handy for notifications","search_label":"Search for an icon","search":"Search by name or description…","extra":"Also available: control and weather icons","copy":"Copy {name}","none":"No icon for \\"{query}\\". Unknown names show the warning triangle ({fallback})."},"colors":{"text":"Fill in the name in {field}. These are the pastel shades of the tiles, with dark text. Empty or unknown gives the white card. Tap to copy."},"behaviour":{"wakes":"{bold} An alert immediately wakes a dimmed or dark screen and appears above every page, every open light card, and the standby layer.","wakes_bold":"Wakes the screen.","on":"{bold} As long as the card is showing, the backlight stays at normal brightness. Standby and night hours wait. After the button, the regular standby time starts again.","on_bold":"On until the button.","timeout":"{bold} {zero} waits for the button, however long that takes. With {minute} the card disappears after a minute, but the button closes it sooner.","timeout_bold":"Timeout.","blinking":"{bold} {flash} blinks the backlight four times when the alert arrives (about a second) and leaves the screen on afterward.","blinking_bold":"Blinking.","replacing":"{bold} A new alert replaces the current one; there's no stack. The replaced alert reports itself as {replaced}.","replacing_bold":"Replacing.","closing":"{bold} {dismiss} clears the card, for example if the door is already open. Without an alert, that action does nothing.","closing_bold":"Closing remotely.","beside":"{bold} does nothing; only the button closes it. That way a wake-up tap never accidentally dismisses the alert.","beside_bold":"Tapping beside the card"},"events":{"text":"Every end fires the event {event} with {action}, {title}, {screen} (the device name) and the {device_id} that Home Assistant adds. Visible under Settings → Tools → Events.","when":"When","wait":"Waiting until someone presses the button"},"tips":{"color":"Use a {bold}: orange for the door, red for smoke or water, green for \\"done\\". The text always stays dark and readable.","color_bold":"color per kind of notification","short":"Keep the title {bold}; a screen shows about twenty characters on one line and ends a longer title with an ellipsis. Put details in the subtitle.","short_bold":"short","button":"A {bold} turns the notification into a question: \\"Coming\\", \\"Seen\\", \\"Turn off\\". The event then tells you who responded.","button_bold":"custom button text","resolve":"For an alert that resolves itself (the door opens, the laundry gets taken out) close it in the same automation with {dismiss}.","every":"Every screen? Fire {event} once (see All screens at once). The screens still work independently and each reports with its own {screen}.","claude":"Rather {bold} for the automation? Install the ESP Screens skill under Settings → Claude.","claude_bold":"ask Claude"}},"override":{"eyebrow":"Advanced · local override","title":"Override YAML","title_named":"Override YAML · {name}","intro":"This small file is yours. It is loaded after the shared screen package and stays in place when ESP Screen Manager updates. Change hardware-specific details here, such as a display model.","safe_title":"What is safe to change?","safe_text":"Display, touchscreen, substitutions, pins and other device details. Name, Wi-Fi, API, OTA and package links remain managed.","active":"Active","ready":"Ready to attach","editor_label":"Local override YAML","use_example":"Use example","clear":"Clear","characters":"1 character | {n} characters","lines":"1 line | {n} lines","save_check":"Save & check","save":"Save override","no_profile":"No ESPHome profile was found for this screen.","attached":"Changes here apply on the next build.","not_attached":"Save once to attach this file to the profile.","saving":"Checking and saving…","saved":"Saved. The override is kept during firmware updates.","saved_toast":"Override YAML saved.","checking":"Saved. ESPHome is checking the complete profile…","checking_profile":"ESPHome is checking the profile…","checking_stage":"ESPHome is checking the profile… {stage}","valid":"The complete profile is valid. Safe to build and install.","rejected":"ESPHome rejected the complete profile. See Firmware & USB for the full log.","confirm_example":"Replace the current text with the example?","example_loaded":"Example loaded. Save it when you are ready.","confirm_clear":"Clear the local override?","cleared":"The override will be empty after you save."},"mockup":{"date":{"weekdays_min":["Su","Mo","Tu","We","Th","Fr","Sa"],"months_short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"top_bar":"{weekday} {day} {month}"},"time":{"just_now":"Just now","minutes_ago":"{n} min ago","hours_ago":"1 hour ago | {n} hours ago","yesterday":"Yesterday","days_ago":"1 day ago | {n} days ago","weeks_ago":"1 week ago | {n} weeks ago","months_ago":"1 month ago | {n} months ago","years_ago":"1 year ago | {n} years ago","in_minutes":"In {n} min","in_hours":"In 1 hour | In {n} hours","tomorrow":"Tomorrow","in_days":"In 1 day | In {n} days"},"home":"Home","page_link":"Page {page} ›","unknown":"Unknown","unavailable":"Unavailable","run":{"scene":"Activate","script":"Run","press":"Press"},"weather":{"clear_night":"Clear, night","cloudy":"Cloudy","exceptional":"Exceptional","fog":"Fog","hail":"Hail","lightning":"Lightning","lightning_rainy":"Lightning, rainy","partlycloudy":"Partly cloudy","pouring":"Pouring","rainy":"Rainy","snowy":"Snowy","snowy_rainy":"Snowy, rainy","sunny":"Sunny","windy":"Windy","windy_variant":"Windy"}}}`),pu={_meta:Tm,editor:Am},or=e=>e%10>=2&&e%10<=4&&(e%100<12||e%100>14),ir={one_other:e=>e===1?0:1,one_upto_1:e=>Math.abs(e)<=1?0:1,slavic_pl:e=>e===1?0:or(e)?1:2,east_slavic:e=>e%10===1&&e%100!==11?0:or(e)?1:2,none:()=>0},Pm=Object.assign({"../../screen_manager/translations/de.json":()=>bn(()=>import("./de-D8f1sCWy.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/en-GB.json":()=>bn(()=>import("./en-GB-BZ7UoEeO.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/es.json":()=>bn(()=>import("./es-CkwupUxz.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/fr.json":()=>bn(()=>import("./fr-DqQ0gkYe.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/it.json":()=>bn(()=>import("./it-8dniYzl4.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/nl.json":()=>bn(()=>import("./nl-Bml3MQex.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/pl.json":()=>bn(()=>import("./pl-2alySqqF.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/pt.json":()=>bn(()=>import("./pt-BD1M56yK.js"),[],import.meta.url).then(e=>e.default)}),Ji=Object.fromEntries(Object.entries(Pm).map(([e,t])=>[e.slice(e.lastIndexOf("/")+1,-5),t])),zs={en:pu._meta},Ol={},hu=e=>Ol[e]=(t,n)=>Math.min((ir[zs[e]?.plural]||ir.one_other)(t),n-1),Nl=()=>["en",...Object.keys(Ji).sort(),...Object.keys(zs).filter(e=>e!=="en"&&!Ji[e])];Nl().forEach(hu);const ds=_m({locale:"en",fallbackLocale:"en",messages:{en:{editor:pu.editor}},pluralRules:Ol,missingWarn:!1,fallbackWarn:!1,missing:(e,t)=>{}}),u=ds.global.t,mu=()=>ds.global.locale.value,Lm=e=>zs[e];function Im(e=window){try{if(e.parent!==e){const t=e.parent.document.documentElement.lang;if(t)return t}}catch{}return e.navigator.language||"en"}function gu(e,t=Nl()){const n=o=>t.find(i=>i.toLowerCase()===o.toLowerCase()),s=(e||"").trim();return s?n(s)||n(s.split("-")[0]):void 0}const vu=(e,t=Nl())=>gu(e,t)||"en";function _u(e){if(typeof e=="string")return e.trim()?e:void 0;if(Array.isArray(e))return e.every(n=>typeof n=="string"&&n.trim())?e:void 0;if(!e||typeof e!="object")return;const t=Object.entries(e).map(([n,s])=>[n,_u(s)]).filter(([,n])=>n!==void 0);return t.length?Object.fromEntries(t):void 0}function yu(e,t){return typeof e=="string"?[t]:!e||typeof e!="object"?[]:Object.entries(e).flatMap(([n,s])=>yu(s,`${t}.${n}`))}function Om(e,t){zs[e]=t._meta,Ol[e]||hu(e);const n=_u(t.editor)||{};ds.global.setLocaleMessage(e,{editor:n});const s=yu(n,"editor").filter(o=>{try{return u(o,{},{locale:e}),!1}catch{return!0}});if(s.length){for(const o of s){const i=o.split(".").slice(1),r=i.pop();delete i.reduce((c,d)=>c[d],n)[r]}ds.global.setLocaleMessage(e,{editor:n})}}const lr={};function bu(e){if(zs[e])return Promise.resolve(!0);const t=Ji[e];return t?lr[e]??=t().then(n=>(Om(e,n),!0),()=>(delete lr[e],!1)):Promise.resolve(!1)}async function Nm(e=vu(Im())){const t=await bu(e)?e:"en";return ds.global.locale.value=t,document.documentElement.lang=t,t}const ar={point:[".",","],comma:[",","."],space:[","," "]};function wu(e,t){const n=String(e),s=/^(-?)(\d+)(?:\.(\d+))?$/.exec(n);if(!s)return n;const[o,i]=ar[t]||ar.point,r=s[2].replace(/\B(?=(\d{3})+$)/g,i);return`${s[1]}${r}${s[3]!==void 0?o+s[3]:""}`}const rr={comma_decimal:"point",decimal_comma:"comma",space_comma:"space"};function Mm(e=window){try{if(e.parent===e)return{};const t=e.parent.document.querySelector("home-assistant")?.hass?.locale,n=["12","24"].includes(t?.time_format)?t.time_format:void 0;return{...n?{clock:n}:{},...rr[t?.number_format]?{numbers:rr[t.number_format]}:{}}}catch{return{}}}const Rm=(e,t=mu())=>new Intl.ListFormat(t==="en"?"en-GB":t,{type:"conjunction"}).format(e.map(String)),Je=6,mn=8,Hs=mn*Je,ku=["single","wide","full"],Ln=e=>e===!0?"wide":e===!1?"single":e,gs=e=>/^screen\.page_[1-8]$/.test(e)?Number(e.slice(-1)):0,ft=e=>ku.includes(e.options?.size)?e.options.size:"single",Xi=e=>ft(e)!=="single",$u=e=>ft(e)==="full",Su=e=>e-e%Je,xu=e=>e-e%2,At=e=>Math.floor(e/Je),Ml=e=>Ln(e)==="full"?Je:Ln(e)==="wide"?2:1,qn=(e,t)=>Ln(t)==="full"?Array.from({length:Je},(n,s)=>Su(e)+s):Ln(t)==="wide"?[e,e+1]:[e],cr=(e,t)=>Ln(t)==="full"?Su(e):Ln(t)==="wide"?xu(e):e,et=e=>e.tiles.map(t=>({tile:t,slot:t.slot}));function Cu(e){let t=0;return e.map(n=>{const s=ft(n);s==="full"&&t%Je?t+=Je-t%Je:s==="wide"&&t%2===1&&t++;const o=t;return t+=Ml(s),o})}function Dm(e){const t=Cu(e);return e.some((n,s)=>n.slot!==t[s])}function Qo(e){if(e.tiles.some(t=>!Number.isInteger(t.slot))){const t=Cu(e.tiles);e.tiles.forEach((n,s)=>n.slot=t[s])}e.tiles.sort((t,n)=>t.slot-n.slot)}function ls(e){const t=new Set;for(const{tile:n,slot:s}of e)for(const o of qn(s,ft(n)))t.add(o);return t}const Vs=(e,t,n)=>Number.isInteger(t)&&t>=0&&t!e.has(s));function Po(e,t,n=0){for(let s=n;so.includes(h))?c.push(d):r.push({tile:d,slot:d.slot}));for(const d of c){const h=ft(d),p=ls(r);let g=i.map(v=>cr(v,h)).find(v=>Vs(p,v,h));if(g===void 0&&(g=Eu(p,h,d.slot)),g<0)return null;r.push({tile:d,slot:g})}return r.sort((d,h)=>d.slot-h.slot)}function It(e,t=1){const n=Math.max(0,...e.map(({tile:s,slot:o})=>o+Ml(ft(s))));return Math.min(mn,Math.max(1,Math.ceil(n/Je),t||1))}function Fm(e,t){const n=Array.from({length:t},()=>new Set);let s=0;for(const{tile:h,slot:p}of e){const g=gs(h.entity)-1,v=At(p);g<0||g>=t||v>=t||(s++,n[v].add(g))}const o=h=>{const p=new Set([0]),g=[0];for(;g.length;)for(const v of h(g.shift()))p.has(v)||(p.add(v),g.push(v));return p},i=o(h=>[...n[h]]),r=o(h=>n.flatMap((p,g)=>p.has(h)?[g]:[])),c=Array.from({length:t},(h,p)=>p),d=h=>h.map(p=>p+1);return{tiles:s,targets:d(c.filter(h=>n.some(p=>p.has(h)))),unreachable:d(c.filter(h=>!i.has(h))),noWayBack:d(c.filter(h=>i.has(h)&&!r.has(h)))}}function Um(e){const t=e.split(".")[0];return t==="sun"?{options:{display:"sunpath",size:"wide"}}:t==="weather"?{options:{display:"forecast",size:"wide"}}:gs(e)?{}:t==="screen"?{options:{display:"digital",size:"wide"}}:{}}const Au=e=>({entity:e,name:"",slot:-1,...Um(e)});function Pu(e,t){const n=e.entity.split(".")[0],s=t.controls?.[n],o=e.options||{};if(!s||!["wide","full"].includes(o.size)||(o.display||"standard")!=="standard"||o.inline==="slider")return null;const i=o.controls??(o.size==="full"?"none":s.default);return i==="none"?null:i}function jm(e,t){const n=Pu(e,t);return n?t.controls?.[e.entity.split(".")[0]]?.choices.find(s=>s.key===n)?.label.toLocaleLowerCase()||n:u("editor.inspect.control_none")}const zi=e=>(/^(\d+)\.(\d+)\.(\d+)$/.exec(e||"")||[]).slice(1).map(Number);function gn(e,t){const[n,s]=[zi(e),zi(t)];if(n.length!==3||s.length!==3)return!1;for(let o=0;o<3;o++)if(n[o]!==s[o])return n[o]>s[o];return!0}const Hm=(e,t,n,s)=>gn(e,`${t}.${n}.${s}`),Vm=Hs;function Wm(e){return zi(e).length!==3?10:gn(e,"0.2.62")?Vm:gn(e,"0.2.7")?20:10}const Bm=["standard","watch","forecast","graph","digital","analog","sunpath"],Lu=e=>Bm.includes(e)?u(`editor.displays.${e}`):e,Km=e=>u(`editor.sizes.${ku.includes(e)?e:"single"}`),ur=["light","switch","input_boolean","fan","media_player","climate"],Ym=["light","fan","cover","number","input_number","media_player"],qm={light:["☀","#ad7600","#fff3d3"],climate:["❄","#c86620","#ffebdc"],vacuum:["◉","#008577","#def3ed"],fan:["✣","#008aab","#def5fa"],cover:["▤","#8053af","#eee5f8"],media_player:["▶","#007cad","#def2fc"],sensor:["⌁","#3476b1","#e5effa"],binary_sensor:["◈","#ad7600","#fff3d3"],switch:["⏻","#ad7600","#fff3d3"],input_boolean:["⏻","#ad7600","#fff3d3"],scene:["✦","#8053af","#eee5f8"],script:["▷","#8053af","#eee5f8"],weather:["☁","#007cad","#def2fc"],number:["±","#008577","#def3ed"],input_number:["±","#008577","#def3ed"],select:["≡","#5862af","#eaecfa"],input_select:["≡","#5862af","#eaecfa"],button:["↗","#5862af","#eaecfa"],input_button:["↗","#5862af","#eaecfa"],screen:["◷","#25282c","#e9ecf1"],sun:["☼","#c86620","#ffebdc"],timer:["⏱","#008577","#def3ed"],person:["☺","#2f7d32","#e1f2e2"],camera:["◧","#3d4a57","#e6ebf0"],image:["◧","#3d4a57","#e6ebf0"]};function Bt(e){const t=e.split(".")[0],n=qm[t];return n?[u(`editor.domains.${t}`),...n]:[u("editor.domains.entity"),"◇","#637184","#edf0f4"]}const Iu={clock:"clock-outline",analog:"clock-outline",date:"calendar"},ct=e=>JSON.stringify(e),Le=e=>String.fromCodePoint(parseInt(e,16));function Zo(e,t=new Date){let n=t.getHours();return e||(n=n%12||12),`${String(n).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}const Rl=(e=new Date,t="en")=>u("editor.mockup.date.top_bar",{weekday:u(`editor.mockup.date.weekdays_min.${e.getDay()}`,{},{locale:t}),day:e.getDate(),month:u(`editor.mockup.date.months_short.${e.getMonth()}`,{},{locale:t})},{locale:t});function Gm(e,t=Math.floor(Date.now()/1e3),n="en"){const s=t-e,o=Math.abs(s),i=c=>Math.floor(o/c),r=(c,d)=>d===void 0?u(`editor.mockup.time.${c}`,{},{locale:n}):u(`editor.mockup.time.${c}`,d,{locale:n});return s<0?o<3600?r("in_minutes",Math.max(1,i(60))):o<86400?r("in_hours",i(3600)):o<172800?r("tomorrow"):r("in_days",i(86400)):o<60?r("just_now"):o<3600?r("minutes_ago",i(60)):o<86400?r("hours_ago",i(3600)):o<172800?r("yesterday"):o<604800?r("days_ago",i(86400)):o<2592e3?r("weeks_ago",i(604800)):o<31536e3?r("months_ago",i(2592e3)):r("years_ago",i(31536e3))}const Jm={guition:{width:448,top:36,name:27,text:21,icon:26},cyd:{width:298,top:24,name:18,text:14,icon:18}};let ys;const Qi=new Map,Xm=()=>Qi.clear();function Vn(e,t){const n=`${t}|${e}`;let s=Qi.get(n);if(!s){if(ys===void 0&&(ys=document.createElement("canvas").getContext("2d")),ys){ys.font=t;const o=ys.measureText(e);s={left:-o.actualBoundingBoxLeft,right:o.actualBoundingBoxRight,top:-o.actualBoundingBoxAscent,bottom:o.actualBoundingBoxDescent,advance:o.width}}else{const o=Number(/(\d+(?:\.\d+)?)px/.exec(t)?.[1]||14),i=[...e].length*o*.55;s={left:0,right:i,top:-o*.72,bottom:o*.02,advance:i}}Qi.set(n,s)}return s}const zm=e=>({name:`500 ${e.name}px "Bar Roboto"`,text:`400 ${e.text}px "Bar Roboto"`,icon:`${e.icon}px "Tile Icons"`});function Qm(e){return{icon:Math.max(2,Math.floor((e*4+5)/10)),item:Math.max(6,Math.floor((e*125+50)/100)),name:Math.max(8,Math.floor((e*16+5)/10))}}function Ou(e,t,n,s){const o=zm(t),i=Vn("0",o.text),r=Math.round(i.bottom-i.top),c=Qm(r),d=Vn(String.fromCodePoint(983376),o.icon),h=Math.round(d.bottom-d.top),p=e.map((x,j)=>{const O=s(x),C={index:j,item:x,view:O,shown:O.shown,width:0};return O.analog?(C.dial=h,C.width=h,C):(O.icon&&(C.icon={glyph:Le(O.icon),ink:Vn(Le(O.icon),o.icon)},C.width+=C.icon.ink.right-C.icon.ink.left),O.text&&(C.text={value:O.text,ink:Vn(O.text,o.text)},C.width+=(C.icon?c.icon:0)+C.text.ink.right-C.text.ink.left),C)}),g=p.filter(x=>x.shown),v=Vn(n,o.name).advance,$=Math.min(v,Math.floor(t.width*35/100)),U=x=>x.reduce((j,O)=>j+O.width,0)+Math.max(0,x.length-1)*c.item;let A=0;for(;At.width;)A++;const T=g.slice(A),k=new Set(g.slice(0,A).map(x=>x.index));let S=t.width-U(T);for(const x of T)x.x=S,S+=x.width+c.item;const F=T.length?T[0].x-c.name:t.width;return{metrics:t,fonts:o,cap:r,zero:i,gaps:c,parts:p,placed:T,dropped:k,nameText:n,natural:v,nameRoom:F}}function Zm(e,t,n){if(Vn(e,t).advance<=n)return e;const s=[...e];for(;s.length&&Vn(s.join("")+"...",t).advance>n;)s.pop();return s.join("")+"..."}function eg(e){"fonts"in document&&Promise.all([document.fonts.load('500 27px "Bar Roboto"',"Studio 0"),document.fonts.load('400 21px "Bar Roboto"',"Away 0"),document.fonts.load('26px "Tile Icons"',String.fromCodePoint(983376))]).then(()=>{Xm(),e()}).catch(()=>{})}let Nu="";function tg(e){Nu=e||""}async function Dl(e,t={}){const n=await fetch(`api/${e}`,{...t,headers:{"Content-Type":"application/json","X-Screen-CSRF":Nu,"X-ESP-Screens-Language":mu(),...t.headers}});if(!n.ok){let s=u("editor.api.failed");try{const o=(await n.json())?.error;typeof o=="string"&&o.trim()&&(s=o)}catch{}throw new Error(s)}return n}const Dt=async e=>(await Dl(e)).json(),ht=async(e,t,n,s={})=>{const i=await(await Dl(e,{method:t,body:n===void 0?void 0:JSON.stringify(n),...s})).text();return i?JSON.parse(i):null},m=Xn({inventory:{screens:[],entities:[]},connected:!1,reachable:!0,selected:null,layout:null,dirty:!1,busy:!1,saved:0,tab:"layout",selectedTile:null,inspector:null,iconPickerOpen:!1,actionPickerOpen:!1,actionSearch:"",insertAt:-1,filter:"",search:"",capabilities:{},entityActions:{},topbarPreviews:{},topbarAdded:null,topbarOverflow:[],settingEdits:{},settingPending:!1,updating:[],toast:null,now:Date.now(),fontsVersion:0,route:location.hash,overrideProfile:null,overrideFriendly:"",drag:{active:!1,moving:null,preview:null},menuOpen:!1,liveStates:{},room:"",hidePlaced:!1,palette:!1,firmwareJob:null}),wt=L(()=>m.inventory.screens.find(e=>e.id===m.selected)),fs=e=>(e&&"firmware_known"in e?e.firmware_known:e?.firmware)||"",Mu=L(()=>fs(wt.value)),Tn=(e,t,n)=>Hm(Mu.value,e,t,n),Gn=L(()=>{const e=wt.value?.tile_limit;return typeof e=="number"&&Number.isInteger(e)&&e>0?e:Wm(Mu.value)}),dr=L(()=>{const e=wt.value?.full_page;return typeof e=="boolean"?e:Tn(0,2,62)}),ng=L(()=>{const e=wt.value?.page_tiles_repeat;return typeof e=="boolean"?e:Tn(0,2,65)}),ei=e=>ng.value&&gs(e)>0,Fl=L(()=>wt.value?.board==="guition"),Ru=L(()=>Jm[Fl.value?"guition":"cyd"]),bi=L(()=>m.selectedTile&&m.layout?.tiles.includes(m.selectedTile)?m.selectedTile:void 0),Ul=e=>!!m.selectedTile&&Se(m.selectedTile)===Se(e);let fr=0;function Ce(e,t){m.toast={message:e,action:t},clearTimeout(fr),fr=window.setTimeout(()=>m.toast=null,t?8e3:5e3)}function sg(){m.toast=null}async function Ot(e,t,n="api_key"){try{if(!navigator.clipboard||!window.isSecureContext)throw new Error;await navigator.clipboard.writeText(e),Ce(u(`editor.copy.${n}.copied`))}catch{if(t){const s=document.createRange();s.selectNodeContents(t);const o=window.getSelection();o?.removeAllRanges(),o?.addRange(s)}Ce(u(document.execCommand("copy")?`editor.copy.${n}.copied`:`editor.copy.${n}.selected`))}}function Lo(){const e="/config/integrations/dashboard";try{window.top.location.assign(e)}catch{window.open(e,"_blank")}}const og=["","#settings","#new-screen","#firmware","#alerts","#override"],St=L(()=>og.includes(m.route)?m.route:"");function We(e){if(location.hash===e){m.route=e;return}location.hash=e}window.addEventListener("hashchange",()=>{m.route=location.hash,window.scrollTo(0,0)});function Qs(e){return m.inventory.entities.find(t=>t.id===e)?.name||m.inventory.builtin?.find(t=>t.id===e)?.name||e}let wi={source:null,byName:{}};function Zs(e){return wi.source!==m.inventory.icons&&(wi={source:m.inventory.icons,byName:Object.fromEntries((m.inventory.icons?.groups||[]).flatMap(t=>t.icons.map(n=>[n.name,n])))}),e?wi.byName[e]:void 0}function In(e){const t=m.inventory.icons;if(!t)return"F0335";const n=m.inventory.entities.find(o=>o.id===e),s=e.split(".")[0];return t.builtin?.[e]?t.builtin[e]:n?.icon?n.icon:s==="weather"?t.weather[n?.state||""]||t.weather.partlycloudy:s==="sun"?t.sun[n?.state||""]||t.sun.below_horizon:t.defaults[s]||t.fallback}const $s=e=>Zs(e.options?.icon)?.cp||In(e.entity),ki=new Set;async function ti(e){const t=[...new Set(e)].filter(n=>!ki.has(n)&&!n.startsWith("screen."));if(t.length){t.forEach(n=>ki.add(n));try{for(let n=0;n`entity=${encodeURIComponent(o)}`).join("&");Object.assign(m.capabilities,(await Dt(`capabilities?${s}`)).capabilities||{})}}catch{t.forEach(n=>ki.delete(n))}}}const $i=new Set;async function ig(e){if(!$i.has(e)){$i.add(e);try{m.entityActions[e]=(await Dt(`entity-actions?entity=${encodeURIComponent(e)}`)).actions}catch{$i.delete(e)}}}let Si=!1;async function ni(){const e=[...new Set((m.layout?.tiles||[]).map(t=>t.entity).filter(t=>!t.startsWith("screen.")))];if(!(!e.length||Si)){Si=!0;try{for(let t=0;t`entity=${encodeURIComponent(s)}`).join("&");Object.assign(m.liveStates,(await Dt(`states?${n}`)).states||{})}}catch{}finally{Si=!1}}}function lg(e){const t=m.liveStates[e];if(t)return t;const n=m.inventory.entities.find(s=>s.id===e);return n?.state?{state:n.state,word:null,a:{}}:null}let Zi=0;function mt(){m.dirty=!0,m.saved=0,Zi++}function Du(e){if(e===m.selected&&m.layout&&m.dirty){tt(),m.tab="layout",m.menuOpen=!1,We("");return}if(e!==m.selected&&m.dirty&&!confirm(u("editor.screen_view.confirm.switch")))return;e!==m.selected&&(Bs(),m.settingEdits={}),m.selected=e,m.selectedTile=null,m.inspector=null,m.tab="layout",m.menuOpen=!1;const t=m.inventory.screens.find(s=>s.id===e);if(!t){m.layout=null;return}const n=JSON.parse(JSON.stringify(t.layout));Qo(n),n.pages=It(et(n),n.pages),m.layout=n,m.insertAt=-1,m.dirty=!1,m.saved=0,si(0),ti(n.tiles.map(s=>s.entity)),ni(),We("")}const ag=()=>m.layout?et(m.layout):[];function rg(e){const t=m.layout,n=t.tiles.map(o=>`${o.entity}@${o.slot}`).join();for(const{tile:o,slot:i}of e)o.slot=i,t.tiles.includes(o)||t.tiles.push(o);Qo(t),t.pages=It(et(t),t.pages);const s=t.tiles.map(o=>`${o.entity}@${o.slot}`).join()!==n;return s&&mt(),s}function eo(e,t){if(!m.layout)return!1;ti([e.entity]);const n=Tu(m.layout.tiles,e,t),s=n?rg(n):!1;return s&&!m.liveStates[e.entity]&&ni(),s}function Fu(e){const t=m.layout;if(!t||!ei(e)&&t.tiles.some(o=>o.entity===e)||t.tiles.length>=Gn.value)return;const n=Au(e),s=m.insertAt>=0?m.insertAt:Po(ls(et(t)),ft(n));m.insertAt=-1,s>=0&&eo(n,s)&&el(n)}function Uu(e){const t=m.layout;if(!t)return;const n=t.tiles.indexOf(e);n<0||(t.tiles.splice(n,1),Ul(e)&&tt(),mt(),t.pages=It(et(t),t.pages),Ce(u("editor.layout.removed",{name:e.name||Qs(e.entity)}),{label:u("editor.common.undo"),run:()=>eo(e,e.slot)}))}function pr(){const e=m.layout;e&&(e.pages=Math.min(mn,It(et(e),e.pages)+1),mt())}function cg(e){const t=m.layout;if(t){for(const n of t.tiles)At(n.slot)>e&&(n.slot-=Je);t.pages=Math.max(1,It(et(t),t.pages)-1),mt()}}function ug(e,t){const n=m.layout;if(!n||!Number.isInteger(t)||t<0||t>=mn||t===At(e.slot))return!1;const s=Po(ls(et(n).filter(i=>i.tile!==e)),ft(e),t*Je),o=eo(e,s>=0&&At(s)===t?s:t*Je);return o||Ce(u("editor.layout.no_room",{page:t+1})),o}function dg(){const e=m.layout;if(!e)return 1;const t=m.drag.preview||et(e),n=It(t,e.pages);return m.drag.active&&nh.key!=="none"&&o.controls.includes(h.key))?.key||"none"),mt();const d=m.layout;if(d){if($u(e)&&r!=="full"){const h=At(e.slot),p=d.tiles.filter($=>$!==e&&At($.slot)===h),g=ls(et(d).filter($=>$.tile!==e&&!p.includes($.tile))),v=[];for(const $ of p){const U=Po(g,ft($),(h+1)*Je);if(U<0){v.length=0;break}v.push([$,U]);for(const A of qn(U,ft($)))g.add(A)}if(v.length===p.length){for(const[$,U]of v)$.slot=U;e.slot=h*Je}else{const $=Po(ls(et(d).filter(U=>U.tile!==e)),"full");$>=0?e.slot=$:(e.options.size=r,Ce(u("editor.layout.no_free_page")))}}else if(Xi(e)&&!i){const h=ls(et(d).filter(v=>v.tile!==e)),p=xu(e.slot),g=Vs(h,p,"wide")?p:Eu(h,"wide",p);g>=0&&(e.slot=g)}Qo(d),d.pages=It(et(d),d.pages)}}function fg(e,t){const n=`screen.page_${t}`,s=m.layout;return!s||n===e.entity||!gs(n)?!1:!ei(n)&&s.tiles.some(o=>o.entity===n)?(Ce(u("editor.layout.page_taken",{page:t})),!1):(e.entity=n,s.pages=Math.max(It(et(s),s.pages),t),mt(),!0)}function el(e){Ul(e)||(m.iconPickerOpen=!1,m.actionPickerOpen=!1,m.actionSearch=""),m.selectedTile=e,m.inspector={kind:"tile"},ti([e.entity])}function nn(e){m.inspector?.kind==="bar"&&m.inspector.index===e||(m.iconPickerOpen=!1),m.selectedTile=null,m.inspector={kind:"bar",index:e}}function hr(){m.selectedTile=null,m.inspector={kind:"bar-add"}}function tt(){m.inspector=null,m.selectedTile=null}async function tl(){if(m.busy||!m.layout||!m.selected)return;m.busy=!0;const e=Zi,t=m.selected;try{const{settings:n,...s}=m.layout;if(await ht(`screens/${encodeURIComponent(m.selected)}`,"PUT",s),m.selected!==t){const o=m.inventory.screens.find(i=>i.id===t)?.name;Ce(o?u("editor.screen_view.saved.other",{name:o}):u("editor.screen_view.saved.other_unnamed"))}else Zi===e?(m.dirty=!1,m.saved=Date.now(),Ce(u("editor.screen_view.saved.current"))):Ce(u("editor.screen_view.saved.newer_edit"));await On()}catch(n){Ce(n.message)}finally{m.busy=!1}}const Jn=e=>!!(e&&e.alert_action&&gn(fs(e),m.inventory.alerts?.min_firmware||"0.2.31"));async function ju(e){try{await ht(`screens/${encodeURIComponent(e.id)}/identify`,"POST"),Ce(u("editor.screen_view.identified",{name:e.name}))}catch(t){Ce(t.message)}}async function pg(e,t){return await ht("alerts/test","POST",{screen:e,data:t})}const hg=["title","tiles","header","pages"];function Hu(e,t){const n=m.layout;if(!n)return;const s=(Array.isArray(e.tiles)?e.tiles:[]).filter(c=>!!(c&&typeof c=="object"&&typeof c.entity=="string"&&c.entity.includes("."))).map(c=>({entity:c.entity,name:typeof c.name=="string"?c.name:"",slot:Number.isInteger(c.slot)?c.slot:-1,...c.options&&typeof c.options=="object"?{options:{...c.options}}:{}})),o=new Set,i=s.filter(c=>ei(c.entity)||!o.has(c.entity)&&o.add(c.entity)),r=i.slice(0,Gn.value);n.tiles=r,e.header&&Array.isArray(e.header.items)?n.header={items:e.header.items.map(c=>({...c}))}:delete n.header,n.pages=Number.isInteger(e.pages)?e.pages:1,Qo(n),n.pages=It(et(n),n.pages),tt(),mt(),ti(r.map(c=>c.entity)),ni(),si(0),Ce(t(r.lengthn.id===e);!t||!m.layout||Hu(JSON.parse(JSON.stringify(t.layout)),n=>n?u("editor.layout.copied_part",{name:t.name,...n}):u("editor.layout.copied",{name:t.name}))}function gg(){const e=m.layout;if(!e)return"";const t={esp_screens_layout:1};for(const n of hg)e[n]!==void 0&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Vu(){const e=gg();if(!e)return;const t=`${(wt.value?.name||"screen").toLowerCase().replace(/[^a-z0-9]+/g,"-")}.layout.json`,n=URL.createObjectURL(new Blob([e],{type:"application/json"})),s=document.createElement("a");s.href=n,s.download=t,s.click(),setTimeout(()=>URL.revokeObjectURL(n),5e3),Ot(e,void 0,"layout_json")}function vg(e){let t;try{t=JSON.parse(e)}catch{Ce(u("editor.layout.not_json"));return}if(!t||typeof t!="object"||!Array.isArray(t.tiles)){Ce(u("editor.layout.no_tiles_in_file"));return}Hu(t,n=>n?u("editor.layout.imported_part",n):u("editor.layout.imported"))}function _g(e){const t=m.inventory.updates?.target,n=m.inventory.changelog;if(!Array.isArray(n)||!t)return[];const s=fs(e),o=[];for(const i of n)if(!(gn(i.firmware,t)&&i.firmware!==t)&&!(s&&gn(s,i.firmware)))for(const r of i.lines)o.includes(r)||o.push(r);return o}let xi=!1;async function yg(){if(!xi){xi=!0;try{const e=await Dt("firmware");m.firmwareJob={job:e.job,logs:e.logs||[]}}catch{}finally{xi=!1}}}const nl=()=>m.inventory.screens.some(e=>e.update?.state==="running")||m.updating.length>0;function ns(e){const t=e.update||{};if(!(t.state==="running"||m.updating.includes(e.id)))return null;const n=m.firmwareJob?.job?.stage;return t.phase==="verify"?{percent:78,text:xs("verify")}:t.phase==="settle"?{percent:92,text:xs("settle")}:t.phase==="install"||!t.phase?n==="upload"?{percent:66,text:u("editor.update.writing")}:n?{percent:40,text:u("editor.update.building")}:{percent:12,text:xs("install")}:{percent:12,text:xs(t.phase)}}const vn=()=>m.layout?.header?.items??(m.layout?.settings?.show_clock??!0?[{type:"clock"}]:[]),Sn=()=>m.inventory.header?.max_items||6;function Ws(e){m.layout&&(m.layout.header={items:e},mt(),si())}let mr=0;function si(e=150){clearTimeout(mr),mr=window.setTimeout(async()=>{const t=vn();if(t.some(n=>n.type==="entity"))try{const n=await ht("header-preview","POST",{header:{items:t}});t.forEach((s,o)=>m.topbarPreviews[ct(s)]=n.items[o])}catch{}},e)}function Ss(e){return e.type==="entity"?Qs(e.entity):m.inventory.header?.builtin.find(t=>t.type===e.type)?.label||e.type}function kn(e){const t=new Date(m.now);if(e.type==="clock")return{text:Zo(hs.value,t),shown:!0};if(e.type==="date")return{text:Rl(t,ps.value),shown:!0};if(e.type==="analog")return{analog:!0,shown:!0};const n=m.topbarPreviews[ct(e)];return n?{icon:n.i||null,text:n.k==="ago"?Gm(n.e,Math.floor(m.now/1e3),ps.value):n.t,color:n.c?`#${n.c}`:null,shown:n.shown}:{icon:e.icon==="none"?null:Zs(e.icon)?.cp||In(e.entity),text:"…",shown:!0,loading:!0}}function Ci(e,t){const n=[...vn()];return t<0||t>=n.length||e===t?!1:(n.splice(t,0,...n.splice(e,1)),Ws(n),!0)}function gr(e){const t=[...vn()],[n]=t.splice(e,1);n&&(m.inspector?.kind==="bar"&&tt(),Ws(t),Ce(u("editor.topbar.removed",{name:Ss(n)}),{label:u("editor.common.undo"),run:()=>{const s=[...vn()];s.splice(Math.min(e,s.length),0,n),Ws(s)}}))}function Ei(e){const t=vn();if(t.length>=Sn())return Ce(u("editor.topbar.full",Sn()));if(t.some(n=>ct(n)===ct(e)))return Ce(u("editor.topbar.already"));m.topbarAdded={key:ct(e),time:Date.now()},Ws([...t,e]),nn(t.length)}const bg=[{group:"brightness",icon:"F0599",rows:[{key:"brightness",kind:"number",min:5,max:100,step:5,unit:"%"},{key:"dark_mode",kind:"toggle"},{key:"standby_enabled",kind:"toggle"},{key:"standby_seconds",kind:"duration",min:60,max:86400,needs:"standby_enabled"},{key:"standby_brightness",kind:"number",min:0,max:100,step:5,unit:"%",needs:"standby_enabled",cap:"brightness"}]},{group:"night",icon:"F0594",rows:[{key:"night_enabled",kind:"toggle"},{key:"night_start",kind:"moment",needs:"night_enabled"},{key:"night_end",kind:"moment",needs:"night_enabled"},{key:"night_brightness",kind:"number",min:0,max:100,step:5,unit:"%",needs:"night_enabled",cap:"brightness"}]},{group:"screen",icon:"F0379",rows:[{key:"auto_home",kind:"toggle"},{key:"auto_home_seconds",kind:"duration",min:30,max:3600,needs:"auto_home"},{key:"home_on_standby",kind:"toggle"},{key:"swipe_pages",kind:"toggle"},{key:"page_buttons",kind:"toggle"},{key:"rotation",kind:"choice",options:[0,90,180,270]}]}],Ti=e=>u(`editor.screen_settings.rows.${e.key}`),wg=(e,t)=>`${t}°`;function Wu(e=ag(),t=m.layout?It(e,m.layout.pages):1){const n=Oo();if(t<2||n.page_buttons!==!1||n.swipe_pages!==!1)return"";const{tiles:s,targets:o,unreachable:i,noWayBack:r}=Fm(e,t);if(!i.length&&!r.length)return"";const c=v=>u("editor.screen_settings.reach.pages",{list:Rm(v)},v.length),d=i.filter(v=>!o.includes(v)),h=i.filter(v=>o.includes(v)),p=d.length===1?"one":"more",g=[u("editor.screen_settings.reach.intro")];return s&&d.length?g.push(u(`editor.screen_settings.reach.tiles_missing_${p}`,{targets:c(o),missing:c(d)},s)):s?g.push(u("editor.screen_settings.reach.tiles",{targets:c(o)},s)):d.length?g.push(u(`editor.screen_settings.reach.none_missing_${p}`,{missing:c(d)})):g.push(u("editor.screen_settings.reach.none")),h.length&&g.push(u("editor.screen_settings.reach.cut_off",{pages:c(h)})),r.length&&g.push(u("editor.screen_settings.reach.no_way_back",{pages:c(r)})),g.join(" ")}const Bu=4e3;let xn={},as=null,Io=0,mo=null;const jl=()=>wt.value?.settings;function Oo(){const e=jl(),t={...e?.values||{}};for(const[n,s]of Object.entries(m.settingEdits))t[n]=s.value;return t}const kg=e=>e<300?30:e<900?60:e<3600?300:e<7200?900:1800;function vr(e,t,n,s,o){if(e.kind==="moment"){let c=s&&t%60?Math.floor(t/60)*60+(n>0?60:0):t+n*(s?60:15);return c%=1440,c<0?c+1440:c}const i=e.kind==="duration"?kg(n<0?t-1:t):e.step,r=e.cap?Math.min(e.max,o[e.cap]):e.max;return Math.min(r,Math.max(e.min,t+n*i))}function $g(e){if(e<60)return u("editor.screen_settings.duration.seconds",{n:e});if(e<3600)return u("editor.screen_settings.duration.minutes",{n:Math.floor(e/60)});const t=Math.floor(e/3600),n=Math.floor(e%3600/60);return n?u("editor.screen_settings.duration.hours_minutes",{h:t,m:String(n).padStart(2,"0")}):u("editor.screen_settings.duration.hours",{n:t})}function Sg(e,t){const n=Math.floor(e/60),s=String(e%60).padStart(2,"0");return t?`${String(n).padStart(2,"0")}:${s}`:u(n<12?"editor.screen_settings.time.am":"editor.screen_settings.time.pm",{time:`${n%12||12}:${s}`})}function xg(e,t){const n=t[e.key];return n==null?"—":e.kind==="number"?`${n}${e.unit||""}`:e.kind==="duration"?$g(n):e.kind==="moment"?Sg(n,hs.value):""}function uo(e,t,n){if(as&&as!==m.selected&&Object.keys(xn).length){Bs(),Ce(u("editor.screen_settings.other_screen_busy"));return}as=m.selected;const s=Oo();if(m.settingEdits[e]={value:t,at:Date.now()},xn[e]=t,e==="brightness")for(const o of["standby_brightness","night_brightness"])s[o]>t&&(m.settingEdits[o]={value:t,at:Date.now()});m.settingPending=!0,clearTimeout(Io),Io=window.setTimeout(()=>Bs(),n)}async function Bs(e=!1){if(clearTimeout(Io),mo||!Object.keys(xn).length||!as)return;const t=as,n=xn;xn={};const s=Dl(`screens/${encodeURIComponent(t)}/settings`,{method:"PUT",body:JSON.stringify({settings:n}),keepalive:e});mo=s;try{const o=await(await s).json(),i=m.inventory.screens.find(r=>r.id===t);i&&(i.settings=o)}catch(o){if(Ce(o.message),t===m.selected)for(const i of Object.keys(n))delete m.settingEdits[i];if(t===m.selected&&n.brightness!==void 0)for(const i of["standby_brightness","night_brightness"])delete m.settingEdits[i]}finally{mo=null,Object.keys(xn).length?Io=window.setTimeout(()=>Bs(),150):as=null,m.settingPending=!!Object.keys(xn).length,t===m.selected&&No(),setTimeout(()=>{t===m.selected&&No()},Bu+100)}}function No(){const e=jl();for(const[t,n]of Object.entries(m.settingEdits))xn[t]!==void 0||mo||(e&&e.values[t]===n.value||Date.now()-n.at>Bu)&&delete m.settingEdits[t]}const xs=e=>["install","verify","settle"].includes(e||"")?u(`editor.update.phases.${e}`):u("editor.update.starting");async function sl(e,t){m.updating.push(e.id);try{await ht(`screens/${encodeURIComponent(e.id)}/update`,"POST",t?{host:t}:{}),await On()}catch(n){m.updating=m.updating.filter(s=>s!==e.id),Ce(n.message)}}async function _r(){try{await ht("updates/run","POST"),await On()}catch(e){Ce(e.message)}}async function Cg(e){try{await ht("updates","PUT",{auto:e}),m.inventory.updates&&(m.inventory.updates.auto=e),Ce(u(e?"editor.settings.updates.auto_on":"editor.settings.updates.auto_off"))}catch(t){Ce(t.message)}}async function Eg(){try{m.inventory.claude_skill=await ht("claude-skill","POST"),Ce(u(m.inventory.claude_skill?.restart?"editor.settings.claude.installed_restart":"editor.settings.claude.installed"))}catch(e){Ce(e.message)}}const ps=L(()=>vu(m.inventory.language?.effective));Et(ps,e=>bu(e),{immediate:!0});const sn=(e,t={})=>u(e,t,{locale:ps.value}),Tg=e=>m.inventory.language?.languages?.find(t=>t.code===e)?.name||Lm(e||"")?.name||e||"",Ku=e=>!!(e.update?.available||e.update?.language),yr=()=>u("editor.update.new_language",{name:Tg(m.inventory.language?.effective)}),hs=L(()=>m.inventory.language?.clock_effective!=="12"),Ag=L(()=>m.inventory.language?.numbers_effective||"point");async function br(e){try{const t=await ht("language","PUT",e);return t?.language&&(m.inventory.language=t.language),Ce(u(e.setting===void 0?"editor.settings.language.saved":"editor.settings.language.saved_language")),await On(),!0}catch(t){return Ce(t.message),!1}}async function On(e=!0){try{const t=await Dt(e?"inventory":"inventory?light=1");m.inventory=e?t:{...m.inventory,...t},t.csrf&&tg(t.csrf),m.connected=!!m.inventory.connected,m.reachable=!0;for(const n of m.inventory.screens)n.update?.state==="running"&&(m.updating=m.updating.filter(s=>s!==n.id));m.selected&&No()}catch{m.reachable=!1}}function Pg(e){m.inventory={...m.inventory,...e},m.connected=!!m.inventory.connected;for(const t of m.inventory.screens)t.update?.state==="running"&&(m.updating=m.updating.filter(n=>n!==t.id));m.selected&&No()}let wr=0,ol=Date.now(),Mo=!1,bs=null;function Lg(){bs||typeof EventSource>"u"||(bs=new EventSource("api/events"),bs.onopen=()=>{Mo=!0,Ks()},bs.onmessage=e=>{document.hidden||Pg(JSON.parse(e.data))},bs.onerror=()=>{Mo=!1,Ks()})}function Ks(){clearTimeout(wr);const e=Mo?6e4:m.inventory.updates?.busy?3e3:1e4;wr=window.setTimeout(async()=>{if(!document.hidden){const t=Date.now()-ol>=3e5;t&&(ol=Date.now()),(t||!Mo)&&await On(t)}Ks()},e)}let kr=!1;function Ig(){kr||(kr=!0,On(),Lg(),Ks(),eg(()=>m.fontsVersion++),setInterval(()=>{!m.layout||document.hidden||m.drag.active||(m.now=Date.now(),si(0))},3e4),setInterval(()=>{!document.hidden&&m.layout&&m.tab==="layout"&&St.value===""&&ni()},8e3),setInterval(()=>{!document.hidden&&nl()?yg():m.firmwareJob&&!nl()&&(m.firmwareJob=null)},3e3),document.addEventListener("visibilitychange",async()=>{document.hidden||(ol=Date.now(),m.now=Date.now(),await On(),Ks())}),window.addEventListener("pagehide",()=>Bs(!0)),window.addEventListener("beforeunload",e=>{m.dirty&&(e.preventDefault(),e.returnValue="")}))}const Og={class:"side"},Ng={class:"label"},Mg={id:"screens"},Rg=["aria-current","onClick"],Dg={class:"txt"},Fg=["aria-label","title"],Ug={key:1,class:"pill"},jg={key:2,class:"spin small"},Hg=["onSubmit"],Vg=["placeholder","aria-label"],Wg={type:"submit",class:"btn mini primary"},Bg=["aria-label"],Kg=["disabled","title","onClick"],Yg={key:2,class:"whatsnew"},qg=["aria-valuenow"],Gg={class:"progress-text"},Jg=["title"],Xg=["title"],zg={id:"pending"},Qg={class:"pending-actions"},Zg=["onClick"],ev=["aria-current"],tv={class:"txt"},nv={class:"more"},sv={class:"label"},ov=["aria-current"],iv={class:"mdi"},lv={class:"txt"},av=["aria-current"],rv={class:"mdi"},cv={class:"txt"},uv=["aria-current"],dv={class:"mdi"},fv={class:"txt"},pv={class:"txt"},hv=Me({__name:"Sidebar",setup(e){const t=ke(null),n=ke(""),s=p=>{const g=p.update||{};return!!g.language&&(!g.target||gn(fs(p),g.target))};function o(p){const g=p.update||{};return g.state==="running"||m.updating.includes(p.id)?{kind:"running",text:xs(g.phase)}:g.state==="queued"?{kind:"queued",text:u("editor.sidebar.update.queued")}:Ku(p)&&p.online?{kind:"available",text:s(p)?yr():u("editor.sidebar.update.available",{version:g.target})}:g.result&&Date.now()/1e3-g.result.time<86400?{kind:g.result.state==="failed"?"failed":"done",text:g.result.message}:null}const i=p=>[...p.update?.language&&!s(p)?[yr()]:[],..._g(p)];function r(p){const g=p.update||{};g.host&&g.profile?sl(p):g.profile&&(t.value=p.id,n.value="")}function c(p){const g=n.value.trim();g&&(t.value=null,sl(p,g))}const d=()=>{const p=m.firmwareJob?.logs||[];return p.length?p[p.length-1]:""},h=p=>p.installed?u("editor.sidebar.pending.installed"):p.downloaded?u("editor.sidebar.pending.downloaded"):u("editor.sidebar.pending.not_flashed",{file:p.file});return(p,g)=>(_(),b("aside",Og,[g[13]||(g[13]=l("div",{class:"brand"},[l("span",{class:"mark"},"▦"),l("span",null,"ESP Screens")],-1)),l("span",{id:"connection",class:ve(["conn",{online:a(m).connected}]),role:"status"},f(a(m).reachable?a(m).connected?a(u)("editor.sidebar.connection.connected"):a(u)("editor.sidebar.connection.reconnecting"):a(u)("editor.sidebar.connection.unreachable")),3),l("button",{type:"button",class:"search-btn",id:"open-palette",onClick:g[0]||(g[0]=v=>a(m).palette=!0)},[Re("⌕ "+f(a(u)("editor.sidebar.search")),1),g[10]||(g[10]=l("kbd",null,"⌘K",-1))]),l("div",Ng,f(a(u)("editor.sidebar.screens")),1),l("div",Mg,[(_(!0),b(J,null,ge(a(m).inventory.screens,v=>(_(),b("div",{key:v.id,class:ve(["screen-item",{selected:v.id===a(m).selected&&a(St)===""}])},[l("button",{type:"button",class:"nav-item","aria-current":v.id===a(m).selected&&a(St)===""?"true":"false",onClick:$=>a(Du)(v.id)},[l("span",{class:ve(["dot",{off:!v.online}])},null,2),l("span",Dg,[l("span",null,f(v.name),1),l("small",null,f(v.online?a(u)("editor.common.online"):a(u)("editor.common.offline"))+f(v.area?" · "+v.area:"")+" · "+f(v.firmware||a(u)("editor.common.unknown")),1)]),v.id===a(m).selected&&a(m).dirty?(_(),b("span",{key:0,class:"unsaved",role:"img","aria-label":a(u)("editor.common.unsaved"),title:a(u)("editor.common.unsaved")},null,8,Fg)):G("",!0),o(v)?.kind==="available"?(_(),b("span",Ug,f(a(u)("editor.sidebar.update.pill")),1)):o(v)?.kind==="running"?(_(),b("span",jg)):G("",!0)],8,Rg),o(v)?(_(),b("div",{key:0,class:ve(["screen-update",o(v).kind])},[o(v).kind==="available"?(_(),b(J,{key:0},[t.value===v.id?(_(),b(J,{key:0},[l("small",null,f(a(u)("editor.sidebar.host.hint")),1),l("form",{class:"screen-host",onSubmit:Lt($=>c(v),["prevent"])},[Pe(l("input",{"onUpdate:modelValue":g[1]||(g[1]=$=>n.value=$),placeholder:a(u)("editor.sidebar.host.placeholder"),required:"",pattern:"[A-Za-z0-9][A-Za-z0-9.\\-]*","aria-label":a(u)("editor.sidebar.host.label"),autofocus:""},null,8,Vg),[[Qe,n.value]]),l("button",Wg,f(a(u)("editor.sidebar.host.start")),1),l("button",{type:"button",class:"icon-btn","aria-label":a(u)("editor.common.cancel"),onClick:g[2]||(g[2]=$=>t.value=null)},"✕",8,Bg)],40,Hg)],64)):(_(),b(J,{key:1},[l("small",null,f(o(v).text),1),l("button",{type:"button",class:"btn mini primary",disabled:!v.update?.profile,title:v.update?.profile?"":a(u)("editor.sidebar.update.no_profile"),onClick:$=>r(v)},f(a(u)("editor.sidebar.update.button")),9,Kg)],64)),i(v).length?(_(),b("details",Yg,[l("summary",null,f(a(u)("editor.sidebar.update.whats_new")),1),l("ul",null,[(_(!0),b(J,null,ge(i(v).slice(0,8),$=>(_(),b("li",{key:$},f($),1))),128))])])):G("",!0)],64)):o(v).kind==="running"&&a(ns)(v)?(_(),b(J,{key:1},[l("div",{class:"progress",role:"progressbar","aria-valuenow":a(ns)(v).percent,"aria-valuemin":"0","aria-valuemax":"100"},[l("i",{style:He({width:a(ns)(v).percent+"%"})},null,4)],8,qg),l("div",Gg,[l("span",null,f(a(ns)(v).percent)+" %",1),l("span",{title:d()},f(a(ns)(v).text),9,Jg)]),d()?(_(),b("small",{key:0,title:d(),style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"}},f(d()),9,Xg)):G("",!0),l("button",{type:"button",class:"btn link mini",style:{"justify-self":"start"},onClick:g[3]||(g[3]=$=>a(We)("#firmware"))},f(a(u)("editor.sidebar.update.full_log")),1)],64)):(_(),b("small",{key:2,class:ve({failed:o(v).kind==="failed"})},f(o(v).text),3))],2)):G("",!0)],2))),128))]),l("div",zg,[(_(!0),b(J,null,ge(a(m).inventory.pending||[],v=>(_(),b("div",{key:v.file,class:"pending"},[l("strong",null,f(v.friendly),1),l("small",null,f(h(v)),1),l("div",Qg,[l("button",{type:"button",class:"btn mini quiet",onClick:g[4]||(g[4]=(...$)=>a(Lo)&&a(Lo)(...$))},f(a(u)("editor.common.open_integrations")),1),v.api_key?(_(),b("button",{key:0,type:"button",class:"btn mini quiet",onClick:$=>a(Ot)(v.api_key)},f(a(u)("editor.sidebar.copy_api_key")),9,Zg)):G("",!0)])]))),128))]),l("button",{id:"new-screen",type:"button",class:"nav-item ghost","aria-current":a(St)==="#new-screen"?"true":"false",onClick:g[5]||(g[5]=v=>a(We)("#new-screen"))},[g[11]||(g[11]=l("span",{class:"plus"},"+",-1)),l("span",tv,f(a(u)("editor.nav.new_screen")),1)],8,ev),g[14]||(g[14]=l("div",{class:"spacer"},null,-1)),l("div",nv,[l("div",sv,f(a(u)("editor.sidebar.more")),1),l("button",{id:"open-firmware",type:"button",class:"nav-item","aria-current":a(St)==="#firmware"?"true":"false",onClick:g[6]||(g[6]=v=>a(We)("#firmware"))},[l("span",iv,f(a(Le)("F0241")),1),l("span",lv,f(a(u)("editor.nav.firmware")),1)],8,ov),l("button",{id:"open-alerts",type:"button",class:"nav-item","aria-current":a(St)==="#alerts"?"true":"false",onClick:g[7]||(g[7]=v=>a(We)("#alerts"))},[l("span",rv,f(a(Le)("F0594")),1),l("span",cv,f(a(u)("editor.nav.alerts")),1)],8,av),l("button",{id:"open-settings",type:"button",class:"nav-item","aria-current":a(St)==="#settings"?"true":"false",onClick:g[8]||(g[8]=v=>a(We)("#settings"))},[l("span",dv,f(a(Le)("F0493")),1),l("span",fv,f(a(u)("editor.nav.settings")),1)],8,uv),l("button",{id:"refresh",type:"button",class:"nav-item ghost",onClick:g[9]||(g[9]=v=>a(On)())},[g[12]||(g[12]=l("span",{class:"plus"},"↻",-1)),l("span",pv,f(a(u)("editor.sidebar.refresh")),1)])])]))}}),mv={key:0,id:"toast",class:"toast",role:"status"},gv=Me({__name:"Toast",setup(e){return(t,n)=>a(m).toast?(_(),b("div",mv,[l("span",null,f(a(m).toast.message),1),a(m).toast.action?(_(),b("button",{key:0,type:"button",onClick:n[0]||(n[0]=s=>{a(m).toast.action.run(),a(sg)()})},f(a(m).toast.action.label),1)):G("",!0)])):G("",!0)}}),vv=["aria-label"],_v=["placeholder","aria-label"],yv={class:"palette-list"},bv={class:"palette-group"},wv=["onMouseenter","onClick"],kv={key:0,class:"mdi"},$v={key:1,class:"glyph"},Sv={class:"tx"},xv={key:0},Cv={key:2,class:"hint-key"},Ev={key:0,class:"palette-empty"},Tv=Me({__name:"CommandPalette",setup(e){const t=ke(""),n=ke(0),s=ke(null),o=L(()=>{const h=t.value.trim().toLocaleLowerCase(),p=[],g=u("editor.palette.groups.screens"),v=u("editor.palette.groups.actions");for(const A of m.inventory.screens)p.push({group:g,label:A.name,detail:`${A.online?u("editor.common.online"):u("editor.common.offline")} · ${A.firmware||u("editor.common.unknown")}`,glyphText:"▦",run:()=>Du(A.id)});const $=wt.value,U=[{group:v,label:u("editor.nav.new_screen"),detail:u("editor.nav.new_screen_detail"),glyphText:"+",run:()=>We("#new-screen")},{group:v,label:u("editor.nav.firmware"),icon:"F0241",run:()=>We("#firmware")},{group:v,label:u("editor.nav.alerts"),detail:u("editor.palette.alerts_detail"),icon:"F0594",run:()=>We("#alerts")},{group:v,label:u("editor.nav.settings"),detail:u("editor.palette.settings_detail"),icon:"F0493",run:()=>We("#settings")}];if($&&m.layout&&U.unshift({group:v,label:u("editor.common.save_send"),detail:m.dirty?u("editor.common.unsaved"):u("editor.palette.nothing_to_save"),key:"⌘S",run:()=>tl()},{group:v,label:u("editor.screen_view.tabs.layout"),detail:$.name,run:()=>{We(""),m.tab="layout"}},{group:v,label:u("editor.screen_view.tabs.settings"),detail:$.name,run:()=>{We(""),m.tab="settings"}},{group:v,label:u("editor.palette.identify"),detail:Jn($)?u("editor.palette.identify_detail"):u("editor.palette.identify_needs"),run:()=>{Jn($)&&ju($)}},{group:v,label:u("editor.palette.export"),detail:u("editor.palette.export_detail"),run:Vu}),p.push(...U),$&&m.layout&&h){const A=new Set(m.layout.tiles.map(k=>k.entity)),T=m.layout.tiles.length>=Gn.value;for(const k of m.inventory.entities)if(!(k.tile===!1||A.has(k.id))&&`${k.name} ${k.id} ${k.area||""} ${k.device||""}`.toLocaleLowerCase().includes(h)&&(p.push({group:u("editor.palette.groups.add"),label:k.name,detail:[Bt(k.id)[0],k.area].filter(Boolean).join(" · "),icon:m.inventory.icons?In(k.id):void 0,run:()=>{T||Fu(k.id)}}),p.length>60))break}return h?p.filter(A=>`${A.label} ${A.detail||""}`.toLocaleLowerCase().includes(h)):p}),i=L(()=>{const h=[];return o.value.forEach((p,g)=>{(h.find($=>$.group===p.group)||(h.push({group:p.group,items:[]}),h[h.length-1])).items.push({item:p,index:g})}),h});function r(){m.palette=!1}function c(h){r(),h.run()}function d(h){if(h.key==="Escape")h.preventDefault(),r();else if(h.key==="ArrowDown")h.preventDefault(),n.value=Math.min(o.value.length-1,n.value+1);else if(h.key==="ArrowUp")h.preventDefault(),n.value=Math.max(0,n.value-1);else if(h.key==="Enter"){h.preventDefault();const p=o.value[n.value];p&&c(p)}}return Et(t,()=>n.value=0),Et(()=>m.palette,async h=>{h&&(t.value="",n.value=0,await Ko(),s.value?.focus())}),(h,p)=>a(m).palette?(_(),b("div",{key:0,class:"palette-backdrop",onClick:r},[l("div",{class:"palette",role:"dialog","aria-label":a(u)("editor.sidebar.search"),onClick:p[1]||(p[1]=Lt(()=>{},["stop"])),onKeydown:d},[Pe(l("input",{ref_key:"input",ref:s,"onUpdate:modelValue":p[0]||(p[0]=g=>t.value=g),id:"palette-input",placeholder:a(u)("editor.palette.placeholder"),"aria-label":a(u)("editor.sidebar.search"),autocomplete:"off"},null,8,_v),[[Qe,t.value]]),l("div",yv,[(_(!0),b(J,null,ge(i.value,g=>(_(),b(J,{key:g.group},[l("div",bv,f(g.group),1),(_(!0),b(J,null,ge(g.items,({item:v,index:$})=>(_(),b("button",{key:$,type:"button",class:ve(["palette-item",{active:$===n.value}]),onMouseenter:U=>n.value=$,onClick:U=>c(v)},[v.icon?(_(),b("span",kv,f(a(Le)(v.icon)),1)):(_(),b("span",$v,f(v.glyphText||"›"),1)),l("span",Sv,[l("span",null,f(v.label),1),v.detail?(_(),b("small",xv,f(v.detail),1)):G("",!0)]),v.key?(_(),b("kbd",Cv,f(v.key),1)):G("",!0)],42,wv))),128))],64))),128)),o.value.length?G("",!0):(_(),b("p",Ev,f(a(u)("editor.palette.empty")),1))])],40,vv)])):G("",!0)}}),_e={source:null,element:null,ghost:null,timer:0,start:null,offset:{x:0,y:0},pointerId:null,suppressUntil:0,last:null,scroller:0,target:null},Yu={mounted(e,t){e.__dragSource=t.value,e.addEventListener("pointerdown",s=>{const o=e.__dragSource;if(!(s.button!==0||e.disabled||s.target.closest(".remove"))){s.pointerType!=="touch"&&s.preventDefault(),Object.assign(_e,{source:o,element:e,start:{x:s.clientX,y:s.clientY},pointerId:s.pointerId});try{e.setPointerCapture(s.pointerId)}catch{}clearTimeout(_e.timer),s.pointerType==="touch"&&(_e.timer=window.setTimeout(()=>$r(s),260))}}),e.addEventListener("pointermove",s=>{if(m.drag.active||!_e.start||_e.element!==e)return;const o=Math.hypot(s.clientX-_e.start.x,s.clientY-_e.start.y);if(s.pointerType==="touch"){o>10&&(clearTimeout(_e.timer),_e.start=null);return}o>=6&&$r(s)});const n=()=>{_e.element===e&&!m.drag.active&&(clearTimeout(_e.timer),_e.start=null)};e.addEventListener("pointerup",n),e.addEventListener("pointercancel",n)},updated(e,t){e.__dragSource=t.value}};function $r(e){if(m.drag.active||!_e.start||!_e.source||!_e.element)return;m.drag.active=!0,m.drag.moving=_e.source.kind==="tile"?_e.source.tile:Au(_e.source.id),m.drag.preview=null,_e.target=null,getSelection()?.removeAllRanges();const t=_e.element.getBoundingClientRect(),n=_e.element.cloneNode(!0);n.classList.add("drag-ghost"),n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,_e.offset={x:e.clientX-t.left,y:e.clientY-t.top},document.body.append(n),_e.ghost=n,document.addEventListener("pointermove",il),document.addEventListener("pointerup",Ro),document.addEventListener("pointercancel",Ro);try{_e.element.releasePointerCapture(_e.pointerId)}catch{}try{document.documentElement.setPointerCapture(_e.pointerId)}catch{}document.addEventListener("touchmove",qu,{passive:!1}),_e.scroller=window.setInterval(()=>{if(!_e.last)return;const{x:s,y:o}=Av(document),i=s?Cr(_e.last.x,xr(s,"x")):0,r=o?Cr(_e.last.y,xr(o,"y")):0;i&&s.scrollBy(i,0),r&&o.scrollBy(0,r),(i||r)&&ll(Gu(_e.last.x,_e.last.y))},16),ll(-1),il(e)}function Sr(e,t){if(!e)return!1;const n=t==="x"?e.scrollWidth>e.clientWidth:e.scrollHeight>e.clientHeight,s=getComputedStyle(e)[t==="x"?"overflowX":"overflowY"];return n&&(s==="auto"||s==="scroll")}function Av(e){const t=e.querySelector(".pages"),n=e.querySelector(".canvas");return{x:Sr(t,"x")?t:n,y:Sr(n,"y")?n:e.scrollingElement}}function xr(e,t){const n=t==="x"?window.innerWidth:window.innerHeight;if(e===e.ownerDocument.scrollingElement)return[0,n];const s=e.getBoundingClientRect();return t==="x"?[Math.max(s.left,0),Math.min(s.right,n)]:[Math.max(s.top,0),Math.min(s.bottom,n)]}function Cr(e,[t,n]){return en-60?12:0}function qu(e){m.drag.active&&e.preventDefault()}function Ro(e){e.pointerId===_e.pointerId&&Pv(e.type==="pointerup")}function il(e){!_e.ghost||e.pointerId!==_e.pointerId||(_e.last={x:e.clientX,y:e.clientY},_e.ghost.style.transform=`translate(${e.clientX-_e.offset.x}px, ${e.clientY-_e.offset.y}px)`,ll(Gu(e.clientX,e.clientY)))}function Gu(e,t){let n=null,s=1/0;for(const i of document.querySelectorAll(".pages [data-slot]")){const r=i.getBoundingClientRect(),c=Math.hypot(Math.max(r.left-e,0,e-r.right),Math.max(r.top-t,0,t-r.bottom));c16)return-1;let o=Number(n.cell.dataset.slot);return n.cell.classList.contains("wide")&&e>(n.r.left+n.r.right)/2&&(o+=1),o}function ll(e){_e.target===e||!m.layout||!m.drag.moving||(_e.target=e,m.drag.preview=e>=0?Tu(m.layout.tiles,m.drag.moving,e):null)}function Pv(e){const t=m.drag.preview,n=m.drag.moving;document.removeEventListener("pointermove",il),document.removeEventListener("pointerup",Ro),document.removeEventListener("pointercancel",Ro),document.removeEventListener("touchmove",qu);try{document.documentElement.releasePointerCapture(_e.pointerId)}catch{}if(_e.ghost?.remove(),Object.assign(_e,{ghost:null,suppressUntil:Date.now()+400,last:null,start:null,target:null,element:null,source:null}),clearInterval(_e.scroller),m.drag.active=!1,m.drag.preview=null,m.drag.moving=null,e&&t&&n&&m.layout){const s=m.layout.tiles.map(i=>`${i.entity}@${i.slot}`).join(),o=!m.layout.tiles.includes(n);for(const{tile:i,slot:r}of t)i.slot=r,m.layout.tiles.includes(i)||m.layout.tiles.push(i);m.layout.tiles.sort((i,r)=>i.slot-r.slot),m.layout.tiles.map(i=>`${i.entity}@${i.slot}`).join()!==s&&mt(),o&&eo(n,n.slot)}}window.addEventListener("click",e=>{Date.now()<_e.suppressUntil&&(e.stopPropagation(),e.preventDefault())},!0);const Lv=["data-slot","tabindex","role","aria-label"],Iv={class:"clockface",viewBox:"0 0 60 60","aria-hidden":"true"},Ov=["transform"],Nv=["transform"],Mv=["transform"],Rv={key:0,class:"lead"},Dv={class:"tx"},Fv={class:"nm"},Uv={class:"st"},jv={class:"ic mdi"},Hv={class:"lead"},Vv={class:"big"},Wv={class:"nm"},Bv={class:"lead"},Kv={class:"nm"},Yv={key:0,class:"goto"},qv={key:1,class:"big"},Gv={key:0},Jv={key:1,class:"ctl"},Xv={key:1,class:"stp"},zv={class:"mdi"},Qv={class:"mdi"},Zv={class:"key mdi"},e_={class:"key mdi"},t_={class:"key mdi"},n_={class:"key mdi"},s_={class:"key mdi"},o_={class:"key mdi"},i_={class:"key mdi"},l_={key:5,class:"run"},a_={class:"lead"},r_={class:"tx"},c_={class:"nm"},u_={key:0,class:"goto"},d_={key:1,class:"big"},f_={key:0},p_={key:1,class:"ctl"},h_={key:1,class:"stp"},m_={class:"mdi"},g_={class:"mdi"},v_={class:"key mdi"},__={class:"key mdi"},y_={key:3,class:"stp"},b_={class:"mdi"},w_={class:"mdi"},k_={class:"key mdi"},$_={class:"key mdi"},S_={class:"key mdi"},x_={class:"key mdi"},C_={class:"key mdi"},E_={class:"key mdi"},T_={class:"key mdi"},A_={class:"key mdi"},P_={class:"key mdi"},L_={class:"key mdi"},I_={class:"key mdi"},O_={class:"key mdi"},N_={class:"key mdi"},M_={class:"key mdi"},R_={class:"key mdi"},D_={key:10,class:"run"},F_={class:"tx"},U_={class:"nm"},j_={key:0,class:"goto"},H_={key:0,class:"big"},V_={key:0},W_=["title","aria-label"],B_=Me({__name:"TileCard",props:{tile:{},slot:{},placeholder:{type:Boolean}},setup(e){const t=e,n=L(()=>t.tile.name||Qs(t.tile.entity)),s=L(()=>$u(t.tile)),o=L(()=>Xi(t.tile)&&!s.value),i=L(()=>gs(t.tile.entity)),r=L(()=>m.inventory.backgrounds?.[t.tile.options?.background||""]?.color),c=L(()=>t.tile.options?.background==="none"),d=L(()=>t.tile.options?.display||"standard"),h=L(()=>d.value!=="standard"?Lu(d.value):""),p=L(()=>Pu(t.tile,m.inventory)),g=L(()=>t.tile.entity.split(".")[0]),v=L(()=>m.inventory.icons?.controls||{}),$=Y=>v.value[Y]?Le(v.value[Y]):"",U=L(()=>Ul(t.tile)&&m.inspector?.kind==="tile"),A=L(()=>!t.placeholder&&m.layout?.tiles.includes(t.tile)),T=L(()=>u("editor.tile_card.label",{name:n.value,slot:t.slot%Je+1,page:At(t.slot)+1})),k=L(()=>new Date(m.now)),S=L(()=>(k.value.getHours()%12+k.value.getMinutes()/60)*30),F=L(()=>k.value.getMinutes()*6),x=L(()=>g.value==="screen"?null:lg(t.tile.entity)),j=L(()=>!x.value||["unavailable","unknown",""].includes(x.value.state)),O=L(()=>!!x.value&&!j.value&&x.value.state!=="off"&&x.value.state!=="closed"&&x.value.state!=="standby"&&x.value.state!=="idle"&&x.value.state!=="docked"),C=L(()=>["light","switch","input_boolean","fan"].includes(g.value)&&x.value?.state==="on"),I=L(()=>x.value?.a?.unit_of_measurement),K=Y=>Y.charAt(0).toUpperCase()+Y.slice(1).replace(/_/g," "),M=Y=>wu(Y,Ag.value),he=["clear-night","cloudy","exceptional","fog","hail","lightning","lightning-rainy","partlycloudy","pouring","rainy","snowy","snowy-rainy","sunny","windy","windy-variant"],z=Y=>he.includes(Y)?sn(`editor.mockup.weather.${Y.replace(/-/g,"_")}`):"",oe=["scene","script","button","input_button"],pe=L(()=>{const Y=x.value;if(!Y||oe.includes(g.value))return h.value;if(j.value)return sn(Y.state==="unknown"?"editor.mockup.unknown":"editor.mockup.unavailable");const fe=Y.a||{};return g.value==="climate"?`${fe.current_temperature!==void 0?`${M(fe.current_temperature)}° · `:""}${Y.word||K(Y.state)}`:g.value==="weather"?`${Y.word||z(Y.state)||K(Y.state)}${fe.temperature!==void 0?` · ${M(fe.temperature)}°`:""}`:g.value==="cover"&&fe.current_position!==void 0&&fe.current_position>0&&fe.current_position<100?`${Y.word||K(Y.state)} · ${fe.current_position} %`:g.value==="media_player"&&fe.media_title?`${Y.word||K(Y.state)} · ${fe.media_title}`:g.value==="sensor"?`${M(Y.state)}${I.value?` ${I.value}`:""}`:(g.value==="timer",Y.word||K(Y.state))}),se=L(()=>x.value&&!j.value?M(x.value.state):"—"),ce=L(()=>{const Y=x.value;if(!Y||j.value)return 0;const fe=Y.a||{};if(g.value==="light")return Y.state==="on"?fe.brightness!==void 0?Math.round(fe.brightness/255*100):100:0;if(g.value==="fan")return Y.state==="on"?fe.percentage??100:0;if(g.value==="cover")return 100-(fe.current_position??(Y.state==="open"?100:0));if(g.value==="media_player")return Math.round((fe.volume_level??0)*100);if(g.value==="number"||g.value==="input_number"){const me=Number(Y.state),te=Number(fe.min??0),Ee=Number(fe.max??100);return Number.isFinite(me)&&Ee>te?Math.round((me-te)/(Ee-te)*100):0}return 0}),ye=L(()=>sn(`editor.mockup.run.${["scene","script"].includes(g.value)?g.value:"press"}`)),$e=L(()=>({background:`linear-gradient(to right, ${ce.value?"#ffbf38":"#c9ccd1"} ${ce.value}%, ${ce.value?"#fff1d3":"#e6e8ec"} ${ce.value}%)`})),Ge=L(()=>({background:`linear-gradient(to right, #2196f3 ${ce.value}%, #d3e8fb ${ce.value}%)`})),ae=L(()=>{const Y=x.value?.a?.temperature;return Y!=null?`${M(Y)}°`:"—"});async function ee(Y){if(Y.key==="Enter"||Y.key===" "){Y.preventDefault(),el(t.tile);return}const fe={ArrowLeft:-1,ArrowRight:1,ArrowUp:-2,ArrowDown:2}[Y.key];fe&&(Y.preventDefault(),eo(t.tile,t.tile.slot+(s.value?Math.sign(fe)*Je:o.value?Math.sign(fe)*2:fe))&&(await Ko(),document.querySelector(`.pages [data-slot="${t.tile.slot}"]`)?.focus()))}return(Y,fe)=>Pe((_(),b("div",{class:ve(["tile",{wide:o.value,full:s.value,bare:c.value,placeholder:e.placeholder||!A.value,chosen:U.value}]),"data-slot":e.slot,style:He(r.value&&!c.value?{backgroundColor:r.value}:void 0),tabindex:A.value?0:-1,role:A.value?"button":void 0,"aria-label":A.value?T.value:void 0,onClick:fe[1]||(fe[1]=me=>A.value&&a(el)(e.tile)),onKeydown:fe[2]||(fe[2]=me=>A.value&&ee(me))},[d.value==="analog"?(_(),b(J,{key:0},[(_(),b("svg",Iv,[fe[3]||(fe[3]=l("circle",{cx:"30",cy:"30",r:"27",fill:"#fff",stroke:"#c9ccd1"},null,-1)),(_(),b(J,null,ge([0,90,180,270],me=>l("line",{key:me,x1:"30",y1:"5",x2:"30",y2:"9",stroke:"#1b1b1b","stroke-width":"1.5",transform:`rotate(${me} 30 30)`},null,8,Ov)),64)),l("line",{x1:"30",y1:"30",x2:"30",y2:"16",stroke:"#1b1b1b","stroke-width":"2.4","stroke-linecap":"round",transform:`rotate(${S.value} 30 30)`},null,8,Nv),l("line",{x1:"30",y1:"30",x2:"30",y2:"11",stroke:"#1b1b1b","stroke-width":"1.6","stroke-linecap":"round",transform:`rotate(${F.value} 30 30)`},null,8,Mv),fe[4]||(fe[4]=l("circle",{cx:"30",cy:"30",r:"1.8",fill:"#1b1b1b"},null,-1))])),o.value?(_(),b("span",Rv,[l("span",Dv,[l("span",Fv,f(n.value),1),l("span",Uv,f(h.value),1)])])):G("",!0)],64)):d.value==="digital"&&g.value==="screen"?(_(),b(J,{key:1},[l("span",jv,f(a(Le)(a($s)(e.tile))),1),l("span",Hv,[l("span",Vv,f(a(Zo)(a(hs),k.value)),1),l("span",Wv,f(n.value),1)])],64)):s.value?(_(),b(J,{key:2},[l("span",{class:ve(["ic mdi",{lit:C.value}])},f(a(Le)(a($s)(e.tile))),3),l("span",Bv,[l("span",Kv,f(n.value),1),i.value?(_(),b("span",Yv,f(a(sn)("editor.mockup.page_link",{page:i.value})),1)):d.value==="watch"?(_(),b("span",qv,[Re(f(se.value),1),I.value&&!j.value?(_(),b("small",Gv,f(I.value),1)):G("",!0)])):pe.value?(_(),b("span",{key:2,class:ve(["st",{off:j.value}])},f(pe.value),3)):G("",!0)]),e.tile.options?.inline==="slider"?(_(),b("span",{key:0,class:"mini-slider",style:He($e.value)},null,4)):G("",!0),p.value?(_(),b("span",Jv,[p.value==="toggle"?(_(),b("span",{key:0,class:ve(["tog",{off:!O.value}])},null,2)):p.value==="setpoint"?(_(),b("span",Xv,[l("span",zv,f($("minus")||"−"),1),l("b",null,f(ae.value),1),l("span",Qv,f($("plus")||"+"),1)])):p.value==="volume"?(_(),b(J,{key:2},[l("span",{class:"range",style:He(Ge.value)},null,4),l("span",Zv,f($("volume-high")),1)],64)):p.value==="playback"?(_(),b(J,{key:3},[l("span",e_,f($("skip-previous")),1),l("span",t_,f($(O.value?"pause":"play")||$("play")),1),l("span",n_,f($("skip-next")),1)],64)):p.value==="buttons"&&g.value==="cover"?(_(),b(J,{key:4},[l("span",s_,f($("arrow-expand-horizontal")),1),l("span",o_,f($("stop")),1),l("span",i_,f($("arrow-collapse-horizontal")),1)],64)):p.value==="run"?(_(),b("span",l_,f(ye.value),1)):(_(),b("span",{key:6,class:"range",style:He({background:`linear-gradient(to right, #2196f3 ${ce.value}%, #d3e8fb ${ce.value}%)`})},null,4))])):G("",!0)],64)):o.value?(_(),b(J,{key:3},[l("span",a_,[l("span",{class:ve(["ic mdi",{lit:C.value}])},f(a(Le)(a($s)(e.tile))),3),l("span",r_,[l("span",c_,f(n.value),1),i.value?(_(),b("span",u_,f(a(sn)("editor.mockup.page_link",{page:i.value})),1)):d.value==="watch"?(_(),b("span",d_,[Re(f(se.value),1),I.value&&!j.value?(_(),b("small",f_,f(I.value),1)):G("",!0)])):pe.value?(_(),b("span",{key:2,class:ve(["st",{off:j.value}])},f(pe.value),3)):G("",!0)])]),e.tile.options?.inline==="slider"?(_(),b("span",{key:0,class:"mini-slider",style:He($e.value)},null,4)):G("",!0),p.value?(_(),b("span",p_,[p.value==="toggle"?(_(),b("span",{key:0,class:ve(["tog",{off:!O.value}])},null,2)):p.value==="setpoint"?(_(),b("span",h_,[l("span",m_,f($("minus")||"−"),1),l("b",null,f(ae.value),1),l("span",g_,f($("plus")||"+"),1)])):p.value==="stepper"&&g.value.endsWith("select")?(_(),b(J,{key:2},[l("span",v_,f($("chevron-left")),1),l("span",__,f($("chevron-right")),1)],64)):p.value==="stepper"?(_(),b("span",y_,[l("span",b_,f($("minus")||"−"),1),l("b",null,f(se.value),1),l("span",w_,f($("plus")||"+"),1)])):p.value==="mode"?(_(),b(J,{key:4},[l("span",k_,f($("power")),1),l("span",$_,f($("fire")),1),l("span",S_,f($("snowflake")),1)],64)):p.value==="volume"?(_(),b(J,{key:5},[l("span",{class:"range",style:He(Ge.value)},null,4),l("span",x_,f($("volume-high")),1)],64)):p.value==="playback"?(_(),b(J,{key:6},[l("span",C_,f($("skip-previous")),1),l("span",E_,f($(O.value?"pause":"play")||$("play")),1),l("span",T_,f($("skip-next")),1)],64)):p.value==="buttons"&&g.value==="cover"?(_(),b(J,{key:7},[l("span",A_,f($("arrow-expand-horizontal")),1),l("span",P_,f($("stop")),1),l("span",L_,f($("arrow-collapse-horizontal")),1)],64)):p.value==="buttons"&&g.value==="vacuum"?(_(),b(J,{key:8},[l("span",I_,f($("play")),1),l("span",O_,f($("stop")),1),l("span",N_,f($("home-map-marker")),1)],64)):p.value==="buttons"&&g.value==="timer"?(_(),b(J,{key:9},[l("span",M_,f($("play")),1),l("span",R_,f($("close")),1)],64)):p.value==="run"?(_(),b("span",D_,f(ye.value),1)):(_(),b("span",{key:11,class:"range",style:He({background:`linear-gradient(to right, #2196f3 ${ce.value}%, #d3e8fb ${ce.value}%)`})},null,4))])):G("",!0)],64)):(_(),b(J,{key:4},[l("span",{class:ve(["head",{top:d.value==="watch"}])},[l("span",{class:ve(["ic mdi",{lit:C.value}])},f(a(Le)(a($s)(e.tile))),3),l("span",F_,[l("span",U_,f(n.value),1),i.value?(_(),b("span",j_,f(a(sn)("editor.mockup.page_link",{page:i.value})),1)):d.value!=="watch"&&pe.value?(_(),b("span",{key:1,class:ve(["st",{off:j.value}])},f(pe.value),3)):G("",!0)])],2),d.value==="watch"?(_(),b("span",H_,[Re(f(se.value),1),I.value&&!j.value?(_(),b("small",V_,f(I.value),1)):G("",!0)])):G("",!0),e.tile.options?.inline==="slider"?(_(),b("span",{key:1,class:"mini-slider",style:He($e.value)},null,4)):G("",!0)],64)),A.value?(_(),b("button",{key:5,type:"button",class:"remove",title:a(u)("editor.tile_card.remove"),"aria-label":a(u)("editor.tile_card.remove_named",{name:n.value}),onClick:fe[0]||(fe[0]=Lt(me=>a(Uu)(e.tile),["stop"]))},"✕",8,W_)):G("",!0)],46,Lv)),[[a(Yu),{kind:"tile",tile:e.tile}]])}}),K_=["viewBox","aria-label"],Y_=["y"],q_=["cx","cy","r","stroke","stroke-width"],G_=["x1","y1","x2","y2","stroke","stroke-width"],J_=["x","y","fill"],X_=["x","y"],Ju=Me({__name:"TopbarSvg",props:{items:{},nameText:{},single:{type:Boolean}},setup(e,{expose:t}){const n=e,s=L(()=>{m.fontsVersion,m.now,m.topbarPreviews;const T=n.items||vn();return Ou(T,Ru.value,n.nameText??(m.layout?.title||sn("editor.mockup.home")),kn)}),o=L(()=>s.value.metrics),i=L(()=>n.single?Math.round(o.value.text*1.4):o.value.top+Math.round(o.value.name*.45)),r=L(()=>n.single?Math.round(o.value.text*1.05):o.value.top),c=L(()=>{if(!n.single)return s.value.placed;const T=s.value.parts[0];return T&&(T.x=0),T?[T]:[]}),d=L(()=>n.single?`-2 0 ${Math.max(1,c.value[0]?.width||1)+4} ${i.value}`:`0 0 ${o.value.width} ${i.value}`),h=L(()=>r.value+(s.value.zero.top+s.value.zero.bottom)/2),p=L(()=>Zm(s.value.nameText,s.value.fonts.name,Math.min(s.value.natural,s.value.nameRoom))),g=L(()=>new Date(m.now));function v(T){const k=g.value;return[[(k.getHours()%12+k.getMinutes()/60)*30,T*.24],[k.getMinutes()*6,T*.34]].map(([S,F])=>{const x=S*Math.PI/180;return{x2:F*Math.sin(x),y2:-F*Math.cos(x)}})}const $=T=>T.x-T.icon.ink.left,U=T=>(T.icon?T.x+(T.icon.ink.right-T.icon.ink.left)+s.value.gaps.icon:T.x)-T.text.ink.left,A=L(()=>`${(Math.max(1,c.value[0]?.width||1)+4)*(26/o.value.icon)}px`);return t({lay:s}),(T,k)=>(_(),b("svg",{viewBox:d.value,role:"img","aria-label":e.single?a(u)("editor.topbar.live.looks"):a(u)("editor.topbar.aria",{name:s.value.nameText}),style:He(e.single?{width:A.value}:void 0)},[e.single?G("",!0):(_(),b("text",{key:0,x:"0",y:o.value.top,fill:"#1b1b1b",style:He({font:s.value.fonts.name})},f(p.value),13,Y_)),l("g",null,[(_(!0),b(J,null,ge(c.value,S=>(_(),b(J,{key:S.index},[S.dial?(_(),b(J,{key:0},[l("circle",{cx:S.x+S.dial/2,cy:h.value,r:S.dial/2-Math.max(1,Math.round(S.dial/10))/2,fill:"none",stroke:S.view.color||"#46525e","stroke-width":Math.max(1,Math.round(S.dial/10))},null,8,q_),(_(!0),b(J,null,ge(v(S.dial),(F,x)=>(_(),b("line",{key:x,x1:S.x+S.dial/2,y1:h.value,x2:S.x+S.dial/2+F.x2,y2:h.value+F.y2,stroke:S.view.color||"#46525e","stroke-width":Math.max(1,Math.round(S.dial*.075)),"stroke-linecap":"round"},null,8,G_))),128))],64)):(_(),b(J,{key:1},[S.icon?(_(),b("text",{key:0,x:$(S),y:h.value-(S.icon.ink.top+S.icon.ink.bottom)/2,fill:S.view.color||"#46525e",style:He({font:s.value.fonts.icon})},f(S.icon.glyph),13,J_)):G("",!0),S.text?(_(),b("text",{key:1,x:U(S),y:r.value,fill:"#46525e",style:He({font:s.value.fonts.text})},f(S.text.value),13,X_)):G("",!0)],64))],64))),128))])],12,K_))}}),z_={class:"page"},Q_={class:"page-label"},Z_=["title"],ey={key:1},ty=["title"],ny={class:"tiles"},sy=["data-slot","title","aria-label","onClick"],oy=Me({__name:"DevicePage",props:{page:{},entries:{},pages:{},moving:{}},setup(e){const t=e,n=L(()=>new Map(t.entries.map(h=>[h.slot,h]))),s=L(()=>new Set(t.entries.flatMap(h=>qn(h.slot,ft(h.tile)).slice(1)))),o=L(()=>Array.from({length:Je},(h,p)=>t.page*Je+p).filter(h=>!s.value.has(h))),i=L(()=>t.pages>1&&!t.entries.some(h=>At(h.slot)===t.page)),r=L(()=>m.inspector?.kind==="bar"||m.inspector?.kind==="bar-add"),c=L(()=>t.entries.filter(h=>At(h.slot)===t.page).reduce((h,p)=>h+Ml(ft(p.tile)),0));function d(h){const p=m.insertAt===h;m.insertAt=p?-1:h,m.insertAt>=0&&document.querySelector("#search")?.focus()}return(h,p)=>(_(),b("div",z_,[l("div",Q_,[l("span",null,f(a(u)("editor.page.label",{page:e.page+1})),1),i.value?(_(),b("button",{key:0,type:"button",class:"btn mini",title:a(u)("editor.page.remove_title"),onClick:p[0]||(p[0]=g=>a(cg)(e.page))},f(a(u)("editor.page.remove")),9,Z_)):(_(),b("span",ey,f(c.value)+" / "+f(a(Je)),1))]),l("div",{class:ve(["device",{cyd:!a(Fl)}])},[l("div",{class:ve(["bar-wrap",{selected:r.value}]),title:a(u)("editor.page.edit_bar"),role:"button",tabindex:"0",onClick:p[1]||(p[1]=g=>a(nn)(0)),onKeydown:p[2]||(p[2]=Dc(Lt(g=>a(nn)(0),["prevent"]),["enter"]))},[ne(Ju)],42,ty),l("div",ny,[(_(!0),b(J,null,ge(o.value,g=>(_(),b(J,{key:g},[n.value.get(g)?(_(),at(B_,{key:0,tile:n.value.get(g).tile,slot:g,placeholder:n.value.get(g).tile===e.moving},null,8,["tile","slot","placeholder"])):(_(),b("button",{key:1,type:"button",class:ve(["cell",{"insert-here":a(m).insertAt===g}]),"data-slot":g,title:a(u)("editor.page.cell.title"),"aria-label":a(u)("editor.page.cell.aria",{slot:g%a(Je)+1,page:e.page+1}),onClick:v=>d(g)},[p[3]||(p[3]=l("span",null,"+",-1)),l("small",null,f(a(m).insertAt===g?a(u)("editor.page.cell.next"):a(u)("editor.page.cell.empty")),1)],10,sy))],64))),128))])],2)]))}}),iy={class:"library",id:"library"},ly={class:"lib-head"},ay={class:"lib-title"},ry=["placeholder","aria-label"],cy={class:"filters",id:"filters"},uy=["aria-pressed","onClick"],dy={class:"lib-row"},fy=["aria-label"],py={value:""},hy=["value"],my=["aria-pressed","title"],gy={class:"lib-list",id:"results","aria-live":"polite"},vy=["title","disabled","onClick"],_y={class:"tx"},yy={key:0,class:"hint"},by={key:1,class:"hint"},wy={class:"lib-foot"},ky=Me({__name:"Library",setup(e){const t=["","light","climate","switch","binary_sensor","button","script","fan","cover","scene","vacuum","sensor","media_player","weather","number","select","person","timer","screen"],n={switch:"input_boolean",number:"input_number",select:"input_select",weather:"sun",button:"input_button"},s=L(()=>new Set(m.layout?.tiles.map(p=>p.entity)||[])),o=p=>s.value.has(p)&&!ei(p),i=L(()=>[...new Set(m.inventory.entities.map(p=>p.area).filter(p=>!!p))].sort((p,g)=>p.localeCompare(g))),r=L(()=>{const p=m.search.toLocaleLowerCase(),g=m.filter,v=m.room;return[...m.inventory.builtin||[],...m.inventory.entities].filter($=>$.tile!==!1&&(Fl.value||!["camera","image"].includes($.id.split(".")[0]))&&(!g||$.id.startsWith(g+".")||n[g]===$.id.split(".")[0])&&(!v||$.area===v)&&(!m.hidePlaced||!o($.id))&&`${$.name} ${$.id} ${$.device||""} ${$.area||""}`.toLocaleLowerCase().includes(p))}),c=L(()=>(m.layout?.tiles.length||0)>=Gn.value),d=L(()=>m.inventory.entities.length),h=p=>{const g=p.id.split(".")[0];return p.state==="unavailable"||p.state==="unknown"?"gone":["light","switch","input_boolean","fan"].includes(g)&&p.state==="on"?"on":""};return(p,g)=>(_(),b("aside",iy,[l("div",ly,[l("div",ay,[Re(f(a(u)("editor.library.title"))+" ",1),l("small",null,f(a(u)("editor.library.entities",d.value)),1)]),Pe(l("input",{id:"search","onUpdate:modelValue":g[0]||(g[0]=v=>a(m).search=v),type:"search",placeholder:a(u)("editor.library.search"),autocomplete:"off","aria-label":a(u)("editor.library.search_label")},null,8,ry),[[Qe,a(m).search]]),l("div",cy,[(_(),b(J,null,ge(t,v=>l("button",{key:v,type:"button","aria-pressed":a(m).filter===v?"true":"false",onClick:$=>a(m).filter=v},[v?(_(),b("span",{key:0,class:"domain-icon",style:He({color:a(Bt)(v+".")[2],background:a(Bt)(v+".")[3]}),"aria-hidden":"true"},f(a(Bt)(v+".")[1]),5)):G("",!0),Re(f(a(u)(`editor.library.filters.${v||"all"}`)),1)],8,uy)),64))]),l("div",dy,[Pe(l("select",{id:"room","onUpdate:modelValue":g[1]||(g[1]=v=>a(m).room=v),"aria-label":a(u)("editor.library.room")},[l("option",py,f(a(u)("editor.library.all_rooms")),1),(_(!0),b(J,null,ge(i.value,v=>(_(),b("option",{key:v,value:v},f(v),9,hy))),128))],8,fy),[[Yn,a(m).room]]),l("button",{type:"button",class:"chip-toggle",id:"hide-placed","aria-pressed":a(m).hidePlaced?"true":"false",title:a(u)("editor.library.hide_placed_title"),onClick:g[2]||(g[2]=v=>a(m).hidePlaced=!a(m).hidePlaced)},f(a(u)("editor.library.hide_placed")),9,my)])]),l("div",gy,[(_(!0),b(J,null,ge(r.value.slice(0,80),v=>Pe((_(),b("button",{key:v.id,type:"button",class:"ent",title:v.id,disabled:o(v.id)||c.value,onClick:$=>a(Fu)(v.id)},[l("span",{class:ve(["av mdi",h(v)]),style:He({color:a(Bt)(v.id)[2],background:a(Bt)(v.id)[3]})},f(a(m).inventory.icons?a(Le)(a(In)(v.id)):a(Bt)(v.id)[1]),7),l("span",_y,[l("b",null,f(v.name),1),l("small",null,f([a(Bt)(v.id)[0],v.area,v.device].filter(Boolean).join(" · ")),1)]),l("span",{class:ve(["add",{done:o(v.id)}])},f(o(v.id)?"✓":"+"),3)],8,vy)),[[a(Yu),{kind:"entity",id:v.id}]])),128)),r.value.length?r.value.length>80?(_(),b("p",by,f(a(u)("editor.common.results",r.value.length)),1)):G("",!0):(_(),b("p",yy,f(a(m).hidePlaced&&!a(m).search&&!a(m).filter&&!a(m).room?a(u)("editor.library.all_placed"):a(u)("editor.library.none_found")),1))]),l("div",wy,f(c.value?a(u)(a(Gn)<48?"editor.library.full_update":"editor.library.full",a(Gn)):a(u)("editor.library.hint")),1)]))}}),$y={class:"canvas-head"},Sy={id:"count"},xy={key:0,id:"no-tiles"},Cy={key:1},Ey={key:2,id:"positions-hint",class:"warn"},Ty={key:3,id:"page-reach-hint",class:"warn"},Ay=["aria-label"],Py={class:"page-label"},Ly=["tabindex"],Iy=Me({__name:"LayoutView",setup(e){const t=L(()=>m.layout),n=L(()=>m.drag.preview||et(t.value)),s=L(()=>It(n.value,t.value.pages)),o=L(()=>dg()),i=L(()=>s.valueDm(t.value.tiles)&&!Tn(0,2,26)?u("editor.layout.positions_hint",{firmware:wt.value?.firmware||u("editor.common.unknown")}):""),c=L(()=>Wu(n.value,s.value));function d(h){h.target.closest(".device, .page-label, .canvas-head")||m.inspector&&tt()}return(h,p)=>(_(),b(J,null,[l("div",{class:"canvas",id:"canvas",onClick:d},[l("div",$y,[l("b",Sy,f(a(u)("editor.layout.count",{tiles:t.value.tiles.length,limit:a(Gn)},s.value)),1),t.value.tiles.length?(_(),b("span",Cy,f(a(u)("editor.layout.how_to")),1)):(_(),b("span",xy,f(a(u)("editor.layout.no_tiles")),1)),r.value?(_(),b("span",Ey,f(r.value),1)):G("",!0),c.value?(_(),b("span",Ty,f(c.value),1)):G("",!0)]),l("div",{class:"pages",id:"layout-preview","aria-label":a(u)("editor.layout.aria")},[(_(!0),b(J,null,ge(o.value,g=>(_(),at(oy,{key:g,page:g-1,entries:n.value,pages:s.value,moving:a(m).drag.moving},null,8,["page","entries","pages","moving"]))),128)),l("div",{class:ve(["page ghost",{disabled:!i.value}])},[l("div",Py,[l("span",null,f(a(u)("editor.page.label",{page:o.value+1})),1)]),l("div",{class:ve(["device",{cyd:a(wt)?.board!=="guition"}]),id:"add-page",role:"button",tabindex:i.value?0:-1,onClick:p[0]||(p[0]=g=>i.value&&a(pr)()),onKeydown:p[1]||(p[1]=Dc(Lt(g=>i.value&&a(pr)(),["prevent"]),["enter"]))},f(i.value?a(u)("editor.layout.add_page"):a(u)("editor.layout.max_pages",a(mn))),43,Ly)],2)],8,Ay)]),ne(ky)],64))}}),Oy={class:"status",id:"settings-status",role:"status"},Ny={key:0,class:"set-grid",id:"settings-groups"},My={class:"mdi"},Ry=["data-setting","title","onClick"],Dy=["id"],Fy={class:"s-control"},Uy=["id","aria-checked","aria-labelledby","disabled","onClick"],jy=["aria-labelledby"],Hy=["aria-pressed","disabled","onClick"],Vy={key:2,class:"step"},Wy=["aria-label","disabled","onPointerdown","onClick"],By={class:"mdi"},Ky=["id","aria-labelledby"],Yy=["aria-label","disabled","onPointerdown","onClick"],qy={class:"mdi"},Gy={key:0,class:"hint warn",id:"settings-page-reach"},Jy=Me({__name:"SettingsTab",setup(e){const t=L(()=>jl()),n=L(()=>Oo()),s=L(()=>t.value?.owner==="screen"&&!wt.value?.online),o=L(()=>bg.map(A=>({...A,rows:A.rows.filter(T=>t.value?.keys.includes(T.key))})).filter(A=>A.rows.length)),i=L(()=>Wu()),r=A=>s.value||!!t.value?.unavailable.includes(A.key),c=A=>A.needs?!!n.value[A.needs]:!0,d=L(()=>s.value?u("editor.screen_settings.status.offline"):m.settingPending?u("editor.common.saving"):t.value?.owner==="screen"?u("editor.screen_settings.status.screen"):u("editor.screen_settings.status.app")),h=(A,T)=>{const k=n.value[A.key];return r(A)||!c(A)||k===null||k===void 0?!0:A.kind!=="moment"&&vr(A,k,T,!1,n.value)===k},p=new WeakMap;function g(A,T,k){const S=Oo(),F=vr(A,S[A.key],T,k,S);F!==S[A.key]&&uo(A.key,F,600)}function v(A,T,k){const S=A.currentTarget;if(S.disabled||A.button!==0)return;const F={timer:0,held:!1};p.set(S,F);let x=0;F.timer=window.setTimeout(function j(){F.held=!0,x+=1,g(T,k,x>5),F.timer=window.setTimeout(j,180)},450)}function $(A){const T=p.get(A.currentTarget);T&&clearTimeout(T.timer)}function U(A,T,k){const S=p.get(A.currentTarget);if(S?.held){S.held=!1;return}g(T,k,!1)}return(A,T)=>(_(),b("div",{class:ve(["settings",{offline:s.value}]),id:"general-settings"},[l("span",Oy,f(d.value),1),t.value?(_(),b("div",Ny,[(_(!0),b(J,null,ge(o.value,k=>(_(),b("section",{key:k.group,class:"set-card"},[l("h4",null,[l("span",My,f(a(Le)(k.icon)),1),Re(f(a(u)(`editor.screen_settings.groups.${k.group}`)),1)]),(_(!0),b(J,null,ge(k.rows,S=>(_(),b("div",{key:S.key,class:ve(["srow",[`setting-${S.kind}`,{inactive:!c(S)||r(S)}]]),"data-setting":S.key,title:r(S)&&!s.value?a(u)("editor.screen_settings.unavailable"):"",onClick:F=>S.kind==="toggle"&&F.target.closest(".srow")===F.currentTarget&&!F.target.closest("button")&&!r(S)&&a(uo)(S.key,!n.value[S.key],150)},[l("span",{class:"s-label",id:`setting-label-${S.key}`},f(a(Ti)(S)),9,Dy),l("div",Fy,[S.kind==="toggle"?(_(),b("button",{key:0,type:"button",class:ve(["switch",{unknown:n.value[S.key]===null||n.value[S.key]===void 0}]),role:"switch",id:`setting-${S.key}`,"aria-checked":n.value[S.key]?"true":"false","aria-labelledby":`setting-label-${S.key}`,disabled:r(S),onClick:Lt(F=>a(uo)(S.key,!n.value[S.key],150),["stop"])},null,10,Uy)):S.kind==="choice"?(_(),b("div",{key:1,class:"seg",role:"group","aria-labelledby":`setting-label-${S.key}`},[(_(!0),b(J,null,ge(S.options,F=>(_(),b("button",{key:String(F),type:"button","aria-pressed":n.value[S.key]===F?"true":"false",disabled:r(S),onClick:x=>a(uo)(S.key,F,150)},f(a(wg)(S,F)),9,Hy))),128))],8,jy)):(_(),b("div",Vy,[l("button",{type:"button","aria-label":a(u)("editor.screen_settings.lower",{name:a(Ti)(S)}),disabled:h(S,-1),onPointerdown:F=>v(F,S,-1),onPointerup:$,onPointercancel:$,onPointerleave:$,onClick:F=>U(F,S,-1)},[l("span",By,f(a(Le)("F0374")),1)],40,Wy),l("output",{id:`setting-${S.key}`,"aria-labelledby":`setting-label-${S.key}`},f(a(xg)(S,n.value)),9,Ky),l("button",{type:"button","aria-label":a(u)("editor.screen_settings.higher",{name:a(Ti)(S)}),disabled:h(S,1),onPointerdown:F=>v(F,S,1),onPointerup:$,onPointercancel:$,onPointerleave:$,onClick:F=>U(F,S,1)},[l("span",qy,f(a(Le)("F0415")),1)],40,Yy)]))])],10,Ry))),128)),i.value&&k.rows.some(S=>S.key==="page_buttons")?(_(),b("p",Gy,f(i.value),1)):G("",!0)]))),128))])):G("",!0)],2))}}),Xy={class:"seg wrap",role:"group"},zy=["disabled","aria-pressed","onClick"],$t=Me({__name:"Segmented",props:{choices:{},value:{},disabled:{type:Boolean}},emits:["pick"],setup(e,{emit:t}){const n=t;return(s,o)=>(_(),b("div",Xy,[(_(!0),b(J,null,ge(e.choices,([i,r])=>(_(),b("button",{key:String(i),type:"button",disabled:e.disabled,"aria-pressed":String(i)===String(e.value)?"true":"false",onClick:c=>n("pick",i)},f(r),9,zy))),128))]))}}),Qy={class:"f"},Zy={class:"f-label"},eb={key:0},tb={key:1,class:"warn"},nb=["aria-expanded"],sb={class:"tx"},ob={key:0,class:"mono"},ib={class:"link"},lb={key:0,class:"picker"},ab=["placeholder","aria-label"],rb={class:"action-list"},cb=["aria-pressed","onClick"],ub={key:0,class:"hint"},db={key:1,class:"warn"},fb={class:"f-label"},pb=["aria-label","value","onChange"],hb={value:""},mb=["value"],gb={key:3,class:"action-number"},vb=["aria-label","value","onInput"],_b=["onClick"],yb={key:4,class:"action-number"},bb=["aria-label","min","max","step","value","placeholder","onInput"],wb={key:0},kb=["aria-label","value","placeholder","onInput"],$b={key:6},Sb={key:0,class:"warn"},xb={key:3},Cb=Me({__name:"ActionPicker",props:{tile:{}},setup(e){const t=e,n=L(()=>m.entityActions[t.tile.entity]),s=L(()=>t.tile.options?.action),o=L(()=>n.value?.find(x=>x.action===s.value?.action)),i=L(()=>m.actionPickerOpen||!s.value),r=L(()=>{const x=m.actionSearch.trim().toLocaleLowerCase();return(n.value||[]).filter(j=>`${j.name} ${j.action} ${j.description}`.toLocaleLowerCase().includes(x))});n.value===void 0&&ig(t.tile.entity);function c(x){const j=x.action===s.value?.action;t.tile.options={...t.tile.options,action:j?s.value:{action:x.action}},m.actionPickerOpen=!1,mt()}function d(x,j){const O={...t.tile.options?.action?.data||{}};j===void 0?delete O[x]:O[x]=j,t.tile.options={...t.tile.options,action:{action:s.value.action,...Object.keys(O).length?{data:O}:{}}},mt()}const h=L(()=>{if(!o.value)return[];const x=t.tile.options?.action?.data||{};return o.value.fields.filter(j=>j.required&&x[j.key]===void 0).map(j=>j.name)}),p=x=>Object.keys(x.selector||{})[0]||"text",g=x=>(x.selector||{})[p(x)]||{},v=x=>x.example===void 0?"":typeof x.example=="string"?x.example:JSON.stringify(x.example);function $(x){const j=g(x),O=p(x);return Array.isArray(x.options)?x.options.map(C=>[C,C]):O==="select"&&Array.isArray(j.options)&&!j.multiple?j.options.map(C=>C&&typeof C=="object"?[String(C.value),String(C.label??C.value)]:[String(C),String(C)]):null}const U=x=>"#"+x.map(j=>Math.max(0,Math.min(255,Number(j)||0)).toString(16).padStart(2,"0")).join(""),A=x=>Array.isArray(x)&&x.length===3?U(x):"#ffffff",T=x=>x===void 0?"":typeof x=="string"?x:JSON.stringify(x);function k(x,j){const O=j.trim();if(!O)return d(x.key,void 0);if(p(x)==="text")return d(x.key,j);try{d(x.key,JSON.parse(O))}catch{d(x.key,j)}}function S(x,j){d(x.key,j===""||!Number.isFinite(Number(j))?void 0:Number(j))}const F=x=>g(x).unit_of_measurement||p(x)==="color_temp"&&g(x).unit||"";return(x,j)=>(_(),b("div",Qy,[l("span",Zy,f(a(u)("editor.action.label")),1),n.value===void 0?(_(),b("small",eb,f(a(u)("editor.action.asking")),1)):n.value===null?(_(),b("small",tb,f(a(u)("editor.action.not_answering")),1)):(_(),b(J,{key:2},[l("button",{type:"button",class:"row","aria-expanded":i.value?"true":"false",onClick:j[0]||(j[0]=O=>a(m).actionPickerOpen=!i.value)},[l("span",sb,[l("b",null,f(o.value?o.value.name:s.value?s.value.action:a(u)("editor.action.choose")),1),s.value?(_(),b("small",ob,f(s.value.action),1)):G("",!0)]),l("span",ib,f(i.value?a(u)("editor.common.close"):a(u)("editor.common.change")),1)],8,nb),i.value?(_(),b("div",lb,[Pe(l("input",{"onUpdate:modelValue":j[1]||(j[1]=O=>a(m).actionSearch=O),type:"search",placeholder:a(u)("editor.action.search"),"aria-label":a(u)("editor.action.search_label")},null,8,ab),[[Qe,a(m).actionSearch]]),l("div",rb,[(_(!0),b(J,null,ge(r.value,O=>(_(),b("button",{key:O.action,type:"button",class:"action-choice","aria-pressed":O.action===s.value?.action?"true":"false",onClick:C=>c(O)},[l("strong",null,f(O.name),1),l("small",null,f(O.description?`${O.action} · ${O.description}`:O.action),1)],8,cb))),128)),r.value.length?G("",!0):(_(),b("p",ub,f(a(u)("editor.action.none_found")),1))])])):G("",!0),s.value&&!o.value?(_(),b("small",db,f(a(u)("editor.action.gone")),1)):G("",!0),o.value&&!i.value?(_(),b(J,{key:2},[(_(!0),b(J,null,ge(o.value.fields,O=>(_(),b("div",{key:O.key,class:"f"},[l("span",fb,f(O.required?O.name:a(u)("editor.action.optional",{name:O.name})),1),p(O)==="boolean"?(_(),at($t,{key:0,choices:[["",a(u)("editor.action.not_set")],["true",a(u)("editor.action.on")],["false",a(u)("editor.action.off")]],value:s.value?.data?.[O.key]===void 0?"":String(s.value?.data?.[O.key]),onPick:C=>d(O.key,C===""?void 0:C==="true")},null,8,["choices","value","onPick"])):$(O)&&$(O).length<=4?(_(),at($t,{key:1,choices:[["",a(u)("editor.action.not_set")],...$(O)],value:s.value?.data?.[O.key]===void 0?"":String(s.value?.data?.[O.key]),onPick:C=>d(O.key,C===""?void 0:C)},null,8,["choices","value","onPick"])):$(O)?(_(),b("select",{key:2,"aria-label":O.name,value:String(s.value?.data?.[O.key]??""),onChange:C=>d(O.key,C.target.value===""?void 0:C.target.value)},[l("option",hb,f(a(u)("editor.action.not_set")),1),(_(!0),b(J,null,ge($(O),([C,I])=>(_(),b("option",{key:C,value:C},f(I),9,mb))),128))],40,pb)):p(O)==="color_rgb"?(_(),b("div",gb,[l("input",{type:"color","aria-label":O.name,value:A(s.value?.data?.[O.key]),onInput:C=>d(O.key,[1,3,5].map(I=>parseInt(C.target.value.slice(I,I+2),16)))},null,40,vb),l("button",{type:"button",class:"btn quiet mini",onClick:C=>d(O.key,void 0)},f(a(u)("editor.action.not_set")),9,_b)])):p(O)==="number"||p(O)==="color_temp"?(_(),b("div",yb,[l("input",{type:"number","aria-label":O.name,min:g(O).min,max:g(O).max,step:g(O).step==="any"?"any":g(O).step,value:s.value?.data?.[O.key]??"",placeholder:v(O),onInput:C=>S(O,C.target.value)},null,40,bb),F(O)?(_(),b("span",wb,f(F(O)),1)):G("",!0)])):(_(),b("input",{key:5,type:"text","aria-label":O.name,value:T(s.value?.data?.[O.key]),placeholder:v(O),onInput:C=>k(O,C.target.value)},null,40,kb)),O.description?(_(),b("small",$b,f(O.description),1)):G("",!0)]))),128)),h.value.length?(_(),b("small",Sb,f(a(u)("editor.action.needs",{fields:h.value.join(", ")})),1)):G("",!0)],64)):G("",!0),a(Tn)(0,2,58)?G("",!0):(_(),b("small",xb,f(a(u)("editor.action.needs_firmware")),1))],64))]))}}),Eb={class:"f"},Tb={class:"f-label"},Ab=["aria-expanded"],Pb={class:"av mdi"},Lb={class:"tx"},Ib={class:"link"},Ob={key:0,class:"picker"},Nb=["placeholder","aria-label"],Mb=["aria-pressed","title"],Rb={class:"mdi"},Db=["aria-pressed","title"],Fb={class:"icon-list"},Ub={class:"icon-grid"},jb=["title","aria-label","aria-pressed","onClick"],Hb={class:"mdi"},Vb={key:0,class:"hint"},Wb={key:1},Xu=Me({__name:"IconPicker",props:{selected:{},automatic:{},autoLabel:{},allowNone:{type:Boolean},note:{}},emits:["pick"],setup(e,{emit:t}){const n=e,s=t,o=ke(""),i=L(()=>Zs(n.selected)),r=L(()=>n.selected==="none"?"":Le(i.value?.cp||n.automatic)),c=L(()=>n.selected==="none"?u("editor.icon.none"):i.value?.label||n.autoLabel),d=L(()=>{const h=o.value.trim().toLocaleLowerCase();return(m.inventory.icons?.groups||[]).map(p=>({label:p.label,icons:p.icons.filter(g=>!h||`${g.label} ${g.name.replaceAll("-"," ")} ${p.label}`.toLocaleLowerCase().includes(h))})).filter(p=>p.icons.length)});return(h,p)=>(_(),b("div",Eb,[l("span",Tb,f(a(u)("editor.icon.label")),1),l("button",{type:"button",class:"row","aria-expanded":a(m).iconPickerOpen?"true":"false",onClick:p[0]||(p[0]=g=>a(m).iconPickerOpen=!a(m).iconPickerOpen)},[l("span",Pb,f(r.value),1),l("span",Lb,[l("b",null,f(c.value),1)]),l("span",Ib,f(a(m).iconPickerOpen?a(u)("editor.common.close"):a(u)("editor.common.change")),1)],8,Ab),a(m).iconPickerOpen?(_(),b("div",Ob,[Pe(l("input",{"onUpdate:modelValue":p[1]||(p[1]=g=>o.value=g),type:"search",placeholder:a(u)("editor.icon.search"),"aria-label":a(u)("editor.icon.search_label")},null,8,Nb),[[Qe,o.value]]),l("button",{type:"button",class:"icon-choice icon-auto","aria-pressed":e.selected==="auto"?"true":"false",title:e.autoLabel,onClick:p[2]||(p[2]=g=>s("pick","auto"))},[l("span",Rb,f(a(Le)(e.automatic)),1),l("span",null,f(e.autoLabel),1)],8,Mb),e.allowNone?(_(),b("button",{key:0,type:"button",class:"icon-choice icon-auto","aria-pressed":e.selected==="none"?"true":"false",title:a(u)("editor.icon.none"),onClick:p[3]||(p[3]=g=>s("pick","none"))},[p[4]||(p[4]=l("span",{class:"mdi"},null,-1)),l("span",null,f(a(u)("editor.icon.none_text_only")),1)],8,Db)):G("",!0),l("div",Fb,[(_(!0),b(J,null,ge(d.value,g=>(_(),b("section",{key:g.label},[l("small",null,f(g.label),1),l("div",Ub,[(_(!0),b(J,null,ge(g.icons,v=>(_(),b("button",{key:v.name,type:"button",class:"icon-choice",title:v.label,"aria-label":a(u)("editor.icon.aria",{name:v.label}),"aria-pressed":e.selected===v.name?"true":"false",onClick:$=>s("pick",v.name)},[l("span",Hb,f(a(Le)(v.cp)),1)],8,jb))),128))])]))),128)),d.value.length?G("",!0):(_(),b("p",Vb,f(a(u)("editor.icon.none_found")),1))])])):G("",!0),e.note?(_(),b("small",Wb,f(e.note),1)):G("",!0)]))}}),Bb={class:"dr-head"},Kb={class:"tx"},Yb={class:"mono"},qb=["aria-label"],Gb={class:"dr-body"},Jb={class:"f"},Xb={class:"f-label",for:"tile-name"},zb=["value","placeholder"],Qb={key:1,class:"f"},Zb={class:"f-label"},e1={key:2,class:"f"},t1={class:"f-label"},n1={key:0,class:"warn"},s1={class:"f"},o1={class:"f-label"},i1={key:0},l1={key:3,class:"f"},a1={class:"f-label"},r1={key:4,class:"f"},c1={class:"f-label"},u1={key:5,class:"f"},d1={class:"f-label"},f1={key:7,class:"f"},p1={class:"f-label"},h1={key:0,class:"warn"},m1={key:8,class:"f"},g1={class:"f-label"},v1={class:"f"},_1={class:"f-label"},y1={class:"sw"},b1=["aria-label","aria-pressed","onClick"],w1={class:"dr-foot"},k1=Me({__name:"TileInspector",props:{tile:{}},setup(e){const t=e,n=L(()=>t.tile.entity.split(".")[0]),s=L(()=>Qs(t.tile.entity)),o=L(()=>gs(t.tile.entity)),i=L(()=>m.layout?It(et(m.layout),m.layout.pages):1),r=L(()=>At(t.tile.slot)+1),c=ae=>!m.layout?.tiles.some(ee=>At(ee.slot)===ae-1),d=L(()=>{const ae=Array.from({length:Math.min(mn,i.value+1)},(ee,Y)=>Y+1);return o.value>ae.length&&ae.push(o.value),ae.map(ee=>[ee,c(ee)?u("editor.tile.goes_to.empty",{page:ee}):String(ee)])}),h=L(()=>dr.value?o.value>i.value?{text:u("editor.tile.goes_to.no_page",{page:o.value}),warn:!0}:{text:u("editor.tile.goes_to.hint"),warn:!1}:{text:u("editor.tile.goes_to.needs_firmware"),warn:!1}),p=L(()=>!m.layout?.tiles.some(ae=>Se(ae)!==Se(t.tile)&&At(ae.slot)===r.value-1)),g=L(()=>{const ae=Array.from({length:i.value},(ee,Y)=>[Y+1,String(Y+1)]);return i.value(o.value?["single","wide"]:["single","wide","full"]).map(ae=>[ae,u(`editor.tile.size.${ae}`)])),$=L(()=>o.value?"":dr.value?u("editor.tile.size.full_hint"):u("editor.tile.size.needs_firmware")),U=L(()=>m.capabilities[t.tile.entity]),A=(ae,ee)=>t.tile.options?.[ae]??ee,T=L(()=>A("display",n.value==="screen"?"digital":"standard")),k=L(()=>{const ae=n.value==="screen"?["digital","analog"]:["standard","watch"],ee=U.value;return n.value==="weather"&&(!ee||ee.displays.includes("forecast")||T.value==="forecast")&&ae.push("forecast"),n.value==="sensor"&&(!ee||ee.displays.includes("graph")||T.value==="graph")&&ae.push("graph"),n.value==="sun"&&ae.push("sunpath"),ae.map(Y=>[Y,u(`editor.tile.display.${Y}`)])}),S=L(()=>{const ae=U.value;return ae&&T.value==="graph"&&!ae.displays.includes("graph")?u("editor.tile.display.no_graph"):ae&&T.value==="forecast"&&!ae.displays.includes("forecast")?u("editor.tile.display.no_forecast"):""}),F=L(()=>A("size","single")),x=L(()=>m.inventory.controls?.[n.value]),j=L(()=>A("controls",F.value==="full"?"none":x.value?.default)),O=L(()=>{const ae=U.value;return(x.value?.choices||[]).filter(ee=>!ae||ee.key==="none"||ee.key===j.value||ae.controls.includes(ee.key)).map(ee=>[ee.key,ee.label])}),C=L(()=>{const ae=U.value;return ae&&j.value!=="none"&&!ae.controls.includes(j.value)?{text:u("editor.tile.controls.not_offered"),warn:!0}:{text:Tn(0,2,19)?u(F.value==="full"?"editor.tile.controls.full_hint":"editor.tile.controls.wide_hint"):u("editor.tile.controls.needs_firmware"),warn:!1}}),I=L(()=>A("tap","auto")),K=L(()=>{const ae=["auto","detail","none"];return((U.value?U.value.toggle:ur.includes(n.value))||I.value==="toggle")&&ae.push("toggle"),ae.push("action"),ae.map(ee=>[ee,u(`editor.tile.tap.${ee}`)])}),M=L(()=>I.value==="toggle"&&U.value&&!U.value.toggle?{text:u("editor.tile.tap.no_toggle"),warn:!0}:I.value==="toggle"&&!ur.includes(n.value)&&!Tn(0,2,58)?{text:u("editor.tile.tap.toggle_needs_firmware"),warn:!1}:I.value==="toggle"?{text:u("editor.tile.tap.hold"),warn:!1}:null),he=L(()=>A("inline","none")),z=L(()=>Ym.includes(n.value)&&(!U.value||U.value.inline||he.value==="slider")),oe=L(()=>he.value==="slider"&&U.value&&!U.value.inline),pe=L(()=>A("history_hours",24)),se=L(()=>Object.entries(m.inventory.backgrounds||{})),ce=L(()=>!!m.inventory.entities.find(ae=>ae.id===t.tile.entity)?.icon),ye=L(()=>!!m.inventory.icons&&(n.value!=="screen"||o.value>0)&&!["forecast","sunpath"].includes(T.value));function $e(ae){t.tile.name=ae,mt()}function Ge(){m.inspector={kind:"inspect",entity:t.tile.entity}}return(ae,ee)=>(_(),b(J,null,[l("div",Bb,[l("span",{class:"av mdi",style:He({color:a(Bt)(e.tile.entity)[2],background:a(Bt)(e.tile.entity)[3]})},f(a(Le)(a($s)(e.tile))),5),l("span",Kb,[l("b",null,f(e.tile.name||s.value),1),l("small",Yb,f(e.tile.entity),1)]),l("button",{type:"button",class:"icon-btn","aria-label":a(u)("editor.common.close"),onClick:ee[0]||(ee[0]=(...Y)=>a(tt)&&a(tt)(...Y))},"✕",8,qb)]),l("div",Gb,[l("div",Jb,[l("label",Xb,f(a(u)("editor.tile.name")),1),l("input",{id:"tile-name",value:e.tile.name,placeholder:s.value,maxlength:"60",onInput:ee[1]||(ee[1]=Y=>$e(Y.target.value))},null,40,zb)]),ye.value?(_(),at(Xu,{key:0,selected:e.tile.options?.icon||"auto",automatic:a(In)(e.tile.entity),"auto-label":a(u)(ce.value?"editor.tile.icon.auto_ha":"editor.tile.icon.auto_default"),note:a(Tn)(0,2,18)?"":a(u)("editor.tile.icon.needs_firmware"),onPick:ee[2]||(ee[2]=Y=>a(wn)(e.tile,"icon",Y))},null,8,["selected","automatic","auto-label","note"])):G("",!0),o.value?(_(),b("div",Qb,[l("span",Zb,f(a(u)("editor.tile.goes_to.label")),1),ne($t,{choices:d.value,value:o.value,onPick:ee[3]||(ee[3]=Y=>a(fg)(e.tile,Number(Y)))},null,8,["choices","value"]),l("small",{class:ve({warn:h.value.warn})},f(h.value.text),3)])):(_(),b("div",e1,[l("span",t1,f(a(u)("editor.tile.display.label")),1),ne($t,{choices:k.value,value:T.value,onPick:ee[4]||(ee[4]=Y=>a(wn)(e.tile,"display",Y))},null,8,["choices","value"]),S.value?(_(),b("small",n1,f(S.value),1)):G("",!0)])),l("div",s1,[l("span",o1,f(a(u)("editor.tile.size.label")),1),ne($t,{choices:v.value,value:F.value,onPick:ee[5]||(ee[5]=Y=>a(wn)(e.tile,"size",Y))},null,8,["choices","value"]),$.value?(_(),b("small",i1,f($.value),1)):G("",!0)]),g.value.length>1?(_(),b("div",l1,[l("span",a1,f(a(u)("editor.tile.page.label")),1),ne($t,{choices:g.value,value:r.value,onPick:ee[6]||(ee[6]=Y=>a(ug)(e.tile,Number(Y)-1))},null,8,["choices","value"])])):G("",!0),x.value&&F.value!=="single"&&!o.value?(_(),b("div",r1,[l("span",c1,f(a(u)("editor.tile.controls.label")),1),ne($t,{choices:O.value,value:j.value,onPick:ee[7]||(ee[7]=Y=>a(wn)(e.tile,"controls",Y))},null,8,["choices","value"]),l("small",{class:ve({warn:C.value.warn})},f(C.value.text),3)])):G("",!0),n.value!=="screen"&&!o.value?(_(),b("div",u1,[l("span",d1,f(a(u)("editor.tile.tap.label")),1),ne($t,{choices:K.value,value:I.value,onPick:ee[8]||(ee[8]=Y=>a(wn)(e.tile,"tap",Y))},null,8,["choices","value"]),M.value?(_(),b("small",{key:0,class:ve({warn:M.value.warn})},f(M.value.text),3)):G("",!0)])):G("",!0),n.value!=="screen"&&!o.value&&I.value==="action"?(_(),at(Cb,{key:6,tile:e.tile},null,8,["tile"])):G("",!0),z.value&&!o.value?(_(),b("div",f1,[l("span",p1,f(a(u)("editor.tile.slider.label")),1),ne($t,{choices:[["none",a(u)("editor.tile.slider.no")],["slider",a(u)("editor.tile.slider.yes")]],value:he.value,onPick:ee[9]||(ee[9]=Y=>a(wn)(e.tile,"inline",Y))},null,8,["choices","value"]),oe.value?(_(),b("small",h1,f(a(u)("editor.tile.slider.nothing")),1)):G("",!0)])):G("",!0),n.value==="sensor"&&!o.value?(_(),b("div",m1,[l("span",g1,f(a(u)("editor.tile.history.label")),1),ne($t,{choices:[1,6,24].map(Y=>[Y,a(u)("editor.tile.history.hours",Y)]),value:pe.value,onPick:ee[10]||(ee[10]=Y=>a(wn)(e.tile,"history_hours",Number(Y)))},null,8,["choices","value"])])):G("",!0),l("div",v1,[l("span",_1,f(a(u)("editor.tile.background.label")),1),l("div",y1,[(_(!0),b(J,null,ge(se.value,([Y,fe])=>(_(),b("button",{key:Y,type:"button","aria-label":a(u)("editor.tile.background.aria",{name:fe.label}),"aria-pressed":(e.tile.options?.background||"auto")===Y?"true":"false",onClick:me=>a(wn)(e.tile,"background",Y)},[l("i",{class:ve(fe.color?"":Y==="none"?"none":"auto"),style:He(fe.color?{background:fe.color}:void 0)},null,6),Re(f(fe.label),1)],8,b1))),128))])])]),l("div",w1,[l("button",{type:"button",class:"btn danger",onClick:ee[11]||(ee[11]=Y=>a(Uu)(e.tile))},f(a(u)("editor.common.remove")),1),ee[12]||(ee[12]=l("span",{class:"spacer"},null,-1)),n.value!=="screen"?(_(),b("button",{key:0,type:"button",class:"btn quiet",onClick:Ge},f(a(u)("editor.common.read_current_data")),1)):G("",!0)])],64))}}),$1={class:"dr-head"},S1={class:"av mdi",style:{background:"var(--seg)",color:"var(--ink-2)"}},x1={class:"tx"},C1=["aria-label"],E1={class:"dr-body"},T1={class:"f"},A1={class:"f-label",for:"title"},P1=["value","placeholder"],L1={class:"f"},I1={class:"f-label",id:"topbar-caption"},O1={style:{"text-transform":"none","letter-spacing":"0","font-weight":"500"}},N1={class:"items",id:"topbar-chips",role:"list","aria-labelledby":"topbar-caption"},M1=["data-index","aria-label","onPointerdown","onClick","onKeydown"],R1={class:"tx"},D1=["aria-label","onClick"],F1=["disabled","title"],U1={class:"live",id:"topbar-live"},j1={class:"f"},H1={class:"f-label"},V1={class:"f"},W1={class:"f-label"},B1={href:"#settings"},K1={key:2},Y1={key:0,class:"dr-foot"},q1=["disabled"],G1=["disabled"],J1=Me({__name:"TopbarInspector",props:{index:{}},setup(e){const t=e,n=L(()=>vn()),s=L(()=>n.value[t.index]),o=L(()=>(m.fontsVersion,m.now,m.topbarPreviews,Ou(n.value,Ru.value,m.layout?.title||sn("editor.mockup.home"),kn))),i=L(()=>o.value.dropped),r=L(()=>m.inventory.header?.min_firmware||"0.2.32"),c=L(()=>{const[z,oe,pe]=r.value.split(".").map(Number);return Tn(z,oe,pe)}),d=L(()=>c.value?u(i.value.size?"editor.topbar.hint.overflow":"editor.topbar.hint.reorder"):u("editor.topbar.hint.needs_firmware",{version:r.value})),h=(z,oe)=>{const pe=kn(z);return pe.shown?i.value.has(oe)?u("editor.topbar.detail.overflow"):pe.analog?u("editor.topbar.detail.dial"):pe.text:u("editor.topbar.detail.hidden")},p=z=>{const oe=kn(z);return oe.analog||z.type!=="entity"?Zs(Iu[z.type])?.cp:oe.icon},g=z=>m.topbarAdded?.key===ct(z)&&Date.now()-m.topbarAdded.time<1200;function v(z){m.layout&&(m.layout.title=z,mt())}function $(z){const oe=[...n.value];oe[t.index]={...oe[t.index],...z},Ws(oe)}const U=L(()=>s.value?kn(s.value).shown?i.value.has(t.index)?u("editor.topbar.live.overflow"):u("editor.topbar.live.looks"):u("editor.topbar.live.hidden"):""),A=L(()=>({clock:Zo(hs.value,new Date(m.now)),analog:u("editor.topbar.analog_sample"),date:Rl(new Date(m.now),ps.value)})),T=ke({index:-1,active:!1,moved:!1});let k=null,S=0,F=null,x=0;function j(z,oe){z.button!==0||z.target.closest(".x")||(z.pointerType!=="touch"&&z.preventDefault(),T.value={index:oe,active:!1,moved:!1},k={x:z.clientX,y:z.clientY},F=z.pointerId,clearTimeout(S),z.pointerType==="touch"&&(S=window.setTimeout(O,260)),document.addEventListener("pointermove",I),document.addEventListener("pointerup",K),document.addEventListener("pointercancel",K))}function O(){T.value.active=!0,document.addEventListener("touchmove",C,{passive:!1})}function C(z){T.value.active&&z.preventDefault()}function I(z){if(z.pointerId!==F||!k)return;if(!T.value.active){const se=Math.hypot(z.clientX-k.x,z.clientY-k.y);if(z.pointerType==="touch"){se>10&&(clearTimeout(S),k=null);return}if(se<6)return;O()}const oe=[...document.querySelectorAll(".items .item[data-index]")];let pe=T.value.index;if(oe.forEach((se,ce)=>{const ye=se.getBoundingClientRect();ceT.value.index&&z.clientY>ye.top+ye.height/2&&(pe=Math.max(pe,ce))}),pe!==T.value.index&&m.layout){const se=[...n.value];se.splice(pe,0,...se.splice(T.value.index,1)),m.layout.header={items:se};const ce=t.index===T.value.index;T.value.index=pe,T.value.moved=!0,ce&&nn(pe)}}function K(z){z.pointerId===F&&(clearTimeout(S),document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",K),document.removeEventListener("pointercancel",K),document.removeEventListener("touchmove",C),T.value.active&&(x=Date.now()+400,T.value.moved&&mt()),T.value={index:-1,active:!1,moved:!1},k=null,F=null)}function M(z){Date.now(){const pe=Gs("i18n-t");return _(),b(J,null,[l("div",$1,[l("span",S1,f(s.value?a(Le)(p(s.value)||"F0150"):a(Le)("F0150")),1),l("span",x1,[l("b",null,f(s.value?s.value.type==="entity"?a(Qs)(s.value.entity):a(Ss)(s.value):a(u)("editor.topbar.title")),1),l("small",{class:ve({mono:s.value?.type==="entity"})},f(s.value?s.value.type==="entity"?s.value.entity:a(u)("editor.topbar.builtin"):a(u)("editor.topbar.items",{used:n.value.length},a(Sn)())),3)]),l("button",{type:"button",class:"icon-btn","aria-label":a(u)("editor.common.close"),onClick:oe[0]||(oe[0]=(...se)=>a(tt)&&a(tt)(...se))},"✕",8,C1)]),l("div",E1,[l("div",T1,[l("label",A1,f(a(u)("editor.topbar.name")),1),l("input",{id:"title",value:a(m).layout?.title,maxlength:"60",placeholder:a(u)("editor.topbar.name_placeholder"),onInput:oe[1]||(oe[1]=se=>v(se.target.value))},null,40,P1)]),l("div",L1,[l("span",I1,[Re(f(a(u)("editor.topbar.right"))+" ",1),l("span",O1," · "+f(n.value.length)+" / "+f(a(Sn)()),1)]),l("div",N1,[(_(!0),b(J,null,ge(n.value,(se,ce)=>(_(),b("div",{key:a(ct)(se)+ce,class:ve(["item",{selected:ce===e.index,"is-hidden":!a(kn)(se).shown,"is-overflow":i.value.has(ce),"just-added":g(se),"dragging-chip":T.value.active&&T.value.index===ce}]),role:"listitem",tabindex:"0","data-index":ce,"aria-label":a(u)("editor.topbar.item_label",{name:a(Ss)(se),slot:ce+1}),onPointerdown:ye=>j(ye,ce),onClick:ye=>M(ce),onKeydown:ye=>he(ye,ce)},[oe[9]||(oe[9]=l("span",{class:"grip","aria-hidden":"true"},"⋮⋮",-1)),l("span",{class:"av mdi",style:He(a(kn)(se).color?{color:a(kn)(se).color}:void 0)},f(p(se)?a(Le)(p(se)):""),5),l("span",R1,[l("b",null,f(a(Ss)(se)),1),l("small",null,f(h(se,ce)),1)]),l("button",{type:"button",class:"x","aria-label":a(u)("editor.topbar.remove_named",{name:a(Ss)(se)}),onClick:Lt(ye=>a(gr)(ce),["stop"])},"✕",8,D1)],42,M1))),128)),l("button",{type:"button",class:"ghost-btn",id:"topbar-add",disabled:n.value.length>=a(Sn)(),title:n.value.length>=a(Sn)()?a(u)("editor.topbar.max",a(Sn)()):a(u)("editor.topbar.add_title"),onClick:oe[2]||(oe[2]=(...se)=>a(hr)&&a(hr)(...se))},f(a(u)("editor.topbar.add_button")),9,F1)]),l("small",{id:"topbar-hint",class:ve({warn:i.value.size>0&&c.value})},f(d.value),3)]),s.value?(_(),b(J,{key:0},[l("div",U1,[l("small",null,f(U.value),1),ne(Ju,{items:[s.value],single:""},null,8,["items"])]),s.value.type==="entity"?(_(),b(J,{key:0},[l("div",j1,[l("span",H1,f(a(u)("editor.topbar.content.label")),1),ne($t,{choices:(a(m).inventory.header?.contents||[]).map(se=>[se.key,se.label]),value:s.value.content,onPick:oe[3]||(oe[3]=se=>$({content:se}))},null,8,["choices","value"]),l("small",null,f(a(u)("editor.topbar.content.hint")),1)]),ne(Xu,{selected:s.value.icon||"auto",automatic:a(m).topbarPreviews[a(ct)(s.value)]?.auto_icon||a(In)(s.value.entity),"auto-label":a(u)("editor.topbar.auto_icon"),"allow-none":"",onPick:oe[4]||(oe[4]=se=>$({icon:se}))},null,8,["selected","automatic","auto-label"]),l("div",V1,[l("span",W1,f(a(u)("editor.topbar.show.label")),1),ne($t,{choices:(a(m).inventory.header?.shows||[]).map(se=>[se.key,se.label]),value:s.value.show,onPick:oe[5]||(oe[5]=se=>$({show:se}))},null,8,["choices","value"]),l("small",null,f(a(u)("editor.topbar.show.hint")),1)])],64)):s.value.type!=="date"?(_(),at(pe,{key:1,keypath:a(hs)?"editor.topbar.clock_24":"editor.topbar.clock_12",tag:"small",id:"topbar-clock",scope:"global"},{settings:ie(()=>[l("a",B1,f(a(u)("editor.topbar.clock_settings")),1)]),_:1},8,["keypath"])):(_(),b("small",K1,f(a(u)("editor.topbar.date_hint",{date:A.value.date})),1))],64)):G("",!0)]),s.value?(_(),b("div",Y1,[l("button",{type:"button",class:"btn danger",onClick:oe[6]||(oe[6]=se=>a(gr)(e.index))},f(a(u)("editor.common.remove")),1),oe[10]||(oe[10]=l("span",{class:"spacer"},null,-1)),l("button",{type:"button",class:"btn quiet",disabled:e.index===0,onClick:oe[7]||(oe[7]=se=>a(Ci)(e.index,e.index-1)&&a(nn)(e.index-1))},f(a(u)("editor.topbar.up")),9,q1),l("button",{type:"button",class:"btn quiet",disabled:e.index>=n.value.length-1,onClick:oe[8]||(oe[8]=se=>a(Ci)(e.index,e.index+1)&&a(nn)(e.index+1))},f(a(u)("editor.topbar.down")),9,G1)])):G("",!0)],64)}}}),X1={class:"dr-head"},z1={class:"tx"},Q1=["aria-label"],Z1={class:"dr-body"},ew={class:"f"},tw={class:"f-label"},nw={class:"options"},sw=["disabled","onClick"],ow={class:"mdi"},iw={class:"tx"},lw={key:0,class:"f"},aw={class:"f-label"},rw={class:"options"},cw=["disabled","onClick"],uw={class:"mdi"},dw={class:"tx"},fw={class:"f"},pw={class:"f-label",for:"topbar-search"},hw=["placeholder","aria-label"],mw={class:"options"},gw=["disabled","onClick"],vw={class:"mdi"},_w={class:"tx"},yw={key:0,class:"hint"},bw={key:1,class:"hint"},ww={class:"dr-foot"},kw=Me({__name:"TopbarAdd",setup(e){const t=ke(""),n=L(()=>new Set(vn().map(ct))),s=L(()=>({clock:Zo(hs.value,new Date(m.now)),analog:u("editor.topbar.analog_sample"),date:Rl(new Date(m.now),ps.value)})),o=L(()=>m.inventory.header?.suggestions?.[m.selected||""]||[]),i=L(()=>{const c=t.value.trim().toLocaleLowerCase();return m.inventory.entities.filter(d=>`${d.name} ${d.id} ${d.area||""} ${d.device||""}`.toLocaleLowerCase().includes(c))}),r=c=>({type:"entity",entity:c,content:"state",icon:"auto",show:"always"});return(c,d)=>(_(),b(J,null,[l("div",X1,[d[3]||(d[3]=l("span",{class:"av",style:{background:"var(--seg)",color:"var(--ink-2)","font-size":"18px"}},"+",-1)),l("span",z1,[l("b",null,f(a(u)("editor.topbar.add.title")),1),l("small",null,f(a(u)("editor.topbar.add.slots",{used:a(vn)().length},a(Sn)())),1)]),l("button",{type:"button",class:"icon-btn","aria-label":a(u)("editor.common.close"),onClick:d[0]||(d[0]=(...h)=>a(tt)&&a(tt)(...h))},"✕",8,Q1)]),l("div",Z1,[l("div",ew,[l("span",tw,f(a(u)("editor.topbar.add.builtin")),1),l("div",nw,[(_(!0),b(J,null,ge(a(m).inventory.header?.builtin||[],h=>(_(),b("button",{key:h.type,type:"button",class:"option",disabled:n.value.has(a(ct)({type:h.type})),onClick:p=>a(Ei)({type:h.type})},[l("span",ow,f(a(Le)(a(Zs)(a(Iu)[h.type])?.cp||"F0150")),1),l("span",iw,[l("strong",null,f(h.label),1),l("small",null,f(n.value.has(a(ct)({type:h.type}))?a(u)("editor.topbar.add.added"):s.value[h.type]),1)])],8,sw))),128))])]),o.value.length?(_(),b("div",lw,[l("span",aw,f(a(u)("editor.topbar.add.suggestions")),1),l("div",rw,[(_(!0),b(J,null,ge(o.value,h=>(_(),b("button",{key:a(ct)(h.item),type:"button",class:"option",disabled:n.value.has(a(ct)(h.item)),onClick:p=>a(Ei)(h.item)},[l("span",uw,f(a(Le)(h.icon||a(In)(h.item.entity))),1),l("span",dw,[l("strong",null,f(h.label),1),l("small",null,f(n.value.has(a(ct)(h.item))?a(u)("editor.topbar.add.added"):[h.name,h.area].filter(Boolean).join(" · ")),1)])],8,cw))),128))])])):G("",!0),l("div",fw,[l("label",pw,f(a(u)("editor.topbar.add.entity")),1),Pe(l("input",{id:"topbar-search","onUpdate:modelValue":d[1]||(d[1]=h=>t.value=h),type:"search",placeholder:a(u)("editor.topbar.add.search"),"aria-label":a(u)("editor.topbar.add.search_label")},null,8,hw),[[Qe,t.value]]),l("div",mw,[(_(!0),b(J,null,ge(i.value.slice(0,40),h=>(_(),b("button",{key:h.id,type:"button",class:"option",disabled:n.value.has(a(ct)(r(h.id))),onClick:p=>a(Ei)(r(h.id))},[l("span",vw,f(a(Le)(a(In)(h.id))),1),l("span",_w,[l("strong",null,f(h.name),1),l("small",null,f([h.area,h.id].filter(Boolean).join(" · ")),1)])],8,gw))),128)),i.value.length?i.value.length>40?(_(),b("p",bw,f(a(u)("editor.common.results",i.value.length)),1)):G("",!0):(_(),b("p",yw,f(a(u)("editor.topbar.add.none_found")),1))])])]),l("div",ww,[d[4]||(d[4]=l("span",{class:"spacer"},null,-1)),l("button",{type:"button",class:"btn quiet",onClick:d[2]||(d[2]=(...h)=>a(tt)&&a(tt)(...h))},f(a(u)("editor.common.cancel")),1)])],64))}}),$w={class:"dr-head"},Sw={class:"tx"},xw=["aria-label"],Cw={class:"dr-body",id:"inspector-section"},Ew={id:"inspection-summary"},Tw={key:0,class:"hint warn"},Aw={key:1,class:"hint"},Pw={id:"inspection"},Lw={class:"dr-foot"},Iw=Me({__name:"InspectPanel",props:{entity:{}},setup(e){const t=e,n=ke(null),s=ke(u("editor.inspect.reading")),o=ke("");async function i(){if(m.selected){n.value=null,o.value="",s.value=u("editor.inspect.fetching");try{const c=await Dt(`screens/${encodeURIComponent(m.selected)}/inspect`),d=t.entity?c.tiles.filter(h=>h.entity===t.entity):c.tiles;n.value=d,s.value=JSON.stringify(t.entity?d[0]:c,null,2)}catch(c){o.value=c.message,s.value="",Ce(c.message)}}}const r=c=>{const d=m.layout?.tiles.find(h=>h.entity===c)?.options||{};return u("editor.inspect.options",{slider:u(d.inline==="slider"?"editor.inspect.yes":"editor.inspect.no"),display:Lu(d.display||"standard"),size:Km(d.size),control:jm({entity:c,options:d},m.inventory),background:m.inventory.backgrounds?.[d.background||"auto"]?.label||u("editor.inspect.background_default")})};return Mn(i),Et(()=>t.entity,i),(c,d)=>(_(),b(J,null,[l("div",$w,[d[1]||(d[1]=l("span",{class:"av",style:{background:"var(--seg)",color:"var(--ink-2)","font-size":"16px"}},"⌕",-1)),l("span",Sw,[l("b",null,f(a(u)("editor.inspect.title")),1),l("small",{class:ve({mono:e.entity})},f(e.entity||a(u)("editor.inspect.subtitle")),3)]),l("button",{type:"button",class:"icon-btn","aria-label":a(u)("editor.common.close"),onClick:d[0]||(d[0]=(...h)=>a(tt)&&a(tt)(...h))},"✕",8,xw)]),l("div",Cw,[l("div",Ew,[o.value?(_(),b("p",Tw,f(o.value),1)):n.value?G("",!0):(_(),b("p",Aw,f(a(u)("editor.inspect.fetching")),1)),(_(!0),b(J,null,ge(n.value||[],(h,p)=>(_(),b("article",{key:p,class:"inspection-tile"},[l("strong",null,f(h.entity),1),l("span",null,f(a(u)("editor.inspect.status",{status:h.word||h.state})),1),l("small",null,f(r(h.entity)),1)]))),128))]),l("pre",Pw,f(s.value),1)]),l("div",Lw,[l("button",{type:"button",class:"btn quiet",onClick:i},f(a(u)("editor.inspect.read_again")),1),d[2]||(d[2]=l("span",{class:"spacer"},null,-1))])],64))}}),Ow=["aria-hidden"],Nw=Me({__name:"Drawer",setup(e){const t=L(()=>!!(m.inspector&&(m.inspector.kind!=="tile"||bi.value)));return(n,s)=>(_(),b("aside",{class:ve(["drawer",{open:t.value}]),id:"tile-sheet","aria-hidden":t.value?"false":"true",onClick:s[0]||(s[0]=Lt(()=>{},["stop"]))},[a(m).inspector?(_(),b(J,{key:0},[a(m).inspector.kind==="tile"&&a(bi)?(_(),at(k1,{key:0,tile:a(bi)},null,8,["tile"])):a(m).inspector.kind==="bar"?(_(),at(J1,{key:1,index:a(m).inspector.index},null,8,["index"])):a(m).inspector.kind==="bar-add"?(_(),at(kw,{key:2})):a(m).inspector.kind==="inspect"?(_(),at(Iw,{key:3,entity:a(m).inspector.entity},null,8,["entity"])):G("",!0)],64)):G("",!0)],10,Ow))}}),Mw={class:"main-head"},Rw={class:"eyebrow",id:"screen-name"},Dw=["title"],Fw={class:"head-right"},Uw={class:"seg",role:"tablist"},jw=["aria-pressed"],Hw=["aria-pressed"],Vw={key:1,id:"dirty",class:"chip dirty"},Ww=["disabled"],Bw={key:0,class:"spin small"},Kw=["aria-label","aria-expanded"],Yw={key:3,class:"menu",role:"menu"},qw=["disabled","title"],Gw=["disabled","aria-expanded"],Jw={key:0,class:"sub"},Xw=["onClick"],zw=["disabled","title"],Qw={class:"body",id:"body"},Zw=Me({__name:"ScreenView",setup(e){const t=L(()=>wt.value),n=L(()=>t.value.online?`${t.value.delivery} · ${t.value.status}`:u("editor.screen_view.offline")),s=L(()=>Ku(t.value)&&t.value.online&&t.value.update?.profile&&t.value.update?.host),o=L(()=>m.inventory.screens.filter(A=>A.id!==t.value.id&&A.layout?.tiles?.length)),i=ke(!1),r=ke(null);function c(){m.menuOpen=!1,i.value=!1}function d(){c(),m.overrideProfile=t.value.update?.profile||null,m.overrideFriendly=t.value.name,We("#override")}function h(){c(),m.selectedTile=null,m.inspector={kind:"inspect"}}function p(A){c(),!(m.dirty&&!confirm(u("editor.screen_view.confirm.copy")))&&mg(A)}function g(){c(),r.value?.click()}async function v(A){const T=A.target,k=T.files?.[0];T.value="",k&&(m.dirty&&!confirm(u("editor.screen_view.confirm.import"))||vg(await k.text()))}function $(A){if(A.key==="Escape")if(m.menuOpen)c();else{if(m.palette)return;m.inspector&&!A.target?.closest?.(".picker")&&tt()}else(A.metaKey||A.ctrlKey)&&A.key.toLowerCase()==="s"&&(A.preventDefault(),m.dirty&&tl())}function U(A){m.menuOpen&&!A.target.closest(".head-right .menu, #more")&&c()}return Mn(()=>{document.addEventListener("keydown",$),document.addEventListener("click",U)}),ms(()=>{document.removeEventListener("keydown",$),document.removeEventListener("click",U)}),(A,T)=>(_(),b(J,null,[l("header",Mw,[l("div",null,[l("span",Rw,f(t.value.name),1),l("h1",null,f(a(m).layout?.title||a(sn)("editor.mockup.home")),1)]),l("span",{id:"delivery",class:ve(["chip",{off:!t.value.online}]),title:n.value},[T[9]||(T[9]=l("span",{class:"dot"},null,-1)),Re(f(n.value),1)],10,Dw),l("div",Fw,[l("div",Uw,[l("button",{type:"button",id:"tab-layout",role:"tab","aria-pressed":a(m).tab==="layout"?"true":"false",onClick:T[0]||(T[0]=k=>a(m).tab="layout")},f(a(u)("editor.screen_view.tabs.layout")),9,jw),l("button",{type:"button",id:"tab-settings",role:"tab","aria-pressed":a(m).tab==="settings"?"true":"false",onClick:T[1]||(T[1]=k=>{a(m).tab="settings",a(tt)()})},f(a(u)("editor.screen_view.tabs.settings")),9,Hw)]),a(m).dirty?(_(),b("span",Vw,f(a(u)("editor.common.unsaved")),1)):(_(),b("span",{key:0,id:"dirty",class:ve(["chip",{sent:a(m).saved}])},f(a(m).saved?a(u)("editor.screen_view.sent"):a(u)("editor.screen_view.all_saved")),3)),a(m).dirty?(_(),b("button",{key:2,id:"save",type:"button",class:"btn primary",disabled:a(m).busy,title:"⌘S",onClick:T[2]||(T[2]=k=>a(tl)())},[a(m).busy?(_(),b("span",Bw)):G("",!0),Re(f(a(m).busy?a(u)("editor.common.saving"):a(u)("editor.common.save_send")),1)],8,Ww)):G("",!0),l("button",{id:"more",type:"button",class:"icon-btn","aria-label":a(u)("editor.screen_view.more"),"aria-haspopup":"menu","aria-expanded":a(m).menuOpen?"true":"false",onClick:T[3]||(T[3]=Lt(k=>{a(m).menuOpen=!a(m).menuOpen,i.value=!1},["stop"]))},"···",8,Kw),a(m).menuOpen?(_(),b("div",Yw,[l("button",{type:"button",role:"menuitem",id:"identify",disabled:!a(Jn)(t.value)||!t.value.online,title:a(Jn)(t.value)?"":a(u)("editor.screen_view.menu.identify_needs"),onClick:T[4]||(T[4]=k=>{c(),a(ju)(t.value)})},[Re(f(a(u)("editor.screen_view.menu.identify"))+" ",1),l("small",null,f(a(u)("editor.screen_view.menu.identify_hint")),1)],8,qw),l("button",{type:"button",role:"menuitem",id:"inspect",onClick:h},[Re(f(a(u)("editor.common.read_current_data"))+" ",1),l("small",null,f(a(u)("editor.screen_view.menu.inspect_hint")),1)]),T[12]||(T[12]=l("div",{class:"sep"},null,-1)),l("button",{type:"button",role:"menuitem",id:"copy-layout",disabled:!o.value.length,"aria-expanded":i.value?"true":"false",onClick:T[5]||(T[5]=Lt(k=>i.value=!i.value,["stop"]))},[Re(f(a(u)("editor.screen_view.menu.copy"))+" ",1),l("small",null,f(o.value.length?a(u)("editor.screen_view.menu.copy_screens",o.value.length):a(u)("editor.screen_view.menu.copy_none")),1)],8,Gw),i.value?(_(),b("div",Jw,[(_(!0),b(J,null,ge(o.value,k=>(_(),b("button",{key:k.id,type:"button",role:"menuitem",onClick:S=>p(k.id)},[Re(f(k.name)+" ",1),l("small",null,f(a(u)("editor.screen_view.menu.copy_tiles",k.layout.tiles.length)),1)],8,Xw))),128))])):G("",!0),l("button",{type:"button",role:"menuitem",id:"export-layout",onClick:T[6]||(T[6]=k=>{c(),a(Vu)()})},[Re(f(a(u)("editor.screen_view.menu.export"))+" ",1),T[10]||(T[10]=l("small",null,"JSON",-1))]),l("button",{type:"button",role:"menuitem",id:"import-layout",onClick:g},[Re(f(a(u)("editor.screen_view.menu.import"))+" ",1),T[11]||(T[11]=l("small",null,"JSON",-1))]),T[13]||(T[13]=l("div",{class:"sep"},null,-1)),l("button",{type:"button",role:"menuitem",id:"open-override",disabled:!t.value.update?.profile,title:t.value.update?.profile?"":a(u)("editor.screen_view.menu.override_none"),onClick:d},[Re(f(a(u)("editor.screen_view.menu.override"))+" ",1),l("small",null,f(a(u)("editor.screen_view.menu.override_hint")),1)],8,zw),l("button",{type:"button",role:"menuitem",onClick:T[7]||(T[7]=k=>{c(),a(We)("#firmware")})},f(a(u)("editor.nav.firmware")),1),s.value?(_(),b("button",{key:1,type:"button",role:"menuitem",onClick:T[8]||(T[8]=k=>{c(),a(sl)(t.value)})},[Re(f(a(u)("editor.screen_view.menu.update"))+" ",1),l("small",null,f(t.value.update?.target),1)])):G("",!0)])):G("",!0),l("input",{ref_key:"fileInput",ref:r,type:"file",accept:"application/json,.json",hidden:"",onChange:v},null,544)])]),l("div",Qw,[a(m).tab==="layout"?(_(),at(Iy,{key:0})):(_(),at(Jy,{key:1})),ne(Nw)])],64))}}),ek={key:0,id:"choose",class:"empty"},tk={key:1,id:"empty",class:"empty"},nk=Me({__name:"EmptyState",setup(e){return(t,n)=>a(m).inventory.screens.length?(_(),b("section",ek,[n[1]||(n[1]=l("span",{class:"empty-icon"},"▦",-1)),l("h2",null,f(a(u)("editor.empty.choose.title")),1),l("p",null,f(a(u)("editor.empty.choose.text")),1)])):(_(),b("section",tk,[n[2]||(n[2]=l("span",{class:"empty-icon"},"▦",-1)),l("h2",null,f(a(u)("editor.empty.start.title")),1),l("p",null,f(a(u)("editor.empty.start.text")),1),l("button",{id:"start",type:"button",class:"btn primary",onClick:n[0]||(n[0]=s=>a(We)("#new-screen"))},f(a(u)("editor.empty.start.button")),1)]))}}),sk={class:"panel",id:"settings-view"},ok={class:"panel-head"},ik={class:"tx"},lk={class:"eyebrow"},ak={id:"settings-title"},rk={class:"card-grid"},ck={class:"card"},uk={class:"tools"},dk={class:"tx"},fk={class:"tx"},pk={key:0,class:"card updates",id:"updates"},hk={id:"updates-hint"},mk=["aria-valuenow"],gk={class:"progress-text"},vk={key:0,class:"log-lines"},_k={key:2,class:"whatsnew"},yk={class:"check"},bk=["checked"],wk={key:1,class:"card",id:"language"},kk={class:"field"},$k={class:"f-label",for:"screen-language"},Sk=["value","disabled"],xk={value:"auto"},Ck=["value"],Ek={key:0,id:"language-ha-missing"},Tk={class:"field"},Ak={class:"f-label",for:"time-format"},Pk=["value","disabled"],Lk={value:"auto"},Ik={value:"24"},Ok={value:"12"},Nk={class:"field"},Mk={class:"f-label",for:"number-format"},Rk=["value","disabled"],Dk={value:"auto"},Fk=["value"],Uk={key:0,class:"actions",id:"language-profile"},jk=["disabled"],Hk={class:"card"},Vk={class:"tools"},Wk={class:"tx"},Bk={class:"card",id:"claude"},Kk={class:"actions"},Yk=["disabled"],qk={id:"claude-path"},Gk={class:"actions"},Jk={class:"btn quiet",id:"claude-download",href:"api/claude-skill.zip",download:"esp-screens.zip"},Xk="https://github.com/MaxGramser/homeassistant_espscreen/blob/main/docs/TRANSLATING.md",zk=Me({__name:"AppSettingsView",setup(e){const t=L(()=>m.inventory.updates),n=L(()=>m.inventory.screens.filter(C=>C.update?.available).length),s=L(()=>t.value?t.value.busy?u("editor.settings.updates.busy",{version:t.value.target}):m.inventory.screens.length?n.value?u("editor.settings.updates.available",{version:t.value.target},n.value):u("editor.settings.updates.current",{version:t.value.target}):u("editor.settings.updates.no_screens",{version:t.value.target}):""),o=L(()=>m.inventory.screens.find(C=>C.update?.state==="running"||m.updating.includes(C.id))),i=L(()=>o.value?ns(o.value):null),r=L(()=>(m.firmwareJob?.logs||[]).slice(-12).join(` -`)),c=L(()=>{const C=m.inventory.changelog,I=t.value?.target;return!Array.isArray(C)||!I?[]:C.filter(K=>K.firmware===I).flatMap(K=>K.lines).slice(0,10)}),d=L(()=>m.inventory.claude_skill),h=ke(!1);async function p(){h.value=!0;try{await Eg()}finally{h.value=!1}}const g=["point","comma","space"],v=L(()=>m.inventory.language),$=L(()=>{const C=v.value,I=C?.ha?gu(C.ha,C.languages.map(K=>K.code)):void 0;return C?.languages.find(K=>K.code===I)?.name}),U=L(()=>v.value?.languages.find(C=>C.code===v.value.effective&&!C.checked)),A=C=>u(C==="12"?"editor.settings.language.clock_12":"editor.settings.language.clock_24"),T=C=>wu("1234.5",C),k=Mm(),S=L(()=>{const C=v.value;return C?{...k.clock&&k.clock!==(C.clock_effective||"24")?{clock:k.clock}:{},...k.numbers&&k.numbers!==(C.numbers_effective||"point")?{numbers:k.numbers}:{}}:{}}),F=L(()=>[S.value.clock&&A(S.value.clock),S.value.numbers&&T(S.value.numbers)].filter(Boolean).join(" · ")),x=ke(!1);async function j(C,I){const K=I.target;x.value=!0;const M=await br({[C]:K.value});x.value=!1,M||(K.value=String(v.value?.[C]??"auto"))}async function O(){x.value=!0,await br(S.value),x.value=!1}return(C,I)=>{const K=Gs("i18n-t");return _(),b("div",sk,[l("div",ok,[l("div",ik,[l("span",lk,f(a(u)("editor.nav.settings")),1),l("h1",ak,f(a(u)("editor.settings.title")),1)]),l("button",{type:"button",class:"btn quiet",id:"close-settings",onClick:I[0]||(I[0]=M=>a(We)(""))},f(a(u)("editor.settings.back")),1)]),l("div",rk,[l("section",ck,[l("h2",null,f(a(u)("editor.settings.screens.title")),1),l("p",null,f(a(u)("editor.settings.screens.text")),1),l("div",uk,[l("button",{type:"button",class:"tool",onClick:I[1]||(I[1]=M=>a(We)("#new-screen"))},[I[9]||(I[9]=l("span",{class:"tool-icon"},"+",-1)),l("span",dk,[l("b",null,f(a(u)("editor.nav.new_screen")),1),l("small",null,f(a(u)("editor.nav.new_screen_detail")),1)])]),l("button",{type:"button",class:"tool",onClick:I[2]||(I[2]=M=>a(We)("#firmware"))},[I[10]||(I[10]=l("span",{class:"tool-icon"},"⇪",-1)),l("span",fk,[l("b",null,f(a(u)("editor.nav.firmware")),1),l("small",null,f(a(u)("editor.settings.screens.firmware_detail")),1)])])])]),t.value?(_(),b("section",pk,[l("h2",null,f(a(u)("editor.settings.updates.title")),1),l("p",hk,f(s.value),1),o.value&&i.value?(_(),b(J,{key:0},[l("div",{class:"progress",role:"progressbar","aria-valuenow":i.value.percent,"aria-valuemin":"0","aria-valuemax":"100"},[l("i",{style:He({width:i.value.percent+"%"})},null,4)],8,mk),l("div",gk,[l("span",null,f(o.value.name)+" · "+f(i.value.percent)+" %",1),l("span",null,f(i.value.text),1)]),r.value?(_(),b("pre",vk,f(r.value),1)):G("",!0)],64)):G("",!0),t.value.pending&&!t.value.busy&&t.value.pending>=2?(_(),b("button",{key:1,id:"update-all",type:"button",class:"btn primary",onClick:I[3]||(I[3]=(...M)=>a(_r)&&a(_r)(...M))},f(a(u)("editor.settings.updates.all",t.value.pending)),1)):G("",!0),c.value.length&&!a(nl)()?(_(),b("details",_k,[l("summary",null,f(a(u)("editor.settings.updates.whats_new",{version:t.value.target})),1),l("ul",null,[(_(!0),b(J,null,ge(c.value,M=>(_(),b("li",{key:M},f(M),1))),128))])])):G("",!0),l("label",yk,[l("input",{type:"checkbox",id:"auto-update",checked:!!t.value.auto,onChange:I[4]||(I[4]=M=>a(Cg)(M.target.checked))},null,40,bk),l("span",null,[Re(f(a(u)("editor.settings.updates.auto_label")),1),l("small",null,f(a(u)("editor.settings.updates.auto_hint")),1)])])])):G("",!0),v.value?(_(),b("section",wk,[l("h2",null,f(a(u)("editor.settings.language.title")),1),l("div",kk,[l("label",$k,f(a(u)("editor.settings.language.screen_language")),1),l("select",{id:"screen-language",value:v.value.setting,disabled:x.value,onChange:I[5]||(I[5]=M=>j("setting",M))},[l("option",xk,f($.value?a(u)("editor.settings.language.auto",{name:$.value}):a(u)("editor.settings.language.auto_plain")),1),(_(!0),b(J,null,ge(v.value.languages,M=>(_(),b("option",{key:M.code,value:M.code},f(M.checked?M.name:a(u)("editor.settings.language.unchecked",{name:M.name})),9,Ck))),128))],40,Sk),v.value.setting==="auto"&&!$.value?(_(),b("small",Ek,f(a(u)("editor.settings.language.ha_missing")),1)):G("",!0),U.value?(_(),at(K,{key:1,keypath:"editor.settings.language.help",tag:"small",id:"language-help",scope:"global"},{name:ie(()=>[Re(f(U.value.name),1)]),guide:ie(()=>[l("a",{href:Xk,target:"_blank",rel:"noopener"},f(a(u)("editor.settings.language.guide")),1)]),_:1})):G("",!0),l("small",null,f(a(u)("editor.settings.language.update_hint")),1)]),l("div",Tk,[l("label",Ak,f(a(u)("editor.settings.language.time")),1),l("select",{id:"time-format",value:v.value.clock||"auto",disabled:x.value,onChange:I[6]||(I[6]=M=>j("clock",M))},[l("option",Lk,f(a(u)("editor.settings.language.time_auto",{clock:A(v.value.clock_effective)})),1),l("option",Ik,f(A("24")),1),l("option",Ok,f(A("12")),1)],40,Pk)]),l("div",Nk,[l("label",Mk,f(a(u)("editor.settings.language.numbers")),1),l("select",{id:"number-format",value:v.value.numbers||"auto",disabled:x.value,onChange:I[7]||(I[7]=M=>j("numbers",M))},[l("option",Dk,f(a(u)("editor.settings.language.numbers_auto",{example:T(v.value.numbers_effective||"point")})),1),(_(),b(J,null,ge(g,M=>l("option",{key:M,value:M},f(T(M)),9,Fk)),64))],40,Rk)]),F.value?(_(),b("div",Uk,[l("small",null,f(a(u)("editor.settings.language.profile",{formats:F.value})),1),l("button",{type:"button",class:"btn quiet mini",disabled:x.value,onClick:O},f(a(u)("editor.settings.language.use_profile")),9,jk)])):G("",!0),l("small",null,f(a(u)("editor.settings.language.editor_hint")),1)])):G("",!0),l("section",Hk,[l("h2",null,f(a(u)("editor.nav.alerts")),1),l("p",null,f(a(u)("editor.settings.alerts.text")),1),l("div",Vk,[l("button",{type:"button",class:"tool",onClick:I[8]||(I[8]=M=>a(We)("#alerts"))},[I[11]||(I[11]=l("span",{class:"tool-icon"},"!",-1)),l("span",Wk,[l("b",null,f(a(u)("editor.nav.alerts")),1),l("small",null,f(a(u)("editor.settings.alerts.detail")),1)])])])]),l("section",Bk,[I[12]||(I[12]=l("h2",null,"Claude",-1)),l("p",null,f(a(u)("editor.settings.claude.text")),1),l("div",Kk,[l("button",{type:"button",id:"claude-install",class:ve(["btn",d.value?.installed&&d.value.current?"quiet":"primary"]),disabled:!d.value||h.value,onClick:p},f(!d.value||!d.value.installed?a(u)("editor.settings.claude.install"):d.value.current?a(u)("editor.settings.claude.install_again"):a(u)("editor.settings.claude.update")),11,Yk),l("span",{id:"claude-status",class:ve(["chip",d.value&&d.value.installed?d.value.current?"good":"update":""]),role:"status"},f(d.value?d.value.installed?d.value.current?a(u)("editor.settings.claude.installed_chip"):a(u)("editor.settings.claude.newer"):a(u)("editor.settings.claude.not_installed"):a(u)("editor.common.loading")),3)]),ne(K,{keypath:"editor.settings.claude.writes",tag:"small",scope:"global"},{path:ie(()=>[l("code",qk,f(d.value?.path||"/homeassistant/.claude/skills/esp-screens"),1)]),_:1}),l("div",Gk,[l("a",Jk,f(a(u)("editor.settings.claude.download")),1),l("small",null,f(a(u)("editor.settings.claude.upload")),1)])])])])}}}),Qk={class:"panel",id:"installer"},Zk={class:"panel-head"},e0={class:"tx"},t0={class:"eyebrow"},n0={id:"install-title"},s0={key:0},o0=["aria-label"],i0={class:"boards"},l0={class:"board"},a0={class:"board"},r0={class:"field"},c0={class:"f-label",for:"friendly_name"},u0=["placeholder"],d0={class:"node-line"},f0={id:"node-preview"},p0={key:0,class:"field",id:"node-label"},h0={class:"f-label",for:"node-name"},m0={key:1,id:"wifi-fields",class:"wifi"},g0={class:"hint",id:"wifi-status"},v0={key:0,class:"field",id:"wifi-ssid-label"},_0={class:"f-label",for:"wifi_ssid"},y0={key:1,class:"field",id:"wifi-password-label"},b0={class:"f-label",for:"wifi_password"},w0={class:"field"},k0={class:"f-label",for:"install-target"},$0={key:0,value:"usb"},S0=["value"],x0={value:"download"},C0={value:""},E0={id:"target-hint"},T0={key:2,class:"hint",id:"install-note"},A0={class:"actions"},P0=["disabled"],L0={id:"install-status",class:"status-line error",role:"status"},I0={key:1,id:"install-progress",class:"card"},O0={class:"progress-head"},N0={key:0,class:"spin",id:"progress-spin"},M0={id:"progress-title"},R0={id:"progress-detail"},D0={key:0,id:"install-download",class:"card",style:{background:"var(--surface-2)"}},F0=["href","download"],U0={class:"steps",id:"download-steps"},j0={key:1,id:"install-result",class:"field"},H0={class:"key-box"},V0={class:"steps",id:"install-steps"},W0=["open"],B0={id:"install-log",class:"log"},K0={class:"actions"},Y0="https://web.esphome.io/?dashboard_install",q0=Me({__name:"InstallerView",setup(e){const t=Xn({board:"cyd",friendly_name:"",name:"",wifi_ssid:"",wifi_password:"",target:""}),n=Xn({view:"setup",file:null,friendly:"",board:"cyd",target:"",apiKey:null,nodeEdited:!1,jobState:null,picked:!1,action:null}),s=ke(!1),o=ke(null),i=ke(null),r=ke([]),c=ke(""),d=ke(""),h=ke(!1),p=ke(!1),g=ke(null);let v=0;function $(me){return me.toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^[^a-z]+/,"").slice(0,30).replace(/-+$/,"")||"screen"}function U(me){const te=me.replace(/^\/dev\/serial\/by-id\/usb-/,"").replace(/-if\d+(-port\d+)?$/,"").replace(/_/g," ");return`USB · ${te===me?me.replace(/^\/dev\//,""):te}`}Et(()=>t.friendly_name,()=>{n.nodeEdited||(t.name=$(t.friendly_name))});const A=L(()=>t.name||"…"),T=L(()=>o.value?.ports||[]),k=L(()=>o.value?.wifi),S=L(()=>k.value?.state==="new"||k.value?.state==="missing"),F=L(()=>k.value?.missing||[]),x=L(()=>u(k.value?.state==="new"?"editor.installer.wifi.new":"editor.installer.wifi.missing")),j=L(()=>k.value?.state==="ready"?u("editor.installer.wifi.ready"):k.value?.state==="invalid"?u("editor.installer.wifi.invalid"):""),O=L(()=>u(t.target==="usb"?"editor.installer.target.usb":t.target==="download"?"editor.installer.target.download":t.target?T.value.length>1?"editor.installer.target.several":"editor.installer.target.once":"editor.installer.target.later")),C=L(()=>t.target==="download"?u("editor.firmware.build_download"):t.target?u("editor.installer.install"):u("editor.installer.save_profile")),I=L(()=>o.value?.job?.state==="running"&&!(n.file&&o.value.job.file===n.file)),K=L(()=>h.value||k.value?.state==="invalid"||t.target==="usb"||!!t.target&&(I.value||!o.value?.available));function M(){const me=t.target;(me==="download"||me===""?n.picked:T.value.includes(me))||(t.target=T.value[0]||"usb")}async function he(){let me;try{me=await Dt("firmware")}catch(we){c.value=we.message;return}o.value=me;const te=me.job,Ee=te&&n.file&&te.file===n.file;if(Ee&&(n.jobState=te.state),n.view==="setup"){if(Ee&&te.state==="running"){z(te,me.logs||[]);return}M(),c.value=I.value?u("editor.installer.busy",{file:te.file}):!me.available&&t.target?u("editor.installer.no_cli"):j.value}else n.view==="progress"&&Ee&&(i.value=te,r.value=me.logs||[],te.state!=="running"&&te.state!=="success"&&(p.value=!0))}function z(me,te){n.view="progress",n.jobState=me.state,n.action=me.action,i.value=me,r.value=te}const oe=L(()=>i.value?.state==="running"),pe=L(()=>n.view==="done"||i.value?.state==="success"),se=L(()=>n.action==="download"),ce=L(()=>u(n.view==="done"?"editor.installer.title.saved":oe.value?"editor.installer.title.running":pe.value?se.value?"editor.installer.title.ready":"editor.installer.title.done":"editor.installer.title.failed")),ye=L(()=>n.view==="done"?u("editor.installer.progress.saved",{file:n.file}):oe.value?i.value?.stage==="upload"?u("editor.installer.progress.writing",{name:n.friendly}):u("editor.installer.progress.building"):pe.value?se.value?u("editor.installer.progress.ready",{name:n.friendly}):u("editor.installer.progress.installed",{name:n.friendly}):u(se.value?"editor.installer.progress.build_failed":"editor.installer.progress.install_failed")),$e=L(()=>n.view==="done"?u("editor.installer.detail.saved"):oe.value?i.value?.stage==="upload"?u("editor.installer.detail.uploading"):u(se.value?"editor.installer.detail.building_download":"editor.installer.detail.building"):pe.value?se.value?u("editor.installer.detail.downloaded"):u(n.board==="cyd"?"editor.installer.detail.booted_cyd":"editor.installer.detail.booted"):r.value.filter(me=>/error/i.test(me)).pop()||r.value.filter(me=>/failed/i.test(me)).pop()||u("editor.installer.detail.see_log")),Ge=L(()=>({href:`api/firmware/profiles/${encodeURIComponent(n.file||"")}/download`,name:(n.file||"").replace(/\.yaml$/,"")+".factory.bin"}));async function ae(me){const te=me.target;if(n.nodeEdited||(t.name=$(t.friendly_name)),!!te.reportValidity()){h.value=!0,d.value="";try{const Ee={board:t.board,friendly_name:t.friendly_name,name:t.name,target:t.target};S.value&&(F.value.includes("wifi_ssid")&&(Ee.wifi_ssid=t.wifi_ssid),F.value.includes("wifi_password")&&(Ee.wifi_password=t.wifi_password));const we=await ht("firmware/profiles","POST",Ee);Object.assign(n,{file:we.file,apiKey:we.api_key,friendly:t.friendly_name.trim(),board:t.board,target:t.target}),t.wifi_password="",we.job?z(we.job,[]):n.view="done"}catch(Ee){d.value=Ee.message}finally{h.value=!1}}}async function ee(){try{if(!se.value){const{ports:te}=await Dt("firmware");!te.includes(n.target)&&te.length===1&&(n.target=te[0])}const me=await ht("firmware/jobs","POST",se.value?{file:n.file,action:"download"}:{file:n.file,action:"install",target:n.target});z(me,[])}catch(me){Ce(me.message)}}function Y(){Object.assign(n,{view:"setup",file:null,apiKey:null,nodeEdited:!1,jobState:null,target:"",picked:!1,action:null}),Object.assign(t,{board:"cyd",friendly_name:"",name:"",wifi_ssid:"",wifi_password:"",target:""}),s.value=!1,i.value=null,r.value=[],d.value="",c.value="",p.value=!1,he()}function fe(){n.view==="progress"&&n.jobState!=="running"&&(n.view="done"),We("")}return Mn(()=>{he(),v=window.setInterval(he,3e3)}),ms(()=>clearInterval(v)),(me,te)=>{const Ee=Gs("i18n-t");return _(),b("div",Qk,[l("div",Zk,[l("div",e0,[l("span",t0,f(a(u)("editor.nav.new_screen")),1),l("h1",n0,f(n.view==="setup"?a(u)("editor.installer.title.setup"):ce.value),1),n.view==="setup"?(_(),b("p",s0,f(a(u)("editor.installer.intro")),1)):G("",!0)]),l("button",{type:"button",class:"btn quiet",id:"close-install","aria-label":a(u)("editor.common.close"),onClick:fe},f(a(u)("editor.common.back")),9,o0)]),n.view==="setup"?(_(),b("form",{key:0,id:"install-form",class:"card",onSubmit:Lt(ae,["prevent"])},[l("fieldset",null,[l("legend",null,f(a(u)("editor.installer.board")),1),l("div",i0,[l("label",l0,[Pe(l("input",{type:"radio",name:"board",value:"cyd","onUpdate:modelValue":te[0]||(te[0]=we=>t.board=we)},null,512),[[wa,t.board]]),l("span",null,[l("b",null,f(a(u)("editor.installer.board_cyd")),1),te[13]||(te[13]=l("small",null,"ESP32-2432S028 · 320 × 240",-1))])]),l("label",a0,[Pe(l("input",{type:"radio",name:"board",value:"guition","onUpdate:modelValue":te[1]||(te[1]=we=>t.board=we)},null,512),[[wa,t.board]]),l("span",null,[l("b",null,f(a(u)("editor.installer.board_guition")),1),te[14]||(te[14]=l("small",null,"ESP32-S3-4848S040 · 480 × 480 · GT911",-1))])])])]),l("div",r0,[l("label",c0,f(a(u)("editor.installer.name")),1),Pe(l("input",{id:"friendly_name",name:"friendly_name","onUpdate:modelValue":te[2]||(te[2]=we=>t.friendly_name=we),required:"",maxlength:"60",placeholder:a(u)("editor.installer.name_placeholder"),autocomplete:"off"},null,8,u0),[[Qe,t.friendly_name]]),l("small",d0,[Re(f(a(u)("editor.installer.device_name"))+" ",1),l("code",f0,f(A.value),1),l("button",{type:"button",class:"btn link mini",id:"edit-node",onClick:te[3]||(te[3]=we=>{n.nodeEdited=!0,s.value=!0})},f(a(u)("editor.installer.customize")),1)]),l("small",null,f(a(u)("editor.installer.name_hint")),1)]),s.value?(_(),b("div",p0,[l("label",h0,f(a(u)("editor.installer.device_name")),1),Pe(l("input",{id:"node-name",name:"name","onUpdate:modelValue":te[4]||(te[4]=we=>t.name=we),pattern:"[a-z][a-z0-9\\-]{0,29}",maxlength:"30",autocomplete:"off",onInput:te[5]||(te[5]=we=>n.nodeEdited=!0)},null,544),[[Qe,t.name]]),l("small",null,f(a(u)("editor.installer.device_name_hint")),1)])):G("",!0),S.value?(_(),b("fieldset",m0,[l("legend",null,f(a(u)("editor.installer.wifi.title")),1),l("p",g0,f(x.value),1),F.value.includes("wifi_ssid")?(_(),b("div",v0,[l("label",_0,f(a(u)("editor.installer.wifi.ssid")),1),Pe(l("input",{id:"wifi_ssid",name:"wifi_ssid","onUpdate:modelValue":te[6]||(te[6]=we=>t.wifi_ssid=we),autocomplete:"off"},null,512),[[Qe,t.wifi_ssid]])])):G("",!0),F.value.includes("wifi_password")?(_(),b("div",y0,[l("label",b0,f(a(u)("editor.installer.wifi.password")),1),Pe(l("input",{id:"wifi_password",name:"wifi_password",type:"password","onUpdate:modelValue":te[7]||(te[7]=we=>t.wifi_password=we),autocomplete:"new-password"},null,512),[[Qe,t.wifi_password]])])):G("",!0)])):G("",!0),l("div",w0,[l("label",k0,f(a(u)("editor.installer.install_via")),1),Pe(l("select",{id:"install-target",name:"target","onUpdate:modelValue":te[8]||(te[8]=we=>t.target=we),onChange:te[9]||(te[9]=we=>{n.picked=!0,he()})},[T.value.length?G("",!0):(_(),b("option",$0,f(a(u)("editor.firmware.no_board")),1)),(_(!0),b(J,null,ge(T.value,we=>(_(),b("option",{key:we,value:we},f(U(we)),9,S0))),128)),l("option",x0,f(a(u)("editor.firmware.download_target")),1),l("option",C0,f(a(u)("editor.installer.later")),1)],544),[[Yn,t.target]]),l("small",E0,f(O.value),1)]),c.value?(_(),b("p",T0,f(c.value),1)):G("",!0),l("div",A0,[l("button",{type:"submit",class:"btn primary",id:"install-go",disabled:K.value},f(C.value),9,P0),l("span",L0,f(d.value),1)])],32)):(_(),b("div",I0,[l("div",O0,[oe.value?(_(),b("span",N0)):(_(),b("span",{key:1,class:ve(["outcome",pe.value?"ok":"bad"]),id:"progress-mark"},f(pe.value?"✓":"✕"),3)),l("strong",M0,f(ye.value),1)]),l("p",R0,f($e.value),1),pe.value&&se.value&&n.view!=="done"?(_(),b("div",D0,[l("a",{class:"btn primary",id:"download-firmware",href:Ge.value.href,download:Ge.value.name},f(a(u)("editor.firmware.download_file",{name:Ge.value.name})),9,F0),l("ol",U0,[l("li",null,[ne(Ee,{keypath:"editor.installer.download_steps.plug",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.download_steps.plug_bold")),1)]),_:1})]),l("li",null,[ne(Ee,{keypath:"editor.installer.download_steps.open",scope:"global"},{bold:ie(()=>[l("b",null,[ne(Ee,{keypath:"editor.installer.download_steps.open_bold",scope:"global"},{esphome_web:ie(()=>[l("a",{href:Y0,target:"_blank",rel:"noopener"},"ESPHome Web")]),_:1})])]),_:1})]),l("li",null,[ne(Ee,{keypath:n.board==="cyd"?"editor.installer.download_steps.install_cyd":"editor.installer.download_steps.install",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.download_steps.install_bold")),1)]),file:ie(()=>[Re(f(Ge.value.name),1)]),_:1},8,["keypath"])])]),l("small",null,f(a(u)("editor.installer.download_keep")),1)])):G("",!0),pe.value?(_(),b("div",j0,[l("div",H0,[l("span",null,f(a(u)("editor.installer.api_key")),1),l("code",{id:"api-key",ref_key:"keyBox",ref:g},f(n.apiKey||""),513),l("button",{type:"button",class:"btn quiet mini",id:"copy-key",onClick:te[10]||(te[10]=we=>a(Ot)(n.apiKey||"",g.value))},f(a(u)("editor.common.copy")),1)]),l("ol",V0,[l("li",null,[ne(Ee,{keypath:"editor.installer.pairing.ha",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.pairing.ha_bold")),1)]),name:ie(()=>[Re(f(n.friendly),1)]),_:1}),te[15]||(te[15]=Re()),l("button",{type:"button",class:"btn quiet mini",onClick:te[11]||(te[11]=(...we)=>a(Lo)&&a(Lo)(...we))},f(a(u)("editor.common.open_integrations")),1)]),l("li",null,[ne(Ee,{keypath:"editor.installer.pairing.key",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.pairing.key_bold")),1)]),_:1})]),l("li",null,[ne(Ee,{keypath:"editor.installer.pairing.actions",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.pairing.actions_bold")),1)]),_:1})]),l("li",null,[ne(Ee,{keypath:"editor.installer.pairing.tiles",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.installer.pairing.tiles_bold")),1)]),_:1})])])])):G("",!0),n.view!=="done"?(_(),b("details",{key:2,id:"install-log-wrap",class:"log-wrap",open:p.value,onToggle:te[12]||(te[12]=we=>p.value=we.target.open)},[l("summary",null,f(a(u)("editor.installer.log")),1),l("pre",B0,f(r.value.join(` -`)),1)],40,W0)):G("",!0),l("div",K0,[!oe.value&&!pe.value?(_(),b("button",{key:0,type:"button",class:"btn primary",id:"install-retry",onClick:ee},f(a(u)("editor.installer.retry")),1)):G("",!0),l("button",{type:"button",class:"btn quiet",id:"install-close",onClick:Y},f(pe.value?a(u)("editor.installer.another"):a(u)("editor.installer.start_over")),1),l("button",{type:"button",class:ve(["btn",pe.value?"primary":"quiet"]),onClick:fe},f(pe.value?a(u)("editor.installer.done"):a(u)("editor.common.close")),3)])]))])}}}),G0={class:"panel",id:"firmware-dialog"},J0={class:"panel-head"},X0={class:"tx"},z0={class:"eyebrow"},Q0={class:"card"},Z0={class:"card-grid"},e$={class:"field"},t$={class:"f-label",for:"firmware-file"},n$=["value"],s$={class:"field"},o$={class:"f-label",for:"firmware-port"},i$={value:"ota"},l$={key:0,value:"usb"},a$=["value"],r$={value:"download"},c$={key:0,class:"field",id:"firmware-host-label"},u$={class:"f-label",for:"firmware-host"},d$=["placeholder"],f$={class:"actions"},p$=["disabled"],h$=["disabled"],m$=["disabled"],g$={key:0,class:"spin"},v$={id:"firmware-status",class:"status-line",role:"status"},_$={key:0,id:"firmware-download",class:"card",style:{background:"var(--surface-2)"}},y$=["href","download"],b$={id:"firmware-log",class:"log"},w$="https://web.esphome.io/?dashboard_install",k$=Me({__name:"FirmwareView",setup(e){const t=ke(null),n=ke(""),s=ke("ota"),o=ke("");let i=0;async function r(A=!1){try{const T=await Dt("firmware");t.value=T,(A||!n.value)&&(n.value=T.profiles[0]?.file||"");const k=T.ports||[];s.value.startsWith("/")&&!k.includes(s.value)&&(s.value=k[0]||"usb"),s.value==="usb"&&k.length&&(s.value=k[0])}catch(T){Ce(T.message)}}const c=L(()=>t.value?.job?.state==="running"),d=L(()=>!t.value||c.value||!t.value.available||!t.value.profiles?.length),h=L(()=>d.value||s.value==="usb"),p=L(()=>t.value?.ports||[]),g=L(()=>t.value?t.value.available?t.value.job?`${t.value.job.file} · ${t.value.job.action} · ${t.value.job.state}`:u("editor.firmware.choose"):u("editor.firmware.no_cli"):u("editor.common.loading")),v=L(()=>s.value==="download"&&!!n.value&&!!t.value?.downloads?.includes(n.value)),$=L(()=>({href:`api/firmware/profiles/${encodeURIComponent(n.value)}/download`,name:n.value.replace(/\.yaml$/,"")+".factory.bin"}));async function U(A){try{await ht("firmware/jobs","POST",{file:n.value,action:A==="validate"?"validate":A==="build"?"build":s.value==="download"?"download":"install",target:s.value==="ota"?o.value.trim():s.value==="download"?"":s.value}),await r()}catch(T){Ce(T.message)}}return Mn(()=>{r(!0),i=window.setInterval(()=>r(),3e3)}),ms(()=>clearInterval(i)),(A,T)=>{const k=Gs("i18n-t");return _(),b("div",G0,[l("div",J0,[l("div",X0,[l("span",z0,f(a(u)("editor.nav.firmware")),1),l("h1",null,f(a(u)("editor.firmware.title")),1),ne(k,{keypath:"editor.firmware.intro",tag:"p",scope:"global"},{ota:ie(()=>[l("b",null,f(a(u)("editor.firmware.ota")),1)]),download:ie(()=>[l("b",null,f(a(u)("editor.firmware.download")),1)]),check:ie(()=>[l("b",null,f(a(u)("editor.firmware.check")),1)]),build:ie(()=>[l("b",null,f(a(u)("editor.firmware.build")),1)]),install:ie(()=>[l("b",null,f(a(u)("editor.firmware.install")),1)]),_:1})]),l("button",{type:"button",class:"btn quiet",id:"close-firmware",onClick:T[0]||(T[0]=S=>a(We)(""))},f(a(u)("editor.common.back")),1)]),l("div",Q0,[l("div",Z0,[l("div",e$,[l("label",t$,f(a(u)("editor.firmware.profile")),1),Pe(l("select",{id:"firmware-file","onUpdate:modelValue":T[1]||(T[1]=S=>n.value=S)},[(_(!0),b(J,null,ge(t.value?.profiles||[],S=>(_(),b("option",{key:S.file,value:S.file},f(S.file),9,n$))),128))],512),[[Yn,n.value]])]),l("div",s$,[l("label",o$,f(a(u)("editor.firmware.install_to")),1),Pe(l("select",{id:"firmware-port","onUpdate:modelValue":T[2]||(T[2]=S=>s.value=S)},[l("option",i$,f(a(u)("editor.firmware.ota")),1),p.value.length?G("",!0):(_(),b("option",l$,f(a(u)("editor.firmware.no_board")),1)),(_(!0),b(J,null,ge(p.value,S=>(_(),b("option",{key:S,value:S},f(S),9,a$))),128)),l("option",r$,f(a(u)("editor.firmware.download_target")),1)],512),[[Yn,s.value]])]),s.value==="ota"?(_(),b("div",c$,[l("label",u$,f(a(u)("editor.firmware.host")),1),Pe(l("input",{id:"firmware-host","onUpdate:modelValue":T[3]||(T[3]=S=>o.value=S),placeholder:n.value?n.value.replace(/\.yaml$/,".local"):"screen-livingroom.local"},null,8,d$),[[Qe,o.value]])])):G("",!0)]),l("div",f$,[l("button",{type:"button",class:"btn quiet",id:"firmware-validate",disabled:d.value,onClick:T[4]||(T[4]=S=>U("validate"))},f(a(u)("editor.firmware.check")),9,p$),l("button",{type:"button",class:"btn quiet",id:"firmware-build",disabled:d.value,onClick:T[5]||(T[5]=S=>U("build"))},f(a(u)("editor.firmware.build")),9,h$),l("button",{type:"button",class:"btn primary",id:"firmware-install",disabled:h.value,onClick:T[6]||(T[6]=S=>U("install"))},f(s.value==="download"?a(u)("editor.firmware.build_download"):a(u)("editor.firmware.install")),9,m$),c.value?(_(),b("span",g$)):G("",!0)]),l("p",v$,f(g.value),1),v.value?(_(),b("div",_$,[l("a",{class:"btn primary",id:"firmware-download-link",href:$.value.href,download:$.value.name},f(a(u)("editor.firmware.download_file",{name:$.value.name})),9,y$),ne(k,{keypath:"editor.firmware.download_how",tag:"small",scope:"global"},{esphome_web:ie(()=>[l("a",{href:w$,target:"_blank",rel:"noopener"},"ESPHome Web")]),_:1})])):G("",!0)]),l("pre",b$,f((t.value?.logs||[]).join(` -`)),1)])}}}),$$={class:"panel wide alerts",id:"alerts-dialog"},S$={class:"panel-head"},x$={class:"tx"},C$={class:"eyebrow"},E$={key:0,class:"hint"},T$={class:"alert-hero"},A$={class:"alert-mock",id:"alert-mock","aria-hidden":"true"},P$={class:"mdi alert-mock-icon",id:"alert-mock-icon"},L$={id:"alert-mock-title"},I$={id:"alert-mock-subtitle"},O$={class:"fake",id:"alert-mock-button"},N$=["aria-label"],M$=["data-jump","onClick"],R$={id:"alerts-try",class:"card"},D$={class:"field"},F$={class:"f-label",for:"try-screen"},U$={value:"all"},j$=["value","disabled"],H$={class:"field"},V$={class:"f-label",for:"try-title"},W$={class:"field"},B$={class:"f-label",for:"try-subtitle"},K$={class:"field"},Y$={class:"f-label",for:"try-icon"},q$={id:"try-icons"},G$=["value"],J$={class:"field"},X$={class:"f-label",for:"try-color"},z$={value:""},Q$=["value"],Z$={class:"field"},eS={class:"f-label",for:"try-button"},tS={class:"field"},nS={class:"f-label",for:"try-timeout"},sS={class:"check field"},oS={class:"actions field wide"},iS=["disabled"],lS={class:"status-line",id:"try-result",role:"status"},aS={id:"alerts-screens",class:"card"},rS={id:"alerts-min-firmware"},cS={id:"alerts-screen-list",class:"options"},uS={key:0,class:"hint"},dS={class:"alert-screen-head"},fS={class:"copy-label"},pS=["onClick"],hS={id:"alerts-howto",class:"card"},mS={class:"steps"},gS={class:"field"},vS={class:"f-label",for:"alerts-example-screen"},_S=["value"],yS={key:0,value:""},bS={class:"copy-line"},wS={id:"alerts-example"},kS={id:"alerts-all",class:"card"},$S={id:"alerts-all-event"},SS={id:"alerts-all-dismiss"},xS={class:"copy-line"},CS={id:"alerts-all-example"},ES={id:"alerts-fields",class:"card"},TS={class:"table-scroll"},AS={id:"alerts-field-table"},PS={key:0},LS={id:"alerts-icons",class:"card"},IS={class:"subhead"},OS={class:"chips",id:"alerts-suggested"},NS=["onClick"],MS={class:"mdi"},RS={class:"field"},DS={class:"f-label",for:"alerts-icon-search"},FS=["placeholder"],US={id:"alerts-icon-groups"},jS={class:"subhead"},HS={class:"alert-icon-grid"},VS=["title","onClick"],WS={class:"mdi"},BS={key:0},KS={key:0,class:"hint"},YS={id:"alerts-colors",class:"card"},qS={class:"swatches",id:"alerts-swatches"},GS=["onClick"],JS={id:"alerts-behaviour",class:"card"},XS={class:"alerts-list"},zS={id:"alerts-events",class:"card"},QS={id:"alerts-event-name"},ZS={class:"table-scroll"},ex={id:"alerts-ending-table"},tx={class:"subhead"},nx={class:"copy-line"},sx={id:"alerts-wait-example"},ox={id:"alerts-tips",class:"card"},ix={class:"alerts-list"},lx=Me({__name:"AlertsView",setup(e){const t=L(()=>m.inventory.alerts),n=Xn({screen:"all",title:u("editor.alerts.example.title"),subtitle:u("editor.alerts.example.subtitle"),icon:"doorbell",color:"orange",button_text:u("editor.alerts.example.button"),timeout:30,flash:!0}),s=ke(!1),o=ke(""),i=L(()=>m.inventory.screens.filter(C=>Jn(C)&&C.online));async function r(){s.value=!0,o.value="";try{const{screen:C,...I}=n,K=await pg(C,I),M=m.inventory.screens.find(z=>z.id===C)?.name,he=C==="all"?u("editor.alerts.try.sent_all",K.sent):M?u("editor.alerts.try.sent_to",{name:M}):u("editor.alerts.try.sent_one");o.value=K.sent?[he,K.skipped?u("editor.alerts.try.skipped",K.skipped):"",K.unusable?.length?u("editor.alerts.try.left_empty",{fields:K.unusable.join(", ")}):""].filter(Boolean).join(" "):u("editor.alerts.try.nothing",{version:t.value?.min_firmware||"0.2.31"})}catch(C){o.value=C.message}finally{s.value=!1}}const c=L(()=>m.inventory.icons),d=ke(""),h=ke(""),p=C=>`"${String(C).replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`,g=C=>C.type==="string"?/^[a-z][a-z0-9-]*$/.test(C.example)?C.example:p(C.example):C.example===!0?"true":C.example===!1?"false":String(C.example),v=L(()=>m.inventory.screens.filter(C=>C.alert_action)),$=L(()=>d.value||v.value[0]?.alert_action||""),U=L(()=>{const C=(t.value?.fields||[]).map(I=>` ${I.name}: ${g(I)}`);return`action: ${$.value||"esphome._show_alert"} -data: -${C.join(` -`)}`}),A=L(()=>["# Doorbell: show the alert and wait until someone presses the button.","actions:",` - action: ${$.value||"esphome._show_alert"}`," data:",' title: "Someone is at the door"',' subtitle: "Door 3, back"'," icon: doorbell"," color: orange",' button_text: "Coming"'," timeout: 0"," flash: true"," - wait_for_trigger:"," - trigger: event",` event_type: ${t.value?.event||"esphome.screen_alert"}`," event_data:"," action: ok",' timeout: "00:05:00"'," - if:"," - condition: template",' value_template: "{{ wait.trigger is not none }}"'," then:"," - action: notify.notify"," data:",' message: "Someone is coming to the door."'].join(` -`)),T=L(()=>{const C=(t.value?.fields||[]).map(K=>` ${K.name}: ${g(K)}`),I=t.value?.camera;return I&&C.push(` # ${I.name}: ${I.example} # a Guition shows its picture on the card`),`event: ${t.value?.broadcast?.show||"esp_screens_show_alert"} -event_data: -${C.join(` -`)}`}),k=L(()=>{if(!t.value||!c.value)return[];const C=h.value.trim().toLowerCase();return[...c.value.groups,{label:u("editor.alerts.icons.extra"),icons:t.value.extra_icons}].map(K=>({label:K.label,icons:K.icons.filter(M=>!C||M.name.includes(C)||(M.label||"").toLowerCase().includes(C))})).filter(K=>K.icons.length)}),S=L(()=>t.value?.suggested_icons?.find(C=>C.name==="doorbell")),F=L(()=>t.value?.colors?.find(C=>C.name==="orange")),x=C=>["string","int","bool"].includes(C)?u(`editor.alerts.fields.types.${C}`):C;function j(C){document.getElementById(C)?.scrollIntoView({behavior:"smooth",block:"start"})}const O=["alerts-try","alerts-screens","alerts-howto","alerts-all","alerts-fields","alerts-icons","alerts-colors","alerts-behaviour","alerts-events","alerts-tips"];return(C,I)=>{const K=Gs("i18n-t");return _(),b("div",$$,[l("div",S$,[l("div",x$,[l("span",C$,f(a(u)("editor.alerts.eyebrow")),1),l("h1",null,f(a(u)("editor.alerts.title")),1),ne(K,{keypath:"editor.alerts.intro",tag:"p",scope:"global"},{action:ie(()=>[...I[15]||(I[15]=[l("code",null,"show_alert",-1)])]),_:1})]),l("button",{type:"button",class:"btn quiet",id:"close-alerts",onClick:I[0]||(I[0]=M=>a(We)(""))},f(a(u)("editor.common.back")),1)]),t.value?(_(),b(J,{key:1},[l("div",T$,[l("div",A$,[l("div",{class:"alert-mock-card",style:He(F.value?{background:F.value.color}:void 0)},[l("span",P$,f(S.value?a(Le)(S.value.cp):""),1),l("strong",L$,f(a(u)("editor.alerts.example.title")),1),l("span",I$,f(a(u)("editor.alerts.example.subtitle")),1),l("span",O$,f(a(u)("editor.alerts.example.button")),1)],4)]),l("nav",{class:"alerts-nav","aria-label":a(u)("editor.alerts.sections")},[(_(),b(J,null,ge(O,M=>l("button",{key:M,type:"button","data-jump":M,onClick:he=>j(M)},f(a(u)(`editor.alerts.nav.${M.slice(7)}`)),9,M$)),64))],8,N$)]),l("section",R$,[l("h2",null,f(a(u)("editor.alerts.nav.try")),1),l("p",null,f(a(u)("editor.alerts.try.text")),1),l("form",{class:"try-grid",onSubmit:Lt(r,["prevent"])},[l("div",D$,[l("label",F$,f(a(u)("editor.alerts.try.screen")),1),Pe(l("select",{id:"try-screen","onUpdate:modelValue":I[1]||(I[1]=M=>n.screen=M)},[l("option",U$,f(a(u)("editor.alerts.try.all",{ready:i.value.length})),1),(_(!0),b(J,null,ge(a(m).inventory.screens,M=>(_(),b("option",{key:M.id,value:M.id,disabled:!a(Jn)(M)||!M.online},f(a(Jn)(M)&&M.online?M.name:a(u)("editor.alerts.try.not_ready",{name:M.name})),9,j$))),128))],512),[[Yn,n.screen]])]),l("div",H$,[l("label",V$,f(a(u)("editor.alerts.try.title")),1),Pe(l("input",{id:"try-title","onUpdate:modelValue":I[2]||(I[2]=M=>n.title=M),maxlength:"64"},null,512),[[Qe,n.title]])]),l("div",W$,[l("label",B$,f(a(u)("editor.alerts.try.subtitle")),1),Pe(l("input",{id:"try-subtitle","onUpdate:modelValue":I[3]||(I[3]=M=>n.subtitle=M),maxlength:"240"},null,512),[[Qe,n.subtitle]])]),l("div",K$,[l("label",Y$,f(a(u)("editor.alerts.try.icon")),1),Pe(l("input",{id:"try-icon","onUpdate:modelValue":I[4]||(I[4]=M=>n.icon=M),list:"try-icons",placeholder:"doorbell"},null,512),[[Qe,n.icon]]),l("datalist",q$,[(_(!0),b(J,null,ge(t.value.suggested_icons,M=>(_(),b("option",{key:M.name,value:M.name},f(M.label||M.name),9,G$))),128))])]),l("div",J$,[l("label",X$,f(a(u)("editor.alerts.try.color")),1),Pe(l("select",{id:"try-color","onUpdate:modelValue":I[5]||(I[5]=M=>n.color=M)},[l("option",z$,f(a(u)("editor.alerts.white")),1),(_(!0),b(J,null,ge(t.value.colors,M=>(_(),b("option",{key:M.name,value:M.name},f(M.label),9,Q$))),128))],512),[[Yn,n.color]])]),l("div",Z$,[l("label",eS,f(a(u)("editor.alerts.try.button")),1),Pe(l("input",{id:"try-button","onUpdate:modelValue":I[6]||(I[6]=M=>n.button_text=M),maxlength:"16"},null,512),[[Qe,n.button_text]])]),l("div",tS,[l("label",nS,f(a(u)("editor.alerts.try.timeout")),1),Pe(l("input",{id:"try-timeout","onUpdate:modelValue":I[7]||(I[7]=M=>n.timeout=M),type:"number",min:"0",max:"86400"},null,512),[[Qe,n.timeout,void 0,{number:!0}]])]),l("label",sS,[Pe(l("input",{type:"checkbox",id:"try-flash","onUpdate:modelValue":I[8]||(I[8]=M=>n.flash=M)},null,512),[[fp,n.flash]]),l("span",null,[Re(f(a(u)("editor.alerts.try.flash")),1),l("small",null,f(a(u)("editor.alerts.try.flash_hint")),1)])]),l("div",oS,[l("button",{type:"submit",class:"btn primary",id:"try-send",disabled:s.value||!i.value.length},f(s.value?a(u)("editor.alerts.try.sending"):a(u)("editor.alerts.try.send")),9,iS),l("span",lS,f(o.value),1)])],32)]),l("section",aS,[l("h2",null,f(a(u)("editor.alerts.nav.screens")),1),ne(K,{keypath:"editor.alerts.screens.text",tag:"p",scope:"global"},{version:ie(()=>[l("code",rS,f(t.value.min_firmware),1)]),_:1}),l("div",cS,[a(m).inventory.screens.length?G("",!0):(_(),b("p",uS,f(a(u)("editor.alerts.screens.none")),1)),(_(!0),b(J,null,ge(a(m).inventory.screens,M=>(_(),b("div",{key:M.id,class:"alert-screen"},[l("div",dS,[l("strong",null,f(M.name),1),l("span",{class:ve(["chip",a(gn)(a(fs)(M),t.value.min_firmware)&&M.alert_action?"good":"update"])},f(a(gn)(a(fs)(M),t.value.min_firmware)&&M.alert_action?a(u)("editor.alerts.screens.ready",{version:M.firmware}):M.alert_action?a(u)("editor.alerts.screens.update",{version:M.firmware||a(u)("editor.common.unknown")}):a(u)("editor.alerts.screens.unknown")),3)]),(_(!0),b(J,null,ge([[a(u)("editor.alerts.screens.show"),M.alert_action],[a(u)("editor.alerts.screens.dismiss"),M.dismiss_action]],([he,z])=>(_(),b("div",{key:he,class:"copy-line"},[l("span",fS,f(he),1),l("code",null,f(z||"esphome._show_alert"),1),z?(_(),b("button",{key:0,type:"button",class:"btn quiet mini",onClick:oe=>a(Ot)(z,void 0,"action_name")},f(a(u)("editor.common.copy")),9,pS)):G("",!0)]))),128))]))),128))])]),l("section",hS,[l("h2",null,f(a(u)("editor.alerts.nav.howto")),1),l("ol",mS,[ne(K,{keypath:"editor.alerts.howto.add",tag:"li",scope:"global"},{add:ie(()=>[l("b",null,f(a(u)("editor.alerts.howto.add_bold")),1)]),esphome:ie(()=>[...I[16]||(I[16]=[l("b",null,"ESPHome",-1)])]),device:ie(()=>[l("i",null,f(a(u)("editor.alerts.howto.device")),1)]),_:1}),ne(K,{keypath:"editor.alerts.howto.fields",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.howto.fields_bold")),1)]),empty:ie(()=>[...I[17]||(I[17]=[l("code",null,'""',-1)])]),zero:ie(()=>[...I[18]||(I[18]=[l("code",null,"0",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.howto.yaml",tag:"li",scope:"global"},{edit:ie(()=>[l("b",null,f(a(u)("editor.alerts.edit_yaml")),1)]),_:1})]),l("div",gS,[l("label",vS,f(a(u)("editor.alerts.howto.example_for")),1),Pe(l("select",{id:"alerts-example-screen","onUpdate:modelValue":I[9]||(I[9]=M=>d.value=M),style:{"max-width":"360px"}},[(_(!0),b(J,null,ge(v.value,M=>(_(),b("option",{key:M.id,value:M.alert_action},f(M.name),9,_S))),128)),v.value.length?G("",!0):(_(),b("option",yS,f(a(u)("editor.alerts.howto.no_screen")),1))],512),[[Yn,d.value]])]),l("div",bS,[l("pre",wS,f(U.value),1),l("button",{type:"button",class:"btn quiet mini",id:"alerts-example-copy",onClick:I[10]||(I[10]=M=>a(Ot)(U.value,void 0,"yaml"))},f(a(u)("editor.alerts.copy_yaml")),1)])]),l("section",kS,[l("h2",null,f(a(u)("editor.alerts.all.title")),1),ne(K,{keypath:"editor.alerts.all.text",tag:"p",scope:"global"},{show:ie(()=>[l("code",$S,f(t.value.broadcast?.show||"esp_screens_show_alert"),1)]),dismiss:ie(()=>[l("code",SS,f(t.value.broadcast?.dismiss||"esp_screens_dismiss_alert"),1)]),event:ie(()=>[l("b",null,f(a(u)("editor.alerts.all.event")),1)]),edit:ie(()=>[l("b",null,f(a(u)("editor.alerts.edit_yaml")),1)]),_:1}),l("div",xS,[l("pre",CS,f(T.value),1),l("button",{type:"button",class:"btn quiet mini",id:"alerts-all-copy",onClick:I[11]||(I[11]=M=>a(Ot)(T.value,void 0,"yaml"))},f(a(u)("editor.alerts.copy_yaml")),1)])]),l("section",ES,[l("h2",null,f(a(u)("editor.alerts.nav.fields")),1),l("p",null,f(a(u)("editor.alerts.fields.text")),1),l("div",TS,[l("table",AS,[l("tr",null,[l("th",null,f(a(u)("editor.alerts.fields.field")),1),l("th",null,f(a(u)("editor.alerts.fields.type")),1),l("th",null,f(a(u)("editor.alerts.fields.what")),1),l("th",null,f(a(u)("editor.alerts.fields.example")),1),l("th",null,f(a(u)("editor.alerts.fields.limit")),1)]),(_(!0),b(J,null,ge(t.value.fields,M=>(_(),b("tr",{key:M.name},[l("td",null,[l("code",null,f(M.name),1),l("small",null,f(M.label),1)]),l("td",null,f(x(M.type)),1),l("td",null,f(M.help),1),l("td",null,[l("code",null,f(typeof M.example=="string"?M.example:String(M.example)),1)]),l("td",null,f(t.value.limits.cyd[M.name]?a(u)("editor.alerts.fields.bytes",{cyd:t.value.limits.cyd[M.name],guition:t.value.limits.guition[M.name]}):M.type==="int"?a(u)("editor.alerts.fields.seconds"):"—"),1)]))),128)),t.value.camera?(_(),b("tr",PS,[l("td",null,[l("code",null,f(t.value.camera.name),1),l("small",null,f(t.value.camera.label),1)]),l("td",null,f(a(u)("editor.alerts.fields.types.entity")),1),l("td",null,f(t.value.camera.help),1),l("td",null,[l("code",null,f(t.value.camera.example),1)]),l("td",null,f(a(u)("editor.alerts.fields.camera_limit")),1)])):G("",!0)])])]),l("section",LS,[l("h2",null,f(a(u)("editor.alerts.nav.icons")),1),ne(K,{keypath:"editor.alerts.icons.text",tag:"p",scope:"global"},{field:ie(()=>[...I[19]||(I[19]=[l("code",null,"icon",-1)])]),example:ie(()=>[...I[20]||(I[20]=[l("code",null,"doorbell",-1)])]),mdi:ie(()=>[...I[21]||(I[21]=[l("code",null,"mdi:doorbell",-1)])]),hex:ie(()=>[...I[22]||(I[22]=[l("code",null,"F12E6",-1)])]),_:1}),l("p",IS,f(a(u)("editor.alerts.icons.handy")),1),l("div",OS,[(_(!0),b(J,null,ge(t.value.suggested_icons,M=>(_(),b("button",{key:M.name,type:"button",class:"chip",onClick:he=>a(Ot)(M.name,void 0,"icon_name")},[l("span",MS,f(a(Le)(M.cp)),1),l("code",null,f(M.name),1)],8,NS))),128))]),l("div",RS,[l("label",DS,f(a(u)("editor.alerts.icons.search_label")),1),Pe(l("input",{id:"alerts-icon-search","onUpdate:modelValue":I[12]||(I[12]=M=>h.value=M),type:"search",placeholder:a(u)("editor.alerts.icons.search"),autocomplete:"off"},null,8,FS),[[Qe,h.value]])]),l("div",US,[(_(!0),b(J,null,ge(k.value,M=>(_(),b("div",{key:M.label,class:"field"},[l("p",jS,f(M.label)+" · "+f(M.icons.length),1),l("div",HS,[(_(!0),b(J,null,ge(M.icons,he=>(_(),b("button",{key:he.name,type:"button",class:"alert-icon",title:a(u)("editor.alerts.icons.copy",{name:he.name}),onClick:z=>a(Ot)(he.name,void 0,"icon_name")},[l("span",WS,f(a(Le)(he.cp)),1),l("code",null,f(he.name),1),he.label?(_(),b("small",BS,f(he.label),1)):G("",!0)],8,VS))),128))])]))),128)),k.value.length?G("",!0):(_(),b("p",KS,f(a(u)("editor.alerts.icons.none",{query:h.value,fallback:t.value.fallback_icon})),1))])]),l("section",YS,[l("h2",null,f(a(u)("editor.alerts.nav.colors")),1),ne(K,{keypath:"editor.alerts.colors.text",tag:"p",scope:"global"},{field:ie(()=>[...I[23]||(I[23]=[l("code",null,"color",-1)])]),_:1}),l("div",qS,[l("button",{type:"button",class:"swatch",onClick:I[13]||(I[13]=M=>a(Ot)("",void 0,"empty_color"))},[I[25]||(I[25]=l("i",{style:{background:"#ffffff"}},null,-1)),l("span",null,[I[24]||(I[24]=l("code",null,"empty",-1)),l("small",null,f(a(u)("editor.alerts.white")),1)])]),(_(!0),b(J,null,ge(t.value.colors,M=>(_(),b("button",{key:M.name,type:"button",class:"swatch",onClick:he=>a(Ot)(M.name,void 0,"color_name")},[l("i",{style:He({background:M.color})},null,4),l("span",null,[l("code",null,f(M.name),1),l("small",null,f(M.label)+" · "+f(M.color),1)])],8,GS))),128))])]),l("section",JS,[l("h2",null,f(a(u)("editor.alerts.nav.behaviour")),1),l("ul",XS,[ne(K,{keypath:"editor.alerts.behaviour.wakes",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.wakes_bold")),1)]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.on",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.on_bold")),1)]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.timeout",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.timeout_bold")),1)]),zero:ie(()=>[...I[26]||(I[26]=[l("code",null,"timeout: 0",-1)])]),minute:ie(()=>[...I[27]||(I[27]=[l("code",null,"timeout: 60",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.blinking",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.blinking_bold")),1)]),flash:ie(()=>[...I[28]||(I[28]=[l("code",null,"flash: true",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.replacing",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.replacing_bold")),1)]),replaced:ie(()=>[...I[29]||(I[29]=[l("code",null,"replaced",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.closing",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.closing_bold")),1)]),dismiss:ie(()=>[...I[30]||(I[30]=[l("code",null,"dismiss_alert",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.behaviour.beside",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.behaviour.beside_bold")),1)]),_:1})])]),l("section",zS,[l("h2",null,f(a(u)("editor.alerts.nav.events")),1),ne(K,{keypath:"editor.alerts.events.text",tag:"p",scope:"global"},{event:ie(()=>[l("code",QS,f(t.value.event),1)]),action:ie(()=>[...I[31]||(I[31]=[l("code",null,"action",-1)])]),title:ie(()=>[...I[32]||(I[32]=[l("code",null,"title",-1)])]),screen:ie(()=>[...I[33]||(I[33]=[l("code",null,"screen",-1)])]),device_id:ie(()=>[...I[34]||(I[34]=[l("code",null,"device_id",-1)])]),_:1}),l("div",ZS,[l("table",ex,[l("tr",null,[I[35]||(I[35]=l("th",null,"action",-1)),l("th",null,f(a(u)("editor.alerts.events.when")),1)]),(_(!0),b(J,null,ge(t.value.endings,M=>(_(),b("tr",{key:M.action},[l("td",null,[l("code",null,f(M.action),1)]),l("td",null,f(M.label),1)]))),128))])]),l("p",tx,f(a(u)("editor.alerts.events.wait")),1),l("div",nx,[l("pre",sx,f(A.value),1),l("button",{type:"button",class:"btn quiet mini",id:"alerts-wait-copy",onClick:I[14]||(I[14]=M=>a(Ot)(A.value,void 0,"yaml"))},f(a(u)("editor.alerts.copy_yaml")),1)])]),l("section",ox,[l("h2",null,f(a(u)("editor.alerts.nav.tips")),1),l("ul",ix,[ne(K,{keypath:"editor.alerts.tips.color",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.tips.color_bold")),1)]),_:1}),ne(K,{keypath:"editor.alerts.tips.short",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.tips.short_bold")),1)]),_:1}),ne(K,{keypath:"editor.alerts.tips.button",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.tips.button_bold")),1)]),_:1}),ne(K,{keypath:"editor.alerts.tips.resolve",tag:"li",scope:"global"},{dismiss:ie(()=>[...I[36]||(I[36]=[l("code",null,"dismiss_alert",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.tips.every",tag:"li",scope:"global"},{event:ie(()=>[l("code",null,f(t.value.broadcast?.show||"esp_screens_show_alert"),1)]),screen:ie(()=>[...I[37]||(I[37]=[l("code",null,"screen",-1)])]),_:1}),ne(K,{keypath:"editor.alerts.tips.claude",tag:"li",scope:"global"},{bold:ie(()=>[l("b",null,f(a(u)("editor.alerts.tips.claude_bold")),1)]),_:1})])])],64)):(_(),b("p",E$,f(a(u)("editor.alerts.loading")),1))])}}}),ax={class:"panel",id:"override-dialog"},rx={class:"panel-head"},cx={class:"tx"},ux={class:"eyebrow"},dx={id:"override-title"},fx={class:"notice"},px={class:"mdi"},hx={class:"file-row"},mx={id:"override-file"},gx={class:"yaml-editor",id:"yaml-editor-wrap"},vx=["aria-label"],_x={class:"actions"},yx={id:"override-count",class:"hint"},bx={class:"actions"},wx=["disabled"],kx=["disabled"],$x=`# Hardware-specific changes for this screen. -# This file is kept when the shared firmware package updates. -# Do not add esphome:, api:, ota:, wifi: or packages: here. - -# Example: a CYD with the ST7789V display controller. -# "!extend" changes the display the shared package already defines; -# a bare id would add a second, incomplete display and fail the build. -display: - - id: !extend my_display - model: ST7789V -`,Sx=Me({__name:"OverrideView",setup(e){const t=L(()=>m.overrideProfile),n=ke(""),s=ke(""),o=ke(!1),i=ke(u("editor.common.loading")),r=ke(""),c=ke(!1),d=ke(null),h=ke(null),p=L(()=>n.value.split(` -`).length),g=L(()=>Array.from({length:p.value},(O,C)=>C+1).join(` -`)),v=L(()=>`${u("editor.override.characters",n.value.length)} · ${u("editor.override.lines",p.value)}`);let $=!0;function U(O,C=""){i.value=O,r.value=C}async function A(){if(!t.value){U(u("editor.override.no_profile"),"error");return}U(u("editor.common.loading"));try{const O=await Dt(`firmware/profiles/${encodeURIComponent(t.value)}/override`);s.value=O.override_file,o.value=!!O.attached,n.value=O.exists&&O.content!==`{} -`?O.content:"",U(u(O.attached?"editor.override.attached":"editor.override.not_attached"))}catch(O){U(O.message,"error")}}async function T(O=!1){if(!(!t.value||c.value)){c.value=!0,U(u("editor.override.saving"));try{const C=await ht(`firmware/profiles/${encodeURIComponent(t.value)}/override`,"PUT",{content:n.value});if(s.value=C.override_file,o.value=!0,!O){U(u("editor.override.saved"),"ok"),Ce(u("editor.override.saved_toast"));return}U(u("editor.override.checking")),await ht("firmware/jobs","POST",{file:t.value,action:"validate"}),k()}catch(C){U(C.message,"error")}finally{c.value=!1}}}function k(){const O=Date.now(),C=t.value,I=async()=>{if(!(!$||t.value!==C))try{const K=await Dt("firmware"),M=K.job;if(M&&M.file===C&&M.state==="running")U(M.stage?u("editor.override.checking_stage",{stage:M.stage}):u("editor.override.checking_profile"));else if(M&&M.file===C&&M.state==="success"){U(u("editor.override.valid"),"ok");return}else if(M&&M.file===C&&M.state==="failed"){const he=(K.logs||[]).filter(z=>/error|failed/i.test(z)).pop();U(he||u("editor.override.rejected"),"error");return}Date.now()-O<72e5&&setTimeout(I,1200)}catch(K){U(K.message,"error")}};I()}function S(){(!n.value.trim()||confirm(u("editor.override.confirm_example")))&&(n.value=$x,U(u("editor.override.example_loaded")),d.value?.focus())}function F(){(!n.value.trim()||confirm(u("editor.override.confirm_clear")))&&(n.value="",U(u("editor.override.cleared")),d.value?.focus())}function x(O){const C=d.value;if(O.key==="Tab"){O.preventDefault();const I=C.selectionStart,K=C.selectionEnd;C.setRangeText(" ",I,K,"end"),n.value=C.value}else(O.ctrlKey||O.metaKey)&&O.key.toLowerCase()==="s"&&(O.preventDefault(),T(!1))}function j(){h.value&&d.value&&(h.value.scrollTop=d.value.scrollTop)}return Mn(A),ms(()=>{$=!1}),(O,C)=>(_(),b("div",ax,[l("div",rx,[l("div",cx,[l("span",ux,f(a(u)("editor.override.eyebrow")),1),l("h1",dx,f(a(m).overrideFriendly?a(u)("editor.override.title_named",{name:a(m).overrideFriendly}):a(u)("editor.override.title")),1),l("p",null,f(a(u)("editor.override.intro")),1)]),l("button",{type:"button",class:"btn quiet",id:"close-override",onClick:C[0]||(C[0]=I=>a(We)(""))},f(a(u)("editor.common.back")),1)]),l("div",fx,[l("span",px,f(a(Le)("F0493")),1),l("div",null,[l("strong",null,f(a(u)("editor.override.safe_title")),1),l("span",null,f(a(u)("editor.override.safe_text")),1)])]),l("div",hx,[l("code",mx,f(s.value||t.value||""),1),l("span",{id:"override-state",class:ve(["chip",{good:o.value}])},f(o.value?a(u)("editor.override.active"):a(u)("editor.override.ready")),3)]),l("div",gx,[l("div",{ref_key:"gutter",ref:h,class:"yaml-gutter",id:"override-gutter","aria-hidden":"true"},f(g.value),513),Pe(l("textarea",{ref_key:"editor",ref:d,id:"override-editor","onUpdate:modelValue":C[1]||(C[1]=I=>n.value=I),spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off","aria-label":a(u)("editor.override.editor_label"),placeholder:`# Example -display: - - id: !extend my_display - model: ST7789V`,onKeydown:x,onScroll:j},null,40,vx),[[Qe,n.value]])]),l("div",_x,[l("button",{type:"button",class:"btn quiet mini",id:"override-example",onClick:S},f(a(u)("editor.override.use_example")),1),l("button",{type:"button",class:"btn quiet mini",id:"override-empty",onClick:F},f(a(u)("editor.override.clear")),1),l("span",yx,f(v.value),1)]),l("p",{id:"override-status",class:ve(["status-line",r.value]),role:"status"},f(i.value),3),l("div",bx,[l("button",{type:"button",class:"btn quiet",id:"override-check",disabled:c.value||!t.value,onClick:C[2]||(C[2]=I=>T(!0))},f(a(u)("editor.override.save_check")),9,wx),l("button",{type:"button",class:"btn primary",id:"override-save",disabled:c.value||!t.value,onClick:C[3]||(C[3]=I=>T(!1))},f(a(u)("editor.override.save")),9,kx)])]))}}),xx={class:"main"},Cx=Me({__name:"App",setup(e){const t=L(()=>St.value==="#settings"?zk:St.value==="#new-screen"?q0:St.value==="#firmware"?k$:St.value==="#alerts"?lx:St.value==="#override"?Sx:wt.value&&m.layout?Zw:nk);function n(s){(s.metaKey||s.ctrlKey)&&s.key.toLowerCase()==="k"&&(s.preventDefault(),m.palette=!m.palette)}return Mn(()=>document.addEventListener("keydown",n)),ms(()=>document.removeEventListener("keydown",n)),(s,o)=>(_(),b("div",{class:ve(["app",{dragging:a(m).drag.active}])},[ne(hv),l("main",xx,[(_(),at(nf(t.value)))]),ne(gv),ne(Tv)],2))}});Nm().finally(()=>{yp(Cx).use(ds).mount("#app"),Ig()}); diff --git a/screen_manager/app/static/assets/index-Ci37AxLI.js b/screen_manager/app/static/assets/index-Ci37AxLI.js new file mode 100644 index 0000000..c1d05f5 --- /dev/null +++ b/screen_manager/app/static/assets/index-Ci37AxLI.js @@ -0,0 +1,28 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const l of i)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(i){const l={};return i.integrity&&(l.integrity=i.integrity),i.referrerPolicy&&(l.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?l.credentials="include":i.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(i){if(i.ep)return;i.ep=!0;const l=n(i);fetch(i.href,l)}})();function Go(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Ne={},Nn=[],Wt=()=>{},pr=()=>!1,Ti=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ei=e=>e.startsWith("onUpdate:"),tt=Object.assign,Jo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Nu=Object.prototype.hasOwnProperty,Ee=(e,t)=>Nu.call(e,t),pe=Array.isArray,gn=e=>Us(e)==="[object Map]",sn=e=>Us(e)==="[object Set]",Il=e=>Us(e)==="[object Date]",_e=e=>typeof e=="function",Be=e=>typeof e=="string",Kt=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",hr=e=>(Oe(e)||_e(e))&&_e(e.then)&&_e(e.catch),mr=Object.prototype.toString,Us=e=>mr.call(e),Fu=e=>Us(e).slice(8,-1),br=e=>Us(e)==="[object Object]",Xo=e=>Be(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,gs=Go(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ai=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Du=/-\w/g,ct=Ai(e=>e.replace(Du,t=>t.slice(1).toUpperCase())),Uu=/\B([A-Z])/g,Cn=Ai(e=>e.replace(Uu,"-$1").toLowerCase()),Pi=Ai(e=>e.charAt(0).toUpperCase()+e.slice(1)),zi=Ai(e=>e?`on${Pi(e)}`:""),Vt=(e,t)=>!Object.is(e,t),ni=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Oi=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ll;const Ii=()=>Ll||(Ll=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function je(e){if(pe(e)){const t={};for(let n=0;nn.startsWith("/*")?"":n).split(ju).forEach(n=>{if(n){const s=n.split(Hu);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function me(e){let t="";if(Be(e))t=e;else if(pe(e))for(let n=0;nLt(n,t))}const _r=e=>!!(e&&e.__v_isRef===!0),d=e=>Be(e)?e:e==null?"":pe(e)||Oe(e)&&(e.toString===mr||!_e(e.toString))?_r(e)?d(e.value):JSON.stringify(e,yr,2):String(e),yr=(e,t)=>_r(t)?yr(e,t.value):gn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,i],l)=>(n[Yi(s,l)+" =>"]=i,n),{})}:sn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Yi(n))}:Kt(t)?Yi(t):Oe(t)&&!pe(t)&&!br(t)?String(t):t,Yi=(e,t="")=>{var n;return Kt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Je;class wr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Je&&(Je.active?(this.parent=Je,this.index=(Je.scopes||(Je.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t0&&--this._on===0){if(Je===this)Je=this.prevScope;else{let t=Je;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(ys){let t=ys;for(ys=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;_s;){let t=_s;for(_s=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Cr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Tr(e){let t,n=e.depsTail,s=n;for(;s;){const i=s.prevDep;s.version===-1?(s===n&&(n=i),tl(s),Ju(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=i}e.deps=t,e.depsTail=n}function go(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Er(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Er(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ss)||(e.globalVersion=Ss,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!go(e))))return;e.flags|=2;const t=e.dep,n=Fe,s=It;Fe=e,It=!0;try{Cr(e);const i=e.fn(e._value);(t.version===0||Vt(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{Fe=n,It=s,Tr(e),e.flags&=-3}}function tl(e,t=!1){const{dep:n,prevSub:s,nextSub:i}=e;if(s&&(s.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let l=n.computed.deps;l;l=l.nextDep)tl(l,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ju(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let It=!0;const Ar=[];function on(){Ar.push(It),It=!1}function ln(){const e=Ar.pop();It=e===void 0?!0:e}function Nl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Fe;Fe=void 0;try{t()}finally{Fe=n}}}let Ss=0;class Xu{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class nl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Fe||!It||Fe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Fe)n=this.activeLink=new Xu(Fe,this),Fe.deps?(n.prevDep=Fe.depsTail,Fe.depsTail.nextDep=n,Fe.depsTail=n):Fe.deps=Fe.depsTail=n,Pr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Fe.depsTail,n.nextDep=void 0,Fe.depsTail.nextDep=n,Fe.depsTail=n,Fe.deps===n&&(Fe.deps=s)}return n}trigger(t){this.version++,Ss++,this.notify(t)}notify(t){Qo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{el()}}}function Pr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Pr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const _o=new WeakMap,Dn=Symbol(""),yo=Symbol(""),Cs=Symbol("");function nt(e,t,n){if(It&&Fe){let s=_o.get(e);s||_o.set(e,s=new Map);let i=s.get(n);i||(s.set(n,i=new nl),i.map=s,i.key=n),i.track()}}function Xt(e,t,n,s,i,l){const r=_o.get(e);if(!r){Ss++;return}const u=f=>{f&&f.trigger()};if(Qo(),t==="clear")r.forEach(u);else{const f=pe(e),h=f&&Xo(n);if(f&&n==="length"){const p=Number(s);r.forEach((b,v)=>{(v==="length"||v===Cs||!Kt(v)&&v>=p)&&u(b)})}else switch((n!==void 0||r.has(void 0))&&u(r.get(n)),h&&u(r.get(Cs)),t){case"add":f?h&&u(r.get("length")):(u(r.get(Dn)),gn(e)&&u(r.get(yo)));break;case"delete":f||(u(r.get(Dn)),gn(e)&&u(r.get(yo)));break;case"set":gn(e)&&u(r.get(Dn));break}}el()}function zn(e){const t=xe(e);return t===e||(nt(t,"iterate",Cs),xt(e))?t:qt(e)?_n(e)?t.map(n=>wn(Et(n))):t.map(wn):t.map(Et)}function Li(e){return nt(e=xe(e),"iterate",Cs),e}function jt(e,t){return qt(e)?wn(_n(e)?Et(t):t):Et(t)}const Zu={__proto__:null,[Symbol.iterator](){return Ji(this,Symbol.iterator,e=>jt(this,e))},concat(...e){return zn(this).concat(...e.map(t=>pe(t)?zn(t):t))},entries(){return Ji(this,"entries",e=>(e[1]=jt(this,e[1]),e))},every(e,t){return zt(this,"every",e,t,void 0,arguments)},filter(e,t){return zt(this,"filter",e,t,n=>n.map(s=>jt(this,s)),arguments)},find(e,t){return zt(this,"find",e,t,n=>jt(this,n),arguments)},findIndex(e,t){return zt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return zt(this,"findLast",e,t,n=>jt(this,n),arguments)},findLastIndex(e,t){return zt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return zt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Xi(this,"includes",e)},indexOf(...e){return Xi(this,"indexOf",e)},join(e){return zn(this).join(e)},lastIndexOf(...e){return Xi(this,"lastIndexOf",e)},map(e,t){return zt(this,"map",e,t,void 0,arguments)},pop(){return cs(this,"pop")},push(...e){return cs(this,"push",e)},reduce(e,...t){return Fl(this,"reduce",e,t)},reduceRight(e,...t){return Fl(this,"reduceRight",e,t)},shift(){return cs(this,"shift")},some(e,t){return zt(this,"some",e,t,void 0,arguments)},splice(...e){return cs(this,"splice",e)},toReversed(){return zn(this).toReversed()},toSorted(e){return zn(this).toSorted(e)},toSpliced(...e){return zn(this).toSpliced(...e)},unshift(...e){return cs(this,"unshift",e)},values(){return Ji(this,"values",e=>jt(this,e))}};function Ji(e,t,n){const s=Li(e),i=s[t]();return s!==e&&!xt(e)&&(i._next=i.next,i.next=()=>{const l=i._next();return l.done||(l.value=n(l.value)),l}),i}const Qu=Array.prototype;function zt(e,t,n,s,i,l){const r=Li(e),u=r!==e&&!xt(e),f=r[t];if(f!==Qu[t]){const b=f.apply(e,l);return u?Et(b):b}let h=n;r!==e&&(u?h=function(b,v){return n.call(this,jt(e,b),v,e)}:n.length>2&&(h=function(b,v){return n.call(this,b,v,e)}));const p=f.call(r,h,s);return u&&i?i(p):p}function Fl(e,t,n,s){const i=Li(e),l=i!==e&&!xt(e);let r=n,u=!1;i!==e&&(l?(u=s.length===0,r=function(h,p,b){return u&&(u=!1,h=jt(e,h)),n.call(this,h,jt(e,p),b,e)}):n.length>3&&(r=function(h,p,b){return n.call(this,h,p,b,e)}));const f=i[t](r,...s);return u?jt(e,f):f}function Xi(e,t,n){const s=xe(e);nt(s,"iterate",Cs);const i=s[t](...n);return(i===-1||i===!1)&&ol(n[0])?(n[0]=xe(n[0]),s[t](...n)):i}function cs(e,t,n=[]){on(),Qo();const s=xe(e)[t].apply(e,n);return el(),ln(),s}const ed=Go("__proto__,__v_isRef,__isVue"),Or=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Kt));function td(e){Kt(e)||(e=String(e));const t=xe(this);return nt(t,"has",e),t.hasOwnProperty(e)}class Ir{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const i=this._isReadonly,l=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return l;if(n==="__v_raw")return s===(i?l?dd:Nr:l?Rr:Mr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const r=pe(t);if(!i){let f;if(r&&(f=Zu[n]))return f;if(n==="hasOwnProperty")return td}const u=Reflect.get(t,n,et(t)?t:s);if((Kt(n)?Or.has(n):ed(n))||(i||nt(t,"get",n),l))return u;if(et(u)){const f=r&&Xo(n)?u:u.value;return i&&Oe(f)?ko(f):f}return Oe(u)?i?ko(u):Bn(u):u}}class Lr extends Ir{constructor(t=!1){super(!1,t)}set(t,n,s,i){let l=t[n];const r=pe(t)&&Xo(n);if(!this._isShallow){const h=qt(l);if(!xt(s)&&!qt(s)&&(l=xe(l),s=xe(s)),!r&&et(l)&&!et(s))return h||(l.value=s),!0}const u=r?Number(n)e,Ys=e=>Reflect.getPrototypeOf(e);function ld(e,t,n){return function(...s){const i=this.__v_raw,l=xe(i),r=gn(l),u=e==="entries"||e===Symbol.iterator&&r,f=e==="keys"&&r,h=i[e](...s),p=n?wo:t?wn:Et;return!t&&nt(l,"iterate",f?yo:Dn),tt(Object.create(h),{next(){const{value:b,done:v}=h.next();return v?{value:b,done:v}:{value:u?[p(b[0]),p(b[1])]:p(b),done:v}}})}}function Gs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ad(e,t){const n={get(i){const l=this.__v_raw,r=xe(l),u=xe(i);e||(Vt(i,u)&&nt(r,"get",i),nt(r,"get",u));const{has:f}=Ys(r),h=t?wo:e?wn:Et;if(f.call(r,i))return h(l.get(i));if(f.call(r,u))return h(l.get(u));l!==r&&l.get(i)},get size(){const i=this.__v_raw;return!e&&nt(xe(i),"iterate",Dn),i.size},has(i){const l=this.__v_raw,r=xe(l),u=xe(i);return e||(Vt(i,u)&&nt(r,"has",i),nt(r,"has",u)),i===u?l.has(i):l.has(i)||l.has(u)},forEach(i,l){const r=this,u=r.__v_raw,f=xe(u),h=t?wo:e?wn:Et;return!e&&nt(f,"iterate",Dn),u.forEach((p,b)=>i.call(l,h(p),h(b),r))}};return tt(n,e?{add:Gs("add"),set:Gs("set"),delete:Gs("delete"),clear:Gs("clear")}:{add(i){const l=xe(this),r=Ys(l),u=xe(i),f=!t&&!xt(i)&&!qt(i)?u:i;return r.has.call(l,f)||Vt(i,f)&&r.has.call(l,i)||Vt(u,f)&&r.has.call(l,u)||(l.add(f),Xt(l,"add",f,f)),this},set(i,l){!t&&!xt(l)&&!qt(l)&&(l=xe(l));const r=xe(this),{has:u,get:f}=Ys(r);let h=u.call(r,i);h||(i=xe(i),h=u.call(r,i));const p=f.call(r,i);return r.set(i,l),h?Vt(l,p)&&Xt(r,"set",i,l):Xt(r,"add",i,l),this},delete(i){const l=xe(this),{has:r,get:u}=Ys(l);let f=r.call(l,i);f||(i=xe(i),f=r.call(l,i)),u&&u.call(l,i);const h=l.delete(i);return f&&Xt(l,"delete",i,void 0),h},clear(){const i=xe(this),l=i.size!==0,r=i.clear();return l&&Xt(i,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=ld(i,e,t)}),n}function sl(e,t){const n=ad(e,t);return(s,i,l)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?s:Reflect.get(Ee(n,i)&&i in s?n:s,i,l)}const rd={get:sl(!1,!1)},cd={get:sl(!1,!0)},ud={get:sl(!0,!1)};const Mr=new WeakMap,Rr=new WeakMap,Nr=new WeakMap,dd=new WeakMap;function fd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Bn(e){return qt(e)?e:il(e,!1,sd,rd,Mr)}function pd(e){return il(e,!1,od,cd,Rr)}function ko(e){return il(e,!0,id,ud,Nr)}function il(e,t,n,s,i){if(!Oe(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const l=i.get(e);if(l)return l;const r=fd(Fu(e));if(r===0)return e;const u=new Proxy(e,r===2?s:n);return i.set(e,u),u}function _n(e){return qt(e)?_n(e.__v_raw):!!(e&&e.__v_isReactive)}function qt(e){return!!(e&&e.__v_isReadonly)}function xt(e){return!!(e&&e.__v_isShallow)}function ol(e){return e?!!e.__v_raw:!1}function xe(e){const t=e&&e.__v_raw;return t?xe(t):e}function hd(e){return!Ee(e,"__v_skip")&&Object.isExtensible(e)&&vr(e,"__v_skip",!0),e}const Et=e=>Oe(e)?Bn(e):e,wn=e=>Oe(e)?ko(e):e;function et(e){return e?e.__v_isRef===!0:!1}function ke(e){return Fr(e,!1)}function md(e){return Fr(e,!0)}function Fr(e,t){return et(e)?e:new bd(e,t)}class bd{constructor(t,n){this.dep=new nl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:xe(t),this._value=n?t:Et(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||xt(t)||qt(t);t=s?t:xe(t),Vt(t,n)&&(this._rawValue=t,this._value=s?t:Et(t),this.dep.trigger())}}function a(e){return et(e)?e.value:e}const vd={get:(e,t,n)=>t==="__v_raw"?e:a(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const i=e[t];return et(i)&&!et(n)?(i.value=n,!0):Reflect.set(e,t,n,s)}};function Dr(e){return _n(e)?e:new Proxy(e,vd)}class gd{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new nl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ss-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Fe!==this)return Sr(this,!0),!0}get value(){const t=this.dep.track();return Er(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function _d(e,t,n=!1){let s,i;return _e(e)?s=e:(s=e.get,i=e.set),new gd(s,i,n)}const Js={},li=new WeakMap;let Mn;function yd(e,t=!1,n=Mn){if(n){let s=li.get(n);s||li.set(n,s=[]),s.push(e)}}function wd(e,t,n=Ne){const{immediate:s,deep:i,once:l,scheduler:r,augmentJob:u,call:f}=n,h=T=>i?T:xt(T)||i===!1||i===0?Zt(T,1):Zt(T);let p,b,v,y,M=!1,E=!1;if(et(e)?(b=()=>e.value,M=xt(e)):_n(e)?(b=()=>h(e),M=!0):pe(e)?(E=!0,M=e.some(T=>_n(T)||xt(T)),b=()=>e.map(T=>{if(et(T))return T.value;if(_n(T))return h(T);if(_e(T))return f?f(T,2):T()})):_e(e)?t?b=f?()=>f(e,2):e:b=()=>{if(v){on();try{v()}finally{ln()}}const T=Mn;Mn=p;try{return f?f(e,3,[y]):e(y)}finally{Mn=T}}:b=Wt,t&&i){const T=b,V=i===!0?1/0:i;b=()=>Zt(T(),V)}const x=kr(),O=()=>{p.stop(),x&&x.active&&Jo(x.effects,p)};if(l&&t){const T=t;t=(...V)=>{const L=T(...V);return O(),L}}let C=E?new Array(e.length).fill(Js):Js;const F=T=>{if(!(!(p.flags&1)||!p.dirty&&!T))if(t){const V=p.run();if(T||i||M||(E?V.some((L,k)=>Vt(L,C[k])):Vt(V,C))){v&&v();const L=Mn;Mn=p;try{const k=[V,C===Js?void 0:E&&C[0]===Js?[]:C,y];C=V,f?f(t,3,k):t(...k)}finally{Mn=L}}}else p.run()};return u&&u(F),p=new $r(b),p.scheduler=r?()=>r(F,!1):F,y=T=>yd(T,!1,p),v=p.onStop=()=>{const T=li.get(p);if(T){if(f)f(T,4);else for(const V of T)V();li.delete(p)}},t?s?F(!0):C=p.run():r?r(F.bind(null,!0),!0):p.run(),O.pause=p.pause.bind(p),O.resume=p.resume.bind(p),O.stop=O,O}function Zt(e,t=1/0,n){if(t<=0||!Oe(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,et(e))Zt(e.value,t,n);else if(pe(e))for(let s=0;s{Zt(s,t,n)});else if(br(e)){for(const s in e)Zt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Zt(e[s],t,n)}return e}function js(e,t,n,s){try{return s?e(...s):e()}catch(i){Mi(i,t,n)}}function Mt(e,t,n,s){if(_e(e)){const i=js(e,t,n,s);return i&&hr(i)&&i.catch(l=>{Mi(l,t,n)}),i}if(pe(e)){const i=[];for(let l=0;l>>1,i=rt[s],l=Ts(i);l=Ts(n)?rt.push(e):rt.splice($d(t),0,e),e.flags|=1,jr()}}function jr(){ai||(ai=Ur.then(Vr))}function xd(e){if(!pe(e))mn&&e.id===-1?mn.splice(Yn+1,0,e):e.flags&1||(Xn.push(e),e.flags|=1);else for(let t=0;tTs(n)-Ts(s));if(Xn.length=0,mn){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function Vr(e){try{for(Dt=0;Dt{s._d&&di(-1);const l=ri(t),r=Un.length;let u;try{u=e(...i)}finally{for(let f=Un.length;f>r;f--)mc();ri(l),s._d&&di(1)}return u};return s._n=!0,s._c=!0,s._d=!0,s}function Ae(e,t){if(mt===null)return e;const n=Ui(mt),s=e.dirs||(e.dirs=[]);for(let i=0;i1)return n&&_e(t)?t.call(s&&s.proxy):t}}const Cd=Symbol.for("v-scx"),Td=()=>ws(Cd);function St(e,t,n){return Br(e,t,n)}function Br(e,t,n=Ne){const{immediate:s,deep:i,flush:l,once:r}=n,u=tt({},n),f=t&&s||!t&&l!=="post";let h;if(Ps){if(l==="sync"){const y=Td();h=y.__watcherHandles||(y.__watcherHandles=[])}else if(!f){const y=()=>{};return y.stop=Wt,y.resume=Wt,y.pause=Wt,y}}const p=st;u.call=(y,M,E)=>Mt(y,p,M,E);let b=!1;l==="post"?u.scheduler=y=>{dt(y,p&&p.suspense)}:l!=="sync"&&(b=!0,u.scheduler=(y,M)=>{M?y():ll(y)}),u.augmentJob=y=>{t&&(y.flags|=4),b&&(y.flags|=2,p&&(y.id=p.uid,y.i=p))};const v=wd(e,t,u);return Ps&&(h?h.push(v):f&&v()),v}function Ed(e,t,n){const s=this.proxy,i=Be(e)?e.includes(".")?Kr(s,e):()=>s[e]:e.bind(s,s);let l;_e(t)?l=t:(l=t.handler,n=t);const r=Ws(this),u=Br(i,l.bind(s),n);return r(),u}function Kr(e,t){const n=t.split(".");return()=>{let s=e;for(let i=0;ie.__isTeleport,Zi=Symbol("_leaveCb");function Pd(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==an){t=n;break}}return t}function qr(e){if(!rl(e))return Ni(e.type)&&e.children?Pd(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&_e(n.default))return n.default()}}function al(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;al(Ni(n.type)&&qr(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Me(e,t){return _e(e)?tt({name:e.name},t,{setup:e}):e}function zr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ul(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const ci=new WeakMap;function ks(e,t,n,s,i=!1){if(pe(e)){e.forEach((E,x)=>ks(E,t&&(pe(t)?t[x]:t),n,s,i));return}if($s(s)&&!i){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&ks(e,t,n,s.component.subTree);return}const l=s.shapeFlag&4?Ui(s.component):s.el,r=i?null:l,{i:u,r:f}=e,h=t&&t.r,p=u.refs===Ne?u.refs={}:u.refs,b=u.setupState,v=xe(b),y=b===Ne?pr:E=>Ul(p,E)?!1:Ee(v,E),M=(E,x)=>!(x&&Ul(p,x));if(h!=null&&h!==f){if(jl(t),Be(h))p[h]=null,y(h)&&(b[h]=null);else if(et(h)){const E=t;M(h,E.k)&&(h.value=null),E.k&&(p[E.k]=null)}}if(_e(f))js(f,u,12,[r,p]);else{const E=Be(f),x=et(f);if(E||x){const O=()=>{if(e.f){const C=E?y(f)?b[f]:p[f]:M()||!e.k?f.value:p[e.k];if(i)pe(C)&&Jo(C,l);else if(pe(C))C.includes(l)||C.push(l);else if(E)p[f]=[l],y(f)&&(b[f]=p[f]);else{const F=[l];M(f,e.k)&&(f.value=F),e.k&&(p[e.k]=F)}}else E?(p[f]=r,y(f)&&(b[f]=r)):x&&(M(f,e.k)&&(f.value=r),e.k&&(p[e.k]=r))};if(r){const C=()=>{O(),ci.delete(e)};C.id=-1,ci.set(e,C),dt(C,n)}else jl(e),O()}}}function jl(e){const t=ci.get(e);t&&(t.flags|=8,ci.delete(e))}Ii().requestIdleCallback;Ii().cancelIdleCallback;const $s=e=>!!e.type.__asyncLoader,rl=e=>e.type.__isKeepAlive;function Od(e,t){Yr(e,"a",t)}function Id(e,t){Yr(e,"da",t)}function Yr(e,t,n=st){const s=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(Fi(t,s,n),n){let i=n.parent;for(;i&&i.parent;)rl(i.parent.vnode)&&Ld(s,t,n,i),i=i.parent}}function Ld(e,t,n,s){const i=Fi(t,e,s,!0);cl(()=>{Jo(s[t],i)},n)}function Fi(e,t,n=st,s=!1){if(n){const i=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{on();const u=Ws(n),f=Mt(t,n,e,r);return u(),ln(),f});return s?i.unshift(l):i.push(l),l}}const dn=e=>(t,n=st)=>{(!Ps||e==="sp")&&Fi(e,(...s)=>t(...s),n)},Md=dn("bm"),Tn=dn("m"),Rd=dn("bu"),Nd=dn("u"),os=dn("bum"),cl=dn("um"),Fd=dn("sp"),Dd=dn("rtg"),Ud=dn("rtc");function jd(e,t=st){Fi("ec",e,t)}const Gr="components";function Hs(e,t){return Xr(Gr,e,!0,t)||e}const Jr=Symbol.for("v-ndc");function Hd(e){return Be(e)?Xr(Gr,e,!1)||e:e||Jr}function Xr(e,t,n=!0,s=!1){const i=mt||st;if(i){const l=i.type;{const u=Sf(l,!1);if(u&&(u===t||u===ct(t)||u===Pi(ct(t))))return l}const r=Hl(i[e]||l[e],t)||Hl(i.appContext[e],t);return!r&&s?l:r}}function Hl(e,t){return e&&(e[t]||e[ct(t)]||e[Pi(ct(t))])}function he(e,t,n,s){let i;const l=n,r=pe(e);if(r||Be(e)){const u=r&&_n(e);let f=!1,h=!1;u&&(f=!xt(e),h=qt(e),e=Li(e)),i=new Array(e.length);for(let p=0,b=e.length;pt(u,f,void 0,l));else{const u=Object.keys(e);i=new Array(u.length);for(let f=0,h=u.length;fe?_c(e)?Ui(e):$o(e.parent):null,xs=tt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>$o(e.parent),$root:e=>$o(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Qr(e),$forceUpdate:e=>e.f||(e.f=()=>{ll(e.update)}),$nextTick:e=>e.n||(e.n=Ri.bind(e.proxy)),$watch:e=>Ed.bind(e)}),Qi=(e,t)=>e!==Ne&&!e.__isScriptSetup&&Ee(e,t),Vd={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:i,props:l,accessCache:r,type:u,appContext:f}=e;if(t[0]!=="$"){const v=r[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return i[t];case 4:return n[t];case 3:return l[t]}else{if(Qi(s,t))return r[t]=1,s[t];if(i!==Ne&&Ee(i,t))return r[t]=2,i[t];if(Ee(l,t))return r[t]=3,l[t];if(n!==Ne&&Ee(n,t))return r[t]=4,n[t];xo&&(r[t]=0)}}const h=xs[t];let p,b;if(h)return t==="$attrs"&&nt(e.attrs,"get",""),h(e);if((p=u.__cssModules)&&(p=p[t]))return p;if(n!==Ne&&Ee(n,t))return r[t]=4,n[t];if(b=f.config.globalProperties,Ee(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:i,ctx:l}=e;return Qi(i,t)?(i[t]=n,!0):s!==Ne&&Ee(s,t)?(s[t]=n,!0):Ee(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:i,props:l,type:r}},u){let f;return!!(n[u]||e!==Ne&&u[0]!=="$"&&Ee(e,u)||Qi(t,u)||Ee(l,u)||Ee(s,u)||Ee(xs,u)||Ee(i.config.globalProperties,u)||(f=r.__cssModules)&&f[u])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ee(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Vl(e){return pe(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let xo=!0;function Wd(e){const t=Qr(e),n=e.proxy,s=e.ctx;xo=!1,t.beforeCreate&&Wl(t.beforeCreate,e,"bc");const{data:i,computed:l,methods:r,watch:u,provide:f,inject:h,created:p,beforeMount:b,mounted:v,beforeUpdate:y,updated:M,activated:E,deactivated:x,beforeDestroy:O,beforeUnmount:C,destroyed:F,unmounted:T,render:V,renderTracked:L,renderTriggered:k,errorCaptured:A,serverPrefetch:z,expose:P,inheritAttrs:ge,components:G,directives:ie,filters:be}=t;if(h&&Bd(h,s,null),r)for(const ye in r){const $e=r[ye];_e($e)&&(s[ye]=$e.bind(n))}if(i){const ye=i.call(n,n);Oe(ye)&&(e.data=Bn(ye))}if(xo=!0,l)for(const ye in l){const $e=l[ye],Ye=_e($e)?$e.bind(n,n):_e($e.get)?$e.get.bind(n,n):Wt,le=!_e($e)&&_e($e.set)?$e.set.bind(n):Wt,ee=$({get:Ye,set:le});Object.defineProperty(s,ye,{enumerable:!0,configurable:!0,get:()=>ee.value,set:ae=>ee.value=ae})}if(u)for(const ye in u)Zr(u[ye],s,n,ye);if(f){const ye=_e(f)?f.call(n):f;Reflect.ownKeys(ye).forEach($e=>{Sd($e,ye[$e])})}p&&Wl(p,e,"c");function ue(ye,$e){pe($e)?$e.forEach(Ye=>ye(Ye.bind(n))):$e&&ye($e.bind(n))}if(ue(Md,b),ue(Tn,v),ue(Rd,y),ue(Nd,M),ue(Od,E),ue(Id,x),ue(jd,A),ue(Ud,L),ue(Dd,k),ue(os,C),ue(cl,T),ue(Fd,z),pe(P))if(P.length){const ye=e.exposed||(e.exposed={});P.forEach($e=>{Object.defineProperty(ye,$e,{get:()=>n[$e],set:Ye=>n[$e]=Ye,enumerable:!0})})}else e.exposed||(e.exposed={});V&&e.render===Wt&&(e.render=V),ge!=null&&(e.inheritAttrs=ge),G&&(e.components=G),ie&&(e.directives=ie),z&&zr(e)}function Bd(e,t,n=Wt){pe(e)&&(e=So(e));for(const s in e){const i=e[s];let l;Oe(i)?"default"in i?l=ws(i.from||s,i.default,!0):l=ws(i.from||s):l=ws(i),et(l)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>l.value,set:r=>l.value=r}):t[s]=l}}function Wl(e,t,n){Mt(pe(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Zr(e,t,n,s){let i=s.includes(".")?Kr(n,s):()=>n[s];if(Be(e)){const l=t[e];_e(l)&&St(i,l)}else if(_e(e))St(i,e.bind(n));else if(Oe(e))if(pe(e))e.forEach(l=>Zr(l,t,n,s));else{const l=_e(e.handler)?e.handler.bind(n):t[e.handler];_e(l)&&St(i,l,e)}}function Qr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:i,optionsCache:l,config:{optionMergeStrategies:r}}=e.appContext,u=l.get(t);let f;return u?f=u:!i.length&&!n&&!s?f=t:(f={},i.length&&i.forEach(h=>ui(f,h,r,!0)),ui(f,t,r)),Oe(t)&&l.set(t,f),f}function ui(e,t,n,s=!1){const{mixins:i,extends:l}=t;l&&ui(e,l,n,!0),i&&i.forEach(r=>ui(e,r,n,!0));for(const r in t)if(!(s&&r==="expose")){const u=Kd[r]||n&&n[r];e[r]=u?u(e[r],t[r]):t[r]}return e}const Kd={data:Bl,props:Kl,emits:Kl,methods:ps,computed:ps,beforeCreate:lt,created:lt,beforeMount:lt,mounted:lt,beforeUpdate:lt,updated:lt,beforeDestroy:lt,beforeUnmount:lt,destroyed:lt,unmounted:lt,activated:lt,deactivated:lt,errorCaptured:lt,serverPrefetch:lt,components:ps,directives:ps,watch:zd,provide:Bl,inject:qd};function Bl(e,t){return t?e?function(){return tt(_e(e)?e.call(this,this):e,_e(t)?t.call(this,this):t)}:t:e}function qd(e,t){return ps(So(e),So(t))}function So(e){if(pe(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ct(t)}Modifiers`]||e[`${Cn(t)}Modifiers`];function Xd(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Ne;let i=n;const l=t.startsWith("update:"),r=l&&Jd(s,t.slice(7));r&&(r.trim&&(i=n.map(p=>Be(p)?p.trim():p)),r.number&&(i=i.map(Oi)));let u,f=s[u=zi(t)]||s[u=zi(ct(t))];!f&&l&&(f=s[u=zi(Cn(t))]),f&&Mt(f,e,6,i);const h=s[u+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[u])return;e.emitted[u]=!0,Mt(h,e,6,i)}}const Zd=new WeakMap;function tc(e,t,n=!1){const s=n?Zd:t.emitsCache,i=s.get(e);if(i!==void 0)return i;const l=e.emits;let r={},u=!1;if(!_e(e)){const f=h=>{const p=tc(h,t,!0);p&&(u=!0,tt(r,p))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!l&&!u?(Oe(e)&&s.set(e,null),null):(pe(l)?l.forEach(f=>r[f]=null):tt(r,l),Oe(e)&&s.set(e,r),r)}function Di(e,t){return!e||!Ti(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Ee(e,t[0].toLowerCase()+t.slice(1))||Ee(e,Cn(t))||Ee(e,t))}function ql(e){const{type:t,vnode:n,proxy:s,withProxy:i,propsOptions:[l],slots:r,attrs:u,emit:f,render:h,renderCache:p,props:b,data:v,setupState:y,ctx:M,inheritAttrs:E}=e,x=ri(e);let O,C;try{if(n.shapeFlag&4){const T=i||s,V=T;O=Ht(h.call(V,T,p,b,y,v,M)),C=u}else{const T=t;O=Ht(T.length>1?T(b,{attrs:u,slots:r,emit:f}):T(b,null)),C=t.props?u:Qd(u)}}catch(T){Un.length=0,Mi(T,e,1),O=te(an)}let F=O;if(C&&E!==!1){const T=Object.keys(C),{shapeFlag:V}=F;T.length&&V&7&&(l&&T.some(Ei)&&(C=ef(C,l)),F=ts(F,C,!1,!0))}if(n.dirs&&(F=ts(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition){const T=Ni(F.type)&&qr(F)||F;al(T,n.transition)}return O=F,ri(x),O}const Qd=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ti(n))&&((t||(t={}))[n]=e[n]);return t},ef=(e,t)=>{const n={};for(const s in e)(!Ei(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function tf(e,t,n){const{props:s,children:i,component:l}=e,{props:r,children:u,patchFlag:f}=t,h=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return s?zl(s,r,h):!!r;if(f&8){const p=t.dynamicProps;for(let b=0;bObject.create(sc),oc=e=>Object.getPrototypeOf(e)===sc;function sf(e,t,n,s=!1){const i={},l=ic();e.propsDefaults=Object.create(null),lc(e,t,i,l);for(const r in e.propsOptions[0])r in i||(i[r]=void 0);n?e.props=s?i:pd(i):e.type.props?e.props=i:e.props=l,e.attrs=l}function of(e,t,n,s){const{props:i,attrs:l,vnode:{patchFlag:r}}=e,u=xe(i),[f]=e.propsOptions;let h=!1;if((s||r>0)&&!(r&16)){if(r&8){const p=e.vnode.dynamicProps;for(let b=0;b{f=!0;const[v,y]=ac(b,t,!0);tt(r,v),y&&u.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!l&&!f)return Oe(e)&&s.set(e,Nn),Nn;if(pe(l))for(let p=0;pe==="_"||e==="_ctx"||e==="$stable",dl=e=>pe(e)?e.map(Ht):[Ht(e)],af=(e,t,n)=>{if(t._n)return t;const s=ne((...i)=>dl(t(...i)),n);return s._c=!1,s},rc=(e,t,n)=>{const s=e._ctx;for(const i in e){if(ul(i))continue;const l=e[i];if(_e(l))t[i]=af(i,l,s);else if(l!=null){const r=dl(l);t[i]=()=>r}}},cc=(e,t)=>{const n=dl(t);e.slots.default=()=>n},uc=(e,t,n)=>{for(const s in t)(n||!ul(s))&&(e[s]=t[s])},rf=(e,t,n)=>{const s=e.slots=ic();if(e.vnode.shapeFlag&32){const i=t._;i?(uc(s,t,n),n&&vr(s,"_",i,!0)):rc(t,s)}else t&&cc(e,t)},cf=(e,t,n)=>{const{vnode:s,slots:i}=e;let l=!0,r=Ne;if(s.shapeFlag&32){const u=t._;u?n&&u===1?l=!1:uc(i,t,n):(l=!t.$stable,rc(t,i)),r=t}else t&&(cc(e,t),r={default:1});if(l)for(const u in i)!ul(u)&&r[u]==null&&delete i[u]},dt=hf;function uf(e){return df(e)}function df(e,t){const n=Ii();n.__VUE__=!0;const{insert:s,remove:i,patchProp:l,createElement:r,createText:u,createComment:f,setText:h,setElementText:p,parentNode:b,nextSibling:v,setScopeId:y=Wt,insertStaticContent:M}=e,E=(w,S,R,W=null,D=null,j=null,J=void 0,Y=null,q=!!S.dynamicChildren)=>{if(w===S)return;w&&!us(w,S)&&(W=we(w),ae(w,D,j,!0),w=null),S.patchFlag===-2&&(q=!1,S.dynamicChildren=null),S.dynamicChildren&&w&&w.dynamicChildren&&w.dynamicChildren.hasOnce&&(S.dynamicChildren===Nn&&(S.dynamicChildren=[]),S.dynamicChildren.hasOnce=!0);const{type:U,ref:ce,shapeFlag:Q}=S;switch(U){case Vs:x(w,S,R,W);break;case an:O(w,S,R,W);break;case to:w==null&&C(S,R,W,J);break;case B:G(w,S,R,W,D,j,J,Y,q);break;default:Q&1?V(w,S,R,W,D,j,J,Y,q):Q&6?ie(w,S,R,W,D,j,J,Y,q):(Q&64||Q&128)&&U.process(w,S,R,W,D,j,J,Y,q,On)}ce!=null&&D?ks(ce,w&&w.ref,j,S||w,!S):ce==null&&w&&w.ref!=null&&ks(w.ref,null,j,w,!0)},x=(w,S,R,W)=>{if(w==null)s(S.el=u(S.children),R,W);else{const D=S.el=w.el;S.children!==w.children&&h(D,S.children)}},O=(w,S,R,W)=>{w==null?s(S.el=f(S.children||""),R,W):S.el=w.el},C=(w,S,R,W)=>{[w.el,w.anchor]=M(w.children,S,R,W,w.el,w.anchor)},F=({el:w,anchor:S},R,W)=>{let D;for(;w&&w!==S;)D=v(w),s(w,R,W),w=D;s(S,R,W)},T=({el:w,anchor:S})=>{let R;for(;w&&w!==S;)R=v(w),i(w),w=R;i(S)},V=(w,S,R,W,D,j,J,Y,q)=>{if(S.type==="svg"?J="svg":S.type==="math"&&(J="mathml"),w==null)L(S,R,W,D,j,J,Y,q);else{const U=w.el&&w.el._isVueCE?w.el:null;try{U&&U._beginPatch(),z(w,S,D,j,J,Y,q)}finally{U&&U._endPatch()}}},L=(w,S,R,W,D,j,J,Y)=>{let q,U;const{props:ce,shapeFlag:Q,transition:Z,dirs:I}=w;if(q=w.el=r(w.type,j,ce&&ce.is,ce),Q&8?p(q,w.children):Q&16&&A(w.children,q,null,W,D,eo(w,j),J,Y),I&&In(w,null,W,"created"),k(q,w,w.scopeId,J,W),ce){for(const re in ce)re!=="value"&&!gs(re)&&l(q,re,null,ce[re],j,W);"value"in ce&&l(q,"value",null,ce.value,j),(U=ce.onVnodeBeforeMount)&&Ft(U,W,w)}I&&In(w,null,W,"beforeMount");const N=ff(D,Z);N&&Z.beforeEnter(q),s(q,S,R),((U=ce&&ce.onVnodeMounted)||N||I)&&dt(()=>{U&&Ft(U,W,w),N&&Z.enter(q),I&&In(w,null,W,"mounted")},D)},k=(w,S,R,W,D)=>{if(R&&y(w,R),W)for(let j=0;j{for(let U=q;U{const Y=S.el=w.el;let{patchFlag:q,dynamicChildren:U,dirs:ce}=S;q|=w.patchFlag&16;const Q=w.props||Ne,Z=S.props||Ne;let I;if(R&&Ln(R,!1),(I=Z.onVnodeBeforeUpdate)&&Ft(I,R,S,w),ce&&In(S,w,R,"beforeUpdate"),R&&Ln(R,!0),U&&(!w.dynamicChildren||w.dynamicChildren.length!==U.length)&&(q=0,J=!1,U=null),(Q.innerHTML&&Z.innerHTML==null||Q.textContent&&Z.textContent==null)&&p(Y,""),U?P(w.dynamicChildren,U,Y,R,W,eo(S,D),j):J||$e(w,S,Y,null,R,W,eo(S,D),j,!1),q>0){if(q&16)ge(Y,Q,Z,R,D);else if(q&2&&Q.class!==Z.class&&l(Y,"class",null,Z.class,D),q&4&&l(Y,"style",Q.style,Z.style,D),q&8){const N=S.dynamicProps;for(let re=0;re{I&&Ft(I,R,S,w),ce&&In(S,w,R,"updated")},W)},P=(w,S,R,W,D,j,J)=>{for(let Y=0;Y{if(S!==R){if(S!==Ne)for(const j in S)!gs(j)&&!(j in R)&&l(w,j,S[j],null,D,W);for(const j in R){if(gs(j))continue;const J=R[j],Y=S[j];J!==Y&&j!=="value"&&l(w,j,Y,J,D,W)}"value"in R&&l(w,"value",S.value,R.value,D)}},G=(w,S,R,W,D,j,J,Y,q)=>{const U=S.el=w?w.el:u(""),ce=S.anchor=w?w.anchor:u("");let{patchFlag:Q,dynamicChildren:Z,slotScopeIds:I}=S;I&&(Y=Y?Y.concat(I):I),w==null?(s(U,R,W),s(ce,R,W),A(S.children||[],R,ce,D,j,J,Y,q)):Q>0&&Q&64&&Z&&w.dynamicChildren&&w.dynamicChildren.length===Z.length?(P(w.dynamicChildren,Z,R,D,j,J,Y),(S.key!=null||D&&S===D.subTree)&&dc(w,S,!0)):$e(w,S,R,ce,D,j,J,Y,q)},ie=(w,S,R,W,D,j,J,Y,q)=>{S.slotScopeIds=Y,w==null?S.shapeFlag&512?D.ctx.activate(S,R,W,J,q):be(S,R,W,D,j,J,q):se(w,S,q)},be=(w,S,R,W,D,j,J)=>{const Y=w.component=yf(w,W,D);if(rl(w)&&(Y.ctx.renderer=On),wf(Y,!1,J),Y.asyncDep){if(D&&D.registerDep(Y,ue,J),!w.el){const q=Y.subTree=te(an);O(null,q,S,R),w.placeholder=q.el}}else ue(Y,w,S,R,D,j,J)},se=(w,S,R)=>{const W=S.component=w.component;if(tf(w,S,R))if(W.asyncDep&&!W.asyncResolved){S.el=w.el,ye(W,S,R);return}else W.next=S,W.update();else S.el=w.el,W.vnode=S},ue=(w,S,R,W,D,j,J)=>{const Y=()=>{if(w.isMounted){let{next:Q,bu:Z,u:I,parent:N,vnode:re}=w;{const yt=fc(w);if(yt){Q&&(Q.el=re.el,ye(w,Q,J)),yt.asyncDep.then(()=>{dt(()=>{w.isUnmounted||U()},D)});return}}let fe=Q,Ie;Ln(w,!1),Q?(Q.el=re.el,ye(w,Q,J)):Q=re,Z&&ni(Z),(Ie=Q.props&&Q.props.onVnodeBeforeUpdate)&&Ft(Ie,N,Q,re),Ln(w,!0);const Ue=ql(w),We=w.subTree;w.subTree=Ue,E(We,Ue,b(We.el),we(We),w,D,j),Q.el=Ue.el,fe===null&&nf(w,Ue.el),I&&dt(I,D),(Ie=Q.props&&Q.props.onVnodeUpdated)&&dt(()=>Ft(Ie,N,Q,re),D)}else{let Q;const{el:Z,props:I}=S,{bm:N,m:re,parent:fe,root:Ie,type:Ue}=w,We=$s(S);Ln(w,!1),N&&ni(N),!We&&(Q=I&&I.onVnodeBeforeMount)&&Ft(Q,fe,S),Ln(w,!0);{Ie.ce&&Ie.ce._hasShadowRoot()&&Ie.ce._injectChildStyle(Ue,w.parent?w.parent.type:void 0);const yt=w.subTree=ql(w);E(null,yt,R,W,w,D,j),S.el=yt.el}if(re&&dt(re,D),!We&&(Q=I&&I.onVnodeMounted)){const yt=S;dt(()=>Ft(Q,fe,yt),D)}(S.shapeFlag&256||fe&&$s(fe.vnode)&&fe.vnode.shapeFlag&256)&&w.a&&dt(w.a,D),w.isMounted=!0,S=R=W=null}};w.scope.on();const q=w.effect=new $r(Y);w.scope.off();const U=w.update=q.run.bind(q),ce=w.job=q.runIfDirty.bind(q);ce.i=w,ce.id=w.uid,q.scheduler=()=>ll(ce),Ln(w,!0),U()},ye=(w,S,R)=>{S.component=w;const W=w.vnode.props;w.vnode=S,w.next=null,of(w,S.props,W,R),cf(w,S.children,R),on(),Dl(w),ln()},$e=(w,S,R,W,D,j,J,Y,q=!1)=>{const U=w&&w.children,ce=w?w.shapeFlag:0,Q=S.children,{patchFlag:Z,shapeFlag:I}=S;if(Z>0){if(Z&128){le(U,Q,R,W,D,j,J,Y,q);return}else if(Z&256){Ye(U,Q,R,W,D,j,J,Y,q);return}}I&8?(ce&16&&Te(U,D,j),Q!==U&&p(R,Q)):ce&16?I&16?le(U,Q,R,W,D,j,J,Y,q):Te(U,D,j,!0):(ce&8&&p(R,""),I&16&&A(Q,R,W,D,j,J,Y,q))},Ye=(w,S,R,W,D,j,J,Y,q)=>{w=w||Nn,S=S||Nn;const U=w.length,ce=S.length,Q=Math.min(U,ce);let Z;for(Z=0;Zce?Te(w,D,j,!0,!1,Q):A(S,R,W,D,j,J,Y,q,Q)},le=(w,S,R,W,D,j,J,Y,q)=>{let U=0;const ce=S.length;let Q=w.length-1,Z=ce-1;for(;U<=Q&&U<=Z;){const I=w[U],N=S[U]=q?Gt(S[U]):Ht(S[U]);if(us(I,N))E(I,N,R,null,D,j,J,Y,q);else break;U++}for(;U<=Q&&U<=Z;){const I=w[Q],N=S[Z]=q?Gt(S[Z]):Ht(S[Z]);if(us(I,N))E(I,N,R,null,D,j,J,Y,q);else break;Q--,Z--}if(U>Q){if(U<=Z){const I=Z+1,N=IZ)for(;U<=Q;)ae(w[U],D,j,!0),U++;else{const I=U,N=U,re=new Map;for(U=N;U<=Z;U++){const ht=S[U]=q?Gt(S[U]):Ht(S[U]);ht.key!=null&&re.set(ht.key,U)}let fe,Ie=0;const Ue=Z-N+1;let We=!1,yt=0;const qn=new Array(Ue);for(U=0;U=Ue){ae(ht,D,j,!0);continue}let Nt;if(ht.key!=null)Nt=re.get(ht.key);else for(fe=N;fe<=Z;fe++)if(qn[fe-N]===0&&us(ht,S[fe])){Nt=fe;break}Nt===void 0?ae(ht,D,j,!0):(qn[Nt-N]=U+1,Nt>=yt?yt=Nt:We=!0,E(ht,S[Nt],R,null,D,j,J,Y,q),Ie++)}const Al=We?pf(qn):Nn;for(fe=Al.length-1,U=Ue-1;U>=0;U--){const ht=N+U,Nt=S[ht],Pl=S[ht+1],Ol=ht+1{const{el:j,type:J,transition:Y,children:q,shapeFlag:U}=w;if(U&6){ee(w.component.subTree,S,R,W);return}if(U&128){w.suspense.move(S,R,W);return}if(U&64){J.move(w,S,R,On);return}if(J===B){s(j,S,R);for(let Q=0;QY.enter(j),D));else{const{leave:Q,delayLeave:Z,afterLeave:I}=Y,N=()=>{w.ctx.isUnmounted?i(j):s(j,S,R)},re=()=>{const fe=j._isLeaving||!!j[Zi];j._isLeaving&&j[Zi](!0),Y.persisted&&!fe?N():Q(j,()=>{N(),I&&I()})};Z?Z(j,N,re):re()}else s(j,S,R)},ae=(w,S,R,W=!1,D=!1)=>{const{type:j,props:J,ref:Y,children:q,dynamicChildren:U,shapeFlag:ce,patchFlag:Q,dirs:Z,cacheIndex:I,memo:N}=w;if((Q===-2||U&&U.hasOnce)&&(D=!1),Y!=null&&(on(),ks(Y,null,R,w,!0),ln()),I!=null&&(!w.ctx||w.ctx===S)&&(S.renderCache[I]=void 0),ce&256){S.ctx.deactivate(w);return}const re=ce&1&&Z,fe=!$s(w);let Ie;if(fe&&(Ie=J&&J.onVnodeBeforeUnmount)&&Ft(Ie,S,w),ce&6)K(w.component,R,W);else{if(ce&128){w.suspense.unmount(R,W);return}re&&In(w,null,S,"beforeUnmount"),ce&64?w.type.remove(w,S,R,On,W):U&&!U.hasOnce&&(j!==B||Q>0&&Q&64)?Te(U,S,R,!1,!0):(j===B&&Q&384||!D&&ce&16)&&Te(q,S,R),W&&de(w)}const Ue=N!=null&&I==null;(fe&&(Ie=J&&J.onVnodeUnmounted)||re||Ue)&&dt(()=>{Ie&&Ft(Ie,S,w),re&&In(w,null,S,"unmounted"),Ue&&(w.el=null)},R)},de=w=>{const{type:S,el:R,anchor:W,transition:D}=w;if(S===B){X(R,W);return}if(S===to){T(w),D&&!D.persisted&&D.afterLeave&&D.afterLeave();return}const j=()=>{i(R),D&&!D.persisted&&D.afterLeave&&D.afterLeave()};if(w.shapeFlag&1&&D&&!D.persisted){const{leave:J,delayLeave:Y}=D,q=()=>J(R,j);Y?Y(w.el,j,q):q()}else j()},X=(w,S)=>{let R;for(;w!==S;)R=v(w),i(w),w=R;i(S)},K=(w,S,R)=>{const{bum:W,scope:D,job:j,subTree:J,um:Y,m:q,a:U}=w;Gl(q),Gl(U),W&&ni(W),D.stop(),j?(j.flags|=8,ae(J,w,S,R)):w.vnode.el&&J&&(J.transition=w.vnode.transition,ae(J,w,S,R)),Y&&dt(Y,S),dt(()=>{w.isUnmounted=!0},S)},Te=(w,S,R,W=!1,D=!1,j=0)=>{for(let J=j;J{if(w.shapeFlag&6)return we(w.component.subTree);if(w.shapeFlag&128)return w.suspense.next();const S=v(w.anchor||w.el),R=S&&S[Ad];return R?v(R):S};let rs=!1;const zs=(w,S,R)=>{let W;w==null?S._vnode&&(ae(S._vnode,null,null,!0),W=S._vnode.component):E(S._vnode||null,w,S,null,null,null,R),S._vnode=w,rs||(rs=!0,Dl(W),Hr(),rs=!1)},On={p:E,um:ae,m:ee,r:de,mt:be,mc:A,pc:$e,pbc:P,n:we,o:e};return{render:zs,hydrate:void 0,createApp:Gd(zs)}}function eo({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ln({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ff(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function dc(e,t,n=!1){const s=e.children,i=t.children;if(pe(s)&&pe(i))for(let l=0;l>1,e[n[u]]0&&(t[s]=n[l-1]),n[l]=s)}}for(l=n.length,r=n[l-1];l-- >0;)n[l]=r,r=t[r];return n}function fc(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fc(t)}function Gl(e){if(e)for(let t=0;te.__isSuspense;function hf(e,t){t&&t.pendingBranch?pe(e)?t.effects.push(...e):t.effects.push(e):xd(e)}const B=Symbol.for("v-fgt"),Vs=Symbol.for("v-txt"),an=Symbol.for("v-cmt"),to=Symbol.for("v-stc"),Un=[];let bt=null;function g(e=!1){Un.push(bt=e?null:[])}function mc(){Un.pop(),bt=Un[Un.length-1]||null}let Es=1;function di(e,t=!1){Es+=e,e<0&&bt&&t&&(bt.hasOnce=!0)}function bc(e){return e.dynamicChildren=Es>0?bt||Nn:null,mc(),Es>0&&bt&&bt.push(e),e}function _(e,t,n,s,i,l){return bc(o(e,t,n,s,i,l,!0))}function it(e,t,n,s,i){return bc(te(e,t,n,s,i,!0))}function fi(e){return e?e.__v_isVNode===!0:!1}function us(e,t){return e.type===t.type&&e.key===t.key}const vc=({key:e})=>e??null,si=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Be(e)||et(e)||_e(e)?{i:mt,r:e,k:t,f:!!n}:e:null);function o(e,t=null,n=null,s=0,i=null,l=e===B?0:1,r=!1,u=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vc(t),ref:t&&si(t),scopeId:Wr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:s,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:mt};return u?(pi(f,n),l&128&&e.normalize(f)):n&&(f.shapeFlag|=Be(n)?8:16),Es>0&&!r&&bt&&(f.patchFlag>0||l&6)&&f.patchFlag!==32&&bt.push(f),f}const te=mf;function mf(e,t=null,n=null,s=0,i=null,l=!1){if((!e||e===Jr)&&(e=an),fi(e)){const u=ts(e,t,!0);return n&&pi(u,n),Es>0&&!l&&bt&&(u.shapeFlag&6?bt[bt.indexOf(e)]=u:bt.push(u)),u.patchFlag=-2,u}if(Cf(e)&&(e=e.__vccOpts),t){t=bf(t);let{class:u,style:f}=t;u&&!Be(u)&&(t.class=me(u)),Oe(f)&&(ol(f)&&!pe(f)&&(f=tt({},f)),t.style=je(f))}const r=Be(e)?1:hc(e)?128:Ni(e)?64:Oe(e)?4:_e(e)?2:0;return o(e,t,n,s,i,r,l,!0)}function bf(e){return e?ol(e)||oc(e)?tt({},e):e:null}function ts(e,t,n=!1,s=!1){const{props:i,ref:l,patchFlag:r,children:u,transition:f}=e,h=t?vf(i||{},t):i,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&vc(h),ref:t&&t.ref?n&&l?pe(l)?l.concat(si(t)):[l,si(t)]:si(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==B?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ts(e.ssContent),ssFallback:e.ssFallback&&ts(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return f&&s&&al(p,f.clone(p)),p}function Re(e=" ",t=0){return te(Vs,null,e,t)}function H(e="",t=!1){return t?(g(),it(an,null,e)):te(an,null,e)}function Ht(e){return e==null||typeof e=="boolean"?te(an):pe(e)?te(B,null,e.slice()):fi(e)?Gt(e):te(Vs,null,String(e))}function Gt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ts(e)}function pi(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(pe(t))n=16;else if(typeof t=="object")if(s&65){const i=t.default;i&&(i._c&&(i._d=!1),pi(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!oc(t)?t._ctx=mt:i===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(_e(t)){if(s&65){pi(e,{default:t});return}t={default:t,_ctx:mt},n=32}else t=String(t),s&64?(n=16,t=[Re(t)]):n=8;e.children=t,e.shapeFlag|=n}function vf(...e){const t={};for(let n=0;nst||mt;let hi,As;{const e=Ii(),t=(n,s)=>{let i;return(i=e[n])||(i=e[n]=[]),i.push(s),l=>{i.length>1?i.forEach(r=>r(l)):i[0](l)}};hi=t("__VUE_INSTANCE_SETTERS__",n=>st=n),As=t("__VUE_SSR_SETTERS__",n=>Ps=n)}const Ws=e=>{const t=st;return hi(e),e.scope.on(),()=>{e.scope.off(),hi(t)}},Jl=()=>{st&&st.scope.off(),hi(null)};function _c(e){return e.vnode.shapeFlag&4}let Ps=!1;function wf(e,t=!1,n=!1){t&&As(t);const{props:s,children:i}=e.vnode,l=_c(e);sf(e,s,l,t),rf(e,i,n||t);const r=l?kf(e,t):void 0;return t&&As(!1),r}function kf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Vd);const{setup:s}=n;if(s){on();const i=e.setupContext=s.length>1?xf(e):null,l=Ws(e),r=js(s,e,0,[e.props,i]),u=hr(r);if(ln(),l(),(u||e.sp)&&!$s(e)&&zr(e),u){if(r.then(Jl,Jl),t)return r.then(f=>{As(!0);try{Xl(e,f,t)}finally{As(!1)}}).catch(f=>{Mi(f,e,0)});e.asyncDep=r}else Xl(e,r)}else yc(e)}function Xl(e,t,n){_e(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Oe(t)&&(e.setupState=Dr(t)),yc(e)}function yc(e,t,n){const s=e.type;e.render||(e.render=s.render||Wt);{const i=Ws(e);on();try{Wd(e)}finally{ln(),i()}}}const $f={get(e,t){return nt(e,"get",""),e[t]}};function xf(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,$f),slots:e.slots,emit:e.emit,expose:t}}function Ui(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Dr(hd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in xs)return xs[n](e)},has(t,n){return n in t||n in xs}})):e.proxy}function Sf(e,t=!0){return _e(e)?e.displayName||e.name:e.name||t&&e.__name}function Cf(e){return _e(e)&&"__vccOpts"in e}const $=(e,t)=>_d(e,t,Ps);function mi(e,t,n){try{di(-1);const s=arguments.length;return s===2?Oe(t)&&!pe(t)?fi(t)?te(e,null,[t]):te(e,t):te(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&fi(n)&&(n=[n]),te(e,t,n))}finally{di(1)}}const Tf="3.5.43";let To;const Zl=typeof window<"u"&&window.trustedTypes;if(Zl)try{To=Zl.createPolicy("vue",{createHTML:e=>e})}catch{}const wc=To?e=>To.createHTML(e):e=>e,Ef="http://www.w3.org/2000/svg",Af="http://www.w3.org/1998/Math/MathML",Yt=typeof document<"u"?document:null,Ql=Yt&&Yt.createElement("template"),Pf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const i=t==="svg"?Yt.createElementNS(Ef,e):t==="mathml"?Yt.createElementNS(Af,e):n?Yt.createElement(e,{is:n}):Yt.createElement(e);return e==="select"&&s&&s.multiple!=null&&i.setAttribute("multiple",s.multiple),i},createText:e=>Yt.createTextNode(e),createComment:e=>Yt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Yt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,i,l){const r=n?n.previousSibling:t.lastChild;if(i&&(i===l||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===l||!(i=i.nextSibling)););else{Ql.innerHTML=wc(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const u=Ql.content;if(s==="svg"||s==="mathml"){const f=u.firstChild;for(;f.firstChild;)u.appendChild(f.firstChild);u.removeChild(f)}t.insertBefore(u,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Of=Symbol("_vtc");function If(e,t,n){const s=e[Of];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ea=Symbol("_vod"),Lf=Symbol("_vsh"),Mf=Symbol(""),Rf=/(?:^|;)\s*display\s*:/;function Nf(e,t,n){const s=e.style,i=Be(n);let l=!1;if(n&&!i){if(t)if(Be(t))for(const r of t.split(";")){const u=r.slice(0,r.indexOf(":")).trim();n[u]==null&&hs(s,u,"")}else for(const r in t)n[r]==null&&hs(s,r,"");for(const r in n){r==="display"&&(l=!0);const u=n[r];u!=null?Df(e,r,!Be(t)&&t?t[r]:void 0,u)||hs(s,r,u):hs(s,r,"")}}else if(i){if(t!==n){const r=s[Mf];r&&(n+=";"+r),s.cssText=n,l=Rf.test(n)}}else t&&e.removeAttribute("style");ea in e&&(e[ea]=l?s.display:"",e[Lf]&&(s.display="none"))}const Xs=/\s*!important$/;function hs(e,t,n){if(pe(n))n.forEach(s=>hs(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))Xs.test(n)?e.setProperty(t,n.replace(Xs,""),"important"):e.setProperty(t,n);else{const s=Ff(e,t);Xs.test(n)?e.setProperty(Cn(s),n.replace(Xs,""),"important"):e[s]=n}}const ta=["Webkit","Moz","ms"],no={};function Ff(e,t){const n=no[t];if(n)return n;let s=ct(t);if(s!=="filter"&&s in e)return no[t]=s;s=Pi(s);for(let i=0;iso||(Bf.then(()=>so=0),so=Date.now());function qf(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const i=n.value;if(pe(i)){const l=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{l.call(s),s._stopped=!0};const r=i.slice(),u=[s];for(let f=0;fe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,zf=(e,t,n,s,i,l)=>{const r=i==="svg";t==="class"?If(e,s,r):t==="style"?Nf(e,n,s):Ti(t)?Ei(t)||jf(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Yf(e,t,s,r))?(ia(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&sa(e,t,s,r,l,t!=="value")):e._isVueCE&&(Gf(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Be(s)))?ia(e,ct(t),s,l,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),sa(e,t,s,r))};function Yf(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&la(t)&&_e(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return la(t)&&Be(n)?!1:t in e}function Gf(e,t){const n=e._def.props;if(!n)return!1;const s=ct(t);return Array.isArray(n)?n.some(i=>ct(i)===s):Object.keys(n).some(i=>ct(i)===s)}const kn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return pe(t)?n=>ni(t,n):t};function Jf(e){e.target.composing=!0}function aa(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const vt=Symbol("_assign"),Zs=Symbol("_initialValue");function io(e,t,n){return t&&(e=e.trim()),n&&(e=Oi(e)),e}const Xe={created(e,{modifiers:{lazy:t,trim:n,number:s}},i){e.parentNode&&(e.type==="text"?e[Zs]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Zs]=e.defaultValue.replace(/\r\n?/g,` +`))),e[vt]=kn(i);const l=s||i.props&&i.props.type==="number";Qt(e,t?"change":"input",r=>{r.target.composing||e[vt](io(e.value,n,l))}),(n||l)&&Qt(e,"change",()=>{e.value=io(e.value,n,l)}),t||(Qt(e,"compositionstart",Jf),Qt(e,"compositionend",aa),Qt(e,"change",aa))},mounted(e,{value:t,modifiers:{trim:n,number:s}}){const i=t??"",l=e[Zs];delete e[Zs],l!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==l?e[vt](io(e.value,n,s)):e.value=i},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:i,number:l}},r){if(e[vt]=kn(r),e.composing)return;const u=(l||e.type==="number")&&!/^0\d/.test(e.value)?Oi(e.value):e.value,f=t??"";if(u===f)return;const h=e.getRootNode();(h instanceof Document||h instanceof ShadowRoot)&&h.activeElement===e&&e.type!=="range"&&(s&&t===n||i&&e.value.trim()===f)||(e.value=f)}},Xf={deep:!0,created(e,t,n){e[vt]=kn(n),Qt(e,"change",()=>{const s=e._modelValue,i=ns(e),l=e.checked,r=e[vt];if(pe(s)){const u=Zo(s,i),f=u!==-1;if(l&&!f)r(s.concat(i));else if(!l&&f){const h=[...s];h.splice(u,1),r(h)}}else if(sn(s)){const u=new Set(s);l?u.add(i):u.delete(i),r(u)}else r(kc(e,l))})},mounted:ra,beforeUpdate(e,t,n){e[vt]=kn(n),ra(e,t,n)}};function ra(e,{value:t,oldValue:n},s){e._modelValue=t;let i;if(pe(t))i=Zo(t,s.props.value)>-1;else if(sn(t))i=t.has(s.props.value);else{if(t===n)return;i=Lt(t,kc(e,!0))}e.checked!==i&&(e.checked=i)}const ca={created(e,{value:t},n){e.checked=Lt(t,n.props.value),e[vt]=kn(n),Qt(e,"change",()=>{e[vt](ns(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[vt]=kn(s),t!==n&&(e.checked=Lt(t,s.props.value))}},jn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,Qt(e,"change",()=>{const i=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>n?Oi(ns(f)):ns(f)),l=e.multiple,r=l?sn(e._modelValue)?new Set(i):i:i[0],u=e._pendingValue=[l,l?pe(r)?i.slice():i:r];try{e[vt](r)}finally{Ri(()=>{e._pendingValue===u&&(e._pendingValue=void 0)})}}),e[vt]=kn(s)},mounted(e,{value:t}){ua(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[vt]=kn(n)},updated(e,{value:t}){const n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!Zf(t,n[1],n[0]))&&ua(e,t)}};function Zf(e,t,n){if(!n||pe(e))return Lt(e,t);if(sn(e)){if(e.size!==t.length)return!1;for(const s of t)if(!e.has(s))return!1;return!0}return!1}function ua(e,t){const n=e.multiple,s=pe(t);if(!(n&&!s&&!sn(t))){for(let i=0,l=e.options.length;iString(h)===String(u)):r.selected=Zo(t,u)>-1}else r.selected=t.has(u);else if(Lt(ns(r),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ns(e){return"_value"in e?e._value:e.value}function kc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Qf=["ctrl","shift","alt","meta"],ep={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Qf.some(n=>e[`${n}Key`]&&!t.includes(n))},At=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((i,...l)=>{for(let r=0;r{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(i=>{if(!("key"in i))return;const l=Cn(i.key);if(t.some(r=>r===l||tp[r]===l))return e(i)}))},np=tt({patchProp:zf},Pf);let da;function sp(){return da||(da=uf(np))}const ip=((...e)=>{const t=sp().createApp(...e),{mount:n}=t;return t.mount=s=>{const i=lp(s);if(!i)return;const l=t._component;!_e(l)&&!l.render&&!l.template&&(l.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const r=n(i,!1,op(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),r},t});function op(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function lp(e){return Be(e)?document.querySelector(e):e}const ap="modulepreload",rp=function(e,t){return new URL(e,t).href},fa={},fn=function(t,n,s){let i=Promise.resolve();if(n&&n.length>0){let h=function(p){return Promise.all(p.map(b=>Promise.resolve(b).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};const r=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),f=u?.nonce||u?.getAttribute("nonce");i=h(n.map(p=>{if(p=rp(p,s),p in fa)return;fa[p]=!0;const b=p.endsWith(".css"),v=b?'[rel="stylesheet"]':"";if(s)for(let M=r.length-1;M>=0;M--){const E=r[M];if(E.href===p&&(!b||E.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${p}"]${v}`))return;const y=document.createElement("link");if(y.rel=b?"stylesheet":ap,b||(y.as="script"),y.crossOrigin="",y.href=p,f&&y.setAttribute("nonce",f),document.head.appendChild(y),b)return new Promise((M,E)=>{y.addEventListener("load",M),y.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${p}`)))})}))}function l(r){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=r,window.dispatchEvent(u),!u.defaultPrevented)throw r}return i.then(r=>{for(const u of r||[])u.status==="rejected"&&l(u.reason);return t().catch(l)})},cp={de:{name:"Deutsch",english:"German",script:"latin",plural:"one_other",clock:"24",checked:!1},"en-GB":{name:"English (UK)",english:"English (UK)",script:"latin",plural:"one_other",clock:"24",checked:!0},en:{name:"English (US)",english:"English (US)",script:"latin",plural:"one_other",clock:"12",checked:!0},es:{name:"Español",english:"Spanish",script:"latin",plural:"one_other",clock:"24",checked:!1},fr:{name:"Français",english:"French",script:"latin",plural:"one_upto_1",clock:"24",checked:!1},it:{name:"Italiano",english:"Italian",script:"latin",plural:"one_other",clock:"24",checked:!1},nl:{name:"Nederlands",english:"Dutch",script:"latin",plural:"one_other",clock:"24",checked:!1},pl:{name:"Polski",english:"Polish",script:"latin",plural:"slavic_pl",clock:"24",checked:!1},pt:{name:"Português",english:"Portuguese",script:"latin",plural:"one_upto_1",clock:"24",checked:!1}};const bi=typeof window<"u",En=(e,t=!1)=>t?Symbol.for(e):Symbol(e),up=(e,t,n)=>dp({l:e,k:t,s:n}),dp=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Ge=e=>typeof e=="number"&&isFinite(e),xc=e=>pl(e)==="[object Date]",vi=e=>pl(e)==="[object RegExp]",fl=e=>De(e)&&Object.keys(e).length===0,ot=Object.assign,fp=Object.create,Le=(e=null)=>fp(e);let pa;const pp=()=>pa||(pa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Le()),hp=Object.prototype.hasOwnProperty;function $t(e,t){return hp.call(e,t)}const He=Array.isArray,Ke=e=>typeof e=="function",oe=e=>typeof e=="string",qe=e=>typeof e=="boolean",Se=e=>e!==null&&typeof e=="object",mp=e=>Se(e)&&Ke(e.then)&&Ke(e.catch),Sc=Object.prototype.toString,pl=e=>Sc.call(e),De=e=>pl(e)==="[object Object]",bp=e=>e==null?"":He(e)||De(e)&&e.toString===Sc?JSON.stringify(e,null,2):String(e);function vp(e,t=""){return e.reduce((n,s,i)=>i===0?n+s:n+t+s,"")}function gp(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}function ha(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function _p(e){return e.replace(/&(?![a-z0-9#]{2,6};)/gi,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}const yp=/^javascript:/i,wp=/^(?:href|src|action|formaction)$/i,kp=/&#(?:x([0-9a-f]+)|(\d+));?/gi,$p=/&(?:Tab|NewLine);/g,xp=/:?/gi,Sp=/[\u0000-\u0020\u007f-\u009f]/g,Cp=/(?:^|[\s"'<>/])on\w+\s*=\s*["']?[^"'>]+["']?/i,Tp=/(^|[\s"'<>/])on(\w+\s*=)/gi,Ep=/(^|[\s"'<>/])((?:href|src|action|formaction)\s*=\s*)([^\s"'=<>`]+)/gi;function Ap(e,t,n){const s=t||n;if(!s)return e;const i=Number.parseInt(s,t?16:10);return i<=127?String.fromCharCode(i):e}function hl(e){const t=e.replace(kp,Ap).replace($p,"").replace(xp,":").replace(Sp,"");return yp.test(t)}function Pp(e){const t=/url\s*\(/gi;let n="",s=0,i;for(;(i=t.exec(e))!==null;){const l=i.index,r=t.lastIndex-1;let u=r+1,f=1,h=null;for(;u`${n}="${ma(n,s)}"`),e=e.replace(/([\w:-]+)\s*=\s*'([^']*)'/g,(t,n,s)=>`${n}='${ma(n,s)}'`),Cp.test(e)&&(e=e.replace(Tp,"$1on$2")),e=e.replace(Ep,(t,n,s,i)=>hl(i)?`${n}${s}about:blank`:t),e}const ba=e=>!Se(e)||He(e);function ii(e,t){if(ba(e)||ba(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:s,des:i}=n.pop();Object.keys(s).forEach(l=>{if(l==="__proto__")return;const r=s[l];if(He(r)){const u=[];u.length=r.length,i[l]=u,n.push({src:r,des:u})}else Se(r)?((!Se(i[l])||He(i[l]))&&(i[l]=Le()),n.push({src:r,des:i[l]})):i[l]=r})}}const Ip=17;function Cc(e,t,n={}){const{domain:s,messages:i,args:l}=n,r=e,u=new SyntaxError(String(r));return u.code=e,u.domain=s,u}function Bt(e){return Se(e)&&ml(e)===0&&($t(e,"b")||$t(e,"body"))}const Tc=["b","body"];function Lp(e){return An(e,Tc)}const Ec=["c","cases"];function Mp(e){return An(e,Ec,[])}const Ac=["s","static"];function Rp(e){return An(e,Ac)}const Pc=["i","items"];function Np(e){return An(e,Pc,[])}const Oc=["t","type"];function ml(e){return An(e,Oc)}const Ic=["v","value"];function Qs(e,t){const n=An(e,Ic);if(n!=null)return n;throw Os(t)}const Lc=["m","modifier"];function Fp(e){return An(e,Lc)}const Mc=["k","key"];function Dp(e){const t=An(e,Mc);if(t)return t;throw Os(6)}function An(e,t,n){for(let s=0;sUp(n,e)}function Up(e,t){const n=Lp(t);if(n==null)throw Os(0);if(ml(n)===1){const l=Mp(n);return e.plural(l.reduce((r,u)=>[...r,ga(e,u)],[]))}else return ga(e,n)}function ga(e,t){const n=Rp(t);if(n!=null)return e.type==="text"?n:e.normalize([n]);{const s=Np(t).reduce((i,l)=>[...i,Eo(e,l)],[]);return e.normalize(s)}}function Eo(e,t){const n=ml(t);switch(n){case 3:return Qs(t,n);case 9:return Qs(t,n);case 4:{const s=t;if($t(s,"k")&&s.k)return e.interpolate(e.named(s.k));if($t(s,"key")&&s.key)return e.interpolate(e.named(s.key));throw Os(n)}case 5:{const s=t;if($t(s,"i")&&Ge(s.i))return e.interpolate(e.list(s.i));if($t(s,"index")&&Ge(s.index))return e.interpolate(e.list(s.index));throw Os(n)}case 6:{const s=t,i=Fp(s),l=Dp(s);return e.linked(Eo(e,l),i?Eo(e,i):void 0,e.type)}case 7:return Qs(t,n);case 8:return Qs(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}let _a=Le();function jp(e,t){{const n=e.cacheKey;if(n){const s=_a[n];return s||(_a[n]=va(e))}else return va(e)}}const en={INVALID_ARGUMENT:Ip,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23},Hp=24;function tn(e){return Cc(e,null,void 0)}function bl(e,t){return t.locale!=null?ya(t.locale):ya(e.locale)}let oo;function ya(e){if(oe(e))return e;if(Ke(e)){if(e.resolvedOnce&&oo!=null)return oo;if(e.constructor.name==="Function"){const t=e();if(mp(t))throw tn(en.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return oo=t}else throw tn(en.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw tn(en.NOT_SUPPORT_LOCALE_TYPE)}function Vp(e,t,n){return[...new Set([n,...He(t)?t:Se(t)?Object.keys(t).filter(s=>s!=="default"):oe(t)?[t]:[n]])]}function Ao(e,t,n){const s=oe(n)?n:gi,i=e;let l;Se(t)?(i.__localeChainObjectCache||(i.__localeChainObjectCache=new WeakMap),l=i.__localeChainObjectCache.get(t),l||(l=new Map,i.__localeChainObjectCache.set(t,l))):(i.__localeChainCache||(i.__localeChainCache=new Map),l=i.__localeChainCache.get(t),l||(l=new Map,i.__localeChainCache.set(t,l)));const r=l.get(s);if(r)return r;const u=[];let f=[n];for(;He(f);)f=wa(u,f,t);const h=He(t)||!De(t)?t:t.default?t.default:null;return f=oe(h)?[h]:h,He(f)&&wa(u,f,!1),l.set(s,u),u}function wa(e,t,n){let s=!0;for(let i=0;i{r===void 0?r=u:r+=u},v[1]=()=>{r!==void 0&&(t.push(r),r=void 0)},v[2]=()=>{v[0](),i++},v[3]=()=>{if(i>0)i--,s=4,v[0]();else{if(i=0,r===void 0||(r=Gp(r),r===!1))return!1;v[1]()}};function y(){const M=e[n+1];if(s===5&&M==="'"||s===6&&M==='"')return n++,u="\\"+M,v[0](),!0}for(;s!==null;)if(n++,l=e[n],!(l==="\\"&&y())){if(f=Yp(l),b=Pn[s],h=b[f]||b.l||8,h===8||(s=h[0],h[1]!==void 0&&(p=v[h[1]],p&&(u=l,p()===!1))))return;if(s===7)return t}}const ka=new Map;function Xp(e,t){return Se(e)?e[t]:null}function Zp(e,t){if(!Se(e))return null;let n=ka.get(t);if(n||(n=Jp(t),n&&ka.set(t,n)),!n)return null;const s=n.length;let i=e,l=0;for(;l`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function eh(){return{upper:(e,t)=>t==="text"&&oe(e)?e.toUpperCase():t==="vnode"&&Se(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&oe(e)?e.toLowerCase():t==="vnode"&&Se(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&oe(e)?$a(e):t==="vnode"&&Se(e)&&"__v_isVNode"in e?$a(e.children):e}}let Nc;function th(e){Nc=e}let Fc;function nh(e){Fc=e}let Dc;function sh(e){Dc=e}let Uc=null;const xa=e=>{Uc=e},Sa=()=>Uc;let Ca=0;function ih(e={}){const t=Ke(e.onWarn)?e.onWarn:gp,n=oe(e.version)?e.version:Qp,s=oe(e.locale)||Ke(e.locale)?e.locale:gi,i=Ke(s)?gi:s,l=He(e.fallbackLocale)||De(e.fallbackLocale)||oe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,r=De(e.messages)?e.messages:lo(i),u=De(e.datetimeFormats)?e.datetimeFormats:lo(i),f=De(e.numberFormats)?e.numberFormats:lo(i),h=ot(Le(),e.modifiers,eh()),p=e.pluralRules||Le(),b=Ke(e.missing)?e.missing:null,v=qe(e.missingWarn)||vi(e.missingWarn)?e.missingWarn:!0,y=qe(e.fallbackWarn)||vi(e.fallbackWarn)?e.fallbackWarn:!0,M=!!e.fallbackFormat,E=!!e.unresolving,x=Ke(e.postTranslation)?e.postTranslation:null,O=De(e.processor)?e.processor:null,C=qe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,F=!!e.escapeParameter,T=Ke(e.messageCompiler)?e.messageCompiler:Nc,V=Ke(e.messageResolver)?e.messageResolver:Fc||Xp,L=Ke(e.localeFallbacker)?e.localeFallbacker:Dc||Vp,k=Se(e.fallbackContext)?e.fallbackContext:void 0,A=e,z=Se(A.__datetimeFormatters)?A.__datetimeFormatters:new Map,P=Se(A.__numberFormatters)?A.__numberFormatters:new Map,ge=Se(A.__meta)?A.__meta:{};Ca++;const G={version:n,cid:Ca,locale:s,fallbackLocale:l,messages:r,modifiers:h,pluralRules:p,missing:b,missingWarn:v,fallbackWarn:y,fallbackFormat:M,unresolving:E,postTranslation:x,processor:O,warnHtmlMessage:C,escapeParameter:F,messageCompiler:T,messageResolver:V,localeFallbacker:L,fallbackContext:k,onWarn:t,__meta:ge};return G.datetimeFormats=u,G.numberFormats=f,G.__datetimeFormatters=z,G.__numberFormatters=P,G}const lo=e=>({[e]:Le()});function jc(e,t,n,s,i){const{missing:l,onWarn:r}=e;if(l!==null){const u=l(e,n,t,i);return oe(u)?u:t}else return t}function Ta(e,t){const n=e;Se(t)?n.__localeChainObjectCache?.delete(t):n.__localeChainCache?.delete(t)}function ei(e,t,n){Ta(e,n),e.fallbackContext&&Ta(e.fallbackContext,n),e.localeFallbacker(e,n,t)}function oh(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function lh(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let s=n+1;s{s.includes(f)?u[f]=i[f]:t[f]=i[f]}),oe(l)?t.locale=l:De(l)&&(u=l),De(r)&&(u=r),u}function Ea(e,...t){const{datetimeFormats:n,unresolving:s,onWarn:i}=e,{__datetimeFormatters:l}=e;if(!oe(t[0])&&!xc(t[0])&&!Ge(t[0]))return _i;const[r,u,f,h]=Po(...t),p=qe(f.missingWarn)?f.missingWarn:e.missingWarn,b=qe(f.fallbackWarn)?f.fallbackWarn:e.fallbackWarn,v=!!f.part,y=bl(e,f);if(!oe(r)||r===""){const C=new Intl.DateTimeFormat(y.replace(/!/g,""),h);return v?C.formatToParts(u):C.format(u)}const M=Hc(e,r,y,n,p,b,"datetime format");if(!oe(M))return s?ji:r;const E=n[M][r],x=Vc(M,r,h);let O=l.get(x);return O||(O=new Intl.DateTimeFormat(M,ot({},E,h)),l.set(x,O)),v?O.formatToParts(u):O.format(u)}const Kc=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function Po(...e){const[t]=e,n=Le(),s=Le();let i;if(oe(t)){const r=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!r)throw tn(en.INVALID_ISO_DATE_ARGUMENT);const u=r[3]?r[3].trim().startsWith("T")?`${r[1].trim()}${r[3].trim()}`:`${r[1].trim()}T${r[3].trim()}`:r[1].trim();i=new Date(u);try{i.toISOString()}catch{throw tn(en.INVALID_ISO_DATE_ARGUMENT)}}else if(xc(t)){if(isNaN(t.getTime()))throw tn(en.INVALID_DATE_ARGUMENT);i=t}else if(Ge(t))i=t;else throw tn(en.INVALID_ARGUMENT);const l=Bc(e,n,s,Kc);return[n.key||"",i,n,l]}function Aa(e,t,n){Wc(e.__datetimeFormatters,t,n)}function Pa(e,...t){const{numberFormats:n,unresolving:s,onWarn:i}=e,{__numberFormatters:l}=e;if(!Ge(t[0]))return _i;const[r,u,f,h]=Oo(...t),p=qe(f.missingWarn)?f.missingWarn:e.missingWarn,b=qe(f.fallbackWarn)?f.fallbackWarn:e.fallbackWarn,v=!!f.part,y=bl(e,f);if(!oe(r)||r===""){const C=new Intl.NumberFormat(y.replace(/!/g,""),h);return v?C.formatToParts(u):C.format(u)}const M=Hc(e,r,y,n,p,b,"number format");if(!oe(M))return s?ji:r;const E=n[M][r],x=Vc(M,r,h);let O=l.get(x);return O||(O=new Intl.NumberFormat(M,ot({},E,h)),l.set(x,O)),v?O.formatToParts(u):O.format(u)}const qc=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function Oo(...e){const[t]=e,n=Le(),s=Le();if(!Ge(t))throw tn(en.INVALID_ARGUMENT);const i=t,l=Bc(e,n,s,qc);return[n.key||"",i,n,l]}function Oa(e,t,n){Wc(e.__numberFormatters,t,n)}const ah=e=>e,rh=e=>"",ch="text",uh=e=>e.length===0?"":vp(e),dh=bp;function ao(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function fh(e){const t=Ge(e.pluralIndex)?e.pluralIndex:-1;return Ge(e.named?.count)?e.named.count:Ge(e.named?.n)?e.named.n:t}function ph(e={}){const t=e.locale,n=fh(e),s=oe(t)&&Ke(e.pluralRules?.[t])?e.pluralRules[t]:ao,i=s===ao?void 0:ao,l=O=>O[s(n,O.length,i)],r=e.list||[],u=O=>r[O],f=e.named||Le();Ge(e.pluralIndex)&&(f.count||=e.pluralIndex,f.n||=e.pluralIndex);const h=O=>f[O];function p(O,C){const F=Ke(e.messages)?e.messages(O,!!C):Se(e.messages)?e.messages[O]:!1;return F||(e.parent?e.parent.message(O):rh)}const b=O=>e.modifiers?e.modifiers[O]:ah,v=Ke(e.processor?.normalize)?e.processor.normalize:uh,y=Ke(e.processor?.interpolate)?e.processor.interpolate:dh,M=oe(e.processor?.type)?e.processor.type:ch,x={list:u,named:h,plural:l,linked:(O,...C)=>{const[F,T]=C;let V="text",L="";C.length===1?Se(F)?(L=F.modifier||L,V=F.type||V):oe(F)&&(L=F||L):C.length===2&&(oe(F)&&(L=F||L),oe(T)&&(V=T||V));const k=p(O,!0)(x),A=k===""||k===void 0?O:k,z=V==="vnode"&&He(A)&&L?A[0]:A;return L?b(L)(z,V):z},message:p,type:M,interpolate:y,normalize:v,values:ot(Le(),r,f)};return x}const Ia=()=>"",nn=e=>Ke(e);function La(e,...t){const{fallbackFormat:n,postTranslation:s,unresolving:i,messageCompiler:l,fallbackLocale:r,messages:u}=e,[f,h]=Io(...t),p=qe(h.missingWarn)?h.missingWarn:e.missingWarn,b=qe(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,v=qe(h.escapeParameter)?h.escapeParameter:e.escapeParameter,y=!!h.resolvedMessage,M=oe(h.default)||qe(h.default)?qe(h.default)?l?f:()=>f:h.default:n?l?f:()=>f:null,E=n||M!=null&&(oe(M)||Ke(M)),x=bl(e,h);v&&hh(h);let[O,C,F]=y?[f,x,u[x]||Le()]:zc(e,f,x,r,b,p),T=O,V=f;if(!y&&!(oe(T)||Bt(T)||nn(T))&&E&&(T=M,V=T),!y&&(!(oe(T)||Bt(T)||nn(T))||!oe(C)))return i?ji:f;let L=!1;const k=()=>{L=!0},A=nn(T)?T:Yc(e,f,C,T,V,k);if(L)return T;const z=vh(e,C,F,h),P=ph(z),ge=mh(e,A,P);let G=s?s(ge,f):ge;return v&&oe(G)&&(G=Op(G)),G}function hh(e){He(e.list)?e.list=e.list.map(t=>oe(t)?ha(t):t):Se(e.named)&&Object.keys(e.named).forEach(t=>{oe(e.named[t])&&(e.named[t]=ha(e.named[t]))})}function zc(e,t,n,s,i,l){const{messages:r,onWarn:u,messageResolver:f,localeFallbacker:h}=e,p=h(e,s,n);let b=Le(),v,y=null;const M="translate";for(let E=0;Es);return h.locale=n,h.key=t,h}const f=r(s,bh(e,n,i,s,u,l));return f.locale=n,f.key=t,f.source=s,f}function mh(e,t,n){return t(n)}function Io(...e){const[t,n,s]=e,i=Le();if(!oe(t)&&!Ge(t)&&!nn(t)&&!Bt(t))throw tn(en.INVALID_ARGUMENT);const l=Ge(t)?String(t):(nn(t),t);return Ge(n)?i.plural=n:oe(n)?i.default=n:De(n)&&!fl(n)?i.named=n:He(n)&&(i.list=n),Ge(s)?i.plural=s:oe(s)?i.default=s:De(s)&&ot(i,s),[l,i]}function bh(e,t,n,s,i,l){return{locale:t,key:n,warnHtmlMessage:i,onError:r=>{throw l&&l(r),r},onCacheKey:r=>up(t,n,r)}}function vh(e,t,n,s){const{modifiers:i,pluralRules:l,messageResolver:r,fallbackLocale:u,fallbackWarn:f,missingWarn:h,fallbackContext:p}=e,v={locale:t,modifiers:i,pluralRules:l,messages:(y,M)=>{let E=r(n,y);if(E==null&&(p||M)){const[x,,O]=zc(p||e,y,t,u,f,h);E=x??r(O,y)}if(oe(E)||Bt(E)){let x=!1;const C=Yc(e,y,t,E,y,()=>{x=!0});return x?Ia:C}else return nn(E)?E:Ia}};return e.processor&&(v.processor=e.processor),s.list&&(v.list=s.list),s.named&&(v.named=s.named),Ge(s.plural)&&(v.pluralIndex=s.plural),v}const gh="11.4.12",gt={UNEXPECTED_RETURN_TYPE:Hp,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Ct(e,...t){return Cc(e,null,void 0)}const Lo=En("__translateVNode"),Mo=En("__datetimeParts"),Ro=En("__numberParts"),_h=En("__setPluralRules"),yh=En("__injectWithOption"),Jn=En("__dispose");let Gc=null;{const e=pp().__VUE_INSTANCE_SETTERS__;He(e)&&e.push(t=>{Gc=t})}function Is(e){if(!Se(e)||Bt(e))return e;for(const t in e)if($t(e,t))if(!t.includes("."))Se(e[t])&&Is(e[t]);else{const n=t.split("."),s=n.length-1;let i=e,l=!1;for(let r=0;r{if("locale"in u&&"resource"in u){const{locale:f,resource:h}=u;f?(r[f]=r[f]||Le(),ii(h,r[f])):ii(h,r)}else oe(u)&&ii(JSON.parse(u),r)}),i==null&&l)for(const u in r)$t(r,u)&&Is(r[u]);return r}function wh(e){return e.type}function kh(e,t,n){let s=Se(t.messages)?t.messages:Le();"__i18nGlobal"in n&&(s=Jc(e.locale.value,{messages:s,__i18n:n.__i18nGlobal}));const i=Object.keys(s);i.length&&i.forEach(l=>{e.mergeLocaleMessage(l,s[l])});{if(Se(t.datetimeFormats)){const l=Object.keys(t.datetimeFormats);l.length&&l.forEach(r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])})}if(Se(t.numberFormats)){const l=Object.keys(t.numberFormats);l.length&&l.forEach(r=>{e.mergeNumberFormat(r,t.numberFormats[r])})}}}function Ma(e){return te(Vs,null,e,0)}function Xc(){return Gc??gc()}const Ra=()=>[],$h=()=>!1;let Na=0;function Fa(e){return((t,n,s,i)=>e(n,s,Xc()||void 0,i))}function No(e={}){const{__root:t,__injectWithOption:n}=e,s=t===void 0,i=e.flatJson,l=bi?ke:md;let r=qe(e.inheritLocale)?e.inheritLocale:!0;const u=l(t&&r?t.locale.value:oe(e.locale)?e.locale:gi),f=l(t&&r?t.fallbackLocale.value:oe(e.fallbackLocale)||He(e.fallbackLocale)||De(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:u.value),h=l(Jc(u.value,e)),p=l(De(e.datetimeFormats)?e.datetimeFormats:{[u.value]:{}}),b=l(De(e.numberFormats)?e.numberFormats:{[u.value]:{}});let v=t?t.missingWarn:qe(e.missingWarn)||vi(e.missingWarn)?e.missingWarn:!0,y=t?t.fallbackWarn:qe(e.fallbackWarn)||vi(e.fallbackWarn)?e.fallbackWarn:!0,M=t?t.fallbackRoot:qe(e.fallbackRoot)?e.fallbackRoot:!0,E=!!e.fallbackFormat,x=Ke(e.missing)?e.missing:null,O=Ke(e.missing)?Fa(e.missing):null,C=Ke(e.postTranslation)?e.postTranslation:null,F=t?t.warnHtmlMessage:qe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,T=!!e.escapeParameter;const V=t?t.modifiers:De(e.modifiers)?e.modifiers:{};let L=e.pluralRules||t&&t.pluralRules,k;k=(()=>{s&&xa(null);const I={version:gh,locale:u.value,fallbackLocale:f.value,messages:h.value,modifiers:V,pluralRules:L,missing:O===null?void 0:O,missingWarn:v,fallbackWarn:y,fallbackFormat:E,unresolving:!0,postTranslation:C===null?void 0:C,warnHtmlMessage:F,escapeParameter:T,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};I.datetimeFormats=p.value,I.numberFormats=b.value,I.__datetimeFormatters=De(k)?k.__datetimeFormatters:void 0,I.__numberFormatters=De(k)?k.__numberFormatters:void 0;const N=ih(I);return s&&xa(N),N})(),ei(k,u.value,f.value);function z(){return[u.value,f.value,h.value,p.value,b.value]}const P=$({get:()=>u.value,set:I=>{k.locale=I,u.value=I}});function ge(I){s||(k.fallbackContext=t?Sa():void 0);try{ei(k,u.value,I)}finally{s||(k.fallbackContext=void 0)}}const G=$({get:()=>f.value,set:I=>{f.value=I,k.fallbackLocale=f.value,ge(f.value)}}),ie=$(()=>h.value),be=$(()=>p.value),se=$(()=>b.value);function ue(){return Ke(C)?C:null}function ye(I){C=I,k.postTranslation=I}function $e(){return x}function Ye(I){I!==null&&(O=Fa(I)),x=I,k.missing=O}const le=(I,N,re,fe,Ie,Ue)=>{z();let We;try{s||(k.fallbackContext=t?Sa():void 0),We=I(k)}finally{s||(k.fallbackContext=void 0)}if(re!=="translate exists"&&Ge(We)&&We===ji||re==="translate exists"&&!We){const[yt,qn]=N();return t&&M?fe(t):Ie(yt)}else{if(Ue(We))return We;throw Ct(gt.UNEXPECTED_RETURN_TYPE)}};function ee(...I){return le(N=>Reflect.apply(La,null,[N,...I]),()=>Io(...I),"translate",N=>Reflect.apply(N.t,N,[...I]),N=>N,N=>oe(N))}function ae(...I){const[N,re,fe]=I;if(fe&&!Se(fe))throw Ct(gt.INVALID_ARGUMENT);return ee(N,re,ot({resolvedMessage:!0},fe||{}))}function de(...I){return le(N=>Reflect.apply(Ea,null,[N,...I]),()=>Po(...I),"datetime format",N=>Reflect.apply(N.d,N,[...I]),()=>_i,N=>oe(N)||He(N))}function X(...I){return le(N=>Reflect.apply(Pa,null,[N,...I]),()=>Oo(...I),"number format",N=>Reflect.apply(N.n,N,[...I]),()=>_i,N=>oe(N)||He(N))}function K(I){return I.map(N=>oe(N)||Ge(N)||qe(N)?Ma(String(N)):N)}const we={normalize:K,interpolate:I=>I,type:"vnode"};function rs(...I){return le(N=>{let re;const fe=N;try{fe.processor=we,re=Reflect.apply(La,null,[fe,...I])}finally{fe.processor=null}return re},()=>Io(...I),"translate",N=>N[Lo](...I),N=>[Ma(N)],N=>He(N))}function zs(...I){return le(N=>Reflect.apply(Pa,null,[N,...I]),()=>Oo(...I),"number format",N=>N[Ro](...I),Ra,N=>oe(N)||He(N))}function On(...I){return le(N=>Reflect.apply(Ea,null,[N,...I]),()=>Po(...I),"datetime format",N=>N[Mo](...I),Ra,N=>oe(N)||He(N))}function El(I){L=I,k.pluralRules=L}function w(I,N){return le(()=>{if(!I)return!1;const re=oe(N)?N:u.value,fe=oe(N)?[re]:Ao(k,f.value,re);for(let Ie=0;Ie[I],"translate exists",re=>Reflect.apply(re.te,re,[I,N]),$h,re=>qe(re))}function S(I){let N=null;const re=Ao(k,f.value,u.value);for(let fe=0;fege(f.value),{deep:!0,flush:"sync"}),t&&bi&&(St(t.locale,I=>{r&&(u.value=I,k.locale=I,ei(k,u.value,f.value))}),St(t.fallbackLocale,I=>{r&&(f.value=I,k.fallbackLocale=f.value,ei(k,u.value,f.value))}));const Z={id:Na,locale:P,fallbackLocale:G,get inheritLocale(){return r},set inheritLocale(I){r=I,I&&t&&(P.value=t.locale.value,G.value=t.fallbackLocale.value)},get availableLocales(){return Object.keys(h.value).sort()},messages:ie,get modifiers(){return V},get pluralRules(){return L||{}},get isGlobal(){return s},get missingWarn(){return v},set missingWarn(I){v=I,k.missingWarn=v},get fallbackWarn(){return y},set fallbackWarn(I){y=I,k.fallbackWarn=y},get fallbackRoot(){return M},set fallbackRoot(I){M=I},get fallbackFormat(){return E},set fallbackFormat(I){E=I,k.fallbackFormat=E},get warnHtmlMessage(){return F},set warnHtmlMessage(I){F=I,k.warnHtmlMessage=I},get escapeParameter(){return T},set escapeParameter(I){T=I,k.escapeParameter=I},t:ee,getLocaleMessage:W,setLocaleMessage:D,mergeLocaleMessage:j,getPostTranslationHandler:ue,setPostTranslationHandler:ye,getMissingHandler:$e,setMissingHandler:Ye,[_h]:El};return Z.datetimeFormats=be,Z.numberFormats=se,Z.rt=ae,Z.te=w,Z.tm=R,Z.d=de,Z.n=X,Z.getDateTimeFormat=J,Z.setDateTimeFormat=Y,Z.mergeDateTimeFormat=q,Z.getNumberFormat=U,Z.setNumberFormat=ce,Z.mergeNumberFormat=Q,Z[yh]=n,Z[Lo]=rs,Z[Mo]=On,Z[Ro]=zs,Z}const vl={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function xh({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((s,i)=>[...s,...i.type===B?i.children:[i]],[]):t.reduce((n,s)=>{const i=e[s];return i&&(n[s]=i()),n},Le())}function Zc(){return B}const Sh=Me({name:"i18n-t",props:ot({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Ge(e)||!isNaN(e)}},vl),setup(e,t){const{slots:n,attrs:s}=t,i=e.i18n||gl({useScope:e.scope,__useComponent:!0});return()=>{const l=()=>{const f=Object.keys(n).filter(b=>b[0]!=="_"),h=Le();e.locale&&(h.locale=e.locale),e.plural!==void 0&&(h.plural=oe(e.plural)?+e.plural:e.plural);const p=xh(t,f);return i[Lo](e.keypath,p,h)},r=ot(Le(),s),u=oe(e.tag)||Se(e.tag)?e.tag:Zc();return Se(u)?mi(u,r,{default:l}):mi(u,r,l())}}}),Da=Sh;function Ch(e){return He(e)&&!oe(e[0])}function Qc(e,t,n,s){const{slots:i,attrs:l}=t;return()=>{const r=()=>{const h={part:!0};let p=Le();e.locale&&(h.locale=e.locale),oe(e.format)?h.key=e.format:Se(e.format)&&(oe(e.format.key)&&(h.key=e.format.key),p=Object.keys(e.format).reduce((y,M)=>n.includes(M)?ot(Le(),y,{[M]:e.format[M]}):y,Le()));const b=s(e.value,h,p);let v=[h.key];return He(b)?v=b.map((y,M)=>{const E=i[y.type],x=E?E({[y.type]:y.value,index:M,parts:b}):[y.value];return Ch(x)&&(x[0].key=`${y.type}-${M}`),x}):oe(b)&&(v=[b]),v},u=ot(Le(),l),f=oe(e.tag)||Se(e.tag)?e.tag:Zc();return Se(f)?mi(f,u,{default:r}):mi(f,u,r())}}const Th=Me({name:"i18n-n",props:ot({value:{type:Number,required:!0},format:{type:[String,Object]}},vl),setup(e,t){const n=e.i18n||gl({useScope:e.scope,__useComponent:!0});return Qc(e,t,qc,(...s)=>n[Ro](...s))}}),Ua=Th;function Eh(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const s=n.__getInstance(t);return s!=null?s.__composer:e.global.__composer}}function Ah(e){const t=r=>{const{instance:u,value:f}=r;if(!u||!u.$)throw Ct(gt.UNEXPECTED_ERROR);const h=Eh(e,u.$),p=ja(f);return[Reflect.apply(h.t,h,[...Ha(p)]),h]};return{created:(r,u)=>{const[f,h]=t(u);bi&&(r.__i18nWatcher=St(h.locale,()=>{u.instance&&u.instance.$forceUpdate()})),r.__composer=h,r.textContent=f},unmounted:r=>{bi&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:u})=>{if(r.__composer){const f=r.__composer,h=ja(u);r.textContent=Reflect.apply(f.t,f,[...Ha(h)])}},getSSRProps:r=>{const[u]=t(r);return{textContent:u}}}}function ja(e){if(oe(e))return{path:e};if(De(e)){if(!("path"in e))throw Ct(gt.REQUIRED_VALUE,"path");return e}else throw Ct(gt.INVALID_VALUE)}function Ha(e){const{path:t,locale:n,args:s,choice:i,plural:l}=e,r={},u=s||{};return oe(n)&&(r.locale=n),Ge(i)&&(r.plural=i),Ge(l)&&(r.plural=l),[t,u,r]}function Ph(e,t,...n){const s=De(n[0])?n[0]:{};(!qe(s.globalInstall)||s.globalInstall)&&([Da.name,"I18nT"].forEach(l=>e.component(l,Da)),[Ua.name,"I18nN"].forEach(l=>e.component(l,Ua)),[Ba.name,"I18nD"].forEach(l=>e.component(l,Ba))),e.directive("t",Ah(t))}const Oh=En("global-vue-i18n");function Ih(e={}){const t=qe(e.globalInjection)?e.globalInjection:!0,n=new Map,[s,i]=Lh(e),l=En("");function r(p){return n.get(p)||null}function u(p,b){n.set(p,b)}function f(p){n.delete(p)}const h={get mode(){return"composition"},async install(p,...b){if(p.__VUE_I18N_SYMBOL__=l,p.provide(p.__VUE_I18N_SYMBOL__,h),De(b[0])){const M=b[0];h.__composerExtend=M.__composerExtend,h.__vueI18nExtend=M.__vueI18nExtend}let v=null;t&&(v=jh(p,h.global)),Ph(p,h,...b);const y=p.unmount;p.unmount=()=>{v&&v(),h.dispose(),y()}},get global(){return i},dispose(){s.stop()},__instances:n,__getInstance:r,__setInstance:u,__deleteInstance:f};return h}function gl(e={}){const t=Xc();if(t==null)throw Ct(gt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Ct(gt.NOT_INSTALLED);const n=Mh(t),s=Nh(n),i=wh(t),l=Rh(e,i);if(l==="global")return kh(s,e,i),s;if(l==="parent"){let f=Va(n,t,e.__useComponent);return f==null&&(f=s),f}if(l==="isolated"){if(n.mode!=="composition")throw Ct(gt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const f=n,h=ot({},e),p=Va(n,t);h.__root=p||s;const b=No(h);return f.__composerExtend&&(b[Jn]=f.__composerExtend(b)),kr()&&Gu(()=>{const y=b[Jn];y&&(y(),delete b[Jn])}),b}const r=n;let u=r.__getInstance(t);if(u==null){const f=ot({},e);"__i18n"in i&&(f.__i18n=i.__i18n),s&&(f.__root=s),u=No(f),r.__composerExtend&&(u[Jn]=r.__composerExtend(u)),Dh(r,t,u),r.__setInstance(t,u)}return u}function Lh(e,t){const n=Yu(),s=n.run(()=>No(e));if(s==null)throw Ct(gt.UNEXPECTED_ERROR);return[n,s]}function Mh(e){const t=ws(e.isCE?Oh:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Ct(e.isCE?gt.NOT_INSTALLED_WITH_PROVIDE:gt.UNEXPECTED_ERROR);return t}function Rh(e,t){return fl(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Nh(e){return e.mode==="composition"?e.global:e.global.__composer}function Va(e,t,n=!1){let s=null;const i=t.root;let l=Fh(t,n);for(;l!=null;){const r=e;if(e.mode==="composition"&&(s=r.__getInstance(l)),s!=null||i===l)break;l=l.parent}return s}function Fh(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Dh(e,t,n){Tn(()=>{},t),cl(()=>{const s=n;e.__deleteInstance(t);const i=s[Jn];i&&(i(),delete s[Jn])},t)}const Uh=["locale","fallbackLocale","availableLocales"],Wa=["t","rt","d","n","tm","te"];function jh(e,t){const n=Object.create(null);return Uh.forEach(i=>{const l=Object.getOwnPropertyDescriptor(t,i);if(!l)throw Ct(gt.UNEXPECTED_ERROR);const r=et(l.value)?{get(){return l.value.value},set(u){l.value.value=u}}:{get(){return l.get&&l.get()}};Object.defineProperty(n,i,r)}),e.config.globalProperties.$i18n=n,Wa.forEach(i=>{const l=Object.getOwnPropertyDescriptor(t,i);if(!l||!l.value)throw Ct(gt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${i}`,l)}),()=>{delete e.config.globalProperties.$i18n,Wa.forEach(i=>{delete e.config.globalProperties[`$${i}`]})}}const Hh=Me({name:"i18n-d",props:ot({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},vl),setup(e,t){const n=e.i18n||gl({useScope:e.scope,__useComponent:!0});return Qc(e,t,Kc,(...s)=>n[Mo](...s))}}),Ba=Hh;th(jp);nh(Zp);sh(Ao);const Vh={editor:{common:{undo:{t:0,b:{t:2,i:[{t:3}],s:"Undo"}},online:{t:0,b:{t:2,i:[{t:3}],s:"Online"}},offline:{t:0,b:{t:2,i:[{t:3}],s:"Offline"}},unknown:{t:0,b:{t:2,i:[{t:3}],s:"unknown"}},unsaved:{t:0,b:{t:2,i:[{t:3}],s:"Unsaved changes"}},cancel:{t:0,b:{t:2,i:[{t:3}],s:"Cancel"}},open_integrations:{t:0,b:{t:2,i:[{t:3}],s:"Open Devices & services"}},save_send:{t:0,b:{t:2,i:[{t:3}],s:"Save & send"}},saving:{t:0,b:{t:2,i:[{t:3}],s:"Saving…"}},read_current_data:{t:0,b:{t:2,i:[{t:3}],s:"Read current data"}},results:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 result. Keep typing to narrow it down."},{t:2,i:[{t:4,k:"n"},{t:3,v:" results. Keep typing to narrow it down."}]}]}},close:{t:0,b:{t:2,i:[{t:3}],s:"Close"}},remove:{t:0,b:{t:2,i:[{t:3}],s:"Remove"}},change:{t:0,b:{t:2,i:[{t:3}],s:"Change"}},loading:{t:0,b:{t:2,i:[{t:3}],s:"Loading…"}},back:{t:0,b:{t:2,i:[{t:3}],s:"← Back"}},copy:{t:0,b:{t:2,i:[{t:3}],s:"Copy"}}},nav:{new_screen:{t:0,b:{t:2,i:[{t:3}],s:"New screen"}},firmware:{t:0,b:{t:2,i:[{t:3}],s:"Firmware & USB"}},alerts:{t:0,b:{t:2,i:[{t:3}],s:"Alerts"}},settings:{t:0,b:{t:2,i:[{t:3}],s:"Settings"}},new_screen_detail:{t:0,b:{t:2,i:[{t:3}],s:"Connect and install"}}},api:{failed:{t:0,b:{t:2,i:[{t:3}],s:"That didn't work. Refresh the page and try again."}}},copy:{api_key:{copied:{t:0,b:{t:2,i:[{t:3}],s:"API key copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"API key is selected. Copy with Ctrl+C or Command+C."}}},layout_json:{copied:{t:0,b:{t:2,i:[{t:3}],s:"Layout JSON copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"Layout JSON is selected. Copy with Ctrl+C or Command+C."}}},action_name:{copied:{t:0,b:{t:2,i:[{t:3}],s:"Action name copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"Action name is selected. Copy with Ctrl+C or Command+C."}}},yaml:{copied:{t:0,b:{t:2,i:[{t:3}],s:"YAML copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"YAML is selected. Copy with Ctrl+C or Command+C."}}},icon_name:{copied:{t:0,b:{t:2,i:[{t:3}],s:"Icon name copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"Icon name is selected. Copy with Ctrl+C or Command+C."}}},empty_color:{copied:{t:0,b:{t:2,i:[{t:3}],s:"Empty color copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"Empty color is selected. Copy with Ctrl+C or Command+C."}}},color_name:{copied:{t:0,b:{t:2,i:[{t:3}],s:"Color name copied."}},selected:{t:0,b:{t:2,i:[{t:3}],s:"Color name is selected. Copy with Ctrl+C or Command+C."}}}},sidebar:{connection:{unreachable:{t:0,b:{t:2,i:[{t:3}],s:"Management page unreachable · retrying…"}},connected:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant connected"}},reconnecting:{t:0,b:{t:2,i:[{t:3}],s:"Reconnecting to Home Assistant…"}}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search"}},screens:{t:0,b:{t:2,i:[{t:3}],s:"Screens"}},more:{t:0,b:{t:2,i:[{t:3}],s:"More"}},refresh:{t:0,b:{t:2,i:[{t:3}],s:"Refresh"}},update:{pill:{t:0,b:{t:2,i:[{t:3}],s:"Update"}},button:{t:0,b:{t:2,i:[{t:3}],s:"Update"}},queued:{t:0,b:{t:2,i:[{t:3}],s:"Queued for the update"}},available:{t:0,b:{t:2,i:[{t:3,v:"Update "},{t:4,k:"version"}]}},no_profile:{t:0,b:{t:2,i:[{t:3}],s:"No ESPHome profile found with this device name."}},whats_new:{t:0,b:{t:2,i:[{t:3}],s:"What's new"}},full_log:{t:0,b:{t:2,i:[{t:3}],s:"Full log"}}},host:{hint:{t:0,b:{t:2,i:[{t:3}],s:"The IP address, once; new firmware reports it itself."}},placeholder:{t:0,b:{t:2,i:[{t:3}],s:"IP address, e.g. 192.168.1.50"}},label:{t:0,b:{t:2,i:[{t:3}],s:"IP address"}},start:{t:0,b:{t:2,i:[{t:3}],s:"Start"}}},pending:{installed:{t:0,b:{t:2,i:[{t:3}],s:"Installed, but not yet in Home Assistant. Add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and turn on “Allow the device to perform Home Assistant actions” under Configure."}},downloaded:{t:0,b:{t:2,i:[{t:3}],s:"Firmware downloaded, not yet in Home Assistant. Put it on the screen with ESPHome Web, then add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and allow the Home Assistant actions under Configure."}},not_flashed:{t:0,b:{t:2,i:[{t:3,v:"Not yet in Home Assistant. Already flashed? Add the ESPHome device under Settings → Devices & services, then allow the Home Assistant actions under Configure. Not flashed yet? Firmware & USB → "},{t:4,k:"file"},{t:3,v:"."}]}}},copy_api_key:{t:0,b:{t:2,i:[{t:3}],s:"Copy API key"}}},palette:{groups:{screens:{t:0,b:{t:2,i:[{t:3}],s:"Screens"}},actions:{t:0,b:{t:2,i:[{t:3}],s:"Actions"}},add:{t:0,b:{t:2,i:[{t:3}],s:"Add to this screen"}}},alerts_detail:{t:0,b:{t:2,i:[{t:3}],s:"Cheatsheet and a test alert"}},settings_detail:{t:0,b:{t:2,i:[{t:3}],s:"Updates, Claude"}},nothing_to_save:{t:0,b:{t:2,i:[{t:3}],s:"Nothing to save"}},identify:{t:0,b:{t:2,i:[{t:3}],s:"Identify this screen"}},identify_detail:{t:0,b:{t:2,i:[{t:3}],s:"Blinks the backlight and shows a card"}},identify_needs:{t:0,b:{t:2,i:[{t:3}],s:"Needs a newer firmware"}},export:{t:0,b:{t:2,i:[{t:3}],s:"Export layout"}},export_detail:{t:0,b:{t:2,i:[{t:3}],s:"Download and copy as JSON"}},placeholder:{t:0,b:{t:2,i:[{t:3}],s:"Search screens, entities, actions…"}},empty:{t:0,b:{t:2,i:[{t:3}],s:"Nothing matches. Type part of a screen, entity or action."}}},empty:{choose:{title:{t:0,b:{t:2,i:[{t:3}],s:"Choose a screen"}},text:{t:0,b:{t:2,i:[{t:3}],s:"Pick one of your screens on the left to change its tiles, top bar and settings."}}},start:{title:{t:0,b:{t:2,i:[{t:3}],s:"Start with a screen"}},text:{t:0,b:{t:2,i:[{t:3}],s:"Connect a CYD or Guition via USB to your Home Assistant machine. Profile, firmware, and the first flash happen in one go."}},button:{t:0,b:{t:2,i:[{t:3}],s:"Install new screen"}}}},screen_view:{confirm:{switch:{t:0,b:{t:2,i:[{t:3}],s:"You have unsaved changes. Open a different screen anyway?"}},copy:{t:0,b:{t:2,i:[{t:3}],s:"Replace the unsaved layout with a copy of the other screen's?"}},import:{t:0,b:{t:2,i:[{t:3}],s:"Replace the unsaved layout with the imported one?"}}},saved:{current:{t:0,b:{t:2,i:[{t:3}],s:"Saved. Your screen is being updated."}},other:{t:0,b:{t:2,i:[{t:3,v:"Saved. "},{t:4,k:"name"},{t:3,v:" is being updated."}]}},other_unnamed:{t:0,b:{t:2,i:[{t:3}],s:"Saved. The screen is being updated."}},newer_edit:{t:0,b:{t:2,i:[{t:3}],s:"Saved. Your newest change isn't sent yet: press Save & send again."}}},identified:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" blinks and shows a card for a few seconds."}]}},offline:{t:0,b:{t:2,i:[{t:3}],s:"Offline · changes are saved"}},tabs:{layout:{t:0,b:{t:2,i:[{t:3}],s:"Layout"}},settings:{t:0,b:{t:2,i:[{t:3}],s:"Screen settings"}}},sent:{t:0,b:{t:2,i:[{t:3}],s:"Saved · sent to screen"}},all_saved:{t:0,b:{t:2,i:[{t:3}],s:"All saved"}},more:{t:0,b:{t:2,i:[{t:3}],s:"More"}},menu:{identify:{t:0,b:{t:2,i:[{t:3}],s:"Identify"}},identify_hint:{t:0,b:{t:2,i:[{t:3}],s:"blink the screen"}},identify_needs:{t:0,b:{t:2,i:[{t:3}],s:"Needs firmware 0.2.31 or newer"}},inspect_hint:{t:0,b:{t:2,i:[{t:3}],s:"from Home Assistant"}},copy:{t:0,b:{t:2,i:[{t:3}],s:"Copy layout from…"}},copy_screens:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"n"},{t:3,v:" screen"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" screens"}]}]}},copy_none:{t:0,b:{t:2,i:[{t:3}],s:"no other screen"}},copy_tiles:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"n"},{t:3,v:" tile"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" tiles"}]}]}},export:{t:0,b:{t:2,i:[{t:3}],s:"Export layout"}},import:{t:0,b:{t:2,i:[{t:3}],s:"Import layout…"}},override:{t:0,b:{t:2,i:[{t:3}],s:"Override YAML"}},override_hint:{t:0,b:{t:2,i:[{t:3}],s:"advanced"}},override_none:{t:0,b:{t:2,i:[{t:3}],s:"No ESPHome profile found for this screen"}},update:{t:0,b:{t:2,i:[{t:3}],s:"Update firmware"}}}},layout:{removed:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" removed"}]}},no_room:{t:0,b:{t:2,i:[{t:3,v:"There is no room for this tile on page "},{t:4,k:"page"},{t:3,v:"."}]}},no_free_page:{t:0,b:{t:2,i:[{t:3}],s:"No page is free for a full-page tile. Free a page first."}},page_taken:{t:0,b:{t:2,i:[{t:3,v:"This screen already has a tile that goes to page "},{t:4,k:"page"},{t:3,v:"."}]}},copied:{t:0,b:{t:2,i:[{t:3,v:"Layout of "},{t:4,k:"name"},{t:3,v:" copied. Save & send when it looks right."}]}},copied_part:{t:0,b:{t:2,i:[{t:3,v:"Layout of "},{t:4,k:"name"},{t:3,v:" copied: "},{t:4,k:"kept"},{t:3,v:" of "},{t:4,k:"total"},{t:3,v:" tiles fit this screen's firmware. Save & send when it looks right."}]}},imported:{t:0,b:{t:2,i:[{t:3}],s:"Layout imported. Save & send when it looks right."}},imported_part:{t:0,b:{t:2,i:[{t:3,v:"Layout imported: "},{t:4,k:"kept"},{t:3,v:" of "},{t:4,k:"total"},{t:3,v:" tiles fit this screen's firmware. Save & send when it looks right."}]}},not_json:{t:0,b:{t:2,i:[{t:3}],s:"That isn't JSON. Export a layout first, or paste one from another ESP Screens."}},no_tiles_in_file:{t:0,b:{t:2,i:[{t:3}],s:"No tiles in this file. Expected a layout exported from ESP Screens."}},count:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"n"},{t:3,v:" page · "},{t:4,k:"tiles"},{t:3,v:" / "},{t:4,k:"limit"},{t:3,v:" tiles"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" pages · "},{t:4,k:"tiles"},{t:3,v:" / "},{t:4,k:"limit"},{t:3,v:" tiles"}]}]}},no_tiles:{t:0,b:{t:2,i:[{t:3}],s:"Add your first light, scene, or device from the library."}},how_to:{t:0,b:{t:2,i:[{t:3}],s:"Tap the top bar or a tile to change it. Drag to move; drop on the next page for a new one."}},positions_hint:{t:0,b:{t:2,i:[{t:3,v:"Empty slots and fixed positions work from firmware 0.2.26. This screen (firmware "},{t:4,k:"firmware"},{t:3,v:") shifts the tiles up to the first free slot until that update."}]}},aria:{t:0,b:{t:2,i:[{t:3}],s:"Screen layout"}},add_page:{t:0,b:{t:2,i:[{t:3}],s:"+ Add page"}},max_pages:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 page is the most"},{t:2,i:[{t:4,k:"n"},{t:3,v:" pages is the most"}]}]}}},page:{label:{t:0,b:{t:2,i:[{t:3,v:"Page "},{t:4,k:"page"}]}},remove:{t:0,b:{t:2,i:[{t:3}],s:"Remove page"}},remove_title:{t:0,b:{t:2,i:[{t:3}],s:"The pages after this one shift up one slot"}},edit_bar:{t:0,b:{t:2,i:[{t:3}],s:"Edit top bar"}},cell:{title:{t:0,b:{t:2,i:[{t:3}],s:"Empty slot. Click to add a tile here, or drag one over."}},aria:{t:0,b:{t:2,i:[{t:3,v:"Empty slot "},{t:4,k:"slot"},{t:3,v:" on page "},{t:4,k:"page"},{t:3,v:": add the next tile here"}]}},next:{t:0,b:{t:2,i:[{t:3}],s:"Next tile goes here"}},empty:{t:0,b:{t:2,i:[{t:3}],s:"Empty"}}}},library:{title:{t:0,b:{t:2,i:[{t:3}],s:"Library"}},entities:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"n"},{t:3,v:" entity"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" entities"}]}]}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search by name, device, or room…"}},search_label:{t:0,b:{t:2,i:[{t:3}],s:"Add an entity"}},filters:{all:{t:0,b:{t:2,i:[{t:3}],s:"All"}},light:{t:0,b:{t:2,i:[{t:3}],s:"Lights"}},climate:{t:0,b:{t:2,i:[{t:3}],s:"Climate"}},switch:{t:0,b:{t:2,i:[{t:3}],s:"Switches"}},binary_sensor:{t:0,b:{t:2,i:[{t:3}],s:"Status"}},button:{t:0,b:{t:2,i:[{t:3}],s:"Actions"}},script:{t:0,b:{t:2,i:[{t:3}],s:"Scripts"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Fans"}},cover:{t:0,b:{t:2,i:[{t:3}],s:"Covers"}},scene:{t:0,b:{t:2,i:[{t:3}],s:"Scenes"}},vacuum:{t:0,b:{t:2,i:[{t:3}],s:"Vacuum"}},sensor:{t:0,b:{t:2,i:[{t:3}],s:"Sensors"}},media_player:{t:0,b:{t:2,i:[{t:3}],s:"Media"}},weather:{t:0,b:{t:2,i:[{t:3}],s:"Weather"}},number:{t:0,b:{t:2,i:[{t:3}],s:"Values"}},select:{t:0,b:{t:2,i:[{t:3}],s:"Selects"}},person:{t:0,b:{t:2,i:[{t:3}],s:"People"}},timer:{t:0,b:{t:2,i:[{t:3}],s:"Timers"}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Screen"}}},room:{t:0,b:{t:2,i:[{t:3}],s:"Room"}},all_rooms:{t:0,b:{t:2,i:[{t:3}],s:"All rooms"}},hide_placed:{t:0,b:{t:2,i:[{t:3}],s:"Hide placed"}},hide_placed_title:{t:0,b:{t:2,i:[{t:3}],s:"Hide what is already on this screen"}},all_placed:{t:0,b:{t:2,i:[{t:3}],s:"Everything here is already on this screen."}},none_found:{t:0,b:{t:2,i:[{t:3}],s:"No entities found. Try a different name, room or filter."}},full:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"This screen holds 1 tile."},{t:2,i:[{t:3,v:"This screen holds "},{t:4,k:"n"},{t:3,v:" tiles."}]}]}},full_update:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"This screen holds 1 tile; update its firmware for 48."},{t:2,i:[{t:3,v:"This screen holds "},{t:4,k:"n"},{t:3,v:" tiles; update its firmware for 48."}]}]}},hint:{t:0,b:{t:2,i:[{t:3}],s:"Drag onto a page, or tap + to add to the first free slot. ⌘K searches everything."}}},domains:{light:{t:0,b:{t:2,i:[{t:3}],s:"Light"}},climate:{t:0,b:{t:2,i:[{t:3}],s:"Climate"}},vacuum:{t:0,b:{t:2,i:[{t:3}],s:"Vacuum"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Fan"}},cover:{t:0,b:{t:2,i:[{t:3}],s:"Cover"}},media_player:{t:0,b:{t:2,i:[{t:3}],s:"Media"}},sensor:{t:0,b:{t:2,i:[{t:3}],s:"Sensor"}},binary_sensor:{t:0,b:{t:2,i:[{t:3}],s:"Status"}},switch:{t:0,b:{t:2,i:[{t:3}],s:"Switch"}},input_boolean:{t:0,b:{t:2,i:[{t:3}],s:"Switch"}},scene:{t:0,b:{t:2,i:[{t:3}],s:"Scene"}},script:{t:0,b:{t:2,i:[{t:3}],s:"Script"}},weather:{t:0,b:{t:2,i:[{t:3}],s:"Weather"}},number:{t:0,b:{t:2,i:[{t:3}],s:"Value"}},input_number:{t:0,b:{t:2,i:[{t:3}],s:"Value"}},select:{t:0,b:{t:2,i:[{t:3}],s:"Select"}},input_select:{t:0,b:{t:2,i:[{t:3}],s:"Select"}},button:{t:0,b:{t:2,i:[{t:3}],s:"Action"}},input_button:{t:0,b:{t:2,i:[{t:3}],s:"Action"}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Screen"}},sun:{t:0,b:{t:2,i:[{t:3}],s:"Sun"}},timer:{t:0,b:{t:2,i:[{t:3}],s:"Timer"}},person:{t:0,b:{t:2,i:[{t:3}],s:"Person"}},camera:{t:0,b:{t:2,i:[{t:3}],s:"Camera"}},image:{t:0,b:{t:2,i:[{t:3}],s:"Image"}},entity:{t:0,b:{t:2,i:[{t:3}],s:"Entity"}}},displays:{standard:{t:0,b:{t:2,i:[{t:3}],s:"standard"}},watch:{t:0,b:{t:2,i:[{t:3}],s:"large value"}},forecast:{t:0,b:{t:2,i:[{t:3}],s:"weather forecast"}},graph:{t:0,b:{t:2,i:[{t:3}],s:"graph"}},digital:{t:0,b:{t:2,i:[{t:3}],s:"digital clock"}},analog:{t:0,b:{t:2,i:[{t:3}],s:"analog clock"}},sunpath:{t:0,b:{t:2,i:[{t:3}],s:"sun path"}}},sizes:{single:{t:0,b:{t:2,i:[{t:3}],s:"normal"}},wide:{t:0,b:{t:2,i:[{t:3}],s:"double"}},full:{t:0,b:{t:2,i:[{t:3}],s:"full page"}}},tile:{name:{t:0,b:{t:2,i:[{t:3}],s:"Name on the screen"}},icon:{auto_ha:{t:0,b:{t:2,i:[{t:3}],s:"Automatic (from Home Assistant)"}},auto_default:{t:0,b:{t:2,i:[{t:3}],s:"Automatic (default)"}},needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"The screen shows a chosen icon from firmware 0.2.18."}}},goes_to:{label:{t:0,b:{t:2,i:[{t:3}],s:"Goes to page"}},empty:{t:0,b:{t:2,i:[{t:4,k:"page"},{t:3,v:" (empty)"}]}},needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"Navigation tiles need firmware 0.2.62: press Update on the screen first."}},no_page:{t:0,b:{t:2,i:[{t:3,v:"This screen has no page "},{t:4,k:"page"},{t:3,v:", so a tap opens its last page. Choose another page."}]}},hint:{t:0,b:{t:2,i:[{t:3}],s:"A tap on the tile opens that page."}}},display:{label:{t:0,b:{t:2,i:[{t:3}],s:"Display"}},digital:{t:0,b:{t:2,i:[{t:3}],s:"Digital clock"}},analog:{t:0,b:{t:2,i:[{t:3}],s:"Analog clock"}},standard:{t:0,b:{t:2,i:[{t:3}],s:"Name and status"}},watch:{t:0,b:{t:2,i:[{t:3}],s:"Large value"}},forecast:{t:0,b:{t:2,i:[{t:3}],s:"Weather forecast"}},graph:{t:0,b:{t:2,i:[{t:3}],s:"Graph"}},sunpath:{t:0,b:{t:2,i:[{t:3}],s:"Sun path"}},no_graph:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant has no numbers for this entity, so the graph stays empty. Choose another display."}},no_forecast:{t:0,b:{t:2,i:[{t:3}],s:"This weather service has no daily forecast in Home Assistant. Choose another display."}}},size:{label:{t:0,b:{t:2,i:[{t:3}],s:"Size"}},single:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},wide:{t:0,b:{t:2,i:[{t:3}],s:"Double-width"}},full:{t:0,b:{t:2,i:[{t:3}],s:"Full page"}},full_hint:{t:0,b:{t:2,i:[{t:3}],s:"Full page: one big button that lights up while on; a slider, controls or a graph sit at the bottom of it."}},needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"A full-page tile needs firmware 0.2.62: press Update on the screen first."}}},page:{label:{t:0,b:{t:2,i:[{t:3}],s:"Page"}},new:{t:0,b:{t:2,i:[{t:3}],s:"New page"}}},controls:{label:{t:0,b:{t:2,i:[{t:3}],s:"Direct control on the tile"}},not_offered:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant doesn't offer this control for this entity, so it stays empty on the screen. Choose another one."}},full_hint:{t:0,b:{t:2,i:[{t:3}],s:"At the bottom of the full-page tile; a tap anywhere else works as set below."}},wide_hint:{t:0,b:{t:2,i:[{t:3}],s:"On the right of the double-width tile, like the rows in Home Assistant. Tapping the name works as set below."}},needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"The screen shows direct control from firmware 0.2.19; until then the tile stays as it was."}}},tap:{label:{t:0,b:{t:2,i:[{t:3}],s:"On tap"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Automatic"}},detail:{t:0,b:{t:2,i:[{t:3}],s:"Open control"}},none:{t:0,b:{t:2,i:[{t:3}],s:"View only"}},toggle:{t:0,b:{t:2,i:[{t:3}],s:"On / off"}},action:{t:0,b:{t:2,i:[{t:3}],s:"Perform action"}},no_toggle:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant can't turn this on and off, so a tap does nothing. Choose another option."}},toggle_needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"The screen switches this from firmware 0.2.58: press Update on the screen. Until then a tap opens its card."}},hold:{t:0,b:{t:2,i:[{t:3}],s:"Hold the tile to open its card."}}},slider:{label:{t:0,b:{t:2,i:[{t:3}],s:"Small slider on the tile"}},no:{t:0,b:{t:2,i:[{t:3}],s:"No"}},yes:{t:0,b:{t:2,i:[{t:3}],s:"Yes, control directly"}},nothing:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant has nothing a slider can change for this entity. Choose No."}}},history:{label:{t:0,b:{t:2,i:[{t:3}],s:"History"}},hours:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"n"},{t:3,v:" hour"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" hours"}]}]}}},background:{label:{t:0,b:{t:2,i:[{t:3}],s:"Pastel background"}},aria:{t:0,b:{t:2,i:[{t:3,v:"Background: "},{t:4,k:"name"}]}}}},tile_card:{label:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:", slot "},{t:4,k:"slot"},{t:3,v:" on page "},{t:4,k:"page"},{t:3,v:". Enter: configure, arrow keys: move"}]}},remove:{t:0,b:{t:2,i:[{t:3}],s:"Remove tile"}},remove_named:{t:0,b:{t:2,i:[{t:3,v:"Remove "},{t:4,k:"name"}]}}},action:{label:{t:0,b:{t:2,i:[{t:3}],s:"Action"}},asking:{t:0,b:{t:2,i:[{t:3}],s:"Asking Home Assistant which actions this entity has…"}},not_answering:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant isn't answering right now. Try again in a moment."}},choose:{t:0,b:{t:2,i:[{t:3}],s:"Choose an action"}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search, for example toggle, position, or play"}},search_label:{t:0,b:{t:2,i:[{t:3}],s:"Search for an action"}},none_found:{t:0,b:{t:2,i:[{t:3}],s:"No action found."}},gone:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant doesn't offer this action for this entity any more, so a tap does nothing. Choose another one."}},optional:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" (optional)"}]}},not_set:{t:0,b:{t:2,i:[{t:3}],s:"Not set"}},on:{t:0,b:{t:2,i:[{t:3}],s:"On"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},needs:{t:0,b:{t:2,i:[{t:3,v:"Home Assistant needs "},{t:4,k:"fields"},{t:3,v:"."}]}},needs_firmware:{t:0,b:{t:2,i:[{t:3}],s:"The screen performs an action from firmware 0.2.58: press Update on the screen. Until then a tap works as Automatic."}}},icon:{label:{t:0,b:{t:2,i:[{t:3}],s:"Icon"}},none:{t:0,b:{t:2,i:[{t:3}],s:"No icon"}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search, for example lamp, music, or door"}},search_label:{t:0,b:{t:2,i:[{t:3}],s:"Search for an icon"}},none_text_only:{t:0,b:{t:2,i:[{t:3}],s:"No icon, text only"}},aria:{t:0,b:{t:2,i:[{t:3,v:"Icon: "},{t:4,k:"name"}]}},none_found:{t:0,b:{t:2,i:[{t:3}],s:"No icon found."}}},inspect:{title:{t:0,b:{t:2,i:[{t:3}],s:"Current data"}},subtitle:{t:0,b:{t:2,i:[{t:3}],s:"Connection, status, and supported properties"}},reading:{t:0,b:{t:2,i:[{t:3}],s:"Reading…"}},fetching:{t:0,b:{t:2,i:[{t:3}],s:"Fetching current HA status..."}},status:{t:0,b:{t:2,i:[{t:3,v:"Status: "},{t:4,k:"status"}]}},options:{t:0,b:{t:2,i:[{t:3,v:"Small slider: "},{t:4,k:"slider"},{t:3,v:" · Display: "},{t:4,k:"display"},{t:3,v:" · Size: "},{t:4,k:"size"},{t:3,v:" · Control: "},{t:4,k:"control"},{t:3,v:" · Background: "},{t:4,k:"background"}]}},yes:{t:0,b:{t:2,i:[{t:3}],s:"yes"}},no:{t:0,b:{t:2,i:[{t:3}],s:"no"}},control_none:{t:0,b:{t:2,i:[{t:3}],s:"none"}},background_default:{t:0,b:{t:2,i:[{t:3}],s:"Default"}},read_again:{t:0,b:{t:2,i:[{t:3}],s:"Read again"}}},topbar:{removed:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" removed from the top bar"}]}},full:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"The top bar has room for 1 item."},{t:2,i:[{t:3,v:"The top bar has room for "},{t:4,k:"n"},{t:3,v:" items."}]}]}},already:{t:0,b:{t:2,i:[{t:3}],s:"This is already in the top bar."}},title:{t:0,b:{t:2,i:[{t:3}],s:"Top bar"}},aria:{t:0,b:{t:2,i:[{t:3,v:"Top bar: "},{t:4,k:"name"}]}},builtin:{t:0,b:{t:2,i:[{t:3}],s:"From the screen itself, also works without Home Assistant"}},items:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"used"},{t:3,v:" of "},{t:4,k:"n"},{t:3,v:" item"}]},{t:2,i:[{t:4,k:"used"},{t:3,v:" of "},{t:4,k:"n"},{t:3,v:" items"}]}]}},name:{t:0,b:{t:2,i:[{t:3}],s:"Left: name"}},name_placeholder:{t:0,b:{t:2,i:[{t:3}],s:"For example: Living room"}},right:{t:0,b:{t:2,i:[{t:3}],s:"Right: time, sensors, or a clock"}},item_label:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:", slot "},{t:4,k:"slot"},{t:3,v:". Enter: configure, arrows: move"}]}},remove_named:{t:0,b:{t:2,i:[{t:3,v:"Remove "},{t:4,k:"name"},{t:3,v:" from the top bar"}]}},max:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Maximum 1 item"},{t:2,i:[{t:3,v:"Maximum "},{t:4,k:"n"},{t:3,v:" items"}]}]}},add_title:{t:0,b:{t:2,i:[{t:3}],s:"Add the time, date, analog clock, or an entity"}},add_button:{t:0,b:{t:2,i:[{t:3}],s:"+ Add time, date, or an entity"}},hint:{overflow:{t:0,b:{t:2,i:[{t:3}],s:"Not everything fits next to the name: the screen drops the dashed items. Remove one or choose a shorter name."}},reorder:{t:0,b:{t:2,i:[{t:3}],s:"Drag to reorder; tap an item to configure it."}},needs_firmware:{t:0,b:{t:2,i:[{t:3,v:"Sensors, the date, and the analog clock appear from firmware "},{t:4,k:"version"},{t:3,v:"; until that update, this screen shows the name and, if the time is in the bar, the clock."}]}}},detail:{hidden:{t:0,b:{t:2,i:[{t:3}],s:"Hidden: not active right now"}},overflow:{t:0,b:{t:2,i:[{t:3}],s:"Doesn't fit next to the name"}},dial:{t:0,b:{t:2,i:[{t:3}],s:"Dial"}}},live:{hidden:{t:0,b:{t:2,i:[{t:3}],s:"Hidden right now: not active"}},overflow:{t:0,b:{t:2,i:[{t:3}],s:"Doesn't currently fit next to the name"}},looks:{t:0,b:{t:2,i:[{t:3}],s:"How it looks on the screen"}}},analog_sample:{t:0,b:{t:2,i:[{t:3}],s:"Small dial with the time"}},content:{label:{t:0,b:{t:2,i:[{t:3}],s:"What to show"}},hint:{t:0,b:{t:2,i:[{t:3}],s:"Last changed keeps counting on the screen itself: “Just now”, “5 min ago”, “Yesterday”."}}},auto_icon:{t:0,b:{t:2,i:[{t:3}],s:"Automatic (like Home Assistant)"}},show:{label:{t:0,b:{t:2,i:[{t:3}],s:"Show"}},hint:{t:0,b:{t:2,i:[{t:3}],s:"Only when active hides the item as long as it's off, closed, away, or 0. Handy for an open door, a running washing machine, or who's home."}}},clock_24:{t:0,b:{t:2,i:[{t:3,v:"24 hour clock · change under "},{t:4,k:"settings"}]}},clock_12:{t:0,b:{t:2,i:[{t:3,v:"12 hour clock · change under "},{t:4,k:"settings"}]}},clock_settings:{t:0,b:{t:2,i:[{t:3}],s:"Settings → Language & region"}},date_hint:{t:0,b:{t:2,i:[{t:4,k:"date"},{t:3,v:" today. The date follows the screen's own clock."}]}},up:{t:0,b:{t:2,i:[{t:3}],s:"↑ Up"}},down:{t:0,b:{t:2,i:[{t:3}],s:"↓ Down"}},add:{title:{t:0,b:{t:2,i:[{t:3}],s:"Add to the top bar"}},slots:{t:0,b:{t:1,c:[{t:2,i:[{t:4,k:"used"},{t:3,v:" of "},{t:4,k:"n"},{t:3,v:" slot used"}]},{t:2,i:[{t:4,k:"used"},{t:3,v:" of "},{t:4,k:"n"},{t:3,v:" slots used"}]}]}},builtin:{t:0,b:{t:2,i:[{t:3}],s:"From the screen itself"}},added:{t:0,b:{t:2,i:[{t:3}],s:"Already added"}},suggestions:{t:0,b:{t:2,i:[{t:3}],s:"Suggestions from Home Assistant"}},entity:{t:0,b:{t:2,i:[{t:3}],s:"An entity"}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search by name, room, or entity, e.g. temperature or door"}},search_label:{t:0,b:{t:2,i:[{t:3}],s:"Search for an entity for the top bar"}},none_found:{t:0,b:{t:2,i:[{t:3}],s:"No entities found."}}}},screen_settings:{groups:{brightness:{t:0,b:{t:2,i:[{t:3}],s:"Brightness"}},night:{t:0,b:{t:2,i:[{t:3}],s:"Night"}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Screen"}}},rows:{brightness:{t:0,b:{t:2,i:[{t:3}],s:"Brightness"}},dark_mode:{t:0,b:{t:2,i:[{t:3}],s:"Dark mode"}},standby_enabled:{t:0,b:{t:2,i:[{t:3}],s:"Auto standby"}},standby_seconds:{t:0,b:{t:2,i:[{t:3}],s:"Standby after"}},standby_brightness:{t:0,b:{t:2,i:[{t:3}],s:"Standby brightness"}},night_enabled:{t:0,b:{t:2,i:[{t:3}],s:"Night mode"}},night_start:{t:0,b:{t:2,i:[{t:3}],s:"Starts"}},night_end:{t:0,b:{t:2,i:[{t:3}],s:"Ends"}},night_brightness:{t:0,b:{t:2,i:[{t:3}],s:"Night brightness"}},auto_home:{t:0,b:{t:2,i:[{t:3}],s:"Back to page 1"}},auto_home_seconds:{t:0,b:{t:2,i:[{t:3}],s:"After"}},home_on_standby:{t:0,b:{t:2,i:[{t:3}],s:"Also on standby"}},swipe_pages:{t:0,b:{t:2,i:[{t:3}],s:"Swipe between pages"}},page_buttons:{t:0,b:{t:2,i:[{t:3}],s:"Page buttons"}},rotation:{t:0,b:{t:2,i:[{t:3}],s:"Rotation"}}},duration:{seconds:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" sec"}]}},minutes:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" min"}]}},hours:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" h"}]}},hours_minutes:{t:0,b:{t:2,i:[{t:4,k:"h"},{t:3,v:" h "},{t:4,k:"m"}]}}},time:{am:{t:0,b:{t:2,i:[{t:4,k:"time"},{t:3,v:" AM"}]}},pm:{t:0,b:{t:2,i:[{t:4,k:"time"},{t:3,v:" PM"}]}}},other_screen_busy:{t:0,b:{t:2,i:[{t:3}],s:"Still saving the other screen's settings. Try again in a moment."}},reach:{intro:{t:0,b:{t:2,i:[{t:3}],s:"Page buttons and swiping are off, so only Go to page tiles change the page."}},pages:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"page "},{t:4,k:"list"}]},{t:2,i:[{t:3,v:"pages "},{t:4,k:"list"}]}]}},tiles:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tile, to "},{t:4,k:"targets"},{t:3,v:"."}]},{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tiles, to "},{t:4,k:"targets"},{t:3,v:"."}]}]}},tiles_missing_one:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tile, to "},{t:4,k:"targets"},{t:3,v:", but none to "},{t:4,k:"missing"},{t:3,v:", so you can't reach it."}]},{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tiles, to "},{t:4,k:"targets"},{t:3,v:", but none to "},{t:4,k:"missing"},{t:3,v:", so you can't reach it."}]}]}},tiles_missing_more:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tile, to "},{t:4,k:"targets"},{t:3,v:", but none to "},{t:4,k:"missing"},{t:3,v:", so you can't reach them."}]},{t:2,i:[{t:3,v:"You have "},{t:4,k:"n"},{t:3,v:" Go to page tiles, to "},{t:4,k:"targets"},{t:3,v:", but none to "},{t:4,k:"missing"},{t:3,v:", so you can't reach them."}]}]}},none:{t:0,b:{t:2,i:[{t:3}],s:"You have no Go to page tiles."}},none_missing_one:{t:0,b:{t:2,i:[{t:3,v:"You have no Go to page tiles to "},{t:4,k:"missing"},{t:3,v:", so you can't reach it."}]}},none_missing_more:{t:0,b:{t:2,i:[{t:3,v:"You have no Go to page tiles to "},{t:4,k:"missing"},{t:3,v:", so you can't reach them."}]}},cut_off:{t:0,b:{t:2,i:[{t:3,v:"The tiles to "},{t:4,k:"pages"},{t:3,v:" are only on pages you can't reach."}]}},no_way_back:{t:0,b:{t:2,i:[{t:3,v:"From "},{t:4,k:"pages"},{t:3,v:" no tile leads back to page 1."}]}}},status:{offline:{t:0,b:{t:2,i:[{t:3}],s:"This screen is offline. Its settings can change once it's back."}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Changes apply on the screen at once, and show up here when they change there."}},app:{t:0,b:{t:2,i:[{t:3}],s:"Changes apply at once. Firmware 0.2.49 lets the screen keep them itself."}}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"This entity is off in Home Assistant, or the screen is restarting."}},lower:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" lower"}]}},higher:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" higher"}]}}},update:{starting:{t:0,b:{t:2,i:[{t:3}],s:"Starting update…"}},building:{t:0,b:{t:2,i:[{t:3}],s:"Building the firmware…"}},writing:{t:0,b:{t:2,i:[{t:3}],s:"Writing the firmware over Wi-Fi…"}},phases:{install:{t:0,b:{t:2,i:[{t:3}],s:"Building and installing…"}},verify:{t:0,b:{t:2,i:[{t:3}],s:"Waiting for the screen to come back…"}},settle:{t:0,b:{t:2,i:[{t:3}],s:"Checking that it stays stable…"}}},new_language:{t:0,b:{t:2,i:[{t:3,v:"New language: "},{t:4,k:"name"}]}}},settings:{updates:{auto_on:{t:0,b:{t:2,i:[{t:3}],s:"Screens will now update automatically at night."}},auto_off:{t:0,b:{t:2,i:[{t:3}],s:"Automatic updates are off."}},title:{t:0,b:{t:2,i:[{t:3}],s:"Firmware updates"}},busy:{t:0,b:{t:2,i:[{t:3,v:"Updating to firmware "},{t:4,k:"version"},{t:3,v:"…"}]}},no_screens:{t:0,b:{t:2,i:[{t:3,v:"No screen paired yet. New screens get firmware "},{t:4,k:"version"},{t:3,v:"."}]}},available:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Firmware "},{t:4,k:"version"},{t:3,v:" is available for "},{t:4,k:"n"},{t:3,v:" screen."}]},{t:2,i:[{t:3,v:"Firmware "},{t:4,k:"version"},{t:3,v:" is available for "},{t:4,k:"n"},{t:3,v:" screens."}]}]}},current:{t:0,b:{t:2,i:[{t:3,v:"All screens have firmware "},{t:4,k:"version"},{t:3,v:"."}]}},all:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Update 1 screen"},{t:2,i:[{t:3,v:"Update all "},{t:4,k:"n"},{t:3,v:" screens"}]}]}},whats_new:{t:0,b:{t:2,i:[{t:3,v:"What's new in firmware "},{t:4,k:"version"}]}},auto_label:{t:0,b:{t:2,i:[{t:3}],s:"Update automatically every night"}},auto_hint:{t:0,b:{t:2,i:[{t:3}],s:"Between 03:00 and 06:00, one screen at a time. Stops on an error and reports it in Home Assistant."}}},claude:{installed:{t:0,b:{t:2,i:[{t:3}],s:"Skill installed. Claude Code picks it up right away."}},installed_restart:{t:0,b:{t:2,i:[{t:3}],s:"Skill installed. Restart Claude Code once so it finds the new skills folder."}},text:{t:0,b:{t:2,i:[{t:3}],s:'Teach Claude about ESP Screens, then ask: "Show an alert on all my screens when the mailbox is full." Claude knows the alert events, every field, color, and icon.'}},install:{t:0,b:{t:2,i:[{t:3}],s:"Install for Claude Code"}},install_again:{t:0,b:{t:2,i:[{t:3}],s:"Install again"}},update:{t:0,b:{t:2,i:[{t:3}],s:"Update the skill"}},not_installed:{t:0,b:{t:2,i:[{t:3}],s:"Not installed"}},installed_chip:{t:0,b:{t:2,i:[{t:3}],s:"● Installed"}},newer:{t:0,b:{t:2,i:[{t:3}],s:"Installed · a newer version is ready"}},writes:{t:0,b:{t:2,i:[{t:3,v:"For Claude Code in Home Assistant. Writes one file to "},{t:4,k:"path"},{t:3,v:"; installing again replaces it."}]}},download:{t:0,b:{t:2,i:[{t:3}],s:"Download for claude.ai"}},upload:{t:0,b:{t:2,i:[{t:3}],s:"Upload the zip in Claude under Customize → Skills."}}},title:{t:0,b:{t:2,i:[{t:3}],s:"Everything around your screens."}},back:{t:0,b:{t:2,i:[{t:3}],s:"← My screens"}},screens:{title:{t:0,b:{t:2,i:[{t:3}],s:"Screens"}},text:{t:0,b:{t:2,i:[{t:3}],s:"Add a screen, or build and reinstall the firmware of one you already have."}},firmware_detail:{t:0,b:{t:2,i:[{t:3}],s:"Build and install via USB or Wi-Fi"}}},language:{title:{t:0,b:{t:2,i:[{t:3}],s:"Language & region"}},screen_language:{t:0,b:{t:2,i:[{t:3}],s:"Screen language"}},auto:{t:0,b:{t:2,i:[{t:3,v:"Home Assistant's language ("},{t:4,k:"name"},{t:3,v:")"}]}},auto_plain:{t:0,b:{t:2,i:[{t:3}],s:"Home Assistant's language"}},ha_missing:{t:0,b:{t:2,i:[{t:3}],s:"The screens use English until Home Assistant's language is available."}},unchecked:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" · not checked yet, help welcome"}]}},help:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" is not checked yet, help welcome: "},{t:4,k:"guide"}]}},guide:{t:0,b:{t:2,i:[{t:3}],s:"how to translate"}},update_hint:{t:0,b:{t:2,i:[{t:3}],s:"After a change every screen needs a firmware update, one build each: with its Update button, or in the nightly updates."}},time:{t:0,b:{t:2,i:[{t:3}],s:"Time format"}},time_auto:{t:0,b:{t:2,i:[{t:3,v:"Automatic, follows the language ("},{t:4,k:"clock"},{t:3,v:")"}]}},clock_24:{t:0,b:{t:2,i:[{t:3}],s:"24 hour"}},clock_12:{t:0,b:{t:2,i:[{t:3}],s:"12 hour"}},numbers:{t:0,b:{t:2,i:[{t:3}],s:"Number format"}},numbers_auto:{t:0,b:{t:2,i:[{t:3,v:"Automatic, follows the language ("},{t:4,k:"example"},{t:3,v:")"}]}},profile:{t:0,b:{t:2,i:[{t:3,v:"Your Home Assistant profile: "},{t:4,k:"formats"}]}},use_profile:{t:0,b:{t:2,i:[{t:3}],s:"Use these"}},editor_hint:{t:0,b:{t:2,i:[{t:3}],s:"The editor itself follows the language of your Home Assistant profile."}},saved:{t:0,b:{t:2,i:[{t:3}],s:"Saved."}},saved_language:{t:0,b:{t:2,i:[{t:3}],s:"Saved. Every screen takes the new language with its next update."}}},alerts:{text:{t:0,b:{t:2,i:[{t:3}],s:"A card over the whole screen from an automation, on one screen or on all of them. The cheatsheet has the action names, fields, icons, and colors, and a form to try one."}},detail:{t:0,b:{t:2,i:[{t:3}],s:"Full-screen notifications, from an automation"}}}},firmware:{title:{t:0,b:{t:2,i:[{t:3}],s:"Build and install screen firmware"}},intro:{t:0,b:{t:2,i:[{t:3,v:"The built-in ESPHome CLI uses your own profile (YAML with keys) and secrets. Choose the screen's profile, then a USB port (screen connected to the Home Assistant machine), "},{t:4,k:"ota"},{t:3,v:" with the hostname, or "},{t:4,k:"download"},{t:3,v:" to put the firmware on the screen from your own computer. "},{t:4,k:"check"},{t:3,v:" only validates, "},{t:4,k:"build"},{t:3,v:" compiles, "},{t:4,k:"install"},{t:3,v:" puts the firmware on the screen. Your tiles stay as they are in ESP Screens. The first build takes a few minutes."}]}},ota:{t:0,b:{t:2,i:[{t:3}],s:"Wi-Fi / OTA"}},download:{t:0,b:{t:2,i:[{t:3}],s:"Download"}},check:{t:0,b:{t:2,i:[{t:3}],s:"Check"}},build:{t:0,b:{t:2,i:[{t:3}],s:"Build only"}},install:{t:0,b:{t:2,i:[{t:3}],s:"Build & install"}},build_download:{t:0,b:{t:2,i:[{t:3}],s:"Build & download"}},no_cli:{t:0,b:{t:2,i:[{t:3}],s:"The ESPHome CLI is missing. Update the app to 0.2.0."}},choose:{t:0,b:{t:2,i:[{t:3}],s:"Choose the intended profile, then a USB port, an IP address, or Download."}},profile:{t:0,b:{t:2,i:[{t:3}],s:"ESPHome profile"}},install_to:{t:0,b:{t:2,i:[{t:3}],s:"Install to"}},no_board:{t:0,b:{t:2,i:[{t:3}],s:"USB · no board found on the Home Assistant machine yet"}},download_target:{t:0,b:{t:2,i:[{t:3}],s:"Download · flash from your own computer"}},host:{t:0,b:{t:2,i:[{t:3}],s:"IP address or hostname"}},download_file:{t:0,b:{t:2,i:[{t:3,v:"Download "},{t:4,k:"name"}]}},download_how:{t:0,b:{t:2,i:[{t:3,v:"Put it on the screen with "},{t:4,k:"esphome_web"},{t:3,v:" in Chrome or Edge: Connect, choose the screen's USB port, Install, and select this file. It holds your Wi-Fi password and the screen's keys: keep it to yourself."}]}}},installer:{title:{setup:{t:0,b:{t:2,i:[{t:3}],s:"Connect and install."}},saved:{t:0,b:{t:2,i:[{t:3}],s:"Profile saved."}},running:{t:0,b:{t:2,i:[{t:3}],s:"One moment…"}},ready:{t:0,b:{t:2,i:[{t:3}],s:"Ready to download."}},done:{t:0,b:{t:2,i:[{t:3}],s:"Done."}},failed:{t:0,b:{t:2,i:[{t:3}],s:"That didn't work."}}},intro:{t:0,b:{t:2,i:[{t:3}],s:"ESP Screens creates the screen's own profile with unique keys and builds the firmware. Connect the screen with a USB data cable to the machine running Home Assistant, or download the firmware and put it on the screen from your own computer."}},board:{t:0,b:{t:2,i:[{t:3}],s:"Which screen do you have?"}},board_cyd:{t:0,b:{t:2,i:[{t:3}],s:"CYD · 2.8 inch"}},board_guition:{t:0,b:{t:2,i:[{t:3}],s:"Guition · 4 inch"}},name:{t:0,b:{t:2,i:[{t:3}],s:"Name"}},name_placeholder:{t:0,b:{t:2,i:[{t:3}],s:"Living room screen"}},device_name:{t:0,b:{t:2,i:[{t:3}],s:"Device name"}},customize:{t:0,b:{t:2,i:[{t:3}],s:"customize"}},name_hint:{t:0,b:{t:2,i:[{t:3}],s:"Every screen gets its own profile with its own keys. Four screens? Go through this four times with a different name."}},device_name_hint:{t:0,b:{t:2,i:[{t:3}],s:"Lowercase letters, digits, and dashes. A different name for each screen."}},wifi:{title:{t:0,b:{t:2,i:[{t:3}],s:"Wi-Fi"}},ssid:{t:0,b:{t:2,i:[{t:3}],s:"Wi-Fi name (2.4 GHz)"}},password:{t:0,b:{t:2,i:[{t:3}],s:"Wi-Fi password"}},new:{t:0,b:{t:2,i:[{t:3}],s:"Fill in once: ESP Screens saves this in ESPHome secrets.yaml, later screens use it automatically."}},missing:{t:0,b:{t:2,i:[{t:3}],s:"Your ESPHome secrets.yaml is still missing Wi-Fi details. ESP Screens only fills in the missing lines."}},ready:{t:0,b:{t:2,i:[{t:3}],s:"Wi-Fi comes from your ESPHome secrets.yaml."}},invalid:{t:0,b:{t:2,i:[{t:3}],s:"secrets.yaml in the ESPHome folder isn't valid YAML. Fix the file first; it won't be overwritten."}}},install_via:{t:0,b:{t:2,i:[{t:3}],s:"Install via"}},later:{t:0,b:{t:2,i:[{t:3}],s:"Later · save profile only"}},target:{usb:{t:0,b:{t:2,i:[{t:3}],s:"Connect the screen with a USB data cable to the Home Assistant machine; the list refreshes on its own. Or choose Download to use your own computer."}},download:{t:0,b:{t:2,i:[{t:3}],s:"Download the firmware and put it on the screen from your own computer, in Chrome or Edge. After that, updates go over Wi-Fi."}},later:{t:0,b:{t:2,i:[{t:3}],s:"The profile goes into the ESPHome folder. You can install later via Firmware & USB, or from ESPHome Device Builder."}},several:{t:0,b:{t:2,i:[{t:3}],s:"More than one board connected: choose this screen's port."}},once:{t:0,b:{t:2,i:[{t:3}],s:"Once over USB; after that, everything is wireless."}}},install:{t:0,b:{t:2,i:[{t:3}],s:"Install"}},save_profile:{t:0,b:{t:2,i:[{t:3}],s:"Save profile"}},busy:{t:0,b:{t:2,i:[{t:3,v:"A build or installation is already running ("},{t:4,k:"file"},{t:3,v:"). Wait for it to finish."}]}},no_cli:{t:0,b:{t:2,i:[{t:3}],s:"The ESPHome CLI is missing from this installation; only saving the profile is possible."}},progress:{saved:{t:0,b:{t:2,i:[{t:4,k:"file"},{t:3,v:" is in the ESPHome folder"}]}},writing:{t:0,b:{t:2,i:[{t:3,v:"Writing firmware to "},{t:4,k:"name"},{t:3,v:"…"}]}},building:{t:0,b:{t:2,i:[{t:3}],s:"Building firmware…"}},ready:{t:0,b:{t:2,i:[{t:3,v:"Firmware for "},{t:4,k:"name"},{t:3,v:" is ready"}]}},installed:{t:0,b:{t:2,i:[{t:3,v:"Firmware is on "},{t:4,k:"name"}]}},build_failed:{t:0,b:{t:2,i:[{t:3}],s:"Build failed"}},install_failed:{t:0,b:{t:2,i:[{t:3}],s:"Install failed"}}},detail:{saved:{t:0,b:{t:2,i:[{t:3}],s:"Install it later from Firmware & USB: choose this profile, then the USB port of the Home Assistant machine, or Download to put the firmware on the screen from your own computer. Save the API key for pairing:"}},uploading:{t:0,b:{t:2,i:[{t:3}],s:"Don't disconnect the USB cable yet."}},building:{t:0,b:{t:2,i:[{t:3}],s:"A first build takes a few minutes on a Raspberry Pi. You can leave this page: the installation keeps running and you'll find it again under New screen."}},building_download:{t:0,b:{t:2,i:[{t:3}],s:"A first build takes a few minutes on a Raspberry Pi. You can leave this page: the build keeps running and you'll find it again under New screen."}},downloaded:{t:0,b:{t:2,i:[{t:3}],s:"Put it on the screen from your own computer, then pair the screen with Home Assistant."}},booted:{t:0,b:{t:2,i:[{t:3}],s:"The screen boots up and connects to your Wi-Fi. Pair it with Home Assistant now:"}},booted_cyd:{t:0,b:{t:2,i:[{t:3}],s:"The screen boots up and connects to your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs. Pair it with Home Assistant now:"}},see_log:{t:0,b:{t:2,i:[{t:3}],s:"See the log below."}}},download_steps:{plug:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" with a USB data cable."}]}},plug_bold:{t:0,b:{t:2,i:[{t:3}],s:"Plug the screen into your computer"}},open:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" in Chrome or Edge, click Connect and choose the screen's USB port."}]}},open_bold:{t:0,b:{t:2,i:[{t:3,v:"Open "},{t:4,k:"esphome_web"}]}},install:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" and select "},{t:4,k:"file"},{t:3,v:". The screen restarts and joins your Wi-Fi."}]}},install_cyd:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" and select "},{t:4,k:"file"},{t:3,v:". The screen restarts and joins your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs."}]}},install_bold:{t:0,b:{t:2,i:[{t:3}],s:"Click Install"}}},download_keep:{t:0,b:{t:2,i:[{t:3}],s:"The file holds your Wi-Fi password and the screen's keys: keep it to yourself."}},api_key:{t:0,b:{t:2,i:[{t:3}],s:"API key"}},pairing:{ha:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" This happens outside ESP Screens. Home Assistant discovers "},{t:4,k:"name"},{t:3,v:" as an ESPHome device; click Add. Not discovered? Add ESPHome manually with the screen's IP address."}]}},ha_bold:{t:0,b:{t:2,i:[{t:3}],s:"Go to Home Assistant → Settings → Devices & services."}},key:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" above when Home Assistant asks for an encryption key."}]}},key_bold:{t:0,b:{t:2,i:[{t:3}],s:"Paste the API key"}},actions:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" ESPHome integration → Configure → “Allow the device to perform Home Assistant actions”. Without this, the screen sees everything but controls nothing."}]}},actions_bold:{t:0,b:{t:2,i:[{t:3}],s:"Allow HA actions:"}},tiles:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" Back in ESP Screens, the screen appears in the list on the left within about thirty seconds; until then it's shown there as “not yet in Home Assistant”."}]}},tiles_bold:{t:0,b:{t:2,i:[{t:3}],s:"Choose your tiles."}}},log:{t:0,b:{t:2,i:[{t:3}],s:"ESPHome log"}},retry:{t:0,b:{t:2,i:[{t:3}],s:"Retry"}},another:{t:0,b:{t:2,i:[{t:3}],s:"Install another screen"}},start_over:{t:0,b:{t:2,i:[{t:3}],s:"Start over"}},done:{t:0,b:{t:2,i:[{t:3}],s:"Done"}}},alerts:{eyebrow:{t:0,b:{t:2,i:[{t:3}],s:"Alerts · cheatsheet"}},title:{t:0,b:{t:2,i:[{t:3}],s:"A full-screen notification, from an automation."}},intro:{t:0,b:{t:2,i:[{t:3,v:"Every screen has the "},{t:4,k:"action"},{t:3,v:" action. It places a card over everything, wakes the screen, and keeps the backlight at normal brightness until someone taps the button or the timeout runs out. Home Assistant itself shows no explanation or dropdowns for ESPHome actions; everything you can fill in is listed here."}]}},loading:{t:0,b:{t:2,i:[{t:3}],s:"The cheatsheet is still loading; one moment."}},example:{title:{t:0,b:{t:2,i:[{t:3}],s:"Someone is at the door"}},subtitle:{t:0,b:{t:2,i:[{t:3}],s:"Door 3, back"}},button:{t:0,b:{t:2,i:[{t:3}],s:"Coming"}}},sections:{t:0,b:{t:2,i:[{t:3}],s:"Sections"}},nav:{try:{t:0,b:{t:2,i:[{t:3}],s:"Try it"}},screens:{t:0,b:{t:2,i:[{t:3}],s:"Your screens"}},howto:{t:0,b:{t:2,i:[{t:3}],s:"In an automation"}},all:{t:0,b:{t:2,i:[{t:3}],s:"All screens"}},fields:{t:0,b:{t:2,i:[{t:3}],s:"The fields"}},icons:{t:0,b:{t:2,i:[{t:3}],s:"Icons"}},colors:{t:0,b:{t:2,i:[{t:3}],s:"Colors"}},behaviour:{t:0,b:{t:2,i:[{t:3}],s:"Behavior"}},events:{t:0,b:{t:2,i:[{t:3}],s:"Events"}},tips:{t:0,b:{t:2,i:[{t:3}],s:"Tips"}}},try:{text:{t:0,b:{t:2,i:[{t:3}],s:"Send one alert now, with the same fields an automation sends. The screen shows the card and, with blinking on, flashes its backlight."}},screen:{t:0,b:{t:2,i:[{t:3}],s:"Screen"}},all:{t:0,b:{t:2,i:[{t:3,v:"All screens ("},{t:4,k:"ready"},{t:3,v:" ready)"}]}},not_ready:{t:0,b:{t:2,i:[{t:4,k:"name"},{t:3,v:" · not ready"}]}},title:{t:0,b:{t:2,i:[{t:3}],s:"Title"}},subtitle:{t:0,b:{t:2,i:[{t:3}],s:"Subtitle"}},icon:{t:0,b:{t:2,i:[{t:3}],s:"Icon"}},color:{t:0,b:{t:2,i:[{t:3}],s:"Color"}},button:{t:0,b:{t:2,i:[{t:3}],s:"Button text"}},timeout:{t:0,b:{t:2,i:[{t:3}],s:"Timeout (seconds, 0 waits for the button)"}},flash:{t:0,b:{t:2,i:[{t:3}],s:"Blink the backlight"}},flash_hint:{t:0,b:{t:2,i:[{t:3}],s:"Four times when the alert arrives."}},sending:{t:0,b:{t:2,i:[{t:3}],s:"Sending…"}},send:{t:0,b:{t:2,i:[{t:3}],s:"Send alert"}},sent_all:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Sent to "},{t:4,k:"n"},{t:3,v:" screen."}]},{t:2,i:[{t:3,v:"Sent to "},{t:4,k:"n"},{t:3,v:" screens."}]}]}},sent_to:{t:0,b:{t:2,i:[{t:3,v:"Sent to "},{t:4,k:"name"},{t:3,v:"."}]}},sent_one:{t:0,b:{t:2,i:[{t:3}],s:"Sent to the screen."}},skipped:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 skipped (offline or old firmware)."},{t:2,i:[{t:4,k:"n"},{t:3,v:" skipped (offline or old firmware)."}]}]}},left_empty:{t:0,b:{t:2,i:[{t:3,v:"Left empty: "},{t:4,k:"fields"},{t:3,v:"."}]}},nothing:{t:0,b:{t:2,i:[{t:3,v:"No screen could show it: check that a screen is online with firmware "},{t:4,k:"version"},{t:3,v:" or newer."}]}}},white:{t:0,b:{t:2,i:[{t:3}],s:"White (default)"}},screens:{text:{t:0,b:{t:2,i:[{t:3,v:"Every screen has its own action, with the device name in it. From firmware "},{t:4,k:"version"},{t:3,v:"; update an older screen with its Update button under Screens."}]}},none:{t:0,b:{t:2,i:[{t:3}],s:"No screen paired yet. Install one via New screen; the action appears once Home Assistant sees the screen."}},ready:{t:0,b:{t:2,i:[{t:3,v:"● firmware "},{t:4,k:"version"}]}},update:{t:0,b:{t:2,i:[{t:3,v:"Update needed · firmware "},{t:4,k:"version"}]}},unknown:{t:0,b:{t:2,i:[{t:3}],s:"Device name unknown · update the screen"}},show:{t:0,b:{t:2,i:[{t:3}],s:"Show alert"}},dismiss:{t:0,b:{t:2,i:[{t:3}],s:"Dismiss alert"}}},howto:{add:{t:0,b:{t:2,i:[{t:4,k:"add"},{t:3,v:" and search for "},{t:4,k:"esphome"},{t:3,v:`. Choose your screen's action: Home Assistant calls it "Performs the action show_alert of the node `},{t:4,k:"device"},{t:3,v:'".'}]}},add_bold:{t:0,b:{t:2,i:[{t:3}],s:"Add action"}},device:{t:0,b:{t:2,i:[{t:3}],s:"device name"}},fields:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" Home Assistant asks for all seven; leave what you don't use empty ("},{t:4,k:"empty"},{t:3,v:", "},{t:4,k:"zero"},{t:3,v:", off)."}]}},fields_bold:{t:0,b:{t:2,i:[{t:3}],s:"Fill in the fields."}},yaml:{t:0,b:{t:2,i:[{t:3,v:"Prefer YAML? Choose "},{t:4,k:"edit"},{t:3,v:" on the action and paste the example below."}]}},example_for:{t:0,b:{t:2,i:[{t:3}],s:"Example for"}},no_screen:{t:0,b:{t:2,i:[{t:3}],s:"a screen (not paired yet)"}}},edit_yaml:{t:0,b:{t:2,i:[{t:3}],s:"Edit in YAML"}},copy_yaml:{t:0,b:{t:2,i:[{t:3}],s:"Copy YAML"}},all:{title:{t:0,b:{t:2,i:[{t:3}],s:"All screens at once"}},text:{t:0,b:{t:2,i:[{t:3,v:"Fire the event "},{t:4,k:"show"},{t:3,v:" with the same fields, and ESP Screens passes the alert on to every screen that is online, including screens you add later. "},{t:4,k:"dismiss"},{t:3,v:" clears it everywhere. In an automation, add the "},{t:4,k:"event"},{t:3,v:" action or paste the example under "},{t:4,k:"edit"},{t:3,v:". Leave out the fields you don't use. ESP Screens has to be running for this."}]}},event:{t:0,b:{t:2,i:[{t:3}],s:"Event"}}},fields:{text:{t:0,b:{t:2,i:[{t:3}],s:"Text is free-form; the limit is in bytes, and an accented letter counts as two. What doesn't fit gets an ellipsis (title) or is dropped (subtitle)."}},field:{t:0,b:{t:2,i:[{t:3}],s:"Field"}},type:{t:0,b:{t:2,i:[{t:3}],s:"Type"}},what:{t:0,b:{t:2,i:[{t:3}],s:"What it does"}},example:{t:0,b:{t:2,i:[{t:3}],s:"Example"}},limit:{t:0,b:{t:2,i:[{t:3}],s:"Limit"}},types:{string:{t:0,b:{t:2,i:[{t:3}],s:"text"}},int:{t:0,b:{t:2,i:[{t:3}],s:"number"}},bool:{t:0,b:{t:2,i:[{t:3}],s:"on / off"}},entity:{t:0,b:{t:2,i:[{t:3}],s:"entity"}}},bytes:{t:0,b:{t:2,i:[{t:3,v:"CYD "},{t:4,k:"cyd"},{t:3,v:" · Guition "},{t:4,k:"guition"},{t:3,v:" bytes"}]}},seconds:{t:0,b:{t:2,i:[{t:3}],s:"0 to 86400 s"}},camera_limit:{t:0,b:{t:2,i:[{t:3}],s:"Guition, firmware 0.2.57+"}}},icons:{text:{t:0,b:{t:2,i:[{t:3,v:"Fill in the name in "},{t:4,k:"field"},{t:3,v:", for example "},{t:4,k:"example"},{t:3,v:". "},{t:4,k:"mdi"},{t:3,v:" and the hex codepoint ("},{t:4,k:"hex"},{t:3,v:") also work. Only these icons are included in the firmware; any other name shows the warning triangle. Tap an icon to copy its name."}]}},handy:{t:0,b:{t:2,i:[{t:3}],s:"Handy for notifications"}},search_label:{t:0,b:{t:2,i:[{t:3}],s:"Search for an icon"}},search:{t:0,b:{t:2,i:[{t:3}],s:"Search by name or description…"}},extra:{t:0,b:{t:2,i:[{t:3}],s:"Also available: control and weather icons"}},copy:{t:0,b:{t:2,i:[{t:3,v:"Copy "},{t:4,k:"name"}]}},none:{t:0,b:{t:2,i:[{t:3,v:'No icon for "'},{t:4,k:"query"},{t:3,v:'". Unknown names show the warning triangle ('},{t:4,k:"fallback"},{t:3,v:")."}]}}},colors:{text:{t:0,b:{t:2,i:[{t:3,v:"Fill in the name in "},{t:4,k:"field"},{t:3,v:". These are the pastel shades of the tiles, with dark text. Empty or unknown gives the white card. Tap to copy."}]}}},behaviour:{wakes:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" An alert immediately wakes a dimmed or dark screen and appears above every page, every open light card, and the standby layer."}]}},wakes_bold:{t:0,b:{t:2,i:[{t:3}],s:"Wakes the screen."}},on:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" As long as the card is showing, the backlight stays at normal brightness. Standby and night hours wait. After the button, the regular standby time starts again."}]}},on_bold:{t:0,b:{t:2,i:[{t:3}],s:"On until the button."}},timeout:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" "},{t:4,k:"zero"},{t:3,v:" waits for the button, however long that takes. With "},{t:4,k:"minute"},{t:3,v:" the card disappears after a minute, but the button closes it sooner."}]}},timeout_bold:{t:0,b:{t:2,i:[{t:3}],s:"Timeout."}},blinking:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" "},{t:4,k:"flash"},{t:3,v:" blinks the backlight four times when the alert arrives (about a second) and leaves the screen on afterward."}]}},blinking_bold:{t:0,b:{t:2,i:[{t:3}],s:"Blinking."}},replacing:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" A new alert replaces the current one; there's no stack. The replaced alert reports itself as "},{t:4,k:"replaced"},{t:3,v:"."}]}},replacing_bold:{t:0,b:{t:2,i:[{t:3}],s:"Replacing."}},closing:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" "},{t:4,k:"dismiss"},{t:3,v:" clears the card, for example if the door is already open. Without an alert, that action does nothing."}]}},closing_bold:{t:0,b:{t:2,i:[{t:3}],s:"Closing remotely."}},beside:{t:0,b:{t:2,i:[{t:4,k:"bold"},{t:3,v:" does nothing; only the button closes it. That way a wake-up tap never accidentally dismisses the alert."}]}},beside_bold:{t:0,b:{t:2,i:[{t:3}],s:"Tapping beside the card"}}},events:{text:{t:0,b:{t:2,i:[{t:3,v:"Every end fires the event "},{t:4,k:"event"},{t:3,v:" with "},{t:4,k:"action"},{t:3,v:", "},{t:4,k:"title"},{t:3,v:", "},{t:4,k:"screen"},{t:3,v:" (the device name) and the "},{t:4,k:"device_id"},{t:3,v:" that Home Assistant adds. Visible under Settings → Tools → Events."}]}},when:{t:0,b:{t:2,i:[{t:3}],s:"When"}},wait:{t:0,b:{t:2,i:[{t:3}],s:"Waiting until someone presses the button"}}},tips:{color:{t:0,b:{t:2,i:[{t:3,v:"Use a "},{t:4,k:"bold"},{t:3,v:': orange for the door, red for smoke or water, green for "done". The text always stays dark and readable.'}]}},color_bold:{t:0,b:{t:2,i:[{t:3}],s:"color per kind of notification"}},short:{t:0,b:{t:2,i:[{t:3,v:"Keep the title "},{t:4,k:"bold"},{t:3,v:"; a screen shows about twenty characters on one line and ends a longer title with an ellipsis. Put details in the subtitle."}]}},short_bold:{t:0,b:{t:2,i:[{t:3}],s:"short"}},button:{t:0,b:{t:2,i:[{t:3,v:"A "},{t:4,k:"bold"},{t:3,v:' turns the notification into a question: "Coming", "Seen", "Turn off". The event then tells you who responded.'}]}},button_bold:{t:0,b:{t:2,i:[{t:3}],s:"custom button text"}},resolve:{t:0,b:{t:2,i:[{t:3,v:"For an alert that resolves itself (the door opens, the laundry gets taken out) close it in the same automation with "},{t:4,k:"dismiss"},{t:3,v:"."}]}},every:{t:0,b:{t:2,i:[{t:3,v:"Every screen? Fire "},{t:4,k:"event"},{t:3,v:" once (see All screens at once). The screens still work independently and each reports with its own "},{t:4,k:"screen"},{t:3,v:"."}]}},claude:{t:0,b:{t:2,i:[{t:3,v:"Rather "},{t:4,k:"bold"},{t:3,v:" for the automation? Install the ESP Screens skill under Settings → Claude."}]}},claude_bold:{t:0,b:{t:2,i:[{t:3}],s:"ask Claude"}}}},override:{eyebrow:{t:0,b:{t:2,i:[{t:3}],s:"Advanced · local override"}},title:{t:0,b:{t:2,i:[{t:3}],s:"Override YAML"}},title_named:{t:0,b:{t:2,i:[{t:3,v:"Override YAML · "},{t:4,k:"name"}]}},intro:{t:0,b:{t:2,i:[{t:3}],s:"This small file is yours. It is loaded after the shared screen package and stays in place when ESP Screen Manager updates. Change hardware-specific details here, such as a display model."}},safe_title:{t:0,b:{t:2,i:[{t:3}],s:"What is safe to change?"}},safe_text:{t:0,b:{t:2,i:[{t:3}],s:"Display, touchscreen, substitutions, pins and other device details. Name, Wi-Fi, API, OTA and package links remain managed."}},active:{t:0,b:{t:2,i:[{t:3}],s:"Active"}},ready:{t:0,b:{t:2,i:[{t:3}],s:"Ready to attach"}},editor_label:{t:0,b:{t:2,i:[{t:3}],s:"Local override YAML"}},use_example:{t:0,b:{t:2,i:[{t:3}],s:"Use example"}},clear:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},characters:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 character"},{t:2,i:[{t:4,k:"n"},{t:3,v:" characters"}]}]}},lines:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 line"},{t:2,i:[{t:4,k:"n"},{t:3,v:" lines"}]}]}},save_check:{t:0,b:{t:2,i:[{t:3}],s:"Save & check"}},save:{t:0,b:{t:2,i:[{t:3}],s:"Save override"}},no_profile:{t:0,b:{t:2,i:[{t:3}],s:"No ESPHome profile was found for this screen."}},attached:{t:0,b:{t:2,i:[{t:3}],s:"Changes here apply on the next build."}},not_attached:{t:0,b:{t:2,i:[{t:3}],s:"Save once to attach this file to the profile."}},saving:{t:0,b:{t:2,i:[{t:3}],s:"Checking and saving…"}},saved:{t:0,b:{t:2,i:[{t:3}],s:"Saved. The override is kept during firmware updates."}},saved_toast:{t:0,b:{t:2,i:[{t:3}],s:"Override YAML saved."}},checking:{t:0,b:{t:2,i:[{t:3}],s:"Saved. ESPHome is checking the complete profile…"}},checking_profile:{t:0,b:{t:2,i:[{t:3}],s:"ESPHome is checking the profile…"}},checking_stage:{t:0,b:{t:2,i:[{t:3,v:"ESPHome is checking the profile… "},{t:4,k:"stage"}]}},valid:{t:0,b:{t:2,i:[{t:3}],s:"The complete profile is valid. Safe to build and install."}},rejected:{t:0,b:{t:2,i:[{t:3}],s:"ESPHome rejected the complete profile. See Firmware & USB for the full log."}},confirm_example:{t:0,b:{t:2,i:[{t:3}],s:"Replace the current text with the example?"}},example_loaded:{t:0,b:{t:2,i:[{t:3}],s:"Example loaded. Save it when you are ready."}},confirm_clear:{t:0,b:{t:2,i:[{t:3}],s:"Clear the local override?"}},cleared:{t:0,b:{t:2,i:[{t:3}],s:"The override will be empty after you save."}}},mockup:{home:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},unknown:{t:0,b:{t:2,i:[{t:3}],s:"Unknown"}}}},screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"On"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Unavailable"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Heat"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Cool"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Heat/Cool"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Dry"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Fan only"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Heating"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Cooling"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Drying"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Fan"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Preheating"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Defrosting"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Opening"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Closing"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Playing"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Paused"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"Standby"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Away"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Above horizon"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Below horizon"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Docked"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Cleaning"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Paused"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Returning to dock"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Idle"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Sunny"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Clear, night"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Cloudy"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Partly cloudy"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Rainy"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Pouring"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Snowy"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Snowy, rainy"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Fog"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Hail"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Lightning"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Lightning, rainy"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Windy"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Exceptional"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Low"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Charging"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Not charging"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Cold"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Connected"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Disconnected"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Hot"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Light detected"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"No light"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Unlocked"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Locked"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Wet"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Dry"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"Moving"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Not moving"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Plugged in"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Unplugged"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"On"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Off"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Away"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problem"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"Running"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Not running"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Unsafe"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Safe"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Tampering detected"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Update available"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Up-to-date"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Detected"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Clear"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Closed"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Activate"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Run"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Press"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Just now"}},minutes_ago:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" min ago"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 hour ago"},{t:2,i:[{t:4,k:"n"},{t:3,v:" hours ago"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Yesterday"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 day ago"},{t:2,i:[{t:4,k:"n"},{t:3,v:" days ago"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 week ago"},{t:2,i:[{t:4,k:"n"},{t:3,v:" weeks ago"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 month ago"},{t:2,i:[{t:4,k:"n"},{t:3,v:" months ago"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 year ago"},{t:2,i:[{t:4,k:"n"},{t:3,v:" years ago"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"In 1 hour"},{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" hours"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Tomorrow"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"In 1 day"},{t:2,i:[{t:3,v:"In "},{t:4,k:"n"},{t:3,v:" days"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"AM"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"PM"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"Sunday"}},{t:0,b:{t:2,i:[{t:3}],s:"Monday"}},{t:0,b:{t:2,i:[{t:3}],s:"Tuesday"}},{t:0,b:{t:2,i:[{t:3}],s:"Wednesday"}},{t:0,b:{t:2,i:[{t:3}],s:"Thursday"}},{t:0,b:{t:2,i:[{t:3}],s:"Friday"}},{t:0,b:{t:2,i:[{t:3}],s:"Saturday"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"Sun"}},{t:0,b:{t:2,i:[{t:3}],s:"Mon"}},{t:0,b:{t:2,i:[{t:3}],s:"Tue"}},{t:0,b:{t:2,i:[{t:3}],s:"Wed"}},{t:0,b:{t:2,i:[{t:3}],s:"Thu"}},{t:0,b:{t:2,i:[{t:3}],s:"Fri"}},{t:0,b:{t:2,i:[{t:3}],s:"Sat"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"Su"}},{t:0,b:{t:2,i:[{t:3}],s:"Mo"}},{t:0,b:{t:2,i:[{t:3}],s:"Tu"}},{t:0,b:{t:2,i:[{t:3}],s:"We"}},{t:0,b:{t:2,i:[{t:3}],s:"Th"}},{t:0,b:{t:2,i:[{t:3}],s:"Fr"}},{t:0,b:{t:2,i:[{t:3}],s:"Sa"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"January"}},{t:0,b:{t:2,i:[{t:3}],s:"February"}},{t:0,b:{t:2,i:[{t:3}],s:"March"}},{t:0,b:{t:2,i:[{t:3}],s:"April"}},{t:0,b:{t:2,i:[{t:3}],s:"May"}},{t:0,b:{t:2,i:[{t:3}],s:"June"}},{t:0,b:{t:2,i:[{t:3}],s:"July"}},{t:0,b:{t:2,i:[{t:3}],s:"August"}},{t:0,b:{t:2,i:[{t:3}],s:"September"}},{t:0,b:{t:2,i:[{t:3}],s:"October"}},{t:0,b:{t:2,i:[{t:3}],s:"November"}},{t:0,b:{t:2,i:[{t:3}],s:"December"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"Jan"}},{t:0,b:{t:2,i:[{t:3}],s:"Feb"}},{t:0,b:{t:2,i:[{t:3}],s:"Mar"}},{t:0,b:{t:2,i:[{t:3}],s:"Apr"}},{t:0,b:{t:2,i:[{t:3}],s:"May"}},{t:0,b:{t:2,i:[{t:3}],s:"Jun"}},{t:0,b:{t:2,i:[{t:3}],s:"Jul"}},{t:0,b:{t:2,i:[{t:3}],s:"Aug"}},{t:0,b:{t:2,i:[{t:3}],s:"Sep"}},{t:0,b:{t:2,i:[{t:3}],s:"Oct"}},{t:0,b:{t:2,i:[{t:3}],s:"Nov"}},{t:0,b:{t:2,i:[{t:3}],s:"Dec"}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:"."}},group:{t:0,b:{t:2,i:[{t:3}],s:","}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"1"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Page "},{t:4,k:"n"}]}}}}},Wh=Vh,Ka=e=>e%10>=2&&e%10<=4&&(e%100<12||e%100>14),qa={one_other:e=>e===1?0:1,one_upto_1:e=>Math.abs(e)<=1?0:1,slavic_pl:e=>e===1?0:Ka(e)?1:2,east_slavic:e=>e%10===1&&e%100!==11?0:Ka(e)?1:2,none:()=>0},Bh=Object.assign({"../../screen_manager/translations/de.json":()=>fn(()=>import("./de-B5ljNtf2.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/en-GB.json":()=>fn(()=>import("./en-GB-v9zPRS2K.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/es.json":()=>fn(()=>import("./es-DUs4hvEG.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/fr.json":()=>fn(()=>import("./fr-C0TB0UkD.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/it.json":()=>fn(()=>import("./it-OWvw4Kib.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/nl.json":()=>fn(()=>import("./nl-DV7drWRf.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/pl.json":()=>fn(()=>import("./pl-CGqJEGr1.js"),[],import.meta.url).then(e=>e.default),"../../screen_manager/translations/pt.json":()=>fn(()=>import("./pt-Brv5sHYu.js"),[],import.meta.url).then(e=>e.default)}),Kh=Object.fromEntries(Object.entries(Bh).map(([e,t])=>[e.slice(e.lastIndexOf("/")+1,-5),t])),Ls={...cp},eu=new Set(["en"]),_l={},tu=e=>_l[e]=(t,n)=>Math.min((qa[Ls[e]?.plural]||qa.one_other)(t),n-1),yl=()=>["en",...Object.keys(Ls).filter(e=>e!=="en").sort()];yl().forEach(tu);const ls=Ih({locale:"en",fallbackLocale:"en",messages:{en:Wh},pluralRules:_l,missingWarn:!1,fallbackWarn:!1,missing:(e,t)=>{}}),c=ls.global.t,qh=(e,t="en")=>ls.global.te(e,t),wl=()=>ls.global.locale.value,zh=e=>Ls[e];function Yh(e=window){try{if(e.parent!==e){const t=e.parent.document.documentElement.lang;if(t)return t}}catch{}return e.navigator.language||"en"}function nu(e,t=yl()){const n=i=>t.find(l=>l.toLowerCase()===i.toLowerCase()),s=(e||"").trim();return s?n(s)||n(s.split("-")[0]):void 0}const su=(e,t=yl())=>nu(e,t)||"en";function Gh(e,t,n=Ls[e]){n&&(Ls[e]=n),_l[e]||tu(e),ls.global.setLocaleMessage(e,t),eu.add(e)}const za={};function iu(e){if(eu.has(e))return Promise.resolve(!0);const t=Kh[e];return t?za[e]??=t().then(n=>(Gh(e,n),!0),()=>(delete za[e],!1)):Promise.resolve(!1)}async function Jh(e=su(Yh())){const t=await iu(e)?e:"en";return ls.global.locale.value=t,document.documentElement.lang=t,t}const Fo={point:{decimal:".",group:",",from:4},comma:{decimal:",",group:".",from:4},space:{decimal:",",group:" ",from:4}};function Xh(e){const t=n=>c(`screen.number.${n}`,{},{locale:e});return{decimal:t("decimal"),group:t("group"),from:Number(t("group_min"))>=2?5:4}}function ou(e,t){const n=String(e),s=/^(-?)(\d+)(?:\.(\d+))?$/.exec(n);if(!s)return n;const i=s[2].length>=t.from?s[2].replace(/\B(?=(\d{3})+$)/g,t.group):s[2];return`${s[1]}${i}${s[3]!==void 0?t.decimal+s[3]:""}`}const Ya={comma_decimal:"point",decimal_comma:"comma",space_comma:"space"};function Zh(e=window){try{if(e.parent===e)return{};const t=e.parent.document.querySelector("home-assistant")?.hass?.locale,n=["12","24"].includes(t?.time_format)?t.time_format:void 0;return{...n?{clock:n}:{},...Ya[t?.number_format]?{numbers:Ya[t.number_format]}:{}}}catch{return{}}}const Qh=(e,t=wl())=>new Intl.ListFormat(t==="en"?"en-GB":t,{type:"conjunction"}).format(e.map(String)),ze=6,rn=8,Ms=rn*ze,lu=["single","wide","full"],$n=e=>e===!0?"wide":e===!1?"single":e,as=e=>/^screen\.page_[1-8]$/.test(e)?Number(e.slice(-1)):0,ut=e=>lu.includes(e.options?.size)?e.options.size:"single",Do=e=>ut(e)!=="single",au=e=>ut(e)==="full",ru=e=>e-e%ze,cu=e=>e-e%2,Tt=e=>Math.floor(e/ze),kl=e=>$n(e)==="full"?ze:$n(e)==="wide"?2:1,Hn=(e,t)=>$n(t)==="full"?Array.from({length:ze},(n,s)=>ru(e)+s):$n(t)==="wide"?[e,e+1]:[e],Ga=(e,t)=>$n(t)==="full"?ru(e):$n(t)==="wide"?cu(e):e,Ze=e=>e.tiles.map(t=>({tile:t,slot:t.slot}));function uu(e){let t=0;return e.map(n=>{const s=ut(n);s==="full"&&t%ze?t+=ze-t%ze:s==="wide"&&t%2===1&&t++;const i=t;return t+=kl(s),i})}function em(e){const t=uu(e);return e.some((n,s)=>n.slot!==t[s])}function Hi(e){if(e.tiles.some(t=>!Number.isInteger(t.slot))){const t=uu(e.tiles);e.tiles.forEach((n,s)=>n.slot=t[s])}e.tiles.sort((t,n)=>t.slot-n.slot)}function Qn(e){const t=new Set;for(const{tile:n,slot:s}of e)for(const i of Hn(s,ut(n)))t.add(i);return t}const Rs=(e,t,n)=>Number.isInteger(t)&&t>=0&&t!e.has(s));function yi(e,t,n=0){for(let s=n;si.includes(h))?u.push(f):r.push({tile:f,slot:f.slot}));for(const f of u){const h=ut(f),p=Qn(r);let b=l.map(v=>Ga(v,h)).find(v=>Rs(p,v,h));if(b===void 0&&(b=du(p,h,f.slot)),b<0)return null;r.push({tile:f,slot:b})}return r.sort((f,h)=>f.slot-h.slot)}function Pt(e,t=1){const n=Math.max(0,...e.map(({tile:s,slot:i})=>i+kl(ut(s))));return Math.min(rn,Math.max(1,Math.ceil(n/ze),t||1))}function tm(e,t){const n=Array.from({length:t},()=>new Set);let s=0;for(const{tile:h,slot:p}of e){const b=as(h.entity)-1,v=Tt(p);b<0||b>=t||v>=t||(s++,n[v].add(b))}const i=h=>{const p=new Set([0]),b=[0];for(;b.length;)for(const v of h(b.shift()))p.has(v)||(p.add(v),b.push(v));return p},l=i(h=>[...n[h]]),r=i(h=>n.flatMap((p,b)=>p.has(h)?[b]:[])),u=Array.from({length:t},(h,p)=>p),f=h=>h.map(p=>p+1);return{tiles:s,targets:f(u.filter(h=>n.some(p=>p.has(h)))),unreachable:f(u.filter(h=>!l.has(h))),noWayBack:f(u.filter(h=>l.has(h)&&!r.has(h)))}}function nm(e){const t=e.split(".")[0];return t==="sun"?{options:{display:"sunpath",size:"wide"}}:t==="weather"?{options:{display:"forecast",size:"wide"}}:as(e)?{}:t==="screen"?{options:{display:"digital",size:"wide"}}:{}}const pu=e=>({entity:e,name:"",slot:-1,...nm(e)});function hu(e,t){const n=e.entity.split(".")[0],s=t.controls?.[n],i=e.options||{};if(!s||!["wide","full"].includes(i.size)||(i.display||"standard")!=="standard"||i.inline==="slider")return null;const l=i.controls??(i.size==="full"?"none":s.default);return l==="none"?null:l}function sm(e,t){const n=hu(e,t);return n?t.controls?.[e.entity.split(".")[0]]?.choices.find(s=>s.key===n)?.label.toLocaleLowerCase()||n:c("editor.inspect.control_none")}const Uo=e=>(/^(\d+)\.(\d+)\.(\d+)$/.exec(e||"")||[]).slice(1).map(Number);function cn(e,t){const[n,s]=[Uo(e),Uo(t)];if(n.length!==3||s.length!==3)return!1;for(let i=0;i<3;i++)if(n[i]!==s[i])return n[i]>s[i];return!0}const im=(e,t,n,s)=>cn(e,`${t}.${n}.${s}`),om=Ms;function lm(e){return Uo(e).length!==3?10:cn(e,"0.2.62")?om:cn(e,"0.2.7")?20:10}const am=["standard","watch","forecast","graph","digital","analog","sunpath"],mu=e=>am.includes(e)?c(`editor.displays.${e}`):e,rm=e=>c(`editor.sizes.${lu.includes(e)?e:"single"}`),Ja=["light","switch","input_boolean","fan","media_player","climate"],cm=["light","fan","cover","number","input_number","media_player"],um={light:["☀","#ad7600","#fff3d3"],climate:["❄","#c86620","#ffebdc"],vacuum:["◉","#008577","#def3ed"],fan:["✣","#008aab","#def5fa"],cover:["▤","#8053af","#eee5f8"],media_player:["▶","#007cad","#def2fc"],sensor:["⌁","#3476b1","#e5effa"],binary_sensor:["◈","#ad7600","#fff3d3"],switch:["⏻","#ad7600","#fff3d3"],input_boolean:["⏻","#ad7600","#fff3d3"],scene:["✦","#8053af","#eee5f8"],script:["▷","#8053af","#eee5f8"],weather:["☁","#007cad","#def2fc"],number:["±","#008577","#def3ed"],input_number:["±","#008577","#def3ed"],select:["≡","#5862af","#eaecfa"],input_select:["≡","#5862af","#eaecfa"],button:["↗","#5862af","#eaecfa"],input_button:["↗","#5862af","#eaecfa"],screen:["◷","#25282c","#e9ecf1"],sun:["☼","#c86620","#ffebdc"],timer:["⏱","#008577","#def3ed"],person:["☺","#2f7d32","#e1f2e2"],camera:["◧","#3d4a57","#e6ebf0"],image:["◧","#3d4a57","#e6ebf0"]};function Ut(e){const t=e.split(".")[0],n=um[t];return n?[c(`editor.domains.${t}`),...n]:[c("editor.domains.entity"),"◇","#637184","#edf0f4"]}const bu={clock:"clock-outline",analog:"clock-outline",date:"calendar"},at=e=>JSON.stringify(e),Pe=e=>String.fromCodePoint(parseInt(e,16));function Vi(e,t=new Date){let n=t.getHours();return e||(n=n%12||12),`${String(n).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}const $l=(e=new Date,t="en")=>c("screen.date.top_bar",{weekday:c(`screen.date.weekdays_min.${e.getDay()}`,{},{locale:t}),day:e.getDate(),month:c(`screen.date.months_short.${e.getMonth()}`,{},{locale:t})},{locale:t});function dm(e,t=Math.floor(Date.now()/1e3),n="en"){const s=t-e,i=Math.abs(s),l=u=>Math.floor(i/u),r=(u,f)=>f===void 0?c(`screen.time.${u}`,{},{locale:n}):c(`screen.time.${u}`,f,{locale:n});return s<0?i<3600?r("in_minutes",Math.max(1,l(60))):i<86400?r("in_hours",l(3600)):i<172800?r("tomorrow"):r("in_days",l(86400)):i<60?r("just_now"):i<3600?r("minutes_ago",l(60)):i<86400?r("hours_ago",l(3600)):i<172800?r("yesterday"):i<604800?r("days_ago",l(86400)):i<2592e3?r("weeks_ago",l(604800)):i<31536e3?r("months_ago",l(2592e3)):r("years_ago",l(31536e3))}const fm={guition:{width:448,top:36,name:27,text:21,icon:26},cyd:{width:298,top:24,name:18,text:14,icon:18}};let ds;const jo=new Map,pm=()=>jo.clear();function Rn(e,t){const n=`${t}|${e}`;let s=jo.get(n);if(!s){if(ds===void 0&&(ds=document.createElement("canvas").getContext("2d")),ds){ds.font=t;const i=ds.measureText(e);s={left:-i.actualBoundingBoxLeft,right:i.actualBoundingBoxRight,top:-i.actualBoundingBoxAscent,bottom:i.actualBoundingBoxDescent,advance:i.width}}else{const i=Number(/(\d+(?:\.\d+)?)px/.exec(t)?.[1]||14),l=[...e].length*i*.55;s={left:0,right:l,top:-i*.72,bottom:i*.02,advance:l}}jo.set(n,s)}return s}const hm=e=>({name:`500 ${e.name}px "Bar Roboto"`,text:`400 ${e.text}px "Bar Roboto"`,icon:`${e.icon}px "Tile Icons"`});function mm(e){return{icon:Math.max(2,Math.floor((e*4+5)/10)),item:Math.max(6,Math.floor((e*125+50)/100)),name:Math.max(8,Math.floor((e*16+5)/10))}}function vu(e,t,n,s){const i=hm(t),l=Rn("0",i.text),r=Math.round(l.bottom-l.top),u=mm(r),f=Rn(String.fromCodePoint(983376),i.icon),h=Math.round(f.bottom-f.top),p=e.map((T,V)=>{const L=s(T),k={index:V,item:T,view:L,shown:L.shown,width:0};return L.analog?(k.dial=h,k.width=h,k):(L.icon&&(k.icon={glyph:Pe(L.icon),ink:Rn(Pe(L.icon),i.icon)},k.width+=k.icon.ink.right-k.icon.ink.left),L.text&&(k.text={value:L.text,ink:Rn(L.text,i.text)},k.width+=(k.icon?u.icon:0)+k.text.ink.right-k.text.ink.left),k)}),b=p.filter(T=>T.shown),v=Rn(n,i.name).advance,y=Math.min(v,Math.floor(t.width*35/100)),M=T=>T.reduce((V,L)=>V+L.width,0)+Math.max(0,T.length-1)*u.item;let E=0;for(;Et.width;)E++;const x=b.slice(E),O=new Set(b.slice(0,E).map(T=>T.index));let C=t.width-M(x);for(const T of x)T.x=C,C+=T.width+u.item;const F=x.length?x[0].x-u.name:t.width;return{metrics:t,fonts:i,cap:r,zero:l,gaps:u,parts:p,placed:x,dropped:O,nameText:n,natural:v,nameRoom:F}}function bm(e,t,n){if(Rn(e,t).advance<=n)return e;const s=[...e];for(;s.length&&Rn(s.join("")+"...",t).advance>n;)s.pop();return s.join("")+"..."}function vm(e){"fonts"in document&&Promise.all([document.fonts.load('500 27px "Bar Roboto"',"Studio 0"),document.fonts.load('400 21px "Bar Roboto"',"Away 0"),document.fonts.load('26px "Tile Icons"',String.fromCodePoint(983376))]).then(()=>{pm(),e()}).catch(()=>{})}let gu="";function gm(e){gu=e||""}async function xl(e,t={}){const n=await fetch(`api/${e}`,{...t,headers:{"Content-Type":"application/json","X-Screen-CSRF":gu,"X-ESP-Screens-Language":wl(),...t.headers}});if(!n.ok){let s=c("editor.api.failed");try{const i=(await n.json())?.error;typeof i=="string"&&i.trim()&&(s=i)}catch{}throw new Error(s)}return n}const Rt=async e=>(await xl(e)).json(),ft=async(e,t,n,s={})=>{const l=await(await xl(e,{method:t,body:n===void 0?void 0:JSON.stringify(n),...s})).text();return l?JSON.parse(l):null},m=Bn({inventory:{screens:[],entities:[]},connected:!1,reachable:!0,selected:null,layout:null,dirty:!1,busy:!1,saved:0,tab:"layout",selectedTile:null,inspector:null,iconPickerOpen:!1,actionPickerOpen:!1,actionSearch:"",insertAt:-1,filter:"",search:"",capabilities:{},entityActions:{},topbarPreviews:{},topbarAdded:null,topbarOverflow:[],settingEdits:{},settingPending:!1,updating:[],toast:null,now:Date.now(),fontsVersion:0,route:location.hash,overrideProfile:null,overrideFriendly:"",drag:{active:!1,moving:null,preview:null},menuOpen:!1,liveStates:{},room:"",hidePlaced:!1,palette:!1,firmwareJob:null}),_t=$(()=>m.inventory.screens.find(e=>e.id===m.selected)),ss=e=>(e&&"firmware_known"in e?e.firmware_known:e?.firmware)||"",_u=$(()=>ss(_t.value)),yn=(e,t,n)=>im(_u.value,e,t,n),Vn=$(()=>{const e=_t.value?.tile_limit;return typeof e=="number"&&Number.isInteger(e)&&e>0?e:lm(_u.value)}),Xa=$(()=>{const e=_t.value?.full_page;return typeof e=="boolean"?e:yn(0,2,62)}),_m=$(()=>{const e=_t.value?.page_tiles_repeat;return typeof e=="boolean"?e:yn(0,2,65)}),Wi=e=>_m.value&&as(e)>0,Sl=$(()=>_t.value?.board==="guition"),yu=$(()=>fm[Sl.value?"guition":"cyd"]),ro=$(()=>m.selectedTile&&m.layout?.tiles.includes(m.selectedTile)?m.selectedTile:void 0),Cl=e=>!!m.selectedTile&&xe(m.selectedTile)===xe(e);let Za=0;function Ce(e,t){m.toast={message:e,action:t},clearTimeout(Za),Za=window.setTimeout(()=>m.toast=null,t?8e3:5e3)}function ym(){m.toast=null}async function Ot(e,t,n="api_key"){try{if(!navigator.clipboard||!window.isSecureContext)throw new Error;await navigator.clipboard.writeText(e),Ce(c(`editor.copy.${n}.copied`))}catch{if(t){const s=document.createRange();s.selectNodeContents(t);const i=window.getSelection();i?.removeAllRanges(),i?.addRange(s)}Ce(c(document.execCommand("copy")?`editor.copy.${n}.copied`:`editor.copy.${n}.selected`))}}function wi(){const e="/config/integrations/dashboard";try{window.top.location.assign(e)}catch{window.open(e,"_blank")}}const wm=["","#settings","#new-screen","#firmware","#alerts","#override"],kt=$(()=>wm.includes(m.route)?m.route:"");function Ve(e){if(location.hash===e){m.route=e;return}location.hash=e}window.addEventListener("hashchange",()=>{m.route=location.hash,window.scrollTo(0,0)});function Bs(e){return m.inventory.entities.find(t=>t.id===e)?.name||m.inventory.builtin?.find(t=>t.id===e)?.name||e}let co={source:null,byName:{}};function Ks(e){return co.source!==m.inventory.icons&&(co={source:m.inventory.icons,byName:Object.fromEntries((m.inventory.icons?.groups||[]).flatMap(t=>t.icons.map(n=>[n.name,n])))}),e?co.byName[e]:void 0}function xn(e){const t=m.inventory.icons;if(!t)return"F0335";const n=m.inventory.entities.find(i=>i.id===e),s=e.split(".")[0];return t.builtin?.[e]?t.builtin[e]:n?.icon?n.icon:s==="weather"?t.weather[n?.state||""]||t.weather.partlycloudy:s==="sun"?t.sun[n?.state||""]||t.sun.below_horizon:t.defaults[s]||t.fallback}const ms=e=>Ks(e.options?.icon)?.cp||xn(e.entity),uo=new Set;async function Bi(e){const t=[...new Set(e)].filter(n=>!uo.has(n)&&!n.startsWith("screen."));if(t.length){t.forEach(n=>uo.add(n));try{for(let n=0;n`entity=${encodeURIComponent(i)}`).join("&");Object.assign(m.capabilities,(await Rt(`capabilities?${s}`)).capabilities||{})}}catch{t.forEach(n=>uo.delete(n))}}}const fo=new Set;async function km(e){if(!fo.has(e)){fo.add(e);try{m.entityActions[e]=(await Rt(`entity-actions?entity=${encodeURIComponent(e)}`)).actions}catch{fo.delete(e)}}}let po=!1;async function Ki(){const e=[...new Set((m.layout?.tiles||[]).map(t=>t.entity).filter(t=>!t.startsWith("screen.")))];if(!(!e.length||po)){po=!0;try{for(let t=0;t`entity=${encodeURIComponent(s)}`).join("&");Object.assign(m.liveStates,(await Rt(`states?${n}`)).states||{})}}catch{}finally{po=!1}}}function $m(e){const t=m.liveStates[e];if(t)return t;const n=m.inventory.entities.find(s=>s.id===e);return n?.state?{state:n.state,word:null,a:{}}:null}let Ho=0;function pt(){m.dirty=!0,m.saved=0,Ho++}function wu(e){if(e===m.selected&&m.layout&&m.dirty){Qe(),m.tab="layout",m.menuOpen=!1,Ve("");return}if(e!==m.selected&&m.dirty&&!confirm(c("editor.screen_view.confirm.switch")))return;e!==m.selected&&(Fs(),m.settingEdits={}),m.selected=e,m.selectedTile=null,m.inspector=null,m.tab="layout",m.menuOpen=!1;const t=m.inventory.screens.find(s=>s.id===e);if(!t){m.layout=null;return}const n=JSON.parse(JSON.stringify(t.layout));Hi(n),n.pages=Pt(Ze(n),n.pages),m.layout=n,m.insertAt=-1,m.dirty=!1,m.saved=0,qi(0),Bi(n.tiles.map(s=>s.entity)),Ki(),Ve("")}const xm=()=>m.layout?Ze(m.layout):[];function Sm(e){const t=m.layout,n=t.tiles.map(i=>`${i.entity}@${i.slot}`).join();for(const{tile:i,slot:l}of e)i.slot=l,t.tiles.includes(i)||t.tiles.push(i);Hi(t),t.pages=Pt(Ze(t),t.pages);const s=t.tiles.map(i=>`${i.entity}@${i.slot}`).join()!==n;return s&&pt(),s}function qs(e,t){if(!m.layout)return!1;Bi([e.entity]);const n=fu(m.layout.tiles,e,t),s=n?Sm(n):!1;return s&&!m.liveStates[e.entity]&&Ki(),s}function ku(e){const t=m.layout;if(!t||!Wi(e)&&t.tiles.some(i=>i.entity===e)||t.tiles.length>=Vn.value)return;const n=pu(e),s=m.insertAt>=0?m.insertAt:yi(Qn(Ze(t)),ut(n));m.insertAt=-1,s>=0&&qs(n,s)&&Vo(n)}function $u(e){const t=m.layout;if(!t)return;const n=t.tiles.indexOf(e);n<0||(t.tiles.splice(n,1),Cl(e)&&Qe(),pt(),t.pages=Pt(Ze(t),t.pages),Ce(c("editor.layout.removed",{name:e.name||Bs(e.entity)}),{label:c("editor.common.undo"),run:()=>qs(e,e.slot)}))}function Qa(){const e=m.layout;e&&(e.pages=Math.min(rn,Pt(Ze(e),e.pages)+1),pt())}function Cm(e){const t=m.layout;if(t){for(const n of t.tiles)Tt(n.slot)>e&&(n.slot-=ze);t.pages=Math.max(1,Pt(Ze(t),t.pages)-1),pt()}}function Tm(e,t){const n=m.layout;if(!n||!Number.isInteger(t)||t<0||t>=rn||t===Tt(e.slot))return!1;const s=yi(Qn(Ze(n).filter(l=>l.tile!==e)),ut(e),t*ze),i=qs(e,s>=0&&Tt(s)===t?s:t*ze);return i||Ce(c("editor.layout.no_room",{page:t+1})),i}function Em(){const e=m.layout;if(!e)return 1;const t=m.drag.preview||Ze(e),n=Pt(t,e.pages);return m.drag.active&&nh.key!=="none"&&i.controls.includes(h.key))?.key||"none"),pt();const f=m.layout;if(f){if(au(e)&&r!=="full"){const h=Tt(e.slot),p=f.tiles.filter(y=>y!==e&&Tt(y.slot)===h),b=Qn(Ze(f).filter(y=>y.tile!==e&&!p.includes(y.tile))),v=[];for(const y of p){const M=yi(b,ut(y),(h+1)*ze);if(M<0){v.length=0;break}v.push([y,M]);for(const E of Hn(M,ut(y)))b.add(E)}if(v.length===p.length){for(const[y,M]of v)y.slot=M;e.slot=h*ze}else{const y=yi(Qn(Ze(f).filter(M=>M.tile!==e)),"full");y>=0?e.slot=y:(e.options.size=r,Ce(c("editor.layout.no_free_page")))}}else if(Do(e)&&!l){const h=Qn(Ze(f).filter(v=>v.tile!==e)),p=cu(e.slot),b=Rs(h,p,"wide")?p:du(h,"wide",p);b>=0&&(e.slot=b)}Hi(f),f.pages=Pt(Ze(f),f.pages)}}function Am(e,t){const n=`screen.page_${t}`,s=m.layout;return!s||n===e.entity||!as(n)?!1:!Wi(n)&&s.tiles.some(i=>i.entity===n)?(Ce(c("editor.layout.page_taken",{page:t})),!1):(e.entity=n,s.pages=Math.max(Pt(Ze(s),s.pages),t),pt(),!0)}function Vo(e){Cl(e)||(m.iconPickerOpen=!1,m.actionPickerOpen=!1,m.actionSearch=""),m.selectedTile=e,m.inspector={kind:"tile"},Bi([e.entity])}function Jt(e){m.inspector?.kind==="bar"&&m.inspector.index===e||(m.iconPickerOpen=!1),m.selectedTile=null,m.inspector={kind:"bar",index:e}}function er(){m.selectedTile=null,m.inspector={kind:"bar-add"}}function Qe(){m.inspector=null,m.selectedTile=null}async function Wo(){if(m.busy||!m.layout||!m.selected)return;m.busy=!0;const e=Ho,t=m.selected;try{const{settings:n,...s}=m.layout;if(await ft(`screens/${encodeURIComponent(m.selected)}`,"PUT",s),m.selected!==t){const i=m.inventory.screens.find(l=>l.id===t)?.name;Ce(i?c("editor.screen_view.saved.other",{name:i}):c("editor.screen_view.saved.other_unnamed"))}else Ho===e?(m.dirty=!1,m.saved=Date.now(),Ce(c("editor.screen_view.saved.current"))):Ce(c("editor.screen_view.saved.newer_edit"));await Sn()}catch(n){Ce(n.message)}finally{m.busy=!1}}const Wn=e=>!!(e&&e.alert_action&&cn(ss(e),m.inventory.alerts?.min_firmware||"0.2.31"));async function xu(e){try{await ft(`screens/${encodeURIComponent(e.id)}/identify`,"POST"),Ce(c("editor.screen_view.identified",{name:e.name}))}catch(t){Ce(t.message)}}async function Pm(e,t){return await ft("alerts/test","POST",{screen:e,data:t})}const Om=["title","tiles","header","pages"];function Su(e,t){const n=m.layout;if(!n)return;const s=(Array.isArray(e.tiles)?e.tiles:[]).filter(u=>!!(u&&typeof u=="object"&&typeof u.entity=="string"&&u.entity.includes("."))).map(u=>({entity:u.entity,name:typeof u.name=="string"?u.name:"",slot:Number.isInteger(u.slot)?u.slot:-1,...u.options&&typeof u.options=="object"?{options:{...u.options}}:{}})),i=new Set,l=s.filter(u=>Wi(u.entity)||!i.has(u.entity)&&i.add(u.entity)),r=l.slice(0,Vn.value);n.tiles=r,e.header&&Array.isArray(e.header.items)?n.header={items:e.header.items.map(u=>({...u}))}:delete n.header,n.pages=Number.isInteger(e.pages)?e.pages:1,Hi(n),n.pages=Pt(Ze(n),n.pages),Qe(),pt(),Bi(r.map(u=>u.entity)),Ki(),qi(0),Ce(t(r.lengthn.id===e);!t||!m.layout||Su(JSON.parse(JSON.stringify(t.layout)),n=>n?c("editor.layout.copied_part",{name:t.name,...n}):c("editor.layout.copied",{name:t.name}))}function Lm(){const e=m.layout;if(!e)return"";const t={esp_screens_layout:1};for(const n of Om)e[n]!==void 0&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Cu(){const e=Lm();if(!e)return;const t=`${(_t.value?.name||"screen").toLowerCase().replace(/[^a-z0-9]+/g,"-")}.layout.json`,n=URL.createObjectURL(new Blob([e],{type:"application/json"})),s=document.createElement("a");s.href=n,s.download=t,s.click(),setTimeout(()=>URL.revokeObjectURL(n),5e3),Ot(e,void 0,"layout_json")}function Mm(e){let t;try{t=JSON.parse(e)}catch{Ce(c("editor.layout.not_json"));return}if(!t||typeof t!="object"||!Array.isArray(t.tiles)){Ce(c("editor.layout.no_tiles_in_file"));return}Su(t,n=>n?c("editor.layout.imported_part",n):c("editor.layout.imported"))}function Rm(e){const t=m.inventory.updates?.target,n=m.inventory.changelog;if(!Array.isArray(n)||!t)return[];const s=ss(e),i=[];for(const l of n)if(!(cn(l.firmware,t)&&l.firmware!==t)&&!(s&&cn(s,l.firmware)))for(const r of l.lines)i.includes(r)||i.push(r);return i}let ho=!1;async function Nm(){if(!ho){ho=!0;try{const e=await Rt("firmware");m.firmwareJob={job:e.job,logs:e.logs||[]}}catch{}finally{ho=!1}}}const Bo=()=>m.inventory.screens.some(e=>e.update?.state==="running")||m.updating.length>0;function Gn(e){const t=e.update||{};if(!(t.state==="running"||m.updating.includes(e.id)))return null;const n=m.firmwareJob?.job?.stage;return t.phase==="verify"?{percent:78,text:vs("verify")}:t.phase==="settle"?{percent:92,text:vs("settle")}:t.phase==="install"||!t.phase?n==="upload"?{percent:66,text:c("editor.update.writing")}:n?{percent:40,text:c("editor.update.building")}:{percent:12,text:vs("install")}:{percent:12,text:vs(t.phase)}}const un=()=>m.layout?.header?.items??(m.layout?.settings?.show_clock??!0?[{type:"clock"}]:[]),bn=()=>m.inventory.header?.max_items||6;function Ns(e){m.layout&&(m.layout.header={items:e},pt(),qi())}let tr=0;function qi(e=150){clearTimeout(tr),tr=window.setTimeout(async()=>{const t=un();if(t.some(n=>n.type==="entity"))try{const n=await ft("header-preview","POST",{header:{items:t}});t.forEach((s,i)=>m.topbarPreviews[at(s)]=n.items[i])}catch{}},e)}function bs(e){return e.type==="entity"?Bs(e.entity):m.inventory.header?.builtin.find(t=>t.type===e.type)?.label||e.type}function hn(e){const t=new Date(m.now);if(e.type==="clock")return{text:Vi(is.value,t),shown:!0};if(e.type==="date")return{text:$l(t,Kn.value),shown:!0};if(e.type==="analog")return{analog:!0,shown:!0};const n=m.topbarPreviews[at(e)];return n?{icon:n.i||null,text:n.k==="ago"?dm(n.e,Math.floor(m.now/1e3),Kn.value):n.t,color:n.c?`#${n.c}`:null,shown:n.shown}:{icon:e.icon==="none"?null:Ks(e.icon)?.cp||xn(e.entity),text:"…",shown:!0,loading:!0}}function mo(e,t){const n=[...un()];return t<0||t>=n.length||e===t?!1:(n.splice(t,0,...n.splice(e,1)),Ns(n),!0)}function nr(e){const t=[...un()],[n]=t.splice(e,1);n&&(m.inspector?.kind==="bar"&&Qe(),Ns(t),Ce(c("editor.topbar.removed",{name:bs(n)}),{label:c("editor.common.undo"),run:()=>{const s=[...un()];s.splice(Math.min(e,s.length),0,n),Ns(s)}}))}function bo(e){const t=un();if(t.length>=bn())return Ce(c("editor.topbar.full",bn()));if(t.some(n=>at(n)===at(e)))return Ce(c("editor.topbar.already"));m.topbarAdded={key:at(e),time:Date.now()},Ns([...t,e]),Jt(t.length)}const Fm=[{group:"brightness",icon:"F0599",rows:[{key:"brightness",kind:"number",min:5,max:100,step:5,unit:"%"},{key:"dark_mode",kind:"toggle"},{key:"standby_enabled",kind:"toggle"},{key:"standby_seconds",kind:"duration",min:60,max:86400,needs:"standby_enabled"},{key:"standby_brightness",kind:"number",min:0,max:100,step:5,unit:"%",needs:"standby_enabled",cap:"brightness"}]},{group:"night",icon:"F0594",rows:[{key:"night_enabled",kind:"toggle"},{key:"night_start",kind:"moment",needs:"night_enabled"},{key:"night_end",kind:"moment",needs:"night_enabled"},{key:"night_brightness",kind:"number",min:0,max:100,step:5,unit:"%",needs:"night_enabled",cap:"brightness"}]},{group:"screen",icon:"F0379",rows:[{key:"auto_home",kind:"toggle"},{key:"auto_home_seconds",kind:"duration",min:30,max:3600,needs:"auto_home"},{key:"home_on_standby",kind:"toggle"},{key:"swipe_pages",kind:"toggle"},{key:"page_buttons",kind:"toggle"},{key:"rotation",kind:"choice",options:[0,90,180,270]}]}],vo=e=>c(`editor.screen_settings.rows.${e.key}`),Dm=(e,t)=>`${t}°`;function Tu(e=xm(),t=m.layout?Pt(e,m.layout.pages):1){const n=$i();if(t<2||n.page_buttons!==!1||n.swipe_pages!==!1)return"";const{tiles:s,targets:i,unreachable:l,noWayBack:r}=tm(e,t);if(!l.length&&!r.length)return"";const u=v=>c("editor.screen_settings.reach.pages",{list:Qh(v)},v.length),f=l.filter(v=>!i.includes(v)),h=l.filter(v=>i.includes(v)),p=f.length===1?"one":"more",b=[c("editor.screen_settings.reach.intro")];return s&&f.length?b.push(c(`editor.screen_settings.reach.tiles_missing_${p}`,{targets:u(i),missing:u(f)},s)):s?b.push(c("editor.screen_settings.reach.tiles",{targets:u(i)},s)):f.length?b.push(c(`editor.screen_settings.reach.none_missing_${p}`,{missing:u(f)})):b.push(c("editor.screen_settings.reach.none")),h.length&&b.push(c("editor.screen_settings.reach.cut_off",{pages:u(h)})),r.length&&b.push(c("editor.screen_settings.reach.no_way_back",{pages:u(r)})),b.join(" ")}const Eu=4e3;let vn={},es=null,ki=0,oi=null;const Tl=()=>_t.value?.settings;function $i(){const e=Tl(),t={...e?.values||{}};for(const[n,s]of Object.entries(m.settingEdits))t[n]=s.value;return t}const Um=e=>e<300?30:e<900?60:e<3600?300:e<7200?900:1800;function sr(e,t,n,s,i){if(e.kind==="moment"){let u=s&&t%60?Math.floor(t/60)*60+(n>0?60:0):t+n*(s?60:15);return u%=1440,u<0?u+1440:u}const l=e.kind==="duration"?Um(n<0?t-1:t):e.step,r=e.cap?Math.min(e.max,i[e.cap]):e.max;return Math.min(r,Math.max(e.min,t+n*l))}function jm(e){if(e<60)return c("editor.screen_settings.duration.seconds",{n:e});if(e<3600)return c("editor.screen_settings.duration.minutes",{n:Math.floor(e/60)});const t=Math.floor(e/3600),n=Math.floor(e%3600/60);return n?c("editor.screen_settings.duration.hours_minutes",{h:t,m:String(n).padStart(2,"0")}):c("editor.screen_settings.duration.hours",{n:t})}function Hm(e,t){const n=Math.floor(e/60),s=String(e%60).padStart(2,"0");return t?`${String(n).padStart(2,"0")}:${s}`:c(n<12?"editor.screen_settings.time.am":"editor.screen_settings.time.pm",{time:`${n%12||12}:${s}`})}function Vm(e,t){const n=t[e.key];return n==null?"—":e.kind==="number"?`${n}${e.unit||""}`:e.kind==="duration"?jm(n):e.kind==="moment"?Hm(n,is.value):""}function ti(e,t,n){if(es&&es!==m.selected&&Object.keys(vn).length){Fs(),Ce(c("editor.screen_settings.other_screen_busy"));return}es=m.selected;const s=$i();if(m.settingEdits[e]={value:t,at:Date.now()},vn[e]=t,e==="brightness")for(const i of["standby_brightness","night_brightness"])s[i]>t&&(m.settingEdits[i]={value:t,at:Date.now()});m.settingPending=!0,clearTimeout(ki),ki=window.setTimeout(()=>Fs(),n)}async function Fs(e=!1){if(clearTimeout(ki),oi||!Object.keys(vn).length||!es)return;const t=es,n=vn;vn={};const s=xl(`screens/${encodeURIComponent(t)}/settings`,{method:"PUT",body:JSON.stringify({settings:n}),keepalive:e});oi=s;try{const i=await(await s).json(),l=m.inventory.screens.find(r=>r.id===t);l&&(l.settings=i)}catch(i){if(Ce(i.message),t===m.selected)for(const l of Object.keys(n))delete m.settingEdits[l];if(t===m.selected&&n.brightness!==void 0)for(const l of["standby_brightness","night_brightness"])delete m.settingEdits[l]}finally{oi=null,Object.keys(vn).length?ki=window.setTimeout(()=>Fs(),150):es=null,m.settingPending=!!Object.keys(vn).length,t===m.selected&&xi(),setTimeout(()=>{t===m.selected&&xi()},Eu+100)}}function xi(){const e=Tl();for(const[t,n]of Object.entries(m.settingEdits))vn[t]!==void 0||oi||(e&&e.values[t]===n.value||Date.now()-n.at>Eu)&&delete m.settingEdits[t]}const vs=e=>["install","verify","settle"].includes(e||"")?c(`editor.update.phases.${e}`):c("editor.update.starting");async function Ko(e,t){m.updating.push(e.id);try{await ft(`screens/${encodeURIComponent(e.id)}/update`,"POST",t?{host:t}:{}),await Sn()}catch(n){m.updating=m.updating.filter(s=>s!==e.id),Ce(n.message)}}async function ir(){try{await ft("updates/run","POST"),await Sn()}catch(e){Ce(e.message)}}async function Wm(e){try{await ft("updates","PUT",{auto:e}),m.inventory.updates&&(m.inventory.updates.auto=e),Ce(c(e?"editor.settings.updates.auto_on":"editor.settings.updates.auto_off"))}catch(t){Ce(t.message)}}async function Bm(){try{m.inventory.claude_skill=await ft("claude-skill","POST"),Ce(c(m.inventory.claude_skill?.restart?"editor.settings.claude.installed_restart":"editor.settings.claude.installed"))}catch(e){Ce(e.message)}}const Kn=$(()=>su(m.inventory.language?.effective));St(Kn,e=>iu(e),{immediate:!0});const Fn=(e,t={})=>c(e,t,{locale:Kn.value}),Km=e=>m.inventory.language?.languages?.find(t=>t.code===e)?.name||zh(e||"")?.name||e||"",Au=e=>!!(e.update?.available||e.update?.language),or=()=>c("editor.update.new_language",{name:Km(m.inventory.language?.effective)}),is=$(()=>m.inventory.language?.clock_effective!=="12"),Pu=$(()=>Xh(Kn.value)),qm=$(()=>{const e=m.inventory.language?m.inventory.language.numbers||"auto":"point";return e==="auto"?Pu.value:Fo[e]});async function lr(e){try{const t=await ft("language","PUT",e);return t?.language&&(m.inventory.language=t.language),Ce(c(e.setting===void 0?"editor.settings.language.saved":"editor.settings.language.saved_language")),await Sn(),!0}catch(t){return Ce(t.message),!1}}async function Sn(e=!0){try{const t=await Rt(e?"inventory":"inventory?light=1");m.inventory=e?t:{...m.inventory,...t},t.csrf&&gm(t.csrf),m.connected=!!m.inventory.connected,m.reachable=!0;for(const n of m.inventory.screens)n.update?.state==="running"&&(m.updating=m.updating.filter(s=>s!==n.id));m.selected&&xi()}catch{m.reachable=!1}}function zm(e){m.inventory={...m.inventory,...e},m.connected=!!m.inventory.connected;for(const t of m.inventory.screens)t.update?.state==="running"&&(m.updating=m.updating.filter(n=>n!==t.id));m.selected&&xi()}let ar=0,qo=Date.now(),Si=!1,fs=null;function Ym(){fs||typeof EventSource>"u"||(fs=new EventSource(`api/events?language=${encodeURIComponent(wl())}`),fs.onopen=()=>{Si=!0,Ds()},fs.onmessage=e=>{document.hidden||zm(JSON.parse(e.data))},fs.onerror=()=>{Si=!1,Ds()})}function Ds(){clearTimeout(ar);const e=Si?6e4:m.inventory.updates?.busy?3e3:1e4;ar=window.setTimeout(async()=>{if(!document.hidden){const t=Date.now()-qo>=3e5;t&&(qo=Date.now()),(t||!Si)&&await Sn(t)}Ds()},e)}let rr=!1;function Gm(){rr||(rr=!0,Sn(),Ym(),Ds(),vm(()=>m.fontsVersion++),setInterval(()=>{!m.layout||document.hidden||m.drag.active||(m.now=Date.now(),qi(0))},3e4),setInterval(()=>{!document.hidden&&m.layout&&m.tab==="layout"&&kt.value===""&&Ki()},8e3),setInterval(()=>{!document.hidden&&Bo()?Nm():m.firmwareJob&&!Bo()&&(m.firmwareJob=null)},3e3),document.addEventListener("visibilitychange",async()=>{document.hidden||(qo=Date.now(),m.now=Date.now(),await Sn(),Ds())}),window.addEventListener("pagehide",()=>Fs(!0)),window.addEventListener("beforeunload",e=>{m.dirty&&(e.preventDefault(),e.returnValue="")}))}const Jm={class:"side"},Xm={class:"label"},Zm={id:"screens"},Qm=["aria-current","onClick"],eb={class:"txt"},tb=["aria-label","title"],nb={key:1,class:"pill"},sb={key:2,class:"spin small"},ib=["onSubmit"],ob=["placeholder","aria-label"],lb={type:"submit",class:"btn mini primary"},ab=["aria-label"],rb=["disabled","title","onClick"],cb={key:2,class:"whatsnew"},ub=["aria-valuenow"],db={class:"progress-text"},fb=["title"],pb=["title"],hb={id:"pending"},mb={class:"pending-actions"},bb=["onClick"],vb=["aria-current"],gb={class:"txt"},_b={class:"more"},yb={class:"label"},wb=["aria-current"],kb={class:"mdi"},$b={class:"txt"},xb=["aria-current"],Sb={class:"mdi"},Cb={class:"txt"},Tb=["aria-current"],Eb={class:"mdi"},Ab={class:"txt"},Pb={class:"txt"},Ob=Me({__name:"Sidebar",setup(e){const t=ke(null),n=ke(""),s=p=>{const b=p.update||{};return!!b.language&&(!b.target||cn(ss(p),b.target))};function i(p){const b=p.update||{};return b.state==="running"||m.updating.includes(p.id)?{kind:"running",text:vs(b.phase)}:b.state==="queued"?{kind:"queued",text:c("editor.sidebar.update.queued")}:Au(p)&&p.online?{kind:"available",text:s(p)?or():c("editor.sidebar.update.available",{version:b.target})}:b.result&&Date.now()/1e3-b.result.time<86400?{kind:b.result.state==="failed"?"failed":"done",text:b.result.message}:null}const l=p=>[...p.update?.language&&!s(p)?[or()]:[],...Rm(p)];function r(p){const b=p.update||{};b.host&&b.profile?Ko(p):b.profile&&(t.value=p.id,n.value="")}function u(p){const b=n.value.trim();b&&(t.value=null,Ko(p,b))}const f=()=>{const p=m.firmwareJob?.logs||[];return p.length?p[p.length-1]:""},h=p=>p.installed?c("editor.sidebar.pending.installed"):p.downloaded?c("editor.sidebar.pending.downloaded"):c("editor.sidebar.pending.not_flashed",{file:p.file});return(p,b)=>(g(),_("aside",Jm,[b[13]||(b[13]=o("div",{class:"brand"},[o("span",{class:"mark"},"▦"),o("span",null,"ESP Screens")],-1)),o("span",{id:"connection",class:me(["conn",{online:a(m).connected}]),role:"status"},d(a(m).reachable?a(m).connected?a(c)("editor.sidebar.connection.connected"):a(c)("editor.sidebar.connection.reconnecting"):a(c)("editor.sidebar.connection.unreachable")),3),o("button",{type:"button",class:"search-btn",id:"open-palette",onClick:b[0]||(b[0]=v=>a(m).palette=!0)},[Re("⌕ "+d(a(c)("editor.sidebar.search")),1),b[10]||(b[10]=o("kbd",null,"⌘K",-1))]),o("div",Xm,d(a(c)("editor.sidebar.screens")),1),o("div",Zm,[(g(!0),_(B,null,he(a(m).inventory.screens,v=>(g(),_("div",{key:v.id,class:me(["screen-item",{selected:v.id===a(m).selected&&a(kt)===""}])},[o("button",{type:"button",class:"nav-item","aria-current":v.id===a(m).selected&&a(kt)===""?"true":"false",onClick:y=>a(wu)(v.id)},[o("span",{class:me(["dot",{off:!v.online}])},null,2),o("span",eb,[o("span",null,d(v.name),1),o("small",null,d(v.online?a(c)("editor.common.online"):a(c)("editor.common.offline"))+d(v.area?" · "+v.area:"")+" · "+d(v.firmware||a(c)("editor.common.unknown")),1)]),v.id===a(m).selected&&a(m).dirty?(g(),_("span",{key:0,class:"unsaved",role:"img","aria-label":a(c)("editor.common.unsaved"),title:a(c)("editor.common.unsaved")},null,8,tb)):H("",!0),i(v)?.kind==="available"?(g(),_("span",nb,d(a(c)("editor.sidebar.update.pill")),1)):i(v)?.kind==="running"?(g(),_("span",sb)):H("",!0)],8,Qm),i(v)?(g(),_("div",{key:0,class:me(["screen-update",i(v).kind])},[i(v).kind==="available"?(g(),_(B,{key:0},[t.value===v.id?(g(),_(B,{key:0},[o("small",null,d(a(c)("editor.sidebar.host.hint")),1),o("form",{class:"screen-host",onSubmit:At(y=>u(v),["prevent"])},[Ae(o("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>n.value=y),placeholder:a(c)("editor.sidebar.host.placeholder"),required:"",pattern:"[A-Za-z0-9][A-Za-z0-9.\\-]*","aria-label":a(c)("editor.sidebar.host.label"),autofocus:""},null,8,ob),[[Xe,n.value]]),o("button",lb,d(a(c)("editor.sidebar.host.start")),1),o("button",{type:"button",class:"icon-btn","aria-label":a(c)("editor.common.cancel"),onClick:b[2]||(b[2]=y=>t.value=null)},"✕",8,ab)],40,ib)],64)):(g(),_(B,{key:1},[o("small",null,d(i(v).text),1),o("button",{type:"button",class:"btn mini primary",disabled:!v.update?.profile,title:v.update?.profile?"":a(c)("editor.sidebar.update.no_profile"),onClick:y=>r(v)},d(a(c)("editor.sidebar.update.button")),9,rb)],64)),l(v).length?(g(),_("details",cb,[o("summary",null,d(a(c)("editor.sidebar.update.whats_new")),1),o("ul",null,[(g(!0),_(B,null,he(l(v).slice(0,8),y=>(g(),_("li",{key:y},d(y),1))),128))])])):H("",!0)],64)):i(v).kind==="running"&&a(Gn)(v)?(g(),_(B,{key:1},[o("div",{class:"progress",role:"progressbar","aria-valuenow":a(Gn)(v).percent,"aria-valuemin":"0","aria-valuemax":"100"},[o("i",{style:je({width:a(Gn)(v).percent+"%"})},null,4)],8,ub),o("div",db,[o("span",null,d(a(Gn)(v).percent)+" %",1),o("span",{title:f()},d(a(Gn)(v).text),9,fb)]),f()?(g(),_("small",{key:0,title:f(),style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"}},d(f()),9,pb)):H("",!0),o("button",{type:"button",class:"btn link mini",style:{"justify-self":"start"},onClick:b[3]||(b[3]=y=>a(Ve)("#firmware"))},d(a(c)("editor.sidebar.update.full_log")),1)],64)):(g(),_("small",{key:2,class:me({failed:i(v).kind==="failed"})},d(i(v).text),3))],2)):H("",!0)],2))),128))]),o("div",hb,[(g(!0),_(B,null,he(a(m).inventory.pending||[],v=>(g(),_("div",{key:v.file,class:"pending"},[o("strong",null,d(v.friendly),1),o("small",null,d(h(v)),1),o("div",mb,[o("button",{type:"button",class:"btn mini quiet",onClick:b[4]||(b[4]=(...y)=>a(wi)&&a(wi)(...y))},d(a(c)("editor.common.open_integrations")),1),v.api_key?(g(),_("button",{key:0,type:"button",class:"btn mini quiet",onClick:y=>a(Ot)(v.api_key)},d(a(c)("editor.sidebar.copy_api_key")),9,bb)):H("",!0)])]))),128))]),o("button",{id:"new-screen",type:"button",class:"nav-item ghost","aria-current":a(kt)==="#new-screen"?"true":"false",onClick:b[5]||(b[5]=v=>a(Ve)("#new-screen"))},[b[11]||(b[11]=o("span",{class:"plus"},"+",-1)),o("span",gb,d(a(c)("editor.nav.new_screen")),1)],8,vb),b[14]||(b[14]=o("div",{class:"spacer"},null,-1)),o("div",_b,[o("div",yb,d(a(c)("editor.sidebar.more")),1),o("button",{id:"open-firmware",type:"button",class:"nav-item","aria-current":a(kt)==="#firmware"?"true":"false",onClick:b[6]||(b[6]=v=>a(Ve)("#firmware"))},[o("span",kb,d(a(Pe)("F0241")),1),o("span",$b,d(a(c)("editor.nav.firmware")),1)],8,wb),o("button",{id:"open-alerts",type:"button",class:"nav-item","aria-current":a(kt)==="#alerts"?"true":"false",onClick:b[7]||(b[7]=v=>a(Ve)("#alerts"))},[o("span",Sb,d(a(Pe)("F0594")),1),o("span",Cb,d(a(c)("editor.nav.alerts")),1)],8,xb),o("button",{id:"open-settings",type:"button",class:"nav-item","aria-current":a(kt)==="#settings"?"true":"false",onClick:b[8]||(b[8]=v=>a(Ve)("#settings"))},[o("span",Eb,d(a(Pe)("F0493")),1),o("span",Ab,d(a(c)("editor.nav.settings")),1)],8,Tb),o("button",{id:"refresh",type:"button",class:"nav-item ghost",onClick:b[9]||(b[9]=v=>a(Sn)())},[b[12]||(b[12]=o("span",{class:"plus"},"↻",-1)),o("span",Pb,d(a(c)("editor.sidebar.refresh")),1)])])]))}}),Ib={key:0,id:"toast",class:"toast",role:"status"},Lb=Me({__name:"Toast",setup(e){return(t,n)=>a(m).toast?(g(),_("div",Ib,[o("span",null,d(a(m).toast.message),1),a(m).toast.action?(g(),_("button",{key:0,type:"button",onClick:n[0]||(n[0]=s=>{a(m).toast.action.run(),a(ym)()})},d(a(m).toast.action.label),1)):H("",!0)])):H("",!0)}}),Mb=["aria-label"],Rb=["placeholder","aria-label"],Nb={class:"palette-list"},Fb={class:"palette-group"},Db=["onMouseenter","onClick"],Ub={key:0,class:"mdi"},jb={key:1,class:"glyph"},Hb={class:"tx"},Vb={key:0},Wb={key:2,class:"hint-key"},Bb={key:0,class:"palette-empty"},Kb=Me({__name:"CommandPalette",setup(e){const t=ke(""),n=ke(0),s=ke(null),i=$(()=>{const h=t.value.trim().toLocaleLowerCase(),p=[],b=c("editor.palette.groups.screens"),v=c("editor.palette.groups.actions");for(const E of m.inventory.screens)p.push({group:b,label:E.name,detail:`${E.online?c("editor.common.online"):c("editor.common.offline")} · ${E.firmware||c("editor.common.unknown")}`,glyphText:"▦",run:()=>wu(E.id)});const y=_t.value,M=[{group:v,label:c("editor.nav.new_screen"),detail:c("editor.nav.new_screen_detail"),glyphText:"+",run:()=>Ve("#new-screen")},{group:v,label:c("editor.nav.firmware"),icon:"F0241",run:()=>Ve("#firmware")},{group:v,label:c("editor.nav.alerts"),detail:c("editor.palette.alerts_detail"),icon:"F0594",run:()=>Ve("#alerts")},{group:v,label:c("editor.nav.settings"),detail:c("editor.palette.settings_detail"),icon:"F0493",run:()=>Ve("#settings")}];if(y&&m.layout&&M.unshift({group:v,label:c("editor.common.save_send"),detail:m.dirty?c("editor.common.unsaved"):c("editor.palette.nothing_to_save"),key:"⌘S",run:()=>Wo()},{group:v,label:c("editor.screen_view.tabs.layout"),detail:y.name,run:()=>{Ve(""),m.tab="layout"}},{group:v,label:c("editor.screen_view.tabs.settings"),detail:y.name,run:()=>{Ve(""),m.tab="settings"}},{group:v,label:c("editor.palette.identify"),detail:Wn(y)?c("editor.palette.identify_detail"):c("editor.palette.identify_needs"),run:()=>{Wn(y)&&xu(y)}},{group:v,label:c("editor.palette.export"),detail:c("editor.palette.export_detail"),run:Cu}),p.push(...M),y&&m.layout&&h){const E=new Set(m.layout.tiles.map(O=>O.entity)),x=m.layout.tiles.length>=Vn.value;for(const O of m.inventory.entities)if(!(O.tile===!1||E.has(O.id))&&`${O.name} ${O.id} ${O.area||""} ${O.device||""}`.toLocaleLowerCase().includes(h)&&(p.push({group:c("editor.palette.groups.add"),label:O.name,detail:[Ut(O.id)[0],O.area].filter(Boolean).join(" · "),icon:m.inventory.icons?xn(O.id):void 0,run:()=>{x||ku(O.id)}}),p.length>60))break}return h?p.filter(E=>`${E.label} ${E.detail||""}`.toLocaleLowerCase().includes(h)):p}),l=$(()=>{const h=[];return i.value.forEach((p,b)=>{(h.find(y=>y.group===p.group)||(h.push({group:p.group,items:[]}),h[h.length-1])).items.push({item:p,index:b})}),h});function r(){m.palette=!1}function u(h){r(),h.run()}function f(h){if(h.key==="Escape")h.preventDefault(),r();else if(h.key==="ArrowDown")h.preventDefault(),n.value=Math.min(i.value.length-1,n.value+1);else if(h.key==="ArrowUp")h.preventDefault(),n.value=Math.max(0,n.value-1);else if(h.key==="Enter"){h.preventDefault();const p=i.value[n.value];p&&u(p)}}return St(t,()=>n.value=0),St(()=>m.palette,async h=>{h&&(t.value="",n.value=0,await Ri(),s.value?.focus())}),(h,p)=>a(m).palette?(g(),_("div",{key:0,class:"palette-backdrop",onClick:r},[o("div",{class:"palette",role:"dialog","aria-label":a(c)("editor.sidebar.search"),onClick:p[1]||(p[1]=At(()=>{},["stop"])),onKeydown:f},[Ae(o("input",{ref_key:"input",ref:s,"onUpdate:modelValue":p[0]||(p[0]=b=>t.value=b),id:"palette-input",placeholder:a(c)("editor.palette.placeholder"),"aria-label":a(c)("editor.sidebar.search"),autocomplete:"off"},null,8,Rb),[[Xe,t.value]]),o("div",Nb,[(g(!0),_(B,null,he(l.value,b=>(g(),_(B,{key:b.group},[o("div",Fb,d(b.group),1),(g(!0),_(B,null,he(b.items,({item:v,index:y})=>(g(),_("button",{key:y,type:"button",class:me(["palette-item",{active:y===n.value}]),onMouseenter:M=>n.value=y,onClick:M=>u(v)},[v.icon?(g(),_("span",Ub,d(a(Pe)(v.icon)),1)):(g(),_("span",jb,d(v.glyphText||"›"),1)),o("span",Hb,[o("span",null,d(v.label),1),v.detail?(g(),_("small",Vb,d(v.detail),1)):H("",!0)]),v.key?(g(),_("kbd",Wb,d(v.key),1)):H("",!0)],42,Db))),128))],64))),128)),i.value.length?H("",!0):(g(),_("p",Bb,d(a(c)("editor.palette.empty")),1))])],40,Mb)])):H("",!0)}}),ve={source:null,element:null,ghost:null,timer:0,start:null,offset:{x:0,y:0},pointerId:null,suppressUntil:0,last:null,scroller:0,target:null},Ou={mounted(e,t){e.__dragSource=t.value,e.addEventListener("pointerdown",s=>{const i=e.__dragSource;if(!(s.button!==0||e.disabled||s.target.closest(".remove"))){s.pointerType!=="touch"&&s.preventDefault(),Object.assign(ve,{source:i,element:e,start:{x:s.clientX,y:s.clientY},pointerId:s.pointerId});try{e.setPointerCapture(s.pointerId)}catch{}clearTimeout(ve.timer),s.pointerType==="touch"&&(ve.timer=window.setTimeout(()=>cr(s),260))}}),e.addEventListener("pointermove",s=>{if(m.drag.active||!ve.start||ve.element!==e)return;const i=Math.hypot(s.clientX-ve.start.x,s.clientY-ve.start.y);if(s.pointerType==="touch"){i>10&&(clearTimeout(ve.timer),ve.start=null);return}i>=6&&cr(s)});const n=()=>{ve.element===e&&!m.drag.active&&(clearTimeout(ve.timer),ve.start=null)};e.addEventListener("pointerup",n),e.addEventListener("pointercancel",n)},updated(e,t){e.__dragSource=t.value}};function cr(e){if(m.drag.active||!ve.start||!ve.source||!ve.element)return;m.drag.active=!0,m.drag.moving=ve.source.kind==="tile"?ve.source.tile:pu(ve.source.id),m.drag.preview=null,ve.target=null,getSelection()?.removeAllRanges();const t=ve.element.getBoundingClientRect(),n=ve.element.cloneNode(!0);n.classList.add("drag-ghost"),n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,ve.offset={x:e.clientX-t.left,y:e.clientY-t.top},document.body.append(n),ve.ghost=n,document.addEventListener("pointermove",zo),document.addEventListener("pointerup",Ci),document.addEventListener("pointercancel",Ci);try{ve.element.releasePointerCapture(ve.pointerId)}catch{}try{document.documentElement.setPointerCapture(ve.pointerId)}catch{}document.addEventListener("touchmove",Iu,{passive:!1}),ve.scroller=window.setInterval(()=>{if(!ve.last)return;const{x:s,y:i}=qb(document),l=s?fr(ve.last.x,dr(s,"x")):0,r=i?fr(ve.last.y,dr(i,"y")):0;l&&s.scrollBy(l,0),r&&i.scrollBy(0,r),(l||r)&&Yo(Lu(ve.last.x,ve.last.y))},16),Yo(-1),zo(e)}function ur(e,t){if(!e)return!1;const n=t==="x"?e.scrollWidth>e.clientWidth:e.scrollHeight>e.clientHeight,s=getComputedStyle(e)[t==="x"?"overflowX":"overflowY"];return n&&(s==="auto"||s==="scroll")}function qb(e){const t=e.querySelector(".pages"),n=e.querySelector(".canvas");return{x:ur(t,"x")?t:n,y:ur(n,"y")?n:e.scrollingElement}}function dr(e,t){const n=t==="x"?window.innerWidth:window.innerHeight;if(e===e.ownerDocument.scrollingElement)return[0,n];const s=e.getBoundingClientRect();return t==="x"?[Math.max(s.left,0),Math.min(s.right,n)]:[Math.max(s.top,0),Math.min(s.bottom,n)]}function fr(e,[t,n]){return en-60?12:0}function Iu(e){m.drag.active&&e.preventDefault()}function Ci(e){e.pointerId===ve.pointerId&&zb(e.type==="pointerup")}function zo(e){!ve.ghost||e.pointerId!==ve.pointerId||(ve.last={x:e.clientX,y:e.clientY},ve.ghost.style.transform=`translate(${e.clientX-ve.offset.x}px, ${e.clientY-ve.offset.y}px)`,Yo(Lu(e.clientX,e.clientY)))}function Lu(e,t){let n=null,s=1/0;for(const l of document.querySelectorAll(".pages [data-slot]")){const r=l.getBoundingClientRect(),u=Math.hypot(Math.max(r.left-e,0,e-r.right),Math.max(r.top-t,0,t-r.bottom));u16)return-1;let i=Number(n.cell.dataset.slot);return n.cell.classList.contains("wide")&&e>(n.r.left+n.r.right)/2&&(i+=1),i}function Yo(e){ve.target===e||!m.layout||!m.drag.moving||(ve.target=e,m.drag.preview=e>=0?fu(m.layout.tiles,m.drag.moving,e):null)}function zb(e){const t=m.drag.preview,n=m.drag.moving;document.removeEventListener("pointermove",zo),document.removeEventListener("pointerup",Ci),document.removeEventListener("pointercancel",Ci),document.removeEventListener("touchmove",Iu);try{document.documentElement.releasePointerCapture(ve.pointerId)}catch{}if(ve.ghost?.remove(),Object.assign(ve,{ghost:null,suppressUntil:Date.now()+400,last:null,start:null,target:null,element:null,source:null}),clearInterval(ve.scroller),m.drag.active=!1,m.drag.preview=null,m.drag.moving=null,e&&t&&n&&m.layout){const s=m.layout.tiles.map(l=>`${l.entity}@${l.slot}`).join(),i=!m.layout.tiles.includes(n);for(const{tile:l,slot:r}of t)l.slot=r,m.layout.tiles.includes(l)||m.layout.tiles.push(l);m.layout.tiles.sort((l,r)=>l.slot-r.slot),m.layout.tiles.map(l=>`${l.entity}@${l.slot}`).join()!==s&&pt(),i&&qs(n,n.slot)}}window.addEventListener("click",e=>{Date.now()t.tile.name||Bs(t.tile.entity)),s=$(()=>au(t.tile)),i=$(()=>Do(t.tile)&&!s.value),l=$(()=>as(t.tile.entity)),r=$(()=>m.inventory.backgrounds?.[t.tile.options?.background||""]?.color),u=$(()=>t.tile.options?.background==="none"),f=$(()=>t.tile.options?.display||"standard"),h=$(()=>f.value!=="standard"?mu(f.value):""),p=$(()=>hu(t.tile,m.inventory)),b=$(()=>t.tile.entity.split(".")[0]),v=$(()=>m.inventory.icons?.controls||{}),y=de=>v.value[de]?Pe(v.value[de]):"",M=$(()=>Cl(t.tile)&&m.inspector?.kind==="tile"),E=$(()=>!t.placeholder&&m.layout?.tiles.includes(t.tile)),x=$(()=>c("editor.tile_card.label",{name:n.value,slot:t.slot%ze+1,page:Tt(t.slot)+1})),O=$(()=>new Date(m.now)),C=$(()=>(O.value.getHours()%12+O.value.getMinutes()/60)*30),F=$(()=>O.value.getMinutes()*6),T=$(()=>b.value==="screen"?null:$m(t.tile.entity)),V=$(()=>!T.value||["unavailable","unknown",""].includes(T.value.state)),L=$(()=>!!T.value&&!V.value&&T.value.state!=="off"&&T.value.state!=="closed"&&T.value.state!=="standby"&&T.value.state!=="idle"&&T.value.state!=="docked"),k=$(()=>["light","switch","input_boolean","fan"].includes(b.value)&&T.value?.state==="on"),A=$(()=>T.value?.a?.unit_of_measurement),z=de=>de.charAt(0).toUpperCase()+de.slice(1).replace(/_/g," "),P=de=>ou(de,qm.value),ge={climate:"climate",cover:"cover",media_player:"media",person:"person",sun:"sun",vacuum:"vacuum",weather:"weather"};function G(de){const X=Te=>qh(`screen.ha.${Te}`)?Fn(`screen.ha.${Te}`):"",K=de.state==="windy-variant"?"windy":de.state.replace(/-/g,"_");return b.value==="binary_sensor"&&["on","off"].includes(K)?X(`binary.${de.a?.device_class}_${K}`)||X(K):ge[b.value]?X(`${ge[b.value]}.${K}`)||(["on","off"].includes(K)?X(K):""):["on","off"].includes(K)?X(K):""}const ie=["scene","script","button","input_button"],be=$(()=>{const de=T.value;if(!de||ie.includes(b.value))return h.value;if(V.value)return Fn(de.state==="unknown"?"editor.mockup.unknown":"screen.ha.unavailable");const X=de.a||{},K=de.word||G(de)||z(de.state);return b.value==="climate"?`${X.current_temperature!==void 0?`${P(X.current_temperature)}° · `:""}${K}`:b.value==="weather"?`${K}${X.temperature!==void 0?` · ${P(X.temperature)}°`:""}`:b.value==="cover"&&X.current_position!==void 0&&X.current_position>0&&X.current_position<100?`${K} · ${X.current_position} %`:b.value==="media_player"&&X.media_title?`${K} · ${X.media_title}`:b.value==="sensor"?`${P(de.state)}${A.value?` ${A.value}`:""}`:K}),se=$(()=>T.value&&!V.value?P(T.value.state):"—"),ue=$(()=>{const de=T.value;if(!de||V.value)return 0;const X=de.a||{};if(b.value==="light")return de.state==="on"?X.brightness!==void 0?Math.round(X.brightness/255*100):100:0;if(b.value==="fan")return de.state==="on"?X.percentage??100:0;if(b.value==="cover")return 100-(X.current_position??(de.state==="open"?100:0));if(b.value==="media_player")return Math.round((X.volume_level??0)*100);if(b.value==="number"||b.value==="input_number"){const K=Number(de.state),Te=Number(X.min??0),we=Number(X.max??100);return Number.isFinite(K)&&we>Te?Math.round((K-Te)/(we-Te)*100):0}return 0}),ye=$(()=>Fn(`screen.ha.button.${{scene:"activate",script:"run"}[b.value]||"press"}`)),$e=$(()=>`${Fn("screen.tile.page",{n:l.value})} ›`),Ye=$(()=>({background:`linear-gradient(to right, ${ue.value?"#ffbf38":"#c9ccd1"} ${ue.value}%, ${ue.value?"#fff1d3":"#e6e8ec"} ${ue.value}%)`})),le=$(()=>({background:`linear-gradient(to right, #2196f3 ${ue.value}%, #d3e8fb ${ue.value}%)`})),ee=$(()=>{const de=T.value?.a?.temperature;return de!=null?`${P(de)}°`:"—"});async function ae(de){if(de.key==="Enter"||de.key===" "){de.preventDefault(),Vo(t.tile);return}const X={ArrowLeft:-1,ArrowRight:1,ArrowUp:-2,ArrowDown:2}[de.key];X&&(de.preventDefault(),qs(t.tile,t.tile.slot+(s.value?Math.sign(X)*ze:i.value?Math.sign(X)*2:X))&&(await Ri(),document.querySelector(`.pages [data-slot="${t.tile.slot}"]`)?.focus()))}return(de,X)=>Ae((g(),_("div",{class:me(["tile",{wide:i.value,full:s.value,bare:u.value,placeholder:e.placeholder||!E.value,chosen:M.value}]),"data-slot":e.slot,style:je(r.value&&!u.value?{backgroundColor:r.value}:void 0),tabindex:E.value?0:-1,role:E.value?"button":void 0,"aria-label":E.value?x.value:void 0,onClick:X[1]||(X[1]=K=>E.value&&a(Vo)(e.tile)),onKeydown:X[2]||(X[2]=K=>E.value&&ae(K))},[f.value==="analog"?(g(),_(B,{key:0},[(g(),_("svg",Gb,[X[3]||(X[3]=o("circle",{cx:"30",cy:"30",r:"27",fill:"#fff",stroke:"#c9ccd1"},null,-1)),(g(),_(B,null,he([0,90,180,270],K=>o("line",{key:K,x1:"30",y1:"5",x2:"30",y2:"9",stroke:"#1b1b1b","stroke-width":"1.5",transform:`rotate(${K} 30 30)`},null,8,Jb)),64)),o("line",{x1:"30",y1:"30",x2:"30",y2:"16",stroke:"#1b1b1b","stroke-width":"2.4","stroke-linecap":"round",transform:`rotate(${C.value} 30 30)`},null,8,Xb),o("line",{x1:"30",y1:"30",x2:"30",y2:"11",stroke:"#1b1b1b","stroke-width":"1.6","stroke-linecap":"round",transform:`rotate(${F.value} 30 30)`},null,8,Zb),X[4]||(X[4]=o("circle",{cx:"30",cy:"30",r:"1.8",fill:"#1b1b1b"},null,-1))])),i.value?(g(),_("span",Qb,[o("span",ev,[o("span",tv,d(n.value),1),o("span",nv,d(h.value),1)])])):H("",!0)],64)):f.value==="digital"&&b.value==="screen"?(g(),_(B,{key:1},[o("span",sv,d(a(Pe)(a(ms)(e.tile))),1),o("span",iv,[o("span",ov,d(a(Vi)(a(is),O.value)),1),o("span",lv,d(n.value),1)])],64)):s.value?(g(),_(B,{key:2},[o("span",{class:me(["ic mdi",{lit:k.value}])},d(a(Pe)(a(ms)(e.tile))),3),o("span",av,[o("span",rv,d(n.value),1),l.value?(g(),_("span",cv,d($e.value),1)):f.value==="watch"?(g(),_("span",uv,[Re(d(se.value),1),A.value&&!V.value?(g(),_("small",dv,d(A.value),1)):H("",!0)])):be.value?(g(),_("span",{key:2,class:me(["st",{off:V.value}])},d(be.value),3)):H("",!0)]),e.tile.options?.inline==="slider"?(g(),_("span",{key:0,class:"mini-slider",style:je(Ye.value)},null,4)):H("",!0),p.value?(g(),_("span",fv,[p.value==="toggle"?(g(),_("span",{key:0,class:me(["tog",{off:!L.value}])},null,2)):p.value==="setpoint"?(g(),_("span",pv,[o("span",hv,d(y("minus")||"−"),1),o("b",null,d(ee.value),1),o("span",mv,d(y("plus")||"+"),1)])):p.value==="volume"?(g(),_(B,{key:2},[o("span",{class:"range",style:je(le.value)},null,4),o("span",bv,d(y("volume-high")),1)],64)):p.value==="playback"?(g(),_(B,{key:3},[o("span",vv,d(y("skip-previous")),1),o("span",gv,d(y(L.value?"pause":"play")||y("play")),1),o("span",_v,d(y("skip-next")),1)],64)):p.value==="buttons"&&b.value==="cover"?(g(),_(B,{key:4},[o("span",yv,d(y("arrow-expand-horizontal")),1),o("span",wv,d(y("stop")),1),o("span",kv,d(y("arrow-collapse-horizontal")),1)],64)):p.value==="run"?(g(),_("span",$v,d(ye.value),1)):(g(),_("span",{key:6,class:"range",style:je({background:`linear-gradient(to right, #2196f3 ${ue.value}%, #d3e8fb ${ue.value}%)`})},null,4))])):H("",!0)],64)):i.value?(g(),_(B,{key:3},[o("span",xv,[o("span",{class:me(["ic mdi",{lit:k.value}])},d(a(Pe)(a(ms)(e.tile))),3),o("span",Sv,[o("span",Cv,d(n.value),1),l.value?(g(),_("span",Tv,d($e.value),1)):f.value==="watch"?(g(),_("span",Ev,[Re(d(se.value),1),A.value&&!V.value?(g(),_("small",Av,d(A.value),1)):H("",!0)])):be.value?(g(),_("span",{key:2,class:me(["st",{off:V.value}])},d(be.value),3)):H("",!0)])]),e.tile.options?.inline==="slider"?(g(),_("span",{key:0,class:"mini-slider",style:je(Ye.value)},null,4)):H("",!0),p.value?(g(),_("span",Pv,[p.value==="toggle"?(g(),_("span",{key:0,class:me(["tog",{off:!L.value}])},null,2)):p.value==="setpoint"?(g(),_("span",Ov,[o("span",Iv,d(y("minus")||"−"),1),o("b",null,d(ee.value),1),o("span",Lv,d(y("plus")||"+"),1)])):p.value==="stepper"&&b.value.endsWith("select")?(g(),_(B,{key:2},[o("span",Mv,d(y("chevron-left")),1),o("span",Rv,d(y("chevron-right")),1)],64)):p.value==="stepper"?(g(),_("span",Nv,[o("span",Fv,d(y("minus")||"−"),1),o("b",null,d(se.value),1),o("span",Dv,d(y("plus")||"+"),1)])):p.value==="mode"?(g(),_(B,{key:4},[o("span",Uv,d(y("power")),1),o("span",jv,d(y("fire")),1),o("span",Hv,d(y("snowflake")),1)],64)):p.value==="volume"?(g(),_(B,{key:5},[o("span",{class:"range",style:je(le.value)},null,4),o("span",Vv,d(y("volume-high")),1)],64)):p.value==="playback"?(g(),_(B,{key:6},[o("span",Wv,d(y("skip-previous")),1),o("span",Bv,d(y(L.value?"pause":"play")||y("play")),1),o("span",Kv,d(y("skip-next")),1)],64)):p.value==="buttons"&&b.value==="cover"?(g(),_(B,{key:7},[o("span",qv,d(y("arrow-expand-horizontal")),1),o("span",zv,d(y("stop")),1),o("span",Yv,d(y("arrow-collapse-horizontal")),1)],64)):p.value==="buttons"&&b.value==="vacuum"?(g(),_(B,{key:8},[o("span",Gv,d(y("play")),1),o("span",Jv,d(y("stop")),1),o("span",Xv,d(y("home-map-marker")),1)],64)):p.value==="buttons"&&b.value==="timer"?(g(),_(B,{key:9},[o("span",Zv,d(y("play")),1),o("span",Qv,d(y("close")),1)],64)):p.value==="run"?(g(),_("span",eg,d(ye.value),1)):(g(),_("span",{key:11,class:"range",style:je({background:`linear-gradient(to right, #2196f3 ${ue.value}%, #d3e8fb ${ue.value}%)`})},null,4))])):H("",!0)],64)):(g(),_(B,{key:4},[o("span",{class:me(["head",{top:f.value==="watch"}])},[o("span",{class:me(["ic mdi",{lit:k.value}])},d(a(Pe)(a(ms)(e.tile))),3),o("span",tg,[o("span",ng,d(n.value),1),l.value?(g(),_("span",sg,d($e.value),1)):f.value!=="watch"&&be.value?(g(),_("span",{key:1,class:me(["st",{off:V.value}])},d(be.value),3)):H("",!0)])],2),f.value==="watch"?(g(),_("span",ig,[Re(d(se.value),1),A.value&&!V.value?(g(),_("small",og,d(A.value),1)):H("",!0)])):H("",!0),e.tile.options?.inline==="slider"?(g(),_("span",{key:1,class:"mini-slider",style:je(Ye.value)},null,4)):H("",!0)],64)),E.value?(g(),_("button",{key:5,type:"button",class:"remove",title:a(c)("editor.tile_card.remove"),"aria-label":a(c)("editor.tile_card.remove_named",{name:n.value}),onClick:X[0]||(X[0]=At(K=>a($u)(e.tile),["stop"]))},"✕",8,lg)):H("",!0)],46,Yb)),[[a(Ou),{kind:"tile",tile:e.tile}]])}}),rg=["viewBox","aria-label"],cg=["y"],ug=["cx","cy","r","stroke","stroke-width"],dg=["x1","y1","x2","y2","stroke","stroke-width"],fg=["x","y","fill"],pg=["x","y"],Mu=Me({__name:"TopbarSvg",props:{items:{},nameText:{},single:{type:Boolean}},setup(e,{expose:t}){const n=e,s=$(()=>{m.fontsVersion,m.now,m.topbarPreviews;const x=n.items||un();return vu(x,yu.value,n.nameText??(m.layout?.title||Fn("editor.mockup.home")),hn)}),i=$(()=>s.value.metrics),l=$(()=>n.single?Math.round(i.value.text*1.4):i.value.top+Math.round(i.value.name*.45)),r=$(()=>n.single?Math.round(i.value.text*1.05):i.value.top),u=$(()=>{if(!n.single)return s.value.placed;const x=s.value.parts[0];return x&&(x.x=0),x?[x]:[]}),f=$(()=>n.single?`-2 0 ${Math.max(1,u.value[0]?.width||1)+4} ${l.value}`:`0 0 ${i.value.width} ${l.value}`),h=$(()=>r.value+(s.value.zero.top+s.value.zero.bottom)/2),p=$(()=>bm(s.value.nameText,s.value.fonts.name,Math.min(s.value.natural,s.value.nameRoom))),b=$(()=>new Date(m.now));function v(x){const O=b.value;return[[(O.getHours()%12+O.getMinutes()/60)*30,x*.24],[O.getMinutes()*6,x*.34]].map(([C,F])=>{const T=C*Math.PI/180;return{x2:F*Math.sin(T),y2:-F*Math.cos(T)}})}const y=x=>x.x-x.icon.ink.left,M=x=>(x.icon?x.x+(x.icon.ink.right-x.icon.ink.left)+s.value.gaps.icon:x.x)-x.text.ink.left,E=$(()=>`${(Math.max(1,u.value[0]?.width||1)+4)*(26/i.value.icon)}px`);return t({lay:s}),(x,O)=>(g(),_("svg",{viewBox:f.value,role:"img","aria-label":e.single?a(c)("editor.topbar.live.looks"):a(c)("editor.topbar.aria",{name:s.value.nameText}),style:je(e.single?{width:E.value}:void 0)},[e.single?H("",!0):(g(),_("text",{key:0,x:"0",y:i.value.top,fill:"#1b1b1b",style:je({font:s.value.fonts.name})},d(p.value),13,cg)),o("g",null,[(g(!0),_(B,null,he(u.value,C=>(g(),_(B,{key:C.index},[C.dial?(g(),_(B,{key:0},[o("circle",{cx:C.x+C.dial/2,cy:h.value,r:C.dial/2-Math.max(1,Math.round(C.dial/10))/2,fill:"none",stroke:C.view.color||"#46525e","stroke-width":Math.max(1,Math.round(C.dial/10))},null,8,ug),(g(!0),_(B,null,he(v(C.dial),(F,T)=>(g(),_("line",{key:T,x1:C.x+C.dial/2,y1:h.value,x2:C.x+C.dial/2+F.x2,y2:h.value+F.y2,stroke:C.view.color||"#46525e","stroke-width":Math.max(1,Math.round(C.dial*.075)),"stroke-linecap":"round"},null,8,dg))),128))],64)):(g(),_(B,{key:1},[C.icon?(g(),_("text",{key:0,x:y(C),y:h.value-(C.icon.ink.top+C.icon.ink.bottom)/2,fill:C.view.color||"#46525e",style:je({font:s.value.fonts.icon})},d(C.icon.glyph),13,fg)):H("",!0),C.text?(g(),_("text",{key:1,x:M(C),y:r.value,fill:"#46525e",style:je({font:s.value.fonts.text})},d(C.text.value),13,pg)):H("",!0)],64))],64))),128))])],12,rg))}}),hg={class:"page"},mg={class:"page-label"},bg=["title"],vg={key:1},gg=["title"],_g={class:"tiles"},yg=["data-slot","title","aria-label","onClick"],wg=Me({__name:"DevicePage",props:{page:{},entries:{},pages:{},moving:{}},setup(e){const t=e,n=$(()=>new Map(t.entries.map(h=>[h.slot,h]))),s=$(()=>new Set(t.entries.flatMap(h=>Hn(h.slot,ut(h.tile)).slice(1)))),i=$(()=>Array.from({length:ze},(h,p)=>t.page*ze+p).filter(h=>!s.value.has(h))),l=$(()=>t.pages>1&&!t.entries.some(h=>Tt(h.slot)===t.page)),r=$(()=>m.inspector?.kind==="bar"||m.inspector?.kind==="bar-add"),u=$(()=>t.entries.filter(h=>Tt(h.slot)===t.page).reduce((h,p)=>h+kl(ut(p.tile)),0));function f(h){const p=m.insertAt===h;m.insertAt=p?-1:h,m.insertAt>=0&&document.querySelector("#search")?.focus()}return(h,p)=>(g(),_("div",hg,[o("div",mg,[o("span",null,d(a(c)("editor.page.label",{page:e.page+1})),1),l.value?(g(),_("button",{key:0,type:"button",class:"btn mini",title:a(c)("editor.page.remove_title"),onClick:p[0]||(p[0]=b=>a(Cm)(e.page))},d(a(c)("editor.page.remove")),9,bg)):(g(),_("span",vg,d(u.value)+" / "+d(a(ze)),1))]),o("div",{class:me(["device",{cyd:!a(Sl)}])},[o("div",{class:me(["bar-wrap",{selected:r.value}]),title:a(c)("editor.page.edit_bar"),role:"button",tabindex:"0",onClick:p[1]||(p[1]=b=>a(Jt)(0)),onKeydown:p[2]||(p[2]=$c(At(b=>a(Jt)(0),["prevent"]),["enter"]))},[te(Mu)],42,gg),o("div",_g,[(g(!0),_(B,null,he(i.value,b=>(g(),_(B,{key:b},[n.value.get(b)?(g(),it(ag,{key:0,tile:n.value.get(b).tile,slot:b,placeholder:n.value.get(b).tile===e.moving},null,8,["tile","slot","placeholder"])):(g(),_("button",{key:1,type:"button",class:me(["cell",{"insert-here":a(m).insertAt===b}]),"data-slot":b,title:a(c)("editor.page.cell.title"),"aria-label":a(c)("editor.page.cell.aria",{slot:b%a(ze)+1,page:e.page+1}),onClick:v=>f(b)},[p[3]||(p[3]=o("span",null,"+",-1)),o("small",null,d(a(m).insertAt===b?a(c)("editor.page.cell.next"):a(c)("editor.page.cell.empty")),1)],10,yg))],64))),128))])],2)]))}}),kg={class:"library",id:"library"},$g={class:"lib-head"},xg={class:"lib-title"},Sg=["placeholder","aria-label"],Cg={class:"filters",id:"filters"},Tg=["aria-pressed","onClick"],Eg={class:"lib-row"},Ag=["aria-label"],Pg={value:""},Og=["value"],Ig=["aria-pressed","title"],Lg={class:"lib-list",id:"results","aria-live":"polite"},Mg=["title","disabled","onClick"],Rg={class:"tx"},Ng={key:0,class:"hint"},Fg={key:1,class:"hint"},Dg={class:"lib-foot"},Ug=Me({__name:"Library",setup(e){const t=["","light","climate","switch","binary_sensor","button","script","fan","cover","scene","vacuum","sensor","media_player","weather","number","select","person","timer","screen"],n={switch:"input_boolean",number:"input_number",select:"input_select",weather:"sun",button:"input_button"},s=$(()=>new Set(m.layout?.tiles.map(p=>p.entity)||[])),i=p=>s.value.has(p)&&!Wi(p),l=$(()=>[...new Set(m.inventory.entities.map(p=>p.area).filter(p=>!!p))].sort((p,b)=>p.localeCompare(b))),r=$(()=>{const p=m.search.toLocaleLowerCase(),b=m.filter,v=m.room;return[...m.inventory.builtin||[],...m.inventory.entities].filter(y=>y.tile!==!1&&(Sl.value||!["camera","image"].includes(y.id.split(".")[0]))&&(!b||y.id.startsWith(b+".")||n[b]===y.id.split(".")[0])&&(!v||y.area===v)&&(!m.hidePlaced||!i(y.id))&&`${y.name} ${y.id} ${y.device||""} ${y.area||""}`.toLocaleLowerCase().includes(p))}),u=$(()=>(m.layout?.tiles.length||0)>=Vn.value),f=$(()=>m.inventory.entities.length),h=p=>{const b=p.id.split(".")[0];return p.state==="unavailable"||p.state==="unknown"?"gone":["light","switch","input_boolean","fan"].includes(b)&&p.state==="on"?"on":""};return(p,b)=>(g(),_("aside",kg,[o("div",$g,[o("div",xg,[Re(d(a(c)("editor.library.title"))+" ",1),o("small",null,d(a(c)("editor.library.entities",f.value)),1)]),Ae(o("input",{id:"search","onUpdate:modelValue":b[0]||(b[0]=v=>a(m).search=v),type:"search",placeholder:a(c)("editor.library.search"),autocomplete:"off","aria-label":a(c)("editor.library.search_label")},null,8,Sg),[[Xe,a(m).search]]),o("div",Cg,[(g(),_(B,null,he(t,v=>o("button",{key:v,type:"button","aria-pressed":a(m).filter===v?"true":"false",onClick:y=>a(m).filter=v},[v?(g(),_("span",{key:0,class:"domain-icon",style:je({color:a(Ut)(v+".")[2],background:a(Ut)(v+".")[3]}),"aria-hidden":"true"},d(a(Ut)(v+".")[1]),5)):H("",!0),Re(d(a(c)(`editor.library.filters.${v||"all"}`)),1)],8,Tg)),64))]),o("div",Eg,[Ae(o("select",{id:"room","onUpdate:modelValue":b[1]||(b[1]=v=>a(m).room=v),"aria-label":a(c)("editor.library.room")},[o("option",Pg,d(a(c)("editor.library.all_rooms")),1),(g(!0),_(B,null,he(l.value,v=>(g(),_("option",{key:v,value:v},d(v),9,Og))),128))],8,Ag),[[jn,a(m).room]]),o("button",{type:"button",class:"chip-toggle",id:"hide-placed","aria-pressed":a(m).hidePlaced?"true":"false",title:a(c)("editor.library.hide_placed_title"),onClick:b[2]||(b[2]=v=>a(m).hidePlaced=!a(m).hidePlaced)},d(a(c)("editor.library.hide_placed")),9,Ig)])]),o("div",Lg,[(g(!0),_(B,null,he(r.value.slice(0,80),v=>Ae((g(),_("button",{key:v.id,type:"button",class:"ent",title:v.id,disabled:i(v.id)||u.value,onClick:y=>a(ku)(v.id)},[o("span",{class:me(["av mdi",h(v)]),style:je({color:a(Ut)(v.id)[2],background:a(Ut)(v.id)[3]})},d(a(m).inventory.icons?a(Pe)(a(xn)(v.id)):a(Ut)(v.id)[1]),7),o("span",Rg,[o("b",null,d(v.name),1),o("small",null,d([a(Ut)(v.id)[0],v.area,v.device].filter(Boolean).join(" · ")),1)]),o("span",{class:me(["add",{done:i(v.id)}])},d(i(v.id)?"✓":"+"),3)],8,Mg)),[[a(Ou),{kind:"entity",id:v.id}]])),128)),r.value.length?r.value.length>80?(g(),_("p",Fg,d(a(c)("editor.common.results",r.value.length)),1)):H("",!0):(g(),_("p",Ng,d(a(m).hidePlaced&&!a(m).search&&!a(m).filter&&!a(m).room?a(c)("editor.library.all_placed"):a(c)("editor.library.none_found")),1))]),o("div",Dg,d(u.value?a(c)(a(Vn)<48?"editor.library.full_update":"editor.library.full",a(Vn)):a(c)("editor.library.hint")),1)]))}}),jg={class:"canvas-head"},Hg={id:"count"},Vg={key:0,id:"no-tiles"},Wg={key:1},Bg={key:2,id:"positions-hint",class:"warn"},Kg={key:3,id:"page-reach-hint",class:"warn"},qg=["aria-label"],zg={class:"page-label"},Yg=["tabindex"],Gg=Me({__name:"LayoutView",setup(e){const t=$(()=>m.layout),n=$(()=>m.drag.preview||Ze(t.value)),s=$(()=>Pt(n.value,t.value.pages)),i=$(()=>Em()),l=$(()=>s.valueem(t.value.tiles)&&!yn(0,2,26)?c("editor.layout.positions_hint",{firmware:_t.value?.firmware||c("editor.common.unknown")}):""),u=$(()=>Tu(n.value,s.value));function f(h){h.target.closest(".device, .page-label, .canvas-head")||m.inspector&&Qe()}return(h,p)=>(g(),_(B,null,[o("div",{class:"canvas",id:"canvas",onClick:f},[o("div",jg,[o("b",Hg,d(a(c)("editor.layout.count",{tiles:t.value.tiles.length,limit:a(Vn)},s.value)),1),t.value.tiles.length?(g(),_("span",Wg,d(a(c)("editor.layout.how_to")),1)):(g(),_("span",Vg,d(a(c)("editor.layout.no_tiles")),1)),r.value?(g(),_("span",Bg,d(r.value),1)):H("",!0),u.value?(g(),_("span",Kg,d(u.value),1)):H("",!0)]),o("div",{class:"pages",id:"layout-preview","aria-label":a(c)("editor.layout.aria")},[(g(!0),_(B,null,he(i.value,b=>(g(),it(wg,{key:b,page:b-1,entries:n.value,pages:s.value,moving:a(m).drag.moving},null,8,["page","entries","pages","moving"]))),128)),o("div",{class:me(["page ghost",{disabled:!l.value}])},[o("div",zg,[o("span",null,d(a(c)("editor.page.label",{page:i.value+1})),1)]),o("div",{class:me(["device",{cyd:a(_t)?.board!=="guition"}]),id:"add-page",role:"button",tabindex:l.value?0:-1,onClick:p[0]||(p[0]=b=>l.value&&a(Qa)()),onKeydown:p[1]||(p[1]=$c(At(b=>l.value&&a(Qa)(),["prevent"]),["enter"]))},d(l.value?a(c)("editor.layout.add_page"):a(c)("editor.layout.max_pages",a(rn))),43,Yg)],2)],8,qg)]),te(Ug)],64))}}),Jg={class:"status",id:"settings-status",role:"status"},Xg={key:0,class:"set-grid",id:"settings-groups"},Zg={class:"mdi"},Qg=["data-setting","title","onClick"],e_=["id"],t_={class:"s-control"},n_=["id","aria-checked","aria-labelledby","disabled","onClick"],s_=["aria-labelledby"],i_=["aria-pressed","disabled","onClick"],o_={key:2,class:"step"},l_=["aria-label","disabled","onPointerdown","onClick"],a_={class:"mdi"},r_=["id","aria-labelledby"],c_=["aria-label","disabled","onPointerdown","onClick"],u_={class:"mdi"},d_={key:0,class:"hint warn",id:"settings-page-reach"},f_=Me({__name:"SettingsTab",setup(e){const t=$(()=>Tl()),n=$(()=>$i()),s=$(()=>t.value?.owner==="screen"&&!_t.value?.online),i=$(()=>Fm.map(E=>({...E,rows:E.rows.filter(x=>t.value?.keys.includes(x.key))})).filter(E=>E.rows.length)),l=$(()=>Tu()),r=E=>s.value||!!t.value?.unavailable.includes(E.key),u=E=>E.needs?!!n.value[E.needs]:!0,f=$(()=>s.value?c("editor.screen_settings.status.offline"):m.settingPending?c("editor.common.saving"):t.value?.owner==="screen"?c("editor.screen_settings.status.screen"):c("editor.screen_settings.status.app")),h=(E,x)=>{const O=n.value[E.key];return r(E)||!u(E)||O===null||O===void 0?!0:E.kind!=="moment"&&sr(E,O,x,!1,n.value)===O},p=new WeakMap;function b(E,x,O){const C=$i(),F=sr(E,C[E.key],x,O,C);F!==C[E.key]&&ti(E.key,F,600)}function v(E,x,O){const C=E.currentTarget;if(C.disabled||E.button!==0)return;const F={timer:0,held:!1};p.set(C,F);let T=0;F.timer=window.setTimeout(function V(){F.held=!0,T+=1,b(x,O,T>5),F.timer=window.setTimeout(V,180)},450)}function y(E){const x=p.get(E.currentTarget);x&&clearTimeout(x.timer)}function M(E,x,O){const C=p.get(E.currentTarget);if(C?.held){C.held=!1;return}b(x,O,!1)}return(E,x)=>(g(),_("div",{class:me(["settings",{offline:s.value}]),id:"general-settings"},[o("span",Jg,d(f.value),1),t.value?(g(),_("div",Xg,[(g(!0),_(B,null,he(i.value,O=>(g(),_("section",{key:O.group,class:"set-card"},[o("h4",null,[o("span",Zg,d(a(Pe)(O.icon)),1),Re(d(a(c)(`editor.screen_settings.groups.${O.group}`)),1)]),(g(!0),_(B,null,he(O.rows,C=>(g(),_("div",{key:C.key,class:me(["srow",[`setting-${C.kind}`,{inactive:!u(C)||r(C)}]]),"data-setting":C.key,title:r(C)&&!s.value?a(c)("editor.screen_settings.unavailable"):"",onClick:F=>C.kind==="toggle"&&F.target.closest(".srow")===F.currentTarget&&!F.target.closest("button")&&!r(C)&&a(ti)(C.key,!n.value[C.key],150)},[o("span",{class:"s-label",id:`setting-label-${C.key}`},d(a(vo)(C)),9,e_),o("div",t_,[C.kind==="toggle"?(g(),_("button",{key:0,type:"button",class:me(["switch",{unknown:n.value[C.key]===null||n.value[C.key]===void 0}]),role:"switch",id:`setting-${C.key}`,"aria-checked":n.value[C.key]?"true":"false","aria-labelledby":`setting-label-${C.key}`,disabled:r(C),onClick:At(F=>a(ti)(C.key,!n.value[C.key],150),["stop"])},null,10,n_)):C.kind==="choice"?(g(),_("div",{key:1,class:"seg",role:"group","aria-labelledby":`setting-label-${C.key}`},[(g(!0),_(B,null,he(C.options,F=>(g(),_("button",{key:String(F),type:"button","aria-pressed":n.value[C.key]===F?"true":"false",disabled:r(C),onClick:T=>a(ti)(C.key,F,150)},d(a(Dm)(C,F)),9,i_))),128))],8,s_)):(g(),_("div",o_,[o("button",{type:"button","aria-label":a(c)("editor.screen_settings.lower",{name:a(vo)(C)}),disabled:h(C,-1),onPointerdown:F=>v(F,C,-1),onPointerup:y,onPointercancel:y,onPointerleave:y,onClick:F=>M(F,C,-1)},[o("span",a_,d(a(Pe)("F0374")),1)],40,l_),o("output",{id:`setting-${C.key}`,"aria-labelledby":`setting-label-${C.key}`},d(a(Vm)(C,n.value)),9,r_),o("button",{type:"button","aria-label":a(c)("editor.screen_settings.higher",{name:a(vo)(C)}),disabled:h(C,1),onPointerdown:F=>v(F,C,1),onPointerup:y,onPointercancel:y,onPointerleave:y,onClick:F=>M(F,C,1)},[o("span",u_,d(a(Pe)("F0415")),1)],40,c_)]))])],10,Qg))),128)),l.value&&O.rows.some(C=>C.key==="page_buttons")?(g(),_("p",d_,d(l.value),1)):H("",!0)]))),128))])):H("",!0)],2))}}),p_={class:"seg wrap",role:"group"},h_=["disabled","aria-pressed","onClick"],wt=Me({__name:"Segmented",props:{choices:{},value:{},disabled:{type:Boolean}},emits:["pick"],setup(e,{emit:t}){const n=t;return(s,i)=>(g(),_("div",p_,[(g(!0),_(B,null,he(e.choices,([l,r])=>(g(),_("button",{key:String(l),type:"button",disabled:e.disabled,"aria-pressed":String(l)===String(e.value)?"true":"false",onClick:u=>n("pick",l)},d(r),9,h_))),128))]))}}),m_={class:"f"},b_={class:"f-label"},v_={key:0},g_={key:1,class:"warn"},__=["aria-expanded"],y_={class:"tx"},w_={key:0,class:"mono"},k_={class:"link"},$_={key:0,class:"picker"},x_=["placeholder","aria-label"],S_={class:"action-list"},C_=["aria-pressed","onClick"],T_={key:0,class:"hint"},E_={key:1,class:"warn"},A_={class:"f-label"},P_=["aria-label","value","onChange"],O_={value:""},I_=["value"],L_={key:3,class:"action-number"},M_=["aria-label","value","onInput"],R_=["onClick"],N_={key:4,class:"action-number"},F_=["aria-label","min","max","step","value","placeholder","onInput"],D_={key:0},U_=["aria-label","value","placeholder","onInput"],j_={key:6},H_={key:0,class:"warn"},V_={key:3},W_=Me({__name:"ActionPicker",props:{tile:{}},setup(e){const t=e,n=$(()=>m.entityActions[t.tile.entity]),s=$(()=>t.tile.options?.action),i=$(()=>n.value?.find(T=>T.action===s.value?.action)),l=$(()=>m.actionPickerOpen||!s.value),r=$(()=>{const T=m.actionSearch.trim().toLocaleLowerCase();return(n.value||[]).filter(V=>`${V.name} ${V.action} ${V.description}`.toLocaleLowerCase().includes(T))});n.value===void 0&&km(t.tile.entity);function u(T){const V=T.action===s.value?.action;t.tile.options={...t.tile.options,action:V?s.value:{action:T.action}},m.actionPickerOpen=!1,pt()}function f(T,V){const L={...t.tile.options?.action?.data||{}};V===void 0?delete L[T]:L[T]=V,t.tile.options={...t.tile.options,action:{action:s.value.action,...Object.keys(L).length?{data:L}:{}}},pt()}const h=$(()=>{if(!i.value)return[];const T=t.tile.options?.action?.data||{};return i.value.fields.filter(V=>V.required&&T[V.key]===void 0).map(V=>V.name)}),p=T=>Object.keys(T.selector||{})[0]||"text",b=T=>(T.selector||{})[p(T)]||{},v=T=>T.example===void 0?"":typeof T.example=="string"?T.example:JSON.stringify(T.example);function y(T){const V=b(T),L=p(T);return Array.isArray(T.options)?T.options.map(k=>[k,k]):L==="select"&&Array.isArray(V.options)&&!V.multiple?V.options.map(k=>k&&typeof k=="object"?[String(k.value),String(k.label??k.value)]:[String(k),String(k)]):null}const M=T=>"#"+T.map(V=>Math.max(0,Math.min(255,Number(V)||0)).toString(16).padStart(2,"0")).join(""),E=T=>Array.isArray(T)&&T.length===3?M(T):"#ffffff",x=T=>T===void 0?"":typeof T=="string"?T:JSON.stringify(T);function O(T,V){const L=V.trim();if(!L)return f(T.key,void 0);if(p(T)==="text")return f(T.key,V);try{f(T.key,JSON.parse(L))}catch{f(T.key,V)}}function C(T,V){f(T.key,V===""||!Number.isFinite(Number(V))?void 0:Number(V))}const F=T=>b(T).unit_of_measurement||p(T)==="color_temp"&&b(T).unit||"";return(T,V)=>(g(),_("div",m_,[o("span",b_,d(a(c)("editor.action.label")),1),n.value===void 0?(g(),_("small",v_,d(a(c)("editor.action.asking")),1)):n.value===null?(g(),_("small",g_,d(a(c)("editor.action.not_answering")),1)):(g(),_(B,{key:2},[o("button",{type:"button",class:"row","aria-expanded":l.value?"true":"false",onClick:V[0]||(V[0]=L=>a(m).actionPickerOpen=!l.value)},[o("span",y_,[o("b",null,d(i.value?i.value.name:s.value?s.value.action:a(c)("editor.action.choose")),1),s.value?(g(),_("small",w_,d(s.value.action),1)):H("",!0)]),o("span",k_,d(l.value?a(c)("editor.common.close"):a(c)("editor.common.change")),1)],8,__),l.value?(g(),_("div",$_,[Ae(o("input",{"onUpdate:modelValue":V[1]||(V[1]=L=>a(m).actionSearch=L),type:"search",placeholder:a(c)("editor.action.search"),"aria-label":a(c)("editor.action.search_label")},null,8,x_),[[Xe,a(m).actionSearch]]),o("div",S_,[(g(!0),_(B,null,he(r.value,L=>(g(),_("button",{key:L.action,type:"button",class:"action-choice","aria-pressed":L.action===s.value?.action?"true":"false",onClick:k=>u(L)},[o("strong",null,d(L.name),1),o("small",null,d(L.description?`${L.action} · ${L.description}`:L.action),1)],8,C_))),128)),r.value.length?H("",!0):(g(),_("p",T_,d(a(c)("editor.action.none_found")),1))])])):H("",!0),s.value&&!i.value?(g(),_("small",E_,d(a(c)("editor.action.gone")),1)):H("",!0),i.value&&!l.value?(g(),_(B,{key:2},[(g(!0),_(B,null,he(i.value.fields,L=>(g(),_("div",{key:L.key,class:"f"},[o("span",A_,d(L.required?L.name:a(c)("editor.action.optional",{name:L.name})),1),p(L)==="boolean"?(g(),it(wt,{key:0,choices:[["",a(c)("editor.action.not_set")],["true",a(c)("editor.action.on")],["false",a(c)("editor.action.off")]],value:s.value?.data?.[L.key]===void 0?"":String(s.value?.data?.[L.key]),onPick:k=>f(L.key,k===""?void 0:k==="true")},null,8,["choices","value","onPick"])):y(L)&&y(L).length<=4?(g(),it(wt,{key:1,choices:[["",a(c)("editor.action.not_set")],...y(L)],value:s.value?.data?.[L.key]===void 0?"":String(s.value?.data?.[L.key]),onPick:k=>f(L.key,k===""?void 0:k)},null,8,["choices","value","onPick"])):y(L)?(g(),_("select",{key:2,"aria-label":L.name,value:String(s.value?.data?.[L.key]??""),onChange:k=>f(L.key,k.target.value===""?void 0:k.target.value)},[o("option",O_,d(a(c)("editor.action.not_set")),1),(g(!0),_(B,null,he(y(L),([k,A])=>(g(),_("option",{key:k,value:k},d(A),9,I_))),128))],40,P_)):p(L)==="color_rgb"?(g(),_("div",L_,[o("input",{type:"color","aria-label":L.name,value:E(s.value?.data?.[L.key]),onInput:k=>f(L.key,[1,3,5].map(A=>parseInt(k.target.value.slice(A,A+2),16)))},null,40,M_),o("button",{type:"button",class:"btn quiet mini",onClick:k=>f(L.key,void 0)},d(a(c)("editor.action.not_set")),9,R_)])):p(L)==="number"||p(L)==="color_temp"?(g(),_("div",N_,[o("input",{type:"number","aria-label":L.name,min:b(L).min,max:b(L).max,step:b(L).step==="any"?"any":b(L).step,value:s.value?.data?.[L.key]??"",placeholder:v(L),onInput:k=>C(L,k.target.value)},null,40,F_),F(L)?(g(),_("span",D_,d(F(L)),1)):H("",!0)])):(g(),_("input",{key:5,type:"text","aria-label":L.name,value:x(s.value?.data?.[L.key]),placeholder:v(L),onInput:k=>O(L,k.target.value)},null,40,U_)),L.description?(g(),_("small",j_,d(L.description),1)):H("",!0)]))),128)),h.value.length?(g(),_("small",H_,d(a(c)("editor.action.needs",{fields:h.value.join(", ")})),1)):H("",!0)],64)):H("",!0),a(yn)(0,2,58)?H("",!0):(g(),_("small",V_,d(a(c)("editor.action.needs_firmware")),1))],64))]))}}),B_={class:"f"},K_={class:"f-label"},q_=["aria-expanded"],z_={class:"av mdi"},Y_={class:"tx"},G_={class:"link"},J_={key:0,class:"picker"},X_=["placeholder","aria-label"],Z_=["aria-pressed","title"],Q_={class:"mdi"},ey=["aria-pressed","title"],ty={class:"icon-list"},ny={class:"icon-grid"},sy=["title","aria-label","aria-pressed","onClick"],iy={class:"mdi"},oy={key:0,class:"hint"},ly={key:1},Ru=Me({__name:"IconPicker",props:{selected:{},automatic:{},autoLabel:{},allowNone:{type:Boolean},note:{}},emits:["pick"],setup(e,{emit:t}){const n=e,s=t,i=ke(""),l=$(()=>Ks(n.selected)),r=$(()=>n.selected==="none"?"":Pe(l.value?.cp||n.automatic)),u=$(()=>n.selected==="none"?c("editor.icon.none"):l.value?.label||n.autoLabel),f=$(()=>{const h=i.value.trim().toLocaleLowerCase();return(m.inventory.icons?.groups||[]).map(p=>({label:p.label,icons:p.icons.filter(b=>!h||`${b.label} ${b.name.replaceAll("-"," ")} ${p.label}`.toLocaleLowerCase().includes(h))})).filter(p=>p.icons.length)});return(h,p)=>(g(),_("div",B_,[o("span",K_,d(a(c)("editor.icon.label")),1),o("button",{type:"button",class:"row","aria-expanded":a(m).iconPickerOpen?"true":"false",onClick:p[0]||(p[0]=b=>a(m).iconPickerOpen=!a(m).iconPickerOpen)},[o("span",z_,d(r.value),1),o("span",Y_,[o("b",null,d(u.value),1)]),o("span",G_,d(a(m).iconPickerOpen?a(c)("editor.common.close"):a(c)("editor.common.change")),1)],8,q_),a(m).iconPickerOpen?(g(),_("div",J_,[Ae(o("input",{"onUpdate:modelValue":p[1]||(p[1]=b=>i.value=b),type:"search",placeholder:a(c)("editor.icon.search"),"aria-label":a(c)("editor.icon.search_label")},null,8,X_),[[Xe,i.value]]),o("button",{type:"button",class:"icon-choice icon-auto","aria-pressed":e.selected==="auto"?"true":"false",title:e.autoLabel,onClick:p[2]||(p[2]=b=>s("pick","auto"))},[o("span",Q_,d(a(Pe)(e.automatic)),1),o("span",null,d(e.autoLabel),1)],8,Z_),e.allowNone?(g(),_("button",{key:0,type:"button",class:"icon-choice icon-auto","aria-pressed":e.selected==="none"?"true":"false",title:a(c)("editor.icon.none"),onClick:p[3]||(p[3]=b=>s("pick","none"))},[p[4]||(p[4]=o("span",{class:"mdi"},null,-1)),o("span",null,d(a(c)("editor.icon.none_text_only")),1)],8,ey)):H("",!0),o("div",ty,[(g(!0),_(B,null,he(f.value,b=>(g(),_("section",{key:b.label},[o("small",null,d(b.label),1),o("div",ny,[(g(!0),_(B,null,he(b.icons,v=>(g(),_("button",{key:v.name,type:"button",class:"icon-choice",title:v.label,"aria-label":a(c)("editor.icon.aria",{name:v.label}),"aria-pressed":e.selected===v.name?"true":"false",onClick:y=>s("pick",v.name)},[o("span",iy,d(a(Pe)(v.cp)),1)],8,sy))),128))])]))),128)),f.value.length?H("",!0):(g(),_("p",oy,d(a(c)("editor.icon.none_found")),1))])])):H("",!0),e.note?(g(),_("small",ly,d(e.note),1)):H("",!0)]))}}),ay={class:"dr-head"},ry={class:"tx"},cy={class:"mono"},uy=["aria-label"],dy={class:"dr-body"},fy={class:"f"},py={class:"f-label",for:"tile-name"},hy=["value","placeholder"],my={key:1,class:"f"},by={class:"f-label"},vy={key:2,class:"f"},gy={class:"f-label"},_y={key:0,class:"warn"},yy={class:"f"},wy={class:"f-label"},ky={key:0},$y={key:3,class:"f"},xy={class:"f-label"},Sy={key:4,class:"f"},Cy={class:"f-label"},Ty={key:5,class:"f"},Ey={class:"f-label"},Ay={key:7,class:"f"},Py={class:"f-label"},Oy={key:0,class:"warn"},Iy={key:8,class:"f"},Ly={class:"f-label"},My={class:"f"},Ry={class:"f-label"},Ny={class:"sw"},Fy=["aria-label","aria-pressed","onClick"],Dy={class:"dr-foot"},Uy=Me({__name:"TileInspector",props:{tile:{}},setup(e){const t=e,n=$(()=>t.tile.entity.split(".")[0]),s=$(()=>Bs(t.tile.entity)),i=$(()=>as(t.tile.entity)),l=$(()=>m.layout?Pt(Ze(m.layout),m.layout.pages):1),r=$(()=>Tt(t.tile.slot)+1),u=le=>!m.layout?.tiles.some(ee=>Tt(ee.slot)===le-1),f=$(()=>{const le=Array.from({length:Math.min(rn,l.value+1)},(ee,ae)=>ae+1);return i.value>le.length&&le.push(i.value),le.map(ee=>[ee,u(ee)?c("editor.tile.goes_to.empty",{page:ee}):String(ee)])}),h=$(()=>Xa.value?i.value>l.value?{text:c("editor.tile.goes_to.no_page",{page:i.value}),warn:!0}:{text:c("editor.tile.goes_to.hint"),warn:!1}:{text:c("editor.tile.goes_to.needs_firmware"),warn:!1}),p=$(()=>!m.layout?.tiles.some(le=>xe(le)!==xe(t.tile)&&Tt(le.slot)===r.value-1)),b=$(()=>{const le=Array.from({length:l.value},(ee,ae)=>[ae+1,String(ae+1)]);return l.value(i.value?["single","wide"]:["single","wide","full"]).map(le=>[le,c(`editor.tile.size.${le}`)])),y=$(()=>i.value?"":Xa.value?c("editor.tile.size.full_hint"):c("editor.tile.size.needs_firmware")),M=$(()=>m.capabilities[t.tile.entity]),E=(le,ee)=>t.tile.options?.[le]??ee,x=$(()=>E("display",n.value==="screen"?"digital":"standard")),O=$(()=>{const le=n.value==="screen"?["digital","analog"]:["standard","watch"],ee=M.value;return n.value==="weather"&&(!ee||ee.displays.includes("forecast")||x.value==="forecast")&&le.push("forecast"),n.value==="sensor"&&(!ee||ee.displays.includes("graph")||x.value==="graph")&&le.push("graph"),n.value==="sun"&&le.push("sunpath"),le.map(ae=>[ae,c(`editor.tile.display.${ae}`)])}),C=$(()=>{const le=M.value;return le&&x.value==="graph"&&!le.displays.includes("graph")?c("editor.tile.display.no_graph"):le&&x.value==="forecast"&&!le.displays.includes("forecast")?c("editor.tile.display.no_forecast"):""}),F=$(()=>E("size","single")),T=$(()=>m.inventory.controls?.[n.value]),V=$(()=>E("controls",F.value==="full"?"none":T.value?.default)),L=$(()=>{const le=M.value;return(T.value?.choices||[]).filter(ee=>!le||ee.key==="none"||ee.key===V.value||le.controls.includes(ee.key)).map(ee=>[ee.key,ee.label])}),k=$(()=>{const le=M.value;return le&&V.value!=="none"&&!le.controls.includes(V.value)?{text:c("editor.tile.controls.not_offered"),warn:!0}:{text:yn(0,2,19)?c(F.value==="full"?"editor.tile.controls.full_hint":"editor.tile.controls.wide_hint"):c("editor.tile.controls.needs_firmware"),warn:!1}}),A=$(()=>E("tap","auto")),z=$(()=>{const le=["auto","detail","none"];return((M.value?M.value.toggle:Ja.includes(n.value))||A.value==="toggle")&&le.push("toggle"),le.push("action"),le.map(ee=>[ee,c(`editor.tile.tap.${ee}`)])}),P=$(()=>A.value==="toggle"&&M.value&&!M.value.toggle?{text:c("editor.tile.tap.no_toggle"),warn:!0}:A.value==="toggle"&&!Ja.includes(n.value)&&!yn(0,2,58)?{text:c("editor.tile.tap.toggle_needs_firmware"),warn:!1}:A.value==="toggle"?{text:c("editor.tile.tap.hold"),warn:!1}:null),ge=$(()=>E("inline","none")),G=$(()=>cm.includes(n.value)&&(!M.value||M.value.inline||ge.value==="slider")),ie=$(()=>ge.value==="slider"&&M.value&&!M.value.inline),be=$(()=>E("history_hours",24)),se=$(()=>Object.entries(m.inventory.backgrounds||{})),ue=$(()=>!!m.inventory.entities.find(le=>le.id===t.tile.entity)?.icon),ye=$(()=>!!m.inventory.icons&&(n.value!=="screen"||i.value>0)&&!["forecast","sunpath"].includes(x.value));function $e(le){t.tile.name=le,pt()}function Ye(){m.inspector={kind:"inspect",entity:t.tile.entity}}return(le,ee)=>(g(),_(B,null,[o("div",ay,[o("span",{class:"av mdi",style:je({color:a(Ut)(e.tile.entity)[2],background:a(Ut)(e.tile.entity)[3]})},d(a(Pe)(a(ms)(e.tile))),5),o("span",ry,[o("b",null,d(e.tile.name||s.value),1),o("small",cy,d(e.tile.entity),1)]),o("button",{type:"button",class:"icon-btn","aria-label":a(c)("editor.common.close"),onClick:ee[0]||(ee[0]=(...ae)=>a(Qe)&&a(Qe)(...ae))},"✕",8,uy)]),o("div",dy,[o("div",fy,[o("label",py,d(a(c)("editor.tile.name")),1),o("input",{id:"tile-name",value:e.tile.name,placeholder:s.value,maxlength:"60",onInput:ee[1]||(ee[1]=ae=>$e(ae.target.value))},null,40,hy)]),ye.value?(g(),it(Ru,{key:0,selected:e.tile.options?.icon||"auto",automatic:a(xn)(e.tile.entity),"auto-label":a(c)(ue.value?"editor.tile.icon.auto_ha":"editor.tile.icon.auto_default"),note:a(yn)(0,2,18)?"":a(c)("editor.tile.icon.needs_firmware"),onPick:ee[2]||(ee[2]=ae=>a(pn)(e.tile,"icon",ae))},null,8,["selected","automatic","auto-label","note"])):H("",!0),i.value?(g(),_("div",my,[o("span",by,d(a(c)("editor.tile.goes_to.label")),1),te(wt,{choices:f.value,value:i.value,onPick:ee[3]||(ee[3]=ae=>a(Am)(e.tile,Number(ae)))},null,8,["choices","value"]),o("small",{class:me({warn:h.value.warn})},d(h.value.text),3)])):(g(),_("div",vy,[o("span",gy,d(a(c)("editor.tile.display.label")),1),te(wt,{choices:O.value,value:x.value,onPick:ee[4]||(ee[4]=ae=>a(pn)(e.tile,"display",ae))},null,8,["choices","value"]),C.value?(g(),_("small",_y,d(C.value),1)):H("",!0)])),o("div",yy,[o("span",wy,d(a(c)("editor.tile.size.label")),1),te(wt,{choices:v.value,value:F.value,onPick:ee[5]||(ee[5]=ae=>a(pn)(e.tile,"size",ae))},null,8,["choices","value"]),y.value?(g(),_("small",ky,d(y.value),1)):H("",!0)]),b.value.length>1?(g(),_("div",$y,[o("span",xy,d(a(c)("editor.tile.page.label")),1),te(wt,{choices:b.value,value:r.value,onPick:ee[6]||(ee[6]=ae=>a(Tm)(e.tile,Number(ae)-1))},null,8,["choices","value"])])):H("",!0),T.value&&F.value!=="single"&&!i.value?(g(),_("div",Sy,[o("span",Cy,d(a(c)("editor.tile.controls.label")),1),te(wt,{choices:L.value,value:V.value,onPick:ee[7]||(ee[7]=ae=>a(pn)(e.tile,"controls",ae))},null,8,["choices","value"]),o("small",{class:me({warn:k.value.warn})},d(k.value.text),3)])):H("",!0),n.value!=="screen"&&!i.value?(g(),_("div",Ty,[o("span",Ey,d(a(c)("editor.tile.tap.label")),1),te(wt,{choices:z.value,value:A.value,onPick:ee[8]||(ee[8]=ae=>a(pn)(e.tile,"tap",ae))},null,8,["choices","value"]),P.value?(g(),_("small",{key:0,class:me({warn:P.value.warn})},d(P.value.text),3)):H("",!0)])):H("",!0),n.value!=="screen"&&!i.value&&A.value==="action"?(g(),it(W_,{key:6,tile:e.tile},null,8,["tile"])):H("",!0),G.value&&!i.value?(g(),_("div",Ay,[o("span",Py,d(a(c)("editor.tile.slider.label")),1),te(wt,{choices:[["none",a(c)("editor.tile.slider.no")],["slider",a(c)("editor.tile.slider.yes")]],value:ge.value,onPick:ee[9]||(ee[9]=ae=>a(pn)(e.tile,"inline",ae))},null,8,["choices","value"]),ie.value?(g(),_("small",Oy,d(a(c)("editor.tile.slider.nothing")),1)):H("",!0)])):H("",!0),n.value==="sensor"&&!i.value?(g(),_("div",Iy,[o("span",Ly,d(a(c)("editor.tile.history.label")),1),te(wt,{choices:[1,6,24].map(ae=>[ae,a(c)("editor.tile.history.hours",ae)]),value:be.value,onPick:ee[10]||(ee[10]=ae=>a(pn)(e.tile,"history_hours",Number(ae)))},null,8,["choices","value"])])):H("",!0),o("div",My,[o("span",Ry,d(a(c)("editor.tile.background.label")),1),o("div",Ny,[(g(!0),_(B,null,he(se.value,([ae,de])=>(g(),_("button",{key:ae,type:"button","aria-label":a(c)("editor.tile.background.aria",{name:de.label}),"aria-pressed":(e.tile.options?.background||"auto")===ae?"true":"false",onClick:X=>a(pn)(e.tile,"background",ae)},[o("i",{class:me(de.color?"":ae==="none"?"none":"auto"),style:je(de.color?{background:de.color}:void 0)},null,6),Re(d(de.label),1)],8,Fy))),128))])])]),o("div",Dy,[o("button",{type:"button",class:"btn danger",onClick:ee[11]||(ee[11]=ae=>a($u)(e.tile))},d(a(c)("editor.common.remove")),1),ee[12]||(ee[12]=o("span",{class:"spacer"},null,-1)),n.value!=="screen"?(g(),_("button",{key:0,type:"button",class:"btn quiet",onClick:Ye},d(a(c)("editor.common.read_current_data")),1)):H("",!0)])],64))}}),jy={class:"dr-head"},Hy={class:"av mdi",style:{background:"var(--seg)",color:"var(--ink-2)"}},Vy={class:"tx"},Wy=["aria-label"],By={class:"dr-body"},Ky={class:"f"},qy={class:"f-label",for:"title"},zy=["value","placeholder"],Yy={class:"f"},Gy={class:"f-label",id:"topbar-caption"},Jy={style:{"text-transform":"none","letter-spacing":"0","font-weight":"500"}},Xy={class:"items",id:"topbar-chips",role:"list","aria-labelledby":"topbar-caption"},Zy=["data-index","aria-label","onPointerdown","onClick","onKeydown"],Qy={class:"tx"},e0=["aria-label","onClick"],t0=["disabled","title"],n0={class:"live",id:"topbar-live"},s0={class:"f"},i0={class:"f-label"},o0={class:"f"},l0={class:"f-label"},a0={href:"#settings"},r0={key:2},c0={key:0,class:"dr-foot"},u0=["disabled"],d0=["disabled"],f0=Me({__name:"TopbarInspector",props:{index:{}},setup(e){const t=e,n=$(()=>un()),s=$(()=>n.value[t.index]),i=$(()=>(m.fontsVersion,m.now,m.topbarPreviews,vu(n.value,yu.value,m.layout?.title||Fn("editor.mockup.home"),hn))),l=$(()=>i.value.dropped),r=$(()=>m.inventory.header?.min_firmware||"0.2.32"),u=$(()=>{const[G,ie,be]=r.value.split(".").map(Number);return yn(G,ie,be)}),f=$(()=>u.value?c(l.value.size?"editor.topbar.hint.overflow":"editor.topbar.hint.reorder"):c("editor.topbar.hint.needs_firmware",{version:r.value})),h=(G,ie)=>{const be=hn(G);return be.shown?l.value.has(ie)?c("editor.topbar.detail.overflow"):be.analog?c("editor.topbar.detail.dial"):be.text:c("editor.topbar.detail.hidden")},p=G=>{const ie=hn(G);return ie.analog||G.type!=="entity"?Ks(bu[G.type])?.cp:ie.icon},b=G=>m.topbarAdded?.key===at(G)&&Date.now()-m.topbarAdded.time<1200;function v(G){m.layout&&(m.layout.title=G,pt())}function y(G){const ie=[...n.value];ie[t.index]={...ie[t.index],...G},Ns(ie)}const M=$(()=>s.value?hn(s.value).shown?l.value.has(t.index)?c("editor.topbar.live.overflow"):c("editor.topbar.live.looks"):c("editor.topbar.live.hidden"):""),E=$(()=>({clock:Vi(is.value,new Date(m.now)),analog:c("editor.topbar.analog_sample"),date:$l(new Date(m.now),Kn.value)})),x=ke({index:-1,active:!1,moved:!1});let O=null,C=0,F=null,T=0;function V(G,ie){G.button!==0||G.target.closest(".x")||(G.pointerType!=="touch"&&G.preventDefault(),x.value={index:ie,active:!1,moved:!1},O={x:G.clientX,y:G.clientY},F=G.pointerId,clearTimeout(C),G.pointerType==="touch"&&(C=window.setTimeout(L,260)),document.addEventListener("pointermove",A),document.addEventListener("pointerup",z),document.addEventListener("pointercancel",z))}function L(){x.value.active=!0,document.addEventListener("touchmove",k,{passive:!1})}function k(G){x.value.active&&G.preventDefault()}function A(G){if(G.pointerId!==F||!O)return;if(!x.value.active){const se=Math.hypot(G.clientX-O.x,G.clientY-O.y);if(G.pointerType==="touch"){se>10&&(clearTimeout(C),O=null);return}if(se<6)return;L()}const ie=[...document.querySelectorAll(".items .item[data-index]")];let be=x.value.index;if(ie.forEach((se,ue)=>{const ye=se.getBoundingClientRect();uex.value.index&&G.clientY>ye.top+ye.height/2&&(be=Math.max(be,ue))}),be!==x.value.index&&m.layout){const se=[...n.value];se.splice(be,0,...se.splice(x.value.index,1)),m.layout.header={items:se};const ue=t.index===x.value.index;x.value.index=be,x.value.moved=!0,ue&&Jt(be)}}function z(G){G.pointerId===F&&(clearTimeout(C),document.removeEventListener("pointermove",A),document.removeEventListener("pointerup",z),document.removeEventListener("pointercancel",z),document.removeEventListener("touchmove",k),x.value.active&&(T=Date.now()+400,x.value.moved&&pt()),x.value={index:-1,active:!1,moved:!1},O=null,F=null)}function P(G){Date.now(){const be=Hs("i18n-t");return g(),_(B,null,[o("div",jy,[o("span",Hy,d(s.value?a(Pe)(p(s.value)||"F0150"):a(Pe)("F0150")),1),o("span",Vy,[o("b",null,d(s.value?s.value.type==="entity"?a(Bs)(s.value.entity):a(bs)(s.value):a(c)("editor.topbar.title")),1),o("small",{class:me({mono:s.value?.type==="entity"})},d(s.value?s.value.type==="entity"?s.value.entity:a(c)("editor.topbar.builtin"):a(c)("editor.topbar.items",{used:n.value.length},a(bn)())),3)]),o("button",{type:"button",class:"icon-btn","aria-label":a(c)("editor.common.close"),onClick:ie[0]||(ie[0]=(...se)=>a(Qe)&&a(Qe)(...se))},"✕",8,Wy)]),o("div",By,[o("div",Ky,[o("label",qy,d(a(c)("editor.topbar.name")),1),o("input",{id:"title",value:a(m).layout?.title,maxlength:"60",placeholder:a(c)("editor.topbar.name_placeholder"),onInput:ie[1]||(ie[1]=se=>v(se.target.value))},null,40,zy)]),o("div",Yy,[o("span",Gy,[Re(d(a(c)("editor.topbar.right"))+" ",1),o("span",Jy," · "+d(n.value.length)+" / "+d(a(bn)()),1)]),o("div",Xy,[(g(!0),_(B,null,he(n.value,(se,ue)=>(g(),_("div",{key:a(at)(se)+ue,class:me(["item",{selected:ue===e.index,"is-hidden":!a(hn)(se).shown,"is-overflow":l.value.has(ue),"just-added":b(se),"dragging-chip":x.value.active&&x.value.index===ue}]),role:"listitem",tabindex:"0","data-index":ue,"aria-label":a(c)("editor.topbar.item_label",{name:a(bs)(se),slot:ue+1}),onPointerdown:ye=>V(ye,ue),onClick:ye=>P(ue),onKeydown:ye=>ge(ye,ue)},[ie[9]||(ie[9]=o("span",{class:"grip","aria-hidden":"true"},"⋮⋮",-1)),o("span",{class:"av mdi",style:je(a(hn)(se).color?{color:a(hn)(se).color}:void 0)},d(p(se)?a(Pe)(p(se)):""),5),o("span",Qy,[o("b",null,d(a(bs)(se)),1),o("small",null,d(h(se,ue)),1)]),o("button",{type:"button",class:"x","aria-label":a(c)("editor.topbar.remove_named",{name:a(bs)(se)}),onClick:At(ye=>a(nr)(ue),["stop"])},"✕",8,e0)],42,Zy))),128)),o("button",{type:"button",class:"ghost-btn",id:"topbar-add",disabled:n.value.length>=a(bn)(),title:n.value.length>=a(bn)()?a(c)("editor.topbar.max",a(bn)()):a(c)("editor.topbar.add_title"),onClick:ie[2]||(ie[2]=(...se)=>a(er)&&a(er)(...se))},d(a(c)("editor.topbar.add_button")),9,t0)]),o("small",{id:"topbar-hint",class:me({warn:l.value.size>0&&u.value})},d(f.value),3)]),s.value?(g(),_(B,{key:0},[o("div",n0,[o("small",null,d(M.value),1),te(Mu,{items:[s.value],single:""},null,8,["items"])]),s.value.type==="entity"?(g(),_(B,{key:0},[o("div",s0,[o("span",i0,d(a(c)("editor.topbar.content.label")),1),te(wt,{choices:(a(m).inventory.header?.contents||[]).map(se=>[se.key,se.label]),value:s.value.content,onPick:ie[3]||(ie[3]=se=>y({content:se}))},null,8,["choices","value"]),o("small",null,d(a(c)("editor.topbar.content.hint")),1)]),te(Ru,{selected:s.value.icon||"auto",automatic:a(m).topbarPreviews[a(at)(s.value)]?.auto_icon||a(xn)(s.value.entity),"auto-label":a(c)("editor.topbar.auto_icon"),"allow-none":"",onPick:ie[4]||(ie[4]=se=>y({icon:se}))},null,8,["selected","automatic","auto-label"]),o("div",o0,[o("span",l0,d(a(c)("editor.topbar.show.label")),1),te(wt,{choices:(a(m).inventory.header?.shows||[]).map(se=>[se.key,se.label]),value:s.value.show,onPick:ie[5]||(ie[5]=se=>y({show:se}))},null,8,["choices","value"]),o("small",null,d(a(c)("editor.topbar.show.hint")),1)])],64)):s.value.type!=="date"?(g(),it(be,{key:1,keypath:a(is)?"editor.topbar.clock_24":"editor.topbar.clock_12",tag:"small",id:"topbar-clock",scope:"global"},{settings:ne(()=>[o("a",a0,d(a(c)("editor.topbar.clock_settings")),1)]),_:1},8,["keypath"])):(g(),_("small",r0,d(a(c)("editor.topbar.date_hint",{date:E.value.date})),1))],64)):H("",!0)]),s.value?(g(),_("div",c0,[o("button",{type:"button",class:"btn danger",onClick:ie[6]||(ie[6]=se=>a(nr)(e.index))},d(a(c)("editor.common.remove")),1),ie[10]||(ie[10]=o("span",{class:"spacer"},null,-1)),o("button",{type:"button",class:"btn quiet",disabled:e.index===0,onClick:ie[7]||(ie[7]=se=>a(mo)(e.index,e.index-1)&&a(Jt)(e.index-1))},d(a(c)("editor.topbar.up")),9,u0),o("button",{type:"button",class:"btn quiet",disabled:e.index>=n.value.length-1,onClick:ie[8]||(ie[8]=se=>a(mo)(e.index,e.index+1)&&a(Jt)(e.index+1))},d(a(c)("editor.topbar.down")),9,d0)])):H("",!0)],64)}}}),p0={class:"dr-head"},h0={class:"tx"},m0=["aria-label"],b0={class:"dr-body"},v0={class:"f"},g0={class:"f-label"},_0={class:"options"},y0=["disabled","onClick"],w0={class:"mdi"},k0={class:"tx"},$0={key:0,class:"f"},x0={class:"f-label"},S0={class:"options"},C0=["disabled","onClick"],T0={class:"mdi"},E0={class:"tx"},A0={class:"f"},P0={class:"f-label",for:"topbar-search"},O0=["placeholder","aria-label"],I0={class:"options"},L0=["disabled","onClick"],M0={class:"mdi"},R0={class:"tx"},N0={key:0,class:"hint"},F0={key:1,class:"hint"},D0={class:"dr-foot"},U0=Me({__name:"TopbarAdd",setup(e){const t=ke(""),n=$(()=>new Set(un().map(at))),s=$(()=>({clock:Vi(is.value,new Date(m.now)),analog:c("editor.topbar.analog_sample"),date:$l(new Date(m.now),Kn.value)})),i=$(()=>m.inventory.header?.suggestions?.[m.selected||""]||[]),l=$(()=>{const u=t.value.trim().toLocaleLowerCase();return m.inventory.entities.filter(f=>`${f.name} ${f.id} ${f.area||""} ${f.device||""}`.toLocaleLowerCase().includes(u))}),r=u=>({type:"entity",entity:u,content:"state",icon:"auto",show:"always"});return(u,f)=>(g(),_(B,null,[o("div",p0,[f[3]||(f[3]=o("span",{class:"av",style:{background:"var(--seg)",color:"var(--ink-2)","font-size":"18px"}},"+",-1)),o("span",h0,[o("b",null,d(a(c)("editor.topbar.add.title")),1),o("small",null,d(a(c)("editor.topbar.add.slots",{used:a(un)().length},a(bn)())),1)]),o("button",{type:"button",class:"icon-btn","aria-label":a(c)("editor.common.close"),onClick:f[0]||(f[0]=(...h)=>a(Qe)&&a(Qe)(...h))},"✕",8,m0)]),o("div",b0,[o("div",v0,[o("span",g0,d(a(c)("editor.topbar.add.builtin")),1),o("div",_0,[(g(!0),_(B,null,he(a(m).inventory.header?.builtin||[],h=>(g(),_("button",{key:h.type,type:"button",class:"option",disabled:n.value.has(a(at)({type:h.type})),onClick:p=>a(bo)({type:h.type})},[o("span",w0,d(a(Pe)(a(Ks)(a(bu)[h.type])?.cp||"F0150")),1),o("span",k0,[o("strong",null,d(h.label),1),o("small",null,d(n.value.has(a(at)({type:h.type}))?a(c)("editor.topbar.add.added"):s.value[h.type]),1)])],8,y0))),128))])]),i.value.length?(g(),_("div",$0,[o("span",x0,d(a(c)("editor.topbar.add.suggestions")),1),o("div",S0,[(g(!0),_(B,null,he(i.value,h=>(g(),_("button",{key:a(at)(h.item),type:"button",class:"option",disabled:n.value.has(a(at)(h.item)),onClick:p=>a(bo)(h.item)},[o("span",T0,d(a(Pe)(h.icon||a(xn)(h.item.entity))),1),o("span",E0,[o("strong",null,d(h.label),1),o("small",null,d(n.value.has(a(at)(h.item))?a(c)("editor.topbar.add.added"):[h.name,h.area].filter(Boolean).join(" · ")),1)])],8,C0))),128))])])):H("",!0),o("div",A0,[o("label",P0,d(a(c)("editor.topbar.add.entity")),1),Ae(o("input",{id:"topbar-search","onUpdate:modelValue":f[1]||(f[1]=h=>t.value=h),type:"search",placeholder:a(c)("editor.topbar.add.search"),"aria-label":a(c)("editor.topbar.add.search_label")},null,8,O0),[[Xe,t.value]]),o("div",I0,[(g(!0),_(B,null,he(l.value.slice(0,40),h=>(g(),_("button",{key:h.id,type:"button",class:"option",disabled:n.value.has(a(at)(r(h.id))),onClick:p=>a(bo)(r(h.id))},[o("span",M0,d(a(Pe)(a(xn)(h.id))),1),o("span",R0,[o("strong",null,d(h.name),1),o("small",null,d([h.area,h.id].filter(Boolean).join(" · ")),1)])],8,L0))),128)),l.value.length?l.value.length>40?(g(),_("p",F0,d(a(c)("editor.common.results",l.value.length)),1)):H("",!0):(g(),_("p",N0,d(a(c)("editor.topbar.add.none_found")),1))])])]),o("div",D0,[f[4]||(f[4]=o("span",{class:"spacer"},null,-1)),o("button",{type:"button",class:"btn quiet",onClick:f[2]||(f[2]=(...h)=>a(Qe)&&a(Qe)(...h))},d(a(c)("editor.common.cancel")),1)])],64))}}),j0={class:"dr-head"},H0={class:"tx"},V0=["aria-label"],W0={class:"dr-body",id:"inspector-section"},B0={id:"inspection-summary"},K0={key:0,class:"hint warn"},q0={key:1,class:"hint"},z0={id:"inspection"},Y0={class:"dr-foot"},G0=Me({__name:"InspectPanel",props:{entity:{}},setup(e){const t=e,n=ke(null),s=ke(c("editor.inspect.reading")),i=ke("");async function l(){if(m.selected){n.value=null,i.value="",s.value=c("editor.inspect.fetching");try{const u=await Rt(`screens/${encodeURIComponent(m.selected)}/inspect`),f=t.entity?u.tiles.filter(h=>h.entity===t.entity):u.tiles;n.value=f,s.value=JSON.stringify(t.entity?f[0]:u,null,2)}catch(u){i.value=u.message,s.value="",Ce(u.message)}}}const r=u=>{const f=m.layout?.tiles.find(h=>h.entity===u)?.options||{};return c("editor.inspect.options",{slider:c(f.inline==="slider"?"editor.inspect.yes":"editor.inspect.no"),display:mu(f.display||"standard"),size:rm(f.size),control:sm({entity:u,options:f},m.inventory),background:m.inventory.backgrounds?.[f.background||"auto"]?.label||c("editor.inspect.background_default")})};return Tn(l),St(()=>t.entity,l),(u,f)=>(g(),_(B,null,[o("div",j0,[f[1]||(f[1]=o("span",{class:"av",style:{background:"var(--seg)",color:"var(--ink-2)","font-size":"16px"}},"⌕",-1)),o("span",H0,[o("b",null,d(a(c)("editor.inspect.title")),1),o("small",{class:me({mono:e.entity})},d(e.entity||a(c)("editor.inspect.subtitle")),3)]),o("button",{type:"button",class:"icon-btn","aria-label":a(c)("editor.common.close"),onClick:f[0]||(f[0]=(...h)=>a(Qe)&&a(Qe)(...h))},"✕",8,V0)]),o("div",W0,[o("div",B0,[i.value?(g(),_("p",K0,d(i.value),1)):n.value?H("",!0):(g(),_("p",q0,d(a(c)("editor.inspect.fetching")),1)),(g(!0),_(B,null,he(n.value||[],(h,p)=>(g(),_("article",{key:p,class:"inspection-tile"},[o("strong",null,d(h.entity),1),o("span",null,d(a(c)("editor.inspect.status",{status:h.word||h.state})),1),o("small",null,d(r(h.entity)),1)]))),128))]),o("pre",z0,d(s.value),1)]),o("div",Y0,[o("button",{type:"button",class:"btn quiet",onClick:l},d(a(c)("editor.inspect.read_again")),1),f[2]||(f[2]=o("span",{class:"spacer"},null,-1))])],64))}}),J0=["aria-hidden"],X0=Me({__name:"Drawer",setup(e){const t=$(()=>!!(m.inspector&&(m.inspector.kind!=="tile"||ro.value)));return(n,s)=>(g(),_("aside",{class:me(["drawer",{open:t.value}]),id:"tile-sheet","aria-hidden":t.value?"false":"true",onClick:s[0]||(s[0]=At(()=>{},["stop"]))},[a(m).inspector?(g(),_(B,{key:0},[a(m).inspector.kind==="tile"&&a(ro)?(g(),it(Uy,{key:0,tile:a(ro)},null,8,["tile"])):a(m).inspector.kind==="bar"?(g(),it(f0,{key:1,index:a(m).inspector.index},null,8,["index"])):a(m).inspector.kind==="bar-add"?(g(),it(U0,{key:2})):a(m).inspector.kind==="inspect"?(g(),it(G0,{key:3,entity:a(m).inspector.entity},null,8,["entity"])):H("",!0)],64)):H("",!0)],10,J0))}}),Z0={class:"main-head"},Q0={class:"eyebrow",id:"screen-name"},e1=["title"],t1={class:"head-right"},n1={class:"seg",role:"tablist"},s1=["aria-pressed"],i1=["aria-pressed"],o1={key:1,id:"dirty",class:"chip dirty"},l1=["disabled"],a1={key:0,class:"spin small"},r1=["aria-label","aria-expanded"],c1={key:3,class:"menu",role:"menu"},u1=["disabled","title"],d1=["disabled","aria-expanded"],f1={key:0,class:"sub"},p1=["onClick"],h1=["disabled","title"],m1={class:"body",id:"body"},b1=Me({__name:"ScreenView",setup(e){const t=$(()=>_t.value),n=$(()=>t.value.online?`${t.value.delivery} · ${t.value.status}`:c("editor.screen_view.offline")),s=$(()=>Au(t.value)&&t.value.online&&t.value.update?.profile&&t.value.update?.host),i=$(()=>m.inventory.screens.filter(E=>E.id!==t.value.id&&E.layout?.tiles?.length)),l=ke(!1),r=ke(null);function u(){m.menuOpen=!1,l.value=!1}function f(){u(),m.overrideProfile=t.value.update?.profile||null,m.overrideFriendly=t.value.name,Ve("#override")}function h(){u(),m.selectedTile=null,m.inspector={kind:"inspect"}}function p(E){u(),!(m.dirty&&!confirm(c("editor.screen_view.confirm.copy")))&&Im(E)}function b(){u(),r.value?.click()}async function v(E){const x=E.target,O=x.files?.[0];x.value="",O&&(m.dirty&&!confirm(c("editor.screen_view.confirm.import"))||Mm(await O.text()))}function y(E){if(E.key==="Escape")if(m.menuOpen)u();else{if(m.palette)return;m.inspector&&!E.target?.closest?.(".picker")&&Qe()}else(E.metaKey||E.ctrlKey)&&E.key.toLowerCase()==="s"&&(E.preventDefault(),m.dirty&&Wo())}function M(E){m.menuOpen&&!E.target.closest(".head-right .menu, #more")&&u()}return Tn(()=>{document.addEventListener("keydown",y),document.addEventListener("click",M)}),os(()=>{document.removeEventListener("keydown",y),document.removeEventListener("click",M)}),(E,x)=>(g(),_(B,null,[o("header",Z0,[o("div",null,[o("span",Q0,d(t.value.name),1),o("h1",null,d(a(m).layout?.title||a(Fn)("editor.mockup.home")),1)]),o("span",{id:"delivery",class:me(["chip",{off:!t.value.online}]),title:n.value},[x[9]||(x[9]=o("span",{class:"dot"},null,-1)),Re(d(n.value),1)],10,e1),o("div",t1,[o("div",n1,[o("button",{type:"button",id:"tab-layout",role:"tab","aria-pressed":a(m).tab==="layout"?"true":"false",onClick:x[0]||(x[0]=O=>a(m).tab="layout")},d(a(c)("editor.screen_view.tabs.layout")),9,s1),o("button",{type:"button",id:"tab-settings",role:"tab","aria-pressed":a(m).tab==="settings"?"true":"false",onClick:x[1]||(x[1]=O=>{a(m).tab="settings",a(Qe)()})},d(a(c)("editor.screen_view.tabs.settings")),9,i1)]),a(m).dirty?(g(),_("span",o1,d(a(c)("editor.common.unsaved")),1)):(g(),_("span",{key:0,id:"dirty",class:me(["chip",{sent:a(m).saved}])},d(a(m).saved?a(c)("editor.screen_view.sent"):a(c)("editor.screen_view.all_saved")),3)),a(m).dirty?(g(),_("button",{key:2,id:"save",type:"button",class:"btn primary",disabled:a(m).busy,title:"⌘S",onClick:x[2]||(x[2]=O=>a(Wo)())},[a(m).busy?(g(),_("span",a1)):H("",!0),Re(d(a(m).busy?a(c)("editor.common.saving"):a(c)("editor.common.save_send")),1)],8,l1)):H("",!0),o("button",{id:"more",type:"button",class:"icon-btn","aria-label":a(c)("editor.screen_view.more"),"aria-haspopup":"menu","aria-expanded":a(m).menuOpen?"true":"false",onClick:x[3]||(x[3]=At(O=>{a(m).menuOpen=!a(m).menuOpen,l.value=!1},["stop"]))},"···",8,r1),a(m).menuOpen?(g(),_("div",c1,[o("button",{type:"button",role:"menuitem",id:"identify",disabled:!a(Wn)(t.value)||!t.value.online,title:a(Wn)(t.value)?"":a(c)("editor.screen_view.menu.identify_needs"),onClick:x[4]||(x[4]=O=>{u(),a(xu)(t.value)})},[Re(d(a(c)("editor.screen_view.menu.identify"))+" ",1),o("small",null,d(a(c)("editor.screen_view.menu.identify_hint")),1)],8,u1),o("button",{type:"button",role:"menuitem",id:"inspect",onClick:h},[Re(d(a(c)("editor.common.read_current_data"))+" ",1),o("small",null,d(a(c)("editor.screen_view.menu.inspect_hint")),1)]),x[12]||(x[12]=o("div",{class:"sep"},null,-1)),o("button",{type:"button",role:"menuitem",id:"copy-layout",disabled:!i.value.length,"aria-expanded":l.value?"true":"false",onClick:x[5]||(x[5]=At(O=>l.value=!l.value,["stop"]))},[Re(d(a(c)("editor.screen_view.menu.copy"))+" ",1),o("small",null,d(i.value.length?a(c)("editor.screen_view.menu.copy_screens",i.value.length):a(c)("editor.screen_view.menu.copy_none")),1)],8,d1),l.value?(g(),_("div",f1,[(g(!0),_(B,null,he(i.value,O=>(g(),_("button",{key:O.id,type:"button",role:"menuitem",onClick:C=>p(O.id)},[Re(d(O.name)+" ",1),o("small",null,d(a(c)("editor.screen_view.menu.copy_tiles",O.layout.tiles.length)),1)],8,p1))),128))])):H("",!0),o("button",{type:"button",role:"menuitem",id:"export-layout",onClick:x[6]||(x[6]=O=>{u(),a(Cu)()})},[Re(d(a(c)("editor.screen_view.menu.export"))+" ",1),x[10]||(x[10]=o("small",null,"JSON",-1))]),o("button",{type:"button",role:"menuitem",id:"import-layout",onClick:b},[Re(d(a(c)("editor.screen_view.menu.import"))+" ",1),x[11]||(x[11]=o("small",null,"JSON",-1))]),x[13]||(x[13]=o("div",{class:"sep"},null,-1)),o("button",{type:"button",role:"menuitem",id:"open-override",disabled:!t.value.update?.profile,title:t.value.update?.profile?"":a(c)("editor.screen_view.menu.override_none"),onClick:f},[Re(d(a(c)("editor.screen_view.menu.override"))+" ",1),o("small",null,d(a(c)("editor.screen_view.menu.override_hint")),1)],8,h1),o("button",{type:"button",role:"menuitem",onClick:x[7]||(x[7]=O=>{u(),a(Ve)("#firmware")})},d(a(c)("editor.nav.firmware")),1),s.value?(g(),_("button",{key:1,type:"button",role:"menuitem",onClick:x[8]||(x[8]=O=>{u(),a(Ko)(t.value)})},[Re(d(a(c)("editor.screen_view.menu.update"))+" ",1),o("small",null,d(t.value.update?.target),1)])):H("",!0)])):H("",!0),o("input",{ref_key:"fileInput",ref:r,type:"file",accept:"application/json,.json",hidden:"",onChange:v},null,544)])]),o("div",m1,[a(m).tab==="layout"?(g(),it(Gg,{key:0})):(g(),it(f_,{key:1})),te(X0)])],64))}}),v1={key:0,id:"choose",class:"empty"},g1={key:1,id:"empty",class:"empty"},_1=Me({__name:"EmptyState",setup(e){return(t,n)=>a(m).inventory.screens.length?(g(),_("section",v1,[n[1]||(n[1]=o("span",{class:"empty-icon"},"▦",-1)),o("h2",null,d(a(c)("editor.empty.choose.title")),1),o("p",null,d(a(c)("editor.empty.choose.text")),1)])):(g(),_("section",g1,[n[2]||(n[2]=o("span",{class:"empty-icon"},"▦",-1)),o("h2",null,d(a(c)("editor.empty.start.title")),1),o("p",null,d(a(c)("editor.empty.start.text")),1),o("button",{id:"start",type:"button",class:"btn primary",onClick:n[0]||(n[0]=s=>a(Ve)("#new-screen"))},d(a(c)("editor.empty.start.button")),1)]))}}),y1={class:"panel",id:"settings-view"},w1={class:"panel-head"},k1={class:"tx"},$1={class:"eyebrow"},x1={id:"settings-title"},S1={class:"card-grid"},C1={class:"card"},T1={class:"tools"},E1={class:"tx"},A1={class:"tx"},P1={key:0,class:"card updates",id:"updates"},O1={id:"updates-hint"},I1=["aria-valuenow"],L1={class:"progress-text"},M1={key:0,class:"log-lines"},R1={key:2,class:"whatsnew"},N1={class:"check"},F1=["checked"],D1={key:1,class:"card",id:"language"},U1={class:"field"},j1={class:"f-label",for:"screen-language"},H1=["value","disabled"],V1={value:"auto"},W1=["value"],B1={key:0,id:"language-ha-missing"},K1={class:"field"},q1={class:"f-label",for:"time-format"},z1=["value","disabled"],Y1={value:"auto"},G1={value:"24"},J1={value:"12"},X1={class:"field"},Z1={class:"f-label",for:"number-format"},Q1=["value","disabled"],e2={value:"auto"},t2=["value"],n2={key:0,class:"actions",id:"language-profile"},s2=["disabled"],i2={class:"card"},o2={class:"tools"},l2={class:"tx"},a2={class:"card",id:"claude"},r2={class:"actions"},c2=["disabled"],u2={id:"claude-path"},d2={class:"actions"},f2={class:"btn quiet",id:"claude-download",href:"api/claude-skill.zip",download:"esp-screens.zip"},p2="https://github.com/MaxGramser/homeassistant_espscreen/blob/main/docs/TRANSLATING.md",h2=Me({__name:"AppSettingsView",setup(e){const t=$(()=>m.inventory.updates),n=$(()=>m.inventory.screens.filter(k=>k.update?.available).length),s=$(()=>t.value?t.value.busy?c("editor.settings.updates.busy",{version:t.value.target}):m.inventory.screens.length?n.value?c("editor.settings.updates.available",{version:t.value.target},n.value):c("editor.settings.updates.current",{version:t.value.target}):c("editor.settings.updates.no_screens",{version:t.value.target}):""),i=$(()=>m.inventory.screens.find(k=>k.update?.state==="running"||m.updating.includes(k.id))),l=$(()=>i.value?Gn(i.value):null),r=$(()=>(m.firmwareJob?.logs||[]).slice(-12).join(` +`)),u=$(()=>{const k=m.inventory.changelog,A=t.value?.target;return!Array.isArray(k)||!A?[]:k.filter(z=>z.firmware===A).flatMap(z=>z.lines).slice(0,10)}),f=$(()=>m.inventory.claude_skill),h=ke(!1);async function p(){h.value=!0;try{await Bm()}finally{h.value=!1}}const b=["point","comma","space"],v=$(()=>m.inventory.language),y=$(()=>{const k=v.value,A=k?.ha?nu(k.ha,k.languages.map(z=>z.code)):void 0;return k?.languages.find(z=>z.code===A)?.name}),M=$(()=>v.value?.languages.find(k=>k.code===v.value.effective&&!k.checked)),E=k=>c(k==="12"?"editor.settings.language.clock_12":"editor.settings.language.clock_24"),x=k=>ou("1234.5",k),O=Zh(),C=$(()=>{const k=v.value;return k?{...O.clock&&O.clock!==(k.clock_effective||"24")?{clock:O.clock}:{},...O.numbers&&O.numbers!==(k.numbers_effective||"point")?{numbers:O.numbers}:{}}:{}}),F=$(()=>[C.value.clock&&E(C.value.clock),C.value.numbers&&x(Fo[C.value.numbers])].filter(Boolean).join(" · ")),T=ke(!1);async function V(k,A){const z=A.target;T.value=!0;const P=await lr({[k]:z.value});T.value=!1,P||(z.value=String(v.value?.[k]??"auto"))}async function L(){T.value=!0,await lr(C.value),T.value=!1}return(k,A)=>{const z=Hs("i18n-t");return g(),_("div",y1,[o("div",w1,[o("div",k1,[o("span",$1,d(a(c)("editor.nav.settings")),1),o("h1",x1,d(a(c)("editor.settings.title")),1)]),o("button",{type:"button",class:"btn quiet",id:"close-settings",onClick:A[0]||(A[0]=P=>a(Ve)(""))},d(a(c)("editor.settings.back")),1)]),o("div",S1,[o("section",C1,[o("h2",null,d(a(c)("editor.settings.screens.title")),1),o("p",null,d(a(c)("editor.settings.screens.text")),1),o("div",T1,[o("button",{type:"button",class:"tool",onClick:A[1]||(A[1]=P=>a(Ve)("#new-screen"))},[A[9]||(A[9]=o("span",{class:"tool-icon"},"+",-1)),o("span",E1,[o("b",null,d(a(c)("editor.nav.new_screen")),1),o("small",null,d(a(c)("editor.nav.new_screen_detail")),1)])]),o("button",{type:"button",class:"tool",onClick:A[2]||(A[2]=P=>a(Ve)("#firmware"))},[A[10]||(A[10]=o("span",{class:"tool-icon"},"⇪",-1)),o("span",A1,[o("b",null,d(a(c)("editor.nav.firmware")),1),o("small",null,d(a(c)("editor.settings.screens.firmware_detail")),1)])])])]),t.value?(g(),_("section",P1,[o("h2",null,d(a(c)("editor.settings.updates.title")),1),o("p",O1,d(s.value),1),i.value&&l.value?(g(),_(B,{key:0},[o("div",{class:"progress",role:"progressbar","aria-valuenow":l.value.percent,"aria-valuemin":"0","aria-valuemax":"100"},[o("i",{style:je({width:l.value.percent+"%"})},null,4)],8,I1),o("div",L1,[o("span",null,d(i.value.name)+" · "+d(l.value.percent)+" %",1),o("span",null,d(l.value.text),1)]),r.value?(g(),_("pre",M1,d(r.value),1)):H("",!0)],64)):H("",!0),t.value.pending&&!t.value.busy&&t.value.pending>=2?(g(),_("button",{key:1,id:"update-all",type:"button",class:"btn primary",onClick:A[3]||(A[3]=(...P)=>a(ir)&&a(ir)(...P))},d(a(c)("editor.settings.updates.all",t.value.pending)),1)):H("",!0),u.value.length&&!a(Bo)()?(g(),_("details",R1,[o("summary",null,d(a(c)("editor.settings.updates.whats_new",{version:t.value.target})),1),o("ul",null,[(g(!0),_(B,null,he(u.value,P=>(g(),_("li",{key:P},d(P),1))),128))])])):H("",!0),o("label",N1,[o("input",{type:"checkbox",id:"auto-update",checked:!!t.value.auto,onChange:A[4]||(A[4]=P=>a(Wm)(P.target.checked))},null,40,F1),o("span",null,[Re(d(a(c)("editor.settings.updates.auto_label")),1),o("small",null,d(a(c)("editor.settings.updates.auto_hint")),1)])])])):H("",!0),v.value?(g(),_("section",D1,[o("h2",null,d(a(c)("editor.settings.language.title")),1),o("div",U1,[o("label",j1,d(a(c)("editor.settings.language.screen_language")),1),o("select",{id:"screen-language",value:v.value.setting,disabled:T.value,onChange:A[5]||(A[5]=P=>V("setting",P))},[o("option",V1,d(y.value?a(c)("editor.settings.language.auto",{name:y.value}):a(c)("editor.settings.language.auto_plain")),1),(g(!0),_(B,null,he(v.value.languages,P=>(g(),_("option",{key:P.code,value:P.code},d(P.checked?P.name:a(c)("editor.settings.language.unchecked",{name:P.name})),9,W1))),128))],40,H1),v.value.setting==="auto"&&!y.value?(g(),_("small",B1,d(a(c)("editor.settings.language.ha_missing")),1)):H("",!0),M.value?(g(),it(z,{key:1,keypath:"editor.settings.language.help",tag:"small",id:"language-help",scope:"global"},{name:ne(()=>[Re(d(M.value.name),1)]),guide:ne(()=>[o("a",{href:p2,target:"_blank",rel:"noopener"},d(a(c)("editor.settings.language.guide")),1)]),_:1})):H("",!0),o("small",null,d(a(c)("editor.settings.language.update_hint")),1)]),o("div",K1,[o("label",q1,d(a(c)("editor.settings.language.time")),1),o("select",{id:"time-format",value:v.value.clock||"auto",disabled:T.value,onChange:A[6]||(A[6]=P=>V("clock",P))},[o("option",Y1,d(a(c)("editor.settings.language.time_auto",{clock:E(v.value.clock_effective)})),1),o("option",G1,d(E("24")),1),o("option",J1,d(E("12")),1)],40,z1)]),o("div",X1,[o("label",Z1,d(a(c)("editor.settings.language.numbers")),1),o("select",{id:"number-format",value:v.value.numbers||"auto",disabled:T.value,onChange:A[7]||(A[7]=P=>V("numbers",P))},[o("option",e2,d(a(c)("editor.settings.language.numbers_auto",{example:x(a(Pu))})),1),(g(),_(B,null,he(b,P=>o("option",{key:P,value:P},d(x(a(Fo)[P])),9,t2)),64))],40,Q1)]),F.value?(g(),_("div",n2,[o("small",null,d(a(c)("editor.settings.language.profile",{formats:F.value})),1),o("button",{type:"button",class:"btn quiet mini",disabled:T.value,onClick:L},d(a(c)("editor.settings.language.use_profile")),9,s2)])):H("",!0),o("small",null,d(a(c)("editor.settings.language.editor_hint")),1)])):H("",!0),o("section",i2,[o("h2",null,d(a(c)("editor.nav.alerts")),1),o("p",null,d(a(c)("editor.settings.alerts.text")),1),o("div",o2,[o("button",{type:"button",class:"tool",onClick:A[8]||(A[8]=P=>a(Ve)("#alerts"))},[A[11]||(A[11]=o("span",{class:"tool-icon"},"!",-1)),o("span",l2,[o("b",null,d(a(c)("editor.nav.alerts")),1),o("small",null,d(a(c)("editor.settings.alerts.detail")),1)])])])]),o("section",a2,[A[12]||(A[12]=o("h2",null,"Claude",-1)),o("p",null,d(a(c)("editor.settings.claude.text")),1),o("div",r2,[o("button",{type:"button",id:"claude-install",class:me(["btn",f.value?.installed&&f.value.current?"quiet":"primary"]),disabled:!f.value||h.value,onClick:p},d(!f.value||!f.value.installed?a(c)("editor.settings.claude.install"):f.value.current?a(c)("editor.settings.claude.install_again"):a(c)("editor.settings.claude.update")),11,c2),o("span",{id:"claude-status",class:me(["chip",f.value&&f.value.installed?f.value.current?"good":"update":""]),role:"status"},d(f.value?f.value.installed?f.value.current?a(c)("editor.settings.claude.installed_chip"):a(c)("editor.settings.claude.newer"):a(c)("editor.settings.claude.not_installed"):a(c)("editor.common.loading")),3)]),te(z,{keypath:"editor.settings.claude.writes",tag:"small",scope:"global"},{path:ne(()=>[o("code",u2,d(f.value?.path||"/homeassistant/.claude/skills/esp-screens"),1)]),_:1}),o("div",d2,[o("a",f2,d(a(c)("editor.settings.claude.download")),1),o("small",null,d(a(c)("editor.settings.claude.upload")),1)])])])])}}}),m2={class:"panel",id:"installer"},b2={class:"panel-head"},v2={class:"tx"},g2={class:"eyebrow"},_2={id:"install-title"},y2={key:0},w2=["aria-label"],k2={class:"boards"},$2={class:"board"},x2={class:"board"},S2={class:"field"},C2={class:"f-label",for:"friendly_name"},T2=["placeholder"],E2={class:"node-line"},A2={id:"node-preview"},P2={key:0,class:"field",id:"node-label"},O2={class:"f-label",for:"node-name"},I2={key:1,id:"wifi-fields",class:"wifi"},L2={class:"hint",id:"wifi-status"},M2={key:0,class:"field",id:"wifi-ssid-label"},R2={class:"f-label",for:"wifi_ssid"},N2={key:1,class:"field",id:"wifi-password-label"},F2={class:"f-label",for:"wifi_password"},D2={class:"field"},U2={class:"f-label",for:"install-target"},j2={key:0,value:"usb"},H2=["value"],V2={value:"download"},W2={value:""},B2={id:"target-hint"},K2={key:2,class:"hint",id:"install-note"},q2={class:"actions"},z2=["disabled"],Y2={id:"install-status",class:"status-line error",role:"status"},G2={key:1,id:"install-progress",class:"card"},J2={class:"progress-head"},X2={key:0,class:"spin",id:"progress-spin"},Z2={id:"progress-title"},Q2={id:"progress-detail"},ew={key:0,id:"install-download",class:"card",style:{background:"var(--surface-2)"}},tw=["href","download"],nw={class:"steps",id:"download-steps"},sw={key:1,id:"install-result",class:"field"},iw={class:"key-box"},ow={class:"steps",id:"install-steps"},lw=["open"],aw={id:"install-log",class:"log"},rw={class:"actions"},cw="https://web.esphome.io/?dashboard_install",uw=Me({__name:"InstallerView",setup(e){const t=Bn({board:"cyd",friendly_name:"",name:"",wifi_ssid:"",wifi_password:"",target:""}),n=Bn({view:"setup",file:null,friendly:"",board:"cyd",target:"",apiKey:null,nodeEdited:!1,jobState:null,picked:!1,action:null}),s=ke(!1),i=ke(null),l=ke(null),r=ke([]),u=ke(""),f=ke(""),h=ke(!1),p=ke(!1),b=ke(null);let v=0;function y(X){return X.toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^[^a-z]+/,"").slice(0,30).replace(/-+$/,"")||"screen"}function M(X){const K=X.replace(/^\/dev\/serial\/by-id\/usb-/,"").replace(/-if\d+(-port\d+)?$/,"").replace(/_/g," ");return`USB · ${K===X?X.replace(/^\/dev\//,""):K}`}St(()=>t.friendly_name,()=>{n.nodeEdited||(t.name=y(t.friendly_name))});const E=$(()=>t.name||"…"),x=$(()=>i.value?.ports||[]),O=$(()=>i.value?.wifi),C=$(()=>O.value?.state==="new"||O.value?.state==="missing"),F=$(()=>O.value?.missing||[]),T=$(()=>c(O.value?.state==="new"?"editor.installer.wifi.new":"editor.installer.wifi.missing")),V=$(()=>O.value?.state==="ready"?c("editor.installer.wifi.ready"):O.value?.state==="invalid"?c("editor.installer.wifi.invalid"):""),L=$(()=>c(t.target==="usb"?"editor.installer.target.usb":t.target==="download"?"editor.installer.target.download":t.target?x.value.length>1?"editor.installer.target.several":"editor.installer.target.once":"editor.installer.target.later")),k=$(()=>t.target==="download"?c("editor.firmware.build_download"):t.target?c("editor.installer.install"):c("editor.installer.save_profile")),A=$(()=>i.value?.job?.state==="running"&&!(n.file&&i.value.job.file===n.file)),z=$(()=>h.value||O.value?.state==="invalid"||t.target==="usb"||!!t.target&&(A.value||!i.value?.available));function P(){const X=t.target;(X==="download"||X===""?n.picked:x.value.includes(X))||(t.target=x.value[0]||"usb")}async function ge(){let X;try{X=await Rt("firmware")}catch(we){u.value=we.message;return}i.value=X;const K=X.job,Te=K&&n.file&&K.file===n.file;if(Te&&(n.jobState=K.state),n.view==="setup"){if(Te&&K.state==="running"){G(K,X.logs||[]);return}P(),u.value=A.value?c("editor.installer.busy",{file:K.file}):!X.available&&t.target?c("editor.installer.no_cli"):V.value}else n.view==="progress"&&Te&&(l.value=K,r.value=X.logs||[],K.state!=="running"&&K.state!=="success"&&(p.value=!0))}function G(X,K){n.view="progress",n.jobState=X.state,n.action=X.action,l.value=X,r.value=K}const ie=$(()=>l.value?.state==="running"),be=$(()=>n.view==="done"||l.value?.state==="success"),se=$(()=>n.action==="download"),ue=$(()=>c(n.view==="done"?"editor.installer.title.saved":ie.value?"editor.installer.title.running":be.value?se.value?"editor.installer.title.ready":"editor.installer.title.done":"editor.installer.title.failed")),ye=$(()=>n.view==="done"?c("editor.installer.progress.saved",{file:n.file}):ie.value?l.value?.stage==="upload"?c("editor.installer.progress.writing",{name:n.friendly}):c("editor.installer.progress.building"):be.value?se.value?c("editor.installer.progress.ready",{name:n.friendly}):c("editor.installer.progress.installed",{name:n.friendly}):c(se.value?"editor.installer.progress.build_failed":"editor.installer.progress.install_failed")),$e=$(()=>n.view==="done"?c("editor.installer.detail.saved"):ie.value?l.value?.stage==="upload"?c("editor.installer.detail.uploading"):c(se.value?"editor.installer.detail.building_download":"editor.installer.detail.building"):be.value?se.value?c("editor.installer.detail.downloaded"):c(n.board==="cyd"?"editor.installer.detail.booted_cyd":"editor.installer.detail.booted"):r.value.filter(X=>/error/i.test(X)).pop()||r.value.filter(X=>/failed/i.test(X)).pop()||c("editor.installer.detail.see_log")),Ye=$(()=>({href:`api/firmware/profiles/${encodeURIComponent(n.file||"")}/download`,name:(n.file||"").replace(/\.yaml$/,"")+".factory.bin"}));async function le(X){const K=X.target;if(n.nodeEdited||(t.name=y(t.friendly_name)),!!K.reportValidity()){h.value=!0,f.value="";try{const Te={board:t.board,friendly_name:t.friendly_name,name:t.name,target:t.target};C.value&&(F.value.includes("wifi_ssid")&&(Te.wifi_ssid=t.wifi_ssid),F.value.includes("wifi_password")&&(Te.wifi_password=t.wifi_password));const we=await ft("firmware/profiles","POST",Te);Object.assign(n,{file:we.file,apiKey:we.api_key,friendly:t.friendly_name.trim(),board:t.board,target:t.target}),t.wifi_password="",we.job?G(we.job,[]):n.view="done"}catch(Te){f.value=Te.message}finally{h.value=!1}}}async function ee(){try{if(!se.value){const{ports:K}=await Rt("firmware");!K.includes(n.target)&&K.length===1&&(n.target=K[0])}const X=await ft("firmware/jobs","POST",se.value?{file:n.file,action:"download"}:{file:n.file,action:"install",target:n.target});G(X,[])}catch(X){Ce(X.message)}}function ae(){Object.assign(n,{view:"setup",file:null,apiKey:null,nodeEdited:!1,jobState:null,target:"",picked:!1,action:null}),Object.assign(t,{board:"cyd",friendly_name:"",name:"",wifi_ssid:"",wifi_password:"",target:""}),s.value=!1,l.value=null,r.value=[],f.value="",u.value="",p.value=!1,ge()}function de(){n.view==="progress"&&n.jobState!=="running"&&(n.view="done"),Ve("")}return Tn(()=>{ge(),v=window.setInterval(ge,3e3)}),os(()=>clearInterval(v)),(X,K)=>{const Te=Hs("i18n-t");return g(),_("div",m2,[o("div",b2,[o("div",v2,[o("span",g2,d(a(c)("editor.nav.new_screen")),1),o("h1",_2,d(n.view==="setup"?a(c)("editor.installer.title.setup"):ue.value),1),n.view==="setup"?(g(),_("p",y2,d(a(c)("editor.installer.intro")),1)):H("",!0)]),o("button",{type:"button",class:"btn quiet",id:"close-install","aria-label":a(c)("editor.common.close"),onClick:de},d(a(c)("editor.common.back")),9,w2)]),n.view==="setup"?(g(),_("form",{key:0,id:"install-form",class:"card",onSubmit:At(le,["prevent"])},[o("fieldset",null,[o("legend",null,d(a(c)("editor.installer.board")),1),o("div",k2,[o("label",$2,[Ae(o("input",{type:"radio",name:"board",value:"cyd","onUpdate:modelValue":K[0]||(K[0]=we=>t.board=we)},null,512),[[ca,t.board]]),o("span",null,[o("b",null,d(a(c)("editor.installer.board_cyd")),1),K[13]||(K[13]=o("small",null,"ESP32-2432S028 · 320 × 240",-1))])]),o("label",x2,[Ae(o("input",{type:"radio",name:"board",value:"guition","onUpdate:modelValue":K[1]||(K[1]=we=>t.board=we)},null,512),[[ca,t.board]]),o("span",null,[o("b",null,d(a(c)("editor.installer.board_guition")),1),K[14]||(K[14]=o("small",null,"ESP32-S3-4848S040 · 480 × 480 · GT911",-1))])])])]),o("div",S2,[o("label",C2,d(a(c)("editor.installer.name")),1),Ae(o("input",{id:"friendly_name",name:"friendly_name","onUpdate:modelValue":K[2]||(K[2]=we=>t.friendly_name=we),required:"",maxlength:"60",placeholder:a(c)("editor.installer.name_placeholder"),autocomplete:"off"},null,8,T2),[[Xe,t.friendly_name]]),o("small",E2,[Re(d(a(c)("editor.installer.device_name"))+" ",1),o("code",A2,d(E.value),1),o("button",{type:"button",class:"btn link mini",id:"edit-node",onClick:K[3]||(K[3]=we=>{n.nodeEdited=!0,s.value=!0})},d(a(c)("editor.installer.customize")),1)]),o("small",null,d(a(c)("editor.installer.name_hint")),1)]),s.value?(g(),_("div",P2,[o("label",O2,d(a(c)("editor.installer.device_name")),1),Ae(o("input",{id:"node-name",name:"name","onUpdate:modelValue":K[4]||(K[4]=we=>t.name=we),pattern:"[a-z][a-z0-9\\-]{0,29}",maxlength:"30",autocomplete:"off",onInput:K[5]||(K[5]=we=>n.nodeEdited=!0)},null,544),[[Xe,t.name]]),o("small",null,d(a(c)("editor.installer.device_name_hint")),1)])):H("",!0),C.value?(g(),_("fieldset",I2,[o("legend",null,d(a(c)("editor.installer.wifi.title")),1),o("p",L2,d(T.value),1),F.value.includes("wifi_ssid")?(g(),_("div",M2,[o("label",R2,d(a(c)("editor.installer.wifi.ssid")),1),Ae(o("input",{id:"wifi_ssid",name:"wifi_ssid","onUpdate:modelValue":K[6]||(K[6]=we=>t.wifi_ssid=we),autocomplete:"off"},null,512),[[Xe,t.wifi_ssid]])])):H("",!0),F.value.includes("wifi_password")?(g(),_("div",N2,[o("label",F2,d(a(c)("editor.installer.wifi.password")),1),Ae(o("input",{id:"wifi_password",name:"wifi_password",type:"password","onUpdate:modelValue":K[7]||(K[7]=we=>t.wifi_password=we),autocomplete:"new-password"},null,512),[[Xe,t.wifi_password]])])):H("",!0)])):H("",!0),o("div",D2,[o("label",U2,d(a(c)("editor.installer.install_via")),1),Ae(o("select",{id:"install-target",name:"target","onUpdate:modelValue":K[8]||(K[8]=we=>t.target=we),onChange:K[9]||(K[9]=we=>{n.picked=!0,ge()})},[x.value.length?H("",!0):(g(),_("option",j2,d(a(c)("editor.firmware.no_board")),1)),(g(!0),_(B,null,he(x.value,we=>(g(),_("option",{key:we,value:we},d(M(we)),9,H2))),128)),o("option",V2,d(a(c)("editor.firmware.download_target")),1),o("option",W2,d(a(c)("editor.installer.later")),1)],544),[[jn,t.target]]),o("small",B2,d(L.value),1)]),u.value?(g(),_("p",K2,d(u.value),1)):H("",!0),o("div",q2,[o("button",{type:"submit",class:"btn primary",id:"install-go",disabled:z.value},d(k.value),9,z2),o("span",Y2,d(f.value),1)])],32)):(g(),_("div",G2,[o("div",J2,[ie.value?(g(),_("span",X2)):(g(),_("span",{key:1,class:me(["outcome",be.value?"ok":"bad"]),id:"progress-mark"},d(be.value?"✓":"✕"),3)),o("strong",Z2,d(ye.value),1)]),o("p",Q2,d($e.value),1),be.value&&se.value&&n.view!=="done"?(g(),_("div",ew,[o("a",{class:"btn primary",id:"download-firmware",href:Ye.value.href,download:Ye.value.name},d(a(c)("editor.firmware.download_file",{name:Ye.value.name})),9,tw),o("ol",nw,[o("li",null,[te(Te,{keypath:"editor.installer.download_steps.plug",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.download_steps.plug_bold")),1)]),_:1})]),o("li",null,[te(Te,{keypath:"editor.installer.download_steps.open",scope:"global"},{bold:ne(()=>[o("b",null,[te(Te,{keypath:"editor.installer.download_steps.open_bold",scope:"global"},{esphome_web:ne(()=>[o("a",{href:cw,target:"_blank",rel:"noopener"},"ESPHome Web")]),_:1})])]),_:1})]),o("li",null,[te(Te,{keypath:n.board==="cyd"?"editor.installer.download_steps.install_cyd":"editor.installer.download_steps.install",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.download_steps.install_bold")),1)]),file:ne(()=>[Re(d(Ye.value.name),1)]),_:1},8,["keypath"])])]),o("small",null,d(a(c)("editor.installer.download_keep")),1)])):H("",!0),be.value?(g(),_("div",sw,[o("div",iw,[o("span",null,d(a(c)("editor.installer.api_key")),1),o("code",{id:"api-key",ref_key:"keyBox",ref:b},d(n.apiKey||""),513),o("button",{type:"button",class:"btn quiet mini",id:"copy-key",onClick:K[10]||(K[10]=we=>a(Ot)(n.apiKey||"",b.value))},d(a(c)("editor.common.copy")),1)]),o("ol",ow,[o("li",null,[te(Te,{keypath:"editor.installer.pairing.ha",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.pairing.ha_bold")),1)]),name:ne(()=>[Re(d(n.friendly),1)]),_:1}),K[15]||(K[15]=Re()),o("button",{type:"button",class:"btn quiet mini",onClick:K[11]||(K[11]=(...we)=>a(wi)&&a(wi)(...we))},d(a(c)("editor.common.open_integrations")),1)]),o("li",null,[te(Te,{keypath:"editor.installer.pairing.key",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.pairing.key_bold")),1)]),_:1})]),o("li",null,[te(Te,{keypath:"editor.installer.pairing.actions",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.pairing.actions_bold")),1)]),_:1})]),o("li",null,[te(Te,{keypath:"editor.installer.pairing.tiles",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.installer.pairing.tiles_bold")),1)]),_:1})])])])):H("",!0),n.view!=="done"?(g(),_("details",{key:2,id:"install-log-wrap",class:"log-wrap",open:p.value,onToggle:K[12]||(K[12]=we=>p.value=we.target.open)},[o("summary",null,d(a(c)("editor.installer.log")),1),o("pre",aw,d(r.value.join(` +`)),1)],40,lw)):H("",!0),o("div",rw,[!ie.value&&!be.value?(g(),_("button",{key:0,type:"button",class:"btn primary",id:"install-retry",onClick:ee},d(a(c)("editor.installer.retry")),1)):H("",!0),o("button",{type:"button",class:"btn quiet",id:"install-close",onClick:ae},d(be.value?a(c)("editor.installer.another"):a(c)("editor.installer.start_over")),1),o("button",{type:"button",class:me(["btn",be.value?"primary":"quiet"]),onClick:de},d(be.value?a(c)("editor.installer.done"):a(c)("editor.common.close")),3)])]))])}}}),dw={class:"panel",id:"firmware-dialog"},fw={class:"panel-head"},pw={class:"tx"},hw={class:"eyebrow"},mw={class:"card"},bw={class:"card-grid"},vw={class:"field"},gw={class:"f-label",for:"firmware-file"},_w=["value"],yw={class:"field"},ww={class:"f-label",for:"firmware-port"},kw={value:"ota"},$w={key:0,value:"usb"},xw=["value"],Sw={value:"download"},Cw={key:0,class:"field",id:"firmware-host-label"},Tw={class:"f-label",for:"firmware-host"},Ew=["placeholder"],Aw={class:"actions"},Pw=["disabled"],Ow=["disabled"],Iw=["disabled"],Lw={key:0,class:"spin"},Mw={id:"firmware-status",class:"status-line",role:"status"},Rw={key:0,id:"firmware-download",class:"card",style:{background:"var(--surface-2)"}},Nw=["href","download"],Fw={id:"firmware-log",class:"log"},Dw="https://web.esphome.io/?dashboard_install",Uw=Me({__name:"FirmwareView",setup(e){const t=ke(null),n=ke(""),s=ke("ota"),i=ke("");let l=0;async function r(E=!1){try{const x=await Rt("firmware");t.value=x,(E||!n.value)&&(n.value=x.profiles[0]?.file||"");const O=x.ports||[];s.value.startsWith("/")&&!O.includes(s.value)&&(s.value=O[0]||"usb"),s.value==="usb"&&O.length&&(s.value=O[0])}catch(x){Ce(x.message)}}const u=$(()=>t.value?.job?.state==="running"),f=$(()=>!t.value||u.value||!t.value.available||!t.value.profiles?.length),h=$(()=>f.value||s.value==="usb"),p=$(()=>t.value?.ports||[]),b=$(()=>t.value?t.value.available?t.value.job?`${t.value.job.file} · ${t.value.job.action} · ${t.value.job.state}`:c("editor.firmware.choose"):c("editor.firmware.no_cli"):c("editor.common.loading")),v=$(()=>s.value==="download"&&!!n.value&&!!t.value?.downloads?.includes(n.value)),y=$(()=>({href:`api/firmware/profiles/${encodeURIComponent(n.value)}/download`,name:n.value.replace(/\.yaml$/,"")+".factory.bin"}));async function M(E){try{await ft("firmware/jobs","POST",{file:n.value,action:E==="validate"?"validate":E==="build"?"build":s.value==="download"?"download":"install",target:s.value==="ota"?i.value.trim():s.value==="download"?"":s.value}),await r()}catch(x){Ce(x.message)}}return Tn(()=>{r(!0),l=window.setInterval(()=>r(),3e3)}),os(()=>clearInterval(l)),(E,x)=>{const O=Hs("i18n-t");return g(),_("div",dw,[o("div",fw,[o("div",pw,[o("span",hw,d(a(c)("editor.nav.firmware")),1),o("h1",null,d(a(c)("editor.firmware.title")),1),te(O,{keypath:"editor.firmware.intro",tag:"p",scope:"global"},{ota:ne(()=>[o("b",null,d(a(c)("editor.firmware.ota")),1)]),download:ne(()=>[o("b",null,d(a(c)("editor.firmware.download")),1)]),check:ne(()=>[o("b",null,d(a(c)("editor.firmware.check")),1)]),build:ne(()=>[o("b",null,d(a(c)("editor.firmware.build")),1)]),install:ne(()=>[o("b",null,d(a(c)("editor.firmware.install")),1)]),_:1})]),o("button",{type:"button",class:"btn quiet",id:"close-firmware",onClick:x[0]||(x[0]=C=>a(Ve)(""))},d(a(c)("editor.common.back")),1)]),o("div",mw,[o("div",bw,[o("div",vw,[o("label",gw,d(a(c)("editor.firmware.profile")),1),Ae(o("select",{id:"firmware-file","onUpdate:modelValue":x[1]||(x[1]=C=>n.value=C)},[(g(!0),_(B,null,he(t.value?.profiles||[],C=>(g(),_("option",{key:C.file,value:C.file},d(C.file),9,_w))),128))],512),[[jn,n.value]])]),o("div",yw,[o("label",ww,d(a(c)("editor.firmware.install_to")),1),Ae(o("select",{id:"firmware-port","onUpdate:modelValue":x[2]||(x[2]=C=>s.value=C)},[o("option",kw,d(a(c)("editor.firmware.ota")),1),p.value.length?H("",!0):(g(),_("option",$w,d(a(c)("editor.firmware.no_board")),1)),(g(!0),_(B,null,he(p.value,C=>(g(),_("option",{key:C,value:C},d(C),9,xw))),128)),o("option",Sw,d(a(c)("editor.firmware.download_target")),1)],512),[[jn,s.value]])]),s.value==="ota"?(g(),_("div",Cw,[o("label",Tw,d(a(c)("editor.firmware.host")),1),Ae(o("input",{id:"firmware-host","onUpdate:modelValue":x[3]||(x[3]=C=>i.value=C),placeholder:n.value?n.value.replace(/\.yaml$/,".local"):"screen-livingroom.local"},null,8,Ew),[[Xe,i.value]])])):H("",!0)]),o("div",Aw,[o("button",{type:"button",class:"btn quiet",id:"firmware-validate",disabled:f.value,onClick:x[4]||(x[4]=C=>M("validate"))},d(a(c)("editor.firmware.check")),9,Pw),o("button",{type:"button",class:"btn quiet",id:"firmware-build",disabled:f.value,onClick:x[5]||(x[5]=C=>M("build"))},d(a(c)("editor.firmware.build")),9,Ow),o("button",{type:"button",class:"btn primary",id:"firmware-install",disabled:h.value,onClick:x[6]||(x[6]=C=>M("install"))},d(s.value==="download"?a(c)("editor.firmware.build_download"):a(c)("editor.firmware.install")),9,Iw),u.value?(g(),_("span",Lw)):H("",!0)]),o("p",Mw,d(b.value),1),v.value?(g(),_("div",Rw,[o("a",{class:"btn primary",id:"firmware-download-link",href:y.value.href,download:y.value.name},d(a(c)("editor.firmware.download_file",{name:y.value.name})),9,Nw),te(O,{keypath:"editor.firmware.download_how",tag:"small",scope:"global"},{esphome_web:ne(()=>[o("a",{href:Dw,target:"_blank",rel:"noopener"},"ESPHome Web")]),_:1})])):H("",!0)]),o("pre",Fw,d((t.value?.logs||[]).join(` +`)),1)])}}}),jw={class:"panel wide alerts",id:"alerts-dialog"},Hw={class:"panel-head"},Vw={class:"tx"},Ww={class:"eyebrow"},Bw={key:0,class:"hint"},Kw={class:"alert-hero"},qw={class:"alert-mock",id:"alert-mock","aria-hidden":"true"},zw={class:"mdi alert-mock-icon",id:"alert-mock-icon"},Yw={id:"alert-mock-title"},Gw={id:"alert-mock-subtitle"},Jw={class:"fake",id:"alert-mock-button"},Xw=["aria-label"],Zw=["data-jump","onClick"],Qw={id:"alerts-try",class:"card"},ek={class:"field"},tk={class:"f-label",for:"try-screen"},nk={value:"all"},sk=["value","disabled"],ik={class:"field"},ok={class:"f-label",for:"try-title"},lk={class:"field"},ak={class:"f-label",for:"try-subtitle"},rk={class:"field"},ck={class:"f-label",for:"try-icon"},uk={id:"try-icons"},dk=["value"],fk={class:"field"},pk={class:"f-label",for:"try-color"},hk={value:""},mk=["value"],bk={class:"field"},vk={class:"f-label",for:"try-button"},gk={class:"field"},_k={class:"f-label",for:"try-timeout"},yk={class:"check field"},wk={class:"actions field wide"},kk=["disabled"],$k={class:"status-line",id:"try-result",role:"status"},xk={id:"alerts-screens",class:"card"},Sk={id:"alerts-min-firmware"},Ck={id:"alerts-screen-list",class:"options"},Tk={key:0,class:"hint"},Ek={class:"alert-screen-head"},Ak={class:"copy-label"},Pk=["onClick"],Ok={id:"alerts-howto",class:"card"},Ik={class:"steps"},Lk={class:"field"},Mk={class:"f-label",for:"alerts-example-screen"},Rk=["value"],Nk={key:0,value:""},Fk={class:"copy-line"},Dk={id:"alerts-example"},Uk={id:"alerts-all",class:"card"},jk={id:"alerts-all-event"},Hk={id:"alerts-all-dismiss"},Vk={class:"copy-line"},Wk={id:"alerts-all-example"},Bk={id:"alerts-fields",class:"card"},Kk={class:"table-scroll"},qk={id:"alerts-field-table"},zk={key:0},Yk={id:"alerts-icons",class:"card"},Gk={class:"subhead"},Jk={class:"chips",id:"alerts-suggested"},Xk=["onClick"],Zk={class:"mdi"},Qk={class:"field"},e3={class:"f-label",for:"alerts-icon-search"},t3=["placeholder"],n3={id:"alerts-icon-groups"},s3={class:"subhead"},i3={class:"alert-icon-grid"},o3=["title","onClick"],l3={class:"mdi"},a3={key:0},r3={key:0,class:"hint"},c3={id:"alerts-colors",class:"card"},u3={class:"swatches",id:"alerts-swatches"},d3=["onClick"],f3={id:"alerts-behaviour",class:"card"},p3={class:"alerts-list"},h3={id:"alerts-events",class:"card"},m3={id:"alerts-event-name"},b3={class:"table-scroll"},v3={id:"alerts-ending-table"},g3={class:"subhead"},_3={class:"copy-line"},y3={id:"alerts-wait-example"},w3={id:"alerts-tips",class:"card"},k3={class:"alerts-list"},$3=Me({__name:"AlertsView",setup(e){const t=$(()=>m.inventory.alerts),n=Bn({screen:"all",title:c("editor.alerts.example.title"),subtitle:c("editor.alerts.example.subtitle"),icon:"doorbell",color:"orange",button_text:c("editor.alerts.example.button"),timeout:30,flash:!0}),s=ke(!1),i=ke(""),l=$(()=>m.inventory.screens.filter(k=>Wn(k)&&k.online));async function r(){s.value=!0,i.value="";try{const{screen:k,...A}=n,z=await Pm(k,A),P=m.inventory.screens.find(G=>G.id===k)?.name,ge=k==="all"?c("editor.alerts.try.sent_all",z.sent):P?c("editor.alerts.try.sent_to",{name:P}):c("editor.alerts.try.sent_one");i.value=z.sent?[ge,z.skipped?c("editor.alerts.try.skipped",z.skipped):"",z.unusable?.length?c("editor.alerts.try.left_empty",{fields:z.unusable.join(", ")}):""].filter(Boolean).join(" "):c("editor.alerts.try.nothing",{version:t.value?.min_firmware||"0.2.31"})}catch(k){i.value=k.message}finally{s.value=!1}}const u=$(()=>m.inventory.icons),f=ke(""),h=ke(""),p=k=>`"${String(k).replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`,b=k=>k.type==="string"?/^[a-z][a-z0-9-]*$/.test(k.example)?k.example:p(k.example):k.example===!0?"true":k.example===!1?"false":String(k.example),v=$(()=>m.inventory.screens.filter(k=>k.alert_action)),y=$(()=>f.value||v.value[0]?.alert_action||""),M=$(()=>{const k=(t.value?.fields||[]).map(A=>` ${A.name}: ${b(A)}`);return`action: ${y.value||"esphome._show_alert"} +data: +${k.join(` +`)}`}),E=$(()=>["# Doorbell: show the alert and wait until someone presses the button.","actions:",` - action: ${y.value||"esphome._show_alert"}`," data:",' title: "Someone is at the door"',' subtitle: "Door 3, back"'," icon: doorbell"," color: orange",' button_text: "Coming"'," timeout: 0"," flash: true"," - wait_for_trigger:"," - trigger: event",` event_type: ${t.value?.event||"esphome.screen_alert"}`," event_data:"," action: ok",' timeout: "00:05:00"'," - if:"," - condition: template",' value_template: "{{ wait.trigger is not none }}"'," then:"," - action: notify.notify"," data:",' message: "Someone is coming to the door."'].join(` +`)),x=$(()=>{const k=(t.value?.fields||[]).map(z=>` ${z.name}: ${b(z)}`),A=t.value?.camera;return A&&k.push(` # ${A.name}: ${A.example} # a Guition shows its picture on the card`),`event: ${t.value?.broadcast?.show||"esp_screens_show_alert"} +event_data: +${k.join(` +`)}`}),O=$(()=>{if(!t.value||!u.value)return[];const k=h.value.trim().toLowerCase();return[...u.value.groups,{label:c("editor.alerts.icons.extra"),icons:t.value.extra_icons}].map(z=>({label:z.label,icons:z.icons.filter(P=>!k||P.name.includes(k)||(P.label||"").toLowerCase().includes(k))})).filter(z=>z.icons.length)}),C=$(()=>t.value?.suggested_icons?.find(k=>k.name==="doorbell")),F=$(()=>t.value?.colors?.find(k=>k.name==="orange")),T=k=>["string","int","bool"].includes(k)?c(`editor.alerts.fields.types.${k}`):k;function V(k){document.getElementById(k)?.scrollIntoView({behavior:"smooth",block:"start"})}const L=["alerts-try","alerts-screens","alerts-howto","alerts-all","alerts-fields","alerts-icons","alerts-colors","alerts-behaviour","alerts-events","alerts-tips"];return(k,A)=>{const z=Hs("i18n-t");return g(),_("div",jw,[o("div",Hw,[o("div",Vw,[o("span",Ww,d(a(c)("editor.alerts.eyebrow")),1),o("h1",null,d(a(c)("editor.alerts.title")),1),te(z,{keypath:"editor.alerts.intro",tag:"p",scope:"global"},{action:ne(()=>[...A[15]||(A[15]=[o("code",null,"show_alert",-1)])]),_:1})]),o("button",{type:"button",class:"btn quiet",id:"close-alerts",onClick:A[0]||(A[0]=P=>a(Ve)(""))},d(a(c)("editor.common.back")),1)]),t.value?(g(),_(B,{key:1},[o("div",Kw,[o("div",qw,[o("div",{class:"alert-mock-card",style:je(F.value?{background:F.value.color}:void 0)},[o("span",zw,d(C.value?a(Pe)(C.value.cp):""),1),o("strong",Yw,d(a(c)("editor.alerts.example.title")),1),o("span",Gw,d(a(c)("editor.alerts.example.subtitle")),1),o("span",Jw,d(a(c)("editor.alerts.example.button")),1)],4)]),o("nav",{class:"alerts-nav","aria-label":a(c)("editor.alerts.sections")},[(g(),_(B,null,he(L,P=>o("button",{key:P,type:"button","data-jump":P,onClick:ge=>V(P)},d(a(c)(`editor.alerts.nav.${P.slice(7)}`)),9,Zw)),64))],8,Xw)]),o("section",Qw,[o("h2",null,d(a(c)("editor.alerts.nav.try")),1),o("p",null,d(a(c)("editor.alerts.try.text")),1),o("form",{class:"try-grid",onSubmit:At(r,["prevent"])},[o("div",ek,[o("label",tk,d(a(c)("editor.alerts.try.screen")),1),Ae(o("select",{id:"try-screen","onUpdate:modelValue":A[1]||(A[1]=P=>n.screen=P)},[o("option",nk,d(a(c)("editor.alerts.try.all",{ready:l.value.length})),1),(g(!0),_(B,null,he(a(m).inventory.screens,P=>(g(),_("option",{key:P.id,value:P.id,disabled:!a(Wn)(P)||!P.online},d(a(Wn)(P)&&P.online?P.name:a(c)("editor.alerts.try.not_ready",{name:P.name})),9,sk))),128))],512),[[jn,n.screen]])]),o("div",ik,[o("label",ok,d(a(c)("editor.alerts.try.title")),1),Ae(o("input",{id:"try-title","onUpdate:modelValue":A[2]||(A[2]=P=>n.title=P),maxlength:"64"},null,512),[[Xe,n.title]])]),o("div",lk,[o("label",ak,d(a(c)("editor.alerts.try.subtitle")),1),Ae(o("input",{id:"try-subtitle","onUpdate:modelValue":A[3]||(A[3]=P=>n.subtitle=P),maxlength:"240"},null,512),[[Xe,n.subtitle]])]),o("div",rk,[o("label",ck,d(a(c)("editor.alerts.try.icon")),1),Ae(o("input",{id:"try-icon","onUpdate:modelValue":A[4]||(A[4]=P=>n.icon=P),list:"try-icons",placeholder:"doorbell"},null,512),[[Xe,n.icon]]),o("datalist",uk,[(g(!0),_(B,null,he(t.value.suggested_icons,P=>(g(),_("option",{key:P.name,value:P.name},d(P.label||P.name),9,dk))),128))])]),o("div",fk,[o("label",pk,d(a(c)("editor.alerts.try.color")),1),Ae(o("select",{id:"try-color","onUpdate:modelValue":A[5]||(A[5]=P=>n.color=P)},[o("option",hk,d(a(c)("editor.alerts.white")),1),(g(!0),_(B,null,he(t.value.colors,P=>(g(),_("option",{key:P.name,value:P.name},d(P.label),9,mk))),128))],512),[[jn,n.color]])]),o("div",bk,[o("label",vk,d(a(c)("editor.alerts.try.button")),1),Ae(o("input",{id:"try-button","onUpdate:modelValue":A[6]||(A[6]=P=>n.button_text=P),maxlength:"16"},null,512),[[Xe,n.button_text]])]),o("div",gk,[o("label",_k,d(a(c)("editor.alerts.try.timeout")),1),Ae(o("input",{id:"try-timeout","onUpdate:modelValue":A[7]||(A[7]=P=>n.timeout=P),type:"number",min:"0",max:"86400"},null,512),[[Xe,n.timeout,void 0,{number:!0}]])]),o("label",yk,[Ae(o("input",{type:"checkbox",id:"try-flash","onUpdate:modelValue":A[8]||(A[8]=P=>n.flash=P)},null,512),[[Xf,n.flash]]),o("span",null,[Re(d(a(c)("editor.alerts.try.flash")),1),o("small",null,d(a(c)("editor.alerts.try.flash_hint")),1)])]),o("div",wk,[o("button",{type:"submit",class:"btn primary",id:"try-send",disabled:s.value||!l.value.length},d(s.value?a(c)("editor.alerts.try.sending"):a(c)("editor.alerts.try.send")),9,kk),o("span",$k,d(i.value),1)])],32)]),o("section",xk,[o("h2",null,d(a(c)("editor.alerts.nav.screens")),1),te(z,{keypath:"editor.alerts.screens.text",tag:"p",scope:"global"},{version:ne(()=>[o("code",Sk,d(t.value.min_firmware),1)]),_:1}),o("div",Ck,[a(m).inventory.screens.length?H("",!0):(g(),_("p",Tk,d(a(c)("editor.alerts.screens.none")),1)),(g(!0),_(B,null,he(a(m).inventory.screens,P=>(g(),_("div",{key:P.id,class:"alert-screen"},[o("div",Ek,[o("strong",null,d(P.name),1),o("span",{class:me(["chip",a(cn)(a(ss)(P),t.value.min_firmware)&&P.alert_action?"good":"update"])},d(a(cn)(a(ss)(P),t.value.min_firmware)&&P.alert_action?a(c)("editor.alerts.screens.ready",{version:P.firmware}):P.alert_action?a(c)("editor.alerts.screens.update",{version:P.firmware||a(c)("editor.common.unknown")}):a(c)("editor.alerts.screens.unknown")),3)]),(g(!0),_(B,null,he([[a(c)("editor.alerts.screens.show"),P.alert_action],[a(c)("editor.alerts.screens.dismiss"),P.dismiss_action]],([ge,G])=>(g(),_("div",{key:ge,class:"copy-line"},[o("span",Ak,d(ge),1),o("code",null,d(G||"esphome._show_alert"),1),G?(g(),_("button",{key:0,type:"button",class:"btn quiet mini",onClick:ie=>a(Ot)(G,void 0,"action_name")},d(a(c)("editor.common.copy")),9,Pk)):H("",!0)]))),128))]))),128))])]),o("section",Ok,[o("h2",null,d(a(c)("editor.alerts.nav.howto")),1),o("ol",Ik,[te(z,{keypath:"editor.alerts.howto.add",tag:"li",scope:"global"},{add:ne(()=>[o("b",null,d(a(c)("editor.alerts.howto.add_bold")),1)]),esphome:ne(()=>[...A[16]||(A[16]=[o("b",null,"ESPHome",-1)])]),device:ne(()=>[o("i",null,d(a(c)("editor.alerts.howto.device")),1)]),_:1}),te(z,{keypath:"editor.alerts.howto.fields",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.howto.fields_bold")),1)]),empty:ne(()=>[...A[17]||(A[17]=[o("code",null,'""',-1)])]),zero:ne(()=>[...A[18]||(A[18]=[o("code",null,"0",-1)])]),_:1}),te(z,{keypath:"editor.alerts.howto.yaml",tag:"li",scope:"global"},{edit:ne(()=>[o("b",null,d(a(c)("editor.alerts.edit_yaml")),1)]),_:1})]),o("div",Lk,[o("label",Mk,d(a(c)("editor.alerts.howto.example_for")),1),Ae(o("select",{id:"alerts-example-screen","onUpdate:modelValue":A[9]||(A[9]=P=>f.value=P),style:{"max-width":"360px"}},[(g(!0),_(B,null,he(v.value,P=>(g(),_("option",{key:P.id,value:P.alert_action},d(P.name),9,Rk))),128)),v.value.length?H("",!0):(g(),_("option",Nk,d(a(c)("editor.alerts.howto.no_screen")),1))],512),[[jn,f.value]])]),o("div",Fk,[o("pre",Dk,d(M.value),1),o("button",{type:"button",class:"btn quiet mini",id:"alerts-example-copy",onClick:A[10]||(A[10]=P=>a(Ot)(M.value,void 0,"yaml"))},d(a(c)("editor.alerts.copy_yaml")),1)])]),o("section",Uk,[o("h2",null,d(a(c)("editor.alerts.all.title")),1),te(z,{keypath:"editor.alerts.all.text",tag:"p",scope:"global"},{show:ne(()=>[o("code",jk,d(t.value.broadcast?.show||"esp_screens_show_alert"),1)]),dismiss:ne(()=>[o("code",Hk,d(t.value.broadcast?.dismiss||"esp_screens_dismiss_alert"),1)]),event:ne(()=>[o("b",null,d(a(c)("editor.alerts.all.event")),1)]),edit:ne(()=>[o("b",null,d(a(c)("editor.alerts.edit_yaml")),1)]),_:1}),o("div",Vk,[o("pre",Wk,d(x.value),1),o("button",{type:"button",class:"btn quiet mini",id:"alerts-all-copy",onClick:A[11]||(A[11]=P=>a(Ot)(x.value,void 0,"yaml"))},d(a(c)("editor.alerts.copy_yaml")),1)])]),o("section",Bk,[o("h2",null,d(a(c)("editor.alerts.nav.fields")),1),o("p",null,d(a(c)("editor.alerts.fields.text")),1),o("div",Kk,[o("table",qk,[o("tr",null,[o("th",null,d(a(c)("editor.alerts.fields.field")),1),o("th",null,d(a(c)("editor.alerts.fields.type")),1),o("th",null,d(a(c)("editor.alerts.fields.what")),1),o("th",null,d(a(c)("editor.alerts.fields.example")),1),o("th",null,d(a(c)("editor.alerts.fields.limit")),1)]),(g(!0),_(B,null,he(t.value.fields,P=>(g(),_("tr",{key:P.name},[o("td",null,[o("code",null,d(P.name),1),o("small",null,d(P.label),1)]),o("td",null,d(T(P.type)),1),o("td",null,d(P.help),1),o("td",null,[o("code",null,d(typeof P.example=="string"?P.example:String(P.example)),1)]),o("td",null,d(t.value.limits.cyd[P.name]?a(c)("editor.alerts.fields.bytes",{cyd:t.value.limits.cyd[P.name],guition:t.value.limits.guition[P.name]}):P.type==="int"?a(c)("editor.alerts.fields.seconds"):"—"),1)]))),128)),t.value.camera?(g(),_("tr",zk,[o("td",null,[o("code",null,d(t.value.camera.name),1),o("small",null,d(t.value.camera.label),1)]),o("td",null,d(a(c)("editor.alerts.fields.types.entity")),1),o("td",null,d(t.value.camera.help),1),o("td",null,[o("code",null,d(t.value.camera.example),1)]),o("td",null,d(a(c)("editor.alerts.fields.camera_limit")),1)])):H("",!0)])])]),o("section",Yk,[o("h2",null,d(a(c)("editor.alerts.nav.icons")),1),te(z,{keypath:"editor.alerts.icons.text",tag:"p",scope:"global"},{field:ne(()=>[...A[19]||(A[19]=[o("code",null,"icon",-1)])]),example:ne(()=>[...A[20]||(A[20]=[o("code",null,"doorbell",-1)])]),mdi:ne(()=>[...A[21]||(A[21]=[o("code",null,"mdi:doorbell",-1)])]),hex:ne(()=>[...A[22]||(A[22]=[o("code",null,"F12E6",-1)])]),_:1}),o("p",Gk,d(a(c)("editor.alerts.icons.handy")),1),o("div",Jk,[(g(!0),_(B,null,he(t.value.suggested_icons,P=>(g(),_("button",{key:P.name,type:"button",class:"chip",onClick:ge=>a(Ot)(P.name,void 0,"icon_name")},[o("span",Zk,d(a(Pe)(P.cp)),1),o("code",null,d(P.name),1)],8,Xk))),128))]),o("div",Qk,[o("label",e3,d(a(c)("editor.alerts.icons.search_label")),1),Ae(o("input",{id:"alerts-icon-search","onUpdate:modelValue":A[12]||(A[12]=P=>h.value=P),type:"search",placeholder:a(c)("editor.alerts.icons.search"),autocomplete:"off"},null,8,t3),[[Xe,h.value]])]),o("div",n3,[(g(!0),_(B,null,he(O.value,P=>(g(),_("div",{key:P.label,class:"field"},[o("p",s3,d(P.label)+" · "+d(P.icons.length),1),o("div",i3,[(g(!0),_(B,null,he(P.icons,ge=>(g(),_("button",{key:ge.name,type:"button",class:"alert-icon",title:a(c)("editor.alerts.icons.copy",{name:ge.name}),onClick:G=>a(Ot)(ge.name,void 0,"icon_name")},[o("span",l3,d(a(Pe)(ge.cp)),1),o("code",null,d(ge.name),1),ge.label?(g(),_("small",a3,d(ge.label),1)):H("",!0)],8,o3))),128))])]))),128)),O.value.length?H("",!0):(g(),_("p",r3,d(a(c)("editor.alerts.icons.none",{query:h.value,fallback:t.value.fallback_icon})),1))])]),o("section",c3,[o("h2",null,d(a(c)("editor.alerts.nav.colors")),1),te(z,{keypath:"editor.alerts.colors.text",tag:"p",scope:"global"},{field:ne(()=>[...A[23]||(A[23]=[o("code",null,"color",-1)])]),_:1}),o("div",u3,[o("button",{type:"button",class:"swatch",onClick:A[13]||(A[13]=P=>a(Ot)("",void 0,"empty_color"))},[A[25]||(A[25]=o("i",{style:{background:"#ffffff"}},null,-1)),o("span",null,[A[24]||(A[24]=o("code",null,"empty",-1)),o("small",null,d(a(c)("editor.alerts.white")),1)])]),(g(!0),_(B,null,he(t.value.colors,P=>(g(),_("button",{key:P.name,type:"button",class:"swatch",onClick:ge=>a(Ot)(P.name,void 0,"color_name")},[o("i",{style:je({background:P.color})},null,4),o("span",null,[o("code",null,d(P.name),1),o("small",null,d(P.label)+" · "+d(P.color),1)])],8,d3))),128))])]),o("section",f3,[o("h2",null,d(a(c)("editor.alerts.nav.behaviour")),1),o("ul",p3,[te(z,{keypath:"editor.alerts.behaviour.wakes",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.wakes_bold")),1)]),_:1}),te(z,{keypath:"editor.alerts.behaviour.on",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.on_bold")),1)]),_:1}),te(z,{keypath:"editor.alerts.behaviour.timeout",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.timeout_bold")),1)]),zero:ne(()=>[...A[26]||(A[26]=[o("code",null,"timeout: 0",-1)])]),minute:ne(()=>[...A[27]||(A[27]=[o("code",null,"timeout: 60",-1)])]),_:1}),te(z,{keypath:"editor.alerts.behaviour.blinking",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.blinking_bold")),1)]),flash:ne(()=>[...A[28]||(A[28]=[o("code",null,"flash: true",-1)])]),_:1}),te(z,{keypath:"editor.alerts.behaviour.replacing",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.replacing_bold")),1)]),replaced:ne(()=>[...A[29]||(A[29]=[o("code",null,"replaced",-1)])]),_:1}),te(z,{keypath:"editor.alerts.behaviour.closing",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.closing_bold")),1)]),dismiss:ne(()=>[...A[30]||(A[30]=[o("code",null,"dismiss_alert",-1)])]),_:1}),te(z,{keypath:"editor.alerts.behaviour.beside",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.behaviour.beside_bold")),1)]),_:1})])]),o("section",h3,[o("h2",null,d(a(c)("editor.alerts.nav.events")),1),te(z,{keypath:"editor.alerts.events.text",tag:"p",scope:"global"},{event:ne(()=>[o("code",m3,d(t.value.event),1)]),action:ne(()=>[...A[31]||(A[31]=[o("code",null,"action",-1)])]),title:ne(()=>[...A[32]||(A[32]=[o("code",null,"title",-1)])]),screen:ne(()=>[...A[33]||(A[33]=[o("code",null,"screen",-1)])]),device_id:ne(()=>[...A[34]||(A[34]=[o("code",null,"device_id",-1)])]),_:1}),o("div",b3,[o("table",v3,[o("tr",null,[A[35]||(A[35]=o("th",null,"action",-1)),o("th",null,d(a(c)("editor.alerts.events.when")),1)]),(g(!0),_(B,null,he(t.value.endings,P=>(g(),_("tr",{key:P.action},[o("td",null,[o("code",null,d(P.action),1)]),o("td",null,d(P.label),1)]))),128))])]),o("p",g3,d(a(c)("editor.alerts.events.wait")),1),o("div",_3,[o("pre",y3,d(E.value),1),o("button",{type:"button",class:"btn quiet mini",id:"alerts-wait-copy",onClick:A[14]||(A[14]=P=>a(Ot)(E.value,void 0,"yaml"))},d(a(c)("editor.alerts.copy_yaml")),1)])]),o("section",w3,[o("h2",null,d(a(c)("editor.alerts.nav.tips")),1),o("ul",k3,[te(z,{keypath:"editor.alerts.tips.color",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.tips.color_bold")),1)]),_:1}),te(z,{keypath:"editor.alerts.tips.short",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.tips.short_bold")),1)]),_:1}),te(z,{keypath:"editor.alerts.tips.button",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.tips.button_bold")),1)]),_:1}),te(z,{keypath:"editor.alerts.tips.resolve",tag:"li",scope:"global"},{dismiss:ne(()=>[...A[36]||(A[36]=[o("code",null,"dismiss_alert",-1)])]),_:1}),te(z,{keypath:"editor.alerts.tips.every",tag:"li",scope:"global"},{event:ne(()=>[o("code",null,d(t.value.broadcast?.show||"esp_screens_show_alert"),1)]),screen:ne(()=>[...A[37]||(A[37]=[o("code",null,"screen",-1)])]),_:1}),te(z,{keypath:"editor.alerts.tips.claude",tag:"li",scope:"global"},{bold:ne(()=>[o("b",null,d(a(c)("editor.alerts.tips.claude_bold")),1)]),_:1})])])],64)):(g(),_("p",Bw,d(a(c)("editor.alerts.loading")),1))])}}}),x3={class:"panel",id:"override-dialog"},S3={class:"panel-head"},C3={class:"tx"},T3={class:"eyebrow"},E3={id:"override-title"},A3={class:"notice"},P3={class:"mdi"},O3={class:"file-row"},I3={id:"override-file"},L3={class:"yaml-editor",id:"yaml-editor-wrap"},M3=["aria-label"],R3={class:"actions"},N3={id:"override-count",class:"hint"},F3={class:"actions"},D3=["disabled"],U3=["disabled"],j3=`# Hardware-specific changes for this screen. +# This file is kept when the shared firmware package updates. +# Do not add esphome:, api:, ota:, wifi: or packages: here. + +# Example: a CYD with the ST7789V display controller. +# "!extend" changes the display the shared package already defines; +# a bare id would add a second, incomplete display and fail the build. +display: + - id: !extend my_display + model: ST7789V +`,H3=Me({__name:"OverrideView",setup(e){const t=$(()=>m.overrideProfile),n=ke(""),s=ke(""),i=ke(!1),l=ke(c("editor.common.loading")),r=ke(""),u=ke(!1),f=ke(null),h=ke(null),p=$(()=>n.value.split(` +`).length),b=$(()=>Array.from({length:p.value},(L,k)=>k+1).join(` +`)),v=$(()=>`${c("editor.override.characters",n.value.length)} · ${c("editor.override.lines",p.value)}`);let y=!0;function M(L,k=""){l.value=L,r.value=k}async function E(){if(!t.value){M(c("editor.override.no_profile"),"error");return}M(c("editor.common.loading"));try{const L=await Rt(`firmware/profiles/${encodeURIComponent(t.value)}/override`);s.value=L.override_file,i.value=!!L.attached,n.value=L.exists&&L.content!==`{} +`?L.content:"",M(c(L.attached?"editor.override.attached":"editor.override.not_attached"))}catch(L){M(L.message,"error")}}async function x(L=!1){if(!(!t.value||u.value)){u.value=!0,M(c("editor.override.saving"));try{const k=await ft(`firmware/profiles/${encodeURIComponent(t.value)}/override`,"PUT",{content:n.value});if(s.value=k.override_file,i.value=!0,!L){M(c("editor.override.saved"),"ok"),Ce(c("editor.override.saved_toast"));return}M(c("editor.override.checking")),await ft("firmware/jobs","POST",{file:t.value,action:"validate"}),O()}catch(k){M(k.message,"error")}finally{u.value=!1}}}function O(){const L=Date.now(),k=t.value,A=async()=>{if(!(!y||t.value!==k))try{const z=await Rt("firmware"),P=z.job;if(P&&P.file===k&&P.state==="running")M(P.stage?c("editor.override.checking_stage",{stage:P.stage}):c("editor.override.checking_profile"));else if(P&&P.file===k&&P.state==="success"){M(c("editor.override.valid"),"ok");return}else if(P&&P.file===k&&P.state==="failed"){const ge=(z.logs||[]).filter(G=>/error|failed/i.test(G)).pop();M(ge||c("editor.override.rejected"),"error");return}Date.now()-L<72e5&&setTimeout(A,1200)}catch(z){M(z.message,"error")}};A()}function C(){(!n.value.trim()||confirm(c("editor.override.confirm_example")))&&(n.value=j3,M(c("editor.override.example_loaded")),f.value?.focus())}function F(){(!n.value.trim()||confirm(c("editor.override.confirm_clear")))&&(n.value="",M(c("editor.override.cleared")),f.value?.focus())}function T(L){const k=f.value;if(L.key==="Tab"){L.preventDefault();const A=k.selectionStart,z=k.selectionEnd;k.setRangeText(" ",A,z,"end"),n.value=k.value}else(L.ctrlKey||L.metaKey)&&L.key.toLowerCase()==="s"&&(L.preventDefault(),x(!1))}function V(){h.value&&f.value&&(h.value.scrollTop=f.value.scrollTop)}return Tn(E),os(()=>{y=!1}),(L,k)=>(g(),_("div",x3,[o("div",S3,[o("div",C3,[o("span",T3,d(a(c)("editor.override.eyebrow")),1),o("h1",E3,d(a(m).overrideFriendly?a(c)("editor.override.title_named",{name:a(m).overrideFriendly}):a(c)("editor.override.title")),1),o("p",null,d(a(c)("editor.override.intro")),1)]),o("button",{type:"button",class:"btn quiet",id:"close-override",onClick:k[0]||(k[0]=A=>a(Ve)(""))},d(a(c)("editor.common.back")),1)]),o("div",A3,[o("span",P3,d(a(Pe)("F0493")),1),o("div",null,[o("strong",null,d(a(c)("editor.override.safe_title")),1),o("span",null,d(a(c)("editor.override.safe_text")),1)])]),o("div",O3,[o("code",I3,d(s.value||t.value||""),1),o("span",{id:"override-state",class:me(["chip",{good:i.value}])},d(i.value?a(c)("editor.override.active"):a(c)("editor.override.ready")),3)]),o("div",L3,[o("div",{ref_key:"gutter",ref:h,class:"yaml-gutter",id:"override-gutter","aria-hidden":"true"},d(b.value),513),Ae(o("textarea",{ref_key:"editor",ref:f,id:"override-editor","onUpdate:modelValue":k[1]||(k[1]=A=>n.value=A),spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off","aria-label":a(c)("editor.override.editor_label"),placeholder:`# Example +display: + - id: !extend my_display + model: ST7789V`,onKeydown:T,onScroll:V},null,40,M3),[[Xe,n.value]])]),o("div",R3,[o("button",{type:"button",class:"btn quiet mini",id:"override-example",onClick:C},d(a(c)("editor.override.use_example")),1),o("button",{type:"button",class:"btn quiet mini",id:"override-empty",onClick:F},d(a(c)("editor.override.clear")),1),o("span",N3,d(v.value),1)]),o("p",{id:"override-status",class:me(["status-line",r.value]),role:"status"},d(l.value),3),o("div",F3,[o("button",{type:"button",class:"btn quiet",id:"override-check",disabled:u.value||!t.value,onClick:k[2]||(k[2]=A=>x(!0))},d(a(c)("editor.override.save_check")),9,D3),o("button",{type:"button",class:"btn primary",id:"override-save",disabled:u.value||!t.value,onClick:k[3]||(k[3]=A=>x(!1))},d(a(c)("editor.override.save")),9,U3)])]))}}),V3={class:"main"},W3=Me({__name:"App",setup(e){const t=$(()=>kt.value==="#settings"?h2:kt.value==="#new-screen"?uw:kt.value==="#firmware"?Uw:kt.value==="#alerts"?$3:kt.value==="#override"?H3:_t.value&&m.layout?b1:_1);function n(s){(s.metaKey||s.ctrlKey)&&s.key.toLowerCase()==="k"&&(s.preventDefault(),m.palette=!m.palette)}return Tn(()=>document.addEventListener("keydown",n)),os(()=>document.removeEventListener("keydown",n)),(s,i)=>(g(),_("div",{class:me(["app",{dragging:a(m).drag.active}])},[te(Ob),o("main",V3,[(g(),it(Hd(t.value)))]),te(Lb),te(Kb)],2))}});Jh().finally(()=>{ip(W3).use(ls).mount("#app"),Gm()}); diff --git a/screen_manager/app/static/assets/it-8dniYzl4.js b/screen_manager/app/static/assets/it-8dniYzl4.js deleted file mode 100644 index ad11251..0000000 --- a/screen_manager/app/static/assets/it-8dniYzl4.js +++ /dev/null @@ -1 +0,0 @@ -const t={name:"Italiano",english:"Italian",script:"latin",plural:"one_other",clock:"24",checked:!1},a={},e={_meta:t,editor:a};export{t as _meta,e as default,a as editor}; diff --git a/screen_manager/app/static/assets/it-OWvw4Kib.js b/screen_manager/app/static/assets/it-OWvw4Kib.js new file mode 100644 index 0000000..d62cf1e --- /dev/null +++ b/screen_manager/app/static/assets/it-OWvw4Kib.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Acceso"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Spento"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Non disponibile"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Spento"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Riscaldamento"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Freddo"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Caldo/Freddo"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Automatico"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Deumidificazione"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Ventilazione"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Riscaldamento"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Raffreddando"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inattivo"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Spento"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"In deumidificazione"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Ventilatore"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Preriscaldamento"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Defrosting"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Aperto"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Chiuso"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"In apertura"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"In chiusura"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"In esecuzione"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"In pausa"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inattivo"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"In attesa"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"In casa"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Fuori casa"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Sopra l'orizzonte"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Sotto l'orizzonte"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Alla base"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"In pulizia"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"In pausa"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Ritornando alla base"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inattivo"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Soleggiato"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Sereno, notte"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Nuvoloso"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Parzialmente nuvoloso"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Piovoso"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Rovescio"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Nevoso"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Nevoso, piovoso"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Nebbia"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Grandine"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Temporale"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Temporale, piovoso"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Ventoso"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Eccezionale"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Basso/a"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normale"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"In carica"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Non in carica"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Freddo"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normale"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Connesso"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Disconnesso"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Aperto"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Chiuso"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Aperto"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Chiuso"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Caldo"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normale"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Luce rilevata"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Nessuna luce"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Sbloccato/a"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Bloccato/a"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Bagnato"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Asciutto"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"In movimento"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Non si muove"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Aperto"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Chiuso"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Collegato"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Scollegato"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Acceso"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Spento"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"In casa"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Fuori casa"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problema"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"In esecuzione"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Non in esecuzione"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Non Sicuro"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Sicuro"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevata manomissione"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Aggiornamento disponibile"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Aggiornato"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Rilevato"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Assente"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Aperto"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Chiuso"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Attiva"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Esegui"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Premi"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Proprio ora"}},minutes_ago:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" min fa"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 ora fa"},{t:2,i:[{t:4,k:"n"},{t:3,v:" ore fa"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Ieri"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 giorno fa"},{t:2,i:[{t:4,k:"n"},{t:3,v:" giorni fa"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 settimana fa"},{t:2,i:[{t:4,k:"n"},{t:3,v:" settimane fa"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 mese fa"},{t:2,i:[{t:4,k:"n"},{t:3,v:" mesi fa"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 anno fa"},{t:2,i:[{t:4,k:"n"},{t:3,v:" anni fa"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"Tra "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Tra 1 ora"},{t:2,i:[{t:3,v:"Tra "},{t:4,k:"n"},{t:3,v:" ore"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Domani"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Tra 1 giorno"},{t:2,i:[{t:3,v:"Tra "},{t:4,k:"n"},{t:3,v:" giorni"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"AM"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"PM"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"domenica"}},{t:0,b:{t:2,i:[{t:3}],s:"lunedì"}},{t:0,b:{t:2,i:[{t:3}],s:"martedì"}},{t:0,b:{t:2,i:[{t:3}],s:"mercoledì"}},{t:0,b:{t:2,i:[{t:3}],s:"giovedì"}},{t:0,b:{t:2,i:[{t:3}],s:"venerdì"}},{t:0,b:{t:2,i:[{t:3}],s:"sabato"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"dom"}},{t:0,b:{t:2,i:[{t:3}],s:"lun"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"mer"}},{t:0,b:{t:2,i:[{t:3}],s:"gio"}},{t:0,b:{t:2,i:[{t:3}],s:"ven"}},{t:0,b:{t:2,i:[{t:3}],s:"sab"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"dom"}},{t:0,b:{t:2,i:[{t:3}],s:"lun"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"mer"}},{t:0,b:{t:2,i:[{t:3}],s:"gio"}},{t:0,b:{t:2,i:[{t:3}],s:"ven"}},{t:0,b:{t:2,i:[{t:3}],s:"sab"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"gennaio"}},{t:0,b:{t:2,i:[{t:3}],s:"febbraio"}},{t:0,b:{t:2,i:[{t:3}],s:"marzo"}},{t:0,b:{t:2,i:[{t:3}],s:"aprile"}},{t:0,b:{t:2,i:[{t:3}],s:"maggio"}},{t:0,b:{t:2,i:[{t:3}],s:"giugno"}},{t:0,b:{t:2,i:[{t:3}],s:"luglio"}},{t:0,b:{t:2,i:[{t:3}],s:"agosto"}},{t:0,b:{t:2,i:[{t:3}],s:"settembre"}},{t:0,b:{t:2,i:[{t:3}],s:"ottobre"}},{t:0,b:{t:2,i:[{t:3}],s:"novembre"}},{t:0,b:{t:2,i:[{t:3}],s:"dicembre"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"gen"}},{t:0,b:{t:2,i:[{t:3}],s:"feb"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"apr"}},{t:0,b:{t:2,i:[{t:3}],s:"mag"}},{t:0,b:{t:2,i:[{t:3}],s:"giu"}},{t:0,b:{t:2,i:[{t:3}],s:"lug"}},{t:0,b:{t:2,i:[{t:3}],s:"ago"}},{t:0,b:{t:2,i:[{t:3}],s:"set"}},{t:0,b:{t:2,i:[{t:3}],s:"ott"}},{t:0,b:{t:2,i:[{t:3}],s:"nov"}},{t:0,b:{t:2,i:[{t:3}],s:"dic"}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:"."}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"2"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Pagina "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/nl-Bml3MQex.js b/screen_manager/app/static/assets/nl-Bml3MQex.js deleted file mode 100644 index faa3239..0000000 --- a/screen_manager/app/static/assets/nl-Bml3MQex.js +++ /dev/null @@ -1 +0,0 @@ -const e={name:"Nederlands",english:"Dutch",script:"latin",plural:"one_other",clock:"24",checked:!1},t={},c={_meta:e,editor:t};export{e as _meta,c as default,t as editor}; diff --git a/screen_manager/app/static/assets/nl-DV7drWRf.js b/screen_manager/app/static/assets/nl-DV7drWRf.js new file mode 100644 index 0000000..9dcf6ff --- /dev/null +++ b/screen_manager/app/static/assets/nl-DV7drWRf.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Aan"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Uit"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Uit"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Verwarmen"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Koelen"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Verwarmen/koelen"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Automatisch"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Droog"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Alleen ventilator"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"Verwarmen"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"Koelen"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactief"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Uit"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Drogen"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Ventilator"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Voorverwarmen"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Ontdooien"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Dicht"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"Openen"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"Sluiten"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"Speelt"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Gepauzeerd"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactief"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"Stand-by"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Thuis"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Afwezig"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Boven de horizon"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Onder de horizon"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Gedockt"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"Schoonmaken"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Gepauzeerd"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"Terugkeren naar dock"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inactief"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Zonnig"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Helder, nacht"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Bewolkt"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Half bewolkt"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Regenachtig"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Regen"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Sneeuwachtig"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Sneeuw-, regenachtig"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Mist"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Hagel"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Bliksem"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Bliksem, regenachtig"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Winderig"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Uitzonderlijk"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Laag"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normaal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Opladen"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet aan het opladen"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Koud"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Verbonden"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Verbroken"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Dicht"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Dicht"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Heet"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Licht gedetecteerd"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Geen licht"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Ontgrendeld"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Vergrendeld"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Nat"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Droog"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"Beweging"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Geen beweging"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Dicht"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Ingeplugd"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Losgekoppeld"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Aan"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Uit"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Thuis"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Afwezig"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Probleem"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"Actief"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet actief"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Onveilig"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Veilig"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Sabotage ontdekt"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Update beschikbaar"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Up-to-date"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Gedetecteerd"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Niet gedetecteerd"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Open"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Dicht"}}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Niet beschikbaar"}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Inschakelen"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Uitvoeren"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Klik"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Zojuist"}},minutes_ago:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" min geleden"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 uur geleden"},{t:2,i:[{t:4,k:"n"},{t:3,v:" uur geleden"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Gisteren"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 dag geleden"},{t:2,i:[{t:4,k:"n"},{t:3,v:" dagen geleden"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 week geleden"},{t:2,i:[{t:4,k:"n"},{t:3,v:" weken geleden"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 maand geleden"},{t:2,i:[{t:4,k:"n"},{t:3,v:" maanden geleden"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 jaar geleden"},{t:2,i:[{t:4,k:"n"},{t:3,v:" jaar geleden"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"Over "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Over 1 uur"},{t:2,i:[{t:3,v:"Over "},{t:4,k:"n"},{t:3,v:" uur"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Morgen"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Over 1 dag"},{t:2,i:[{t:3,v:"Over "},{t:4,k:"n"},{t:3,v:" dagen"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"a.m."}},pm:{t:0,b:{t:2,i:[{t:3}],s:"p.m."}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"zondag"}},{t:0,b:{t:2,i:[{t:3}],s:"maandag"}},{t:0,b:{t:2,i:[{t:3}],s:"dinsdag"}},{t:0,b:{t:2,i:[{t:3}],s:"woensdag"}},{t:0,b:{t:2,i:[{t:3}],s:"donderdag"}},{t:0,b:{t:2,i:[{t:3}],s:"vrijdag"}},{t:0,b:{t:2,i:[{t:3}],s:"zaterdag"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"zo"}},{t:0,b:{t:2,i:[{t:3}],s:"ma"}},{t:0,b:{t:2,i:[{t:3}],s:"di"}},{t:0,b:{t:2,i:[{t:3}],s:"wo"}},{t:0,b:{t:2,i:[{t:3}],s:"do"}},{t:0,b:{t:2,i:[{t:3}],s:"vr"}},{t:0,b:{t:2,i:[{t:3}],s:"za"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"zo"}},{t:0,b:{t:2,i:[{t:3}],s:"ma"}},{t:0,b:{t:2,i:[{t:3}],s:"di"}},{t:0,b:{t:2,i:[{t:3}],s:"wo"}},{t:0,b:{t:2,i:[{t:3}],s:"do"}},{t:0,b:{t:2,i:[{t:3}],s:"vr"}},{t:0,b:{t:2,i:[{t:3}],s:"za"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"januari"}},{t:0,b:{t:2,i:[{t:3}],s:"februari"}},{t:0,b:{t:2,i:[{t:3}],s:"maart"}},{t:0,b:{t:2,i:[{t:3}],s:"april"}},{t:0,b:{t:2,i:[{t:3}],s:"mei"}},{t:0,b:{t:2,i:[{t:3}],s:"juni"}},{t:0,b:{t:2,i:[{t:3}],s:"juli"}},{t:0,b:{t:2,i:[{t:3}],s:"augustus"}},{t:0,b:{t:2,i:[{t:3}],s:"september"}},{t:0,b:{t:2,i:[{t:3}],s:"oktober"}},{t:0,b:{t:2,i:[{t:3}],s:"november"}},{t:0,b:{t:2,i:[{t:3}],s:"december"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"jan"}},{t:0,b:{t:2,i:[{t:3}],s:"feb"}},{t:0,b:{t:2,i:[{t:3}],s:"mrt"}},{t:0,b:{t:2,i:[{t:3}],s:"apr"}},{t:0,b:{t:2,i:[{t:3}],s:"mei"}},{t:0,b:{t:2,i:[{t:3}],s:"jun"}},{t:0,b:{t:2,i:[{t:3}],s:"jul"}},{t:0,b:{t:2,i:[{t:3}],s:"aug"}},{t:0,b:{t:2,i:[{t:3}],s:"sep"}},{t:0,b:{t:2,i:[{t:3}],s:"okt"}},{t:0,b:{t:2,i:[{t:3}],s:"nov"}},{t:0,b:{t:2,i:[{t:3}],s:"dec"}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:" "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:"."}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"1"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Pagina "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/pl-2alySqqF.js b/screen_manager/app/static/assets/pl-2alySqqF.js deleted file mode 100644 index 5e03fbc..0000000 --- a/screen_manager/app/static/assets/pl-2alySqqF.js +++ /dev/null @@ -1 +0,0 @@ -const l={name:"Polski",english:"Polish",script:"latin",plural:"slavic_pl",clock:"24",checked:!1},s={},c={_meta:l,editor:s};export{l as _meta,c as default,s as editor}; diff --git a/screen_manager/app/static/assets/pl-CGqJEGr1.js b/screen_manager/app/static/assets/pl-CGqJEGr1.js new file mode 100644 index 0000000..4f7288e --- /dev/null +++ b/screen_manager/app/static/assets/pl-CGqJEGr1.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"włączono"}},off:{t:0,b:{t:2,i:[{t:3}],s:"wyłączono"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"niedostępny"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"wyłączono"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"grzanie"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"chłodzenie"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"grzanie/chłodzenie"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"osuszanie"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"tylko wentylator"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"grzanie"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"chłodzenie"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"brak aktywności"}},off:{t:0,b:{t:2,i:[{t:3}],s:"wyłączono"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"osuszanie"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"wentylator"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"podgrzewanie wstępne"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"rozmrażanie"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"otwarto"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"zamknięto"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"otwieranie"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"zamykanie"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"odtwarzanie"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"wstrzymano"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"brak aktywności"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"tryb czuwania"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"w domu"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"poza domem"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"powyżej horyzontu"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"poniżej horyzontu"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"zadokowany"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"sprzątanie"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"wstrzymano"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"wraca do stacji dokującej"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"brak aktywności"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"słonecznie"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"pogodna noc"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"pochmurno"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"częściowe zachmurzenie"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"deszczowo"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"ulewa"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"opady śniegu"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"deszcz ze śniegiem"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"mgła"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"grad"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"wyładowania atmosferyczne"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"burza"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"wietrznie"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"warunki nadzwyczajne"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Low"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"Charging"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"brak ładowania"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"zimno"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"połączono"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"rozłączono"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"otwarto"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"zamknięto"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"otwarto"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"zamknięto"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"gorąco"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"odblokowano"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"zablokowano"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"w ruchu"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"brak ruchu"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"otwarto"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"zamknięto"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"podłączono"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"odłączono"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"włączono"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"wyłączono"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Home"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Away"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"problem"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"ok"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"działa"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"nie działa"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"zagrożenie"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"brak zagrożenia"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Tampering detected"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"dostępna aktualizacja"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"brak aktualizacji"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"wykryto"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"brak"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"otwarto"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"zamknięto"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Aktywuj"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Uruchom"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Naciśnij"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Przed chwilą"}},minutes_ago:{t:0,b:{t:2,i:[{t:4,k:"n"},{t:3,v:" min temu"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 godzinę temu"},{t:2,i:[{t:4,k:"n"},{t:3,v:" godziny temu"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" godzin temu"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Wczoraj"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 dzień temu"},{t:2,i:[{t:4,k:"n"},{t:3,v:" dni temu"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" dni temu"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 tydzień temu"},{t:2,i:[{t:4,k:"n"},{t:3,v:" tygodnie temu"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" tygodni temu"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 miesiąc temu"},{t:2,i:[{t:4,k:"n"},{t:3,v:" miesiące temu"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" miesięcy temu"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"1 rok temu"},{t:2,i:[{t:4,k:"n"},{t:3,v:" lata temu"}]},{t:2,i:[{t:4,k:"n"},{t:3,v:" lat temu"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"Za "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Za 1 godzinę"},{t:2,i:[{t:3,v:"Za "},{t:4,k:"n"},{t:3,v:" godziny"}]},{t:2,i:[{t:3,v:"Za "},{t:4,k:"n"},{t:3,v:" godzin"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Jutro"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:"Za 1 dzień"},{t:2,i:[{t:3,v:"Za "},{t:4,k:"n"},{t:3,v:" dni"}]},{t:2,i:[{t:3,v:"Za "},{t:4,k:"n"},{t:3,v:" dni"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"AM"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"PM"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"niedziela"}},{t:0,b:{t:2,i:[{t:3}],s:"poniedziałek"}},{t:0,b:{t:2,i:[{t:3}],s:"wtorek"}},{t:0,b:{t:2,i:[{t:3}],s:"środa"}},{t:0,b:{t:2,i:[{t:3}],s:"czwartek"}},{t:0,b:{t:2,i:[{t:3}],s:"piątek"}},{t:0,b:{t:2,i:[{t:3}],s:"sobota"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"niedz."}},{t:0,b:{t:2,i:[{t:3}],s:"pon."}},{t:0,b:{t:2,i:[{t:3}],s:"wt."}},{t:0,b:{t:2,i:[{t:3}],s:"śr."}},{t:0,b:{t:2,i:[{t:3}],s:"czw."}},{t:0,b:{t:2,i:[{t:3}],s:"pt."}},{t:0,b:{t:2,i:[{t:3}],s:"sob."}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"niedz."}},{t:0,b:{t:2,i:[{t:3}],s:"pon."}},{t:0,b:{t:2,i:[{t:3}],s:"wt."}},{t:0,b:{t:2,i:[{t:3}],s:"śr."}},{t:0,b:{t:2,i:[{t:3}],s:"czw."}},{t:0,b:{t:2,i:[{t:3}],s:"pt."}},{t:0,b:{t:2,i:[{t:3}],s:"sob."}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"stycznia"}},{t:0,b:{t:2,i:[{t:3}],s:"lutego"}},{t:0,b:{t:2,i:[{t:3}],s:"marca"}},{t:0,b:{t:2,i:[{t:3}],s:"kwietnia"}},{t:0,b:{t:2,i:[{t:3}],s:"maja"}},{t:0,b:{t:2,i:[{t:3}],s:"czerwca"}},{t:0,b:{t:2,i:[{t:3}],s:"lipca"}},{t:0,b:{t:2,i:[{t:3}],s:"sierpnia"}},{t:0,b:{t:2,i:[{t:3}],s:"września"}},{t:0,b:{t:2,i:[{t:3}],s:"października"}},{t:0,b:{t:2,i:[{t:3}],s:"listopada"}},{t:0,b:{t:2,i:[{t:3}],s:"grudnia"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"sty"}},{t:0,b:{t:2,i:[{t:3}],s:"lut"}},{t:0,b:{t:2,i:[{t:3}],s:"mar"}},{t:0,b:{t:2,i:[{t:3}],s:"kwi"}},{t:0,b:{t:2,i:[{t:3}],s:"maj"}},{t:0,b:{t:2,i:[{t:3}],s:"cze"}},{t:0,b:{t:2,i:[{t:3}],s:"lip"}},{t:0,b:{t:2,i:[{t:3}],s:"sie"}},{t:0,b:{t:2,i:[{t:3}],s:"wrz"}},{t:0,b:{t:2,i:[{t:3}],s:"paź"}},{t:0,b:{t:2,i:[{t:3}],s:"lis"}},{t:0,b:{t:2,i:[{t:3}],s:"gru"}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:" "}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"2"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Strona "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/assets/pt-BD1M56yK.js b/screen_manager/app/static/assets/pt-BD1M56yK.js deleted file mode 100644 index d83ac4c..0000000 --- a/screen_manager/app/static/assets/pt-BD1M56yK.js +++ /dev/null @@ -1 +0,0 @@ -const t={name:"Português",english:"Portuguese",script:"latin",plural:"one_upto_1",clock:"24",checked:!1},e={},o={_meta:t,editor:e};export{t as _meta,o as default,e as editor}; diff --git a/screen_manager/app/static/assets/pt-Brv5sHYu.js b/screen_manager/app/static/assets/pt-Brv5sHYu.js new file mode 100644 index 0000000..254af28 --- /dev/null +++ b/screen_manager/app/static/assets/pt-Brv5sHYu.js @@ -0,0 +1 @@ +const t={screen:{ha:{on:{t:0,b:{t:2,i:[{t:3}],s:"Ligado"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},unavailable:{t:0,b:{t:2,i:[{t:3}],s:"Indisponível"}},climate:{off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},heat:{t:0,b:{t:2,i:[{t:3}],s:"Aquecer"}},cool:{t:0,b:{t:2,i:[{t:3}],s:"Arrefecer"}},heat_cool:{t:0,b:{t:2,i:[{t:3}],s:"Aquecer/Arrefecer"}},auto:{t:0,b:{t:2,i:[{t:3}],s:"Auto"}},dry:{t:0,b:{t:2,i:[{t:3}],s:"Secar"}},fan_only:{t:0,b:{t:2,i:[{t:3}],s:"Ventilação"}}},hvac_action:{heating:{t:0,b:{t:2,i:[{t:3}],s:"A aquecer"}},cooling:{t:0,b:{t:2,i:[{t:3}],s:"A arrefecer"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inativo"}},off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},drying:{t:0,b:{t:2,i:[{t:3}],s:"Desumidificação"}},fan:{t:0,b:{t:2,i:[{t:3}],s:"Ventilação"}},preheating:{t:0,b:{t:2,i:[{t:3}],s:"Pré-Aquecimento"}},defrosting:{t:0,b:{t:2,i:[{t:3}],s:"Descongelação"}}},cover:{open:{t:0,b:{t:2,i:[{t:3}],s:"Aberta"}},closed:{t:0,b:{t:2,i:[{t:3}],s:"Fechado"}},opening:{t:0,b:{t:2,i:[{t:3}],s:"A abrir"}},closing:{t:0,b:{t:2,i:[{t:3}],s:"A fechar"}}},media:{playing:{t:0,b:{t:2,i:[{t:3}],s:"A reproduzir"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Pausado"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inativo"}},standby:{t:0,b:{t:2,i:[{t:3}],s:"Standby"}}},person:{home:{t:0,b:{t:2,i:[{t:3}],s:"Casa"}},not_home:{t:0,b:{t:2,i:[{t:3}],s:"Ausente"}}},sun:{above_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Acima do horizonte"}},below_horizon:{t:0,b:{t:2,i:[{t:3}],s:"Abaixo do horizonte"}}},vacuum:{docked:{t:0,b:{t:2,i:[{t:3}],s:"Na Base"}},cleaning:{t:0,b:{t:2,i:[{t:3}],s:"A Limpar"}},paused:{t:0,b:{t:2,i:[{t:3}],s:"Em pausa"}},returning:{t:0,b:{t:2,i:[{t:3}],s:"A regressar à base"}},idle:{t:0,b:{t:2,i:[{t:3}],s:"Inativo"}}},weather:{sunny:{t:0,b:{t:2,i:[{t:3}],s:"Ensolarado"}},clear_night:{t:0,b:{t:2,i:[{t:3}],s:"Limpo, noite"}},cloudy:{t:0,b:{t:2,i:[{t:3}],s:"Nublado"}},partlycloudy:{t:0,b:{t:2,i:[{t:3}],s:"Parcialmente nublado"}},rainy:{t:0,b:{t:2,i:[{t:3}],s:"Chuvoso"}},pouring:{t:0,b:{t:2,i:[{t:3}],s:"Aguaceiros"}},snowy:{t:0,b:{t:2,i:[{t:3}],s:"Nevoso"}},snowy_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Nevoso, chuvoso"}},fog:{t:0,b:{t:2,i:[{t:3}],s:"Nevoeiro"}},hail:{t:0,b:{t:2,i:[{t:3}],s:"Granizo"}},lightning:{t:0,b:{t:2,i:[{t:3}],s:"Trovoada"}},lightning_rainy:{t:0,b:{t:2,i:[{t:3}],s:"Trovoada, chuva"}},windy:{t:0,b:{t:2,i:[{t:3}],s:"Ventoso"}},exceptional:{t:0,b:{t:2,i:[{t:3}],s:"Excecional"}}},binary:{battery_on:{t:0,b:{t:2,i:[{t:3}],s:"Baixo"}},battery_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},battery_charging_on:{t:0,b:{t:2,i:[{t:3}],s:"A carregar"}},battery_charging_off:{t:0,b:{t:2,i:[{t:3}],s:"Não está a carregar"}},carbon_monoxide_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},carbon_monoxide_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},cold_on:{t:0,b:{t:2,i:[{t:3}],s:"Frio"}},cold_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},connectivity_on:{t:0,b:{t:2,i:[{t:3}],s:"Ligado"}},connectivity_off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},door_on:{t:0,b:{t:2,i:[{t:3}],s:"Aberto"}},door_off:{t:0,b:{t:2,i:[{t:3}],s:"Fechada"}},garage_door_on:{t:0,b:{t:2,i:[{t:3}],s:"Aberta"}},garage_door_off:{t:0,b:{t:2,i:[{t:3}],s:"Fechado"}},gas_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},gas_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},heat_on:{t:0,b:{t:2,i:[{t:3}],s:"Quente"}},heat_off:{t:0,b:{t:2,i:[{t:3}],s:"Normal"}},light_on:{t:0,b:{t:2,i:[{t:3}],s:"Luz detetada"}},light_off:{t:0,b:{t:2,i:[{t:3}],s:"Sem luz"}},lock_on:{t:0,b:{t:2,i:[{t:3}],s:"Destrancada"}},lock_off:{t:0,b:{t:2,i:[{t:3}],s:"Trancado"}},moisture_on:{t:0,b:{t:2,i:[{t:3}],s:"Húmido"}},moisture_off:{t:0,b:{t:2,i:[{t:3}],s:"Seco"}},motion_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},motion_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},moving_on:{t:0,b:{t:2,i:[{t:3}],s:"Em movimento"}},moving_off:{t:0,b:{t:2,i:[{t:3}],s:"Parado"}},occupancy_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},occupancy_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},opening_on:{t:0,b:{t:2,i:[{t:3}],s:"Aberta"}},opening_off:{t:0,b:{t:2,i:[{t:3}],s:"Fechada"}},plug_on:{t:0,b:{t:2,i:[{t:3}],s:"Ligado"}},plug_off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},power_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},power_off:{t:0,b:{t:2,i:[{t:3}],s:"Desligado"}},presence_on:{t:0,b:{t:2,i:[{t:3}],s:"Em casa"}},presence_off:{t:0,b:{t:2,i:[{t:3}],s:"Ausente"}},problem_on:{t:0,b:{t:2,i:[{t:3}],s:"Problema"}},problem_off:{t:0,b:{t:2,i:[{t:3}],s:"OK"}},running_on:{t:0,b:{t:2,i:[{t:3}],s:"Em execução"}},running_off:{t:0,b:{t:2,i:[{t:3}],s:"Parado"}},safety_on:{t:0,b:{t:2,i:[{t:3}],s:"Inseguro"}},safety_off:{t:0,b:{t:2,i:[{t:3}],s:"Seguro"}},smoke_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},smoke_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},sound_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},sound_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},tamper_on:{t:0,b:{t:2,i:[{t:3}],s:"Adulteração detetada"}},tamper_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},update_on:{t:0,b:{t:2,i:[{t:3}],s:"Atualização disponível"}},update_off:{t:0,b:{t:2,i:[{t:3}],s:"Atualizado"}},vibration_on:{t:0,b:{t:2,i:[{t:3}],s:"Detetado"}},vibration_off:{t:0,b:{t:2,i:[{t:3}],s:"Limpo"}},window_on:{t:0,b:{t:2,i:[{t:3}],s:"Aberto"}},window_off:{t:0,b:{t:2,i:[{t:3}],s:"Fechada"}}},button:{activate:{t:0,b:{t:2,i:[{t:3}],s:"Ativar"}},run:{t:0,b:{t:2,i:[{t:3}],s:"Executar"}},press:{t:0,b:{t:2,i:[{t:3}],s:"Pressione"}}}},time:{just_now:{t:0,b:{t:2,i:[{t:3}],s:"Agora mesmo"}},minutes_ago:{t:0,b:{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" min"}]}},hours_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" hora"}]},{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" horas"}]}]}},yesterday:{t:0,b:{t:2,i:[{t:3}],s:"Ontem"}},days_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" dia"}]},{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" dias"}]}]}},weeks_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" semana"}]},{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" semanas"}]}]}},months_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" mês"}]},{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" meses"}]}]}},years_ago:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" ano"}]},{t:2,i:[{t:3,v:"Há "},{t:4,k:"n"},{t:3,v:" anos"}]}]}},in_minutes:{t:0,b:{t:2,i:[{t:3,v:"Daqui a "},{t:4,k:"n"},{t:3,v:" min"}]}},in_hours:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Daqui a "},{t:4,k:"n"},{t:3,v:" hora"}]},{t:2,i:[{t:3,v:"Daqui a "},{t:4,k:"n"},{t:3,v:" horas"}]}]}},tomorrow:{t:0,b:{t:2,i:[{t:3}],s:"Amanhã"}},in_days:{t:0,b:{t:1,c:[{t:2,i:[{t:3,v:"Daqui a "},{t:4,k:"n"},{t:3,v:" dia"}]},{t:2,i:[{t:3,v:"Daqui a "},{t:4,k:"n"},{t:3,v:" dias"}]}]}},am:{t:0,b:{t:2,i:[{t:3}],s:"da manhã"}},pm:{t:0,b:{t:2,i:[{t:3}],s:"da tarde"}}},date:{weekdays:[{t:0,b:{t:2,i:[{t:3}],s:"domingo"}},{t:0,b:{t:2,i:[{t:3}],s:"segunda-feira"}},{t:0,b:{t:2,i:[{t:3}],s:"terça-feira"}},{t:0,b:{t:2,i:[{t:3}],s:"quarta-feira"}},{t:0,b:{t:2,i:[{t:3}],s:"quinta-feira"}},{t:0,b:{t:2,i:[{t:3}],s:"sexta-feira"}},{t:0,b:{t:2,i:[{t:3}],s:"sábado"}}],weekdays_short:[{t:0,b:{t:2,i:[{t:3}],s:"domingo"}},{t:0,b:{t:2,i:[{t:3}],s:"segunda"}},{t:0,b:{t:2,i:[{t:3}],s:"terça"}},{t:0,b:{t:2,i:[{t:3}],s:"quarta"}},{t:0,b:{t:2,i:[{t:3}],s:"quinta"}},{t:0,b:{t:2,i:[{t:3}],s:"sexta"}},{t:0,b:{t:2,i:[{t:3}],s:"sábado"}}],weekdays_min:[{t:0,b:{t:2,i:[{t:3}],s:"domingo"}},{t:0,b:{t:2,i:[{t:3}],s:"segunda"}},{t:0,b:{t:2,i:[{t:3}],s:"terça"}},{t:0,b:{t:2,i:[{t:3}],s:"quarta"}},{t:0,b:{t:2,i:[{t:3}],s:"quinta"}},{t:0,b:{t:2,i:[{t:3}],s:"sexta"}},{t:0,b:{t:2,i:[{t:3}],s:"sábado"}}],months:[{t:0,b:{t:2,i:[{t:3}],s:"janeiro"}},{t:0,b:{t:2,i:[{t:3}],s:"fevereiro"}},{t:0,b:{t:2,i:[{t:3}],s:"março"}},{t:0,b:{t:2,i:[{t:3}],s:"abril"}},{t:0,b:{t:2,i:[{t:3}],s:"maio"}},{t:0,b:{t:2,i:[{t:3}],s:"junho"}},{t:0,b:{t:2,i:[{t:3}],s:"julho"}},{t:0,b:{t:2,i:[{t:3}],s:"agosto"}},{t:0,b:{t:2,i:[{t:3}],s:"setembro"}},{t:0,b:{t:2,i:[{t:3}],s:"outubro"}},{t:0,b:{t:2,i:[{t:3}],s:"novembro"}},{t:0,b:{t:2,i:[{t:3}],s:"dezembro"}}],months_short:[{t:0,b:{t:2,i:[{t:3}],s:"jan."}},{t:0,b:{t:2,i:[{t:3}],s:"fev."}},{t:0,b:{t:2,i:[{t:3}],s:"mar."}},{t:0,b:{t:2,i:[{t:3}],s:"abr."}},{t:0,b:{t:2,i:[{t:3}],s:"mai."}},{t:0,b:{t:2,i:[{t:3}],s:"jun."}},{t:0,b:{t:2,i:[{t:3}],s:"jul."}},{t:0,b:{t:2,i:[{t:3}],s:"ago."}},{t:0,b:{t:2,i:[{t:3}],s:"set."}},{t:0,b:{t:2,i:[{t:3}],s:"out."}},{t:0,b:{t:2,i:[{t:3}],s:"nov."}},{t:0,b:{t:2,i:[{t:3}],s:"dez."}}],top_bar:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},full:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"day"},{t:3,v:" de "},{t:4,k:"month"}]}},day_month:{t:0,b:{t:2,i:[{t:4,k:"day"},{t:3,v:" "},{t:4,k:"month"}]}},weekday_time:{t:0,b:{t:2,i:[{t:4,k:"weekday"},{t:3,v:", "},{t:4,k:"time"}]}}},number:{decimal:{t:0,b:{t:2,i:[{t:3}],s:","}},group:{t:0,b:{t:2,i:[{t:3}],s:" "}},group_min:{t:0,b:{t:2,i:[{t:3}],s:"2"}}},tile:{page:{t:0,b:{t:2,i:[{t:3,v:"Página "},{t:4,k:"n"}]}}}}};export{t as default}; diff --git a/screen_manager/app/static/index.html b/screen_manager/app/static/index.html index 8b14fbf..fc1884b 100644 --- a/screen_manager/app/static/index.html +++ b/screen_manager/app/static/index.html @@ -5,7 +5,7 @@ ESP Screens - + diff --git a/screen_manager/translations/en.json b/screen_manager/translations/en.json index dbcbcf8..ce22627 100644 --- a/screen_manager/translations/en.json +++ b/screen_manager/translations/en.json @@ -1236,72 +1236,8 @@ "cleared": "The override will be empty after you save." }, "mockup": { - "date": { - "weekdays_min": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "months_short": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "top_bar": "{weekday} {day} {month}" - }, - "time": { - "just_now": "Just now", - "minutes_ago": "{n} min ago", - "hours_ago": "1 hour ago | {n} hours ago", - "yesterday": "Yesterday", - "days_ago": "1 day ago | {n} days ago", - "weeks_ago": "1 week ago | {n} weeks ago", - "months_ago": "1 month ago | {n} months ago", - "years_ago": "1 year ago | {n} years ago", - "in_minutes": "In {n} min", - "in_hours": "In 1 hour | In {n} hours", - "tomorrow": "Tomorrow", - "in_days": "In 1 day | In {n} days" - }, "home": "Home", - "page_link": "Page {page} ›", - "unknown": "Unknown", - "unavailable": "Unavailable", - "run": { - "scene": "Activate", - "script": "Run", - "press": "Press" - }, - "weather": { - "clear_night": "Clear, night", - "cloudy": "Cloudy", - "exceptional": "Exceptional", - "fog": "Fog", - "hail": "Hail", - "lightning": "Lightning", - "lightning_rainy": "Lightning, rainy", - "partlycloudy": "Partly cloudy", - "pouring": "Pouring", - "rainy": "Rainy", - "snowy": "Snowy", - "snowy_rainy": "Snowy, rainy", - "sunny": "Sunny", - "windy": "Windy", - "windy_variant": "Windy" - } + "unknown": "Unknown" } } } diff --git a/tests/test_header_bar.py b/tests/test_header_bar.py index c518f6e..1347c38 100644 --- a/tests/test_header_bar.py +++ b/tests/test_header_bar.py @@ -22,8 +22,6 @@ FIRMWARE = (ROOT / 'components/smart_display/header_bar.h').read_text() FIRMWARE += json.dumps(json.loads((ROOT / 'screen_manager/translations/en.json').read_text(encoding='utf-8'))['screen']['time']) TILES = (ROOT / 'components/smart_display/runtime_tiles.h').read_text() EDITOR = (ROOT / 'web/src/model/topbar.ts').read_text() -# The mockup's words, in the editor's part of the translations since app 0.2.90. -EDITOR_WORDS = json.loads((ROOT / 'screen_manager/translations/en.json').read_text(encoding='utf-8'))['editor']['mockup'] PROFILES = ('guition-4848s040.yaml', 'home-like-2432s028.yaml') def state(value, last_changed='2026-09-13T14:00:00+00:00', **attributes): @@ -209,7 +207,9 @@ class ParityTests(unittest.TestCase): for phrase in ('Just now', ' min ago', ' hour ago', ' hours ago', 'Yesterday', ' days ago', '1 week ago', ' weeks ago', '1 month ago', ' months ago', ' year ago', ' years ago', 'In ', 'Tomorrow'): self.assertIn(phrase, FIRMWARE) - self.assertIn(phrase, json.dumps(EDITOR_WORDS['time'])) + # The editor's mockup draws the screens' own words since app 0.2.90: screen.time and screen.date of the translations. + for key in ('screen.time.${key}', 'screen.date.top_bar', 'screen.date.weekdays_min.${now.getDay()}', 'screen.date.months_short.${now.getMonth()}'): + self.assertIn(key, EDITOR) for threshold in ('3600', '86400', '172800', '604800', '2592000', '31536000'): self.assertIn(threshold, FIRMWARE) self.assertIn(threshold, EDITOR) @@ -217,7 +217,8 @@ class ParityTests(unittest.TestCase): self.assertIn('Math.max(2, Math.floor((cap * 4 + 5) / 10)), item: Math.max(6, Math.floor((cap * 125 + 50) / 100)), name: Math.max(8, Math.floor((cap * 16 + 5) / 10))', EDITOR) self.assertIn('width * 35 / 100', FIRMWARE) self.assertIn('(metrics.width * 35) / 100', EDITOR) - self.assertEqual(header_bar.MONTHS, tuple(EDITOR_WORDS['date']['months_short'])) + english = json.loads((ROOT / 'screen_manager/translations/en.json').read_text(encoding='utf-8'))['screen'] + self.assertEqual(header_bar.MONTHS, tuple(english['date']['months_short'])) def test_profiles_draw_the_bar_from_the_runtime(self): for name in PROFILES: diff --git a/web/env.d.ts b/web/env.d.ts index fce272f..f3b56d7 100644 --- a/web/env.d.ts +++ b/web/env.d.ts @@ -4,3 +4,8 @@ declare module "*.vue" { const component: DefineComponent<{}, {}, any>; export default component; } +// Every language's _meta by its code, from screen_manager/translations (vite.config.ts, app 0.2.90). +declare module "virtual:esp-screens-languages" { + const languages: Record; + export default languages; +} diff --git a/web/package-lock.json b/web/package-lock.json index 9923978..ca859e2 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -12,6 +12,7 @@ "vue-i18n": "^11.4.12" }, "devDependencies": { + "@intlify/unplugin-vue-i18n": "^11.2.5", "@vitejs/plugin-vue": "^6.0.1", "@vue/test-utils": "^2.5.1", "jsdom": "^26.1.0", @@ -81,6 +82,32 @@ "node": ">=6.9.0" } }, + "node_modules/@cacheable/memory": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.2.0.tgz", + "integrity": "sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cacheable/utils": "^2.5.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", @@ -638,6 +665,690 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz", + "integrity": "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@intlify/bundle-utils": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-11.2.5.tgz", + "integrity": "sha512-gl7CGygRALtuT4H8n/PNC0hubg4rnctPoT04//GZNsTemvJw0Q7i6jSaq0PZHxnH0cdGqyowNXmW4FYILbahzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "~11.4.2", + "@intlify/shared": "~11.4.2", + "acorn": "^8.8.2", + "esbuild": "^0.25.4", + "escodegen": "^2.1.0", + "estree-walker": "^2.0.2", + "jsonc-eslint-parser": "^2.3.0", + "source-map-js": "^1.2.1", + "yaml-eslint-parser": "^1.2.2" + }, + "engines": { + "node": ">= 22.13" + }, + "peerDependenciesMeta": { + "petite-vue-i18n": { + "optional": true + }, + "vue-i18n": { + "optional": true + } + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@intlify/bundle-utils/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, "node_modules/@intlify/core-base": { "version": "11.4.12", "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.4.12.tgz", @@ -699,12 +1410,228 @@ "url": "https://github.com/sponsors/kazupon" } }, + "node_modules/@intlify/unplugin-vue-i18n": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-11.2.5.tgz", + "integrity": "sha512-wLpS0cZTNAzaNL/STjjwSFhLunuoARKzEJh7jM/G00A40cVH+GEPhdo/WsvnesPvQVoN6JfjI/mGXwDNnTbvhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@intlify/bundle-utils": "11.2.5", + "@intlify/shared": "~11.4.2", + "@intlify/vue-i18n-extensions": "^8.0.0", + "@rollup/pluginutils": "^5.1.0", + "@typescript-eslint/scope-manager": "^8.13.0", + "@typescript-eslint/typescript-estree": "^8.13.0", + "debug": "^4.3.3", + "fast-glob": "^3.2.12", + "pathe": "^2.0.3", + "picocolors": "^1.0.0", + "unplugin": "^2.3.4", + "vue": "~3.5.34" + }, + "engines": { + "node": ">= 22.13" + }, + "peerDependencies": { + "petite-vue-i18n": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "vue": "^3.2.25", + "vue-i18n": "*" + }, + "peerDependenciesMeta": { + "petite-vue-i18n": { + "optional": true + }, + "vite": { + "optional": true + }, + "vue-i18n": { + "optional": true + } + } + }, + "node_modules/@intlify/vue-i18n-extensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-8.0.0.tgz", + "integrity": "sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.24.6", + "@intlify/shared": "^10.0.0", + "@vue/compiler-dom": "^3.2.45", + "vue-i18n": "^10.0.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@intlify/shared": "^9.0.0 || ^10.0.0 || ^11.0.0", + "@vue/compiler-dom": "^3.0.0", + "vue": "^3.0.0", + "vue-i18n": "^9.0.0 || ^10.0.0 || ^11.0.0" + }, + "peerDependenciesMeta": { + "@intlify/shared": { + "optional": true + }, + "@vue/compiler-dom": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-i18n": { + "optional": true + } + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/core-base": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.8.tgz", + "integrity": "sha512-FoHslNWSoHjdUBLy35bpm9PV/0LVI/DSv9L6Km6J2ad8r/mm0VaGg06C40FqlE8u2ADcGUM60lyoU7Myo4WNZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "10.0.8", + "@intlify/shared": "10.0.8" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/message-compiler": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.8.tgz", + "integrity": "sha512-DV+sYXIkHVd5yVb2mL7br/NEUwzUoLBsMkV3H0InefWgmYa34NLZUvMCGi5oWX+Hqr2Y2qUxnVrnOWF4aBlgWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/shared": "10.0.8", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/shared": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.8.tgz", + "integrity": "sha512-BcmHpb5bQyeVNrptC3UhzpBZB/YHHDoEREOUERrmF2BRxsyOEuRrq+Z96C/D4+2KJb8kuHiouzAei7BXlG0YYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/vue-i18n": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.8.tgz", + "integrity": "sha512-mIjy4utxMz9lMMo6G9vYePv7gUFt4ztOMhY9/4czDJxZ26xPeJ49MAGa9wBAE3XuXbYCrtVPmPxNjej7JJJkZQ==", + "deprecated": "v9 and v10 no longer supported. please migrate to v11. about maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/core-base": "10.0.8", + "@intlify/shared": "10.0.8", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "license": "MIT" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@napi-rs/lzma-linux-x64-gnu": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", @@ -722,6 +1649,44 @@ "node": "^22.20 || ^24.12 || >=25" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@one-ini/wasm": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.2.1.tgz", @@ -736,6 +1701,29 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/pluginutils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.63.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.3.tgz", @@ -1104,6 +2092,14 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -1111,6 +2107,144 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.70.0.tgz", + "integrity": "sha512-hFHbTNqhU9G+2eKFXCBVb1tjFT/LceiJ4+HfLO4pTpDI0KHi6iajpcFFkaSQ9gXmCh7n82A0PthaayEdN6mspQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.70.0", + "@typescript-eslint/types": "^8.70.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.70.0.tgz", + "integrity": "sha512-8nP3Kwh5hlgZ4FicGvmznAmJe8UL4sdU8tLukrPaMuQmDuk4Y8xYfzu/aYZW4xT2JCgc7H/TpDI5cGlxcWJSqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.70.0.tgz", + "integrity": "sha512-adnkeeNq9Sq1sUf4+FRVc0KdgYghzsgFpZSQVZVvY0LCuUuN0FnQgyGzCJeC4fW1cdXseBAjU2EOqUIjbNcZUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.70.0.tgz", + "integrity": "sha512-asTOIYhDg4zdzOScCyaytrsV3cR6B4ecPQlXw/dJIm7J/MZTtCtfVII9JD8Geh4jTCrK/Xe6cg5UevoleMcoJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.70.0.tgz", + "integrity": "sha512-d9NmHMPEKQ7QCLLm1jI3zmoQBwT5KwFYjXBJ9ymZfKCUU+5rmTRykKAFvH5Qn/ZCds3CEAFS9OC9M/jkl0X2bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.70.0", + "@typescript-eslint/tsconfig-utils": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.70.0.tgz", + "integrity": "sha512-BoC8PiO4Hkdo0TVJh9Ntxr5MxPDI7/oFsrygN5ADelFSeXG/qgNuucIGA+L5Z6JpPTE/uRfcTWtscjbUaufepQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.70.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.9.tgz", @@ -1433,6 +2567,29 @@ "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", @@ -1443,6 +2600,24 @@ "node": ">= 14" } }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/alien-signals": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.2.1.tgz", @@ -1483,6 +2658,19 @@ "node": "20 || >=22" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1493,6 +2681,21 @@ "node": ">=8" } }, + "node_modules/cacheable": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.5.0.tgz", + "integrity": "sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cacheable/memory": "^2.2.0", + "@cacheable/utils": "^2.5.0", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.10.1" + } + }, "node_modules/chai": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", @@ -1541,6 +2744,22 @@ "proto-list": "~1.2.1" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -1610,6 +2829,14 @@ "node": ">=6" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/editorconfig": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-3.0.2.tgz", @@ -1690,12 +2917,250 @@ "@esbuild/win32-x64": "0.28.2" } }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.11.0.tgz", + "integrity": "sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==", + "dev": true, + "license": "MIT", + "peer": true, + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "11.1.5 || >11.1.6 <12", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expect-type": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", @@ -1706,6 +3171,70 @@ "node": ">=12.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -1724,6 +3253,69 @@ } } }, + "node_modules/file-entry-cache": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", + "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flat-cache": "^6.1.23" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "6.1.23", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", + "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cacheable": "^2.5.0", + "flatted": "^3.4.2", + "hookified": "^1.15.0" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC", + "peer": true + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1757,6 +3349,42 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", @@ -1811,6 +3439,28 @@ "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", @@ -1818,6 +3468,39 @@ "dev": true, "license": "ISC" }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -1825,6 +3508,14 @@ "dev": true, "license": "MIT" }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC", + "peer": true + }, "node_modules/js-beautify": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-2.0.3.tgz", @@ -1901,6 +3592,102 @@ } } }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.2.tgz", + "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/loupe": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", @@ -1924,6 +3711,43 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { "version": "10.2.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", @@ -1982,6 +3806,14 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/nopt": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-10.0.1.tgz", @@ -2005,6 +3837,59 @@ "dev": true, "license": "MIT" }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -2038,6 +3923,28 @@ "dev": true, "license": "MIT" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", @@ -2129,6 +4036,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -2146,6 +4064,60 @@ "node": ">=6" } }, + "node_modules/qified": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.10.1.tgz", + "integrity": "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.63.3", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.3.tgz", @@ -2199,6 +4171,30 @@ "dev": true, "license": "MIT" }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2232,6 +4228,31 @@ "node": ">=10" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -2239,6 +4260,17 @@ "dev": true, "license": "ISC" }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -2363,6 +4395,19 @@ "dev": true, "license": "MIT" }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tough-cookie": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", @@ -2389,6 +4434,33 @@ "node": ">=18" } }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -2403,6 +4475,33 @@ "node": ">=14.17" } }, + "node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/vite": { "version": "7.3.6", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", @@ -2670,6 +4769,13 @@ "node": ">=12" } }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -2708,6 +4814,23 @@ "node": ">=18" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -2725,6 +4848,17 @@ "node": ">=8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ws": { "version": "8.21.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", @@ -2763,6 +4897,53 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yaml-eslint-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.3.2.tgz", + "integrity": "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.0.0", + "yaml": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/web/package.json b/web/package.json index b11bfa0..f023566 100644 --- a/web/package.json +++ b/web/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "devEngines": { - "runtime": { "name": "node", "version": "^20.19.0 || >=22.12.0", "onFail": "error" } + "runtime": { "name": "node", "version": ">=22.13.0", "onFail": "error" } }, "scripts": { "dev": "vite", @@ -19,6 +19,7 @@ "vue-i18n": "^11.4.12" }, "devDependencies": { + "@intlify/unplugin-vue-i18n": "^11.2.5", "@vitejs/plugin-vue": "^6.0.1", "@vue/test-utils": "^2.5.1", "jsdom": "^26.1.0", diff --git a/web/src/components/AppSettingsView.vue b/web/src/components/AppSettingsView.vue index c9bde5f..ce7aeac 100644 --- a/web/src/components/AppSettingsView.vue +++ b/web/src/components/AppSettingsView.vue @@ -1,8 +1,8 @@