@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.71 kB
JavaScript
import{getResolved as $,resolve as c}from"@expofp/resolve";const a="[efp-dev]";export function initLoadDev(o){const{fpSvgLayerJsRefs:s}=o,n=o.fpSvgJsRef?$(o.fpSvgJsRef):{};console.group(`${a} config loaded`),console.log("config:",o),console.log("fp.svg.js (eager):",_(n),n);const i=(n.__fpLayers??[]).map(e=>({name:e.name,description:e.description,mode:e.mode,floorIndex:e.floorIndex,hasViewbox:e.viewbox!=null,default:e.name===n.__fpDefaultLayer,$ref:s[e.name]?.$ref??"(inline in fp.svg.js)"}));i.length&&console.table(i),console.log("layersMode:",n.__fpLayersMode,"defaultLayer:",n.__fpDefaultLayer),console.groupEnd();const p={},d=async e=>{const t=s[e];if(!t){console.warn(`${a} no $ref for layer "${e}" \u2014 known:`,Object.keys(s));return}const f=performance.now(),r=await c(t),l=Math.round(performance.now()-f);return p[e]=r,console.log(`${a} layer "${e}" \u2190 ${t.$ref} (${l}ms)`,_(r),r),r},g=async()=>(await Promise.all(Object.keys(s).map(d)),p),u=async e=>{const f=`${o.fpSvgJsRef?o.fpSvgJsRef.$ref.split(/[?#]/)[0].replace(/[^/]*$/,""):""}${e}`,r=performance.now(),l=await c({$ref:f});return console.log(`${a} ${e} \u2190 ${f} (${Math.round(performance.now()-r)}ms)`,l),l};window.__efpDev={config:o,fpSvgJs:n,refs:s,layers:p,loadLayer:d,loadLayers:g,loadDataFile:u,resolve:c},console.log(`${a} playground ready \u2014 nothing loads until you ask; try:`,"await __efpDev.loadLayers()",`| await __efpDev.loadLayer('${Object.keys(s)[0]??"name"}')`,"| await __efpDev.loadDataFile('wf.data.js')")}function _(o){return{svgChars:o.__fp?.length??0,paths:o.__fpPaths?.length??0,fpVersion:o.__fpVersion,fpVer:o.__fpSettings?.fpVer,bearing:o.__fpGeo?.properties?.config?.bearing,keys:Object.keys(o).join(", ")}}