@expofp/floorplan
Version:
Interactive floor plan library for expos and events
4 lines (3 loc) • 2.19 kB
JavaScript
import{Polygon as a,Rect as f}from"@expofp/renderer";import{createCircleCanvas as u}from"./canvases";import{DEFAULT_FONT_LIGHT_URL as s,DEFAULT_FONT_URL as d}from"./fonts";export function rectToShapeDef(e,n){let t;return e instanceof SVGRectElement&&(t=f.fromSvg(e)),createShapeDef(t,n)}export function meshToShapeDef(e,n){if(!e)throw new Error("Create ShapeDef: mesh is not provided");const t=e.positions.map(i=>({x:i[0],y:Math.abs(i[1])})),r=e.cells,o=new a(t,r);return createShapeDef(o,n)}export function createShapeDef(e,n="#000"){if(!e||!(e instanceof a||e instanceof f))throw new Error("Invalid shape definition");return{shape:e,color:n}}export function createImageDef(e,n,t){if(!e)throw new Error("Image source is not provided");return{source:e,bounds:n,...t}}export function createTextDef(e,n,t,r,o){if(e.length===0)throw new Error("Invalid text lines");return{lines:e,bounds:n,padding:t,alignment:r,...o}}export function createTextDefLines(e,n,t,r=[void 0,void 0]){const[o,i]=e,c=[{text:o.join(`
`),fontUrl:r[0]||d,color:n,fontSize:t}];return i.length&&c.push({text:i.join(`
`),fontUrl:r[1]||s,color:n,fontSize:t}),c}export function createLineDef({p0:e,p1:n},t="#000",r=10){if(!(e?.x&&e.y||n?.x&&n.y))throw new Error("Line data is invalid");return{points:[{x:e.x,y:e.y},{x:n.x,y:n.y}],color:t,width:r}}export function createLayerDef(e,n,t){if(!e)throw new Error("Layer name is required");return n||(n=[]),{name:e,children:n,...t}}export function createSceneDef(e,n,t,r){let o;return n instanceof SVGRectElement?o=f.fromSvg(n):n instanceof f&&(o=n),{rootLayer:createLayerDef("root",e),background:t,viewbox:o,memoryLimit:r}}export function createShapeDot(e,n="#000",t=1.5){const r=u(t,n),o=new f({x:e.center.x-r.width/2,y:e.center.y-r.height/2},{x:e.center.x+r.width/2,y:e.center.y+r.height/2},e.rotation);return createImageDef(r,o)}export function isDefaultScene(e){return e===void 0}export function pickDefaultScene(e){const n=e.find(t=>isDefaultScene(t.sceneId));if(!n)throw new Error("Default scene not found");return n}export function pickDefaultScenePoint(e){const n=e.find(t=>isDefaultScene(t.sceneId));if(!n)throw new Error("Default scene point not found");return n.point}