{"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","_objectSpread","isDisabled","_i","_Object$entries","Object","entries","_options$themes","_defaultThemeOptions$","_defaultThemeOptions$2","_Object$entries$_i","_slicedToArray","key","createTheme","parsedOptions","name","computedThemes","acc","_i2","_Object$entries2","value","_Object$entries2$_i","original","_iterator","_createForOfIteratorHelper","_step","s","n","done","color","_iterator2","_step2","variation","fn","_iterator3","_step3","amount","concat","err","e","f","_i3","_Object$keys","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","_i4","_Object$entries3","_Object$entries3$_i","themeName","_toConsumableArray","bgLines","fgLines","Set","values","flatMap","_iterator4","_step4","push","apply","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","updateStyles","document","styleEl","el","createElement","type","setAttribute","appendChild","innerHTML","getElementById","immediate","themeClasses","global","provideTheme","props","Error","_props$theme","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","_i5","_Object$entries4","_Object$entries4$_i","rgb","r","g","b","startsWith","_i6","_Object$entries5","_Object$entries5$_i"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n  computed,\n  inject,\n  provide,\n  reactive,\n  ref,\n  watch,\n  watchEffect,\n} from 'vue'\nimport {\n  createRange,\n  darken,\n  getCurrentInstance,\n  getLuma,\n  IN_BROWSER,\n  lighten,\n  mergeDeep,\n  parseColor,\n  propsFactory,\n  RGBtoHex,\n} from '@/utils'\nimport { APCAcontrast } from '@/utils/color/APCA'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object\n  ? { [P in keyof T]?: DeepPartial<T[P]> }\n  : T\n\nexport type ThemeOptions =\n  | false\n  | {\n      cspNonce?: string\n      defaultTheme?: string\n      variations?: false | VariationsOptions\n      themes?: Record<string, ThemeDefinition>\n    }\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n  cspNonce?: string\n  isDisabled: boolean\n  defaultTheme: string\n  variations: false | VariationsOptions\n  themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n  colors: string[]\n  lighten: number\n  darken: number\n}\n\ninterface InternalThemeDefinition {\n  dark: boolean\n  colors: Colors\n  variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n  [key: string]: string\n}\n\ninterface BaseColors {\n  background: string\n  surface: string\n  primary: string\n  secondary: string\n  success: string\n  warning: string\n  error: string\n  info: string\n}\n\ninterface OnColors {\n  'on-background': string\n  'on-surface': string\n  'on-primary': string\n  'on-secondary': string\n  'on-success': string\n  'on-warning': string\n  'on-error': string\n  'on-info': string\n}\n\nexport interface ThemeInstance {\n  readonly isDisabled: boolean\n  readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n  readonly name: Readonly<Ref<string>>\n  readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n  readonly computedThemes: DeepReadonly<\n    Ref<Record<string, InternalThemeDefinition>>\n  >\n\n  readonly themeClasses: Readonly<Ref<string | undefined>>\n  readonly styles: Readonly<Ref<string>>\n\n  readonly global: {\n    readonly name: Ref<string>\n    readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n  }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> =\n  Symbol.for('untitled:theme')\n\nexport const makeThemeProps = propsFactory(\n  {\n    theme: String,\n  },\n  'theme'\n)\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n  defaultTheme: 'light',\n  variations: { colors: [], lighten: 0, darken: 0 },\n  themes: {\n    light: {\n      dark: false,\n      colors: {\n        background: '#FFFFFF',\n        surface: '#FFFFFF',\n        'surface-variant': '#424242',\n        'on-surface-variant': '#EEEEEE',\n        primary: '#6200EE',\n        'primary-darken-1': '#3700B3',\n        secondary: '#03DAC6',\n        'secondary-darken-1': '#018786',\n        error: '#B00020',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00',\n      },\n      variables: {\n        'border-color': '#000000',\n        'border-opacity': 0.12,\n        'high-emphasis-opacity': 0.87,\n        'medium-emphasis-opacity': 0.6,\n        'disabled-opacity': 0.38,\n        'idle-opacity': 0.04,\n        'hover-opacity': 0.04,\n        'focus-opacity': 0.12,\n        'selected-opacity': 0.08,\n        'activated-opacity': 0.12,\n        'pressed-opacity': 0.12,\n        'dragged-opacity': 0.08,\n        'theme-kbd': '#212529',\n        'theme-on-kbd': '#FFFFFF',\n        'theme-code': '#F5F5F5',\n        'theme-on-code': '#000000',\n      },\n    },\n    dark: {\n      dark: true,\n      colors: {\n        background: '#121212',\n        surface: '#212121',\n        'surface-variant': '#BDBDBD',\n        'on-surface-variant': '#424242',\n        primary: '#BB86FC',\n        'primary-darken-1': '#3700B3',\n        secondary: '#03DAC5',\n        'secondary-darken-1': '#03DAC5',\n        error: '#CF6679',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00',\n      },\n      variables: {\n        'border-color': '#FFFFFF',\n        'border-opacity': 0.12,\n        'high-emphasis-opacity': 1,\n        'medium-emphasis-opacity': 0.7,\n        'disabled-opacity': 0.5,\n        'idle-opacity': 0.1,\n        'hover-opacity': 0.04,\n        'focus-opacity': 0.12,\n        'selected-opacity': 0.08,\n        'activated-opacity': 0.12,\n        'pressed-opacity': 0.16,\n        'dragged-opacity': 0.08,\n        'theme-kbd': '#212529',\n        'theme-on-kbd': '#FFFFFF',\n        'theme-code': '#343434',\n        'theme-on-code': '#CCCCCC',\n      },\n    },\n  },\n}\n\nfunction parseThemeOptions(\n  options: ThemeOptions = defaultThemeOptions\n): InternalThemeOptions {\n  if (!options)\n    return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n  const themes: Record<string, InternalThemeDefinition> = {}\n  for (const [key, theme] of Object.entries(options.themes ?? {})) {\n    const defaultTheme =\n      theme.dark || key === 'dark'\n        ? defaultThemeOptions.themes?.dark\n        : defaultThemeOptions.themes?.light\n    themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n  }\n\n  return mergeDeep(defaultThemeOptions, {\n    ...options,\n    themes,\n  }) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme(\n  options?: ThemeOptions\n): ThemeInstance & { install: (app: App) => void } {\n  const parsedOptions = reactive(parseThemeOptions(options))\n  const name = ref(parsedOptions.defaultTheme)\n  const themes = ref(parsedOptions.themes)\n\n  const computedThemes = computed(() => {\n    const acc: Record<string, InternalThemeDefinition> = {}\n    for (const [name, original] of Object.entries(themes.value)) {\n      const theme: InternalThemeDefinition = (acc[name] = {\n        ...original,\n        colors: {\n          ...original.colors,\n        },\n      })\n\n      if (parsedOptions.variations) {\n        for (const name of parsedOptions.variations.colors) {\n          const color = theme.colors[name]\n\n          if (!color) continue\n\n          for (const variation of ['lighten', 'darken'] as const) {\n            const fn = variation === 'lighten' ? lighten : darken\n            for (const amount of createRange(\n              parsedOptions.variations[variation],\n              1\n            )) {\n              theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(\n                fn(parseColor(color), amount)\n              )\n            }\n          }\n        }\n      }\n\n      for (const color of Object.keys(theme.colors)) {\n        if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n        const onColor = `on-${color}` as keyof OnColors\n        const colorVal = parseColor(theme.colors[color]!)\n\n        const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n        const whiteContrast = Math.abs(\n          APCAcontrast(parseColor(0xffffff), colorVal)\n        )\n\n        // TODO: warn about poor color selections\n        // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n        // const minContrast = Math.max(blackContrast, whiteContrast)\n        // if (minContrast < 60) {\n        //   consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n        // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n        //   consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n        // }\n\n        // Prefer white text if both have an acceptable contrast ratio\n        theme.colors[onColor] =\n          whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n      }\n    }\n\n    return acc\n  })\n  const current = computed(() => computedThemes.value[name.value])\n\n  const styles = computed(() => {\n    const lines: string[] = []\n\n    if (current.value.dark) {\n      createCssClass(lines, ':root', ['color-scheme: dark'])\n    }\n\n    createCssClass(lines, ':root', genCssVariables(current.value))\n\n    for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n      createCssClass(lines, `.v-theme--${themeName}`, [\n        `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n        ...genCssVariables(theme),\n      ])\n    }\n\n    const bgLines: string[] = []\n    const fgLines: string[] = []\n\n    const colors = new Set(\n      Object.values(computedThemes.value).flatMap((theme) =>\n        Object.keys(theme.colors)\n      )\n    )\n    for (const key of colors) {\n      if (/^on-[a-z]/.test(key)) {\n        createCssClass(fgLines, `.${key}`, [\n          `color: rgb(var(--v-theme-${key})) !important`,\n        ])\n      } else {\n        createCssClass(bgLines, `.bg-${key}`, [\n          `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n          `background-color: rgb(var(--v-theme-${key})) !important`,\n          `color: rgb(var(--v-theme-on-${key})) !important`,\n        ])\n        createCssClass(fgLines, `.text-${key}`, [\n          `color: rgb(var(--v-theme-${key})) !important`,\n        ])\n        createCssClass(fgLines, `.border-${key}`, [\n          `--v-border-color: var(--v-theme-${key})`,\n        ])\n      }\n    }\n\n    lines.push(...bgLines, ...fgLines)\n\n    return lines.map((str, i) => (i === 0 ? str : `    ${str}`)).join('')\n  })\n\n  function getHead() {\n    return {\n      style: [\n        {\n          children: styles.value,\n          id: 'untitled-theme-stylesheet',\n          nonce: parsedOptions.cspNonce || (false as never),\n        },\n      ],\n    }\n  }\n\n  function install(app: App) {\n    if (parsedOptions.isDisabled) return\n\n    const head = app._context.provides.usehead as HeadClient | undefined\n    if (head) {\n      if (head.push) {\n        const entry = head.push(getHead)\n        watch(styles, () => {\n          entry.patch(getHead)\n        })\n      } else {\n        if (IN_BROWSER) {\n          head.addHeadObjs(computed(getHead))\n          watchEffect(() => head.updateDOM())\n        } else {\n          head.addHeadObjs(getHead())\n        }\n      }\n    } else {\n      let styleEl = IN_BROWSER\n        ? document.getElementById('untitled-theme-stylesheet')\n        : null\n\n      watch(styles, updateStyles, { immediate: true })\n\n      function updateStyles() {\n        if (typeof document !== 'undefined' && !styleEl) {\n          const el = document.createElement('style')\n          el.type = 'text/css'\n          el.id = 'untitled-theme-stylesheet'\n          if (parsedOptions.cspNonce)\n            el.setAttribute('nonce', parsedOptions.cspNonce)\n\n          styleEl = el\n          document.head.appendChild(styleEl)\n        }\n\n        if (styleEl) styleEl.innerHTML = styles.value\n      }\n    }\n  }\n\n  const themeClasses = computed(() =>\n    parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`\n  )\n\n  return {\n    install,\n    isDisabled: parsedOptions.isDisabled,\n    name,\n    themes,\n    current,\n    computedThemes,\n    themeClasses,\n    styles,\n    global: {\n      name,\n      current,\n    },\n  }\n}\n\nexport function provideTheme(props: { theme?: string }) {\n  getCurrentInstance('provideTheme')\n\n  const theme = inject(ThemeSymbol, null)\n\n  if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n  const name = computed<string>(() => {\n    return props.theme ?? theme?.name.value\n  })\n\n  const themeClasses = computed(() =>\n    theme.isDisabled ? undefined : `v-theme--${name.value}`\n  )\n\n  const newTheme: ThemeInstance = {\n    ...theme,\n    name,\n    themeClasses,\n  }\n\n  provide(ThemeSymbol, newTheme)\n\n  return newTheme\n}\n\nexport function useTheme() {\n  getCurrentInstance('useTheme')\n\n  const theme = inject(ThemeSymbol, null)\n\n  if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n  return theme\n}\n\nfunction createCssClass(lines: string[], selector: string, content: string[]) {\n  lines.push(`${selector} {\\n`, ...content.map((line) => `  ${line};\\n`), '}\\n')\n}\n\nfunction genCssVariables(theme: InternalThemeDefinition) {\n  const lightOverlay = theme.dark ? 2 : 1\n  const darkOverlay = theme.dark ? 1 : 2\n\n  const variables: string[] = []\n  for (const [key, value] of Object.entries(theme.colors)) {\n    const rgb = parseColor(value)\n    variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n    if (!key.startsWith('on-')) {\n      variables.push(\n        `--v-theme-${key}-overlay-multiplier: ${\n          getLuma(value) > 0.18 ? lightOverlay : darkOverlay\n        }`\n      )\n    }\n  }\n\n  for (const [key, value] of Object.entries(theme.variables)) {\n    const color =\n      typeof value === 'string' && value.startsWith('#')\n        ? parseColor(value)\n        : undefined\n    const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n    variables.push(`--v-${key}: ${rgb ?? value}`)\n  }\n\n  return variables\n}\n"],"mappings":"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"}