div:visible:last").css(bottom);
if(pullTab.is(':visible')){
$(".viewContainer > div:visible:first").css(top);
}else{
$("#gui-modes-map > div:visible:first").css(top);
}
}
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
BorderRadius(mobileRadius.bottom,mobileRadius.top);
}else{
BorderRadius(topRadius.bottom,topRadius.top);
}
//判断someData里面是否有special字段,如果有就会处理这些特殊的大场景
if(window.DATA.model.special || window.DATA.special){
window.specialScene && specialScene.special().afterImplement();
}
}
function p(e) {
e || (e = 0),
We = !1,
window.setTimeout(function() {
We || (ze = !0,
$("#gui-spinner").stop(!0, !0).show())
}
.bind(this), e)
}
function f() {
$("#gui-spinner").stop(!0, !0),
$("#gui-spinner").fadeOut(1e3),
We = !0,
ze = !1
}
function g(e, t) {
var i = e.mode
, n = t || e.currentPano;
$("#gui-modes-dollhouse").toggleClass("active", i === _e.DOLLHOUSE),
$("#gui-modes-floorplan").toggleClass("active", i === _e.FLOORPLAN),
$("#gui-modes-inside").toggleClass("active", i === _e.PANORAMA),
i === _e.PANORAMA ? ($("#view-controllers").slideUp(500),
Q.show360Views.enabled && !n.isAligned() ? (
$(".gui-floor").addClass("hidden"),
$("#gui-modes-outside").addClass("desktop-only")) : (
$(".gui-floor").removeClass("hidden"),
$("#gui-modes-outside").removeClass("desktop-only")),
$("#gui-modes-outside").removeClass("hidden")) : i !== _e.TRANSITIONING && (f(),
Be = i,
$("#gui-modes-outside").addClass("hidden"),
e.model.has360Views && $(".gui-floor").removeClass("hidden"),
$("#view-controllers").is(":visible") || $("#view-controllers").slideDown(Q.guiAnimationSpeed))
}
function m(e, t) {
var i = t.player;
$("#gui-modes-inside").on("mousedown touchstart", function(e) {
l(e),
J.updateInteraction(Se.InteractionGui, "inside-button"),
J.track("USER", {
event_type: "showcase_gui",
gui_action: "click_inside_mode_button"
}),
t.changeMode(_e.PANORAMA);
}),
$("#gui-modes-outside").find("a").on("click", function(e) {
l(e),
J.track("showcase_gui", {
gui_action: "click_outside_mode_button"
}),
t.changeMode(Be)
}),
$("#gui-modes-floorplan").on("click", function(e) {
l(e),
i.mode !== _e.FLOORPLAN && (J.track("showcase_gui", {
gui_action: "click_floorplan_mode_button"
}),
t.changeMode(_e.FLOORPLAN));
}),
$("#gui-modes-dollhouse").on("click", function(e) {
l(e),
i.mode !== _e.DOLLHOUSE && (J.track("showcase_gui", {
gui_action: "click_dollhouse_mode_button"
}),
t.changeMode(_e.DOLLHOUSE));
})
}
function v(e, t) {
function i() {
document.getElementById("vr").classList.remove("hidden"),
Q.vr.allowWebVR ? K.getVRDisplay().then(function(e) {
K.supportsFullscreen() ? n(e) : (De.warn("Unable to use WebVR when full screen is not supported"),
$(".improper-embed").toggleClass("hidden", !1),
r())
}, function(e) {
r()
}) : r()
}
function n(i) {
De.info(i.displayName + " detected, VR button activates WebVR experience"),
Ie.init(e.data, t, i, q),
Ie.on(Ee.OPENED, Ze.bind(gui, "vr")),
Ie.on(Ee.SHOW_TERMS, fe.show.bind(fe))
}
function r() {
De.info("WebVR support not found, VR button activates native app VR modal"),
Ae.init(e.data, q),
Ae.on(ye.OPENED, function() {
var e = document.getElementById("vr-modal");
return function() {
Ze("vr"),
le.open(e)
}
}()),
Ae.on(ye.CLOSED, le.reset)
}
if (Q.vr.enabled && e.supportsVR && !K.valueFromHash("mls", 0)){
/*********************** 方奕卓 VR功能事件监听 ********************/
K.isMobile() && $('#vr').css('display', ''); // 显示vr功能按钮
switch (Q.vr.option) {
case Pe.CONTEXTUAL:
i();
break;
case Pe.ANDROID:
K.detectAndroid() && i();
break;
case Pe.NONE:
}
}
}
function A(e, t) {
$("#play").on("mousedown touchstart", function(e) {
l(e);
Ze("tour");
ve.play();
J.trackAlways("showcase_gui", {
gui_action: "play_highlights"
})
}),
window.startAndPlay = function(e) {
// l(e);
Ze("tour");
ve.play();
J.trackAlways("showcase_gui", {
gui_action: "play_highlights"
})
};
$("#pause").on("mousedown touchstart", function(e) {
l(e),
ve.pause(),
J.trackAlways("showcase_gui", {
gui_action: "pause_highlights"
})
}),
$("#gui-zoomin").find("a").on("click", function(e) {
l(e),
t.player.zoomInIncrementally()
}),
$("#gui-zoomout").find("a").on("click", function(e) {
l(e),
t.player.zoomOutIncrementally()
})
}
function y(e, t) {
for (var i = $(".gui-floor"), n = 0; n < e.floors.length; n++) {
if(getQueryVariable('m') === '372') continue;
var r = $('
').text(e.floors.get(n).name);
$(".gui-floor").find(".container").prepend(r)
//cxz 本来一开始是prepend 后来改了append 按顺序插入
}
i.find(".container").prepend('' + Re.FLOOR_ALL + "
"),
i.on("click", function(e) {
l(e),
Ze("floor"),
i.toggleClass("open")
}),
$(".floorChoice").on("click", function(e) {
l(e);
var n = $(this).data("index");
"all" !== n ? (J.updateInteraction(Se.InteractionGui, "floor-control"),
t.player.gotoFloor(n),
J.track("showcase_gui", {
gui_action: "click_floor_select_button",
interaction_source: "gui"
})) : (J.updateInteraction(Se.InteractionGui, "floor-control"),
Ze("move"),
t.allFloors(),
J.track("showcase_gui", {
gui_action: "click_toggle_all_floors_button",
interaction_source: "gui"
})),
i.removeClass("open")
})
}
function C(e, t) {
e && (t === _e.DOLLHOUSE || t === _e.FLOORPLAN ? ($(".allFloorBtn").show(),$(".gui-floor-icon").hide(),$(".gui-floor-title").show()) : ($(".allFloorBtn").hide(),$(".gui-floor-icon").show(),$(".gui-floor-title").hide()),
e.model.allFloorsVisible ? ($(".gui-floor-title").text(Re.FLOOR_ALL),
$(".gui-floor-number").text(Re.FLOOR_ALL),
$(".floorChoice").removeClass("active"),
$('.floorChoice[data-index="all"]').addClass("active")) : ($(".gui-floor-title").text(e.name),
$(".gui-floor-number").text(" " + (e.floorIndex + 1)),
$(".floorChoice").removeClass("active"),
$(".floorChoice[data-index=" + e.floorIndex + "]").addClass("active")))
if(window.number == '1149_2'){
if(e.floorIndex===0){
$('.cad') && $('.cad').addClass('hidemap')
$('.cad1') && $('.cad1').removeClass('hidemap')
}
if(e.floorIndex===1){
$('.cad1') && $('.cad1').addClass('hidemap')
$('.cad') && $('.cad').removeClass('hidemap')
}
}
}
function I(e) {
return e.describe().inTransition
}
function b(e, t, i) {
Fe = e.heroLocations.length;
var n = ' '
, r = 100 / Fe + "%"
, o = $("#thumb-container")
, a = $("#progressBar");
$("#status").find(".totalSteps").text(Fe);
for (var s = 0; s < Fe; s++) {
var c = e.heroLocations[s]
, h = $(n);
var thumbUrl
if(c.heroLocations){//有子项,选第一张截图
thumbUrl = manage.dealURL(c.heroLocations[0].thumbUrl)//.replace('https://','').replace('http://','')
}else{
thumbUrl = manage.dealURL(c.thumbUrl)//.replace('https://','').replace('http://','')
}
h.attr("data-index", s)
je.highlight.visible && h.find("img").attr("src", thumbUrl)
if (c.name) {
var u = $('
').text(c.name);
h.prepend(u)
}
if (e.has360Views && c.cameraMode === _e.PANORAMA) {
var d = e.panos.get(c.panoId)
, p = d && !d.isAligned()
, f = p ? '' : '';
h.prepend(f)
}
o.append(h),
a.append('
')
}
j = 144 * Fe,
Y = 111 * Fe,
$(".thumbImg").on("mouseover", function() {
I(t) || i.showPathToHeroLocation([$(this).data("index"),0])//改
}),
$(".thumbImg").on("mouseout", function() {
t.clearPath()
}),
$(".thumbImg").on("click", function(e) {
l(e);
var i = $(this);
J.updateInteraction(Se.InteractionGui, "thumbnail"),
J.trackAlways("showcase_gui", {
gui_action: "click_highlight"
}),
t.goToHighlight([i.data("index"),0])//改
}),
$(".previous").find("a").on("click", function(e) {
l(e),
J.trackAlways("showcase_gui", {
gui_action: "prev_highlight"
}),
t.prevHighlight()
}),
$(".next").find("a").on("click", function(e) {
l(e),
J.trackAlways("showcase_gui", {
gui_action: "next_highlight"
}),
t.nextHighlight()
}),
$("#drawer").on("mouseleave", function(e) {
l(e);
var t;
try {
t = new MouseEvent("mouseup",{
clientX: e.clientX,
clientY: e.clientY,
screenX: e.screenX,
screenY: e.screenY
})
} catch (i) {
t = document.createEvent("MouseEvents"),
t.initMouseEvent("mouseup", e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget)
}
document.dispatchEvent(t)
}),
W = new Sly($("#scrollFrame"),{
horizontal: !0,
itemNav: "centered",
smart: !0,
scrollTrap: !0,
scrollBy: 1,
mouseDragging: !0,
touchDragging: !0,
speed: 300,
dragHandle: !0,
dynamicHandle: !0,
clickBar: !0,
scrollBar: $("#scroller"),
activateOn: null
}).init(),
W.on("active", function(e, t) {
Ve = t,
Ze("tour"),
$(".step").removeClass("active"),
$("#status").find(".curIdx").text(t + 1);
for (var i = 0; i <= t; i++)
$("#progressBar").find("[data-idx='" + i + "']").addClass("active")
}),
w()
}
function w() {
var e = $("#player").width() - 20
, t = $("#scroller")
, i = $("#drawer")
, n = $(".pinBottom");
if ($("#player").width() < 488 || $("#player").height() < 488)
t.addClass("hidden"),
i.addClass("noScroll"),
n.addClass("noScroll");
else {
var r = j > e
, o = !i.hasClass("noScroll")
, a = r !== o;
a && (t.toggleClass("hidden"),
i.toggleClass("noScroll"),
n.toggleClass("noScroll"))
}
}
function _(e) {
je.tourControls.visible = true//e.tour_buttons && K.valueFromHash("gt", 1),
je.coBrand.visible = e.presented_by && 1 !== Q.specialEdition && Q.brand && !K.valueFromHash("mls", !1),
je.highlight.visible = /* e.highlight_reel && */ 1 !== Q.specialEdition && Q.showHighlights
}
function T(e) {
function t(t, i) {
return !!e.player_options[t] && e[i || t]
}
$(".model-title").text(e.name);
var i = Q.pageTitle;
// 2 !== K.valueFromHash("mls", 0) && (i = e.name + " - " + i),
2 !== K.valueFromHash("mls", 0) && e.name && (i = e.name),
document.title = i ,
K.isMobile() ? $("#gui-fullscreen").css("display", "none") : ($("[rel=tooltip]").tooltip({
delay: {
show: 50,
hide: 0
},
trigger: "hover",
html: !1,
viewport: {
selector: "body",
padding: 10
}
}),
K.inIframe() && document.getElementsByClassName("pinBottom-container")[0].classList.add("embed")),
// t("presented_by") && 1 !== Q.specialEdition && Q.brand && !K.valueFromHash("mls", 0) ? document.getElementById("loaderCoBrandName").innerText = t("presented_by") : document.getElementById("loaderCoBrand").classList.add("hidden"),
de.populate({
name: t("model_name", "name"),
coBrand: t("presented_by"),
description: t("model_summary", "summary") || "暂无内容",
contactName: t("contact_name"),
address: t("address"),
phone: t("contact_phone"),
formattedPhone: e.formatted_contact_phone,
email: t("contact_email"),
url: t("external_url"),
socialSharing: e.enable_social_sharing && e.is_public
})
}
function x(e, t, i, n, r, o) {
function a() {
o.setLoadingStartTime(),
H(),
r ? (re.showMessage(t, i, je.coBrand.visible),
l()) : h(l)
}
var s = $.Deferred()
, l = s.resolve.bind(s);
return Ge = !0,
O(e),
e.data.player_options && _(e.data.player_options),
1 === Q.specialEdition && $("body").addClass("specialEdition"),
Re.localizeGUI(),
T(e.data),
r || $(".quick").addClass("hidden"),
//e.data.image && !r && E(e.data.image),
n ? (J.impression(),
a()) : (o.setWaitingStartTime(),
oe.show(r, a)),
s
}
function S(e, t, i, n, r, a, s) {
q = s,
e.outsideAllowed() || $("#gui-modes-outside").addClass("invisible"),
e.supportedModes[_e.PANORAMA] || $("#gui-modes-inside").addClass("invisible"),
ae.init(),
re.init(e, a),
Oe.init(e, t, n),
$(".icon").on("mouseover", function() {
t.player && t.player.reticule.hide()
}),
m(e, t),
A(e, t),
e.data.enable_social_sharing && e.data.is_public && Q.share.enabled && (Ce.init(window.DATA.name/* e.data.name */),
Ce.on(Me.OPENED, function() {
var e = document.getElementById("share-modal");
return function() {
Ze("share"),
le.open(e)
}
}()),
Ce.on(Me.CLOSED, le.reset)),
e.heroLocations.length > 0 ? b(e, t, i) : (je.highlight.visible = !1,
je.tourControls.visible = !1),
de.on(pe.OPEN_INFO, Ze.bind(this, "info")),
z(),
g(i),
v(e, r),
e.on("floor.changed", C),
e.on("waiting", R.bind(this, e)),
e.on("waiting-done", P.bind(this, e)),
i.on(xe.ModeChanged, function(e, n) {
g(i),
o(t, i),
n === _e.PANORAMA && i.currentPano && !i.currentPano.isAligned() && (n = _e.OUTDOOR),
he.updateMode(n)
}),
n.on(Se.Move, Ze.bind(this, "move")),
i.on(xe.Ready, function() {
ie.init(n, i, i.tagManager, t),
i.on(xe.ModeChanged, function(e, t) {
e !== t && $(".vr-popup").is(":visible") && Ae.dismiss()
})
}),
i.on(xe.PanoChosen, function(e, t) {
g(i, t),
he.updateMode(t && !t.isAligned() ? _e.OUTDOOR : _e.PANORAMA)
}),
le.on(ce.CLOSE, function(e) {
switch (e) {
case "vr-modal":
Ae.dismiss();
break;
case "share-modal":
Ce.hide();
break;
case "terms-modal":
fe.hide()
}
});
var l = $("#play").eq(0)
, c = $("#pause").eq(0)
, h = $(".pinBottom").toArray()
, u = $("#drawer").eq(0)
, d = $("#playHead").eq(0)
, p = $("#progressBar").eq(0)
, f = $("#thumb-container").eq(0)
, y = f.children()
, I = p.children();
t.on("update.controls", function() {
var n = t.describe();
n.tourIsPlaying || i.isWarping() ? (je.tourControls.visible && (l.hide(),
c.show()),
n.tourInProgress && (h.forEach(function(e) {
e.classList.add("playing")
}),
u.addClass("playing"),
d.addClass("playing"))) : (je.tourControls.visible && (l.show(),
c.hide()),
n.tourInProgress || (ve.stopTour(),
h.forEach(function(e) {
e.classList.remove("playing")
}),
u.removeClass("playing"),
d.removeClass("playing")));
var r, a, s;
if (null !== n.currentItem) {
var p, f;
$("#status").find(".curIdx").text(n.currentItem[0] + 1),
n.onTheBus ? (p = "active",
f = "recent") : (f = "active",
p = "recent");
var g = null === n.destinationItem || n.currentItem[0] === n.destinationItem[0];
for (r = 0; r < e.heroLocations.length; r += 1)
s = y.eq(r),
a = I.eq(r),
s.removeClass(f),
a.removeClass(f),
n.onTheBus && r === n.destinationItem[0] ? (s.addClass(p),
a.addClass(p),
W.activate(r)) : n.onTheBus && g && r === n.currentItem[0] ? (s.addClass(p),
a.addClass(p)) : (s.removeClass(p),
a.removeClass(p))
} else
for (r = 0; r < e.heroLocations.length; r += 1)
s = y.eq(r),
a = I.eq(r),
s.removeClass("active recent"),
a.removeClass("active recent");
o(t, i)
}),
document.addEventListener("keydown", function(n) {
switch (J.updateInteraction(Se.InteractionKey),
n.which) {
case we.ZERO:
Q.debug && e.toggleAlpha();
break;
case we.NINE:
Q.debug && se.toggle();
break;
case we.ONE:
i.isInMode(_e.TRANSITIONING) || t.changeMode(_e.PANORAMA);
break;
case we.TWO:
e.outsideAllowed() && !i.isInMode(_e.DOLLHOUSE, _e.TRANSITIONING) && t.changeMode(_e.DOLLHOUSE);
break;
case we.THREE:
e.outsideAllowed() && !i.isInMode(_e.FLOORPLAN, _e.TRANSITIONING) && t.changeMode(_e.FLOORPLAN);
break;
case we.FOUR:
i.isInMode(_e.TRANSITIONING) || t.changeMode(_e.OUTDOOR);
break;
case we.SPACE:
je.tourControls.visible && ($("#playHead").hasClass("playing") || Ze("tour"));
break;
case we.RETURN:
Q.debug && e.toggleExplodeUp();
break;
case we.P:
k();
break;
case we.U:
B();
break;
case we.X:
Q.debug && e.toggleExplode();
break;
case we.PLUSEQUALS:
t.player.activatePersistentZooming(!0),
ie.hideUi();
break;
case we.DASHUNDERSCORE:
t.player.activatePersistentZooming(!1),
ie.hideUi();
break;
case we.SEVEN:
De.info("Zoom level: " + t.player.zoomLevel + ", FOV: " + t.player.zoomFov);
break;
case we.EIGHT:
t.player.decreaseZoomSpeed();
break;
case we.NINE:
t.player.increaseZoomSpeed()
}
return i && i.reticule.hide(),
!0
}
.bind(this)),
document.addEventListener("keyup", function(e) {
switch (e.which) {
case we.PLUSEQUALS:
t.player.deactivatePersistentZooming();
break;
case we.DASHUNDERSCORE:
t.player.deactivatePersistentZooming()
}
}
.bind(this)),
F(e),
L(e, t.player),
M(i),
te.setAutoPlay(e.heroCount()),
he.init(i, a.mode),
he.on(ue.OPENED, Ze.bind(this, "help")),
fe.init(),
fe.on(ge.OPENED, function() {
var e = document.getElementById("terms-modal");
return function() {
Ze("terms"),
le.open(e)
}
}()),
fe.on(ge.CLOSED, le.reset),
Q.quickstart.enabled || re.delayLanding(a.mode).then(re.showMessage.bind(this, i, t, je.coBrand.visible)),
(Q.quickstart.enabled || i.model.outsideAllowed()) && ie.init(n, i, i.tagManager, t),
Q.profiling.enabled && se.show(),
ve.init(t)
}
function M(e) {
var t = function(e, t) {
$(e).find("a").each(function(e, i) {
t ? $(i).removeClass("buttonZoomDisabled").addClass("buttonZoomEnabled") : $(i).addClass("buttonZoomDisabled").removeClass("buttonZoomEnabled"),
i.style.pointerEvents = t ? "auto" : "none"
})
}
, i = function() {
e.zoomLevel >= Q.zoom.max ? t("#gui-zoomin", !1) : t("#gui-zoomin", !0),
e.zoomLevel <= Q.zoom.min ? t("#gui-zoomout", !1) : t("#gui-zoomout", !0)
};
e.on(Ne.ZoomMax, function() {
t("#gui-zoomin", !1),
t("#gui-zoomout", !0)
}),
e.on(Ne.ZoomMin, function() {
t("#gui-zoomin", !0),
t("#gui-zoomout", !1)
}),
e.on(Ne.ZoomIn, function() {
t("#gui-zoomout", !0)
}),
e.on(Ne.ZoomOut, function() {
t("#gui-zoomin", !0)
}),
i()
}
function R(e) {
O(e)
}
function P(e) {
O(e)
}
function O(e) {
var t = e.waitQueue.length;
t <= 0 ? f() : Ge || p(Q.modelComponentLoadSpinnerDelay)
}
function L(e, t) {
He = {
gui: null,
visible: !1,
model: e,
player: t
}
}
function D(e, t) {
function i() {
var i = t.toJSON();
n.linkToLocation = window.location.protocol + "//" + window.location.host + window.location.pathname + "?m=" + e.sid + "&start=" + be.serialize(i),
t.tagManager.activeTag && (n.linkToLocation += "&tag=" + t.tagManager.activeTag.sid)
}
var n = {}
, r = new Le.GUI({
autoPlace: !0,
width: "60%"
});
i(),
t.on(xe.ViewChanged, i),
r.add(n, "linkToLocation").name(Re.LINK_TO_LOCATION).listen(),
r.domElement.id = "datLinks";
var o = [].slice.call(r.domElement.querySelectorAll(".property-name"));
return o.forEach(function(e) {
if (!K.detectSafari()) {
var t = document.createElement("button");
t.classList.add("btn-deep-link"),
t.innerText = Re.MENU_COPY,
e.nextSibling.appendChild(t);
var i = function() {
alert(Re.LINK_ALERT_COPY),
t.hide()
};
t.addEventListener("click", function(e) {
try {
var t = e.target.parentNode.childNodes[0];
t.select();
var n = document.execCommand("copy");
t.blur(),
n || i()
} catch (e) {
i()
}
})
}
}),
$(r.__closeButton).hide(),
r
}
function N(e) {
He.gui || (He.gui = D(He.model, He.player)),
He.visible = e,
e ? $(He.gui.domElement).show() : $(He.gui.domElement).hide()
}
function B() {
N(!He.visible)
}
function F(e) {
ke = {
gui: null,
visible: !1,
model: e
}
}
function V(e) {
var t = new Le.GUI;
return t.add(Q, "showSweeps").name("Show sweeps").onFinishChange(function() {
e.setSweepVisibility(Q.showSweeps)
}),
t.add(Q, "rotationAccelerationInside", .1, 10).name("Rotation speed").step(.1),
t.add(Q.transition, "flyTime", 0, 5e3).name("Transition time").onFinishChange(function() {
Q.transition.flySpeed = 0,
t.__controllers.forEach(function(e) {
e.updateDisplay()
})
}),
t.add(Q.path, "opacity", 0, 1).name("Path opacity"),
$(t.__closeButton).hide(),
t
}
function U(e) {
ke.gui || (ke.gui = V(ke.model)),
ke.visible = e,
e ? $(ke.gui.domElement).show() : $(ke.gui.domElement).hide()
}
function k() {
U(!ke.visible)
}
function H() {
function e(e) {
e.target === t || $.contains(t, e.target) || e.target === i || $.contains(i, e.target) || e.target === n || $.contains(n, e.target)/* || e.preventDefault()*/
}
$("body").css("touch-action", "none"),
$("#gui-parent").find("*:not(#tag-billboards)").on("touchmove", function(e) {
// e.preventDefault()
});
var t = document.getElementById("terms-text")
, i = document.getElementById("more-help-wrapper")
, n = (document.getElementById("navigation-help-wrapper"),
document.getElementById("help-dialog"),
document.getElementById("tag-billboards"));
Q.useWheel && (document.body.addEventListener("mousewheel", e, { passive: false }),
document.body.addEventListener("DOMMouseScroll", e)),
$("#terms-text, #more-help-wrapper, #navigation-help-wrapper").off("touchmove").on("touchmove", function(e) {
e.stopPropagation()
})
}
function G(e, t) {
for (var i = []; e; )
i.push(e),
e = e.parentNode;
for (; t && i.indexOf(t) === -1; )
t = t.parentNode;
return t
}
function z() {
var e, t = function(t) {
e = 0 === t.button || 1 === t.which ? t.target : null
}, i = function(t) {
e !== t.target && (e = G(e, t.target));
var i = document.getElementById("gui-parent");
if (G(i, e) !== i && (e = null),
e) {
var n;
try {
n = new MouseEvent("click",t)
} catch (e) {
n = document.createEvent("MouseEvents"),
n.initMouseEvent("click", t.bubbles, t.cancelable, t.view, t.detail, t.screenX, t.screenY, t.clientX, t.clientY, t.ctrlKey, t.altKey, t.shiftKey, t.metaKey, t.button, t.relatedTarget)
}
n.syntheticClick = !0,
e.dispatchEvent(n),
e = null
}
};
document.body.addEventListener("mousedown", t, !0),
document.body.addEventListener("mouseup", i, !0),
document.getElementById("gui-parent").addEventListener("click", function(e) {
e.syntheticClick || (e.stopPropagation(),
"A" === e.target.nodeName && e.preventDefault())
}, !0)
}
var W, j, Y, X, Z, q, K = (e("three"),
e("../util/ajax"),
e("../util/browser")), Q = e("../settings"), J = e("../analytics"), ee = (e("../util/transitions"),
e("../util/camera"),
e("../util/logger")), te = (e("../objects/Snapshot"),
e("./helpManager")), ie = e("./immersiveMode"), ne = e("./loadingScreen"), re = e("./landingScreen"), oe = e("./playButton"), ae = e("./populateModal"), se = e("./memoryUsage"), le = e("./closer/modalCloser"), ce = e("./closer/ModalCloserEvent"), he = e("./help/help"), ue = e("./help/HelpEvent"), de = e("./title/titleBar"), pe = e("./title/TitleEvents"), fe = e("./terms/terms"), ge = e("./terms/TermsEvent"), me = e("./title/tagToggle"), ve = e("./tourInteraction"), Ae = e("./vr/vrModal"), ye = e("./vr/vrEvent"), Ce = e("./sharing/modal"), Ie = e("./webvr/webVRgui"), Ee = e("./webvr/WebVrEvent"), be = e("../controls/serializer"), we = e("../enum/Keys"), _e = e("../enum/Viewmode"), Te = (e("../enum/BlackoutStyle"),
e("../tag/Media/MediaEvent")), xe = (e("../enum/PathDiscardMode"),
e("../enum/PathDisplayMode"),
e("../enum/DirectorEvents"),
e("../enum/PlayerEvents")), Se = e("../enum/ControlEvents"), Me = e("./sharing/ShareEvents"), Re = e("../localization/localize"), Pe = (e("../enum/Vectors"),
e("../enum/WarpStyle"),
e("../enum/AlignmentType"),
e("../enum/VROption")), Oe = e("./konami"), Le = e("../lib/dat.gui"), De = new ee(i), Ne = (e("../util/showcase"),
e("../enum/ZoomEvents")), Be = _e.DOLLHOUSE, Fe = 0, Ve = 0, Ue = [".hideTarget"], ke = null, He = null, Ge = !1, ze = !1, We = !1, je = {
coBrand: {
visible: !0,
elements: [".co-brand", "#loaderCoBrand"]
},
help: {
visible: !0,
elements: [".nav-help", "#nav-help"]
},
tourControls: {
visible: !0,
elements: [".next", ".previous", "#play"]
},
highlight: {
visible: !0,
elements: ["#drawer", "#pullTab"]
},
share: {
visible: !0,
elements: [".socialButton", "#share"]
},
fullScreen: {
visible: !0,
elements: ["#gui-fullscreen"]
},
floors: {
visible: !0,
elements: [".gui-floor"]
}
}, Ye = function() {
var e = document.getElementById("drawer");
return function() {
$("#player").height() < 400 && e.classList.contains("open") && a()
}
}(), Xe = function() {
var e = document.getElementById("meta-info");
return function() {
$("#player").height() < 400 && e.classList.contains("expand") && de.toggleMeta(!0)
}
}(), Ze = function(e) {
function t() {
u.classList.contains("expand") && de.toggleMeta(!0)
}
function i() {
fe.hide()
}
function n() {
he.close()
}
function r() {
Ae.dismiss()
}
function o() {
p.hasClass("open") && a(!0)
}
function l() {
Ce.hide()
}
function c() {
f.hasClass("open") && f.removeClass("open")
}
function h() {
d.classList.contains("fadeIn") && (d.classList.contains("landing") ? re.dismissModal() : d.classList.contains("tour") && ve.dismissModal())
}
var u = document.getElementById("meta-info")
, d = document.getElementById("interaction-modal")
, p = $("#drawer").eq(0)
, f = $(".gui-floor").eq(0)
, g = $(".vr-popup").eq(0);
return function(e) {
switch (e) {
case "info":
i(),
n(),
Ye(),
l(),
c(),
r(),
h();
break;
case "terms":
t(),
n(),
o(),
l(),
c(),
r(),
h();
break;
case "help":
t(),
i(),
l(),
c(),
r(),
h();
break;
case "vr":
t(),
i(),
l(),
c(),
n(),
h(),
s(g) && o();
break;
case "highlights":
Xe(),
i(),
l(),
c();
break;
case "share":
t(),
i(),
n(),
c(),
r(),
h();
break;
case "floor":
i(),
l(),
r();
break;
case "view":
c(),
l(),
i(),
r();
break;
case "tour":
i(),
l(),
c(),
r();
break;
case "move":
i(),
l(),
c(),
r();
break;
case "resize":
t(),
Ye(),
c();
break;
case "tag":
i(),
n(),
l(),
c(),
r()
}
}
}();
$(document).on("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange", function(e) {
$("#gui-fullscreen").toggle(!K.isFullscreen()),
$("#gui-fullscreen-exit").toggle(!!K.isFullscreen()),
setTimeout(function() {
$(".icon:visible").hide().show(0)
}, 100)
}),
$("#gui-fullscreen").on("click", function(e) {
l(e),
K.requestFullscreen($("body")[0]),
J.track("showcase_gui", {
gui_action: "click_enter_fullscreen",
interaction_source: "gui"
})
//czj
//W.reload()
}),
$("#gui-fullscreen-exit").on("click", function(e) {
l(e),
K.exitFullscreen(),
J.track("showcase_gui", {
gui_action: "click_exit_fullscreen",
interaction_source: "gui"
})
})
$(window).on("resize", function(e) {
var t = e.target.innerHeight
, i = e.target.innerWidth;
t === X && i === Z || (je.highlight.visible && w(),
Ze("resize"),
$(".pinTop.right").removeClass("hideUnderMeta"),
c(),
X = t,
Z = i)
}).resize(),
K.supportsFullscreen() || $("#gui-fullscreen").hide(),
$("#pullTab").on("click", function(e) {
l(e),
window.player.director.emit('isPulltttttt',!$("#drawer").hasClass("open"));
$("#drawer").hasClass("open") ? (J.trackAlways("showcase_gui", {
gui_action: "hide_highlight_reel"
}),
$(this).addClass("open").children("img").attr("src","static/images/auto.png")) : (J.trackAlways("showcase_gui", {
gui_action: "show_highlight_reel"
}),
$(this).removeClass("open").children("img").attr("src","static/images/auto-suspend.png"));
a()
});
/***********************方奕卓 热点列表事件监听 ************************/
if(window.DATA.showHotListSta) {
$('#hotList').css('display', '');
$('#hotList').on('click',function(e){
l(e);
var hotList = $('#hotListWrap')[0];
var isActive = hotList.classList.contains('hotListActive');
if(isActive){
hotList.classList.remove('hotListActive');
this.classList.remove('active')
}else{
hotList.classList.add('hotListActive');
this.classList.add('active')
}
}),
$('#hotListContent ul').on('mouseover', function(e){
l(e);
var target = e.target;
var hotList = document.getElementById('hotListWrap');
if(target.tagName === 'SPAN'){
var targetParent = target.parentElement.parentElement;
if(target.offsetWidth + 116 >= targetParent.clientWidth){
hotList.style.width = target.offsetWidth + 116 + 'px';
}else{
hotList.style.width = '';
}
}else if(target.tagName === 'LI'){
var targetParent = target.parentElement;
if(target.children[0].offsetWidth + 116 >= targetParent.clientWidth){
hotList.style.width = target.children[0].offsetWidth + 116 + 'px';
}else{
hotList.style.width = ''
}
}else {
hotList.style.width = '';
}
});
$('#hotListContent ul').on('click', function(e){
l(e);
this.preElem && this.preElem.classList.remove('active');
if(e.target.tagName === 'SPAN'){
e.target.parentElement.classList.add('active');
e.target.parentElement.hot && e.target.parentElement.hot.examine(window.player,true); // 打开热点
this.preElem = e.target.parentElement;
}else{
e.target.classList.add('active');
e.target.hot && e.target.hot.examine(window.player,true); // 打开热点
this.preElem = e.target;
}
})
$('#hotListClose').on('click', function(e){
l(e);
var hotList = $('#hotListWrap')[0];
hotList.classList.remove('hotListActive');
$('#hotListContent ul .active').removeClass('active');
$('#hotList')[0].classList.remove('active')
})
}
/*****************************************************************/
$("#more-menu-button").on("click", function(e) {
l(e);
var t = $("#more-menu");
t.toggleClass("open")
}),
t.exports.init = S,
t.exports.startLoading = x,
t.exports.endLoading = d,
t.exports.onProgress = u
}
).call(this, "/js/gui/gui.js")
}
, {
"../analytics": 4,
"../controls/serializer": 14,
"../enum/AlignmentType": 17,
"../enum/BlackoutStyle": 18,
"../enum/ControlEvents": 21,
"../enum/DirectorEvents": 23,
"../enum/Keys": 30,
"../enum/PathDiscardMode": 38,
"../enum/PathDisplayMode": 39,
"../enum/PlayerEvents": 40,
"../enum/VROption": 47,
"../enum/Vectors": 50,
"../enum/Viewmode": 51,
"../enum/WarpStyle": 52,
"../enum/ZoomEvents": 53,
"../lib/dat.gui": 93,
"../localization/localize": 108,
"../tag/Media/MediaEvent": 131,
"../objects/Snapshot": 153,
"../settings": 166,
"../util/ajax": 181,
"../util/browser": 182,
"../util/camera": 183,
"../util/logger": 189,
"../util/showcase": 193,
"../util/transitions": 195,
"./closer/ModalCloserEvent": 61,
"./closer/modalCloser": 62,
"./help/HelpEvent": 66,
"./help/help": 67,
"./helpManager": 68,
"./immersiveMode": 69,
"./konami": 70,
"./landingScreen": 71,
"./loadingScreen": 72,
"./memoryUsage": 73,
"./playButton": 74,
"./populateModal": 75,
"./sharing/ShareEvents": 76,
"./sharing/modal": 77,
"./terms/TermsEvent": 78,
"./terms/terms": 79,
"./title/TitleEvents": 80,
"./title/tagToggle": 81,
"./title/titleBar": 82,
"./tourInteraction": 84,
"./vr/vrEvent": 85,
"./vr/vrModal": 87,
"./webvr/WebVrEvent": 88,
"./webvr/webVRgui": 89,
three: 217
}],
66: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPENED: "help.opened",
CLOSED: "help.closed"
})
}
, {}],
67: [function(e, t, i) {
"use strict";
function n() {
g.on("click", function(e) {
if (S && S !== l.TRANSITIONING) {
var t = window.getComputedStyle(y).getPropertyValue("opacity") > 0;
t && !M ? R.close() : r()
}
}),
w.on("click", function(e) {
R.close()
}),
E.on("click", function(e) {
S && S !== l.TRANSITIONING && (s(),
o())
}),
b.on("click", function(e) {
s(),
a()
})
}
function r() {
S && S !== l.TRANSITIONING && (M = !0,
setTimeout(function() {
M = !1
}, d.help.modalStayDuration),
R.emit(h.OPENED),
m.addClass("open " + S),
g.addClass("open"),
s(),
o(),
y.style.removeProperty ? y.style.removeProperty("display") : y.style.removeAttribute("display"),
y.classList.add("fadeIn"))
}
function o() {
E.addClass("underline-tab"),
u.fill(_, c.NAVIGATION, S),
m.addClass(S)
}
function a() {
b.addClass("underline-tab"),
u.fill(T, c.MORE_HELP),
m.addClass("more-help")
}
function s(e, t) {
m.removeClass("more-help " + l.PANORAMA + " " + l.DOLLHOUSE + " " + l.FLOORPLAN + " " + l.OUTDOOR),
I.forEach(function(e) {
e.classList.remove("underline-tab")
})
}
var l = e("../../enum/Viewmode")
, c = e("../../enum/HelpModalType")
, h = e("./HelpEvent")
, u = (e("../helpManager"),
e("./../populateModal"))
, d = e("../../settings")
, p = e("../../util/common")
, f = e("events").EventEmitter
, g = $(".footer-help").eq(0)
, m = $("#help-dialog").eq(0)
, v = document.querySelector("#quick-logo")
, A = document.querySelector("#loaderCoBrand")
, y = document.querySelector("#help-dialog")
, C = document.querySelector(".footer")
, I = $(".help-tabs").children().toArray()
, E = $(".navigation-tab").eq(0)
, b = $(".more-help-tab").eq(0)
, w = ($("#interaction-modal").eq(0).find(".interaction").toArray(),
m.find(".close").eq(0))
, _ = m.find(".interactions").toArray()
, T = m.find(".ui-instructions").toArray()
, x = l.PANORAMA
, S = l.PANORAMA
, M = !1
, R = {
init: function(e, t) {
S = t,
x = t,
[y, A, v, C].forEach(function(e) {
e.classList.add(u.deviceType)
}),
n()
},
close: function() {
if (m.hasClass("open") && (this.emit(h.CLOSED),
g.removeClass("open"),
m.removeClass("open"),
y.classList.contains("fadeIn"))) {
y.classList.remove("fadeIn");
var e = S === l.TRANSITIONING ? x : S;
u.clear(_, c.NAVIGATION, e)
}
},
updateMode: function(e) {
x = S,
S = e
}
};
p.extendObject(R, f.prototype),
t.exports = R
}
, {
"../../enum/HelpModalType": 28,
"../../enum/Viewmode": 51,
"../../settings": 166,
"../../util/common": 185,
"../helpManager": 68,
"./../populateModal": 75,
"./HelpEvent": 66,
events: 202
}],
68: [function(e, t, i) {
(function(i) {
"use strict";
var n = e("../util/browser")
, r = e("./../util/logger")
, o = e("./../settings")
, a = new r(i)
, s = function() {
var e;
try {
return e = window.localStorage.getItem("visitCount") || "0",
e = (parseFloat(e) + 1).toString(),
window.localStorage.setItem("visitCount", e),
a.debug("visitCount = " + e),
e
} catch (t) {
e = "1",
a.debug("couldn't set local storage")
}
}()
, l = !1;
t.exports = {
isHelpDisabled: function() {
return "0" === n.valueFromHash("help", null) || l
},
isLargeHelpEnabled: function() {
return ("1" === s || "1" === n.valueFromHash("help", null)) && !this.isHelpDisabled()
},
isSmallHelpEnabled: function() {
return "2" === n.valueFromHash("help", null) && !this.isHelpDisabled()
},
isHelpEnabled: function() {
return this.isLargeHelpEnabled() || this.isSmallHelpEnabled()
},
setAutoPlay: function(e) {
l = o.warp.auto >= 0 && e > 1
}
}
}
).call(this, "/js/gui/helpManager.js")
}
, {
"../util/browser": 182,
"./../settings": 166,
"./../util/logger": 189
}],
69: [function(e, t, i) {
"use strict";
function n(e, t, i, n) {
F = n,
r(e, t, i, F),
o(),
N = t.mode
}
function r(e, t, i, n) {
[C.PANORAMA, C.DOLLHOUSE, C.FLOORPLAN].forEach(function(t) {
e.controls[t].on(v.Move, a),
e.controls[t].on(v.LongTap, c)
}),
M.on("mousewheel DOMMouseScroll", a),
i.on(m.TagActivated, a),
i.on(m.TagNavigation, a),
t.on(A.FlyingEnded, s),
t.on(A.ModeChanging, function(e, t) {
B = t !== C.PANORAMA && e !== C.PANORAMA
}),
t.on(A.ModeChanged, function(e, i) {
N = t.mode,
i !== C.TRANSITIONING ? l() : a("modeChange")
}),
n.on(y.TourStart, function() {
L = !0,
a()
}),
n.on(y.TourEnd, function() {
L = !1,
l()
}),
n.on(y.ActionInterrupted, function() {
L = !1
}),
R.addEventListener("touchend", function() {
$("#pullTab").hasClass("opened") && !L && l()
}, !0)
}
function o() {
p.isMobile() ? (b.forEach(function(e) {
e.classList.add("mobile")
}),
w.click(l)) : (b.forEach(function(e) {
e.addEventListener("mouseleave", function() {
!M.is(":hover") && b[0].classList.contains("detectHover") && l()
}, !0)
}),
M.mouseleave(function() {
b[0].classList.contains("detectHover") && l()
}))
}
function a(e) {
D || d(e) && _.hasClass("playing") || (clearTimeout(O),
P = !0,
g.close(),
h(e),
N !== C.DOLLHOUSE && N !== C.FLOORPLAN && (x.hasClass("expand") && !S.hasClass("closed") || 2 === p.valueFromHash("title", 1) ,
_.hasClass("playing") || (b.forEach(function(e) {
e.classList.add("detectHover")
}),
O = setTimeout(l, f.immersive.timeToShowAgain))))
}
function s() {
_.hasClass("playing") || (clearTimeout(O),
O = setTimeout(l, f.immersive.timeToShowAgain))
}
function l() {
clearTimeout(O),
P = !1,
I.forEach(function(e) {
e.classList.remove("drawerOpen")
}),
L || E.forEach(function(e) {
e.classList.remove("duringTour")
}),
b.forEach(function(e) {
e.classList.remove("detectHover")
})
}
function c() {
P ? l() : a(),
D = !0,
setTimeout(function() {
D = !1
}, f.immersive.uiStayDuration)
}
function h(e) {
!d(e) && L ? E.forEach(function(e) {
e.classList.remove("drawerOpen"),
e.classList.add("duringTour")
}) : _.hasClass("open") ? E.forEach(function(e) {
e.classList.remove("duringTour"),
e.classList.add("drawerOpen")
}) : B || N === C.FLOORPLAN || N === C.DOLLHOUSE || E.forEach(function(e) {
e.classList.add("fadeOut")
})
}
function u() {
T.hasClass("duringTour") || (L = !1,
a("gui"),
l())
}
function d(e) {
return "mouse" === e || "touch" === e || "key" === e || "gui" === e
}
var p = e("../util/browser")
, f = e("../settings")
, g = e("./help/help")
, m = e("../enum/tagEvents")
, v = e("../enum/ControlEvents")
, A = e("../enum/PlayerEvents")
, y = e("../enum/DirectorEvents")
, A = e("../enum/PlayerEvents")
, C = e("../enum/Viewmode")
, I = $(".pinTop.left, .pinBottom-container, #drawer-container, #drawer, .footer").toArray()
, E = $(".pinBottom-container, #drawer-container, .footer").toArray()
, b = $("#hover-bottom, #hover-top").toArray()
, w = ($("#pullTab").eq(0),
$("#playHead").eq(0),
$(".pinBottom-container").eq(0))
, _ = $("#drawer").eq(0)
, T = $("#drawer-container").eq(0)
, x = $("#meta-info").eq(0)
, S = $(".pinTop.left").eq(0)
, M = $("#player").eq(0)
, R = document.getElementById("pullTab")
, P = !1
, O = null
, L = !1
, D = !1
, N = null
, B = !1
, F = null;
t.exports.init = n,
t.exports.hideUi = a,
t.exports.resetDrawer = u
}
, {
"../enum/ControlEvents": 21,
"../enum/DirectorEvents": 23,
"../enum/tagEvents": 32,
"../enum/PlayerEvents": 40,
"../enum/Viewmode": 51,
"../settings": 166,
"../util/browser": 182,
"./help/help": 67
}],
70: [function(e, t, i) {
(function(i) {
"use strict";
function n(e, t, i) {
l.debug("konami has the modelInstance");
var n = [];
$(window).on("keydown", function(e) {
n.push(e.which),
n.length > o.secretPanelWord.length && n.shift(),
s.equalLists(n, o.secretPanelWord) && (l.debug("Developer mode active."),
o.debug = !0)
}),
$(window).on("keydown", function n(r) {
o.debug && 72 === r.which && (e && i ? (a.toggle(e, t, i),
$(window).off("keydown", n)) : console.warn("sorry we're not ready yet"))
})
}
var r = e("./../util/logger")
, o = e("./../settings")
, a = e("./debug")
, s = e("./../util/common")
, l = (e("./gui"),
new r(i));
o.console && $("body").append('
'),
t.exports.init = n
}
).call(this, "/js/gui/konami.js")
}
, {
"./../settings": 166,
"./../util/common": 185,
"./../util/logger": 189,
"./debug": 63,
"./gui": 65
}],
71: [function(e, t, i) {
"use strict";
function n(e, t) {
E = t.mode === p.PANORAMA && t.pano && !t.pano.isAligned() ? p.OUTDOOR : t.mode
}
function r(e) {
var t = $.Deferred();
e || t.resolve();
var i = c.startupFlyinDelay;
return e === p.PANORAMA && (i += c.dollhouse.transitionTime),
setTimeout(t.resolve.bind(t), i),
t
}
function o(e, t, i) {
var n = 0;
c.quickstart.enabled && (a(i),
n = c.quickstart.showTextDelay + c.quickstart.fadeOutDelay);
var r = function() {
e.once(g.Move, l),
t.once(f.TourStart, l)
};
s(n, r)
}
function a(e) {
return /* e && (y.addClass("quick-brand"), //quick-brand样式有问题 会遮住屏幕
v.before(y),
A = $(".quick-brand").toArray()),*/
m.addClass("fadeOut"),
setTimeout(function() {
A.forEach(function(e) {
e.classList.add("fadeIn")
})
}, c.quickstart.showTextDelay),
setTimeout(function() {
A.forEach(function(e) {
e.classList.add("fadeOut")
})
}, c.quickstart.fadeOutDelay),
!0
}
function s(e, t) {
setTimeout(function() {
// h.isHelpEnabled()
if (false) {
if (t(),
u.init(),
C.addClass("fadeIn landing " + u.deviceType),
h.isSmallHelpEnabled())
return void C.addClass("small");
u.fill(I, d.LANDING[E]),
C.addClass(E)
}
}, e)
//csz 用户引导界面
var helpData = {
"pc":["static/images/pc_step1.png","static/images/pc_step2.png","static/images/pc_step3.png"],
"mobile":["static/images/phone_step1.png","static/images/phone_step2.png","static/images/phone_step3.png"]
}
var navIcon = $(".nav-icon .icon");
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) navIcon.attr("src",helpData.mobile[0]);
function paging(id){
id.on("click",function(){
var navPage = null;
$(this).attr("data-id") == "plus" ? navPage = +navIcon.attr("data-page")+1 : navPage = +navIcon.attr("data-page")-1;
if(navPage > helpData.length || navPage < 1) return false
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
navIcon.attr({"data-page":navPage,"src":helpData.mobile[navPage - 1]});
}else{
navIcon.attr({"data-page":navPage,"src":helpData.pc[navPage - 1]});
}
})
};
paging($(".next-button"));
paging($(".prev-button"));
}
function l() {
u.clear(I, d.LANDING[E]),
C.removeClass("fadeIn")
}
var c = e("../settings")
, h = (e("./help/help"),
e("./helpManager"))
, u = e("./populateModal")
, d = e("../enum/HelpModalType")
, p = e("../enum/Viewmode")
, f = e("../enum/DirectorEvents")
, g = e("../enum/PlayerEvents")
, m = $("#quick-blackout").eq(0)
, v = $("#quick-logo").eq(0)
, A = $(".quick-brand").toArray()
, y = $("#loaderCoBrand").eq(0)
, C = $("#interaction-modal").eq(0)
, I = C.find(".interaction").toArray()
, E = ($("#model-title, .pinBottom-container, #drawer-container, #drawer, .footer").toArray(),
"");
t.exports.delayLanding = r,
t.exports.showMessage = o,
t.exports.init = n,
t.exports.dismissModal = l
}
, {
"../enum/DirectorEvents": 23,
"../enum/HelpModalType": 28,
"../enum/PlayerEvents": 40,
"../enum/Viewmode": 51,
"../settings": 166,
"./help/help": 67,
"./helpManager": 68,
"./populateModal": 75
}],
72: [function(e, t, i) {
"use strict";
var n = e("./circleLoader").circleLoader;
t.exports = {
element: $("#gui-loading"),
hide: function(e) {
n.done(),
this.element.fadeOut(1500, e)
},
show: function(e) {
this.element.fadeIn(500, function() {
this.element.css("display", "table"),
e && e()
}
.bind(this))
},
progress: function(e) {
n.set(e)
}
}
}
, {
"./circleLoader": 60
}],
73: [function(e, t, i) {
"use strict";
var n = e("../settings")
, r = $("#memory-info")
, o = r.find("#memory-gpu")
, a = !1;
t.exports = {
show: function() {
n.profiling.enabled && (r.show(),
a = !0)
},
hide: function() {
r.hide(),
a = !1
},
toggle: function() {
a ? this.hide() : this.show()
},
update: function(e) {
n.profiling.enabled && o.text(Math.floor(e / 1e6) + "MB")
}
}
}
, {
"../settings": 166
}],
74: [function(e, t, i) {
"use strict";
var n = e("../util/browser")
, r = e("../analytics");
e("../settings");
t.exports = {
show: function(e, t) {
$("#gui-message").fadeOut(500, function() {
t()
})
}
}
}
, {
"../analytics": 4,
"../settings": 166,
"../util/browser": 182
}],
75: [function(e, t, i) {
"use strict";
function n(e, t, i, n) {
function r(e) {
return e.classList.contains(a)
}
var o = i ? this.assets[t][i][this.deviceType] : this.assets[t][this.deviceType];
//for (var a in o) {
//var s = e.find(r);
//for (var l in o[a]) {
//var c = o[a][l];
//if ("top-info" === l || "bottom-info" === l) {
//var h = n ? c : "";
//czj 注释掉第一次打开的用户引导
//s.querySelector("." + l).textContent = h
//} else {
//var u = n ? c : "";
//, d = s.querySelector("." + l);
//d.src = u,
//n ? d.classList.remove("hidden") : d.classList.add("hidden")
//}
//}
//}
//var p = Array.prototype.slice.call(e[0].parentElement.querySelectorAll("hr"));
// p.forEach(function(e) {
// n ? e.classList.remove("hidden") : e.classList.add("hidden")
// })
}
var r = e("../util/browser")
, o = e("../localization/localize")
, a = e("../enum/HelpModalType")
, s = (e("../enum/HelpModalSize"),
e("../enum/Viewmode"));
t.exports = {
init: function() {
if (!this.hasInitialized) {
this.hasInitialized = !0,
this.deviceType = r.isMobile() ? "mobile" : "desktop",
this.assets = {},
this.assets[a.LANDING[s.PANORAMA]] = {
desktop: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_mouse_drag_left.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_mouse_click.png",
keyboard: "static/images/nav_help_keyboard_up_down.png"
},
right: {
"top-info": o.ZOOM,
"big-image": "static/images/nav_help_mouse_zoom.png",
keyboard: "static/images/nav_help_zoom_keys.png"
}
},
mobile: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_gesture_drag.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_gesture_tap.png"
},
right: {
"top-info": o.ZOOM,
"big-image": "static/images/nav_help_gesture_pinch.png"
}
}
},
this.assets[a.LANDING[s.OUTDOOR]] = JSON.parse(JSON.stringify(this.assets[a.LANDING[s.PANORAMA]])),
this.assets[a.LANDING[s.DOLLHOUSE]] = {
desktop: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_mouse_drag_left.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_mouse_position_right.png"
}
},
mobile: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_gesture_drag.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_gesture_position_two_finger.png"
}
}
},
this.assets[a.LANDING[s.FLOORPLAN]] = {
desktop: {
left: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_mouse_position_left.png"
},
middle: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_mouse_drag_right.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
}
},
mobile: {
left: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_gesture_position.png"
},
middle: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_gesture_drag_two_finger.png"
}
}
};
var e = {
"top-info": o.INSIDE,
"big-image": "static/images/nav_help_click_inside.png",
keyboard: "static/images/nav_help_inside_key.png"
};
this.assets[a.LANDING[s.OUTDOOR]].desktop.middle = e,
this.assets[a.LANDING[s.DOLLHOUSE]].desktop.right = e,
this.assets[a.LANDING[s.FLOORPLAN]].desktop.right = e;
var t = {
"top-info": o.INSIDE,
"big-image": "static/images/nav_help_tap_inside.png"
};
this.assets[a.LANDING[s.OUTDOOR]].mobile.middle = t,
this.assets[a.LANDING[s.DOLLHOUSE]].mobile.right = t,
this.assets[a.LANDING[s.FLOORPLAN]].mobile.right = t,
this.assets[a.NAVIGATION] = {},
this.assets[a.NAVIGATION][s.PANORAMA] = {
desktop: {
left: {
"top-info": o.HELP_DESKTOP_PANORAMA_1A,
"bottom-info": o.HELP_DESKTOP_PANORAMA_1B,
"big-image": "static/images/nav_help_mouse_drag_left.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
},
middle: {
"top-info": o.HELP_DESKTOP_PANORAMA_2A,
"bottom-info": o.HELP_DESKTOP_PANORAMA_2B,
"big-image": "static/images/nav_help_mouse_click.png",
keyboard: "static/images/nav_help_keyboard_up_down.png"
},
right: {
"top-info": o.HELP_DESKTOP_PANORAMA_3A,
"bottom-info": o.HELP_DESKTOP_PANORAMA_3B,
"big-image": "static/images/nav_help_mouse_zoom.png",
keyboard: "static/images/nav_help_zoom_keys.png"
}
},
mobile: {
left: {
"top-info": o.HELP_MOBILE_PANORAMA_1,
"big-image": "static/images/nav_help_gesture_drag.png"
},
middle: {
"top-info": o.HELP_MOBILE_PANORAMA_2,
"big-image": "static/images/nav_help_gesture_tap.png"
},
right: {
"top-info": o.HELP_MOBILE_3,
"big-image": "static/images/nav_help_gesture_pinch.png"
}
}
},
this.assets[a.NAVIGATION][s.DOLLHOUSE] = {
desktop: {
left: {
"top-info": o.HELP_DESKTOP_DOLLHOUSE_1A,
"bottom-info": o.HELP_DESKTOP_DOLLHOUSE_1B,
"big-image": "static/images/nav_help_mouse_drag_left.png",
keyboard: "static/images/nav_help_keyboard_all.png"
},
middle: {
"top-info": o.HELP_DESKTOP_DOLLHOUSE_2A,
"big-image": "static/images/nav_help_mouse_position_right.png"
},
right: {
"top-info": o.HELP_DESKTOP_DOLLHOUSE_3A,
"big-image": "static/images/nav_help_mouse_zoom.png"
}
},
mobile: {
left: {
"top-info": o.HELP_MOBILE_DOLLHOUSE_1,
"big-image": "static/images/nav_help_gesture_drag.png"
},
middle: {
"top-info": o.HELP_MOBILE_DOLLHOUSE_2,
"big-image": "static/images/nav_help_gesture_position_two_finger.png"
},
right: {
"top-info": o.HELP_MOBILE_3,
"big-image": "static/images/nav_help_gesture_pinch.png"
}
}
},
this.assets[a.NAVIGATION][s.FLOORPLAN] = {
desktop: {
left: {
"top-info": o.HELP_DESKTOP_FLOORPLAN_1A,
"big-image": "static/images/nav_help_mouse_position_left.png"
},
middle: {
"top-info": o.HELP_DESKTOP_FLOORPLAN_2A,
"bottom-info": o.HELP_DESKTOP_FLOORPLAN_2B,
"big-image": "static/images/nav_help_mouse_drag_right.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
},
right: {
"top-info": o.HELP_DESKTOP_FLOORPLAN_3A,
"bottom-info": o.HELP_DESKTOP_FLOORPLAN_3B,
"big-image": "static/images/nav_help_mouse_zoom.png",
keyboard: "static/images/nav_help_keyboard_up_down.png"
}
},
mobile: {
left: {
"top-info": o.HELP_MOBILE_FLOORPLAN_1,
"big-image": "static/images/nav_help_gesture_position.png"
},
middle: {
"top-info": o.HELP_MOBILE_FLOORPLAN_2,
"big-image": "static/images/nav_help_gesture_drag_two_finger.png"
},
right: {
"top-info": o.HELP_MOBILE_3,
"big-image": "static/images/nav_help_gesture_pinch.png"
}
}
},
this.assets[a.NAVIGATION][s.OUTDOOR] = JSON.parse(JSON.stringify(this.assets[a.NAVIGATION][s.PANORAMA])),
this.assets[a.NAVIGATION][s.OUTDOOR].desktop.middle = {
"top-info": o.HELP_DESKTOP_360_2A,
"bottom-info": o.HELP_DESKTOP_360_2B,
"big-image": "static/images/nav_help_click_inside.png",
keyboard: "static/images/nav_help_inside_key.png"
},
this.assets[a.NAVIGATION][s.OUTDOOR].mobile.middle = {
"top-info": o.HELP_MOBILE_360_2,
"big-image": "static/images/nav_help_tap_inside.png"
},
this.assets[a.MORE_HELP] = {
desktop: {
"more-help-hlr": {
"top-info": o.HELP_MORE_HLR_A,
"big-image": "static/images/nav_help_expand.svg",
"bottom-info": o.HELP_DESKTOP_MORE_HLR_B
},
"more-help-dollhouse": {
"top-info": o.HELP_MORE_DOLLHOUSE_A,
"big-image": "static/images/nav_help_dollhouse.svg",
"bottom-info": o.HELP_DESKTOP_MORE_DOLLHOUSE_B
},
"more-help-floors": {
"top-info": o.HELP_MORE_FLOORS_A,
"big-image": "static/images/nav_help_floor picker.svg",
"bottom-info": o.HELP_DESKTOP_MORE_FLOORS_B
},
"more-help-tag": {
"top-info": o.HELP_MORE_TAG_A,
"big-image": "static/images/nav_help_tag.svg",
"bottom-info": o.HELP_DESKTOP_MORE_TAG_B
},
"more-help-zoom": {
"top-info": o.HELP_MORE_ZOOM_A,
"big-image": "static/images/nav_help_zoom.svg",
"bottom-info": o.HELP_DESKTOP_MORE_ZOOM_B
},
"more-help-tour": {
"top-info": o.HELP_MORE_TOUR_A,
"big-image": "static/images/nav_help_play.png",
"bottom-info": o.HELP_DESKTOP_MORE_TOUR_B
},
"more-help-inside": {
"top-info": o.HELP_MORE_INSIDE_A,
"big-image": "static/images/nav_help_inside.svg",
"bottom-info": o.HELP_DESKTOP_MORE_INSIDE_B
},
"more-help-vr": {
"top-info": o.HELP_MORE_VR_A,
"big-image": "static/images/nav_help_vr.svg",
"bottom-info": o.HELP_DESKTOP_MORE_VR_B
},
"more-help-360": {
"top-info": o.HELP_MORE_360_A,
"big-image": "static/images/nav_help_360.svg",
"bottom-info": o.HELP_DESKTOP_MORE_360_B
},
"more-help-fullscreen": {
"top-info": o.HELP_MORE_FULLSCREEN_A,
"big-image": "static/images/nav_help_fullscreen.svg",
"bottom-info": o.HELP_DESKTOP_MORE_FULLSCREEN_B
}
},
mobile: {
"more-help-hlr": {
"top-info": o.HELP_MORE_HLR_A,
"big-image": "static/images/nav_help_expand.svg",
"bottom-info": o.HELP_DESKTOP_MORE_HLR_B
},
"more-help-dollhouse": {
"top-info": o.HELP_MORE_DOLLHOUSE_A,
"big-image": "static/images/nav_help_dollhouse.svg",
"bottom-info": o.HELP_MOBILE_MORE_DOLLHOUSE_B
},
"more-help-floors": {
"top-info": o.HELP_MORE_FLOORS_A,
"big-image": "static/images/nav_help_floor picker.svg",
"bottom-info": o.HELP_DESKTOP_MORE_FLOORS_B
},
"more-help-tag": {
"top-info": o.HELP_MORE_TAG_A,
"big-image": "static/images/nav_help_tag.svg",
"bottom-info": o.HELP_MOBILE_MORE_TAG_B
},
"more-help-tour": {
"top-info": o.HELP_MORE_TOUR_A,
"big-image": "static/images/nav_help_play.png",
"bottom-info": o.HELP_DESKTOP_MORE_TOUR_B
},
"more-help-inside": {
"top-info": o.HELP_MORE_INSIDE_A,
"big-image": "static/images/nav_help_inside.svg",
"bottom-info": o.HELP_MOBILE_MORE_INSIDE_B
},
"more-help-vr": {
"top-info": o.HELP_MORE_VR_A,
"big-image": "static/images/webvr.svg",
"bottom-info": o.HELP_MOBILE_MORE_VR_B
},
"more-help-360": {
"top-info": o.HELP_MORE_360_A,
"big-image": "static/images/nav_help_360.svg",
"bottom-info": o.HELP_MOBILE_MORE_360_B
}
}
},
this.assets[a.TOUR_INTERACTION[s.PANORAMA]] = {
desktop: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_mouse_drag_left.png",
keyboard: "static/images/nav_help_keyboard_left_right.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_mouse_click.png",
keyboard: "static/images/nav_help_keyboard_up_down.png"
},
right: {
"top-info": o.PLAY,
"big-image": "static/images/Desktop-help-play-button.svg",
keyboard: "static/images/Desktop-help-spacebar-2.svg"
}
},
mobile: {
left: {
"top-info": o.ROTATE,
"big-image": "static/images/nav_help_gesture_drag.png"
},
middle: {
"top-info": o.MOVE,
"big-image": "static/images/nav_help_gesture_tap.png"
},
right: {
"top-info": o.PLAY,
"big-image": "static/images/mobile-help-play-button.svg"
}
}
},
this.assets[a.TOUR_INTERACTION[s.OUTDOOR]] = JSON.parse(JSON.stringify(this.assets[a.TOUR_INTERACTION[s.PANORAMA]])),
this.assets[a.TOUR_INTERACTION[s.OUTDOOR]].desktop.middle = this.assets[a.LANDING[s.OUTDOOR]].desktop.middle,
this.assets[a.TOUR_INTERACTION[s.OUTDOOR]].mobile.middle = this.assets[a.LANDING[s.OUTDOOR]].mobile.middle,
this.assets[a.TOUR_INTERACTION[s.FLOORPLAN]] = JSON.parse(JSON.stringify(this.assets[a.TOUR_INTERACTION[s.OUTDOOR]])),
this.assets[a.TOUR_INTERACTION[s.FLOORPLAN]].desktop.left = this.assets[a.LANDING[s.FLOORPLAN]].desktop.left,
this.assets[a.TOUR_INTERACTION[s.FLOORPLAN]].mobile.left = this.assets[a.LANDING[s.FLOORPLAN]].mobile.left
}
},
fill: function(e, t, i) {
n.call(this, e, t, i, !0)
},
clear: function(e, t, i) {
n.call(this, e, t, i, !1)
}
}
}
, {
"../enum/HelpModalSize": 27,
"../enum/HelpModalType": 28,
"../enum/Viewmode": 51,
"../localization/localize": 108,
"../util/browser": 182
}],
76: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPENED: "share.open",
CLOSED: "share.closed",
LINK_CLICKED: "share.linked"
})
}
, {}],
77: [function(e, t, i) {
"use strict";
function n(e) {
function t(t, i) {
var n = window.screenY + ($("#player").height() - i) / 2
, r = window.screenX + ($("#player").width() - t) / 2
, o = "top=" + n + ",left=" + r + ",width=" + t + ",height=" + i;
I.emit(l.LINK_CLICKED, {
channel: e
}),
window.open(C[e], "shareWindow", o)
}
switch (e) {
case y.FACEBOOK:
t(580, 420);
break;
case y.TWITTER:
t(550, 440);
break;
case y.MAIL:
I.emit(l.LINK_CLICKED, {
channel: "email"
}),
window.open(C[e], "_blank");
break;
case y.LINKEDIN:
}
}
function r(e) {
I.emit(l.LINK_CLICKED, {
channel: "copylink"
});
var t = document.createRange();
t.selectNodeContents(v);
var i = window.getSelection();
i.removeAllRanges(),
i.addRange(t),
document.execCommand("copy"),
A.classList.remove("hidden"),
v.classList.add("highlighted")
}
function o(e) {
e && (e.stopPropagation(),
e.target === v) || (window.getSelection().removeAllRanges(),
v.classList.remove("highlighted"),
A.classList.add("hidden"))
}
var a = e("../../util/browser")
, s = e("../../localization/localize")
, l = e("./ShareEvents")
, c = e("../../util/common")
, h = e("events").EventEmitter
, u = document.getElementById("sharing")
, d = document.getElementById("share-modal")
, p = document.getElementById("share-close")
, f = document.getElementById("facebook-share")
, g = document.getElementById("twitter-share")
, m = document.getElementById("mail-share")
, v = document.getElementById("share-url-text")
, A = document.getElementById("copy-success")
, y = Object.freeze({
FACEBOOK: "facebook",
TWITTER: "twitter",
MAIL: "mail",
LINKEDIN: "linkedin"
})
, C = {};
C[y.FACEBOOK] = "http://www.facebook.com/sharer.php?u=" + encodeURIComponent(window.location.href + "&utm_source=1") + "&t=",
C[y.TWITTER] = "http://twitter.com/intent/tweet?text=",
C[y.MAIL] = "mailto:?subject=";
var I = {
init: function(e) {
var t = encodeURIComponent(s.SHARE_EXPLORE + e + " " + s.SHARE_AT + " ");
C[y.FACEBOOK] += t + encodeURIComponent(window.location.href + "&utm_source=1"),
C[y.TWITTER] += t + encodeURIComponent(window.location.href + "&utm_source=2 " + s.SHARE_WITH + " #port"),
C[y.MAIL] += encodeURIComponent(s.SHARE_EXPLORE + e + s.SHARE_3D) + "&body=" + t + encodeURIComponent(window.location.href + "&utm_source=3"),
u.addEventListener("click", this.toggle.bind(this)),
p.addEventListener("click", this.hide.bind(this)),
v.addEventListener("click", r),
d.addEventListener("click", o),
f.addEventListener("click", n.bind(this, y.FACEBOOK)),
g.addEventListener("click", n.bind(this, y.TWITTER)),
m.addEventListener("click", n.bind(this, y.MAIL)),
v.textContent = window.location.href + "&utm_source=4",
d.classList.add(a.isMobile() ? "mobile" : "desktop"),
u.classList.remove("hidden")
},
show: function() {
this.emit(l.OPENED),
d.classList.add("fadeIn")
},
hide: function() {
d.classList.contains("fadeIn") && (this.emit(l.CLOSED),
document.selection && document.selection.empty(),
window.getSelection().removeAllRanges(),
o(),
d.classList.remove("fadeIn"))
},
toggle: function() {
d.classList.contains("fadeIn") ? this.hide() : this.show()
}
};
c.extendObject(I, h.prototype),
t.exports = I
}
, {
"../../localization/localize": 108,
"../../util/browser": 182,
"../../util/common": 185,
"./ShareEvents": 76,
events: 202
}],
78: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPENED: "terms.opened",
CLOSED: "terms.closed"
})
}
, {}],
79: [function(e, t, i) {
"use strict";
var n = e("./TermsEvent")
, r = e("../../localization/localize")
, o = e("../../analytics")
, a = e("../../util/ajax")
, s = e("../../util/common")
, l = e("events").EventEmitter
, c = document.getElementById("terms-modal")
, h = {
init: function() {
$(".footer-terms").on("click", function(e) {
e.preventDefault(),
this.show()
}
.bind(this)),
$("#terms-modal .close").on("click", this.hide.bind(this))
},
show: function() {
this.emit(n.OPENED),
a.get("static/" + r.TERMS_TEXT_FILE).done(function(e) {
var t = $("#terms-text").html(e);
o.track("showcase_gui", {
gui_action: "click_terms_button",
interaction_source: "gui"
}),
t.find("a").attr("target", "_blank")
}).fail(function() {
$("#terms-text").html("" + r.TERMS_OF_USE + " " + r.TERMS_FAIL)
}),
c.classList.add("fadeIn")
},
hide: function(e) {
e && e.preventDefault(),
c.classList.contains("fadeIn") && this.emit(n.CLOSED),
c.classList.remove("fadeIn")
}
};
s.extendObject(h, l.prototype),
t.exports = h
}
, {
"../../analytics": 4,
"../../localization/localize": 108,
"../../util/ajax": 181,
"../../util/common": 185,
"./TermsEvent": 78,
events: 202
}],
80: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPEN_INFO: "title.open.info",
CLOSE_INFO: "title.close.info",
SHOW_INFO: "title.show.info",
HIDE_INFO: "title.hide.info",
LINK_CLICKED: "title.link.click",
CONTACT_LINK_CLICKED: "title.contact.click",
ORIGIN_LINK_CLICKED: "title.origin.click"
})
}
, {}],
81: [function(e, t, i) {
"use strict";
function n(e, t) {
o.tags.enabled && 0 !== Object.keys(e.tags).length && r(e, t)
}
function r(e, t) {
function i(i) {
e.shouldShowtags = "show" === this.value,
e.shouldShowtags ? t.showAlltags(o.tags.startup.fadeInDuration) : t.hideAlltags(o.tags.startup.fadeInDuration)
}
document.getElementById("tag-toggles").classList.remove("hidden"),
document.getElementById("radio-tag-show").checked = !0;
for (var n = document.getElementById("tag-inputs").querySelectorAll("input"), r = 0; r < n.length; r++)
n[r].addEventListener("change", i)
}
var o = e("../../settings");
t.exports.init = n
}
, {
"../../settings": 166
}],
82: [function(e, t, i) {
(function(i) {
"use strict";
function n(e, t) {
return e && u.valueFromHash("title", 1) && 2 !== u.valueFromHash("mls", 0) ? (document.getElementsByClassName("titleText")[0].innerText = e, g_weixinObj.title = e,
e.length > g.minTooltipCharacters && I.parentElement.setAttribute("data-original-title", e),
t && 1 !== m.specialEdition && m.brand && !m.mls ? document.getElementById("cobrandTitle").innerText = t : (document.getElementsByClassName("co-brand")[0].classList.add("hidden"),
document.getElementById("gui-name").classList.add("noCoBrand"),
document.getElementById("cobrandTitle").classList.add("hidden")),
!0) : (document.getElementById("model-title").classList.add("hidden"),
!1)
}
function r(e) {
return e ? (L = !0,
void (_.innerHTML = e)) : void _.classList.add("hidden")
}
function o(e, t, i, n) {
if (!e && !t && !i || !m.brand || u.valueFromHash("mls", !1))
return void T.classList.add("hidden");
L = !0;
var r = []
, o = c(r, " ");
if (e && o('' + e + " "),
t) {
var a = n || t
, s = u.isMobile() ? '' + a + " " : "" + a + " ";
o(s)
}
i && o('' + i + " "),
r[0] = "",
x.innerHTML = r.join("")
}
function a(e) {
if ("string" == typeof e)
try {
e = JSON.parse(e)
} catch (e) {
return y.warn("Unable to parse address data"),
void S.parentElement.classList.add("hidden")
}
if (!(e && (e.address_1 || e.address_2 || e.city || e.state || e.zip)))
return void S.parentElement.classList.add("hidden");
L = !0;
var t = []
, i = c(t, " ");
e.address_1 && i(e.address_1),
e.address_2 && i(e.address_2),
e.city && i(e.city, ", "),
e.state && i(e.state, ", "),
e.zip && i(e.zip, e.state ? " " : ", "),
t[0] = "",
S.innerText = t.join("")
}
function s(e) {
var t = document.createElement("a");
return t.id = "url",
t.target = "_blank",
t.href = e,
t.innerText = e,
t.addEventListener("click", N.emit.bind(N, v.ORIGIN_LINK_CLICKED)),
t
}
function l(e) {
return !(!e || u.inIframe() && document.referrer === e) && (R.classList.remove("hidden"),
P.innerHTML = f.WEBVR_LEARN_MORE + ": ",
P.appendChild(s(e)),
O.forEach(function(e) {
e.classList.add("share-link")
}),
!0)
}
function c(e, t) {
var i = e
, n = t;
return function(e, t) {
i.push(t || n, e)
}
}
function h() {
document.getElementById("title-toggle").addEventListener("click", N.toggleTitle.bind(N)),
L && I.addEventListener("click", N.toggleMeta.bind(N, !1));
var e = [].slice.call(_.querySelectorAll("a"));
e.forEach(function(e) {
e.addEventListener("click", N.emit.bind(N, v.LINK_CLICKED))
});
var t = [].slice.call(T.querySelectorAll("a"));
t.forEach(function(e) {
e.addEventListener("click", N.emit.bind(N, v.CONTACT_LINK_CLICKED, {
contact_type: e.getAttribute("id")
}))
})
}
var u = e("../../util/browser")
, d = e("../../util/common")
, p = e("../../util/logger")
, f = e("../../localization/localize")
, g = e("./titleBarSettings")
, m = e("../../settings")
, v = e("./TitleEvents")
, A = e("events").EventEmitter
, y = new p(i)
, C = document.querySelector(".pinTop.left")
, I = document.getElementsByClassName("title-container")[0]
, E = document.getElementById("title-toggle").querySelector("i")
, b = document.getElementById("meta-info-wrapper")
, w = document.getElementById("meta-info")
, _ = document.getElementById("meta-description")
, T = document.getElementsByClassName("contact-info")[0]
, x = document.getElementById("contact-data")
, S = document.getElementById("addressTxt")
, M = document.getElementById("tag-toggles")
, R = document.getElementById("share-origin")
, P = document.getElementById("share-link-wrapper")
, O = [w, b, I]
, L = !1
, D = !1
, N = {
populate: function(e) {
if (n(window.DATA.name, e.coBrand)) {
if (r(e.description),
o(e.contactName, e.phone, e.email, e.formatted_contact_phone),
a(e.address),
L) {
var t = document.createElement("br");
M.insertBefore(t, M.firstElementChild)
}
e.socialSharing && m.share.enabled && (D = l(e.url))
}
},
finishSetup: function(e) {
L = L || !!e,
h(),
L || (D ? I.classList.add("share-only") : I.classList.add("no-meta"))
},
toggleMeta: function(e, t) {
var title = document.getElementById("model-title");
t && t.preventDefault();
var i = w.classList.contains("expand");
e && !i || (i ? (O.forEach(function(e) {
e.classList.remove("expand")
}),
this.emit(v.CLOSE_INFO),title.classList.remove("expand")) : (O.forEach(function(e) {
e.classList.add("expand");
}),
title.classList.add("expand"),
this.emit(v.OPEN_INFO)))
},
setupToggling: function() {
b.style.height = w.offsetHeight + "px",
w.addEventListener("transitionend", function() {
b.style.height = w.offsetHeight + "px"
})
},
toggleTitle: function(e) {
e && e.preventDefault(),
C.classList.contains("closed") ? (C.classList.add("open"),
E.classList.remove("icon-dpad-right"),
E.classList.add("icon-dpad-left"),
this.emit(v.SHOW_INFO),
setTimeout(function() {
C.classList.remove("closed"),
C.classList.remove("open")
}, g.removeAnimationClasses)) : (C.classList.add("closed"),
E.classList.remove("icon-dpad-left"),
E.classList.add("icon-dpad-right"),
this.emit(v.HIDE_INFO))
}
};
d.extendObject(N, A.prototype),
t.exports = N
}
).call(this, "/js/gui/title/titleBar.js")
}
, {
"../../localization/localize": 108,
"../../settings": 166,
"../../util/browser": 182,
"../../util/common": 185,
"../../util/logger": 189,
"./TitleEvents": 80,
"./titleBarSettings": 83,
events: 202
}],
83: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
minTooltipCharacters: 19,
removeAnimationClasses: 500
})
}
, {}],
84: [function(e, t, i) {
"use strict";
function n(e) {
C = e,
P.forEach(function(e) {
b.addEventListener(e, u.bind(this, !1), !0),
w.addEventListener(e, u.bind(this, !0), !0),
E.addEventListener(e, o, !0)
S.forEach(function(t) {//会触发导览停止
t.addEventListener(e, a, !0)
})
$("#drawer img").on(e, a)
})
document.addEventListener("keydown", u.bind(this, !1), !0)
C.on(v.TourStart, function() {
E.classList.add("playing")
})
}
function r() {
C.playTour(),
I && clearTimeout(I),
d(),
_.removeClass("fadeIn")
}
function o() {
E.classList.contains("playing") && (C.stopTour(),
_.addClass("fadeIn"),
setTimeout(function() {
_.removeClass("fadeIn")
}, p.tourInteraction.showPauseButton),
O || (clearTimeout(I),
I = setTimeout(h, p.tourInteraction.showModal)),
setTimeout(function() {
E.classList.remove("playing")
}, p.tourInteraction.allowNextClick))
}
function a() {
C.tourInProgress && (C.stopTour(),
C.endTourProgress(),
E.classList.remove("playing"))
}
function s() {
T.is(":visible") ? r() : o()
}
function l() {
x.hasClass("playing") && (clearTimeout(I),
C.atEndOfTour() ? c() : _.removeClass("fadeIn"))
}
function c() {
E.classList.remove("playing"),
h()
}
function h() {//去掉导览结束时的提示
/* if (!p.tourInteraction.disabled) {
M.removeClass("small landing " + g.FLOORPLAN + " " + g.OUTDOOR + " " + g.PANORAMA),
M.addClass("fadeIn tour " + m.deviceType);
var e = p.tourInteraction.smallModal ? y.SMALL : y.LARGE;
if (!p.tourInteraction.smallModal) {
var t;
t = C.player.mode === g.PANORAMA && !C.player.currentPano.isAligned() || C.player.mode === g.DOLLHOUSE ? g.OUTDOOR : C.player.mode === g.FLOORPLAN ? g.FLOORPLAN : g.PANORAMA,
m.fill(R, A.TOUR_INTERACTION[t]),
M.addClass(t)
}
M.addClass(e)
} */
}
function u(e, t) {
if (t) {
// var i = "keydown" === t.type
// , n = t.which === f.SPACE || C.tourIsPlaying;
// i && n || e || (O = !0),
// C.atEndOfTour() && d(),
// !C.tourIsPlaying && C.tourInProgress && (_.removeClass("fadeIn"),
// d(),
// t.which !== f.SPACE && a()),
// i && n && s()
}
}
function d() {
M.removeClass("fadeIn")
}
var p = (e("../util/browser"),
e("../settings"))
, f = e("../enum/Keys")
, g = e("../enum/Viewmode")
, m = (e("./helpManager"),
e("./populateModal"))
, v = e("../enum/DirectorEvents")
, A = e("../enum/HelpModalType")
, y = e("../enum/HelpModalSize")
, C = null
, I = null
, E = document.getElementById("pause-overlay")
, b = document.getElementById("player")
, w = document.getElementById("gui")
, _ = $("#pause-icon").eq(0)
, T = $("#play").eq(0)
, x = $("#playHead").eq(0)
, S = $(".rightViewContainer, #previous, #next, #gui-modes-inside, #gui-modes-outside, #gui-modes-dollhouse, #gui-modes-floorplan").toArray()
, M = $("#interaction-modal").eq(0)
, R = $("#interaction-modal .interaction").toArray()
, P = ["touchstart", "mousedown", "pointerdown"]
, O = !1;
t.exports.init = n,
t.exports.play = r,
t.exports.pause = o,
t.exports.pauseWithoutCTA = a,
t.exports.togglePlay = s,
t.exports.stopTour = l,
t.exports.dismissModal = d
}
, {
"../enum/DirectorEvents": 23,
"../enum/HelpModalSize": 27,
"../enum/HelpModalType": 28,
"../enum/Keys": 30,
"../enum/Viewmode": 51,
"../settings": 166,
"../util/browser": 182,
"./helpManager": 68,
"./populateModal": 75
}],
85: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPENED: "vr.modal.opened",
LAUNCH: "vr.modal.launch",
CLOSED: "vr.modal.closed",
NEXT: "vr.modal.next",
PREV: "vr.modal.prev",
STORE: "vr.modal.store",
falseICECHOSEN: "vr.modal.device"
})
}
, {}],
86: [function(e, t, i) {
"use strict";
function n(e, t, i) {
function n(e, t, n, r) {
function o() {
return p + "&m=" + t + "&display=" + e
}
function s() {
var e = "&utm_medium=" + (a.inIframe() ? "embed" : "direct")
, t = "&utm_source=" + u
, n = "&utm_showcase_session_id=" + i;
return e + t + n
}
function l() {
return d + "&sids=" + t + "&lsid=" + t + "&ln=" + encodeURIComponent(n) + "&ld=" + encodeURIComponent(r) + "&display=" + e
}
return a.valueFromHash("vrcoll", !1) ? l() + s() : o() + s()
}
function r(e, t, i, r) {
var o = "https://api.branch.io/v1/url"
, a = n(e, t, i, r)
, s = {
responseType: "json",
data: {
branch_key: h.appConfig.branch_key,
data: {
m: t,
full_url: a,
$desktop_url: m,
$og_app_id: "331853976762864119",
$og_title: i,
$og_description: r,
$og_image_url: location.origin + "/api/v1/player/models/" + t + "/thumb",
$canonical_url: window.location.href
}
}
};
c.post(o, s).done(function(t) {
f[e] = t.url
}).fail(function(t) {
f[e] = t
}
.bind(this, a))
}
function o(e, t, i) {
for (var r in s) {
var o = s[r]
, a = n(o, e, t, i);
f[o] = a
}
}
var u = a.inIframe() ? encodeURIComponent(document.referrer) : encodeURIComponent(window.location.href)
, d = g + "/vr/dlist/?ret=" + u
, p = g + "/vr/show/?ret=" + u
, m = "";
switch (e) {
case l.IOS:
r(s.CardboardIOS, t.sid, t.name, t.summary);
break;
default:
o(t.sid, t.name, t.summary)
}
}
function r(e) {
var t = f[e];
window.open(t, "_blank")
}
function o(e) {
var t = u[e];
window.open(t, "_blank")
}
var a = e("../../util/browser")
, s = e("../../enum/VRApps")
, l = e("../../enum/VRPlatforms")
, c = e("../../util/ajax")
, h = e("../../settings")
, u = {};
u[s.CardboardAndroid] = "https://play.google.com/store/apps/details?id=com.port.mpvrcardboard&redirect_uri=",
u[s.CardboardIOS] = "https://itunes.apple.com/us/app/port-vr/id1168808473&redirect_uri=",
u[s.GearVR] = "https://www.oculus.com/experiences/gear-vr/811670972252145/?redirect_uri=";
for (var d in s) {
var p = s[d];
u[p] += encodeURIComponent(document.referrer + "&display=" + p)
}
var f = {}
, g = function() {
var e = window.location.host;
return e.indexOf(".port.com") === -1 && e.indexOf("localhost") === -1 && (e = "my.port.com"),
"https://" + e
}();
t.exports.init = n,
t.exports.launch = r,
t.exports.launchStore = o
}
, {
"../../enum/VRApps": 46,
"../../enum/VRPlatforms": 49,
"../../settings": 166,
"../../util/ajax": 181,
"../../util/browser": 182
}],
87: [function(e, t, i) {
"use strict";
function n(e) {
var t;
switch (e) {
case m.IOS:
return t = p.iosVersion(),
t.major > 9 || 9 === t.major && t.minor >= 1;
case m.Android:
return t = p.androidVersion(),
t.major > 4 || 4 === t.major && t.minor > 4 || 4 === t.major && 4 === t.minor && t.patch >= 4
}
return !1
}
function r(e, t) {
function i(e) {
K.emit(A.STORE, {
type: e
}),
f.launchStore(e)
}
function r(e) {
switch (e !== _.pageCount && (a(e),
N.text(e + 1 + " / " + _.pageCount)),
e) {
case _.Title:
O.css("display", "none"),
L.text(u[e]),
o(s);
break;
case _.Cardboard:
O.css("display", "block"),
L.text(u[e]),
M.filter(".cardboard").off(),
M.filter(".gearvr").off(),
c(e, s),
h(H, X, Z);
break;
case _.Gear:
L.text(u[e]),
c(e, s),
T.addClass("lastPage"),
h(G, X, Z);
break;
case _.pageCount:
T.removeClass("fadeIn"),
K.emit(A.CLOSED)
}
B.filter("[src='']").hide()
}
var s = function() {
return p.detectAndroid() ? p.detectAndroidMobile() && n(m.Android) ? (T.addClass("supported"),
w = ".show-supported",
m.Android) : (T.addClass("unsupported"),
w = ".show-unsupported",
m.UnsupportedAndroid) : p.detectIPhone() || p.detectIPod() ? (T.addClass("ios"),
w = ".show-ios",
_ = v.ios,
m.IOS) : (T.addClass("desktop"),
w = ".show-desktop",
m.Desktop)
}();
f.init(s, e, t),
s !== m.Desktop && T.addClass("mobile");
var l = function(e) {
K.emit(A.LAUNCH, {
vr_platform: s,
vr_app: e
}),
f.launch(e)
};
q.cardboardAndroid = l.bind(this, g.CardboardAndroid),
q.gear = l.bind(this, g.GearVR),
q.cardboardIOS = l.bind(this, g.CardboardIOS),
d(),
$(".show-supported, .show-unsupported, .show-ios, .show-desktop").hide(),
$(w).show();
var u = [C.VR_LEARN_MORE_CAPS, C.VR_NEXT_CAPS, C.VR_GOT_IT_CAPS]
, y = ["vr_modal_learn_more", "vr_modal_next", "vr_modal_done"];
s === m.IOS && (u.splice(1, 1),
y.splice(1, 1)),
$("#vr").on("click", function(e) {
e.preventDefault();
player.FlyToMode("panorama", ()=>{
if(!window.vrEnabled) { // 开启VR
window.vrEnabled = true;
this.classList.add('active');
$('#gui div').not('#vrOff').addClass('vrHide');
$('#vrOffImg').css({'display':'inline-block'});
}else{
}
})
});
$('#vrOff').on('click', function(){
window.vrEnabled = false;
$('#gui div').not('#vrOff').removeClass('vrHide');
$('#vrOffImg').css({'display':'none'});
$('#player canvas').css({width:'', 'height': ''}); // 清楚vr下给canvas设置的宽高, 避免横竖屏切换的时候出现宽高错误的现象
$('#vr').removeClass('active'); // 清除vr按钮的激活样式
})
var I = "https://my.port.com/vr/show/?m=" + e.sid;
s === m.IOS ? $(".cardboardLink").on("click", i.bind(this, g.CardboardIOS)) : $(".cardboardLink").on("click", i.bind(this, g.CardboardAndroid)),
$(".gearLink").on("click", i.bind(this, g.GearVR)),
$("span.modelLink").text(I),
O.on("click", function(e) {
K.emit(A.PREV),
b--,
r(b)
}),
L.on("click", function(e) {
L.text();
K.emit(A.NEXT, {
nextAction: y[b]
}),
b++,
r(b)
}),
T.find(".close").on("click", K.dismiss)
}
function o(e) {
switch (e) {
case m.Android:
M.filter(".cardboard").off().on("click", q.cardboardAndroid),
M.filter(".gearvr").off().on("click", q.gear),
s(H, G, "logo-button", "same-line");
break;
case m.UnsupportedAndroid:
s("", z, "", "");
break;
case m.IOS:
M.filter(".cardboard").off().on("click", q.cardboardIOS),
s(H, "", "logo-button", "");
break;
case m.Desktop:
M.filter(".cardboard").off().on("click", l.bind(this, null, F, U)),
M.filter(".gearvr").off().on("click", l.bind(this, G, V, null)),
s(H, G, "logo-button", "same-line"),
Q.cardboard()
}
}
function a(e) {
$(".p1, .p2, .p3").hide(),
x.insertAfter(S),
T.removeClass("front-page"),
T.removeClass("details-page"),
T.removeClass("lastPage"),
M.removeClass("logo-button"),
M.removeClass("same-line"),
S.removeClass("headsetOptions"),
R.attr("src", ""),
R.filter(".second").removeClass("gear"),
R.css("display", "inline-block"),
R.off(),
P.filter(".second").css("display", ""),
D.css("display", "none"),
$(".p" + (e + 1) + w).show(),
R.filter(".third").insertBefore(P.filter(".third"))
}
function s(e, t, i, n) {
T.addClass("front-page"),
R.filter(".first").attr("src", e),
R.filter(".second").attr("src", t),
M.filter(".first").addClass(i),
M.filter(".second").addClass(i),
M.addClass(n),
".show-desktop" === w && S.insertAfter(x)
}
function l(e, t, i) {
S.addClass("headsetOptions"),
M.off(),
R.filter(".second").attr("src", t),
D.css("display", "block"),
P.filter(".second").css("display", "none"),
D.on("click", function() {
a(_.Title),
o(m.Desktop)
}),
e && (K.emit(A.falseICECHOSEN, {
name: g.GearVR
}),
R.filter(".first").attr("src", e),
R.filter(".second").addClass("gear"),
R.filter(".second").on("click", f.launchStore.bind(this, g.GearVR)),
Q.gearvr()),
i && (K.emit(A.falseICECHOSEN, {
name: g.Cardboard
}),
R.filter(".third").attr("src", i),
R.filter(".third").show(),
R.filter(".third").insertAfter(R.filter(".second")),
R.filter(".third").addClass("link"),
R.filter(".second").addClass("link"),
R.filter(".second").on("click", f.launchStore.bind(this, g.CardboardIOS)),
R.filter(".third").on("click", f.launchStore.bind(this, g.CardboardAndroid)),
Q.cardboard())
}
function c(e, t) {
switch (t) {
case m.IOS:
X = Y,
Z = j;
break;
case m.Desktop:
e === _.Cardboard ? (X = F,
Z = U,
R.filter(".second").on("click", f.launchStore.bind(this, g.CardboardIOS)),
R.filter(".third").on("click", f.launchStore.bind(this, g.CardboardAndroid))) : (X = V,
R.filter(".second").on("click", f.launchStore.bind(this, g.GearVR)),
Z = "");
break;
default:
e === _.Cardboard ? (X = z,
Z = j) : (X = k,
Z = W)
}
}
function h(e, t, i) {
T.find(".inner").addClass("details-page"),
T.addClass("details-page"),
R.filter(".first").attr("src", e),
R.filter(".second").attr("src", t),
R.filter(".third").attr("src", i)
}
function u() {
T.hasClass("fadeIn") && (T.removeClass("fadeIn"),
K.emit(A.CLOSED))
}
function d() {
var e = p.aspectRatio() > 1 && p.isMobile();
T.toggleClass("landscape", e).toggleClass("portrait", !e),
T.toggleClass("tiny", $("#player").height() <= y.narrowLandscapeHeight),
T.toggleClass("tinier", $("#player").height() <= y.reallyNarrowLandscapeHeight)
}
var p = e("../../util/browser")
, f = e("./vrLink")
, g = e("../../enum/VRApps")
, m = e("../../enum/VRPlatforms")
, v = e("../../enum/VRPages")
, A = e("./vrEvent")
, y = (e("../../settings"),
e("../../constants"))
, C = e("../../localization/localize")
, I = e("../../util/common")
, E = e("events").EventEmitter
, b = 0
, w = null
, _ = v.standard
, T = $(".vr-popup")
, x = T.find(".vr-popup-body")
, S = T.find(".vr-images")
, M = T.find(".img-container")
, R = T.find(".vr-sm-image")
, P = M.find(".vr-img-caption")
, O = $(".vr-buttons").find(".prev-button")
, L = $(".vr-buttons").find(".next-button")
, D = S.find(".front-close")
, N = $(".vr-page")
, B = T.find("img")
, F = "static/images/apple-store.png"
, V = "static/images/badge-oculus.png"
, U = "static/images/badge-cardboard.png"
, k = "static/images/logo-samsung.png"
, H = "static/images/headset-cardboard.png"
, G = "static/images/headset-gearvr.png"
, z = "static/images/ico-android-robot.png"
, W = "static/images/ico-gearvr.png"
, j = "static/images/ico-vr.png"
, Y = "static/images/apple-logo-white.svg"
, X = null
, Z = null
, q = {}
, K = {
init: r,
dismiss: u,
isDeviceSupported: n
};
I.extendObject(K, E.prototype),
$(window).resize(d);
var Q = function() {
var e = P.filter(".first").find(".cardboard")
, t = P.filter(".first").find(".gearvr");
return {
cardboard: function() {
t.addClass("hidden"),
e.removeClass("hidden")
},
gearvr: function() {
e.addClass("hidden"),
t.removeClass("hidden")
}
}
}();
t.exports = K
}
, {
"../../constants": 8,
"../../enum/VRApps": 46,
"../../enum/VRPages": 48,
"../../enum/VRPlatforms": 49,
"../../localization/localize": 108,
"../../settings": 166,
"../../util/browser": 182,
"../../util/common": 185,
"./vrEvent": 85,
"./vrLink": 86,
events: 202
}],
88: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
OPENED: "webvr.modal.opened",
SHOW_TERMS: "webvr.footer.show.terms"
})
}
, {}],
89: [function(e, t, i) {
(function(i) {
"use strict";
function n(e, t, i, n) {
function r(e) {
e.preventDefault(),
a(e.currentTarget.id)
}
function a(e) {
ne[e](),
Object.keys(ne).map(function(t, i) {
$("#" + t).toggleClass("tabs-underlined", t === e)
})
}
y = i,
v = t,
w.init(E.Android, e, n),
m();
var l = new RegExp("daydream","i")
, c = l.test(y.displayName);
c ? (a("tabdaydream"),
B.filter(".device-headset-side").attr("src", H),
D.find(".title").text(x.localizeText("WEBVR_FOR_DAYDREAM"))) : (a("tabcardboard"),
B.filter(".device-headset-side").attr("src", Y),
D.find(".title").text(x.localizeText("WEBVR_FOR_CARDBOARD"))),
$("#vr").on("click", function(e) {
e.preventDefault(),
g("click_webvr_button"),
L.is(":hidden") && (ie.emit(_.OPENED),
o())
}),
$(".webvr-popup .close").on("click", function(e) {
e.preventDefault(),
D.hasClass("hidden") ? (g("webvr_help_close"),
p()) : s()
}),
$("#tabcardboard").on("click", r),
$("#tabdaydream").on("click", r),
$("#tabnative").on("click", r),
$(".webvr-popup .open-with-app").on("click", function(e) {
e.preventDefault(),
g("webvr_learn_more"),
a("tabnative"),
p()
}),
$(".webvr-popup .help").on("click", function(e) {
e.preventDefault(),
g(D.hasClass("hidden") ? "webvr_help_close" : "webvr_help_show"),
p()
}),
$(".webvr-popup .terms").on("click", function(e) {
e.preventDefault(),
g("webvr_click_terms"),
s(),
ie.emit(_.SHOW_TERMS)
}),
F.on("click", function(e) {
e.preventDefault(),
g(ee),
window.open(J, "_blank")
}),
V.on("click", function(e) {
e.preventDefault(),
g("webvr_phone_link"),
window.open(te, "_blank")
}),
$(".webvr-popup .badge-cardboard").on("click", function(e) {
e.preventDefault(),
g("webvr_cardboard_link"),
w.launch(b.CardboardAndroid)
}),
$(".webvr-popup .badge-oculus").on("click", function(e) {
e.preventDefault(),
g("webvr_oculus_link"),
w.launch(b.GearVR)
})
}
function r() {
function e() {
y.isPresenting || (f(),
window.removeEventListener("vrdisplaypresentchange", e))
}
R.info("Headset mounted"),
v.suspend();
var t = document.createElement("canvas");
for (t.getContext("webgl"),
t.className = "webvr-canvas",
document.bgColor = "#000",
document.body.style.backgroundColor = "#000"; document.body.firstChild; )
document.body.removeChild(document.body.firstChild);
document.body.appendChild(t),
g("webvr_enter_app"),
y.requestPresent([{
source: t,
predistorted: !0
}]).catch(function(t) {
R.error("Failed to present: " + t),
g("webvr_exit_calibrate"),
e()
}),
A.then(function() {
window.dispatchEvent(new Event("vrapp-start"))
}),
window.addEventListener("vrdisplaypresentchange", e)
}
function o() {
O.fadeOut(I.guiAnimationSpeed),
L.fadeIn(I.guiAnimationSpeed),
a()
}
function a() {
if (!A) {
var e = C.valueFromHash("webvr") || I.appConfig.webvr_version
, t = "https://static.port.com/webvr/" + e + "/js/main.js";
A = new Promise(function(e, i) {
var n = document.createElement("script");
n.type = "text/javascript",
n.src = t,
n.onload = e,
document.head.appendChild(n)
}
)
}
D.find(".enter-button").on("click", r)
}
function s() {
g("webvr_modal_close"),
D.find(".enter-button").off("click", r),
L.fadeOut(I.guiAnimationSpeed, function() {
D.toggleClass("hidden", !1),
N.toggleClass("hidden", !0),
C.exitFullscreen()
}),
O.fadeIn(I.guiAnimationSpeed)
}
function l() {
k.toggleClass("hidden", !1),
U.toggleClass("hidden", !0)
}
function c() {
k.toggleClass("hidden", !0),
U.toggleClass("hidden", !1)
}
function h() {
B.filter(".device-headset").attr("src", G),
B.filter(".device-phone").attr("src", z),
J = Z,
ee = K,
F.text(x.localizeText("WEBVR_DAYDREAM_VIEW")),
V.text(x.localizeText("VR_NEED_DAYDREAM_PHONE")),
$(".webvr-popup .detail.daydream-label").toggleClass("hidden", !1),
c()
}
function u() {
B.filter(".badge-cardboard").attr("src", j),
B.filter(".badge-oculus").attr("src", X),
l()
}
function d() {
B.filter(".device-headset").attr("src", Y),
B.filter(".device-phone").attr("src", W),
J = q,
ee = Q,
F.text(x.localizeText("VR_GOOGLE_CARDBOARD")),
V.text(x.localizeText("VR_COMPATIBLE_ANDROID_LONG")),
$(".webvr-popup .detail.daydream-label").toggleClass("hidden", !0),
c()
}
function p() {
D.toggleClass("hidden"),
N.toggleClass("hidden")
}
function f() {
R.info("exiting webVR"),
g("webvr_exit_app"),
window.location.search.indexOf("&qs=1") === -1 ? window.location = window.location + "&qs=1" : window.location = window.location
}
function g(e) {
var t = C.isLandscape() ? "landscape" : "portrait";
T.trackAlways("showcase_gui", {
gui_action: e,
orientation: t
})
}
function m() {
var e = C.isLandscape();
L.toggleClass("landscape", e).toggleClass("portrait", !e)
}
var v, A, y, C = e("../../util/browser"), I = e("../../settings"), E = (e("./../gui"),
e("../../enum/VRPlatforms")), b = e("../../enum/VRApps"), w = e("./../vr/vrLink"), _ = e("./WebVrEvent"), T = e("../../analytics"), x = (e("../../constants"),
e("../../localization/localize")), S = e("../../util/common"), M = e("../../util/logger"), R = new M(i), P = e("events").EventEmitter, O = $("#gui"), L = $(".webvr-popup"), D = $(".webvr-popup .page.p1"), N = $(".webvr-popup .page.p2"), B = L.find(".image"), F = $(".webvr-popup .detail.headset"), V = $(".webvr-popup .detail.phone"), U = $(".webvr-popup .tab-content.webvr"), k = $(".webvr-popup .tab-content.native"), H = "static/images/device-daydream-side.png", G = "static/images/device-daydream.png", z = "static/images/device-pixel.png", W = "static/images/ico-android-robot.png", j = "static/images/badge-cardboard.png", Y = "static/images/headset-cardboard.png", X = "static/images/badge-oculus.png", Z = "https://madeby.google.com/vr/", q = "https://vr.google.com/cardboard/get-cardboard/", K = "webvr_daydream_link", Q = "webvr_cardboard_link", J = Z, ee = K, te = "https://vr.google.com/daydream/phones/", ie = {
init: n
}, ne = {
tabcardboard: d,
tabdaydream: h,
tabnative: u
};
S.extendObject(ie, P.prototype),
$(window).resize(m),
t.exports = ie
}
).call(this, "/js/gui/webvr/webVRgui.js")
}
, {
"../../analytics": 4,
"../../constants": 8,
"../../enum/VRApps": 46,
"../../enum/VRPlatforms": 49,
"../../localization/localize": 108,
"../../settings": 166,
"../../util/browser": 182,
"../../util/common": 185,
"../../util/logger": 189,
"./../gui": 65,
"./../vr/vrLink": 86,
"./WebVrEvent": 88,
events: 202
}],
90: [function(e, t, i) {
"use strict";
function n(e, t, i, n, o) {
n || 0 === n ? this.floorId = n : this.floorId = -1,
this.roomId = o || "",
this.labelId = e,
this.position = (new r.Vector3).copy(t),
this.text = i
}
var r = e("three")
, o = e("../util/browser");
n.prototype.build = function() {
var e = window.document.createElement("div");
o.isMobile() ? e.setAttribute("class", "gui-floorplan-label gui-floorplan-label-mobile") : e.setAttribute("class", "gui-floorplan-label");
var t = window.document.createElement("div");
t.setAttribute("class", "gui-floorplan-label-text");
var i = window.document.createTextNode(this.text);
t.appendChild(i),
e.appendChild(t),
window.document.body.appendChild(e),
this.labelGui = e,
this.textBlock = t,
$(this.labelGui).hide();
var n = window.getComputedStyle(this.labelGui);
this.initialTransform = n.transform || n.webkitTransform
}
,
t.exports = n
}
, {
"../util/browser": 182,
three: 217
}],
91: [function(e, t, i) {
"use strict";
function n() {
this.player = null,
this.modelManager = null,
this.container = null
}
var r = e("three")
, o = (e("../util/common"),
e("../enum/PlayerEvents"))
, a = (e("../enum/DirectorEvents"),
e("../enum/ModelManagerEvents"))
, s = e("../settings")
, l = e("../enum/Viewmode")
, c = (e("../enum/WarpStyle"),
e("../util/transitions"),
e("../util/lerp"),
e("../util/browser"));
//场景初始化
n.prototype.init = function(e, t, i) {
this.player = e,
this.modelManager = t,
this.container = i,
this.updateModel(),
this.bindEvents()
}
,
n.prototype.bindEvents = function() {
this.modelManager.on(a.ActiveModelChanged, this.updateModel.bind(this)),
this.player.on(o.ViewChanged, this.handlePlayerViewChanged.bind(this)),
this.player.on(o.ModeChanged, this.handlePlayerViewChanged.bind(this)),
this.player.on(o.StartInside, this.handleStartInside.bind(this)),
this.player.on(o.StartOutside, this.handleStartOutside.bind(this))
}
,
n.prototype.updateModel = function() {
this.model = this.modelManager.getActiveModel()
}
,
n.prototype.handlePlayerViewChanged = function() {
this.updateLabelVisibility(),
this.updateLabelDisplay()
}
,
n.prototype.getLabelsForFloor = function(e, t) {
return t = t || [],
t.length = 0,
this.model.labels.forEach(function(i) {
this.labelVisibleForFloor(i, e) && t.push(i)
}
.bind(this)),
t
}
,
n.prototype.getLabelsForCurrentFloor = function(e) {
return this.getLabelsForFloor(this.model.currentFloor.floorIndex, e)
}
,
n.prototype.labelVisibleForFloor = function(e, t) {
var i = c.isMobile() && this.player.getLabelScaleFactor() < s.labels.zoomHideThreshhold.mobile || !c.isMobile() && this.player.getLabelScaleFactor() < s.labels.zoomHideThreshhold.desktop;
if (!this.model.showingLabels || !e.labelGui || !i)
return !1;
var n = e.floorId === this.model.floors.size() - 1;
return this.model.allFloorsVisible ? n : e.floorId === t
}
,
n.prototype.updateLabelVisibility = function(e) {
this.model.labels.forEach(function(e) {
this.supportedMode() && this.labelVisibleForFloor(e, this.model.currentFloor.floorIndex) ? this.showLabel(e, s.labels.fadeInDelay, s.labels.fadeInDuration) : this.hideLabel(e, s.labels.fadeOutDelay, s.labels.fadeOutDuration)
}
.bind(this))
}
,
n.prototype.showAllLabels = function(e, t) {
this.model.labels.forEach(function(i) {
this.showLabel(i, e, t)
}
.bind(this))
}
,
n.prototype.hideAllLabels = function(e, t) {
this.model.labels.forEach(function(i) {
this.hideLabel(i, e, t)
}
.bind(this))
}
,
n.prototype.showLabel = function(e, t, i) {
this.model.showingLabels && (e.visible || (e.visible = !0,
e.labelGui.style.display = "block",
e.labelGui.style.opacity = 0,
$(e.labelGui).delay(t).fadeTo(i, 1)))
}
,
n.prototype.hideLabel = function(e, t, i) {
e.visible && (e.visible = !1,
c.isMobile() ? $(e.labelGui).hide() : $(e.labelGui).delay(t).fadeOut(i))
}
,
n.prototype.supportedMode = function() {
return this.player.mode === l.FLOORPLAN
}
,
n.prototype.updateLabelDisplay = function() {
var e = (new r.Vector3,
new r.Vector3,
[]);
return function() {
var t = this.player.getLabelScaleFactor()
, i = .6
, n = 1.2
, r = (1 - t) * n + i
, o = c.isMobile() ? s.labels.zoomTruncateThreshhold.mobile : s.labels.zoomTruncateThreshhold.desktop;
this.getLabelsForCurrentFloor(e);
for (var a = 0; a < e.length; a++) {
var l = e[a];
this.supportedMode() && l.labelGui && (this.updateProjectedGuiElement(l.labelGui, l.textBlock, l.position, r, r),
t >= o && l.text.length >= s.labels.minLengthForTruncate ? l.textBlock.innerText = l.text.substring(0, s.labels.truncateLength) + s.labels.truncateSuffix : l.textBlock.innerText = l.text)
}
}
}(),
n.prototype.updateProjectedGuiElement = function() {
var e = new r.Vector3;
new r.Vector3;
return function(t, i, n, r, o) {
i.style.fontSize = 100 * o + "%";
var a = $("#player").width()
, s = $("#player").height()
, l = .5 * a
, c = .5 * s;
e.copy(n),
e.project(this.player.camera);
var h = e.x * l + l
, u = -(e.y * c) + c;
h -= t.offsetWidth / 2,
u -= t.offsetHeight / 2,
t.style.left = h + "px",
t.style.top = u + "px"
}
}(),
n.prototype.handleStartInside = function(e) {
this.updateLabelVisibility()
}
,
n.prototype.handleStartOutside = function() {
this.updateLabelVisibility()
}
,
t.exports = n
}
, {
"../enum/DirectorEvents": 23,
"../enum/ModelManagerEvents": 33,
"../enum/PlayerEvents": 40,
"../enum/Viewmode": 51,
"../enum/WarpStyle": 52,
"../settings": 166,
"../util/browser": 182,
"../util/common": 185,
"../util/lerp": 188,
"../util/transitions": 195,
three: 217
}],
92: [function(e, t, i) {
"use strict";
Array.prototype.findIndex || (Array.prototype.findIndex = function(e) {
if (null == this)
throw new TypeError("Array.prototype.findIndex called on null or undefined");
if ("function" != typeof e)
throw new TypeError("predicate must be a function");
for (var t, i = Object(this), n = i.length >>> 0, r = arguments[1], o = 0; o < n; o++)
if (t = i[o],
e.call(r, t, o, i))
return o;
return -1
}
),
Array.prototype.find || Object.defineProperty(Array.prototype, "find", {
value: function(e) {
if (null == this)
throw new TypeError('"this" is null or not defined');
var t = Object(this)
, i = t.length >>> 0;
if ("function" != typeof e)
throw new TypeError("predicate must be a function");
for (var n = arguments[1], r = 0; r < i; ) {
var o = t[r];
if (e.call(n, o, r, t))
return o;
r++
}
}
})
}
, {}],
93: [function(e, t, i) {
"use strict";
var n = n || {};
t.exports = n,
n.gui = n.gui || {},
n.utils = n.utils || {},
n.controllers = n.controllers || {},
n.dom = n.dom || {},
n.color = n.color || {},
n.utils.css = function() {
return {
load: function(e, t) {
t = t || document;
var i = t.createElement("link");
i.type = "text/css",
i.rel = "stylesheet",
i.href = e,
t.getElementsByTagName("head")[0].appendChild(i)
},
inject: function(e, t) {
t = t || document;
var i = document.createElement("style");
i.type = "text/css",
i.innerHTML = e,
t.getElementsByTagName("head")[0].appendChild(i)
}
}
}(),
n.utils.common = function() {
var e = Array.prototype.forEach
, t = Array.prototype.slice;
return {
BREAK: {},
extend: function(e) {
return this.each(t.call(arguments, 1), function(t) {
for (var i in t)
this.isUndefined(t[i]) || (e[i] = t[i])
}, this),
e
},
defaults: function(e) {
return this.each(t.call(arguments, 1), function(t) {
for (var i in t)
this.isUndefined(e[i]) && (e[i] = t[i])
}, this),
e
},
compose: function() {
var e = t.call(arguments);
return function() {
for (var i = t.call(arguments), n = e.length - 1; n >= 0; n--)
i = [e[n].apply(this, i)];
return i[0]
}
},
each: function(t, i, n) {
if (t)
if (e && t.forEach && t.forEach === e)
t.forEach(i, n);
else if (t.length === t.length + 0) {
for (var r = 0, o = t.length; r < o; r++)
if (r in t && i.call(n, t[r], r) === this.BREAK)
return
} else
for (var r in t)
if (i.call(n, t[r], r) === this.BREAK)
return
},
defer: function(e) {
setTimeout(e, 0)
},
toArray: function(e) {
return e.toArray ? e.toArray() : t.call(e)
},
isUndefined: function(e) {
return void 0 === e
},
isNull: function(e) {
return null === e
},
isNaN: function(e) {
return e !== e
},
isArray: Array.isArray || function(e) {
return e.constructor === Array
}
,
isObject: function(e) {
return e === Object(e)
},
isNumber: function(e) {
return e === e + 0
},
isString: function(e) {
return e === e + ""
},
isBoolean: function(e) {
return e === !1 || e === !0
},
isFunction: function(e) {
return "[object Function]" === Object.prototype.toString.call(e)
}
}
}(),
n.controllers.Controller = function(e) {
var t = function(e, t) {
this.initialValue = e[t],
this.domElement = document.createElement("div"),
this.object = e,
this.property = t,
this.__onChange = void 0,
this.__onFinishChange = void 0
};
return e.extend(t.prototype, {
onChange: function(e) {
return this.__onChange = e,
this
},
onFinishChange: function(e) {
return this.__onFinishChange = e,
this
},
setValue: function(e) {
return this.object[this.property] = e,
this.__onChange && this.__onChange.call(this, e),
this.updateDisplay(),
this
},
getValue: function() {
return this.object[this.property]
},
updateDisplay: function() {
return this
},
isModified: function() {
return this.initialValue !== this.getValue()
}
}),
t
}(n.utils.common),
n.dom.dom = function(e) {
function t(t) {
if ("0" === t || e.isUndefined(t))
return 0;
var i = t.match(r);
return e.isNull(i) ? 0 : parseFloat(i[1])
}
var i = {
HTMLEvents: ["change"],
MouseEvents: ["click", "mousemove", "mousedown", "mouseup", "mouseover"],
KeyboardEvents: ["keydown"]
}
, n = {};
e.each(i, function(t, i) {
e.each(t, function(e) {
n[e] = i
})
});
var r = /(\d+(\.\d+)?)px/
, o = {
makeSelectable: function(e, t) {
void 0 !== e && void 0 !== e.style && (e.onselectstart = t ? function() {
return !1
}
: function() {}
,
e.style.MozUserSelect = t ? "auto" : "none",
e.style.KhtmlUserSelect = t ? "auto" : "none",
e.unselectable = t ? "on" : "off")
},
makeFullscreen: function(t, i, n) {
e.isUndefined(i) && (i = !0),
e.isUndefined(n) && (n = !0),
t.style.position = "absolute",
i && (t.style.left = 0,
t.style.right = 0),
n && (t.style.top = 0,
t.style.bottom = 0)
},
fakeEvent: function(t, i, r, o) {
r = r || {};
var a = n[i];
if (!a)
throw new Error("Event type " + i + " not supported.");
var s = document.createEvent(a);
switch (a) {
case "MouseEvents":
var l = r.x || r.clientX || 0
, c = r.y || r.clientY || 0;
s.initMouseEvent(i, r.bubbles || !1, r.cancelable || !0, window, r.clickCount || 1, 0, 0, l, c, !1, !1, !1, !1, 0, null);
break;
case "KeyboardEvents":
var h = s.initKeyboardEvent || s.initKeyEvent;
e.defaults(r, {
cancelable: !0,
ctrlKey: !1,
altKey: !1,
shiftKey: !1,
metaKey: !1,
keyCode: void 0,
charCode: void 0
}),
h(i, r.bubbles || !1, r.cancelable, window, r.ctrlKey, r.altKey, r.shiftKey, r.metaKey, r.keyCode, r.charCode);
break;
default:
s.initEvent(i, r.bubbles || !1, r.cancelable || !0)
}
e.defaults(s, o),
t.dispatchEvent(s)
},
bind: function(e, t, i, n) {
return n = n || !1,
e.addEventListener ? e.addEventListener(t, i, n) : e.attachEvent && e.attachEvent("on" + t, i),
o
},
unbind: function(e, t, i, n) {
return n = n || !1,
e.removeEventListener ? e.removeEventListener(t, i, n) : e.detachEvent && e.detachEvent("on" + t, i),
o
},
addClass: function(e, t) {
if (void 0 === e.className)
e.className = t;
else if (e.className !== t) {
var i = e.className.split(/ +/);
i.indexOf(t) == -1 && (i.push(t),
e.className = i.join(" ").replace(/^\s+/, "").replace(/\s+$/, ""))
}
return o
},
removeClass: function(e, t) {
if (t)
if (void 0 === e.className)
;
else if (e.className === t)
e.removeAttribute("class");
else {
var i = e.className.split(/ +/)
, n = i.indexOf(t);
n != -1 && (i.splice(n, 1),
e.className = i.join(" "))
}
else
e.className = void 0;
return o
},
hasClass: function(e, t) {
return new RegExp("(?:^|\\s+)" + t + "(?:\\s+|$)").test(e.className) || !1
},
getWidth: function(e) {
var i = getComputedStyle(e);
return t(i["border-left-width"]) + t(i["border-right-width"]) + t(i["padding-left"]) + t(i["padding-right"]) + t(i.width)
},
getHeight: function(e) {
var i = getComputedStyle(e);
return t(i["border-top-width"]) + t(i["border-bottom-width"]) + t(i["padding-top"]) + t(i["padding-bottom"]) + t(i.height)
},
getOffset: function(e) {
var t = {
left: 0,
top: 0
};
if (e.offsetParent)
do
t.left += e.offsetLeft,
t.top += e.offsetTop;
while (e = e.offsetParent);return t
},
isActive: function(e) {
return e === document.activeElement && (e.type || e.href)
}
};
return o
}(n.utils.common),
n.controllers.OptionController = function(e, t, i) {
var n = function(e, r, o) {
n.superclass.call(this, e, r);
var a = this;
if (this.__select = document.createElement("select"),
i.isArray(o)) {
var s = {};
i.each(o, function(e) {
s[e] = e
}),
o = s
}
i.each(o, function(e, t) {
var i = document.createElement("option");
i.innerHTML = t,
i.setAttribute("value", e),
a.__select.appendChild(i)
}),
this.updateDisplay(),
t.bind(this.__select, "change", function() {
var e = this.options[this.selectedIndex].value;
a.setValue(e)
}),
this.domElement.appendChild(this.__select)
};
return n.superclass = e,
i.extend(n.prototype, e.prototype, {
setValue: function(e) {
var t = n.superclass.prototype.setValue.call(this, e);
return this.__onFinishChange && this.__onFinishChange.call(this, this.getValue()),
t
},
updateDisplay: function() {
return this.__select.value = this.getValue(),
n.superclass.prototype.updateDisplay.call(this)
}
}),
n
}(n.controllers.Controller, n.dom.dom, n.utils.common),
n.controllers.NumberController = function(e, t) {
function i(e) {
return e = e.toString(),
e.indexOf(".") > -1 ? e.length - e.indexOf(".") - 1 : 0
}
var n = function(e, r, o) {
n.superclass.call(this, e, r),
o = o || {},
this.__min = o.min,
this.__max = o.max,
this.__step = o.step,
t.isUndefined(this.__step) ? 0 == this.initialValue ? this.__impliedStep = 1 : this.__impliedStep = Math.pow(10, Math.floor(Math.log(this.initialValue) / Math.LN10)) / 10 : this.__impliedStep = this.__step,
this.__precision = i(this.__impliedStep)
};
return n.superclass = e,
t.extend(n.prototype, e.prototype, {
setValue: function(e) {
return void 0 !== this.__min && e < this.__min ? e = this.__min : void 0 !== this.__max && e > this.__max && (e = this.__max),
void 0 !== this.__step && e % this.__step != 0 && (e = Math.round(e / this.__step) * this.__step),
n.superclass.prototype.setValue.call(this, e)
},
min: function(e) {
return this.__min = e,
this
},
max: function(e) {
return this.__max = e,
this
},
step: function(e) {
return this.__step = e,
this.__impliedStep = e,
this.__precision = i(e),
this
}
}),
n
}(n.controllers.Controller, n.utils.common),
n.controllers.NumberControllerBox = function(e, t, i) {
function n(e, t) {
var i = Math.pow(10, t);
return Math.round(e * i) / i
}
var r = function(e, n, o) {
function a() {
var e = parseFloat(d.__input.value);
i.isNaN(e) || d.setValue(e)
}
function s() {
a(),
d.__onFinishChange && d.__onFinishChange.call(d, d.getValue())
}
function l(e) {
t.bind(window, "mousemove", c),
t.bind(window, "mouseup", h),
u = e.clientY
}
function c(e) {
var t = u - e.clientY;
d.setValue(d.getValue() + t * d.__impliedStep),
u = e.clientY
}
function h() {
t.unbind(window, "mousemove", c),
t.unbind(window, "mouseup", h)
}
this.__truncationSuspended = !1,
r.superclass.call(this, e, n, o);
var u, d = this;
this.__input = document.createElement("input"),
this.__input.setAttribute("type", "text"),
t.bind(this.__input, "change", a),
t.bind(this.__input, "blur", s),
t.bind(this.__input, "mousedown", l),
t.bind(this.__input, "keydown", function(e) {
13 === e.keyCode && (d.__truncationSuspended = !0,
this.blur(),
d.__truncationSuspended = !1)
}),
this.updateDisplay(),
this.domElement.appendChild(this.__input)
};
return r.superclass = e,
i.extend(r.prototype, e.prototype, {
updateDisplay: function() {
return this.__input.value = this.__truncationSuspended ? this.getValue() : n(this.getValue(), this.__precision),
r.superclass.prototype.updateDisplay.call(this)
}
}),
r
}(n.controllers.NumberController, n.dom.dom, n.utils.common),
n.controllers.NumberControllerSlider = function(e, t, i, n, r) {
function o(e, t, i, n, r) {
return n + (r - n) * ((e - t) / (i - t))
}
var a = function(e, i, n, r, s) {
function l(e) {
t.bind(window, "mousemove", c),
t.bind(window, "mouseup", h),
c(e)
}
function c(e) {
e.preventDefault();
var i = t.getOffset(u.__background)
, n = t.getWidth(u.__background);
return u.setValue(o(e.clientX, i.left, i.left + n, u.__min, u.__max)),
!1
}
function h() {
t.unbind(window, "mousemove", c),
t.unbind(window, "mouseup", h),
u.__onFinishChange && u.__onFinishChange.call(u, u.getValue())
}
a.superclass.call(this, e, i, {
min: n,
max: r,
step: s
});
var u = this;
this.__background = document.createElement("div"),
this.__foreground = document.createElement("div"),
t.bind(this.__background, "mousedown", l),
t.addClass(this.__background, "slider"),
t.addClass(this.__foreground, "slider-fg"),
this.updateDisplay(),
this.__background.appendChild(this.__foreground),
this.domElement.appendChild(this.__background)
};
return a.superclass = e,
a.useDefaultStyles = function() {
i.inject(r)
}
,
n.extend(a.prototype, e.prototype, {
updateDisplay: function() {
var e = (this.getValue() - this.__min) / (this.__max - this.__min);
return this.__foreground.style.width = 100 * e + "%",
a.superclass.prototype.updateDisplay.call(this)
}
}),
a
}(n.controllers.NumberController, n.dom.dom, n.utils.css, n.utils.common, "/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n.slider {\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n height: 1em;\n border-radius: 1em;\n background-color: #eee;\n padding: 0 0.5em;\n overflow: hidden;\n}\n\n.slider-fg {\n padding: 1px 0 2px 0;\n background-color: #aaa;\n height: 1em;\n margin-left: -0.5em;\n padding-right: 0.5em;\n border-radius: 1em 0 0 1em;\n}\n\n.slider-fg:after {\n display: inline-block;\n border-radius: 1em;\n background-color: #fff;\n border: 1px solid #aaa;\n content: '';\n float: right;\n margin-right: -1em;\n margin-top: -1px;\n height: 0.9em;\n width: 0.9em;\n}"),
n.controllers.FunctionController = function(e, t, i) {
var n = function(e, i, r) {
n.superclass.call(this, e, i);
var o = this;
this.__button = document.createElement("div"),
this.__button.innerHTML = void 0 === r ? "Fire" : r,
t.bind(this.__button, "click", function(e) {
return e.preventDefault(),
o.fire(),
!1
}),
t.addClass(this.__button, "button"),
this.domElement.appendChild(this.__button)
};
return n.superclass = e,
i.extend(n.prototype, e.prototype, {
fire: function() {
this.__onChange && this.__onChange.call(this),
this.__onFinishChange && this.__onFinishChange.call(this, this.getValue()),
this.getValue().call(this.object)
}
}),
n
}(n.controllers.Controller, n.dom.dom, n.utils.common),
n.controllers.BooleanController = function(e, t, i) {
var n = function(e, i) {
function r() {
o.setValue(!o.__prev)
}
n.superclass.call(this, e, i);
var o = this;
this.__prev = this.getValue(),
this.__checkbox = document.createElement("input"),
this.__checkbox.setAttribute("type", "checkbox"),
t.bind(this.__checkbox, "change", r, !1),
this.domElement.appendChild(this.__checkbox),
this.updateDisplay()
};
return n.superclass = e,
i.extend(n.prototype, e.prototype, {
setValue: function(e) {
var t = n.superclass.prototype.setValue.call(this, e);
return this.__onFinishChange && this.__onFinishChange.call(this, this.getValue()),
this.__prev = this.getValue(),
t
},
updateDisplay: function() {
return this.getValue() === !0 ? (this.__checkbox.setAttribute("checked", "checked"),
this.__checkbox.checked = !0) : this.__checkbox.checked = !1,
n.superclass.prototype.updateDisplay.call(this)
}
}),
n
}(n.controllers.Controller, n.dom.dom, n.utils.common),
n.color.toString = function(e) {
return function(t) {
if (1 == t.a || e.isUndefined(t.a)) {
for (var i = t.hex.toString(16); i.length < 6; )
i = "0" + i;
return "#" + i
}
return "rgba(" + Math.round(t.r) + "," + Math.round(t.g) + "," + Math.round(t.b) + "," + t.a + ")"
}
}(n.utils.common),
n.color.interpret = function(e, t) {
var i, n, r = function() {
n = !1;
var e = arguments.length > 1 ? t.toArray(arguments) : arguments[0];
return t.each(o, function(r) {
if (r.litmus(e))
return t.each(r.conversions, function(r, o) {
if (i = r.read(e),
n === !1 && i !== !1)
return n = i,
i.conversionName = o,
i.conversion = r,
t.BREAK
}),
t.BREAK
}),
n
}, o = [{
litmus: t.isString,
conversions: {
THREE_CHAR_HEX: {
read: function(e) {
var t = e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);
return null !== t && {
space: "HEX",
hex: parseInt("0x" + t[1].toString() + t[1].toString() + t[2].toString() + t[2].toString() + t[3].toString() + t[3].toString())
}
},
write: e
},
SIX_CHAR_HEX: {
read: function(e) {
var t = e.match(/^#([A-F0-9]{6})$/i);
return null !== t && {
space: "HEX",
hex: parseInt("0x" + t[1].toString())
}
},
write: e
},
CSS_RGB: {
read: function(e) {
var t = e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
return null !== t && {
space: "RGB",
r: parseFloat(t[1]),
g: parseFloat(t[2]),
b: parseFloat(t[3])
}
},
write: e
},
CSS_RGBA: {
read: function(e) {
var t = e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);
return null !== t && {
space: "RGB",
r: parseFloat(t[1]),
g: parseFloat(t[2]),
b: parseFloat(t[3]),
a: parseFloat(t[4])
}
},
write: e
}
}
}, {
litmus: t.isNumber,
conversions: {
HEX: {
read: function(e) {
return {
space: "HEX",
hex: e,
conversionName: "HEX"
}
},
write: function(e) {
return e.hex
}
}
}
}, {
litmus: t.isArray,
conversions: {
RGB_ARRAY: {
read: function(e) {
return 3 == e.length && {
space: "RGB",
r: e[0],
g: e[1],
b: e[2]
}
},
write: function(e) {
return [e.r, e.g, e.b]
}
},
RGBA_ARRAY: {
read: function(e) {
return 4 == e.length && {
space: "RGB",
r: e[0],
g: e[1],
b: e[2],
a: e[3]
}
},
write: function(e) {
return [e.r, e.g, e.b, e.a]
}
}
}
}, {
litmus: t.isObject,
conversions: {
RGBA_OBJ: {
read: function(e) {
return !!(t.isNumber(e.r) && t.isNumber(e.g) && t.isNumber(e.b) && t.isNumber(e.a)) && {
space: "RGB",
r: e.r,
g: e.g,
b: e.b,
a: e.a
}
},
write: function(e) {
return {
r: e.r,
g: e.g,
b: e.b,
a: e.a
}
}
},
RGB_OBJ: {
read: function(e) {
return !!(t.isNumber(e.r) && t.isNumber(e.g) && t.isNumber(e.b)) && {
space: "RGB",
r: e.r,
g: e.g,
b: e.b
}
},
write: function(e) {
return {
r: e.r,
g: e.g,
b: e.b
}
}
},
HSVA_OBJ: {
read: function(e) {
return !!(t.isNumber(e.h) && t.isNumber(e.s) && t.isNumber(e.v) && t.isNumber(e.a)) && {
space: "HSV",
h: e.h,
s: e.s,
v: e.v,
a: e.a
}
},
write: function(e) {
return {
h: e.h,
s: e.s,
v: e.v,
a: e.a
}
}
},
HSV_OBJ: {
read: function(e) {
return !!(t.isNumber(e.h) && t.isNumber(e.s) && t.isNumber(e.v)) && {
space: "HSV",
h: e.h,
s: e.s,
v: e.v
}
},
write: function(e) {
return {
h: e.h,
s: e.s,
v: e.v
}
}
}
}
}];
return r
}(n.color.toString, n.utils.common),
n.GUI = n.gui.GUI = function(e, t, i, n, r, o, a, s, l, c, h, u, d, p, f) {
function g(e, t, i, o) {
if (void 0 === t[i])
throw new Error("Object " + t + ' has no property "' + i + '"');
var a;
if (o.color)
a = new h(t,i);
else {
var s = [t, i].concat(o.factoryArgs);
a = n.apply(e, s)
}
o.before instanceof r && (o.before = o.before.__li),
A(e, a),
p.addClass(a.domElement, "c");
var l = document.createElement("span");
p.addClass(l, "property-name"),
l.innerHTML = a.property;
var c = document.createElement("div");
c.appendChild(l),
c.appendChild(a.domElement);
var u = m(e, c, o.before);
return p.addClass(u, V.CLASS_CONTROLLER_ROW),
p.addClass(u, typeof a.getValue()),
v(e, u, a),
e.__controllers.push(a),
a
}
function m(e, t, i) {
var n = document.createElement("li");
return t && n.appendChild(t),
i ? e.__ul.insertBefore(n, params.before) : e.__ul.appendChild(n),
e.onResize(),
n
}
function v(e, t, i) {
if (i.__li = t,
i.__gui = e,
f.extend(i, {
options: function(t) {
return arguments.length > 1 ? (i.remove(),
g(e, i.object, i.property, {
before: i.__li.nextElementSibling,
factoryArgs: [f.toArray(arguments)]
})) : f.isArray(t) || f.isObject(t) ? (i.remove(),
g(e, i.object, i.property, {
before: i.__li.nextElementSibling,
factoryArgs: [t]
})) : void 0
},
name: function(e) {
return i.__li.firstElementChild.firstElementChild.innerHTML = e,
i
},
listen: function() {
return i.__gui.listen(i),
i
},
remove: function() {
return i.__gui.remove(i),
i
}
}),
i instanceof l) {
var n = new s(i.object,i.property,{
min: i.__min,
max: i.__max,
step: i.__step
});
f.each(["updateDisplay", "onChange", "onFinishChange"], function(e) {
var t = i[e]
, r = n[e];
i[e] = n[e] = function() {
var e = Array.prototype.slice.call(arguments);
return t.apply(i, e),
r.apply(n, e)
}
}),
p.addClass(t, "has-slider"),
i.domElement.insertBefore(n.domElement, i.domElement.firstElementChild)
} else if (i instanceof s) {
var r = function(t) {
return f.isNumber(i.__min) && f.isNumber(i.__max) ? (i.remove(),
g(e, i.object, i.property, {
before: i.__li.nextElementSibling,
factoryArgs: [i.__min, i.__max, i.__step]
})) : t
};
i.min = f.compose(r, i.min),
i.max = f.compose(r, i.max)
} else
i instanceof o ? (p.bind(t, "click", function() {
p.fakeEvent(i.__checkbox, "click")
}),
p.bind(i.__checkbox, "click", function(e) {
e.stopPropagation()
})) : i instanceof a ? (p.bind(t, "click", function() {
p.fakeEvent(i.__button, "click")
}),
p.bind(t, "mouseover", function() {
p.addClass(i.__button, "hover")
}),
p.bind(t, "mouseout", function() {
p.removeClass(i.__button, "hover")
})) : i instanceof h && (p.addClass(t, "color"),
i.updateDisplay = f.compose(function(e) {
return t.style.borderLeftColor = i.__color.toString(),
e
}, i.updateDisplay),
i.updateDisplay());
i.setValue = f.compose(function(t) {
return e.getRoot().__preset_select && i.isModified() && T(e.getRoot(), !0),
t
}, i.setValue)
}
function A(e, t) {
var i = e.getRoot()
, n = i.__rememberedObjects.indexOf(t.object);
if (n != -1) {
var r = i.__rememberedObjectIndecesToControllers[n];
if (void 0 === r && (r = {},
i.__rememberedObjectIndecesToControllers[n] = r),
r[t.property] = t,
i.load && i.load.remembered) {
var o, a = i.load.remembered;
if (a[e.preset])
o = a[e.preset];
else {
if (!a[L])
return;
o = a[L]
}
if (o[n] && void 0 !== o[n][t.property]) {
var s = o[n][t.property];
t.initialValue = s,
t.setValue(s)
}
}
}
}
function y(e, t) {
return document.location.href + "." + t
}
function C(e) {
var t = e.__save_row = document.createElement("li");
p.addClass(e.domElement, "has-save"),
e.__ul.insertBefore(t, e.__ul.firstChild),
p.addClass(t, "save-row");
var i = document.createElement("span");
i.innerHTML = " ",
p.addClass(i, "button gears");
var n = document.createElement("span");
n.innerHTML = "Save",
p.addClass(n, "button"),
p.addClass(n, "save");
var r = document.createElement("span");
r.innerHTML = "New",
p.addClass(r, "button"),
p.addClass(r, "save-as");
var o = document.createElement("span");
o.innerHTML = "Revert",
p.addClass(o, "button"),
p.addClass(o, "revert");
var a = e.__preset_select = document.createElement("select");
if (e.load && e.load.remembered ? f.each(e.load.remembered, function(t, i) {
w(e, i, i == e.preset)
}) : w(e, L, !1),
p.bind(a, "change", function() {
for (var t = 0; t < e.__preset_select.length; t++)
e.__preset_select[t].innerHTML = e.__preset_select[t].value;
e.preset = this.value
}),
t.appendChild(a),
t.appendChild(i),
t.appendChild(n),
t.appendChild(r),
t.appendChild(o),
D) {
var s = document.getElementById("dg-save-locally")
, l = document.getElementById("dg-local-explain");
s.style.display = "block";
var c = document.getElementById("dg-local-storage");
"true" === localStorage.getItem(y(e, "isLocal")) && c.setAttribute("checked", "checked");
var h = function() {
l.style.display = e.useLocalStorage ? "block" : "none"
};
h(),
p.bind(c, "change", function() {
e.useLocalStorage = !e.useLocalStorage,
h()
})
}
var u = document.getElementById("dg-new-constructor");
p.bind(u, "keydown", function(e) {
!e.metaKey || 67 !== e.which && 67 != e.keyCode || S.hide()
}),
p.bind(i, "click", function() {
u.innerHTML = JSON.stringify(e.getSaveObject(), void 0, 2),
S.show(),
u.focus(),
u.select()
}),
p.bind(n, "click", function() {
e.save()
}),
p.bind(r, "click", function() {
var t = prompt("Enter a new preset name.");
t && e.saveAs(t)
}),
p.bind(o, "click", function() {
e.revert()
})
}
function I(e) {
function t(t) {
return t.preventDefault(),
r = t.clientX,
p.addClass(e.__closeButton, V.CLASS_DRAG),
p.bind(window, "mousemove", i),
p.bind(window, "mouseup", n),
!1
}
function i(t) {
return t.preventDefault(),
e.width += r - t.clientX,
e.onResize(),
r = t.clientX,
!1
}
function n() {
p.removeClass(e.__closeButton, V.CLASS_DRAG),
p.unbind(window, "mousemove", i),
p.unbind(window, "mouseup", n)
}
e.__resize_handle = document.createElement("div"),
f.extend(e.__resize_handle.style, {
width: "6px",
marginLeft: "-3px",
height: "200px",
cursor: "ew-resize",
position: "absolute"
});
var r;
p.bind(e.__resize_handle, "mousedown", t),
p.bind(e.__closeButton, "mousedown", t),
e.domElement.insertBefore(e.__resize_handle, e.domElement.firstElementChild)
}
function E(e, t) {
e.domElement.style.width = t + "px",
e.__save_row && e.autoPlace && (e.__save_row.style.width = t + "px"),
e.__closeButton && (e.__closeButton.style.width = t + "px")
}
function b(e, t) {
var i = {};
return f.each(e.__rememberedObjects, function(n, r) {
var o = {}
, a = e.__rememberedObjectIndecesToControllers[r];
f.each(a, function(e, i) {
o[i] = t ? e.initialValue : e.getValue()
}),
i[r] = o
}),
i
}
function w(e, t, i) {
var n = document.createElement("option");
n.innerHTML = t,
n.value = t,
e.__preset_select.appendChild(n),
i && (e.__preset_select.selectedIndex = e.__preset_select.length - 1)
}
function _(e) {
for (var t = 0; t < e.__preset_select.length; t++)
e.__preset_select[t].value == e.preset && (e.__preset_select.selectedIndex = t)
}
function T(e, t) {
var i = e.__preset_select[e.__preset_select.selectedIndex];
t ? i.innerHTML = i.value + "*" : i.innerHTML = i.value
}
function x(e) {
0 != e.length && u(function() {
x(e)
}),
f.each(e, function(e) {
e.updateDisplay()
})
}
e.inject(i);
var S, M, R = "dg", P = 72, O = 20, L = "Default", D = function() {
try {
return "localStorage"in window && null !== window.localStorage
} catch (e) {
return !1
}
}(), N = !0, B = !1, F = [], V = function(e) {
function t() {
var e = i.getRoot();
e.width += 1,
f.defer(function() {
e.width -= 1
})
}
var i = this;
this.domElement = document.createElement("div"),
this.__ul = document.createElement("ul"),
this.domElement.appendChild(this.__ul),
p.addClass(this.domElement, R),
this.__folders = {},
this.__controllers = [],
this.__rememberedObjects = [],
this.__rememberedObjectIndecesToControllers = [],
this.__listening = [],
e = e || {},
e = f.defaults(e, {
autoPlace: !0,
width: V.DEFAULT_WIDTH
}),
e = f.defaults(e, {
resizable: e.autoPlace,
hideable: e.autoPlace
}),
f.isUndefined(e.load) ? e.load = {
preset: L
} : e.preset && (e.load.preset = e.preset),
f.isUndefined(e.parent) && e.hideable && F.push(this),
e.resizable = f.isUndefined(e.parent) && e.resizable,
e.autoPlace && f.isUndefined(e.scrollable) && (e.scrollable = !0);
var n, r = D && "true" === localStorage.getItem(y(this, "isLocal"));
if (Object.defineProperties(this, {
parent: {
get: function() {
return e.parent
}
},
scrollable: {
get: function() {
return e.scrollable
}
},
autoPlace: {
get: function() {
return e.autoPlace
}
},
preset: {
get: function() {
return i.parent ? i.getRoot().preset : e.load.preset
},
set: function(t) {
i.parent ? i.getRoot().preset = t : e.load.preset = t,
_(this),
i.revert()
}
},
width: {
get: function() {
return e.width
},
set: function(t) {
e.width = t,
E(i, t)
}
},
name: {
get: function() {
return e.name
},
set: function(t) {
e.name = t,
a && (a.innerHTML = e.name)
}
},
closed: {
get: function() {
return e.closed
},
set: function(t) {
e.closed = t,
e.closed ? p.addClass(i.__ul, V.CLASS_CLOSED) : p.removeClass(i.__ul, V.CLASS_CLOSED),
this.onResize(),
i.__closeButton && (i.__closeButton.innerHTML = t ? V.TEXT_OPEN : V.TEXT_CLOSED)
}
},
load: {
get: function() {
return e.load
}
},
useLocalStorage: {
get: function() {
return r
},
set: function(e) {
D && (r = e,
e ? p.bind(window, "unload", n) : p.unbind(window, "unload", n),
localStorage.setItem(y(i, "isLocal"), e))
}
}
}),
f.isUndefined(e.parent)) {
if (e.closed = !1,
p.addClass(this.domElement, V.CLASS_MAIN),
p.makeSelectable(this.domElement, !1),
D && r) {
i.useLocalStorage = !0;
var o = localStorage.getItem(y(this, "gui"));
o && (e.load = JSON.parse(o))
}
this.__closeButton = document.createElement("div"),
this.__closeButton.innerHTML = V.TEXT_CLOSED,
p.addClass(this.__closeButton, V.CLASS_CLOSE_BUTTON),
this.domElement.appendChild(this.__closeButton),
p.bind(this.__closeButton, "click", function() {
i.closed = !i.closed
})
} else {
void 0 === e.closed && (e.closed = !0);
var a = document.createTextNode(e.name);
p.addClass(a, "controller-name");
var s = m(i, a)
, l = function(e) {
return e.preventDefault(),
i.closed = !i.closed,
!1
};
p.addClass(this.__ul, V.CLASS_CLOSED),
p.addClass(s, "title"),
p.bind(s, "click", l),
e.closed || (this.closed = !1)
}
e.autoPlace && (f.isUndefined(e.parent) && (N && (M = document.createElement("div"),
p.addClass(M, R),
p.addClass(M, V.CLASS_AUTO_PLACE_CONTAINER),
document.body.appendChild(M),
N = !1),
M.appendChild(this.domElement),
p.addClass(this.domElement, V.CLASS_AUTO_PLACE)),
this.parent || E(i, e.width)),
p.bind(window, "resize", function() {
i.onResize()
}),
p.bind(this.__ul, "webkitTransitionEnd", function() {
i.onResize()
}),
p.bind(this.__ul, "transitionend", function() {
i.onResize()
}),
p.bind(this.__ul, "oTransitionEnd", function() {
i.onResize()
}),
this.onResize(),
e.resizable && I(this),
n = function() {
D && "true" === localStorage.getItem(y(i, "isLocal")) && localStorage.setItem(y(i, "gui"), JSON.stringify(i.getSaveObject()))
}
,
this.saveToLocalStorageIfPossible = n;
i.getRoot();
e.parent || t()
};
return V.toggleHide = function() {
B = !B,
f.each(F, function(e) {
e.domElement.style.zIndex = B ? -999 : 999,
e.domElement.style.opacity = B ? 0 : 1
})
}
,
V.CLASS_AUTO_PLACE = "a",
V.CLASS_AUTO_PLACE_CONTAINER = "ac",
V.CLASS_MAIN = "main",
V.CLASS_CONTROLLER_ROW = "cr",
V.CLASS_TOO_TALL = "taller-than-window",
V.CLASS_CLOSED = "closed",
V.CLASS_CLOSE_BUTTON = "close-button",
V.CLASS_DRAG = "drag",
V.DEFAULT_WIDTH = 245,
V.TEXT_CLOSED = "Close Controls",
V.TEXT_OPEN = "Open Controls",
p.bind(window, "keydown", function(e) {
"text" === document.activeElement.type || e.which !== P && e.keyCode != P || V.toggleHide()
}, !1),
f.extend(V.prototype, {
add: function(e, t) {
return g(this, e, t, {
factoryArgs: Array.prototype.slice.call(arguments, 2)
})
},
addColor: function(e, t) {
return g(this, e, t, {
color: !0
})
},
remove: function(e) {
this.__ul.removeChild(e.__li),
this.__controllers.slice(this.__controllers.indexOf(e), 1);
var t = this;
f.defer(function() {
t.onResize()
})
},
destroy: function() {
this.autoPlace && M.removeChild(this.domElement)
},
addFolder: function(e) {
if (void 0 !== this.__folders[e])
throw new Error('You already have a folder in this GUI by the name "' + e + '"');
var t = {
name: e,
parent: this
};
t.autoPlace = this.autoPlace,
this.load && this.load.folders && this.load.folders[e] && (t.closed = this.load.folders[e].closed,
t.load = this.load.folders[e]);
var i = new V(t);
this.__folders[e] = i;
var n = m(this, i.domElement);
return p.addClass(n, "folder"),
i
},
open: function() {
this.closed = !1
},
close: function() {
this.closed = !0
},
onResize: function() {
var e = this.getRoot();
if (e.scrollable) {
var t = p.getOffset(e.__ul).top
, i = 0;
f.each(e.__ul.childNodes, function(t) {
e.autoPlace && t === e.__save_row || (i += p.getHeight(t))
}),
$("#player").height() - t - O < i ? (p.addClass(e.domElement, V.CLASS_TOO_TALL),
e.__ul.style.height = $("#player").height() - t - O + "px") : (p.removeClass(e.domElement, V.CLASS_TOO_TALL),
e.__ul.style.height = "auto")
}
e.__resize_handle && f.defer(function() {
e.__resize_handle.style.height = e.__ul.offsetHeight + "px"
}),
e.__closeButton && (e.__closeButton.style.width = e.width + "px")
},
remember: function() {
if (f.isUndefined(S) && (S = new d,
S.domElement.innerHTML = t),
this.parent)
throw new Error("You can only call remember on a top level GUI.");
var e = this;
f.each(Array.prototype.slice.call(arguments), function(t) {
0 == e.__rememberedObjects.length && C(e),
e.__rememberedObjects.indexOf(t) == -1 && e.__rememberedObjects.push(t)
}),
this.autoPlace && E(this, this.width)
},
getRoot: function() {
for (var e = this; e.parent; )
e = e.parent;
return e
},
getSaveObject: function() {
var e = this.load;
return e.closed = this.closed,
this.__rememberedObjects.length > 0 && (e.preset = this.preset,
e.remembered || (e.remembered = {}),
e.remembered[this.preset] = b(this)),
e.folders = {},
f.each(this.__folders, function(t, i) {
e.folders[i] = t.getSaveObject()
}),
e
},
save: function() {
this.load.remembered || (this.load.remembered = {}),
this.load.remembered[this.preset] = b(this),
T(this, !1),
this.saveToLocalStorageIfPossible()
},
saveAs: function(e) {
this.load.remembered || (this.load.remembered = {},
this.load.remembered[L] = b(this, !0)),
this.load.remembered[e] = b(this),
this.preset = e,
w(this, e, !0),
this.saveToLocalStorageIfPossible()
},
revert: function(e) {
f.each(this.__controllers, function(t) {
this.getRoot().load.remembered ? A(e || this.getRoot(), t) : t.setValue(t.initialValue)
}, this),
f.each(this.__folders, function(e) {
e.revert(e)
}),
e || T(this.getRoot(), !1)
},
listen: function(e) {
var t = 0 == this.__listening.length;
this.__listening.push(e),
t && x(this.__listening)
}
}),
V
}(n.utils.css, '
\n\n Here\'s the new load parameter for your
GUI
\'s constructor:\n\n
\n\n
\n\n
Automatically save\n values to
localStorage
on exit.\n\n
The values saved to localStorage
will\n override those passed to dat.GUI
\'s constructor. This makes it\n easier to work incrementally, but localStorage
is fragile,\n and your friends may not see the same values you do.\n \n
\n \n
\n\n
', ".dg {\n /** Clear list styles */\n /* Auto-place container */\n /* Auto-placed GUI's */\n /* Line items that don't contain folders. */\n /** Folder names */\n /** Hides closed items */\n /** Controller row */\n /** Name-half (left) */\n /** Controller-half (right) */\n /** Controller placement */\n /** Shorter number boxes when slider is present. */\n /** Ensure the entire boolean and function row shows a hand */ }\n .dg ul {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n clear: both; }\n .dg.ac {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 0; }\n .dg:not(.ac) .main {\n /** Exclude mains in ac so that we don't hide close button */\n overflow: hidden; }\n .dg.main {\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear; }\n .dg.main.taller-than-window {\n overflow-y: auto; }\n .dg.main.taller-than-window .close-button {\n opacity: 1;\n /* TODO, these are style notes */\n margin-top: -1px;\n border-top: 1px solid #2c2c2c; }\n .dg.main ul.closed .close-button {\n opacity: 1 !important; }\n .dg.main:hover .close-button,\n .dg.main .close-button.drag {\n opacity: 1; }\n .dg.main .close-button {\n /*opacity: 0;*/\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n border: 0;\n position: absolute;\n line-height: 19px;\n height: 20px;\n /* TODO, these are style notes */\n cursor: pointer;\n text-align: center;\n background-color: #000; }\n .dg.main .close-button:hover {\n background-color: #111; }\n .dg.a {\n float: right;\n margin-right: 15px;\n overflow-x: hidden; }\n .dg.a.has-save > ul {\n margin-top: 27px; }\n .dg.a.has-save > ul.closed {\n margin-top: 0; }\n .dg.a .save-row {\n position: fixed;\n top: 0;\n z-index: 1002; }\n .dg li {\n -webkit-transition: height 0.1s ease-out;\n -o-transition: height 0.1s ease-out;\n -moz-transition: height 0.1s ease-out;\n transition: height 0.1s ease-out; }\n .dg li:not(.folder) {\n cursor: auto;\n height: 27px;\n line-height: 27px;\n overflow: hidden;\n padding: 0 4px 0 5px; }\n .dg li.folder {\n padding: 0;\n border-left: 4px solid rgba(0, 0, 0, 0); }\n .dg li.title {\n cursor: pointer;\n margin-left: -4px; }\n .dg .closed li:not(.title),\n .dg .closed ul li,\n .dg .closed ul li > * {\n height: 0;\n overflow: hidden;\n border: 0; }\n .dg .cr {\n clear: both;\n padding-left: 3px;\n height: 27px; }\n .dg .property-name {\n cursor: default;\n float: left;\n clear: left;\n width: 40%;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dg .c {\n float: left;\n width: 60%; }\n .dg .c input[type=text] {\n border: 0;\n margin-top: 4px;\n padding: 3px;\n width: 100%;\n float: right; }\n .dg .has-slider input[type=text] {\n width: 30%;\n /*display: none;*/\n margin-left: 0; }\n .dg .slider {\n float: left;\n width: 66%;\n margin-left: -5px;\n margin-right: 0;\n height: 19px;\n margin-top: 4px; }\n .dg .slider-fg {\n height: 100%; }\n .dg .c input[type=checkbox] {\n margin-top: 9px; }\n .dg .c select {\n margin-top: 5px; }\n .dg .cr.function,\n .dg .cr.function .property-name,\n .dg .cr.function *,\n .dg .cr.boolean,\n .dg .cr.boolean * {\n cursor: pointer; }\n .dg .selector {\n display: none;\n position: absolute;\n margin-left: -9px;\n margin-top: 23px;\n z-index: 10; }\n .dg .c:hover .selector,\n .dg .selector.drag {\n display: block; }\n .dg li.save-row {\n padding: 0; }\n .dg li.save-row .button {\n display: inline-block;\n padding: 0px 6px; }\n .dg.dialogue {\n background-color: #222;\n width: 460px;\n padding: 15px;\n font-size: 13px;\n line-height: 15px; }\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n padding: 10px;\n color: #222;\n font-family: Monaco, monospace;\n font-size: 10px;\n border: 0;\n resize: none;\n box-shadow: inset 1px 1px 1px #888;\n word-wrap: break-word;\n margin: 12px 0;\n display: block;\n width: 440px;\n overflow-y: scroll;\n height: 100px;\n position: relative; }\n\n#dg-local-explain {\n display: none;\n font-size: 11px;\n line-height: 17px;\n border-radius: 3px;\n background-color: #333;\n padding: 8px;\n margin-top: 10px; }\n #dg-local-explain code {\n font-size: 10px; }\n\n#dat-gui-save-locally {\n display: none; }\n\n/** Main type */\n.dg {\n color: #eee;\n font: 11px 'Lucida Grande', sans-serif;\n text-shadow: 0 -1px 0 #111;\n /** Auto place */\n /* Controller row, */\n /** Controllers */ }\n .dg.main {\n /** Scrollbar */ }\n .dg.main::-webkit-scrollbar {\n width: 5px;\n background: #1a1a1a; }\n .dg.main::-webkit-scrollbar-corner {\n height: 0;\n display: none; }\n .dg.main::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: #676767; }\n .dg li:not(.folder) {\n background: #1a1a1a;\n border-bottom: 1px solid #2c2c2c; }\n .dg li.save-row {\n line-height: 25px;\n background: #dad5cb;\n border: 0; }\n .dg li.save-row select {\n margin-left: 5px;\n width: 108px; }\n .dg li.save-row .button {\n margin-left: 5px;\n margin-top: 1px;\n border-radius: 2px;\n font-size: 9px;\n line-height: 7px;\n padding: 4px 4px 5px 4px;\n background: #c5bdad;\n color: #fff;\n text-shadow: 0 1px 0 #b0a58f;\n box-shadow: 0 -1px 0 #b0a58f;\n cursor: pointer; }\n .dg li.save-row .button.gears {\n background: #c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\n height: 7px;\n width: 8px; }\n .dg li.save-row .button:hover {\n background-color: #bab19e;\n box-shadow: 0 -1px 0 #b0a58f; }\n .dg li.folder {\n border-bottom: 0; }\n .dg li.title {\n padding-left: 16px;\n background: black url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\n cursor: pointer;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n .dg .closed li.title {\n background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\n .dg .cr.boolean {\n border-left: 3px solid #806787; }\n .dg .cr.function {\n border-left: 3px solid #e61d5f; }\n .dg .cr.number {\n border-left: 3px solid #2fa1d6; }\n .dg .cr.number input[type=text] {\n color: #2fa1d6; }\n .dg .cr.string {\n border-left: 3px solid #1ed36f; }\n .dg .cr.string input[type=text] {\n color: #1ed36f; }\n .dg .cr.function:hover, .dg .cr.boolean:hover {\n background: #111; }\n .dg .c input[type=text] {\n background: #303030;\n outline: none; }\n .dg .c input[type=text]:hover {\n background: #3c3c3c; }\n .dg .c input[type=text]:focus {\n background: #494949;\n color: #fff; }\n .dg .c .slider {\n background: #303030;\n cursor: ew-resize; }\n .dg .c .slider-fg {\n background: #2fa1d6; }\n .dg .c .slider:hover {\n background: #3c3c3c; }\n .dg .c .slider:hover .slider-fg {\n background: #44abda; }\n", n.controllers.factory = function(e, t, i, n, r, o, a) {
return function(s, l) {
var c = s[l];
return a.isArray(arguments[2]) || a.isObject(arguments[2]) ? new e(s,l,arguments[2]) : a.isNumber(c) ? a.isNumber(arguments[2]) && a.isNumber(arguments[3]) ? new i(s,l,arguments[2],arguments[3]) : new t(s,l,{
min: arguments[2],
max: arguments[3]
}) : a.isString(c) ? new n(s,l) : a.isFunction(c) ? new r(s,l,"") : a.isBoolean(c) ? new o(s,l) : void 0
}
}(n.controllers.OptionController, n.controllers.NumberControllerBox, n.controllers.NumberControllerSlider, n.controllers.StringController = function(e, t, i) {
var n = function(e, i) {
function r() {
a.setValue(a.__input.value)
}
function o() {
a.__onFinishChange && a.__onFinishChange.call(a, a.getValue())
}
n.superclass.call(this, e, i);
var a = this;
this.__input = document.createElement("input"),
this.__input.setAttribute("type", "text"),
t.bind(this.__input, "keyup", r),
t.bind(this.__input, "change", r),
t.bind(this.__input, "blur", o),
t.bind(this.__input, "keydown", function(e) {
13 === e.keyCode && this.blur()
}),
this.updateDisplay(),
this.domElement.appendChild(this.__input)
};
return n.superclass = e,
i.extend(n.prototype, e.prototype, {
updateDisplay: function() {
return t.isActive(this.__input) || (this.__input.value = this.getValue()),
n.superclass.prototype.updateDisplay.call(this)
}
}),
n
}(n.controllers.Controller, n.dom.dom, n.utils.common), n.controllers.FunctionController, n.controllers.BooleanController, n.utils.common), n.controllers.Controller, n.controllers.BooleanController, n.controllers.FunctionController, n.controllers.NumberControllerBox, n.controllers.NumberControllerSlider, n.controllers.OptionController, n.controllers.ColorController = function(e, t, i, n, r) {
function o(e, t, i, n) {
e.style.background = "",
r.each(l, function(r) {
e.style.cssText += "background: " + r + "linear-gradient(" + t + ", " + i + " 0%, " + n + " 100%); "
})
}
function a(e) {
e.style.background = "",
e.style.cssText += "background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",
e.style.cssText += "background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",
e.style.cssText += "background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",
e.style.cssText += "background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",
e.style.cssText += "background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"
}
var s = function(e, l) {
function c(e) {
p(e),
t.bind(window, "mousemove", p),
t.bind(window, "mouseup", h)
}
function h() {
t.unbind(window, "mousemove", p),
t.unbind(window, "mouseup", h)
}
function u() {
var e = n(this.value);
e !== !1 ? (g.__color.__state = e,
g.setValue(g.__color.toOriginal())) : this.value = g.__color.toString()
}
function d() {
t.unbind(window, "mousemove", f),
t.unbind(window, "mouseup", d)
}
function p(e) {
e.preventDefault();
var i = t.getWidth(g.__saturation_field)
, n = t.getOffset(g.__saturation_field)
, r = (e.clientX - n.left + document.body.scrollLeft) / i
, o = 1 - (e.clientY - n.top + document.body.scrollTop) / i;
return o > 1 ? o = 1 : o < 0 && (o = 0),
r > 1 ? r = 1 : r < 0 && (r = 0),
g.__color.v = o,
g.__color.s = r,
g.setValue(g.__color.toOriginal()),
!1
}
function f(e) {
e.preventDefault();
var i = t.getHeight(g.__hue_field)
, n = t.getOffset(g.__hue_field)
, r = 1 - (e.clientY - n.top + document.body.scrollTop) / i;
return r > 1 ? r = 1 : r < 0 && (r = 0),
g.__color.h = 360 * r,
g.setValue(g.__color.toOriginal()),
!1
}
s.superclass.call(this, e, l),
this.__color = new i(this.getValue()),
this.__temp = new i(0);
var g = this;
this.domElement = document.createElement("div"),
t.makeSelectable(this.domElement, !1),
this.__selector = document.createElement("div"),
this.__selector.className = "selector",
this.__saturation_field = document.createElement("div"),
this.__saturation_field.className = "saturation-field",
this.__field_knob = document.createElement("div"),
this.__field_knob.className = "field-knob",
this.__field_knob_border = "2px solid ",
this.__hue_knob = document.createElement("div"),
this.__hue_knob.className = "hue-knob",
this.__hue_field = document.createElement("div"),
this.__hue_field.className = "hue-field",
this.__input = document.createElement("input"),
this.__input.type = "text",
this.__input_textShadow = "0 1px 1px ",
t.bind(this.__input, "keydown", function(e) {
13 === e.keyCode && u.call(this)
}),
t.bind(this.__input, "blur", u),
t.bind(this.__selector, "mousedown", function(e) {
t.addClass(this, "drag").bind(window, "mouseup", function(e) {
t.removeClass(g.__selector, "drag")
})
});
var m = document.createElement("div");
r.extend(this.__selector.style, {
width: "122px",
height: "102px",
padding: "3px",
backgroundColor: "#222",
boxShadow: "0px 1px 3px rgba(0,0,0,0.3)"
}),
r.extend(this.__field_knob.style, {
position: "absolute",
width: "12px",
height: "12px",
border: this.__field_knob_border + (this.__color.v < .5 ? "#fff" : "#000"),
boxShadow: "0px 1px 3px rgba(0,0,0,0.5)",
borderRadius: "12px",
zIndex: 1
}),
r.extend(this.__hue_knob.style, {
position: "absolute",
width: "15px",
height: "2px",
borderRight: "4px solid #fff",
zIndex: 1
}),
r.extend(this.__saturation_field.style, {
width: "100px",
height: "100px",
border: "1px solid #555",
marginRight: "3px",
display: "inline-block",
cursor: "pointer"
}),
r.extend(m.style, {
width: "100%",
height: "100%",
background: "none"
}),
o(m, "top", "rgba(0,0,0,0)", "#000"),
r.extend(this.__hue_field.style, {
width: "15px",
height: "100px",
display: "inline-block",
border: "1px solid #555",
cursor: "ns-resize"
}),
a(this.__hue_field),
r.extend(this.__input.style, {
outline: "none",
textAlign: "center",
color: "#fff",
border: 0,
fontWeight: "bold",
textShadow: this.__input_textShadow + "rgba(0,0,0,0.7)"
}),
t.bind(this.__saturation_field, "mousedown", c),
t.bind(this.__field_knob, "mousedown", c),
t.bind(this.__hue_field, "mousedown", function(e) {
f(e),
t.bind(window, "mousemove", f),
t.bind(window, "mouseup", d)
}),
this.__saturation_field.appendChild(m),
this.__selector.appendChild(this.__field_knob),
this.__selector.appendChild(this.__saturation_field),
this.__selector.appendChild(this.__hue_field),
this.__hue_field.appendChild(this.__hue_knob),
this.domElement.appendChild(this.__input),
this.domElement.appendChild(this.__selector),
this.updateDisplay()
};
s.superclass = e,
r.extend(s.prototype, e.prototype, {
updateDisplay: function() {
var e = n(this.getValue());
if (e !== !1) {
var t = !1;
r.each(i.COMPONENTS, function(i) {
if (!r.isUndefined(e[i]) && !r.isUndefined(this.__color.__state[i]) && e[i] !== this.__color.__state[i])
return t = !0,
{}
}, this),
t && r.extend(this.__color.__state, e)
}
r.extend(this.__temp.__state, this.__color.__state),
this.__temp.a = 1;
var a = this.__color.v < .5 || this.__color.s > .5 ? 255 : 0
, s = 255 - a;
r.extend(this.__field_knob.style, {
marginLeft: 100 * this.__color.s - 7 + "px",
marginTop: 100 * (1 - this.__color.v) - 7 + "px",
backgroundColor: this.__temp.toString(),
border: this.__field_knob_border + "rgb(" + a + "," + a + "," + a + ")"
}),
this.__hue_knob.style.marginTop = 100 * (1 - this.__color.h / 360) + "px",
this.__temp.s = 1,
this.__temp.v = 1,
o(this.__saturation_field, "left", "#fff", this.__temp.toString()),
r.extend(this.__input.style, {
backgroundColor: this.__input.value = this.__color.toString(),
color: "rgb(" + a + "," + a + "," + a + ")",
textShadow: this.__input_textShadow + "rgba(" + s + "," + s + "," + s + ",.7)"
})
}
});
var l = ["-moz-", "-o-", "-webkit-", "-ms-", ""];
return s
}(n.controllers.Controller, n.dom.dom, n.color.Color = function(e, t, i, n) {
function r(e, t, i) {
Object.defineProperty(e, t, {
get: function() {
return "RGB" === this.__state.space ? this.__state[t] : (a(this, t, i),
this.__state[t])
},
set: function(e) {
"RGB" !== this.__state.space && (a(this, t, i),
this.__state.space = "RGB"),
this.__state[t] = e
}
})
}
function o(e, t) {
Object.defineProperty(e, t, {
get: function() {
return "HSV" === this.__state.space ? this.__state[t] : (s(this),
this.__state[t])
},
set: function(e) {
"HSV" !== this.__state.space && (s(this),
this.__state.space = "HSV"),
this.__state[t] = e
}
})
}
function a(e, i, r) {
if ("HEX" === e.__state.space)
e.__state[i] = t.component_from_hex(e.__state.hex, r);
else {
if ("HSV" !== e.__state.space)
throw "Corrupted color state";
n.extend(e.__state, t.hsv_to_rgb(e.__state.h, e.__state.s, e.__state.v))
}
}
function s(e) {
var i = t.rgb_to_hsv(e.r, e.g, e.b);
n.extend(e.__state, {
s: i.s,
v: i.v
}),
n.isNaN(i.h) ? n.isUndefined(e.__state.h) && (e.__state.h = 0) : e.__state.h = i.h
}
var l = function() {
if (this.__state = e.apply(this, arguments),
this.__state === !1)
throw "Failed to interpret color arguments";
this.__state.a = this.__state.a || 1
};
return l.COMPONENTS = ["r", "g", "b", "h", "s", "v", "hex", "a"],
n.extend(l.prototype, {
toString: function() {
return i(this)
},
toOriginal: function() {
return this.__state.conversion.write(this)
}
}),
r(l.prototype, "r", 2),
r(l.prototype, "g", 1),
r(l.prototype, "b", 0),
o(l.prototype, "h"),
o(l.prototype, "s"),
o(l.prototype, "v"),
Object.defineProperty(l.prototype, "a", {
get: function() {
return this.__state.a
},
set: function(e) {
this.__state.a = e
}
}),
Object.defineProperty(l.prototype, "hex", {
get: function() {
return "HEX" !== !this.__state.space && (this.__state.hex = t.rgb_to_hex(this.r, this.g, this.b)),
this.__state.hex
},
set: function(e) {
this.__state.space = "HEX",
this.__state.hex = e
}
}),
l
}(n.color.interpret, n.color.math = function() {
var e;
return {
hsv_to_rgb: function(e, t, i) {
var n = Math.floor(e / 60) % 6
, r = e / 60 - Math.floor(e / 60)
, o = i * (1 - t)
, a = i * (1 - r * t)
, s = i * (1 - (1 - r) * t)
, l = [[i, s, o], [a, i, o], [o, i, s], [o, a, i], [s, o, i], [i, o, a]][n];
return {
r: 255 * l[0],
g: 255 * l[1],
b: 255 * l[2]
}
},
rgb_to_hsv: function(e, t, i) {
var n, r, o = Math.min(e, t, i), a = Math.max(e, t, i), s = a - o;
return 0 == a ? {
h: NaN,
s: 0,
v: 0
} : (r = s / a,
n = e == a ? (t - i) / s : t == a ? 2 + (i - e) / s : 4 + (e - t) / s,
n /= 6,
n < 0 && (n += 1),
{
h: 360 * n,
s: r,
v: a / 255
})
},
rgb_to_hex: function(e, t, i) {
var n = this.hex_with_component(0, 2, e);
return n = this.hex_with_component(n, 1, t),
n = this.hex_with_component(n, 0, i)
},
component_from_hex: function(e, t) {
return e >> 8 * t & 255
},
hex_with_component: function(t, i, n) {
return n << (e = 8 * i) | t & ~(255 << e)
}
}
}(), n.color.toString, n.utils.common), n.color.interpret, n.utils.common), n.utils.requestAnimationFrame = function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(e, t) {
window.setTimeout(e, 1e3 / 60)
}
}(), n.dom.CenteredDiv = function(e, t) {
var i = function() {
this.backgroundElement = document.createElement("div"),
t.extend(this.backgroundElement.style, {
backgroundColor: "rgba(0,0,0,0.8)",
top: 0,
left: 0,
display: "none",
zIndex: "1000",
opacity: 0,
WebkitTransition: "opacity 0.2s linear"
}),
e.makeFullscreen(this.backgroundElement),
this.backgroundElement.style.position = "fixed",
this.domElement = document.createElement("div"),
t.extend(this.domElement.style, {
position: "fixed",
display: "none",
zIndex: "1001",
opacity: 0,
WebkitTransition: "-webkit-transform 0.2s ease-out, opacity 0.2s linear"
}),
document.body.appendChild(this.backgroundElement),
document.body.appendChild(this.domElement);
var i = this;
e.bind(this.backgroundElement, "click", function() {
i.hide()
})
};
return i.prototype.show = function() {
var e = this;
this.backgroundElement.style.display = "block",
this.domElement.style.display = "block",
this.domElement.style.opacity = 0,
this.domElement.style.webkitTransform = "scale(1.1)",
this.layout(),
t.defer(function() {
e.backgroundElement.style.opacity = 1,
e.domElement.style.opacity = 1,
e.domElement.style.webkitTransform = "scale(1)"
})
}
,
i.prototype.hide = function() {
var t = this
, i = function() {
t.domElement.style.display = "none",
t.backgroundElement.style.display = "none",
e.unbind(t.domElement, "webkitTransitionEnd", i),
e.unbind(t.domElement, "transitionend", i),
e.unbind(t.domElement, "oTransitionEnd", i)
};
e.bind(this.domElement, "webkitTransitionEnd", i),
e.bind(this.domElement, "transitionend", i),
e.bind(this.domElement, "oTransitionEnd", i),
this.backgroundElement.style.opacity = 0,
this.domElement.style.opacity = 0,
this.domElement.style.webkitTransform = "scale(1.1)"
}
,
i.prototype.layout = function() {
this.domElement.style.left = $("#player").width() / 2 - e.getWidth(this.domElement) / 2 + "px",
this.domElement.style.top = $("#player").height() / 2 - e.getHeight(this.domElement) / 2 + "px"
}
,
i
}(n.dom.dom, n.utils.common), n.dom.dom, n.utils.common)
}
, {}],
94: [function(e, t, i) {
(function(e) {
"use strict";
function i(t) {
function i(e) {
for (var t = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], i = 0; i < 64; i++) {
var n = _((t[i] * e + 50) / 100);
n < 1 ? n = 1 : n > 255 && (n = 255),
T[G[i]] = n
}
for (var r = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], o = 0; o < 64; o++) {
var a = _((r[o] * e + 50) / 100);
a < 1 ? a = 1 : a > 255 && (a = 255),
x[G[o]] = a
}
for (var s = [1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379], l = 0, c = 0; c < 8; c++)
for (var h = 0; h < 8; h++)
S[l] = 1 / (T[G[l]] * s[c] * s[h] * 8),
M[l] = 1 / (x[G[l]] * s[c] * s[h] * 8),
l++
}
function n(e, t) {
for (var i = 0, n = 0, r = new Array, o = 1; o <= 16; o++) {
for (var a = 1; a <= e[o]; a++)
r[t[n]] = [],
r[t[n]][0] = i,
r[t[n]][1] = o,
n++,
i++;
i *= 2
}
return r
}
function r() {
C = n(z, W),
I = n(X, Z),
E = n(j, Y),
b = n(q, K)
}
function o() {
for (var e = 1, t = 2, i = 1; i <= 15; i++) {
for (var n = e; n < t; n++)
P[32767 + n] = i,
R[32767 + n] = [],
R[32767 + n][1] = i,
R[32767 + n][0] = n;
for (var r = -(t - 1); r <= -e; r++)
P[32767 + r] = i,
R[32767 + r] = [],
R[32767 + r][1] = i,
R[32767 + r][0] = t - 1 + r;
e <<= 1,
t <<= 1
}
}
function a() {
for (var e = 0; e < 256; e++)
H[e] = 19595 * e,
H[e + 256 >> 0] = 38470 * e,
H[e + 512 >> 0] = 7471 * e + 32768,
H[e + 768 >> 0] = -11059 * e,
H[e + 1024 >> 0] = -21709 * e,
H[e + 1280 >> 0] = 32768 * e + 8421375,
H[e + 1536 >> 0] = -27439 * e,
H[e + 1792 >> 0] = -5329 * e
}
function s(e) {
for (var t = e[0], i = e[1] - 1; i >= 0; )
t & 1 << i && (N |= 1 << B),
i--,
B--,
B < 0 && (255 == N ? (l(255),
l(0)) : l(N),
B = 7,
N = 0)
}
function l(e) {
D.push(e)
}
function c(e) {
l(e >> 8 & 255),
l(255 & e)
}
function h(e, t) {
var i, n, r, o, a, s, l, c, h, u = 0, d = 8, p = 64;
for (h = 0; h < d; ++h) {
i = e[u],
n = e[u + 1],
r = e[u + 2],
o = e[u + 3],
a = e[u + 4],
s = e[u + 5],
l = e[u + 6],
c = e[u + 7];
var f = i + c
, g = i - c
, m = n + l
, v = n - l
, A = r + s
, y = r - s
, C = o + a
, I = o - a
, E = f + C
, b = f - C
, w = m + A
, _ = m - A;
e[u] = E + w,
e[u + 4] = E - w;
var T = .707106781 * (_ + b);
e[u + 2] = b + T,
e[u + 6] = b - T,
E = I + y,
w = y + v,
_ = v + g;
var x = .382683433 * (E - _)
, S = .5411961 * E + x
, M = 1.306562965 * _ + x
, R = .707106781 * w
, P = g + R
, L = g - R;
e[u + 5] = L + S,
e[u + 3] = L - S,
e[u + 1] = P + M,
e[u + 7] = P - M,
u += 8
}
for (u = 0,
h = 0; h < d; ++h) {
i = e[u],
n = e[u + 8],
r = e[u + 16],
o = e[u + 24],
a = e[u + 32],
s = e[u + 40],
l = e[u + 48],
c = e[u + 56];
var D = i + c
, N = i - c
, B = n + l
, F = n - l
, V = r + s
, U = r - s
, k = o + a
, H = o - a
, G = D + k
, z = D - k
, W = B + V
, j = B - V;
e[u] = G + W,
e[u + 32] = G - W;
var Y = .707106781 * (j + z);
e[u + 16] = z + Y,
e[u + 48] = z - Y,
G = H + U,
W = U + F,
j = F + N;
var X = .382683433 * (G - j)
, Z = .5411961 * G + X
, q = 1.306562965 * j + X
, K = .707106781 * W
, Q = N + K
, J = N - K;
e[u + 40] = J + Z,
e[u + 24] = J - Z,
e[u + 8] = Q + q,
e[u + 56] = Q - q,
u++
}
var $;
for (h = 0; h < p; ++h)
$ = e[h] * t[h],
O[h] = $ > 0 ? $ + .5 | 0 : $ - .5 | 0;
return O
}
function u() {
c(65504),
c(16),
l(74),
l(70),
l(73),
l(70),
l(0),
l(1),
l(1),
l(0),
c(1),
c(1),
l(0),
l(0)
}
function d(e, t) {
c(65472),
c(17),
l(8),
c(t),
c(e),
l(3),
l(1),
l(17),
l(0),
l(2),
l(17),
l(1),
l(3),
l(17),
l(1)
}
function p() {
c(65499),
c(132),
l(0);
for (var e = 0; e < 64; e++)
l(T[e]);
l(1);
for (var t = 0; t < 64; t++)
l(x[t])
}
function f() {
c(65476),
c(418),
l(0);
for (var e = 0; e < 16; e++)
l(z[e + 1]);
for (var t = 0; t <= 11; t++)
l(W[t]);
l(16);
for (var i = 0; i < 16; i++)
l(j[i + 1]);
for (var n = 0; n <= 161; n++)
l(Y[n]);
l(1);
for (var r = 0; r < 16; r++)
l(X[r + 1]);
for (var o = 0; o <= 11; o++)
l(Z[o]);
l(17);
for (var a = 0; a < 16; a++)
l(q[a + 1]);
for (var s = 0; s <= 161; s++)
l(K[s])
}
function g() {
c(65498),
c(12),
l(3),
l(1),
l(0),
l(2),
l(17),
l(3),
l(17),
l(0),
l(63),
l(0)
}
function m(e, t, i, n, r) {
for (var o, a = r[0], l = r[240], c = 16, u = 63, d = 64, p = h(e, t), f = 0; f < d; ++f)
L[G[f]] = p[f];
var g = L[0] - i;
i = L[0],
0 == g ? s(n[0]) : (o = 32767 + g,
s(n[P[o]]),
s(R[o]));
for (var m = 63; m > 0 && 0 == L[m]; m--)
;
if (0 == m)
return s(a),
i;
for (var v, A = 1; A <= m; ) {
for (var y = A; 0 == L[A] && A <= m; ++A)
;
var C = A - y;
if (C >= c) {
v = C >> 4;
for (var I = 1; I <= v; ++I)
s(l);
C &= 15
}
o = 32767 + L[A],
s(r[(C << 4) + P[o]]),
s(R[o]),
A++
}
return m != u && s(a),
i
}
function v() {
for (var e = String.fromCharCode, t = 0; t < 256; t++)
k[t] = e(t)
}
function A(e) {
if (e <= 0 && (e = 1),
e > 100 && (e = 100),
w != e) {
var t = 0;
t = e < 50 ? Math.floor(5e3 / e) : Math.floor(200 - 2 * e),
i(t),
w = e
}
}
function y() {
var e = (new Date).getTime();
t || (t = 50),
v(),
r(),
o(),
a(),
A(t);
(new Date).getTime() - e
}
var C, I, E, b, w, _ = (Math.round,
Math.floor), T = new Array(64), x = new Array(64), S = new Array(64), M = new Array(64), R = new Array(65535), P = new Array(65535), O = new Array(64), L = new Array(64), D = [], N = 0, B = 7, F = new Array(64), V = new Array(64), U = new Array(64), k = new Array(256), H = new Array(2048), G = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63], z = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], W = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], j = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125], Y = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250], X = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], Z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], q = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119], K = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];
this.encode = function(t, i) {
var n = ((new Date).getTime(),
i.quality);
n && A(n),
D = new Array,
N = 0,
B = 7,
c(65496),
u(),
p(),
d(t.width, t.height),
f(),
g();
var r = 0
, o = 0
, a = 0;
N = 0,
B = 7,
this.encode.displayName = "_encode_";
for (var l, h, v, y, w, _, T, x, R, P = t.data, O = t.width, L = t.height, k = i.flipY, G = 4 * O, z = k ? L : 0, W = k ? -8 : 8; k && z > 0 || !k && z < L; ) {
for (l = 0; l < G; ) {
for (w = G * z + l,
_ = w,
T = -1,
x = 0,
R = 0; R < 64; R++)
x = (k ? 63 - R : R) >> 3,
T = 4 * (7 & R),
_ = w + x * G + T,
z + x >= L && (_ -= G * (z + 1 + x - L)),
l + T >= G && (_ -= l + T - G + 4),
h = P[_++],
v = P[_++],
y = P[_++],
F[R] = (H[h] + H[v + 256 >> 0] + H[y + 512 >> 0] >> 16) - 128,
V[R] = (H[h + 768 >> 0] + H[v + 1024 >> 0] + H[y + 1280 >> 0] >> 16) - 128,
U[R] = (H[h + 1280 >> 0] + H[v + 1536 >> 0] + H[y + 1792 >> 0] >> 16) - 128;
r = m(F, S, r, C, E),
o = m(V, M, o, I, b),
a = m(U, M, a, I, b),
l += 32
}
z += W
}
if (B >= 0) {
var j = [];
j[1] = B + 1,
j[0] = (1 << B + 1) - 1,
s(j)
}
return c(65497),
new e(D)
}
,
y()
}
function n(e, t) {
t = t || {},
t.quality = t.quality || 50;
var n = t.quality
, r = new i(n)
, o = r.encode(e, t);
return {
data: o,
width: e.width,
height: e.height
}
}
t.exports.encode = n
}
).call(this, e("buffer").Buffer)
}
, {
buffer: 198
}],
95: [function(e, t, i) {
"use strict";
!function() {
if ("performance"in window == !1 && (window.performance = {}),
Date.now = Date.now || function() {
return (new Date).getTime()
}
,
"now"in window.performance == !1) {
var e = Date.now();
performance.timing && performance.timing.navigationStart && (e = performance.timing.navigationStart),
window.performance.now = function() {
return Date.now() - e
}
}
}()
}
, {}],
96: [function(e, t, i) {
"use strict";
var n = e("three");
n.EffectComposer = function(e, t) {
if (this.renderer = e,
void 0 === t) {
var i = {
minFilter: n.LinearFilter,
magFilter: n.LinearFilter,
format: n.RGBAFormat,
stencilBuffer: !1
}
, r = e.getSize();
t = new n.WebGLRenderTarget(r.width,r.height,i)
}
this.renderTarget1 = t,
this.renderTarget2 = t.clone(),
this.writeBuffer = this.renderTarget1,
this.readBuffer = this.renderTarget2,
this.passes = [],
void 0 === n.CopyShader && console.error("THREE.EffectComposer relies on THREE.CopyShader"),
this.copyPass = new n.ShaderPass(n.CopyShader)
}
,
n.EffectComposer.prototype = {
swapBuffers: function() {
var e = this.readBuffer;
this.readBuffer = this.writeBuffer,
this.writeBuffer = e
},
addPass: function(e) {
this.passes.push(e)
},
insertPass: function(e, t) {
this.passes.splice(t, 0, e)
},
render: function(e) {
this.writeBuffer = this.renderTarget1,
this.readBuffer = this.renderTarget2;
var t, i, r = !1, o = this.passes.length;
for (i = 0; i < o; i++)
if (t = this.passes[i],
t.enabled) {
if (t.render(this.renderer, this.writeBuffer, this.readBuffer, e, r),
t.needsSwap) {
if (r) {
var a = this.renderer.context;
a.stencilFunc(a.NOTEQUAL, 1, 4294967295),
this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e),
a.stencilFunc(a.EQUAL, 1, 4294967295)
}
this.swapBuffers()
}
t instanceof n.MaskPass ? r = !0 : t instanceof n.ClearMaskPass && (r = !1)
}
},
reset: function(e) {
if (void 0 === e) {
var t = this.renderer.getSize();
e = this.renderTarget1.clone(),
e.setSize(t.width, t.height)
}
this.renderTarget1.dispose(),
this.renderTarget2.dispose(),
this.renderTarget1 = e,
this.renderTarget2 = e.clone(),
this.writeBuffer = this.renderTarget1,
this.readBuffer = this.renderTarget2
},
setSize: function(e, t) {
this.renderTarget1.setSize(e, t),
this.renderTarget2.setSize(e, t)
this.passes.forEach(a=>{//add
a.setSize && a.setSize(e, t)
})
}
}
}
, {
three: 217
}],
97: [function(e, t, i) {
"use strict";
var n = e("three");
n.MaskPass = function(e, t) {
this.scene = e,
this.camera = t,
this.enabled = !0,
this.clear = !0,
this.needsSwap = !1,
this.inverse = !1
}
,
n.MaskPass.prototype = {
render: function(e, t, i, n) {
var r = e.context;
r.colorMask(!1, !1, !1, !1),
r.depthMask(!1);
var o, a;
this.inverse ? (o = 0,
a = 1) : (o = 1,
a = 0),
r.enable(r.STENCIL_TEST),
r.stencilOp(r.REPLACE, r.REPLACE, r.REPLACE),
r.stencilFunc(r.ALWAYS, o, 4294967295),
r.clearStencil(a),
e.render(this.scene, this.camera, i, this.clear),
e.render(this.scene, this.camera, t, this.clear),
r.colorMask(!0, !0, !0, !0),
r.depthMask(!0),
r.stencilFunc(r.EQUAL, 1, 4294967295),
r.stencilOp(r.KEEP, r.KEEP, r.KEEP)
}
},
n.ClearMaskPass = function() {
this.enabled = !0
}
,
n.ClearMaskPass.prototype = {
render: function(e, t, i, n) {
var r = e.context;
r.disable(r.STENCIL_TEST)
}
}
}
, {
three: 217
}],
98: [function(e, t, i) {
"use strict";
var n = e("three");
n.RenderPass = function(e, t, i, r, o) {
this.scene = e,
this.camera = t,
this.overrideMaterial = i,
this.clearColor = r,
this.clearAlpha = void 0 !== o ? o : 1,
this.oldClearColor = new n.Color,
this.oldClearAlpha = 1,
this.enabled = !0,
this.clear = !0,
this.needsSwap = !1
}
,
n.RenderPass.prototype = {
render: function(e, t, i, n) {
this.scene.overrideMaterial = this.overrideMaterial,
this.clearColor && (this.oldClearColor.copy(e.getClearColor()),
this.oldClearAlpha = e.getClearAlpha(),
e.setClearColor(this.clearColor, this.clearAlpha)),
e.render(this.scene, this.camera, i, this.clear),
this.clearColor && e.setClearColor(this.oldClearColor, this.oldClearAlpha),
this.scene.overrideMaterial = null
}
}
}
, {
three: 217
}],
99: [function(e, t, i) {
"use strict";
var n = e("three");
n.ShaderPass = function(e, t) {
this.textureID = void 0 !== t ? t : "tDiffuse",
e instanceof n.ShaderMaterial ? (this.uniforms = e.uniforms,
this.material = e) : e && (this.uniforms = n.UniformsUtils.clone(e.uniforms),
this.material = new n.ShaderMaterial({
defines: e.defines || {},
uniforms: this.uniforms,
vertexShader: e.vertexShader,
fragmentShader: e.fragmentShader
})),
this.renderToScreen = !1,
this.enabled = !0,
this.needsSwap = !0,
this.clear = !1,
this.camera = new n.OrthographicCamera(-1,1,1,-1,0,1),
this.scene = new n.Scene,
this.quad = new n.Mesh(new n.PlaneBufferGeometry(2,2),null),
this.scene.add(this.quad)
}
,
n.ShaderPass.prototype = {
render: function(e, t, i, n) {
this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = i),
this.quad.material = this.material,
this.renderToScreen ? e.render(this.scene, this.camera) : e.render(this.scene, this.camera, t, this.clear)
}
}
}
, {
three: 217
}],
100: [function(e, t, i) {
"use strict";
var n = e("three");
n.CopyShader = {
uniforms: {
tDiffuse: {
type: "t",
value: null
},
opacity: {
type: "f",
value: 1
}
},
vertexShader: ["varying vec2 vUv;", "void main() {", "vUv = uv;", "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", "}"].join("\n"),
fragmentShader: ["uniform float opacity;", "uniform sampler2D tDiffuse;", "varying vec2 vUv;", "void main() {", "vec4 texel = texture2D( tDiffuse, vUv );", "gl_FragColor = opacity * texel;", "}"].join("\n")
}
}
, {
three: 217
}],
101: [function(e, t, i) {
"use strict";
var n = e("three");
n.HorizontalBlurShader = {
uniforms: {
tDiffuse: {
type: "t",
value: null
},
h: {
type: "f",
value: 1 / 512
}
},
vertexShader: ["varying vec2 vUv;", "void main() {", "vUv = uv;", "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", "}"].join("\n"),
fragmentShader: ["uniform sampler2D tDiffuse;", "uniform float h;", "varying vec2 vUv;", "void main() {", "vec4 sum = vec4( 0.0 );", "sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;", "sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;", "sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;", "sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;", "sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;", "sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;", "sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;", "sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;", "gl_FragColor = sum;", "}"].join("\n")
}
}
, {
three: 217
}],
102: [function(e, t, i) {
"use strict";
var n = e("three");
n.VerticalBlurShader = {
uniforms: {
tDiffuse: {
type: "t",
value: null
},
v: {
type: "f",
value: 1 / 512
}
},
vertexShader: ["varying vec2 vUv;", "void main() {", "vUv = uv;", "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", "}"].join("\n"),
fragmentShader: ["uniform sampler2D tDiffuse;", "uniform float v;", "varying vec2 vUv;", "void main() {", "vec4 sum = vec4( 0.0 );", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;", "sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;", "gl_FragColor = sum;", "}"].join("\n")
}
}
, {
three: 217
}],
103: [function(e, t, i) {
"use strict";
var n = e("three");
!function() {
if ("performance"in window == 0 && (window.performance = {}),
"now"in window.performance == 0) {
var e = Date.now();
performance.timing && performance.timing.navigationStart && (e = performance.timing.navigationStart),
window.performance.now = function() {
return Date.now() - e
}
}
}(),
n.WebGLRenderer.prototype.paramThreeToGL = function(e) {
var t, i = this.extensions, r = this.context;
if (e === n.RepeatWrapping)
return r.REPEAT;
if (e === n.ClampToEdgeWrapping)
return r.CLAMP_TO_EDGE;
if (e === n.MirroredRepeatWrapping)
return r.MIRRORED_REPEAT;
if (e === n.NearestFilter)
return r.NEAREST;
if (e === n.NearestMipMapNearestFilter)
return r.NEAREST_MIPMAP_NEAREST;
if (e === n.NearestMipMapLinearFilter)
return r.NEAREST_MIPMAP_LINEAR;
if (e === n.LinearFilter)
return r.LINEAR;
if (e === n.LinearMipMapNearestFilter)
return r.LINEAR_MIPMAP_NEAREST;
if (e === n.LinearMipMapLinearFilter)
return r.LINEAR_MIPMAP_LINEAR;
if (e === n.UnsignedByteType)
return r.UNSIGNED_BYTE;
if (e === n.UnsignedShort4444Type)
return r.UNSIGNED_SHORT_4_4_4_4;
if (e === n.UnsignedShort5551Type)
return r.UNSIGNED_SHORT_5_5_5_1;
if (e === n.UnsignedShort565Type)
return r.UNSIGNED_SHORT_5_6_5;
if (e === n.ByteType)
return r.BYTE;
if (e === n.ShortType)
return r.SHORT;
if (e === n.UnsignedShortType)
return r.UNSIGNED_SHORT;
if (e === n.IntType)
return r.INT;
if (e === n.UnsignedIntType)
return r.UNSIGNED_INT;
if (e === n.FloatType)
return r.FLOAT;
if (t = i.get("OES_texture_half_float"),
null !== t && e === n.HalfFloatType)
return t.HALF_FLOAT_OES;
if (e === n.AlphaFormat)
return r.ALPHA;
if (e === n.RGBFormat)
return r.RGB;
if (e === n.RGBAFormat)
return r.RGBA;
if (e === n.LuminanceFormat)
return r.LUMINANCE;
if (e === n.LuminanceAlphaFormat)
return r.LUMINANCE_ALPHA;
if (e === n.AddEquation)
return r.FUNC_ADD;
if (e === n.SubtractEquation)
return r.FUNC_SUBTRACT;
if (e === n.ReverseSubtractEquation)
return r.FUNC_REVERSE_SUBTRACT;
if (e === n.ZeroFactor)
return r.ZERO;
if (e === n.OneFactor)
return r.ONE;
if (e === n.SrcColorFactor)
return r.SRC_COLOR;
if (e === n.OneMinusSrcColorFactor)
return r.ONE_MINUS_SRC_COLOR;
if (e === n.SrcAlphaFactor)
return r.SRC_ALPHA;
if (e === n.OneMinusSrcAlphaFactor)
return r.ONE_MINUS_SRC_ALPHA;
if (e === n.DstAlphaFactor)
return r.DST_ALPHA;
if (e === n.OneMinusDstAlphaFactor)
return r.ONE_MINUS_DST_ALPHA;
if (e === n.DstColorFactor)
return r.DST_COLOR;
if (e === n.OneMinusDstColorFactor)
return r.ONE_MINUS_DST_COLOR;
if (e === n.SrcAlphaSaturateFactor)
return r.SRC_ALPHA_SATURATE;
if (t = i.get("WEBGL_compressed_texture_s3tc"),
null !== t) {
if (e === n.RGB_S3TC_DXT1_Format)
return t.COMPRESSED_RGB_S3TC_DXT1_EXT;
if (e === n.RGBA_S3TC_DXT1_Format)
return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;
if (e === n.RGBA_S3TC_DXT3_Format)
return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;
if (e === n.RGBA_S3TC_DXT5_Format)
return t.COMPRESSED_RGBA_S3TC_DXT5_EXT
}
if (t = i.get("WEBGL_compressed_texture_pvrtc"),
null !== t) {
if (e === n.RGB_PVRTC_4BPPV1_Format)
return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
if (e === n.RGB_PVRTC_2BPPV1_Format)
return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
if (e === n.RGBA_PVRTC_4BPPV1_Format)
return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
if (e === n.RGBA_PVRTC_2BPPV1_Format)
return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
}
if (t = i.get("WEBGL_compressed_texture_etc1"),
null !== t && e === n.RGB_ETC1_Format)
return t.COMPRESSED_RGB_ETC1_WEBGL;
if (t = i.get("EXT_blend_minmax"),
null !== t) {
if (e === n.MinEquation)
return t.MIN_EXT;
if (e === n.MaxEquation)
return t.MAX_EXT
}
return 0
}
,
n.WebGLState = function(e, t, i) {
var r = this
, o = new n.Vector4
, a = e.getParameter(e.MAX_VERTEX_ATTRIBS)
, s = new Uint8Array(a)
, l = new Uint8Array(a)
, c = new Uint8Array(a)
, h = {}
, u = null
, d = null
, p = null
, f = null
, g = null
, m = null
, v = null
, A = null
, y = !1
, C = null
, I = null
, E = null
, b = null
, w = null
, _ = null
, T = null
, x = null
, S = null
, M = null
, R = null
, P = null
, O = null
, L = null
, D = null
, N = e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)
, B = void 0
, F = {}
, V = new n.Vector4
, U = null
, k = null
, H = new n.Vector4
, G = new n.Vector4;
this.init = function() {
this.clearColor(0, 0, 0, 1),
this.clearDepth(1),
this.clearStencil(0),
this.enable(e.DEPTH_TEST),
e.depthFunc(e.LEQUAL),
e.frontFace(e.CCW),
e.cullFace(e.BACK),
this.enable(e.CULL_FACE),
this.enable(e.BLEND),
e.blendEquation(e.FUNC_ADD),
e.blendFunc(e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA)
}
,
this.initAttributes = function() {
for (var e = 0, t = s.length; e < t; e++)
s[e] = 0
}
,
this.enableAttribute = function(i) {
if (s[i] = 1,
0 === l[i] && (e.enableVertexAttribArray(i),
l[i] = 1),
0 !== c[i]) {
var n = t.get("ANGLE_instanced_arrays");
n.vertexAttribDivisorANGLE(i, 0),
c[i] = 0
}
}
,
this.enableAttributeAndDivisor = function(t, i, n) {
s[t] = 1,
0 === l[t] && (e.enableVertexAttribArray(t),
l[t] = 1),
c[t] !== i && (n.vertexAttribDivisorANGLE(t, i),
c[t] = i)
}
,
this.disableUnusedAttributes = function() {
for (var t = 0, i = l.length; t < i; t++)
l[t] !== s[t] && (e.disableVertexAttribArray(t),
l[t] = 0)
}
,
this.enable = function(t) {
h[t] !== !0 && (e.enable(t),
h[t] = !0)
}
,
this.disable = function(t) {
h[t] !== !1 && (e.disable(t),
h[t] = !1)
}
,
this.getCompressedTextureFormats = function() {
if (null === u && (u = [],
t.get("WEBGL_compressed_texture_pvrtc") || t.get("WEBGL_compressed_texture_s3tc") || t.get("WEBGL_compressed_texture_etc1")))
for (var i = e.getParameter(e.COMPRESSED_TEXTURE_FORMATS), n = 0; n < i.length; n++)
u.push(i[n]);
return u
}
,
this.setBlending = function(t, r, o, a, s, l, c, h) {
t === n.NoBlending ? this.disable(e.BLEND) : this.enable(e.BLEND),
t === d && h === y || (t === n.AdditiveBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD),
e.blendFuncSeparate(e.ONE, e.ONE, e.ONE, e.ONE)) : (e.blendEquation(e.FUNC_ADD),
e.blendFunc(e.SRC_ALPHA, e.ONE)) : t === n.SubtractiveBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD),
e.blendFuncSeparate(e.ZERO, e.ZERO, e.ONE_MINUS_SRC_COLOR, e.ONE_MINUS_SRC_ALPHA)) : (e.blendEquation(e.FUNC_ADD),
e.blendFunc(e.ZERO, e.ONE_MINUS_SRC_COLOR)) : t === n.MultiplyBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD),
e.blendFuncSeparate(e.ZERO, e.ZERO, e.SRC_COLOR, e.SRC_ALPHA)) : (e.blendEquation(e.FUNC_ADD),
e.blendFunc(e.ZERO, e.SRC_COLOR)) : h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD),
e.blendFuncSeparate(e.ONE, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA)) : (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD),
e.blendFuncSeparate(e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA)),
d = t,
y = h),
t === n.CustomBlending ? (s = s || r,
l = l || o,
c = c || a,
r === p && s === m || (e.blendEquationSeparate(i(r), i(s)),
p = r,
m = s),
o === f && a === g && l === v && c === A || (e.blendFuncSeparate(i(o), i(a), i(l), i(c)),
f = o,
g = a,
v = l,
A = c)) : (p = null,
f = null,
g = null,
m = null,
v = null,
A = null)
}
,
this.setDepthFunc = function(t) {
if (C !== t) {
if (t)
switch (t) {
case n.NeverDepth:
e.depthFunc(e.NEVER);
break;
case n.AlwaysDepth:
e.depthFunc(e.ALWAYS);
break;
case n.LessDepth:
e.depthFunc(e.LESS);
break;
case n.LessEqualDepth:
e.depthFunc(e.LEQUAL);
break;
case n.EqualDepth:
e.depthFunc(e.EQUAL);
break;
case n.GreaterEqualDepth:
e.depthFunc(e.GEQUAL);
break;
case n.GreaterDepth:
e.depthFunc(e.GREATER);
break;
case n.NotEqualDepth:
e.depthFunc(e.NOTEQUAL);
break;
default:
e.depthFunc(e.LEQUAL)
}
else
e.depthFunc(e.LEQUAL);
C = t
}
}
,
this.setDepthTest = function(t) {
t ? this.enable(e.DEPTH_TEST) : this.disable(e.DEPTH_TEST)
}
,
this.setDepthWrite = function(t) {
I !== t && (e.depthMask(t),
I = t)
}
,
this.setColorWrite = function(t) {
E !== t && (e.colorMask(t, t, t, t),
E = t)
}
,
this.setStencilFunc = function(t, i, n) {
w === t && _ === i && T === n || (e.stencilFunc(t, i, n),
w = t,
_ = i,
T = n)
}
,
this.setStencilOp = function(t, i, n) {
x === t && S === i && M === n || (e.stencilOp(t, i, n),
x = t,
S = i,
M = n)
}
,
this.setStencilTest = function(t) {
t ? this.enable(e.STENCIL_TEST) : this.disable(e.STENCIL_TEST)
}
,
this.setStencilWrite = function(t) {
b !== t && (e.stencilMask(t),
b = t)
}
,
this.setFlipSided = function(t) {
R !== t && (t ? e.frontFace(e.CW) : e.frontFace(e.CCW),
R = t)
}
,
this.setLineWidth = function(t) {
t !== P && (e.lineWidth(t),
P = t)
}
,
this.setPolygonOffset = function(t, i, n) {
t ? this.enable(e.POLYGON_OFFSET_FILL) : this.disable(e.POLYGON_OFFSET_FILL),
!t || O === i && L === n || (e.polygonOffset(i, n),
O = i,
L = n)
}
,
this.getScissorTest = function() {
return D
}
,
this.setScissorTest = function(t) {
D = t,
t ? this.enable(e.SCISSOR_TEST) : this.disable(e.SCISSOR_TEST)
}
,
this.activeTexture = function(t) {
void 0 === t && (t = e.TEXTURE0 + N - 1),
B !== t && (e.activeTexture(t),
B = t)
}
,
this.bindTexture = function(t, i) {
void 0 === B && r.activeTexture();
var n = F[B];
void 0 === n && (n = {
type: void 0,
texture: void 0
},
F[B] = n),
n.type === t && n.texture === i || (e.bindTexture(t, i),
n.type = t,
n.texture = i)
}
,
this.compressedTexImage2D = function() {
try {
e.compressedTexImage2D.apply(e, arguments)
} catch (e) {
console.error(e)
}
}
,
this.texImage2D = function() {
try {
e.texImage2D.apply(e, arguments)
} catch (e) {
console.error(e)
}
}
,
this.clearColor = function(t, i, n, r) {
o.set(t, i, n, r),
V.equals(o) === !1 && (e.clearColor(t, i, n, r),
V.copy(o))
}
,
this.clearDepth = function(t) {
U !== t && (e.clearDepth(t),
U = t)
}
,
this.clearStencil = function(t) {
k !== t && (e.clearStencil(t),
k = t)
}
,
this.scissor = function(t) {
H.equals(t) === !1 && (e.scissor(t.x, t.y, t.z, t.w),
H.copy(t))
}
,
this.viewport = function(t) {
G.equals(t) === !1 && (e.viewport(t.x, t.y, t.z, t.w),
G.copy(t))
}
,
this.reset = function() {
for (var t = 0; t < l.length; t++)
1 === l[t] && (e.disableVertexAttribArray(t),
l[t] = 0);
h = {},
u = null,
B = void 0,
F = {},
d = null,
E = null,
I = null,
b = null,
R = null
}
}
}
, {
three: 217
}],
104: [function(e, t, i) {
(function(i, n) {
"use strict";
function r(e) {
this.urls = e;
var t = i("bWVzc2FnZSBiaW5hcnlfbWVzaCB7CglyZXBlYXRlZCBjaHVua19zaW1wbGUgY2h1bmsgPSAxOwoJcmVwZWF0ZWQgY2h1bmtfcXVhbnRpemVkIHF1YW50aXplZF9jaHVuayA9IDI7Cn0KCi8vIERlZmluaXRpb24gb2YgdmVydGljZXM6IDNEIGNvb3JkaW5hdGVzLCBhbmQgMkQgdGV4dHVyZSBjb29yZGluYXRlcy4KbWVzc2FnZSB2ZXJ0aWNlc19zaW1wbGUgewoJcmVwZWF0ZWQgZmxvYXQgeHl6ID0gMSBbcGFja2VkPXRydWVdOyAgLy8geF8wLHlfMCx6XzAsIHhfMSx5XzEsel8xLCAuLi4KCXJlcGVhdGVkIGZsb2F0IHV2ID0gMiBbcGFja2VkPXRydWVdOyAgLy8gdV8wLHZfMCwgdV8xLHZfMSwgLi4uCn0KCi8vIEluZGV4ZXMgb2YgdmVydGljZXMgb2YgZmFjZXMKbWVzc2FnZSBmYWNlc19zaW1wbGUgewoJcmVwZWF0ZWQgdWludDMyIGZhY2VzID0gMSBbcGFja2VkPXRydWVdOyAvLyBpMDAsaTAxLGkwMiwgaTEwLGkxMSxpMTIsIC4uLgp9CgovLyBBIHNpbXBseSBlbmNvZGVkIGNodW5rLgovLyBUT0RPOiBhZGQgY2h1bmsgcHJvcGVyaXRlcyAoc3VjaCBhcyAicmVmbGVjdGl2ZSIpCm1lc3NhZ2UgY2h1bmtfc2ltcGxlIHsKCW9wdGlvbmFsIHZlcnRpY2VzX3NpbXBsZSB2ZXJ0aWNlcyA9IDE7CglvcHRpb25hbCBmYWNlc19zaW1wbGUgZmFjZXMgPSAyOwoJb3B0aW9uYWwgc3RyaW5nIGNodW5rX25hbWUgPSAzOwoJb3B0aW9uYWwgc3RyaW5nIG1hdGVyaWFsX25hbWUgPSA0Owp9CgovLyBRdWFudGl6ZWQgdmVyc2lvbnMgZm9sbG93OgptZXNzYWdlIHZlcnRpY2VzX3F1YW50aXplZCB7CglvcHRpb25hbCBmbG9hdCBxdWFudGl6YXRpb24gPSAxOwoJcmVwZWF0ZWQgZmxvYXQgdHJhbnNsYXRpb24gPSAyOwoJcmVwZWF0ZWQgc2ludDMyIHggPSAzIFtwYWNrZWQ9dHJ1ZV07CglyZXBlYXRlZCBzaW50MzIgeSA9IDQgW3BhY2tlZD10cnVlXTsKCXJlcGVhdGVkIHNpbnQzMiB6ID0gNSBbcGFja2VkPXRydWVdOwp9CgptZXNzYWdlIHV2X3F1YW50aXplZCB7CglvcHRpb25hbCBzdHJpbmcgbmFtZSA9IDE7CglvcHRpb25hbCBmbG9hdCBxdWFudGl6YXRpb24gPSAyOwoJcmVwZWF0ZWQgc2ludDMyIHUgPSAzIFtwYWNrZWQ9dHJ1ZV07CglyZXBlYXRlZCBzaW50MzIgdiA9IDQgW3BhY2tlZD10cnVlXTsKfQoKLy8gSW5kZXhlcyBvZiB2ZXJ0aWNlcyBvZiBmYWNlcwptZXNzYWdlIGZhY2VzX2NvbXByZXNzZWQgewoJcmVwZWF0ZWQgc2ludDMyIGZhY2VzID0gMSBbcGFja2VkPXRydWVdOyAvLyBpMDAsaTAxLGkwMiwgaTEwLGkxMSxpMTIsIC4uLgp9CgptZXNzYWdlIGNodW5rX3F1YW50aXplZCB7CglvcHRpb25hbCBzdHJpbmcgY2h1bmtfbmFtZSA9IDE7CglvcHRpb25hbCBzdHJpbmcgbWF0ZXJpYWxfbmFtZSA9IDI7CglvcHRpb25hbCB2ZXJ0aWNlc19xdWFudGl6ZWQgdmVydGljZXMgPSAzOwoJcmVwZWF0ZWQgdXZfcXVhbnRpemVkIHV2cyA9IDQ7CglvcHRpb25hbCBmYWNlc19zaW1wbGUgZmFjZXMgPSA1Owp9Cg==", "base64");
this.builder = a.loadProto(t),
this.decoder = this.builder.build("binary_mesh")
}
var o = e("three")
, a = e("protobufjs")
, s = e("../util/logger")
, l = (e("../util/common"),
e("../util/ajax"))
, c = e("../objects/Chunk")
, h = new s(n);
r.prototype = {
constructor: r,
load: function(e, t, i, n) {
return h.time("download"),
l.get(e, {
responseType: "arraybuffer"
}).done(function(r) {
h.timeEnd("download"),
this.parse(r, e, t, i, n)
}
.bind(this)).fail(n)
},
parse: function(e, t, i, n, r) {
var o = this.readProtobuf(e);
if (!o)
return r();
try {
h.time("convert to webgl"),
this.convertProtobufToSceneObject(o, t, i, n, r),
h.timeEnd("convert to webgl")
} catch (e) {
return h.error("failed parsing .dam"),
h.error(e.message),
r()
}
},
readProtobuf: function(e) {
var t;
try {
h.time("parse proto"),
t = this.decoder.decode(e),
h.timeEnd("parse proto")
} catch (e) {
return h.error("failed parsing proto for .dam"),
h.error(e.message),
null
}
return t
},
convertProtobufToSceneObject: function(e, t, i, n, r) {
function a(e) {
var i = new o.BufferGeometry;
return i.addAttribute("position", new o.BufferAttribute(new Float32Array(e.vertices.xyz,0,3),3)),
e.vertices.uv.length > 0 && i.addAttribute("uv", new o.BufferAttribute(new Float32Array(e.vertices.uv,0,2),2)),
i.setIndex(new o.BufferAttribute(new Uint32Array(e.faces.faces,0,1),1)),
i.applyMatrix(s),
i.computeBoundingBox(),
new c({
geometry: i,
textureName: e.material_name,
name: e.chunk_name,
meshUrl: t
})
}
if (0 === e.chunk.length)
return h.warn("No chunks in damfile..."),
i([]);
var s = new o.Matrix4;
s.set(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1);
var l = e.chunk.map(a);
return l ? i(l) : (h.error(".dam protobuf came out with no chunks..."),
r())
}
},
t.exports = r
}
).call(this, e("buffer").Buffer, "/js/loaders/DamLoader.js")
}
, {
"../objects/Chunk": 144,
"../util/ajax": 181,
"../util/common": 185,
"../util/logger": 189,
buffer: 198,
protobufjs: 214,
three: 217
}],
105: [function(e, t, i) {
(function(i) {
"use strict";
var n = (e("three"),
e("../settings"),
e("../util/browser"),
e("./DamLoader"))
, r = e("../util/logger")
, o = (e("../ab"),
new r(i));
t.exports = {
getLoaders: function() {
return [["_50k", ".dam", n], ["", ".dam", n]]
},
load: function(e, t, i, n, r, a) {
var s = this.getLoaders();
a = a || 0;
var l = s[a];
if (!l)
return void (r && r("No suitable model file found..."));
var c = l[0]
, h = l[1]
, u = new l[2](t)
, d = t.get(e + c + h);
d ? (o.debug("Trying " + c + h),
u.load(d, i, n, function() {
this.load(e, t, i, n, r, ++a)
}
.bind(this))) : (o.debug("Skipping " + h + ", not available"),
this.load(e, t, i, n, r, ++a))
}
}
}
).call(this, "/js/loaders/ModelLoader.js")
}
, {
"../ab": 3,
"../settings": 166,
"../util/browser": 182,
"../util/logger": 189,
"./DamLoader": 104,
three: 217
}],
106: [function(e, t, i) {
(function(i) {
"use strict";
var n = e("../util/common")
, r = e("../util/texture")
, o = e("../util/browser")
, a = e("../util/logger")
, s = e("../settings")
, l = new a(i);
t.exports = {
load: function(e, t) {
function i(e, i) {
e || (t.push(i),
p++,
d.notify(p, a),
p === a && d.resolve())
}
if (!e.chunks[0] || !e.chunks[0].meshUrl)
return $.when();
var a = n.countUnique(e.chunks.map(function(e) {
return e.textureName
}))
, c = e.chunks[0].meshUrl.indexOf("_50k") !== -1 ? "_50k" : ""
, h = "_50k" === c ? "high" : "low";
s.minimalMemoryMode && "high" === h && (o.detectSamsungS6() ? (l.warn("Galaxy S6 cannot handle large textures, turning down quality."),
h = "low") : a > s.maxMobileTextures && (l.warn("Model probably too large for mobile, turning down quality."),
h = "low"));
var u = e.data.job.uuid + c + "_texture_jpg_" + h + "/"
, d = $.Deferred()
, p = 0;
return e.chunks.forEach(function(t) {
if (!t.material.map && t.textureName) {
var n = e.urls.get(u + t.textureName);
t.setTextureMap(r.load(n, i.bind(this, r.isLoaded(n))))
}
}),
d.promise()
}
}
}
).call(this, "/js/loaders/ModelTextureLoader.js")
}
, {
"../settings": 166,
"../util/browser": 182,
"../util/common": 185,
"../util/logger": 189,
"../util/texture": 194
}],
107: [function(e, t, i) {
(function(i, n) {
"use strict";
function r(e) {
this.model = e,
this.modelDataPath = this.model.urls.get("vision.modeldata")+"?m="+new Date().getTime(),
this.sweepLocationsPath = this.model.urls.get("sweep_locations.csv");
var t = i("Ly8gUHJvdG9jb2wgQnVmZmVyIGZvciBwdWNrIHZpc2liaWxpdHkgYW5kIHJlbGF0ZWQgZGF0YQovLwovLyBUbyBkdW1wIG91dCBhIGJpbnJheSBtYW5pZmVzdCBpbiB0ZXh0IGZvcm1hdCwgeW91IGNhbiB1c2UgcHJvdG9jIGRpcmVjdGx5OgovLyAgIHByb3RvYyAtLXByb3RvX3BhdGggfi9kZXYvbXBfdmlzaW9uLyAgLS1kZWNvZGU9ZW9zLnN0b3JhZ2UuVmlzaW9uTW9kZWxkYXRhIH4vZGV2L21wX3Zpc2lvbi9lb3Mvc3RvcmFnZS92aXNpb25fbW9kZWxkYXRhLnByb3RvIDwgdmlzaW9uLm1vZGVsZGF0YQoKLy8gcGFja2FnZSBlb3Muc3RvcmFnZTsKCi8vIGltcG9ydCAiZW9zL2luZnJhL2NvbW1vbi5wcm90byI7Ci8vIFRoZSBmb2xsb3dpbmcgd2VyZSBtYW51YWxseSBleHRyYWN0ZWQgaGVyZSwgSlMgZG9lcyBub3QgbGlrZSBwcm90b2J1ZiBpbXBvcnRzCgptZXNzYWdlIEFmZmluZTNmIHsKCW9wdGlvbmFsIFF1YXRlcm5pb25mIHJvdGF0aW9uID0gMTsKCW9wdGlvbmFsIFZlY3RvcjNmIHRyYW5zbGF0aW9uID0gMjsKfQoKbWVzc2FnZSBRdWF0ZXJuaW9uZiB7CglvcHRpb25hbCBmbG9hdCB3ID0gMTsKCW9wdGlvbmFsIGZsb2F0IHggPSAyOwoJb3B0aW9uYWwgZmxvYXQgeSA9IDM7CglvcHRpb25hbCBmbG9hdCB6ID0gNDsKfQoKbWVzc2FnZSBWZWN0b3IzZiB7CglvcHRpb25hbCBmbG9hdCB4ID0gMTsKCW9wdGlvbmFsIGZsb2F0IHkgPSAyOwoJb3B0aW9uYWwgZmxvYXQgeiA9IDM7Cn0KCi8vCi8vIE9uZSBzd2VlcCAvIHBhbm8KLy8KbWVzc2FnZSBTd2VlcExvY2F0aW9uIHsKCW9wdGlvbmFsIGJ5dGVzIHV1aWQgPSAxOyAgLyogdXVpZCAqLwoJb3B0aW9uYWwgQWZmaW5lM2YgcG9zZSA9IDI7ICAvKiBjYW1lcmEgcG9zZSAoeCwgeSx6KSBpbiBtZXRlciBhbmQgYSBxdWF0ZXJuaW9uKi8KCW9wdGlvbmFsIFZlY3RvcjNmIHB1Y2sgPSAzOyAgLyogcHVjayBsb2NhdGlvbiAtIHggYW55IGlzIGdlbmVyYWxseSB0aGUgc2FtZSBhcyBwb3NlLCB6IGlzIHRoZSBoZWlnaHQgb2YgdGhlIGNsb3Nlc3QgZmxvb3IgdW5kZXIgdGhlIGNhbWVyYSAqLwoJb3B0aW9uYWwgaW50MzIgZ3JvdXAgPSA0OyAgLyogZmxvb3IgaW5kZXggKi8KCW9wdGlvbmFsIGludDMyIHN1Ymdyb3VwID0gNTsgIC8qIHJvb20gaW5kZXggKi8KCXJlcGVhdGVkIGludDMyIHZpc2libGVzID0gNjsgIC8qIGxpc3Qgb2YgaW5kaWNlcyB0byBhbGwgcHVja3MgdmlzaWJsZSBmcm9tIHRoaXMgcHVjayAqLwoJcmVwZWF0ZWQgZmxvYXQgc2NvcmVzID0gNzsgLyogdXNlZCBhcyBwYXJ0IG9mIHNjb3JpbmcgZnVuY3Rpb24gZm9yIGRldGVybWluaW5nIHdoaWNoIHB1Y2sgdG8gZ28gdG8gbmV4dCAqLwogIG9wdGlvbmFsIHN0cmluZyBzd2VlcF9uYW1lID0gODsKCiAgLy8gV2l0aCBvdXRkb29yIHBhbm9zLCB3ZSBoYXZlIGEgY291cGxlIG9mIGRpZmZlcmVudCBzaXR1YXRpb25zIGZvciBhbGlnbm1lbnQuIFRoZSBjb21tb24KICAvLyBjYXNlIGlzIHRoYXQgdGhlIHBhbm8gYWxpZ25lZCBub3JtYWxseS4gSXQgY291bGQgYWxzbyBoYXZlIGJlZW4gcGxhY2VkIG1hbnVhbGx5IGluCiAgLy8gQ2FwdHVyZUFwcCBvciBXb3Jrc2hvcCwgb3IgbGVmdCB1bmFsaWduZWQgZm9yIGhpZ2hsaWdodC1yZWVsIHZpZXdpbmcuCiAgZW51bSBBbGlnbm1lbnRUeXBlCiAgewogICAgICBVTktOT1dOID0gMDsKICAgICAgQUxJR05FRCA9IDE7CiAgICAgIFVOQUxJR05FRCA9IDI7CiAgICAgIE1BTlVBTExZX1BMQUNFRCA9IDM7CiAgfQogIG9wdGlvbmFsIEFsaWdubWVudFR5cGUgYWxpZ25tZW50X3R5cGUgPSA5IFtkZWZhdWx0ID0gQUxJR05FRF07Cn0KCm1lc3NhZ2UgU3ViZ3JvdXBJbmZvIHsKCW9wdGlvbmFsIGludDMyIHN1Ymdyb3VwID0gMTsKCW9wdGlvbmFsIGZsb2F0IGFyZWEgPSAyOyAvKiBmbG9vciBhcmVhIGluIG1eMiAoc3F1YXJlIG1ldGVyYWdlKSAqLwp9CgovKiBBbGwgcHVja3MgaW4gYSBtb2RlbC4gUHVja3MgYXJlIHN0b3JlZCBpbiBzY2FubmluZyBvcmRlci4gKi8KbWVzc2FnZSBWaXNpb25Nb2RlbGRhdGEgewoJcmVwZWF0ZWQgU3dlZXBMb2NhdGlvbiBzd2VlcExvY2F0aW9ucyA9IDE7CglyZXBlYXRlZCBTdWJncm91cEluZm8gc3ViZ3JvdXBJbmZvcyA9IDI7Cn0K", "base64")
, n = o.loadProto(t);
this.decoder = n.build("VisionModeldata")
}
var o = e("protobufjs")
, a = e("../util/ajax")
, s = (e("../util/common"),
e("../util/math"))
, l = e("../util/logger")
, c = new l(n);
r.prototype.load = function() {
return this.modelDataPath ? (c.info("Using vision.modeldata"),
this.loadVisionModelData()) : this.sweepLocationsPath ? (c.warn("Using sweep_locations.csv"),
this.loadSweepLocationsCSV()) : (c.warn("No sweep file found"),
$.when([]))
}
,
r.prototype.loadVisionModelData = function() {
return a.get(this.modelDataPath, {
responseType: "arraybuffer"
}).then(function(e) {
var t;
try {
t = this.decoder.decode(e)
} catch (e) {
return c.warn("Could not decode vision.modeldata, trying sweep_locations.csv"),
this.loadSweepLocationsCSV()
}
var i = t.sweepLocations.map(function(e) {
return {
uuid: e.uuid.toUTF8().replace(/-/g, ""),
position: {
x: e.pose.translation.x,
y: e.pose.translation.y,
z: e.pose.translation.z
},
quaternion: {
x: e.pose.rotation.x,
y: e.pose.rotation.y,
z: e.pose.rotation.z,
w: e.pose.rotation.w
},
puck: {
x: e.puck.x,
y: e.puck.y,
z: e.puck.z
},
floor: e.group,
neighbours: e.visibles,
alignmentType: e.alignment_type
}
}).map(function(e) {
return e.position = s.convertVisionVector(e.position),
e.quaternion = s.convertVisionQuaternion(e.quaternion),
e.puck = s.convertVisionVector(e.puck),
e
});
return i.forEach(function(e) {
e.neighbours = e.neighbours.map(function(e) {
return i[e].uuid
})
}),
i
}
.bind(this), function() {
return c.warn("Could not load vision.modeldata, trying sweep_locations.csv"),
this.loadSweepLocationsCSV()
}
.bind(this))
}
,
r.prototype.loadSweepLocationsCSV = function() {
return a.get(this.sweepLocationsPath).then(function(e) {
var t = e.split("\n").map(function(e) {
return e.split(", ")
}).filter(function(e) {
return e.length > 1
}).map(function(e) {
return {
uuid: e[0],
position: {
x: parseFloat(e[1]),
y: parseFloat(e[2]),
z: parseFloat(e[3])
},
quaternion: {
x: parseFloat(e[4]),
y: parseFloat(e[5]),
z: parseFloat(e[6]),
w: parseFloat(e[7])
}
}
}).map(function(e) {
return e.position = s.convertVisionVector(e.position),
e.quaternion = s.convertVisionQuaternion(e.quaternion),
e
});
return t
}).fail(function() {
c.warn("Could not load sweep_locations.csv, no sweeps loaded.")
})
}
,
t.exports = r
}
).call(this, e("buffer").Buffer, "/js/loaders/SweepDataLoader.js")
}
, {
"../util/ajax": 181,
"../util/common": 185,
"../util/logger": 189,
"../util/math": 190,
buffer: 198,
protobufjs: 214
}],
108: [function(e, t, i) {
(function(i) {
"use strict";
function n() {
this.locale = null
}
var r = e("../settings")
, o = e("../util/common")
, a = e("../util/logger")
, s = e("../enum/Locale")
, l = new a(i);
n.prototype.init = function() {
var t;
switch (r.languageTag) {
case null:
case "en":
case s.EN_US:
this.locale = s.EN_US,
t = e("./strings-en-US");
break;
case "es":
case s.ES_MX:
this.locale = s.ES_MX,
t = e("./strings-es-MX");
break;
case "fr":
case s.FR_FR:
this.locale = s.FR_FR,
t = e("./strings-fr-FR");
break;
case "de":
case s.DE_DE:
this.locale = s.DE_DE,
t = e("./strings-de-DE");
break;
case "ru":
case s.RU_RU:
this.locale = s.RU_RU,
t = e("./strings-ru-RU");
break;
case "cn":
case s.CN_CN:
this.locale = s.CN_CN,
t = e("./strings-cn-CN");
break;
case "jp":
case s.JP_JP:
this.locale = s.JP_JP,
t = e("./strings-jp-JP");
break;
default:
l.info("Unsupported language tag, defaulting to 'en-US'"),
this.locale = s.EN_US,
t = e("./strings-en-US")
}
l.info("Using locale '" + this.locale + "'"),
o.extendObject(this, t)
}
,
n.prototype.localizeGUI = function() {
var e = document.querySelector("#gui-parent");
this.localizeTree(e),
this.localizeLoadingText()
}
,
n.prototype.localizeLoadingText = function() {
// var e = document.querySelector("#loader-cont")
// , t = e.getAttribute("title");
// e.removeAttribute("title"),
// e.setAttribute("data-status", t),
// e.classList.add(this.locale),
document.querySelector("#help-dialog").classList.add(this.locale),
document.querySelector("#interaction-modal").classList.add(this.locale),
document.querySelector("#gui").classList.add(this.locale);
}
,
n.prototype.localizeTree = function(e) {
var t, i, n = /{\[{ ?(\w+) ?}\]}/;
if (e.nodeType === Node.TEXT_NODE)
t = e.data.match(n),
t && (i = t[1],
e.data = this.localizeText(i) || i);
else if (e.nodeType === Node.ELEMENT_NODE) {
var r = e.getAttribute("title");
r && (t = r.match(n),
t && (i = t[1],
e.setAttribute("title", this.localizeText(i) || i)))
}
for (e = e.firstChild; e; )
this.localizeTree(e),
e = e.nextSibling
}
,
n.prototype.localizeText = function(t) {
var i = this[t];
return i || this.locale === s.EN_US || (l.warn("Localization key '" + t + "' not available for locale '" + this.locale + "', defaulting to English."),
i = e("./strings-en-US")[t]),
i || l.warn("Localization key '" + t + "' not available for locale 'en-US'"),
i
}
,
t.exports = new n
}
).call(this, "/js/localization/localize.js")
}
, {
"../enum/Locale": 31,
"../settings": 166,
"../util/common": 185,
"../util/logger": 189,
"./strings-cn-CN": 109,
"./strings-de-DE": 110,
"./strings-en-US": 111,
"./strings-es-MX": 112,
"./strings-fr-FR": 113,
"./strings-jp-JP": 114,
"./strings-ru-RU": 115
}],
109: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "正在加载",
PRESENTED_BY_CAPS: "呈现者:",
POWERED_BY: "技术支持:",
POWERED_BY_CAPS: "技术支持:",
DESKTOP_SHORT_CTA: "点击一次以探索这个 3D 空间。",
MOBILE_SHORT_CTA: "点击一次以探索这个 3D 空间。",
PRESENTED_BY: "呈现者:",
MORE: "更多 ",
LESS: "更少 ",
TAG_CONTENT: "tag™ 内容",
SHOW: "显示",
HIDE: "隐藏",
DOLLHOUSE: "场景屋",
FLOOR_PLAN: "楼层平面图",
OPEN_HIGHLIGHTS: "打开精彩片段",
CLOSE_HIGHLIGHTS: "关闭",
PREVIOUS: "上一个",
PLAY: "播放",
PAUSE: "暂停",
NEXT: "下一个",
EXPLORE_3D_SPACE: "探索 3D 空间",
VIEW_DOLLHOUSE: "观看场景屋",
SOCIAL_SHARING: "分享这个空间",
VIEW_IN_VR: "以 VR 观看",
VIEW_FULLSCREEN: "全屏观看",
EXIT_FULLSCREEN: " 退出全屏",
ZOOM_IN: "放大",
ZOOM_OUT: "缩小",
FLOOR_NAME: "楼层",
FLOOR_ALL: "ALL",
FLOOR_Lang: ["Floor",""],
TERMS: "条款",
PORT_TERMS: "port 条款",
TERMS_OF_USE: "使用条款",
CLOSE_TERMS: "关闭",
TERMS_TEXT_FILE: "terms-cn-CN.html",
TERMS_FAIL: "无法获取条款。请确保您有互联网连接以查看使用条款。",
WEBVR_FOR_DAYDREAM: "用于 Daydream 视图",
WEBVR_ENTER_WEBVR: "进入 VR",
WEBVR_DIFFERENT_HEADSET: "有其他耳机吗?",
WEBVR_LEARN_MORE: "了解更多",
WEBVR_VIEW_SPACE: "在 VR 中观看空间",
WEBVR_DAYDREAM_VIEW: "Daydream 视图",
WEBVR_DAYDREAM_PHONE: "支持 Daydream 的手机",
WEBVR_FOR_CARDBOARD: "用于 Google Cardboard",
WEBVR_VIEW_CARDBOARD: "或在 Google Cardboard 上观看",
VR_VIEW_SPACE: "在虚拟现实中观看空间",
VR_LEARN_MORE_CAPS: "了解更多",
VR_PREVIOUS_CAPS: "上一个’,",
VR_NEXT_CAPS: "下一个",
VR_GOT_IT_CAPS: "明白了",
VR_SHOW_SUPPORTED: "点击以使用 VR 观看空间",
VR_SHOW_UNSUPPORTED: "很遗憾,您的设备不符合在 VR 中观看空间的最低要求。",
VR_SHOW_IOS_1: "点击以使用 VR 观看空间",
VR_SHOW_IOS_2: "需要有 port VR 应用程序和兼容的 iPhone 才能观看",
VR_WHAT_YOU_NEED: "关于...您需要什么",
VR_NEED_CARDBOARD: "您使用 Google Cardboard 时需要什么",
VR_NEED_SAMSUNG: "您使用 Samsung Gear VR 时需要什么",
VR_NEED_DAYDREAM: "需要事先与 DAYDREAM VIEW 配对",
VR_NEED_DAYDREAM_PHONE: "支持 Daydream 的手机",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VR 应用程序",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "iPhone 5s 和更高版本,运行 iOS 9.1 和更高版本",
VR_COMPATIBLE_IPHONES_3: "兼容的 iPhone",
VR_COMPATIBLE_ANDROID: "兼容的 Android 设备",
VR_COMPATIBLE_ANDROID_LONG: "4.5-5.5 英寸、运行 Android OS 4.4.4 和更高版本的兼容型 Android 设备显示屏",
VR_ANDROID_DETAIL: "4.5 至 5.5 英寸、运行 Android OS 4.4.4 和更高版本的显示屏",
VR_ANDROID_DVICES: "Android 设备",
VR_COMPATIBLE_SAMSUNG: "兼容的 Samsung 设备",
VR_SAMSUNG_DETAIL: "Galaxy S6 和更高版本",
VR_APP_FOR_CARDBOARD: "用于 Google Cardboard 的 port VR 应用程序",
VR_APP_FOR_SAMSUNG: "用于 Gear VR 的 port VR 应用程序",
VR_APP_FOR_ANDROID: "用于 Android 手机的 port VR 应用程序",
VR_APP_OPEN: "请使用 port VR 应用程序打开",
VR_DOWNLOAD_HERE: "在此下载",
VR_REQUIRE_HEADSET: "需要一副 VR 耳机并安装用于 Android 的 port VR 应用程序",
VR_REDIRECT_TO_STORE: "如果未安装应用程序,您将跳转到应用程序商店。",
VR_IMPROPER_EMBED: "port 空间未正确嵌入,无法在您的 Web 浏览器支持 VR。",
VR_OPEN_ANDROID_LINK: "在您的手机上打开链接",
VR_ANDROID_OPTIONS: "可用的 VR 耳机选项",
SHARE_TO: "分享到",
SHARE_LINK: "直接链接",
SHARE_EXPLORE: "探索",
SHARE_AT: "在",
SHARE_WITH: "使用",
SHARE_3D: "以 3D",
SHARE_COPIED: "已复制!",
ERROR_BROWSER_SOLUTION: "安装更新的浏览器以探索 3D。",
ERROR_BROWSER_EXPLANATION: "WebGL 需要现代的浏览器。",
ERROR_GENERIC_PROBLEM: "糟糕,出现问题。",
ERROR_GENERIC_SOLUTION: "重新启动您的浏览器。",
ERROR_GENERIC_ACTIONS_1: "如果问题仍然存在,",
ERROR_GENERIC_ACTIONS_2: "请安装支持的浏览器",
ERROR_GENERIC_ACTIONS_3: " 或",
ERROR_GENERIC_ACTIONS_4: "查看我们的故障排除指南",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "浏览器不受支持。",
ERROR_WEBGL_IOS_PROBLEM: "iOS 版本不受支持。",
ERROR_WEBGL_IOS_SOLUTION: "升级到 iOS 8 或更高版本以在 3D 中探索。",
ERROR_WEBGL_IOS_ACTIONS_1: "点击 ",
ERROR_WEBGL_IOS_ACTIONS_2: "设置 > 通用 > 软件更新",
ERROR_WEBGL_SAFARI_PROBLEM: "启用 WebGL 以在 3D 中探索。",
ERROR_WEBGL_SAFARI_ACTIONS_1: "单击",
ERROR_WEBGL_SAFARI_ACTIONS_2: "菜单栏中的首选项 > 高级 > 显示开发菜单",
ERROR_WEBGL_SAFARI_ACTIONS_3: "然后单击",
ERROR_WEBGL_SAFARI_ACTIONS_4: "开发 > 启用 WebGL",
ERROR_MISSING_URLS_PROBLEM: "糟糕,没有此模型的全景。",
ERROR_MISSING_URLS_EXPLANATION: "这是较早的模型。网站所有者可能正在开发一种新模型。",
ERROR_LOADING_FAILED_PROBLEM: "糟糕,模式不可用。",
ERROR_LOADING_FAILED_ACTIONS_1: "如果问题仍然存在,",
ERROR_LOADING_FAILED_ACTIONS_2: "查看我们的故障排除指南",
ERROR_MAINTENANCE_PROBLEM: "正在进行维护",
ERROR_MAINTENANCE_SOLUTION: "请过几分钟再来。",
LINK_TO_LOCATION: "地点链接",
MENU_COPY: "复制",
LINK_ALERT_COPY: "请使用 CTRL/CMD + C 复制。",
ROTATE: "旋转",
MOVE: "移动",
INSIDE: "内部",
ZOOM: "缩放",
HELP: "小帮手",
HELP_NAVIGATION_TAB: "导航",
HELP_MORE_HELP_TAB: "更多帮助",
HELP_DESKTOP_PANORAMA_1A: "单击并拖动以环顾空间。",
HELP_DESKTOP_PANORAMA_2A: "单击整个空间内的圆环以四处移动。",
HELP_DESKTOP_PANORAMA_3A: "使用鼠标滚轮来放大和缩小。",
HELP_DESKTOP_PANORAMA_1B: "或者,使用箭头键向左向右转。",
HELP_DESKTOP_PANORAMA_2B: "或者,使用箭头键向前移动和向后移动。",
HELP_DESKTOP_PANORAMA_3B: "或者,使用加号和减号键来放大和缩小。",
HELP_DESKTOP_360_2A: "单击内部视图图标以进入空间。",
HELP_DESKTOP_360_2B: "或者,按 1 号键进入内部视图。 ",
HELP_DESKTOP_DOLLHOUSE_1A: "左键单击并向左、向右、向上和向下拖动以旋转场景屋。",
HELP_DESKTOP_DOLLHOUSE_2A: "右键单击并向左、向右、向上和向下拖动以改变场景屋在屏幕上的位置。",
HELP_DESKTOP_DOLLHOUSE_3A: "使用鼠标滚轮来放大和缩小。",
HELP_DESKTOP_DOLLHOUSE_1B: "或者,使用箭头键来旋转场景屋。",
HELP_DESKTOP_FLOORPLAN_1A: "左键单击并向左、向右、向上和向下拖动以改变楼层平面图在屏幕上的位置。",
HELP_DESKTOP_FLOORPLAN_2A: "右键单击并向左或向右拖动以旋转楼层平面图。",
HELP_DESKTOP_FLOORPLAN_3A: "使用鼠标滚轮来放大和缩小。",
HELP_DESKTOP_FLOORPLAN_2B: "或者,使用箭头键以向左或向右旋转。",
HELP_DESKTOP_FLOORPLAN_3B: "或者,使用箭头键来放大和缩小。",
HELP_MOBILE_PANORAMA_1: "触摸并拖动以环顾空间。",
HELP_MOBILE_PANORAMA_2: "点击整个空间内的圆环以四处移动。",
HELP_MOBILE_3: "使用捏合手势来放大和缩小。",
HELP_MOBILE_360_2: "点击内部视图图标以进入空间。",
HELP_MOBILE_DOLLHOUSE_1: "触摸并向上、向下、向左和向右拖动以旋转场景屋。",
HELP_MOBILE_DOLLHOUSE_2: "用两指触摸并拖动以定位场景屋。",
HELP_MOBILE_FLOORPLAN_1: "触摸并拖动以定位楼层平面图。",
HELP_MOBILE_FLOORPLAN_2: "用两指触摸并拖动以旋转楼层平面图。",
HELP_MORE_HLR_A: "精彩片段集锦",
HELP_DESKTOP_MORE_HLR_B: "打开以使用缩略图图像在空间中流览。",
HELP_MORE_DOLLHOUSE_A: "场景屋",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "单击以查看和旋转 3D 内整个空间的俯视图。",
HELP_MOBILE_MORE_DOLLHOUSE_B: "点击以查看和旋转 3D 内整个空间的俯视图。",
HELP_MORE_FLOORS_A: "楼层选择器",
HELP_DESKTOP_MORE_FLOORS_B: "在空间中的楼层之间切换。",
HELP_MORE_TAG_A: "tag™ 贴文",
HELP_DESKTOP_MORE_TAG_B: "单击或悬停鼠标以查看空间中的功能信息。",
HELP_MOBILE_MORE_TAG_B: "点击以查看空间中的功能信息。",
HELP_MORE_ZOOM_A: "缩放控件",
HELP_DESKTOP_MORE_ZOOM_B: "使用这些控件来放大和缩小或使用滚轮。",
HELP_MORE_TOUR_A: "导览控件",
HELP_DESKTOP_MORE_TOUR_B: "通过导览播放、暂停以及向前和向后流览。",
HELP_MORE_INSIDE_A: "内部视图",
HELP_DESKTOP_MORE_INSIDE_B: "单击以探索空间内部。",
HELP_MOBILE_MORE_INSIDE_B: "点击以探索空间内部。",
HELP_MORE_VR_A: "VR 模式",
HELP_DESKTOP_MORE_VR_B: "单击以在虚拟现实中启动空间。",
HELP_MOBILE_MORE_VR_B: "点击以在虚拟现实中启动空间。",
HELP_MORE_360_A: "360° 视图",
HELP_DESKTOP_MORE_360_B: "单击精彩片段集锦中的 360 视图中以观看室外场景。",
HELP_MOBILE_MORE_360_B: "点击精彩片段集锦中的 360 视图中以观看室外场景。",
HELP_MORE_FULLSCREEN_A: "全屏",
HELP_DESKTOP_MORE_FULLSCREEN_B: "将 3D Showcase 扩展到全屏。",
CLOSE: "关闭"
}
}
, {}],
110: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "Lädt",
PRESENTED_BY_CAPS: "PRÄSENTIERT VON",
POWERED_BY: "Angetrieben von",
POWERED_BY_CAPS: "ANGETRIEBEN VON",
DESKTOP_SHORT_CTA: "Sehen sie sich in diesem 3D Raum um.",
MOBILE_SHORT_CTA: "Sehen sie sich in diesem 3D Raum um.",
PRESENTED_BY: "Präsentiert von ",
MORE: "Mehr ",
LESS: "Weniger ",
TAG_CONTENT: "tag™ Inhalt",
SHOW: "Anzeigen",
HIDE: "Verbergen",
DOLLHOUSE: "Puppenhaus",
FLOOR_PLAN: "Grundriss",
OPEN_HIGHLIGHTS: "Highlights anzeigen",
CLOSE_HIGHLIGHTS: "Schließen",
PREVIOUS: "Vorheriges",
PLAY: "Abspielen",
PAUSE: "Pausieren",
NEXT: "Nächstes",
EXPLORE_3D_SPACE: "Innenraum betreten",
VIEW_DOLLHOUSE: "Puppenhaus ansehen",
SOCIAL_SHARING: "Teilen Sie diesen Raum",
VIEW_IN_VR: "In VR ansehen",
VIEW_FULLSCREEN: "Ansicht im Vollbildmodus",
EXIT_FULLSCREEN: "Beenden des Vollbildmodus",
ZOOM_IN: "Vergrößern",
ZOOM_OUT: "Verkleinern",
FLOOR_NAME: "Etage ",
FLOOR_ALL: "Alle",
TERMS: "Bedingungen",
PORT_TERMS: "port Bedingungen",
TERMS_OF_USE: "Nutzungsbedingungen",
TERMS_TEXT_FILE: "terms-de-DE.html",
CLOSE_TERMS: "Schließen",
TERMS_FAIL: "Konnte die Nutzungsbedingungen nicht abrufen. Bitte stellen Sie sicher, dass Sie zum Internet verbunden sind.",
HELP: "Hilfe",
HELP_NAVIGATION_TAB: "Navigation",
HELP_MORE_HELP_TAB: "Hilfe-Details",
CLOSE: "Schließen",
HELP_DESKTOP_PANORAMA_1A: "Klicken und ziehen Sie um sich im Raum umzusehen.",
HELP_DESKTOP_PANORAMA_2A: "Klicken Sie auf die Ringe im Raum um sich zu bewegen.",
HELP_DESKTOP_PANORAMA_3A: "Verwenden Sie das Scrollrad zum Vergrößern und Verkleinern.",
HELP_DESKTOP_PANORAMA_1B: "Oder verwenden Sie die Pfeiltasten um sich nach links und rechts zu bewegen.",
HELP_DESKTOP_PANORAMA_2B: "Oder verwenden Sie die Pfeiltasten um sich vorwärts und rückwärts zubewegen.",
HELP_DESKTOP_PANORAMA_3B: "Oder verwenden Sie die Plus- und Minus-Tasten zum Vergrößern und Verkleinern.",
HELP_DESKTOP_360_2A: "Klicken Sie die Innenansicht ikone, um diesen Raum zu starten .",
HELP_DESKTOP_360_2B: "Oder, drücken Sie die 1-Taste um die Innenraumansicht zu starten.",
HELP_DESKTOP_DOLLHOUSE_1A: "Klicken Sie mit der linken Maustaste und ziehen Sie nach links, rechts, oben und unten um das Puppenhaus zu drehen.",
HELP_DESKTOP_DOLLHOUSE_2A: "Klicken mit der rechten Maustaste und ziehen Sie nach links, rechts, oben und unten um die Position des Puppenhauses zu ändern.",
HELP_DESKTOP_DOLLHOUSE_3A: "Verwenden Sie das Scrollrad zum Vergrößern und Verkleinern.",
HELP_DESKTOP_DOLLHOUSE_1B: "Oder verwenden Sie die Pfeiltasten um das Puppenhaus zu drehen.",
HELP_DESKTOP_FLOORPLAN_1A: "Klicken mit der linken Maustaste und ziehen Sie nach links, rechts, oben und unten um die Position des Grundrisses auf zu ändern.",
HELP_DESKTOP_FLOORPLAN_2A: "Klicken Sie mit der rechten Maustaste und ziehen Sie nach links oder rechts um den Grundriss zu drehen.",
HELP_DESKTOP_FLOORPLAN_3A: "Verwenden Sie das Scrollrad zum Vergrößern und Verkleinern.",
HELP_DESKTOP_FLOORPLAN_2B: "Oder verwenden Sie die Pfeiltasten um das Modell nach links oder rechts zu drehen.",
HELP_DESKTOP_FLOORPLAN_3B: "Oder verwenden Sie die Pfeiltasten zum Vergrößern und Verkleinern.",
HELP_MOBILE_PANORAMA_1: "Berühren und ziehen an dem Raum um sich umzusehen.",
HELP_MOBILE_PANORAMA_2: "Klicken Sie auf die Ringe im Raum, um sich zu bewegen.",
HELP_MOBILE_3: "Benutzen Sie die Zoom-Gäste zum Vergrößern und Verkleinern.",
HELP_MOBILE_360_2: "Tippen Sie die Innenansicht ikone, um diesen Raum zu starten.",
HELP_MOBILE_DOLLHOUSE_1: "Berühren und nach oben, unten, links und rechts ziehen um das Puppenhaus zu drehen.",
HELP_MOBILE_DOLLHOUSE_2: "Berühren und mit zwei Fingern ziehen um das Puppenhaus zu positionieren.",
HELP_MOBILE_FLOORPLAN_1: "Berühren und ziehen, um den Grundriss zu positionieren.",
HELP_MOBILE_FLOORPLAN_2: "Berühren und ziehen mit zwei Fingern, um den Grundriss zu drehen.",
HELP_MORE_HLR_A: "Liste das Highlight",
HELP_DESKTOP_MORE_HLR_B: "Öffnen um durch den Raum mit Vorschau-Bildern zu navigieren.",
HELP_MORE_DOLLHOUSE_A: "Puppenhaus Ansicht",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "Klicken Sie um die von oben nach unten Sicht des gesamten Raumes in 3D anzuzeigen und zu drehen.",
HELP_MOBILE_MORE_DOLLHOUSE_B: "Tippen Sie um die von oben nach unten Sicht des gesamten Raumes in 3D anzuzeigen und zu drehen.",
HELP_MORE_FLOORS_A: "Etage auswählen",
HELP_DESKTOP_MORE_FLOORS_B: "Zwischen den Etagen im Raum wechseln.",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "Klicken Sie auf oder bewegen Sie Ihren Mauszeiger über die Informationen über die Funktionen im Raum.",
HELP_MOBILE_MORE_TAG_B: "Tippen Sie für Informationen über die Funktionen im Raum.",
HELP_MORE_ZOOM_A: "Zoom Steuerung",
HELP_DESKTOP_MORE_ZOOM_B: "Verwenden Sie diese Steuerung oder das Scrollrad zum Vergrößern und Verkleinern.",
HELP_MORE_TOUR_A: "Tour Steuerung",
HELP_DESKTOP_MORE_TOUR_B: "Abspielen, pausieren und vorwärts und rückwärts durch eine geführte Tour navigieren.",
HELP_MORE_INSIDE_A: "Innenansicht",
HELP_DESKTOP_MORE_INSIDE_B: "Klicken Sie hier um sich im Raum umzusehen.",
HELP_MOBILE_MORE_INSIDE_B: "Sehen Sie sich in diesen 3D Raum um.",
HELP_MORE_VR_A: "VR Modus",
HELP_DESKTOP_MORE_VR_B: "Klicken Sie hier, um den Raum in der virtuellen Realität zu starten.",
HELP_MOBILE_MORE_VR_B: "Tippen Sie um den Raum in der virtuellen Realität zu starten.",
HELP_MORE_360_A: "360° Views Ansicht ",
HELP_DESKTOP_MORE_360_B: "Klicken Sie die 360° Views Ansicht in das Highlight um Aussen-Szenen zu sehen.",
HELP_MOBILE_MORE_360_B: "Tippen Sie die 360° Views Ansicht in das Highlight um Aussen-Szenen zu sehen.",
HELP_MORE_FULLSCREEN_A: "Vollbild",
HELP_DESKTOP_MORE_FULLSCREEN_B: "Erweitern Sie 3D Showcase im Vollbildmodus.",
WEBVR_FOR_CARDBOARD: "Für Google Cardboard",
WEBVR_FOR_DAYDREAM: "Für Daydream View",
WEBVR_ENTER_WEBVR: "Starten Sie VR",
WEBVR_DIFFERENT_HEADSET: "Haben Sie anderes Headset?",
WEBVR_LEARN_MORE: "Mehr Infos",
WEBVR_VIEW_SPACE: "Ansicht des Raumes in VR",
WEBVR_DAYDREAM_VIEW: "Daydream View",
WEBVR_DAYDREAM_PHONE: "Daydream-fähiges Handy",
WEBVR_VIEW_CARDBOARD: "Oder mit Google Cardboard ansehen",
VR_WHAT_YOU_NEED: "Was Sie dafür brauchen...",
VR_NEED_DAYDREAM_PHONE: "Daydream-fähiges Handy",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VR App",
VR_APP_OPEN: "Oder öffnen Sie die port VR App",
VR_COMPATIBLE_ANDROID_LONG: "Kompatibles Android Gerät mit Bildschirmdiagonale von 11,5 bis 14 cm (4,5 - 5,5 Zoll) und Android 4.4.4 und neuer",
VR_SAMSUNG_DETAIL: "Galaxy S6 und neuer",
VR_APP_FOR_ANDROID: "port VR app für Android",
VR_NEED_DAYDREAM: "ERFORDERT VOR DER 'PAIRING' MIT DAYDREAM VIEW",
VR_VIEW_SPACE: "Ansicht des Raumes in VR",
VR_LEARN_MORE_CAPS: "MEHR INFOS",
VR_PREVIOUS_CAPS: "ZURÜCK",
VR_NEXT_CAPS: "WEITER",
VR_GOT_IT_CAPS: "VERSTANDEN",
VR_SHOW_SUPPORTED: "Tippen Sie um den Raum in VR zu sehen",
VR_SHOW_UNSUPPORTED: "Schade, aber Ihr Gerät erfüllt nicht die Mindestanforderungen um den Raum in VR zu sehen.",
VR_SHOW_IOS_1: "Tippen Sie um den Raum in VR zu sehen",
VR_SHOW_IOS_2: "port VR App sowie kompatibles iPhone sind von nöten um diesen Raum zu sehen",
VR_NEED_CARDBOARD: "Was Sie dafür brauchen ist Google Cardboard",
VR_NEED_SAMSUNG: "Was Sie dafür brauchen ist Samsung Gear VR",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "iPhone 5s oder neuer, mit iOS 9.1 und später",
VR_COMPATIBLE_IPHONES_3: "Kompatibles iPhones",
VR_COMPATIBLE_ANDROID: "Kompatibles Android Gerät",
VR_ANDROID_DETAIL: "Bildschirmdiagonale von 11,5 bis 14 cm (4,5 - 5,5 Zoll) und Android 4.4.4 und neuer",
VR_ANDROID_DVICES: "Android Geräte",
VR_COMPATIBLE_SAMSUNG: "Kompatible Samsung Geräte",
VR_APP_FOR_CARDBOARD: "port VR App für Google Cardboard",
VR_APP_FOR_SAMSUNG: "port VR App für Gear VR",
VR_DOWNLOAD_HERE: "Hier runterladen",
VR_REQUIRE_HEADSET: "Benötigt das ein VR-Headset und port VR App für Android installiert wird",
VR_REDIRECT_TO_STORE: "Wenn App nicht installiert ist, werden Sie zum App Store umgeleitet.",
VR_IMPROPER_EMBED: "Der port Raum ist nicht richtig eingebettet um VR in Ihrem Webbrowser zu unterstützen.",
VR_OPEN_ANDROID_LINK: "Öffnen Sie den Link auf Ihrem Handy",
VR_ANDROID_OPTIONS: "VR Headset Optionen",
SHARE_TO: "Teilen auf",
SHARE_LINK: "Direkter Link",
SHARE_EXPLORE: "Umsehen",
SHARE_AT: "auf",
SHARE_WITH: "mit",
SHARE_3D: "in 3D",
SHARE_COPIED: "Kopiert!",
ERROR_BROWSER_SOLUTION: "Installieren Sie einen neueren Browser um sich in 3D umzusehen.",
ERROR_BROWSER_EXPLANATION: "WebGL benötigt einen modernen Browser.",
ERROR_GENERIC_PROBLEM: "Huch, etwas ist schief gelaufen.",
ERROR_GENERIC_SOLUTION: "Starten Sie Ihren Browser neu.",
ERROR_GENERIC_ACTIONS_1: "Wenn das Problem weiterhin besteht, ",
ERROR_GENERIC_ACTIONS_2: "Installieren Sie einen unterstützten Browser",
ERROR_GENERIC_ACTIONS_3: " oder ",
ERROR_GENERIC_ACTIONS_4: "Sehen Sie unseren Leitfaden zur Fehlerbehebung",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "Browser wird nicht unterstützt.",
ERROR_WEBGL_IOS_PROBLEM: "iOS-Version wird nicht unterstützt.",
ERROR_WEBGL_IOS_SOLUTION: "Aktualisieren Sie auf iOS 8 oder neuer um sich in 3D umzusehen.",
ERROR_WEBGL_IOS_ACTIONS_1: "Tippen ",
ERROR_WEBGL_IOS_ACTIONS_2: "Einstellungen > Allgemein > Softwareaktualisierung",
ERROR_WEBGL_SAFARI_PROBLEM: "Aktivieren Sie WebVR um sich in 3D umzusehen.",
ERROR_WEBGL_SAFARI_ACTIONS_1: "Klicken ",
ERROR_WEBGL_SAFARI_ACTIONS_2: "Präferenzen > Fortgeschrittene > Entwickler-Menü anzeigen",
ERROR_WEBGL_SAFARI_ACTIONS_3: "Klicken Sie dann ",
ERROR_WEBGL_SAFARI_ACTIONS_4: "Entwickler > WebGL Aktivieren",
ERROR_MISSING_URLS_PROBLEM: "Huch, es gibt keine Panoramen für dieses Modell .",
ERROR_MISSING_URLS_EXPLANATION: "Dies ist ein älteres Modell. Der Website-Besitzer hat eventuell ein neues Modell in Arbeit.",
ERROR_LOADING_FAILED_PROBLEM: "Huch, das Modell ist nicht verfügbar.",
ERROR_LOADING_FAILED_ACTIONS_1: "Wenn das Problem weiterhin besteht, ",
ERROR_LOADING_FAILED_ACTIONS_2: "sehen Sie unseren Leitfaden zur Fehlerbehebung",
ERROR_MAINTENANCE_PROBLEM: "Wartung im Gange.",
ERROR_MAINTENANCE_SOLUTION: "Bitte versuchen Sie es in ein paar Minuten nochmal.",
LINK_TO_LOCATION: "Link zu",
MENU_COPY: "Kopieren",
LINK_ALERT_COPY: "Bitte benutzen Sie CTRL/CMD + C zum kopieren.",
ROTATE: "Drehen",
INSIDE: "Drinnen",
MOVE: "Bewegen",
ZOOM: "Vergrößern"
}
}
, {}],
111: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "Loading",
PRESENTED_BY_CAPS: "PRESENTED BY",
POWERED_BY: "powered by ",
POWERED_BY_CAPS: "POWERED BY",
DESKTOP_SHORT_CTA: "Click to explore this 3D space.",
MOBILE_SHORT_CTA: "Tap to explore this 3D space.",
PRESENTED_BY: "Presented by ",
MORE: "More ",
LESS: "Less ",
TAG_CONTENT: "tag™ Content",
SHOW: "Show",
HIDE: "Hide",
DOLLHOUSE: "Dollhouse",
FLOOR_PLAN: "Floor plan",
OPEN_HIGHLIGHTS: "Open Highlights",
CLOSE_HIGHLIGHTS: "Close",
PREVIOUS: "Previous",
PLAY: "Play",
PAUSE: "Pause",
NEXT: "Next",
EXPLORE_3D_SPACE: "Explore 3D Space",
VIEW_DOLLHOUSE: "View dollhouse",
SOCIAL_SHARING: "Share this Space",
VIEW_IN_VR: "View in VR",
VIEW_FULLSCREEN: "全屏",
EXIT_FULLSCREEN: "退出全屏",
ZOOM_IN: "Zoom in",
ZOOM_OUT: "Zoom out",
FLOOR_NAME: "Floor ",
FLOOR_ALL: "全部",
TERMS: "Terms",
PORT_TERMS: "port terms",
TERMS_OF_USE: "Terms of Use",
TERMS_TEXT_FILE: "terms-en-US.html",
CLOSE_TERMS: "Close",
TERMS_FAIL: "Could not fetch terms. Please make sure you have an internet connection to view the terms of use.",
HELP: "Help",
HELP_NAVIGATION_TAB: "Navigation",
HELP_MORE_HELP_TAB: "More Help",
CLOSE: "Close",
HELP_DESKTOP_PANORAMA_1A: "Click and Drag to look around the Space.",
HELP_DESKTOP_PANORAMA_2A: "Click on the rings throughout the space to move around.",
HELP_DESKTOP_PANORAMA_3A: "Use the scroll wheel to zoom in and out.",
HELP_DESKTOP_PANORAMA_1B: "Or, use the arrow keys to turn left and right.",
HELP_DESKTOP_PANORAMA_2B: "Or, use the arrow keys to move forward and back.",
HELP_DESKTOP_PANORAMA_3B: "Or, use the plus and minus keys to zoom in and out.",
HELP_DESKTOP_360_2A: "Click the Inside View icon to enter the Space.",
HELP_DESKTOP_360_2B: "Or, press the number 1 key to enter Inside View.",
HELP_DESKTOP_DOLLHOUSE_1A: "Left click and drag left, right, up, and down to rotate the Dollhouse.",
HELP_DESKTOP_DOLLHOUSE_2A: "Right click and drag left, right, up, and down to change the Dollhouse position on screen.",
HELP_DESKTOP_DOLLHOUSE_3A: "Use the scroll wheel to zoom in and out.",
HELP_DESKTOP_DOLLHOUSE_1B: "Or, use the arrow keys to rotate the Dollhouse.",
HELP_DESKTOP_FLOORPLAN_1A: "Left click and drag left, right, up, and down to change the Floorplan position on screen.",
HELP_DESKTOP_FLOORPLAN_2A: "Right click and drag left or right to rotate the Floorplan.",
HELP_DESKTOP_FLOORPLAN_3A: "Use the scroll wheel to zoom in and out.",
HELP_DESKTOP_FLOORPLAN_2B: "Or, use the arrow keys to rotate left or right.",
HELP_DESKTOP_FLOORPLAN_3B: "Or, use the arrow keys to zoom in and out.",
HELP_MOBILE_PANORAMA_1: "Touch and Drag to look around the Space.",
HELP_MOBILE_PANORAMA_2: "Tap on the rings throughout the Space to move around.",
HELP_MOBILE_3: "Use a pinch gesture to zoom in and out.",
HELP_MOBILE_360_2: "Tap the Inside View icon to enter the Space.",
HELP_MOBILE_DOLLHOUSE_1: "Touch and drag up, down, left, and right to rotate the Dollhouse.",
HELP_MOBILE_DOLLHOUSE_2: "Touch and drag with two fingers to position the Dollhouse.",
HELP_MOBILE_FLOORPLAN_1: "Touch and drag to position the Floorplan.",
HELP_MOBILE_FLOORPLAN_2: "Touch and drag with two fingers to rotate the Floorplan.",
HELP_MORE_HLR_A: "Highlight Reel",
HELP_DESKTOP_MORE_HLR_B: "Open to navigate through the Space using thumbnail images.",
HELP_MORE_DOLLHOUSE_A: "Dollhouse View",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "Click to view and rotate a top-down view of the entire Space in 3D.",
HELP_MOBILE_MORE_DOLLHOUSE_B: "Tap to view and rotate a top-down view of the entire Space in 3D.",
HELP_MORE_FLOORS_A: "Floor Selector",
HELP_DESKTOP_MORE_FLOORS_B: "Switch between floors in the Space.",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "Click or hover over for information about features in the Space.",
HELP_MOBILE_MORE_TAG_B: "Tap for information about features in the Space.",
HELP_MORE_ZOOM_A: "Zoom Controls",
HELP_DESKTOP_MORE_ZOOM_B: "Use these controls to zoom in and out or use the scroll wheel.",
HELP_MORE_TOUR_A: "Tour Controls",
HELP_DESKTOP_MORE_TOUR_B: "Play, pause, and navigate forward and backward through a Guided Tour.",
HELP_MORE_INSIDE_A: "Inside View",
HELP_DESKTOP_MORE_INSIDE_B: "Click to explore inside the Space.",
HELP_MOBILE_MORE_INSIDE_B: "Tap to explore inside the Space.",
HELP_MORE_VR_A: "VR Mode",
HELP_DESKTOP_MORE_VR_B: "Click to launch the Space in virtual reality.",
HELP_MOBILE_MORE_VR_B: "Tap to launch the Space in virtual reality.",
HELP_MORE_360_A: "360° Views",
HELP_DESKTOP_MORE_360_B: "Click 360 Views in the Highlight Reel to view outdoor scenes.",
HELP_MOBILE_MORE_360_B: "Tap 360 Views in the Highlight Reel to view outdoor scenes.",
HELP_MORE_FULLSCREEN_A: "Full screen",
HELP_DESKTOP_MORE_FULLSCREEN_B: "Expand 3D Showcase to full screen.",
WEBVR_FOR_CARDBOARD: "For Google Cardboard",
WEBVR_VIEW_CARDBOARD: "Or View on Google Cardboard",
WEBVR_FOR_DAYDREAM: "For Daydream View",
WEBVR_ENTER_WEBVR: "ENTER VR",
WEBVR_DIFFERENT_HEADSET: "Have a different headset?",
WEBVR_LEARN_MORE: "Learn more",
WEBVR_VIEW_SPACE: "View Space in VR",
WEBVR_DAYDREAM_VIEW: "Daydream View",
WEBVR_DAYDREAM_PHONE: "Daydream-ready phone",
VR_VIEW_SPACE: "View Space in Virtual Reality",
VR_LEARN_MORE_CAPS: "LEARN MORE",
VR_PREVIOUS_CAPS: "PREVIOUS",
VR_NEXT_CAPS: "NEXT",
VR_GOT_IT_CAPS: "GOT IT",
VR_SHOW_SUPPORTED: "Tap to view the Space in VR with",
VR_SHOW_UNSUPPORTED: "Sorry, but your device doesn't meet the minimum requirements to view a space in VR.",
VR_SHOW_IOS_1: "Tap to view the space in VR",
VR_SHOW_IOS_2: "Requires port VR app and compatible iPhone to view",
VR_WHAT_YOU_NEED: "What You'll Need For...",
VR_NEED_CARDBOARD: "What you'll need with Google Cardboard",
VR_NEED_SAMSUNG: "What you'll need with Samsung Gear VR",
VR_NEED_DAYDREAM: "NEEDS PRIOR PAIRING WITH DAYDREAM VIEW",
VR_NEED_DAYDREAM_PHONE: "Daydream-ready phone",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VR App",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "iPhone 5s and newer, running iOS 9.1 and higher",
VR_COMPATIBLE_IPHONES_3: "Compatible iPhones",
VR_COMPATIBLE_ANDROID: "Compatible Android Devices",
VR_COMPATIBLE_ANDROID_LONG: 'Compatible Android Devices Displays from 4.5"-5.5" running Android OS 4.4.4 and higher',
VR_ANDROID_DETAIL: 'Displays from 4.5"-5.5" running Android OS 4.4.4 and higher',
VR_ANDROID_DVICES: "Android Devices",
VR_COMPATIBLE_SAMSUNG: "Compatible Samsung Devices",
VR_SAMSUNG_DETAIL: "Galaxy S6 and Above",
VR_APP_FOR_CARDBOARD: "port VR app for Google Cardboard",
VR_APP_FOR_SAMSUNG: "port VR app for Gear VR",
VR_APP_FOR_ANDROID: "port VR app for Android Phones",
VR_APP_OPEN: "Open with the port VR app instead",
VR_DOWNLOAD_HERE: "Download here",
VR_REQUIRE_HEADSET: "Requires a VR headset and port VR app for Android to be installed",
VR_REDIRECT_TO_STORE: "If app is not installed, you will be redirected to the app store.",
VR_IMPROPER_EMBED: "The port Space is not embedded properly to support VR in your web browser.",
VR_OPEN_ANDROID_LINK: "Open the Link on Your Mobile Phone",
VR_ANDROID_OPTIONS: "Available VR Headset Options",
SHARE_TO: "Share to",
SHARE_LINK: "Direct Link",
SHARE_EXPLORE: "Explore ",
SHARE_AT: "at",
SHARE_WITH: "with",
SHARE_3D: " in 3D",
SHARE_COPIED: "Copied!",
ERROR_BROWSER_SOLUTION: "Install a new browser to explore in 3D.",
ERROR_BROWSER_EXPLANATION: "WebGL requires a modern browser.",
ERROR_GENERIC_PROBLEM: "Oops, something went wrong.",
ERROR_GENERIC_SOLUTION: "Restart your browser.",
ERROR_GENERIC_ACTIONS_1: "If the problem persists, ",
ERROR_GENERIC_ACTIONS_2: "install a supported browser",
ERROR_GENERIC_ACTIONS_3: " or ",
ERROR_GENERIC_ACTIONS_4: "see our troubleshooting guide",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "Browser not supported.",
ERROR_WEBGL_IOS_PROBLEM: "iOS version not supported.",
ERROR_WEBGL_IOS_SOLUTION: "Upgrade to iOS 8 or higher to explore in 3D.",
ERROR_WEBGL_IOS_ACTIONS_1: "Tap ",
ERROR_WEBGL_IOS_ACTIONS_2: "Settings > General > Software Update",
ERROR_WEBGL_SAFARI_PROBLEM: "Enable WebGL to explore in 3D.",
ERROR_WEBGL_SAFARI_ACTIONS_1: "Click ",
ERROR_WEBGL_SAFARI_ACTIONS_2: "Preferences > Advanced > Show Develop menu",
ERROR_WEBGL_SAFARI_ACTIONS_3: "Then click ",
ERROR_WEBGL_SAFARI_ACTIONS_4: "Develop > Enable WebGL",
ERROR_MISSING_URLS_PROBLEM: "Oops, there are no panoramas for this model.",
ERROR_MISSING_URLS_EXPLANATION: "This is an older model. The website owner may have a new model on the way.",
ERROR_LOADING_FAILED_PROBLEM: "模型不可用.",
ERROR_LOADING_FAILED_ACTIONS_1: "If the problem persists, ",
ERROR_LOADING_FAILED_ACTIONS_2: "see our troubleshooting guide",
ERROR_MAINTENANCE_PROBLEM: "Maintenance in progress.",
ERROR_MAINTENANCE_SOLUTION: "Please come back in a few minutes.",
LINK_TO_LOCATION: "Link to location",
MENU_COPY: "Copy",
LINK_ALERT_COPY: "Please use CTRL/CMD + C to copy.",
ROTATE: "Rotate",
INSIDE: "Inside",
MOVE: "Move",
ZOOM: "Zoom"
}
}
, {}],
112: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "Cargando",
PRESENTED_BY_CAPS: "PRESENTADO POR",
POWERED_BY: "potenciando por ",
POWERED_BY_CAPS: "POTENCIADO POR ",
DESKTOP_SHORT_CTA: "Haga clic para explorar este Espacio 3D.",
MOBILE_SHORT_CTA: "Pulse para explorar este Espacio 3D.",
PRESENTED_BY: "Presentado por ",
MORE: "Más ",
LESS: "Menos ",
TAG_CONTENT: "Contenido de tag™",
SHOW: "Mostrar",
HIDE: "Ocultar",
DOLLHOUSE: "Dollhouse",
FLOOR_PLAN: "Planos",
OPEN_HIGHLIGHTS: "Aspectos Destacados",
CLOSE_HIGHLIGHTS: "Cerrar",
PREVIOUS: "Anterior",
PLAY: "Play",
PAUSE: "Pausa",
NEXT: "Siguiente",
EXPLORE_3D_SPACE: "Explorar el Espacio 3D",
VIEW_DOLLHOUSE: "Ver dollhouse",
SOCIAL_SHARING: "Compartir este espacio",
VIEW_IN_VR: "Ver en realidad virtual",
VIEW_FULLSCREEN: "Ver en pantalla completa",
EXIT_FULLSCREEN: "Salir de pantalla completa",
ZOOM_IN: "Acercar",
ZOOM_OUT: "Alejar",
FLOOR_NAME: "Piso ",
FLOOR_ALL: "Todas",
TERMS: "Condiciones",
PORT_TERMS: "port términos de uso",
TERMS_OF_USE: "Términos de uso",
TERMS_TEXT_FILE: "terms-es-MX.html",
CLOSE_TERMS: "Cerrar",
TERMS_FAIL: "No se han podido obtener las condiciones. Asegúrese de tener una conexión a Internet para ver los términos de uso.",
HELP: "Ayuda",
HELP_NAVIGATION_TAB: "Navegación",
HELP_MORE_HELP_TAB: "Más Ayuda",
CLOSE: "Cerrar",
HELP_DESKTOP_PANORAMA_1A: "Haga clic y arrastre para mirar alrededor del espacio.",
HELP_DESKTOP_PANORAMA_2A: "Haga clic en los aros a lo largo del espacio para moverse.",
HELP_DESKTOP_PANORAMA_3A: "Use la rueda de desplazamiento para acercar o alejar.",
HELP_DESKTOP_PANORAMA_1B: "O use las teclas de flecha para girar a la izquierda y a la derecha.",
HELP_DESKTOP_PANORAMA_2B: "O use las teclas de dirección para adelantar o retroceder.",
HELP_DESKTOP_PANORAMA_3B: "O use la tecla más para acercar y la tecla menos para alejar.",
HELP_DESKTOP_360_2A: "Haga clic en el icono Vista Interior para ingresar al Espacio.",
HELP_DESKTOP_360_2B: "O bien, presione la tecla numero 1 para entrar en la Vista Interior.",
HELP_DESKTOP_DOLLHOUSE_1A: "Haga clic izquierdo y arrastre hacia la izquierda, derecha, arriba o abajo para girar la Dollhouse.",
HELP_DESKTOP_DOLLHOUSE_2A: "Haga clic derecho y arrastre hacia la izquierda, derecha, arriba o abajo para cambiar la posición della dollhouse.",
HELP_DESKTOP_DOLLHOUSE_3A: "Use la rueda de desplazamiento para acercar o alejar.",
HELP_DESKTOP_DOLLHOUSE_1B: "O use las teclas de dirección para girar la Dollhouse.",
HELP_DESKTOP_FLOORPLAN_1A: "Haga clic con izquierdo y arrastre hacia la izquierda, derecha, arriba o abajo para cambiar la posición de la planta.",
HELP_DESKTOP_FLOORPLAN_2A: "Haga clic derecho y arrastre hacia la izquierda o derecha para girar la planta.",
HELP_DESKTOP_FLOORPLAN_3A: "Use la rueda de desplazamiento para acercar o alejar.",
HELP_DESKTOP_FLOORPLAN_2B: "O use las teclas para girar hacia la izquierda o derecha.",
HELP_DESKTOP_FLOORPLAN_3B: "O use las teclas de dirección para acercar o alejar.",
HELP_MOBILE_PANORAMA_1: "Toque y arrastre para mirar alrededor del espacio.",
HELP_MOBILE_PANORAMA_2: "Toque en los aros a lo largo del espacio para moverse.",
HELP_MOBILE_3: "Use el gesto de pellizcar para acercar o alejar.",
HELP_MOBILE_360_2: "Toque el ícono Vista Interior para entrar en el Espacio.",
HELP_MOBILE_DOLLHOUSE_1: "Toque y arrastre con dos dedos para cambiar la posición della dollhouse.",
HELP_MOBILE_DOLLHOUSE_2: "Toque y arrastre con dos dedos para cambiar la posición de la vista aérea.",
HELP_MOBILE_FLOORPLAN_1: "Toque y arrastre para cambiar la posición de la planta.",
HELP_MOBILE_FLOORPLAN_2: "Toque y arrastre con dos dedos para girar la planta.",
HELP_MORE_HLR_A: "Galería destacada",
HELP_DESKTOP_MORE_HLR_B: "Abra para navegar a través del espacio utilizando imágenes en miniatura.",
HELP_MORE_DOLLHOUSE_A: "Vista aérea por pisos",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "Haga clic para ver y girar la Dollhouse del espacio completo en 3D.",
HELP_MOBILE_MORE_DOLLHOUSE_B: "Toque para ver y girar la vista Dollhouse del espacio completo en 3D.",
HELP_MORE_FLOORS_A: "Seleccionador de plantas",
HELP_DESKTOP_MORE_FLOORS_B: "Cambie de una planta a otra en el espacio.",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "Haga clic o coloque el cursor para obtener más información acerca de las características del espacio.",
HELP_MOBILE_MORE_TAG_B: "Toque para obtener más información acerca de las características del espacio.",
HELP_MORE_ZOOM_A: "Controles de zoom",
HELP_DESKTOP_MORE_ZOOM_B: "Use estos controles o la rueda de desplazamiento para acercar o alejar.",
HELP_MORE_TOUR_A: "Controles de recorrido",
HELP_DESKTOP_MORE_TOUR_B: "Reproduzca, pause, adelante o retroceda a través de un recorrido guiado.",
HELP_MORE_INSIDE_A: "Vista interior",
HELP_DESKTOP_MORE_INSIDE_B: "Haga clic para explorar el interior del espacio.",
HELP_MOBILE_MORE_INSIDE_B: "Toque para explorar el interior del espacio.",
HELP_MORE_VR_A: "Modo de realidad virtual",
HELP_DESKTOP_MORE_VR_B: "Toque para ver el espacio en realidad virtual.",
HELP_MOBILE_MORE_VR_B: "Toque para ver el espacio en realidad virtual.",
HELP_MORE_360_A: "360° Views",
HELP_DESKTOP_MORE_360_B: "Una vez que se encuentre en galería destacada, haga clic en vistas de 360º para ver el exterior.",
HELP_MOBILE_MORE_360_B: "Una vez que se encuentre en galería destacada, toque en vistas de 360º para ver el exterior.",
HELP_MORE_FULLSCREEN_A: "Pantalla completa",
HELP_DESKTOP_MORE_FULLSCREEN_B: "Expanda el escenario 3D para verlo en pantalla completa.",
WEBVR_FOR_CARDBOARD: "Para Google Cardboard",
WEBVR_FOR_DAYDREAM: "Para Daydream View",
WEBVR_ENTER_WEBVR: "ENTRAR VR",
WEBVR_DIFFERENT_HEADSET: "¿Tiene un auricular diferente?",
WEBVR_LEARN_MORE: "Más información",
WEBVR_VIEW_SPACE: "Ver Espacio en VR",
WEBVR_DAYDREAM_VIEW: "Daydream View",
WEBVR_DAYDREAM_PHONE: "Daydream Teléfono listos",
WEBVR_VIEW_CARDBOARD: "O Ver en Google Cardboard",
VR_NEED_DAYDREAM: "Necesidades antes de acoplarse con Daydream View",
VR_NEED_DAYDREAM_PHONE: "Teléfono listo para Daydream",
VR_GOOGLE_DAYDREAM: "Daydream de Google",
VR_APP: "port VR App",
VR_COMPATIBLE_ANDROID_LONG: 'Compatible con los Dispositivos Android con Pantallas de 4.5"-5.5" operando Android OS 4.4.4 y posteriores',
VR_APP_FOR_ANDROID: "Aplicación port VR para Teléfonos Android",
VR_APP_OPEN: "Abrir con la aplicación port VR en su lugar",
VR_VIEW_SPACE: "Ver Espacio en realidad virtual",
VR_LEARN_MORE_CAPS: "SABER MÁS",
VR_PREVIOUS_CAPS: "ANTERIOR",
VR_NEXT_CAPS: "SIGUIENTE",
VR_GOT_IT_CAPS: "COMPRENDIDO",
VR_SHOW_SUPPORTED: "Pulse para ver el Espacio en realidad virtual con",
VR_SHOW_UNSUPPORTED: "Lo sentimos, pero su dispositivo no cumple los requisitos mínimos para ver un Espacio en realidad virtual.",
VR_SHOW_IOS_1: "Pulse para ver el Espacio en realidad virtual",
VR_SHOW_IOS_2: "Necesita la aplicación port VR y un iPhone compatible para ver",
VR_WHAT_YOU_NEED: "Lo que necesitaras...",
VR_NEED_CARDBOARD: "Lo que necesitaras con Google Cardboard",
VR_NEED_SAMSUNG: "Lo que necesitaras con el Samsung Gear VR",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "Compatible con iPhone 6S o superior y con iOS 9.1 en adelante",
VR_COMPATIBLE_IPHONES_3: "iPhones compatibles",
VR_COMPATIBLE_ANDROID: "Dispositivos Android compatibles",
VR_ANDROID_DETAIL: "Pantallas de 11.43 cm a 13.97 cm con OS de Android 4.4.4 en adelante",
VR_ANDROID_DVICES: "Dispositivos Android",
VR_COMPATIBLE_SAMSUNG: "Dispositivos compatibles del Samsung",
VR_SAMSUNG_DETAIL: "Galaxy S5 en adelante",
VR_APP_FOR_CARDBOARD: "Aplicación port VR para Google Cardboard",
VR_APP_FOR_SAMSUNG: "Aplicación port VR para Gear VR",
VR_DOWNLOAD_HERE: "Descargar aquí",
VR_REQUIRE_HEADSET: "Necesita un casco de realidad virtual y que se instale la aplicación port VR para Android",
VR_REDIRECT_TO_STORE: "Si la aplicación no está instalada, se le redirigirá a la tienda de aplicaciones.",
VR_IMPROPER_EMBED: "El espacio de port no está incorporado correctamente para apoyar VR en su navegador web.",
VR_OPEN_ANDROID_LINK: "Abre el enlace en tu teléfono móvil",
VR_ANDROID_OPTIONS: "Opciones de auriculares en RV disponibles",
SHARE_TO: "Compartir en",
SHARE_LINK: "Enlace directo",
SHARE_EXPLORE: "Explorar ",
SHARE_AT: "en",
SHARE_WITH: "con",
SHARE_3D: " en 3D",
SHARE_COPIED: "¡Copiado!",
ERROR_BROWSER_SOLUTION: "Instale un nuevo navegador para explorar en 3D.",
ERROR_BROWSER_EXPLANATION: "WebGL requiere un navegador moderno.",
ERROR_GENERIC_PROBLEM: "Vaya, algo ha ido mal.",
ERROR_GENERIC_SOLUTION: "Reinicie su navegador.",
ERROR_GENERIC_ACTIONS_1: "Si el problema persiste, ",
ERROR_GENERIC_ACTIONS_2: "instale un navegador compatible",
ERROR_GENERIC_ACTIONS_3: " o ",
ERROR_GENERIC_ACTIONS_4: "consulte nuestra guía de solución de problemas",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "Navegador no compatible.",
ERROR_WEBGL_IOS_PROBLEM: "Versión de iOS no compatible.",
ERROR_WEBGL_IOS_SOLUTION: "Actualice a iOS 8 o superior para explorar en 3D.",
ERROR_WEBGL_IOS_ACTIONS_1: "Pulse ",
ERROR_WEBGL_IOS_ACTIONS_2: "Ajustes > General > Actualización de software",
ERROR_WEBGL_SAFARI_PROBLEM: "Habilite WebGL para explorar en 3D.",
ERROR_WEBGL_SAFARI_ACTIONS_1: "Haga clic en ",
ERROR_WEBGL_SAFARI_ACTIONS_2: "Preferencias > Avanzado > Mostrar el menú Desarrollar",
ERROR_WEBGL_SAFARI_ACTIONS_3: "Después, haga clic en ",
ERROR_WEBGL_SAFARI_ACTIONS_4: "Desarrollar > Habilitar WebGL",
ERROR_MISSING_URLS_PROBLEM: "Vaya, no hay panoramas para este modelo.",
ERROR_MISSING_URLS_EXPLANATION: "Este es un modelo antiguo. El propietario del sitio web puede tener un nuevo modelo en mente.",
ERROR_LOADING_FAILED_PROBLEM: "Vaya, modelo no disponible.",
ERROR_LOADING_FAILED_ACTIONS_1: "Si el problema persiste, ",
ERROR_LOADING_FAILED_ACTIONS_2: "consulte nuestra guía de solución de problemas",
ERROR_MAINTENANCE_PROBLEM: "Mantenimiento en progreso.",
ERROR_MAINTENANCE_SOLUTION: "Regrese en unos minutos.",
LINK_TO_LOCATION: "Enlace a la ubicación",
MENU_COPY: "Copiar",
LINK_ALERT_COPY: "Utilice CTRL/CMD + C para copiar.",
ROTATE: "Girar",
INSIDE: "Interior",
MOVE: "Moverse",
ZOOM: "Acercar o alejar"
}
}
, {}],
113: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "Chargement",
PRESENTED_BY_CAPS: "PRÉSENTÉ PAR",
POWERED_BY: "alimenté par ",
POWERED_BY_CAPS: "ALIMENTÉ PAR",
DESKTOP_SHORT_CTA: "Cliquez pour explorer l'Espace 3D.",
MOBILE_SHORT_CTA: "Cliquez pour explorer l'Espace 3D.",
PRESENTED_BY: "Présenté par ",
MORE: "Plus ",
LESS: "Moins ",
TAG_CONTENT: "Contenu tag™",
SHOW: "Montrer",
HIDE: "Cacher",
DOLLHOUSE: "Dollhouse",
FLOOR_PLAN: "Plan de sol",
OPEN_HIGHLIGHTS: "Ouvrir les faits saillants",
CLOSE_HIGHLIGHTS: "Fermer",
PREVIOUS: "Précédent",
PLAY: "Lecture",
PAUSE: "Pause",
NEXT: "Suivant",
EXPLORE_3D_SPACE: "Explorer l'Espace en 3D",
VIEW_DOLLHOUSE: "Voir dollhouse",
SOCIAL_SHARING: "Partager cet espace",
VIEW_IN_VR: "Voir en VR",
VIEW_FULLSCREEN: "Plein écran",
EXIT_FULLSCREEN: "Fermer plein écran",
ZOOM_IN: "Zoom avant",
ZOOM_OUT: "Zoom arrière",
FLOOR_NAME: "Étage ",
FLOOR_ALL: "Tous",
TERMS: "Mentions légales",
PORT_TERMS: "port mentions légales",
TERMS_OF_USE: "Conditions d'utilisation",
TERMS_TEXT_FILE: "terms-fr-FR.html",
CLOSE_TERMS: "Fermer",
TERMS_FAIL: "Impossible d'accéder aux mentions légales. Vérifiez que vous avez une connexion Internet pour afficher les conditions d'utilisation.",
HELP: "Aide",
HELP_NAVIGATION_TAB: "Navigation",
HELP_MORE_HELP_TAB: "Aide",
CLOSE: "Fermer",
HELP_DESKTOP_PANORAMA_1A: "Cliquez et faites glisser pour regarder autour de l’espace.",
HELP_DESKTOP_PANORAMA_2A: "Cliquez sur les anneaux pour vous déplacer.",
HELP_DESKTOP_PANORAMA_3A: "Utilisez la molette de votre souris pour zoomer.",
HELP_DESKTOP_PANORAMA_1B: "Ou utilisez les touches pour tourner.",
HELP_DESKTOP_PANORAMA_2B: "Ou utilisez les touches pour avancer et reculer.",
HELP_DESKTOP_PANORAMA_3B: "Ou utilisez les touches plus et moins pour zoomer.",
HELP_DESKTOP_360_2A: "Cliquez sur l’icône Vue Intérieure pour entrer dans l’Espace.",
HELP_DESKTOP_360_2B: "Ou, appuyez sur la touche numéro 1 pour entrer dans la Vue Intérieure.",
HELP_DESKTOP_DOLLHOUSE_1A: "Faites un clic gauche et bougez votre souris pour faire pivoter la vue Dollhouse.",
HELP_DESKTOP_DOLLHOUSE_2A: "Faites un clic droit et bougez votre souris pour changer la position de la vue Dollhouse.",
HELP_DESKTOP_DOLLHOUSE_3A: "Utilisez la molette de votre souris pour zoomer.",
HELP_DESKTOP_DOLLHOUSE_1B: "Ou utilisez les touches pour faire pivoter la vue Dollhouse.",
HELP_DESKTOP_FLOORPLAN_1A: "Faites un clic droit pour changer la position du plan sur l’écran.",
HELP_DESKTOP_FLOORPLAN_2A: "Faites un clic droit et faites glisser à gauche ou à droite pour faire pivoter le plan.",
HELP_DESKTOP_FLOORPLAN_3A: "Utilisez la molette de votre souris pour zoomer.",
HELP_DESKTOP_FLOORPLAN_2B: "Ou utilisez les touches pour faire pivoter à gauche ou à droite.",
HELP_DESKTOP_FLOORPLAN_3B: "Ou utilisez les touches pour effectuer un zoom avant ou arrière.",
HELP_MOBILE_PANORAMA_1: "Touchez et faites glisser pour regarder autour de l’espace.",
HELP_MOBILE_PANORAMA_2: "Tapez sur les anneaux dans tout l’espace pour vous déplacer.",
HELP_MOBILE_3: "Utilisez un geste de pincement pour zoomer avant/arrière.",
HELP_MOBILE_360_2: "Tapez sur l’icône Vue Intérieure pour entrer dans l’Espace.",
HELP_MOBILE_DOLLHOUSE_1: "Touchez et faites glisser vers le haut/bas/gauche/droite pour faire pivoter la vue Dollhouse.",
HELP_MOBILE_DOLLHOUSE_2: "Touchez et faites glisser avec deux doigts pour positionner vue en coupe.",
HELP_MOBILE_FLOORPLAN_1: "Touchez et faites glisser pour positionner le plan.",
HELP_MOBILE_FLOORPLAN_2: "Touchez et faites glisser avec deux doigts pour faire pivoter le plan.",
HELP_MORE_HLR_A: "Carrousel",
HELP_DESKTOP_MORE_HLR_B: "Ouvrez pour naviguer dans l’espace en utilisant les vignettes.",
HELP_MORE_DOLLHOUSE_A: "Vue en coupe",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "Cliquez pour afficher et faire pivoter l’espace entier en 3D.",
HELP_MOBILE_MORE_DOLLHOUSE_B: "Tapez pour afficher et faire pivoter l’espace entier en 3D.",
HELP_MORE_FLOORS_A: "Sélecteur d’étage",
HELP_DESKTOP_MORE_FLOORS_B: "Basculer entre les étages dans l’espace.",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "Cliquez ou survolez pour obtenir des informations sur l’espace.",
HELP_MOBILE_MORE_TAG_B: "Tapez pour obtenir des informations sur l’espace.",
HELP_MORE_ZOOM_A: "Commandes de zoom",
HELP_DESKTOP_MORE_ZOOM_B: "Utilisez votre clavier ou la molette de votre souris pour zoomer.",
HELP_MORE_TOUR_A: "Commandes de la visite",
HELP_DESKTOP_MORE_TOUR_B: "Mettez en marche ou en pause, avancez et reculez lors d'une visite guidée.",
HELP_MORE_INSIDE_A: "Vue intérieure",
HELP_DESKTOP_MORE_INSIDE_B: "Cliquez pour explorer l’intérieur de l’espace.",
HELP_MOBILE_MORE_INSIDE_B: "Tapez pour explorer l’intérieur de l’espace.",
HELP_MORE_VR_A: "Mode RV",
HELP_DESKTOP_MORE_VR_B: "Cliquez pour lancer l’espace en réalité virtuelle.",
HELP_MOBILE_MORE_VR_B: "Tapez pour lancer l’espace en réalité virtuelle.",
HELP_MORE_360_A: "Vues 360°",
HELP_DESKTOP_MORE_360_B: "Cliquez sur vues 360°, dans le carrousel pour voir les scènes extérieures.",
HELP_MOBILE_MORE_360_B: "Tapez sur vues 360°, dans le carrousel pour voir les scènes extérieures.",
HELP_MORE_FULLSCREEN_A: "Plein écran",
HELP_DESKTOP_MORE_FULLSCREEN_B: "Voir 3D Showcase en plein écran.",
WEBVR_FOR_CARDBOARD: "Pour Google Cardboard",
WEBVR_FOR_DAYDREAM: "Pour Daydream View",
WEBVR_ENTER_WEBVR: "ENTRER VR",
WEBVR_DIFFERENT_HEADSET: "Avez-vous un casque différent?",
WEBVR_LEARN_MORE: "En savoir plus",
WEBVR_VIEW_SPACE: "Voir Espace en VR",
WEBVR_DAYDREAM_VIEW: "Daydream View",
WEBVR_DAYDREAM_PHONE: "Téléphone compatibles Daydream",
WEBVR_VIEW_CARDBOARD: "Ou Afficher sur Google Cardboard",
VR_VIEW_SPACE: "Voir l'Espace en Réalité Virtuelle",
VR_LEARN_MORE_CAPS: "EN SAVOIR PLUS",
VR_PREVIOUS_CAPS: "PRÉCÉDENT",
VR_NEXT_CAPS: "SUIVANT",
VR_GOT_IT_CAPS: "BIEN COMPRIS",
VR_SHOW_SUPPORTED: "Taper pour voir l'Espace en VR avec",
VR_SHOW_UNSUPPORTED: "Désolé mais votre appareil ne répond pas aux critères minimaux pour voir cet Espace en mode VR.",
VR_SHOW_IOS_1: "Taper pour voir l’Espace en Realité Virtuelle",
VR_SHOW_IOS_2: "Nécessite l’application port VR et un iPhone compatible pour voir",
VR_WHAT_YOU_NEED: "Ce dont vous aurez besoin pour...",
VR_NEED_CARDBOARD: "Ce dont vous aurez besoin avec Google Cardboard",
VR_NEED_SAMSUNG: "Ce dont vous aurez besoin avec Samsung Gear VR",
VR_NEED_DAYDREAM: "BESOINS AVANT APPARIEMENT AVEC DAYDREAM VIEW",
VR_NEED_DAYDREAM_PHONE: "Téléphone compatible avec Daydream",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VR App",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "iPhone 5s et plus récent, avec iOS 9.1 et plus récent",
VR_COMPATIBLE_IPHONES_3: "iPhones compatibles",
VR_COMPATIBLE_ANDROID: "Appareils Android compatibles",
VR_COMPATIBLE_ANDROID_LONG: "Compatible avec les écrans des appareils Android de 11,5 à 14 cm (4,5 à 5,5 po) fonctionnant sous Android OS 4.4.4 et plus",
VR_ANDROID_DETAIL: 'Écrans 4.5" à 5.5" avec Android 4.4.4 ou plus récent',
VR_ANDROID_DVICES: "Appareils Android",
VR_COMPATIBLE_SAMSUNG: "Appareils Samsung Compatibles",
VR_SAMSUNG_DETAIL: "Galaxy S6 et plus récents",
VR_APP_FOR_CARDBOARD: "Application port VR pour Google Cardboard",
VR_APP_FOR_SAMSUNG: "Application port VR pour Gear VR",
VR_APP_FOR_ANDROID: "Application port VR pour téléphones Android",
VR_APP_OPEN: "Ouvrir plutôt avec l’application port VR",
VR_DOWNLOAD_HERE: "Télécharger ici",
VR_REQUIRE_HEADSET: "Nécessite un casque VR et l'application port VR pour Android afin d'être installé",
VR_REDIRECT_TO_STORE: "Si l'application n'est pas installée, vous serez rediriger vers l'App store.",
VR_IMPROPER_EMBED: "L'Espace port n'est pas correctement intégré pour supporter VR dans votre navigateur Web.",
VR_OPEN_ANDROID_LINK: "Ouvrez ce lien avec votre appareil mobile",
VR_ANDROID_OPTIONS: "Options disponibles pour casque VR sous",
SHARE_TO: "Partager sur",
SHARE_LINK: "Lien direct",
SHARE_EXPLORE: "Explorer ",
SHARE_AT: "à",
SHARE_WITH: "avec",
SHARE_3D: " en 3D",
SHARE_COPIED: "Copié!",
ERROR_BROWSER_SOLUTION: "Installer un nouveau navigateur pour explorer en 3D.",
ERROR_BROWSER_EXPLANATION: "WebGL a besoin d'un navigateur récent.",
ERROR_GENERIC_PROBLEM: "Il y eu un problème.",
ERROR_GENERIC_SOLUTION: "Redémarrer votre navigateur.",
ERROR_GENERIC_ACTIONS_1: "Si le problème persiste, ",
ERROR_GENERIC_ACTIONS_2: "installez un navigateur plus récent",
ERROR_GENERIC_ACTIONS_3: " ou ",
ERROR_GENERIC_ACTIONS_4: "voir notre guide de dépannage",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "Navigateur non-supporté.",
ERROR_WEBGL_IOS_PROBLEM: "Version iOS non-supportée.",
ERROR_WEBGL_IOS_SOLUTION: "Mettre à jour avec iOS8 au minimum pour voir l'Espace en 3D.",
ERROR_WEBGL_IOS_ACTIONS_1: "Tapez ",
ERROR_WEBGL_IOS_ACTIONS_2: "Paramètres > Général > Mise à jour Software",
ERROR_WEBGL_SAFARI_PROBLEM: "Activez WegGL pour explorer en 3D.",
ERROR_WEBGL_SAFARI_ACTIONS_1: "Cliquez ",
ERROR_WEBGL_SAFARI_ACTIONS_2: "Préferences > Avancés > Voir menu développeur",
ERROR_WEBGL_SAFARI_ACTIONS_3: "Puis cliquez ",
ERROR_WEBGL_SAFARI_ACTIONS_4: "Développe > Activé WebGL",
ERROR_MISSING_URLS_PROBLEM: "Il n'y a pas de panoromas pour ce modèle.",
ERROR_MISSING_URLS_EXPLANATION: "Ceci est un ancien modèle. Le propriétaire du site a peut-être un nouveau modèle en cours.",
ERROR_LOADING_FAILED_PROBLEM: "Ce modèle n'est pas disponible.",
ERROR_LOADING_FAILED_ACTIONS_1: "Si le problème persiste, ",
ERROR_LOADING_FAILED_ACTIONS_2: "voir notre guide de dépannage",
ERROR_MAINTENANCE_PROBLEM: "Maintenance en cours.",
ERROR_MAINTENANCE_SOLUTION: "Revenez dans quelques instants.",
LINK_TO_LOCATION: "Lien vers l'emplacement",
MENU_COPY: "Copie",
LINK_ALERT_COPY: "Utiliser CTRL+CMD C pour copier.",
ROTATE: "Faire pivoter",
INSIDE: "Intérieure",
MOVE: "Se déplacer",
ZOOM: "Zoom"
}
}
, {}],
114: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "読み込み中",
PRESENTED_BY_CAPS: "PRESENTED BY",
POWERED_BY: "powered by",
POWERED_BY_CAPS: "POWERED BY",
DESKTOP_SHORT_CTA: "クリックしてこの3D Spaceを探索",
MOBILE_SHORT_CTA: "タップしてこの3D Spaceを探索",
PRESENTED_BY: "Presented by ",
MORE: "全て表示 ",
LESS: "閉じる ",
TAG_CONTENT: "tag™コンテンツ ",
SHOW: "表示",
HIDE: "非表示",
DOLLHOUSE: "ドールハウス",
FLOOR_PLAN: "フロアプラン",
OPEN_HIGHLIGHTS: "ハイライトを開く",
CLOSE_HIGHLIGHTS: "閉じる",
PREVIOUS: "前へ",
PLAY: "再生",
PAUSE: "一時停止",
NEXT: "次へ",
EXPLORE_3D_SPACE: "3DSpaceの探索",
VIEW_DOLLHOUSE: "ドールハウスの表示",
SOCIAL_SHARING: "このSpaceを共有する",
VIEW_IN_VR: "VRで表示",
VIEW_FULLSCREEN: "フルスクリーン表示",
EXIT_FULLSCREEN: "フルスクリーン表示を終了",
ZOOM_IN: "ズームイン",
ZOOM_OUT: "ズームアウト",
FLOOR_NAME: "フロア ",
FLOOR_ALL: "すべて",
TERMS: "規約",
PORT_TERMS: "port規約",
TERMS_OF_USE: "利用規約",
CLOSE_TERMS: "閉じる",
TERMS_TEXT_FILE: "terms-jp-JP.html",
TERMS_FAIL: "規約を取得できませんでした。利用規約を表示するためにインターネットに接続されていることを確認してください。",
WEBVR_FOR_DAYDREAM: "Daydream View用",
WEBVR_ENTER_WEBVR: "VRに入る",
WEBVR_DIFFERENT_HEADSET: "別のヘッドセットをお持ちですか?",
WEBVR_LEARN_MORE: "もっと詳しく",
WEBVR_VIEW_SPACE: "VRでSpaceを表示",
WEBVR_DAYDREAM_VIEW: "Daydream View",
WEBVR_DAYDREAM_PHONE: "Daydream対応スマホ",
WEBVR_FOR_CARDBOARD: "Google Cardboard用",
WEBVR_VIEW_CARDBOARD: "またはGoogle Cardboardで表示",
VR_VIEW_SPACE: "バーチャルリアリティでSpaceを表示",
VR_LEARN_MORE_CAPS: "もっと詳しく",
VR_PREVIOUS_CAPS: "前へ",
VR_NEXT_CAPS: "次へ",
VR_GOT_IT_CAPS: "了解",
VR_SHOW_SUPPORTED: "タップして次を使用してVRでSpaceを表示: ",
VR_SHOW_UNSUPPORTED: "お使いのデバイスはVRでSpaceを表示する最低要件を満たしていません",
VR_SHOW_IOS_1: "タップしてVRでSpaceを表示",
VR_SHOW_IOS_2: "表示するにはport VRアプリと互換性のあるiPhoneが必要です",
VR_WHAT_YOU_NEED: "必要なもの",
VR_NEED_CARDBOARD: "Google Cardboardに必要なもの",
VR_NEED_SAMSUNG: "Samsung Gear VRに必要なもの",
VR_NEED_DAYDREAM: "事前にDaydream Viewとのペアリングが必要です",
VR_NEED_DAYDREAM_PHONE: "Daydream対応スマホ",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VRアプリ",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhone",
VR_COMPATIBLE_IPHONES_2: "iOS 9.1以降で動作するiPhone 5s以降のモデル",
VR_COMPATIBLE_IPHONES_3: "互換性のあるiPhone",
VR_COMPATIBLE_ANDROID: "互換性のあるAndroidデバイス",
VR_COMPATIBLE_ANDROID_LONG: "Android OS 4.4.4以降で動作する互換性のあるAndroidデバイスの4.5~5.5インチディスプレイ",
VR_ANDROID_DETAIL: "Android OS 4.4.4以降で動作する4.5~5.5インチディスプレイ",
VR_ANDROID_DVICES: "Androidデバイス",
VR_COMPATIBLE_SAMSUNG: "互換性のあるSamsungデバイス",
VR_SAMSUNG_DETAIL: "Galaxy S5以降のモデル",
VR_APP_FOR_CARDBOARD: "Google Cardboard用のport VRアプリ",
VR_APP_FOR_SAMSUNG: "Gear VR 用のport VRアプリ",
VR_APP_FOR_ANDROID: "Androidフォン用のport VRアプリ",
VR_APP_OPEN: "port VRアプリで開く",
VR_DOWNLOAD_HERE: "ここからダウンロード",
VR_REQUIRE_HEADSET: "Android 用のVRヘッドセットとport VRアプリ をインストールする必要があります",
VR_REDIRECT_TO_STORE: "アプリがインストールされていない場合、App Storeにリダイレクトされます",
VR_IMPROPER_EMBED: "お使いのウェブブラウザでVRがサポートされるようport Spaceが適切に埋め込まれていません。",
VR_OPEN_ANDROID_LINK: "お使いの携帯電話でリンクを開いてください",
VR_ANDROID_OPTIONS: "利用可能なVRヘッドセットオプション",
SHARE_TO: "共有先",
SHARE_LINK: "ダイレクトリンク",
SHARE_EXPLORE: "探索",
SHARE_AT: "場所",
SHARE_WITH: "使用アプリ",
SHARE_3D: "3Dで",
SHARE_COPIED: "コピーされました!",
ERROR_BROWSER_SOLUTION: "3D探索するには、新しいバージョンのブラウザをインストールしてください",
ERROR_BROWSER_EXPLANATION: "WebGLにはモダンブラウザが必要です。",
ERROR_GENERIC_PROBLEM: "問題が発生しました。",
ERROR_GENERIC_SOLUTION: "ブラウザを再起動してください。",
ERROR_GENERIC_ACTIONS_1: "問題が解決しない場合は、",
ERROR_GENERIC_ACTIONS_2: "サポートされているブラウザをインストールしてください",
ERROR_GENERIC_ACTIONS_3: "または",
ERROR_GENERIC_ACTIONS_4: "トラブルシューティングガイドを参照してください",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "ブラウザがサポートされていません。",
ERROR_WEBGL_IOS_PROBLEM: "サポートされていないiOSバージョンです。",
ERROR_WEBGL_IOS_SOLUTION: "3D探索するには、iOS 8以降にアップグレードしてください。",
ERROR_WEBGL_IOS_ACTIONS_1: "以下の順にタップします:",
ERROR_WEBGL_IOS_ACTIONS_2: "設定 > 全般 > ソフトウェアの更新",
ERROR_WEBGL_SAFARI_PROBLEM: "WebGLを有効にして3Dで探索します。",
ERROR_WEBGL_SAFARI_ACTIONS_1: "以下の順にクリックします:",
ERROR_WEBGL_SAFARI_ACTIONS_2: "環境設定 > 詳細 > メニューバーに開発メニューを表示",
ERROR_WEBGL_SAFARI_ACTIONS_3: "その後、以下の順にクリックします:",
ERROR_WEBGL_SAFARI_ACTIONS_4: "開発 > WebGLを有効にする",
ERROR_MISSING_URLS_PROBLEM: "このモデルではパノラマを使用できません。",
ERROR_MISSING_URLS_EXPLANATION: "これは古いモデルです。ウェブサイト所有者が新しいモデルを開発中かもしれません。",
ERROR_LOADING_FAILED_PROBLEM: "モデルは利用できません。",
ERROR_LOADING_FAILED_ACTIONS_1: "問題が解決しない場合は、",
ERROR_LOADING_FAILED_ACTIONS_2: "トラブルシューティングガイドを参照してください",
ERROR_MAINTENANCE_PROBLEM: "メンテナンスは進行中です。",
ERROR_MAINTENANCE_SOLUTION: "しばらくしてからやり直し てください。",
LINK_TO_LOCATION: "ロケーションへのリンク",
MENU_COPY: "コピー",
LINK_ALERT_COPY: "コピーするにはCTRL/CMD + Cを使用してください。",
ROTATE: "回転",
MOVE: "移動",
INSIDE: "内側",
ZOOM: "ズーム",
HELP: "ヘルプ",
HELP_NAVIGATION_TAB: "ナビゲーション",
HELP_MORE_HELP_TAB: "その他のヘルプ",
HELP_DESKTOP_PANORAMA_1A: "Spaceを見回すには、クリックしてドラッグします。",
HELP_DESKTOP_PANORAMA_2A: "移動するには、Space全体にあるリングをクリックします。",
HELP_DESKTOP_PANORAMA_3A: "スクロールホイールを使用してズームイン、ズームアウトします。",
HELP_DESKTOP_PANORAMA_1B: "または、矢印キーを使用して左右に向きを変えます。",
HELP_DESKTOP_PANORAMA_2B: "または、矢印キーを使用して前後に向きを変えます。",
HELP_DESKTOP_PANORAMA_3B: "あるいは、プラス(+)キーまたはマイナス(-)キーを使用して、ズームイン、ズームアウトします。",
HELP_DESKTOP_360_2A: "内側ビューアイコンをクリックしてSpaceに入ります。",
HELP_DESKTOP_360_2B: "または、数字キー1を押して内側ビューに入ります。",
HELP_DESKTOP_DOLLHOUSE_1A: "左クリックと左右、上下のドラッグでドールハウスを回転します。",
HELP_DESKTOP_DOLLHOUSE_2A: "右クリックと左右、上下のドラッグでドールハウスの画面上の位置を変更します。",
HELP_DESKTOP_DOLLHOUSE_3A: "スクロールホイールを使用してズームイン、ズームアウトします。",
HELP_DESKTOP_DOLLHOUSE_1B: "または、矢印キーを使用してドールハウスを回転します。",
HELP_DESKTOP_FLOORPLAN_1A: "左ボタンを押しながら、上下左右にドラッグしてフロアプランの画面上の位置を変更します。",
HELP_DESKTOP_FLOORPLAN_2A: "右ボタンを押しながら左右にドラッグして、フロアプランを回転します。",
HELP_DESKTOP_FLOORPLAN_3A: "スクロールホイールを使用してズームイン、ズームアウトします。",
HELP_DESKTOP_FLOORPLAN_2B: "または、矢印キーを使用して左右に回転します。",
HELP_DESKTOP_FLOORPLAN_3B: "または、矢印キーを使用して、ズームイン、ズームアウトします。",
HELP_MOBILE_PANORAMA_1: "Spaceを見回すには、タッチしてドラッグします。",
HELP_MOBILE_PANORAMA_2: "移動するには、Space全体にあるリングをタップします。",
HELP_MOBILE_3: "ピンチジェスチャーを使用してズームイン、ズームアウトします。",
HELP_MOBILE_360_2: "内側ビューアイコンをタップしてSpaceに入ります。",
HELP_MOBILE_DOLLHOUSE_1: "タッチして上下左右にドラッグしてドールハウスを回転します。",
HELP_MOBILE_DOLLHOUSE_2: "タッチして、2本指でドラッグしてドールハウスを配置します。",
HELP_MOBILE_FLOORPLAN_1: "タッチ&ドラッグしてフロアプランを配置します。",
HELP_MOBILE_FLOORPLAN_2: "タッチして、2本指でドラッグしてフロアプランを回転します。",
HELP_MORE_HLR_A: "ハイライト",
HELP_DESKTOP_MORE_HLR_B: "サムネイル画像を使用してSpaceを移動するために開きます。",
HELP_MORE_DOLLHOUSE_A: "ドールハウス",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "クリックして3DでSpace全体のトップダウンビューを表示して回転します。",
HELP_MOBILE_MORE_DOLLHOUSE_B: "タップして3DでSpace全体のトップダウンビューを表示して回転します。",
HELP_MORE_FLOORS_A: "フロアセレクター",
HELP_DESKTOP_MORE_FLOORS_B: "Space内のフロアを切り替えます。",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "クリックするか、カーソルを置くとSpace内の機能についての説明が表示されます。",
HELP_MOBILE_MORE_TAG_B: "タップするとSpace内の機能についての説明が表示されます。",
HELP_MORE_ZOOM_A: "ズームコントロール",
HELP_DESKTOP_MORE_ZOOM_B: "これらのコントロールまたはスクロールホイールを使用して、ズームイン、ズームアウトします。",
HELP_MORE_TOUR_A: "ツアーコントロール",
HELP_DESKTOP_MORE_TOUR_B: "ガイド付きツアー中に再生、一時停止、前方・後方に移動します。",
HELP_MORE_INSIDE_A: "内側ビュー",
HELP_DESKTOP_MORE_INSIDE_B: "クリックしてSpace内を探索します。",
HELP_MOBILE_MORE_INSIDE_B: "タップしてSpace内を探索します。",
HELP_MORE_VR_A: "VRモード",
HELP_DESKTOP_MORE_VR_B: "クリックしてバーチャルリアリティでSpaceを起動します。",
HELP_MOBILE_MORE_VR_B: "タップしてバーチャルリアリティでSpaceを起動します。",
HELP_MORE_360_A: "360° Views",
HELP_DESKTOP_MORE_360_B: "Highlight Reelの360° Viewsをクリックして屋外シーンを表示します。",
HELP_MOBILE_MORE_360_B: "Highlight Reelの360° Viewsをタップして屋外シーンを表示します。",
HELP_MORE_FULLSCREEN_A: "フルスクリーン",
HELP_DESKTOP_MORE_FULLSCREEN_B: "3D Showcaseをフルスクリーン表示にします。",
CLOSE: "閉じる"
}
}
, {}],
115: [function(e, t, i) {
"use strict";
t.exports = {
PAGE_TITLE: "",
LOADING: "Загрузка",
PRESENTED_BY_CAPS: "ПРЕДСТАВЛЕНО",
POWERED_BY: "разработано на платформе ",
POWERED_BY_CAPS: "РАЗРАБОТАНО НА ПЛАТФОРМЕ",
DESKTOP_SHORT_CTA: "Нажмите для просмотра.",
MOBILE_SHORT_CTA: "Нажмите для просмотра.",
PRESENTED_BY: "Представлено ",
MORE: "Больше ",
LESS: "Меньше ",
TAG_CONTENT: "tag™ Контент",
SHOW: "Показать",
HIDE: "Скрыть",
DOLLHOUSE: "Dollhouse",
FLOOR_PLAN: "Планировка",
OPEN_HIGHLIGHTS: "Открыть Фотоколлаж",
CLOSE_HIGHLIGHTS: "Закрыть",
PREVIOUS: "Предыдущий",
PLAY: "Воспроизвести",
PAUSE: "Пауза",
NEXT: "Следующий",
EXPLORE_3D_SPACE: "Просмотреть 3D модель",
VIEW_DOLLHOUSE: "Посмотреть Dollhouse",
SOCIAL_SHARING: "Поделиться этой моделью",
VIEW_IN_VR: "Посмотреть в VR",
VIEW_FULLSCREEN: "Полный экран",
EXIT_FULLSCREEN: "Выйти из полноэкранного режима",
ZOOM_IN: "Увеличить",
ZOOM_OUT: "Уменьшить",
FLOOR_NAME: "Этаж ",
FLOOR_ALL: "Все",
TERMS: "Условия",
PORT_TERMS: "Правила пользования",
TERMS_OF_USE: "Условия использования",
TERMS_TEXT_FILE: "terms-ru-RU.html",
CLOSE_TERMS: "Закрыть",
TERMS_FAIL: "Не удалось загрузить условия использования. Для просмотра условий использования, пожалуйста, убедитесь, что у Вас есть подключение к Интернету.",
HELP: "Помощь",
HELP_NAVIGATION_TAB: "Навигация",
HELP_MORE_HELP_TAB: "Доп. Помощь",
CLOSE: "Закрыть",
HELP_DESKTOP_PANORAMA_1A: "Нажмите и перетащите, чтобы осмотреть пространство вокруг.",
HELP_DESKTOP_PANORAMA_2A: "Для передвижения по модели нажимайте на круги .",
HELP_DESKTOP_PANORAMA_3A: "Используйте колесо прокрутки для увеличения и уменьшения.",
HELP_DESKTOP_PANORAMA_1B: "Или используйте клавиши со стрелками для поворота влево и вправо.",
HELP_DESKTOP_PANORAMA_2B: "Или используйте стрелки для перемещения вперед и назад.",
HELP_DESKTOP_PANORAMA_3B: "Или используйте клавиши ‘плюс’ и ‘минус’ для увеличения и уменьшения изображения.",
HELP_DESKTOP_360_2A: "Нажмите на значок ‘Вид Изнутри’, чтобы увидеть внутреннюю панораму.",
HELP_DESKTOP_360_2B: "или нажмите 1 на клавиатуре, чтобы увидеть внутреннюю панораму.",
HELP_DESKTOP_DOLLHOUSE_1A: "Нажмите левую кнопку мыши и перетащите влево, вправо, вверх и вниз, чтобы повернуть Dollhouse.",
HELP_DESKTOP_DOLLHOUSE_2A: "Нажмите правую кнопку мыши и перетащите влево, вправо, вверх и вниз, чтобы изменить позицию Dollhouse на экране.",
HELP_DESKTOP_DOLLHOUSE_3A: "Используйте колесо прокрутки чтобы увеличить и уменьшить.",
HELP_DESKTOP_DOLLHOUSE_1B: "Или используйте клавиши со стрелками, чтобы повернуть Dollhouse.",
HELP_DESKTOP_FLOORPLAN_1A: "Нажмите левую кнопку мыши и перетащите влево, вправо, вверх и вниз, чтобы изменить положение Планировки на экране.",
HELP_DESKTOP_FLOORPLAN_2A: "Нажмите правую кнопку мыши и перетащите влево или вправо, чтобы повернуть Планировку.",
HELP_DESKTOP_FLOORPLAN_3A: "Используйте колесо прокрутки чтобы увеличить и уменьшить.",
HELP_DESKTOP_FLOORPLAN_2B: "Или используйте клавиши со стрелками для поворота влево или вправо.",
HELP_DESKTOP_FLOORPLAN_3B: "Или используйте стрелки для увеличения и уменьшения.",
HELP_MOBILE_PANORAMA_1: "Нажмите и перетащите, чтобы осмотреть модель.",
HELP_MOBILE_PANORAMA_2: "Для передвижения по модели нажимайте на круги.",
HELP_MOBILE_3: "Используйте движение двумя пальцами в разные стороны, чтобы увеличить и уменьшить.",
HELP_MOBILE_360_2: "Нажмите на значок ‘Вид Изнутри’, чтобы увидеть внутреннюю панораму.",
HELP_MOBILE_DOLLHOUSE_1: "Нажмите и перетащите вверх, вниз, влево и вправо, чтобы повернуть Dollhouse.",
HELP_MOBILE_DOLLHOUSE_2: "Нажмите и перетащите, чтобы расположить Dollhouse.",
HELP_MOBILE_FLOORPLAN_1: "Нажмите и перетащите, чтобы расположить план здания.",
HELP_MOBILE_FLOORPLAN_2: "Коснитесь и перетащите двумя пальцами, чтобы повернуть план здания.",
HELP_MORE_HLR_A: "Фотоколлаж",
HELP_DESKTOP_MORE_HLR_B: "Откройте для перемещения по модели, используя иконки изображений.",
HELP_MORE_DOLLHOUSE_A: "Dollhouse",
HELP_DESKTOP_MORE_DOLLHOUSE_B: "Нажмите и поверните сверху вниз чтобы просмотреть всю 3D модель.",
HELP_MOBILE_MORE_DOLLHOUSE_B: "Нажмите и поверните сверху вниз чтобы просмотреть всю 3D модель.",
HELP_MORE_FLOORS_A: "Выбор Этажа",
HELP_DESKTOP_MORE_FLOORS_B: "Переключение между этажами.",
HELP_MORE_TAG_A: "tag™ Posts",
HELP_DESKTOP_MORE_TAG_B: "Нажмите или наведите курсор мыши для получения информации о функциях в Пространстве.",
HELP_MOBILE_MORE_TAG_B: "Нажмите для получения информации о функциях.",
HELP_MORE_ZOOM_A: "Масштаб",
HELP_DESKTOP_MORE_ZOOM_B: "Используйте эти кнопки для увеличения и уменьшения изображения или используйте колесо прокрутки.",
HELP_MORE_TOUR_A: "Управление Туром",
HELP_DESKTOP_MORE_TOUR_B: "Используйте кнопки Воспроизвести, Пауза, Вперед и Назад для управления фотоколлажем.",
HELP_MORE_INSIDE_A: "Вид Изнутри",
HELP_DESKTOP_MORE_INSIDE_B: "Нажмите, чтобы просмотреть модель изнутри.",
HELP_MOBILE_MORE_INSIDE_B: "Нажмите, чтобы просмотреть модель изнутри.",
HELP_MORE_VR_A: "Режим VR",
HELP_DESKTOP_MORE_VR_B: "Нажмите, чтобы запустить модель в виртуальной реальности.",
HELP_MOBILE_MORE_VR_B: "Нажмите, чтобы запустить модель в виртуальной реальности.",
HELP_MORE_360_A: "360° Views",
HELP_DESKTOP_MORE_360_B: "Нажмите на “360 Views” в фотоколлаже, чтобы просмотреть внешний пейзаж.",
HELP_MOBILE_MORE_360_B: "Нажмите на “360 Views” в фотоколлаже, чтобы просмотреть внешний пейзаж.",
HELP_MORE_FULLSCREEN_A: "Полный экран",
HELP_DESKTOP_MORE_FULLSCREEN_B: "Развернуть 3D Showcase во весь экран.",
WEBVR_FOR_CARDBOARD: "Для Google Cardboard",
WEBVR_FOR_DAYDREAM: "Для просмотра в Daydream",
WEBVR_ENTER_WEBVR: "ВОЙТИ В VR ",
WEBVR_DIFFERENT_HEADSET: "Есть другой VR-шлем?",
WEBVR_LEARN_MORE: "Узнать больше",
WEBVR_VIEW_SPACE: "Запустить модель в VR",
WEBVR_DAYDREAM_VIEW: "Посмотреть в Daydream",
WEBVR_DAYDREAM_PHONE: "Daydream-готовый телефон",
WEBVR_VIEW_CARDBOARD: "Или просмотреть в Google Cardboard",
VR_WHAT_YOU_NEED: "Что Вам потребуется...",
VR_NEED_DAYDREAM_PHONE: "Daydream-готовый телефон",
VR_GOOGLE_DAYDREAM: "Google Daydream",
VR_APP: "port VR App",
VR_APP_OPEN: "Или открыть через приложение port VR",
VR_COMPATIBLE_ANDROID_LONG: 'Совместимые Android устройства с диагональю экрана 4.5"-5.5" дюймов и Android версией 4.4.4, и выше',
VR_SAMSUNG_DETAIL: "Galaxy S6 и выше",
VR_APP_FOR_ANDROID: "Приложение port VR для Android",
VR_NEED_DAYDREAM: "Необходимо для соединением с Daydream",
VR_VIEW_SPACE: "Запустить модель в VR",
VR_LEARN_MORE_CAPS: "УЗНАТЬ БОЛЬШЕ",
VR_PREVIOUS_CAPS: "ПРЕДЫДУЩИЙ",
VR_NEXT_CAPS: "СЛЕДУЮЩИЙ",
VR_GOT_IT_CAPS: "ЯСНО",
VR_SHOW_SUPPORTED: "Нажмите, чтобы просмотреть модель в VR с помощью",
VR_SHOW_UNSUPPORTED: "Извините, но Ваше устройство не соответствует минимальным требованиям для просмотра модели в VR.",
VR_SHOW_IOS_1: "Нажмите, чтобы просмотреть модель в VR",
VR_SHOW_IOS_2: "Для просмотра требуется приложение port VR и совместимый iPhone",
VR_NEED_CARDBOARD: "Что Вам потребуется для Google Cardboard",
VR_NEED_SAMSUNG: "Что Вам потребуется для Samsung Gear VR",
VR_GOOGLE_CARDBOARD: "Google Cardboard",
VR_SAMSUNG_GEAR_VR: "Samsung Gear VR",
VR_COMPATIBLE_IPHONES_1: "iPhones",
VR_COMPATIBLE_IPHONES_2: "iPhone 5s или новее с iOS 9.1 и выше",
VR_COMPATIBLE_IPHONES_3: "Совместимые модели iPhone",
VR_COMPATIBLE_ANDROID: "Совместимые Android устройства",
VR_ANDROID_DETAIL: 'Экран от 4.5" до 5.5" и Android 4.4.4, и выше',
VR_ANDROID_DVICES: "Android устройства",
VR_COMPATIBLE_SAMSUNG: "Совместимые Samsung устройства",
VR_APP_FOR_CARDBOARD: "Приложение port VR для Google Cardboard",
VR_APP_FOR_SAMSUNG: "Приложение port VR для Gear VR",
VR_DOWNLOAD_HERE: "Скачать здесь",
VR_REQUIRE_HEADSET: "Требуется VR-шлем и установленное приложение port VR для Android",
VR_REDIRECT_TO_STORE: "Если приложение не установлено, Вы будете перенаправлены на страницу магазина приложений.",
VR_IMPROPER_EMBED: "port модель не встроена должным образом для поддержки VR в вашем веб-браузере.",
VR_OPEN_ANDROID_LINK: "Откройте ссылку на Вашем мобильном телефоне",
VR_ANDROID_OPTIONS: "Доступные опции VR-шлемов",
SHARE_TO: "Поделиться",
SHARE_LINK: "Прямая ссылка",
SHARE_EXPLORE: "просмотреть",
SHARE_AT: "на",
SHARE_WITH: "с",
SHARE_3D: "в 3D",
SHARE_COPIED: "Скопировано!",
ERROR_BROWSER_SOLUTION: "установите новый браузер, чтобы просмотреть 3D пространство.",
ERROR_BROWSER_EXPLANATION: "WebGL требует современный браузер.",
ERROR_GENERIC_PROBLEM: "Ой, что-то пошло не так.",
ERROR_GENERIC_SOLUTION: "Перезапустите браузер.",
ERROR_GENERIC_ACTIONS_1: "Если проблема не устранена, ",
ERROR_GENERIC_ACTIONS_2: "установите поддерживаемый браузер",
ERROR_GENERIC_ACTIONS_3: " или ",
ERROR_GENERIC_ACTIONS_4: "смотрите наше руководство по устранению неполадок",
ERROR_WEBGL_UNSUPPORTED_PROBLEM: "Браузер не поддерживается.",
ERROR_WEBGL_IOS_PROBLEM: "iOS-версия не поддерживается.",
ERROR_WEBGL_IOS_SOLUTION: "Обновите до iOS 8 или выше, чтобы просмотреть пространство в 3D.",
ERROR_WEBGL_IOS_ACTIONS_1: "Нажмите ",
ERROR_WEBGL_IOS_ACTIONS_2: "Настройки > Общие > Обновление ПО",
ERROR_WEBGL_SAFARI_PROBLEM: "Включите WebGL для 3D-просмотра.",
ERROR_WEBGL_SAFARI_ACTIONS_1: "Нажмите ",
ERROR_WEBGL_SAFARI_ACTIONS_2: "Настойки > Дополнения > Показывать меню “Разработка” в строке меню",
ERROR_WEBGL_SAFARI_ACTIONS_3: "Затем нажмите ",
ERROR_WEBGL_SAFARI_ACTIONS_4: "Разработка > Разрешить WebGL",
ERROR_MISSING_URLS_PROBLEM: "Ой, для этой модели нет панорамы.",
ERROR_MISSING_URLS_EXPLANATION: "Эта модель устарела. У владельца веб-сайта может быть новая модель.",
ERROR_LOADING_FAILED_PROBLEM: "Ой, модель недоступна.",
ERROR_LOADING_FAILED_ACTIONS_1: "Если проблема не устранена, ",
ERROR_LOADING_FAILED_ACTIONS_2: "посмотрите наше руководство по устранению неполадок",
ERROR_MAINTENANCE_PROBLEM: "Выполняется техническое обслуживание.",
ERROR_MAINTENANCE_SOLUTION: "Пожалуйста, попробуйте снова через несколько минут.",
LINK_TO_LOCATION: "Ссылка на местоположение",
MENU_COPY: "Копировать",
LINK_ALERT_COPY: "Для того, чтобы скопировать, пожалуйста, используйте CTRL/CMD + C.",
ROTATE: "Вращать",
MOVE: "Передвигаться",
INSIDE: "Вид изнутри",
ZOOM: "Масштаб"
}
}
, {}],
116: [function(e, t, i) {//main.js
(function(t) {
"use strict";
var modelProgressBase = 0.4;
var progressUpdate = function(e){ // 0 <= e <= 1
console.log('e1:'+e)
e = Math.round(modelProgressBase * e * 100);
console.log('e2:'+e)
var t = $('.progressbar');
t.find('.bar').css('width',e+'%');
t.find('.label').css('left', t.width() * e / 100 - 15 + 'px' ); //上面跟着的字的百分比
t.find('.perc').text(e +'%'); //具体数字的百分比
}
$('#gui-loading').fadeIn(200);
progressUpdate(0.1)
var fileName = g_version ? 'modeldata.js' : 'someData.json' ;
$.ajax(g_Prefix + "data/"+window.number+"/"+fileName+"?"+randomTime().getTime(),{dataType: "json"}).done( function(e){ //改
var data = matcher(e);
data.files.templates[0] = g_Prefix + e.files.templates[0].replace("{{number}}",window.number);
data.user = {
"is_authenticated": false,
"flags": ["payment_show_past_due", "sc_imgopt_100", "mattertags", "labels", "fastly_v2_urls", "vr", "uhql", "sc_segment_100", "show_segment_metrics", "content_distribution", "workshop_webgl", "show360views", "showcase_vr", "ws_zooming", "model_settings", "ws_360snapshots", "img_multi_dl", "vrworkshop", "tag_links", "ws_img_multi_dl", "mattertag_links", "billing_tab_hidden", "static_cloud_ui", "metrics", "mattertag_media", "img_size_download", "show_360snapshots", "floorplan", "sc_tilegen_0", "showcase_webvr", "sc_mixpanel_0", "show_clickbait", "zooming", "showcase_tiling", "list_signed_urls_default_3", "fastly_image_opto"]
}
try{//处理一下导览数据
data.model.images = data.model.images.filter(e=>{
if(!e.locations && !e.thumbnail_signed_src)return; //旧的曾有导览数据是错误的,将它删除
if(e.locations && e.locations.length == 0)return;
return e
})
}catch(e){console.log(e) }
window.DATA = data;
data.model.summary = data.summary
data.model.name = data.name
for(let i in data){
data[i] == "false" && (data[i] = false)
}
progressUpdate(0.7);
StartLoad(); //xzw someData.js是我整合的 原本在html里 但这样每个场景的html都不一样了
if(data.weixinDesc){
g_weixinObj.desc = data.weixinDesc;
}
if(data.shareImgUrl){
g_weixinObj.imgUrl = data.shareImgUrl
}
window.wx && manage.weixinShare();
//初始画面
data.camera_start && data.camera_start.thumbImg && E(manage.dealURL(data.camera_start.thumbImg))
function E(e) {
$(" ").attr("src", e).on("load", function() {
$("#gui-thumb").css("backgroundImage", "url(" + e + ")").fadeIn(500),
$(this).remove()
})
}
//背景
settings.transparentBg = settings.transparentBg || data.transparentBg || false,
settings.bgImg = settings.bgImg || data.bgImg || null
if(settings.bgImg){
$("#player").css({'background-image': "url("+settings.bgImg+")",
"background-position": "center center"
})
}
{//初始化导览时间
if(DATA.tourBlackSpeed == void 0)DATA.tourBlackSpeed = 100
window._settings.warp.teleportTime = settings.teleportTime / DATA.tourBlackSpeed * 100;
if(DATA.tourWalkSpeed == void 0)DATA.tourWalkSpeed = 100
if(DATA.tourRotTime == '' || DATA.tourRotTime == void 0){
DATA.tourRotTime = settings.tourRotTime; //默认停留2秒
}
}
{//其他
_settings.floorPlanAngle = DATA.floorPlanAngle || 0
}
}).fail(e=>{
alert("缺少someData文件,请检查场景码是否正确。")
})
function StartLoad(){//当加载完data后
function i() {
var e = window.number//Y.getModelIDFromQueryString();
if (!e)
return b(null, "loading-failed");
var t = Y.parseSidUrl(e)
, i = l()
, a = c()
, s = o()
, u = V.quickstart.enabled
, g = null
, m = null
, v = null
, w = null
, T = null
, x = null
, S = null
, M = null
, R = null
, P = null
, O = null
, L = null
, N = new ue;
r(s);
h({ //MP开头写法
urlBase: t.urlBase
}).then(function() {
return re.init(),
d(t, e) //getModel and load
}).then(function(e) {
progressUpdate(0.9)
return P = e,
p(P, V.appConfig.segment_key, V.appConfig.keen_write_key, V.appConfig.keen_project_id, {
startSource: i,
autoplay: V.autoplay,
quickstart: u
}),
P.urls.init()
}).then(function() {
return P.loadPanos()
}).then(function() {
m = X.getStartCameraOptions(P, P.panos),
S = A(P),
O = y(u, m.mode),
v = O.controls,
w = O.player,
T = O.director,
x = O.tagManager,
M = O.tileDownloader,
R = O.qualityManager,
L = O.panoRenderer,
C(P, S, O, s),
w.director = T,//xzw add
P.supportsTiles && M.start(),
!u || m.mode === D.PANORAMA && m.pano || (de.warn("Tried to quickstart, but failed as we are not starting in inside mode."),
u = !1);
var e = null;
if (u) {
de.warn("Quickstart engaged. Hold on to your knickers.");
var t = v.controls[D.PANORAMA];
g = new ie(R,S.scene,S.camera,t,s),
_(S, s, P),
e = g.load(m).then(function() {
S.addComponent(g),
S.once(le.AfterRender, function() {
de.warn("First render after quickstart load finished.")
})
})
}
window.flyToFirst = function(){//xzw add
var pano = w.model.panos.get("8d778e19657f433fb9cf8947d823bb70");
var q = new _x.Quaternion(0.7099827027821568,-0.07708150183830938,0.6958985789714591,0.07555241737970636);
var lookAtPoint = new _x.Vector3(0,0,-1).applyQuaternion(q).add(pano.position);
w.flyToPano({pano:pano, lookAtPoint:lookAtPoint})
};
return $.when(e, U.startLoading(P, w, T, V.autoplay, u, N))
}).then(function() {
return f(P, U.onProgress, i, !u, a)
}).then(function() {
if (m.quickstart = u,
I(P, S, O, s),
S.started || _(S, s, P),
H.modelLoaded(P, w, v, V.autoplay),
E(w, P, m, V.autoplay).done(function() {
T.autoTour()
}),
!P.supportsTiles) {
var e = new Z(P,w);
e.start()
}
u && (S.removeComponent(g),
g.destroy(),
m.pano.enter()),
U.init(P, T, w, v, S, m, H.getSessionId()),
U.endLoading(P, T, x),
S.once(le.AfterRender, function() {
N.setAppReadyTime();
var e = N.calcFullLoadingTime();
de.warn("Total load time: " + e / 1e3),
H.loadComplete(e),
window.dispatchEvent(window.evt);
de.warn("First render after model load finished.")
try {
parent.postMessage({
cmd: "loaded",
}, "*")
} catch (err) {}
}),
S.on(le.MemoryUsageUpdated, n)
}).fail(b.bind(this, e))
}
function n(e) {
ce.update(e)
}
function r(e) {
de.info("Version", "2.25.6-0-gd87e5b1"),
q.defaultMaxListeners = 1e3,
a(e),
s()
}
function o() {
return document.getElementById("player")
}
function a(e) {
e.addEventListener("dragenter", T, !1),
e.addEventListener("dragover", T, !1)
}
function s() {
F.valueFromHash("title", !0) || $(document).ready(function() {
var e = $(".model-title");
e.hide()
})
}
function l() {
return F.valueFromHash("play", !1) ? "autoplay" : F.inIframe() ? "click" : "fullpage"
}
function c() {
return {
panoElementsToLoad: 6,
modelElementsToLoad: 0,
totalElementsLoaded: 0,
totalElementsToLoad: 0,
totalPercentageLoaded: 0,
progressCallback: null
}
}
function h(e) {
return K.loadFeatureFlags(e).done(function(e) {
K.updateDependentSettings(e, V)
})
}
// function u(e) {
// return Q.get(e.urlBase + "/api/v1/config/showcase", {
// responseType: "json",
// prefetchFrom: "config"
// }).then(function(e) {
// return e ? void j.extendObject(V.appConfig, e) : {}
// }, function(e) {
// return de.warn("Failed loading runtime config, using defaults."),
// $.when({})
// })
// }
function d(e, t) {
var i = B.getModel({
url: t,
floors: F.valueFromHash("f", !0),
autoload: !1
})
;
return $.when(i, n).then(null, function(e) {
return this
})
}
function p(e, t, i, n, r) {
de.info("Model data loaded"),
de.debug("UUID: " + e.data.job.uuid),
J.init(K.getFlags()),
i && H.initKeen({
token: i,
appId: n
}),
H.initSegment({
model: e.sid,
version: "2.25.6-0-gd87e5b1",
startSource: r.startSource,
token: t,
autoplay: r.autoplay,
quickstart: r.quickstart
})
}
function f(e, t, i, n, r) {
return r.progressCallback = t,
H.sessionStart(),
e.load(n).progress(g.bind(this, r))
}
function g(e, t) {
e.modelElementsToLoad = t[1],
v(e),
m(e)
}
function m(e) {
e.totalElementsLoaded++,
e.totalPercentageLoaded = e.totalElementsLoaded / e.totalElementsToLoad,
//----许钟文-----------------模型进度条向后调整
isNaN(e.totalPercentageLoaded) && (e.totalPercentageLoaded = 0);
e.totalPercentageLoaded = modelProgressBase + (1-modelProgressBase)*e.totalPercentageLoaded;
console.log('pro:'+e.totalPercentageLoaded)
//---------------------------
e.progressCallback && e.progressCallback(100 * e.totalPercentageLoaded)
}
function v(e) {
e.totalElementsToLoad = e.modelElementsToLoad + e.panoElementsToLoad
}
function A(e) {
var t = new x.PerspectiveCamera;
t.layers.enable(he.PANOMARKERS),
t.layers.enable(he.RETICULE),
t.layers.enable(he.TAG);
var i = new x.Scene
, n = new x.AmbientLight(16777215);
i.add(n),
i.plane = new x.Mesh(new x.PlaneBufferGeometry(1e5,1e5),new x.RawShaderMaterial({
side: x.DoubleSide
})),
i.plane.position.y = 0,
i.plane.rotateX(-Math.PI / 2),
i.plane.material.visible = !1,
i.add(i.plane),
i.updateMatrixWorld(),
V.showScreenshotLocations && e.data.images.forEach(function(e) {
if (e.metadata && e.metadata.camera_position) {
var t = e.metadata.camera_position
, n = new x.Mesh(new x.BoxGeometry(.3,.3,.3));
n.position = t.clone(),
i.add(n);
var r = e.metadata.camera_quaternion
, o = new x.Vector3(0,0,-1).applyQuaternion(r);
i.add(new x.ArrowHelper(o,t.clone(),1,16711680))
}
}),
V.showAxis && (i.add(new x.ArrowHelper(new x.Vector3(0,1,0),new x.Vector3(0,0,0),1,255)),
i.add(new x.ArrowHelper(new x.Vector3(0,0,1),new x.Vector3(0,0,0),1,16711680)),
i.add(new x.ArrowHelper(new x.Vector3(1,0,0),new x.Vector3(0,0,0),1,65280)));
//背景
if(!settings.transparentBg && !settings.bgImg){
i.skybox = new W
i.add(i.skybox)
}
var r = new te(i,t,z);
return r
}
function y(e, t) {
var i = e ? 1 : 1e3
, n = J.tilegen || J.imgopt ? 6 : 2;
n = F.valueFromHash("tileconc", n);
var r = new ne
, o = new ae({
concurrentDownloads: n
})
, a = new se
, s = new P
, l = new M
, c = new S(t)
, h = new R
, u = new O(i)
, d = new L
, p = new oe;
return {
qualityManager: r,
panoRenderer: a,
tileDownloader: o,
player: c,
director: l,
modelManager: s,
tagManager: p,
displayController: u,
labelDisplayController: d,
controls: h
}
}
function C(e, t, i, n) {
var r = i.controls
, o = i.qualityManager
, a = i.panoRenderer
, s = i.tileDownloader
, l = i.modelManager;
r.init(n, l),
ee.init(i.director, r, i.player, l, t),
o.init(l),
s.init(o),
a.init(t, s, o),
l.init(s, a, o),
l.addModel(e),
t.addComponent(G)
}
function I(e, t, i, n) {
var r = i.qualityManager
, o = i.panoRenderer
, a = i.tileDownloader
, s = i.modelManager
, l = i.player
, c = i.director
, h = i.tagManager
, u = i.displayController
, d = i.labelDisplayController
, p = i.controls;
t.scene.add(e),
t.qualityManager = r;
var f = {
camera: t.camera,
director: c,
modelManager: s,
tileDownloader: a,
panoRenderer: o,
qualityManager: r,
tagManager: h,
container: n,
controls: p
};
l.init(f),
l.setScene(t.scene),
h.init(s, l),
c.init(l, s),
u.init(c, l, s, h, n),
d.init(l, s, n),
z.bindEvents(l),
t.addComponent(h),
t.addComponent(l),
t.addComponent(o),
l.sceneRenderer = t; //xzw add 方便resize
}
function E(e, t, i, n) {
return de.info("Starting player in " + i.mode),
H.report(t.sid, "started-playing", n, i.quickstart),
e.start(i)
}
function b(e, t) {
de.error(t),
k.error(t),
H.report(e, "error-" + t)
}
function w(e) {
var t = F.details();
t && "Safari" === t.name && t.version > 500 && t.version < 600 ? (k.error("webgl-safari"),
H.report(e, "error-webgl-safari")) : (k.error("webgl-generic"),
H.report(e, "error-webgl-generic"))
}
function _(e, t, i) {
try {
e.start(t)
} catch (e) {
throw de.warn(e.message),
w(i.sid),
e
}
}
function T(e) {
e.stopPropagation(),
e.preventDefault()
}
//czj 判断someData 有没有hoticon字段 修改热点的样式
if (window.DATA.hoticon){
g_HotImage = {
point: ("static/"+window.DATA.hoticon.default) || "https://super.4dage.com/images/4dagePoint2.png",
point2: ("static/"+window.DATA.hoticon.higt) || "https://super.4dage.com/images/4dagePoint.png"
} ;
}
//czj 判断someData 有没有backgroundMusic 添加音乐
if (window.DATA.backgroundMusic) {
if(window.isLocal){
SoundManager.setSrc('bgm', manage.dealURL(window.DATA.backgroundMusic))
}else{
SoundManager.setSrc('bgm', window.DATA.backgroundMusic )
}
$("#volume").show();
}else if (g_version === "one"){
SoundManager.setSrc('bgm', manage.dealURL( g_Prefix+"/audio/"+"audio"+window.number + "/background.mp3"))
$("#volume").show();
}
//隐藏公司logo
if(window.DATA.loadlogo){
showLogo();
}
e("./lib/three75-shim"),
e("./lib/array-polyfill"),
e("./lib/performance-polyfill"),
e("./lib/shaders/CopyShader.js"),
e("./lib/shaders/HorizontalBlurShader.js"),
e("./lib/shaders/VerticalBlurShader.js"),
e("./lib/postprocessing/EffectComposer.js"),
e("./lib/postprocessing/RenderPass.js"),
e("./lib/postprocessing/MaskPass.js"),
e("./lib/postprocessing/ShaderPass.js"),
window.Promise || (window.Promise = e("promise-polyfill"));
var x = e("three")
, _x = e("three")
, S = (e("./util/sentry"),
e("./player"))
, M = e("./director")
, R = e("./controls/CameraControls")
, P = e("./model/ModelManager")
, O = e("./DisplayController")
, L = e("./label/LabelDisplayController")
, D = e("./enum/Viewmode")
, N = e("./util/logger")
, B = e("./showcase")
, F = e("./util/browser")
, V = e("./settings")
, U = e("./gui/gui")
, k = e("./gui/error")
, H = e("./analytics")
, G = e("./util/transitions")
, z = e("./effects")
, W = e("./objects/Skybox")
, j = e("./util/common")
, Y = (e("./util/PanoramaCollection"),
e("./util/math"),
e("./util/showcase"))
, X = e("./util/camera")
, Z = (e("./objects/Panorama"),
e("./cameras/PanoramaCamera"),
e("./preloaders"))
, q = e("events").EventEmitter
, K = e("./featureflags")
, Q = (e("./util/lerp"),
e("./util/ajax"))
, J = e("./ab")
, ee = e("./sdk/automation.js")
, te = e("./scene/SceneRenderer")
, ie = e("./scene/QuickstartManager")
, ne = e("./tile/QualityManager.js")
, re = e("./localization/localize")
, oe = e("./tag/tagManager")
, ae = e("./tile/TileDownloader")
, se = e("./tile/PanoRenderer")
, le = (e("./enum/PanoSizeClass"),
e("./enum/PanoramaEvents"),
e("./enum/SceneRendererEvents"))
, ce = e("./gui/memoryUsage")
, he = e("./enum/RenderLayers")
, ue = e("./TimingData")
, de = new N(t);
N.level = V.logLevel,
N.consoleEnabled = V.console,
i()
}
}
).call(this, "/js/main.js")
}
, {
"./DisplayController": 1,
"./TimingData": 2,
"./ab": 3,
"./analytics": 4,
"./cameras/PanoramaCamera": 7,
"./controls/CameraControls": 9,
"./director": 15,
"./effects": 16,
"./enum/PanoSizeClass": 36,
"./enum/PanoramaEvents": 37,
"./enum/RenderLayers": 41,
"./enum/SceneRendererEvents": 43,
"./enum/Viewmode": 51,
"./featureflags": 59,
"./gui/error": 64,
"./gui/gui": 65,
"./gui/memoryUsage": 73,
"./label/LabelDisplayController": 91,
"./lib/array-polyfill": 92,
"./lib/performance-polyfill": 95,
"./lib/postprocessing/EffectComposer.js": 96,
"./lib/postprocessing/MaskPass.js": 97,
"./lib/postprocessing/RenderPass.js": 98,
"./lib/postprocessing/ShaderPass.js": 99,
"./lib/shaders/CopyShader.js": 100,
"./lib/shaders/HorizontalBlurShader.js": 101,
"./lib/shaders/VerticalBlurShader.js": 102,
"./lib/three75-shim": 103,
"./localization/localize": 108,
"./tag/tagManager": 124,
"./model/ModelManager": 140,
"./objects/Panorama": 148,
"./objects/Skybox": 152,
"./player": 155,
"./preloaders": 156,
"./scene/QuickstartManager": 157,
"./scene/SceneRenderer": 158,
"./sdk/automation.js": 164,
"./settings": 166,
"./showcase": 168,
"./tile/PanoRenderer": 169,
"./tile/QualityManager.js": 170,
"./tile/TileDownloader": 171,
"./util/PanoramaCollection": 178,
"./util/ajax": 181,
"./util/browser": 182,
"./util/camera": 183,
"./util/common": 185,
"./util/lerp": 188,
"./util/logger": 189,
"./util/math": 190,
"./util/sentry": 192,
"./util/showcase": 193,
"./util/transitions": 195,
events: 202,
"promise-polyfill": 213,
three: 217
}],
117: [function(e, t, i) {
"use strict";
function n(e) {
e = e || {}
r.RawShaderMaterial.call(this, a.extendObject({
fragmentShader: o.cube.fragmentShader,
vertexShader: o.cube.vertexShader,
uniforms: r.UniformsUtils.clone(o.cube.uniforms),
name: "CubemapMaterial",
}, e))
}
var r = e("three")
, o = e("../shaders")
, a = e("../util/common");
n.prototype = Object.create(r.RawShaderMaterial.prototype),
n.prototype.constructor = n,
t.exports = n
}
, {
"../shaders": 167,
"../util/common": 185,
three: 217
}],
118: [function(e, t, i) {
"use strict";
function n(e) {
e = e || {}
r.RawShaderMaterial.call(this, a.extendObject({
fragmentShader: o.model.fragmentShader,
vertexShader: o.model.vertexShader,
uniforms: r.UniformsUtils.clone(o.model.uniforms),
name: "ModelTextureMaterial",
}, e))
}
var r = e("three")
, o = e("../shaders")
, a = e("../util/common");
n.prototype = Object.create(r.RawShaderMaterial.prototype),
n.prototype.constructor = n,
n.prototype.setProjectedPanos = function(e, t, i) {
i && (this.uniforms.progress.value = 0),
e.ensureSkyboxReadyForRender(),
this.uniforms.pano0Map.value = e.getSkyboxTexture(),
this.uniforms.pano0Position.value.copy(e.position),
this.uniforms.pano0Matrix.value.copy(e.skyboxMesh.matrixWorld),
t.ensureSkyboxReadyForRender(),
this.uniforms.pano1Map.value = t.getSkyboxTexture(),
this.uniforms.pano1Position.value.copy(t.position),
this.uniforms.pano1Matrix.value.copy(t.skyboxMesh.matrixWorld)
}
/* n.prototype.setEyeDir = function(dir, pos) {//加
this.uniforms.eyeDir.value.copy(dir)
this.uniforms.eyePos.value.copy(pos)
}
n.prototype.setBendCameraQua = function(matrix) {//加
this.uniforms.cameraDeltaMatrix.value.copy(matrix)
} */
,
t.exports = n
}
, {
"../shaders": 167,
"../util/common": 185,
three: 217
}],
119: [function(e, t, i) {
(function(i) {
"use strict";
function n(e, t, i, n) {
this.div = null,
this.body = null,
this.label = e,
this.description = t,
this.parsedDescription = [],
this.media = i || {
type: null
},
this.loadingSpinner = null,
this.parser = new r({
supportLinks: !u.valueFromHash("mls"),
keepLinkLabels: !0
}),
this.state = I.CLOSED,
this.orientation = "",
this.initialTransform = "",
this.hovering = !1,
this.openTransition = null,
this.closeTransition = null,
this.openPromise = null,
this.closePromise = null,
this.animationTransition = null,
this.animationScale = 0
}
var r = e("../Parser/DescriptionParser")
, o = e("../Media/Link")
, a = e("../Media/Image")
, s = e("../Media/EmbedlyPlayer")
, l = e("../Media/EmbedlyEmbed")
, c = e("../../util/transitions")
, h = e("../../util/lerp")
, u = e("../../util/browser")
, d = e("./BillboardEvent")
, p = e("../Media/MediaEvent")
, f = e("../Parser/DescriptionChunkType")
, g = e("events").EventEmitter
, m = e("./billboardSettings")
, v = e("./overlaySettings")
, A = e("../../util/logger")
, y = new A(i)
, C = document.getElementById("tag-billboards");
C.addEventListener("touchend", function(e) {
C.style.pointerEvents = "none"
}),
C.addEventListener("touchcancel", function(e) {
C.style.pointerEvents = "none"
});
var I = {
CLOSED: "closed",
OPENING: "opening",
OPEN: "open",
CLOSING: "closing",
ACTIVE: "active"
};
n.prototype = Object.create(g.prototype),
n.prototype.build = function(e) {
this.parsedDescription = this.parser.parse(this.description);
var t = document.createElement("div");
t.className = "tag-container has-hotzone",
this.div = t,
this.body = document.createElement("div"),
this.body.className = "tag-body";
var i = document.createElement("div");
i.classList.add("tag-content");
var n = document.createElement("div");
n.classList.add("tag-text-content");
var r = document.createElement("div");
r.className = "tag-label",
r.textContent = this.label,
n.appendChild(r);
var o = document.createElement("div");
o.className = "tag-desc",
n.appendChild(o),
i.appendChild(n),
this.body.appendChild(i),
this.appendDescriptionElements(this.parsedDescription, o),
this.appendMedia(),
t.appendChild(this.body),
C.appendChild(t),
this.bindEvents(t, this.body)
}
,
n.prototype.bindEvents = function(e, t) {
var i = function(e) {
return function(t) {
if (!this.div.classList.contains("overlay")) {
var i, n = document.getElementById("player");
try {
i = new MouseEvent(e,t)
} catch (n) {
i = document.createEvent("MouseEvents"),
i.initMouseEvent(e, t.bubbles, t.cancelable, t.view, t.detail, t.screenX, t.screenY, t.clientX, t.clientY, t.ctrlKey, t.altKey, t.shiftKey, t.metaKey, t.button, t.relatedTarget)
}
n.dispatchEvent(i)
}
}
};
t.addEventListener("mousedown", function(e) {
e.stopPropagation()
}),
t.addEventListener("mouseup", function(e) {
e.stopPropagation()
}),
e.addEventListener("touchstart", function(e) {
C.style.pointerEvents = "auto"
}),
e.addEventListener("mousedown", i("mousedown").bind(this)),
e.addEventListener("mouseup", i("mouseup").bind(this)),
t.addEventListener("mouseover", function(t) {
this.state === I.OPEN && e.classList.remove("has-hotzone")
}
.bind(this)),
e.addEventListener("mouseenter", function(e) {
this.state !== I.CLOSING && (this.hovering = !0,
this.emit(d.ENTER))
}
.bind(this)),
e.addEventListener("mouseleave", function(e) {
this.hovering = !1,
this.emit(d.LEAVE)
}
.bind(this)),
e.addEventListener("gesturestart", function(e) {
e.preventDefault()
});
var n = e.querySelector(".tag-text-content")
, r = 0;
n.addEventListener("touchstart", function(e) {
r = e.changedTouches[0].clientY
}),
n.addEventListener("touchmove", function(t) {
function i(e) {
e && (0 === e.scrollTop && t.changedTouches[0].clientY > r || e.scrollTop + e.clientHeight - e.scrollHeight === 0 && t.changedTouches[0].clientY < r) && t.preventDefault()
}
return e.classList.contains("overlay") ? i(this.querySelector(".tag-desc")) : void i(this)
}),
e.addEventListener("touchmove", function(e) {
0 === (n.compareDocumentPosition(e.target) & Node.DOCUMENT_POSITION_CONTAINED_BY) && e.preventDefault()
})
}
,
n.prototype.appendDescriptionElements = function(e, t) {
e.length > 0 && this.div.classList.add("has-text"),
e.forEach(function(e, i) {
switch (e.type) {
case f.TEXT:
t.appendChild(this.createTextElement(e.text));
break;
case f.LINK:
t.appendChild(this.createLinkElement(e.link))
}
}
.bind(this))
}
,
n.prototype.appendLoadingSpinner = function() {
this.loadingSpinner = document.createElement("div"),
this.loadingSpinner.classList.add("loading-spinner");
var e = document.createElement("div");
e.classList.add("gui-spinner-icon"),
this.loadingSpinner.appendChild(e),
this.body.appendChild(this.loadingSpinner)
}
,
n.prototype.onMediaLoadFinished = function() {
this.loadingSpinner && (this.loadingSpinner.parentNode.removeChild(this.loadingSpinner),
this.applyOrientation(this.orientation),
this.loadingSpinner = null)
}
,
n.prototype.appendMedia = function() {
if (this.media && this.media.type && "error" !== this.media.type && (!u.valueFromHash("mls", 0) || this.media.type === f.IMAGE)) {
this.appendLoadingSpinner();
var e = document.createElement("div");
e.classList.add("tag-media-content");
var t = document.createElement("i");
switch (["icon", "icon-close-thin", "close"].forEach(function(e) {
t.classList.add(e)
}),
this.body.appendChild(t),
this.body.appendChild(e),
this.media.type) {
case f.IMAGE:
e.appendChild(this.createImageElement(this.media, this.body));
break;
case f.VIDEO:
e.appendChild(this.createVideoElement(this.media, this.body));
break;
case f.RICH:
e.appendChild(this.createEmbedElement(this.media, this.body))
}
}
}
,
n.prototype.createTextElement = function(e) {
var t = document.createElement("span");
return t.textContent = e,
t
}
;
n.prototype.createLinkElement = function(e) {
var t = new o(e);
return t.on(p.LINK_CLICK, this.emit.bind(this, p.LINK_CLICK)),
t.createDomElement()
}
,
n.prototype.createImageElement = function(e, t) {
function i() {
function e() {
m || (r.classList.remove("view-image"),
c.classList.add("overlay"),
i(),
window.addEventListener("resize", b),
c.addEventListener("click", a),
g.addEventListener("click", l),
f.addEventListener("click", s),
m = !0,
o.emit(p.IMAGE_OPENED))
}
function i() {
t.classList.add("show-info"),
h.classList.remove("collapsible"),
h.style.height = "";
var e = parseFloat(getComputedStyle(I).lineHeight)
, i = y + e
, r = c.clientWidth - 2 * v.boundaryWidth - C
, a = c.clientHeight - 2 * v.boundaryHeight - C - i
, s = a
, l = s * n.aspect;
l > r && (l = r,
s = l / n.aspect),
s > a && (s = a,
l = s * n.aspect),
l += C,
s += C + i,
t.style.width = l + "px",
t.style.height = s + "px",
u.style.paddingTop = e + C + "px",
o.description.length > 0 && (h.classList.add("collapsible"),
h.style.height = h.clientHeight + 12 + "px",
E.style.height = "calc(100% - " + I.clientHeight + "px)")
}
function a(e) {
e.target === c && s()
}
function s() {
m && (m = !1,
r.classList.add("view-image"),
c.classList.remove("overlay"),
h.style.height = "",
u.style.paddingTop = "",
t.style.width = "",
t.style.height = "",
window.removeEventListener("resize", b),
c.removeEventListener("click", a),
g.removeEventListener("click", l),
f.removeEventListener("click", s),
o.emit(p.IMAGE_CLOSED),
o.close(!0))
}
function l(e) {
t.classList.toggle("show-info")
}
var c = o.div
, h = c.getElementsByClassName("tag-content")[0]
, u = c.getElementsByClassName("tag-media-content")[0]
, f = t.getElementsByClassName("close")[0]
, g = h.getElementsByClassName("tag-label")[0];
c.classList.add("has-image"),
r.classList.add("view-image"),
c.classList.add(n.aspect >= 1 ? "image-landscape" : "image-portrait"),
o.applyOrientation(o.orientation);
var m = !1
, A = getComputedStyle(h)
, y = parseFloat(A.paddingTop) + parseFloat(A.paddingBottom)
, C = 2 * parseFloat(getComputedStyle(u).paddingLeft)
, I = h.querySelector(".tag-label")
, E = h.querySelector(".tag-desc")
, b = function() {
var e, t, n = 0;
return function() {
clearInterval(e),
clearTimeout(t),
e = setInterval(function() {
var e = c.clientHeight;
n !== e && (i(),
n = e)
}, 100),
t = setTimeout(clearInterval.bind(this, e), 1e3)
}
}();
n.on(p.IMAGE_OPENING, e),
o.on(d.ACTIVATE, e),
o.on(p.IMAGE_CLOSED, n.onClosed.bind(n)),
o.on(d.CLOSING, s)
}
var n = new a
, r = n.createDomElement();
this.once(d.OPENED, function() {
n.load(e.src).then(i).catch(function(t) {
y.warn("Failed to load image:", e.src),
y.warn("with error:", t)
}).then(this.onMediaLoadFinished.bind(this))
});
var o = this;
return r
}
,
n.prototype.createVideoElement = function(e, t) {
var i = new s({
autoPlay: !0,
autoResume: !0,
startMuted: !1,
loop: !1
})
, n = i.createDomElement();
return this.once(d.OPENED, function() {
i.load(e.src).then(function() {
this.div.classList.add("has-video"),
this.state !== I.OPEN && this.state !== I.ACTIVE || (i.show(),
i.play()),
this.on(d.OPENING, i.show.bind(i)),
this.on(d.OPENED, i.play.bind(i)),
this.on(d.CLOSING, i.pause.bind(i)),
this.on(d.CLOSED, i.hide.bind(i))
}
.bind(this)).catch(function(t) {
y.warn("Failed to embed video:", e.src),
y.warn("with error:", t)
}).then(this.onMediaLoadFinished.bind(this))
}
.bind(this)),
n
}
,
n.prototype.createEmbedElement = function(e, t) {
var i = new l
, n = i.createDomElement();
return this.once(d.OPENED, function() {
i.load(e.src).then(function() {
this.div.classList.add("has-embed"),
this.state !== I.OPEN && this.state !== I.ACTIVE || i.show(),
this.applyOrientation(this.orientation),
this.on(d.OPENING, i.show.bind(i)),
this.on(d.CLOSED, i.hide.bind(i))
}
.bind(this)).catch(function(t) {
y.warn("Failed to embed:", e.src),
y.warn("with error:", t)
}).then(this.onMediaLoadFinished.bind(this))
}
.bind(this)),
n
}
,
n.prototype.open = function(e) {
return this.openPromise = $.Deferred(),
this.state === I.ACTIVE ? this.openPromise.resolve().promise() : (this.hovering || this.div.classList.add("has-hotzone"),
this.openTransition ? e && this.setActiveState() : this.openTransition = c.setTimeout(function() {
this.state !== I.OPEN && (this.emit(d.OPENING),
e && this.emit(d.ACTIVATING),
this.state = I.OPENING,
this.animateOpen(function() {
e && this.setActiveState(),
this.openPromise.resolve()
}
.bind(this)))
}
.bind(this), m.animation.openDelay),
c.cancel(this.closeTransition),
this.closePromise && this.closePromise.reject(),
this.closeTransition = void 0,
this.openPromise.promise())
}
,
n.prototype.close = function(e) {
return this.closePromise = $.Deferred(),
!e && this.hovering ? this.closePromise.reject().promise() : (this.closeTransition || (this.closeTransition = c.setTimeout(function() {
this.state !== I.CLOSED && (this.emit(d.CLOSING),
this.state = I.CLOSING,
this.animateClose())
}
.bind(this), m.animation.closeDelay)),
c.cancel(this.openTransition),
this.openPromise && this.openPromise.reject(),
this.openTransition = void 0,
this.closePromise.resolve(),
this.closePromise.promise())
}
,
n.prototype.setActiveState = function() {
this.state !== I.CLOSED && (this.state = I.ACTIVE,
this.emit(d.ACTIVATE),
this.div.classList.remove("has-hotzone"))
}
,
n.prototype.animateOpen = function(e) {
if (this.state === I.OPENING) {
if (c.cancel(this.animationTransition),
u.detectSamsungNative())
return this.boardOrientation = null,
this.div.style.visibility = "visible",
this.emit(d.OPENED),
this.state = I.OPEN,
void (e && e());
this.div.style.webkitTransform = "scale(0)",
this.div.style.transform = "scale(0)",
this.div.style.visibility = "visible",
this.animationTransition = c.start(h.property(this, "animationScale", 1), m.animation.openDuration, function() {
this.emit(d.OPENED),
this.state = I.OPEN,
e && e()
}
.bind(this))
}
}
,
n.prototype.animateClose = function(e) {
this.state === I.CLOSING && (c.cancel(this.animationTransition),
this.animationTransition = c.start(h.property(this, "animationScale", 0), m.animation.closeDuration, function() {
this.emit(d.CLOSED),
this.state = I.CLOSED,
this.div.style.visibility = "hidden",
this.div.classList.contains("has-hotzone") || this.div.classList.add("has-hotzone"),
e && e()
}
.bind(this)))
}
,
n.prototype.needsUpdate = function() {
return this.state !== I.CLOSED
}
,
n.prototype.update = function(e, t) {
if (this.needsUpdate()) {
var i = (this.updateOrientation(e),
this.calcScale(t))
, n = {
x: (e.x + 1) * $("#player").width() / 2,
y: (e.y + 1) * $("#player").height() / 2
};
this.div.screenTransform = this.initialTransform + " translate(" + n.x + "px, " + n.y + "px) scale(" + i * this.animationScale + ")",
this.div.style.webkitTransform = this.div.screenTransform,
this.div.style.transform = this.div.screenTransform
}
}
,
n.prototype.getDimensions = function() {
return this.div.getBoundingClientRect()
}
,
n.prototype.calcScale = function(e) {
return Math.sqrt(e / 40) * m.boardToDiscRatio
}
,
n.prototype.updateOrientation = function(e) {
if (this.state !== I.ACTIVE) {
var t = 1 / 3
, i = e.y < -t ? 0 : e.y < t ? 1 : 2
, n = e.x < -t ? 0 : e.x < t ? 1 : 2
, r = "";
r += 0 === n ? "right" : 2 === n ? "left" : "",
r += 0 === i ? "-down" : 2 === i ? "-up" : "",
1 === n && (r = 0 === i ? "bottom" : 2 === i ? "top" : "",
1 === i && (r = $("#player").width() > $("#player").height() ? e.x < 0 ? "right" : "left" : e.y < 0 ? "bottom" : "top")),
1 === n && 1 === i && r === this.orientation || this.applyOrientation(r)
}
}
,
n.prototype.applyOrientation = function(e) {
this.div.style.transform = this.div.style.webkitTransform = "",
this.div.classList.remove("tag-container-" + this.orientation),
this.div.classList.add("tag-container-" + e);
var t = window.getComputedStyle(this.div);
this.initialTransform = t.transform || t.webkitTransform,
"none" === this.initialTransform && (this.initialTransform = "");
var i = t.transform.slice(7, -1).split(",")
, n = -i[4]
, r = -i[5];
this.div.style.webkitTransformOrigin = n + "px " + r + "px",
this.div.style.transformOrigin = n + "px " + r + "px",
this.orientation = e
}
,
t.exports = n
}
).call(this, "/js/tag/Billboard/Billboard.js")
}
, {
"../../util/browser": 182,
"../../util/lerp": 188,
"../../util/logger": 189,
"../../util/transitions": 195,
"../Media/EmbedlyEmbed": 125,
"../Media/EmbedlyPlayer": 126,
"../Media/Image": 128,
"../Media/Link": 129,
"../Media/MediaEvent": 131,
"../Parser/DescriptionChunkType": 133,
"../Parser/DescriptionParser": 134,
"./BillboardEvent": 120,
"./billboardSettings": 121,
"./overlaySettings": 122,
events: 202
}],
120: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
ENTER: "billboard.enter",
LEAVE: "billboard.leave",
OPENING: "billboard.opening",
OPENED: "billboard.open",
CLOSING: "billboard.closing",
CLOSED: "billboard.closed",
ACTIVATING: "billboard.activating",
ACTIVATE: "billboard.activate"
})
}
, {}],
121: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
animation: Object.freeze({
hoverOnClosing: !1,
openDelay: 100,
closeDelay: 50,
openDuration: 200,
closeDuration: 100
}),
boardToDiscRatio: 1.2
})
}
, {}],
122: [function(e, t, i) {
"use strict";
t.exports = Object.freeze({
boundaryWidth: 30,
boundaryHeight: 0
})
}
, {}],
123: [function(e, t, i) {//tag
(function(i) {
"use strict";
function n(e, t, i) {
var n = i.version || "0";
"0" !== n && I.info("tag defined using version " + n),
this.model = e,
this.sid = t,
this.color = (new r.Color).set(i.color || l.tagDefault),
this.hoverColor = l._darken(this.color, .2),
this.floor = null,
this.floorIndex = i.floor,
this.mode = s.PANORAMA,
i.preferred_camera && i.preferred_camera.mode && (this.mode = i.preferred_camera.mode),
this.obj3d = null,
this.disc = null,
this.materials = {
disc: null,
pole: null
},
this.position = (new r.Vector3).copy(i.position),
this.discPosition = (new r.Vector3).copy(i.stem.direction),
this.discWorldPosition = null,
this.discScale = .05,
this.poleEnabled = i.stem.enabled,
this.billboard = new o(i.label,i.description,i.media,this),
this.visibleTransition = null,
this.hoveringDisc = !1
}
var r = e("three")
, o = e("./Billboard/Billboard")
, a = e("../settings")
, s = e("../enum/Viewmode")
, l = e("../enum/Colors")
, c = e("../enum/RenderLayers")
, h = e("../enum/RenderOrder")
, u = (e("../util/common"),
e("../util/math"))
, d = e("../util/texture")
, p = e("../objects/Panorama")
, f = e("../shaders")
, g = e("../util/transitions")
, m = e("../util/lerp")
, v = e("../util/easing")
, A = e("./Billboard/BillboardEvent")
, y = e("events").EventEmitter
, C = e("../util/logger")
, I = new C(i)
, E = d.loadBase64("iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QYPFigDGhCnowAABQFJREFUeNrtXTtyFEEMHXX5FK7iAiYFQ+KAiMyZCQnxRXwVFwkngSKD2BQXEYlNLXaZnZ7RX0/xbrek96RW9/RnWSCthSoaxcys4iwiAgGagN2FFATQe5OBAHpvMhBA700GAvC9iUBVgZd2dmTd9siIAvxOB9/RI9GI3kftf3a0t0YG2OOEaOk0qy2UyWFZKutMthGc09tWiuyQKkuvke2miE6ouOYe1QcE4HsTgSIY2gX4iP4ZHcFn5kt+KpfmFfhK2zXXDMgR/FdE9D3ivNyaqMz8YlmW3x46kIfjNQyxXlnzskG6X8psQJjlVGObJPtLqXj1DSGWvhyZFI70EUVTv3tf3VkEAWmDLwV8xmmehe17+6DIymFHkL6fKaJS2BFk5+8RzUlVwY9qG0ViY2XwLfyzpV2KoEQX4C18NdsmAfzeJBiRDekg3ruGhpCi7wC+eXH4XqI9kc+Rs4wE+DZ+XNPeiKY0MoHtUHCyU6nTLOBnISoz84yuRETP6bqmLdrjiMhOjXw0zJKsx9oaxcC/1j4atizLdaah4GidYEEAbfC9NpVGsmsrVgTwe5PgZEkqUbaSP+iRds9CxuiPeo4ggr2z2A1Efg/dNs0CokV/Bgd7b3mf7X9EWQCpFF2ZhqiZDHDqFf0p79/zXYhajRWt7cgr/Wc/OOrli7U4DmllAb6eDRr4jKhAVDoyHtl/otNAfOrNt9YwIoJX8lr2QDYdYh1xIehN4QB+G46YUtW/2GHF4tfFWPvpGK7RMsCvBsP4F2SAptHv4atVGQDVe9/ZxLEh4AOiP+aMYMLnH48OAUj/fYeBsUBaCwgAAtQYEzvWAcgAEBAA4kwArCHknkkgAyADQEAACAgAAQEgIMC8dH3vJ4JI+B4ZABkAAgI4S8fFpCg2IwMgA0BAgOfT1BVclH6o+S+GR++3wbawmOO/BC5/t4RhLt93DWFUiwxU/ygCIZIEsH4FnJk/FY5+Edsk6zJa82McEI2V/qUKwH8yQNTz6wBfrwAUrwEwm7AFz6wI9GBvpSwQ2X9Dml3RbsWqBL4GPjOvhp2hHsihOzO/1FgH+Dnx2/PuJFDQecanP1ZnhBnlcVl0Dttn8Btahnnfmg3w5YcAzKcLDlVp3wyKNhxkfC1kWRK/GfRgbPVHo7RlbGGedy3wWBdmvnEA/qb0s3GSw4BlpFgQLqIdKgTISgINIrR8OnZFxxeRa4RDsf6/oZ27MCBthlUrmipFv8g6gMeb9wBfLphEnoxh5luQwBz8W4n2TNMNhgMb3820J7YUvAVMZAL/wBHvHJnAF/zZNkkj2rdGdhciaPlnS7ubUzBIkB980RpAaoGicl2wA3y1U9q0E2TWBLNKNtD2w572h6Zh96uoF3vaz5wR9urPzBfaQSZ1no8NouD1sixfk2B/TkTfovtUjACWCkceGiztk+rL/JNpxYMj1jZJ9ueyc7fCjmEvG1zOBko75r44vJXu91C0CjqN9pn51itw1Cps64slJHSLpIuVbmoLQTOXGFjvLKJnxBj4iwhBQlEY7hWBHhLJJ9TRaADvQIAtlXoVIkS2m6I7IzMRMthqfjh0S8F1sDv7LAHoZ1u2knt990h7rq7S4VBPWyi787ycWOVy7DCvh0t8M38kV4JgX0meFIr0mTtkcVV1W1jEYjZ0dY0dQc0JkJkMWaaubebXAL0QASKRIftqJa5lbwQ2BPJE/gA4gL5xbiNHuQAAAABJRU5ErkJggg==")
, b = d.loadBase64("iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QYPFgoIKnA4CwAAAkVJREFUeNrt3Uluw0AMRFHTvv+NrSibBAgyILGjodn16gbS/yxyYUOXi0SnZnyodV3XXV5WVREgBHaKFAV6tgwFerYMBXq2DAV8tggFfLYIBXy2CAV8tggFfrYEBXy2CAV+tgQFfrYEBXy2CAV+tgQFfrYEBX62BAV+tgQFfrYEBX62BAV+tgQFfrYEBX62BAV+tgRXry5cHNOf3QIFfrYEBX62BG4AN4DpT26BAj9bAivACjD9yS2gATSA6U9uAQ2gAUx/cgtoAA1g+pNbQAOEhwBWgPpPXgMawAoQK0D9x64BDWAFiBWg/mPXgAawAoQAQgAJPgIdgLmHoAawAoQAQgAhgBBACCAEEAIIAYQAQgAhgBBACCAEEAIIAYQAQgAhgEwQfw1LBe+vYUIAIQAB3rIsy4vXEXwEOgTzDkArQAhgBXyKNZBT/xpACGAFfBNrIKP+NYAQwAr4IdbA/PWvAcR3A5OnXwOIbwcnT78GkN8bQAvMO/1/bgA/FglvAC0w5/Q/JAAJ5oPvCJTHGkALzDX9TwlAgnngPy0ACeaA7waQ5xtAC/Sf/n8LQILe8DcRgAR94W8mAAl6wt9UABL0g7+5ACToBX8XAUjQB/5uApCgB/xdBSDB+PB3F4AEY8M/RAAijAn+cAFIMB78wwUgwVjwTxGACGOAf8/1zAf2a+Nz4Z/aANrgXPBDCZAmwgjghxRgdhFGAj+0ALOJMCL4FgJ0lmFk6C0F6CBDF+jtBfiY+/2+3G63K+ihAhzZEN1hi3zJK04kLKvtOfg1AAAAAElFTkSuQmCC")
, w = new r.PlaneBufferGeometry(1,1);
n.prototype = Object.create(y.prototype),
n.raycaster = new r.Raycaster,
n.prototype.bindEvents = function() {
this.billboard.on(A.ENTER, this.setHoverState.bind(this)),
this.billboard.on(A.LEAVE, this.setFreeState.bind(this))
}
,
n.prototype.build = function() {
return this.floor = this.model.floors.get(this.floorIndex) || this.model.floors.first(),
this.floor && (this.billboard.build(this.model.sid),
this.obj3d = this.buildObject3D(),
this.floor.add(this.obj3d)),
this
}
,
n.prototype.buildObject3D = function() {
var e = new r.Object3D;
e.position.copy(this.position);
var t = r.UniformsUtils.clone(f.tagDisc.uniforms);
t.bg.value = b,
t.mask.value = E,
t.color.value.copy(this.color),
this.materials.disc = new r.RawShaderMaterial({
transparent: !0,
vertexShader: f.tagDisc.vertexShader,
fragmentShader: f.tagDisc.fragmentShader,
uniforms: t
}),
this.disc = new r.Mesh(w,this.materials.disc),
this.disc.layers.set(c.TAG),
this.disc.position.copy(this.discPosition),
this.disc.renderOrder = h.tagDisc,
this.disc.tag = this;
var i = this.buildPole();
return i.layers.set(c.TAG),
i.renderOrder = h.tagStem,
e.add(i),
e.layers.set(c.TAG),
e.add(this.disc)
}
,
n.prototype.buildPole = function() {
var e = new r.BufferGeometry
, t = new Float32Array(6);
return t[0] = t[1] = t[2] = 0,
t[3] = this.discPosition.x,
t[4] = this.discPosition.y,
t[5] = this.discPosition.z,
e.addAttribute("position", new r.BufferAttribute(t,3)),
this.materials.pole = new r.LineBasicMaterial({
linewidth: a.tags.pole.width,
color: a.tags.pole.color,
opacity: 0,
visible: this.poleEnabled,
transparent: !0,
depthWrite: !1
}),
new r.Line(e,this.materials.pole)
}
,
n.prototype.setFreeState = function(e) {
!e && this.hoveringDisc || this.billboard.close(e).then(function() {
this.materials.disc.uniforms.color.value = this.color
}
.bind(this))
}
,
n.prototype.setHoverState = function(e) {
this.billboard.open(e),
this.materials.disc.uniforms.color.value = this.hoverColor
}
,
n.prototype.hide = function(e, t) {
var i = $.Deferred();
if (0 === this.materials.disc.uniforms.opacity.value && !g.isRunning(this.visibleTransition))
return i.resolve().promise();
e = e || 0,
t = t || 0,
g.cancel(this.visibleTransition);
var n = this.materials.disc.uniforms.opacity.value / a.tags.disc.opacity
, r = t + e
, o = t / r;
return this.visibleTransition = g.start(function(e) {
var t = m.property(e.materials.disc.uniforms.opacity, "value", 0)
, i = m.property(e.materials.pole, "opacity", 0);
return function(n) {
t(n),
e.materials.pole && i(n)
}
}(this), r * n, function() {
i.resolve()
}, o, v[a.warp.blendEasing]),
i.promise()
}
,
n.prototype.show = function(e, t) {
var i = $.Deferred();
if (this.materials.disc.uniforms.opacity.value === a.tags.disc.opacity && !g.isRunning(this.visibleTransition))
return i.resolve().promise();
e = e || 0,
t = t || 0,
g.cancel(this.visibleTransition);
var n = (a.tags.disc.opacity - this.materials.disc.uniforms.opacity.value) / a.tags.disc.opacity
, r = t + e
, o = t / r;
return this.visibleTransition = g.start(function(e) {
var t = m.property(e.materials.disc.uniforms.opacity, "value", a.tags.disc.opacity)
, i = m.property(e.materials.pole, "opacity", a.tags.pole.opacity);
return function(n) {
t(n),
e.materials.pole && i(n)
}
}(this), r * n, function() {
i.resolve()
}, o, v[a.warp.blendEasing]),
i.promise()
}
,
n.prototype.closestPanoTowardTag = function(e, t) {
var i = []
, o = []
, l = this.disc.getWorldPosition();
if (e === s.PANORAMA) {
var c = .5
, h = t.position.clone().sub(l).normalize();
i.push(p.filters.isPanoAligned()),
i.push(p.filters.inPanoDirection(l, h, c)),
i.push(p.filters.isNeighbourPanoTo(t)),
o.push(p.scoreFunctions.direction(l, h))
}
var u = new r.Vector3
, d = function(e) {
u.copy(l).sub(e.position);
var t = -r.Math.radToDeg(Math.atan(u.y / Math.sqrt(u.x * u.x + u.z * u.z)))
, i = a.tags.navigate.tiltTolerance;
return a.insideLookLimitDown - i < t && t < a.insideLookLimitUp + i
}
, f = function(e) {
return Math.abs(e.position.x - l.x) > a.tags.visibility.cameraClearance || Math.abs(e.position.z - l.z) > a.tags.visibility.cameraClearance
};
i.push(f, d),
o.push(p.scoreFunctions.distanceSquared(this, -2));
var g = this.model.panos.sortByScore(i, o);
if (a.tags.navigate.lineOfSight) {
for (var m = 0; m < g.length; m++) {
var v = g[m].pano
, A = v.position.distanceTo(l);
if (!a.tags.visibility.anyDistance && A > a.tags.visibility.visibleDistance)
return null;
n.raycaster.set(v.position, l.clone().sub(v.position).normalize());
var y = n.raycaster.intersectObjects(this.model.colliders);
if (0 === y.length || y[0].distance > A)
return v
}
return null
}
return g.length > 0 && g[0].pano
}
,
n.prototype.examine = function(e) {
var t = e.mode
, i = a.tags.navigate.nearestPano && this.closestPanoTowardTag(t, e.currentPano) || e.currentPano
, n = this.disc.getWorldPosition();
this.billboard.setActiveState();
var o = function() {
var t = this.billboard.getDimensions()
, n = new r.Vector3;
u.convertScreenPositionToNDC(t.left + t.width / 2, t.top + t.height / 2, n),
n.unproject(e.camera),
e.flyToPano({
pano: i,
lookAtPoint: n
})
}
.bind(this);
if (t === s.PANORAMA)
if (i !== e.currentPano) {
var l = {
pano: i,
lookAtPoint: n,
duration: null,
maxDistanceOverride: null,
skipWarpingCheck: !1
};
e.flyToPano(l, o)
} else
setTimeout(function() {
this.billboard.open().then(function() {
o()
})
}
.bind(this), 0);
else {
var c = {
pano: i
};
if (n) {
var h = (new r.Matrix4).lookAt(i.position, n, new r.Vector3(0,1,0));
c.quaternion = (new r.Quaternion).setFromRotationMatrix(h)
}
c.callback = o,
c.duration = 1500,
c.mode = s.PANORAMA,
e.flyToNewMode(c)
}
}
,
n.prototype.update = function(e, t) {
var i = new r.Vector3;
return function(e, t) {
this.discWorldPosition = this.disc.getWorldPosition(),
this.updateDisc(e, t),
this.billboard.needsUpdate() && (i.copy(this.discWorldPosition).project(t),
i.z < 1 && (i.y *= -1,
this.billboard.update(i, this.getDiscRadius(i, t))))
}
}(),
n.prototype.updateDisc = function(e, t) {
var i = new r.Vector3
, o = new r.Vector3
, l = new r.Vector3
, c = new r.Vector3
, h = new r.Vector3;
return function(e, t) {
var u = a.tags.visibility
, d = a.tags.disc.scale
, p = e === s.DOLLHOUSE || e === s.FLOORPLAN ? a.tags.visibility.visibleDistance : t.position.distanceTo(this.discWorldPosition);
if (this.obj3d.visible = 0 !== this.disc.material.opacity && (u.anyDistance || p <= u.visibleDistance || e === s.TRANSITIONING) && (!u.hideViaFloor || this.tagVisibleOnCurrentFloor(e)) && (!u.hideOffScreenDisc || !this.offScreen(this.disc, t)) && (!u.hideOffScreenObject || !this.offScreen(this.obj3d, t)),
this.obj3d.visible) {
this.disc.quaternion.copy(t.quaternion);
var f = d.maxSize - (d.maxSize - d.minSize) * r.Math.smoothstep(p, d.nearBound, d.farBound);
i.copy(this.discWorldPosition).project(t),
o.set($("#player").width() / 2, $("#player").height() / 2, 1).multiply(i),
l.set(f / 2, 0, 0).add(o),
c.set(2 / $("#player").width(), 2 / $("#player").height(), 1).multiply(l),
h.copy(c).unproject(t);
var g = h.distanceTo(this.discWorldPosition)
, m = 1 + a.tags.disc.scale.responsiveness / 100 * (n.viewportScale() - 1);
this.discScale = g * m,
this.disc.scale.set(this.discScale, this.discScale, this.discScale)
}
}
}(),
n.prototype.getDiscRadius = function(e, t) {
var i = new r.Vector3;
return function(e, t) {
return i.set(-this.discScale / 2, 0, 0).applyQuaternion(t.quaternion).add(this.discWorldPosition).project(t),
Math.abs(e.x - i.x) * $("#player").width()
}
}(),
n.prototype.tagVisibleOnCurrentFloor = function(e) {
return !(e === s.DOLLHOUSE || e === s.FLOORPLAN) || this.model.allFloorsVisible || !this.floor.hidden
}
,
n.prototype.offScreen = function(e, t) {
var i = e.getWorldPosition().project(t);
return !(-1 < i.x && i.x < 1 && -1 < i.y && i.y < 1)
}
,
n.viewportScale = function() {
return n.viewportWidth === $("#player").width() && n.viewportHeight === $("#player").height() || (n.viewportWidth = $("#player").width(),
n.viewportHeight = $("#player").height(),
n.currentViewportScale = Math.sqrt(Math.min(n.viewportWidth, n.viewportHeight) / a.tags.disc.scale.baseViewportSize)),
n.currentViewportScale
}
,
t.exports = n
}
).call(this, "/js/tag/tag.js")
}
, {
"../enum/Colors": 19,
"../enum/RenderLayers": 41,
"../enum/RenderOrder": 42,
"../enum/Viewmode": 51,
"../objects/Panorama": 148,
"../settings": 166,
"../shaders": 167,
"../util/common": 185,
"../util/easing": 186,
"../util/lerp": 188,
"../util/logger": 189,
"../util/math": 190,
"../util/texture": 194,
"../util/transitions": 195,
"./Billboard/Billboard": 119,
"./Billboard/BillboardEvent": 120,
events: 202,
three: 217
}],
124: [function(e, t, i) {
(function(i) {
"use strict";
function n() {
this.tagState = y.IDLE,
this.intersectTag = null,
this.hoveredTag = null,
this.activeTag = null,
this.tagDiscs = [],
this.raycaster = new r.Raycaster,
this.modelManager = null,
this.player = null,
this.totaltags = 0,
this.navigatingViaTag = !1,
this.enabled = !1
}
var r = e("three")
, o = e("../util/logger")
, a = e("../util/common")
, s = e("../controls/serializer")
, l = e("../objects/Snapshot")
, c = e("../settings")
, h = e("./Billboard/BillboardEvent")
, u = e("./Media/MediaEvent")
, d = e("./Media/LinkType")
, p = e("../enum/Viewmode")
, f = e("../enum/WarpStyle")
, g = e("../enum/BlackoutStyle")
, m = e("../enum/ModelManagerEvents")
, v = e("../enum/tagEvents")
, A = e("../enum/PlayerEvents")
, y = (e("../util/lerp"),
e("../enum/TagStates"))
, C = e("events").EventEmitter
, I = new o(i);
a.extend(n, C),
n.prototype.init = function(e, t) {
this.modelManager = e,
this.player = t,
this.updateModel(),
this.bindEvents()
}
,
n.prototype.update = function(e) {
this.updateTags(this.player.mode, this.player.camera, this.player.currentPano, this.player.flying)
}
,
n.prototype.updateTags = function(e, t, i, n) {
for (var r in this.model.tags)
this.model.tags[r].update(e, t, i, n)
}
,
n.prototype.updateModel = function() {
this.model = this.modelManager.getActiveModel(),
this.gettagsFromModel(),
this.totaltags = Object.keys(this.model.tags).length
}
,
n.prototype.gettagsFromModel = function() {
this.tagDiscs = [];
for (var e in this.model.tags) {
var t = this.model.tags[e].disc;
t && this.tagDiscs.push(t)
}
}
,
n.prototype.bindEvents = function() {
function e() {
Object.keys(this.model.tags).forEach(function(e) {
var t = this.model.tags[e];
t.bindEvents(),
t.billboard.on(u.LINK_CLICK, function(e) {
e.type === d.NAVIGATION && this.navigateViaLink(e.url)
}
.bind(this)),
t.billboard.on(u.IMAGE_OPENED, function() {
this.tagState = y.EXAMINE,
this.emit(u.IMAGE_OPENED)
}
.bind(this)),
t.billboard.on(h.CLOSING, this.dismissExaminedTag.bind(this))
}
.bind(this))
}
this.modelManager.on(m.ActiveModelChanged, this.updateModel.bind(this)),
this.modelManager.on(m.ActiveModelChanged, e.bind(this)),
this.player.on(A.ModeChanging, this.onPlayerModeChanging.bind(this)),
this.player.on(A.PanoChosen, this.onPanoChange.bind(this)),
this.player.on(A.Ready, this.onPlayerReady.bind(this)),
this.player.on(A.FlyingEnded, this.onPlayerFlyingEnded.bind(this)),
this.player.on(A.WarpStarted, this.handleWarpStart.bind(this)),
this.player.on(A.WarpInterrupted, this.handleWarpInterruption.bind(this)),
e.call(this)
}
,
n.prototype.navigateViaLink = function(e) {
var t = s.deserialize(e);
if (t)
if (t.mode === p.PANORAMA) {
try {
this.player.model.panos.get(t.panoId)
} catch (e) {
return void I.warn("Unable to find panorama location", t.panoId)
}
this.player.warpToPanoById(t.panoId, t.quaternion, null, null, f.BLACK)
} else {
var i = {
cameraMode: t.mode,
position: t.position,
quaternion: t.quaternion,
scanId: t.panoId,
orthoZoom: t.zoom,
floorVisibility: t.floorVisibility,
thumbUrl: null,
name: null
};
this.player.flyToNewMode({
mode: t.mode,
duration: c.warp.outsideTime,
warpDest: new l(i),
force: !0
})
}
}
,
n.prototype.handleWarpStart = function(e, t, i, n) {
this.dismissExaminedTag(),
t === f.BLACK && (null !== n && void 0 !== n || (n = c.warp.teleportTime),
e && (i = g.END),
this.hideShowTagsForBlackoutStyle(i, n))
}
,
n.prototype.handleWarpInterruption = function(e, t, i) {
null !== i && void 0 !== i || (i = c.warp.teleportTime),
this.hideShowTagsForBlackoutStyle(t, i)
}
,
n.prototype.hideShowTagsForBlackoutStyle = function(e, t) {
var i = 0
, n = 0
, r = t / 2;
switch (null !== e && void 0 !== e || (e = g.MIDDLE),
e) {
case g.END:
this.hideAlltags(r);
break;
case g.BEGINNING:
this.hideAlltags().done(this.showAlltags.bind(this, r));
break;
case g.NONE:
break;
case g.MIDDLE:
i = r,
n = r,
this.hideAlltags(n),
setTimeout(function() {
this.showAlltags(i)
}
.bind(this), n);
break;
case g.FADEIN:
setTimeout(function() {
this.showAlltags(r)
}
.bind(this), r)
}
}
,
n.prototype.onPlayerModeChanging = function(e, t) {
t !== p.PANORAMA && this.dismissExaminedTag(),
t === p.PANORAMA && player.currentPano && !player.currentPano.isAligned() && (t = p.OUTDOOR);
var i = t !== p.OUTDOOR;
i !== this.model.tagsShown && (i ? this.showAlltags(c.tags.startup.fadeInDuration) : this.hideAlltags(c.tags.startup.fadeInDuration))
}
,
n.prototype.onPanoChange = function(e, t) {
var i = this.navigatingViaTag;
if (this.navigatingViaTag = !1,
!i) {
this.dismissExaminedTag();
var n = e && !e.isAligned() ? p.OUTDOOR : p.PANORAMA
, r = t && !t.isAligned() ? p.OUTDOOR : p.PANORAMA;
n !== r && (r === p.PANORAMA ? this.showAlltags(c.tags.startup.fadeInDuration, null, !0) : this.hideAlltags(c.tags.startup.fadeInDuration))
}
}
,
n.prototype.onPlayerReady = function(e, t, i) {
this.startAlltags(e, t ? i : null)
}
,
n.prototype.onPlayerFlyingEnded = function(e, t) {
this.updateClosestTags(e)
}
,
n.prototype.dismissExaminedTag = function() {
this.activeTag && this.tagState === y.EXAMINE && this.dismissActiveTag(),
this.hoveredTag && (this.hoveredTag.setFreeState(!0),
this.hoveredTag = null)
}
,
n.prototype.startAlltags = function(e, t) {
this.model.shouldShowtags = c.tags.enabled,
this.enabled = !0,
e || (this.showAlltags(c.tags.startup.fadeInDuration, c.tags.startup.fadeInDelay),
t && setTimeout(function() {
this.activateTag(this.model.getTagBySid(t))
}
.bind(this), c.tags.startup.fadeInDuration / 2))
}
,
n.prototype.showAlltags = function(e, t, i) {
function n() {
o++,
o === this.totaltags && (this.model.tagsShown = !0,
r.resolve())
}
var r = $.Deferred();
if (!i && this.player.mode === p.PANORAMA && this.player.currentPano && !this.player.currentPano.isAligned() || !this.model.shouldShowtags)
return r.resolve().promise();
var o = 0;
for (var a in this.model.tags) {
var s = this.model.tags[a];
s.show(e, t).done(n.bind(this))
}
return r.promise()
}
,
n.prototype.hideAlltags = function(e, t) {
function i() {
r++,
r === this.totaltags && (this.model.tagsShown = !1,
n.resolve())
}
var n = $.Deferred()
, r = 0;
for (var o in this.model.tags) {
var a = this.model.tags[o];
a.hide(e, t).done(i.bind(this)),
a === this.activeTag && this.dismissActiveTag()
}
return n.promise()
}
,
n.prototype.enableHovering = function() {
this.enabled = !0
}
,
n.prototype.disableHovering = function() {
this.enabled = !1
}
,
n.prototype.activateTag = function(e, t) {
t = t || y.EXAMINE,
this.activeTag = e,
this.activeTag.hoveringDisc = !0,
this.activeTag.setHoverState(t === y.EXAMINE),
this.tagState = t,
this.emit(v.TagActivated, e)
}
,
n.prototype.dismissActiveTag = function() {
this.activeTag.hoveringDisc = !1,
this.activeTag.setFreeState(!0);
var e = this.activeTag;
this.activeTag = null,
this.tagState = y.IDLE,
this.emit(v.TagDismissed, e)
}
,
n.prototype.clickedOnTag = function(e) {
var t = function() {
this.navigatingViaTag = !0,
this.activeTag.examine(this.player),
this.emit(v.TagNavigation, this.activeTag)
}
.bind(this);
return this.tagState !== y.EXAMINE ? (this.activateTag(this.intersectTag, y.EXAMINE),
this.activeTag = this.intersectTag,
t(),
!0) : (this.dismissActiveTag(),
!1)
}
,
n.prototype.intersecttag = function() {
var e = new r.Vector3
, t = new r.Vector3
, i = new r.Vector3;
return function(n, r, o) {
if (!this.enabled)
return null;
var a = null
, s = this.tagDiscs.filter(function(e) {
return e.parent.visible
});
if (s.length > 0) {
var l = this.model.floors.reduce(function(e, t) {
return t.hidden ? e : e.concat(t.collider.children)
}, s);
e.set(n.x, n.y, -1).unproject(o),
t.set(n.x, n.y, 1).unproject(o),
i.copy(t).sub(e).normalize(),
this.raycaster.set(e, i);
var c = this.raycaster.intersectObjects(l);
c.length > 0 && s.indexOf(c[0].object) !== -1 && (a = c[0].object.tag)
}
return this.intersectTag = a,
r && (this.activeTag && a !== this.activeTag && (this.tagState === y.BROWSE || this.tagState === y.EXAMINE && a) && this.dismissActiveTag(),
a && a !== this.activeTag && (a.listeners(h.ENTER).length < 1 && (a.billboard.on(h.ENTER, function() {
this.hoveredTag = a
}
.bind(this)),
a.billboard.on(h.LEAVE, function() {
this.hoveredTag = null
}
.bind(this))),
this.activateTag(a, y.BROWSE))),
a
}
}(),
n.prototype.rankedtagInDirection = function() {
var e = []
, t = []
, i = new r.Vector3
, n = new r.Vector3
, o = new r.Vector3;
return function(r, a, s, l) {
var c = 0;
t.length = 0;
for (var h = 0; h < this.closesttags.length; h++) {
var u = this.closesttags[h];
n.copy(u.position),
n.add(u.discPosition),
i.copy(a),
i.sub(n).negate(),
i.normalize();
var d = i.dot(l);
if (d >= 0) {
o.copy(n),
o.project(s);
var p = this.intersecttag(o, !1, s);
if (p) {
if (c >= e.length)
for (var f = 0; f < 64; f++)
e.push({
tag: u,
dot: d
});
var g = e[c];
g.tag = u,
g.dot = d,
g.position = math.projectPositionToCanvas(n, s),
t.push(g),
c++
}
}
}
return t.sort(function(e, t) {
return e.dot > t.dot ? -1 : e.dot < t.dot ? 1 : 0
}),
r < t.length ? t[r].tag : null
}
}(),
n.prototype.updateClosestTags = function() {
var e = new r.Vector3
, t = 30;
return function(i) {
this.closesttags || (this.closesttags = []),
this.closesttags.length = 0;
var n = this.model.tags;
if (n)
for (var r in n)
if (n.hasOwnProperty(r)) {
var o = n[r]
, a = o.position;
e.copy(i),
e.sub(a).negate();
var s = e.lengthSq();
s < t && this.closesttags.push(o)
}
}
}(),
t.exports = n
}
).call(this, "/js/tag/tagManager.js")
}
, {
"../controls/serializer": 14,
"../enum/BlackoutStyle": 18,
"../enum/tagEvents": 32,
"../enum/ModelManagerEvents": 33,
"../enum/PlayerEvents": 40,
"../enum/TagStates": 44,
"../enum/Viewmode": 51,
"../enum/WarpStyle": 52,
"../objects/Snapshot": 153,
"../settings": 166,
"../util/common": 185,
"../util/lerp": 188,
"../util/logger": 189,
"./Billboard/BillboardEvent": 120,
"./Media/LinkType": 130,
"./Media/MediaEvent": 131,
events: 202,
three: 217
}],
125: [function(e, t, i) {
(function(i) {
"use strict";
function n() {
this.embedWrapper = null,
this.embedElement = null
}
var r = e("../../util/ajax")
, o = e("./mediaSettings")
, a = e("../../settings")
, s = e("../../util/logger")
, l = new s(i);
n.prototype.createDomElement = function() {
return this.embedWrapper = document.createElement("div"),
this.embedWrapper.classList.add("tag-embed"),
this.embedWrapper.classList.add("hidden"),
this.embedWrapper
}
,
n.prototype.load = function(e) {
var t = "https://api.embedly.com/1/oembed?key=" + a.appConfig.embedly_key + "&url=" + encodeURIComponent(e) + "&maxwidth=" + o.maxEmbedWidth;
return new Promise(function(e, i) {
r.get(t).then(function(t) {
if (t = JSON.parse(t),
t.html && t.html.indexOf("