172 lines
17 KiB
Plaintext
172 lines
17 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue");import { useHead } from "/_nuxt/node_modules/nuxt/dist/app/composables/head.js?v=e4f18c29";
|
|
/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createElementBlock as __createElementBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
|
|
function _interopVNode(vnode) {
|
|
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
|
|
const data = vnode.props['data-v-inspector']
|
|
delete vnode.props['data-v-inspector']
|
|
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
|
|
}
|
|
return vnode
|
|
}
|
|
function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
|
|
/* Injection by vite-plugin-vue-inspector End */
|
|
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { computed, onMounted, ref, useAttrs } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
|
|
import { useImage } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/composables.js?v=e4f18c29";
|
|
import { parseSize } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/utils/index.js?v=e4f18c29";
|
|
import { prerenderStaticImages } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/utils/prerender.js?v=e4f18c29";
|
|
import { markFeatureUsage } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/utils/performance.js?v=e4f18c29";
|
|
import { imgProps, useBaseImage } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/components/_base.js?v=e4f18c29";
|
|
import { useNuxtApp } from "/_nuxt/node_modules/nuxt/dist/app/index.js?v=e4f18c29";
|
|
export { imgProps } from "/_nuxt/node_modules/@nuxt/image/dist/runtime/components/_base.js?v=e4f18c29";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "NuxtImg",
|
|
props: imgProps,
|
|
emits: ["load", "error"],
|
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
__expose();
|
|
const props = __props;
|
|
const attrs = useAttrs();
|
|
const emit = __emit;
|
|
const isServer = false;
|
|
const $img = useImage();
|
|
const _base = useBaseImage(props);
|
|
const placeholderLoaded = ref(false);
|
|
const imgEl = ref();
|
|
const sizes = computed(() => $img.getSizes(props.src, {
|
|
..._base.options.value,
|
|
sizes: props.sizes,
|
|
densities: props.densities,
|
|
modifiers: {
|
|
..._base.modifiers.value,
|
|
width: parseSize(props.width),
|
|
height: parseSize(props.height)
|
|
}
|
|
}));
|
|
const imgAttrs = computed(() => {
|
|
const attrs2 = { ..._base.attrs.value, "data-nuxt-img": "" };
|
|
if (!props.placeholder || placeholderLoaded.value) {
|
|
attrs2.sizes = sizes.value.sizes;
|
|
attrs2.srcset = sizes.value.srcset;
|
|
}
|
|
return attrs2;
|
|
});
|
|
const placeholder = computed(() => {
|
|
let placeholder2 = props.placeholder;
|
|
if (placeholder2 === "") {
|
|
placeholder2 = true;
|
|
}
|
|
if (!placeholder2 || placeholderLoaded.value) {
|
|
return false;
|
|
}
|
|
if (typeof placeholder2 === "string") {
|
|
return placeholder2;
|
|
}
|
|
const size = Array.isArray(placeholder2) ? placeholder2 : typeof placeholder2 === "number" ? [placeholder2, placeholder2] : [10, 10];
|
|
return $img(props.src, {
|
|
..._base.modifiers.value,
|
|
width: size[0],
|
|
height: size[1],
|
|
quality: size[2] || 50,
|
|
blur: size[3] || 3
|
|
}, _base.options.value);
|
|
});
|
|
const mainSrc = computed(
|
|
() => props.sizes ? sizes.value.src : $img(props.src, _base.modifiers.value, _base.options.value)
|
|
);
|
|
const src = computed(() => placeholder.value ? placeholder.value : mainSrc.value);
|
|
if (false && props.preload) {
|
|
const isResponsive = Object.values(sizes.value).every((v) => v);
|
|
useHead({
|
|
link: [{
|
|
rel: "preload",
|
|
as: "image",
|
|
nonce: props.nonce,
|
|
...!isResponsive ? { href: src.value } : {
|
|
href: sizes.value.src,
|
|
imagesizes: sizes.value.sizes,
|
|
imagesrcset: sizes.value.srcset
|
|
},
|
|
...typeof props.preload !== "boolean" && props.preload.fetchPriority ? { fetchpriority: props.preload.fetchPriority } : {}
|
|
}]
|
|
});
|
|
}
|
|
if (false && false) {
|
|
prerenderStaticImages(src.value, sizes.value.srcset);
|
|
}
|
|
const nuxtApp = useNuxtApp();
|
|
const initialLoad = nuxtApp.isHydrating;
|
|
onMounted(() => {
|
|
if (placeholder.value) {
|
|
const img = new Image();
|
|
if (mainSrc.value) {
|
|
img.src = mainSrc.value;
|
|
}
|
|
if (props.sizes) {
|
|
img.sizes = sizes.value.sizes || "";
|
|
img.srcset = sizes.value.srcset;
|
|
}
|
|
img.onload = (event) => {
|
|
placeholderLoaded.value = true;
|
|
emit("load", event);
|
|
};
|
|
markFeatureUsage("nuxt-image");
|
|
return;
|
|
}
|
|
if (!imgEl.value) {
|
|
return;
|
|
}
|
|
if (imgEl.value.complete && initialLoad) {
|
|
if (imgEl.value.getAttribute("data-error")) {
|
|
emit("error", new Event("error"));
|
|
} else {
|
|
emit("load", new Event("load"));
|
|
}
|
|
}
|
|
imgEl.value.onload = (event) => {
|
|
emit("load", event);
|
|
};
|
|
imgEl.value.onerror = (event) => {
|
|
emit("error", event);
|
|
};
|
|
});
|
|
const __returned__ = { props, attrs, emit, isServer, $img, _base, placeholderLoaded, imgEl, sizes, imgAttrs, placeholder, mainSrc, src, nuxtApp, initialLoad };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { mergeProps as _mergeProps, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = ["src"];
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return _openBlock(), _createElementBlock("img", _mergeProps({
|
|
ref: "imgEl",
|
|
class: $setup.props.placeholder && !$setup.placeholderLoaded ? $setup.props.placeholderClass : void 0
|
|
}, {
|
|
...$setup.isServer ? { onerror: "this.setAttribute('data-error', 1)" } : {},
|
|
...$setup.imgAttrs,
|
|
...$setup.attrs
|
|
}, {
|
|
src: $setup.src,
|
|
"data-v-inspector": "node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue:2:3"
|
|
}), null, 16, _hoisted_1);
|
|
}
|
|
_sfc_main.__hmrId = "7b1665f8";
|
|
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
|
|
import.meta.hot.on("file-changed", ({ file }) => {
|
|
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
|
|
});
|
|
import.meta.hot.accept((mod) => {
|
|
if (!mod) return;
|
|
const { default: updated, _rerender_only } = mod;
|
|
if (_rerender_only) {
|
|
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
|
|
} else {
|
|
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
|
|
}
|
|
});
|
|
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
|
|
export default /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue"]]), { __name: "NuxtImg" });
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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Qy9CLGFBQUssU0FBUyxLQUFLO0FBQUEsTUFDckI7QUFBQSxJQUNGLENBQUM7Ozs7Ozs7Ozt1QkFsTEMsb0JBU0MsT0FURCxZQVNDO0FBQUEsSUFSQyxLQUFJO0FBQUEsSUFDSCxPQUFPLGFBQU0sZUFBVyxDQUFLLDJCQUFvQixhQUFNLG1CQUFtQjtBQUFBO09BQ3hELGtCQUFRO0FBQUEsT0FBc0U7QUFBQSxPQUFtQjtBQUFBO0lBS25ILEtBQUs7QUFBQSxJQUFLLG9CQUFpQjtBQUFBIiwibmFtZXMiOlsiYXR0cnMiLCJwbGFjZWhvbGRlciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJOdXh0SW1nLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxpbWdcbiAgICByZWY9XCJpbWdFbFwiXG4gICAgOmNsYXNzPVwicHJvcHMucGxhY2Vob2xkZXIgJiYgIXBsYWNlaG9sZGVyTG9hZGVkID8gcHJvcHMucGxhY2Vob2xkZXJDbGFzcyA6IHVuZGVmaW5lZFwiXG4gICAgdi1iaW5kPVwie1xuICAgICAgLi4uaXNTZXJ2ZXIgPyB7IG9uZXJyb3I6ICd0aGlzLnNldEF0dHJpYnV0ZShcXCdkYXRhLWVycm9yXFwnLCAxKScgfSA6IHt9LFxuICAgICAgLi4uaW1nQXR0cnMsXG4gICAgICAuLi5hdHRycyxcbiAgICB9XCJcbiAgICA6c3JjPVwic3JjXCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9pbWFnZS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9OdXh0SW1nLnZ1ZToyOjNcIlxuICA+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgcmVmLCB1c2VBdHRycyB9IGZyb20gJ3Z1ZSdcbmltcG9ydCB7IHVzZUhlYWQgfSBmcm9tICdAdW5oZWFkL3Z1ZSdcbmltcG9ydCB7IHVzZUltYWdlIH0gZnJvbSAnLi4vY29tcG9zYWJsZXMnXG5pbXBvcnQgeyBwYXJzZVNpemUgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IHByZXJlbmRlclN0YXRpY0ltYWdlcyB9IGZyb20gJy4uL3V0aWxzL3ByZXJlbmRlcidcbmltcG9ydCB7IG1hcmtGZWF0dXJlVXNhZ2UgfSBmcm9tICcuLi91dGlscy9wZXJmb3JtYW5jZSdcbmltcG9ydCB7IGltZ1Byb3BzLCB1c2VCYXNlSW1hZ2UgfSBmcm9tICcuL19iYXNlJ1xuaW1wb3J0IHsgdXNlTnV4dEFwcCB9IGZyb20gJyNhcHAnXG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoaW1nUHJvcHMpXG5cbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKVxuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xuICAoZXZlbnQ6ICdsb2FkJywgcGF5bG9hZDogRXZlbnQpOiB1bmtub3duXG4gIChldmVudDogJ2Vycm9yJywgcGF5bG9hZDogc3RyaW5nIHwgRXZlbnQpOiB1bmtub3duXG59PigpXG5cbmNvbnN0IGlzU2VydmVyID0gaW1wb3J0Lm1ldGEuc2VydmVyXG5cbmNvbnN0ICRpbWcgPSB1c2VJbWFnZSgpXG5cbmNvbnN0IF9iYXNlID0gdXNlQmFzZUltYWdlKHByb3BzKVxuXG5jb25zdCBwbGFjZWhvbGRlckxvYWRlZCA9IHJlZihmYWxzZSlcbmNvbnN0IGltZ0VsID0gcmVmPEhUTUxJbWFnZUVsZW1lbnQ+KClcblxudHlwZSBBdHRyc1QgPSB0eXBlb2YgX2Jhc2UuYXR0cnMudmFsdWUgJiB7XG4gICdzaXplcyc/OiBzdHJpbmdcbiAgJ3NyY3NldCc/OiBzdHJpbmdcbiAgJ2RhdGEtbnV4dC1pbWcnPzogc3RyaW5nXG59XG5cbmNvbnN0IHNpemVzID0gY29tcHV0ZWQoKCkgPT4gJGltZy5nZXRTaXplcyhwcm9wcy5zcmMhLCB7XG4gIC4uLl9iYXNlLm9wdGlvbnMudmFsdWUsXG4gIHNpemVzOiBwcm9wcy5zaXplcyxcbiAgZGVuc2l0aWVzOiBwcm9wcy5kZW5zaXRpZXMsXG4gIG1vZGlmaWVyczoge1xuICAgIC4uLl9iYXNlLm1vZGlmaWVycy52YWx1ZSxcbiAgICB3aWR0aDogcGFyc2VTaXplKHByb3BzLndpZHRoKSxcbiAgICBoZWlnaHQ6IHBhcnNlU2l6ZShwcm9wcy5oZWlnaHQpLFxuICB9LFxufSkpXG5cbmNvbnN0IGltZ0F0dHJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBhdHRyczogQXR0cnNUID0geyAuLi5fYmFzZS5hdHRycy52YWx1ZSwgJ2RhdGEtbnV4dC1pbWcnOiAnJyB9XG5cbiAgaWYgKCFwcm9wcy5wbGFjZWhvbGRlciB8fCBwbGFjZWhvbGRlckxvYWRlZC52YWx1ZSkge1xuICAgIGF0dHJzLnNpemVzID0gc2l6ZXMudmFsdWUuc2l6ZXNcbiAgICBhdHRycy5zcmNzZXQgPSBzaXplcy52YWx1ZS5zcmNzZXRcbiAgfVxuXG4gIHJldHVybiBhdHRyc1xufSlcblxuY29uc3QgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGxldCBwbGFjZWhvbGRlciA9IHByb3BzLnBsYWNlaG9sZGVyXG5cbiAgaWYgKHBsYWNlaG9sZGVyID09PSAnJykge1xuICAgIHBsYWNlaG9sZGVyID0gdHJ1ZVxuICB9XG5cbiAgaWYgKCFwbGFjZWhvbGRlciB8fCBwbGFjZWhvbGRlckxvYWRlZC52YWx1ZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwbGFjZWhvbGRlciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgfVxuXG4gIGNvbnN0IHNpemUgPSAoQXJyYXkuaXNBcnJheShwbGFjZWhvbGRlcilcbiAgICA/IHBsYWNlaG9sZGVyXG4gICAgOiAodHlwZW9mIHBsYWNlaG9sZGVyID09PSAnbnVtYmVyJyA/IFtwbGFjZWhvbGRlciwgcGxhY2Vob2xkZXJdIDogWzEwLCAxMF0pKSBhcyBbdzogbnVtYmVyLCBoOiBudW1iZXIsIHE6IG51bWJlciwgYjogbnVtYmVyXVxuXG4gIHJldHVybiAkaW1nKHByb3BzLnNyYyEsIHtcbiAgICAuLi5fYmFzZS5tb2RpZmllcnMudmFsdWUsXG4gICAgd2lkdGg6IHNpemVbMF0sXG4gICAgaGVpZ2h0OiBzaXplWzFdLFxuICAgIHF1YWxpdHk6IHNpemVbMl0gfHwgNTAsXG4gICAgYmx1cjogc2l6ZVszXSB8fCAzLFxuICB9LCBfYmFzZS5vcHRpb25zLnZhbHVlKVxufSlcblxuY29uc3QgbWFpblNyYyA9IGNvbXB1dGVkKCgpID0+XG4gIHByb3BzLnNpemVzXG4gICAgPyBzaXplcy52YWx1ZS5zcmNcbiAgICA6ICRpbWcocHJvcHMuc3JjISwgX2Jhc2UubW9kaWZpZXJzLnZhbHVlLCBfYmFzZS5vcHRpb25zLnZhbHVlKSxcbilcblxuY29uc3Qgc3JjID0gY29tcHV0ZWQoKCkgPT4gcGxhY2Vob2xkZXIudmFsdWUgPyBwbGFjZWhvbGRlci52YWx1ZSA6IG1haW5TcmMudmFsdWUpXG5cbmlmIChpbXBvcnQubWV0YS5zZXJ2ZXIgJiYgcHJvcHMucHJlbG9hZCkge1xuICBjb25zdCBpc1Jlc3BvbnNpdmUgPSBPYmplY3QudmFsdWVzKHNpemVzLnZhbHVlKS5ldmVyeSh2ID0+IHYpXG5cbiAgdXNlSGVhZCh7XG4gICAgbGluazogW3tcbiAgICAgIHJlbDogJ3ByZWxvYWQnLFxuICAgICAgYXM6ICdpbWFnZScsXG4gICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAuLi4oIWlzUmVzcG9uc2l2ZVxuICAgICAgICA/IHsgaHJlZjogc3JjLnZhbHVlIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBocmVmOiBzaXplcy52YWx1ZS5zcmMsXG4gICAgICAgICAgICBpbWFnZXNpemVzOiBzaXplcy52YWx1ZS5zaXplcyxcbiAgICAgICAgICAgIGltYWdlc3Jjc2V0OiBzaXplcy52YWx1ZS5zcmNzZXQsXG4gICAgICAgICAgfSksXG4gICAgICAuLi4odHlwZW9mIHByb3BzLnByZWxvYWQgIT09ICdib29sZWFuJyAmJiBwcm9wcy5wcmVsb2FkLmZldGNoUHJpb3JpdHlcbiAgICAgICAgPyB7IGZldGNocHJpb3JpdHk6IHByb3BzLnByZWxvYWQuZmV0Y2hQcmlvcml0eSB9XG4gICAgICAgIDoge30pLFxuICAgIH1dLFxuICB9KVxufVxuXG4vLyBQcmVyZW5kZXIgc3RhdGljIGltYWdlc1xuaWYgKGltcG9ydC5tZXRhLnNlcnZlciAmJiBpbXBvcnQubWV0YS5wcmVyZW5kZXIpIHtcbiAgcHJlcmVuZGVyU3RhdGljSW1hZ2VzKHNyYy52YWx1ZSwgc2l6ZXMudmFsdWUuc3Jjc2V0KVxufVxuXG5jb25zdCBudXh0QXBwID0gdXNlTnV4dEFwcCgpXG5cbmNvbnN0IGluaXRpYWxMb2FkID0gbnV4dEFwcC5pc0h5ZHJhdGluZ1xuXG5vbk1vdW50ZWQoKCkgPT4ge1xuICBpZiAocGxhY2Vob2xkZXIudmFsdWUpIHtcbiAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKVxuXG4gICAgaWYgKG1haW5TcmMudmFsdWUpIHtcbiAgICAgIGltZy5zcmMgPSBtYWluU3JjLnZhbHVlXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNpemVzKSB7XG4gICAgICBpbWcuc2l6ZXMgPSBzaXplcy52YWx1ZS5zaXplcyB8fCAnJ1xuICAgICAgaW1nLnNyY3NldCA9IHNpemVzLnZhbHVlLnNyY3NldFxuICAgIH1cblxuICAgIGltZy5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgIHBsYWNlaG9sZGVyTG9hZGVkLnZhbHVlID0gdHJ1ZVxuICAgICAgZW1pdCgnbG9hZCcsIGV2ZW50KVxuICAgIH1cblxuICAgIG1hcmtGZWF0dXJlVXNhZ2UoJ251eHQtaW1hZ2UnKVxuXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWltZ0VsLnZhbHVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoaW1nRWwudmFsdWUuY29tcGxldGUgJiYgaW5pdGlhbExvYWQpIHtcbiAgICBpZiAoaW1nRWwudmFsdWUuZ2V0QXR0cmlidXRlKCdkYXRhLWVycm9yJykpIHtcbiAgICAgIGVtaXQoJ2Vycm9yJywgbmV3IEV2ZW50KCdlcnJvcicpKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGVtaXQoJ2xvYWQnLCBuZXcgRXZlbnQoJ2xvYWQnKSlcbiAgICB9XG4gIH1cblxuICBpbWdFbC52YWx1ZS5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICBlbWl0KCdsb2FkJywgZXZlbnQpXG4gIH1cblxuICBpbWdFbC52YWx1ZS5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgZW1pdCgnZXJyb3InLCBldmVudClcbiAgfVxufSlcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuZXhwb3J0IHsgaW1nUHJvcHMgfSBmcm9tICcuL19iYXNlJ1xuPC9zY3JpcHQ+XG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvbm9kZV9tb2R1bGVzL0BudXh0L2ltYWdlL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL051eHRJbWcudnVlIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ== |