mnfst 0.5.228 → 0.5.229
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.data.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest.appwrite.auth.js": "sha384-dsIWnH0qCAGSzAXMGrd8fvOrVl4tOIE6j5tC35JPTrQXZ56qLD36ARyvhR7vi3Id",
|
|
3
|
-
"manifest.appwrite.data.js": "sha384-
|
|
3
|
+
"manifest.appwrite.data.js": "sha384-dLaV5W1wDtVkrfE2k5BwFL3TCCybtkAjgi+lc9GaZ2OnTdC0pmXPYBOxX64TqG9I",
|
|
4
4
|
"manifest.appwrite.presences.js": "sha384-JyVDWFT69b7Svq8J8p9tNWe2v9PZNQBY5UyhtOl1vnuHFAX0CRQ3MA9SiKq5wzNh",
|
|
5
5
|
"manifest.bindings.js": "sha384-lPtMf8Ykaic9gNVZKq8Scia1881ZeMAyxer3WCIkUNwwrgzGBWto1OXADUwjvORF",
|
|
6
6
|
"manifest.charts.js": "sha384-gEAv/98+29RbhvNkiNWTNyBPbLTFr2Ld15wLu29FLCL57j1cwGChRrL9Pfk7dBtT",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"manifest.combobox.js": "sha384-MILTkrgsTzsYUjGo4ZuADqV85Xs4GmfB4xexfe9vbJMIoQTZ42W4zs+DTaVSPEsx",
|
|
12
12
|
"manifest.components.js": "sha384-4bc3HgPvF9DHMiOG08w+nWXI7Hho01RuAPAUL9xyLxOiS2igeZpulCVcvr5aT9v6",
|
|
13
13
|
"manifest.computed.js": "sha384-GYML/e81gQfN+iDbqhPUgny8bINCyL+SrbTofoGk4hlCnLLjv51mCv42JMqq+ku5",
|
|
14
|
-
"manifest.data.js": "sha384-
|
|
14
|
+
"manifest.data.js": "sha384-Ry718yAA50wEXkWObL/41NDB7XFa2tMMxlwcrRnbK5ycYGApz2zD9/9SBPqRJY1R",
|
|
15
15
|
"manifest.datepicker.js": "sha384-XnbeURni2X91ozVzatQcSjYYIS4MoW12dBRJnYAGBr0nCQ624heH5s+xtQSpLZX6",
|
|
16
16
|
"manifest.defer.js": "sha384-WcCf8YQ1bKIXCLSZ24a0bJwepbYntYc8TzQM50hklo5VMIH8AtzDnwl6WU4prRv1",
|
|
17
17
|
"manifest.device.js": "sha384-g+txmrEszYtuOvRelTp/c1wSNR2AtllVI9rx5NPPD7DzhVUnMNughonZykv2xlBW",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"manifest.slides.js": "sha384-3uRTkyK9XPLmnxI2+igZlpi4EyPlU/7IHj5j3BZJJ2KN455vXyk99fiXV3feO/XY",
|
|
28
28
|
"manifest.status.js": "sha384-MBO345ab7H6Uq1X2dZLt4Ge1Gcra+Z2qYApvlAeIV8CJhDDJrz2FPXpp+Kcp8zcM",
|
|
29
29
|
"manifest.svg.js": "sha384-qr/8H9+2cIhSXNbRWRtIdrDlTOxKlNJqwEefHvCYoiBNW/kKhPTFa109Orv/EBnb",
|
|
30
|
-
"manifest.sw.js": "sha384-
|
|
30
|
+
"manifest.sw.js": "sha384-FHy5ttfRVY2p/uI3dD8Pd2j/7YOOeTaHgKwdpR0UVJdBS2Tg2t9jzo8iHt7O8mTF",
|
|
31
31
|
"manifest.tabs.js": "sha384-OIIcyaQnGS0eNYk4zgAFEDboNYect7THvUd9D0V6nqCeDOxQcoiqLrBEmmWVTTet",
|
|
32
32
|
"manifest.tailwind.js": "sha384-r/Jvqb+Piz21jUts10BbVAJoKkShOdJRVFpywyi4HPIi/OfOJq5CtPyWAPbdkMgt",
|
|
33
33
|
"manifest.text.edit.js": "sha384-RzOvLQE8GbmI6gntAwiotDewYT/08OHcd7sJ5hLon8e8u1Xbq1D7VfEGuaRVd2CE",
|
|
34
34
|
"manifest.toasts.js": "sha384-/OV32LLMJl0Iw8NoNQJ+5lgntLxjIJq/YNj5JAKS/+nUhVx4MMB9h1FOqP7zuj2M",
|
|
35
|
-
"manifest.tooltips.js": "sha384-
|
|
35
|
+
"manifest.tooltips.js": "sha384-sOWANzXAWeZYMJ+fVtx7dH5CpPMso10T+Oyau5wDCwYbAxI2n3adwCoq7PQp2RAE",
|
|
36
36
|
"manifest.url.parameters.js": "sha384-J2aSVBOPsoqsbafHndrWLHEDpKb4AKJAoQnVmKA4gZh5P/8HHjFWHO/lkusmG84l",
|
|
37
37
|
"manifest.utilities.js": "sha384-L5uXMLFBIF6LUM1haRjd4eGjHSWuqsCYSpPZRPYosNfJsMC5U5TnmjBxIhrZRe2d",
|
|
38
38
|
"manifest.virtual.js": "sha384-ZDNoF9QVhVcVpkjIK6NH15S6I5c6OBshiJpXSOYjNsIB+298I0a7g3aFO+jyq4Vb",
|
package/lib/manifest.sw.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
// Build stamps the published version here; unstamped (dev) falls back to the
|
|
18
18
|
// registration URL's `v`, then 'dev'.
|
|
19
|
-
const BUILD_VERSION = '0.5.
|
|
19
|
+
const BUILD_VERSION = '0.5.229';
|
|
20
20
|
const CACHE_PREFIX = 'mnfst-sw:';
|
|
21
21
|
const META_CACHE = CACHE_PREFIX + 'meta';
|
|
22
22
|
// Sized to hold a full precache.json warm-up (PRECACHE_MAX_ENTRIES server-side)
|
package/lib/manifest.tooltips.js
CHANGED
|
@@ -157,55 +157,77 @@ function initializeTooltipPlugin() {
|
|
|
157
157
|
if (wasOpen) markTooltipHidden();
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
// ----
|
|
160
|
+
// ---- Content classification ----
|
|
161
|
+
// Any JS expression evaluates; text that isn't one renders verbatim.
|
|
161
162
|
|
|
162
|
-
|
|
163
|
+
const BARE_IDENTIFIER = /^[\p{ID_Start}$_][\p{ID_Continue}$]*$/u;
|
|
164
|
+
const looksLikeHtml = (s) => s.includes('<') && s.includes('>');
|
|
163
165
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
expression.startsWith('$x.') ||
|
|
168
|
-
(expression.includes('+') || expression.includes('`') || expression.includes('${'));
|
|
166
|
+
function parsesAsExpression(src) {
|
|
167
|
+
try { new Function('return (' + src + '\n)'); return true; } catch { return false; }
|
|
168
|
+
}
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
function inScope(el, name) {
|
|
171
|
+
try { return name in Alpine.$data(el); } catch { return false; }
|
|
172
|
+
}
|
|
172
173
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
174
|
+
// Errors come back as values: unresolved names read as plain text
|
|
175
|
+
// ("Re-run", "Hello, world"); other errors warn against the authored expression
|
|
176
|
+
const guarded = (src) =>
|
|
177
|
+
'(() => { try { return (' + src + '\n) } catch (e) { return { __tooltipError: e } } })()';
|
|
178
|
+
|
|
179
|
+
function unwrapError(v, el, src) {
|
|
180
|
+
const err = v && typeof v === 'object' && v.__tooltipError;
|
|
181
|
+
if (!(err instanceof Error)) return { value: v };
|
|
182
|
+
if (err instanceof ReferenceError) return { value: undefined };
|
|
183
|
+
console.warn(`Alpine Expression Error: ${err.message}\n\nExpression: "${src}"\n\n`, el);
|
|
184
|
+
return { value: null };
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ---- Directive ----
|
|
188
|
+
|
|
189
|
+
Alpine.directive('tooltip', (el, { modifiers, expression }, { effect, evaluateLater }) => {
|
|
190
|
+
|
|
191
|
+
// --- Content ---
|
|
192
|
+
// Escape by default; author literal HTML or .html/.safe opts in.
|
|
193
|
+
const htmlOptIn = modifiers.includes('html') || modifiers.includes('safe');
|
|
194
|
+
const literal = expression ? { text: expression, html: htmlOptIn || looksLikeHtml(expression) } : null;
|
|
195
|
+
const src = expression.trim();
|
|
196
|
+
let evaluate = null;
|
|
197
|
+
let fallback = true;
|
|
198
|
+
|
|
199
|
+
if (src.startsWith('$x.')) {
|
|
200
|
+
const [contentType] = src.substring(3).split('.');
|
|
201
|
+
evaluate = evaluateLater(src);
|
|
202
|
+
fallback = false;
|
|
177
203
|
effect(() => {
|
|
178
204
|
const store = Alpine.store('collections');
|
|
179
205
|
if (store && typeof store.loadCollection === 'function' && !store[contentType]) {
|
|
180
206
|
store.loadCollection(contentType);
|
|
181
207
|
}
|
|
182
208
|
});
|
|
183
|
-
} else if (
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
getContent = evaluateLater(expression);
|
|
190
|
-
} else {
|
|
191
|
-
// Static literal — wrap in quotes so evaluateLater returns it verbatim
|
|
192
|
-
getContent = evaluateLater(`'${expression}'`);
|
|
209
|
+
} else if (BARE_IDENTIFIER.test(src)) {
|
|
210
|
+
// Single word: a scope value or magic, else text (never a global like Image or close)
|
|
211
|
+
const getValue = evaluateLater(guarded(src));
|
|
212
|
+
evaluate = (cb) => (src.startsWith('$') || inScope(el, src)) ? getValue(cb) : cb(undefined);
|
|
213
|
+
} else if (parsesAsExpression(src)) {
|
|
214
|
+
evaluate = evaluateLater(guarded(src));
|
|
193
215
|
}
|
|
194
216
|
|
|
195
217
|
// --- Positioning modifiers ---
|
|
196
218
|
const validPositions = ['top', 'bottom', 'start', 'end', 'center', 'corner'];
|
|
197
219
|
const positions = modifiers.filter(m => validPositions.includes(m));
|
|
198
220
|
|
|
199
|
-
//
|
|
200
|
-
|
|
201
|
-
if (!isDynamic) {
|
|
202
|
-
getContent(v => { cachedContent = v; });
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Resolves the content to show, calling the provided callback with the HTML string.
|
|
221
|
+
// Static text resolves once; expressions re-evaluate on every show.
|
|
222
|
+
// Empty results (null, false, '') show nothing.
|
|
206
223
|
const resolveContent = (cb) => {
|
|
207
|
-
if (!
|
|
208
|
-
|
|
224
|
+
if (!evaluate) { cb(literal); return; }
|
|
225
|
+
evaluate(raw => {
|
|
226
|
+
const v = fallback ? unwrapError(raw, el, src).value : raw;
|
|
227
|
+
if (fallback && (v === undefined || Number.isNaN(v))) { cb(literal); return; }
|
|
228
|
+
if (v == null || v === false || v === '') { cb(null); return; }
|
|
229
|
+
cb({ text: String(v), html: htmlOptIn });
|
|
230
|
+
});
|
|
209
231
|
};
|
|
210
232
|
|
|
211
233
|
// --- Event handlers ---
|
|
@@ -225,8 +247,9 @@ function initializeTooltipPlugin() {
|
|
|
225
247
|
const t = document.getElementById(triggerTargetId);
|
|
226
248
|
if (t && t.matches && t.matches(':popover-open')) return;
|
|
227
249
|
}
|
|
228
|
-
resolveContent(
|
|
229
|
-
showSingletonFor(el,
|
|
250
|
+
resolveContent(content => {
|
|
251
|
+
if (content) showSingletonFor(el, content.text, positions, content.html);
|
|
252
|
+
else hideAnySingleton();
|
|
230
253
|
});
|
|
231
254
|
}, delay);
|
|
232
255
|
};
|