Skip to main content

Class: UppKonvaModel

Defined in: upp-konva-model.ts:41

Live scene state bound to the upp-konva host (engine via UppKonvaStage and floorPlanModel).

  • model.area: live shapes and kind DTO.
  • model.sceneModel (internal): same instance as the host’s internal floor plan.
  • mode defaults to VIEW. Use EDIT for drag and the Konva transformer.
  • After area.source, applyAreaFromSource, or area.notifyPresentationDirty(), the scene updates; data-only mutations via shape.syncPresentationToStage() do not fire structural onModelChanged. To delete rows: UppKonvaShape.remove(), UppKonvaArea.removeShapes, or UppKonvaGroup.remove().
  • The host syncs structural engine changes back to the public area (including tables and data.shape).
  • The host’s (onSelect) delivers area.shapes instances aligned with the canvas.
  • In EDIT, pushUndoSnapshot / undo operate on copies of the area.source DTO.

See​

../component/upp-konva-component.ts

Implements​

  • UppKonvaDestroy

Constructors​

Constructor​

new UppKonvaModel(area): UppKonvaModel

Defined in: upp-konva-model.ts:52

Creates the model, the live area, and the internal Konva engine.

Parameters​

area​

UppKonvaAreaSource

Initial DTO (width, height, shapes with kind per row). Optional: name, orientation, mode, presentation preferences, etc.

Returns​

UppKonvaModel

Properties​

marginPx​

marginPx: [number, number, number, number]

Defined in: upp-konva-model.ts:109

CSS pixel margins between the host edge and the usable plan rectangle: [top, right, bottom, left].


onModelChanged​

onModelChanged: (() => void) | null = null

Defined in: upp-konva-model.ts:119

Optional callback fired only when the structural shape list changes (id + kind order), not for purely visual mutations or in-place geometry edits.


pixelRatioMax​

pixelRatioMax: number = 2

Defined in: upp-konva-model.ts:111

Upper bound for devicePixelRatio applied to Konva canvases.


viewZoom​

viewZoom: number = 1

Defined in: upp-konva-model.ts:113

Multiplier (≥ 0.25) on the automatic framing scale of the plan.

Accessors​

area​

Get Signature​

get area(): UppKonvaArea

Defined in: upp-konva-model.ts:125

Live floor-plan area (same instance for the model’s lifetime). To apply data: applyAreaFromSource or assign area.source.

Returns​

UppKonvaArea


canUndo​

Get Signature​

get canUndo(): boolean

Defined in: upp-konva-model.ts:169

Whether at least one snapshot exists for undo().

Returns​

boolean


mode​

Get Signature​

get mode(): UppKonvaEditMode

Defined in: upp-konva-model.ts:133

Canvas interaction mode: VIEW (read-only / selection) or EDIT (transformer, drag). Does not emit onModelChanged.

Returns​

UppKonvaEditMode

Set Signature​

set mode(value): void

Defined in: upp-konva-model.ts:137

Parameters​
value​

UppKonvaEditMode

Returns​

void


presentationEpoch​

Get Signature​

get presentationEpoch(): number

Defined in: upp-konva-model.ts:164

Presentation repaint counter from the engine (same value the upp-konva host uses for [presentationEpoch]). Useful for diagnostics or demos; not part of the persisted plan contract.

Returns​

number


theme​

Get Signature​

get theme(): UppKonvaTheme | null

Defined in: upp-konva-model.ts:147

Theme preset (UPPKONVA_*); combinable with the upp-konva [theme] input.

Returns​

UppKonvaTheme | null

Set Signature​

set theme(value): void

Defined in: upp-konva-model.ts:151

Parameters​
value​

UppKonvaTheme | null | undefined

Returns​

void

Methods​

applyAreaFromSource()​

applyAreaFromSource(source): void

Defined in: upp-konva-model.ts:185

Replaces area contents from a DTO without changing the model.area reference (assigns area.source internally).

Parameters​

source​

UppKonvaAreaSource

Full UppKonvaAreaSource.

Returns​

void

Remarks​

onModelChanged fires only when the structural shape list changes (id + kind order). Room-only or orientation-only changes repaint without that signal.


applyHostPresentationPreferences()​

applyHostPresentationPreferences(): void

Defined in: upp-konva-model.ts:80

Pushes marginPx, viewZoom and pixelRatioMax to the live canvas. Needed after area updates: the public area DTO does not round-trip those host framing fields.

Returns​

void


doDestroy()​

doDestroy(): void

Defined in: upp-konva-model.ts:90

Unsubscribes and tears down shapes. Idempotent; call when destroying the component that owns the model.

Returns​

void

Implementation of​

UppKonvaDestroy.doDestroy


doRefresh()​

doRefresh(): void

Defined in: upp-konva-model.ts:253

Requests a canvas repaint without firing onModelChanged.

Returns​

void


exportModel()​

exportModel(): string

Defined in: upp-konva-model.ts:267

Serializes the plan to versioned document JSON (includes schemaVersion when applicable).

Returns​

string

JSON string; empty string if the model was already destroyed.


exportToPng()​

exportToPng(options?): Promise<Blob | null>

Defined in: upp-konva-model.ts:303

Exports a PNG snapshot of the mounted canvas.

Parameters​

options?​

UppFloorPlanExportPngOptions

Engine export options (resolution, etc.).

Returns​

Promise<Blob | null>

Image Blob, or null if the stage is not ready or the model was destroyed.


importModel()​

importModel(json): boolean

Defined in: upp-konva-model.ts:280

Parses a JSON document and replaces area contents when valid.

Parameters​

json​

string

Document produced by exportModel or compatible with the package schema.

Returns​

boolean

true when applied successfully.


pushUndoSnapshot()​

pushUndoSnapshot(): void

Defined in: upp-konva-model.ts:206

Pushes a copy of area.source for undo() (only in EDIT). Skips consecutive duplicates. The upp-konva host calls this before applying geometry from the stage.

Returns​

void


undo()​

undo(): boolean

Defined in: upp-konva-model.ts:232

Restores the last snapshot pushed via pushUndoSnapshot.

Returns​

boolean

true when a state was restored.