{"version":3,"file":"update-layout-state.cjs","sources":["../../../src/store/update-layout-state.ts"],"sourcesContent":["import type { dia } from '@joint/core';\nimport type { ElementPosition, ElementSize, LinkLayout } from '../types/cell.types';\n\n/**\n * Default point used as fallback when position is not available.\n */\nconst DEFAULT_POINT = { x: 0, y: 0 } as const;\n\n/** Layout fields extracted from a JointJS element for the elements container. */\nexport interface ElementLayoutFields {\n  readonly position: ElementPosition;\n  readonly size: ElementSize;\n  readonly angle: number;\n}\n\n/**\n * Extracts layout fields (position, size, angle) from a JointJS element.\n * @param element - The JointJS element to extract layout from\n * @returns The layout fields or null if the element has no size\n */\nexport function getElementLayoutFields(element: dia.Element): ElementLayoutFields | null {\n  const size = element.get('size');\n  const position = element.get('position') ?? DEFAULT_POINT;\n  const angle = element.get('angle') ?? 0;\n  if (size === undefined) {\n    return null;\n  }\n  return {\n    position: { x: position.x ?? 0, y: position.y ?? 0 },\n    size: { width: size?.width ?? 0, height: size?.height ?? 0 },\n    angle,\n  };\n}\n\n/**\n * Extracts the layout (source/target points and path) from a JointJS link view.\n * @param linkView - The JointJS link view to extract layout from\n * @returns The link layout with source, target coordinates and path data\n */\nexport function getLinkLayout(linkView: dia.LinkView): LinkLayout {\n  const sourcePoint = linkView.sourcePoint ?? DEFAULT_POINT;\n  const targetPoint = linkView.targetPoint ?? DEFAULT_POINT;\n  const d = linkView.getSerializedConnection?.() ?? '';\n\n  return {\n    sourceX: sourcePoint.x,\n    sourceY: sourcePoint.y,\n    targetX: targetPoint.x,\n    targetY: targetPoint.y,\n    d,\n  };\n}\n"],"names":[],"mappings":";;;;;;;;;AAMA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAG,GAAG,CAAA,CAAA,CAAE,CAAA;AAiC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA;AAChE,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,SAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,SAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,IAAK,CAAA,CAAA,CAAA;AAElD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AAAA,CAAA,CAAA,CAAA,CACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACrB,CAAA;AAAA,CAAA,CAAA,CACF,CAAA;AACF,CAAA;;"}