@unabridged/midwest 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/app/assets/javascript/midwest/async_runtime.ts +90 -0
- package/app/assets/javascript/midwest.js +16 -16
- package/app/assets/javascript/midwest.js.map +1 -1
- package/app/assets/stylesheets/midwest/tailwind.css +39 -69
- package/app/assets/stylesheets/midwest/tailwind.theme.css +68 -0
- package/app/assets/stylesheets/midwest.css +1 -1
- package/app/assets/stylesheets/midwest.tailwind.css +15 -1
- package/dist/css/midwest.css +1 -1
- package/dist/javascript/collection/app/components/midwest/assets_component/assets_component_controller.js +16 -16
- package/dist/javascript/collection/app/components/midwest/assets_component/assets_component_controller.js.map +1 -1
- package/dist/javascript/midwest.js +16 -16
- package/dist/javascript/midwest.js.map +1 -1
- package/package.json +3 -2
|
@@ -2,21 +2,19 @@ import { Controller } from '@hotwired/stimulus';
|
|
|
2
2
|
|
|
3
3
|
class Assets extends Controller {
|
|
4
4
|
static values = {
|
|
5
|
-
css:
|
|
6
|
-
js:
|
|
5
|
+
css: Array,
|
|
6
|
+
js: Array
|
|
7
7
|
};
|
|
8
8
|
connect() {
|
|
9
|
-
|
|
10
|
-
this.ensureStylesheet(
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
this.cssValue.forEach((href) => {
|
|
10
|
+
this.ensureStylesheet(href);
|
|
11
|
+
});
|
|
12
|
+
this.jsValue.forEach((src) => {
|
|
13
|
+
this.ensureScript(src);
|
|
14
|
+
});
|
|
13
15
|
}
|
|
14
16
|
ensureStylesheet(href) {
|
|
15
|
-
|
|
16
|
-
const present = Array.from(
|
|
17
|
-
document.querySelectorAll('link[rel="stylesheet"]')
|
|
18
|
-
).some((link2) => link2.href === url);
|
|
19
|
-
if (present)
|
|
17
|
+
if (!href || this.present('link[rel="stylesheet"]', "href", href))
|
|
20
18
|
return;
|
|
21
19
|
const link = document.createElement("link");
|
|
22
20
|
link.rel = "stylesheet";
|
|
@@ -24,17 +22,19 @@ class Assets extends Controller {
|
|
|
24
22
|
document.head.appendChild(link);
|
|
25
23
|
}
|
|
26
24
|
ensureScript(src) {
|
|
27
|
-
|
|
28
|
-
const present = Array.from(
|
|
29
|
-
document.querySelectorAll("script[src]")
|
|
30
|
-
).some((script2) => script2.src === url);
|
|
31
|
-
if (present)
|
|
25
|
+
if (!src || this.present("script[src]", "src", src))
|
|
32
26
|
return;
|
|
33
27
|
const script = document.createElement("script");
|
|
34
28
|
script.type = "module";
|
|
35
29
|
script.src = src;
|
|
36
30
|
document.head.appendChild(script);
|
|
37
31
|
}
|
|
32
|
+
present(selector, attribute, url) {
|
|
33
|
+
const absolute = this.absolute(url);
|
|
34
|
+
return Array.from(document.querySelectorAll(selector)).some(
|
|
35
|
+
(element) => element[attribute] === absolute
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
38
|
// Resolve a possibly-relative URL to its absolute form for comparison.
|
|
39
39
|
absolute(url) {
|
|
40
40
|
const anchor = document.createElement("a");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets_component_controller.js","sources":["../../../../../../../app/components/midwest/assets_component/assets_component_controller.ts"],"sourcesContent":["import { Controller } from '@hotwired/stimulus'\n\n// Injects Midwest's
|
|
1
|
+
{"version":3,"file":"assets_component_controller.js","sources":["../../../../../../../app/components/midwest/assets_component/assets_component_controller.ts"],"sourcesContent":["import { Controller } from '@hotwired/stimulus'\n\n// Injects Midwest's stylesheets/modules into <head> once, so components\n// delivered via Turbo (Frame or Stream) into a page that does not already load\n// them still style and behave correctly.\n//\n// Takes arrays rather than single URLs because async mode injects one file per\n// component. Idempotent: each URL is compared, resolved to an absolute form,\n// against what is already in the head — so a fragment carrying a component the\n// page already had costs nothing.\nexport default class Assets extends Controller<HTMLElement> {\n static values = {\n css: Array,\n js: Array\n }\n\n declare cssValue: string[]\n declare jsValue: string[]\n\n connect (): void {\n this.cssValue.forEach((href) => { this.ensureStylesheet(href) })\n this.jsValue.forEach((src) => { this.ensureScript(src) })\n }\n\n private ensureStylesheet (href: string): void {\n if (!href || this.present('link[rel=\"stylesheet\"]', 'href', href)) return\n\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n document.head.appendChild(link)\n }\n\n private ensureScript (src: string): void {\n if (!src || this.present('script[src]', 'src', src)) return\n\n const script = document.createElement('script')\n script.type = 'module'\n script.src = src\n document.head.appendChild(script)\n }\n\n private present (selector: string, attribute: 'href' | 'src', url: string): boolean {\n const absolute = this.absolute(url)\n return Array.from(document.querySelectorAll(selector)).some(\n (element) => (element as HTMLLinkElement & HTMLScriptElement)[attribute] === absolute\n )\n }\n\n // Resolve a possibly-relative URL to its absolute form for comparison.\n private absolute (url: string): string {\n const anchor = document.createElement('a')\n anchor.href = url\n return anchor.href\n }\n}\n"],"names":[],"mappings":";;AAUA,MAAqB,eAAe,UAAwB,CAAA;AAAA,EAC1D,OAAO,MAAS,GAAA;AAAA,IACd,GAAK,EAAA,KAAA;AAAA,IACL,EAAI,EAAA,KAAA;AAAA,GACN,CAAA;AAAA,EAKA,OAAiB,GAAA;AACf,IAAK,IAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,IAAS,KAAA;AAAE,MAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA,CAAA;AAAA,KAAG,CAAA,CAAA;AAC/D,IAAK,IAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,GAAQ,KAAA;AAAE,MAAA,IAAA,CAAK,aAAa,GAAG,CAAA,CAAA;AAAA,KAAG,CAAA,CAAA;AAAA,GAC1D;AAAA,EAEQ,iBAAkB,IAAoB,EAAA;AAC5C,IAAA,IAAI,CAAC,IAAQ,IAAA,IAAA,CAAK,OAAQ,CAAA,wBAAA,EAA0B,QAAQ,IAAI,CAAA;AAAG,MAAA,OAAA;AAEnE,IAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;AAC1C,IAAA,IAAA,CAAK,GAAM,GAAA,YAAA,CAAA;AACX,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AACZ,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAAA,GAChC;AAAA,EAEQ,aAAc,GAAmB,EAAA;AACvC,IAAA,IAAI,CAAC,GAAO,IAAA,IAAA,CAAK,OAAQ,CAAA,aAAA,EAAe,OAAO,GAAG,CAAA;AAAG,MAAA,OAAA;AAErD,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC9C,IAAA,MAAA,CAAO,IAAO,GAAA,QAAA,CAAA;AACd,IAAA,MAAA,CAAO,GAAM,GAAA,GAAA,CAAA;AACb,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,MAAM,CAAA,CAAA;AAAA,GAClC;AAAA,EAEQ,OAAA,CAAS,QAAkB,EAAA,SAAA,EAA2B,GAAsB,EAAA;AAClF,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAClC,IAAA,OAAO,MAAM,IAAK,CAAA,QAAA,CAAS,gBAAiB,CAAA,QAAQ,CAAC,CAAE,CAAA,IAAA;AAAA,MACrD,CAAC,OAAA,KAAa,OAAgD,CAAA,SAAS,CAAM,KAAA,QAAA;AAAA,KAC/E,CAAA;AAAA,GACF;AAAA;AAAA,EAGQ,SAAU,GAAqB,EAAA;AACrC,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AACzC,IAAA,MAAA,CAAO,IAAO,GAAA,GAAA,CAAA;AACd,IAAA,OAAO,MAAO,CAAA,IAAA,CAAA;AAAA,GAChB;AACF;;;;"}
|
|
@@ -9428,21 +9428,19 @@ class SplitView extends Controller {
|
|
|
9428
9428
|
|
|
9429
9429
|
class Assets extends Controller {
|
|
9430
9430
|
static values = {
|
|
9431
|
-
css:
|
|
9432
|
-
js:
|
|
9431
|
+
css: Array,
|
|
9432
|
+
js: Array
|
|
9433
9433
|
};
|
|
9434
9434
|
connect() {
|
|
9435
|
-
|
|
9436
|
-
this.ensureStylesheet(
|
|
9437
|
-
|
|
9438
|
-
|
|
9435
|
+
this.cssValue.forEach((href) => {
|
|
9436
|
+
this.ensureStylesheet(href);
|
|
9437
|
+
});
|
|
9438
|
+
this.jsValue.forEach((src) => {
|
|
9439
|
+
this.ensureScript(src);
|
|
9440
|
+
});
|
|
9439
9441
|
}
|
|
9440
9442
|
ensureStylesheet(href) {
|
|
9441
|
-
|
|
9442
|
-
const present = Array.from(
|
|
9443
|
-
document.querySelectorAll('link[rel="stylesheet"]')
|
|
9444
|
-
).some((link2) => link2.href === url);
|
|
9445
|
-
if (present)
|
|
9443
|
+
if (!href || this.present('link[rel="stylesheet"]', "href", href))
|
|
9446
9444
|
return;
|
|
9447
9445
|
const link = document.createElement("link");
|
|
9448
9446
|
link.rel = "stylesheet";
|
|
@@ -9450,17 +9448,19 @@ class Assets extends Controller {
|
|
|
9450
9448
|
document.head.appendChild(link);
|
|
9451
9449
|
}
|
|
9452
9450
|
ensureScript(src) {
|
|
9453
|
-
|
|
9454
|
-
const present = Array.from(
|
|
9455
|
-
document.querySelectorAll("script[src]")
|
|
9456
|
-
).some((script2) => script2.src === url);
|
|
9457
|
-
if (present)
|
|
9451
|
+
if (!src || this.present("script[src]", "src", src))
|
|
9458
9452
|
return;
|
|
9459
9453
|
const script = document.createElement("script");
|
|
9460
9454
|
script.type = "module";
|
|
9461
9455
|
script.src = src;
|
|
9462
9456
|
document.head.appendChild(script);
|
|
9463
9457
|
}
|
|
9458
|
+
present(selector, attribute, url) {
|
|
9459
|
+
const absolute = this.absolute(url);
|
|
9460
|
+
return Array.from(document.querySelectorAll(selector)).some(
|
|
9461
|
+
(element) => element[attribute] === absolute
|
|
9462
|
+
);
|
|
9463
|
+
}
|
|
9464
9464
|
// Resolve a possibly-relative URL to its absolute form for comparison.
|
|
9465
9465
|
absolute(url) {
|
|
9466
9466
|
const anchor = document.createElement("a");
|