@seamline-kit/seamline-settings 0.0.3 → 0.0.5
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/main.cjs +165 -1
- package/dist/main.d.cts +30 -0
- package/dist/main.d.cts.map +1 -0
- package/dist/main.d.ts +29 -3
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +158 -6
- package/dist/main.js.map +1 -0
- package/package.json +21 -31
- package/dist/adapters/solid.cjs +0 -2
- package/dist/adapters/solid.d.ts +0 -3
- package/dist/adapters/solid.d.ts.map +0 -1
- package/dist/adapters/solid.js +0 -945
- package/dist/lib-DIb46Sli.js +0 -1607
- package/dist/lib-cjGq4QSq.cjs +0 -1
package/dist/main.cjs
CHANGED
|
@@ -1 +1,165 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
let hastscript_jsx_runtime = require("hastscript/jsx-runtime");
|
|
3
|
+
|
|
4
|
+
//#region src/settings-page-names.ts
|
|
5
|
+
const DEFAULT_PREFIX = "slk-settings";
|
|
6
|
+
const SETTINGS_PAGE_NAMES = {
|
|
7
|
+
appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,
|
|
8
|
+
appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,
|
|
9
|
+
themeSystem: `${DEFAULT_PREFIX}-theme-system`,
|
|
10
|
+
themeLight: `${DEFAULT_PREFIX}-theme-light`,
|
|
11
|
+
themeDark: `${DEFAULT_PREFIX}-theme-dark`
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/theme.ts
|
|
16
|
+
const THEMES = [
|
|
17
|
+
"system",
|
|
18
|
+
"light",
|
|
19
|
+
"dark"
|
|
20
|
+
];
|
|
21
|
+
const THEME_FIELD_NAME = `${DEFAULT_PREFIX}-theme`;
|
|
22
|
+
const DEFAULT_THEME = THEMES[0];
|
|
23
|
+
function isTheme(value) {
|
|
24
|
+
return THEMES.some((theme) => theme === value);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/settings-page.tsx
|
|
29
|
+
function SettingsPage({ defaultTheme }) {
|
|
30
|
+
return /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)(hastscript_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("h1", { children: "Settings" }), /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)("section", {
|
|
31
|
+
"aria-labelledby": SETTINGS_PAGE_NAMES.appearanceTitle,
|
|
32
|
+
children: [/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("h2", {
|
|
33
|
+
id: SETTINGS_PAGE_NAMES.appearanceTitle,
|
|
34
|
+
children: "Appearance"
|
|
35
|
+
}), /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("form", {
|
|
36
|
+
id: SETTINGS_PAGE_NAMES.appearanceForm,
|
|
37
|
+
children: /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)("fieldset", { children: [
|
|
38
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("legend", { children: "Theme" }),
|
|
39
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
|
|
40
|
+
type: "radio",
|
|
41
|
+
id: SETTINGS_PAGE_NAMES.themeSystem,
|
|
42
|
+
name: THEME_FIELD_NAME,
|
|
43
|
+
value: "system",
|
|
44
|
+
checked: defaultTheme === "system"
|
|
45
|
+
}),
|
|
46
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
|
|
47
|
+
for: SETTINGS_PAGE_NAMES.themeSystem,
|
|
48
|
+
children: "System"
|
|
49
|
+
}),
|
|
50
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
|
|
51
|
+
type: "radio",
|
|
52
|
+
id: SETTINGS_PAGE_NAMES.themeLight,
|
|
53
|
+
name: THEME_FIELD_NAME,
|
|
54
|
+
value: "light",
|
|
55
|
+
checked: defaultTheme === "light"
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
|
|
58
|
+
for: SETTINGS_PAGE_NAMES.themeLight,
|
|
59
|
+
children: "Light"
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
|
|
62
|
+
type: "radio",
|
|
63
|
+
id: SETTINGS_PAGE_NAMES.themeDark,
|
|
64
|
+
name: THEME_FIELD_NAME,
|
|
65
|
+
value: "dark",
|
|
66
|
+
checked: defaultTheme === "dark"
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
|
|
69
|
+
for: SETTINGS_PAGE_NAMES.themeDark,
|
|
70
|
+
children: "Dark"
|
|
71
|
+
})
|
|
72
|
+
] })
|
|
73
|
+
})]
|
|
74
|
+
})] });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/theme-persistence.ts
|
|
79
|
+
const THEME_STORAGE_KEY = `${DEFAULT_PREFIX}-theme`;
|
|
80
|
+
function getStorage() {
|
|
81
|
+
try {
|
|
82
|
+
return globalThis.localStorage ?? null;
|
|
83
|
+
} catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function readPersistedTheme() {
|
|
88
|
+
const storage = getStorage();
|
|
89
|
+
if (!storage) return null;
|
|
90
|
+
let value = null;
|
|
91
|
+
try {
|
|
92
|
+
value = storage.getItem(THEME_STORAGE_KEY);
|
|
93
|
+
} catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
if (!isTheme(value)) return null;
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
function persistTheme(theme) {
|
|
100
|
+
const storage = getStorage();
|
|
101
|
+
if (!storage) return;
|
|
102
|
+
try {
|
|
103
|
+
storage.setItem(THEME_STORAGE_KEY, theme);
|
|
104
|
+
} catch {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
|
|
109
|
+
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/theme-form-controller.ts
|
|
112
|
+
function getSelectedTheme(form) {
|
|
113
|
+
const theme = new FormData(form).get(THEME_FIELD_NAME);
|
|
114
|
+
if (!isTheme(theme)) return null;
|
|
115
|
+
return theme;
|
|
116
|
+
}
|
|
117
|
+
function syncThemeStateToDom(radios, theme) {
|
|
118
|
+
for (const radio of radios) {
|
|
119
|
+
const checked = radio.value === theme;
|
|
120
|
+
radio.checked = checked;
|
|
121
|
+
radio.defaultChecked = checked;
|
|
122
|
+
}
|
|
123
|
+
document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);
|
|
124
|
+
}
|
|
125
|
+
function bindThemeForm(onThemeChange) {
|
|
126
|
+
const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm);
|
|
127
|
+
const radios = form.querySelectorAll(`input[name="${THEME_FIELD_NAME}"]`);
|
|
128
|
+
function syncThemeFromForm() {
|
|
129
|
+
const selectedTheme = getSelectedTheme(form);
|
|
130
|
+
if (!selectedTheme) return;
|
|
131
|
+
onThemeChange(selectedTheme);
|
|
132
|
+
persistTheme(selectedTheme);
|
|
133
|
+
}
|
|
134
|
+
const persistedTheme = readPersistedTheme();
|
|
135
|
+
if (persistedTheme) syncThemeStateToDom(radios, persistedTheme);
|
|
136
|
+
const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);
|
|
137
|
+
if (initialSelectedTheme) onThemeChange(initialSelectedTheme);
|
|
138
|
+
form.addEventListener("change", syncThemeFromForm);
|
|
139
|
+
return {
|
|
140
|
+
sync(theme) {
|
|
141
|
+
syncThemeStateToDom(radios, theme);
|
|
142
|
+
persistTheme(theme);
|
|
143
|
+
},
|
|
144
|
+
unbind() {
|
|
145
|
+
form.removeEventListener("change", syncThemeFromForm);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//#endregion
|
|
151
|
+
//#region src/main.ts
|
|
152
|
+
function init({ defaultTheme = DEFAULT_THEME } = {}) {
|
|
153
|
+
return { render() {
|
|
154
|
+
return render(defaultTheme);
|
|
155
|
+
} };
|
|
156
|
+
}
|
|
157
|
+
function render(defaultTheme) {
|
|
158
|
+
return SettingsPage({ defaultTheme });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
//#endregion
|
|
162
|
+
exports.DEFAULT_THEME = DEFAULT_THEME;
|
|
163
|
+
exports.THEME_BOOTSTRAP_SCRIPT = THEME_BOOTSTRAP_SCRIPT;
|
|
164
|
+
exports.bindThemeForm = bindThemeForm;
|
|
165
|
+
exports.init = init;
|
package/dist/main.d.cts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Result } from "hastscript";
|
|
2
|
+
|
|
3
|
+
//#region src/theme.d.ts
|
|
4
|
+
declare const THEMES: readonly ["system", "light", "dark"];
|
|
5
|
+
type Theme = (typeof THEMES)[number];
|
|
6
|
+
declare const DEFAULT_THEME: Theme;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/theme-persistence.d.ts
|
|
9
|
+
declare const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/theme-form-controller.d.ts
|
|
12
|
+
interface ThemeFormBinding {
|
|
13
|
+
sync: (theme: Theme) => void;
|
|
14
|
+
unbind: () => void;
|
|
15
|
+
}
|
|
16
|
+
declare function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding;
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/main.d.ts
|
|
19
|
+
interface InitOptions {
|
|
20
|
+
defaultTheme?: Theme;
|
|
21
|
+
}
|
|
22
|
+
interface SettingsRenderer {
|
|
23
|
+
render: () => Result;
|
|
24
|
+
}
|
|
25
|
+
declare function init({
|
|
26
|
+
defaultTheme
|
|
27
|
+
}?: InitOptions): SettingsRenderer;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, type Theme, bindThemeForm, init };
|
|
30
|
+
//# sourceMappingURL=main.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.cts","names":[],"sources":["../src/theme.ts","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"mappings":";;;cAEM,MAAA;AAAA,KACM,KAAA,WAAgB,MAAA;AAAA,cAGf,aAAA,EAAe,KAAA;;;cCwCf,sBAAA;;;UC1CH,gBAAA;EACR,IAAA,GAAO,KAAA,EAAO,KAAA;EACd,MAAA;AAAA;AAAA,iBAsBc,aAAA,CAAc,aAAA,GAAgB,KAAA,EAAO,KAAA,YAAiB,gBAAA;;;UCvB5D,WAAA;EACR,YAAA,GAAe,KAAA;AAAA;AAAA,UAGP,gBAAA;EACR,MAAA,QAAc,MAAA;AAAA;AAAA,iBAGA,IAAA,CAAA;EAAO;AAAA,IAAgC,WAAA,GAAmB,gBAAA"}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Result } from "hastscript";
|
|
2
|
+
|
|
3
|
+
//#region src/theme.d.ts
|
|
4
|
+
declare const THEMES: readonly ["system", "light", "dark"];
|
|
5
|
+
type Theme = (typeof THEMES)[number];
|
|
6
|
+
declare const DEFAULT_THEME: Theme;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/theme-persistence.d.ts
|
|
9
|
+
declare const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/theme-form-controller.d.ts
|
|
12
|
+
interface ThemeFormBinding {
|
|
13
|
+
sync: (theme: Theme) => void;
|
|
14
|
+
unbind: () => void;
|
|
15
|
+
}
|
|
16
|
+
declare function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding;
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/main.d.ts
|
|
19
|
+
interface InitOptions {
|
|
20
|
+
defaultTheme?: Theme;
|
|
21
|
+
}
|
|
22
|
+
interface SettingsRenderer {
|
|
23
|
+
render: () => Result;
|
|
24
|
+
}
|
|
25
|
+
declare function init({
|
|
26
|
+
defaultTheme
|
|
27
|
+
}?: InitOptions): SettingsRenderer;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, type Theme, bindThemeForm, init };
|
|
4
30
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","
|
|
1
|
+
{"version":3,"file":"main.d.ts","names":[],"sources":["../src/theme.ts","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"mappings":";;;cAEM,MAAA;AAAA,KACM,KAAA,WAAgB,MAAA;AAAA,cAGf,aAAA,EAAe,KAAA;;;cCwCf,sBAAA;;;UC1CH,gBAAA;EACR,IAAA,GAAO,KAAA,EAAO,KAAA;EACd,MAAA;AAAA;AAAA,iBAsBc,aAAA,CAAc,aAAA,GAAgB,KAAA,EAAO,KAAA,YAAiB,gBAAA;;;UCvB5D,WAAA;EACR,YAAA,GAAe,KAAA;AAAA;AAAA,UAGP,gBAAA;EACR,MAAA,QAAc,MAAA;AAAA;AAAA,iBAGA,IAAA,CAAA;EAAO;AAAA,IAAgC,WAAA,GAAmB,gBAAA"}
|
package/dist/main.js
CHANGED
|
@@ -1,10 +1,162 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Fragment, jsx, jsxs } from "hastscript/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/settings-page-names.ts
|
|
4
|
+
const DEFAULT_PREFIX = "slk-settings";
|
|
5
|
+
const SETTINGS_PAGE_NAMES = {
|
|
6
|
+
appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,
|
|
7
|
+
appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,
|
|
8
|
+
themeSystem: `${DEFAULT_PREFIX}-theme-system`,
|
|
9
|
+
themeLight: `${DEFAULT_PREFIX}-theme-light`,
|
|
10
|
+
themeDark: `${DEFAULT_PREFIX}-theme-dark`
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/theme.ts
|
|
15
|
+
const THEMES = [
|
|
16
|
+
"system",
|
|
17
|
+
"light",
|
|
18
|
+
"dark"
|
|
19
|
+
];
|
|
20
|
+
const THEME_FIELD_NAME = `${DEFAULT_PREFIX}-theme`;
|
|
21
|
+
const DEFAULT_THEME = THEMES[0];
|
|
22
|
+
function isTheme(value) {
|
|
23
|
+
return THEMES.some((theme) => theme === value);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/settings-page.tsx
|
|
28
|
+
function SettingsPage({ defaultTheme }) {
|
|
29
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h1", { children: "Settings" }), /* @__PURE__ */ jsxs("section", {
|
|
30
|
+
"aria-labelledby": SETTINGS_PAGE_NAMES.appearanceTitle,
|
|
31
|
+
children: [/* @__PURE__ */ jsx("h2", {
|
|
32
|
+
id: SETTINGS_PAGE_NAMES.appearanceTitle,
|
|
33
|
+
children: "Appearance"
|
|
34
|
+
}), /* @__PURE__ */ jsx("form", {
|
|
35
|
+
id: SETTINGS_PAGE_NAMES.appearanceForm,
|
|
36
|
+
children: /* @__PURE__ */ jsxs("fieldset", { children: [
|
|
37
|
+
/* @__PURE__ */ jsx("legend", { children: "Theme" }),
|
|
38
|
+
/* @__PURE__ */ jsx("input", {
|
|
39
|
+
type: "radio",
|
|
40
|
+
id: SETTINGS_PAGE_NAMES.themeSystem,
|
|
41
|
+
name: THEME_FIELD_NAME,
|
|
42
|
+
value: "system",
|
|
43
|
+
checked: defaultTheme === "system"
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsx("label", {
|
|
46
|
+
for: SETTINGS_PAGE_NAMES.themeSystem,
|
|
47
|
+
children: "System"
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ jsx("input", {
|
|
50
|
+
type: "radio",
|
|
51
|
+
id: SETTINGS_PAGE_NAMES.themeLight,
|
|
52
|
+
name: THEME_FIELD_NAME,
|
|
53
|
+
value: "light",
|
|
54
|
+
checked: defaultTheme === "light"
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ jsx("label", {
|
|
57
|
+
for: SETTINGS_PAGE_NAMES.themeLight,
|
|
58
|
+
children: "Light"
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ jsx("input", {
|
|
61
|
+
type: "radio",
|
|
62
|
+
id: SETTINGS_PAGE_NAMES.themeDark,
|
|
63
|
+
name: THEME_FIELD_NAME,
|
|
64
|
+
value: "dark",
|
|
65
|
+
checked: defaultTheme === "dark"
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx("label", {
|
|
68
|
+
for: SETTINGS_PAGE_NAMES.themeDark,
|
|
69
|
+
children: "Dark"
|
|
70
|
+
})
|
|
71
|
+
] })
|
|
72
|
+
})]
|
|
73
|
+
})] });
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/theme-persistence.ts
|
|
78
|
+
const THEME_STORAGE_KEY = `${DEFAULT_PREFIX}-theme`;
|
|
79
|
+
function getStorage() {
|
|
80
|
+
try {
|
|
81
|
+
return globalThis.localStorage ?? null;
|
|
82
|
+
} catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function readPersistedTheme() {
|
|
87
|
+
const storage = getStorage();
|
|
88
|
+
if (!storage) return null;
|
|
89
|
+
let value = null;
|
|
90
|
+
try {
|
|
91
|
+
value = storage.getItem(THEME_STORAGE_KEY);
|
|
92
|
+
} catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
if (!isTheme(value)) return null;
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
function persistTheme(theme) {
|
|
99
|
+
const storage = getStorage();
|
|
100
|
+
if (!storage) return;
|
|
101
|
+
try {
|
|
102
|
+
storage.setItem(THEME_STORAGE_KEY, theme);
|
|
103
|
+
} catch {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
|
|
108
|
+
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/theme-form-controller.ts
|
|
111
|
+
function getSelectedTheme(form) {
|
|
112
|
+
const theme = new FormData(form).get(THEME_FIELD_NAME);
|
|
113
|
+
if (!isTheme(theme)) return null;
|
|
114
|
+
return theme;
|
|
115
|
+
}
|
|
116
|
+
function syncThemeStateToDom(radios, theme) {
|
|
117
|
+
for (const radio of radios) {
|
|
118
|
+
const checked = radio.value === theme;
|
|
119
|
+
radio.checked = checked;
|
|
120
|
+
radio.defaultChecked = checked;
|
|
121
|
+
}
|
|
122
|
+
document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);
|
|
123
|
+
}
|
|
124
|
+
function bindThemeForm(onThemeChange) {
|
|
125
|
+
const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm);
|
|
126
|
+
const radios = form.querySelectorAll(`input[name="${THEME_FIELD_NAME}"]`);
|
|
127
|
+
function syncThemeFromForm() {
|
|
128
|
+
const selectedTheme = getSelectedTheme(form);
|
|
129
|
+
if (!selectedTheme) return;
|
|
130
|
+
onThemeChange(selectedTheme);
|
|
131
|
+
persistTheme(selectedTheme);
|
|
132
|
+
}
|
|
133
|
+
const persistedTheme = readPersistedTheme();
|
|
134
|
+
if (persistedTheme) syncThemeStateToDom(radios, persistedTheme);
|
|
135
|
+
const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);
|
|
136
|
+
if (initialSelectedTheme) onThemeChange(initialSelectedTheme);
|
|
137
|
+
form.addEventListener("change", syncThemeFromForm);
|
|
138
|
+
return {
|
|
139
|
+
sync(theme) {
|
|
140
|
+
syncThemeStateToDom(radios, theme);
|
|
141
|
+
persistTheme(theme);
|
|
142
|
+
},
|
|
143
|
+
unbind() {
|
|
144
|
+
form.removeEventListener("change", syncThemeFromForm);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/main.ts
|
|
151
|
+
function init({ defaultTheme = DEFAULT_THEME } = {}) {
|
|
3
152
|
return { render() {
|
|
4
|
-
return
|
|
153
|
+
return render(defaultTheme);
|
|
5
154
|
} };
|
|
6
155
|
}
|
|
7
|
-
function
|
|
8
|
-
return
|
|
156
|
+
function render(defaultTheme) {
|
|
157
|
+
return SettingsPage({ defaultTheme });
|
|
9
158
|
}
|
|
10
|
-
|
|
159
|
+
|
|
160
|
+
//#endregion
|
|
161
|
+
export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, bindThemeForm, init };
|
|
162
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","names":[],"sources":["../src/settings-page-names.ts","../src/theme.ts","../src/settings-page.tsx","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"sourcesContent":["export const DEFAULT_PREFIX = \"slk-settings\";\n\nexport interface SettingsPageNames {\n appearanceTitle: string;\n appearanceForm: string;\n themeSystem: string;\n themeLight: string;\n themeDark: string;\n}\n\nexport const SETTINGS_PAGE_NAMES: SettingsPageNames = {\n appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,\n appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,\n themeSystem: `${DEFAULT_PREFIX}-theme-system`,\n themeLight: `${DEFAULT_PREFIX}-theme-light`,\n themeDark: `${DEFAULT_PREFIX}-theme-dark`,\n};\n","import { DEFAULT_PREFIX } from \"./settings-page-names\";\n\nconst THEMES = [\"system\", \"light\", \"dark\"] as const;\nexport type Theme = (typeof THEMES)[number];\n\nexport const THEME_FIELD_NAME: string = `${DEFAULT_PREFIX}-theme`;\nexport const DEFAULT_THEME: Theme = THEMES[0];\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n","/** @jsxImportSource hastscript */\n\nimport type { Result as HastResult } from \"hastscript\";\nimport { SETTINGS_PAGE_NAMES } from \"./settings-page-names\";\nimport { THEME_FIELD_NAME, type Theme } from \"./theme\";\n\nexport interface SettingsPageProps {\n defaultTheme: Theme;\n}\n\nexport function SettingsPage({ defaultTheme }: SettingsPageProps): HastResult {\n return (\n <>\n <h1>Settings</h1>\n <section aria-labelledby={SETTINGS_PAGE_NAMES.appearanceTitle}>\n <h2 id={SETTINGS_PAGE_NAMES.appearanceTitle}>Appearance</h2>\n <form id={SETTINGS_PAGE_NAMES.appearanceForm}>\n <fieldset>\n <legend>Theme</legend>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeSystem}\n name={THEME_FIELD_NAME}\n value=\"system\"\n checked={defaultTheme === \"system\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeSystem}>System</label>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeLight}\n name={THEME_FIELD_NAME}\n value=\"light\"\n checked={defaultTheme === \"light\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeLight}>Light</label>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeDark}\n name={THEME_FIELD_NAME}\n value=\"dark\"\n checked={defaultTheme === \"dark\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeDark}>Dark</label>\n </fieldset>\n </form>\n </section>\n </>\n );\n}\n","import { DEFAULT_PREFIX } from \"./settings-page-names\";\nimport { isTheme, type Theme } from \"./theme\";\n\nconst THEME_STORAGE_KEY: string = `${DEFAULT_PREFIX}-theme`;\n\nfunction getStorage(): Storage | null {\n try {\n return globalThis.localStorage ?? null;\n } catch {\n return null;\n }\n}\n\nexport function readPersistedTheme(): Theme | null {\n const storage = getStorage();\n if (!storage) {\n return null;\n }\n\n let value: string | null = null;\n try {\n value = storage.getItem(THEME_STORAGE_KEY);\n } catch {\n return null;\n }\n\n if (!isTheme(value)) {\n return null;\n }\n\n return value;\n}\n\nexport function persistTheme(theme: Theme): void {\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.setItem(THEME_STORAGE_KEY, theme);\n } catch {\n return;\n }\n}\n\nexport const THEME_BOOTSTRAP_SCRIPT =\n \"try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}\";\n","import { SETTINGS_PAGE_NAMES } from \"./settings-page-names\";\nimport { isTheme, THEME_FIELD_NAME, type Theme } from \"./theme\";\nimport { persistTheme, readPersistedTheme } from \"./theme-persistence\";\n\ninterface ThemeFormBinding {\n sync: (theme: Theme) => void;\n unbind: () => void;\n}\n\nfunction getSelectedTheme(form: HTMLFormElement): Theme | null {\n const theme = new FormData(form).get(THEME_FIELD_NAME);\n if (!isTheme(theme)) {\n return null;\n }\n\n return theme;\n}\n\nfunction syncThemeStateToDom(radios: NodeListOf<HTMLInputElement>, theme: Theme) {\n for (const radio of radios) {\n const checked = radio.value === theme;\n radio.checked = checked;\n radio.defaultChecked = checked;\n }\n\n document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);\n}\n\nexport function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding {\n const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm) as HTMLFormElement;\n const radios = form.querySelectorAll<HTMLInputElement>(`input[name=\"${THEME_FIELD_NAME}\"]`);\n\n function syncThemeFromForm() {\n const selectedTheme = getSelectedTheme(form);\n if (!selectedTheme) {\n return;\n }\n\n onThemeChange(selectedTheme);\n persistTheme(selectedTheme);\n }\n\n const persistedTheme = readPersistedTheme();\n if (persistedTheme) {\n syncThemeStateToDom(radios, persistedTheme);\n }\n\n const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);\n if (initialSelectedTheme) {\n onThemeChange(initialSelectedTheme);\n }\n\n form.addEventListener(\"change\", syncThemeFromForm);\n\n return {\n sync(theme: Theme) {\n syncThemeStateToDom(radios, theme);\n persistTheme(theme);\n },\n unbind() {\n form.removeEventListener(\"change\", syncThemeFromForm);\n },\n };\n}\n","import type { Result as HastResult } from \"hastscript\";\nimport { SettingsPage } from \"./settings-page\";\nimport { DEFAULT_THEME, type Theme } from \"./theme\";\nimport { THEME_BOOTSTRAP_SCRIPT } from \"./theme-persistence\";\n\ninterface InitOptions {\n defaultTheme?: Theme;\n}\n\ninterface SettingsRenderer {\n render: () => HastResult;\n}\n\nexport function init({ defaultTheme = DEFAULT_THEME }: InitOptions = {}): SettingsRenderer {\n return {\n render() {\n return render(defaultTheme);\n },\n };\n}\n\nfunction render(defaultTheme: Theme): HastResult {\n return SettingsPage({ defaultTheme });\n}\n\nexport { bindThemeForm } from \"./theme-form-controller\";\nexport { DEFAULT_THEME, type Theme } from \"./theme\";\nexport { THEME_BOOTSTRAP_SCRIPT };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamline-kit/seamline-settings",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -14,44 +14,34 @@
|
|
|
14
14
|
"types": "./dist/main.d.ts",
|
|
15
15
|
"import": "./dist/main.js",
|
|
16
16
|
"require": "./dist/main.cjs"
|
|
17
|
-
},
|
|
18
|
-
"./solid": {
|
|
19
|
-
"types": "./dist/adapters/solid.d.ts",
|
|
20
|
-
"import": "./dist/adapters/solid.js",
|
|
21
|
-
"require": "./dist/adapters/solid.cjs"
|
|
22
17
|
}
|
|
23
18
|
},
|
|
24
19
|
"publishConfig": {
|
|
25
20
|
"access": "public"
|
|
26
21
|
},
|
|
27
|
-
"scripts": {
|
|
28
|
-
"build": "vite build && pnpm run build:types",
|
|
29
|
-
"build:types": "tsc -p tsconfig.build.json",
|
|
30
|
-
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
31
|
-
"lint": "oxlint",
|
|
32
|
-
"lint:fix": "oxlint --fix",
|
|
33
|
-
"format": "oxfmt --ignore-path ../../.gitignore .",
|
|
34
|
-
"format:check": "oxfmt --check --ignore-path ../../.gitignore ."
|
|
35
|
-
},
|
|
36
22
|
"dependencies": {
|
|
37
|
-
"
|
|
38
|
-
"hastscript": "9.0.1",
|
|
39
|
-
"solid-jsx": "1.1.4"
|
|
23
|
+
"hastscript": "9.0.1"
|
|
40
24
|
},
|
|
41
25
|
"devDependencies": {
|
|
26
|
+
"@vitest/browser-playwright": "4.0.18",
|
|
42
27
|
"oxfmt": "0.32.0",
|
|
43
28
|
"oxlint": "1.47.0",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"vite": "8.0.0-beta.14"
|
|
47
|
-
},
|
|
48
|
-
"peerDependencies": {
|
|
49
|
-
"solid-js": "1.x"
|
|
29
|
+
"tsdown": "0.20.3",
|
|
30
|
+
"vitest": "4.0.18"
|
|
50
31
|
},
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
32
|
+
"scripts": {
|
|
33
|
+
"dev": "tsdown --watch",
|
|
34
|
+
"build": "tsdown",
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"test:watch": "vitest",
|
|
37
|
+
"test:browser": "vitest run --config=vitest.browser.config.ts",
|
|
38
|
+
"test:browser:watch": "vitest --config=vitest.browser.config.ts",
|
|
39
|
+
"test:browser:headless": "vitest run --browser.headless --config=vitest.browser.config.ts",
|
|
40
|
+
"test:browser:headless:watch": "vitest --browser.headless --config=vitest.browser.config.ts",
|
|
41
|
+
"typecheck": "tsgo -p tsconfig.build.json --noEmit",
|
|
42
|
+
"lint": "oxlint",
|
|
43
|
+
"lint:fix": "oxlint --fix",
|
|
44
|
+
"format": "oxfmt --ignore-path ../../.gitignore .",
|
|
45
|
+
"format:check": "oxfmt --check --ignore-path ../../.gitignore ."
|
|
46
|
+
}
|
|
47
|
+
}
|
package/dist/adapters/solid.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../lib-cjGq4QSq.cjs`),t=require(`../main.cjs`);let n=require(`solid-jsx/jsx-runtime`);var r=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,i=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,a={};function o(e,t){return((t||a).jsx?i:r).test(e)}var s=/[ \t\n\f\r]/g;function c(e){return typeof e==`object`?e.type===`text`?l(e.value):!1:l(e)}function l(e){return e.replace(s,``)===``}var u=e.c(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
|
|
2
|
-
`,d=`/`,f=`*`,p=``,m=`comment`,h=`declaration`;function g(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,g=1;function v(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);g=~n?e.length-n:g+e.length}function y(){var e={line:l,column:g};return function(t){return t.position=new b(e),C(),t}}function b(e){this.start=e,this.end={line:l,column:g},this.source=t.source}b.prototype.content=e;function x(n){var r=Error(t.source+`:`+l+`:`+g+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=g,r.source=e,!t.silent)throw r}function S(t){var n=t.exec(e);if(n){var r=n[0];return v(r),e=e.slice(r.length),n}}function C(){S(i)}function w(e){var t;for(e||=[];t=T();)t!==!1&&e.push(t);return e}function T(){var t=y();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return x(`End of comment missing`);var r=e.slice(2,n-2);return g+=2,v(r),e=e.slice(n),g+=2,t({type:m,comment:r})}}function E(){var e=y(),t=S(a);if(t){if(T(),!S(o))return x(`property missing ':'`);var r=S(s),i=e({type:h,property:_(t[0].replace(n,p)),value:r?_(r[0].replace(n,p)):p});return S(c),i}}function D(){var e=[];w(e);for(var t;t=E();)t!==!1&&(e.push(t),w(e));return e}return C(),D()}function _(e){return e?e.replace(l,p):p}t.exports=g})),d=e.c((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.default=r;var n=t(u());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),f=e.c((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),p=e.c(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(d()),r=f();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i}));const m=h(`start`);function h(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function g(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?v(e.position):`start`in e||`end`in e?v(e):`line`in e||`column`in e?_(e):``}function _(e){return y(e&&e.line)+`:`+y(e&&e.column)}function v(e){return _(e&&e.start)+`-`+_(e&&e.end)}function y(e){return e&&typeof e==`number`?e:1}var b=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=g(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};b.prototype.file=``,b.prototype.name=``,b.prototype.reason=``,b.prototype.message=``,b.prototype.stack=``,b.prototype.column=void 0,b.prototype.line=void 0,b.prototype.ancestors=void 0,b.prototype.cause=void 0,b.prototype.fatal=void 0,b.prototype.place=void 0,b.prototype.ruleId=void 0,b.prototype.source=void 0;var x=e.l(p(),1),S={}.hasOwnProperty,C=new Map,w=/[A-Z]/g,T=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),E=new Set([`td`,`th`]),D=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function O(t,n){if(!n||n.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let r=n.filePath||void 0,i;if(n.development){if(typeof n.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");i=z(r,n.jsxDEV)}else{if(typeof n.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof n.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");i=R(r,n.jsx,n.jsxs)}let a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:i,elementAttributeNameCase:n.elementAttributeNameCase||`react`,evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space===`svg`?e.a:e.i,stylePropertyNameCase:n.stylePropertyNameCase||`dom`,tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},o=k(a,t,void 0);return o&&typeof o!=`string`?o:a.create(t,a.Fragment,{children:o||void 0},void 0)}function k(e,t,n){if(t.type===`element`)return A(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return j(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return N(e,t,n);if(t.type===`mdxjsEsm`)return M(e,t);if(t.type===`root`)return P(e,t,n);if(t.type===`text`)return F(e,t)}function A(t,n,r){let i=t.schema,a=i;n.tagName.toLowerCase()===`svg`&&i.space===`html`&&(a=e.a,t.schema=a),t.ancestors.push(n);let o=G(t,n.tagName,!1),s=B(t,n),l=H(t,n);return T.has(n.tagName)&&(l=l.filter(function(e){return typeof e==`string`?!c(e):!0})),I(t,s,o,n),L(s,l),t.ancestors.pop(),t.schema=i,t.create(n,o,s,r)}function j(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}K(e,t.position)}function M(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);K(e,t.position)}function N(t,n,r){let i=t.schema,a=i;n.name===`svg`&&i.space===`html`&&(a=e.a,t.schema=a),t.ancestors.push(n);let o=n.name===null?t.Fragment:G(t,n.name,!0),s=V(t,n),c=H(t,n);return I(t,s,o,n),L(s,c),t.ancestors.pop(),t.schema=i,t.create(n,o,s,r)}function P(e,t,n){let r={};return L(r,H(e,t)),e.create(t,e.Fragment,r,n)}function F(e,t){return t.value}function I(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function L(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function R(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function z(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=m(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function B(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&S.call(t.properties,i)){let a=U(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&E.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function V(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else K(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else K(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function H(e,t){let n=[],r=-1,i=e.passKeys?new Map:C;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=k(e,a,o);s!==void 0&&n.push(s)}return n}function U(t,n,r){let i=e.o(t.schema,n);if(!(r==null||typeof r==`number`&&Number.isNaN(r))){if(Array.isArray(r)&&(r=i.commaSeparated?e.r(r):e.n(r)),i.property===`style`){let e=typeof r==`object`?r:W(t,String(r));return t.stylePropertyNameCase===`css`&&(e=q(e)),[`style`,e]}return[t.elementAttributeNameCase===`react`&&i.space?e.s[i.property]||i.property:i.attribute,r]}}function W(e,t){try{return(0,x.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new b("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=D+`#cannot-parse-style-attribute`,r}}function G(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=o(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=o(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return S.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);K(e)}function K(e,t){let n=new b("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=D+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function q(e){let t={},n;for(n in e)S.call(e,n)&&(t[J(n)]=e[n]);return t}function J(e){let t=e.replace(w,Y);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function Y(e){return`-`+e.toLowerCase()}function X(){return O(t.init().render(),{Fragment:n.Fragment,jsx:n.jsx,jsxs:n.jsxs,elementAttributeNameCase:`html`,stylePropertyNameCase:`css`})}exports.SeamlineSettings=X,exports.default=X;
|
package/dist/adapters/solid.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/adapters/solid.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,gBAU/B;AAED,eAAe,gBAAgB,CAAC"}
|