ruru
Version:
Grafast-flavoured GraphiQL distribution
2 lines • 16.6 kB
JavaScript
export const __webpack_esm_id__=7592;export const __webpack_esm_ids__=[7592];export const __webpack_esm_modules__={26637(e,t,n){function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}n.r(t),n.d(t,{populateCommonDb:()=>i}),(0,n(79456).__name)(i,"populateCommonDb")},65964(e,t,n){n.r(t),n.d(t,{db:()=>f,getStyles:()=>N,renderer:()=>B});var i=n(64342),r=n(39989),a=n(27166),o=n(79456),l="",s="",d="",m=[],c=new Map,h=(0,o.__name)(e=>(0,r.sanitizeText)(e,(0,r.getConfig2)()),"sanitizeText"),p=(0,o.__name)(e=>{switch(e.type){case"terminal":return{...e,value:h(e.value)};case"nonterminal":return{...e,name:h(e.name)};case"sequence":return{...e,elements:e.elements.map(p)};case"choice":return{...e,alternatives:e.alternatives.map(p)};case"optional":return{...e,element:p(e.element)};case"repetition":return{...e,element:p(e.element),separator:e.separator?p(e.separator):void 0};case"special":return{...e,text:h(e.text)}}},"sanitizeAstNode"),u=(0,o.__name)(()=>{l="",s="",d="",m.length=0,c.clear(),(0,r.clear)(),a.log.debug("[Railroad] Database cleared")},"clear"),g=(0,o.__name)(e=>{l=h(e),a.log.debug("[Railroad] Title set:",e)},"setTitle"),T=(0,o.__name)(()=>l,"getTitle"),f={clear:u,setTitle:g,getTitle:T,addRule:(0,o.__name)(e=>{const t={...e,name:h(e.name),definition:p(e.definition),comment:e.comment?h(e.comment):void 0};a.log.debug("[Railroad] Adding rule:",t.name),c.has(t.name)&&a.log.warn(`[Railroad] Rule '${t.name}' is already defined. Overwriting.`),m.push(t),c.set(t.name,t)},"addRule"),getRules:(0,o.__name)(()=>m,"getRules"),getRule:(0,o.__name)(e=>c.get(e),"getRule"),setAccTitle:(0,o.__name)(e=>{s=h(e).replace(/^\s+/g,""),a.log.debug("[Railroad] Accessibility title set:",e)},"setAccTitle"),getAccTitle:(0,o.__name)(()=>s,"getAccTitle"),setAccDescription:(0,o.__name)(e=>{d=h(e).replace(/\n\s+/g,"\n"),a.log.debug("[Railroad] Accessibility description set:",e)},"setAccDescription"),getAccDescription:(0,o.__name)(()=>d,"getAccDescription"),setDiagramTitle:g,getDiagramTitle:T},x={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:"monospace",terminalFill:"#FFFFC0",terminalStroke:"#000000",terminalTextColor:"#000000",nonTerminalFill:"#FFFFFF",nonTerminalStroke:"#000000",nonTerminalTextColor:"#000000",lineColor:"#000000",strokeWidth:2,markerFill:"#000000",commentFill:"#E8E8E8",commentStroke:"#888888",commentTextColor:"#666666",specialFill:"#F0E0FF",specialStroke:"#8800CC",ruleNameColor:"#000066",showMarkers:!0,markerRadius:5},w=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,k=/^[\w "',.-]+$/,C=new Set(["compactMode","padding","verticalSeparation","horizontalSeparation","arcRadius","fontSize","fontFamily","terminalFill","terminalStroke","terminalTextColor","nonTerminalFill","nonTerminalStroke","nonTerminalTextColor","lineColor","strokeWidth","markerFill","commentFill","commentStroke","commentTextColor","specialFill","specialStroke","ruleNameColor","showMarkers","markerRadius"]),S=(0,o.__name)(e=>!!e&&Object.keys(e).every(e=>"railroad"===e||C.has(e)),"isRailroadStyleOptions"),_=(0,o.__name)(e=>e?"railroad"in e&&e.railroad?e.railroad:S(e)?e:{}:{},"extractRailroadOverrides"),F=(0,o.__name)(e=>{if(!e||S(e))return{};const{railroad:t,svgId:n,theme:i,look:r,...a}=e;return a},"extractThemeOverrides"),$=(0,o.__name)((e,t)=>{if("string"!=typeof e)return t;const n=e.trim();return w.test(n)?n:t},"sanitizeColorValue"),y=(0,o.__name)((e,t)=>{if("string"!=typeof e)return t;const n=e.trim();return k.test(n)?n:t},"sanitizeFontFamilyValue"),b=(0,o.__name)((e,t)=>{const n="number"==typeof e?e:"string"==typeof e?Number.parseFloat(e):Number.NaN;return Number.isFinite(n)&&n>=0?n:t},"sanitizeNumberValue"),R=(0,o.__name)(e=>{const t="number"==typeof e?e:"string"==typeof e?Number.parseFloat(e):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0},"parseThemeFontSize"),v=(0,o.__name)(e=>{const t=y(e.fontFamily,x.fontFamily),n=R(e.fontSize)??x.fontSize;return{...x,fontFamily:t,fontSize:n,terminalFill:$(e.secondBkg??e.secondaryColor,x.terminalFill),terminalStroke:$(e.secondaryBorderColor??e.lineColor,x.terminalStroke),terminalTextColor:$(e.secondaryTextColor??e.textColor,x.terminalTextColor),nonTerminalFill:$(e.mainBkg??e.background,x.nonTerminalFill),nonTerminalStroke:$(e.primaryBorderColor??e.lineColor,x.nonTerminalStroke),nonTerminalTextColor:$(e.primaryTextColor??e.textColor,x.nonTerminalTextColor),lineColor:$(e.lineColor,x.lineColor),markerFill:$(e.lineColor,x.markerFill),commentFill:$(e.labelBackground??e.tertiaryColor,x.commentFill),commentStroke:$(e.tertiaryBorderColor??e.lineColor,x.commentStroke),commentTextColor:$(e.tertiaryTextColor??e.textColor,x.commentTextColor),specialFill:$(e.tertiaryColor??e.secondaryColor,x.specialFill),specialStroke:$(e.tertiaryBorderColor??e.secondaryBorderColor,x.specialStroke),ruleNameColor:$(e.titleColor??e.textColor,x.ruleNameColor)}},"buildThemeDefaults"),z=(0,o.__name)(e=>{const t=(0,r.getConfig)(),n={...(0,r.getThemeVariables)(),...t.themeVariables??{},...F(e)},i=v(n),a={...t.railroad??{},..._(e)};return{compactMode:a.compactMode??i.compactMode,padding:b(a.padding,i.padding),verticalSeparation:b(a.verticalSeparation,i.verticalSeparation),horizontalSeparation:b(a.horizontalSeparation,i.horizontalSeparation),arcRadius:b(a.arcRadius,i.arcRadius),fontSize:b(a.fontSize,i.fontSize),fontFamily:y(a.fontFamily,i.fontFamily),terminalFill:$(a.terminalFill,i.terminalFill),terminalStroke:$(a.terminalStroke,i.terminalStroke),terminalTextColor:$(a.terminalTextColor,i.terminalTextColor),nonTerminalFill:$(a.nonTerminalFill,i.nonTerminalFill),nonTerminalStroke:$(a.nonTerminalStroke,i.nonTerminalStroke),nonTerminalTextColor:$(a.nonTerminalTextColor,i.nonTerminalTextColor),lineColor:$(a.lineColor,i.lineColor),strokeWidth:b(a.strokeWidth,i.strokeWidth),markerFill:$(a.markerFill,i.markerFill),commentFill:$(a.commentFill,i.commentFill),commentStroke:$(a.commentStroke,i.commentStroke),commentTextColor:$(a.commentTextColor,i.commentTextColor),specialFill:$(a.specialFill,i.specialFill),specialStroke:$(a.specialStroke,i.specialStroke),ruleNameColor:$(a.ruleNameColor,i.ruleNameColor),showMarkers:a.showMarkers??i.showMarkers,markerRadius:b(a.markerRadius,i.markerRadius)}},"buildRailroadStyleOptions"),N=(0,o.__name)(e=>{const{fontFamily:t,fontSize:n,terminalFill:i,terminalStroke:r,terminalTextColor:a,nonTerminalFill:o,nonTerminalStroke:l,nonTerminalTextColor:s,lineColor:d,strokeWidth:m,markerFill:c,commentFill:h,commentStroke:p,commentTextColor:u,specialFill:g,specialStroke:T,ruleNameColor:f}=z(e);return`\n .railroad-diagram {\n font-family: ${t};\n font-size: ${n}px;\n }\n\n .railroad-terminal rect {\n fill: ${i};\n stroke: ${r};\n stroke-width: ${m}px;\n }\n\n .railroad-terminal text {\n fill: ${a};\n font-family: ${t};\n font-size: ${n}px;\n text-anchor: middle;\n dominant-baseline: middle;\n }\n\n .railroad-nonterminal rect {\n fill: ${o};\n stroke: ${l};\n stroke-width: ${m}px;\n }\n\n .railroad-nonterminal text {\n fill: ${s};\n font-family: ${t};\n font-size: ${n}px;\n text-anchor: middle;\n dominant-baseline: middle;\n }\n\n .railroad-line {\n stroke: ${d};\n stroke-width: ${m}px;\n fill: none;\n }\n\n .railroad-start circle,\n .railroad-end circle {\n fill: ${c};\n }\n\n .railroad-comment ellipse {\n fill: ${h};\n stroke: ${p};\n stroke-width: ${m}px;\n }\n\n .railroad-comment text {\n fill: ${u};\n font-style: italic;\n font-family: ${t};\n font-size: ${n}px;\n text-anchor: middle;\n dominant-baseline: middle;\n }\n\n .railroad-special rect {\n fill: ${g};\n stroke: ${T};\n stroke-width: ${m}px;\n stroke-dasharray: 5,3;\n }\n\n .railroad-special text {\n fill: ${s};\n font-family: ${t};\n font-size: ${n}px;\n text-anchor: middle;\n dominant-baseline: middle;\n }\n\n .railroad-rule-name {\n font-weight: bold;\n fill: ${f};\n font-family: ${t};\n font-size: ${n}px;\n }\n\n .railroad-group {\n /* Grouping container, no specific styles */\n }\n`},"getStyles"),M=class{constructor(){this.d=""}static{(0,o.__name)(this,"PathBuilder")}moveTo(e,t){return this.d+=`M ${e} ${t} `,this}lineTo(e,t){return this.d+=`L ${e} ${t} `,this}horizontalTo(e){return this.d+=`H ${e} `,this}verticalTo(e){return this.d+=`V ${e} `,this}arcTo(e,t,n,i,r,a,o){return this.d+=`A ${e} ${t} ${n} ${i?1:0} ${r?1:0} ${a} ${o} `,this}build(){return this.d.trim()}},A=class{constructor(e,t=z()){this.textCache=new Map,this.svg=e,this.config=t}static{(0,o.__name)(this,"RailroadRenderer")}measureText(e){if(this.textCache.has(e))return this.textCache.get(e);const t=this.svg.append("text").attr("font-family",this.config.fontFamily).attr("font-size",this.config.fontSize).text(e),n=t.node().getBBox(),i={width:n.width,height:n.height};return t.remove(),this.textCache.set(e,i),i}renderTerminal(e,t){const n=this.measureText(t),i=n.width+2*this.config.padding,r=n.height+2*this.config.padding,a=e.append("g").attr("class","railroad-terminal");return a.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",r).attr("rx",10).attr("ry",10),a.append("text").attr("x",i/2).attr("y",r/2).text(t),{element:a.node(),dimensions:{width:i,height:r,up:r/2,down:r/2}}}renderNonTerminal(e,t){const n=this.measureText(t),i=n.width+2*this.config.padding,r=n.height+2*this.config.padding,a=e.append("g").attr("class","railroad-nonterminal");return a.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",r),a.append("text").attr("x",i/2).attr("y",r/2).text(t),{element:a.node(),dimensions:{width:i,height:r,up:r/2,down:r/2}}}renderSequence(e,t){const n=t.map(t=>this.renderExpression(e,t));let i=0,r=0,a=0;for(const e of n)i+=e.dimensions.width,r=Math.max(r,e.dimensions.up),a=Math.max(a,e.dimensions.down);i+=(n.length-1)*this.config.horizontalSeparation;const o=e.append("g").attr("class","railroad-sequence");let l=0;for(let e=0;e<n.length;e++){const t=n[e],i=r-t.dimensions.up;if(o.node().appendChild(t.element).setAttribute("transform",`translate(${l}, ${i})`),e<n.length-1){const e=l+t.dimensions.width,n=e+this.config.horizontalSeparation,i=r;o.append("path").attr("class","railroad-line").attr("d",(new M).moveTo(e,i).lineTo(n,i).build())}l+=t.dimensions.width+this.config.horizontalSeparation}return{element:o.node(),dimensions:{width:i,height:r+a,up:r,down:a}}}renderChoice(e,t){const n=t.map(t=>this.renderExpression(e,t));let i=0,r=0;for(const e of n)i=Math.max(i,e.dimensions.width),r+=e.dimensions.height;r+=(n.length-1)*this.config.verticalSeparation;const a=this.config.arcRadius,o=i+4*a,l=e.append("g").attr("class","railroad-choice");let s=0;const d=r/2;for(const e of n){const t=s,n=t+e.dimensions.up,r=2*a+(i-e.dimensions.width)/2;l.node().appendChild(e.element).setAttribute("transform",`translate(${r}, ${t})`);const m=new M,c=n>d;n===d?m.moveTo(0,d).lineTo(r,n):m.moveTo(0,d).arcTo(a,a,0,!1,c,a,d+(c?a:-a)).lineTo(a,n-(c?a:-a)).arcTo(a,a,0,!1,!c,2*a,n).lineTo(r,n),l.append("path").attr("class","railroad-line").attr("d",m.build());const h=new M,p=r+e.dimensions.width,u=o-2*a;n===d?h.moveTo(p,n).lineTo(o,d):h.moveTo(p,n).lineTo(u,n).arcTo(a,a,0,!1,!c,o-a,n+(c?-a:a)).lineTo(o-a,d+(c?a:-a)).arcTo(a,a,0,!1,c,o,d),l.append("path").attr("class","railroad-line").attr("d",h.build()),s+=e.dimensions.height+this.config.verticalSeparation}return{element:l.node(),dimensions:{width:o,height:r,up:d,down:r-d}}}renderOptional(e,t){const n=this.renderExpression(e,t),i=this.config.arcRadius,r=2*i,a=n.dimensions.width+4*i,o=n.dimensions.height+r,l=e.append("g").attr("class","railroad-optional"),s=2*i,d=r;l.node().appendChild(n.element).setAttribute("transform",`translate(${s}, ${d})`);const m=d+n.dimensions.up,c=(new M).moveTo(0,m).lineTo(2*i,m);l.append("path").attr("class","railroad-line").attr("d",c.build());const h=(new M).moveTo(s+n.dimensions.width,m).lineTo(a,m);l.append("path").attr("class","railroad-line").attr("d",h.build());const p=(new M).moveTo(0,m).arcTo(i,i,0,!1,!1,i,m-i).lineTo(i,i).arcTo(i,i,0,!1,!0,2*i,0).lineTo(a-2*i,0).arcTo(i,i,0,!1,!0,a-i,i).lineTo(a-i,m-i).arcTo(i,i,0,!1,!1,a,m);return l.append("path").attr("class","railroad-line").attr("d",p.build()),{element:l.node(),dimensions:{width:a,height:o,up:m,down:o-m}}}renderRepetition(e,t,n){const i=this.renderExpression(e,t),r=this.config.arcRadius,a=2*r,o=i.dimensions.width+4*r,l=0===n,s=i.dimensions.height+a+(l?a:0),d=e.append("g").attr("class","railroad-repetition"),m=2*r,c=l?a:0;d.node().appendChild(i.element).setAttribute("transform",`translate(${m}, ${c})`);const h=c+i.dimensions.up;d.append("path").attr("class","railroad-line").attr("d",(new M).moveTo(0,h).lineTo(2*r,h).build()),d.append("path").attr("class","railroad-line").attr("d",(new M).moveTo(m+i.dimensions.width,h).lineTo(o,h).build());const p=c+i.dimensions.height+r,u=(new M).moveTo(m+i.dimensions.width,h).arcTo(r,r,0,!1,!0,m+i.dimensions.width+r,h+r).lineTo(m+i.dimensions.width+r,p).arcTo(r,r,0,!1,!0,m+i.dimensions.width,p+r).lineTo(2*r,p+r).arcTo(r,r,0,!1,!0,r,p).lineTo(r,h+r).arcTo(r,r,0,!1,!0,2*r,h);if(d.append("path").attr("class","railroad-line").attr("d",u.build()),l){const e=(new M).moveTo(0,h).arcTo(r,r,0,!1,!1,r,h-r).lineTo(r,r).arcTo(r,r,0,!1,!0,2*r,0).lineTo(o-2*r,0).arcTo(r,r,0,!1,!0,o-r,r).lineTo(o-r,h-r).arcTo(r,r,0,!1,!1,o,h);d.append("path").attr("class","railroad-line").attr("d",e.build())}return{element:d.node(),dimensions:{width:o,height:s,up:h,down:s-h}}}renderSpecial(e,t){const n=this.measureText("? "+t+" ?"),i=n.width+2*this.config.padding,r=n.height+2*this.config.padding,a=e.append("g").attr("class","railroad-special");return a.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",r),a.append("text").attr("x",i/2).attr("y",r/2).text("? "+t+" ?"),{element:a.node(),dimensions:{width:i,height:r,up:r/2,down:r/2}}}renderExpression(e,t){switch(t.type){case"terminal":return this.renderTerminal(e,t.value);case"nonterminal":return this.renderNonTerminal(e,t.name);case"sequence":return this.renderSequence(e,t.elements);case"choice":return this.renderChoice(e,t.alternatives);case"optional":return this.renderOptional(e,t.element);case"repetition":return this.renderRepetition(e,t.element,t.min);case"special":return this.renderSpecial(e,t.text);default:throw new Error(`Unknown node type: ${t.type}`)}}renderRule(e,t){const n=this.svg.append("g").attr("class","railroad-rule").attr("transform",`translate(0, ${t})`),i=e.name+" =",r=this.measureText(i).width+20,a=r+20,o=n.append("g"),l=this.renderExpression(o,e.definition),s=Math.max(20,l.dimensions.up),d=s-l.dimensions.up;return o.attr("transform",`translate(${a}, ${d})`),n.append("g").attr("class","railroad-rule-name-group").append("text").attr("class","railroad-rule-name").attr("x",0).attr("y",s).text(i),n.append("g").attr("class","railroad-start").append("circle").attr("cx",r).attr("cy",s).attr("r",this.config.markerRadius),n.append("g").attr("class","railroad-end").append("circle").attr("cx",a+l.dimensions.width+10).attr("cy",s).attr("r",this.config.markerRadius),n.append("path").attr("class","railroad-line").attr("d",(new M).moveTo(r+this.config.markerRadius,s).lineTo(a,s).build()),n.append("path").attr("class","railroad-line").attr("d",(new M).moveTo(a+l.dimensions.width,s).lineTo(a+l.dimensions.width+10-this.config.markerRadius,s).build()),{height:Math.max(40,d+l.dimensions.height+2*this.config.padding),width:a+l.dimensions.width+10+this.config.markerRadius}}renderDiagram(e){let t=this.config.padding,n=0;for(const i of e){const e=this.renderRule(i,t);t+=e.height+this.config.verticalSeparation,n=Math.max(n,e.width)}return{width:n+2*this.config.padding,height:t+this.config.padding}}},D=(0,o.__name)((e,t,n)=>{(0,r.configureSvgSize)(e,t.height,t.width,n),e.attr("viewBox",`0 0 ${t.width} ${t.height}`)},"configureRailroadSvgSize"),B={draw:(0,o.__name)((e,t,n)=>{a.log.debug("[Railroad] Rendering diagram\n"+e);try{const e=(0,i.selectSvgElement)(t);e.attr("class","railroad-diagram");const n=(0,r.getConfig)().railroad,o=n?.useMaxWidth??!0,l=f.getRules();if(a.log.debug(`[Railroad] Rendering ${l.length} rules`),0===l.length)return a.log.warn("[Railroad] No rules to render"),void D(e,{height:100,width:200},o);const s=new A(e,z()).renderDiagram(l);D(e,s,o),a.log.debug("[Railroad] Render complete")}catch(e){throw a.log.error("[Railroad] Render error:",e),e}},"draw")}}};
//# sourceMappingURL=7592.js.map