export const normalizeText = (text) => { return text.replace(/\\n/g, "\n"); }; export const transformToExcalidrawLineSkeleton = (line) => { const lineElement = { type: "line", x: line.startX, y: line.startY, points: [ [0, 0], [line.endX - line.startX, line.endY - line.startY], ], width: line.endX - line.startX, height: line.endY - line.startY, strokeStyle: line.strokeStyle || "solid", strokeColor: line.strokeColor || "#000", strokeWidth: line.strokeWidth || 1, }; if (line.groupId) { Object.assign(lineElement, { groupIds: [line.groupId] }); } if (line.id) { Object.assign(lineElement, { id: line.id }); } return lineElement; }; export const transformToExcalidrawTextSkeleton = (element) => { const textElement = { type: "text", x: element.x, y: element.y, width: element.width, height: element.height, text: normalizeText(element.text) || "", fontSize: element.fontSize, verticalAlign: "middle", }; if (element.groupId) { Object.assign(textElement, { groupIds: [element.groupId] }); } if (element.id) { Object.assign(textElement, { id: element.id }); } return textElement; }; export const transformToExcalidrawContainerSkeleton = (element) => { let extraProps = {}; if (element.type === "rectangle" && element.subtype === "activation") { extraProps = { backgroundColor: "#e9ecef", fillStyle: "solid", }; } const container = { id: element.id, type: element.type, x: element.x, y: element.y, width: element.width, height: element.height, label: { text: normalizeText(element?.label?.text || ""), fontSize: element?.label?.fontSize, verticalAlign: element.label?.verticalAlign || "middle", strokeColor: element.label?.color || "#000", groupIds: element.groupId ? [element.groupId] : [], }, strokeStyle: element?.strokeStyle, strokeWidth: element?.strokeWidth, strokeColor: element?.strokeColor, backgroundColor: element?.bgColor, fillStyle: "solid", ...extraProps, }; if (element.groupId) { Object.assign(container, { groupIds: [element.groupId] }); } return container; }; export const transformToExcalidrawArrowSkeleton = (arrow) => { const arrowElement = { type: "arrow", x: arrow.startX, y: arrow.startY, points: arrow.points || [ [0, 0], [arrow.endX - arrow.startX, arrow.endY - arrow.startY], ], width: arrow.endX - arrow.startX, height: arrow.endY - arrow.startY, strokeStyle: arrow?.strokeStyle || "solid", endArrowhead: arrow?.endArrowhead || null, startArrowhead: arrow?.startArrowhead || null, label: { text: normalizeText(arrow?.label?.text || ""), fontSize: 16, }, roundness: { type: 2, }, start: arrow.start, end: arrow.end, }; if (arrow.groupId) { Object.assign(arrowElement, { groupIds: [arrow.groupId] }); } return arrowElement; };