{
  "version": 3,
  "sources": ["../../../static/ui/js/theme-init.js"],
  "sourcesContent": ["/* Theme boot. Loaded blocking in <head> (a few hundred bytes) so the first\n   paint already has the right theme. Order (contract C-GLOBAL-CTX):\n     1. <html data-theme-pref=\"light|dark\">  (server-side user preference)\n     2. localStorage \"adss-theme\"            (device choice, no account preference)\n     3. prefers-color-scheme                 (OS)\n   The emergency layout sets data-theme=\"emergency\"; that is always dark.\n   window.hooshparTheme is reused by app.js for the toggle. */\n(function () {\n  var KEY = 'adss-theme';\n  var root = document.documentElement;\n  var mql = window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n\n  function stored() {\n    try { return localStorage.getItem(KEY); } catch (e) { return null; }\n  }\n\n  /* 'light' | 'dark' | 'system' \u2014 what the user asked for. */\n  function preference() {\n    var server = root.getAttribute('data-theme-pref');\n    if (server === 'light' || server === 'dark') return server;\n    var local = stored();\n    if (local === 'light' || local === 'dark') return local;\n    return 'system';\n  }\n\n  /* The theme actually painted. */\n  function resolve(pref) {\n    if (root.getAttribute('data-theme') === 'emergency') return 'dark';\n    if (pref === 'light' || pref === 'dark') return pref;\n    return mql && mql.matches ? 'dark' : 'light';\n  }\n\n  function paint(pref) {\n    var theme = resolve(pref);\n    root.classList.remove('light', 'dark');\n    root.classList.add(theme);\n    if (root.getAttribute('data-theme') !== 'emergency') root.setAttribute('data-theme', theme);\n    return theme;\n  }\n\n  /* Store a device choice ('system' clears it) and repaint. */\n  function set(pref) {\n    try {\n      if (pref === 'light' || pref === 'dark') localStorage.setItem(KEY, pref);\n      else localStorage.removeItem(KEY);\n    } catch (e) { /* private mode: keep going, the paint still applies */ }\n    var theme = paint(pref);\n    root.dispatchEvent(new CustomEvent('theme:changed', { bubbles: true, detail: { preference: pref, theme: theme } }));\n    return theme;\n  }\n\n  window.hooshparTheme = { key: KEY, preference: preference, resolve: resolve, set: set, paint: paint };\n  paint(preference());\n  if (mql && mql.addEventListener) {\n    mql.addEventListener('change', function () { if (preference() === 'system') paint('system'); });\n  }\n})();\n"],
  "mappings": "CAOC,UAAY,CACX,IAAIA,EAAM,aACNC,EAAO,SAAS,gBAChBC,EAAM,OAAO,WAAa,OAAO,WAAW,8BAA8B,EAAI,KAElF,SAASC,GAAS,CAChB,GAAI,CAAE,OAAO,aAAa,QAAQH,CAAG,CAAG,MAAY,CAAE,OAAO,IAAM,CACrE,CAGA,SAASI,GAAa,CACpB,IAAIC,EAASJ,EAAK,aAAa,iBAAiB,EAChD,GAAII,IAAW,SAAWA,IAAW,OAAQ,OAAOA,EACpD,IAAIC,EAAQH,EAAO,EACnB,OAAIG,IAAU,SAAWA,IAAU,OAAeA,EAC3C,QACT,CAGA,SAASC,EAAQC,EAAM,CACrB,OAAIP,EAAK,aAAa,YAAY,IAAM,YAAoB,OACxDO,IAAS,SAAWA,IAAS,OAAeA,EACzCN,GAAOA,EAAI,QAAU,OAAS,OACvC,CAEA,SAASO,EAAMD,EAAM,CACnB,IAAIE,EAAQH,EAAQC,CAAI,EACxB,OAAAP,EAAK,UAAU,OAAO,QAAS,MAAM,EACrCA,EAAK,UAAU,IAAIS,CAAK,EACpBT,EAAK,aAAa,YAAY,IAAM,aAAaA,EAAK,aAAa,aAAcS,CAAK,EACnFA,CACT,CAGA,SAASC,EAAIH,EAAM,CACjB,GAAI,CACEA,IAAS,SAAWA,IAAS,OAAQ,aAAa,QAAQR,EAAKQ,CAAI,EAClE,aAAa,WAAWR,CAAG,CAClC,MAAY,CAA0D,CACtE,IAAIU,EAAQD,EAAMD,CAAI,EACtB,OAAAP,EAAK,cAAc,IAAI,YAAY,gBAAiB,CAAE,QAAS,GAAM,OAAQ,CAAE,WAAYO,EAAM,MAAOE,CAAM,CAAE,CAAC,CAAC,EAC3GA,CACT,CAEA,OAAO,cAAgB,CAAE,IAAKV,EAAK,WAAYI,EAAY,QAASG,EAAS,IAAKI,EAAK,MAAOF,CAAM,EACpGA,EAAML,EAAW,CAAC,EACdF,GAAOA,EAAI,kBACbA,EAAI,iBAAiB,SAAU,UAAY,CAAME,EAAW,IAAM,UAAUK,EAAM,QAAQ,CAAG,CAAC,CAElG,GAAG",
  "names": ["KEY", "root", "mql", "stored", "preference", "server", "local", "resolve", "pref", "paint", "theme", "set"]
}
