mnfst 0.5.188 → 0.5.190
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/lib/manifest.accordion.css +3 -1
- package/lib/manifest.appwrite.auth.js +7 -1
- package/lib/manifest.appwrite.data.js +8 -1
- package/lib/manifest.avatar.css +6 -4
- package/lib/manifest.button.css +7 -5
- package/lib/manifest.chart.css +2 -0
- package/lib/manifest.chat.js +7 -0
- package/lib/manifest.checkbox.css +6 -4
- package/lib/manifest.code.css +3 -1
- package/lib/manifest.code.js +6 -0
- package/lib/manifest.code.min.css +1 -1
- package/lib/manifest.colorpicker.css +7 -5
- package/lib/manifest.colorpicker.js +3 -0
- package/lib/manifest.combobox.css +14 -2
- package/lib/manifest.combobox.js +24 -5
- package/lib/manifest.components.js +7 -1
- package/lib/manifest.css +133 -67
- package/lib/manifest.d.ts +214 -30
- package/lib/manifest.data.js +71 -29
- package/lib/manifest.datepicker.css +15 -13
- package/lib/manifest.dialog.css +2 -0
- package/lib/manifest.divider.css +3 -1
- package/lib/manifest.dropdown.css +6 -4
- package/lib/manifest.dropdowns.js +25 -2
- package/lib/manifest.export.js +6 -0
- package/lib/manifest.form.css +3 -1
- package/lib/manifest.input.css +7 -5
- package/lib/manifest.integrity.json +25 -25
- package/lib/manifest.js +39 -0
- package/lib/manifest.localization.js +6 -1
- package/lib/manifest.markdown.js +24 -1
- package/lib/manifest.min.css +1 -1
- package/lib/manifest.native.js +7 -0
- package/lib/manifest.payments.js +7 -0
- package/lib/manifest.radio.css +2 -0
- package/lib/manifest.range.css +6 -4
- package/lib/manifest.resize.css +3 -1
- package/lib/manifest.resize.js +6 -1
- package/lib/manifest.router.js +7 -0
- package/lib/manifest.schema.json +29 -0
- package/lib/manifest.sidebar.css +2 -0
- package/lib/manifest.slides.css +2 -0
- package/lib/manifest.status.js +7 -0
- package/lib/manifest.svg.js +6 -0
- package/lib/manifest.switch.css +5 -3
- package/lib/manifest.table.css +4 -2
- package/lib/manifest.tabs.js +6 -1
- package/lib/manifest.theme.css +4 -2
- package/lib/manifest.toast.css +4 -2
- package/lib/manifest.toasts.js +6 -1
- package/lib/manifest.tooltip.css +2 -0
- package/lib/manifest.tooltips.js +6 -0
- package/lib/manifest.typography.css +5 -3
- package/lib/manifest.url.parameters.js +6 -0
- package/lib/manifest.utilities.css +7 -5
- package/lib/manifest.utilities.js +20 -1
- package/lib/manifest.virtual.js +6 -0
- package/package.json +5 -5
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Manifest Accordions */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
@layer components {
|
|
4
6
|
|
|
5
7
|
|
|
@@ -55,7 +57,7 @@
|
|
|
55
57
|
order: 1;
|
|
56
58
|
width: 1rem;
|
|
57
59
|
height: 1rem;
|
|
58
|
-
background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 50%, var(--color-field-inverse, oklch(43.9% 0 0)));
|
|
60
|
+
background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 50%, var(--color-field-inverse, oklch(43.9% 0 0)));
|
|
59
61
|
-webkit-mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
|
|
60
62
|
mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
|
|
61
63
|
-webkit-mask-repeat: no-repeat;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/* manifest.appwrite.auth.js — built from scripts/auth/ */
|
|
2
|
+
|
|
3
|
+
(function () {
|
|
4
|
+
|
|
1
5
|
/* Manifest Appwrite Auth — config resolution
|
|
2
6
|
/* By Andrew Matlock under MIT license
|
|
3
7
|
*/
|
|
@@ -6993,4 +6997,6 @@ if (window.ManifestAppwriteAuthConfig) {
|
|
|
6993
6997
|
initializeCallbacks();
|
|
6994
6998
|
}
|
|
6995
6999
|
});
|
|
6996
|
-
}
|
|
7000
|
+
}
|
|
7001
|
+
|
|
7002
|
+
})();
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/* manifest.appwrite.data.js — built from scripts/data/ */
|
|
2
|
+
|
|
3
|
+
(function () {
|
|
4
|
+
|
|
1
5
|
/* Manifest Data Sources - Appwrite Integration */
|
|
2
6
|
|
|
3
7
|
// Cache for Appwrite client (initialized once)
|
|
@@ -863,7 +867,7 @@ function debugAuthStore() {
|
|
|
863
867
|
if (store.user) {
|
|
864
868
|
}
|
|
865
869
|
} catch (error) {
|
|
866
|
-
console.error('[Manifest Data
|
|
870
|
+
console.error('[Manifest Data] Error inspecting auth store:', error);
|
|
867
871
|
}
|
|
868
872
|
}
|
|
869
873
|
|
|
@@ -1570,3 +1574,6 @@ window.ManifestDataPagination = {
|
|
|
1570
1574
|
getPrevPage,
|
|
1571
1575
|
getPage
|
|
1572
1576
|
};
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
})();
|
package/lib/manifest.avatar.css
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Manifest Avatars */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
@layer utilities {
|
|
4
6
|
|
|
5
7
|
:where(.avatar) {
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
text-align: center;
|
|
16
18
|
text-transform: uppercase;
|
|
17
19
|
color: var(--color-field-inverse, oklch(43.9% 0 0));
|
|
18
|
-
background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
20
|
+
background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
19
21
|
background-clip: content-box;
|
|
20
22
|
background-size: cover;
|
|
21
23
|
background-position: center;
|
|
@@ -47,7 +49,7 @@
|
|
|
47
49
|
width: 9px;
|
|
48
50
|
height: 9px;
|
|
49
51
|
z-index: 1;
|
|
50
|
-
background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
52
|
+
background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
51
53
|
border: 1px solid var(--color-page, oklch(98.5% 0 0));
|
|
52
54
|
border-radius: 50%
|
|
53
55
|
}
|
|
@@ -59,7 +61,7 @@
|
|
|
59
61
|
background-blend-mode: normal;
|
|
60
62
|
|
|
61
63
|
&:hover {
|
|
62
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
|
|
64
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
|
|
63
65
|
background-blend-mode: multiply;
|
|
64
66
|
|
|
65
67
|
& img {
|
|
@@ -111,7 +113,7 @@
|
|
|
111
113
|
padding-inline-end: 1.5ch;
|
|
112
114
|
|
|
113
115
|
&:hover .avatar {
|
|
114
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
|
|
116
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
|
|
115
117
|
transition: var(--transition, all .05s ease-in-out)
|
|
116
118
|
}
|
|
117
119
|
}
|
package/lib/manifest.button.css
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Manifest Buttons */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
@layer components {
|
|
4
6
|
|
|
5
7
|
:where(button:not(.link), [role=button], [type=button], [type=reset], [type=submit], select):not(code, .unstyle) {
|
|
@@ -18,12 +20,12 @@
|
|
|
18
20
|
white-space: nowrap;
|
|
19
21
|
text-overflow: ellipsis;
|
|
20
22
|
color: var(--color-field-inverse, oklch(43.9% 0 0));
|
|
21
|
-
background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
23
|
+
background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
22
24
|
border-width: 0;
|
|
23
25
|
border-style: solid;
|
|
24
26
|
border-color: transparent;
|
|
25
27
|
border-radius: var(--radius, 0.5rem);
|
|
26
|
-
outline-color: var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
28
|
+
outline-color: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
27
29
|
cursor: pointer;
|
|
28
30
|
transition: var(--transition, all .05s ease-in-out);
|
|
29
31
|
appearance: button;
|
|
@@ -52,15 +54,15 @@
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
&:hover {
|
|
55
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
|
|
57
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
&:active {
|
|
59
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
|
|
61
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
&:focus-visible {
|
|
63
|
-
background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent))
|
|
65
|
+
background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
|
package/lib/manifest.chart.css
CHANGED
package/lib/manifest.chat.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/* manifest.chat.js — built from scripts/chat/ */
|
|
2
|
+
|
|
3
|
+
(function () {
|
|
4
|
+
|
|
1
5
|
/* Manifest Chat — store / engine
|
|
2
6
|
/* By Andrew Matlock under MIT license
|
|
3
7
|
/* https://manifestx.dev
|
|
@@ -803,3 +807,6 @@
|
|
|
803
807
|
setTimeout(() => clearInterval(check), 5000);
|
|
804
808
|
}
|
|
805
809
|
})();
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
})();
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Manifest Checkboxes */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
@layer components {
|
|
4
6
|
|
|
5
7
|
input[type=checkbox]:not([role=switch], .unstyle) {
|
|
@@ -16,13 +18,13 @@
|
|
|
16
18
|
&:checked {
|
|
17
19
|
|
|
18
20
|
&:hover {
|
|
19
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
|
|
20
|
-
border-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
|
|
21
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
|
|
22
|
+
border-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
&:active {
|
|
24
|
-
background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
|
|
25
|
-
border-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
|
|
26
|
+
background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
|
|
27
|
+
border-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
|
package/lib/manifest.code.css
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
/* https://manifestx.dev/styles/code
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
@layer base, components, utilities;
|
|
7
|
+
|
|
6
8
|
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');
|
|
7
9
|
|
|
8
10
|
:root {
|
|
@@ -284,7 +286,7 @@
|
|
|
284
286
|
|
|
285
287
|
&:hover {
|
|
286
288
|
color: var(--color-content-stark, oklch(43.9% 0 0));
|
|
287
|
-
background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent))
|
|
289
|
+
background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
|
|
288
290
|
}
|
|
289
291
|
|
|
290
292
|
&[aria-selected="true"] {
|
package/lib/manifest.code.js
CHANGED
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
// Decided on first call; a later auto-detect block flips to full mode
|
|
11
11
|
// (harmless — the full bundle overwrites the single hljs global).
|
|
12
12
|
|
|
13
|
+
|
|
14
|
+
(function () {
|
|
15
|
+
|
|
13
16
|
const HLJS_FULL_URL = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/highlight.min.js';
|
|
14
17
|
// esm.run resolves extension-less specifiers; ".js" triggers a deprecation warning.
|
|
15
18
|
const HLJS_CORE_URL = 'https://esm.run/highlight.js@11.11.1/lib/core';
|
|
@@ -837,3 +840,6 @@ window.ManifestCode = {
|
|
|
837
840
|
};
|
|
838
841
|
|
|
839
842
|
ensureCodePluginInitialized();
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap");:root{--icon-code-copy:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E");--icon-code-copied:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3B5LWNoZWNrLWljb24gbHVjaWRlLWNvcHktY2hlY2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTEyIDE1IDIgMiA0LTQiLz48cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIvPjxwYXRoIGQ9Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIiLz48L3N2Zz4=");--icon-code-expand:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--color-code-keyword:#b8860b;--color-code-string:#8b4513;--color-code-comment:gray;--color-code-function:peru;--color-code-number:sienna;--color-code-operator:#2f4f4f;--color-code-class-name:#daa520;--color-code-tag:#4682b4;--color-code-attr-name:#ff8c00;--color-code-attr-value:#8b4513;--color-code-property:sienna;--color-code-selector:#4682b4;--color-code-punctuation:#2f4f4f;--color-code-builtin:#b8860b;--color-code-constant:sienna;--color-code-boolean:sienna;--color-code-regex:#8b4513;--color-code-symbol:#daa520;--color-code-entity:#daa520;--color-code-url:sienna;--color-code-atrule:#b8860b;--color-code-rule:#4682b4;--color-code-doctype:gray;--color-code-cdata:gray;--color-code-prolog:gray;--color-code-namespace:gray;--color-code-important:#b8860b;--color-code-inserted:#228b22;--color-code-deleted:#dc143c;--color-code-char:#8b4513}.dark{--color-code-keyword:#f4a460;--color-code-string:#deb887;--color-code-comment:#8b8b8b;--color-code-function:#daa520;--color-code-number:tan;--color-code-operator:wheat;--color-code-class-name:peru;--color-code-tag:#87ceeb;--color-code-attr-name:gold;--color-code-attr-value:#deb887;--color-code-property:tan;--color-code-selector:#87ceeb;--color-code-punctuation:wheat;--color-code-builtin:#f4a460;--color-code-constant:tan;--color-code-boolean:tan;--color-code-regex:#deb887;--color-code-symbol:peru;--color-code-entity:peru;--color-code-url:tan;--color-code-atrule:#f4a460;--color-code-rule:#98fb98;--color-code-doctype:#8b8b8b;--color-code-cdata:#8b8b8b;--color-code-prolog:#8b8b8b;--color-code-namespace:#8b8b8b;--color-code-important:#f4a460;--color-code-inserted:#98fb98;--color-code-deleted:#f08080;--color-code-char:#deb887}@layer utilities{.hljs-comment{color:var(--color-code-comment)!important}.hljs-keyword{color:var(--color-code-keyword)!important}.hljs-string{color:var(--color-code-string)!important}.hljs-number{color:var(--color-code-number)!important}.hljs-literal{color:var(--color-code-constant)!important}.hljs-type{color:var(--color-code-class-name)!important}.hljs-variable{color:var(--color-code-property)!important}.hljs-variable.language_{color:var(--color-code-keyword)!important}.hljs-variable.constant_{color:var(--color-code-constant)!important}.hljs-title{color:var(--color-code-function)!important}.hljs-title.class_.inherited__{color:var(--color-code-class-name)!important}.hljs-title.function_.invoke__{color:var(--color-code-function)!important}.hljs-params{color:var(--color-code-property)!important}.hljs-doctag{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-meta{color:var(--color-code-comment)!important}.hljs-meta.keyword_,.hljs-meta.prompt_{color:var(--color-code-keyword)!important}.hljs-meta.string_{color:var(--color-code-string)!important}.hljs-section{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-name{color:var(--color-code-tag)!important}.hljs-attribute{color:var(--color-code-attr-name)!important}.hljs-bullet{color:var(--color-code-punctuation)!important}.hljs-code{color:var(--color-code-property)!important}.hljs-formula{color:var(--color-code-number)!important}.hljs-quote{color:var(--color-code-string)!important}.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo{color:var(--color-code-selector)!important}.hljs-template-tag{color:var(--color-code-tag)!important}.hljs-template-variable{color:var(--color-code-property)!important}.hljs-subst{color:var(--color-code-string)!important}}@layer components{:where(code[role=button]){height:fit-content}:where(.code-copied-icon){background-color:currentColor;display:inline-block;height:1em;mask-image:var(--icon-code-copied);mask-position:center;mask-repeat:no-repeat;mask-size:1em;vertical-align:middle;width:1em;@supports (height:1lh){height:1lh;vertical-align:top}}:where([x-code],[x-code-group]):not(.unstyle){position:relative;:where(header):not(:where(:is(aside.frame) header)){align-items:center;background-color:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0));display:flex;flex-direction:row;font-family:var(--font-sans,sans-serif);font-size:inherit;min-height:var(--spacing-field-height,2.25rem);padding-inline-end:var(--spacing-field-height);padding-inline-start:calc(var(--spacing, .25rem)*4);width:100%;&:has(button[role=tab]){padding-inline-start:calc(var(--spacing, .25rem)*2)}& [role=tablist]{display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}& button[role=tab]{background:transparent;border:0;color:inherit;flex-shrink:0;font-family:inherit;font-size:inherit;height:fit-content;justify-content:start;&:hover{background-color:var(--color-field-surface,color-mix(oklch(20.5% 0 0) 10%,transparent));color:var(--color-content-stark,oklch(43.9% 0 0))}&[aria-selected=true]{color:var(--color-brand-content,oklch(68.1% .162 75.834));pointer-events:none;position:relative}}}}& button.copy{background-color:transparent;font-size:75%;inset-inline-end:0;position:absolute;top:0;&:hover{background-color:transparent;&:after{background-color:var(--color-field-inverse,oklch(43.9% 0 0))}}&:after{background-color:var(--color-content-neutral,oklch(43.9% 0 0));content:"";display:block;height:.8125rem;mask-image:var(--icon-code-copy);mask-repeat:no-repeat;mask-size:contain;width:.8125rem}&.copied:after{mask-image:var(--icon-code-copied)}}:where(header)::-webkit-scrollbar{display:none}& .lines{background-color:var(--color-page,oklch(98.5% 0 0));color:var(--color-content-subtle,oklch(55.6% 0 0));display:inline-flex;flex-direction:column;font-family:inherit;font-size:inherit;inset-inline-start:0;line-height:inherit;padding:calc(var(--spacing, .25rem)*4);pointer-events:none;position:absolute;text-align:end;user-select:none}&:has(.lines) code{padding-inline-start:calc(var(--spacing, .25rem)*8 + 2ch)}:where(code){flex:1 1 100%;min-width:0;white-space:pre;white-space-collapse:preserve}& button.expand{align-items:center;background:transparent;border:0;border-radius:0;color:var(--color-content-subtle,oklch(55.6% 0 0));cursor:pointer;display:flex;font-family:var(--font-sans,sans-serif);font-size:inherit;height:var(--spacing-field-height,2.25rem);justify-content:center;order:99;padding:0 calc(var(--spacing, .25rem)*2);transition:var(--transition,all .05s ease-in-out);width:100%;&:hover{background:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0))}}&[data-collapsed] .lines,&[data-collapsed] code{mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 3em),transparent calc(100% - .75em),transparent);max-height:calc(var(--collapse-lines, 20)*1.7em + var(--spacing, .25rem)*8);overflow:hidden}:where(aside.frame){background:unset;border:0;box-shadow:unset;color:unset;font-family:unset;font-size:unset;font-weight:unset;line-height:unset;white-space:normal;white-space-collapse:collapse}}:where([x-code-group]){flex-flow:column;:where([x-code]){background:transparent;border:0;border-radius:0}}:where([x-code]):has(>header){& .lines{top:var(--spacing-field-height,2.25rem)}}}
|
|
1
|
+
@layer base, components, utilities;@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap");:root{--icon-code-copy:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E");--icon-code-copied:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3B5LWNoZWNrLWljb24gbHVjaWRlLWNvcHktY2hlY2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTEyIDE1IDIgMiA0LTQiLz48cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIvPjxwYXRoIGQ9Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIiLz48L3N2Zz4=");--icon-code-expand:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--color-code-keyword:#b8860b;--color-code-string:#8b4513;--color-code-comment:gray;--color-code-function:peru;--color-code-number:sienna;--color-code-operator:#2f4f4f;--color-code-class-name:#daa520;--color-code-tag:#4682b4;--color-code-attr-name:#ff8c00;--color-code-attr-value:#8b4513;--color-code-property:sienna;--color-code-selector:#4682b4;--color-code-punctuation:#2f4f4f;--color-code-builtin:#b8860b;--color-code-constant:sienna;--color-code-boolean:sienna;--color-code-regex:#8b4513;--color-code-symbol:#daa520;--color-code-entity:#daa520;--color-code-url:sienna;--color-code-atrule:#b8860b;--color-code-rule:#4682b4;--color-code-doctype:gray;--color-code-cdata:gray;--color-code-prolog:gray;--color-code-namespace:gray;--color-code-important:#b8860b;--color-code-inserted:#228b22;--color-code-deleted:#dc143c;--color-code-char:#8b4513}.dark{--color-code-keyword:#f4a460;--color-code-string:#deb887;--color-code-comment:#8b8b8b;--color-code-function:#daa520;--color-code-number:tan;--color-code-operator:wheat;--color-code-class-name:peru;--color-code-tag:#87ceeb;--color-code-attr-name:gold;--color-code-attr-value:#deb887;--color-code-property:tan;--color-code-selector:#87ceeb;--color-code-punctuation:wheat;--color-code-builtin:#f4a460;--color-code-constant:tan;--color-code-boolean:tan;--color-code-regex:#deb887;--color-code-symbol:peru;--color-code-entity:peru;--color-code-url:tan;--color-code-atrule:#f4a460;--color-code-rule:#98fb98;--color-code-doctype:#8b8b8b;--color-code-cdata:#8b8b8b;--color-code-prolog:#8b8b8b;--color-code-namespace:#8b8b8b;--color-code-important:#f4a460;--color-code-inserted:#98fb98;--color-code-deleted:#f08080;--color-code-char:#deb887}@layer utilities{.hljs-comment{color:var(--color-code-comment)!important}.hljs-keyword{color:var(--color-code-keyword)!important}.hljs-string{color:var(--color-code-string)!important}.hljs-number{color:var(--color-code-number)!important}.hljs-literal{color:var(--color-code-constant)!important}.hljs-type{color:var(--color-code-class-name)!important}.hljs-variable{color:var(--color-code-property)!important}.hljs-variable.language_{color:var(--color-code-keyword)!important}.hljs-variable.constant_{color:var(--color-code-constant)!important}.hljs-title{color:var(--color-code-function)!important}.hljs-title.class_.inherited__{color:var(--color-code-class-name)!important}.hljs-title.function_.invoke__{color:var(--color-code-function)!important}.hljs-params{color:var(--color-code-property)!important}.hljs-doctag{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-meta{color:var(--color-code-comment)!important}.hljs-meta.keyword_,.hljs-meta.prompt_{color:var(--color-code-keyword)!important}.hljs-meta.string_{color:var(--color-code-string)!important}.hljs-section{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-name{color:var(--color-code-tag)!important}.hljs-attribute{color:var(--color-code-attr-name)!important}.hljs-bullet{color:var(--color-code-punctuation)!important}.hljs-code{color:var(--color-code-property)!important}.hljs-formula{color:var(--color-code-number)!important}.hljs-quote{color:var(--color-code-string)!important}.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo{color:var(--color-code-selector)!important}.hljs-template-tag{color:var(--color-code-tag)!important}.hljs-template-variable{color:var(--color-code-property)!important}.hljs-subst{color:var(--color-code-string)!important}}@layer components{:where(code[role=button]){height:fit-content}:where(.code-copied-icon){background-color:currentColor;display:inline-block;height:1em;mask-image:var(--icon-code-copied);mask-position:center;mask-repeat:no-repeat;mask-size:1em;vertical-align:middle;width:1em;@supports (height:1lh){height:1lh;vertical-align:top}}:where([x-code],[x-code-group]):not(.unstyle){position:relative;:where(header):not(:where(:is(aside.frame) header)){align-items:center;background-color:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0));display:flex;flex-direction:row;font-family:var(--font-sans,sans-serif);font-size:inherit;min-height:var(--spacing-field-height,2.25rem);padding-inline-end:var(--spacing-field-height);padding-inline-start:calc(var(--spacing, .25rem)*4);width:100%;&:has(button[role=tab]){padding-inline-start:calc(var(--spacing, .25rem)*2)}& [role=tablist]{display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}& button[role=tab]{background:transparent;border:0;color:inherit;flex-shrink:0;font-family:inherit;font-size:inherit;height:fit-content;justify-content:start;&:hover{background-color:var(--color-field-surface,color-mix(in oklch,oklch(20.5% 0 0) 10%,transparent));color:var(--color-content-stark,oklch(43.9% 0 0))}&[aria-selected=true]{color:var(--color-brand-content,oklch(68.1% .162 75.834));pointer-events:none;position:relative}}}}& button.copy{background-color:transparent;font-size:75%;inset-inline-end:0;position:absolute;top:0;&:hover{background-color:transparent;&:after{background-color:var(--color-field-inverse,oklch(43.9% 0 0))}}&:after{background-color:var(--color-content-neutral,oklch(43.9% 0 0));content:"";display:block;height:.8125rem;mask-image:var(--icon-code-copy);mask-repeat:no-repeat;mask-size:contain;width:.8125rem}&.copied:after{mask-image:var(--icon-code-copied)}}:where(header)::-webkit-scrollbar{display:none}& .lines{background-color:var(--color-page,oklch(98.5% 0 0));color:var(--color-content-subtle,oklch(55.6% 0 0));display:inline-flex;flex-direction:column;font-family:inherit;font-size:inherit;inset-inline-start:0;line-height:inherit;padding:calc(var(--spacing, .25rem)*4);pointer-events:none;position:absolute;text-align:end;user-select:none}&:has(.lines) code{padding-inline-start:calc(var(--spacing, .25rem)*8 + 2ch)}:where(code){flex:1 1 100%;min-width:0;white-space:pre;white-space-collapse:preserve}& button.expand{align-items:center;background:transparent;border:0;border-radius:0;color:var(--color-content-subtle,oklch(55.6% 0 0));cursor:pointer;display:flex;font-family:var(--font-sans,sans-serif);font-size:inherit;height:var(--spacing-field-height,2.25rem);justify-content:center;order:99;padding:0 calc(var(--spacing, .25rem)*2);transition:var(--transition,all .05s ease-in-out);width:100%;&:hover{background:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0))}}&[data-collapsed] .lines,&[data-collapsed] code{mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 3em),transparent calc(100% - .75em),transparent);max-height:calc(var(--collapse-lines, 20)*1.7em + var(--spacing, .25rem)*8);overflow:hidden}:where(aside.frame){background:unset;border:0;box-shadow:unset;color:unset;font-family:unset;font-size:unset;font-weight:unset;line-height:unset;white-space:normal;white-space-collapse:collapse}}:where([x-code-group]){flex-flow:column;:where([x-code]){background:transparent;border:0;border-radius:0}}:where([x-code]):has(>header){& .lines{top:var(--spacing-field-height,2.25rem)}}}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/* Manifest Color Picker */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
:root {
|
|
4
|
-
--color-picker-swatch: var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
6
|
+
--color-picker-swatch: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
5
7
|
--icon-color-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-paint-roller-icon lucide-paint-roller'%3E%3Crect width='16' height='6' x='2' y='2' rx='2'/%3E%3Cpath d='M10 16v-2a2 2 0 0 1 2-2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2'/%3E%3Crect width='4' height='6' x='8' y='16' rx='1'/%3E%3C/svg%3E");
|
|
6
8
|
--icon-color-gradient: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-blend-icon lucide-blend'%3E%3Ccircle cx='9' cy='9' r='7'/%3E%3Ccircle cx='15' cy='15' r='7'/%3E%3C/svg%3E");
|
|
7
9
|
--icon-color-library: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-swatch-book-icon lucide-swatch-book'%3E%3Cpath d='M11 17a4 4 0 0 1-8 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2Z'/%3E%3Cpath d='M16.7 13H19a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7'/%3E%3Cpath d='M 7 17h.01'/%3E%3Cpath d='m11 8 2.3-2.3a2.4 2.4 0 0 1 3.404.004L18.6 7.6a2.4 2.4 0 0 1 .026 3.434L9.9 19.8'/%3E%3C/svg%3E");
|
|
@@ -83,7 +85,7 @@
|
|
|
83
85
|
display: flex;
|
|
84
86
|
width: 100%;
|
|
85
87
|
padding: 2px;
|
|
86
|
-
border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
88
|
+
border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
87
89
|
|
|
88
90
|
/* Distribute button widths equally */
|
|
89
91
|
& button {
|
|
@@ -258,7 +260,7 @@
|
|
|
258
260
|
|
|
259
261
|
/* Gradient layers */
|
|
260
262
|
& :where(.layer-options-wrapper) {
|
|
261
|
-
border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
263
|
+
border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
262
264
|
|
|
263
265
|
/* Layer options inputs */
|
|
264
266
|
& :where(.layer-options-inputs) {
|
|
@@ -308,7 +310,7 @@
|
|
|
308
310
|
margin-inline-end: 0.5rem;
|
|
309
311
|
border-radius: 1rem;
|
|
310
312
|
cursor: pointer;
|
|
311
|
-
background: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
313
|
+
background: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
312
314
|
|
|
313
315
|
/* Stop handle */
|
|
314
316
|
& :where(.stop-handle) {
|
|
@@ -397,7 +399,7 @@
|
|
|
397
399
|
|
|
398
400
|
/* Only apply border to all except last library-group */
|
|
399
401
|
&:not(:last-child) {
|
|
400
|
-
border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
|
|
402
|
+
border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
|
|
401
403
|
}
|
|
402
404
|
|
|
403
405
|
/* Palette wrapper */
|
|
@@ -1736,6 +1736,9 @@ function initializeColorpickerPlugin() {
|
|
|
1736
1736
|
// library div) without tearing down others' x-dropdown.context timers.
|
|
1737
1737
|
_renderIntoContainer(container) {
|
|
1738
1738
|
if (!container || !container.isConnected) return;
|
|
1739
|
+
// Runtime-regenerated: the prerenderer empties stamped containers
|
|
1740
|
+
// at serialize (this method rebuilds them from scratch at boot).
|
|
1741
|
+
container.setAttribute('data-mnfst-generated', '');
|
|
1739
1742
|
const groups = this._resolveLibraryGroups();
|
|
1740
1743
|
const layoutTpl = this.libraryTemplate || _defaultLibraryLayoutTpl;
|
|
1741
1744
|
container.innerHTML = '';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Manifest Combobox */
|
|
2
2
|
|
|
3
|
+
@layer base, components, utilities;
|
|
4
|
+
|
|
3
5
|
@layer components {
|
|
4
6
|
|
|
5
7
|
/* Wrapper */
|
|
@@ -35,9 +37,19 @@
|
|
|
35
37
|
padding-inline: calc(var(--spacing, 0.25rem) * 1.25)
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
/* Plugin-set from render(), so it tracks any editor type — including a
|
|
41
|
+
<button> editor, which the old :has(> input:disabled) rule missed. */
|
|
42
|
+
&[data-disabled] {
|
|
39
43
|
opacity: .5;
|
|
40
|
-
pointer-events: none
|
|
44
|
+
pointer-events: none;
|
|
45
|
+
cursor: default;
|
|
46
|
+
|
|
47
|
+
/* The × stays (layout), inert — the field is already dimmed as a whole,
|
|
48
|
+
so don't let the global :disabled dimming stack on top of it. */
|
|
49
|
+
.combobox-chip>button:disabled {
|
|
50
|
+
opacity: 1;
|
|
51
|
+
cursor: default
|
|
52
|
+
}
|
|
41
53
|
}
|
|
42
54
|
|
|
43
55
|
/* Inner typing surface */
|
package/lib/manifest.combobox.js
CHANGED
|
@@ -337,6 +337,12 @@ function initializeComboboxPlugin() {
|
|
|
337
337
|
let lockedSet = computeLocked();
|
|
338
338
|
const isLocked = (v) => lockedSet.has(String(v).toLowerCase());
|
|
339
339
|
|
|
340
|
+
// ----- Disabled -----
|
|
341
|
+
// Native `disabled` on the editor (input/textarea/button), live so `:disabled`
|
|
342
|
+
// tracks. Chips drop their × entirely — CSS pointer-events can't stop keyboard
|
|
343
|
+
// activation, and an .unstyle field has no CSS at all.
|
|
344
|
+
const isDisabled = () => !!el.disabled;
|
|
345
|
+
|
|
340
346
|
// ----- Reactive model (x-model), owned here -----
|
|
341
347
|
// Preserve the author's shape (array or CSV; array default for .multiple). Chips
|
|
342
348
|
// show labels, the model carries values. Read/effect/set wired near mount.
|
|
@@ -617,7 +623,7 @@ function initializeComboboxPlugin() {
|
|
|
617
623
|
announce(label + ' added');
|
|
618
624
|
}
|
|
619
625
|
function removeValue(value) {
|
|
620
|
-
if (isLocked(value)) return; // locked chips stay put
|
|
626
|
+
if (isLocked(value) || isDisabled()) return; // locked/disabled chips stay put
|
|
621
627
|
const i = selected.findIndex(s => String(s.value).toLowerCase() === String(value).toLowerCase());
|
|
622
628
|
if (i < 0) return;
|
|
623
629
|
const [g] = selected.splice(i, 1);
|
|
@@ -685,16 +691,19 @@ function initializeComboboxPlugin() {
|
|
|
685
691
|
t.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
686
692
|
});
|
|
687
693
|
}
|
|
688
|
-
// Add/drop the × to match locked state. Re-run from render() so a
|
|
689
|
-
// `locked` change toggles existing chips too.
|
|
694
|
+
// Add/drop the × to match locked/disabled state. Re-run from render() so a
|
|
695
|
+
// reactive `locked` or `:disabled` change toggles existing chips too.
|
|
690
696
|
function applyLock(chip, value, label) {
|
|
691
697
|
const locked = isLocked(value);
|
|
692
698
|
chip.toggleAttribute('data-locked', locked);
|
|
693
699
|
const btn = chip.querySelector(':scope > button');
|
|
694
|
-
if (locked) { if (btn) btn.remove(); return; }
|
|
695
|
-
|
|
700
|
+
if (locked) { if (btn) btn.remove(); return; } // locked drops the × by design
|
|
701
|
+
// Disabled keeps the × for layout but makes it inert: a disabled button is
|
|
702
|
+
// out of the tab order and can't be activated by mouse or keyboard.
|
|
703
|
+
if (btn) { btn.disabled = isDisabled(); return; }
|
|
696
704
|
const x = document.createElement('button');
|
|
697
705
|
x.type = 'button';
|
|
706
|
+
x.disabled = isDisabled();
|
|
698
707
|
x.setAttribute('aria-label', 'Remove ' + (label || (chip.querySelector(':scope > span') || {}).textContent || value));
|
|
699
708
|
x.textContent = '×';
|
|
700
709
|
x.addEventListener('click', () => removeValue(value));
|
|
@@ -705,11 +714,15 @@ function initializeComboboxPlugin() {
|
|
|
705
714
|
h.type = 'hidden';
|
|
706
715
|
h.name = name;
|
|
707
716
|
h.value = value;
|
|
717
|
+
h.disabled = isDisabled(); // native: a disabled field doesn't submit
|
|
708
718
|
h.setAttribute('data-cb', '');
|
|
709
719
|
return h;
|
|
710
720
|
}
|
|
711
721
|
|
|
712
722
|
function render() {
|
|
723
|
+
// Styling hook — CSS keys off this, not :has(:disabled), so a <button>
|
|
724
|
+
// editor dims too.
|
|
725
|
+
wrap.toggleAttribute('data-disabled', isDisabled());
|
|
713
726
|
if (chips) {
|
|
714
727
|
// Incremental: keep existing chip nodes, add/drop/refresh only. Recreating
|
|
715
728
|
// all re-inserts next to the focused editor, collapsing them in WebKit.
|
|
@@ -867,6 +880,12 @@ function initializeComboboxPlugin() {
|
|
|
867
880
|
// as a stale duplicate. Authored/adopted menus go with their container.
|
|
868
881
|
if (cleanup && generatedMenu) cleanup(() => { if (generatedMenu.isConnected) generatedMenu.remove(); });
|
|
869
882
|
|
|
883
|
+
// `:disabled` is written straight onto the editor by Alpine — observe it so
|
|
884
|
+
// toggling re-renders (chips regain their × when re-enabled).
|
|
885
|
+
const disabledObserver = new MutationObserver(() => { closeMenu(); render(); });
|
|
886
|
+
disabledObserver.observe(el, { attributes: true, attributeFilter: ['disabled'] });
|
|
887
|
+
if (cleanup) cleanup(() => disabledObserver.disconnect());
|
|
888
|
+
|
|
870
889
|
// ----- Reactive model (x-model) -----
|
|
871
890
|
// Render chips from the bound value on init and external change; write back on
|
|
872
891
|
// add/remove. Read inside an Alpine effect so $x / nested state stay reactive.
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/* manifest.components.js — built from scripts/components/ */
|
|
2
|
+
|
|
3
|
+
(function () {
|
|
4
|
+
|
|
1
5
|
/* Manifest Components */
|
|
2
6
|
|
|
3
7
|
// Base URL for manifest-relative paths (e.g. "../" when viewing dist/index.html). Used by component loader, data loaders, localization.
|
|
@@ -938,4 +942,6 @@ if (document.readyState === 'loading') {
|
|
|
938
942
|
|
|
939
943
|
window.ManifestComponents = {
|
|
940
944
|
initialize: initializeComponents
|
|
941
|
-
};
|
|
945
|
+
};
|
|
946
|
+
|
|
947
|
+
})();
|