@absolutejs/absolute 0.19.0-beta.623 → 0.19.0-beta.625
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/ai/client/index.js +8751 -6935
- package/dist/ai/client/index.js.map +5 -5
- package/dist/ai/client/ui.js +6402 -42
- package/dist/ai/client/ui.js.map +7 -4
- package/dist/ai/index.js +12994 -8132
- package/dist/ai/index.js.map +15 -13
- package/dist/ai/rag/quality.js +4194 -37
- package/dist/ai/rag/quality.js.map +6 -5
- package/dist/ai/rag/ui.js +6407 -42
- package/dist/ai/rag/ui.js.map +7 -4
- package/dist/ai-client/angular/ai/index.js +401 -4
- package/dist/ai-client/react/ai/index.js +537 -511
- package/dist/ai-client/vue/ai/index.js +743 -720
- package/dist/angular/ai/index.js +9400 -3140
- package/dist/angular/ai/index.js.map +7 -6
- package/dist/react/ai/index.js +8187 -6372
- package/dist/react/ai/index.js.map +5 -5
- package/dist/src/ai/index.d.ts +2 -2
- package/dist/src/ai/rag/adapters/filtering.d.ts +2 -0
- package/dist/src/ai/rag/adapters/queryPlanning.d.ts +11 -0
- package/dist/src/ai/rag/index.d.ts +4 -4
- package/dist/src/ai/rag/ingestion.d.ts +3 -0
- package/dist/src/ai/rag/presentation.d.ts +6 -1
- package/dist/src/ai/rag/quality.d.ts +95 -2
- package/dist/src/ai/rag/sync.d.ts +20 -1
- package/dist/src/ai/rag/types.d.ts +1 -1
- package/dist/src/ai/rag/ui.d.ts +1 -1
- package/dist/src/react/ai/useRAG.d.ts +1 -1
- package/dist/src/react/ai/useRAGIndexAdmin.d.ts +2 -2
- package/dist/src/vue/ai/useRAG.d.ts +408 -0
- package/dist/src/vue/ai/useRAGEvaluate.d.ts +84 -0
- package/dist/src/vue/ai/useRAGIndexAdmin.d.ts +222 -0
- package/dist/src/vue/ai/useRAGOps.d.ts +102 -0
- package/dist/src/vue/components/Image.d.ts +74 -0
- package/dist/src/vue/components/index.d.ts +1 -1
- package/dist/src/vue/index.d.ts +1 -1
- package/dist/svelte/ai/index.js +8186 -6371
- package/dist/svelte/ai/index.js.map +4 -4
- package/dist/types/ai.d.ts +389 -1
- package/dist/vue/ai/index.js +8186 -6371
- package/dist/vue/ai/index.js.map +4 -4
- package/dist/vue/components/Image.js +253 -0
- package/dist/vue/components/Image.js.map +11 -0
- package/dist/vue/components/index.js +181 -16
- package/dist/vue/components/index.js.map +5 -3
- package/dist/vue/index.js +195 -30
- package/dist/vue/index.js.map +6 -4
- package/package.json +11 -11
- package/dist/Image-0pe96k20.vue +0 -186
- package/dist/vue/components/Image.vue +0 -186
- package/dist/vue/components/Image.vue.d.ts +0 -4
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
function __accessProp(key) {
|
|
9
|
+
return this[key];
|
|
10
|
+
}
|
|
11
|
+
var __toESMCache_node;
|
|
12
|
+
var __toESMCache_esm;
|
|
13
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
14
|
+
var canCache = mod != null && typeof mod === "object";
|
|
15
|
+
if (canCache) {
|
|
16
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
17
|
+
var cached = cache.get(mod);
|
|
18
|
+
if (cached)
|
|
19
|
+
return cached;
|
|
20
|
+
}
|
|
21
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
22
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
23
|
+
for (let key of __getOwnPropNames(mod))
|
|
24
|
+
if (!__hasOwnProp.call(to, key))
|
|
25
|
+
__defProp(to, key, {
|
|
26
|
+
get: __accessProp.bind(mod, key),
|
|
27
|
+
enumerable: true
|
|
28
|
+
});
|
|
29
|
+
if (canCache)
|
|
30
|
+
cache.set(mod, to);
|
|
31
|
+
return to;
|
|
32
|
+
};
|
|
33
|
+
var __toCommonJS = (from) => {
|
|
34
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
35
|
+
if (entry)
|
|
36
|
+
return entry;
|
|
37
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
38
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
39
|
+
for (var key of __getOwnPropNames(from))
|
|
40
|
+
if (!__hasOwnProp.call(entry, key))
|
|
41
|
+
__defProp(entry, key, {
|
|
42
|
+
get: __accessProp.bind(from, key),
|
|
43
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
__moduleCache.set(from, entry);
|
|
47
|
+
return entry;
|
|
48
|
+
};
|
|
49
|
+
var __moduleCache;
|
|
50
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
51
|
+
var __returnValue = (v) => v;
|
|
52
|
+
function __exportSetter(name, newValue) {
|
|
53
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
54
|
+
}
|
|
55
|
+
var __export = (target, all) => {
|
|
56
|
+
for (var name in all)
|
|
57
|
+
__defProp(target, name, {
|
|
58
|
+
get: all[name],
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
set: __exportSetter.bind(all, name)
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
65
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
66
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
67
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
68
|
+
else
|
|
69
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
70
|
+
if (d = decorators[i])
|
|
71
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
72
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
73
|
+
};
|
|
74
|
+
var __legacyMetadataTS = (k, v) => {
|
|
75
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
76
|
+
return Reflect.metadata(k, v);
|
|
77
|
+
};
|
|
78
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
79
|
+
var __require = import.meta.require;
|
|
80
|
+
|
|
81
|
+
// src/vue/components/Image.ts
|
|
82
|
+
import { computed, defineComponent, h, ref } from "vue";
|
|
83
|
+
|
|
84
|
+
// src/utils/imageClient.ts
|
|
85
|
+
var DEFAULT_DEVICE_SIZES = [
|
|
86
|
+
640,
|
|
87
|
+
750,
|
|
88
|
+
828,
|
|
89
|
+
1080,
|
|
90
|
+
1200,
|
|
91
|
+
1920,
|
|
92
|
+
2048,
|
|
93
|
+
3840
|
|
94
|
+
];
|
|
95
|
+
var DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];
|
|
96
|
+
var DEFAULT_QUALITY = 75;
|
|
97
|
+
var OPTIMIZATION_ENDPOINT = "/_absolute/image";
|
|
98
|
+
var buildOptimizedUrl = (src, width, quality, basePath = OPTIMIZATION_ENDPOINT) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;
|
|
99
|
+
var getAllSizes = (deviceSizes, imageSizes) => {
|
|
100
|
+
const device = deviceSizes ?? DEFAULT_DEVICE_SIZES;
|
|
101
|
+
const image = imageSizes ?? DEFAULT_IMAGE_SIZES;
|
|
102
|
+
return [...device, ...image].sort((left, right) => left - right);
|
|
103
|
+
};
|
|
104
|
+
var snapToSize = (target, sizes) => {
|
|
105
|
+
for (const size of sizes) {
|
|
106
|
+
if (size >= target)
|
|
107
|
+
return size;
|
|
108
|
+
}
|
|
109
|
+
return sizes[sizes.length - 1] ?? target;
|
|
110
|
+
};
|
|
111
|
+
var generateBlurSvg = (base64Thumbnail) => {
|
|
112
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320"><filter id="b" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="20"/><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1"/></filter><image filter="url(#b)" x="0" y="0" width="100%" height="100%" href="${base64Thumbnail}"/></svg>`;
|
|
113
|
+
const encoded = encodeURIComponent(svg);
|
|
114
|
+
return `url("data:image/svg+xml,${encoded}")`;
|
|
115
|
+
};
|
|
116
|
+
var generateSrcSet = (src, width, sizes, deviceSizes, imageSizes) => {
|
|
117
|
+
const quality = DEFAULT_QUALITY;
|
|
118
|
+
if (sizes) {
|
|
119
|
+
const allSizes = getAllSizes(deviceSizes, imageSizes);
|
|
120
|
+
return allSizes.map((sizeWidth) => `${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`).join(", ");
|
|
121
|
+
}
|
|
122
|
+
if (width) {
|
|
123
|
+
const allSizes = getAllSizes(deviceSizes, imageSizes);
|
|
124
|
+
const w1x = snapToSize(width, allSizes);
|
|
125
|
+
const w2x = snapToSize(width * 2, allSizes);
|
|
126
|
+
return `${buildOptimizedUrl(src, w1x, quality)} 1x, ${buildOptimizedUrl(src, w2x, quality)} 2x`;
|
|
127
|
+
}
|
|
128
|
+
const devSizes = deviceSizes ?? DEFAULT_DEVICE_SIZES;
|
|
129
|
+
return devSizes.map((sizeWidth) => `${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`).join(", ");
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// src/vue/components/Image.ts
|
|
133
|
+
var fillWrapperStyle = {
|
|
134
|
+
display: "block",
|
|
135
|
+
height: "100%",
|
|
136
|
+
overflow: "hidden",
|
|
137
|
+
position: "relative",
|
|
138
|
+
width: "100%"
|
|
139
|
+
};
|
|
140
|
+
var Image_default = defineComponent({
|
|
141
|
+
name: "AbsoluteImage",
|
|
142
|
+
props: {
|
|
143
|
+
src: { required: true, type: String },
|
|
144
|
+
alt: { required: true, type: String },
|
|
145
|
+
width: { default: undefined, type: Number },
|
|
146
|
+
height: { default: undefined, type: Number },
|
|
147
|
+
fill: { default: false, type: Boolean },
|
|
148
|
+
quality: { default: DEFAULT_QUALITY, type: Number },
|
|
149
|
+
sizes: { default: undefined, type: String },
|
|
150
|
+
loader: { default: undefined, type: Function },
|
|
151
|
+
unoptimized: { default: false, type: Boolean },
|
|
152
|
+
loading: { default: "lazy", type: String },
|
|
153
|
+
priority: { default: false, type: Boolean },
|
|
154
|
+
placeholder: { default: undefined, type: String },
|
|
155
|
+
blurDataURL: { default: undefined, type: String },
|
|
156
|
+
className: { default: undefined, type: String },
|
|
157
|
+
style: { default: undefined, type: Object },
|
|
158
|
+
onLoad: { default: undefined, type: Function },
|
|
159
|
+
onError: { default: undefined, type: Function },
|
|
160
|
+
crossOrigin: { default: undefined, type: String },
|
|
161
|
+
referrerPolicy: { default: undefined, type: String },
|
|
162
|
+
fetchPriority: { default: undefined, type: String },
|
|
163
|
+
overrideSrc: { default: undefined, type: String }
|
|
164
|
+
},
|
|
165
|
+
setup(props) {
|
|
166
|
+
const blurRemoved = ref(false);
|
|
167
|
+
const resolvedSrc = computed(() => {
|
|
168
|
+
if (props.overrideSrc)
|
|
169
|
+
return props.overrideSrc;
|
|
170
|
+
if (props.unoptimized)
|
|
171
|
+
return props.src;
|
|
172
|
+
if (props.loader) {
|
|
173
|
+
return props.loader({
|
|
174
|
+
quality: props.quality ?? DEFAULT_QUALITY,
|
|
175
|
+
src: props.src,
|
|
176
|
+
width: props.width ?? 0
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
if (!props.width) {
|
|
180
|
+
return buildOptimizedUrl(props.src, 0, props.quality ?? DEFAULT_QUALITY);
|
|
181
|
+
}
|
|
182
|
+
return buildOptimizedUrl(props.src, props.width, props.quality ?? DEFAULT_QUALITY);
|
|
183
|
+
});
|
|
184
|
+
const srcSet = computed(() => props.unoptimized ? undefined : generateSrcSet(props.src, props.width, props.sizes));
|
|
185
|
+
const resolvedSizes = computed(() => props.sizes ?? (props.fill ? "100vw" : undefined));
|
|
186
|
+
const resolvedLoading = computed(() => props.priority ? "eager" : props.loading ?? "lazy");
|
|
187
|
+
const resolvedFetchPriority = computed(() => props.priority ? "high" : props.fetchPriority);
|
|
188
|
+
const hasBlur = computed(() => props.placeholder === "blur" || typeof props.placeholder === "string" && props.placeholder !== "empty" && props.placeholder.startsWith("data:"));
|
|
189
|
+
const blurBackground = computed(() => {
|
|
190
|
+
if (!hasBlur.value || blurRemoved.value)
|
|
191
|
+
return;
|
|
192
|
+
if (typeof props.placeholder === "string" && props.placeholder !== "blur" && props.placeholder.startsWith("data:")) {
|
|
193
|
+
return generateBlurSvg(props.placeholder);
|
|
194
|
+
}
|
|
195
|
+
if (props.blurDataURL)
|
|
196
|
+
return generateBlurSvg(props.blurDataURL);
|
|
197
|
+
return;
|
|
198
|
+
});
|
|
199
|
+
const imgStyle = computed(() => {
|
|
200
|
+
const base = {
|
|
201
|
+
...props.style ?? {},
|
|
202
|
+
color: "transparent"
|
|
203
|
+
};
|
|
204
|
+
if (blurBackground.value) {
|
|
205
|
+
base.backgroundImage = blurBackground.value;
|
|
206
|
+
base.backgroundPosition = "center";
|
|
207
|
+
base.backgroundRepeat = "no-repeat";
|
|
208
|
+
base.backgroundSize = "cover";
|
|
209
|
+
}
|
|
210
|
+
if (props.fill) {
|
|
211
|
+
base.height = "100%";
|
|
212
|
+
base.inset = "0";
|
|
213
|
+
base.objectFit = "cover";
|
|
214
|
+
base.position = "absolute";
|
|
215
|
+
base.width = "100%";
|
|
216
|
+
}
|
|
217
|
+
return base;
|
|
218
|
+
});
|
|
219
|
+
const handleLoad = (event) => {
|
|
220
|
+
blurRemoved.value = true;
|
|
221
|
+
props.onLoad?.(event);
|
|
222
|
+
};
|
|
223
|
+
const handleError = (event) => {
|
|
224
|
+
props.onError?.(event);
|
|
225
|
+
};
|
|
226
|
+
return () => {
|
|
227
|
+
const imgNode = h("img", {
|
|
228
|
+
alt: props.alt,
|
|
229
|
+
class: props.className,
|
|
230
|
+
crossorigin: props.crossOrigin,
|
|
231
|
+
decoding: "async",
|
|
232
|
+
fetchpriority: resolvedFetchPriority.value,
|
|
233
|
+
height: props.fill ? undefined : props.height,
|
|
234
|
+
loading: resolvedLoading.value,
|
|
235
|
+
onError: handleError,
|
|
236
|
+
onLoad: handleLoad,
|
|
237
|
+
referrerpolicy: props.referrerPolicy,
|
|
238
|
+
sizes: resolvedSizes.value,
|
|
239
|
+
src: resolvedSrc.value,
|
|
240
|
+
srcset: srcSet.value,
|
|
241
|
+
style: imgStyle.value,
|
|
242
|
+
width: props.fill ? undefined : props.width
|
|
243
|
+
});
|
|
244
|
+
return props.fill ? h("span", { style: fillWrapperStyle }, [imgNode]) : imgNode;
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
export {
|
|
249
|
+
Image_default as default
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
//# debugId=C38DAFAC971418EB64756E2164756E21
|
|
253
|
+
//# sourceMappingURL=Image.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/vue/components/Image.ts", "../src/utils/imageClient.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { computed, defineComponent, h, ref } from 'vue';\nimport {\n\tDEFAULT_QUALITY,\n\tbuildOptimizedUrl,\n\tgenerateBlurSvg,\n\tgenerateSrcSet\n} from '../../utils/imageClient';\n\ntype ImageLoader = (params: {\n\tsrc: string;\n\twidth: number;\n\tquality: number;\n}) => string;\n\ntype ImageStyle = Record<string, string | number>;\n\ntype ImageProps = {\n\tsrc: string;\n\talt: string;\n\twidth?: number;\n\theight?: number;\n\tfill?: boolean;\n\tquality?: number;\n\tsizes?: string;\n\tloader?: ImageLoader;\n\tunoptimized?: boolean;\n\tloading?: 'lazy' | 'eager';\n\tpriority?: boolean;\n\tplaceholder?: string;\n\tblurDataURL?: string;\n\tclassName?: string;\n\tstyle?: ImageStyle;\n\tonLoad?: (() => void) | ((event: Event) => void);\n\tonError?: (() => void) | ((event: Event) => void);\n\tcrossOrigin?: 'anonymous' | 'use-credentials' | '';\n\treferrerPolicy?:\n\t\t| ''\n\t\t| 'no-referrer'\n\t\t| 'no-referrer-when-downgrade'\n\t\t| 'origin'\n\t\t| 'origin-when-cross-origin'\n\t\t| 'same-origin'\n\t\t| 'strict-origin'\n\t\t| 'strict-origin-when-cross-origin'\n\t\t| 'unsafe-url';\n\tfetchPriority?: 'high' | 'low' | 'auto';\n\toverrideSrc?: string;\n};\n\nconst fillWrapperStyle: ImageStyle = {\n\tdisplay: 'block',\n\theight: '100%',\n\toverflow: 'hidden',\n\tposition: 'relative',\n\twidth: '100%'\n};\n\nexport default defineComponent({\n\tname: 'AbsoluteImage',\n\tprops: {\n\t\tsrc: { required: true, type: String },\n\t\talt: { required: true, type: String },\n\t\twidth: { default: undefined, type: Number },\n\t\theight: { default: undefined, type: Number },\n\t\tfill: { default: false, type: Boolean },\n\t\tquality: { default: DEFAULT_QUALITY, type: Number },\n\t\tsizes: { default: undefined, type: String },\n\t\tloader: { default: undefined, type: Function },\n\t\tunoptimized: { default: false, type: Boolean },\n\t\tloading: { default: 'lazy', type: String },\n\t\tpriority: { default: false, type: Boolean },\n\t\tplaceholder: { default: undefined, type: String },\n\t\tblurDataURL: { default: undefined, type: String },\n\t\tclassName: { default: undefined, type: String },\n\t\tstyle: { default: undefined, type: Object },\n\t\tonLoad: { default: undefined, type: Function },\n\t\tonError: { default: undefined, type: Function },\n\t\tcrossOrigin: { default: undefined, type: String },\n\t\treferrerPolicy: { default: undefined, type: String },\n\t\tfetchPriority: { default: undefined, type: String },\n\t\toverrideSrc: { default: undefined, type: String }\n\t},\n\tsetup(props: ImageProps) {\n\t\tconst blurRemoved = ref(false);\n\n\t\tconst resolvedSrc = computed(() => {\n\t\t\tif (props.overrideSrc) return props.overrideSrc;\n\t\t\tif (props.unoptimized) return props.src;\n\t\t\tif (props.loader) {\n\t\t\t\treturn props.loader({\n\t\t\t\t\tquality: props.quality ?? DEFAULT_QUALITY,\n\t\t\t\t\tsrc: props.src,\n\t\t\t\t\twidth: props.width ?? 0\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!props.width) {\n\t\t\t\treturn buildOptimizedUrl(\n\t\t\t\t\tprops.src,\n\t\t\t\t\t0,\n\t\t\t\t\tprops.quality ?? DEFAULT_QUALITY\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn buildOptimizedUrl(\n\t\t\t\tprops.src,\n\t\t\t\tprops.width,\n\t\t\t\tprops.quality ?? DEFAULT_QUALITY\n\t\t\t);\n\t\t});\n\n\t\tconst srcSet = computed(() =>\n\t\t\tprops.unoptimized\n\t\t\t\t? undefined\n\t\t\t\t: generateSrcSet(props.src, props.width, props.sizes)\n\t\t);\n\n\t\tconst resolvedSizes = computed(\n\t\t\t() => props.sizes ?? (props.fill ? '100vw' : undefined)\n\t\t);\n\n\t\tconst resolvedLoading = computed(() =>\n\t\t\tprops.priority ? 'eager' : (props.loading ?? 'lazy')\n\t\t);\n\n\t\tconst resolvedFetchPriority = computed(() =>\n\t\t\tprops.priority ? 'high' : props.fetchPriority\n\t\t);\n\n\t\tconst hasBlur = computed(\n\t\t\t() =>\n\t\t\t\tprops.placeholder === 'blur' ||\n\t\t\t\t(typeof props.placeholder === 'string' &&\n\t\t\t\t\tprops.placeholder !== 'empty' &&\n\t\t\t\t\tprops.placeholder.startsWith('data:'))\n\t\t);\n\n\t\tconst blurBackground = computed(() => {\n\t\t\tif (!hasBlur.value || blurRemoved.value) return undefined;\n\t\t\tif (\n\t\t\t\ttypeof props.placeholder === 'string' &&\n\t\t\t\tprops.placeholder !== 'blur' &&\n\t\t\t\tprops.placeholder.startsWith('data:')\n\t\t\t) {\n\t\t\t\treturn generateBlurSvg(props.placeholder);\n\t\t\t}\n\t\t\tif (props.blurDataURL) return generateBlurSvg(props.blurDataURL);\n\t\t\treturn undefined;\n\t\t});\n\n\t\tconst imgStyle = computed(() => {\n\t\t\tconst base: ImageStyle = {\n\t\t\t\t...(props.style ?? {}),\n\t\t\t\tcolor: 'transparent'\n\t\t\t};\n\t\t\tif (blurBackground.value) {\n\t\t\t\tbase.backgroundImage = blurBackground.value;\n\t\t\t\tbase.backgroundPosition = 'center';\n\t\t\t\tbase.backgroundRepeat = 'no-repeat';\n\t\t\t\tbase.backgroundSize = 'cover';\n\t\t\t}\n\t\t\tif (props.fill) {\n\t\t\t\tbase.height = '100%';\n\t\t\t\tbase.inset = '0';\n\t\t\t\tbase.objectFit = 'cover';\n\t\t\t\tbase.position = 'absolute';\n\t\t\t\tbase.width = '100%';\n\t\t\t}\n\t\t\treturn base;\n\t\t});\n\n\t\tconst handleLoad = (event: Event) => {\n\t\t\tblurRemoved.value = true;\n\t\t\tprops.onLoad?.(event);\n\t\t};\n\n\t\tconst handleError = (event: Event) => {\n\t\t\tprops.onError?.(event);\n\t\t};\n\n\t\treturn () => {\n\t\t\tconst imgNode = h('img', {\n\t\t\t\talt: props.alt,\n\t\t\t\tclass: props.className,\n\t\t\t\tcrossorigin: props.crossOrigin,\n\t\t\t\tdecoding: 'async',\n\t\t\t\tfetchpriority: resolvedFetchPriority.value,\n\t\t\t\theight: props.fill ? undefined : props.height,\n\t\t\t\tloading: resolvedLoading.value,\n\t\t\t\tonError: handleError,\n\t\t\t\tonLoad: handleLoad,\n\t\t\t\treferrerpolicy: props.referrerPolicy,\n\t\t\t\tsizes: resolvedSizes.value,\n\t\t\t\tsrc: resolvedSrc.value,\n\t\t\t\tsrcset: srcSet.value,\n\t\t\t\tstyle: imgStyle.value,\n\t\t\t\twidth: props.fill ? undefined : props.width\n\t\t\t});\n\n\t\t\treturn props.fill\n\t\t\t\t? h('span', { style: fillWrapperStyle }, [imgNode])\n\t\t\t\t: imgNode;\n\t\t};\n\t}\n});\n",
|
|
6
|
+
"/**\n * Client-safe image utilities — no node:fs, no Sharp, no Bun APIs.\n * These can be imported in both server and client (browser) contexts.\n */\n\nexport type { ImageProps } from '../../types/image';\n\n/* eslint-disable no-magic-numbers */\nexport const DEFAULT_DEVICE_SIZES = [\n\t640, 750, 828, 1080, 1200, 1920, 2048, 3840\n];\n\nexport const DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\n\nexport const DEFAULT_QUALITY = 75;\n/* eslint-enable no-magic-numbers */\n\nexport const OPTIMIZATION_ENDPOINT = '/_absolute/image';\n\nexport const buildOptimizedUrl = (\n\tsrc: string,\n\twidth: number,\n\tquality: number,\n\tbasePath = OPTIMIZATION_ENDPOINT\n) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;\n\nexport const getAllSizes = (deviceSizes?: number[], imageSizes?: number[]) => {\n\tconst device = deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\tconst image = imageSizes ?? DEFAULT_IMAGE_SIZES;\n\n\treturn [...device, ...image].sort((left, right) => left - right);\n};\n\n/** Snap a target width UP to the nearest configured size */\nconst snapToSize = (target: number, sizes: number[]) => {\n\tfor (const size of sizes) {\n\t\tif (size >= target) return size;\n\t}\n\n\treturn sizes[sizes.length - 1] ?? target;\n};\n\nexport const generateBlurSvg = (base64Thumbnail: string) => {\n\tconst svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 320\"><filter id=\"b\" color-interpolation-filters=\"sRGB\"><feGaussianBlur stdDeviation=\"20\"/><feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1\"/></filter><image filter=\"url(#b)\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" href=\"${base64Thumbnail}\"/></svg>`;\n\n\tconst encoded = encodeURIComponent(svg);\n\n\treturn `url(\"data:image/svg+xml,${encoded}\")`;\n};\nexport const generateSrcSet = (\n\tsrc: string,\n\twidth: number | undefined,\n\tsizes: string | undefined,\n\tdeviceSizes?: number[],\n\timageSizes?: number[]\n) => {\n\tconst quality = DEFAULT_QUALITY;\n\n\tif (sizes) {\n\t\tconst allSizes = getAllSizes(deviceSizes, imageSizes);\n\n\t\treturn allSizes\n\t\t\t.map(\n\t\t\t\t(sizeWidth) =>\n\t\t\t\t\t`${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`\n\t\t\t)\n\t\t\t.join(', ');\n\t}\n\n\tif (width) {\n\t\tconst allSizes = getAllSizes(deviceSizes, imageSizes);\n\n\t\tconst w1x = snapToSize(width, allSizes);\n\n\t\tconst w2x = snapToSize(width * 2, allSizes);\n\n\t\treturn `${buildOptimizedUrl(src, w1x, quality)} 1x, ${buildOptimizedUrl(src, w2x, quality)} 2x`;\n\t}\n\n\tconst devSizes = deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\treturn devSizes\n\t\t.map(\n\t\t\t(sizeWidth) =>\n\t\t\t\t`${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`\n\t\t)\n\t\t.join(', ');\n};\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "C38DAFAC971418EB64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -115,18 +115,183 @@ var init_streamingSlotRegistrar = __esm(() => {
|
|
|
115
115
|
STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
// src/vue/components/Image.
|
|
119
|
-
|
|
118
|
+
// src/vue/components/Image.ts
|
|
119
|
+
import { computed, defineComponent, h, ref } from "vue";
|
|
120
|
+
|
|
121
|
+
// src/utils/imageClient.ts
|
|
122
|
+
var DEFAULT_DEVICE_SIZES = [
|
|
123
|
+
640,
|
|
124
|
+
750,
|
|
125
|
+
828,
|
|
126
|
+
1080,
|
|
127
|
+
1200,
|
|
128
|
+
1920,
|
|
129
|
+
2048,
|
|
130
|
+
3840
|
|
131
|
+
];
|
|
132
|
+
var DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];
|
|
133
|
+
var DEFAULT_QUALITY = 75;
|
|
134
|
+
var OPTIMIZATION_ENDPOINT = "/_absolute/image";
|
|
135
|
+
var buildOptimizedUrl = (src, width, quality, basePath = OPTIMIZATION_ENDPOINT) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;
|
|
136
|
+
var getAllSizes = (deviceSizes, imageSizes) => {
|
|
137
|
+
const device = deviceSizes ?? DEFAULT_DEVICE_SIZES;
|
|
138
|
+
const image = imageSizes ?? DEFAULT_IMAGE_SIZES;
|
|
139
|
+
return [...device, ...image].sort((left, right) => left - right);
|
|
140
|
+
};
|
|
141
|
+
var snapToSize = (target, sizes) => {
|
|
142
|
+
for (const size of sizes) {
|
|
143
|
+
if (size >= target)
|
|
144
|
+
return size;
|
|
145
|
+
}
|
|
146
|
+
return sizes[sizes.length - 1] ?? target;
|
|
147
|
+
};
|
|
148
|
+
var generateBlurSvg = (base64Thumbnail) => {
|
|
149
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320"><filter id="b" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="20"/><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1"/></filter><image filter="url(#b)" x="0" y="0" width="100%" height="100%" href="${base64Thumbnail}"/></svg>`;
|
|
150
|
+
const encoded = encodeURIComponent(svg);
|
|
151
|
+
return `url("data:image/svg+xml,${encoded}")`;
|
|
152
|
+
};
|
|
153
|
+
var generateSrcSet = (src, width, sizes, deviceSizes, imageSizes) => {
|
|
154
|
+
const quality = DEFAULT_QUALITY;
|
|
155
|
+
if (sizes) {
|
|
156
|
+
const allSizes = getAllSizes(deviceSizes, imageSizes);
|
|
157
|
+
return allSizes.map((sizeWidth) => `${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`).join(", ");
|
|
158
|
+
}
|
|
159
|
+
if (width) {
|
|
160
|
+
const allSizes = getAllSizes(deviceSizes, imageSizes);
|
|
161
|
+
const w1x = snapToSize(width, allSizes);
|
|
162
|
+
const w2x = snapToSize(width * 2, allSizes);
|
|
163
|
+
return `${buildOptimizedUrl(src, w1x, quality)} 1x, ${buildOptimizedUrl(src, w2x, quality)} 2x`;
|
|
164
|
+
}
|
|
165
|
+
const devSizes = deviceSizes ?? DEFAULT_DEVICE_SIZES;
|
|
166
|
+
return devSizes.map((sizeWidth) => `${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`).join(", ");
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// src/vue/components/Image.ts
|
|
170
|
+
var fillWrapperStyle = {
|
|
171
|
+
display: "block",
|
|
172
|
+
height: "100%",
|
|
173
|
+
overflow: "hidden",
|
|
174
|
+
position: "relative",
|
|
175
|
+
width: "100%"
|
|
176
|
+
};
|
|
177
|
+
var Image_default = defineComponent({
|
|
178
|
+
name: "AbsoluteImage",
|
|
179
|
+
props: {
|
|
180
|
+
src: { required: true, type: String },
|
|
181
|
+
alt: { required: true, type: String },
|
|
182
|
+
width: { default: undefined, type: Number },
|
|
183
|
+
height: { default: undefined, type: Number },
|
|
184
|
+
fill: { default: false, type: Boolean },
|
|
185
|
+
quality: { default: DEFAULT_QUALITY, type: Number },
|
|
186
|
+
sizes: { default: undefined, type: String },
|
|
187
|
+
loader: { default: undefined, type: Function },
|
|
188
|
+
unoptimized: { default: false, type: Boolean },
|
|
189
|
+
loading: { default: "lazy", type: String },
|
|
190
|
+
priority: { default: false, type: Boolean },
|
|
191
|
+
placeholder: { default: undefined, type: String },
|
|
192
|
+
blurDataURL: { default: undefined, type: String },
|
|
193
|
+
className: { default: undefined, type: String },
|
|
194
|
+
style: { default: undefined, type: Object },
|
|
195
|
+
onLoad: { default: undefined, type: Function },
|
|
196
|
+
onError: { default: undefined, type: Function },
|
|
197
|
+
crossOrigin: { default: undefined, type: String },
|
|
198
|
+
referrerPolicy: { default: undefined, type: String },
|
|
199
|
+
fetchPriority: { default: undefined, type: String },
|
|
200
|
+
overrideSrc: { default: undefined, type: String }
|
|
201
|
+
},
|
|
202
|
+
setup(props) {
|
|
203
|
+
const blurRemoved = ref(false);
|
|
204
|
+
const resolvedSrc = computed(() => {
|
|
205
|
+
if (props.overrideSrc)
|
|
206
|
+
return props.overrideSrc;
|
|
207
|
+
if (props.unoptimized)
|
|
208
|
+
return props.src;
|
|
209
|
+
if (props.loader) {
|
|
210
|
+
return props.loader({
|
|
211
|
+
quality: props.quality ?? DEFAULT_QUALITY,
|
|
212
|
+
src: props.src,
|
|
213
|
+
width: props.width ?? 0
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (!props.width) {
|
|
217
|
+
return buildOptimizedUrl(props.src, 0, props.quality ?? DEFAULT_QUALITY);
|
|
218
|
+
}
|
|
219
|
+
return buildOptimizedUrl(props.src, props.width, props.quality ?? DEFAULT_QUALITY);
|
|
220
|
+
});
|
|
221
|
+
const srcSet = computed(() => props.unoptimized ? undefined : generateSrcSet(props.src, props.width, props.sizes));
|
|
222
|
+
const resolvedSizes = computed(() => props.sizes ?? (props.fill ? "100vw" : undefined));
|
|
223
|
+
const resolvedLoading = computed(() => props.priority ? "eager" : props.loading ?? "lazy");
|
|
224
|
+
const resolvedFetchPriority = computed(() => props.priority ? "high" : props.fetchPriority);
|
|
225
|
+
const hasBlur = computed(() => props.placeholder === "blur" || typeof props.placeholder === "string" && props.placeholder !== "empty" && props.placeholder.startsWith("data:"));
|
|
226
|
+
const blurBackground = computed(() => {
|
|
227
|
+
if (!hasBlur.value || blurRemoved.value)
|
|
228
|
+
return;
|
|
229
|
+
if (typeof props.placeholder === "string" && props.placeholder !== "blur" && props.placeholder.startsWith("data:")) {
|
|
230
|
+
return generateBlurSvg(props.placeholder);
|
|
231
|
+
}
|
|
232
|
+
if (props.blurDataURL)
|
|
233
|
+
return generateBlurSvg(props.blurDataURL);
|
|
234
|
+
return;
|
|
235
|
+
});
|
|
236
|
+
const imgStyle = computed(() => {
|
|
237
|
+
const base = {
|
|
238
|
+
...props.style ?? {},
|
|
239
|
+
color: "transparent"
|
|
240
|
+
};
|
|
241
|
+
if (blurBackground.value) {
|
|
242
|
+
base.backgroundImage = blurBackground.value;
|
|
243
|
+
base.backgroundPosition = "center";
|
|
244
|
+
base.backgroundRepeat = "no-repeat";
|
|
245
|
+
base.backgroundSize = "cover";
|
|
246
|
+
}
|
|
247
|
+
if (props.fill) {
|
|
248
|
+
base.height = "100%";
|
|
249
|
+
base.inset = "0";
|
|
250
|
+
base.objectFit = "cover";
|
|
251
|
+
base.position = "absolute";
|
|
252
|
+
base.width = "100%";
|
|
253
|
+
}
|
|
254
|
+
return base;
|
|
255
|
+
});
|
|
256
|
+
const handleLoad = (event) => {
|
|
257
|
+
blurRemoved.value = true;
|
|
258
|
+
props.onLoad?.(event);
|
|
259
|
+
};
|
|
260
|
+
const handleError = (event) => {
|
|
261
|
+
props.onError?.(event);
|
|
262
|
+
};
|
|
263
|
+
return () => {
|
|
264
|
+
const imgNode = h("img", {
|
|
265
|
+
alt: props.alt,
|
|
266
|
+
class: props.className,
|
|
267
|
+
crossorigin: props.crossOrigin,
|
|
268
|
+
decoding: "async",
|
|
269
|
+
fetchpriority: resolvedFetchPriority.value,
|
|
270
|
+
height: props.fill ? undefined : props.height,
|
|
271
|
+
loading: resolvedLoading.value,
|
|
272
|
+
onError: handleError,
|
|
273
|
+
onLoad: handleLoad,
|
|
274
|
+
referrerpolicy: props.referrerPolicy,
|
|
275
|
+
sizes: resolvedSizes.value,
|
|
276
|
+
src: resolvedSrc.value,
|
|
277
|
+
srcset: srcSet.value,
|
|
278
|
+
style: imgStyle.value,
|
|
279
|
+
width: props.fill ? undefined : props.width
|
|
280
|
+
});
|
|
281
|
+
return props.fill ? h("span", { style: fillWrapperStyle }, [imgNode]) : imgNode;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
});
|
|
120
285
|
// src/vue/components/SuspenseSlot.ts
|
|
121
286
|
init_streamingSlotRegistrar();
|
|
122
287
|
import {
|
|
123
288
|
cloneVNode,
|
|
124
|
-
defineComponent,
|
|
125
|
-
h,
|
|
289
|
+
defineComponent as defineComponent2,
|
|
290
|
+
h as h2,
|
|
126
291
|
isVNode,
|
|
127
292
|
onMounted,
|
|
128
293
|
onBeforeUnmount,
|
|
129
|
-
ref,
|
|
294
|
+
ref as ref2,
|
|
130
295
|
useSSRContext
|
|
131
296
|
} from "vue";
|
|
132
297
|
var renderVueNodesToHtml = async (nodes) => {
|
|
@@ -200,7 +365,7 @@ var registerLegacySuspenseSlot = (props) => {
|
|
|
200
365
|
timeoutMs: props.timeoutMs
|
|
201
366
|
});
|
|
202
367
|
};
|
|
203
|
-
var SuspenseSlot =
|
|
368
|
+
var SuspenseSlot = defineComponent2({
|
|
204
369
|
name: "AbsoluteSuspenseSlot",
|
|
205
370
|
props: {
|
|
206
371
|
className: { default: undefined, type: String },
|
|
@@ -226,10 +391,10 @@ var SuspenseSlot = defineComponent({
|
|
|
226
391
|
return false;
|
|
227
392
|
return slotNode.getAttribute("data-absolute-slot-state") === "resolved";
|
|
228
393
|
};
|
|
229
|
-
const isResolved =
|
|
230
|
-
const resolvedValue =
|
|
231
|
-
const hasError =
|
|
232
|
-
const hasPatchedDom =
|
|
394
|
+
const isResolved = ref2(false);
|
|
395
|
+
const resolvedValue = ref2(undefined);
|
|
396
|
+
const hasError = ref2(false);
|
|
397
|
+
const hasPatchedDom = ref2(readPatchedDomState());
|
|
233
398
|
const usesFrameworkSlots = hasFrameworkSlots(slots.default, slots.fallback, slots.error, props.promise);
|
|
234
399
|
const isSsrRender = useSSRContext() !== undefined;
|
|
235
400
|
if (isSsrRender) {
|
|
@@ -308,14 +473,14 @@ var SuspenseSlot = defineComponent({
|
|
|
308
473
|
};
|
|
309
474
|
return () => {
|
|
310
475
|
if (!usesFrameworkSlots) {
|
|
311
|
-
return
|
|
476
|
+
return h2("div", {
|
|
312
477
|
class: props.className,
|
|
313
478
|
"data-absolute-slot": "true",
|
|
314
479
|
id: props.id,
|
|
315
480
|
innerHTML: props.fallbackHtml
|
|
316
481
|
});
|
|
317
482
|
}
|
|
318
|
-
return
|
|
483
|
+
return h2("div", {
|
|
319
484
|
class: props.className,
|
|
320
485
|
"data-absolute-slot": "true",
|
|
321
486
|
"data-allow-mismatch": "",
|
|
@@ -326,8 +491,8 @@ var SuspenseSlot = defineComponent({
|
|
|
326
491
|
});
|
|
327
492
|
// src/vue/components/StreamSlot.ts
|
|
328
493
|
init_streamingSlotRegistrar();
|
|
329
|
-
import { defineComponent as
|
|
330
|
-
var StreamSlot =
|
|
494
|
+
import { defineComponent as defineComponent3, h as h3, useSSRContext as useSSRContext2 } from "vue";
|
|
495
|
+
var StreamSlot = defineComponent3({
|
|
331
496
|
name: "AbsoluteStreamSlot",
|
|
332
497
|
props: {
|
|
333
498
|
className: { default: undefined, type: String },
|
|
@@ -354,7 +519,7 @@ var StreamSlot = defineComponent2({
|
|
|
354
519
|
warnMissingStreamingSlotCollector("StreamSlot");
|
|
355
520
|
}
|
|
356
521
|
}
|
|
357
|
-
return () =>
|
|
522
|
+
return () => h3("div", {
|
|
358
523
|
class: props.className,
|
|
359
524
|
"data-absolute-slot": "true",
|
|
360
525
|
id: props.id,
|
|
@@ -368,5 +533,5 @@ export {
|
|
|
368
533
|
Image_default as Image
|
|
369
534
|
};
|
|
370
535
|
|
|
371
|
-
//# debugId=
|
|
536
|
+
//# debugId=EB82A5D755DE3AA464756E2164756E21
|
|
372
537
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/core/streamingSlotRegistrar.ts", "../src/vue/components/SuspenseSlot.ts", "../src/vue/components/StreamSlot.ts"],
|
|
3
|
+
"sources": ["../src/core/streamingSlotRegistrar.ts", "../src/vue/components/Image.ts", "../src/utils/imageClient.ts", "../src/vue/components/SuspenseSlot.ts", "../src/vue/components/StreamSlot.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { StreamingSlot } from '../utils/streamingSlots';\n\ntype StreamingSlotRegistrar = (slot: StreamingSlot) => void;\ntype StreamingSlotWarningController = {\n\tmaybeWarn(primitiveName: string): void;\n};\ntype StreamingSlotCollectionController = {\n\tisCollecting(): boolean;\n};\n\nconst STREAMING_SLOT_REGISTRAR_KEY = Symbol.for(\n\t'absolutejs.streamingSlotRegistrar'\n);\nconst STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for(\n\t'absolutejs.streamingSlotWarningController'\n);\nconst STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for(\n\t'absolutejs.streamingSlotCollectionController'\n);\n\nconst getRegisteredStreamingSlotRegistrar = () => {\n\tconst value = Reflect.get(globalThis, STREAMING_SLOT_REGISTRAR_KEY);\n\tif (typeof value === 'function' || value === null) {\n\t\treturn value;\n\t}\n\n\treturn undefined;\n};\n\nconst isObjectRecord = (value: unknown): value is Record<string, unknown> =>\n\tBoolean(value) && typeof value === 'object';\n\nconst isStreamingSlotWarningController = (\n\tvalue: unknown\n): value is StreamingSlotWarningController =>\n\tisObjectRecord(value) &&\n\t'maybeWarn' in value &&\n\ttypeof value.maybeWarn === 'function';\n\nconst isStreamingSlotCollectionController = (\n\tvalue: unknown\n): value is StreamingSlotCollectionController =>\n\tisObjectRecord(value) &&\n\t'isCollecting' in value &&\n\ttypeof value.isCollecting === 'function';\n\nconst getWarningController = () => {\n\tconst value = Reflect.get(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY);\n\tif (value === null || typeof value === 'undefined') return undefined;\n\n\treturn isStreamingSlotWarningController(value) ? value : undefined;\n};\n\nconst getCollectionController = () => {\n\tconst value = Reflect.get(\n\t\tglobalThis,\n\t\tSTREAMING_SLOT_COLLECTION_STORAGE_KEY\n\t);\n\tif (value === null || typeof value === 'undefined') return undefined;\n\n\treturn isStreamingSlotCollectionController(value) ? value : undefined;\n};\n\nexport const hasRegisteredStreamingSlotRegistrar = () =>\n\ttypeof getRegisteredStreamingSlotRegistrar() === 'function';\nexport const isStreamingSlotCollectionActive = () =>\n\tgetCollectionController()?.isCollecting() === true;\nexport const registerStreamingSlot = (slot: StreamingSlot) => {\n\tgetRegisteredStreamingSlotRegistrar()?.(slot);\n};\nexport const setStreamingSlotCollectionController = (\n\tcontroller: StreamingSlotCollectionController | null\n) => {\n\tReflect.set(globalThis, STREAMING_SLOT_COLLECTION_STORAGE_KEY, controller);\n};\nexport const setStreamingSlotRegistrar = (\n\tnextRegistrar: StreamingSlotRegistrar | null\n) => {\n\tReflect.set(globalThis, STREAMING_SLOT_REGISTRAR_KEY, nextRegistrar);\n};\nexport const setStreamingSlotWarningController = (\n\tcontroller: StreamingSlotWarningController | null\n) => {\n\tReflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, controller);\n};\nexport const warnMissingStreamingSlotCollector = (primitiveName: string) => {\n\tif (\n\t\tprocess.env.NODE_ENV === 'production' ||\n\t\tisStreamingSlotCollectionActive()\n\t) {\n\t\treturn;\n\t}\n\n\tgetWarningController()?.maybeWarn(primitiveName);\n};\n",
|
|
6
|
+
"import { computed, defineComponent, h, ref } from 'vue';\nimport {\n\tDEFAULT_QUALITY,\n\tbuildOptimizedUrl,\n\tgenerateBlurSvg,\n\tgenerateSrcSet\n} from '../../utils/imageClient';\n\ntype ImageLoader = (params: {\n\tsrc: string;\n\twidth: number;\n\tquality: number;\n}) => string;\n\ntype ImageStyle = Record<string, string | number>;\n\ntype ImageProps = {\n\tsrc: string;\n\talt: string;\n\twidth?: number;\n\theight?: number;\n\tfill?: boolean;\n\tquality?: number;\n\tsizes?: string;\n\tloader?: ImageLoader;\n\tunoptimized?: boolean;\n\tloading?: 'lazy' | 'eager';\n\tpriority?: boolean;\n\tplaceholder?: string;\n\tblurDataURL?: string;\n\tclassName?: string;\n\tstyle?: ImageStyle;\n\tonLoad?: (() => void) | ((event: Event) => void);\n\tonError?: (() => void) | ((event: Event) => void);\n\tcrossOrigin?: 'anonymous' | 'use-credentials' | '';\n\treferrerPolicy?:\n\t\t| ''\n\t\t| 'no-referrer'\n\t\t| 'no-referrer-when-downgrade'\n\t\t| 'origin'\n\t\t| 'origin-when-cross-origin'\n\t\t| 'same-origin'\n\t\t| 'strict-origin'\n\t\t| 'strict-origin-when-cross-origin'\n\t\t| 'unsafe-url';\n\tfetchPriority?: 'high' | 'low' | 'auto';\n\toverrideSrc?: string;\n};\n\nconst fillWrapperStyle: ImageStyle = {\n\tdisplay: 'block',\n\theight: '100%',\n\toverflow: 'hidden',\n\tposition: 'relative',\n\twidth: '100%'\n};\n\nexport default defineComponent({\n\tname: 'AbsoluteImage',\n\tprops: {\n\t\tsrc: { required: true, type: String },\n\t\talt: { required: true, type: String },\n\t\twidth: { default: undefined, type: Number },\n\t\theight: { default: undefined, type: Number },\n\t\tfill: { default: false, type: Boolean },\n\t\tquality: { default: DEFAULT_QUALITY, type: Number },\n\t\tsizes: { default: undefined, type: String },\n\t\tloader: { default: undefined, type: Function },\n\t\tunoptimized: { default: false, type: Boolean },\n\t\tloading: { default: 'lazy', type: String },\n\t\tpriority: { default: false, type: Boolean },\n\t\tplaceholder: { default: undefined, type: String },\n\t\tblurDataURL: { default: undefined, type: String },\n\t\tclassName: { default: undefined, type: String },\n\t\tstyle: { default: undefined, type: Object },\n\t\tonLoad: { default: undefined, type: Function },\n\t\tonError: { default: undefined, type: Function },\n\t\tcrossOrigin: { default: undefined, type: String },\n\t\treferrerPolicy: { default: undefined, type: String },\n\t\tfetchPriority: { default: undefined, type: String },\n\t\toverrideSrc: { default: undefined, type: String }\n\t},\n\tsetup(props: ImageProps) {\n\t\tconst blurRemoved = ref(false);\n\n\t\tconst resolvedSrc = computed(() => {\n\t\t\tif (props.overrideSrc) return props.overrideSrc;\n\t\t\tif (props.unoptimized) return props.src;\n\t\t\tif (props.loader) {\n\t\t\t\treturn props.loader({\n\t\t\t\t\tquality: props.quality ?? DEFAULT_QUALITY,\n\t\t\t\t\tsrc: props.src,\n\t\t\t\t\twidth: props.width ?? 0\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!props.width) {\n\t\t\t\treturn buildOptimizedUrl(\n\t\t\t\t\tprops.src,\n\t\t\t\t\t0,\n\t\t\t\t\tprops.quality ?? DEFAULT_QUALITY\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn buildOptimizedUrl(\n\t\t\t\tprops.src,\n\t\t\t\tprops.width,\n\t\t\t\tprops.quality ?? DEFAULT_QUALITY\n\t\t\t);\n\t\t});\n\n\t\tconst srcSet = computed(() =>\n\t\t\tprops.unoptimized\n\t\t\t\t? undefined\n\t\t\t\t: generateSrcSet(props.src, props.width, props.sizes)\n\t\t);\n\n\t\tconst resolvedSizes = computed(\n\t\t\t() => props.sizes ?? (props.fill ? '100vw' : undefined)\n\t\t);\n\n\t\tconst resolvedLoading = computed(() =>\n\t\t\tprops.priority ? 'eager' : (props.loading ?? 'lazy')\n\t\t);\n\n\t\tconst resolvedFetchPriority = computed(() =>\n\t\t\tprops.priority ? 'high' : props.fetchPriority\n\t\t);\n\n\t\tconst hasBlur = computed(\n\t\t\t() =>\n\t\t\t\tprops.placeholder === 'blur' ||\n\t\t\t\t(typeof props.placeholder === 'string' &&\n\t\t\t\t\tprops.placeholder !== 'empty' &&\n\t\t\t\t\tprops.placeholder.startsWith('data:'))\n\t\t);\n\n\t\tconst blurBackground = computed(() => {\n\t\t\tif (!hasBlur.value || blurRemoved.value) return undefined;\n\t\t\tif (\n\t\t\t\ttypeof props.placeholder === 'string' &&\n\t\t\t\tprops.placeholder !== 'blur' &&\n\t\t\t\tprops.placeholder.startsWith('data:')\n\t\t\t) {\n\t\t\t\treturn generateBlurSvg(props.placeholder);\n\t\t\t}\n\t\t\tif (props.blurDataURL) return generateBlurSvg(props.blurDataURL);\n\t\t\treturn undefined;\n\t\t});\n\n\t\tconst imgStyle = computed(() => {\n\t\t\tconst base: ImageStyle = {\n\t\t\t\t...(props.style ?? {}),\n\t\t\t\tcolor: 'transparent'\n\t\t\t};\n\t\t\tif (blurBackground.value) {\n\t\t\t\tbase.backgroundImage = blurBackground.value;\n\t\t\t\tbase.backgroundPosition = 'center';\n\t\t\t\tbase.backgroundRepeat = 'no-repeat';\n\t\t\t\tbase.backgroundSize = 'cover';\n\t\t\t}\n\t\t\tif (props.fill) {\n\t\t\t\tbase.height = '100%';\n\t\t\t\tbase.inset = '0';\n\t\t\t\tbase.objectFit = 'cover';\n\t\t\t\tbase.position = 'absolute';\n\t\t\t\tbase.width = '100%';\n\t\t\t}\n\t\t\treturn base;\n\t\t});\n\n\t\tconst handleLoad = (event: Event) => {\n\t\t\tblurRemoved.value = true;\n\t\t\tprops.onLoad?.(event);\n\t\t};\n\n\t\tconst handleError = (event: Event) => {\n\t\t\tprops.onError?.(event);\n\t\t};\n\n\t\treturn () => {\n\t\t\tconst imgNode = h('img', {\n\t\t\t\talt: props.alt,\n\t\t\t\tclass: props.className,\n\t\t\t\tcrossorigin: props.crossOrigin,\n\t\t\t\tdecoding: 'async',\n\t\t\t\tfetchpriority: resolvedFetchPriority.value,\n\t\t\t\theight: props.fill ? undefined : props.height,\n\t\t\t\tloading: resolvedLoading.value,\n\t\t\t\tonError: handleError,\n\t\t\t\tonLoad: handleLoad,\n\t\t\t\treferrerpolicy: props.referrerPolicy,\n\t\t\t\tsizes: resolvedSizes.value,\n\t\t\t\tsrc: resolvedSrc.value,\n\t\t\t\tsrcset: srcSet.value,\n\t\t\t\tstyle: imgStyle.value,\n\t\t\t\twidth: props.fill ? undefined : props.width\n\t\t\t});\n\n\t\t\treturn props.fill\n\t\t\t\t? h('span', { style: fillWrapperStyle }, [imgNode])\n\t\t\t\t: imgNode;\n\t\t};\n\t}\n});\n",
|
|
7
|
+
"/**\n * Client-safe image utilities — no node:fs, no Sharp, no Bun APIs.\n * These can be imported in both server and client (browser) contexts.\n */\n\nexport type { ImageProps } from '../../types/image';\n\n/* eslint-disable no-magic-numbers */\nexport const DEFAULT_DEVICE_SIZES = [\n\t640, 750, 828, 1080, 1200, 1920, 2048, 3840\n];\n\nexport const DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\n\nexport const DEFAULT_QUALITY = 75;\n/* eslint-enable no-magic-numbers */\n\nexport const OPTIMIZATION_ENDPOINT = '/_absolute/image';\n\nexport const buildOptimizedUrl = (\n\tsrc: string,\n\twidth: number,\n\tquality: number,\n\tbasePath = OPTIMIZATION_ENDPOINT\n) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;\n\nexport const getAllSizes = (deviceSizes?: number[], imageSizes?: number[]) => {\n\tconst device = deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\tconst image = imageSizes ?? DEFAULT_IMAGE_SIZES;\n\n\treturn [...device, ...image].sort((left, right) => left - right);\n};\n\n/** Snap a target width UP to the nearest configured size */\nconst snapToSize = (target: number, sizes: number[]) => {\n\tfor (const size of sizes) {\n\t\tif (size >= target) return size;\n\t}\n\n\treturn sizes[sizes.length - 1] ?? target;\n};\n\nexport const generateBlurSvg = (base64Thumbnail: string) => {\n\tconst svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 320\"><filter id=\"b\" color-interpolation-filters=\"sRGB\"><feGaussianBlur stdDeviation=\"20\"/><feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1\"/></filter><image filter=\"url(#b)\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" href=\"${base64Thumbnail}\"/></svg>`;\n\n\tconst encoded = encodeURIComponent(svg);\n\n\treturn `url(\"data:image/svg+xml,${encoded}\")`;\n};\nexport const generateSrcSet = (\n\tsrc: string,\n\twidth: number | undefined,\n\tsizes: string | undefined,\n\tdeviceSizes?: number[],\n\timageSizes?: number[]\n) => {\n\tconst quality = DEFAULT_QUALITY;\n\n\tif (sizes) {\n\t\tconst allSizes = getAllSizes(deviceSizes, imageSizes);\n\n\t\treturn allSizes\n\t\t\t.map(\n\t\t\t\t(sizeWidth) =>\n\t\t\t\t\t`${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`\n\t\t\t)\n\t\t\t.join(', ');\n\t}\n\n\tif (width) {\n\t\tconst allSizes = getAllSizes(deviceSizes, imageSizes);\n\n\t\tconst w1x = snapToSize(width, allSizes);\n\n\t\tconst w2x = snapToSize(width * 2, allSizes);\n\n\t\treturn `${buildOptimizedUrl(src, w1x, quality)} 1x, ${buildOptimizedUrl(src, w2x, quality)} 2x`;\n\t}\n\n\tconst devSizes = deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\treturn devSizes\n\t\t.map(\n\t\t\t(sizeWidth) =>\n\t\t\t\t`${buildOptimizedUrl(src, sizeWidth, quality)} ${sizeWidth}w`\n\t\t)\n\t\t.join(', ');\n};\n",
|
|
6
8
|
"import {\n\tcloneVNode,\n\tdefineComponent,\n\th,\n\tisVNode,\n\tonMounted,\n\tonBeforeUnmount,\n\tref,\n\tuseSSRContext,\n\ttype Slot,\n\ttype VNodeChild\n} from 'vue';\nimport {\n\tisStreamingSlotCollectionActive,\n\tregisterStreamingSlot,\n\twarnMissingStreamingSlotCollector\n} from '../../core/streamingSlotRegistrar';\n\nconst renderVueNodesToHtml = async (nodes: VNodeChild) => {\n\tconst { createSSRApp, h: createVNode } = await import('vue');\n\tconst { renderToString } = await import('vue/server-renderer');\n\n\tconst app = createSSRApp({\n\t\trender: () => createVNode('div', undefined, nodes ?? undefined)\n\t});\n\tconst html = await renderToString(app);\n\n\treturn html.replace(/^<div>|<\\/div>$/g, '');\n};\n\nconst hasFrameworkSlots = (\n\tdefaultSlot: Slot | undefined,\n\tfallbackSlot: Slot | undefined,\n\terrorSlot: Slot | undefined,\n\tpromise: Promise<unknown> | undefined\n) =>\n\tdefaultSlot !== undefined ||\n\tfallbackSlot !== undefined ||\n\terrorSlot !== undefined ||\n\tpromise !== undefined;\n\nconst allowMismatchOnSlotNodes: (nodes: VNodeChild) => VNodeChild = (nodes) => {\n\tif (Array.isArray(nodes)) {\n\t\treturn nodes.map((node) => allowMismatchOnSlotNodes(node));\n\t}\n\tif (isVNode(nodes)) {\n\t\treturn cloneVNode(nodes, {\n\t\t\t'data-allow-mismatch': ''\n\t\t});\n\t}\n\n\treturn nodes;\n};\n\nconst resolveSuspenseValue = async (\n\tresolve: (() => Promise<unknown> | unknown) | undefined,\n\tpromise: Promise<unknown> | undefined\n) => {\n\tif (resolve !== undefined) {\n\t\treturn resolve();\n\t}\n\n\tif (promise !== undefined) {\n\t\treturn promise;\n\t}\n\n\treturn undefined;\n};\n\ntype LegacySuspenseSlotRegistration = {\n\terrorHtml?: string;\n\tfallbackHtml: string;\n\tid: string;\n\tresolve: () => Promise<string> | string;\n\ttimeoutMs?: number;\n};\n\ntype SuspenseSlotProps = {\n\tclassName?: string;\n\terrorHtml?: string;\n\tfallbackHtml: string;\n\tid: string;\n\tpromise?: Promise<unknown>;\n\tresolve?: () => Promise<unknown> | unknown;\n\ttimeoutMs?: number;\n};\n\ntype VueSuspensePayload = {\n\tkind: 'vue-suspense';\n\tstate?: unknown;\n\tvalue?: unknown;\n};\n\nconst isObjectRecord = (value: unknown): value is Record<string, unknown> =>\n\tBoolean(value) && typeof value === 'object';\n\nconst isVueSuspensePayload = (\n\tpayload: unknown\n): payload is VueSuspensePayload => {\n\tif (!isObjectRecord(payload)) {\n\t\treturn false;\n\t}\n\n\treturn payload.kind === 'vue-suspense';\n};\n\nconst hasEventDetailId = (event: Event, id: string) => {\n\tif (!(event instanceof CustomEvent)) {\n\t\treturn false;\n\t}\n\n\tconst { detail } = event;\n\tif (!detail || typeof detail !== 'object') {\n\t\treturn false;\n\t}\n\n\treturn detail.id === id;\n};\n\nconst toLegacySuspenseSlotRegistration = (\n\tprops: SuspenseSlotProps\n): LegacySuspenseSlotRegistration | null => {\n\tif (!props.resolve) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\terrorHtml: props.errorHtml,\n\t\tfallbackHtml: props.fallbackHtml,\n\t\tid: props.id,\n\t\ttimeoutMs: props.timeoutMs,\n\t\tresolve: async () => {\n\t\t\tconst resolved = await props.resolve?.();\n\n\t\t\treturn typeof resolved === 'string' ? resolved : '';\n\t\t}\n\t};\n};\n\nconst registerLegacySuspenseSlot = (props: LegacySuspenseSlotRegistration) => {\n\tregisterStreamingSlot({\n\t\terrorHtml: props.errorHtml,\n\t\tfallbackHtml: props.fallbackHtml,\n\t\tid: props.id,\n\t\tresolve: props.resolve,\n\t\ttimeoutMs: props.timeoutMs\n\t});\n};\n\nexport const SuspenseSlot = defineComponent({\n\tname: 'AbsoluteSuspenseSlot',\n\tprops: {\n\t\tclassName: { default: undefined, type: String },\n\t\terrorHtml: { default: undefined, type: String },\n\t\tfallbackHtml: { default: '', type: String },\n\t\tid: { required: true, type: String },\n\t\tpromise: {\n\t\t\tdefault: undefined,\n\t\t\ttype: Object\n\t\t},\n\t\tresolve: {\n\t\t\tdefault: undefined,\n\t\t\ttype: Function\n\t\t},\n\t\ttimeoutMs: { default: undefined, type: Number }\n\t},\n\tsetup(props: SuspenseSlotProps, { slots }) {\n\t\tconst readPatchedDomState = () => {\n\t\t\tif (typeof document === 'undefined') return false;\n\t\t\tconst slotNode = document.getElementById(props.id);\n\t\t\tif (!slotNode) return false;\n\n\t\t\treturn (\n\t\t\t\tslotNode.getAttribute('data-absolute-slot-state') === 'resolved'\n\t\t\t);\n\t\t};\n\t\tconst isResolved = ref(false);\n\t\tconst resolvedValue = ref<unknown>(undefined);\n\t\tconst hasError = ref(false);\n\t\tconst hasPatchedDom = ref(readPatchedDomState());\n\t\tconst usesFrameworkSlots = hasFrameworkSlots(\n\t\t\tslots.default,\n\t\t\tslots.fallback,\n\t\t\tslots.error,\n\t\t\tprops.promise\n\t\t);\n\t\tconst isSsrRender = useSSRContext() !== undefined;\n\n\t\tif (isSsrRender) {\n\t\t\tif (!isStreamingSlotCollectionActive()) {\n\t\t\t\twarnMissingStreamingSlotCollector('SuspenseSlot');\n\t\t\t}\n\t\t\tconst legacyRegistration = toLegacySuspenseSlotRegistration(props);\n\t\t\tif (!usesFrameworkSlots && legacyRegistration) {\n\t\t\t\treturn registerLegacySuspenseSlot(legacyRegistration);\n\t\t\t}\n\n\t\t\tregisterStreamingSlot({\n\t\t\t\tid: props.id,\n\t\t\t\ttimeoutMs: props.timeoutMs,\n\t\t\t\tresolve: async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst value = await resolveSuspenseValue(\n\t\t\t\t\t\t\tprops.resolve,\n\t\t\t\t\t\t\tprops.promise\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst nodes = allowMismatchOnSlotNodes(\n\t\t\t\t\t\t\tslots.default?.({ value }) ?? []\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst html = await renderVueNodesToHtml(nodes);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tkind: 'vue-suspense',\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t};\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst errorNodes = slots.error?.({ error });\n\t\t\t\t\t\tif (errorNodes !== undefined)\n\t\t\t\t\t\t\treturn renderVueNodesToHtml(\n\t\t\t\t\t\t\t\tallowMismatchOnSlotNodes(errorNodes)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tif (typeof props.errorHtml === 'string')\n\t\t\t\t\t\t\treturn props.errorHtml;\n\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (typeof window !== 'undefined' && usesFrameworkSlots) {\n\t\t\tconst consumers = (window.__ABS_SLOT_CONSUMERS__ =\n\t\t\t\twindow.__ABS_SLOT_CONSUMERS__ ?? {});\n\t\t\tlet runtimeReady = false;\n\t\t\tconsumers[props.id] = (payload) => {\n\t\t\t\tif (!runtimeReady) return false;\n\t\t\t\tif (!isVueSuspensePayload(payload)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thasError.value = payload.state === 'error';\n\t\t\t\tresolvedValue.value = payload.value;\n\t\t\t\tisResolved.value = payload.state !== 'error';\n\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\tconst handlePatchedDom = (event: Event) => {\n\t\t\t\tif (hasEventDetailId(event, props.id)) {\n\t\t\t\t\thasPatchedDom.value = true;\n\t\t\t\t}\n\t\t\t};\n\t\t\tonMounted(() => {\n\t\t\t\thasPatchedDom.value = readPatchedDomState();\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'absolutejs:slot-patch',\n\t\t\t\t\thandlePatchedDom\n\t\t\t\t);\n\t\t\t\truntimeReady = true;\n\t\t\t\twindow.__ABS_SLOT_FLUSH__?.();\n\t\t\t});\n\t\t\tonBeforeUnmount(() => {\n\t\t\t\twindow.removeEventListener(\n\t\t\t\t\t'absolutejs:slot-patch',\n\t\t\t\t\thandlePatchedDom\n\t\t\t\t);\n\t\t\t\tdelete window.__ABS_SLOT_CONSUMERS__?.[props.id];\n\t\t\t});\n\t\t}\n\n\t\tconst resolveSlotChildren = () => {\n\t\t\tif (hasPatchedDom.value) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (hasError.value) {\n\t\t\t\treturn (\n\t\t\t\t\tallowMismatchOnSlotNodes(\n\t\t\t\t\t\tslots.error?.({ error: undefined }) ??\n\t\t\t\t\t\t\tslots.fallback?.() ??\n\t\t\t\t\t\t\tundefined\n\t\t\t\t\t) ?? undefined\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (isResolved.value) {\n\t\t\t\treturn (\n\t\t\t\t\tallowMismatchOnSlotNodes(\n\t\t\t\t\t\tslots.default?.({ value: resolvedValue.value }) ??\n\t\t\t\t\t\t\tundefined\n\t\t\t\t\t) ?? undefined\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn allowMismatchOnSlotNodes(slots.fallback?.() ?? undefined);\n\t\t};\n\n\t\treturn () => {\n\t\t\tif (!usesFrameworkSlots) {\n\t\t\t\treturn h('div', {\n\t\t\t\t\tclass: props.className,\n\t\t\t\t\t'data-absolute-slot': 'true',\n\t\t\t\t\tid: props.id,\n\t\t\t\t\tinnerHTML: props.fallbackHtml\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn h(\n\t\t\t\t'div',\n\t\t\t\t{\n\t\t\t\t\tclass: props.className,\n\t\t\t\t\t'data-absolute-slot': 'true',\n\t\t\t\t\t'data-allow-mismatch': '',\n\t\t\t\t\tid: props.id\n\t\t\t\t},\n\t\t\t\tresolveSlotChildren() ?? undefined\n\t\t\t);\n\t\t};\n\t}\n});\n",
|
|
7
9
|
"import { defineComponent, h, useSSRContext } from 'vue';\nimport {\n\tisStreamingSlotCollectionActive,\n\tregisterStreamingSlot,\n\twarnMissingStreamingSlotCollector\n} from '../../core/streamingSlotRegistrar';\n\ntype StreamSlotProps = {\n\tclassName?: string;\n\terrorHtml?: string;\n\tfallbackHtml: string;\n\tid: string;\n\tresolve: () => Promise<string> | string;\n\ttimeoutMs?: number;\n};\n\nexport const StreamSlot = defineComponent({\n\tname: 'AbsoluteStreamSlot',\n\tprops: {\n\t\tclassName: { default: undefined, type: String },\n\t\terrorHtml: { default: undefined, type: String },\n\t\tfallbackHtml: { default: '', type: String },\n\t\tid: { required: true, type: String },\n\t\tresolve: {\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\ttimeoutMs: { default: undefined, type: Number }\n\t},\n\tsetup(props: StreamSlotProps) {\n\t\tif (useSSRContext() !== undefined) {\n\t\t\tif (isStreamingSlotCollectionActive()) {\n\t\t\t\tregisterStreamingSlot({\n\t\t\t\t\terrorHtml: props.errorHtml,\n\t\t\t\t\tfallbackHtml: props.fallbackHtml,\n\t\t\t\t\tid: props.id,\n\t\t\t\t\tresolve: props.resolve,\n\t\t\t\t\ttimeoutMs: props.timeoutMs\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\twarnMissingStreamingSlotCollector('StreamSlot');\n\t\t\t}\n\t\t}\n\n\t\treturn () =>\n\t\t\th('div', {\n\t\t\t\tclass: props.className,\n\t\t\t\t'data-absolute-slot': 'true',\n\t\t\t\tid: props.id,\n\t\t\t\tinnerHTML: props.fallbackHtml\n\t\t\t});\n\t}\n});\n"
|
|
8
10
|
],
|
|
9
|
-
"mappings": "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",
|
|
10
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "EB82A5D755DE3AA464756E2164756E21",
|
|
11
13
|
"names": []
|
|
12
14
|
}
|