@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.
Files changed (51) hide show
  1. package/dist/ai/client/index.js +8751 -6935
  2. package/dist/ai/client/index.js.map +5 -5
  3. package/dist/ai/client/ui.js +6402 -42
  4. package/dist/ai/client/ui.js.map +7 -4
  5. package/dist/ai/index.js +12994 -8132
  6. package/dist/ai/index.js.map +15 -13
  7. package/dist/ai/rag/quality.js +4194 -37
  8. package/dist/ai/rag/quality.js.map +6 -5
  9. package/dist/ai/rag/ui.js +6407 -42
  10. package/dist/ai/rag/ui.js.map +7 -4
  11. package/dist/ai-client/angular/ai/index.js +401 -4
  12. package/dist/ai-client/react/ai/index.js +537 -511
  13. package/dist/ai-client/vue/ai/index.js +743 -720
  14. package/dist/angular/ai/index.js +9400 -3140
  15. package/dist/angular/ai/index.js.map +7 -6
  16. package/dist/react/ai/index.js +8187 -6372
  17. package/dist/react/ai/index.js.map +5 -5
  18. package/dist/src/ai/index.d.ts +2 -2
  19. package/dist/src/ai/rag/adapters/filtering.d.ts +2 -0
  20. package/dist/src/ai/rag/adapters/queryPlanning.d.ts +11 -0
  21. package/dist/src/ai/rag/index.d.ts +4 -4
  22. package/dist/src/ai/rag/ingestion.d.ts +3 -0
  23. package/dist/src/ai/rag/presentation.d.ts +6 -1
  24. package/dist/src/ai/rag/quality.d.ts +95 -2
  25. package/dist/src/ai/rag/sync.d.ts +20 -1
  26. package/dist/src/ai/rag/types.d.ts +1 -1
  27. package/dist/src/ai/rag/ui.d.ts +1 -1
  28. package/dist/src/react/ai/useRAG.d.ts +1 -1
  29. package/dist/src/react/ai/useRAGIndexAdmin.d.ts +2 -2
  30. package/dist/src/vue/ai/useRAG.d.ts +408 -0
  31. package/dist/src/vue/ai/useRAGEvaluate.d.ts +84 -0
  32. package/dist/src/vue/ai/useRAGIndexAdmin.d.ts +222 -0
  33. package/dist/src/vue/ai/useRAGOps.d.ts +102 -0
  34. package/dist/src/vue/components/Image.d.ts +74 -0
  35. package/dist/src/vue/components/index.d.ts +1 -1
  36. package/dist/src/vue/index.d.ts +1 -1
  37. package/dist/svelte/ai/index.js +8186 -6371
  38. package/dist/svelte/ai/index.js.map +4 -4
  39. package/dist/types/ai.d.ts +389 -1
  40. package/dist/vue/ai/index.js +8186 -6371
  41. package/dist/vue/ai/index.js.map +4 -4
  42. package/dist/vue/components/Image.js +253 -0
  43. package/dist/vue/components/Image.js.map +11 -0
  44. package/dist/vue/components/index.js +181 -16
  45. package/dist/vue/components/index.js.map +5 -3
  46. package/dist/vue/index.js +195 -30
  47. package/dist/vue/index.js.map +6 -4
  48. package/package.json +11 -11
  49. package/dist/Image-0pe96k20.vue +0 -186
  50. package/dist/vue/components/Image.vue +0 -186
  51. 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.vue
119
- var Image_default = "../../Image-0pe96k20.vue";
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 = defineComponent({
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 = ref(false);
230
- const resolvedValue = ref(undefined);
231
- const hasError = ref(false);
232
- const hasPatchedDom = ref(readPatchedDomState());
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 h("div", {
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 h("div", {
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 defineComponent2, h as h2, useSSRContext as useSSRContext2 } from "vue";
330
- var StreamSlot = defineComponent2({
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 () => h2("div", {
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=01603AA559DDEA9464756E2164756E21
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": "01603AA559DDEA9464756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "EB82A5D755DE3AA464756E2164756E21",
11
13
  "names": []
12
14
  }