From 6b9c15d7f0b87bd67e7a9d8aea42e5b384176a1d Mon Sep 17 00:00:00 2001 From: omkarht Date: Tue, 22 Jul 2025 16:30:21 +0530 Subject: [PATCH] added reverse arrow head types on-behalf-of: @Mermaid-Chart --- .../src/diagrams/sequence/sequenceDb.ts | 4 ++++ .../src/diagrams/sequence/sequenceRenderer.ts | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/packages/mermaid/src/diagrams/sequence/sequenceDb.ts b/packages/mermaid/src/diagrams/sequence/sequenceDb.ts index 9b5868618..0112c5352 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceDb.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceDb.ts @@ -66,6 +66,10 @@ const LINETYPE = { SOLID_BOTTOM: 42, STICK_TOP: 43, STICK_BOTTOM: 44, + SOLID_ARROW_TOP_REVERSE: 45, + SOLID_ARROW_BOTTOM_REVERSE: 46, + STICK_ARROW_TOP_REVERSE: 47, + STICK_ARROW_BOTTOM_REVERSE: 48, } as const; const ARROWTYPE = { diff --git a/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts b/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts index c0471273a..6b9ecc202 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts @@ -470,6 +470,19 @@ const drawMessage = async function (diagram, msgModel, lineStartY: number, diagO line.attr('marker-end', 'url(' + url + '#stickBottomArrowHead)'); } + if (type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE) { + line.attr('marker-start', 'url(' + url + '#solidBottomArrowHead)'); + } + if (type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE) { + line.attr('marker-start', 'url(' + url + '#solidTopArrowHead)'); + } + if (type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE) { + line.attr('marker-start', 'url(' + url + '#stickBottomArrowHead)'); + } + if (type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE) { + line.attr('marker-start', 'url(' + url + '#stickTopArrowHead)'); + } + if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) { line.attr('marker-end', 'url(' + url + '#arrowhead)'); } @@ -1057,6 +1070,10 @@ export const draw = async function (_text: string, id: string, _version: string, diagObj.db.LINETYPE.SOLID_BOTTOM, diagObj.db.LINETYPE.STICK_TOP, diagObj.db.LINETYPE.STICK_BOTTOM, + diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE, + diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE, + diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE, + diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE, diagObj.db.LINETYPE.DOTTED, diagObj.db.LINETYPE.SOLID_CROSS, diagObj.db.LINETYPE.DOTTED_CROSS, @@ -1456,6 +1473,10 @@ const buildMessageModel = function (msg, actors, diagObj) { diagObj.db.LINETYPE.SOLID_BOTTOM, diagObj.db.LINETYPE.STICK_TOP, diagObj.db.LINETYPE.STICK_BOTTOM, + diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE, + diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE, + diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE, + diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE, diagObj.db.LINETYPE.DOTTED, diagObj.db.LINETYPE.SOLID_CROSS, diagObj.db.LINETYPE.DOTTED_CROSS, @@ -1512,6 +1533,8 @@ const buildMessageModel = function (msg, actors, diagObj) { diagObj.db.LINETYPE.DOTTED_OPEN, diagObj.db.LINETYPE.STICK_TOP, diagObj.db.LINETYPE.STICK_BOTTOM, + diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE, + diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE, ].includes(msg.type) ) { stopx += adjustValue(3);