@pstdio/ui 0.40.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/{MermaidComponent-81jr28u4.js → MermaidComponent-D7vhkpka.js} +3 -3
  2. package/dist/{MermaidComponent-81jr28u4.js.map → MermaidComponent-D7vhkpka.js.map} +1 -1
  3. package/dist/alert-MQ47wy7f.js +388 -0
  4. package/dist/alert-MQ47wy7f.js.map +1 -0
  5. package/dist/chat-ui.d.ts +129 -23
  6. package/dist/chat-ui.js +2596 -1591
  7. package/dist/chat-ui.js.map +1 -1
  8. package/dist/{types-DWA3enV6.d.ts → collection-view-fields-D3cysHNT.d.ts} +87 -37
  9. package/dist/collection-view-grouping-D4nZk8-3.js +90 -0
  10. package/dist/collection-view-grouping-D4nZk8-3.js.map +1 -0
  11. package/dist/collection-view-search-CpjJy76w.js +1973 -0
  12. package/dist/collection-view-search-CpjJy76w.js.map +1 -0
  13. package/dist/collection-view.d.ts +4 -0
  14. package/dist/collection-view.js +2 -0
  15. package/dist/{data-table-stats-row-CpRe_xK2.js → data-table-stats-row-64magT2g.js} +2 -2
  16. package/dist/{data-table-stats-row-CpRe_xK2.js.map → data-table-stats-row-64magT2g.js.map} +1 -1
  17. package/dist/data-table.d.ts +29 -7
  18. package/dist/data-table.js +1043 -878
  19. package/dist/data-table.js.map +1 -1
  20. package/dist/diff-bubble-DewUd_2w.js +61 -0
  21. package/dist/diff-bubble-DewUd_2w.js.map +1 -0
  22. package/dist/{diff-drawer-45rpk3aq.js → diff-drawer-IYpQ-QQK.js} +264 -242
  23. package/dist/diff-drawer-IYpQ-QQK.js.map +1 -0
  24. package/dist/diff-viewer-C-0VAt9P.js +574 -0
  25. package/dist/diff-viewer-C-0VAt9P.js.map +1 -0
  26. package/dist/diff.d.ts +11 -0
  27. package/dist/diff.js +107 -98
  28. package/dist/diff.js.map +1 -1
  29. package/dist/display-sort-control-f3rbILsV.js +588 -0
  30. package/dist/display-sort-control-f3rbILsV.js.map +1 -0
  31. package/dist/drop-indicator-HjlBSIeV.js +27 -0
  32. package/dist/drop-indicator-HjlBSIeV.js.map +1 -0
  33. package/dist/edit-mode-data-table-DnMB2jiy.js +1449 -0
  34. package/dist/edit-mode-data-table-DnMB2jiy.js.map +1 -0
  35. package/dist/host-storage-BIo5azql.js +31 -0
  36. package/dist/host-storage-BIo5azql.js.map +1 -0
  37. package/dist/host-storage-J0089Hyk.d.ts +17 -0
  38. package/dist/{slider-hwHYe98I.js → icon-options-Tt6Wzhtv.js} +86 -201
  39. package/dist/icon-options-Tt6Wzhtv.js.map +1 -0
  40. package/dist/{index-Bfddrlz8.d.ts → index-B79hwNcB.d.ts} +66 -14
  41. package/dist/index-CKsd23jv.d.ts +80 -0
  42. package/dist/{index-CbtbcvKm.d.ts → index-DlmvvQ6x.d.ts} +1 -1
  43. package/dist/index-ICoad2I_.d.ts +282 -0
  44. package/dist/index.d.ts +63 -22
  45. package/dist/index.js +1149 -1054
  46. package/dist/index.js.map +1 -1
  47. package/dist/kanban-renderer.d.ts +3 -326
  48. package/dist/kanban-renderer.js +980 -596
  49. package/dist/kanban-renderer.js.map +1 -1
  50. package/dist/list-row-Z4SHkseA.js +1195 -0
  51. package/dist/list-row-Z4SHkseA.js.map +1 -0
  52. package/dist/markdown-editor-Dd4mor7l.js +3236 -0
  53. package/dist/markdown-editor-Dd4mor7l.js.map +1 -0
  54. package/dist/{mermaid-renderer-DImi0fDp.js → mermaid-renderer-0PmNkOXI.js} +29 -29
  55. package/dist/mermaid-renderer-0PmNkOXI.js.map +1 -0
  56. package/dist/mermaid.js +1 -1
  57. package/dist/number-input-7K66wnSC.js +63 -0
  58. package/dist/number-input-7K66wnSC.js.map +1 -0
  59. package/dist/{param-editor-BQd4AOUP.js → param-editor-Dnix-fJo.js} +2 -2
  60. package/dist/{param-editor-BQd4AOUP.js.map → param-editor-Dnix-fJo.js.map} +1 -1
  61. package/dist/{param-editor-field-BJ_rLUnV.js → param-editor-field-B3vLST-B.js} +1436 -1427
  62. package/dist/param-editor-field-B3vLST-B.js.map +1 -0
  63. package/dist/param-editor.js +4 -3
  64. package/dist/prism-OG4H7Hu4.js +334 -0
  65. package/dist/prism-OG4H7Hu4.js.map +1 -0
  66. package/dist/queued-follow-up-Bj_vtMgd.js +208 -0
  67. package/dist/queued-follow-up-Bj_vtMgd.js.map +1 -0
  68. package/dist/{resource-badge-95WPVlZf.d.ts → resource-badge-nOWPqxFU.d.ts} +1 -0
  69. package/dist/rich-text-BgEnAHr2.js +1160 -0
  70. package/dist/rich-text-BgEnAHr2.js.map +1 -0
  71. package/dist/rich-text.d.ts +2 -2
  72. package/dist/rich-text.js +4 -2
  73. package/dist/style.css +1 -1
  74. package/dist/terminal.d.ts +5 -63
  75. package/dist/terminal.js +102 -122
  76. package/dist/terminal.js.map +1 -1
  77. package/dist/{theme-CbmSEbRF.js → theme-CMJdH59Z.js} +589 -265
  78. package/dist/theme-CMJdH59Z.js.map +1 -0
  79. package/dist/theme-kKuLN2jb.js +80 -0
  80. package/dist/theme-kKuLN2jb.js.map +1 -0
  81. package/dist/theme-preference-BV4cbJNB.js +115 -0
  82. package/dist/theme-preference-BV4cbJNB.js.map +1 -0
  83. package/dist/theme.js +3 -2
  84. package/dist/tree-list-jarhD31R.js +1652 -0
  85. package/dist/tree-list-jarhD31R.js.map +1 -0
  86. package/dist/use-virtualizer-uj43XjBp.js +10 -0
  87. package/dist/use-virtualizer-uj43XjBp.js.map +1 -0
  88. package/dist/{workspace-badge-Brm3Xr3m.d.ts → workspace-badge-BKtB805G.d.ts} +5 -1
  89. package/package.json +8 -4
  90. package/dist/diff-bubble-DZsarmSG.js +0 -61
  91. package/dist/diff-bubble-DZsarmSG.js.map +0 -1
  92. package/dist/diff-drawer-45rpk3aq.js.map +0 -1
  93. package/dist/diff-viewer-BP_mI6Wx.js +0 -558
  94. package/dist/diff-viewer-BP_mI6Wx.js.map +0 -1
  95. package/dist/list-row-uqD-q4gv.js +0 -1018
  96. package/dist/list-row-uqD-q4gv.js.map +0 -1
  97. package/dist/mermaid-renderer-DImi0fDp.js.map +0 -1
  98. package/dist/param-editor-field-BJ_rLUnV.js.map +0 -1
  99. package/dist/prism-BStPsJSB.js +0 -658
  100. package/dist/prism-BStPsJSB.js.map +0 -1
  101. package/dist/rich-text-VYAmEigU.js +0 -6979
  102. package/dist/rich-text-VYAmEigU.js.map +0 -1
  103. package/dist/slider-hwHYe98I.js.map +0 -1
  104. package/dist/theme-CbmSEbRF.js.map +0 -1
  105. package/dist/theme-preference-pzfuK5cH.js +0 -101
  106. package/dist/theme-preference-pzfuK5cH.js.map +0 -1
  107. package/dist/tree-list-BNZwjQZA.js +0 -1616
  108. package/dist/tree-list-BNZwjQZA.js.map +0 -1
