@tanstack/devtools 0.6.7 → 0.6.8
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/chunk/CEHNENNI.js +251 -0
- package/dist/{esm/core.js → dev.js} +10 -12
- package/dist/devtools/DJF65R3Y.js +1674 -0
- package/dist/devtools/ITBBRMTQ.js +1966 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.js +76 -0
- package/dist/server.js +44 -0
- package/package.json +21 -12
- package/src/core.tsx +3 -0
- package/dist/esm/components/content-panel.d.ts +0 -6
- package/dist/esm/components/content-panel.js +0 -32
- package/dist/esm/components/content-panel.js.map +0 -1
- package/dist/esm/components/main-panel.d.ts +0 -6
- package/dist/esm/components/main-panel.js +0 -42
- package/dist/esm/components/main-panel.js.map +0 -1
- package/dist/esm/components/tab-content.d.ts +0 -2
- package/dist/esm/components/tab-content.js +0 -23
- package/dist/esm/components/tab-content.js.map +0 -1
- package/dist/esm/components/tabs.d.ts +0 -5
- package/dist/esm/components/tabs.js +0 -75
- package/dist/esm/components/tabs.js.map +0 -1
- package/dist/esm/components/trigger.d.ts +0 -5
- package/dist/esm/components/trigger.js +0 -31
- package/dist/esm/components/trigger.js.map +0 -1
- package/dist/esm/constants.d.ts +0 -2
- package/dist/esm/constants.js +0 -7
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/context/devtools-context.d.ts +0 -62
- package/dist/esm/context/devtools-context.js +0 -77
- package/dist/esm/context/devtools-context.js.map +0 -1
- package/dist/esm/context/devtools-store.d.ts +0 -59
- package/dist/esm/context/devtools-store.js +0 -29
- package/dist/esm/context/devtools-store.js.map +0 -1
- package/dist/esm/context/draw-context.d.ts +0 -13
- package/dist/esm/context/draw-context.js +0 -55
- package/dist/esm/context/draw-context.js.map +0 -1
- package/dist/esm/context/pip-context.d.ts +0 -14
- package/dist/esm/context/pip-context.js +0 -117
- package/dist/esm/context/pip-context.js.map +0 -1
- package/dist/esm/context/use-devtools-context.d.ts +0 -40
- package/dist/esm/context/use-devtools-context.js +0 -96
- package/dist/esm/context/use-devtools-context.js.map +0 -1
- package/dist/esm/core.d.ts +0 -39
- package/dist/esm/core.js.map +0 -1
- package/dist/esm/devtools.d.ts +0 -1
- package/dist/esm/devtools.js +0 -200
- package/dist/esm/devtools.js.map +0 -1
- package/dist/esm/hooks/use-disable-tabbing.d.ts +0 -6
- package/dist/esm/hooks/use-disable-tabbing.js +0 -23
- package/dist/esm/hooks/use-disable-tabbing.js.map +0 -1
- package/dist/esm/hooks/use-head-changes.d.ts +0 -39
- package/dist/esm/hooks/use-head-changes.js +0 -65
- package/dist/esm/hooks/use-head-changes.js.map +0 -1
- package/dist/esm/index.d.ts +0 -4
- package/dist/esm/index.js +0 -8
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/styles/tokens.d.ts +0 -298
- package/dist/esm/styles/tokens.js +0 -63
- package/dist/esm/styles/tokens.js.map +0 -1
- package/dist/esm/styles/use-styles.d.ts +0 -42
- package/dist/esm/styles/use-styles.js +0 -422
- package/dist/esm/styles/use-styles.js.map +0 -1
- package/dist/esm/tabs/index.d.ts +0 -17
- package/dist/esm/tabs/index.js +0 -25
- package/dist/esm/tabs/index.js.map +0 -1
- package/dist/esm/tabs/plugins-tab.d.ts +0 -1
- package/dist/esm/tabs/plugins-tab.js +0 -88
- package/dist/esm/tabs/plugins-tab.js.map +0 -1
- package/dist/esm/tabs/seo-tab.d.ts +0 -1
- package/dist/esm/tabs/seo-tab.js +0 -296
- package/dist/esm/tabs/seo-tab.js.map +0 -1
- package/dist/esm/tabs/settings-tab.d.ts +0 -1
- package/dist/esm/tabs/settings-tab.js +0 -308
- package/dist/esm/tabs/settings-tab.js.map +0 -1
- package/dist/esm/utils/sanitize.d.ts +0 -3
- package/dist/esm/utils/sanitize.js +0 -31
- package/dist/esm/utils/sanitize.js.map +0 -1
- package/dist/esm/utils/storage.d.ts +0 -5
- package/dist/esm/utils/storage.js +0 -19
- package/dist/esm/utils/storage.js.map +0 -1
package/dist/esm/tabs/seo-tab.js
DELETED
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
import { createComponent, template, insert, memo, effect, className, setAttribute } from "solid-js/web";
|
|
2
|
-
import { createSignal, For } from "solid-js";
|
|
3
|
-
import { MainPanel, Section, SectionTitle, SectionIcon, SectionDescription } from "@tanstack/devtools-ui";
|
|
4
|
-
import { SocialBubble } from "@tanstack/devtools-ui/icons";
|
|
5
|
-
import { useStyles } from "../styles/use-styles.js";
|
|
6
|
-
import { useHeadChanges } from "../hooks/use-head-changes.js";
|
|
7
|
-
var _tmpl$ = /* @__PURE__ */ template(`<div><div> Preview</div><div></div><div></div><div>`), _tmpl$2 = /* @__PURE__ */ template(`<img alt=Preview>`), _tmpl$3 = /* @__PURE__ */ template(`<div>No Image`), _tmpl$4 = /* @__PURE__ */ template(`<div>`), _tmpl$5 = /* @__PURE__ */ template(`<div><strong>Missing tags for <!>:</strong><ul>`), _tmpl$6 = /* @__PURE__ */ template(`<li>`);
|
|
8
|
-
const SOCIALS = [
|
|
9
|
-
{
|
|
10
|
-
network: "Facebook",
|
|
11
|
-
tags: [{
|
|
12
|
-
key: "og:title",
|
|
13
|
-
prop: "title"
|
|
14
|
-
}, {
|
|
15
|
-
key: "og:description",
|
|
16
|
-
prop: "description"
|
|
17
|
-
}, {
|
|
18
|
-
key: "og:image",
|
|
19
|
-
prop: "image"
|
|
20
|
-
}, {
|
|
21
|
-
key: "og:url",
|
|
22
|
-
prop: "url"
|
|
23
|
-
}],
|
|
24
|
-
color: "#4267B2"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
network: "X/Twitter",
|
|
28
|
-
tags: [{
|
|
29
|
-
key: "twitter:title",
|
|
30
|
-
prop: "title"
|
|
31
|
-
}, {
|
|
32
|
-
key: "twitter:description",
|
|
33
|
-
prop: "description"
|
|
34
|
-
}, {
|
|
35
|
-
key: "twitter:image",
|
|
36
|
-
prop: "image"
|
|
37
|
-
}, {
|
|
38
|
-
key: "twitter:url",
|
|
39
|
-
prop: "url"
|
|
40
|
-
}],
|
|
41
|
-
color: "#1DA1F2"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
network: "LinkedIn",
|
|
45
|
-
tags: [{
|
|
46
|
-
key: "og:title",
|
|
47
|
-
prop: "title"
|
|
48
|
-
}, {
|
|
49
|
-
key: "og:description",
|
|
50
|
-
prop: "description"
|
|
51
|
-
}, {
|
|
52
|
-
key: "og:image",
|
|
53
|
-
prop: "image"
|
|
54
|
-
}, {
|
|
55
|
-
key: "og:url",
|
|
56
|
-
prop: "url"
|
|
57
|
-
}],
|
|
58
|
-
color: "#0077B5"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
network: "Discord",
|
|
62
|
-
tags: [{
|
|
63
|
-
key: "og:title",
|
|
64
|
-
prop: "title"
|
|
65
|
-
}, {
|
|
66
|
-
key: "og:description",
|
|
67
|
-
prop: "description"
|
|
68
|
-
}, {
|
|
69
|
-
key: "og:image",
|
|
70
|
-
prop: "image"
|
|
71
|
-
}, {
|
|
72
|
-
key: "og:url",
|
|
73
|
-
prop: "url"
|
|
74
|
-
}],
|
|
75
|
-
color: "#5865F2"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
network: "Slack",
|
|
79
|
-
tags: [{
|
|
80
|
-
key: "og:title",
|
|
81
|
-
prop: "title"
|
|
82
|
-
}, {
|
|
83
|
-
key: "og:description",
|
|
84
|
-
prop: "description"
|
|
85
|
-
}, {
|
|
86
|
-
key: "og:image",
|
|
87
|
-
prop: "image"
|
|
88
|
-
}, {
|
|
89
|
-
key: "og:url",
|
|
90
|
-
prop: "url"
|
|
91
|
-
}],
|
|
92
|
-
color: "#4A154B"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
network: "Mastodon",
|
|
96
|
-
tags: [{
|
|
97
|
-
key: "og:title",
|
|
98
|
-
prop: "title"
|
|
99
|
-
}, {
|
|
100
|
-
key: "og:description",
|
|
101
|
-
prop: "description"
|
|
102
|
-
}, {
|
|
103
|
-
key: "og:image",
|
|
104
|
-
prop: "image"
|
|
105
|
-
}, {
|
|
106
|
-
key: "og:url",
|
|
107
|
-
prop: "url"
|
|
108
|
-
}],
|
|
109
|
-
color: "#6364FF"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
network: "Bluesky",
|
|
113
|
-
tags: [{
|
|
114
|
-
key: "og:title",
|
|
115
|
-
prop: "title"
|
|
116
|
-
}, {
|
|
117
|
-
key: "og:description",
|
|
118
|
-
prop: "description"
|
|
119
|
-
}, {
|
|
120
|
-
key: "og:image",
|
|
121
|
-
prop: "image"
|
|
122
|
-
}, {
|
|
123
|
-
key: "og:url",
|
|
124
|
-
prop: "url"
|
|
125
|
-
}],
|
|
126
|
-
color: "#1185FE"
|
|
127
|
-
}
|
|
128
|
-
// Add more networks as needed
|
|
129
|
-
];
|
|
130
|
-
function SocialPreview(props) {
|
|
131
|
-
const styles = useStyles();
|
|
132
|
-
return (() => {
|
|
133
|
-
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$2.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
|
|
134
|
-
insert(_el$2, () => props.network, _el$3);
|
|
135
|
-
insert(_el$, (() => {
|
|
136
|
-
var _c$ = memo(() => !!props.meta.image);
|
|
137
|
-
return () => _c$() ? (() => {
|
|
138
|
-
var _el$7 = _tmpl$2();
|
|
139
|
-
effect((_p$) => {
|
|
140
|
-
var _v$8 = props.meta.image, _v$9 = styles().seoPreviewImage;
|
|
141
|
-
_v$8 !== _p$.e && setAttribute(_el$7, "src", _p$.e = _v$8);
|
|
142
|
-
_v$9 !== _p$.t && className(_el$7, _p$.t = _v$9);
|
|
143
|
-
return _p$;
|
|
144
|
-
}, {
|
|
145
|
-
e: void 0,
|
|
146
|
-
t: void 0
|
|
147
|
-
});
|
|
148
|
-
return _el$7;
|
|
149
|
-
})() : (() => {
|
|
150
|
-
var _el$8 = _tmpl$3();
|
|
151
|
-
_el$8.style.setProperty("background", "#222");
|
|
152
|
-
_el$8.style.setProperty("color", "#888");
|
|
153
|
-
_el$8.style.setProperty("display", "flex");
|
|
154
|
-
_el$8.style.setProperty("align-items", "center");
|
|
155
|
-
_el$8.style.setProperty("justify-content", "center");
|
|
156
|
-
_el$8.style.setProperty("min-height", "80px");
|
|
157
|
-
_el$8.style.setProperty("width", "100%");
|
|
158
|
-
effect(() => className(_el$8, styles().seoPreviewImage));
|
|
159
|
-
return _el$8;
|
|
160
|
-
})();
|
|
161
|
-
})(), _el$4);
|
|
162
|
-
insert(_el$4, () => props.meta.title || "No Title");
|
|
163
|
-
insert(_el$5, () => props.meta.description || "No Description");
|
|
164
|
-
insert(_el$6, () => props.meta.url || window.location.href);
|
|
165
|
-
effect((_p$) => {
|
|
166
|
-
var _v$ = styles().seoPreviewCard, _v$2 = props.color, _v$3 = styles().seoPreviewHeader, _v$4 = props.color, _v$5 = styles().seoPreviewTitle, _v$6 = styles().seoPreviewDesc, _v$7 = styles().seoPreviewUrl;
|
|
167
|
-
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
168
|
-
_v$2 !== _p$.t && ((_p$.t = _v$2) != null ? _el$.style.setProperty("border-color", _v$2) : _el$.style.removeProperty("border-color"));
|
|
169
|
-
_v$3 !== _p$.a && className(_el$2, _p$.a = _v$3);
|
|
170
|
-
_v$4 !== _p$.o && ((_p$.o = _v$4) != null ? _el$2.style.setProperty("color", _v$4) : _el$2.style.removeProperty("color"));
|
|
171
|
-
_v$5 !== _p$.i && className(_el$4, _p$.i = _v$5);
|
|
172
|
-
_v$6 !== _p$.n && className(_el$5, _p$.n = _v$6);
|
|
173
|
-
_v$7 !== _p$.s && className(_el$6, _p$.s = _v$7);
|
|
174
|
-
return _p$;
|
|
175
|
-
}, {
|
|
176
|
-
e: void 0,
|
|
177
|
-
t: void 0,
|
|
178
|
-
a: void 0,
|
|
179
|
-
o: void 0,
|
|
180
|
-
i: void 0,
|
|
181
|
-
n: void 0,
|
|
182
|
-
s: void 0
|
|
183
|
-
});
|
|
184
|
-
return _el$;
|
|
185
|
-
})();
|
|
186
|
-
}
|
|
187
|
-
const SeoTab = () => {
|
|
188
|
-
const [reports, setReports] = createSignal(analyzeHead());
|
|
189
|
-
const styles = useStyles();
|
|
190
|
-
function analyzeHead() {
|
|
191
|
-
const metaTags = Array.from(document.head.querySelectorAll("meta"));
|
|
192
|
-
const reports2 = [];
|
|
193
|
-
for (const social of SOCIALS) {
|
|
194
|
-
const found = {};
|
|
195
|
-
const missing = [];
|
|
196
|
-
for (const tag of social.tags) {
|
|
197
|
-
const meta = metaTags.find((m) => (tag.key.includes("twitter:") ? false : m.getAttribute("property") === tag.key) || m.getAttribute("name") === tag.key);
|
|
198
|
-
if (meta && meta.getAttribute("content")) {
|
|
199
|
-
found[tag.prop] = meta.getAttribute("content") || void 0;
|
|
200
|
-
} else {
|
|
201
|
-
missing.push(tag.key);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
reports2.push({
|
|
205
|
-
network: social.network,
|
|
206
|
-
found,
|
|
207
|
-
missing
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
return reports2;
|
|
211
|
-
}
|
|
212
|
-
useHeadChanges(() => {
|
|
213
|
-
setReports(analyzeHead());
|
|
214
|
-
});
|
|
215
|
-
return createComponent(MainPanel, {
|
|
216
|
-
withPadding: true,
|
|
217
|
-
get children() {
|
|
218
|
-
return createComponent(Section, {
|
|
219
|
-
get children() {
|
|
220
|
-
return [createComponent(SectionTitle, {
|
|
221
|
-
get children() {
|
|
222
|
-
return [createComponent(SectionIcon, {
|
|
223
|
-
get children() {
|
|
224
|
-
return createComponent(SocialBubble, {});
|
|
225
|
-
}
|
|
226
|
-
}), "Social previews"];
|
|
227
|
-
}
|
|
228
|
-
}), createComponent(SectionDescription, {
|
|
229
|
-
children: "See how your current page will look when shared on popular social networks. The tool checks for essential meta tags and highlights any that are missing."
|
|
230
|
-
}), (() => {
|
|
231
|
-
var _el$9 = _tmpl$4();
|
|
232
|
-
insert(_el$9, createComponent(For, {
|
|
233
|
-
get each() {
|
|
234
|
-
return reports();
|
|
235
|
-
},
|
|
236
|
-
children: (report, i) => {
|
|
237
|
-
const social = SOCIALS[i()];
|
|
238
|
-
return (() => {
|
|
239
|
-
var _el$0 = _tmpl$4();
|
|
240
|
-
insert(_el$0, createComponent(SocialPreview, {
|
|
241
|
-
get meta() {
|
|
242
|
-
return report.found;
|
|
243
|
-
},
|
|
244
|
-
get color() {
|
|
245
|
-
return social.color;
|
|
246
|
-
},
|
|
247
|
-
get network() {
|
|
248
|
-
return social.network;
|
|
249
|
-
}
|
|
250
|
-
}), null);
|
|
251
|
-
insert(_el$0, (() => {
|
|
252
|
-
var _c$2 = memo(() => report.missing.length > 0);
|
|
253
|
-
return () => _c$2() ? (() => {
|
|
254
|
-
var _el$1 = _tmpl$5(), _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$13 = _el$11.nextSibling;
|
|
255
|
-
_el$13.nextSibling;
|
|
256
|
-
var _el$14 = _el$10.nextSibling;
|
|
257
|
-
insert(_el$10, () => social?.network, _el$13);
|
|
258
|
-
insert(_el$14, createComponent(For, {
|
|
259
|
-
get each() {
|
|
260
|
-
return report.missing;
|
|
261
|
-
},
|
|
262
|
-
children: (tag) => (() => {
|
|
263
|
-
var _el$15 = _tmpl$6();
|
|
264
|
-
insert(_el$15, tag);
|
|
265
|
-
effect(() => className(_el$15, styles().seoMissingTag));
|
|
266
|
-
return _el$15;
|
|
267
|
-
})()
|
|
268
|
-
}));
|
|
269
|
-
effect((_p$) => {
|
|
270
|
-
var _v$0 = styles().seoMissingTagsSection, _v$1 = styles().seoMissingTagsList;
|
|
271
|
-
_v$0 !== _p$.e && className(_el$1, _p$.e = _v$0);
|
|
272
|
-
_v$1 !== _p$.t && className(_el$14, _p$.t = _v$1);
|
|
273
|
-
return _p$;
|
|
274
|
-
}, {
|
|
275
|
-
e: void 0,
|
|
276
|
-
t: void 0
|
|
277
|
-
});
|
|
278
|
-
return _el$1;
|
|
279
|
-
})() : null;
|
|
280
|
-
})(), null);
|
|
281
|
-
return _el$0;
|
|
282
|
-
})();
|
|
283
|
-
}
|
|
284
|
-
}));
|
|
285
|
-
effect(() => className(_el$9, styles().seoPreviewSection));
|
|
286
|
-
return _el$9;
|
|
287
|
-
})()];
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
};
|
|
293
|
-
export {
|
|
294
|
-
SeoTab
|
|
295
|
-
};
|
|
296
|
-
//# sourceMappingURL=seo-tab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seo-tab.js","sources":["../../../src/tabs/seo-tab.tsx"],"sourcesContent":["import { For, createSignal } from 'solid-js'\nimport {\n MainPanel,\n Section,\n SectionDescription,\n SectionIcon,\n SectionTitle,\n} from '@tanstack/devtools-ui'\nimport { SocialBubble } from '@tanstack/devtools-ui/icons'\nimport { useStyles } from '../styles/use-styles'\nimport { useHeadChanges } from '../hooks/use-head-changes'\n\ntype SocialMeta = {\n title?: string\n description?: string\n image?: string\n url?: string\n}\n\ntype SocialReport = {\n network: string\n found: Partial<SocialMeta>\n missing: Array<string>\n}\n\nconst SOCIALS = [\n {\n network: 'Facebook',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#4267B2',\n },\n {\n network: 'X/Twitter',\n tags: [\n { key: 'twitter:title', prop: 'title' },\n { key: 'twitter:description', prop: 'description' },\n { key: 'twitter:image', prop: 'image' },\n { key: 'twitter:url', prop: 'url' },\n ],\n color: '#1DA1F2',\n },\n {\n network: 'LinkedIn',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#0077B5',\n },\n {\n network: 'Discord',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#5865F2',\n },\n {\n network: 'Slack',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#4A154B',\n },\n {\n network: 'Mastodon',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#6364FF',\n },\n {\n network: 'Bluesky',\n tags: [\n { key: 'og:title', prop: 'title' },\n { key: 'og:description', prop: 'description' },\n { key: 'og:image', prop: 'image' },\n { key: 'og:url', prop: 'url' },\n ],\n color: '#1185FE',\n },\n // Add more networks as needed\n]\nfunction SocialPreview(props: {\n meta: SocialMeta\n color: string\n network: string\n}) {\n const styles = useStyles()\n\n return (\n <div\n class={styles().seoPreviewCard}\n style={{ 'border-color': props.color }}\n >\n <div class={styles().seoPreviewHeader} style={{ color: props.color }}>\n {props.network} Preview\n </div>\n {props.meta.image ? (\n <img\n src={props.meta.image}\n alt=\"Preview\"\n class={styles().seoPreviewImage}\n />\n ) : (\n <div\n class={styles().seoPreviewImage}\n style={{\n background: '#222',\n color: '#888',\n display: 'flex',\n 'align-items': 'center',\n 'justify-content': 'center',\n 'min-height': '80px',\n width: '100%',\n }}\n >\n No Image\n </div>\n )}\n <div class={styles().seoPreviewTitle}>\n {props.meta.title || 'No Title'}\n </div>\n <div class={styles().seoPreviewDesc}>\n {props.meta.description || 'No Description'}\n </div>\n <div class={styles().seoPreviewUrl}>\n {props.meta.url || window.location.href}\n </div>\n </div>\n )\n}\nexport const SeoTab = () => {\n const [reports, setReports] = createSignal<Array<SocialReport>>(analyzeHead())\n const styles = useStyles()\n\n function analyzeHead(): Array<SocialReport> {\n const metaTags = Array.from(document.head.querySelectorAll('meta'))\n const reports: Array<SocialReport> = []\n\n for (const social of SOCIALS) {\n const found: Partial<SocialMeta> = {}\n const missing: Array<string> = []\n for (const tag of social.tags) {\n const meta = metaTags.find(\n (m) =>\n (tag.key.includes('twitter:')\n ? false\n : m.getAttribute('property') === tag.key) ||\n m.getAttribute('name') === tag.key,\n )\n\n if (meta && meta.getAttribute('content')) {\n found[tag.prop as keyof SocialMeta] =\n meta.getAttribute('content') || undefined\n } else {\n missing.push(tag.key)\n }\n }\n reports.push({ network: social.network, found, missing })\n }\n return reports\n }\n\n useHeadChanges(() => {\n setReports(analyzeHead())\n })\n\n return (\n <MainPanel withPadding>\n <Section>\n <SectionTitle>\n <SectionIcon>\n <SocialBubble />\n </SectionIcon>\n Social previews\n </SectionTitle>\n <SectionDescription>\n See how your current page will look when shared on popular social\n networks. The tool checks for essential meta tags and highlights any\n that are missing.\n </SectionDescription>\n <div class={styles().seoPreviewSection}>\n <For each={reports()}>\n {(report, i) => {\n const social = SOCIALS[i()]\n return (\n <div>\n <SocialPreview\n meta={report.found}\n color={social!.color}\n network={social!.network}\n />\n {report.missing.length > 0 ? (\n <>\n <div class={styles().seoMissingTagsSection}>\n <strong>Missing tags for {social?.network}:</strong>\n\n <ul class={styles().seoMissingTagsList}>\n <For each={report.missing}>\n {(tag) => (\n <li class={styles().seoMissingTag}>{tag}</li>\n )}\n </For>\n </ul>\n </div>\n </>\n ) : null}\n </div>\n )\n }}\n </For>\n </div>\n </Section>\n </MainPanel>\n )\n}\n"],"names":["SOCIALS","network","tags","key","prop","color","SocialPreview","props","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$6","_$insert","_c$","_$memo","meta","image","_el$7","_tmpl$2","_$effect","_p$","_v$8","_v$9","seoPreviewImage","e","_$setAttribute","t","_$className","undefined","_el$8","_tmpl$3","style","setProperty","title","description","url","window","location","href","_v$","seoPreviewCard","_v$2","_v$3","seoPreviewHeader","_v$4","_v$5","seoPreviewTitle","_v$6","seoPreviewDesc","_v$7","seoPreviewUrl","removeProperty","a","o","i","n","s","SeoTab","reports","setReports","createSignal","analyzeHead","metaTags","Array","from","document","head","querySelectorAll","social","found","missing","tag","find","m","includes","getAttribute","push","useHeadChanges","_$createComponent","MainPanel","withPadding","children","Section","SectionTitle","SectionIcon","SocialBubble","SectionDescription","_el$9","_tmpl$4","For","each","report","_el$0","_c$2","length","_el$1","_tmpl$5","_el$10","_el$11","_el$13","_el$14","_el$15","_tmpl$6","seoMissingTag","_v$0","seoMissingTagsSection","_v$1","seoMissingTagsList","seoPreviewSection"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const SettingsTab: () => import("solid-js").JSX.Element;
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { createComponent, template, insert, effect, className } from "solid-js/web";
|
|
2
|
-
import { createMemo, Show } from "solid-js";
|
|
3
|
-
import { MainPanel, Section, SectionTitle, SectionIcon, SectionDescription, Checkbox, Select, Input, Button } from "@tanstack/devtools-ui";
|
|
4
|
-
import { SettingsCog, Link, Keyboard, GeoTag } from "@tanstack/devtools-ui/icons";
|
|
5
|
-
import { useDevtoolsSettings } from "../context/use-devtools-context.js";
|
|
6
|
-
import { uppercaseFirstLetter } from "../utils/sanitize.js";
|
|
7
|
-
import { useStyles } from "../styles/use-styles.js";
|
|
8
|
-
var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div><div></div>Final shortcut is: `), _tmpl$3 = /* @__PURE__ */ template(`<div><div>`);
|
|
9
|
-
const SettingsTab = () => {
|
|
10
|
-
const {
|
|
11
|
-
setSettings,
|
|
12
|
-
settings
|
|
13
|
-
} = useDevtoolsSettings();
|
|
14
|
-
const styles = useStyles();
|
|
15
|
-
const hotkey = createMemo(() => settings().openHotkey);
|
|
16
|
-
const modifiers = ["Control", "Alt", "Meta", "Shift"];
|
|
17
|
-
const changeHotkey = (newHotkey) => () => {
|
|
18
|
-
if (hotkey().includes(newHotkey)) {
|
|
19
|
-
return setSettings({
|
|
20
|
-
openHotkey: hotkey().filter((key) => key !== newHotkey)
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
const existingModifiers = hotkey().filter((key) => modifiers.includes(key));
|
|
24
|
-
const otherModifiers = hotkey().filter((key) => !modifiers.includes(key));
|
|
25
|
-
setSettings({
|
|
26
|
-
openHotkey: [...existingModifiers, newHotkey, ...otherModifiers]
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
return createComponent(MainPanel, {
|
|
30
|
-
withPadding: true,
|
|
31
|
-
get children() {
|
|
32
|
-
return [createComponent(Section, {
|
|
33
|
-
get children() {
|
|
34
|
-
return [createComponent(SectionTitle, {
|
|
35
|
-
get children() {
|
|
36
|
-
return [createComponent(SectionIcon, {
|
|
37
|
-
get children() {
|
|
38
|
-
return createComponent(SettingsCog, {});
|
|
39
|
-
}
|
|
40
|
-
}), "General"];
|
|
41
|
-
}
|
|
42
|
-
}), createComponent(SectionDescription, {
|
|
43
|
-
children: "Configure general behavior of the devtools panel."
|
|
44
|
-
}), (() => {
|
|
45
|
-
var _el$ = _tmpl$();
|
|
46
|
-
insert(_el$, createComponent(Checkbox, {
|
|
47
|
-
label: "Default open",
|
|
48
|
-
description: "Automatically open the devtools panel when the page loads",
|
|
49
|
-
onChange: () => setSettings({
|
|
50
|
-
defaultOpen: !settings().defaultOpen
|
|
51
|
-
}),
|
|
52
|
-
get checked() {
|
|
53
|
-
return settings().defaultOpen;
|
|
54
|
-
}
|
|
55
|
-
}), null);
|
|
56
|
-
insert(_el$, createComponent(Checkbox, {
|
|
57
|
-
label: "Hide trigger until hovered",
|
|
58
|
-
description: "Keep the devtools trigger button hidden until you hover over its area",
|
|
59
|
-
onChange: () => setSettings({
|
|
60
|
-
hideUntilHover: !settings().hideUntilHover
|
|
61
|
-
}),
|
|
62
|
-
get checked() {
|
|
63
|
-
return settings().hideUntilHover;
|
|
64
|
-
}
|
|
65
|
-
}), null);
|
|
66
|
-
insert(_el$, createComponent(Select, {
|
|
67
|
-
label: "Theme",
|
|
68
|
-
description: "Choose the theme for the devtools panel",
|
|
69
|
-
get value() {
|
|
70
|
-
return settings().theme;
|
|
71
|
-
},
|
|
72
|
-
options: [{
|
|
73
|
-
label: "Dark",
|
|
74
|
-
value: "dark"
|
|
75
|
-
}, {
|
|
76
|
-
label: "Light",
|
|
77
|
-
value: "light"
|
|
78
|
-
}],
|
|
79
|
-
onChange: (value) => setSettings({
|
|
80
|
-
theme: value
|
|
81
|
-
})
|
|
82
|
-
}), null);
|
|
83
|
-
effect(() => className(_el$, styles().settingsGroup));
|
|
84
|
-
return _el$;
|
|
85
|
-
})()];
|
|
86
|
-
}
|
|
87
|
-
}), createComponent(Section, {
|
|
88
|
-
get children() {
|
|
89
|
-
return [createComponent(SectionTitle, {
|
|
90
|
-
get children() {
|
|
91
|
-
return [createComponent(SectionIcon, {
|
|
92
|
-
get children() {
|
|
93
|
-
return createComponent(Link, {});
|
|
94
|
-
}
|
|
95
|
-
}), "URL Configuration"];
|
|
96
|
-
}
|
|
97
|
-
}), createComponent(SectionDescription, {
|
|
98
|
-
children: "Control when devtools are available based on URL parameters."
|
|
99
|
-
}), (() => {
|
|
100
|
-
var _el$2 = _tmpl$();
|
|
101
|
-
insert(_el$2, createComponent(Checkbox, {
|
|
102
|
-
label: "Require URL Flag",
|
|
103
|
-
description: "Only show devtools when a specific URL parameter is present",
|
|
104
|
-
get checked() {
|
|
105
|
-
return settings().requireUrlFlag;
|
|
106
|
-
},
|
|
107
|
-
onChange: (checked) => setSettings({
|
|
108
|
-
requireUrlFlag: checked
|
|
109
|
-
})
|
|
110
|
-
}), null);
|
|
111
|
-
insert(_el$2, createComponent(Show, {
|
|
112
|
-
get when() {
|
|
113
|
-
return settings().requireUrlFlag;
|
|
114
|
-
},
|
|
115
|
-
get children() {
|
|
116
|
-
var _el$3 = _tmpl$();
|
|
117
|
-
insert(_el$3, createComponent(Input, {
|
|
118
|
-
label: "URL flag",
|
|
119
|
-
description: "Enter the URL parameter name (e.g., 'debug' for ?debug=true)",
|
|
120
|
-
placeholder: "debug",
|
|
121
|
-
get value() {
|
|
122
|
-
return settings().urlFlag;
|
|
123
|
-
},
|
|
124
|
-
onChange: (e) => setSettings({
|
|
125
|
-
urlFlag: e
|
|
126
|
-
})
|
|
127
|
-
}));
|
|
128
|
-
effect(() => className(_el$3, styles().conditionalSetting));
|
|
129
|
-
return _el$3;
|
|
130
|
-
}
|
|
131
|
-
}), null);
|
|
132
|
-
effect(() => className(_el$2, styles().settingsGroup));
|
|
133
|
-
return _el$2;
|
|
134
|
-
})()];
|
|
135
|
-
}
|
|
136
|
-
}), createComponent(Section, {
|
|
137
|
-
get children() {
|
|
138
|
-
return [createComponent(SectionTitle, {
|
|
139
|
-
get children() {
|
|
140
|
-
return [createComponent(SectionIcon, {
|
|
141
|
-
get children() {
|
|
142
|
-
return createComponent(Keyboard, {});
|
|
143
|
-
}
|
|
144
|
-
}), "Keyboard"];
|
|
145
|
-
}
|
|
146
|
-
}), createComponent(SectionDescription, {
|
|
147
|
-
children: "Customize keyboard shortcuts for quick access."
|
|
148
|
-
}), (() => {
|
|
149
|
-
var _el$4 = _tmpl$2(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
|
|
150
|
-
insert(_el$5, createComponent(Show, {
|
|
151
|
-
keyed: true,
|
|
152
|
-
get when() {
|
|
153
|
-
return hotkey();
|
|
154
|
-
},
|
|
155
|
-
get children() {
|
|
156
|
-
return [createComponent(Button, {
|
|
157
|
-
variant: "success",
|
|
158
|
-
get onclick() {
|
|
159
|
-
return changeHotkey("Shift");
|
|
160
|
-
},
|
|
161
|
-
get outline() {
|
|
162
|
-
return !hotkey().includes("Shift");
|
|
163
|
-
},
|
|
164
|
-
children: "Shift"
|
|
165
|
-
}), createComponent(Button, {
|
|
166
|
-
variant: "success",
|
|
167
|
-
get onclick() {
|
|
168
|
-
return changeHotkey("Alt");
|
|
169
|
-
},
|
|
170
|
-
get outline() {
|
|
171
|
-
return !hotkey().includes("Alt");
|
|
172
|
-
},
|
|
173
|
-
children: "Alt"
|
|
174
|
-
}), createComponent(Button, {
|
|
175
|
-
variant: "success",
|
|
176
|
-
get onclick() {
|
|
177
|
-
return changeHotkey("Meta");
|
|
178
|
-
},
|
|
179
|
-
get outline() {
|
|
180
|
-
return !hotkey().includes("Meta");
|
|
181
|
-
},
|
|
182
|
-
children: "Meta"
|
|
183
|
-
}), createComponent(Button, {
|
|
184
|
-
variant: "success",
|
|
185
|
-
get onclick() {
|
|
186
|
-
return changeHotkey("Control");
|
|
187
|
-
},
|
|
188
|
-
get outline() {
|
|
189
|
-
return !hotkey().includes("Control");
|
|
190
|
-
},
|
|
191
|
-
children: "Control"
|
|
192
|
-
})];
|
|
193
|
-
}
|
|
194
|
-
}));
|
|
195
|
-
insert(_el$4, createComponent(Input, {
|
|
196
|
-
label: "Hotkey to open/close devtools",
|
|
197
|
-
description: "Use '+' to combine keys (e.g., 'a+b' or 'd'). This will be used with the enabled modifiers from above",
|
|
198
|
-
placeholder: "a",
|
|
199
|
-
get value() {
|
|
200
|
-
return hotkey().filter((key) => !["Shift", "Meta", "Alt", "Ctrl"].includes(key)).join("+");
|
|
201
|
-
},
|
|
202
|
-
onChange: (e) => {
|
|
203
|
-
const makeModifierArray = (key) => {
|
|
204
|
-
if (key.length === 1) return [uppercaseFirstLetter(key)];
|
|
205
|
-
const modifiers3 = [];
|
|
206
|
-
for (const character of key) {
|
|
207
|
-
const newLetter = uppercaseFirstLetter(character);
|
|
208
|
-
if (!modifiers3.includes(newLetter)) modifiers3.push(newLetter);
|
|
209
|
-
}
|
|
210
|
-
return modifiers3;
|
|
211
|
-
};
|
|
212
|
-
const modifiers2 = e.split("+").flatMap((key) => makeModifierArray(key)).filter(Boolean);
|
|
213
|
-
return setSettings({
|
|
214
|
-
openHotkey: [...hotkey().filter((key) => ["Shift", "Meta", "Alt", "Ctrl"].includes(key)), ...modifiers2]
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
}), _el$6);
|
|
218
|
-
insert(_el$4, () => hotkey().join(" + "), null);
|
|
219
|
-
effect((_p$) => {
|
|
220
|
-
var _v$ = styles().settingsGroup, _v$2 = styles().settingsModifiers;
|
|
221
|
-
_v$ !== _p$.e && className(_el$4, _p$.e = _v$);
|
|
222
|
-
_v$2 !== _p$.t && className(_el$5, _p$.t = _v$2);
|
|
223
|
-
return _p$;
|
|
224
|
-
}, {
|
|
225
|
-
e: void 0,
|
|
226
|
-
t: void 0
|
|
227
|
-
});
|
|
228
|
-
return _el$4;
|
|
229
|
-
})()];
|
|
230
|
-
}
|
|
231
|
-
}), createComponent(Section, {
|
|
232
|
-
get children() {
|
|
233
|
-
return [createComponent(SectionTitle, {
|
|
234
|
-
get children() {
|
|
235
|
-
return [createComponent(SectionIcon, {
|
|
236
|
-
get children() {
|
|
237
|
-
return createComponent(GeoTag, {});
|
|
238
|
-
}
|
|
239
|
-
}), "Position"];
|
|
240
|
-
}
|
|
241
|
-
}), createComponent(SectionDescription, {
|
|
242
|
-
children: "Adjust the position of the trigger button and devtools panel."
|
|
243
|
-
}), (() => {
|
|
244
|
-
var _el$7 = _tmpl$3(), _el$8 = _el$7.firstChild;
|
|
245
|
-
insert(_el$8, createComponent(Select, {
|
|
246
|
-
label: "Trigger Position",
|
|
247
|
-
options: [{
|
|
248
|
-
label: "Bottom Right",
|
|
249
|
-
value: "bottom-right"
|
|
250
|
-
}, {
|
|
251
|
-
label: "Bottom Left",
|
|
252
|
-
value: "bottom-left"
|
|
253
|
-
}, {
|
|
254
|
-
label: "Top Right",
|
|
255
|
-
value: "top-right"
|
|
256
|
-
}, {
|
|
257
|
-
label: "Top Left",
|
|
258
|
-
value: "top-left"
|
|
259
|
-
}, {
|
|
260
|
-
label: "Middle Right",
|
|
261
|
-
value: "middle-right"
|
|
262
|
-
}, {
|
|
263
|
-
label: "Middle Left",
|
|
264
|
-
value: "middle-left"
|
|
265
|
-
}],
|
|
266
|
-
get value() {
|
|
267
|
-
return settings().position;
|
|
268
|
-
},
|
|
269
|
-
onChange: (value) => setSettings({
|
|
270
|
-
position: value
|
|
271
|
-
})
|
|
272
|
-
}), null);
|
|
273
|
-
insert(_el$8, createComponent(Select, {
|
|
274
|
-
label: "Panel Position",
|
|
275
|
-
get value() {
|
|
276
|
-
return settings().panelLocation;
|
|
277
|
-
},
|
|
278
|
-
options: [{
|
|
279
|
-
label: "Top",
|
|
280
|
-
value: "top"
|
|
281
|
-
}, {
|
|
282
|
-
label: "Bottom",
|
|
283
|
-
value: "bottom"
|
|
284
|
-
}],
|
|
285
|
-
onChange: (value) => setSettings({
|
|
286
|
-
panelLocation: value
|
|
287
|
-
})
|
|
288
|
-
}), null);
|
|
289
|
-
effect((_p$) => {
|
|
290
|
-
var _v$3 = styles().settingsGroup, _v$4 = styles().settingRow;
|
|
291
|
-
_v$3 !== _p$.e && className(_el$7, _p$.e = _v$3);
|
|
292
|
-
_v$4 !== _p$.t && className(_el$8, _p$.t = _v$4);
|
|
293
|
-
return _p$;
|
|
294
|
-
}, {
|
|
295
|
-
e: void 0,
|
|
296
|
-
t: void 0
|
|
297
|
-
});
|
|
298
|
-
return _el$7;
|
|
299
|
-
})()];
|
|
300
|
-
}
|
|
301
|
-
})];
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
};
|
|
305
|
-
export {
|
|
306
|
-
SettingsTab
|
|
307
|
-
};
|
|
308
|
-
//# sourceMappingURL=settings-tab.js.map
|