@expofp/floorplan
Version:
Interactive floor plan library for expos and events
233 lines (226 loc) • 8.85 kB
JavaScript
(function() {
try {
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
e.SENTRY_RELEASE = { id: "3.7.8" };
var t = new e.Error().stack;
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "a54dad57-74f3-4852-97a7-513d03b3e4f5", e._sentryDebugIdIdentifier = "sentry-dbid-a54dad57-74f3-4852-97a7-513d03b3e4f5");
} catch {}
})();
import { r as e } from "./rolldown-runtime-YBAZwyzS.js";
import "./loadImage-CAq2UZsg.js";
import { t } from "./browser-CIXTbsxm.js";
import { a as n, t as r } from "./floorplan.loader-Cq_YmcPJ.js";
//#region src/utils/silence-mobx-react-lite-warning.ts
if (typeof console < "u" && typeof console.error == "function") {
let e = console.error.bind(console);
console.error = (...t) => {
typeof t[0] == "string" && t[0].includes("Can't perform a React state update on a component that hasn't mounted yet") || e(...t);
};
}
//#endregion
//#region ../utils/src/lib/deep-freeze.ts
function i(e) {
return typeof e != "object" || !e ? e : (Object.getOwnPropertyNames(e).forEach((t) => {
let n = e[t];
n && typeof n == "object" && i(n);
}), Object.freeze(e));
}
//#endregion
//#region ../utils/src/lib/fetch-with-retry.ts
var a, o = async function(...t) {
return a || (a = typeof window < "u" && typeof document < "u" ? window.fetch.bind(window) : (await import("./fetch-retry.umd-Bc704aiz.js").then((t) => /* @__PURE__ */ e(t.default, 1))).default(globalThis.fetch)), a(...t);
};
//#endregion
//#region ../utils/src/lib/import-node-module.ts
async function s(e) {
var t;
if (typeof process > "u" || !((t = process.versions) != null && t.node)) throw Error("importNodeModule can only be used in Node.js environments");
return Function("moduleName", "return import(moduleName)")(e);
}
//#endregion
//#region ../utils/src/lib/import-fs-promises.ts
async function c() {
return s("node:fs/promises");
}
//#endregion
//#region ../utils/src/lib/import-json.ts
var l = /* @__PURE__ */ e(t(), 1), u = (0, l.default)("efp:utils:importJson"), d = /* @__PURE__ */ new WeakSet(), f;
function p() {
var e;
if (f === void 0) try {
f = Function("url", "return import(url, { with: { type: \"json\" } });");
} catch {
u("Dynamic import not available"), f = null;
}
return (e = f) == null ? void 0 : e;
}
async function m(e, t) {
var n, r, a, o;
let s = (n = t == null ? void 0 : t.forceFetch) == null ? !1 : n, c = (r = t == null ? void 0 : t.fetchCache) == null ? /* @__PURE__ */ new Map() : r, l = (a = t == null ? void 0 : t.signal) == null ? null : a, m, _ = s ? void 0 : p();
if (_) try {
u("Dynamic import", e), m = (await _(e)).default;
} catch {
u("Dynamic import not available"), f = null;
}
return m === void 0 && (e.startsWith("file:") && !s ? (u("Read from file system", e), m = await g(new URL(e))) : (u("Fetch", e), m = await h(e, c, l))), t == null || (o = t.importCallback) == null || o.call(t, e), typeof m == "object" && m && !d.has(m) && (i(m), d.add(m)), m;
}
async function h(e, t, n) {
let r = "__loadJson__" + e;
if (t.has(r)) return t.get(r);
let i = (async () => {
let t = await o(e, { signal: n });
if (!t.ok) throw Error(`Failed to fetch JSON from ${e}`);
return await t.json();
})();
return t.set(r, i), i;
}
async function g(e) {
if (e.protocol !== "file:") throw Error(`readJsonFromFs only supports file: URLs, got ${e.href}`);
let t = await (await c()).readFile(e, { encoding: "utf-8" });
return JSON.parse(t);
}
//#endregion
//#region ../resolve/src/resolve.ts
var _ = /* @__PURE__ */ new Map();
async function v(e, t) {
let n = {
fetchCache: (t == null ? void 0 : t.refCache) || _,
forceFetch: t == null ? void 0 : t.forceFetch,
signal: t == null ? void 0 : t.signal,
importCallback: t == null ? void 0 : t.importCallback
};
return typeof e != "object" || !e || !("$ref" in e) ? e : await m(e.$ref, n);
}
//#endregion
//#region src/_misc_to_move/initHtmlHead.ts
function y() {
if (typeof window > "u" || typeof document > "u") return;
if (!document.querySelector("meta[name=\"viewport\"]")) {
let e = document.createElement("meta");
e.name = "viewport", e.content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no", document.head.appendChild(e);
}
let e = () => !!document.querySelector("link[rel=\"icon\"]");
e() || import("./favicon-BkDexwvo.js").then(({ default: t }) => {
if (e()) return;
let n = document.createElement("link");
n.rel = "icon", n.type = "image/png", n.href = t, document.head.appendChild(n);
}), (!document.title || document.title === "Document") && (document.title = "Floor Plan by ExpoFP");
}
//#endregion
//#region src/_misc_to_move/logBuildInfo.ts
function b() {
let e = {
version: "3.7.8",
commit: "f61348be4",
branch: "vite-main",
built: "2026-06-18T16:59:01.313Z"
};
if (e) {
let t = new Date(e.built);
console.info("%c⚡️[efp-runtime]%c v%c%s%c commit=%c%s%c branch=%c%s%c built=%c%s%c (%s)", "color:#2382f4;font-weight:600", "color:inherit", "color:#dcdcaa;font-weight:600", e.version, "color:inherit", "color:#9cdcfe", e.commit, "color:inherit", "color:#ce9178", e.branch, "color:inherit", "color:#b5cea8", e.built, "color:inherit", x(t));
}
}
function x(e) {
let t = (/* @__PURE__ */ new Date()).getTime() - e.getTime(), n = Math.floor(t / (1e3 * 60 * 60 * 24)), r = Math.floor(t / (1e3 * 60 * 60) % 24), i = Math.floor(t / (1e3 * 60) % 60), a = [];
return n > 0 && a.push(`${n} day${n === 1 ? "" : "s"}`), r > 0 && a.push(`${r} hour${r === 1 ? "" : "s"}`), i > 0 && a.push(`${i} minute${i === 1 ? "" : "s"}`), a.length === 0 ? "just now" : a.join(" ") + " ago";
}
//#endregion
//#region src/load.ts
var S = (0, l.default)("efp:load");
async function C(e, t) {
var n, i;
y(), b();
let a = {
...await v(e),
...t
}, o = a.element, s;
if (typeof o == "string") {
let e = document.querySelector(o);
if (!e) throw Error(`Element not found for selector: ${o}`);
s = e;
} else o ? s = o : (s = document.getElementById("floorplan"), s || (s = document.createElement("div"), T(s), document.body.appendChild(s)));
w(), s.setAttribute("data-efp-floorplan-defaults", ""), (n = document.documentElement.style).overscrollBehavior || (n.overscrollBehavior = "none"), (i = document.body.style).overscrollBehavior || (i.overscrollBehavior = "none"), requestAnimationFrame(() => {
s.style.backgroundColor = "#ebebeb";
});
let c = a.legacyDataUrlBase;
if (S("legacyDataUrlBase", c), a.legacyDataVersion) try {
let { version: e } = await v(a.legacyDataVersion);
globalThis.__fpDataVersion = e;
} catch {
S("Could not resolve version");
}
let l = new r({
...a,
element: s
}), u = window.___fpResolve;
return window.___fp = l, u && (l.ready.then(() => u(l)), delete window.___fpResolve), l.ready.then(() => {
let e = new CustomEvent("expofp:ready", { detail: { floorplan: l } });
window.__expofpReady = e, window.dispatchEvent(e);
}), l;
}
function w() {
let e = "efp-floorplan-defaults";
if (document.getElementById(e)) return;
let t = document.createElement("style");
t.id = e, t.textContent = "\n[data-efp-floorplan-defaults] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n touch-action: none;\n overscroll-behavior: none;\n background: #fff;\n transition: background-color 2s ease;\n}", document.head.prepend(t);
}
function T(e) {
if (!document.adoptedStyleSheets) return;
let t = "efp-runtime-loader-spinner", n = `
.${t} {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 0;
z-index: 5;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
transition: all 1s ease;
}
.${t} > svg {
width: 60px;
transform-origin: center;
animation: ${t}-rotate 2s linear infinite;
}
.${t} > svg > circle {
fill: none;
stroke: var(--color-primary, #2382f4);
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
stroke-linecap: round;
stroke-width: 2;
animation: ${t}-dash 1.5s ease-in-out infinite;
}
@keyframes ${t}-rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes ${t}-dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 90, 200;
stroke-dashoffset: -35px;
}
100% {
stroke-dashoffset: -125px;
}
}`, r = new CSSStyleSheet();
r.replaceSync(n), document.adoptedStyleSheets = [...document.adoptedStyleSheets, r], e.innerHTML = `<div class="${t}">
<svg viewBox="25 25 50 50">
<circle r="20" cy="50" cx="50"></circle>
</svg>
</div>`, requestAnimationFrame(() => {
let n = e.querySelector(`.${t}`);
n == null || n.style.setProperty("opacity", "1");
});
}
window.addEventListener("error", n), window.__efpStyleElements = [];
//#endregion
export { C as load };