@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.
- package/dist/{MermaidComponent-81jr28u4.js → MermaidComponent-D7vhkpka.js} +3 -3
- package/dist/{MermaidComponent-81jr28u4.js.map → MermaidComponent-D7vhkpka.js.map} +1 -1
- package/dist/alert-MQ47wy7f.js +388 -0
- package/dist/alert-MQ47wy7f.js.map +1 -0
- package/dist/chat-ui.d.ts +129 -23
- package/dist/chat-ui.js +2596 -1591
- package/dist/chat-ui.js.map +1 -1
- package/dist/{types-DWA3enV6.d.ts → collection-view-fields-D3cysHNT.d.ts} +87 -37
- package/dist/collection-view-grouping-D4nZk8-3.js +90 -0
- package/dist/collection-view-grouping-D4nZk8-3.js.map +1 -0
- package/dist/collection-view-search-CpjJy76w.js +1973 -0
- package/dist/collection-view-search-CpjJy76w.js.map +1 -0
- package/dist/collection-view.d.ts +4 -0
- package/dist/collection-view.js +2 -0
- package/dist/{data-table-stats-row-CpRe_xK2.js → data-table-stats-row-64magT2g.js} +2 -2
- package/dist/{data-table-stats-row-CpRe_xK2.js.map → data-table-stats-row-64magT2g.js.map} +1 -1
- package/dist/data-table.d.ts +29 -7
- package/dist/data-table.js +1043 -878
- package/dist/data-table.js.map +1 -1
- package/dist/diff-bubble-DewUd_2w.js +61 -0
- package/dist/diff-bubble-DewUd_2w.js.map +1 -0
- package/dist/{diff-drawer-45rpk3aq.js → diff-drawer-IYpQ-QQK.js} +264 -242
- package/dist/diff-drawer-IYpQ-QQK.js.map +1 -0
- package/dist/diff-viewer-C-0VAt9P.js +574 -0
- package/dist/diff-viewer-C-0VAt9P.js.map +1 -0
- package/dist/diff.d.ts +11 -0
- package/dist/diff.js +107 -98
- package/dist/diff.js.map +1 -1
- package/dist/display-sort-control-f3rbILsV.js +588 -0
- package/dist/display-sort-control-f3rbILsV.js.map +1 -0
- package/dist/drop-indicator-HjlBSIeV.js +27 -0
- package/dist/drop-indicator-HjlBSIeV.js.map +1 -0
- package/dist/edit-mode-data-table-DnMB2jiy.js +1449 -0
- package/dist/edit-mode-data-table-DnMB2jiy.js.map +1 -0
- package/dist/host-storage-BIo5azql.js +31 -0
- package/dist/host-storage-BIo5azql.js.map +1 -0
- package/dist/host-storage-J0089Hyk.d.ts +17 -0
- package/dist/{slider-hwHYe98I.js → icon-options-Tt6Wzhtv.js} +86 -201
- package/dist/icon-options-Tt6Wzhtv.js.map +1 -0
- package/dist/{index-Bfddrlz8.d.ts → index-B79hwNcB.d.ts} +66 -14
- package/dist/index-CKsd23jv.d.ts +80 -0
- package/dist/{index-CbtbcvKm.d.ts → index-DlmvvQ6x.d.ts} +1 -1
- package/dist/index-ICoad2I_.d.ts +282 -0
- package/dist/index.d.ts +63 -22
- package/dist/index.js +1149 -1054
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer.d.ts +3 -326
- package/dist/kanban-renderer.js +980 -596
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/list-row-Z4SHkseA.js +1195 -0
- package/dist/list-row-Z4SHkseA.js.map +1 -0
- package/dist/markdown-editor-Dd4mor7l.js +3236 -0
- package/dist/markdown-editor-Dd4mor7l.js.map +1 -0
- package/dist/{mermaid-renderer-DImi0fDp.js → mermaid-renderer-0PmNkOXI.js} +29 -29
- package/dist/mermaid-renderer-0PmNkOXI.js.map +1 -0
- package/dist/mermaid.js +1 -1
- package/dist/number-input-7K66wnSC.js +63 -0
- package/dist/number-input-7K66wnSC.js.map +1 -0
- package/dist/{param-editor-BQd4AOUP.js → param-editor-Dnix-fJo.js} +2 -2
- package/dist/{param-editor-BQd4AOUP.js.map → param-editor-Dnix-fJo.js.map} +1 -1
- package/dist/{param-editor-field-BJ_rLUnV.js → param-editor-field-B3vLST-B.js} +1436 -1427
- package/dist/param-editor-field-B3vLST-B.js.map +1 -0
- package/dist/param-editor.js +4 -3
- package/dist/prism-OG4H7Hu4.js +334 -0
- package/dist/prism-OG4H7Hu4.js.map +1 -0
- package/dist/queued-follow-up-Bj_vtMgd.js +208 -0
- package/dist/queued-follow-up-Bj_vtMgd.js.map +1 -0
- package/dist/{resource-badge-95WPVlZf.d.ts → resource-badge-nOWPqxFU.d.ts} +1 -0
- package/dist/rich-text-BgEnAHr2.js +1160 -0
- package/dist/rich-text-BgEnAHr2.js.map +1 -0
- package/dist/rich-text.d.ts +2 -2
- package/dist/rich-text.js +4 -2
- package/dist/style.css +1 -1
- package/dist/terminal.d.ts +5 -63
- package/dist/terminal.js +102 -122
- package/dist/terminal.js.map +1 -1
- package/dist/{theme-CbmSEbRF.js → theme-CMJdH59Z.js} +589 -265
- package/dist/theme-CMJdH59Z.js.map +1 -0
- package/dist/theme-kKuLN2jb.js +80 -0
- package/dist/theme-kKuLN2jb.js.map +1 -0
- package/dist/theme-preference-BV4cbJNB.js +115 -0
- package/dist/theme-preference-BV4cbJNB.js.map +1 -0
- package/dist/theme.js +3 -2
- package/dist/tree-list-jarhD31R.js +1652 -0
- package/dist/tree-list-jarhD31R.js.map +1 -0
- package/dist/use-virtualizer-uj43XjBp.js +10 -0
- package/dist/use-virtualizer-uj43XjBp.js.map +1 -0
- package/dist/{workspace-badge-Brm3Xr3m.d.ts → workspace-badge-BKtB805G.d.ts} +5 -1
- package/package.json +8 -4
- package/dist/diff-bubble-DZsarmSG.js +0 -61
- package/dist/diff-bubble-DZsarmSG.js.map +0 -1
- package/dist/diff-drawer-45rpk3aq.js.map +0 -1
- package/dist/diff-viewer-BP_mI6Wx.js +0 -558
- package/dist/diff-viewer-BP_mI6Wx.js.map +0 -1
- package/dist/list-row-uqD-q4gv.js +0 -1018
- package/dist/list-row-uqD-q4gv.js.map +0 -1
- package/dist/mermaid-renderer-DImi0fDp.js.map +0 -1
- package/dist/param-editor-field-BJ_rLUnV.js.map +0 -1
- package/dist/prism-BStPsJSB.js +0 -658
- package/dist/prism-BStPsJSB.js.map +0 -1
- package/dist/rich-text-VYAmEigU.js +0 -6979
- package/dist/rich-text-VYAmEigU.js.map +0 -1
- package/dist/slider-hwHYe98I.js.map +0 -1
- package/dist/theme-CbmSEbRF.js.map +0 -1
- package/dist/theme-preference-pzfuK5cH.js +0 -101
- package/dist/theme-preference-pzfuK5cH.js.map +0 -1
- package/dist/tree-list-BNZwjQZA.js +0 -1616
- 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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"}
|