Skip to content

Changelog ​

v5.5.0 ​

September 25th 2026

  • New ✨

    • Wayfinding: getPath computes the shortest walkable route between two points, findClosest the closest reachable space or element matching a query filter together with the route to it. Same signatures as the extension SDK's methods:

      ts
      const route = await floorPlan.getPath({ start: [3, 4.5], end: [25, 12] })
      // { path: Vector2[], distance: number }
      
      const closest = await floorPlan.findClosest({
        start: [3, 4.5],
        where: { subCategory: 'meetingRoom', customAttributes: { isBookable: true } }
      })
      // { path, distance, target: { id, position } | null }

      Points outside the walkable area are mapped to the closest walkable point; path is empty when no route exists, and both methods return null while no floor is loaded.

v5.4.0 ​

September 23rd 2026

  • Changes

    • Curved and tapered walls are properly supported and rendered
    • Theme: theme.byFilter entries matching the same node compose per property
    • The package is now ESM-only: the UMD/CommonJS build is removed
  • Fixes

    • webgl: serve a fresh base texture when the cached one was destroyed with its layer

v5.3.0 ​

July 29th 2026

  • New ✨
    • Plan graphics added with addGraphic can now be made interactive. Pass interaction to make a graphic clickable or draggable:
      ts
      const layer = floorPlan.addLayer({ id: 'handles' })
      layer.addGraphic({
        shapes: [{ type: 'curve:circle', radius: 0.5, position: [0, 0], style: { fill: '#ff9955' } }],
        position: [-2, 5],
        fixedScreenSize: true,
        interaction: { drag: true }
      })
      Use drag: true for a handle that follows the pointer, or drag: 'event-only' to receive drag events while repositioning the graphic yourself.
    • New fixedScreenSize option keeps a graphic at a constant screen size regardless of zoom. Set it to true, or to a [min, max] ZoomRange to only apply the scaling within a zoom range.
    • Granular visibility control for elements and spaces. Show or hide nodes by byType, byId or byFilter — the same composition as theme:
      ts
      floorPlan.set({
        visibility: {
          byFilter: [
            { where: { type: 'element:asset' }, show: false },
            { where: { subCategory: 'workstation' }, show: true }
          ]
        }
      })
      Combine a broad hide with a narrow show to display only a subset. Hidden nodes are left out of the rendered plan and exportImage.
    • Asset stamps label assets on the plan, configured with label on the element:asset theme entry:
      ts
      floorPlan.set({
        theme: {
          byType: {
            'element:asset': {
              label: { display: ['customId'], visible: [40, 300] }
            }
          }
        }
      })
      Use visible to restrict stamps to a ZoomRange, and fixedScreenSize to control how they scale with zoom.
  • Changes
    • The addGraphic options scaleOnZoom, interactive, isHandler and updatePositionOnDrag are deprecated — use fixedScreenSize and interaction instead.
    • hideElements is deprecated — use visibility instead. hideElements: ['element:asset'] maps onto visibility: { byType: { 'element:asset': { show: false } } } and still works.

v5.2.1 ​

March 6th 2026

  • Fixes
    • Better handling of html markers position updates on canvas resize
    • Shapes with image fill now support opacity
    • All closed curve types are now supported for shape with image fill

v5.2.0 ​

February 25th 2026

  • New ✨
    • Support for layout query methods floorPlan.getElements, floorPlan.getSpaces etc
      ts
      // find all meet spaces that are larger than 50 sqm
      const largeSpaces = floorPlan.getSpaces({
        where: { category: 'meet', area: { gte: 50 } }
      })
    • Floor plans can now be styled using theme filters
      ts
      // highlight all workstations with
      // custom attribute 'isBooked = true' in red
      floorPlan.set({
        theme: {
          byFilter: [
            {
              where: {
                subCategory: 'workstation',
                customAttributes: { isBooked: true }
              },
              style: { fill: '#ff8855' }
            }
          ]
        }
      })
    • Load a specific layout via loadLayoutById
  • Changes
    • floorPlan.layout is deprecated in favour of the new query methods
    • floorPlan.getResourcesFromPosition is deprecated use floorPlan.getElements({ where: { at: [x, z] }}) instead
    • theme.elements is deprecated use theme.byType instead
  • Fixes
    • if no style is provided for a shape it falls back to stroke with constant 1px width
    • setting theme by id or filter now applies to child elements

v5.1.17 ​

January 26th 2026

  • Fixes

v5.1.16 ​

January 7th 2026

  • Fixes
    • Improved handling of floor plan instance reinitialization

v5.1.15 ​

December 22nd 2025

  • Fixes
    • Prevent accessing destroyed floorplan instance

v5.1.14 ​

December 18th 2025

  • Fixes

v5.1.13 ​

October 24th 2025

  • Changes
    • Updated Space Graph version
    • Performance improvements for loading the layout
  • Fixes
    • Replaced canvas element title attribute with alt-text fallback

v5.1.12 ​

October 17th 2025

  • Changes
    • Improvements to component instance handling

v5.1.11 ​

July 17th 2025

  • Fixes
    • Performance improvements for drawing components without asset textures

v5.1.10 ​

July 9th 2025

  • Fixes
    • Improved hit test for assets

v5.1.9 ​

July 4th 2025

  • Changes
    • Support product components
  • Fixes
    • Get product component drawing order from nested asset's products

v5.1.8 ​

April 29th 2025

  • Fixes
    • Better handle small shapes for polygon label point used for room stamps

v5.1.7 ​

April 15th 2025

  • Changes
    • Support custom attribute definitions with the same api field name for different resource types

v5.1.6 ​

March 26th 2025

  • Fixes
    • Inherit space relation for nested assets

v5.1.5 ​

March 3rd 2025

  • Fixes
    • Solve artifacts with thin intersecting walls
    • Updated Space Graph version

v5.1.4 ​

February 27th 2025

  • Changes
    • Custom attribute values of type boolean and number are no longer stringified
  • Fixes
    • Unified bounding box calculations
    • Updated Space Graph version

v5.1.3 ​

January 30th 2025

  • Fixes
    • Stability improvements for wall geometries
    • Updated Space Graph version

v5.1.2 ​

January 27th 2025

  • Changes
    • Default font switched from Avenir to Inter

v5.1.1 ​

January 16th 2025

  • Changes
    • spaces and elements can now be filtered by node.isExternal: boolean
    • updated Space Graph version
    • optimized layout loading

v5.1.0 ​

November 14th 2024

v5.0.2 ​

October 2nd 2024

  • Changes
    • minor type improvements
    • update Space Graph version

v5.0.1 ​

September 24th 2024

  • Changes
    • supporting walls with multiple edges

v5.0.0 ​

September 3rd 2024

  • New ✨
    • native Space Graph support
    • drawing shapes on top of the floor plan

Looking for older versions or the V3 Migration guide ?