@zhsz/cool-design-dv
Version:
81 lines (80 loc) • 2.22 kB
JavaScript
"use strict";
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const vue = require("vue");
const lodashEs = require("lodash-es");
const photoSphereViewer = require("photo-sphere-viewer");
require("photo-sphere-viewer/dist/photo-sphere-viewer.css");
const _hoisted_1 = ["id"];
const _hoisted_2 = {
key: 1,
absolute: "",
"top-0": "",
"left-0": "",
"wh-full": "",
"z-1": "",
"bg-hex-f2f2f2": "",
"f-c-c": ""
};
const __default__ = vue.defineComponent({
name: "vr-preview"
});
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...__default__,
props: {
url: { default: "" },
token_header: {},
token: {},
style: { default: {
width: "100%",
height: "100px"
} },
errorText: { default: "加载失败" }
},
setup(__props) {
const props = __props;
let viewer;
const vrRef = vue.ref(null);
const vrId = lodashEs.uniqueId("vr_");
const hasError = vue.ref(false);
vue.onMounted(() => {
const headers = {};
if (props.token_header) {
headers[props.token_header] = props.token;
}
viewer = new photoSphereViewer.Viewer({
container: vrId,
navbar: ["fullscreen"],
requestHeaders: headers
});
vue.watchEffect(() => {
if (props.url) {
viewer.setPanorama(props.url).then(() => {
hasError.value = false;
}).catch((_e) => {
hasError.value = true;
window.console.log("error");
});
}
});
});
vue.onUnmounted(() => {
if (viewer)
viewer.destroy();
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", {
style: vue.normalizeStyle(props.style),
relative: ""
}, [
!hasError.value ? (vue.openBlock(), vue.createElementBlock("div", {
key: 0,
id: vue.unref(vrId),
ref_key: "vrRef",
ref: vrRef,
"wh-full": ""
}, null, 8, _hoisted_1)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, vue.toDisplayString(props.errorText), 1))
], 4);
};
}
});
exports.default = _sfc_main;