nuxt-og-image 6.4.6 → 6.4.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/chunks/tw4.cjs +1 -1
- package/dist/chunks/tw4.mjs +1 -1
- package/dist/chunks/uno.cjs +1 -1
- package/dist/chunks/uno.mjs +1 -1
- package/dist/devtools/200.html +1 -1
- package/dist/devtools/404.html +1 -1
- package/dist/devtools/_nuxt/BpycYUS7.js +1 -0
- package/dist/devtools/_nuxt/CD5ERUqd.js +6 -0
- package/dist/devtools/_nuxt/CaN1xyol.js +3 -0
- package/dist/devtools/_nuxt/CaUGEVp7.js +1 -0
- package/dist/devtools/_nuxt/{B75jVnAo.js → D-SbM8XJ.js} +1 -1
- package/dist/devtools/_nuxt/DG6qtUJw.js +152 -0
- package/dist/devtools/_nuxt/{C2qZkcnS.js → DcgxrIJS.js} +1 -1
- package/dist/devtools/_nuxt/DddW44YX.js +4 -0
- package/dist/devtools/_nuxt/DevtoolsSection.R7m3HD1q.css +1 -0
- package/dist/devtools/_nuxt/DevtoolsSnippet.BGKAlc9O.css +1 -0
- package/dist/devtools/_nuxt/ZaZQm-qN.js +23 -0
- package/dist/devtools/_nuxt/b4dSe8RS.js +3 -0
- package/dist/devtools/_nuxt/bk2FT9xh.js +1 -0
- package/dist/devtools/_nuxt/builds/latest.json +1 -1
- package/dist/devtools/_nuxt/builds/meta/e868427f-4a2d-49e8-9faf-74ff7663dfb9.json +1 -0
- package/dist/devtools/_nuxt/entry.Ciqipq4I.css +2 -0
- package/dist/devtools/_nuxt/kA6DLus1.js +2 -0
- package/dist/devtools/_nuxt/{D5adIWRn.js → oq4DzcWM.js} +1 -1
- package/dist/devtools/_nuxt/{pages.DNfeVIDd.css → pages.DRV8dSAi.css} +1 -1
- package/dist/devtools/_nuxt/renderer-select.C7qbPwz4.css +1 -0
- package/dist/devtools/debug/index.html +1 -1
- package/dist/devtools/docs/index.html +1 -1
- package/dist/devtools/index.html +1 -1
- package/dist/devtools/templates/index.html +1 -1
- package/dist/module.cjs +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/server/og-image/font-source.d.ts +20 -0
- package/dist/runtime/server/og-image/font-source.js +20 -0
- package/dist/runtime/server/og-image/fonts.d.ts +8 -1
- package/dist/runtime/server/og-image/fonts.js +22 -32
- package/dist/runtime/server/og-image/takumi/renderer.js +40 -12
- package/dist/shared/{nuxt-og-image.TJuh6pW5.cjs → nuxt-og-image.KwJtn8oJ.cjs} +3 -3
- package/dist/shared/{nuxt-og-image.Cr3WHMk1.mjs → nuxt-og-image.ZQrnalbB.mjs} +2 -2
- package/package.json +7 -7
- package/dist/devtools/_nuxt/671cdwR5.js +0 -1
- package/dist/devtools/_nuxt/8kkJjsM6.js +0 -2
- package/dist/devtools/_nuxt/BJ9iyiD_.js +0 -3
- package/dist/devtools/_nuxt/BcGh1UWn.js +0 -23
- package/dist/devtools/_nuxt/CHmOAOu6.js +0 -3
- package/dist/devtools/_nuxt/Ci8ZvNRB.js +0 -1
- package/dist/devtools/_nuxt/DVtbGlya.js +0 -152
- package/dist/devtools/_nuxt/DbOyl855.js +0 -1
- package/dist/devtools/_nuxt/DevtoolsSection.DTZAmexP.css +0 -1
- package/dist/devtools/_nuxt/DevtoolsSnippet.Cd7XR-3f.css +0 -1
- package/dist/devtools/_nuxt/DrqfEi04.js +0 -4
- package/dist/devtools/_nuxt/builds/meta/35156fa7-4f5e-4690-9647-2e1992596b7c.json +0 -1
- package/dist/devtools/_nuxt/cIRSrPLM.js +0 -6
- package/dist/devtools/_nuxt/entry.zgUFdiSv.css +0 -2
- package/dist/devtools/_nuxt/renderer-select.elTTxv30.css +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function fontFormat(src) {
|
|
2
|
+
if (src.endsWith(".woff2"))
|
|
3
|
+
return "woff2";
|
|
4
|
+
if (src.endsWith(".woff"))
|
|
5
|
+
return "woff";
|
|
6
|
+
if (src.endsWith(".otf"))
|
|
7
|
+
return "otf";
|
|
8
|
+
return "ttf";
|
|
9
|
+
}
|
|
10
|
+
export function selectFontSource(f, supportedFormats, preferStatic) {
|
|
11
|
+
const primarySupported = supportedFormats.has(fontFormat(f.src));
|
|
12
|
+
const satoriSupported = !!(f.satoriSrc && supportedFormats.has(fontFormat(f.satoriSrc)));
|
|
13
|
+
if (preferStatic && satoriSupported && f.satoriSrc !== f.src)
|
|
14
|
+
return { src: f.satoriSrc, isStaticFallback: true };
|
|
15
|
+
if (primarySupported)
|
|
16
|
+
return { src: f.src, isStaticFallback: false };
|
|
17
|
+
if (satoriSupported)
|
|
18
|
+
return { src: f.satoriSrc, isStaticFallback: true };
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { H3Event } from 'h3';
|
|
2
2
|
import type { OgImageRenderEventContext, RuntimeFontConfig } from '../../types.js';
|
|
3
|
+
import type { FontFormat } from './font-source.js';
|
|
3
4
|
export { buildSubsetFamilyChain, renameSubsetFonts, resolveSubsetChain } from './font-subsets.js';
|
|
4
5
|
export { codepointsIntersectRanges, extractCodepoints, parseUnicodeRange } from './unicode-range.js';
|
|
5
|
-
type FontFormat = 'ttf' | 'otf' | 'woff' | 'woff2';
|
|
6
6
|
export interface LoadFontsOptions {
|
|
7
7
|
/**
|
|
8
8
|
* Font formats the renderer can parse.
|
|
@@ -16,6 +16,13 @@ export interface LoadFontsOptions {
|
|
|
16
16
|
fontFamilyOverride?: string;
|
|
17
17
|
/** Codepoints present in the template — fonts whose unicodeRange doesn't intersect are skipped */
|
|
18
18
|
codepoints?: Set<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Prefer the static satoriSrc (full TTF/WOFF from fontless) over the primary src
|
|
21
|
+
* (subset WOFF2 from @nuxt/fonts) when both are usable. Takumi uses this so non-Latin
|
|
22
|
+
* glyphs (devanagari, CJK, etc.) render — @nuxt/fonts CSS often only ships latin
|
|
23
|
+
* subsets for a family, but the fontless static file contains the full glyph set.
|
|
24
|
+
*/
|
|
25
|
+
preferStatic?: boolean;
|
|
19
26
|
}
|
|
20
27
|
export declare function loadAllFontsDebug(component?: string): {
|
|
21
28
|
component: string | undefined;
|
|
@@ -4,19 +4,11 @@ import resolvedFonts from "#og-image/fonts";
|
|
|
4
4
|
import availableFonts from "#og-image/fonts-available";
|
|
5
5
|
import { logger } from "../../logger.js";
|
|
6
6
|
import { fontArrayCache, fontCache } from "./cache/lru.js";
|
|
7
|
+
import { fontFormat, selectFontSource } from "./font-source.js";
|
|
7
8
|
import { renameSubsetFonts } from "./font-subsets.js";
|
|
8
9
|
import { codepointsIntersectRanges, parseUnicodeRange } from "./unicode-range.js";
|
|
9
10
|
export { buildSubsetFamilyChain, renameSubsetFonts, resolveSubsetChain } from "./font-subsets.js";
|
|
10
11
|
export { codepointsIntersectRanges, extractCodepoints, parseUnicodeRange } from "./unicode-range.js";
|
|
11
|
-
function fontFormat(src) {
|
|
12
|
-
if (src.endsWith(".woff2"))
|
|
13
|
-
return "woff2";
|
|
14
|
-
if (src.endsWith(".woff"))
|
|
15
|
-
return "woff";
|
|
16
|
-
if (src.endsWith(".otf"))
|
|
17
|
-
return "otf";
|
|
18
|
-
return "ttf";
|
|
19
|
-
}
|
|
20
12
|
async function loadFont(event, font, src) {
|
|
21
13
|
const cacheKey = `${font.family}-${font.weight}-${font.style}-${src}`;
|
|
22
14
|
const cached = fontCache.get(cacheKey);
|
|
@@ -103,39 +95,37 @@ export async function loadAllFonts(event, options) {
|
|
|
103
95
|
}
|
|
104
96
|
}
|
|
105
97
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const ranges = parseUnicodeRange(f.unicodeRange);
|
|
112
|
-
if (!ranges)
|
|
113
|
-
continue;
|
|
114
|
-
if (!codepointsIntersectRanges(options.codepoints, ranges))
|
|
115
|
-
fonts.splice(i, 1);
|
|
116
|
-
}
|
|
98
|
+
const resolved = [];
|
|
99
|
+
for (const f of fonts) {
|
|
100
|
+
const selection = selectFontSource(f, options.supportedFormats, options.preferStatic ?? false);
|
|
101
|
+
if (selection)
|
|
102
|
+
resolved.push({ font: f, ...selection });
|
|
117
103
|
}
|
|
104
|
+
const filtered = options.codepoints && options.codepoints.size > 0 ? resolved.filter(({ font: f, isStaticFallback }) => {
|
|
105
|
+
if (isStaticFallback || !f.unicodeRange)
|
|
106
|
+
return true;
|
|
107
|
+
const ranges = parseUnicodeRange(f.unicodeRange);
|
|
108
|
+
if (!ranges)
|
|
109
|
+
return true;
|
|
110
|
+
return codepointsIntersectRanges(options.codepoints, ranges);
|
|
111
|
+
}) : resolved;
|
|
118
112
|
const results = await Promise.all(
|
|
119
|
-
|
|
120
|
-
let src =
|
|
121
|
-
const srcFormat = fontFormat(f.src);
|
|
122
|
-
if (!options.supportedFormats.has(srcFormat)) {
|
|
123
|
-
if (f.satoriSrc && options.supportedFormats.has(fontFormat(f.satoriSrc))) {
|
|
124
|
-
src = f.satoriSrc;
|
|
125
|
-
} else {
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
113
|
+
filtered.map(async ({ font: f, src: initialSrc, isStaticFallback }) => {
|
|
114
|
+
let src = initialSrc;
|
|
129
115
|
let data = await loadFont(event, f, src);
|
|
130
|
-
if (!data && src !== f.src && options.supportedFormats.has(
|
|
116
|
+
if (!data && src !== f.src && options.supportedFormats.has(fontFormat(f.src))) {
|
|
131
117
|
data = await loadFont(event, f, f.src);
|
|
132
|
-
if (data)
|
|
118
|
+
if (data) {
|
|
133
119
|
src = f.src;
|
|
120
|
+
isStaticFallback = false;
|
|
121
|
+
}
|
|
134
122
|
}
|
|
135
123
|
if (!data)
|
|
136
124
|
return null;
|
|
137
125
|
return {
|
|
138
126
|
...f,
|
|
127
|
+
src,
|
|
128
|
+
...isStaticFallback ? { unicodeRange: void 0 } : {},
|
|
139
129
|
cacheKey: `${f.family}-${f.weight}-${f.style}-${src}`,
|
|
140
130
|
data
|
|
141
131
|
};
|
|
@@ -25,26 +25,54 @@ function withTakumiLock(state, fn) {
|
|
|
25
25
|
state.lock = next.catch(() => void 0);
|
|
26
26
|
return next;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
function dedupeFontsByBinary(fonts) {
|
|
29
|
+
const byBinary = /* @__PURE__ */ new Map();
|
|
29
30
|
for (const font of fonts) {
|
|
30
31
|
if (!font.data)
|
|
31
32
|
continue;
|
|
32
|
-
const
|
|
33
|
-
|
|
33
|
+
const binaryKey = `${font.family}|${font.style || "normal"}|${font.src || ""}`;
|
|
34
|
+
const existing = byBinary.get(binaryKey);
|
|
35
|
+
if (existing) {
|
|
36
|
+
existing.weights.add(font.weight);
|
|
37
|
+
} else {
|
|
38
|
+
byBinary.set(binaryKey, {
|
|
39
|
+
family: font.family,
|
|
40
|
+
style: font.style,
|
|
41
|
+
data: font.data,
|
|
42
|
+
weights: /* @__PURE__ */ new Set([font.weight])
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const result = [];
|
|
47
|
+
for (const [binaryKey, entry] of byBinary) {
|
|
48
|
+
const isVariable = entry.weights.size > 1;
|
|
49
|
+
result.push({
|
|
50
|
+
binaryKey,
|
|
51
|
+
family: entry.family,
|
|
52
|
+
style: entry.style,
|
|
53
|
+
data: entry.data,
|
|
54
|
+
weight: isVariable ? void 0 : [...entry.weights][0]
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
async function loadFontsIntoRenderer(state, fonts) {
|
|
60
|
+
for (const entry of dedupeFontsByBinary(fonts)) {
|
|
61
|
+
if (state.loadedFontKeys.has(entry.binaryKey))
|
|
34
62
|
continue;
|
|
35
|
-
const fontData =
|
|
63
|
+
const fontData = entry.data instanceof ArrayBuffer ? new Uint8Array(entry.data) : Uint8Array.from(entry.data);
|
|
36
64
|
try {
|
|
37
65
|
await state.renderer.loadFont({
|
|
38
|
-
name:
|
|
66
|
+
name: entry.family,
|
|
39
67
|
data: fontData,
|
|
40
|
-
weight:
|
|
41
|
-
style:
|
|
68
|
+
...entry.weight !== void 0 ? { weight: entry.weight } : {},
|
|
69
|
+
style: entry.style
|
|
42
70
|
});
|
|
43
|
-
state.loadedFamilies.add(
|
|
71
|
+
state.loadedFamilies.add(entry.family);
|
|
44
72
|
} catch (err) {
|
|
45
|
-
logger.warn(`Failed to load font "${
|
|
73
|
+
logger.warn(`Failed to load font "${entry.family}" into takumi renderer: ${err.message}`);
|
|
46
74
|
}
|
|
47
|
-
state.loadedFontKeys.add(
|
|
75
|
+
state.loadedFontKeys.add(entry.binaryKey);
|
|
48
76
|
}
|
|
49
77
|
}
|
|
50
78
|
function lookupFontFamily(family, loadedFamilies) {
|
|
@@ -88,7 +116,7 @@ async function createImage(event, format) {
|
|
|
88
116
|
const { fontFamilyOverride, defaultFont } = getDefaultFontFamily(options);
|
|
89
117
|
const nodes = await createTakumiNodes(event);
|
|
90
118
|
const codepoints = extractCodepoints(nodes);
|
|
91
|
-
const fonts = await timings.measure("font-load", () => loadFontsForRenderer(event, { supportedFormats: /* @__PURE__ */ new Set(["ttf", "woff2"]), component: options.component, fontFamilyOverride: fontFamilyOverride || defaultFont, codepoints }));
|
|
119
|
+
const fonts = await timings.measure("font-load", () => loadFontsForRenderer(event, { supportedFormats: /* @__PURE__ */ new Set(["ttf", "woff2"]), preferStatic: true, component: options.component, fontFamilyOverride: fontFamilyOverride || defaultFont, codepoints }));
|
|
92
120
|
await event._nitro.hooks.callHook("nuxt-og-image:takumi:nodes", nodes, event);
|
|
93
121
|
const subsetChains = buildSubsetFamilyChain(fonts);
|
|
94
122
|
const state = await getTakumiState(event);
|
|
@@ -163,7 +191,7 @@ const TakumiRenderer = {
|
|
|
163
191
|
async debug(e) {
|
|
164
192
|
const [vnodes, fonts] = await Promise.all([
|
|
165
193
|
createTakumiNodes(e),
|
|
166
|
-
loadFontsForRenderer(e, { supportedFormats: /* @__PURE__ */ new Set(["ttf", "woff2"]), component: e.options.component })
|
|
194
|
+
loadFontsForRenderer(e, { supportedFormats: /* @__PURE__ */ new Set(["ttf", "woff2"]), preferStatic: true, component: e.options.component })
|
|
167
195
|
]);
|
|
168
196
|
return {
|
|
169
197
|
vnodes,
|
|
@@ -4320,7 +4320,7 @@ const module$1 = kit.defineNuxtModule({
|
|
|
4320
4320
|
await onUpgrade(nuxt, options, previousVersion);
|
|
4321
4321
|
},
|
|
4322
4322
|
async setup(config, nuxt) {
|
|
4323
|
-
const _resolver = kit.createResolver((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/nuxt-og-image.
|
|
4323
|
+
const _resolver = kit.createResolver((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/nuxt-og-image.KwJtn8oJ.cjs', document.baseURI).href)));
|
|
4324
4324
|
const fixSharedPath = (p) => {
|
|
4325
4325
|
if (p.includes("/shared/runtime/"))
|
|
4326
4326
|
return p.replace("/shared/runtime/", "/runtime/");
|
|
@@ -5087,7 +5087,7 @@ export const resolve = (import.meta.dev || import.meta.prerender) ? devResolve :
|
|
|
5087
5087
|
if (hasNuxtFonts && fontContext) {
|
|
5088
5088
|
persistFontUrlMapping({ fontContext, buildDir: nuxt.options.buildDir, logger: logger_js.logger });
|
|
5089
5089
|
}
|
|
5090
|
-
if (!fontProcessingDone && convertedWoff2Files.size === 0 && hasSatoriRenderer() && hasNuxtFonts) {
|
|
5090
|
+
if (!fontProcessingDone && convertedWoff2Files.size === 0 && (hasSatoriRenderer() || hasTakumiRenderer()) && hasNuxtFonts) {
|
|
5091
5091
|
if (pendingFontRequirements.length > 0)
|
|
5092
5092
|
await Promise.all(pendingFontRequirements);
|
|
5093
5093
|
await convertWoff2ToTtf({
|
|
@@ -5156,7 +5156,7 @@ export const rootDir = ${JSON.stringify(nuxt.options.rootDir)}`;
|
|
|
5156
5156
|
});
|
|
5157
5157
|
nuxt.hook("vite:compiled", async () => {
|
|
5158
5158
|
persistFontUrlMapping({ fontContext, buildDir: nuxt.options.buildDir, logger: logger_js.logger });
|
|
5159
|
-
if (fontProcessingDone || !hasSatoriRenderer())
|
|
5159
|
+
if (fontProcessingDone || !hasSatoriRenderer() && !hasTakumiRenderer())
|
|
5160
5160
|
return;
|
|
5161
5161
|
if (pendingFontRequirements.length === 0)
|
|
5162
5162
|
return;
|
|
@@ -5067,7 +5067,7 @@ export const resolve = (import.meta.dev || import.meta.prerender) ? devResolve :
|
|
|
5067
5067
|
if (hasNuxtFonts && fontContext) {
|
|
5068
5068
|
persistFontUrlMapping({ fontContext, buildDir: nuxt.options.buildDir, logger });
|
|
5069
5069
|
}
|
|
5070
|
-
if (!fontProcessingDone && convertedWoff2Files.size === 0 && hasSatoriRenderer() && hasNuxtFonts) {
|
|
5070
|
+
if (!fontProcessingDone && convertedWoff2Files.size === 0 && (hasSatoriRenderer() || hasTakumiRenderer()) && hasNuxtFonts) {
|
|
5071
5071
|
if (pendingFontRequirements.length > 0)
|
|
5072
5072
|
await Promise.all(pendingFontRequirements);
|
|
5073
5073
|
await convertWoff2ToTtf({
|
|
@@ -5136,7 +5136,7 @@ export const rootDir = ${JSON.stringify(nuxt.options.rootDir)}`;
|
|
|
5136
5136
|
});
|
|
5137
5137
|
nuxt.hook("vite:compiled", async () => {
|
|
5138
5138
|
persistFontUrlMapping({ fontContext, buildDir: nuxt.options.buildDir, logger });
|
|
5139
|
-
if (fontProcessingDone || !hasSatoriRenderer())
|
|
5139
|
+
if (fontProcessingDone || !hasSatoriRenderer() && !hasTakumiRenderer())
|
|
5140
5140
|
return;
|
|
5141
5141
|
if (pendingFontRequirements.length === 0)
|
|
5142
5142
|
return;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-og-image",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.4.
|
|
4
|
+
"version": "6.4.8",
|
|
5
5
|
"description": "Enlightened OG Image generation for Nuxt.",
|
|
6
6
|
"author": {
|
|
7
7
|
"website": "https://harlanzw.com",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"mocked-exports": "^0.1.1",
|
|
110
110
|
"nuxt-site-config": "^4.0.8",
|
|
111
111
|
"nuxtseo-shared": "^5.1.3",
|
|
112
|
-
"nypm": "^0.6.
|
|
112
|
+
"nypm": "^0.6.6",
|
|
113
113
|
"ofetch": "^1.5.1",
|
|
114
114
|
"ohash": "^2.0.11",
|
|
115
115
|
"oxc-parser": "^0.127.0",
|
|
@@ -142,18 +142,18 @@
|
|
|
142
142
|
"@nuxt/image": "^2.0.0",
|
|
143
143
|
"@nuxt/module-builder": "^1.0.2",
|
|
144
144
|
"@nuxt/test-utils": "^4.0.2",
|
|
145
|
-
"@nuxt/ui": "^4.
|
|
145
|
+
"@nuxt/ui": "^4.7.0",
|
|
146
146
|
"@nuxtjs/color-mode": "^4.0.0",
|
|
147
147
|
"@nuxtjs/eslint-config-typescript": "^12.1.0",
|
|
148
|
-
"@nuxtjs/i18n": "^10.
|
|
148
|
+
"@nuxtjs/i18n": "^10.3.0",
|
|
149
149
|
"@nuxtjs/tailwindcss": "7.0.0-beta.1",
|
|
150
150
|
"@resvg/resvg-js": "^2.6.2",
|
|
151
151
|
"@resvg/resvg-wasm": "^2.6.2",
|
|
152
152
|
"@shikijs/langs": "^4.0.2",
|
|
153
153
|
"@shikijs/themes": "^4.0.2",
|
|
154
154
|
"@tailwindcss/vite": "^4.2.4",
|
|
155
|
-
"@takumi-rs/core": "^1.
|
|
156
|
-
"@takumi-rs/wasm": "^1.
|
|
155
|
+
"@takumi-rs/core": "^1.1.2",
|
|
156
|
+
"@takumi-rs/wasm": "^1.1.2",
|
|
157
157
|
"@unocss/nuxt": "^66.6.8",
|
|
158
158
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
159
159
|
"@vueuse/nuxt": "^14.2.1",
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
"unocss": "^66.6.8",
|
|
182
182
|
"vitest": "^4.1.5",
|
|
183
183
|
"vue-tsc": "^3.2.7",
|
|
184
|
-
"wrangler": "^4.
|
|
184
|
+
"wrangler": "^4.85.0",
|
|
185
185
|
"yoga-wasm-web": "^0.3.3"
|
|
186
186
|
},
|
|
187
187
|
"scripts": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{At as e,Dt as t,M as n,Q as r,S as i,T as a,U as o,_ as s,g as c,q as l,v as u,y as d}from"./B75jVnAo.js";import{D as f}from"./CHmOAOu6.js";import{t as p}from"./CP0tQR2M.js";var m=[`open`],h={class:`flex-1 min-w-0`},g={class:`section-label`},_={key:0,class:`section-description`},v=Object.assign(p(a({__name:`DevtoolsSection`,props:n({icon:{},text:{},description:{},containerClass:{default:``},headerClass:{},collapse:{type:Boolean,default:!0},open:{type:Boolean},padding:{type:[Boolean,String],default:!0}},{open:{default:!0},openModifiers:{}}),emits:[`update:open`],setup(n){let a=r(n,`open`);function p(e){a.value=e.target.open}return(r,v)=>{let y=f;return o(),d(`details`,{open:a.value,class:`section-block`,onToggle:p},[c(`summary`,{class:t([`section-header`,n.collapse?``:`pointer-events-none`])},[c(`div`,{class:t([`section-title`,[a.value?``:`opacity-60`,n.headerClass]])},[n.icon?(o(),s(y,{key:0,name:n.icon,class:`section-icon`},null,8,[`name`])):u(``,!0),c(`div`,h,[c(`div`,g,[l(r.$slots,`text`,{},()=>[i(e(n.text),1)],!0)]),n.description||r.$slots.description?(o(),d(`div`,_,[l(r.$slots,`description`,{},()=>[i(e(n.description),1)],!0)])):u(``,!0)]),l(r.$slots,`actions`,{},void 0,!0),n.collapse?(o(),s(y,{key:1,name:`carbon:chevron-down`,class:`chevron`})):u(``,!0)],2)],2),c(`div`,{class:t([`section-content`,typeof n.padding==`string`?n.padding:n.padding?`px-4`:``])},[l(r.$slots,`details`,{},void 0,!0),c(`div`,{class:t(n.containerClass)},[l(r.$slots,`default`,{},void 0,!0)],2),l(r.$slots,`footer`,{},void 0,!0)],2)],40,m)}}}),[[`__scopeId`,`data-v-c5ad32d6`]]),{__name:`DevtoolsSection`});export{v as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{At as e,C as t,K as n,T as r,Tt as i,U as a,_ as o,at as s,g as c,u as l,v as u,y as d}from"./B75jVnAo.js";import{t as f}from"./CHmOAOu6.js";import{t as p}from"./671cdwR5.js";import{t as m}from"./Ci8ZvNRB.js";var h={class:`h-full max-h-full overflow-hidden space-y-5`},g={class:`space-y-2 p-3 bg-amber-500/10 rounded-lg border border-amber-500/20`},_=r({__name:`debug`,setup(r){let{globalDebug:_,debug:v}=f();return(r,f)=>{let y=p,b=m;return a(),d(`div`,h,[i(v)?.warnings?.length?(a(),o(y,{key:0,icon:`carbon:warning`,text:`Satori Warnings`},{default:s(()=>[c(`div`,g,[(a(!0),d(l,null,n(i(v).warnings,(t,n)=>(a(),d(`div`,{key:n,class:`text-sm text-amber-200 font-mono`},e(t),1))),128))])]),_:1})):u(``,!0),t(y,{icon:`carbon:settings`,text:`Compatibility`},{default:s(()=>[t(b,{code:JSON.stringify(i(_)?.compatibility||{},null,2),lang:`json`,label:`Compatibility`},null,8,[`code`])]),_:1}),t(y,{icon:`carbon:ibm-cloud-pak-manta-automated-data-lineage`,text:`vNodes`},{default:s(()=>[t(b,{code:JSON.stringify(i(v)?.vnodes||{},null,2),lang:`json`,label:`vNodes`},null,8,[`code`])]),_:1}),t(y,{icon:`carbon:ibm-cloud-pak-manta-automated-data-lineage`,text:`SVG`},{default:s(()=>[t(b,{code:i(v)?.svg?.replaceAll(`>`,`>
|
|
2
|
-
`)||``,lang:`xml`,label:`SVG`},null,8,[`code`])]),_:1}),t(y,{icon:`carbon:settings`,text:`Runtime Config`},{default:s(()=>[t(b,{code:JSON.stringify(i(_)?.runtimeConfig||{},null,2),lang:`json`,label:`Runtime Config`},null,8,[`code`])]),_:1})])}}});export{_ as default};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{At as e,B as t,C as n,Ct as r,Dt as i,L as a,T as o,Tt as s,U as c,g as l,gt as u,kt as d,o as f,ot as p,tt as m,v as h,y as g}from"./B75jVnAo.js";import{Ht as _}from"./cIRSrPLM.js";import{Ct as v,D as y,jt as b,o as x}from"./CHmOAOu6.js";import{t as S}from"./CP0tQR2M.js";var C=[`src`],w={key:0,class:`loading-state`},T={key:1,class:`error-state`},E={class:`error-header`},D={class:`error-type`},O={class:`error-message`},k={key:0,class:`error-stack`},A=Object.assign(S(o({__name:`ImageLoader`,props:{src:{},aspectRatio:{},maxHeight:{},maxWidth:{},minHeight:{}},emits:[`load`],setup(t,{emit:o}){let _=t,v=o,b=u(!1),S=u(!1),A=u(!1),j=u(0),M;m(()=>_.src,()=>{S.value=!0,A.value=!1,b.value=!1,j.value=Date.now(),clearTimeout(M),M=setTimeout(()=>{S.value&&(A.value=!0)},200)},{immediate:!0});function N(){S.value=!1,A.value=!1,clearTimeout(M),v(`load`,{timeTaken:Date.now()-j.value,sizeKb:``})}a(()=>clearTimeout(M));function P(){S.value=!1,A.value=!1,clearTimeout(M),$fetch(_.src).catch(e=>{b.value=e.data?.stack||[`Failed to load image`]})}return(a,o)=>{let u=y;return c(),g(`div`,{class:i([`image-loader`,{"is-valid":!s(b)&&!s(S),"is-error":s(b)}]),style:d({aspectRatio:t.aspectRatio,minHeight:t.minHeight})},[p(l(`img`,{src:t.src,style:d({aspectRatio:t.aspectRatio,maxWidth:`${s(r)(s(x).width)||1200}px`}),onLoad:N,onError:P},null,44,C),[[f,!s(S)&&!s(b)]]),s(A)?(c(),g(`div`,w,[...o[0]||=[l(`div`,{class:`loading-spinner`},null,-1)]])):h(``,!0),s(b)?(c(),g(`div`,T,[l(`div`,E,[n(u,{name:`carbon:warning`,class:`error-icon`}),l(`span`,D,e(s(b).join(`
|
|
2
|
-
`).includes(`satori`)?`SatoriError`:`ImageError`),1)]),l(`p`,O,e(s(b)[0]?.replace(`Error:`,``)),1),s(b).length>1?(c(),g(`pre`,k,e(s(b).slice(1).join(`
|
|
3
|
-
`)),1)):h(``,!0)])):h(``,!0)],6)}}}),[[`__scopeId`,`data-v-7f953e88`]]),{__name:`ImageLoader`}),j=Object.assign(S(o({__name:`IFrameLoader`,props:{src:{},aspectRatio:{}},emits:[`load`],setup(e,{emit:n}){let i=e,a=n,o=u(),f=u(),p=u(),h=b(()=>{let e=f.value;if(!e||!o.value)return;let t=Date.now();e.src=``;let n=r(x.value.width)||1200,i=p.value?.offsetWidth,s=i?Math.min(1,i/n):1;e.style.opacity=`0`,e.onload=()=>{e.style.opacity=`1`,a(`load`,{timeTaken:Date.now()-t})},e.src=_(o.value,{scale:s})},200);return t(()=>{m(()=>i.src,e=>{o.value!==e&&f.value&&(o.value=e,h())},{immediate:!0}),m(f,()=>{h()})}),v(p,()=>{o.value&&h()}),m(()=>r(x.value.width),()=>{o.value&&h()},{flush:`post`}),(t,n)=>(c(),g(`div`,{ref_key:`container`,ref:p,class:`iframe-loader`,style:d({aspectRatio:e.aspectRatio,maxWidth:`${s(r)(s(x).width)||1200}px`})},[l(`iframe`,{ref_key:`iframe`,ref:f},null,512)],4))}}),[[`__scopeId`,`data-v-6929e48a`]]),{__name:`IFrameLoader`});export{A as n,j as t};
|