@tanstack/solid-router 1.121.21 → 1.121.24
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/cjs/Asset.cjs +59 -15
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/Asset.d.cts +2 -1
- package/dist/esm/Asset.d.ts +2 -1
- package/dist/esm/Asset.js +60 -16
- package/dist/esm/Asset.js.map +1 -1
- package/dist/source/Asset.d.ts +2 -1
- package/dist/source/Asset.jsx +45 -7
- package/dist/source/Asset.jsx.map +1 -1
- package/package.json +1 -1
- package/src/Asset.tsx +76 -7
package/dist/cjs/Asset.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const web = require("solid-js/web");
|
|
4
4
|
const meta = require("@solidjs/meta");
|
|
5
|
+
const Solid = require("solid-js");
|
|
5
6
|
var _tmpl$ = /* @__PURE__ */ web.template(`<link>`), _tmpl$2 = /* @__PURE__ */ web.template(`<script>`);
|
|
6
7
|
function Asset({
|
|
7
8
|
tag,
|
|
@@ -26,24 +27,67 @@ function Asset({
|
|
|
26
27
|
innerHTML: children
|
|
27
28
|
}));
|
|
28
29
|
case "script":
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return _el$2;
|
|
34
|
-
})();
|
|
35
|
-
}
|
|
36
|
-
if (typeof children === "string") return (() => {
|
|
37
|
-
var _el$3 = _tmpl$2();
|
|
38
|
-
web.spread(_el$3, web.mergeProps(attrs, {
|
|
39
|
-
"innerHTML": children
|
|
40
|
-
}), false, false);
|
|
41
|
-
return _el$3;
|
|
42
|
-
})();
|
|
43
|
-
return null;
|
|
30
|
+
return web.createComponent(Script, {
|
|
31
|
+
attrs,
|
|
32
|
+
children
|
|
33
|
+
});
|
|
44
34
|
default:
|
|
45
35
|
return null;
|
|
46
36
|
}
|
|
47
37
|
}
|
|
38
|
+
function Script({
|
|
39
|
+
attrs,
|
|
40
|
+
children
|
|
41
|
+
}) {
|
|
42
|
+
Solid.onMount(() => {
|
|
43
|
+
if (attrs == null ? void 0 : attrs.src) {
|
|
44
|
+
const script = document.createElement("script");
|
|
45
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
46
|
+
if (value !== void 0 && value !== false) {
|
|
47
|
+
script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
document.head.appendChild(script);
|
|
51
|
+
Solid.onCleanup(() => {
|
|
52
|
+
if (script.parentNode) {
|
|
53
|
+
script.parentNode.removeChild(script);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
} else if (typeof children === "string") {
|
|
57
|
+
const script = document.createElement("script");
|
|
58
|
+
script.textContent = children;
|
|
59
|
+
if (attrs) {
|
|
60
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
61
|
+
if (value !== void 0 && value !== false) {
|
|
62
|
+
script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
document.head.appendChild(script);
|
|
67
|
+
Solid.onCleanup(() => {
|
|
68
|
+
if (script.parentNode) {
|
|
69
|
+
script.parentNode.removeChild(script);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
if ((attrs == null ? void 0 : attrs.src) && typeof attrs.src === "string") {
|
|
75
|
+
return (() => {
|
|
76
|
+
var _el$2 = _tmpl$2();
|
|
77
|
+
web.spread(_el$2, attrs, false, false);
|
|
78
|
+
return _el$2;
|
|
79
|
+
})();
|
|
80
|
+
}
|
|
81
|
+
if (typeof children === "string") {
|
|
82
|
+
return (() => {
|
|
83
|
+
var _el$3 = _tmpl$2();
|
|
84
|
+
web.spread(_el$3, web.mergeProps(attrs, {
|
|
85
|
+
"innerHTML": children
|
|
86
|
+
}), false, false);
|
|
87
|
+
return _el$3;
|
|
88
|
+
})();
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
48
92
|
exports.Asset = Asset;
|
|
49
93
|
//# sourceMappingURL=Asset.cjs.map
|
package/dist/cjs/Asset.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.cjs","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport function Asset({
|
|
1
|
+
{"version":3,"file":"Asset.cjs","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <link {...attrs} />\n case 'style':\n return <Style {...attrs} innerHTML={children} />\n case 'script':\n return <Script attrs={attrs}>{children}</Script>\n default:\n return null\n }\n}\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nfunction Script({\n attrs,\n children,\n}: {\n attrs?: ScriptAttrs\n children?: string\n}): JSX.Element | null {\n onMount(() => {\n if (attrs?.src) {\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n } else if (typeof children === 'string') {\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n })\n\n if (attrs?.src && typeof attrs.src === 'string') {\n return <script {...attrs} />\n }\n\n if (typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n return null\n}\n"],"names":["Asset","tag","attrs","children","_$createComponent","Title","_$mergeProps","Meta","_el$","_tmpl$","Style","innerHTML","Script","onMount","src","script","document","createElement","key","value","Object","entries","undefined","setAttribute","String","head","appendChild","onCleanup","parentNode","removeChild","textContent","_el$2","_tmpl$2","_el$3"],"mappings":";;;;;;AAKO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AACgB,GAAuB;AACvC,UAAQF,KAAG;AAAA,IACT,KAAK;AACHG,aAAAA,oBAAQC,KAAAA,OAAKC,IAAAA,WAAKJ,OAAK;AAAA,QAAAC;AAAAA,MAAAA,CAAW,CAAA;AAAA,IACpC,KAAK;AACHC,aAAAA,IAAAA,gBAAQG,WAASL,KAAK;AAAA,IACxB,KAAK;AACH,cAAA,MAAA;AAAA,YAAAM,OAAAC,OAAA;AAAAD,YAAAA,OAAAA,MAAiBN,OAAK,OAAA,KAAA;AAAAM,eAAAA;AAAAA,MAAAA,GAAA;AAAA,IACxB,KAAK;AACHJ,aAAAA,oBAAQM,KAAAA,OAAKJ,IAAAA,WAAKJ,OAAK;AAAA,QAAES,WAAWR;AAAAA,MAAAA,CAAQ,CAAA;AAAA,IAC9C,KAAK;AACH,aAAAC,IAAAA,gBAAQQ,QAAM;AAAA,QAACV;AAAAA,QAAYC;AAAAA,MAAAA,CAAW;AAAA,IACxC;AACS,aAAA;AAAA,EAAA;AAEb;AAOA,SAASS,OAAO;AAAA,EACdV;AAAAA,EACAC;AAIF,GAAuB;AACrBU,QAAAA,QAAQ,MAAM;AACZ,QAAIX,+BAAOY,KAAK;AACRC,YAAAA,SAASC,SAASC,cAAc,QAAQ;AAE9C,iBAAW,CAACC,KAAKC,KAAK,KAAKC,OAAOC,QAAQnB,KAAK,GAAG;AAC5CiB,YAAAA,UAAUG,UAAaH,UAAU,OAAO;AACnCI,iBAAAA,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,QAAA;AAAA,MACF;AAGOM,eAAAA,KAAKC,YAAYX,MAAM;AAEhCY,YAAAA,UAAU,MAAM;AACd,YAAIZ,OAAOa,YAAY;AACdA,iBAAAA,WAAWC,YAAYd,MAAM;AAAA,QAAA;AAAA,MACtC,CACD;AAAA,IAAA,WACQ,OAAOZ,aAAa,UAAU;AACjCY,YAAAA,SAASC,SAASC,cAAc,QAAQ;AAC9CF,aAAOe,cAAc3B;AAErB,UAAID,OAAO;AACT,mBAAW,CAACgB,KAAKC,KAAK,KAAKC,OAAOC,QAAQnB,KAAK,GAAG;AAC5CiB,cAAAA,UAAUG,UAAaH,UAAU,OAAO;AACnCI,mBAAAA,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAGOM,eAAAA,KAAKC,YAAYX,MAAM;AAEhCY,YAAAA,UAAU,MAAM;AACd,YAAIZ,OAAOa,YAAY;AACdA,iBAAAA,WAAWC,YAAYd,MAAM;AAAA,QAAA;AAAA,MACtC,CACD;AAAA,IAAA;AAAA,EACH,CACD;AAED,OAAIb,+BAAOY,QAAO,OAAOZ,MAAMY,QAAQ,UAAU;AAC/C,YAAA,MAAA;AAAA,UAAAiB,QAAAC,QAAA;AAAAD,UAAAA,OAAAA,OAAmB7B,OAAK,OAAA,KAAA;AAAA6B,aAAAA;AAAAA,IAAAA,GAAA;AAAA,EAAA;AAGtB,MAAA,OAAO5B,aAAa,UAAU;AAChC,YAAA,MAAA;AAAA,UAAA8B,QAAAD,QAAA;AAAAC,iBAAAA,OAAA3B,eAAmBJ,OAAK;AAAA,QAAA,aAAaC;AAAAA,MAAAA,CAAQ,GAAA,OAAA,KAAA;AAAA8B,aAAAA;AAAAA,IAAAA,GAAA;AAAA,EAAA;AAGxC,SAAA;AACT;;"}
|
package/dist/cjs/Asset.d.cts
CHANGED
package/dist/esm/Asset.d.ts
CHANGED
package/dist/esm/Asset.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createComponent, mergeProps, template, spread } from "solid-js/web";
|
|
2
2
|
import { Style, Meta, Title } from "@solidjs/meta";
|
|
3
|
+
import { onMount, onCleanup } from "solid-js";
|
|
3
4
|
var _tmpl$ = /* @__PURE__ */ template(`<link>`), _tmpl$2 = /* @__PURE__ */ template(`<script>`);
|
|
4
5
|
function Asset({
|
|
5
6
|
tag,
|
|
@@ -24,25 +25,68 @@ function Asset({
|
|
|
24
25
|
innerHTML: children
|
|
25
26
|
}));
|
|
26
27
|
case "script":
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return _el$2;
|
|
32
|
-
})();
|
|
33
|
-
}
|
|
34
|
-
if (typeof children === "string") return (() => {
|
|
35
|
-
var _el$3 = _tmpl$2();
|
|
36
|
-
spread(_el$3, mergeProps(attrs, {
|
|
37
|
-
"innerHTML": children
|
|
38
|
-
}), false, false);
|
|
39
|
-
return _el$3;
|
|
40
|
-
})();
|
|
41
|
-
return null;
|
|
28
|
+
return createComponent(Script, {
|
|
29
|
+
attrs,
|
|
30
|
+
children
|
|
31
|
+
});
|
|
42
32
|
default:
|
|
43
33
|
return null;
|
|
44
34
|
}
|
|
45
35
|
}
|
|
36
|
+
function Script({
|
|
37
|
+
attrs,
|
|
38
|
+
children
|
|
39
|
+
}) {
|
|
40
|
+
onMount(() => {
|
|
41
|
+
if (attrs == null ? void 0 : attrs.src) {
|
|
42
|
+
const script = document.createElement("script");
|
|
43
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
44
|
+
if (value !== void 0 && value !== false) {
|
|
45
|
+
script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
document.head.appendChild(script);
|
|
49
|
+
onCleanup(() => {
|
|
50
|
+
if (script.parentNode) {
|
|
51
|
+
script.parentNode.removeChild(script);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
} else if (typeof children === "string") {
|
|
55
|
+
const script = document.createElement("script");
|
|
56
|
+
script.textContent = children;
|
|
57
|
+
if (attrs) {
|
|
58
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
59
|
+
if (value !== void 0 && value !== false) {
|
|
60
|
+
script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
document.head.appendChild(script);
|
|
65
|
+
onCleanup(() => {
|
|
66
|
+
if (script.parentNode) {
|
|
67
|
+
script.parentNode.removeChild(script);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if ((attrs == null ? void 0 : attrs.src) && typeof attrs.src === "string") {
|
|
73
|
+
return (() => {
|
|
74
|
+
var _el$2 = _tmpl$2();
|
|
75
|
+
spread(_el$2, attrs, false, false);
|
|
76
|
+
return _el$2;
|
|
77
|
+
})();
|
|
78
|
+
}
|
|
79
|
+
if (typeof children === "string") {
|
|
80
|
+
return (() => {
|
|
81
|
+
var _el$3 = _tmpl$2();
|
|
82
|
+
spread(_el$3, mergeProps(attrs, {
|
|
83
|
+
"innerHTML": children
|
|
84
|
+
}), false, false);
|
|
85
|
+
return _el$3;
|
|
86
|
+
})();
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
46
90
|
export {
|
|
47
91
|
Asset
|
|
48
92
|
};
|
package/dist/esm/Asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport function Asset({
|
|
1
|
+
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <link {...attrs} />\n case 'style':\n return <Style {...attrs} innerHTML={children} />\n case 'script':\n return <Script attrs={attrs}>{children}</Script>\n default:\n return null\n }\n}\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nfunction Script({\n attrs,\n children,\n}: {\n attrs?: ScriptAttrs\n children?: string\n}): JSX.Element | null {\n onMount(() => {\n if (attrs?.src) {\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n } else if (typeof children === 'string') {\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n })\n\n if (attrs?.src && typeof attrs.src === 'string') {\n return <script {...attrs} />\n }\n\n if (typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n return null\n}\n"],"names":["Asset","tag","attrs","children","_$createComponent","Title","_$mergeProps","Meta","_el$","_tmpl$","Style","innerHTML","Script","onMount","src","script","document","createElement","key","value","Object","entries","undefined","setAttribute","String","head","appendChild","onCleanup","parentNode","removeChild","textContent","_el$2","_tmpl$2","_el$3"],"mappings":";;;;AAKO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AACgB,GAAuB;AACvC,UAAQF,KAAG;AAAA,IACT,KAAK;AACHG,aAAAA,gBAAQC,OAAKC,WAAKJ,OAAK;AAAA,QAAAC;AAAAA,MAAAA,CAAW,CAAA;AAAA,IACpC,KAAK;AACHC,aAAAA,gBAAQG,MAASL,KAAK;AAAA,IACxB,KAAK;AACH,cAAA,MAAA;AAAA,YAAAM,OAAAC,OAAA;AAAAD,eAAAA,MAAiBN,OAAK,OAAA,KAAA;AAAAM,eAAAA;AAAAA,MAAAA,GAAA;AAAA,IACxB,KAAK;AACHJ,aAAAA,gBAAQM,OAAKJ,WAAKJ,OAAK;AAAA,QAAES,WAAWR;AAAAA,MAAAA,CAAQ,CAAA;AAAA,IAC9C,KAAK;AACH,aAAAC,gBAAQQ,QAAM;AAAA,QAACV;AAAAA,QAAYC;AAAAA,MAAAA,CAAW;AAAA,IACxC;AACS,aAAA;AAAA,EAAA;AAEb;AAOA,SAASS,OAAO;AAAA,EACdV;AAAAA,EACAC;AAIF,GAAuB;AACrBU,UAAQ,MAAM;AACZ,QAAIX,+BAAOY,KAAK;AACRC,YAAAA,SAASC,SAASC,cAAc,QAAQ;AAE9C,iBAAW,CAACC,KAAKC,KAAK,KAAKC,OAAOC,QAAQnB,KAAK,GAAG;AAC5CiB,YAAAA,UAAUG,UAAaH,UAAU,OAAO;AACnCI,iBAAAA,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,QAAA;AAAA,MACF;AAGOM,eAAAA,KAAKC,YAAYX,MAAM;AAEhCY,gBAAU,MAAM;AACd,YAAIZ,OAAOa,YAAY;AACdA,iBAAAA,WAAWC,YAAYd,MAAM;AAAA,QAAA;AAAA,MACtC,CACD;AAAA,IAAA,WACQ,OAAOZ,aAAa,UAAU;AACjCY,YAAAA,SAASC,SAASC,cAAc,QAAQ;AAC9CF,aAAOe,cAAc3B;AAErB,UAAID,OAAO;AACT,mBAAW,CAACgB,KAAKC,KAAK,KAAKC,OAAOC,QAAQnB,KAAK,GAAG;AAC5CiB,cAAAA,UAAUG,UAAaH,UAAU,OAAO;AACnCI,mBAAAA,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAGOM,eAAAA,KAAKC,YAAYX,MAAM;AAEhCY,gBAAU,MAAM;AACd,YAAIZ,OAAOa,YAAY;AACdA,iBAAAA,WAAWC,YAAYd,MAAM;AAAA,QAAA;AAAA,MACtC,CACD;AAAA,IAAA;AAAA,EACH,CACD;AAED,OAAIb,+BAAOY,QAAO,OAAOZ,MAAMY,QAAQ,UAAU;AAC/C,YAAA,MAAA;AAAA,UAAAiB,QAAAC,QAAA;AAAAD,aAAAA,OAAmB7B,OAAK,OAAA,KAAA;AAAA6B,aAAAA;AAAAA,IAAAA,GAAA;AAAA,EAAA;AAGtB,MAAA,OAAO5B,aAAa,UAAU;AAChC,YAAA,MAAA;AAAA,UAAA8B,QAAAD,QAAA;AAAAC,aAAAA,OAAA3B,WAAmBJ,OAAK;AAAA,QAAA,aAAaC;AAAAA,MAAAA,CAAQ,GAAA,OAAA,KAAA;AAAA8B,aAAAA;AAAAA,IAAAA,GAAA;AAAA,EAAA;AAGxC,SAAA;AACT;"}
|
package/dist/source/Asset.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { RouterManagedTag } from '@tanstack/router-core';
|
|
2
|
-
|
|
2
|
+
import type { JSX } from 'solid-js';
|
|
3
|
+
export declare function Asset({ tag, attrs, children, }: RouterManagedTag): JSX.Element | null;
|
package/dist/source/Asset.jsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Meta, Style, Title } from '@solidjs/meta';
|
|
2
|
-
|
|
2
|
+
import { onCleanup, onMount } from 'solid-js';
|
|
3
|
+
export function Asset({ tag, attrs, children, }) {
|
|
3
4
|
switch (tag) {
|
|
4
5
|
case 'title':
|
|
5
6
|
return <Title {...attrs}>{children}</Title>;
|
|
@@ -10,14 +11,51 @@ export function Asset({ tag, attrs, children }) {
|
|
|
10
11
|
case 'style':
|
|
11
12
|
return <Style {...attrs} innerHTML={children}/>;
|
|
12
13
|
case 'script':
|
|
13
|
-
|
|
14
|
-
return <script {...attrs}/>;
|
|
15
|
-
}
|
|
16
|
-
if (typeof children === 'string')
|
|
17
|
-
return <script {...attrs} innerHTML={children}/>;
|
|
18
|
-
return null;
|
|
14
|
+
return <Script attrs={attrs}>{children}</Script>;
|
|
19
15
|
default:
|
|
20
16
|
return null;
|
|
21
17
|
}
|
|
22
18
|
}
|
|
19
|
+
function Script({ attrs, children, }) {
|
|
20
|
+
onMount(() => {
|
|
21
|
+
if (attrs?.src) {
|
|
22
|
+
const script = document.createElement('script');
|
|
23
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
24
|
+
if (value !== undefined && value !== false) {
|
|
25
|
+
script.setAttribute(key, typeof value === 'boolean' ? '' : String(value));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
document.head.appendChild(script);
|
|
29
|
+
onCleanup(() => {
|
|
30
|
+
if (script.parentNode) {
|
|
31
|
+
script.parentNode.removeChild(script);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else if (typeof children === 'string') {
|
|
36
|
+
const script = document.createElement('script');
|
|
37
|
+
script.textContent = children;
|
|
38
|
+
if (attrs) {
|
|
39
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
40
|
+
if (value !== undefined && value !== false) {
|
|
41
|
+
script.setAttribute(key, typeof value === 'boolean' ? '' : String(value));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
document.head.appendChild(script);
|
|
46
|
+
onCleanup(() => {
|
|
47
|
+
if (script.parentNode) {
|
|
48
|
+
script.parentNode.removeChild(script);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (attrs?.src && typeof attrs.src === 'string') {
|
|
54
|
+
return <script {...attrs}/>;
|
|
55
|
+
}
|
|
56
|
+
if (typeof children === 'string') {
|
|
57
|
+
return <script {...attrs} innerHTML={children}/>;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
23
61
|
//# sourceMappingURL=Asset.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Asset.tsx
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { Meta, Style, Title } from '@solidjs/meta'
|
|
2
|
+
import { onCleanup, onMount } from 'solid-js'
|
|
2
3
|
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
4
|
+
import type { JSX } from 'solid-js'
|
|
3
5
|
|
|
4
|
-
export function Asset({
|
|
6
|
+
export function Asset({
|
|
7
|
+
tag,
|
|
8
|
+
attrs,
|
|
9
|
+
children,
|
|
10
|
+
}: RouterManagedTag): JSX.Element | null {
|
|
5
11
|
switch (tag) {
|
|
6
12
|
case 'title':
|
|
7
13
|
return <Title {...attrs}>{children}</Title>
|
|
@@ -12,13 +18,76 @@ export function Asset({ tag, attrs, children }: RouterManagedTag): any {
|
|
|
12
18
|
case 'style':
|
|
13
19
|
return <Style {...attrs} innerHTML={children} />
|
|
14
20
|
case 'script':
|
|
15
|
-
|
|
16
|
-
return <script {...attrs} />
|
|
17
|
-
}
|
|
18
|
-
if (typeof children === 'string')
|
|
19
|
-
return <script {...attrs} innerHTML={children} />
|
|
20
|
-
return null
|
|
21
|
+
return <Script attrs={attrs}>{children}</Script>
|
|
21
22
|
default:
|
|
22
23
|
return null
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
|
|
27
|
+
interface ScriptAttrs {
|
|
28
|
+
[key: string]: string | boolean | undefined
|
|
29
|
+
src?: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function Script({
|
|
33
|
+
attrs,
|
|
34
|
+
children,
|
|
35
|
+
}: {
|
|
36
|
+
attrs?: ScriptAttrs
|
|
37
|
+
children?: string
|
|
38
|
+
}): JSX.Element | null {
|
|
39
|
+
onMount(() => {
|
|
40
|
+
if (attrs?.src) {
|
|
41
|
+
const script = document.createElement('script')
|
|
42
|
+
|
|
43
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
44
|
+
if (value !== undefined && value !== false) {
|
|
45
|
+
script.setAttribute(
|
|
46
|
+
key,
|
|
47
|
+
typeof value === 'boolean' ? '' : String(value),
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
document.head.appendChild(script)
|
|
53
|
+
|
|
54
|
+
onCleanup(() => {
|
|
55
|
+
if (script.parentNode) {
|
|
56
|
+
script.parentNode.removeChild(script)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
} else if (typeof children === 'string') {
|
|
60
|
+
const script = document.createElement('script')
|
|
61
|
+
script.textContent = children
|
|
62
|
+
|
|
63
|
+
if (attrs) {
|
|
64
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
65
|
+
if (value !== undefined && value !== false) {
|
|
66
|
+
script.setAttribute(
|
|
67
|
+
key,
|
|
68
|
+
typeof value === 'boolean' ? '' : String(value),
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
document.head.appendChild(script)
|
|
75
|
+
|
|
76
|
+
onCleanup(() => {
|
|
77
|
+
if (script.parentNode) {
|
|
78
|
+
script.parentNode.removeChild(script)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
if (attrs?.src && typeof attrs.src === 'string') {
|
|
85
|
+
return <script {...attrs} />
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (typeof children === 'string') {
|
|
89
|
+
return <script {...attrs} innerHTML={children} />
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return null
|
|
93
|
+
}
|