cullmann.io/themes/blowfish/assets/lib/mermaid/config-e567ef17.js.map

1 line
531 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"config-e567ef17.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/dayjs.min.js","../src/logger.ts","../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../node_modules/.pnpm/dompurify@2.4.3/node_modules/dompurify/dist/purify.es.js","../src/diagrams/common/common.ts","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/channel.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/lang.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/unit.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/constants.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/type.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/reusable.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/hex.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/hsl.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/keyword.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/rgb.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/change.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/rgba.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/adjust_channel.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/lighten.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/darken.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/adjust.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/mix.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/invert.js","../src/themes/theme-helpers.js","../src/themes/erDiagram-oldHardcodedValues.ts","../src/themes/theme-base.js","../src/themes/theme-dark.js","../src/themes/theme-default.js","../src/themes/theme-forest.js","../src/themes/theme-neutral.js","../src/themes/index.js","../src/defaultConfig.ts","../src/assignWithDepth.js","../src/config.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable no-console */\nimport dayjs from 'dayjs';\n\nexport type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LEVELS: Record<LogLevel, number> = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n\nexport const log: Record<keyof typeof LEVELS, typeof console.log> = {\n trace: (..._args: any[]) => {},\n debug: (..._args: any[]) => {},\n info: (..._args: any[]) => {},\n warn: (..._args: any[]) => {},\n error: (..._args: any[]) => {},\n fatal: (..._args: any[]) => {},\n};\n\n/**\n * Sets a log level\n *\n * @param level - The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level: keyof typeof LEVELS | number | string = 'fatal') {\n let numericLevel: number = LEVELS.fatal;\n if (typeof level === 'string') {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level as keyof typeof LEVELS];\n }\n } else if (typeof level === 'number') {\n numericLevel = level;\n }\n log.trace = () => {};\n log.debug = () => {};\n log.info = () => {};\n log.warn = () => {};\n log.error = () => {};\n log.fatal = () => {};\n\n if (numericLevel <= LEVELS.fatal) {\n log.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (numericLevel <= LEVELS.error) {\n log.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (numericLevel <= LEVELS.warn) {\n log.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (numericLevel <= LEVELS.info) {\n log.info = console.info\n ? console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (numericLevel <= LEVELS.debug) {\n log.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n if (numericLevel <= LEVELS.trace) {\n log.trace = console.debug\n ? console.debug.bind(console, format('TRACE'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('TRACE'));\n }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param level - The level for the log format\n * @returns The format with the timestamp and log level\n */\nconst format = (level: Uppercase<LogLevel>): string => {\n const time = dayjs().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we dont ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that dont fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isnt worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// dont; wed rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend weve set an alarm, if we havent already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and were done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and were done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and were done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and were done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and were done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","/*! @license DOMPurify 2.4.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.3/LICENSE */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n/* Add properties to a lookup table */\n\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n/* Shallow clone an object */\n\nfunction clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\nvar svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\n\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nvar mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\n\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nvar text = freeze(['#text']);\n\nvar html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\nvar svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nvar mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nvar DOCTYPE_NAME = seal(/^html$/i);\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.4.3';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n var SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n content = stringReplace(content, ERB_EXPR$1, ' ');\n content = stringReplace(content, TMPLIT_EXPR$1, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n value = stringReplace(value, ERB_EXPR$1, ' ');\n value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n var lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n value = trustedTypesPolicy.createHTML(value);\n break;\n\n case 'TrustedScriptURL':\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode;\n\n var shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n /* Check we can run. Otherwise fall back or ignore */\n\n\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n /* If we sanitized `dirty` in-place, return it. */\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.js.map\n","import DOMPurify from 'dompurify';\nimport { MermaidConfig } from '../../config.type';\n\n/**\n * Gets the rows of lines in a string\n *\n * @param s - The string to check the lines for\n * @returns The rows in that string\n */\nexport const getRows = (s?: string): string[] => {\n if (!s) {\n return [''];\n }\n const str = breakToPlaceholder(s).replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\n/**\n * Removes script tags from a text\n *\n * @param txt - The text to sanitize\n * @returns The safer text\n */\nexport const removeScript = (txt: string): string => {\n return DOMPurify.sanitize(txt);\n};\n\nconst sanitizeMore = (text: string, config: MermaidConfig) => {\n if (config.flowchart?.htmlLabels !== false) {\n const level = config.securityLevel;\n if (level === 'antiscript' || level === 'strict') {\n text = removeScript(text);\n } else if (level !== 'loose') {\n text = breakToPlaceholder(text);\n text = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n text = text.replace(/=/g, '&equals;');\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\n\nexport const sanitizeText = (text: string, config: MermaidConfig): string => {\n if (!text) {\n return text;\n }\n if (config.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config), {\n FORBID_TAGS: ['style'],\n }).toString();\n }\n return text;\n};\n\nexport const sanitizeTextOrArray = (\n a: string | string[] | string[][],\n config: MermaidConfig\n): string | string[] => {\n if (typeof a === 'string') {\n return sanitizeText(a, config);\n }\n // TODO: Refactor to avoid flat.\n return a.flat().map((x: string) => sanitizeText(x, config));\n};\n\nexport const lineBreakRegex = /<br\\s*\\/?>/gi;\n\n/**\n * Whether or not a text has any line breaks\n *\n * @param text - The text to test\n * @returns Whether or not the text has breaks\n */\nexport const hasBreaks = (text: string): boolean => {\n return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on <br> tags\n *\n * @param text - Text to split\n * @returns List of lines as strings\n */\nexport const splitBreaks = (text: string): string[] => {\n return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to line breaks in HTML\n *\n * @param s - HTML with placeholders\n * @returns HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s: string): string => {\n return s.replace(/#br#/g, '<br/>');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param s - HTML string\n * @returns String with placeholders\n */\nconst breakToPlaceholder = (s: string): string => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param useAbsolute - Whether to return the absolute URL or not\n * @returns The current URL\n */\nconst getUrl = (useAbsolute: boolean): string => {\n let url = '';\n if (useAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replaceAll(/\\(/g, '\\\\(');\n url = url.replaceAll(/\\)/g, '\\\\)');\n }\n\n return url;\n};\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param val - String or boolean to convert\n * @returns The result from the input\n */\nexport const evaluate = (val?: string | boolean): boolean =>\n val === false || ['false', 'null', '0'].includes(String(val).trim().toLowerCase()) ? false : true;\n\n/**\n * Makes generics in typescript syntax\n *\n * @example\n * Array of array of strings in typescript syntax\n *\n * ```js\n * // returns \"Array<Array<string>>\"\n * parseGenericTypes('Array~Array~string~~');\n * ```\n * @param text - The text to convert\n * @returns The converted string\n */\nexport const parseGenericTypes = function (text: string): string {\n let cleanedText = text;\n\n if (text.split('~').length - 1 >= 2) {\n let newCleanedText = cleanedText;\n\n // use a do...while loop instead of replaceAll to detect recursion\n // e.g. Array~Array~T~~\n do {\n cleanedText = newCleanedText;\n newCleanedText = cleanedText.replace(/~([^\\s,:;]+)~/, '<$1>');\n } while (newCleanedText != cleanedText);\n\n return parseGenericTypes(newCleanedText);\n } else {\n return cleanedText;\n }\n};\n\nexport default {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n};\n","/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n","/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n","/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n","/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n","/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n","/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n","/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n","/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n","import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n","/**\n * Values that have been hardcoded in src/diagrams/er/styles.js. These can be used by\n * theme-_._ files to maintain display styles until themes, styles, renderers are revised. --\n * 2022-09-22\n */\nexport const oldAttributeBackgroundColorOdd = '#ffffff';\nexport const oldAttributeBackgroundColorEven = '#f2f2f2';\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n\n this.primaryColor = '#fff4dd';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n\n // dark\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* cScale */\n this.cScale1 = this.cScale1 || '#0b0000';\n this.cScale2 = this.cScale2 || '#4d1037';\n this.cScale3 = this.cScale3 || '#3f5258';\n this.cScale4 = this.cScale4 || '#4f2f1b';\n this.cScale5 = this.cScale5 || '#6e0a0a';\n this.cScale6 = this.cScale6 || '#3b0048';\n this.cScale7 = this.cScale7 || '#995a01';\n this.cScale8 = this.cScale8 || '#154706';\n this.cScale9 = this.cScale9 || '#161722';\n this.cScale10 = this.cScale10 || '#00296f';\n this.cScale11 = this.cScale11 || '#01629c';\n this.cScale12 = this.cScale12 || '#010029';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || lighten(this.background, 2);\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, rgba, adjust, darken } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n if (this.labelTextColor !== 'calculated') {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.labelTextColor;\n }\n }\n\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || '#555';\n this.cScale1 = this.cScale1 || '#F4F4F4';\n this.cScale2 = this.cScale2 || '#555';\n this.cScale3 = this.cScale3 || '#BBB';\n this.cScale4 = this.cScale4 || '#777';\n this.cScale5 = this.cScale5 || '#999';\n this.cScale6 = this.cScale6 || '#DDD';\n this.cScale7 = this.cScale7 || '#FFF';\n this.cScale8 = this.cScale8 || '#DDD';\n this.cScale9 = this.cScale9 || '#BBB';\n this.cScale10 = this.cScale10 || '#999';\n this.cScale11 = this.cScale11 || '#777';\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n this['cScaleLabel0'] = this['cScaleLabel0'] || this.cScale1;\n this['cScaleLabel2'] = this['cScaleLabel2'] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n","import theme from './themes';\nimport { MermaidConfig } from './config.type';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**\n *\n * ```js\n * mermaid.initialize({ flowchart:{ htmlLabels: false } });\n * ```\n *\n * **Example 2:**\n *\n * ```html\n * <script>\n * const config = {\n * startOnLoad:true,\n * flowchart:{ useMaxWidth:true, htmlLabels:true, curve:'cardinal'},\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n * ```\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n */\nconst config: Partial<MermaidConfig> = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n *\n * @example\n *\n * ```js\n * {\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n * }\n * ```\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | --------------------------------------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 'trace','debug','info','warn','error','fatal' |\n *\n * **Notes:**\n *\n * - Trace: 0\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ |\n * | securityLevel | Level of trust for parsed diagram | string | Required | 'sandbox', 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n * functionality is enabled\n * - **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This\n * prevent any JavaScript from running in the context. This may hinder interactive functionality\n * of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc.\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behavior.\n *\n * **Notes**:\n *\n * This matters if your files are checked into source control e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the flowchart | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper, elk |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid, elk for layout using\n * elkjs\n *\n * Default value: 'dagre-wrapper'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n hideUnusedParticipants: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open Sans\", sans-serif'\n */\n actorFontFamily: '\"Open Sans\", sans-serif',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ---------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Date/time format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ------------| ------ | -------- | ------- |\n * | tickInterval | axis ticks | string | Optional | string |\n *\n * **Notes:**\n *\n * Pattern is /^([1-9][0-9]*)(minute|hour|day|week|month)$/\n *\n * Default value: undefined\n */\n tickInterval: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n /** The object containing configurations specific for timeline diagrams */\n timeline: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n disableMulticolor: false,\n },\n class: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n arrowMarkerAbsolute: false,\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n state: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------------------------------------ | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding between text in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding between text in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n gitGraph: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the Git diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n diagramPadding: 8,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0,\n },\n mainBranchName: 'main',\n mainBranchOrder: 0,\n showCommitLabel: true,\n showBranches: true,\n rotateCommitLabel: true,\n },\n\n /** The object containing configurations specific for c4 diagrams */\n c4: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------- | ------- | -------- | ------------------ |\n * | c4ShapeMargin | Margin between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n c4ShapeMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------- | ------- | -------- | ------------------ |\n * | c4ShapePadding | Padding between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n c4ShapePadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | width | Width of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 216\n */\n width: 216,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------- | ------- | -------- | ------------------ |\n * | height | Height of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 60\n */\n height: 60,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | boxMargin | Margin around boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------- | ------- | -------- | ------------------ |\n * | c4ShapeInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many shapes to place in each row.\n *\n * Default value: 4\n */\n c4ShapeInRow: 4,\n\n nextLinePaddingX: 0,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ------------------ |\n * | c4BoundaryInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many boundaries to place in each row.\n *\n * Default value: 2\n */\n c4BoundaryInRow: 2,\n\n /**\n * This sets the font size of Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n personFontSize: 14,\n /**\n * This sets the font family of Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n personFontWeight: 'normal',\n\n /**\n * This sets the font size of External Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_personFontSize: 14,\n /**\n * This sets the font family of External Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_personFontWeight: 'normal',\n\n /**\n * This sets the font size of System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n systemFontSize: 14,\n /**\n * This sets the font family of System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n systemFontWeight: 'normal',\n\n /**\n * This sets the font size of External System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_systemFontSize: 14,\n /**\n * This sets the font family of External System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_systemFontWeight: 'normal',\n\n /**\n * This sets the font size of System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_dbFontSize: 14,\n /**\n * This sets the font family of System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_dbFontSize: 14,\n /**\n * This sets the font family of External System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_queueFontSize: 14,\n /**\n * This sets the font family of System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_queueFontSize: 14,\n /**\n * This sets the font family of External System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of Boundary shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n boundaryFontSize: 14,\n /**\n * This sets the font family of Boundary shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n boundaryFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Boundary shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n boundaryFontWeight: 'normal',\n\n /**\n * This sets the font size of Message shape for the diagram\n *\n * **Notes:** Default value: 12.\n */\n messageFontSize: 12,\n /**\n * This sets the font family of Message shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n messageFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Message shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n messageFontWeight: 'normal',\n\n /**\n * This sets the font size of Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n containerFontSize: 14,\n /**\n * This sets the font family of Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n containerFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_containerFontSize: 14,\n /**\n * This sets the font family of External Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_containerFontWeight: 'normal',\n\n /**\n * This sets the font size of Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_dbFontSize: 14,\n /**\n * This sets the font family of Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_dbFontSize: 14,\n /**\n * This sets the font family of External Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_queueFontSize: 14,\n /**\n * This sets the font family of Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_queueFontSize: 14,\n /**\n * This sets the font family of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n componentFontSize: 14,\n /**\n * This sets the font family of Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n componentFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_componentFontSize: 14,\n /**\n * This sets the font family of External Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_componentFontWeight: 'normal',\n\n /**\n * This sets the font size of Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_dbFontSize: 14,\n /**\n * This sets the font family of Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_dbFontSize: 14,\n /**\n * This sets the font family of External Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_queueFontSize: 14,\n /**\n * This sets the font family of Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_queueFontSize: 14,\n /**\n * This sets the font family of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_queueFontWeight: 'normal',\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: true.\n */\n wrap: true,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n personFont: function () {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight,\n };\n },\n\n external_personFont: function () {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight,\n };\n },\n\n systemFont: function () {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight,\n };\n },\n\n external_systemFont: function () {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight,\n };\n },\n\n system_dbFont: function () {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight,\n };\n },\n\n external_system_dbFont: function () {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight,\n };\n },\n\n system_queueFont: function () {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight,\n };\n },\n\n external_system_queueFont: function () {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight,\n };\n },\n\n containerFont: function () {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight,\n };\n },\n\n external_containerFont: function () {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight,\n };\n },\n\n container_dbFont: function () {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight,\n };\n },\n\n external_container_dbFont: function () {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight,\n };\n },\n\n container_queueFont: function () {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight,\n };\n },\n\n external_container_queueFont: function () {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight,\n };\n },\n\n componentFont: function () {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight,\n };\n },\n\n external_componentFont: function () {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight,\n };\n },\n\n component_dbFont: function () {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight,\n };\n },\n\n external_component_dbFont: function () {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight,\n };\n },\n\n component_queueFont: function () {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight,\n };\n },\n\n external_component_queueFont: function () {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight,\n };\n },\n\n boundaryFont: function () {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight,\n };\n },\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n\n // ' Colors\n // ' ##################################\n person_bg_color: '#08427B',\n person_border_color: '#073B6F',\n external_person_bg_color: '#686868',\n external_person_border_color: '#8A8A8A',\n system_bg_color: '#1168BD',\n system_border_color: '#3C7FC0',\n system_db_bg_color: '#1168BD',\n system_db_border_color: '#3C7FC0',\n system_queue_bg_color: '#1168BD',\n system_queue_border_color: '#3C7FC0',\n external_system_bg_color: '#999999',\n external_system_border_color: '#8A8A8A',\n external_system_db_bg_color: '#999999',\n external_system_db_border_color: '#8A8A8A',\n external_system_queue_bg_color: '#999999',\n external_system_queue_border_color: '#8A8A8A',\n container_bg_color: '#438DD5',\n container_border_color: '#3C7FC0',\n container_db_bg_color: '#438DD5',\n container_db_border_color: '#3C7FC0',\n container_queue_bg_color: '#438DD5',\n container_queue_border_color: '#3C7FC0',\n external_container_bg_color: '#B3B3B3',\n external_container_border_color: '#A6A6A6',\n external_container_db_bg_color: '#B3B3B3',\n external_container_db_border_color: '#A6A6A6',\n external_container_queue_bg_color: '#B3B3B3',\n external_container_queue_border_color: '#A6A6A6',\n component_bg_color: '#85BBF0',\n component_border_color: '#78A8D8',\n component_db_bg_color: '#85BBF0',\n component_db_border_color: '#78A8D8',\n component_queue_bg_color: '#85BBF0',\n component_queue_border_color: '#78A8D8',\n external_component_bg_color: '#CCCCCC',\n external_component_border_color: '#BFBFBF',\n external_component_db_bg_color: '#CCCCCC',\n external_component_db_border_color: '#BFBFBF',\n external_component_queue_bg_color: '#CCCCCC',\n external_component_queue_border_color: '#BFBFBF',\n },\n mindmap: {\n useMaxWidth: true,\n padding: 10,\n maxNodeWidth: 200,\n },\n fontSize: 16,\n};\n\nif (config.class) {\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\nif (config.gitGraph) {\n config.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\n\nconst keyify = (obj: any, prefix = ''): string[] =>\n Object.keys(obj).reduce((res: string[], el): string[] => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys: string[] = keyify(config, '');\nexport default config;\n","'use strict';\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n * effectively merged with src[`k`]<p> Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```js\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nconst assignWithDepth = function (dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === undefined || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== undefined && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport default assignWithDepth;\n","import assignWithDepth from './assignWithDepth';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\nimport type { MermaidConfig } from './config.type';\n\nexport const defaultConfig: MermaidConfig = Object.freeze(config);\n\nlet siteConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize: MermaidConfig;\nlet directives: any[] = [];\nlet currentConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: any[]) => {\n // start with config being the siteConfig\n let cfg: MermaidConfig = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives: MermaidConfig = {};\n for (const d of _directives) {\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVariables\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme as keyof typeof theme].getThemeVariables(themeVariables);\n }\n }\n\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns The new siteConfig\n */\nexport const setSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n // @ts-ignore: TODO Fix ts errors\n if (conf.theme && theme[conf.theme]) {\n // @ts-ignore: TODO Fix ts errors\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitialize = (conf: MermaidConfig): void => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns The siteConfig\n */\nexport const getSiteConfig = (): MermaidConfig => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param conf - The potential currentConfig\n * @returns The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf: MermaidConfig): MermaidConfig => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n checkConfig(conf);\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns The currentConfig\n */\nexport const getConfig = (): MermaidConfig => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param options - The potential setConfig parameter\n */\nexport const sanitize = (options: any) => {\n // Checking that options are not in the list of excluded options\n ['secure', ...(siteConfig.secure ?? [])].forEach((key) => {\n if (options[key] !== undefined) {\n // DO NOT attempt to print options[key] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svg's with inline script tags\n Object.keys(options).forEach((key) => {\n if (\n typeof options[key] === 'string' &&\n (options[key].includes('<') ||\n options[key].includes('>') ||\n options[key].includes('url(data:'))\n ) {\n delete options[key];\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param directive - The directive to push in\n */\nexport const addDirective = (directive: any) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n *\n * @param config - base set of values, which currentConfig could be **reset** to.\n * Defaults to the current siteConfig (e.g returned by {@link getSiteConfig}).\n */\nexport const reset = (config = siteConfig): void => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(config, directives);\n};\n\nenum ConfigWarning {\n 'LAZY_LOAD_DEPRECATED' = 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.',\n}\ntype ConfigWarningStrings = keyof typeof ConfigWarning;\nconst issuedWarnings: { [key in ConfigWarningStrings]?: boolean } = {};\nconst issueWarning = (warning: ConfigWarningStrings) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\n\nconst checkConfig = (config: MermaidConfig) => {\n if (!config) {\n return;\n }\n // @ts-expect-error Properties were removed in v10. Warning should exist.\n if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) {\n issueWarning('LAZY_LOAD_DEPRECATED');\n }\n};\n"],"names":["t","e","module","this","n","r","i","s","u","a","o","f","h","c","d","l","$","y","M","m","v","g","D","p","_","S","w","O","T","LEVELS","log","_args","setLogLevel","level","numericLevel","format","dayjs","noop","dispatch","Dispatch","parseTypenames","typenames","types","name","typename","callback","get","set","copy","type","that","args","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","subgroups","j","group","subgroup","node","subnode","Selection","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$1","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","selection_data","value","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","onAdd","options","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","rgbn","Rgb","rgba","hsla","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","linear","exponential","hue","gamma","nogamma","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","number","degrees","identity","decompose","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","index","timing","schedules","init","self","tween","stop","tick","interrupt","active","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","value1","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","cancel","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","Transform","point","location","_typeof","obj","_setPrototypeOf","_isNativeReflectConstruct","_construct","Parent","Class","Constructor","instance","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","len","arr2","hasOwnProperty","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","_ref","apply","construct","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","transformCaseFunc","element","lcElement","object","newObject","property","lookupGetter","prop","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","getGlobal","_createTrustedTypesPolicy","trustedTypes","suffix","ATTR_NAME","policyName","scriptUrl","createDOMPurify","DOMPurify","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","body","_createIterator","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","content","_basicCustomElementTest","parentNode","childNodes","childCount","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","attributes","hookEvent","_attr","namespaceURI","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","oldNode","returnNode","nodeIterator","serializedHTML","tag","hookFunction","purify","getRows","breakToPlaceholder","removeScript","txt","sanitizeMore","config","_a","placeholderToBreak","sanitizeText","sanitizeTextOrArray","lineBreakRegex","hasBreaks","splitBreaks","getUrl","useAbsolute","url","evaluate","val","parseGenericTypes","cleanedText","newCleanedText","common","Channel","channel","Lang","upper","lang","Unit","dec","unit","Utils","DEC2HEX","TYPE","Type","Type$1","Channels","Channels$1","ChannelsReusable","Hex","length","hasAlpha","isFullLength","multiplier","bits","bitsOffset","mask","Hex$1","HSL","charCode","isAlphaPercentage","HSL$1","Keyword","Keyword$1","RGB","isRedPercentage","isGreenPercentage","isBluePercentage","RGB$1","Color$1","change","ch","change$1","rgba$1","adjustChannel","amount","amountCurrent","amountNext","adjustChannel$1","lighten","lighten$1","darken","darken$1","adjust","changes","adjust$1","mix","color1","color2","weight","r1","g1","b1","a1","r2","g2","b2","a2","weightScale","weightNormalized","alphaDelta","weight1","weight2","mix$1","invert","inverse","invert$1","mkBorder","col","darkMode","oldAttributeBackgroundColorOdd","oldAttributeBackgroundColorEven","Theme$4","overrides","keys","getThemeVariables","userOverrides","theme","Theme","Theme$3","Theme$2","Theme$1","baseThemeVariables","darkThemeVariables","defaultThemeVariables","forestThemeVariables","neutralThemeVariables","keyify","res","el","configKeys","config$1","assignWithDepth","dst","src","depth","clobber","assignWithDepth$1","defaultConfig","siteConfig","configFromInitialize","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","sumOfDirectives","sanitize","tmpConfigFromInitialize","themeVariables","checkConfig","setSiteConfig","conf","saveConfigFromInitialize","updateSiteConfig","getSiteConfig","setConfig","getConfig","addDirective","directive","reset","ConfigWarning","issuedWarnings","issueWarning","warning"],"mappings":"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"}