{"version":3,"file":"registry.cjs","sources":["../../../src/themes/registry.ts"],"sourcesContent":["import { Registry, RegistryItem } from '../utils/Registry';\n\nimport { createTheme, NewThemeOptionsSchema } from './createTheme';\nimport aubergine from './themeDefinitions/aubergine.json';\nimport debug from './themeDefinitions/debug.json';\nimport desertbloom from './themeDefinitions/desertbloom.json';\nimport gildedgrove from './themeDefinitions/gildedgrove.json';\nimport gloom from './themeDefinitions/gloom.json';\nimport mars from './themeDefinitions/mars.json';\nimport matrix from './themeDefinitions/matrix.json';\nimport sapphiredusk from './themeDefinitions/sapphiredusk.json';\nimport synthwave from './themeDefinitions/synthwave.json';\nimport tron from './themeDefinitions/tron.json';\nimport victorian from './themeDefinitions/victorian.json';\nimport zen from './themeDefinitions/zen.json';\nimport { GrafanaTheme2 } from './types';\n\nexport interface ThemeRegistryItem extends RegistryItem {\n  isExtra?: boolean;\n  build: () => GrafanaTheme2;\n}\n\nconst extraThemes: { [key: string]: unknown } = {\n  aubergine,\n  debug,\n  desertbloom,\n  gildedgrove,\n  gloom,\n  mars,\n  matrix,\n  sapphiredusk,\n  synthwave,\n  tron,\n  victorian,\n  zen,\n};\n\n/**\n * @internal\n * Only for internal use, never use this from a plugin\n **/\nexport function getThemeById(id: string): GrafanaTheme2 {\n  const theme = themeRegistry.getIfExists(id) ?? themeRegistry.get('dark');\n  return theme.build();\n}\n\n/**\n * @internal\n * For internal use only\n */\nexport function getBuiltInThemes(allowedExtras: string[]) {\n  const themes = themeRegistry.list().filter((item) => {\n    if (item.isExtra) {\n      return allowedExtras.includes(item.id);\n    }\n    return true;\n  });\n  // sort themes alphabetically, but put built-in themes (default, dark, light, system) first\n  const sortedThemes = themes.sort((a, b) => {\n    if (a.isExtra && !b.isExtra) {\n      return 1;\n    } else if (!a.isExtra && b.isExtra) {\n      return -1;\n    } else {\n      return a.name.localeCompare(b.name);\n    }\n  });\n  return sortedThemes;\n}\n\nconst themeRegistry = new Registry<ThemeRegistryItem>(() => {\n  return [\n    { id: 'system', name: 'System preference', build: getSystemPreferenceTheme },\n    { id: 'dark', name: 'Dark', build: () => createTheme({ colors: { mode: 'dark' } }) },\n    { id: 'light', name: 'Light', build: () => createTheme({ colors: { mode: 'light' } }) },\n  ];\n});\n\nfor (const [name, json] of Object.entries(extraThemes)) {\n  const result = NewThemeOptionsSchema.safeParse(json);\n  if (!result.success) {\n    console.error(`Invalid theme definition for theme ${name}: ${result.error.message}`);\n  } else {\n    const theme = result.data;\n    themeRegistry.register({\n      id: theme.id,\n      name: theme.name,\n      build: () => createTheme(theme),\n      isExtra: true,\n    });\n  }\n}\n\nfunction getSystemPreferenceTheme() {\n  const mediaResult = window.matchMedia('(prefers-color-scheme: dark)');\n  const id = mediaResult.matches ? 'dark' : 'light';\n  return getThemeById(id);\n}\n"],"names":["aubergine","debug","desertbloom","gildedgrove","gloom","mars","matrix","sapphiredusk","synthwave","tron","victorian","zen","Registry","createTheme","NewThemeOptionsSchema"],"mappings":"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"}