@@ -1,101 +0,0 @@
1
- import { t as e } from "./browser-storage-C_ipoNwP.js";
2
- import { c as t } from "react/compiler-runtime";
3
- import { jsx as n } from "react/jsx-runtime";
4
- import { createContext as r, useContext as i, useEffect as a, useState as o } from "react";
5
- //#region src/utils/apply-theme-preference.ts
6
- var s = [{
7
- id: "pstdio-light",
8
- mode: "light"
9
- }, {
10
- id: "pstdio-dark",
11
- mode: "dark"
12
- }], c = (e, t = s) => typeof e == "string" && t.some((t) => t.id === e), l = (e, t = s) => t.find((t) => t.id === e)?.mode ?? "light", u = (e) => `theme-${e}`, d = (e, t = l(e)) => [t, u(e)], f = "data-pstdio-theme-token-paths", p = (e) => `--chakra-${e.replaceAll(".", "-")}`, m = (e, t) => {
13
- if (t?.tokens) for (let n of Object.keys(t.tokens)) e.style.removeProperty(p(n));
14
- }, h = (e) => {
15
- let t = e.getAttribute(f)?.split("\n").filter(Boolean) ?? [];
16
- for (let n of t) e.style.removeProperty(p(n));
17
- e.setAttribute(f, "");
18
- }, g = (e, t) => {
19
- if (!t.tokens) {
20
- e.setAttribute(f, "");
21
- return;
22
- }
23
- for (let [n, r] of Object.entries(t.tokens)) e.style.setProperty(p(n), r);
24
- e.setAttribute(f, Object.keys(t.tokens).join("\n"));
25
- }, _ = (e, t = s) => {
26
- if (typeof document > "u") return;
27
- let n = document.documentElement, r = document.body, i = t.find((t) => t.id === e) ?? {
28
- id: e,
29
- mode: "light"
30
- }, a = l(e, t);
31
- for (let o of [n, r]) {
32
- if (!o) continue;
33
- let n = o.getAttribute("data-theme"), r = t.find((e) => e.id === n);
34
- o.classList.remove("light", "dark"), n && o.classList.remove(u(n)), h(o), m(o, r), g(o, i), o.classList.add(...d(e, a)), o.setAttribute("data-theme", e), o.setAttribute("data-color-mode", a), o.style.colorScheme = a;
35
- }
36
- }, v = "theme-preference", y = r(null), b = (e, t) => e.find((e) => e.mode === t)?.id ?? e[0]?.id ?? s[0].id, x = (t = v) => typeof window > "u" ? null : e().getItem(t), S = (t, n = v) => {
37
- typeof window < "u" && e().setItem(n, t);
38
- }, C = (e) => typeof e == "string" && e.includes("."), w = (e = s) => typeof window > "u" ? b(e, "light") : x() || b(e, typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"), T = (e) => {
39
- let r = t(30), { children: i, themePreferences: u } = e, d = u === void 0 ? s : u, f = e.preferenceScope ? `${v}:${e.preferenceScope}` : v, p = e.initialPreference === void 0 ? x(f) : null, m = e.initialPreference ?? p ?? e.defaultPreference ?? w(d), [h, g] = o({
40
- storageKey: f,
41
- preference: m
42
- }), T = h.storageKey === f ? h.preference : m, E = c(T, d) ? T : b(d, l(T, d)), D;
43
- r[0] !== e.defaultPreference || r[1] !== E || r[2] !== g || r[3] !== f || r[4] !== p || r[5] !== T || r[6] !== d ? (D = () => {
44
- if (p && p !== T && c(p, d)) {
45
- g({
46
- storageKey: f,
47
- preference: p
48
- });
49
- return;
50
- }
51
- if (!c(T, d)) {
52
- e.defaultPreference || g({
53
- storageKey: f,
54
- preference: E
55
- });
56
- return;
57
- }
58
- _(T, d), !(p && p !== T && C(p) && !c(p, d)) && !e.defaultPreference && S(T, f);
59
- }, r[0] = e.defaultPreference, r[1] = E, r[2] = g, r[3] = f, r[4] = p, r[5] = T, r[6] = d, r[7] = D) : D = r[7];
60
- let O;
61
- r[8] !== e.defaultPreference || r[9] !== E || r[10] !== f || r[11] !== p || r[12] !== T || r[13] !== d ? (O = [
62
- E,
63
- p,
64
- T,
65
- d,
66
- f,
67
- e.defaultPreference
68
- ], r[8] = e.defaultPreference, r[9] = E, r[10] = f, r[11] = p, r[12] = T, r[13] = d, r[14] = O) : O = r[14], a(D, O);
69
- let k;
70
- r[15] !== g || r[16] !== f ? (k = (e) => {
71
- S(e, f), g({
72
- storageKey: f,
73
- preference: e
74
- });
75
- }, r[15] = g, r[16] = f, r[17] = k) : k = r[17];
76
- let A = k, j;
77
- r[18] !== E || r[19] !== A || r[20] !== d ? (j = () => {
78
- let e = l(E, d) === "dark" ? "light" : "dark";
79
- A(b(d, e));
80
- }, r[18] = E, r[19] = A, r[20] = d, r[21] = j) : j = r[21];
81
- let M = j, N;
82
- r[22] !== E || r[23] !== A || r[24] !== d || r[25] !== M ? (N = {
83
- themePreference: E,
84
- themePreferences: d,
85
- setThemePreference: A,
86
- toggleThemePreference: M
87
- }, r[22] = E, r[23] = A, r[24] = d, r[25] = M, r[26] = N) : N = r[26];
88
- let P;
89
- return r[27] !== i || r[28] !== N ? (P = /* @__PURE__ */ n(y, {
90
- value: N,
91
- children: i
92
- }), r[27] = i, r[28] = N, r[29] = P) : P = r[29], P;
93
- }, E = () => {
94
- let e = i(y);
95
- if (!e) throw Error("useThemePreference must be used within a ThemePreferenceProvider");
96
- return e;
97
- };
98
- //#endregion
99
- export { s as a, l as c, _ as i, c as l, w as n, u as o, E as r, d as s, T as t };
100
-
101
- //# sourceMappingURL=theme-preference-pzfuK5cH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-preference-pzfuK5cH.js","names":["ThemePreference","ThemePreferenceMode","ThemePreferenceTokens","Record","ThemePreferenceOption","id","title","mode","tokens","monacoTheme","defaultThemePreferences","isThemePreference","value","themePreferences","some","theme","getThemePreferenceMode","find","preference","getThemePreferenceClassName","getThemePreferenceClassNames","THEME_TOKEN_PATHS_ATTRIBUTE","getThemePreferenceCssVariableName","tokenPath","replaceAll","removeThemeTokens","el","HTMLElement","Object","keys","style","removeProperty","removeTrackedThemeTokens","tokenPaths","getAttribute","split","filter","Boolean","setAttribute","applyThemeTokens","entries","setProperty","join","applyThemePreference","document","root","documentElement","body","option","previousTheme","previousPreference","classList","remove","add","colorScheme","createContext","ReactNode","useContext","useEffect","useState","applyThemePreference","defaultThemePreferences","getThemePreferenceMode","isThemePreference","ThemePreference","ThemePreferenceMode","ThemePreferenceOption","createBrowserStorage","STORAGE_KEY","ThemePreferenceContext","ThemePreferenceContextValue","themePreference","themePreferences","setThemePreference","preference","toggleThemePreference","ThemePreferenceProviderProps","children","initialPreference","defaultPreference","preferenceScope","getDefaultThemePreference","mode","find","id","getStoredThemePreference","storageKey","window","getItem","storeThemePreference","setItem","looksLikeContributedThemePreference","value","includes","getInitialThemePreference","stored","prefersDark","matchMedia","matches","ThemePreferenceProvider","props","$","_c","t0","undefined","storedPreference","selection","setSelection","resolvedThemePreference","t1","hasPendingStoredTheme","t2","t3","t4","nextMode","t5","t6","useThemePreference","context","Error","_c","createBrowserStorage","defaultThemePreferences","isThemePreference","value","themePreferences","theme","getThemePreferenceMode","preference","getThemePreferenceClassName","getThemePreferenceClassNames","mode","THEME_TOKEN_PATHS_ATTRIBUTE","getThemePreferenceCssVariableName","tokenPath","removeThemeTokens","removeTrackedThemeTokens","tokenPaths","el","applyThemeTokens","applyThemePreference","root","body","option","previousTheme","previousPreference","STORAGE_KEY","ThemePreferenceContext","createContext","getDefaultThemePreference","getStoredThemePreference","storageKey","storeThemePreference","looksLikeContributedThemePreference","getInitialThemePreference","ThemePreferenceProvider","$","c","t0","props","storedPreference","initialPreference","selection","setSelection","useState","themePreference","resolvedThemePreference","t1","t2","useEffect","t3","setThemePreference","t4","nextMode","toggleThemePreference","t5","t6","children","useThemePreference","context","useContext"],"sources":["../src/utils/apply-theme-preference.ts","../src/utils/theme-preference.tsx"],"sourcesContent":["export type ThemePreference = string;\nexport type ThemePreferenceMode = \"light\" | \"dark\";\nexport type ThemePreferenceTokens = Record<string, string>;\n\nexport interface ThemePreferenceOption {\n id: ThemePreference;\n title?: string;\n mode: ThemePreferenceMode;\n tokens?: ThemePreferenceTokens;\n monacoTheme?: unknown;\n}\n\nexport const defaultThemePreferences = [\n { id: \"pstdio-light\", mode: \"light\" },\n { id: \"pstdio-dark\", mode: \"dark\" },\n] satisfies ThemePreferenceOption[];\n\nexport const isThemePreference = (\n value: string | null,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n): value is ThemePreference => typeof value === \"string\" && themePreferences.some((theme) => theme.id === value);\n\nexport const getThemePreferenceMode = (\n theme: ThemePreference,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => themePreferences.find((preference) => preference.id === theme)?.mode ?? \"light\";\n\nexport const getThemePreferenceClassName = (theme: ThemePreference) => `theme-${theme}`;\n\nexport const getThemePreferenceClassNames = (\n theme: ThemePreference,\n mode: ThemePreferenceMode = getThemePreferenceMode(theme),\n) => [mode, getThemePreferenceClassName(theme)];\n\nconst THEME_TOKEN_PATHS_ATTRIBUTE = \"data-pstdio-theme-token-paths\";\n\nconst getThemePreferenceCssVariableName = (tokenPath: string) => `--chakra-${tokenPath.replaceAll(\".\", \"-\")}`;\n\nconst removeThemeTokens = (el: HTMLElement, theme?: ThemePreferenceOption) => {\n if (!theme?.tokens) return;\n\n for (const tokenPath of Object.keys(theme.tokens)) {\n el.style.removeProperty(getThemePreferenceCssVariableName(tokenPath));\n }\n};\n\nconst removeTrackedThemeTokens = (el: HTMLElement) => {\n const tokenPaths = el.getAttribute(THEME_TOKEN_PATHS_ATTRIBUTE)?.split(\"\\n\").filter(Boolean) ?? [];\n\n for (const tokenPath of tokenPaths) {\n el.style.removeProperty(getThemePreferenceCssVariableName(tokenPath));\n }\n\n el.setAttribute(THEME_TOKEN_PATHS_ATTRIBUTE, \"\");\n};\n\nconst applyThemeTokens = (el: HTMLElement, theme: ThemePreferenceOption) => {\n if (!theme.tokens) {\n el.setAttribute(THEME_TOKEN_PATHS_ATTRIBUTE, \"\");\n return;\n }\n\n for (const [tokenPath, value] of Object.entries(theme.tokens)) {\n el.style.setProperty(getThemePreferenceCssVariableName(tokenPath), value);\n }\n el.setAttribute(THEME_TOKEN_PATHS_ATTRIBUTE, Object.keys(theme.tokens).join(\"\\n\"));\n};\n\nexport const applyThemePreference = (\n theme: ThemePreference,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => {\n if (typeof document === \"undefined\") return;\n\n const root = document.documentElement;\n const body = document.body;\n const preference = themePreferences.find((option) => option.id === theme) ?? { id: theme, mode: \"light\" };\n const mode = getThemePreferenceMode(theme, themePreferences);\n\n for (const el of [root, body]) {\n if (!el) continue;\n const previousTheme = el.getAttribute(\"data-theme\");\n const previousPreference = themePreferences.find((option) => option.id === previousTheme);\n\n el.classList.remove(\"light\", \"dark\");\n if (previousTheme) {\n el.classList.remove(getThemePreferenceClassName(previousTheme));\n }\n removeTrackedThemeTokens(el);\n removeThemeTokens(el, previousPreference);\n applyThemeTokens(el, preference);\n el.classList.add(...getThemePreferenceClassNames(theme, mode));\n el.setAttribute(\"data-theme\", theme);\n el.setAttribute(\"data-color-mode\", mode);\n el.style.colorScheme = mode;\n }\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyThemePreference,\n defaultThemePreferences,\n getThemePreferenceMode,\n isThemePreference,\n type ThemePreference,\n type ThemePreferenceMode,\n type ThemePreferenceOption,\n} from \"./apply-theme-preference\";\nimport { createBrowserStorage } from \"./browser-storage\";\n\nconst STORAGE_KEY = \"theme-preference\";\n\nconst ThemePreferenceContext = createContext<ThemePreferenceContextValue | null>(null);\n\ninterface ThemePreferenceContextValue {\n themePreference: ThemePreference;\n themePreferences: readonly ThemePreferenceOption[];\n setThemePreference: (preference: ThemePreference) => void;\n toggleThemePreference: () => void;\n}\n\ninterface ThemePreferenceProviderProps {\n children: ReactNode;\n initialPreference?: ThemePreference;\n /** A default used only when the user has not chosen a theme in this scope. */\n defaultPreference?: ThemePreference;\n preferenceScope?: string;\n themePreferences?: readonly ThemePreferenceOption[];\n}\n\nconst getDefaultThemePreference = (themePreferences: readonly ThemePreferenceOption[], mode: ThemePreferenceMode) =>\n themePreferences.find((preference) => preference.mode === mode)?.id ??\n themePreferences[0]?.id ??\n defaultThemePreferences[0].id;\n\nconst getStoredThemePreference = (storageKey = STORAGE_KEY) => {\n if (typeof window === \"undefined\") return null;\n\n return createBrowserStorage().getItem(storageKey);\n};\n\nconst storeThemePreference = (preference: ThemePreference, storageKey = STORAGE_KEY) => {\n if (typeof window === \"undefined\") return;\n\n createBrowserStorage().setItem(storageKey, preference);\n};\n\n// Contributed themes register asynchronously. Keep their stored preference until\n// it registers or the user chooses another theme.\nconst looksLikeContributedThemePreference = (value: string | null) => typeof value === \"string\" && value.includes(\".\");\n\nexport const getInitialThemePreference = (\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => {\n if (typeof window === \"undefined\") return getDefaultThemePreference(themePreferences, \"light\");\n\n const stored = getStoredThemePreference();\n if (stored) return stored;\n\n const prefersDark =\n typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n return getDefaultThemePreference(themePreferences, prefersDark ? \"dark\" : \"light\");\n};\n\nexport const ThemePreferenceProvider = (props: ThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultThemePreferences } = props;\n const storageKey = props.preferenceScope ? `${STORAGE_KEY}:${props.preferenceScope}` : STORAGE_KEY;\n const storedPreference = props.initialPreference === undefined ? getStoredThemePreference(storageKey) : null;\n const initialPreference =\n props.initialPreference ??\n storedPreference ??\n props.defaultPreference ??\n getInitialThemePreference(themePreferences);\n const [selection, setSelection] = useState({ storageKey, preference: initialPreference });\n const themePreference = selection.storageKey === storageKey ? selection.preference : initialPreference;\n const resolvedThemePreference = isThemePreference(themePreference, themePreferences)\n ? themePreference\n : getDefaultThemePreference(themePreferences, getThemePreferenceMode(themePreference, themePreferences));\n\n useEffect(() => {\n if (\n storedPreference &&\n storedPreference !== themePreference &&\n isThemePreference(storedPreference, themePreferences)\n ) {\n setSelection({ storageKey, preference: storedPreference });\n return;\n }\n\n if (!isThemePreference(themePreference, themePreferences)) {\n if (!props.defaultPreference) setSelection({ storageKey, preference: resolvedThemePreference });\n return;\n }\n\n applyThemePreference(themePreference, themePreferences);\n const hasPendingStoredTheme =\n storedPreference &&\n storedPreference !== themePreference &&\n looksLikeContributedThemePreference(storedPreference) &&\n !isThemePreference(storedPreference, themePreferences);\n if (!hasPendingStoredTheme && !props.defaultPreference) storeThemePreference(themePreference, storageKey);\n }, [\n resolvedThemePreference,\n storedPreference,\n themePreference,\n themePreferences,\n storageKey,\n props.defaultPreference,\n ]);\n\n const setThemePreference = (preference: ThemePreference) => {\n storeThemePreference(preference, storageKey);\n setSelection({ storageKey, preference });\n };\n\n const toggleThemePreference = () => {\n const nextMode = getThemePreferenceMode(resolvedThemePreference, themePreferences) === \"dark\" ? \"light\" : \"dark\";\n\n setThemePreference(getDefaultThemePreference(themePreferences, nextMode));\n };\n\n return (\n <ThemePreferenceContext\n value={{ themePreference: resolvedThemePreference, themePreferences, setThemePreference, toggleThemePreference }}\n >\n {children}\n </ThemePreferenceContext>\n );\n};\n\nexport const useThemePreference = () => {\n const context = useContext(ThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useThemePreference must be used within a ThemePreferenceProvider\");\n }\n\n return context;\n};\n"],"mappings":"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"}