rdesign/frontend/node_modules/mermaid/dist/chunks/mermaid.esm/ishikawaDiagram-OBRH6LMB.mj...

8 lines
66 KiB
Plaintext

{
"version": 3,
"sources": ["../../../src/diagrams/ishikawa/parser/ishikawa.jison", "../../../src/diagrams/ishikawa/ishikawaDb.ts", "../../../src/diagrams/ishikawa/ishikawaRenderer.ts", "../../../src/diagrams/ishikawa/ishikawaStyles.ts", "../../../src/diagrams/ishikawa/ishikawaDiagram.ts"],
"sourcesContent": ["/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,14],$V2=[1,12],$V3=[1,13],$V4=[6,7,8],$V5=[1,20],$V6=[1,18],$V7=[1,19],$V8=[6,7,11],$V9=[1,6,13,14],$Va=[1,23],$Vb=[1,24],$Vc=[1,6,7,11,13,14];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ishikawa\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"ISHIKAWA\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"TEXT\":14,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"ISHIKAWA\",11:\"EOF\",13:\"SPACELIST\",14:\"TEXT\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6: case 7:\n return yy; \nbreak;\ncase 15:\n yy.addNode($$[$0-1].length, $$[$0].trim()); \nbreak;\ncase 16:\n yy.addNode(0, $$[$0].trim()); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:$V3},o($V4,[2,3]),{1:[2,2]},o($V4,[2,4]),o($V4,[2,5]),{1:[2,6],6:$V1,12:15,13:$V2,14:$V3},{6:$V1,9:16,12:11,13:$V2,14:$V3},{6:$V5,7:$V6,10:17,11:$V7},o($V8,[2,18],{14:[1,21]}),o($V8,[2,16]),o($V8,[2,17]),{6:$V5,7:$V6,10:22,11:$V7},{1:[2,7],6:$V1,12:15,13:$V2,14:$V3},o($V9,[2,14],{7:$Va,11:$Vb}),o($Vc,[2,8]),o($Vc,[2,9]),o($Vc,[2,10]),o($V8,[2,15]),o($V9,[2,13],{7:$Va,11:$Vb}),o($Vc,[2,11]),o($Vc,[2,12])],\ndefaultActions: {2:[2,1],6:[2,2]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: return 6; \nbreak;\ncase 1: return 8; \nbreak;\ncase 2: return 8; \nbreak;\ncase 3: return 6; \nbreak;\ncase 4: return 7; \nbreak;\ncase 5: return 13; \nbreak;\ncase 6: return 14; \nbreak;\ncase 7:return 11;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:ishikawa-beta\\b)/i,/^(?:ishikawa\\b)/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:[^\\n]+)/i,/^(?:$)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})(); \n\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport common from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\n\ninterface StackEntry {\n level: number;\n node: IshikawaNode;\n}\n\nexport class IshikawaDB implements DiagramDB {\n private root?: IshikawaNode;\n private stack: StackEntry[] = [];\n private baseLevel?: number;\n\n constructor() {\n this.clear = this.clear.bind(this);\n this.addNode = this.addNode.bind(this);\n this.getRoot = this.getRoot.bind(this);\n }\n\n clear(): void {\n this.root = undefined;\n this.stack = [];\n this.baseLevel = undefined;\n commonClear();\n }\n\n getRoot(): IshikawaNode | undefined {\n return this.root;\n }\n\n addNode(rawLevel: number, text: string): void {\n const label = common.sanitizeText(text, getConfig());\n\n if (!this.root) {\n this.baseLevel = rawLevel;\n this.root = { text: label, children: [] };\n this.stack = [{ level: 0, node: this.root }];\n setDiagramTitle(label);\n return;\n }\n\n let level = rawLevel - (this.baseLevel ?? 0);\n if (level <= 0) {\n level = 1;\n }\n\n // Pop stack until the top has a strictly lower level (= parent)\n while (this.stack.length > 1 && this.stack[this.stack.length - 1].level >= level) {\n this.stack.pop();\n }\n\n const parent = this.stack[this.stack.length - 1].node;\n const node: IshikawaNode = { text: label, children: [] };\n parent.children.push(node);\n this.stack.push({ level, node });\n }\n\n getAccTitle(): string {\n return getAccTitle();\n }\n\n setAccTitle(title: string): void {\n setAccTitle(title);\n }\n\n getAccDescription(): string {\n return getAccDescription();\n }\n\n setAccDescription(description: string): void {\n setAccDescription(description);\n }\n\n getDiagramTitle(): string {\n return getDiagramTitle();\n }\n\n setDiagramTitle(title: string): void {\n setDiagramTitle(title);\n }\n}\n", "// cspell:ignore lerp\nimport type { Diagram } from '../../Diagram.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { IshikawaDB } from './ishikawaDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\nimport rough from 'roughjs';\n\ninterface RoughContext {\n roughSvg: ReturnType<typeof rough.svg>;\n seed: number;\n lineColor: string;\n fillColor: string;\n}\n\nconst FONT_SIZE_DEFAULT = 14;\nconst SPINE_BASE_LENGTH = 250;\nconst BONE_STUB = 30;\nconst BONE_BASE = 60;\nconst BONE_PER_CHILD = 5;\nconst ANGLE = (82 * Math.PI) / 180;\nconst COS_A = Math.cos(ANGLE);\nconst SIN_A = Math.sin(ANGLE);\n\nconst applyPaddedViewBox = (svgEl: SVG, pad: number, maxW: boolean) => {\n const bbox = svgEl.node()!.getBBox();\n const w = bbox.width + pad * 2;\n const h = bbox.height + pad * 2;\n configureSvgSize(svgEl, h, w, maxW);\n svgEl.attr('viewBox', `${bbox.x - pad} ${bbox.y - pad} ${w} ${h}`);\n};\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const db = diagram.db as IshikawaDB;\n const root = db.getRoot();\n if (!root) {\n return;\n }\n\n const drawConfig = getConfig();\n const { look, handDrawnSeed, themeVariables } = drawConfig;\n const fontSize = parseFontSize(drawConfig.fontSize)[0] ?? FONT_SIZE_DEFAULT;\n const isHandDrawn = look === 'handDrawn';\n\n const causes = root.children ?? [];\n const padding = drawConfig.ishikawa?.diagramPadding ?? 20;\n const useMaxWidth = drawConfig.ishikawa?.useMaxWidth ?? false;\n const svg = selectSvgElement(id);\n const g = svg.append('g').attr('class', 'ishikawa');\n\n const roughSvg = isHandDrawn ? rough.svg(svg.node()!) : undefined;\n const roughContext: RoughContext | undefined = roughSvg\n ? {\n roughSvg,\n seed: handDrawnSeed ?? 0,\n lineColor: themeVariables?.lineColor ?? '#333',\n fillColor: themeVariables?.mainBkg ?? '#fff',\n }\n : undefined;\n\n const markerId = `ishikawa-arrow-${id}`;\n if (!isHandDrawn) {\n g.append('defs')\n .append('marker')\n .attr('id', markerId)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 Z')\n .attr('class', 'ishikawa-arrow');\n }\n\n let spineX = 0;\n let spineY = SPINE_BASE_LENGTH;\n\n // For handDrawn, defer spine drawing until coordinates are final\n const spineLine = isHandDrawn\n ? undefined\n : drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine');\n drawHead(g, spineX, spineY, root.text, fontSize, roughContext);\n\n if (!causes.length) {\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine', roughContext);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n return;\n }\n\n spineX -= 20;\n\n const upperCauses = causes.filter((_, i) => i % 2 === 0);\n const lowerCauses = causes.filter((_, i) => i % 2 === 1);\n\n const upperStats = sideStats(upperCauses);\n const lowerStats = sideStats(lowerCauses);\n const descendantTotal = upperStats.total + lowerStats.total;\n\n let upperLen = SPINE_BASE_LENGTH;\n let lowerLen = SPINE_BASE_LENGTH;\n if (descendantTotal > 0) {\n const pool = SPINE_BASE_LENGTH * 2;\n const minLen = SPINE_BASE_LENGTH * 0.3;\n upperLen = Math.max(minLen, pool * (upperStats.total / descendantTotal));\n lowerLen = Math.max(minLen, pool * (lowerStats.total / descendantTotal));\n }\n\n const minSpacing = fontSize * 2;\n upperLen = Math.max(upperLen, upperStats.max * minSpacing);\n lowerLen = Math.max(lowerLen, lowerStats.max * minSpacing);\n\n spineY = Math.max(upperLen, SPINE_BASE_LENGTH);\n if (spineLine) {\n spineLine.attr('y1', spineY).attr('y2', spineY);\n }\n g.select('.ishikawa-head-group').attr('transform', `translate(0,${spineY})`);\n\n const pairCount = Math.ceil(causes.length / 2);\n for (let p = 0; p < pairCount; p++) {\n const pg = g.append('g').attr('class', 'ishikawa-pair');\n for (const [cause, dir, len] of [\n [causes[p * 2], -1, upperLen] as const,\n [causes[p * 2 + 1], 1, lowerLen] as const,\n ]) {\n if (cause) {\n drawBranch(pg, cause, spineX, spineY, dir, len, fontSize, roughContext);\n }\n }\n spineX = pg\n .selectAll('text')\n .nodes()\n .reduce((left, n) => Math.min(left, (n as SVGGraphicsElement).getBBox().x), Infinity);\n }\n\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, 0, spineY, 'ishikawa-spine', roughContext);\n } else {\n spineLine!.attr('x1', spineX);\n const markerUrl = `url(#${markerId})`;\n g.selectAll('line.ishikawa-branch, line.ishikawa-sub-branch').attr('marker-start', markerUrl);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n};\n\nconst sideStats = (nodes: IshikawaNode[]) => {\n const countDescendants = (node: IshikawaNode): number =>\n node.children.reduce((sum, child) => sum + 1 + countDescendants(child), 0);\n\n return nodes.reduce(\n (stats, node) => {\n const descendants = countDescendants(node);\n stats.total += descendants;\n stats.max = Math.max(stats.max, descendants);\n return stats;\n },\n { total: 0, max: 0 }\n );\n};\n\nconst drawHead = (\n svg: SVGGroup,\n x: number,\n y: number,\n label: string,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const maxChars = Math.max(6, Math.floor(110 / (fontSize * 0.6)));\n const headGroup = svg\n .append('g')\n .attr('class', 'ishikawa-head-group')\n .attr('transform', `translate(${x},${y})`);\n\n const textEl = drawMultilineText(\n headGroup,\n wrapText(label, maxChars),\n 0,\n 0,\n 'ishikawa-head-label',\n 'start',\n fontSize\n );\n const tb = textEl.node()!.getBBox();\n const w = Math.max(60, tb.width + 6);\n const h = Math.max(40, tb.height * 2 + 40);\n\n const headPath = `M 0 ${-h / 2} L 0 ${h / 2} Q ${w * 2.4} 0 0 ${-h / 2} Z`;\n if (roughContext) {\n const roughNode = roughContext.roughSvg.path(headPath, {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n headGroup.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-head');\n } else {\n headGroup.insert('path', ':first-child').attr('class', 'ishikawa-head').attr('d', headPath);\n }\n textEl.attr('transform', `translate(${(w - tb.width) / 2 - tb.x + 3},${-tb.y - tb.height / 2})`);\n};\n\ninterface LabelEntry {\n text: string;\n depth: number;\n parentIndex: number;\n childCount: number;\n}\n\ninterface BoneInfo {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n childCount: number;\n childrenDrawn: number;\n}\n\n// Flatten children so we can assign Y positions without recursion when drawing.\n// Even depths are placed in pre-order (close to the spine), odd depths in post-order\n// to keep diagonal bones within their parent wedge.\nconst flattenTree = (children: IshikawaNode[], direction: 1 | -1) => {\n const entries: LabelEntry[] = [];\n const yOrder: number[] = [];\n const walk = (nodes: IshikawaNode[], pid: number, depth: number) => {\n const ordered = direction === -1 ? [...nodes].reverse() : nodes;\n for (const child of ordered) {\n const idx = entries.length;\n const gc = child.children ?? [];\n entries.push({\n depth,\n text: wrapText(child.text, 15),\n parentIndex: pid,\n childCount: gc.length,\n });\n if (depth % 2 === 0) {\n // Even-depth: pre-order (closer to spine)\n yOrder.push(idx);\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n } else {\n // odd-depth: post-order (within parent diagonal)\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n yOrder.push(idx);\n }\n }\n };\n walk(children, -1, 2);\n return { entries, yOrder };\n};\n\nconst drawCauseLabel = (\n svg: SVGGroup,\n text: string,\n x: number,\n y: number,\n direction: 1 | -1,\n fontSize: number,\n roughContext?: RoughContext\n) => {\n const lg = svg.append('g').attr('class', 'ishikawa-label-group');\n const lt = drawMultilineText(\n lg,\n text,\n x,\n y + 11 * direction,\n 'ishikawa-label cause',\n 'middle',\n fontSize\n );\n const tb = lt.node()!.getBBox();\n if (roughContext) {\n const roughNode = roughContext.roughSvg.rectangle(\n tb.x - 20,\n tb.y - 2,\n tb.width + 40,\n tb.height + 4,\n {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n }\n );\n lg.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-label-box');\n } else {\n lg.insert('rect', ':first-child')\n .attr('class', 'ishikawa-label-box')\n .attr('x', tb.x - 20)\n .attr('y', tb.y - 2)\n .attr('width', tb.width + 40)\n .attr('height', tb.height + 4);\n }\n};\n\n// Emulate arrow marker since rough.js does not support marker on line\nconst drawArrowMarker = (\n g: SVGGroup,\n x: number,\n y: number,\n dx: number,\n dy: number,\n roughContext: RoughContext\n) => {\n const len = Math.sqrt(dx * dx + dy * dy);\n if (len === 0) {\n return;\n }\n const ux = dx / len;\n const uy = dy / len;\n const s = 6;\n const px = -uy * s;\n const py = ux * s;\n const tipX = x;\n const tipY = y;\n const d = `M ${tipX} ${tipY} L ${tipX - ux * s * 2 + px} ${tipY - uy * s * 2 + py} L ${tipX - ux * s * 2 - px} ${tipY - uy * s * 2 - py} Z`;\n const roughNode = roughContext.roughSvg.path(d, {\n roughness: 1,\n seed: roughContext.seed,\n fill: roughContext.lineColor,\n fillStyle: 'solid',\n stroke: roughContext.lineColor,\n strokeWidth: 1,\n });\n g.append(() => roughNode);\n};\n\nconst drawBranch = (\n svg: SVGGroup,\n node: IshikawaNode,\n startX: number,\n startY: number,\n direction: 1 | -1,\n length: number,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const children = node.children ?? [];\n const lineLen = length * (children.length ? 1 : 0.2);\n const dx = -COS_A * lineLen;\n const dy = SIN_A * lineLen * direction;\n const endX = startX + dx;\n const endY = startY + dy;\n\n drawLine(svg, startX, startY, endX, endY, 'ishikawa-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(svg, startX, startY, startX - endX, startY - endY, roughContext);\n }\n drawCauseLabel(svg, node.text, endX, endY, direction, fontSize, roughContext);\n\n if (!children.length) {\n return;\n }\n\n const { entries, yOrder } = flattenTree(children, direction);\n const entryCount = entries.length;\n const ys = new Array<number>(entryCount);\n for (const [slot, entryIdx] of yOrder.entries()) {\n ys[entryIdx] = startY + dy * ((slot + 1) / (entryCount + 1));\n }\n\n const bones = new Map<number, BoneInfo>();\n bones.set(-1, {\n x0: startX,\n y0: startY,\n x1: endX,\n y1: endY,\n childCount: children.length,\n childrenDrawn: 0,\n });\n\n const diagonalX = -COS_A;\n const diagonalY = SIN_A * direction;\n const oddLabel = direction < 0 ? 'ishikawa-label up' : 'ishikawa-label down';\n\n for (const [i, e] of entries.entries()) {\n const y = ys[i];\n const par = bones.get(e.parentIndex)!;\n const grp = svg.append('g').attr('class', 'ishikawa-sub-group');\n\n let bx0 = 0;\n let by0 = 0;\n let bx1 = 0;\n\n if (e.depth % 2 === 0) {\n // Horizontal bone: attach to parent's diagonal at the target Y, extend left\n const dyP = par.y1 - par.y0;\n bx0 = lerp(par.x0, par.x1, dyP ? (y - par.y0) / dyP : 0.5);\n by0 = y;\n bx1 = bx0 - (e.childCount > 0 ? BONE_BASE + e.childCount * BONE_PER_CHILD : BONE_STUB);\n drawLine(grp, bx0, y, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, y, 1, 0, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, 'ishikawa-label align', 'end', fontSize);\n } else {\n // Diagonal bone: start from evenly-spaced point on parent's horizontal, angle toward target Y\n const k = par.childrenDrawn++;\n bx0 = lerp(par.x0, par.x1, (par.childCount - k) / (par.childCount + 1));\n by0 = par.y0;\n bx1 = bx0 + diagonalX * ((y - by0) / diagonalY);\n drawLine(grp, bx0, by0, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, by0, bx0 - bx1, by0 - y, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, oddLabel, 'end', fontSize);\n }\n\n if (e.childCount > 0) {\n bones.set(i, {\n x0: bx0,\n y0: by0,\n x1: bx1,\n y1: y,\n childCount: e.childCount,\n childrenDrawn: 0,\n });\n }\n }\n};\n\nconst splitLines = (text: string): string[] => text.split(/<br\\s*\\/?>|\\n/);\n\nconst wrapText = (text: string, maxChars: number): string => {\n if (text.length <= maxChars) {\n return text;\n }\n const lines: string[] = [];\n for (const word of text.split(/\\s+/)) {\n const last = lines.length - 1;\n if (last >= 0 && lines[last].length + 1 + word.length <= maxChars) {\n lines[last] += ' ' + word;\n } else {\n lines.push(word);\n }\n }\n return lines.join('\\n');\n};\n\nconst drawMultilineText = (\n g: SVGGroup,\n text: string,\n x: number,\n y: number,\n cls: string,\n anchor: 'middle' | 'start' | 'end',\n fontSize: number\n) => {\n const lines = splitLines(text);\n const lh = fontSize * 1.05;\n const el = g\n .append('text')\n .attr('class', cls)\n .attr('text-anchor', anchor)\n .attr('x', x)\n .attr('y', y - ((lines.length - 1) * lh) / 2);\n for (const [i, line] of lines.entries()) {\n el.append('tspan')\n .attr('x', x)\n .attr('dy', i === 0 ? 0 : lh)\n .text(line);\n }\n return el;\n};\n\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\nconst drawLine = (\n g: SVGGroup,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cls: string,\n roughContext?: RoughContext\n) => {\n if (roughContext) {\n const roughNode = roughContext.roughSvg.line(x1, y1, x2, y2, {\n roughness: 1.5,\n seed: roughContext.seed,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n g.append(() => roughNode).attr('class', cls);\n return undefined;\n }\n return g\n .append('line')\n .attr('class', cls)\n .attr('x1', x1)\n .attr('y1', y1)\n .attr('x2', x2)\n .attr('y2', y2);\n};\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst getStyles: DiagramStylesProvider = (options) => `\n.ishikawa .ishikawa-spine,\n.ishikawa .ishikawa-branch,\n.ishikawa .ishikawa-sub-branch {\n stroke: ${options.lineColor};\n stroke-width: 2;\n fill: none;\n}\n\n.ishikawa .ishikawa-sub-branch {\n stroke-width: 1;\n}\n\n.ishikawa .ishikawa-arrow {\n fill: ${options.lineColor};\n}\n\n.ishikawa .ishikawa-head {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa .ishikawa-label-box {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa text {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor};\n}\n\n.ishikawa .ishikawa-head-label {\n font-weight: 600;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: 14px;\n}\n\n.ishikawa .ishikawa-label {\n text-anchor: end;\n}\n\n.ishikawa .ishikawa-label.cause {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.align {\n text-anchor: end;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.up {\n dominant-baseline: baseline;\n}\n\n.ishikawa .ishikawa-label.down {\n dominant-baseline: hanging;\n}\n`;\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/ishikawa.jison';\nimport { IshikawaDB } from './ishikawaDb.js';\nimport { renderer } from './ishikawaRenderer.js';\nimport styles from './ishikawaStyles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new IshikawaDB();\n },\n renderer,\n styles,\n};\n"],
"mappings": "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",
"names": ["o", "parser", "lexer", "diagram"]
}