vanilla-breeze 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/cdn/components/accessibility-specimen.js +11 -0
  2. package/dist/cdn/components/accordion-wc.js +1 -1
  3. package/dist/cdn/components/activity-feed.js +2 -0
  4. package/dist/cdn/components/adr-wc.js +17 -17
  5. package/dist/cdn/components/ai-chat.js +28 -0
  6. package/dist/cdn/components/ai-summary.js +10 -0
  7. package/dist/cdn/components/analytics-panel.js +5 -5
  8. package/dist/cdn/components/audio-player.js +3 -3
  9. package/dist/cdn/components/audio-visualizer.js +2 -2
  10. package/dist/cdn/components/author-index.js +2 -2
  11. package/dist/cdn/components/brand-mark.js +1 -1
  12. package/dist/cdn/components/bread-crumb.js +2 -0
  13. package/dist/cdn/components/breakpoint-specimen.js +26 -0
  14. package/dist/cdn/components/burndown-chart.js +2 -0
  15. package/dist/cdn/components/calendar-wc.js +2 -2
  16. package/dist/cdn/components/capacity-plan.js +25 -0
  17. package/dist/cdn/components/card-list.js +1 -1
  18. package/dist/cdn/components/carousel-wc.js +1 -1
  19. package/dist/cdn/components/change-set.js +2 -2
  20. package/dist/cdn/components/chart-wc.js +58 -36
  21. package/dist/cdn/components/chat-input.js +1 -1
  22. package/dist/cdn/components/chat-window.js +1 -1
  23. package/dist/cdn/components/color-palette.js +9 -9
  24. package/dist/cdn/components/color-picker.js +1 -1
  25. package/dist/cdn/components/combo-box.js +1 -1
  26. package/dist/cdn/components/command-palette.js +1 -1
  27. package/dist/cdn/components/comment-box.js +60 -0
  28. package/dist/cdn/components/comment-thread.js +60 -0
  29. package/dist/cdn/components/comment-wc.js +1 -1
  30. package/dist/cdn/components/compare-surface.js +1 -1
  31. package/dist/cdn/components/component-sampler.js +4 -4
  32. package/dist/cdn/components/consent-banner.js +1 -1
  33. package/dist/cdn/components/content-lens.js +1 -1
  34. package/dist/cdn/components/content-swap.js +1 -1
  35. package/dist/cdn/components/context-menu.js +1 -1
  36. package/dist/cdn/components/data-table.js +1 -1
  37. package/dist/cdn/components/date-picker.js +1 -1
  38. package/dist/cdn/components/day-view.js +1 -1
  39. package/dist/cdn/components/diagram-wc.js +3 -0
  40. package/dist/cdn/components/drag-surface.js +1 -1
  41. package/dist/cdn/components/drop-down.js +1 -1
  42. package/dist/cdn/components/emoji-picker.js +1 -1
  43. package/dist/cdn/components/empathy-map.js +41 -43
  44. package/dist/cdn/components/flow-diagram.js +1 -1
  45. package/dist/cdn/components/font-pairer.js +81 -81
  46. package/dist/cdn/components/foot-notes.js +1 -1
  47. package/dist/cdn/components/form-field.js +1 -1
  48. package/dist/cdn/components/gantt-chart.js +1 -1
  49. package/dist/cdn/components/geo-map.js +25 -23
  50. package/dist/cdn/components/glossary-index.js +1 -1
  51. package/dist/cdn/components/glossary-wc.js +1 -1
  52. package/dist/cdn/components/gradient-builder.js +29 -29
  53. package/dist/cdn/components/heading-links.js +1 -1
  54. package/dist/cdn/components/highlight-wc.js +2 -2
  55. package/dist/cdn/components/image-gallery.js +1 -1
  56. package/dist/cdn/components/image-map.js +1 -1
  57. package/dist/cdn/components/impact-effort.js +1 -1
  58. package/dist/cdn/components/include-file.js +1 -1
  59. package/dist/cdn/components/iron-triangle.js +2 -0
  60. package/dist/cdn/components/kanban-board.js +1 -1
  61. package/dist/cdn/components/layout-specimen.js +35 -0
  62. package/dist/cdn/components/manifest.json +228 -100
  63. package/dist/cdn/components/markdown-editor.js +1 -1
  64. package/dist/cdn/components/markdown-viewer.js +12 -12
  65. package/dist/cdn/components/motion-specimen.js +12 -12
  66. package/dist/cdn/components/nav-bar.js +2 -0
  67. package/dist/cdn/components/note-wc.js +2 -2
  68. package/dist/cdn/components/notification-wc.js +4 -4
  69. package/dist/cdn/components/page-info.js +21 -21
  70. package/dist/cdn/components/page-stats.js +1 -1
  71. package/dist/cdn/components/page-toc.js +1 -1
  72. package/dist/cdn/components/page-tools.js +1 -1
  73. package/dist/cdn/components/page-tour.js +6 -6
  74. package/dist/cdn/components/pager-wc.js +2 -0
  75. package/dist/cdn/components/palette-generator.js +11 -11
  76. package/dist/cdn/components/poll-wc.js +2 -0
  77. package/dist/cdn/components/pop-over.js +2 -0
  78. package/dist/cdn/components/popularity-index.js +2 -2
  79. package/dist/cdn/components/print-page.js +1 -1
  80. package/dist/cdn/components/product-roadmap.js +3 -0
  81. package/dist/cdn/components/progress-tracker.js +2 -0
  82. package/dist/cdn/components/qr-code.js +1 -1
  83. package/dist/cdn/components/quadrant-grid.js +3 -0
  84. package/dist/cdn/components/quality-target.js +12 -0
  85. package/dist/cdn/components/reaction-bar.js +2 -0
  86. package/dist/cdn/components/reader-view.js +3 -3
  87. package/dist/cdn/components/reading-progress.js +2 -0
  88. package/dist/cdn/components/recently-visited.js +26 -2
  89. package/dist/cdn/components/requirement-card.js +122 -0
  90. package/dist/cdn/components/review-surface.js +34 -40
  91. package/dist/cdn/components/risk-register.js +25 -0
  92. package/dist/cdn/components/roadmap.js +3 -0
  93. package/dist/cdn/components/score-card.js +197 -0
  94. package/dist/cdn/components/selection-menu.js +1 -1
  95. package/dist/cdn/components/semantic-palette.js +15 -15
  96. package/dist/cdn/components/settings-panel.js +12 -12
  97. package/dist/cdn/components/share-wc.js +2 -2
  98. package/dist/cdn/components/short-cuts.js +1 -1
  99. package/dist/cdn/components/site-index.js +4 -4
  100. package/dist/cdn/components/site-map-wc.js +1 -1
  101. package/dist/cdn/components/site-map.js +1 -1
  102. package/dist/cdn/components/site-search.js +9 -9
  103. package/dist/cdn/components/slide-accept.js +1 -1
  104. package/dist/cdn/components/social-embed.js +1 -1
  105. package/dist/cdn/components/spacing-specimen.js +5 -5
  106. package/dist/cdn/components/split-surface.js +1 -1
  107. package/dist/cdn/components/star-rating.js +1 -1
  108. package/dist/cdn/components/status-wc.js +2 -0
  109. package/dist/cdn/components/stepper-wc.js +2 -0
  110. package/dist/cdn/components/story-map.js +1 -1
  111. package/dist/cdn/components/tab-set.js +1 -1
  112. package/dist/cdn/components/text-reader.js +2 -2
  113. package/dist/cdn/components/theme-catalog.js +28 -0
  114. package/dist/cdn/components/theme-export.js +20 -12
  115. package/dist/cdn/components/theme-import.js +44 -0
  116. package/dist/cdn/components/theme-picker.js +31 -28
  117. package/dist/cdn/components/time-index.js +2 -2
  118. package/dist/cdn/components/time-picker.js +1 -1
  119. package/dist/cdn/components/toast-msg.js +3 -3
  120. package/dist/cdn/components/token-specimen.js +14 -14
  121. package/dist/cdn/components/tool-tip.js +1 -1
  122. package/dist/cdn/components/topic-map.js +3 -2
  123. package/dist/cdn/components/traceability-matrix.js +3 -0
  124. package/dist/cdn/components/trust-filter.js +3 -3
  125. package/dist/cdn/components/type-specimen.js +15 -15
  126. package/dist/cdn/components/user-journey.js +63 -70
  127. package/dist/cdn/components/user-persona.js +75 -13
  128. package/dist/cdn/components/user-story.js +13 -12
  129. package/dist/cdn/components/version-switcher.js +17 -0
  130. package/dist/cdn/components/video-player.js +4 -4
  131. package/dist/cdn/components/watch-wc.js +2 -2
  132. package/dist/cdn/components/week-view.js +1 -1
  133. package/dist/cdn/components/work-item.js +29 -28
  134. package/dist/cdn/components/youtube-player.js +1 -1
  135. package/dist/cdn/packs/design-system.full.js +59 -51
  136. package/dist/cdn/packs/effects.full.js +1 -1
  137. package/dist/cdn/packs/icons.effects.js +1 -1
  138. package/dist/cdn/packs/icons.full.js +1 -1
  139. package/dist/cdn/packs/kawaii.full.css +1 -1
  140. package/dist/cdn/packs/kawaii.full.js +6 -6
  141. package/dist/cdn/packs/kawaii.theme.css +1 -1
  142. package/dist/cdn/packs/manifest.json +11 -11
  143. package/dist/cdn/packs/ui.full.css +1 -1
  144. package/dist/cdn/packs/ui.full.js +54 -51
  145. package/dist/cdn/packs/ux-planning.full.css +1 -1
  146. package/dist/cdn/packs/ux-planning.full.js +324 -248
  147. package/dist/cdn/themes/8bit.css +1 -1
  148. package/dist/cdn/themes/8bit.tokens.json +662 -0
  149. package/dist/cdn/themes/alpha1999-dark.tokens.json +693 -0
  150. package/dist/cdn/themes/alpha1999.css +1 -1
  151. package/dist/cdn/themes/alpha1999.tokens.json +869 -0
  152. package/dist/cdn/themes/anthropic.css +2 -0
  153. package/dist/cdn/themes/anthropic.tokens.json +564 -0
  154. package/dist/cdn/themes/art-deco-dark.tokens.json +407 -0
  155. package/dist/cdn/themes/art-deco.css +1 -1
  156. package/dist/cdn/themes/art-deco.tokens.json +581 -0
  157. package/dist/cdn/themes/bauhaus-dark.tokens.json +260 -0
  158. package/dist/cdn/themes/bauhaus.css +1 -1
  159. package/dist/cdn/themes/bauhaus.tokens.json +589 -0
  160. package/dist/cdn/themes/brutalist-dark.tokens.json +503 -0
  161. package/dist/cdn/themes/brutalist.tokens.json +677 -0
  162. package/dist/cdn/themes/catalog/atlassian.tokens.json +303 -0
  163. package/dist/cdn/themes/catalog/bootstrap.tokens.json +304 -0
  164. package/dist/cdn/themes/catalog/carbon.tokens.json +301 -0
  165. package/dist/cdn/themes/catalog/catppuccin-mocha.tokens.json +301 -0
  166. package/dist/cdn/themes/catalog/govuk.tokens.json +301 -0
  167. package/dist/cdn/themes/catalog/manifest.json +132 -0
  168. package/dist/cdn/themes/catalog/material.tokens.json +289 -0
  169. package/dist/cdn/themes/catalog/salesforce.tokens.json +301 -0
  170. package/dist/cdn/themes/catalog/tailwind.tokens.json +302 -0
  171. package/dist/cdn/themes/catppuccin-frappe.css +1 -1
  172. package/dist/cdn/themes/catppuccin-frappe.tokens.json +608 -0
  173. package/dist/cdn/themes/catppuccin-latte-dark.tokens.json +472 -0
  174. package/dist/cdn/themes/catppuccin-latte.css +1 -1
  175. package/dist/cdn/themes/catppuccin-latte.tokens.json +608 -0
  176. package/dist/cdn/themes/catppuccin-macchiato.css +1 -1
  177. package/dist/cdn/themes/catppuccin-macchiato.tokens.json +608 -0
  178. package/dist/cdn/themes/catppuccin-mocha.tokens.json +608 -0
  179. package/dist/cdn/themes/classic-dark.tokens.json +503 -0
  180. package/dist/cdn/themes/classic.tokens.json +640 -0
  181. package/dist/cdn/themes/claymorphism-dark.tokens.json +493 -0
  182. package/dist/cdn/themes/claymorphism.css +1 -1
  183. package/dist/cdn/themes/claymorphism.tokens.json +626 -0
  184. package/dist/cdn/themes/clinical-dark.tokens.json +472 -0
  185. package/dist/cdn/themes/clinical.tokens.json +608 -0
  186. package/dist/cdn/themes/cottagecore-dark.tokens.json +412 -0
  187. package/dist/cdn/themes/cottagecore.css +1 -1
  188. package/dist/cdn/themes/cottagecore.tokens.json +544 -0
  189. package/dist/cdn/themes/cyber.tokens.json +668 -0
  190. package/dist/cdn/themes/dawn-dark.tokens.json +472 -0
  191. package/dist/cdn/themes/dawn.css +1 -1
  192. package/dist/cdn/themes/dawn.tokens.json +608 -0
  193. package/dist/cdn/themes/dracula.tokens.json +534 -0
  194. package/dist/cdn/themes/dusk.tokens.json +533 -0
  195. package/dist/cdn/themes/editorial-dark.tokens.json +400 -0
  196. package/dist/cdn/themes/editorial.tokens.json +690 -0
  197. package/dist/cdn/themes/financial-dark.tokens.json +472 -0
  198. package/dist/cdn/themes/financial.css +1 -1
  199. package/dist/cdn/themes/financial.tokens.json +607 -0
  200. package/dist/cdn/themes/genai.tokens.json +534 -0
  201. package/dist/cdn/themes/glassmorphism-dark.tokens.json +489 -0
  202. package/dist/cdn/themes/glassmorphism.css +1 -1
  203. package/dist/cdn/themes/glassmorphism.tokens.json +632 -0
  204. package/dist/cdn/themes/government-dark.tokens.json +472 -0
  205. package/dist/cdn/themes/government.tokens.json +608 -0
  206. package/dist/cdn/themes/gruvbox-dark.tokens.json +472 -0
  207. package/dist/cdn/themes/gruvbox.tokens.json +608 -0
  208. package/dist/cdn/themes/high-noon-dark.tokens.json +397 -0
  209. package/dist/cdn/themes/high-noon.tokens.json +533 -0
  210. package/dist/cdn/themes/ibm.css +2 -0
  211. package/dist/cdn/themes/ibm.tokens.json +568 -0
  212. package/dist/cdn/themes/kawaii-dark.tokens.json +549 -0
  213. package/dist/cdn/themes/kawaii.css +1 -1
  214. package/dist/cdn/themes/kawaii.tokens.json +641 -0
  215. package/dist/cdn/themes/magna-dark.tokens.json +482 -0
  216. package/dist/cdn/themes/magna.css +1 -1
  217. package/dist/cdn/themes/magna.tokens.json +632 -0
  218. package/dist/cdn/themes/manifest.json +162 -62
  219. package/dist/cdn/themes/mcdonalds.css +2 -0
  220. package/dist/cdn/themes/mcdonalds.tokens.json +533 -0
  221. package/dist/cdn/themes/midnight.tokens.json +534 -0
  222. package/dist/cdn/themes/minimal-dark.tokens.json +294 -0
  223. package/dist/cdn/themes/minimal.tokens.json +494 -0
  224. package/dist/cdn/themes/modern-dark.tokens.json +490 -0
  225. package/dist/cdn/themes/modern.tokens.json +573 -0
  226. package/dist/cdn/themes/nes-dark.tokens.json +564 -0
  227. package/dist/cdn/themes/nes.css +1 -1
  228. package/dist/cdn/themes/nes.tokens.json +687 -0
  229. package/dist/cdn/themes/neumorphism-dark.tokens.json +471 -0
  230. package/dist/cdn/themes/neumorphism.css +1 -1
  231. package/dist/cdn/themes/neumorphism.tokens.json +589 -0
  232. package/dist/cdn/themes/nord-dark.tokens.json +484 -0
  233. package/dist/cdn/themes/nord.tokens.json +619 -0
  234. package/dist/cdn/themes/organic-dark.tokens.json +532 -0
  235. package/dist/cdn/themes/organic.tokens.json +685 -0
  236. package/dist/cdn/themes/rose-pine-dark.tokens.json +472 -0
  237. package/dist/cdn/themes/rose-pine.tokens.json +608 -0
  238. package/dist/cdn/themes/rough-dark.tokens.json +515 -0
  239. package/dist/cdn/themes/rough.css +1 -1
  240. package/dist/cdn/themes/rough.tokens.json +650 -0
  241. package/dist/cdn/themes/solarized-dark.tokens.json +397 -0
  242. package/dist/cdn/themes/solarized.tokens.json +532 -0
  243. package/dist/cdn/themes/starbucks.css +2 -0
  244. package/dist/cdn/themes/starbucks.tokens.json +593 -0
  245. package/dist/cdn/themes/startup-dark.tokens.json +522 -0
  246. package/dist/cdn/themes/startup.css +1 -1
  247. package/dist/cdn/themes/startup.tokens.json +607 -0
  248. package/dist/cdn/themes/super2026-dark.tokens.json +667 -0
  249. package/dist/cdn/themes/super2026.tokens.json +863 -0
  250. package/dist/cdn/themes/swiss-dark.tokens.json +390 -0
  251. package/dist/cdn/themes/swiss.tokens.json +750 -0
  252. package/dist/cdn/themes/terminal.css +1 -1
  253. package/dist/cdn/themes/terminal.tokens.json +689 -0
  254. package/dist/cdn/themes/tokyo-night-dark.tokens.json +472 -0
  255. package/dist/cdn/themes/tokyo-night.tokens.json +608 -0
  256. package/dist/cdn/themes/vaporwave-dark.tokens.json +413 -0
  257. package/dist/cdn/themes/vaporwave.tokens.json +549 -0
  258. package/dist/cdn/themes/win9x-dark.tokens.json +563 -0
  259. package/dist/cdn/themes/win9x.tokens.json +700 -0
  260. package/dist/cdn/vanilla-breeze-charts.css +1 -1
  261. package/dist/cdn/vanilla-breeze-charts.js +58 -36
  262. package/dist/cdn/vanilla-breeze-core.css +1 -1
  263. package/dist/cdn/vanilla-breeze-core.js +246 -51
  264. package/dist/cdn/vanilla-breeze-dev.js +1 -1
  265. package/dist/cdn/vanilla-breeze-extras.js +90 -80
  266. package/dist/cdn/vanilla-breeze.css +1 -1
  267. package/dist/cdn/vanilla-breeze.js +1395 -405
  268. package/package.json +14 -4
@@ -1,4 +1,4 @@
1
- function M(l){return String(l).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function at(l){let t=M(String(l));return t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/`(.+?)`/g,"<code>$1</code>"),t=t.replace(/\n/g,"<br>"),t}function N(l){if(!l||typeof l!="object"||Array.isArray(l))return!1;let t=Object.getPrototypeOf(l);return t===Object.prototype||t===null}function A(l){let t=l.toFixed(2);return parseFloat(t[t.length-1]==="0"?l.toFixed(1):t)}function lt(l){return t(l);function t(o){let i="";for(let s in o.options)if(Object.hasOwn(o.options,s)){let r=s,a=o.options[s];if(s==="class"){if(!Array.isArray(a))throw new Error("Wrong argument to class");a="",o.options[s].forEach(c=>{a+=(a===""?"":" ")+`svc-${c}`})}i+=(i===""?"":" ")+`${r}="${M(String(a))}"`}if(o.children.length>0){let s="";return o.children.forEach(function(r){s+=(i===""?"":" ")+t(r)}),`<${o.tagName}${e(i)}>${s}</${o.tagName}>`}else return typeof o.innerHTML<"u"?`<${o.tagName}${e(i)}>${o.innerHTML}</${o.tagName}>`:`<${o.tagName}${e(i)}></${o.tagName}>`}function e(o){return o===""?o:" "+o}}function G(l,t){return o(l,t);function e(i){return N(i)}function o(i,...s){if(!s.length)return i;let r=s.shift();if(e(i)&&e(r))for(let a in r)e(r[a])?(i[a]||Object.assign(i,{[a]:{}}),o(i[a],r[a])):Object.assign(i,{[a]:r[a]});return o(i,...s)}}function ct(l,t){let e=l,o=t.split(".");for(let i=0;i<o.length;i++)if(e=e[o[i]],!e)return!1;return!0}var dt=class{constructor(t="div",e={}){this.children=[],this.tagName=t,this.options={},Object.assign(this.options,e)}set textContent(t){this.innerHTML=M(t)}appendChild(t){this.children.push(t)}prependChild(t){this.children.unshift(t)}removeChild(t){let e=this.children.indexOf(t);e!==-1&&this.children.splice(e,1)}setAttrs(t){Object.assign(this.options,t)}setAttribute(t,e){this.options[t]=e}},y=dt;var ge=0,pt=class l{constructor(t,...e){this.config=e.reduce((o,i)=>G(o,i),{}),this.palette=t||l.defaultPalette(),N(this.palette[0])||(this.palette=this.palette.map(o=>({primary:o,secondary:o}))),this.defs=this.createDefs(),G(this.config.l,l.layoutProperties())}static layoutProperties(){return{wrap:{style:{background:"var(--color-surface, #fff)"}},top:{style:{"justify-content":"center","align-items":"center","padding-block":"0.5em 2em","padding-inline":"0.2em"}},ticks:{x:{style:{height:"10px"}},y:{style:{width:"1%"}}}}}static defaultPalette(){return[{primary:"var(--chart-series-1, #3b82f6)",secondary:"var(--chart-series-1, #3b82f6)"},{primary:"var(--chart-series-2, #ef4444)",secondary:"var(--chart-series-2, #ef4444)"},{primary:"var(--chart-series-3, #8b5cf6)",secondary:"var(--chart-series-3, #8b5cf6)"},{primary:"var(--chart-series-4, #f59e0b)",secondary:"var(--chart-series-4, #f59e0b)"},{primary:"var(--chart-series-5, #10b981)",secondary:"var(--chart-series-5, #10b981)"}]}createDefs(){let t=[];return N(this.palette[0])&&N(this.palette[0].primary)&&this.palette.forEach((e,o)=>{Object.keys(e).forEach(i=>{let{url:s,def:r}=this.generateGradient(e[i],o,i);e[i]=`url(#${s})`,t.push(r)})}),t}generateGradient(t,e,o){let i=t.orientation||"vertical",s="svc-grad-"+e+"-"+o+"-"+ge++,r=new y("linearGradient",{id:s,x1:"0%",y1:"0%",x2:i==="vertical"?"0%":"100%",y2:i==="vertical"?"100%":"0%"});return Object.keys(t).forEach(a=>{isNaN(parseInt(a))||r.appendChild(new y("stop",{offset:a+"%","stop-color":t[a]}))}),{url:s,def:r}}applyPalette(t){for(let o in t)if(Object.hasOwn(t,o)){let i=e(o,this.config);if(!i)continue;let s=t[o];i.instances||(i.instances=[]),this.palette.forEach((r,a)=>{let c={};for(let n in s)if(Object.hasOwn(s,n)){let u=s[n];Object.prototype.hasOwnProperty.call(r,u)?c[n]=r[u]:c[n]=u}i.instances[a]?Object.keys(c).forEach(n=>{typeof i.instances[a][n]>"u"&&(i.instances[a][n]=c[n])}):i.instances.push(c)})}function e(o,i){let s=o.split("."),r=i,a=!1;return s.forEach(c=>{r[c]?r=r[c]:a=!0}),a?null:r}}},et=pt;var ht=class{constructor(t){this.config=t}static get defaults(){return{l:{top:{breakpoint:{width:200,height:150}}},title:{enabled:!0,text:"Title",style:{"text-align":"center",width:"100%","font-weight":400,"font-size":"var(--chart-title-size, 1.4rem)",color:"var(--chart-title-color, #444)","text-anchor":"middle","alignment-baseline":"middle"},subtitle:{style:{"font-size":"var(--chart-subtitle-size, 0.9rem)",color:"var(--chart-subtitle-color, var(--chart-label-color, #737373))","font-weight":300}}}}}render(){let t=this.config.title,e=new y("div",{class:["title"]}),o=t.markdown!==!1&&ye(t.text),i=o?at(t.text):M(t.text);return t.subtitle&&typeof t.subtitle=="string"?e.innerHTML=`<span class="svc-title-text">${i}</span><div class="svc-subtitle">${Zt(t.subtitle,o)}</div>`:t.subtitle&&t.subtitle.text?e.innerHTML=`<span class="svc-title-text">${i}</span><div class="svc-subtitle">${Zt(t.subtitle.text,o)}</div>`:e.innerHTML=i,e}};function ye(l){return/\*\*.+?\*\*|\*.+?\*|`.+?`|\n/.test(String(l))}function Zt(l,t){return t?at(l):M(l)}var ut=ht;var be=0,ft=class{constructor({config:t,data:e}){this.config=t,this.data=e}static get defaults(){return{l:{},legend:{breakpoint:{width:300,height:275},enabled:!0,style:{margin:0,padding:0,"flex-direction":"column","flex-wrap":"wrap","justify-content":"center","background-color":"var(--color-surface, rgba(255,255,255,0.8))","z-index":2},item:{style:{display:"flex","align-items":"center",padding:"0.5em",color:"var(--chart-label-color, #616161)","white-space":"nowrap"}}}}}render(t,e,o,i){return this.createLegend(o)}createLegend(t){let e=new y("ul",{class:["legend"]}),o=be++;return(t!=="pie"?this.data.map((s,r)=>({name:s.name||"Series "+r,index:r})):Object.keys(this.data).map((s,r)=>({name:s,index:r}))).forEach(({name:s,index:r})=>{let a=this._getSeriesColor(r),c=new y("li",{class:["legend-item"]}),n=`legend-item-${r}-${o}`,u=new y("input",{type:"checkbox",id:n,"data-series":r,checked:"",style:`--_series-color: ${a}`});c.appendChild(u);let p=new y("label",{id:`legend-item-text-${r}-${o}`,for:n});p.textContent=s,c.appendChild(p),e.appendChild(c)}),e}_getSeriesColor(t){let e;return this.config.plot.instances&&this.config.plot.instances.length>0?e=this.config.plot.instances[t%this.config.plot.instances.length]:this.config.plot.node?.instances&&this.config.plot.node.instances.length>0&&(e=this.config.plot.node.instances[t%this.config.plot.node.instances.length]),e&&e.stroke?e.stroke:e&&e.fill?e.fill:"#777"}},mt=ft;var gt=class{constructor({stats:t,data:e,config:o,type:i}){this.data=e,this.config=o,this.type=i,i!=="pie"&&(this.min=t.y.min,this.max=t.y.max,this.stats=t)}static get defaults(){return{tooltip:{breakpoint:{width:275,height:275},enabled:!0,container:{style:{display:"flex"}},crosshair:{style:{"z-index":-1}},label:{style:{"background-color":"var(--chart-tooltip-bg, var(--color-surface, #fff))","box-shadow":"var(--chart-tooltip-shadow, 0 2px 4px rgba(0, 0, 0, 0.2))",color:"var(--chart-tooltip-color, var(--chart-label-color, #737373))",padding:"1em","z-index":2},title:{instances:[]}}}}}render(){return{tooltip:this.createDOM(),htmlTooltip:this._createHTMLTooltip()}}createDOM(){return this._createCartesianTooltip()}_createCartesianTooltip(){let t=new y("g",{id:"svc-tooltip-box",class:["tooltip","hide"]}),e=new y("line",{class:["tooltip-crosshair"],y1:"-10%",y2:"-10%",x1:"-10%",x2:"-10%",stroke:"var(--chart-crosshair-color, #777)"});return t.appendChild(e),t.appendChild(this._createTooltipForeignObject("svc-tooltip-label",["tooltip-label","hide"],{role:"tooltip","aria-live":"polite"})),t}_createRingTooltip(){let t=new y("g",{id:"svc-center-label-box",class:["tooltip","hide"]});return t.appendChild(this._createTooltipForeignObject("svc-center-label",["center-label"],{"aria-live":"polite"})),t}_createHTMLTooltip(){let t=new y("line",{class:["tooltip-crosshair"],y1:"-10%",y2:"-10%",x1:"-10%",x2:"-10%",stroke:"var(--chart-crosshair-color, #777)"}),e=new y("div",{id:"svc-tooltip-box",class:["tooltip","hide"],style:"position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;"}),o=new y("div",{class:["tooltip-container"],style:"position:absolute;pointer-events:auto;"}),i=new y("div",{id:"svc-tooltip-label",class:["tooltip-label","hide"],role:"tooltip","aria-live":"polite"});return o.appendChild(i),e.appendChild(o),{crosshair:t,tooltipBox:e}}_createTooltipForeignObject(t,e,o){let i=new y("foreignObject",{class:["tooltip-fo"],width:"100%",height:"100%"}),s=new y("body",{xmlns:"http://www.w3.org/1999/xhtml",style:"width:100%;height:100%;"});i.appendChild(s),s.appendChild(new y("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}));let r=new y("div",{class:["tooltip-container"]});s.appendChild(r);let a=new y("div",{id:t,class:e,...o});return r.appendChild(a),i}},j=gt;var xe=`
1
+ function $(a){return String(a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function bt(a){let t=$(String(a));return t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/`(.+?)`/g,"<code>$1</code>"),t=t.replace(/\n/g,"<br>"),t}function R(a){if(!a||typeof a!="object"||Array.isArray(a))return!1;let t=Object.getPrototypeOf(a);return t===Object.prototype||t===null}function A(a){let t=a.toFixed(2);return parseFloat(t[t.length-1]==="0"?a.toFixed(1):t)}function xt(a){return t(a);function t(i){let o="";for(let s in i.options)if(Object.hasOwn(i.options,s)){let n=s,l=i.options[s];if(s==="class"){if(!Array.isArray(l))throw new Error("Wrong argument to class");l="",i.options[s].forEach(c=>{l+=(l===""?"":" ")+`svc-${c}`})}o+=(o===""?"":" ")+`${n}="${$(String(l))}"`}if(i.children.length>0){let s="";return i.children.forEach(function(n){s+=(o===""?"":" ")+t(n)}),`<${i.tagName}${e(o)}>${s}</${i.tagName}>`}else return typeof i.innerHTML<"u"?`<${i.tagName}${e(o)}>${i.innerHTML}</${i.tagName}>`:`<${i.tagName}${e(o)}></${i.tagName}>`}function e(i){return i===""?i:" "+i}}function tt(a,t){return i(a,t);function e(o){return R(o)}function i(o,...s){if(!s.length)return o;let n=s.shift();if(e(o)&&e(n))for(let l in n)e(n[l])?(o[l]||Object.assign(o,{[l]:{}}),i(o[l],n[l])):Object.assign(o,{[l]:n[l]});return i(o,...s)}}function vt(a,t){let e=a,i=t.split(".");for(let o=0;o<i.length;o++)if(e=e[i[o]],!e)return!1;return!0}var y=class{constructor(t="div",e={}){this.children=[],this.tagName=t,this.options={},Object.assign(this.options,e)}set textContent(t){this.innerHTML=$(t)}appendChild(t){this.children.push(t)}prependChild(t){this.children.unshift(t)}removeChild(t){let e=this.children.indexOf(t);e!==-1&&this.children.splice(e,1)}setAttrs(t){Object.assign(this.options,t)}setAttribute(t,e){this.options[t]=e}};var Xt=0,W=class a{constructor(t,...e){this.config=e.reduce((i,o)=>tt(i,o),{}),this.palette=t||a.defaultPalette(),R(this.palette[0])||(this.palette=this.palette.map(i=>({primary:i,secondary:i}))),this.defs=this.createDefs(),tt(this.config.l,a.layoutProperties())}static layoutProperties(){return{wrap:{style:{background:"var(--color-surface, #fff)"}},top:{style:{"justify-content":"center","align-items":"center","padding-block":"0.5em 2em","padding-inline":"0.2em"}},ticks:{x:{style:{height:"10px"}},y:{style:{width:"1%"}}}}}static defaultPalette(){return[{primary:"var(--chart-series-1, #3b82f6)",secondary:"var(--chart-series-1, #3b82f6)"},{primary:"var(--chart-series-2, #ef4444)",secondary:"var(--chart-series-2, #ef4444)"},{primary:"var(--chart-series-3, #8b5cf6)",secondary:"var(--chart-series-3, #8b5cf6)"},{primary:"var(--chart-series-4, #f59e0b)",secondary:"var(--chart-series-4, #f59e0b)"},{primary:"var(--chart-series-5, #10b981)",secondary:"var(--chart-series-5, #10b981)"}]}createDefs(){let t=[];return R(this.palette[0])&&R(this.palette[0].primary)&&this.palette.forEach((e,i)=>{Object.keys(e).forEach(o=>{let{url:s,def:n}=this.generateGradient(e[o],i,o);e[o]=`url(#${s})`,t.push(n)})}),t}generateGradient(t,e,i){let o=t.orientation||"vertical",s="svc-grad-"+e+"-"+i+"-"+Xt++,n=new y("linearGradient",{id:s,x1:"0%",y1:"0%",x2:o==="vertical"?"0%":"100%",y2:o==="vertical"?"100%":"0%"});return Object.keys(t).forEach(l=>{isNaN(parseInt(l))||n.appendChild(new y("stop",{offset:l+"%","stop-color":t[l]}))}),{url:s,def:n}}applyPalette(t){for(let i in t)if(Object.hasOwn(t,i)){let o=e(i,this.config);if(!o)continue;let s=t[i];o.instances||(o.instances=[]),this.palette.forEach((n,l)=>{let c={};for(let r in s)if(Object.hasOwn(s,r)){let u=s[r];Object.prototype.hasOwnProperty.call(n,u)?c[r]=n[u]:c[r]=u}o.instances[l]?Object.keys(c).forEach(r=>{typeof o.instances[l][r]>"u"&&(o.instances[l][r]=c[r])}):o.instances.push(c)})}function e(i,o){let s=i.split("."),n=o,l=!1;return s.forEach(c=>{n[c]?n=n[c]:l=!0}),l?null:n}}};var et=class{constructor(t){this.config=t}static get defaults(){return{l:{top:{breakpoint:{width:200,height:150}}},title:{enabled:!0,text:"Title",style:{"text-align":"center",width:"100%","font-weight":400,"font-size":"var(--chart-title-size, 1.4rem)",color:"var(--chart-title-color, #444)","text-anchor":"middle","alignment-baseline":"middle"},subtitle:{style:{"font-size":"var(--chart-subtitle-size, 0.9rem)",color:"var(--chart-subtitle-color, var(--chart-label-color, #737373))","font-weight":300}}}}}render(){let t=this.config.title,e=new y("div",{class:["title"]}),i=t.markdown!==!1&&Kt(t.text),o=i?bt(t.text):$(t.text);return t.subtitle&&typeof t.subtitle=="string"?e.innerHTML=`<span class="svc-title-text">${o}</span><div class="svc-subtitle">${Pt(t.subtitle,i)}</div>`:t.subtitle&&t.subtitle.text?e.innerHTML=`<span class="svc-title-text">${o}</span><div class="svc-subtitle">${Pt(t.subtitle.text,i)}</div>`:e.innerHTML=o,e}};function Kt(a){return/\*\*.+?\*\*|\*.+?\*|`.+?`|\n/.test(String(a))}function Pt(a,t){return t?bt(a):$(a)}var Zt=0,it=class{constructor({config:t,data:e}){this.config=t,this.data=e}static get defaults(){return{l:{},legend:{breakpoint:{width:300,height:275},enabled:!0,style:{margin:0,padding:0,"flex-direction":"column","flex-wrap":"wrap","justify-content":"center","background-color":"var(--color-surface, rgba(255,255,255,0.8))","z-index":2},item:{style:{display:"flex","align-items":"center",padding:"0.5em",color:"var(--chart-label-color, #616161)","white-space":"nowrap"}}}}}render(t,e,i,o){return this.createLegend(i)}createLegend(t){let e=new y("ul",{class:["legend"]}),i=Zt++;return(t!=="pie"?this.data.map((s,n)=>({name:s.name||"Series "+n,index:n})):Object.keys(this.data).map((s,n)=>({name:s,index:n}))).forEach(({name:s,index:n})=>{let l=this._getSeriesColor(n),c=new y("li",{class:["legend-item"]}),r=`legend-item-${n}-${i}`,u=new y("input",{type:"checkbox",id:r,"data-series":n,checked:"",style:`--_series-color: ${l}`});c.appendChild(u);let h=new y("label",{id:`legend-item-text-${n}-${i}`,for:r});h.textContent=s,c.appendChild(h),e.appendChild(c)}),e}_getSeriesColor(t){let e;return this.config.plot.instances&&this.config.plot.instances.length>0?e=this.config.plot.instances[t%this.config.plot.instances.length]:this.config.plot.node?.instances&&this.config.plot.node.instances.length>0&&(e=this.config.plot.node.instances[t%this.config.plot.node.instances.length]),e&&e.stroke?e.stroke:e&&e.fill?e.fill:"#777"}};var N=class{constructor({stats:t,data:e,config:i,type:o}){this.data=e,this.config=i,this.type=o,o!=="pie"&&(this.min=t.y.min,this.max=t.y.max,this.stats=t)}static get defaults(){return{tooltip:{breakpoint:{width:275,height:275},enabled:!0,container:{style:{display:"flex"}},crosshair:{style:{"z-index":-1}},label:{style:{"background-color":"var(--chart-tooltip-bg, var(--color-surface, #fff))","box-shadow":"var(--chart-tooltip-shadow, 0 2px 4px rgba(0, 0, 0, 0.2))",color:"var(--chart-tooltip-color, var(--chart-label-color, #737373))",padding:"1em","z-index":2},title:{instances:[]}}}}}render(){return{tooltip:this.createDOM(),htmlTooltip:this._createHTMLTooltip()}}createDOM(){return this._createCartesianTooltip()}_createCartesianTooltip(){let t=new y("g",{id:"svc-tooltip-box",class:["tooltip","hide"]}),e=new y("line",{class:["tooltip-crosshair"],y1:"-10%",y2:"-10%",x1:"-10%",x2:"-10%",stroke:"var(--chart-crosshair-color, #777)"});return t.appendChild(e),t.appendChild(this._createTooltipForeignObject("svc-tooltip-label",["tooltip-label","hide"],{role:"tooltip","aria-live":"polite"})),t}_createRingTooltip(){let t=new y("g",{id:"svc-center-label-box",class:["tooltip","hide"]});return t.appendChild(this._createTooltipForeignObject("svc-center-label",["center-label"],{"aria-live":"polite"})),t}_createHTMLTooltip(){let t=new y("line",{class:["tooltip-crosshair"],y1:"-10%",y2:"-10%",x1:"-10%",x2:"-10%",stroke:"var(--chart-crosshair-color, #777)"}),e=new y("div",{id:"svc-tooltip-box",class:["tooltip","hide"],style:"position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;"}),i=new y("div",{class:["tooltip-container"],style:"position:absolute;pointer-events:auto;"}),o=new y("div",{id:"svc-tooltip-label",class:["tooltip-label","hide"],role:"tooltip","aria-live":"polite"});return i.appendChild(o),e.appendChild(i),{crosshair:t,tooltipBox:e}}_createTooltipForeignObject(t,e,i){let o=new y("foreignObject",{class:["tooltip-fo"],width:"100%",height:"100%"}),s=new y("body",{xmlns:"http://www.w3.org/1999/xhtml",style:"width:100%;height:100%;"});o.appendChild(s),s.appendChild(new y("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}));let n=new y("div",{class:["tooltip-container"]});s.appendChild(n);let l=new y("div",{id:t,class:e,...i});return n.appendChild(l),o}};var Nt=`
2
2
  /* \u2500\u2500 Custom chart elements \u2500\u2500 */
3
3
  chart-title,
4
4
  chart-body,
@@ -287,18 +287,18 @@ path.svc-focus {
287
287
  .svc-title, .svc-text-label * { font-size: 0.9rem; }
288
288
  .svc-tooltip-fo { font-size: 0.9rem; }
289
289
  }
290
- `,Wt=xe;var yt=class{constructor(){this.sheet=Wt,this.rules=[]}addRule(t,e){let o="";Object.keys(e).forEach(i=>{o+=`${i}: ${e[i]};`}),this.sheet+=`.svc-${t}{${o}}`}addRaw(t){this.sheet+=t}convertconfig(t,e,o){let i={width:{},height:{}},s=c(t),r=a(i);return s+r;function a(n){let u="";return Object.keys(n).forEach(p=>{Object.keys(n[p]).forEach(d=>{let h=n[p][d],g=`@media(max-${p}: ${d}px){`,f=h.map(m=>`.svc-${m}.svc-${m}`);g+=f.join(","),g+="{ display: none; }",g+="}",u+=g})}),u}function c(n,u="",p="",d=[]){for(let h in n)if(h==="style"){let g="";for(let f in n[h])Object.hasOwn(n[h],f)&&(g+=`${f}:${n[h][f]};`);if(d.length===0)p+=`figure[data-chart-id] {${g}}`;else{let f=d.reduce((m,b)=>m+=(m===""?"":"-")+b,"");p+=`.svc-${f}{${g}}`}}else if(h==="instances"){let g=n[h];for(let f=0;f<e;f++){let m=g[f];if(!m)continue;let b="";for(let x in m)Object.hasOwn(m,x)&&(b+=`${x}:${m[x]};`);if(b!==""){let x=d.reduce((w,C)=>w+=(w===""?"":"-")+C,""),v=o?`[data-chart-id="${o}"] `:"";p+=`${v}.svc-${x}-${f} {${b}}`}}}else if(h==="breakpoint"){let g=d.reduce((f,m)=>f+=(f===""?"":"-")+m,"");i.width[n.breakpoint.width]?i.width[n.breakpoint.width].push(g):i.width[n.breakpoint.width]=[g],i.height[n.breakpoint.height]?i.height[n.breakpoint.height].push(g):i.height[n.breakpoint.height]=[g]}else typeof n[h]=="object"&&(d.push(h),p=c(n[h],h,p,d),d.pop());return p}}},Qt=yt;function ve({interactive:l=!1}={}){let t=new y("svg");t.setAttrs({width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",role:l?"graphics-document":"img","aria-roledescription":"chart"});let e=new y("foreignObject",{width:"100%",height:"100%"});t.appendChild(e);let o=new y("body",{xmlns:"http://www.w3.org/1999/xhtml",style:"width:100%;height:100%;"});e.appendChild(o),o.appendChild(new y("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}));let i=new y("figure");o.appendChild(i);let s=new y("chart-title");i.appendChild(s);let r=new y("chart-body");i.appendChild(r);let a=new y("chart-canvas");r.appendChild(a);let c=new y("chart-label",{position:"y"});a.appendChild(c);let n=new y("chart-axis",{position:"y"});a.appendChild(n);let u=new y("svg",{width:"100%",xmlns:"http://www.w3.org/2000/svg",class:["ticks-y"]});a.appendChild(u);let p=new y("chart-plot");a.appendChild(p);let d=new y("svg");d.setAttrs({width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",class:["plotarea"]}),p.appendChild(d);let h=new y("div"),g=new y("div"),f=new y("div"),m=new y("svg",{width:"100%",xmlns:"http://www.w3.org/2000/svg",class:["ticks-x"]});a.appendChild(m);let b=new y("chart-axis",{position:"x"});a.appendChild(b);let x=new y("chart-label",{position:"x"});a.appendChild(x),d.appendChild(new y("rect",{x:"0%",y:"0%",width:"100%",height:"100%",class:["plotarea"]}));let v=new y("text",{x:"50%",y:"50%",class:["loading"]});return v.innerHTML="Loading Chart...",d.appendChild(v),{root:t,wrap:i,top:s,body:r,plotarea:p,layoutChart:d,layoutXAxis:b,layoutYTicks:u,layoutXTicks:m,layoutYAxis:n,layoutOriginRight:f,layoutOriginCenter:g,layoutXAxisLabel:x,layoutYAxisLabel:c,layoutOriginLeft:h}}var Jt=ve;var we=new Set(["onInteraction","onResize","onClick"]),bt=class{#t=new Map;register(t,e){this.#t.has(t)||this.#t.set(t,new Set),this.#t.get(t).add(e)}unregister(t,e){let o=this.#t.get(t);o&&o.delete(e)}run(t,e){if(we.has(t)&&typeof document>"u")return;let o=this.#t.get(t);if(o)for(let i of o)i(e)}registerPlugin(t){if(!(!t||!t.hooks))for(let[e,o]of Object.entries(t.hooks))this.register(e,o)}destroy(){this.#t.clear()}},te=bt;function xt(l){return JSON.stringify(l).replace(/<\//g,"<\\/").replace(/]]>/g,"]]\\>").replace(/<!--/g,"<\\!--").replace(/<\?/g,"<\\?")}var vt=class{hooks=new te;toFile(t={}){let e=c(t),o=`<?xml version="1.0" standalone="no"?>
291
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">`,i=this.structure,{body:s}=i,r;e.includeScripts&&(r=this._createScripts(this.structure),s.appendChild(r));let a=this.compile(i.root);return e.includeScripts&&r&&s.removeChild(r),e.prerendered&&(a=a.slice(0,a.indexOf("svg")+3)+' data-prerendered=""'+a.slice(a.indexOf("svg")+3)),o+a;function c(n){if(typeof n=="object"&&n!==null){let u=!!n.prerendered,p=!u;return{prerendered:u,includeScripts:n.includeScripts??p}}return{prerendered:!!n,includeScripts:!0}}}toString(){return this.compile(this.structure.root)}toHTML({prerendered:t}={}){return this.compileHTML(this.structure,{prerendered:t})}async toBlob(t="image/svg+xml",{width:e=800,height:o=600}={}){if(typeof Blob>"u")throw new Error("SVC: toBlob() requires a browser environment.");let i=this.toString();if(t==="image/svg+xml")return new Blob([i],{type:"image/svg+xml"});if(t==="image/png"){if(typeof document>"u")throw new Error("SVC: PNG export requires a browser environment with Canvas.");return this._svgToPngBlob(i,e,o)}throw new Error(`SVC: Unsupported export type "${t}".`)}async toDataURL(t="image/svg+xml",e){if(typeof FileReader>"u")throw new Error("SVC: toDataURL() requires a browser environment with FileReader.");let o=await this.toBlob(t,e);return new Promise((i,s)=>{let r=new FileReader;r.onload=()=>i(r.result),r.onerror=s,r.readAsDataURL(o)})}async download(t="chart.svg",e){if(typeof document>"u")throw new Error("SVC: download() requires a browser environment.");let i=t.split(".").pop().toLowerCase()==="png"?"image/png":"image/svg+xml",s=await this.toBlob(i,e),r=URL.createObjectURL(s),a=document.createElement("a");a.href=r,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r)}_svgToPngBlob(t,e,o){return new Promise((i,s)=>{let r=document.createElement("canvas");r.width=e,r.height=o;let a=r.getContext("2d"),c=new Image,n=new Blob([t],{type:"image/svg+xml"}),u=URL.createObjectURL(n);c.onload=()=>{a.drawImage(c,0,0,e,o),URL.revokeObjectURL(u),r.toBlob(p=>{p?i(p):s(new Error("SVC: PNG export failed."))},"image/png")},c.onerror=()=>{URL.revokeObjectURL(u),s(new Error("SVC: Failed to load SVG for PNG export."))},c.src=u})}mount(t){if(!t||typeof document>"u")return null;t.innerHTML=this.toHTML(),this._state=this.hydrate(t),this._container=t;let e=t.host||t;return this._observeResize(e),this._state}createElement(){if(typeof document>"u")return null;let t=document.createElement("div");return this.mount(t),t}hydrate(t){if(!t)return null;let e={functions:[]};return this.interactions.forEach(o=>{e.functions[o.name]=o(e,t,this)}),this._state=e,this._container=t,e}update({data:t,config:e}={}){if(!this._container)return null;let o=this._container;return this._state&&this._state._tooltipCleanup&&this._state._tooltipCleanup(),this._state=null,t!=null&&(this.data=t),e!=null&&(G(this.config,e),this.config=this.applyConfigToDefaults(this.config).config),this.interactions=[],this.render(),o.innerHTML=this.toString(),this._state=this.hydrate(o),this._container=o,this._state}destroy(){this.hooks.run("beforeDestroy",{container:this._container,state:this._state}),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null),this._state&&this._state._tooltipCleanup&&this._state._tooltipCleanup(),this._container&&(this._container.innerHTML=""),this._state=null,this._container=null,this.hooks.destroy()}_observeResize(t){typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(e=>{let o=e[0];o&&this.hooks.run("onResize",{width:o.contentRect.width,height:o.contentRect.height,container:t})}),this._resizeObserver.observe(t))}_createScripts(t){let e=new y("script",{class:["chart-script"]}),o="",i=[];return this.interactions.forEach(s=>{o+=s.toString()+`
292
- `,i.push(s.name)}),o+=`
290
+ `;var ct=class{constructor(){this.sheet=Nt,this.rules=[]}addRule(t,e){let i="";Object.keys(e).forEach(o=>{i+=`${o}: ${e[o]};`}),this.sheet+=`.svc-${t}{${i}}`}addRaw(t){this.sheet+=t}convertconfig(t,e,i){let o={width:{},height:{}},s=c(t),n=l(o);return s+n;function l(r){let u="";return Object.keys(r).forEach(h=>{Object.keys(r[h]).forEach(d=>{let p=r[h][d],g=`@media(max-${h}: ${d}px){`,f=p.map(m=>`.svc-${m}.svc-${m}`);g+=f.join(","),g+="{ display: none; }",g+="}",u+=g})}),u}function c(r,u="",h="",d=[]){for(let p in r)if(p==="style"){let g="";for(let f in r[p])Object.hasOwn(r[p],f)&&(g+=`${f}:${r[p][f]};`);if(d.length===0)h+=`figure[data-chart-id] {${g}}`;else{let f=d.reduce((m,b)=>m+=(m===""?"":"-")+b,"");h+=`.svc-${f}{${g}}`}}else if(p==="instances"){let g=r[p];for(let f=0;f<e;f++){let m=g[f];if(!m)continue;let b="";for(let v in m)Object.hasOwn(m,v)&&(b+=`${v}:${m[v]};`);if(b!==""){let v=d.reduce((w,C)=>w+=(w===""?"":"-")+C,""),x=i?`[data-chart-id="${i}"] `:"";h+=`${x}.svc-${v}-${f} {${b}}`}}}else if(p==="breakpoint"){let g=d.reduce((f,m)=>f+=(f===""?"":"-")+m,"");o.width[r.breakpoint.width]?o.width[r.breakpoint.width].push(g):o.width[r.breakpoint.width]=[g],o.height[r.breakpoint.height]?o.height[r.breakpoint.height].push(g):o.height[r.breakpoint.height]=[g]}else typeof r[p]=="object"&&(d.push(p),h=c(r[p],p,h,d),d.pop());return h}}};function It({interactive:a=!1}={}){let t=new y("svg");t.setAttrs({width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",role:a?"graphics-document":"img","aria-roledescription":"chart"});let e=new y("foreignObject",{width:"100%",height:"100%"});t.appendChild(e);let i=new y("body",{xmlns:"http://www.w3.org/1999/xhtml",style:"width:100%;height:100%;"});e.appendChild(i),i.appendChild(new y("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}));let o=new y("figure");i.appendChild(o);let s=new y("chart-title");o.appendChild(s);let n=new y("chart-body");o.appendChild(n);let l=new y("chart-canvas");n.appendChild(l);let c=new y("chart-label",{position:"y"});l.appendChild(c);let r=new y("chart-axis",{position:"y"});l.appendChild(r);let u=new y("svg",{width:"100%",xmlns:"http://www.w3.org/2000/svg",class:["ticks-y"]});l.appendChild(u);let h=new y("chart-plot");l.appendChild(h);let d=new y("svg");d.setAttrs({width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",class:["plotarea"]}),h.appendChild(d);let p=new y("div"),g=new y("div"),f=new y("div"),m=new y("svg",{width:"100%",xmlns:"http://www.w3.org/2000/svg",class:["ticks-x"]});l.appendChild(m);let b=new y("chart-axis",{position:"x"});l.appendChild(b);let v=new y("chart-label",{position:"x"});l.appendChild(v),d.appendChild(new y("rect",{x:"0%",y:"0%",width:"100%",height:"100%",class:["plotarea"]}));let x=new y("text",{x:"50%",y:"50%",class:["loading"]});return x.innerHTML="Loading Chart...",d.appendChild(x),{root:t,wrap:o,top:s,body:n,plotarea:h,layoutChart:d,layoutXAxis:b,layoutYTicks:u,layoutXTicks:m,layoutYAxis:r,layoutOriginRight:f,layoutOriginCenter:g,layoutXAxisLabel:v,layoutYAxisLabel:c,layoutOriginLeft:p}}var Wt=new Set(["onInteraction","onResize","onClick"]),dt=class{#t=new Map;register(t,e){this.#t.has(t)||this.#t.set(t,new Set),this.#t.get(t).add(e)}unregister(t,e){let i=this.#t.get(t);i&&i.delete(e)}run(t,e){if(Wt.has(t)&&typeof document>"u")return;let i=this.#t.get(t);if(i)for(let o of i)o(e)}registerPlugin(t){if(!(!t||!t.hooks))for(let[e,i]of Object.entries(t.hooks))this.register(e,i)}destroy(){this.#t.clear()}};function wt(a){return JSON.stringify(a).replace(/<\//g,"<\\/").replace(/]]>/g,"]]\\>").replace(/<!--/g,"<\\!--").replace(/<\?/g,"<\\?")}var pt=class{hooks=new dt;structure=null;constructor(t){}compile(t,e){return""}compileHTML(t,e){return""}applyConfigToDefaults(t){return t}render(){}toFile(t={}){let e=c(t),i=`<?xml version="1.0" standalone="no"?>
291
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">`,o=this.structure;if(!o)return i;let{body:s}=o,n;e.includeScripts&&(n=this._createScripts(this.structure),s.appendChild(n));let l=this.compile(o.root);return e.includeScripts&&n&&s.removeChild(n),e.prerendered&&(l=l.slice(0,l.indexOf("svg")+3)+' data-prerendered=""'+l.slice(l.indexOf("svg")+3)),i+l;function c(r){if(typeof r=="object"&&r!==null){let u=!!r.prerendered,h=!u;return{prerendered:u,includeScripts:r.includeScripts??h}}return{prerendered:!!r,includeScripts:!0}}}toString(){return this.structure?this.compile(this.structure.root):""}toHTML({prerendered:t}={}){return this.compileHTML(this.structure,{prerendered:t})}async toBlob(t="image/svg+xml",{width:e=800,height:i=600}={}){if(typeof Blob>"u")throw new Error("SVC: toBlob() requires a browser environment.");let o=this.toString();if(t==="image/svg+xml")return new Blob([o],{type:"image/svg+xml"});if(t==="image/png"){if(typeof document>"u")throw new Error("SVC: PNG export requires a browser environment with Canvas.");return this._svgToPngBlob(o,e,i)}throw new Error(`SVC: Unsupported export type "${t}".`)}async toDataURL(t="image/svg+xml",e){if(typeof FileReader>"u")throw new Error("SVC: toDataURL() requires a browser environment with FileReader.");let i=await this.toBlob(t,e);return new Promise((o,s)=>{let n=new FileReader;n.onload=()=>o(n.result),n.onerror=s,n.readAsDataURL(i)})}async download(t="chart.svg",e){if(typeof document>"u")throw new Error("SVC: download() requires a browser environment.");let o=t.split(".").pop()?.toLowerCase()==="png"?"image/png":"image/svg+xml",s=await this.toBlob(o,e),n=URL.createObjectURL(s),l=document.createElement("a");l.href=n,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(n)}_svgToPngBlob(t,e,i){return new Promise((o,s)=>{let n=document.createElement("canvas");n.width=e,n.height=i;let l=n.getContext("2d"),c=new Image,r=new Blob([t],{type:"image/svg+xml"}),u=URL.createObjectURL(r);c.onload=()=>{if(!l){s(new Error("SVC: 2D canvas context unavailable."));return}l.drawImage(c,0,0,e,i),URL.revokeObjectURL(u),n.toBlob(h=>{h?o(h):s(new Error("SVC: PNG export failed."))},"image/png")},c.onerror=()=>{URL.revokeObjectURL(u),s(new Error("SVC: Failed to load SVG for PNG export."))},c.src=u})}mount(t){if(!t||typeof document>"u")return null;t.innerHTML=this.toHTML(),this._state=this.hydrate(t),this._container=t;let e=t.host||t;return this._observeResize(e),this._state}createElement(){if(typeof document>"u")return null;let t=document.createElement("div");return this.mount(t),t}hydrate(t){if(!t)return null;let e={functions:{}};return(this.interactions||[]).forEach(o=>{e.functions[o.name]=o(e,t,this)}),this._state=e,this._container=t,e}update({data:t,config:e}={}){if(!this._container)return null;let i=this._container;return this._state&&this._state._tooltipCleanup&&this._state._tooltipCleanup(),this._state=null,t!=null&&(this.data=t),e!=null&&(tt(this.config,e),this.config=this.applyConfigToDefaults(this.config).config),this.interactions=[],this.render(),i.innerHTML=this.toString(),this._state=this.hydrate(i),this._container=i,this._state}destroy(){this.hooks.run("beforeDestroy",{container:this._container,state:this._state}),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null),this._state&&this._state._tooltipCleanup&&this._state._tooltipCleanup(),this._container&&(this._container.innerHTML=""),this._state=null,this._container=null,this.hooks.destroy()}_observeResize(t){typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(e=>{let i=e[0];i&&this.hooks.run("onResize",{width:i.contentRect.width,height:i.contentRect.height,container:t})}),this._resizeObserver.observe(t))}_createScripts(t){let e=new y("script",{class:["chart-script"]}),i="",o=[];(this.interactions||[]).forEach(l=>{i+=l.toString()+`
292
+ `,o.push(l.name)});let n=this;return i+=`
293
293
  var chart = {
294
- stats: ${xt(this.stats||{})},
295
- data: ${xt(this.data)},
296
- config: ${xt(this.config)}
294
+ stats: ${wt(n.stats||{})},
295
+ data: ${wt(n.data)},
296
+ config: ${wt(n.config)}
297
297
  };
298
298
  var svgRoot = document.currentScript.closest('svg');
299
- var state = { functions: []};`,i.forEach(s=>{o+=`state.functions['${s}'] = ${s}(state, svgRoot, chart);`}),e.innerHTML=`//<![CDATA[
300
- `+o+`
301
- //]]>`,e}},ee=vt;function wt(l,t,e){var o=e.config&&e.config.tooltip&&e.config.tooltip.hideDelay||2e3,i=t.querySelector("chart-plot"),s=t.querySelector("#svc-tooltip-box"),r=t.querySelector("#svc-tooltip-label"),a=t.querySelector(".svc-tooltip-crosshair"),c=[],n=null,u=null;function p(){u=null}typeof window<"u"&&(window.addEventListener("scroll",p,{passive:!0}),window.addEventListener("resize",p,{passive:!0}));var d=null;typeof ResizeObserver<"u"&&(d=new ResizeObserver(p),d.observe(i));function h(){r.setAttribute("class","svc-tooltip-label svc-hide"),s.setAttribute("class","svc-tooltip svc-hide"),a.setAttribute("x1","-10%"),a.setAttribute("x2","-10%"),a.setAttribute("y1","-10%"),a.setAttribute("y2","-10%");for(var m=0;m<c.length;m++)c[m].classList.remove("svc-plot-node-active-"+m);c=[]}function g(){n&&clearTimeout(n),n=setTimeout(h,o)}i.addEventListener("mousedown",f),i.addEventListener("mousemove",f),l._tooltipCleanup=function(){n&&clearTimeout(n),i.removeEventListener("mousedown",f),i.removeEventListener("mousemove",f),typeof window<"u"&&(window.removeEventListener("scroll",p),window.removeEventListener("resize",p)),d&&(d.disconnect(),d=null)};function f(m){g();var b=l.functions.tooltipLocation(m,l,t,e);if(b){for(var x=t.querySelectorAll('.svc-plot-node[node="'+b.index+'"]'),v=0;v<c.length;v++)c[v].classList.remove("svc-plot-node-active-"+v);c=[];for(var w=0;w<x.length;w++)x[w].classList.add("svc-plot-node-active-"+w),c.push(x[w]);a.setAttribute("x1",b.crosshair.x1+"%"),a.setAttribute("x2",b.crosshair.x2+"%"),a.setAttribute("y1",b.crosshair.y1+"%"),a.setAttribute("y2",b.crosshair.y2+"%"),r.innerHTML=b.tooltip.text,r.setAttribute("class","svc-tooltip-label"),s.setAttribute("class","svc-tooltip"),u||(u=i.getBoundingClientRect());var C=u,k=r.getBoundingClientRect(),S=k.width/C.width*100,L=k.height/C.height*100,$=b.tooltip.x,E=b.tooltip.y,T=1;$+S>98&&($=$-S-T),$<0&&($=0),E+L>98&&(E=98-L),E<0&&(E=0);var O=s.querySelector("foreignObject");if(O)O.setAttribute("x",$+"%"),O.setAttribute("y",E+"%");else{var _=r.parentElement;_&&(_.style.left=$+"%",_.style.top=E+"%")}e.hooks&&e.hooks.run&&e.hooks.run("onInteraction",{type:"tooltip",event:m,data:{index:b.index,tooltip:b.tooltip},element:s})}}}function Ct(l,t,e){l.toggles=Array.from(t.querySelectorAll("chart-legend input")),l.toggles.forEach(function(o){o.removeAttribute("onclick"),o.addEventListener("click",function(i){var s=i.target.getAttribute("data-series");l.toggles[s]=i.target.checked;var r=l.toggles[s]!==!1,a=r?1:0,c=t.getElementsByClassName("svc-plot-"+s)[0];c&&(c.style.opacity=a);for(var n=t.getElementsByClassName("svc-plot-node-"+s),u=0;u<n.length;u++)n[u].style.opacity=a;e&&e.hooks&&e.hooks.run&&e.hooks.run("onInteraction",{type:"legend-toggle",event:i,data:{series:s,visible:r},element:o})})})}function kt(l,t,e){var o=t.querySelectorAll('[role="graphics-symbol"]');if(o.length===0)return;var i=-1,s=t.querySelector("chart-plot");if(!s)return;s.setAttribute("tabindex","0"),s.addEventListener("keydown",function(c){if(c.key==="ArrowRight"||c.key==="ArrowDown")c.preventDefault(),i=Math.min(i+1,o.length-1),r(i);else if(c.key==="ArrowLeft"||c.key==="ArrowUp")c.preventDefault(),i=Math.max(i-1,0),r(i);else if(c.key==="Escape"){a();var n=t.querySelector("#svc-tooltip-label");n&&n.classList.add("svc-hide"),i=-1}});function r(c){a();var n=o[c];if(n){n.classList.add("svc-focus");var u=n.getAttribute("aria-label"),p=t.querySelector("#svc-tooltip-label");p&&u&&(p.textContent=u,p.classList.remove("svc-hide"))}}function a(){for(var c=0;c<o.length;c++)o[c].classList.remove("svc-focus")}}function St(l,t,e){var o=t.querySelector("chart-plot");if(!o)return;function i(r){var a=r.target.closest('[role="graphics-symbol"]');if(a){var c={type:"click",event:r,element:a,seriesIndex:parseInt(a.getAttribute("plot")||a.getAttribute("data-series")||"0",10),dataIndex:parseInt(a.getAttribute("node")||a.getAttribute("data-index")||a.getAttribute("index")||"0",10),key:a.getAttribute("data-key")||null,value:a.getAttribute("data-value")||null,label:a.getAttribute("aria-label")||""};e.hooks&&e.hooks.run&&e.hooks.run("onClick",c)}}o.addEventListener("click",i);var s=l._dataClickCleanup;l._dataClickCleanup=function(){s&&s(),o.removeEventListener("click",i)}}var Ce=0,$t=class l extends ee{#t;#i;constructor({config:t={},data:e}){if(super({config:t,data:e}),e==null)throw new Error('SVC: "data" is required. Pass an array of series objects or a plain object for pie charts.');this.data=e,this.palette=t.palette=t.palette||et.defaultPalette();let o=this.applyConfigToDefaults(t);this.#i=o.defs,this.config=o.config,Array.isArray(this.config.plugins)&&this.config.plugins.forEach(i=>this.hooks.registerPlugin(i)),this.hooks.run("configResolved",{config:this.config,data:this.data,chartType:this.constructor.type}),this.#t=new Qt,this._scopeId="c"+Ce++,this.interactions=[],this.structure=null,this.render()}get stylesheet(){return this.#t}get defs(){return this.#i}applyConfigToDefaults(t){let e=[],o=Object.getPrototypeOf(this);for(;o.constructor.name!=="Object";)o.constructor.defaults&&e.push(o.constructor.defaults),o=Object.getPrototypeOf(o);e=e.reverse();let i={legend:mt,tooltip:j};Object.keys(i).forEach(r=>{(!t[r]||t[r].enabled)&&e.push(i[r].defaults)}),t.title&&t.title.text&&e.push(ut.defaults);let s=new et(this.palette,...e,t);return s.applyPalette(l.specs()),s.applyPalette(this.constructor.specs(s.config)),s}static get defaults(){return{palette:et.defaultPalette(),style:{"font-family":"var(--chart-font-family, inherit)","font-weight":300,color:"var(--chart-label-color, #737373)"},legend:{enabled:!0},tooltip:{enabled:!0},plot:{node:{enabled:!0,instances:[],active:{instances:[]},label:{enabled:!1,instances:[]}},instances:[],style:{overflow:"visible"}},"plot-top":{style:{overflow:"visible"}},plotarea:{style:{fill:"var(--color-surface, #fff)",overflow:"visible"}},loading:{enabled:!0,style:{"font-size":"1.5em",fill:"var(--chart-label-color, #616161)","text-anchor":"middle"}}}}static specs(){return{"plot.node.label":{fill:"primary"},"tooltip.label.title":{color:"primary"}}}render(){this.config.title&&(this.title=new ut(this.config)),this.config.legend&&(this.legend=new mt({config:this.config,data:this.data,chart:this.chart}));let t=!!(this.config.tooltip?.enabled||this.config.legend?.enabled),e=Jt({interactive:t});e.wrap.setAttribute("data-chart-id",this._scopeId);let o=this.constructor.type||"chart";if(this.config.title&&this.config.title.text){let i=M(this.config.title.text);e.root.setAttribute("aria-label",i);let s=new y("desc");s.innerHTML=`${o} chart: ${i}`,e.root.prependChild(s)}else{let i=Array.isArray(this.data)?this.data.length:Object.keys(this.data).length;e.root.setAttribute("aria-label",`${o} chart with ${i} data series`)}e=this.parse(e),this.structure=this.parseComponents(e),this.hooks.run("afterRender",{config:this.config,data:this.data,stats:this.stats,structure:this.structure})}parse(t){let{layoutChart:e}=t,o=new y("defs");return this.defs.forEach(i=>{o.appendChild(i)}),e.appendChild(o),t}parseComponents(t){let{body:e,top:o,layoutChart:i}=t;if(this.config.title&&this.config.title.enabled&&o.appendChild(this.title.render()),this.config.legend&&this.config.legend.enabled){let s=new y("chart-legend");s.appendChild(this.legend.render(null,null,this.constructor.type)),e.appendChild(s),this.interactions.push(Ct)}return this.config.tooltip&&this.config.tooltip.enabled&&(this.tooltip=new j({stats:this.stats,data:this.data,config:this.config,type:this.constructor.type}).render(),i.appendChild(this.tooltip.tooltip),typeof this.tooltipLocation=="function"&&(this.interactions.push(wt),this.interactions.push(this.tooltipLocation)),this.interactions.push(kt)),this.interactions.push(St),t}compile(t,e){return this._styleElement&&t.removeChild(this._styleElement),this._styleElement=this.compileStyles(),t.prependChild(this._styleElement),lt(t)}compileHTML(t,{prerendered:e}={}){let o=t.wrap,i=t.root,s={...o.options};i.options["aria-label"]&&o.setAttribute("aria-label",i.options["aria-label"]),i.options["aria-describedby"]&&o.setAttribute("aria-describedby",i.options["aria-describedby"]),o.setAttribute("role",i.options.role||"figure"),e&&o.setAttribute("data-prerendered",""),this._htmlStyleElement&&o.removeChild(this._htmlStyleElement),this._htmlStyleElement=this.compileStyles(),o.prependChild(this._htmlStyleElement);let r=t.layoutChart,a=t.plotarea,c=this.tooltip?.tooltip,n=this.tooltip?.htmlTooltip;c&&n&&a&&(r.removeChild(c),r.appendChild(n.crosshair),a.appendChild(n.tooltipBox));let u=lt(o);return o.options=s,this._htmlStyleElement&&o.removeChild(this._htmlStyleElement),c&&n&&a&&(r.removeChild(n.crosshair),a.removeChild(n.tooltipBox),r.appendChild(c)),u}compileStyles(){let t=new y("style"),e=this.constructor.type!=="pie"?this.data.length:Object.keys(this.data).length,o=this.stylesheet.convertconfig(this.config,e,this._scopeId)+this.stylesheet.sheet;return t.innerHTML=`@layer charts { ${o} }`,t}createGraph({stretch:t}){return t?new y("svg",{x:"0%",y:"0%",width:"100%",height:"100%",viewBox:"0, 0, 100, 100",preserveAspectRatio:"none",xmlns:"http://www.w3.org/2000/svg",class:["plot"]}):new y("svg",{x:"0%",y:"0%",width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",class:["plot-top"]})}createBackground(){return new y("rect",{width:"100%",height:"100%",x:"0%",y:"0%",class:["container"]})}createPlotArea({config:t}){return new y("rect",{x:"0%",y:"0%",width:"100%",height:"100%",class:["plotarea"]})}},ot=$t;var Et=class{constructor(t){Object.assign(this,t)}render(){let{type:t,stats:e,stroke:o,width:i}=this,{min:s,max:r}=e[t],a=Math.abs(r-s),n=Math.abs(s)/a*100;return t==="x"?new y("line",{class:["baseline","baseline-x"],x1:n.toFixed(3)+"%",y1:"0%",x2:n.toFixed(3)+"%",y2:"100%",stroke:o,"stroke-width":i}):new y("line",{class:["baseline","baseline-y"],x1:"0%",y1:(100-n).toFixed(3)+"%",x2:"100%",y2:(100-n).toFixed(3)+"%",stroke:o,"stroke-width":i})}},Lt=Et;function ke({config:l}){let t=l.scale.minFontSize,e=l.scale.maxItems,o="";o+=`
299
+ var state = { functions: []};`,o.forEach(l=>{i+=`state.functions['${l}'] = ${l}(state, svgRoot, chart);`}),e.innerHTML=`//<![CDATA[
300
+ `+i+`
301
+ //]]>`,e}};function Ct(a,t,e){let i=e.config&&e.config.tooltip&&e.config.tooltip.hideDelay||2e3,o=t.querySelector("chart-plot"),s=t.querySelector("#svc-tooltip-box"),n=t.querySelector("#svc-tooltip-label"),l=t.querySelector(".svc-tooltip-crosshair");if(!o||!s||!n||!l)return;let c=o,r=s,u=n,h=l,d=[],p=null,g=null;function f(){g=null}typeof window<"u"&&(window.addEventListener("scroll",f,{passive:!0}),window.addEventListener("resize",f,{passive:!0}));let m=null;typeof ResizeObserver<"u"&&(m=new ResizeObserver(f),m.observe(c));function b(){u.setAttribute("class","svc-tooltip-label svc-hide"),r.setAttribute("class","svc-tooltip svc-hide"),h.setAttribute("x1","-10%"),h.setAttribute("x2","-10%"),h.setAttribute("y1","-10%"),h.setAttribute("y2","-10%");for(let w=0;w<d.length;w++)d[w].classList.remove("svc-plot-node-active-"+w);d=[]}function v(){p&&clearTimeout(p),p=setTimeout(b,i)}c.addEventListener("mousedown",x),c.addEventListener("mousemove",x),a._tooltipCleanup=function(){p&&clearTimeout(p),c.removeEventListener("mousedown",x),c.removeEventListener("mousemove",x),typeof window<"u"&&(window.removeEventListener("scroll",f),window.removeEventListener("resize",f)),m&&(m.disconnect(),m=null)};function x(w){v();let C=a.functions.tooltipLocation(w,a,t,e);if(!C)return;let k=t.querySelectorAll('.svc-plot-node[node="'+C.index+'"]');for(let O=0;O<d.length;O++)d[O].classList.remove("svc-plot-node-active-"+O);d=[];for(let O=0;O<k.length;O++)k[O].classList.add("svc-plot-node-active-"+O),d.push(k[O]);h.setAttribute("x1",C.crosshair.x1+"%"),h.setAttribute("x2",C.crosshair.x2+"%"),h.setAttribute("y1",C.crosshair.y1+"%"),h.setAttribute("y2",C.crosshair.y2+"%"),u.innerHTML=C.tooltip.text,u.setAttribute("class","svc-tooltip-label"),r.setAttribute("class","svc-tooltip"),g||(g=c.getBoundingClientRect());let S=g,E=u.getBoundingClientRect(),L=E.width/S.width*100,M=E.height/S.height*100,T=C.tooltip.x,_=C.tooltip.y;T+L>98&&(T=T-L-1),T<0&&(T=0),_+M>98&&(_=98-M),_<0&&(_=0);let P=r.querySelector("foreignObject");if(P)P.setAttribute("x",T+"%"),P.setAttribute("y",_+"%");else{let O=u.parentElement;O&&(O.style.left=T+"%",O.style.top=_+"%")}e.hooks&&e.hooks.run&&e.hooks.run("onInteraction",{type:"tooltip",event:w,data:{index:C.index,tooltip:C.tooltip},element:r})}}function kt(a,t,e){a.toggles=Array.from(t.querySelectorAll("chart-legend input")),a.toggles.forEach(function(i){i.removeAttribute("onclick"),i.addEventListener("click",function(o){let s=o.target.getAttribute("data-series");a.toggles[s]=o.target.checked;let n=a.toggles[s]!==!1,l=n?1:0,c=t.getElementsByClassName("svc-plot-"+s)[0];c&&(c.style.opacity=String(l));let r=t.getElementsByClassName("svc-plot-node-"+s);for(let u=0;u<r.length;u++)r[u].style.opacity=String(l);e&&e.hooks&&e.hooks.run&&e.hooks.run("onInteraction",{type:"legend-toggle",event:o,data:{series:s,visible:n},element:i})})})}function St(a,t,e){let i=t.querySelectorAll('[role="graphics-symbol"]');if(i.length===0)return;let o=-1,s=t.querySelector("chart-plot");if(!s)return;s.setAttribute("tabindex","0"),s.addEventListener("keydown",function(c){if(c.key==="ArrowRight"||c.key==="ArrowDown")c.preventDefault(),o=Math.min(o+1,i.length-1),n(o);else if(c.key==="ArrowLeft"||c.key==="ArrowUp")c.preventDefault(),o=Math.max(o-1,0),n(o);else if(c.key==="Escape"){l();let r=t.querySelector("#svc-tooltip-label");r&&r.classList.add("svc-hide"),o=-1}});function n(c){l();let r=i[c];if(!r)return;r.classList.add("svc-focus");let u=r.getAttribute("aria-label"),h=t.querySelector("#svc-tooltip-label");h&&u&&(h.textContent=u,h.classList.remove("svc-hide"))}function l(){for(let c=0;c<i.length;c++)i[c].classList.remove("svc-focus")}}function $t(a,t,e){let i=t.querySelector("chart-plot");if(!i)return;function o(n){let l=n.target.closest('[role="graphics-symbol"]');if(!l)return;let c={type:"click",event:n,element:l,seriesIndex:parseInt(l.getAttribute("plot")||l.getAttribute("data-series")||"0",10),dataIndex:parseInt(l.getAttribute("node")||l.getAttribute("data-index")||l.getAttribute("index")||"0",10),key:l.getAttribute("data-key")||null,value:l.getAttribute("data-value")||null,label:l.getAttribute("aria-label")||""};e.hooks&&e.hooks.run&&e.hooks.run("onClick",c)}i.addEventListener("click",o);let s=a._dataClickCleanup;a._dataClickCleanup=function(){s&&s(),i.removeEventListener("click",o)}}var Qt=0,Q=class a extends pt{#t;#e;data;config;palette;_scopeId="";interactions=[];stats;chart;legend;title;tooltip;_styleElement;constructor({config:t={},data:e}){if(super({config:t,data:e}),e==null)throw new Error('SVC: "data" is required. Pass an array of series objects or a plain object for pie charts.');this.data=e,this.palette=t.palette=t.palette||W.defaultPalette();let i=this.applyConfigToDefaults(t);this.#e=i.defs,this.config=i.config,Array.isArray(this.config.plugins)&&this.config.plugins.forEach(o=>this.hooks.registerPlugin(o)),this.hooks.run("configResolved",{config:this.config,data:this.data,chartType:this.constructor.type}),this.#t=new ct,this._scopeId="c"+Qt++,this.interactions=[],this.structure=null,this.render()}get stylesheet(){return this.#t}get defs(){return this.#e}applyConfigToDefaults(t){let e=[],i=Object.getPrototypeOf(this);for(;i.constructor.name!=="Object";)i.constructor.defaults&&e.push(i.constructor.defaults),i=Object.getPrototypeOf(i);e=e.reverse();let o={legend:it,tooltip:N};Object.keys(o).forEach(n=>{(!t[n]||t[n].enabled)&&e.push(o[n].defaults)}),t.title&&t.title.text&&e.push(et.defaults);let s=new W(this.palette,...e,t);return s.applyPalette(a.specs()),s.applyPalette(this.constructor.specs(s.config)),s}static get defaults(){return{palette:W.defaultPalette(),style:{"font-family":"var(--chart-font-family, inherit)","font-weight":300,color:"var(--chart-label-color, #737373)"},legend:{enabled:!0},tooltip:{enabled:!0},plot:{node:{enabled:!0,instances:[],active:{instances:[]},label:{enabled:!1,instances:[]}},instances:[],style:{overflow:"visible"}},"plot-top":{style:{overflow:"visible"}},plotarea:{style:{fill:"var(--color-surface, #fff)",overflow:"visible"}},loading:{enabled:!0,style:{"font-size":"1.5em",fill:"var(--chart-label-color, #616161)","text-anchor":"middle"}}}}static specs(){return{"plot.node.label":{fill:"primary"},"tooltip.label.title":{color:"primary"}}}render(){this.config.title&&(this.title=new et(this.config)),this.config.legend&&(this.legend=new it({config:this.config,data:this.data,chart:this.chart}));let t=!!(this.config.tooltip?.enabled||this.config.legend?.enabled),e=It({interactive:t});e.wrap.setAttribute("data-chart-id",this._scopeId);let i=this.constructor.type||"chart";if(this.config.title&&this.config.title.text){let o=$(this.config.title.text);e.root.setAttribute("aria-label",o);let s=new y("desc");s.innerHTML=`${i} chart: ${o}`,e.root.prependChild(s)}else{let o=Array.isArray(this.data)?this.data.length:Object.keys(this.data).length;e.root.setAttribute("aria-label",`${i} chart with ${o} data series`)}e=this.parse(e),this.structure=this.parseComponents(e),this.hooks.run("afterRender",{config:this.config,data:this.data,stats:this.stats,structure:this.structure})}parse(t){let{layoutChart:e}=t,i=new y("defs");return this.defs.forEach(o=>{i.appendChild(o)}),e.appendChild(i),t}parseComponents(t){let{body:e,top:i,layoutChart:o}=t;if(this.config.title&&this.config.title.enabled&&i.appendChild(this.title.render()),this.config.legend&&this.config.legend.enabled){let s=new y("chart-legend");s.appendChild(this.legend.render(null,null,this.constructor.type)),e.appendChild(s),this.interactions.push(kt)}if(this.config.tooltip&&this.config.tooltip.enabled){this.tooltip=new N({stats:this.stats,data:this.data,config:this.config,type:this.constructor.type}).render(),o.appendChild(this.tooltip.tooltip);let s=this.tooltipLocation;typeof s=="function"&&(this.interactions.push(Ct),this.interactions.push(s)),this.interactions.push(St)}return this.interactions.push($t),t}compile(t,e){return this._styleElement&&t.removeChild(this._styleElement),this._styleElement=this.compileStyles(),t.prependChild(this._styleElement),xt(t)}compileHTML(t,{prerendered:e}={}){let i=t.wrap,o=t.root,s={...i.options};o.options["aria-label"]&&i.setAttribute("aria-label",o.options["aria-label"]),o.options["aria-describedby"]&&i.setAttribute("aria-describedby",o.options["aria-describedby"]),i.setAttribute("role",o.options.role||"figure"),e&&i.setAttribute("data-prerendered",""),this._htmlStyleElement&&i.removeChild(this._htmlStyleElement),this._htmlStyleElement=this.compileStyles(),i.prependChild(this._htmlStyleElement);let n=t.layoutChart,l=t.plotarea,c=this.tooltip?.tooltip,r=this.tooltip?.htmlTooltip;c&&r&&l&&(n.removeChild(c),n.appendChild(r.crosshair),l.appendChild(r.tooltipBox));let u=xt(i);return i.options=s,this._htmlStyleElement&&i.removeChild(this._htmlStyleElement),c&&r&&l&&(n.removeChild(r.crosshair),l.removeChild(r.tooltipBox),n.appendChild(c)),u}compileStyles(){let t=new y("style"),e=this.constructor.type!=="pie"?this.data.length:Object.keys(this.data).length,i=this.stylesheet.convertconfig(this.config,e,this._scopeId)+this.stylesheet.sheet;return t.innerHTML=`@layer charts { ${i} }`,t}createGraph({stretch:t}){return t?new y("svg",{x:"0%",y:"0%",width:"100%",height:"100%",viewBox:"0, 0, 100, 100",preserveAspectRatio:"none",xmlns:"http://www.w3.org/2000/svg",class:["plot"]}):new y("svg",{x:"0%",y:"0%",width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",class:["plot-top"]})}createBackground(){return new y("rect",{width:"100%",height:"100%",x:"0%",y:"0%",class:["container"]})}createPlotArea({config:t}){return new y("rect",{x:"0%",y:"0%",width:"100%",height:"100%",class:["plotarea"]})}};var ot=class{type;stats;stroke;width;constructor(t){Object.assign(this,t)}render(){let{type:t,stats:e,stroke:i,width:o}=this,{min:s,max:n}=e[t],l=Math.abs(n-s),r=Math.abs(s)/l*100;return t==="x"?new y("line",{class:["baseline","baseline-x"],x1:r.toFixed(3)+"%",y1:"0%",x2:r.toFixed(3)+"%",y2:"100%",stroke:i,"stroke-width":o}):new y("line",{class:["baseline","baseline-y"],x1:"0%",y1:(100-r).toFixed(3)+"%",x2:"100%",y2:(100-r).toFixed(3)+"%",stroke:i,"stroke-width":o})}};function zt({config:a}){let t=a.scale.minFontSize,e=a.scale.maxItems,i="";i+=`
302
302
  .svc-scale-label-x,
303
303
  .svc-scale-label-y,
304
304
  .svc-guides-x,
@@ -316,12 +316,12 @@ path.svc-focus {
316
316
  padding: calc(5px + 0.1vmin);
317
317
  padding-right: 10px;
318
318
  }
319
- `;let i=parseFloat((100/e-1).toFixed(2));o+=`
319
+ `;let o=parseFloat((100/e-1).toFixed(2));i+=`
320
320
  .svc-scale-label-x {
321
- width: calc(${i}% - 5px);
322
- max-width: calc(${i}%);
323
- }`;let s={0:2,250:4,600:6,800:10,1e3:e},r=Object.keys(s);r.forEach((c,n)=>{let u,p=Math.floor(e/s[c]),d=parseInt(c),h=parseInt(r[n+1])-1;if(n===0)u=`
324
- @container chart-canvas (max-width: ${h}px) {
321
+ width: calc(${o}% - 5px);
322
+ max-width: calc(${o}%);
323
+ }`;let s={0:2,250:4,600:6,800:10,1e3:e},n=Object.keys(s);n.forEach((c,r)=>{let u,h=Math.floor(e/s[c]),d=parseInt(c),p=parseInt(n[r+1])-1;if(r===0)u=`
324
+ @container chart-canvas (max-width: ${p}px) {
325
325
  .svc-scale-label-x:first-child,
326
326
  .svc-scale-label-x:nth-last-child(2),
327
327
  .svc-guides-x:first-child,
@@ -335,7 +335,7 @@ path.svc-focus {
335
335
  max-width: 50%;
336
336
  }
337
337
  }
338
- `;else if(n===r.length-1)u=`
338
+ `;else if(r===n.length-1)u=`
339
339
  @container chart-canvas (min-width: ${c}px) {
340
340
  .svc-scale-label-x,
341
341
  .svc-guides-x,
@@ -343,11 +343,11 @@ path.svc-focus {
343
343
  opacity: 1;
344
344
  }
345
345
  }
346
- `;else{let g=parseFloat((100/(p+1)).toFixed(2));u=`
347
- @container chart-canvas (min-width: ${d}px) and (max-width: ${h}px) {
348
- .svc-scale-label-x:nth-child(${p}n + 1),
349
- .svc-guides-x:nth-child(${p}n),
350
- .svc-ticks-x:nth-child(${p}n + 1) {
346
+ `;else{let g=parseFloat((100/(h+1)).toFixed(2));u=`
347
+ @container chart-canvas (min-width: ${d}px) and (max-width: ${p}px) {
348
+ .svc-scale-label-x:nth-child(${h}n + 1),
349
+ .svc-guides-x:nth-child(${h}n),
350
+ .svc-ticks-x:nth-child(${h}n + 1) {
351
351
  opacity: 1;
352
352
  }
353
353
  .svc-scale-label-x {
@@ -355,8 +355,8 @@ path.svc-focus {
355
355
  max-width: calc(${g}%);
356
356
  }
357
357
  }
358
- `}o+=u});let a=Object.keys(s);return a.forEach((c,n)=>{let u,p=Math.floor(e/s[c]),d=parseInt(c),h=parseInt(a[n+1])-1;n===0?u=`
359
- @media(max-height: ${h}px) {
358
+ `}i+=u});let l=Object.keys(s);return l.forEach((c,r)=>{let u,h=Math.floor(e/s[c]),d=parseInt(c),p=parseInt(l[r+1])-1;r===0?u=`
359
+ @media(max-height: ${p}px) {
360
360
  .svc-scale-label-y:first-child,
361
361
  .svc-scale-label-y:nth-last-child(2),
362
362
  .svc-guides-y:first-child,
@@ -366,7 +366,7 @@ path.svc-focus {
366
366
  opacity: 1;
367
367
  }
368
368
  }
369
- `:n===a.length-1?u=`
369
+ `:r===l.length-1?u=`
370
370
  @media(min-height: ${c}px) {
371
371
  .svc-scale-label-y,
372
372
  .svc-guides-y,
@@ -375,21 +375,43 @@ path.svc-focus {
375
375
  }
376
376
  }
377
377
  `:u=`
378
- @media(min-height: ${d}px) and (max-height: ${h}px) {
379
- .svc-scale-label-y:nth-child(${p}n + 1),
380
- .svc-guides-y:nth-child(${p}n + 1),
381
- .svc-ticks-y:nth-child(${p}n + 1) {
378
+ @media(min-height: ${d}px) and (max-height: ${p}px) {
379
+ .svc-scale-label-y:nth-child(${h}n + 1),
380
+ .svc-guides-y:nth-child(${h}n + 1),
381
+ .svc-ticks-y:nth-child(${h}n + 1) {
382
382
  opacity: 1;
383
383
  }
384
384
  }
385
- `,o+=u}),o}var oe=ke;function At(l,t,e){if(!Array.isArray(l)||l.length===0)throw new Error('SVC: "data" must be a non-empty array of series objects.');for(let u=0;u<l.length;u++)if(!l[u]||l[u].values==null)throw new Error(`SVC: data[${u}] must have a "values" property.`);if(e!=="scatter"&&e!=="bubble")for(let u=0;u<l.length;u++){let p=l[u].values,d=Array.isArray(p)?p:Object.values(p);for(let h=0;h<d.length;h++)if(d[h]!=null&&typeof d[h]!="number")throw new Error(`SVC: data[${u}].values contains non-numeric value "${d[h]}" at position ${h}.`)}let o={min:1/0,max:-1/0,ticks:4,scale:0},i={min:1/0,max:-1/0,ticks:6,scale:0},s={min:1/0,max:-1/0},r=!1,a=-1/0;if(e==="scatter"||e==="bubble")Object.assign(o,it(l,"x")),Object.assign(i,it(l,"y")),e==="bubble"&&Object.assign(s,it(l,"size"));else if(Array.isArray(l[0].values)){let u=l.reduce((d,h)=>d.concat(h.values),[]).sort((d,h)=>d-h);if(t.plot&&t.plot.stacked){let d=Math.max(...l.map(f=>f.values.length)),h=0,g=0;for(let f=0;f<d;f++){let m=0,b=0;l.forEach(x=>{let v=x.values[f]||0;v>=0?m+=v:b+=v}),h=Math.max(h,m),g=Math.min(g,b)}i.min=g,i.max=h}else i.min=u[0],i.max=u[u.length-1];let p=l[0].values.length;l.forEach((d,h)=>{d.values.length!==p&&console.warn(`SVC: Series ${h} has ${d.values.length} values, but series 0 has ${p}. Mismatched lengths may cause unexpected results.`),a=d.values.length>a?d.values.length:a}),o.min=0,o.max=a}else{r=!0;let u=l.reduce((d,h)=>d.concat(Object.keys(h.values).map(g=>h.values[g])),[]).sort((d,h)=>d-h),p={};if(l.forEach(d=>{Object.assign(p,d.values)}),p=Object.keys(p),t.scale.sorted&&p.sort(),t.plot&&t.plot.stacked){let d=0,h=0;p.forEach(g=>{let f=0,m=0;l.forEach(b=>{let x=b.values[g]||0;x>=0?f+=x:m+=x}),d=Math.max(d,f),h=Math.min(h,m)}),i.min=h,i.max=d}else i.min=u[0],i.max=u[u.length-1];o.keys=p,o.min=0,o.max=a=p.length}let c=e==="scatter"||e==="bubble";Object.assign(i,Mt(i,{forceZeroMin:!c})),c?Object.assign(o,Mt(o,{forceZeroMin:!1})):e==="bar"||e==="column"?(a>t.scale.maxItems?(o.ticks=t.scale.maxItems,o.step=Math.floor(a/(o.ticks-1))):(o.ticks=a,o.step=1),o.scaleLength=a,o.scaleFactor=A(100/a)):(a>t.scale.maxItems?(o.ticks=t.scale.maxItems,o.step=Math.ceil(a/(o.ticks-1))):(o.ticks=a,o.step=1),o.scaleLength=a,o.scaleFactor=A(100/Math.max(a-1,1)));let n=t.plot.vertical;return{associative:r,x:n?o:i,y:n?i:o,alt:s}}function Mt({max:l,min:t,ticks:e},{forceZeroMin:o=!0}={}){let i=l-t||1;t=Math.floor(t-Math.abs(i*.1)),l=Math.ceil(l+Math.abs(i*.1)),o&&(t=t>0?0:t);let s=l-t;if(s<=0)return{min:t,max:t+1,step:1,scaleLength:1,scaleFactor:100,ticks:2};let r=se(s,e);t=Math.floor(t/r)*r,l=Math.ceil(l/r)*r;let a=l-t;e=Math.round(a/r)+1;let c=100/a;return{min:t,max:l,step:r,scaleLength:a,scaleFactor:c,ticks:e}}function se(l,t){let e=l/t,o=Math.pow(10,Math.floor(Math.log10(e))),i=e/o,s;return i<=1.5?s=1:i<=3.5?s=2.5:i<=7.5?s=5:s=10,s*o}function it(l,t){let e;switch(t){case"x":e=0;break;case"y":e=1;break;case"size":e=2;break}let o=l.map(i=>i.values.map(s=>s[e])).reduce((i,s)=>i.concat(s)).sort((i,s)=>i-s);return{min:o[0],max:o[o.length-1]}}var Tt=new Map;function X(l,t){Tt.set(l,t)}function Ot(l,t){let e=Tt.get(l);if(!e)throw new Error(`SVC: Unknown scale type "${l}". Registered types: ${[...Tt.keys()].join(", ")}`);return new e(t)}var _t=class{constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:o}=this,i={ticks:[],labels:[],guides:[]},{min:s,max:r,ticks:a,step:c}=o[t];for(let n=0;n<a;n++){let u=A(n*c*o[t].scaleFactor);if(u>100)continue;i.ticks.push(R(t,u));let p=B(t,n,a,u,e);p&&i.guides.push(p);let d;t==="x"?d=`${s+n*c}`:d=`${r-n*c}`,d=V(d,t,e),i.labels.push(U(t,u,d))}return i}};function R(l,t){return l==="x"?new y("line",{x1:t+"%",y1:"0%",x2:t+"%",y2:"100%",class:["ticks","ticks-x"]}):new y("line",{x1:"0%",y1:t+"%",x2:"100%",y2:t+"%",class:["ticks","ticks-y"]})}function B(l,t,e,o,i){if(l==="x"){if(t!==0&&i.guides.x.enabled)return new y("line",{x1:o+"%",y1:"100%",x2:o+"%",y2:"0%",class:["guides","guides-x"]})}else if(t!==e-1&&i.guides.y.enabled)return new y("line",{x1:"0%",y1:o+"%",x2:"100%",y2:o+"%",class:["guides","guides-y"]});return null}function U(l,t,e){let o=l==="x"?"left":"top",i=new y("div",{style:`${o}: ${t}%`,class:["scale-label",`scale-label-${l}`]});return i.textContent=e,i}function V(l,t,e){if(t==="x"&&ct(e,"scale.label.x.format"))try{return e.scale.label.x.format(l)}catch(o){console.warn("SVC: scale.label.x.format threw an error:",o)}else if(t==="y"&&ct(e,"scale.label.y.format"))try{return e.scale.label.y.format(l)}catch(o){console.warn("SVC: scale.label.y.format threw an error:",o)}return l}var re=_t;var Ft=class{constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:o}=this,i={ticks:[],labels:[],guides:[]},{ticks:s,step:r,max:a}=o[t],c=this.chartType,n=c==="bar"||c==="column",u=t==="x"&&e.plot.vertical||t==="y"&&!e.plot.vertical;for(let p=0;p<s;p++){let d,h;if(n&&u){let m=o[t].scaleFactor/2,b=s<=1?0:p/(s-1);h=Math.floor((o[t].scaleLength-1)*b),h===o[t].scaleLength&&h--,d=A(h*o[t].scaleFactor+m)}else d=A(p*r*o[t].scaleFactor);if(d>100)continue;i.ticks.push(R(t,d));let g=B(t,p,s,d,e);g&&i.guides.push(g);let f;if(t==="x"&&e.plot.vertical){let m=h??Math.round(p*(o.x.keys.length-1)/Math.max(s-1,1));f=`${o.x.keys[m]}`}else if(t==="y"&&!e.plot.vertical){let m=h??Math.round(p*(o.y.keys.length-1)/Math.max(s-1,1));f=`${o.y.keys[m]}`}else f=t==="x"?`${p*r}`:`${a-p*r}`;f=V(f,t,e),i.labels.push(U(t,d,f))}return i}},ne=Ft;var Pt=class{constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:o}=this,i={ticks:[],labels:[],guides:[]},{min:s,max:r}=o[t],a=Math.max(s,1),c=Math.floor(Math.log10(a)),u=Math.ceil(Math.log10(Math.max(r,1)))-c;if(u<=0)return i;let p=u+1;for(let d=0;d<p;d++){let h=c+d,g=Math.pow(10,h),f=A(d/u*100);if(f>100)continue;let m=t==="y"?A(100-f):f;i.ticks.push(R(t,m));let b=B(t,d,p,m,e);b&&i.guides.push(b);let x=Ee(g);x=V(x,t,e),i.labels.push(U(t,m,x))}return i}};function Ee(l){return l>=1e6?l/1e6+"M":l>=1e3?l/1e3+"K":String(l)}var ae=Pt;var It=class{constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:o}=this,i={ticks:[],labels:[],guides:[]},{min:s,max:r,ticks:a}=o[t],c=le(s),u=le(r)-c;if(u<=0||!Number.isFinite(u))return i;let p=Le(u),d=Math.min(a,12);for(let h=0;h<d;h++){let g=h/Math.max(d-1,1),f=A(g*100),m=c+u*g;if(f>100)continue;i.ticks.push(R(t,f));let b=B(t,h,d,f,e);b&&i.guides.push(b);let x=p(new Date(m));x=V(x,t,e),i.labels.push(U(t,f,x))}return i}};function le(l){return typeof l=="number"?l:new Date(l).getTime()}function Le(l){return l<864e5?i=>i.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):l<2592e6?i=>i.toLocaleDateString(void 0,{month:"short",day:"numeric"}):l<31536e6*2?i=>i.toLocaleDateString(void 0,{month:"short",year:"2-digit"}):i=>i.toLocaleDateString(void 0,{year:"numeric"})}var ce=It;X("linear",re);X("category",ne);X("log",ae);X("time",ce);var zt=class extends ot{static get defaults(){let t={width:120,height:120};return{l:{},plot:{vertical:!0},axis:{breakpoint:t,x:{enabled:!0},y:{enabled:!0},label:{x:{enabled:!0,text:"Scale-X"},y:{enabled:!0,text:"Scale-Y"}},style:{stroke:"var(--chart-axis-color, #444)","stroke-width":.3,"vector-effect":"non-scaling-stroke"}},baseline:{x:{},y:{},style:{stroke:"var(--chart-baseline-color, #888)","stroke-width":1}},ticks:{x:{enabled:!0},y:{enabled:!0},style:{"stroke-width":"1",stroke:"var(--chart-tick-color, #DDD)"}},guides:{breakpoint:t,x:{enabled:!0},y:{enabled:!0},style:{stroke:"var(--chart-grid-color, #e4e4e4)","stroke-dasharray":"0, 0","stroke-width":1,"stroke-linecap":"round"}},scale:{sorted:!1,minFontSize:5,maxItems:15,label:{style:{"text-align":"center"}}}}}getName(){return super.getName()}parse(t){t=super.parse(t);let e=this.data,o=this.stylesheet,i=this.config,{layoutChart:s,layoutXAxis:r,layoutYAxis:a,layoutOriginLeft:c,layoutOriginCenter:n,layoutOriginRight:u,layoutYTicks:p,layoutXTicks:d,layoutXAxisLabel:h,layoutYAxisLabel:g}=t,f=this.stats=At(e,this.config,this.constructor.type);this.data=e,this.hooks.run("beforeRender",{config:i,data:e,stats:f,structure:t}),["x","y"].forEach(S=>{let L=Me(S,f,i),$=Ot(L,{type:S,config:i,stats:f,data:e,chartType:this.constructor.type}).render();Object.keys($).forEach(E=>{if(E==="labels")$[E].forEach(T=>{S==="x"?r.appendChild(T):a.appendChild(T)});else if(E==="ticks")S==="x"&&i.ticks.x.enabled?$[E].forEach(T=>{d.appendChild(T)}):S==="y"&&i.ticks.y.enabled&&$[E].forEach(T=>{p.appendChild(T)});else{let T=new y("g",{class:[S+"-"+E]});$[E].forEach(O=>{T.appendChild(O)}),s.appendChild(T)}})});let m=[];if(i.axis.x.enabled&&s.appendChild(this.createAxis({type:"x"})),i.axis.label.x.enabled){let S=`svc-axis-x-label-${this._scopeId}`,L=new y("div",{class:["l-axis-label-text-x"],id:S,role:"note"});L.innerHTML=`<span class="svc-axis-label-x">${M(i.axis.label.x.text)}</span>`,h.appendChild(L),m.push(S)}if(i.axis.y.enabled&&s.appendChild(this.createAxis({type:"y"})),i.axis.label.y.enabled){let S=`svc-axis-y-label-${this._scopeId}`,L=new y("div",{class:["l-axis-y-label-text"],id:S,role:"note"});L.innerHTML=`<span class="svc-axis-label-y">${M(i.axis.label.y.text)}</span>`,g.appendChild(L),m.push(S)}m.length>0&&t.root.setAttribute("aria-describedby",m.join(" "));let b=new y("div",{class:["axis-y-label-dummy"]});b.innerHTML="0",c.appendChild(b),g.appendChild(b);let x=new y("div",{style:"height: 1%; min-height:10px;"});n.appendChild(x);let v=new y("div",{class:["origin-label","scale-label"]});if(f.associative&&!i.plot.vertical){let S=f.y.keys,L=0;S.forEach($=>{L=$.length>L?$.length:L}),v.innerHTML=new Array(L+1).join("0")}else v.innerHTML=f.y.max;n.appendChild(v),a.appendChild(v),u.setAttrs({style:"width: 1%;"}),f.y.min<0&&s.appendChild(new Lt({type:"y",stats:f,stroke:i.baseline.style.stroke,width:i.baseline.style["stroke-width"]}).render()),f.x.min<0&&s.appendChild(new Lt({type:"x",stats:f,stroke:i.baseline.style.stroke,width:i.baseline.style["stroke-width"]}).render());let w=this.createGraph({stretch:!0});s.appendChild(w);let C=this.createGraph({stretch:!1});s.appendChild(C),this.createPlot({data:e,stats:f,subchartStretch:w,subchartNoStretch:C});let k=new y("style");return k.innerHTML=".plot {opacity: 1;} .svc-loading {opacity:0;}",s.appendChild(k),o.addRaw(oe({stats:f,config:i})),t}createScript(){return new j({stats:this.stats,data:this.data,config:this.config}).render()}createAxis({type:t}){return t==="x"?new y("line",{x1:"0%",x2:"100%",y1:"100%",y2:"100%",class:["axis","axis-x"]}):new y("line",{x1:"0%",x2:"0%",y1:"0%",y2:"100%",class:["axis","axis-y"]})}};function Me(l,t,e){return e.scale?.[l]?.type?e.scale[l].type:t.associative?"category":"linear"}var q=zt;var Nt=class extends q{static get type(){return"line"}static get defaults(){return{plot:{style:{fill:"none","vector-effect":"non-scaling-stroke"},node:{type:"open",size:4,style:{"stroke-width":"0.2%","stroke-linecap":"round"},active:{style:{"stroke-width":"0.5%","stroke-linecap":"round"}}}}}}static specs(t){let e={plot:{stroke:"primary"},"plot.node.active":{fill:"secondary",stroke:"secondary"}};return t.plot.node.enabled&&(e["plot.node"]={stroke:"primary"},t.plot.node.type=="closed"?e["plot.node"].fill="primary":e["plot.node"].fill="#FFF"),e}getPlotClass(t){return["plot",`plot-${t}`]}createPlotLine(t){let e=this.stats,o=[],i=.2,s=1,r=0,a=0,c=0,n,u,p=null;for(let d=0;d<t.length;d++){if(t[d]==null){p=null,a=0,c=0;continue}let h={x:A((d-e.x.min)*e.x.scaleFactor),y:A((e.y.max-t[d])*e.y.scaleFactor)};if(!p){o.push(`M ${h.x} ${h.y}`),p=h;continue}let g=null;for(let v=d+1;v<t.length;v++)if(t[v]!=null){g={x:A((v-e.x.min)*e.x.scaleFactor),y:A((e.y.max-t[v])*e.y.scaleFactor)};break}g?(r=(g.y-p.y)/(g.x-p.x),n=(g.x-h.x)*-i,u=n*r*s):n=u=0;let f=A(p.x-a),m=A(p.y-c),b=A(h.x+n),x=A(h.y+u);o.push(`C ${f} ${m}, ${b} ${x}, ${h.x} ${h.y}`),a=n,c=u,p=h}return o}createPlot({data:t,stats:e,subchartStretch:o,subchartNoStretch:i}){this.stats=e,t.forEach((s,r)=>{let a=Array.isArray(s.values)?s.values:e.x.keys.map(p=>s.values[p]??null),c={class:this.getPlotClass(r),plot:r};this.constructor.type==="line"&&(c.fill="none");let n=new y("path",c);o.appendChild(n);let u=this.createPlotLine(a);n.setAttribute("d",u.join(" ")),a.forEach((p,d)=>{if(p!=null){if(this.config.plot.node.enabled){let h=A((d-e.x.min)*e.x.scaleFactor)+"%",g=A((e.y.max-p)*e.y.scaleFactor)+"%",f=s.name||`Series ${r+1}`,m=e.associative&&e.x.keys&&e.x.keys[d]||d,b=new y("circle",{cx:h,cy:g,r:this.config.plot.node.size,class:["plot-node",`plot-node-${r}`],node:d,plot:r,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f}, ${m}: ${p}`});i.appendChild(b)}if(this.config.plot.node.label.enabled){let h=new y("text",{x:A((d-e.x.min)*e.x.scaleFactor)+"%",y:A((e.y.max-p)*e.y.scaleFactor)+"%",fill:"black",class:["plot-node-label",`plot-node-label-${r}`]});h.innerHTML=p,i.appendChild(h)}}})})}tooltipLocation(t,e,o){return function(s){let r={tooltip:{},crosshair:{}},a=1,c="",n=o.stats,p=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientX-p.left)/p.width,h=Math.floor(d*n.x.scaleLength),g=0,f=0,m=o.data,b=n.associative?n.x.keys[h]:h;m.forEach(function(C){let k=n.associative?C.values[b]:C.values[h];k!=null&&(g+=k,f++)});let x=(n.y.max-g/f)*n.y.scaleFactor;isNaN(x)&&(x=n.y.max*n.y.scaleFactor);let v=n.x.scaleFactor*h,w=x.toFixed(2);return isNaN(v)||isNaN(w)||h<0||h>=n.x.scaleLength?null:(r.crosshair.x1=v,r.crosshair.x2=v,r.crosshair.y1=0,r.crosshair.y2=100,r.tooltip.x=v+a,r.tooltip.y=w,m.forEach(function(C,k){let S=M(C.name?C.name:"Series "+k),L=n.associative?o.data[k].values[b]:o.data[k].values[h],$=n.associative?b:h,E;if(o.config.tooltip.format)try{E=M(String(o.config.tooltip.format($,L)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),E=`(${M(String($))} : ${M(String(L))})`}else E=`(${M(String($))} : ${M(String(L))})`;t.toggles[k]!==!1&&(c+=`<div class="svc-tooltip-content">
385
+ `,i+=u}),i}function Lt(a,t,e){if(!Array.isArray(a)||a.length===0)throw new Error('SVC: "data" must be a non-empty array of series objects.');for(let u=0;u<a.length;u++)if(!a[u]||a[u].values==null)throw new Error(`SVC: data[${u}] must have a "values" property.`);if(e!=="scatter"&&e!=="bubble")for(let u=0;u<a.length;u++){let h=a[u].values,d=Array.isArray(h)?h:Object.values(h);for(let p=0;p<d.length;p++)if(d[p]!=null&&typeof d[p]!="number")throw new Error(`SVC: data[${u}].values contains non-numeric value "${d[p]}" at position ${p}.`)}let i={min:1/0,max:-1/0,ticks:4,scale:0},o={min:1/0,max:-1/0,ticks:6,scale:0},s={min:1/0,max:-1/0},n=!1,l=-1/0;if(e==="scatter"||e==="bubble")Object.assign(i,ht(a,"x")),Object.assign(o,ht(a,"y")),e==="bubble"&&Object.assign(s,ht(a,"size"));else if(Array.isArray(a[0].values)){let u=a.reduce((d,p)=>d.concat(p.values),[]).sort((d,p)=>d-p);if(t.plot&&t.plot.stacked){let d=Math.max(...a.map(f=>f.values.length)),p=0,g=0;for(let f=0;f<d;f++){let m=0,b=0;a.forEach(v=>{let x=v.values[f]||0;x>=0?m+=x:b+=x}),p=Math.max(p,m),g=Math.min(g,b)}o.min=g,o.max=p}else o.min=u[0],o.max=u[u.length-1];let h=a[0].values.length;a.forEach((d,p)=>{d.values.length!==h&&console.warn(`SVC: Series ${p} has ${d.values.length} values, but series 0 has ${h}. Mismatched lengths may cause unexpected results.`),l=d.values.length>l?d.values.length:l}),i.min=0,i.max=l}else{n=!0;let u=a.reduce((d,p)=>d.concat(Object.keys(p.values).map(g=>p.values[g])),[]).sort((d,p)=>d-p),h={};if(a.forEach(d=>{Object.assign(h,d.values)}),h=Object.keys(h),t.scale.sorted&&h.sort(),t.plot&&t.plot.stacked){let d=0,p=0;h.forEach(g=>{let f=0,m=0;a.forEach(b=>{let v=b.values[g]||0;v>=0?f+=v:m+=v}),d=Math.max(d,f),p=Math.min(p,m)}),o.min=p,o.max=d}else o.min=u[0],o.max=u[u.length-1];i.keys=h,i.min=0,i.max=l=h.length}let c=e==="scatter"||e==="bubble";Object.assign(o,Et(o,{forceZeroMin:!c})),c?Object.assign(i,Et(i,{forceZeroMin:!1})):e==="bar"||e==="column"?(l>t.scale.maxItems?(i.ticks=t.scale.maxItems,i.step=Math.floor(l/(i.ticks-1))):(i.ticks=l,i.step=1),i.scaleLength=l,i.scaleFactor=A(100/l)):(l>t.scale.maxItems?(i.ticks=t.scale.maxItems,i.step=Math.ceil(l/(i.ticks-1))):(i.ticks=l,i.step=1),i.scaleLength=l,i.scaleFactor=A(100/Math.max(l-1,1)));let r=t.plot.vertical;return{associative:n,x:r?i:o,y:r?o:i,alt:s}}function Et({max:a,min:t,ticks:e},{forceZeroMin:i=!0}={}){let o=a-t||1;t=Math.floor(t-Math.abs(o*.1)),a=Math.ceil(a+Math.abs(o*.1)),i&&(t=t>0?0:t);let s=a-t;if(s<=0)return{min:t,max:t+1,step:1,scaleLength:1,scaleFactor:100,ticks:2};let n=Rt(s,e);t=Math.floor(t/n)*n,a=Math.ceil(a/n)*n;let l=a-t;e=Math.round(l/n)+1;let c=100/l;return{min:t,max:a,step:n,scaleLength:l,scaleFactor:c,ticks:e}}function Rt(a,t){let e=a/t,i=Math.pow(10,Math.floor(Math.log10(e))),o=e/i,s;return o<=1.5?s=1:o<=3.5?s=2.5:o<=7.5?s=5:s=10,s*i}function ht(a,t){let e;switch(t){case"x":e=0;break;case"y":e=1;break;case"size":e=2;break}let i=a.map(o=>o.values.map(s=>s[e])).reduce((o,s)=>o.concat(s)).sort((o,s)=>o-s);return{min:i[0],max:i[i.length-1]}}var Mt=new Map;function st(a,t){Mt.set(a,t)}function At(a,t){let e=Mt.get(a);if(!e)throw new Error(`SVC: Unknown scale type "${a}". Registered types: ${[...Mt.keys()].join(", ")}`);return new e(t)}var ut=class{type;config;stats;constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:i}=this,o={ticks:[],labels:[],guides:[]},{min:s,max:n,ticks:l,step:c}=i[t];for(let r=0;r<l;r++){let u=A(r*c*i[t].scaleFactor);if(u>100)continue;o.ticks.push(B(t,u));let h=U(t,r,l,u,e);h&&o.guides.push(h);let d;t==="x"?d=`${s+r*c}`:d=`${n-r*c}`,d=D(d,t,e),o.labels.push(V(t,u,d))}return o}};function B(a,t){return a==="x"?new y("line",{x1:t+"%",y1:"0%",x2:t+"%",y2:"100%",class:["ticks","ticks-x"]}):new y("line",{x1:"0%",y1:t+"%",x2:"100%",y2:t+"%",class:["ticks","ticks-y"]})}function U(a,t,e,i,o){if(a==="x"){if(t!==0&&o.guides.x.enabled)return new y("line",{x1:i+"%",y1:"100%",x2:i+"%",y2:"0%",class:["guides","guides-x"]})}else if(t!==e-1&&o.guides.y.enabled)return new y("line",{x1:"0%",y1:i+"%",x2:"100%",y2:i+"%",class:["guides","guides-y"]});return null}function V(a,t,e){let i=a==="x"?"left":"top",o=new y("div",{style:`${i}: ${t}%`,class:["scale-label",`scale-label-${a}`]});return o.textContent=e,o}function D(a,t,e){if(t==="x"&&vt(e,"scale.label.x.format"))try{return e.scale.label.x.format(a)}catch(i){console.warn("SVC: scale.label.x.format threw an error:",i)}else if(t==="y"&&vt(e,"scale.label.y.format"))try{return e.scale.label.y.format(a)}catch(i){console.warn("SVC: scale.label.y.format threw an error:",i)}return a}var ft=class{type;config;stats;chartType;constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:i}=this,o={ticks:[],labels:[],guides:[]},{ticks:s,step:n,max:l}=i[t],c=this.chartType,r=c==="bar"||c==="column",u=t==="x"&&e.plot.vertical||t==="y"&&!e.plot.vertical;for(let h=0;h<s;h++){let d,p;if(r&&u){let m=i[t].scaleFactor/2,b=s<=1?0:h/(s-1);p=Math.floor((i[t].scaleLength-1)*b),p===i[t].scaleLength&&p--,d=A(p*i[t].scaleFactor+m)}else d=A(h*n*i[t].scaleFactor);if(d>100)continue;o.ticks.push(B(t,d));let g=U(t,h,s,d,e);g&&o.guides.push(g);let f;if(t==="x"&&e.plot.vertical){let m=p??Math.round(h*(i.x.keys.length-1)/Math.max(s-1,1));f=`${i.x.keys[m]}`}else if(t==="y"&&!e.plot.vertical){let m=p??Math.round(h*(i.y.keys.length-1)/Math.max(s-1,1));f=`${i.y.keys[m]}`}else f=t==="x"?`${h*n}`:`${l-h*n}`;f=D(f,t,e),o.labels.push(V(t,d,f))}return o}};var mt=class{type;config;stats;constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:i}=this,o={ticks:[],labels:[],guides:[]},{min:s,max:n}=i[t],l=Math.max(s,1),c=Math.floor(Math.log10(l)),u=Math.ceil(Math.log10(Math.max(n,1)))-c;if(u<=0)return o;let h=u+1;for(let d=0;d<h;d++){let p=c+d,g=Math.pow(10,p),f=A(d/u*100);if(f>100)continue;let m=t==="y"?A(100-f):f;o.ticks.push(B(t,m));let b=U(t,d,h,m,e);b&&o.guides.push(b);let v=ee(g);v=D(v,t,e),o.labels.push(V(t,m,v))}return o}};function ee(a){return a>=1e6?a/1e6+"M":a>=1e3?a/1e3+"K":String(a)}var gt=class{type;config;stats;constructor(t){Object.assign(this,t)}render(){let{type:t,config:e,stats:i}=this,o={ticks:[],labels:[],guides:[]},{min:s,max:n,ticks:l}=i[t],c=Bt(s),u=Bt(n)-c;if(u<=0||!Number.isFinite(u))return o;let h=ie(u),d=Math.min(l,12);for(let p=0;p<d;p++){let g=p/Math.max(d-1,1),f=A(g*100),m=c+u*g;if(f>100)continue;o.ticks.push(B(t,f));let b=U(t,p,d,f,e);b&&o.guides.push(b);let v=h(new Date(m));v=D(v,t,e),o.labels.push(V(t,f,v))}return o}};function Bt(a){return typeof a=="number"?a:new Date(a).getTime()}function ie(a){return a<864e5?o=>o.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):a<2592e6?o=>o.toLocaleDateString(void 0,{month:"short",day:"numeric"}):a<31536e6*2?o=>o.toLocaleDateString(void 0,{month:"short",year:"2-digit"}):o=>o.toLocaleDateString(void 0,{year:"numeric"})}st("linear",ut);st("category",ft);st("log",mt);st("time",gt);var j=class extends Q{static get defaults(){let t={width:120,height:120};return{l:{},plot:{vertical:!0},axis:{breakpoint:t,x:{enabled:!0},y:{enabled:!0},label:{x:{enabled:!0,text:"Scale-X"},y:{enabled:!0,text:"Scale-Y"}},style:{stroke:"var(--chart-axis-color, #444)","stroke-width":.3,"vector-effect":"non-scaling-stroke"}},baseline:{x:{},y:{},style:{stroke:"var(--chart-baseline-color, #888)","stroke-width":1}},ticks:{x:{enabled:!0},y:{enabled:!0},style:{"stroke-width":"1",stroke:"var(--chart-tick-color, #DDD)"}},guides:{breakpoint:t,x:{enabled:!0},y:{enabled:!0},style:{stroke:"var(--chart-grid-color, #e4e4e4)","stroke-dasharray":"0, 0","stroke-width":1,"stroke-linecap":"round"}},scale:{sorted:!1,minFontSize:5,maxItems:15,label:{style:{"text-align":"center"}}}}}getName(){return super.getName()}parse(t){t=super.parse(t);let e=this.data,i=this.stylesheet,o=this.config,{layoutChart:s,layoutXAxis:n,layoutYAxis:l,layoutOriginLeft:c,layoutOriginCenter:r,layoutOriginRight:u,layoutYTicks:h,layoutXTicks:d,layoutXAxisLabel:p,layoutYAxisLabel:g}=t,f=this.stats=Lt(e,this.config,this.constructor.type);this.data=e,this.hooks.run("beforeRender",{config:o,data:e,stats:f,structure:t}),["x","y"].forEach(S=>{let E=oe(S,f,o),L=At(E,{type:S,config:o,stats:f,data:e,chartType:this.constructor.type}).render();Object.keys(L).forEach(M=>{if(M==="labels")L[M].forEach(T=>{S==="x"?n.appendChild(T):l.appendChild(T)});else if(M==="ticks")S==="x"&&o.ticks.x.enabled?L[M].forEach(T=>{d.appendChild(T)}):S==="y"&&o.ticks.y.enabled&&L[M].forEach(T=>{h.appendChild(T)});else{let T=new y("g",{class:[S+"-"+M]});L[M].forEach(_=>{T.appendChild(_)}),s.appendChild(T)}})});let m=[];if(o.axis.x.enabled&&s.appendChild(this.createAxis({type:"x"})),o.axis.label.x.enabled){let S=`svc-axis-x-label-${this._scopeId}`,E=new y("div",{class:["l-axis-label-text-x"],id:S,role:"note"});E.innerHTML=`<span class="svc-axis-label-x">${$(o.axis.label.x.text)}</span>`,p.appendChild(E),m.push(S)}if(o.axis.y.enabled&&s.appendChild(this.createAxis({type:"y"})),o.axis.label.y.enabled){let S=`svc-axis-y-label-${this._scopeId}`,E=new y("div",{class:["l-axis-y-label-text"],id:S,role:"note"});E.innerHTML=`<span class="svc-axis-label-y">${$(o.axis.label.y.text)}</span>`,g.appendChild(E),m.push(S)}m.length>0&&t.root.setAttribute("aria-describedby",m.join(" "));let b=new y("div",{class:["axis-y-label-dummy"]});b.innerHTML="0",c.appendChild(b),g.appendChild(b);let v=new y("div",{style:"height: 1%; min-height:10px;"});r.appendChild(v);let x=new y("div",{class:["origin-label","scale-label"]});if(f.associative&&!o.plot.vertical){let S=f.y.keys,E=0;S.forEach(L=>{E=L.length>E?L.length:E}),x.innerHTML=new Array(E+1).join("0")}else x.innerHTML=f.y.max;r.appendChild(x),l.appendChild(x),u.setAttrs({style:"width: 1%;"}),f.y.min<0&&s.appendChild(new ot({type:"y",stats:f,stroke:o.baseline.style.stroke,width:o.baseline.style["stroke-width"]}).render()),f.x.min<0&&s.appendChild(new ot({type:"x",stats:f,stroke:o.baseline.style.stroke,width:o.baseline.style["stroke-width"]}).render());let w=this.createGraph({stretch:!0});s.appendChild(w);let C=this.createGraph({stretch:!1});s.appendChild(C),this.createPlot({data:e,stats:f,subchartStretch:w,subchartNoStretch:C});let k=new y("style");return k.innerHTML=".plot {opacity: 1;} .svc-loading {opacity:0;}",s.appendChild(k),i.addRaw(zt({stats:f,config:o})),t}createScript(){return new N({stats:this.stats,data:this.data,config:this.config}).render()}createAxis({type:t}){return t==="x"?new y("line",{x1:"0%",x2:"100%",y1:"100%",y2:"100%",class:["axis","axis-x"]}):new y("line",{x1:"0%",x2:"0%",y1:"0%",y2:"100%",class:["axis","axis-y"]})}};function oe(a,t,e){return e.scale?.[a]?.type?e.scale[a].type:t.associative?"category":"linear"}var H=class extends j{static get type(){return"line"}static get defaults(){return{plot:{style:{fill:"none","vector-effect":"non-scaling-stroke"},node:{type:"open",size:4,style:{"stroke-width":"0.2%","stroke-linecap":"round"},active:{style:{"stroke-width":"0.5%","stroke-linecap":"round"}}}}}}static specs(t){let e={plot:{stroke:"primary"},"plot.node.active":{fill:"secondary",stroke:"secondary"}};return t.plot.node.enabled&&(e["plot.node"]={stroke:"primary"},t.plot.node.type=="closed"?e["plot.node"].fill="primary":e["plot.node"].fill="#FFF"),e}getPlotClass(t){return["plot",`plot-${t}`]}createPlotLine(t){let e=this.stats,i=[],o=.2,s=1,n=0,l=0,c=0,r,u,h=null;for(let d=0;d<t.length;d++){if(t[d]==null){h=null,l=0,c=0;continue}let p={x:A((d-e.x.min)*e.x.scaleFactor),y:A((e.y.max-t[d])*e.y.scaleFactor)};if(!h){i.push(`M ${p.x} ${p.y}`),h=p;continue}let g=null;for(let x=d+1;x<t.length;x++)if(t[x]!=null){g={x:A((x-e.x.min)*e.x.scaleFactor),y:A((e.y.max-t[x])*e.y.scaleFactor)};break}g?(n=(g.y-h.y)/(g.x-h.x),r=(g.x-p.x)*-o,u=r*n*s):r=u=0;let f=A(h.x-l),m=A(h.y-c),b=A(p.x+r),v=A(p.y+u);i.push(`C ${f} ${m}, ${b} ${v}, ${p.x} ${p.y}`),l=r,c=u,h=p}return i}createPlot({data:t,stats:e,subchartStretch:i,subchartNoStretch:o}){this.stats=e,t.forEach((s,n)=>{let l=Array.isArray(s.values)?s.values:e.x.keys.map(h=>s.values[h]??null),c={class:this.getPlotClass(n),plot:n};this.constructor.type==="line"&&(c.fill="none");let r=new y("path",c);i.appendChild(r);let u=this.createPlotLine(l);r.setAttribute("d",u.join(" ")),l.forEach((h,d)=>{if(h!=null){if(this.config.plot.node.enabled){let p=A((d-e.x.min)*e.x.scaleFactor)+"%",g=A((e.y.max-h)*e.y.scaleFactor)+"%",f=s.name||`Series ${n+1}`,m=e.associative&&e.x.keys&&e.x.keys[d]||d,b=new y("circle",{cx:p,cy:g,r:this.config.plot.node.size,class:["plot-node",`plot-node-${n}`],node:d,plot:n,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f}, ${m}: ${h}`});o.appendChild(b)}if(this.config.plot.node.label.enabled){let p=new y("text",{x:A((d-e.x.min)*e.x.scaleFactor)+"%",y:A((e.y.max-h)*e.y.scaleFactor)+"%",fill:"black",class:["plot-node-label",`plot-node-label-${n}`]});p.innerHTML=h,o.appendChild(p)}}})})}tooltipLocation(t,e,i){return function(s){let n={tooltip:{},crosshair:{}},l=1,c="",r=i.stats,h=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientX-h.left)/h.width,p=Math.floor(d*r.x.scaleLength),g=0,f=0,m=i.data,b=r.associative?r.x.keys[p]:p;m.forEach(function(C){let k=r.associative?C.values[b]:C.values[p];k!=null&&(g+=k,f++)});let v=(r.y.max-g/f)*r.y.scaleFactor;isNaN(v)&&(v=r.y.max*r.y.scaleFactor);let x=r.x.scaleFactor*p,w=Number(v.toFixed(2));return isNaN(x)||isNaN(w)||p<0||p>=r.x.scaleLength?null:(n.crosshair.x1=x,n.crosshair.x2=x,n.crosshair.y1=0,n.crosshair.y2=100,n.tooltip.x=x+l,n.tooltip.y=w,m.forEach(function(C,k){let S=$(C.name?C.name:"Series "+k),E=r.associative?i.data[k].values[b]:i.data[k].values[p],L=r.associative?b:p,M;if(i.config.tooltip.format)try{M=$(String(i.config.tooltip.format(L,E)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),M=`(${$(String(L))} : ${$(String(E))})`}else M=`(${$(String(L))} : ${$(String(E))})`;t.toggles[k]!==!1&&(c+=`<div class="svc-tooltip-content">
386
386
  <span class="svc-tooltip-label-title svc-tooltip-label-title-${k}">${S}</span> :
387
- ${E}
388
- </div>`)}),r.tooltip.text=c,r.index=h,r)}}},K=Nt;var jt=class extends K{static get type(){return"area"}static get defaults(){return{plot:{area:{style:{"fill-opacity":"var(--area-fill-opacity, 0.5)","stroke-width":"2%","stroke-linecap":"round"}},node:{enabled:!1,size:4,active:{style:{"stroke-width":"0.5%"}}}}}}static specs(){return{plot:{stroke:"primary"},"plot.area":{fill:"primary",stroke:"secondary"}}}getPlotClass(t){return["plot",`plot-${t}`,"plot-area",`plot-area-${t}`]}createPlotLine(t){let e=super.createPlotLine(t),o=this.stats,i=t.find(c=>c!=null);if(i==null)return e;let s=A((t.length-1-o.x.min)*o.x.scaleFactor),r=A(o.y.max*o.y.scaleFactor),a=A((o.y.max-i)*o.y.scaleFactor);return e.push(`L ${s} ${r} L 0 ${r} L 0 ${a}`),e}},Rt=jt;var Bt=class extends q{static get type(){return"column"}static get defaults(){return{plot:{vertical:!0,stacked:!1,spacing:10,label:{enabled:!1,format:null}}}}static specs(){return{"plot.node":{fill:"primary"}}}createPlot({data:t,stats:e,subchartStretch:o,subchartNoStretch:i}){let s,r,a=this.config.plot.spacing/100,c=e.y.scaleFactor,n=e.x.scaleFactor;e.plot={},this.config.plot.vertical?(s=e.y.min,r=e.y.max,e.plot.vertical=!0):(s=e.x.min,r=e.x.max,e.plot.vertical=!1),e.plot.barSpacing=this.config.plot.spacing/100;let u=Math.abs(r-s),d=Math.abs(s)/u*100;if(this.config.plot.stacked){this._createStackedPlot({data:t,stats:e,subchartStretch:o,scaleX:n,scaleY:c,barSpacing:a,originPoint:d});return}if(Array.isArray(t[0].values))if(this.config.plot.vertical){let h=n/t.length,g=h*(1-a*2);t.forEach((f,m)=>{f.type!=="line"&&f.values.forEach((b,x)=>{let v;b>0?v=(e.y.max-b)*c+"%":v=(100-d).toFixed(3)+"%";let w=n*x;w+=h*m,w+=h*a,o.appendChild(new y("rect",{class:["plot",`plot-${m}`,`plot-node-${m}`],index:x,plot:m,"data-series":m,"data-index":x,"data-value":b,height:Math.abs(b)*c,x:w+"%",width:g+"%",y:v,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f.name||"Series "+(m+1)}, ${x}: ${b}`}))})})}else{let h=c/t.length,g=h*(1-a*2);t.forEach((f,m)=>{f.type!=="line"&&f.values.forEach((b,x)=>{let v,w=Math.abs(b)*n;b>0?v=d.toFixed(3)+"%":v=d.toFixed(3)-w+"%";let C=100-c*(x+1);C+=h*m,C+=h*a,o.appendChild(new y("rect",{class:["plot",`plot-${m}`,`plot-node-${m}`],index:x,plot:m,"data-series":m,"data-index":x,"data-value":b,y:C+"%",width:w+"%",height:g+"%",x:v,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f.name||"Series "+(m+1)}, ${x}: ${b}`}))})})}else if(this.config.plot.vertical){let h=n/t.length,g=h*(1-a*2);e.x.keys.forEach((f,m)=>{t.forEach((b,x)=>{if(b.type!=="line"&&b.values[f]!=null){let v,w=b.values[f];w>0?v=(e.y.max-w)*c+"%":v=(100-d).toFixed(3)+"%";let C=n*m;C+=h*x,C+=h*a,o.appendChild(new y("rect",{class:["plot",`plot-${x}`,`plot-node-${x}`],index:m,plot:x,"data-series":x,"data-key":f,"data-value":w,height:Math.abs(w)*c,x:C+"%",width:g+"%",y:v,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${b.name||"Series "+(x+1)}, ${f}: ${w}`}))}})})}else{let h=c/t.length,g=h*(1-a*2);e.y.keys.slice().reverse().forEach((m,b)=>{t.forEach((x,v)=>{if(x.type!=="line"&&x.values[m]!=null){let w=x.values[m],C,k=Math.abs(w)*n;w>0?C=d.toFixed(3)+"%":C=d.toFixed(3)-k+"%";let S=100-c*(b+1);S+=h*v,S+=h*a,o.appendChild(new y("rect",{class:["plot",`plot-${v}`,`plot-node-${v}`],index:b,plot:v,"data-series":v,"data-key":m,"data-value":w,y:S+"%",width:k+"%",height:g+"%",x:C,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${x.name||"Series "+(v+1)}, ${m}: ${w}`}))}})})}this._renderLineSeries({data:t,stats:e,subchartStretch:o,subchartNoStretch:i}),this.config.plot.label.enabled&&this._renderDataLabels({data:t,stats:e,subchartNoStretch:i,scaleX:n,scaleY:c,barSpacing:a})}_renderDataLabels({data:t,stats:e,subchartNoStretch:o,scaleX:i,scaleY:s,barSpacing:r}){if(!o)return;let a=!Array.isArray(t[0].values),c=this.config.plot.vertical,n=this.config.plot.label.format,u=t.filter(p=>p.type!=="line").length;t.forEach((p,d)=>{if(p.type==="line")return;let h=a?(c?e.x.keys:e.y.keys).map(g=>({key:g,value:p.values[g]})):p.values.map((g,f)=>({key:f,value:g}));h.forEach(({key:g,value:f},m)=>{if(f==null)return;let b=n?n(f,g):String(f);if(c){let x=i,v=x/u,w=x*m+v*d+v/2+v*r,C=(e.y.max-f)*s,k=new y("text",{x:w+"%",y:C-1+"%","text-anchor":"middle",class:["plot-node-label",`plot-node-label-${d}`]});k.textContent=b,o.appendChild(k)}else{let x=s,v=x/u,w=h.length-1-m,C=100-x*(w+1)+v*d+v/2,k=Math.abs(f)*i,S=new y("text",{x:k+1+"%",y:C+"%","alignment-baseline":"middle",class:["plot-node-label",`plot-node-label-${d}`]});S.textContent=b,o.appendChild(S)}})})}_renderLineSeries({data:t,stats:e,subchartStretch:o,subchartNoStretch:i}){let s=!Array.isArray(t[0].values),r=this.config.plot.vertical,a=e.x.scaleFactor,c=e.y.scaleFactor;t.forEach((n,u)=>{if(n.type!=="line")return;let p=r?e.x.keys:e.y.keys,d=s?p.map(m=>n.values[m]??null):n.values,h=[],g=!1;for(let m=0;m<d.length;m++){if(d[m]==null){g=!1;continue}let b=r?m*a+a/2:(e.y.max-d[m])*c,x=r?(e.y.max-d[m])*c:100-(m*c+c/2);g?h.push(`L ${b.toFixed(2)} ${x.toFixed(2)}`):h.push(`M ${b.toFixed(2)} ${x.toFixed(2)}`),g=!0}if(h.length===0)return;let f=new y("path",{d:h.join(" "),fill:"none",class:["plot",`plot-${u}`],style:"vector-effect: non-scaling-stroke"});if(o.appendChild(f),i)for(let m=0;m<d.length;m++){if(d[m]==null)continue;let b=r?m*a+a/2+"%":(e.y.max-d[m])*c+"%",x=r?(e.y.max-d[m])*c+"%":100-(m*c+c/2)+"%",v=s&&p?p[m]:m,w=n.name||"Series "+(u+1);i.appendChild(new y("circle",{cx:b,cy:x,r:4,class:["plot-node",`plot-node-${u}`],node:m,plot:u,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${w}, ${v}: ${d[m]}`}))}})}_createStackedPlot({data:t,stats:e,subchartStretch:o,scaleX:i,scaleY:s,barSpacing:r,originPoint:a}){let c=!Array.isArray(t[0].values),n=this.config.plot.vertical,u=n?i:s,p=u,d=p*(1-r*2),h=c?n?e.x.keys:e.y.keys:Array.from({length:Math.max(...t.map(g=>g.values.length))},(g,f)=>f);h.forEach((g,f)=>{let m=0,b=0;t.forEach((x,v)=>{if(x.type==="line")return;let w=x.values[g];if(w==null)return;let C=Math.abs(w)*(n?s:i),k=x.name||"Series "+(v+1);if(n){let S;w>=0?(m+=w,S=(e.y.max-m)*s):(S=(e.y.max-b)*s,b+=w);let L=u*f+p*r;o.appendChild(new y("rect",{class:["plot",`plot-${v}`,`plot-node-${v}`],index:f,plot:v,"data-series":v,"data-key":c?g:void 0,"data-index":c?void 0:f,"data-value":w,x:L+"%",y:S+"%",width:d+"%",height:C+"%",role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${k}, ${g}: ${w}`}))}else{let S;w>=0?(S=a+m*i,m+=w):(b+=w,S=a+b*i);let L=h.length-1-f,$=100-u*(L+1)+p*r;o.appendChild(new y("rect",{class:["plot",`plot-${v}`,`plot-node-${v}`],index:f,plot:v,"data-series":v,"data-key":c?g:void 0,"data-index":c?void 0:f,"data-value":w,x:S+"%",y:$+"%",width:C+"%",height:d+"%",role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${k}, ${g}: ${w}`}))}})})}tooltipLocation(t,e,o){return function(s){let r={tooltip:{},crosshair:{}},a=1,c="",n=o.stats,p=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientX-p.left)/p.width,h=Math.floor(d*n.x.scaleLength),g=0,f=0,m=o.data,b;n.associative&&(b=n.x.keys[h]),m.forEach(function(C){n.associative&&C.values[b]!=null?(g+=C.values[b],f++):!n.associative&&C.values[h]!=null&&(g+=C.values[h],f++)});let x=(n.y.max-g/f)*n.y.scaleFactor;isNaN(x)&&(x=n.y.max*n.y.scaleFactor);let v=n.x.scaleFactor*h+n.x.scaleFactor/2,w=x.toFixed(2);return isNaN(v)||isNaN(w)||h<0||h>=n.x.scaleLength?null:(n.associative&&(w=100-w),r.crosshair.x1=-10,r.crosshair.x2=-10,r.crosshair.y1=-10,r.crosshair.y2=-10,r.tooltip.x=v+a,r.tooltip.y=w,m.forEach(function(C,k){let S=M(C.name?C.name:"Series "+k);if(t.toggles[k]!==!1){let L=n.associative?o.data[k].values[b]:o.data[k].values[h],$=n.associative?b:h,E;if(o.config.tooltip.format)try{E=M(String(o.config.tooltip.format($,L)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),E=`(${M(String($))} : ${M(String(L))})`}else E=`(${M(String($))} : ${M(String(L))})`;c+=`<div class="svc-tooltip-content">
387
+ ${M}
388
+ </div>`)}),n.tooltip.text=c,n.index=p,n)}}};var nt=class extends H{static get type(){return"area"}static get defaults(){return{plot:{area:{style:{"fill-opacity":"var(--area-fill-opacity, 0.5)","stroke-width":"2%","stroke-linecap":"round"}},node:{enabled:!1,size:4,active:{style:{"stroke-width":"0.5%"}}}}}}static specs(){return{plot:{stroke:"primary"},"plot.area":{fill:"primary",stroke:"secondary"}}}getPlotClass(t){return["plot",`plot-${t}`,"plot-area",`plot-area-${t}`]}createPlotLine(t){let e=super.createPlotLine(t),i=this.stats,o=t.find(c=>c!=null);if(o==null)return e;let s=A((t.length-1-i.x.min)*i.x.scaleFactor),n=A(i.y.max*i.y.scaleFactor),l=A((i.y.max-o)*i.y.scaleFactor);return e.push(`L ${s} ${n} L 0 ${n} L 0 ${l}`),e}};var q=class extends j{static get type(){return"column"}static get defaults(){return{plot:{vertical:!0,stacked:!1,spacing:10,label:{enabled:!1,format:null}}}}static specs(){return{"plot.node":{fill:"primary"}}}createPlot({data:t,stats:e,subchartStretch:i,subchartNoStretch:o}){let s,n,l=this.config.plot.spacing/100,c=e.y.scaleFactor,r=e.x.scaleFactor;e.plot={},this.config.plot.vertical?(s=e.y.min,n=e.y.max,e.plot.vertical=!0):(s=e.x.min,n=e.x.max,e.plot.vertical=!1),e.plot.barSpacing=this.config.plot.spacing/100;let u=Math.abs(n-s),d=Math.abs(s)/u*100;if(this.config.plot.stacked){this._createStackedPlot({data:t,stats:e,subchartStretch:i,scaleX:r,scaleY:c,barSpacing:l,originPoint:d});return}if(Array.isArray(t[0].values))if(this.config.plot.vertical){let p=r/t.length,g=p*(1-l*2);t.forEach((f,m)=>{f.type!=="line"&&f.values.forEach((b,v)=>{let x;b>0?x=(e.y.max-b)*c+"%":x=(100-d).toFixed(3)+"%";let w=r*v;w+=p*m,w+=p*l,i.appendChild(new y("rect",{class:["plot",`plot-${m}`,`plot-node-${m}`],index:v,plot:m,"data-series":m,"data-index":v,"data-value":b,height:Math.abs(b)*c,x:w+"%",width:g+"%",y:x,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f.name||"Series "+(m+1)}, ${v}: ${b}`}))})})}else{let p=c/t.length,g=p*(1-l*2);t.forEach((f,m)=>{f.type!=="line"&&f.values.forEach((b,v)=>{let x,w=Math.abs(b)*r;b>0?x=d.toFixed(3)+"%":x=Number(d.toFixed(3))-w+"%";let C=100-c*(v+1);C+=p*m,C+=p*l,i.appendChild(new y("rect",{class:["plot",`plot-${m}`,`plot-node-${m}`],index:v,plot:m,"data-series":m,"data-index":v,"data-value":b,y:C+"%",width:w+"%",height:g+"%",x,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${f.name||"Series "+(m+1)}, ${v}: ${b}`}))})})}else if(this.config.plot.vertical){let p=r/t.length,g=p*(1-l*2);e.x.keys.forEach((f,m)=>{t.forEach((b,v)=>{if(b.type!=="line"&&b.values[f]!=null){let x,w=b.values[f];w>0?x=(e.y.max-w)*c+"%":x=(100-d).toFixed(3)+"%";let C=r*m;C+=p*v,C+=p*l,i.appendChild(new y("rect",{class:["plot",`plot-${v}`,`plot-node-${v}`],index:m,plot:v,"data-series":v,"data-key":f,"data-value":w,height:Math.abs(w)*c,x:C+"%",width:g+"%",y:x,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${b.name||"Series "+(v+1)}, ${f}: ${w}`}))}})})}else{let p=c/t.length,g=p*(1-l*2);e.y.keys.slice().reverse().forEach((m,b)=>{t.forEach((v,x)=>{if(v.type!=="line"&&v.values[m]!=null){let w=v.values[m],C,k=Math.abs(w)*r;w>0?C=d.toFixed(3)+"%":C=Number(d.toFixed(3))-k+"%";let S=100-c*(b+1);S+=p*x,S+=p*l,i.appendChild(new y("rect",{class:["plot",`plot-${x}`,`plot-node-${x}`],index:b,plot:x,"data-series":x,"data-key":m,"data-value":w,y:S+"%",width:k+"%",height:g+"%",x:C,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${v.name||"Series "+(x+1)}, ${m}: ${w}`}))}})})}this._renderLineSeries({data:t,stats:e,subchartStretch:i,subchartNoStretch:o}),this.config.plot.label.enabled&&this._renderDataLabels({data:t,stats:e,subchartNoStretch:o,scaleX:r,scaleY:c,barSpacing:l})}_renderDataLabels({data:t,stats:e,subchartNoStretch:i,scaleX:o,scaleY:s,barSpacing:n}){if(!i)return;let l=!Array.isArray(t[0].values),c=this.config.plot.vertical,r=this.config.plot.label.format,u=t.filter(h=>h.type!=="line").length;t.forEach((h,d)=>{if(h.type==="line")return;let p=l?(c?e.x.keys:e.y.keys).map(g=>({key:g,value:h.values[g]})):h.values.map((g,f)=>({key:f,value:g}));p.forEach(({key:g,value:f},m)=>{if(f==null)return;let b=r?r(f,g):String(f);if(c){let v=o,x=v/u,w=v*m+x*d+x/2+x*n,C=(e.y.max-f)*s,k=new y("text",{x:w+"%",y:C-1+"%","text-anchor":"middle",class:["plot-node-label",`plot-node-label-${d}`]});k.textContent=b,i.appendChild(k)}else{let v=s,x=v/u,w=p.length-1-m,C=100-v*(w+1)+x*d+x/2,k=Math.abs(f)*o,S=new y("text",{x:k+1+"%",y:C+"%","alignment-baseline":"middle",class:["plot-node-label",`plot-node-label-${d}`]});S.textContent=b,i.appendChild(S)}})})}_renderLineSeries({data:t,stats:e,subchartStretch:i,subchartNoStretch:o}){let s=!Array.isArray(t[0].values),n=this.config.plot.vertical,l=e.x.scaleFactor,c=e.y.scaleFactor;t.forEach((r,u)=>{if(r.type!=="line")return;let h=n?e.x.keys:e.y.keys,d=s?h.map(m=>r.values[m]??null):r.values,p=[],g=!1;for(let m=0;m<d.length;m++){if(d[m]==null){g=!1;continue}let b=n?m*l+l/2:(e.y.max-d[m])*c,v=n?(e.y.max-d[m])*c:100-(m*c+c/2);g?p.push(`L ${b.toFixed(2)} ${v.toFixed(2)}`):p.push(`M ${b.toFixed(2)} ${v.toFixed(2)}`),g=!0}if(p.length===0)return;let f=new y("path",{d:p.join(" "),fill:"none",class:["plot",`plot-${u}`],style:"vector-effect: non-scaling-stroke"});if(i.appendChild(f),o)for(let m=0;m<d.length;m++){if(d[m]==null)continue;let b=n?m*l+l/2+"%":(e.y.max-d[m])*c+"%",v=n?(e.y.max-d[m])*c+"%":100-(m*c+c/2)+"%",x=s&&h?h[m]:m,w=r.name||"Series "+(u+1);o.appendChild(new y("circle",{cx:b,cy:v,r:4,class:["plot-node",`plot-node-${u}`],node:m,plot:u,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${w}, ${x}: ${d[m]}`}))}})}_createStackedPlot({data:t,stats:e,subchartStretch:i,scaleX:o,scaleY:s,barSpacing:n,originPoint:l}){let c=!Array.isArray(t[0].values),r=this.config.plot.vertical,u=r?o:s,h=u,d=h*(1-n*2),p=c?r?e.x.keys:e.y.keys:Array.from({length:Math.max(...t.map(g=>g.values.length))},(g,f)=>f);p.forEach((g,f)=>{let m=0,b=0;t.forEach((v,x)=>{if(v.type==="line")return;let w=v.values[g];if(w==null)return;let C=Math.abs(w)*(r?s:o),k=v.name||"Series "+(x+1);if(r){let S;w>=0?(m+=w,S=(e.y.max-m)*s):(S=(e.y.max-b)*s,b+=w);let E=u*f+h*n;i.appendChild(new y("rect",{class:["plot",`plot-${x}`,`plot-node-${x}`],index:f,plot:x,"data-series":x,"data-key":c?g:void 0,"data-index":c?void 0:f,"data-value":w,x:E+"%",y:S+"%",width:d+"%",height:C+"%",role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${k}, ${g}: ${w}`}))}else{let S;w>=0?(S=l+m*o,m+=w):(b+=w,S=l+b*o);let E=p.length-1-f,L=100-u*(E+1)+h*n;i.appendChild(new y("rect",{class:["plot",`plot-${x}`,`plot-node-${x}`],index:f,plot:x,"data-series":x,"data-key":c?g:void 0,"data-index":c?void 0:f,"data-value":w,x:S+"%",y:L+"%",width:C+"%",height:d+"%",role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${k}, ${g}: ${w}`}))}})})}tooltipLocation(t,e,i){return function(s){let n={tooltip:{},crosshair:{}},l=1,c="",r=i.stats,h=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientX-h.left)/h.width,p=Math.floor(d*r.x.scaleLength),g=0,f=0,m=i.data,b;r.associative&&(b=r.x.keys[p]),m.forEach(function(C){r.associative&&C.values[b]!=null?(g+=C.values[b],f++):!r.associative&&C.values[p]!=null&&(g+=C.values[p],f++)});let v=(r.y.max-g/f)*r.y.scaleFactor;isNaN(v)&&(v=r.y.max*r.y.scaleFactor);let x=r.x.scaleFactor*p+r.x.scaleFactor/2,w=Number(v.toFixed(2));return isNaN(x)||isNaN(w)||p<0||p>=r.x.scaleLength?null:(r.associative&&(w=100-w),n.crosshair.x1=-10,n.crosshair.x2=-10,n.crosshair.y1=-10,n.crosshair.y2=-10,n.tooltip.x=x+l,n.tooltip.y=w,m.forEach(function(C,k){let S=$(C.name?C.name:"Series "+k);if(t.toggles[k]!==!1){let E=r.associative?i.data[k].values[b]:i.data[k].values[p],L=r.associative?b:p,M;if(i.config.tooltip.format)try{M=$(String(i.config.tooltip.format(L,E)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),M=`(${$(String(L))} : ${$(String(E))})`}else M=`(${$(String(L))} : ${$(String(E))})`;c+=`<div class="svc-tooltip-content">
389
+ <span class="svc-tooltip-label-title svc-tooltip-label-title-${k}">${S}</span> : ${M}
390
+ </div>`}}),n.tooltip.text=c,n.index=p,n)}}};var J=class extends q{static get type(){return"bar"}static get defaults(){return{plot:{vertical:!1}}}tooltipLocation(t,e,i){return function(s){let n={tooltip:{},crosshair:{}},l=1,c="",r=i.stats,h=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientY-h.top)/h.height;r.associative&&(d=1-d);let p=r.y.scaleLength-1-Math.floor(d*r.y.scaleLength),g=0,f=0,m=i.data,b;r.associative&&(i.config.plot.vertical?b=r.x.keys[p]:b=r.y.keys[p]),m.forEach(function(C){r.associative&&C.values[b]!=null?(g+=C.values[b],f++):!r.associative&&C.values[p]!=null&&(g+=C.values[p],f++)});let v=g/f*r.x.scaleFactor;isNaN(v)&&(v=r.x.max*r.x.scaleFactor);let x=Number(v.toFixed(2)),w=100*Number(d.toFixed(2));return isNaN(x)||isNaN(w)||p<0||p>=r.x.scaleLength?null:(r.associative&&(w=100-w),n.crosshair.x1=-10,n.crosshair.x2=-10,n.crosshair.y1=-10,n.crosshair.y2=-10,n.tooltip.x=x+l,n.tooltip.y=w+l,m.forEach(function(C,k){let S=$(C.name?C.name:"Series "+k);if(t.toggles[k]!==!1){let E,L=r.associative?i.data[k].values[b]:i.data[k].values[p],M=r.associative?b:p;if(i.config.tooltip.format)try{E=$(String(i.config.tooltip.format(M,L)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),E=`(${$(String(M))} : ${$(String(L))})`}else E=`(${$(String(M))} : ${$(String(L))})`;c+=`<div class="svc-tooltip-content">
389
391
  <span class="svc-tooltip-label-title svc-tooltip-label-title-${k}">${S}</span> : ${E}
390
- </div>`}}),r.tooltip.text=c,r.index=h,r)}}},Z=Bt;var Ut=class extends Z{static get type(){return"bar"}static get defaults(){return{plot:{vertical:!1}}}tooltipLocation(t,e,o){return function(s){let r={tooltip:{},crosshair:{}},a=1,c="",n=o.stats,p=e.querySelector("chart-plot").getBoundingClientRect(),d=(s.clientY-p.top)/p.height;n.associative&&(d=1-d);let h=n.y.scaleLength-1-Math.floor(d*n.y.scaleLength),g=0,f=0,m=o.data,b;n.associative&&(o.config.plot.vertical?b=n.x.keys[h]:b=n.y.keys[h]),m.forEach(function(C){n.associative&&C.values[b]!=null?(g+=C.values[b],f++):!n.associative&&C.values[h]!=null&&(g+=C.values[h],f++)});let x=g/f*n.x.scaleFactor;isNaN(x)&&(x=n.x.max*n.x.scaleFactor);let v=x.toFixed(2),w=100*d.toFixed(2);return isNaN(v)||isNaN(w)||h<0||h>=n.x.scaleLength?null:(n.associative&&(w=100-w),r.crosshair.x1=-10,r.crosshair.x2=-10,r.crosshair.y1=-10,r.crosshair.y2=-10,r.tooltip.x=v+a,r.tooltip.y=w+a,m.forEach(function(C,k){let S=M(C.name?C.name:"Series "+k);if(t.toggles[k]!==!1){let L,$=n.associative?o.data[k].values[b]:o.data[k].values[h],E=n.associative?b:h;if(o.config.tooltip.format)try{L=M(String(o.config.tooltip.format(E,$)))}catch(T){console.warn("SVC: tooltip.format threw an error:",T),L=`(${M(String(E))} : ${M(String($))})`}else L=`(${M(String(E))} : ${M(String($))})`;c+=`<div class="svc-tooltip-content">
391
- <span class="svc-tooltip-label-title svc-tooltip-label-title-${k}">${S}</span> : ${L}
392
- </div>`}}),r.tooltip.text=c,r.index=h,r)}}},st=Ut;var Vt=class extends q{static get type(){return"scatter"}static get defaults(){return{plot:{size:4}}}static specs(){return{"plot.node":{fill:"primary"}}}tooltipLocation(t,e,o){return function(s){t.nodeMap||(t.nodeMap=Oe(e));let r={tooltip:{},crosshair:{}},a=1,c="",u=e.querySelector("chart-plot").getBoundingClientRect(),p=(s.clientX-u.left)/u.width,d=(s.clientY-u.top)/u.height;p=Math.floor(p*100),d=Math.floor(d*100);let h=Math.floor(p/10),g=parseInt((p/10).toFixed(1).split(".")[1]),f=Math.floor(d/10);for(var m=null,b=[[0,0],[-1,0],[1,0],[0,-1],[0,1]],x=0;x<b.length;x++){var v=f+b[x][0],w=h+b[x][1];if(v>=0&&v<10&&w>=0&&w<10&&t.nodeMap[v]&&t.nodeMap[v][w]){var C=t.nodeMap[v][w][g];if(!C){for(var k=Math.max(0,g-1);k<=Math.min(9,g+1);k++)if(t.nodeMap[v][w][k]){C=t.nodeMap[v][w][k];break}}if(C){m=C;break}}}if(m)return r.crosshair.x1=-1,r.crosshair.x2=-1,r.crosshair.y1=-1,r.crosshair.y2=-1,r.tooltip.x=p+a,r.tooltip.y=d,m.forEach(S=>{let L=S.getAttribute("data-series"),$=S.getAttribute("data-index"),E=o.data[L].values[$],T=M(o.data[L].name||"Series "+L),O;if(o.config.tooltip.format)try{O=M(String(o.config.tooltip.format(T,E)))}catch(_){console.warn("SVC: tooltip.format threw an error:",_),O=M(String(E))}else O=M(String(E));c+=`<div class="svc-tooltip-content">
393
- <span class="svc-tooltip-label-title svc-tooltip-label-title-${L}">${T}</span> : (${O})
394
- </div>`}),r.tooltip.text=c,r}}createPlot({data:t,stats:e,subchartNoStretch:o}){t.forEach((i,s)=>{i.values.forEach((a,c)=>{let n=a[0],u=a[1],p=i.name||`Series ${s+1}`,d=new y("circle",{cx:((n-e.x.min)*e.x.scaleFactor).toFixed(3)+"%",cy:((e.y.max-u)*e.y.scaleFactor).toFixed(3)+"%",r:this.config.plot.size,class:["plot-node",`plot-${s}`,`plot-node-${s}`],"data-index":c,"data-series":s,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${p}, (${n}, ${u})`});o.appendChild(d)})})}};function Oe(l){let t=Array.from(new Array(10)).map(()=>Array.from(new Array(10)).map(()=>[]));return l.querySelectorAll(".svc-plot-node").forEach(e=>{let o=parseInt(e.getAttribute("data-series"),10),i=parseInt(e.getAttribute("cx")),s=parseInt(e.getAttribute("cy")),r=Math.min(9,Math.floor(i/10)),a=parseInt((i/10).toFixed(1).split(".")[1]),c=Math.min(9,Math.floor(s/10));t[c][r][a]=t[c][r][a]||[],t[c][r][a][o]=e}),t}var W=Vt;var Dt=class extends W{static get type(){return"bubble"}static get defaults(){return{plot:{maxSize:4,node:{}}}}static specs(){return{"plot.node":{fill:"primary"}}}createPlot({data:t,stats:e,subchartStretch:o,subchartNoStretch:i}){t.forEach((s,r)=>{s.values.forEach((c,n)=>{let u=c[0],p=c[1],d=c[2],h=s.name||`Series ${r+1}`,g=e.alt.max-e.alt.min||1,f=(Math.abs(d)-e.alt.min)/g,m=new y("circle",{cx:((u-e.x.min)*e.x.scaleFactor).toFixed(3)+"%",cy:((e.y.max-p)*e.y.scaleFactor).toFixed(3)+"%",r:f*this.config.plot.maxSize+.5+"%",style:`opacity: ${.7}`,class:["plot-node",`plot-${r}`,`plot-node-${r}`],"data-index":n,"data-series":r,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${h}, (${u}, ${p}), size: ${d}`});i.appendChild(m)})})}},Ht=Dt;var qt=class extends ot{static get type(){return"pie"}static get defaults(){return{plot:{ring:!1,node:{label:{enabled:!0,placement:"auto",scaleBySize:!0,limitBySize:!0,multiplier:1,threshold:12,style:{"font-size":"clamp(8px, 0.6vmin, 16px)"}}}},center:{size:"40%",style:{fill:"#fff"},label:{style:{"font-size":"5vmin",transform:"translate(0%, -50%)","text-align":"center"},container:{style:{display:"flex","justify-content":"center","align-items":"center"}},title:{style:{"font-size":"7vmin"}}}}}}static specs(){return{plot:{fill:"primary"},"plot.node":{fill:"primary"}}}parse(t){t=super.parse(t);let{layoutChart:e}=t,o=this.createGraph({stretch:!0});e.appendChild(o);let i=this.createGraph({stretch:!1});e.appendChild(i),this.createPlot({layoutChart:e,subchartStretch:o,subchartNoStretch:i}),i.appendChild(new y("g"));let s=new y("style");return s.innerHTML=".plot {opacity: 1;}.svc-loading {opacity:0;}",e.appendChild(s),t}createScript(){return new j({stats:this.stats,data:this.data,config:this.config}).render()}createPlot({layoutChart:t,subchartStretch:e,subchartNoStretch:o}){let i=this.data;if(!N(i))throw new Error('SVC: Pie chart "data" must be a plain object with numeric values, e.g. { "Apples": 30, "Oranges": 70 }.');Object.keys(i).forEach(u=>{if(typeof i[u]!="number")throw new Error(`SVC: Pie chart value for "${u}" must be a number.`);if(i[u]<0)throw new Error(`SVC: Pie chart value for "${u}" is negative (${i[u]}). Pie charts require non-negative values.`)});let s=Object.keys(i).reduce((u,p)=>u+=i[p],0);if(s===0){let u=new y("text",{x:"50%",y:"50%","text-anchor":"middle","alignment-baseline":"middle",class:["loading"]});u.textContent="No data",o.appendChild(u);return}let r=0,a=0,c=this.config.plot.node.instances.map(u=>u.fill);Object.keys(i).forEach((u,p)=>{let d=i[u],h=d/s,g=r/s,f=c[a%c.length],m=this.calculateSlice(h,g),b=this.createSlice(m,f,p,d,s,u);o.appendChild(b),a++,r+=d});let n=new y("svg",{height:"100%",width:"100%",overflow:"visible",viewBox:"0 0 100 100",class:["nodeGroup"]});if(this.config.plot.ring){let p=(parseFloat(this.config.center.size)||40)/2;n.appendChild(new y("circle",{cx:"50",cy:"50",r:String(p),fill:"var(--color-surface, #fff)",class:["center"]}))}o.appendChild(n)}calculateSlice(t,e){let i=Math.cos((e+t)*2*Math.PI)*50+50,s=Math.sin((e+t)*2*Math.PI)*50+50,r=Math.cos(e*2*Math.PI)*50+50,a=Math.sin(e*2*Math.PI)*50+50,c=e*360,n=t*360+c,u=(n+c)/2,p=50+50*Math.cos(u*2*Math.PI/360),d=50+50*Math.sin(u*2*Math.PI/360);p=(p+50)*.5,d=(d+50)*.5;let h=n-c;return{radius:50,degrees:u,degreeLength:h,start:{x:i,y:s},end:{x:r,y:a},center:{x:p,y:d}}}createSlice(t,e,o,i,s,r){let{radius:a,start:c,end:n,center:u,degreeLength:p}=t,d=new y("svg",{height:"100%",width:"100%",overflow:"visible",viewBox:"0 0 100 100",class:["nodeGroup"]}),h=p>180?1:0,g=`M ${a} ${a}`,f=`L${c.x} ${c.y}`,m=`A ${a} ${a} 0 ${h} 0 ${n.x} ${n.y}`,b=(i/s*100).toFixed(0);if(d.appendChild(new y("path",{fill:e,style:"vector-effect: non-scaling-stroke",d:`${g} ${f} ${m} Z`,"alignment-baseline":"middle","text-anchor":"middle","data-key":r,"data-value":i,tabindex:"0",class:["plot-node",`plot-node-${o}`],role:"graphics-symbol","aria-roledescription":"slice","aria-label":`${r}: ${b}%`})),this.config.plot.node.label.enabled){let{multiplier:x,threshold:v,limitBySize:w,scaleBySize:C,placement:k}=this.config.plot.node.label,S=p<=v;if(k==="outside"||k==="auto"&&S){let $=t.degrees*Math.PI/180,E=55,T=62,O=50+48*Math.cos($),_=50+48*Math.sin($),Q=50+E*Math.cos($),J=50+E*Math.sin($),tt=50+T*Math.cos($),I=50+T*Math.sin($),Y=Math.cos($)>=0?"start":"end";d.appendChild(new y("line",{x1:O.toFixed(1),y1:_.toFixed(1),x2:Q.toFixed(1),y2:J.toFixed(1),stroke:"var(--chart-label-color, #737373)","stroke-width":"0.5",class:["plot-leader"]}));let z=new y("text",{fill:"var(--chart-label-color, #737373)",x:tt.toFixed(1),y:I.toFixed(1),"alignment-baseline":"middle","text-anchor":Y,style:"font-size: 0.35em;",class:["plot-node-label",`plot-node-label-${o}`]});z.innerHTML=`${M(r)} ${b}%`,d.appendChild(z)}else if(!this.config.plot.ring){let $;C&&($=.37*x*(p/100));let E=new y("text",{fill:"#fff",x:u.x,y:u.y,style:C?`font-size: ${A($)}em;`:"","alignment-baseline":"middle","text-anchor":"middle",class:w&&p>v||!w?["plot-node-label"]:["plot-node-label","hide"]});E.innerHTML=b+"%",d.appendChild(E)}}return d}tooltipLocation(t,e,o){return function(s){var r=e.querySelector("chart-plot");if(!r)return null;var a=r.getBoundingClientRect(),c=r.querySelector(".svc-nodeGroup"),n=c?c.getBoundingClientRect():a,u=n.left+n.width/2,p=n.top+n.height/2,d=s.clientX-u,h=s.clientY-p,g=Math.min(n.width,n.height)/2,f=Math.sqrt(d*d+h*h);if(f>g)return null;if(o.config.plot.ring){var m=parseFloat(o.config.center.size)||40,b=g*(m/100);if(f<b)return null}var x=Math.atan2(h,d);x<0&&(x+=2*Math.PI);var v=x/(2*Math.PI),w=(s.clientX-a.left)/a.width*100,C=(s.clientY-a.top)/a.height*100,k=o.data,S=Object.keys(k),L=S.reduce(function(nt,me){return nt+(k[me]||0)},0);if(L===0)return null;for(var $=0,E=null,T=0,O=0,_=0;_<S.length;_++){var Q=k[S[_]]||0,J=Q/L;if(v>=$&&v<$+J){E=S[_],T=Q,O=_;break}$+=J}if(!E)return null;var tt=(T/L*100).toFixed(1),I={tooltip:{},crosshair:{x1:-10,x2:-10,y1:-10,y2:-10}};I.tooltip.x=w,I.tooltip.y=C;var Y=M(String(E)),z;if(o.config.tooltip&&o.config.tooltip.format)try{z=M(String(o.config.tooltip.format(E,T)))}catch(nt){console.warn("SVC: tooltip.format threw an error:",nt),z=Y+": "+tt+"%"}else z=Y+": "+tt+"%";return I.tooltip.text='<div class="svc-tooltip-content"><span class="svc-tooltip-label-title svc-tooltip-label-title-'+O+'">'+Y+"</span> : "+z+"</div>",I.index=O,I}}},Yt=qt;var Di=window.matchMedia("(prefers-reduced-motion: reduce)");var de=new Map;function pe(l,t,e={}){let o=e.priority??10,i={impl:t,bundle:e.bundle,contract:e.contract,priority:o},s=de.get(l);if(customElements.get(l)){if(!s||s.priority>=o){s&&s.priority===o&&s.impl!==t&&console.warn(`[VB Bundle] Tag <${l}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${l}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=o){s.priority===o&&console.warn(`[VB Bundle] Tag <${l}> already registered by "${s.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}de.set(l,i),customElements.define(l,t)}var rt=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let t of this.#t)t();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,o,i){t.addEventListener(e,o,i),this.#t.push(()=>t.removeEventListener(e,o,i))}setup(){}teardown(){}};function Gt(l){let t=l.textContent.trim();if(!t)return null;let e=t.replace(/[$€£¥,% ]/g,""),o=Number(e);return Number.isFinite(o)?o:null}function Fe(l){let t=[...l.cells],e=-1,o=[];for(let i=0;i<t.length;i++){let s=t[i];if(!s.hasAttribute("data-chart-ignore")){if(s.hasAttribute("data-chart-label")||s.getAttribute("scope")==="row"){e=i;continue}(s.hasAttribute("data-chart-series")||!s.hasAttribute("data-chart-ignore"))&&o.push({index:i,name:s.textContent.trim()})}}if(e===-1&&t.length>0){let i=t[0];if(!i.textContent.trim()||i.tagName==="TH"){e=0;let s=o.findIndex(r=>r.index===0);s!==-1&&o.splice(s,1)}}return{labelIndex:e,columns:o}}function Pe(l){let t=l.querySelector("thead"),e=l.querySelector("tbody")||l,o=t?.querySelector("tr"),i=[...e.querySelectorAll("tr")];if(!o||i.length===0)return{data:[],config:{}};let{labelIndex:s,columns:r}=Fe(o),a=s!==-1,c=r.map(p=>({name:p.name,values:a?{}:[]}));for(let p of i){let d=[...p.cells],h=a?d[s]?.textContent.trim()||"":null;for(let g=0;g<r.length;g++){let f=d[r[g].index],m=f?Gt(f):null;a&&h?c[g].values[h]=m??0:c[g].values.push(m??0)}}let n={},u=l.querySelector("caption");return u&&(n.title={text:u.textContent.trim(),enabled:!0}),{data:c,config:n}}function Ie(l){let e=[...(l.querySelector("tbody")||l).querySelectorAll("tr")],o={};for(let r of e){let a=[...r.cells],c=r.querySelector("th"),n=c?c.textContent.trim():a[0]?.textContent.trim(),u=c?a[1]||a[0]:a[1],p=u?Gt(u):null;n&&p!=null&&(o[n]=p)}let i={},s=l.querySelector("caption");return s&&(i.title={text:s.textContent.trim(),enabled:!0}),{data:o,config:i}}function ze(l){let t=l.querySelector("thead"),e=l.querySelector("tbody")||l,o=t?.querySelector("tr"),i=[...e.querySelectorAll("tr")],s=new Map;for(let n of i){let u=[...n.cells],p=n.querySelector("th"),d=p?p.textContent.trim():"Data",h=p?[...n.querySelectorAll("td")]:u.slice(1);s.has(d)||s.set(d,[]);let g=h.map(f=>Gt(f)).filter(f=>f!=null);g.length>=2&&s.get(d).push(g)}let r=[...s.entries()].map(([n,u])=>({name:n,values:u})),a={},c=l.querySelector("caption");return c&&(a.title={text:c.textContent.trim(),enabled:!0}),{data:r,config:a}}function he(l,t){if(!l||!l.querySelector("tbody, tr"))return{data:null,config:{}};let e=(t||"").toLowerCase();return e==="pie"?Ie(l):e==="scatter"||e==="bubble"?ze(l):Pe(l)}function ue(l){let t={};return l.hasAttribute("data-tooltip")&&(t.tooltip={enabled:!0}),l.hasAttribute("data-legend")&&(t.legend={enabled:!0}),l.hasAttribute("data-grid")&&(t.guides={x:{enabled:!0},y:{enabled:!0}}),l.hasAttribute("data-labels")&&(t.plot={node:{label:{enabled:!0}}}),t}function Ne(l){let t=getComputedStyle(l),e=[];for(let o=1;o<=6;o++){let i=t.getPropertyValue(`--chart-series-${o}`).trim();i&&e.push(i)}return e.length>0?e:null}function F(l,t){return l.getPropertyValue(t).trim()||null}function Xt(l){let t=getComputedStyle(l),e={},o=F(t,"--chart-label-color"),i=F(t,"--chart-font-family");(o||i)&&(e.style={},o&&(e.style.color=o),i&&(e.style["font-family"]=i));let s=F(t,"--chart-axis-color");s&&(e.axis={style:{stroke:s}});let r=F(t,"--chart-grid-color");r&&(e.guides={style:{stroke:r}});let a=F(t,"--chart-baseline-color");a&&(e.baseline={style:{stroke:a}});let c=F(t,"--chart-tick-color");c&&(e.ticks={style:{stroke:c}});let n=F(t,"--chart-title-color"),u=F(t,"--chart-title-size");(n||u)&&(e.title=e.title||{},e.title.style={},n&&(e.title.style.color=n),u&&(e.title.style["font-size"]=u));let p=F(t,"--chart-subtitle-color"),d=F(t,"--chart-subtitle-size");(p||d)&&(e.title=e.title||{},e.title.subtitle=e.title.subtitle||{},e.title.subtitle.style={},p&&(e.title.subtitle.style.color=p),d&&(e.title.subtitle.style["font-size"]=d));let h=F(t,"--chart-tooltip-bg"),g=F(t,"--chart-tooltip-color"),f=F(t,"--chart-tooltip-shadow");(h||g||f)&&(e.tooltip=e.tooltip||{},e.tooltip.label=e.tooltip.label||{},e.tooltip.label.style={},h&&(e.tooltip.label.style["background-color"]=h),g&&(e.tooltip.label.style.color=g),f&&(e.tooltip.label.style["box-shadow"]=f));let m=Ne(l);return m&&(e.palette=m),e}function fe(l){return{name:"vb-theme-bridge",hooks:{configResolved({config:t}){let e=Xt(l);e.style&&(t.style=Object.assign({},e.style,t.style)),e.palette&&!t._paletteFromUser&&(t.palette=e.palette)}}}}var je={line:K,area:Rt,bar:st,column:Z,pie:Yt,scatter:W,bubble:Ht};function D(l,t=null){if(l==null)return t;if(typeof l!="string")return l;try{return JSON.parse(l)}catch{return t}}function H(l,t){if(!t||typeof t!="object"||Array.isArray(t))return l;for(let e of Object.keys(t))t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?((!l[e]||typeof l[e]!="object")&&(l[e]={}),H(l[e],t[e])):l[e]=t[e];return l}var Kt=class extends rt{static get observedAttributes(){return["data-type","data-values","data-config","data-title","data-subtitle","data-legend","data-tooltip","data-palette","data-label-x","data-label-y"]}#t=null;#i=null;#s=null;#n=!1;#e=null;#o=null;set data(t){this.#t=t,this.#r()}get data(){return this.#t}set config(t){this.#i=t,this.#r()}get config(){return this.#i}refresh(){this.#r()}toSVG(){return this.#e?.querySelector("svg")?.outerHTML||null}setup(){this.#r()}teardown(){this.#a()}attributeChangedCallback(){this.hasAttribute("data-upgraded")&&this.#r()}#r(){!this.isConnected||this.#n||(this.#n=!0,Promise.resolve().then(()=>{this.#n=!1,this.isConnected&&this.#u()}))}#l(){let t=(this.dataset.type||"").toLowerCase();return t||(t=(this.querySelector("table")?.dataset.type||"bar").toLowerCase()),je[t]||st}#c(){if(this.#t!=null)return{data:D(this.#t,null),tableConfig:{}};let t=this.dataset.values;if(t!=null)return{data:D(t,null),tableConfig:{}};let e=this.querySelector('script[type="application/json"]');if(e)return{data:D(e.textContent,null),tableConfig:{}};let o=this.querySelector("template[data-chart-data]");if(o){let s=o.content?.textContent||o.innerHTML;return{data:D(s,null),tableConfig:{}}}let i=this.querySelector("table");if(i){let s=(this.dataset.type||i.dataset.type||"bar").toLowerCase(),{data:r,config:a}=he(i,s),c=ue(i),n=H(H({},a),c);return{data:r,tableConfig:n}}return null}#d(t={}){let e=Xt(this),o=D(this.#i,{})||{},i=D(this.dataset.config,{})||{},s={};s=H(s,e),s=H(s,t),s=H(s,o),s=H(s,i);let r=this.dataset.labelX,a=this.dataset.labelY;if(s.axis=s.axis||{},s.axis.label=s.axis.label||{},r!=null?s.axis.label.x={text:r,enabled:!0}:s.axis.label.x?.text||(s.axis.label.x=s.axis.label.x||{},s.axis.label.x.enabled=!1),a!=null?s.axis.label.y={text:a,enabled:!0}:s.axis.label.y?.text||(s.axis.label.y=s.axis.label.y||{},s.axis.label.y.enabled=!1),s.plot?.node?.label?.scaleBySize||(s.plot=s.plot||{},s.plot.node=s.plot.node||{},s.plot.node.label=s.plot.node.label||{},s.plot.node.label.scaleBySize=!1),this.dataset.title!=null){let c={text:this.dataset.title,enabled:!0};this.dataset.subtitle!=null&&(c.subtitle=this.dataset.subtitle),s.title=c}if(this.dataset.legend!=null&&(s.legend={enabled:!0}),this.dataset.tooltip!=null&&(s.tooltip={enabled:!0}),this.dataset.palette!=null){let c=D(this.dataset.palette,null);c&&(s.palette=c)}return s.plugins=s.plugins||[],s.plugins.push(fe(this)),s}#p(){if(this.#o&&this.contains(this.#o))return;this.#o=document.createElement("div"),this.#o.setAttribute("data-chart-svg",""),this.#o.setAttribute("aria-hidden","true"),this.appendChild(this.#o);let t=this.#o.attachShadow({mode:"open"});this.#e=document.createElement("div"),this.#e.style.cssText="width:100%;height:100%;overflow:visible;",t.appendChild(this.#e)}#h(t){if(!t)return;(this.dataset.chart||t.dataset.chart||"replace")==="replace"&&(t.classList.add("sr-only"),t.setAttribute("aria-hidden","false"))}#u(){let t=this.#l(),e=this.#c();if(!e||!e.data){this.dispatchEvent(new CustomEvent("chart-wc:error",{detail:{message:"No chart data found"},bubbles:!0}));return}let{data:o,tableConfig:i}=e,s=this.#d(i);this.#a();let r=this.querySelector("table");this.#h(r),this.#p();try{this.dispatchEvent(new CustomEvent("chart-wc:config-resolved",{detail:{type:this.dataset.type||r?.dataset.type||"bar",config:s},bubbles:!0})),this.#s=new t({config:s,data:o}),this.#s.mount(this.#e),this.dispatchEvent(new CustomEvent("chart-wc:render",{detail:{type:this.dataset.type||r?.dataset.type||"bar",seriesCount:Array.isArray(o)?o.length:Object.keys(o).length},bubbles:!0}))}catch(a){this.dispatchEvent(new CustomEvent("chart-wc:error",{detail:{message:a.message},bubbles:!0}))}}#a(){this.#s&&(this.#s.destroy(),this.#s=null),this.#e&&(this.#e.innerHTML="")}};pe("chart-wc",Kt);export{Kt as ChartWc};
392
+ </div>`}}),n.tooltip.text=c,n.index=p,n)}}};var Y=class extends j{static get type(){return"scatter"}static get defaults(){return{plot:{size:4}}}static specs(){return{"plot.node":{fill:"primary"}}}tooltipLocation(t,e,i){return function(s){t.nodeMap||(t.nodeMap=re(e));let n={tooltip:{},crosshair:{}},l=1,c="",u=e.querySelector("chart-plot").getBoundingClientRect(),h=(s.clientX-u.left)/u.width,d=(s.clientY-u.top)/u.height;h=Math.floor(h*100),d=Math.floor(d*100);let p=Math.floor(h/10),g=parseInt((h/10).toFixed(1).split(".")[1]),f=Math.floor(d/10),m=null,b=[[0,0],[-1,0],[1,0],[0,-1],[0,1]];for(let v=0;v<b.length;v++){let x=f+b[v][0],w=p+b[v][1];if(x>=0&&x<10&&w>=0&&w<10&&t.nodeMap[x]&&t.nodeMap[x][w]){let C=t.nodeMap[x][w][g];if(!C){for(let k=Math.max(0,g-1);k<=Math.min(9,g+1);k++)if(t.nodeMap[x][w][k]){C=t.nodeMap[x][w][k];break}}if(C){m=C;break}}}if(m)return n.crosshair.x1=-1,n.crosshair.x2=-1,n.crosshair.y1=-1,n.crosshair.y2=-1,n.tooltip.x=h+l,n.tooltip.y=d,m.forEach(v=>{let x=v.getAttribute("data-series"),w=v.getAttribute("data-index"),C=i.data[x].values[w],k=$(i.data[x].name||"Series "+x),S;if(i.config.tooltip.format)try{S=$(String(i.config.tooltip.format(k,C)))}catch(E){console.warn("SVC: tooltip.format threw an error:",E),S=$(String(C))}else S=$(String(C));c+=`<div class="svc-tooltip-content">
393
+ <span class="svc-tooltip-label-title svc-tooltip-label-title-${x}">${k}</span> : (${S})
394
+ </div>`}),n.tooltip.text=c,n}}createPlot({data:t,stats:e,subchartNoStretch:i}){t.forEach((o,s)=>{o.values.forEach((l,c)=>{let r=l[0],u=l[1],h=o.name||`Series ${s+1}`,d=new y("circle",{cx:((r-e.x.min)*e.x.scaleFactor).toFixed(3)+"%",cy:((e.y.max-u)*e.y.scaleFactor).toFixed(3)+"%",r:this.config.plot.size,class:["plot-node",`plot-${s}`,`plot-node-${s}`],"data-index":c,"data-series":s,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${h}, (${r}, ${u})`});i.appendChild(d)})})}};function re(a){let t=Array.from(new Array(10)).map(()=>Array.from(new Array(10)).map(()=>[]));return a.querySelectorAll(".svc-plot-node").forEach(e=>{let i=parseInt(e.getAttribute("data-series")||"0",10),o=parseInt(e.getAttribute("cx")||"0"),s=parseInt(e.getAttribute("cy")||"0"),n=Math.min(9,Math.floor(o/10)),l=parseInt((o/10).toFixed(1).split(".")[1]),c=Math.min(9,Math.floor(s/10));t[c][n][l]=t[c][n][l]||[],t[c][n][l][i]=e}),t}var rt=class extends Y{static get type(){return"bubble"}static get defaults(){return{plot:{maxSize:4,node:{}}}}static specs(){return{"plot.node":{fill:"primary"}}}createPlot({data:t,stats:e,subchartStretch:i,subchartNoStretch:o}){t.forEach((s,n)=>{s.values.forEach((c,r)=>{let u=c[0],h=c[1],d=c[2],p=s.name||`Series ${n+1}`,g=e.alt.max-e.alt.min||1,f=(Math.abs(d)-e.alt.min)/g,m=new y("circle",{cx:((u-e.x.min)*e.x.scaleFactor).toFixed(3)+"%",cy:((e.y.max-h)*e.y.scaleFactor).toFixed(3)+"%",r:f*this.config.plot.maxSize+.5+"%",style:`opacity: ${.7}`,class:["plot-node",`plot-${n}`,`plot-node-${n}`],"data-index":r,"data-series":n,role:"graphics-symbol","aria-roledescription":"data point","aria-label":`${p}, (${u}, ${h}), size: ${d}`});o.appendChild(m)})})}};var G=class extends Q{static get type(){return"pie"}static get defaults(){return{plot:{ring:!1,node:{label:{enabled:!0,placement:"auto",scaleBySize:!0,limitBySize:!0,multiplier:1,threshold:12,style:{"font-size":"clamp(8px, 0.6vmin, 16px)"}}}},center:{size:"40%",style:{fill:"#fff"},label:{style:{"font-size":"5vmin",transform:"translate(0%, -50%)","text-align":"center"},container:{style:{display:"flex","justify-content":"center","align-items":"center"}},title:{style:{"font-size":"7vmin"}}}}}}static specs(){return{plot:{fill:"primary"},"plot.node":{fill:"primary"}}}parse(t){t=super.parse(t);let{layoutChart:e}=t,i=this.createGraph({stretch:!0});e.appendChild(i);let o=this.createGraph({stretch:!1});e.appendChild(o),this.createPlot({layoutChart:e,subchartStretch:i,subchartNoStretch:o}),o.appendChild(new y("g"));let s=new y("style");return s.innerHTML=".plot {opacity: 1;}.svc-loading {opacity:0;}",e.appendChild(s),t}createScript(){return new N({stats:this.stats,data:this.data,config:this.config}).render()}createPlot({layoutChart:t,subchartStretch:e,subchartNoStretch:i}){let o=this.data;if(!R(o))throw new Error('SVC: Pie chart "data" must be a plain object with numeric values, e.g. { "Apples": 30, "Oranges": 70 }.');Object.keys(o).forEach(u=>{if(typeof o[u]!="number")throw new Error(`SVC: Pie chart value for "${u}" must be a number.`);if(o[u]<0)throw new Error(`SVC: Pie chart value for "${u}" is negative (${o[u]}). Pie charts require non-negative values.`)});let s=Object.keys(o).reduce((u,h)=>u+=o[h],0);if(s===0){let u=new y("text",{x:"50%",y:"50%","text-anchor":"middle","alignment-baseline":"middle",class:["loading"]});u.textContent="No data",i.appendChild(u);return}let n=0,l=0,c=this.config.plot.node.instances.map(u=>u.fill);Object.keys(o).forEach((u,h)=>{let d=o[u],p=d/s,g=n/s,f=c[l%c.length],m=this.calculateSlice(p,g),b=this.createSlice(m,f,h,d,s,u);i.appendChild(b),l++,n+=d});let r=new y("svg",{height:"100%",width:"100%",overflow:"visible",viewBox:"0 0 100 100",class:["nodeGroup"]});if(this.config.plot.ring){let h=(parseFloat(this.config.center.size)||40)/2;r.appendChild(new y("circle",{cx:"50",cy:"50",r:String(h),fill:"var(--color-surface, #fff)",class:["center"]}))}i.appendChild(r)}calculateSlice(t,e){let o=Math.cos((e+t)*2*Math.PI)*50+50,s=Math.sin((e+t)*2*Math.PI)*50+50,n=Math.cos(e*2*Math.PI)*50+50,l=Math.sin(e*2*Math.PI)*50+50,c=e*360,r=t*360+c,u=(r+c)/2,h=50+50*Math.cos(u*2*Math.PI/360),d=50+50*Math.sin(u*2*Math.PI/360);h=(h+50)*.5,d=(d+50)*.5;let p=r-c;return{radius:50,degrees:u,degreeLength:p,start:{x:o,y:s},end:{x:n,y:l},center:{x:h,y:d}}}createSlice(t,e,i,o,s,n){let{radius:l,start:c,end:r,center:u,degreeLength:h}=t,d=new y("svg",{height:"100%",width:"100%",overflow:"visible",viewBox:"0 0 100 100",class:["nodeGroup"]}),p=h>180?1:0,g=`M ${l} ${l}`,f=`L${c.x} ${c.y}`,m=`A ${l} ${l} 0 ${p} 0 ${r.x} ${r.y}`,b=(o/s*100).toFixed(0);if(d.appendChild(new y("path",{fill:e,style:"vector-effect: non-scaling-stroke",d:`${g} ${f} ${m} Z`,"alignment-baseline":"middle","text-anchor":"middle","data-key":n,"data-value":o,tabindex:"0",class:["plot-node",`plot-node-${i}`],role:"graphics-symbol","aria-roledescription":"slice","aria-label":`${n}: ${b}%`})),this.config.plot.node.label.enabled){let{multiplier:v,threshold:x,limitBySize:w,scaleBySize:C,placement:k}=this.config.plot.node.label,S=h<=x;if(k==="outside"||k==="auto"&&S){let L=t.degrees*Math.PI/180,M=55,T=62,_=50+48*Math.cos(L),Z=50+48*Math.sin(L),P=50+M*Math.cos(L),O=50+M*Math.sin(L),I=50+T*Math.cos(L),at=50+T*Math.sin(L),Gt=Math.cos(L)>=0?"start":"end";d.appendChild(new y("line",{x1:_.toFixed(1),y1:Z.toFixed(1),x2:P.toFixed(1),y2:O.toFixed(1),stroke:"var(--chart-label-color, #737373)","stroke-width":"0.5",class:["plot-leader"]}));let Ft=new y("text",{fill:"var(--chart-label-color, #737373)",x:I.toFixed(1),y:at.toFixed(1),"alignment-baseline":"middle","text-anchor":Gt,style:"font-size: 0.35em;",class:["plot-node-label",`plot-node-label-${i}`]});Ft.innerHTML=`${$(n)} ${b}%`,d.appendChild(Ft)}else if(!this.config.plot.ring){let L;C&&(L=.37*v*(h/100));let M=new y("text",{fill:"#fff",x:u.x,y:u.y,style:C?`font-size: ${A(L)}em;`:"","alignment-baseline":"middle","text-anchor":"middle",class:w&&h>x||!w?["plot-node-label"]:["plot-node-label","hide"]});M.innerHTML=b+"%",d.appendChild(M)}}return d}tooltipLocation(t,e,i){return function(s){let n=e.querySelector("chart-plot");if(!n)return null;let l=n.getBoundingClientRect(),c=n.querySelector(".svc-nodeGroup"),r=c?c.getBoundingClientRect():l,u=r.left+r.width/2,h=r.top+r.height/2,d=s.clientX-u,p=s.clientY-h,g=Math.min(r.width,r.height)/2,f=Math.sqrt(d*d+p*p);if(f>g)return null;if(i.config.plot.ring){let O=parseFloat(i.config.center.size)||40,I=g*(O/100);if(f<I)return null}let m=Math.atan2(p,d);m<0&&(m+=2*Math.PI);let b=m/(2*Math.PI),v=(s.clientX-l.left)/l.width*100,x=(s.clientY-l.top)/l.height*100,w=i.data,C=Object.keys(w),k=C.reduce(function(O,I){return O+(w[I]||0)},0);if(k===0)return null;let S=0,E=null,L=0,M=0;for(let O=0;O<C.length;O++){let I=w[C[O]]||0,at=I/k;if(b>=S&&b<S+at){E=C[O],L=I,M=O;break}S+=at}if(!E)return null;let T=(L/k*100).toFixed(1),_={tooltip:{},crosshair:{x1:-10,x2:-10,y1:-10,y2:-10}};_.tooltip.x=v,_.tooltip.y=x;let Z=$(String(E)),P;if(i.config.tooltip&&i.config.tooltip.format)try{P=$(String(i.config.tooltip.format(E,L)))}catch(O){console.warn("SVC: tooltip.format threw an error:",O),P=Z+": "+T+"%"}else P=Z+": "+T+"%";return _.tooltip.text='<div class="svc-tooltip-content"><span class="svc-tooltip-label-title svc-tooltip-label-title-'+M+'">'+Z+"</span> : "+P+"</div>",_.index=M,_}}};var lt=class extends G{static get type(){return"pie"}static get defaults(){return{plot:{ring:!0}}}};var Co=window.matchMedia("(prefers-reduced-motion: reduce)");var Ut=new Map;function Vt(a,t,e={}){let i=e.priority??10,o={impl:t,bundle:e.bundle,contract:e.contract,priority:i},s=Ut.get(a);if(customElements.get(a)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==t&&console.warn(`[VB Bundle] Tag <${a}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${a}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${a}> already registered by "${s.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}Ut.set(a,o),customElements.define(a,t)}var yt=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#t)t();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,i,o){t.addEventListener(e,i,o),this.#t.push(()=>t.removeEventListener(e,i,o))}setup(){}teardown(){}setState(t,e){this.#e||(this.#e=this.attachInternals());let i=this.#e.states;try{e?i.add(t):i.delete(t)}catch{let o=`--${t}`;e?i.add(o):i.delete(o)}}_adoptInternals(t){this.#e||(this.#e=t)}};var ae=0;function Dt(a,t,e="vb-vt"){if(!a?.isConnected||typeof document>"u"||!("startViewTransition"in document)||matchMedia("(prefers-reduced-motion: reduce)").matches)return t(),null;let i=`${e}-${++ae}`;a.style.viewTransitionName=i;let o=document.startViewTransition(t);return o.finished.finally(()=>{a.style.viewTransitionName===i&&(a.style.viewTransitionName="")}),o}function Tt(a){let t=a.textContent.trim();if(!t)return null;let e=t.replace(/[$€£¥,% ]/g,""),i=Number(e);return Number.isFinite(i)?i:null}function ce(a){let t=[...a.cells],e=-1,i=[];for(let o=0;o<t.length;o++){let s=t[o];if(!s.hasAttribute("data-chart-ignore")){if(s.hasAttribute("data-chart-label")||s.getAttribute("scope")==="row"){e=o;continue}(s.hasAttribute("data-chart-series")||!s.hasAttribute("data-chart-ignore"))&&i.push({index:o,name:s.textContent.trim()})}}if(e===-1&&t.length>0){let o=t[0];if(!o.textContent.trim()||o.tagName==="TH"){e=0;let s=i.findIndex(n=>n.index===0);s!==-1&&i.splice(s,1)}}return{labelIndex:e,columns:i}}function de(a){let t=a.querySelector("thead"),e=a.querySelector("tbody")||a,i=t?.querySelector("tr"),o=[...e.querySelectorAll("tr")];if(!i||o.length===0)return{data:[],config:{}};let{labelIndex:s,columns:n}=ce(i),l=s!==-1,c=n.map(h=>({name:h.name,values:l?{}:[]}));for(let h of o){let d=[...h.cells],p=l?d[s]?.textContent.trim()||"":null;for(let g=0;g<n.length;g++){let f=d[n[g].index],m=f?Tt(f):null;l&&p?c[g].values[p]=m??0:c[g].values.push(m??0)}}let r={},u=a.querySelector("caption");return u&&(r.title={text:u.textContent.trim(),enabled:!0}),{data:c,config:r}}function pe(a){let e=[...(a.querySelector("tbody")||a).querySelectorAll("tr")],i={};for(let n of e){let l=[...n.cells],c=n.querySelector("th"),r=c?c.textContent.trim():l[0]?.textContent.trim(),u=c?l[1]||l[0]:l[1],h=u?Tt(u):null;r&&h!=null&&(i[r]=h)}let o={},s=a.querySelector("caption");return s&&(o.title={text:s.textContent.trim(),enabled:!0}),{data:i,config:o}}function he(a){let t=a.querySelector("thead"),e=a.querySelector("tbody")||a,i=t?.querySelector("tr"),o=[...e.querySelectorAll("tr")],s=new Map;for(let r of o){let u=[...r.cells],h=r.querySelector("th"),d=h?h.textContent.trim():"Data",p=h?[...r.querySelectorAll("td")]:u.slice(1);s.has(d)||s.set(d,[]);let g=p.map(f=>Tt(f)).filter(f=>f!=null);g.length>=2&&s.get(d).push(g)}let n=[...s.entries()].map(([r,u])=>({name:r,values:u})),l={},c=a.querySelector("caption");return c&&(l.title={text:c.textContent.trim(),enabled:!0}),{data:n,config:l}}function Ht(a,t){if(!a||!a.querySelector("tbody, tr"))return{data:null,config:{}};let e=(t||"").toLowerCase();return e==="pie"||e==="ring"?pe(a):e==="scatter"||e==="bubble"?he(a):de(a)}function qt(a){let t={};return a.hasAttribute("data-tooltip")&&(t.tooltip={enabled:!0}),a.hasAttribute("data-legend")&&(t.legend={enabled:!0}),a.hasAttribute("data-grid")&&(t.guides={x:{enabled:!0},y:{enabled:!0}}),a.hasAttribute("data-labels")&&(t.plot={node:{label:{enabled:!0}}}),t}function ue(a){let t=getComputedStyle(a),e=[];for(let i=1;i<=6;i++){let o=t.getPropertyValue(`--chart-series-${i}`).trim();o&&e.push(o)}return e.length>0?e:null}function F(a,t){return a.getPropertyValue(t).trim()||null}function Ot(a){let t=getComputedStyle(a),e={},i=F(t,"--chart-label-color"),o=F(t,"--chart-font-family");(i||o)&&(e.style={},i&&(e.style.color=i),o&&(e.style["font-family"]=o));let s=F(t,"--chart-axis-color");s&&(e.axis={style:{stroke:s}});let n=F(t,"--chart-grid-color");n&&(e.guides={style:{stroke:n}});let l=F(t,"--chart-baseline-color");l&&(e.baseline={style:{stroke:l}});let c=F(t,"--chart-tick-color");c&&(e.ticks={style:{stroke:c}});let r=F(t,"--chart-title-color"),u=F(t,"--chart-title-size");(r||u)&&(e.title=e.title||{},e.title.style={},r&&(e.title.style.color=r),u&&(e.title.style["font-size"]=u));let h=F(t,"--chart-subtitle-color"),d=F(t,"--chart-subtitle-size");(h||d)&&(e.title=e.title||{},e.title.subtitle=e.title.subtitle||{},e.title.subtitle.style={},h&&(e.title.subtitle.style.color=h),d&&(e.title.subtitle.style["font-size"]=d));let p=F(t,"--chart-tooltip-bg"),g=F(t,"--chart-tooltip-color"),f=F(t,"--chart-tooltip-shadow");(p||g||f)&&(e.tooltip=e.tooltip||{},e.tooltip.label=e.tooltip.label||{},e.tooltip.label.style={},p&&(e.tooltip.label.style["background-color"]=p),g&&(e.tooltip.label.style.color=g),f&&(e.tooltip.label.style["box-shadow"]=f));let m=ue(a);return m&&(e.palette=m),e}function Yt(a){return{name:"vb-theme-bridge",hooks:{configResolved({config:t}){let e=Ot(a);e.style&&(t.style=Object.assign({},e.style,t.style)),e.palette&&!t._paletteFromUser&&(t.palette=e.palette)}}}}var fe={line:H,area:nt,bar:J,column:q,pie:G,ring:lt,scatter:Y,bubble:rt};function X(a,t=null){if(a==null)return t;if(typeof a!="string")return a;try{return JSON.parse(a)}catch{return t}}function K(a,t){if(!t||typeof t!="object"||Array.isArray(t))return a;for(let e of Object.keys(t))t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?((!a[e]||typeof a[e]!="object")&&(a[e]={}),K(a[e],t[e])):a[e]=t[e];return a}var _t=class extends yt{static get observedAttributes(){return["data-type","data-values","data-config","data-title","data-subtitle","data-legend","data-tooltip","data-palette","data-label-x","data-label-y","data-size"]}#t=null;#e=null;#s=null;#r=!1;#i=null;#o=null;set data(t){this.#t!==t&&(this.#t=t,this.#n(),this.#l("property"))}get data(){return this.#t}set config(t){this.#e!==t&&(this.#e=t,this.#n(),this.#l("property"))}get config(){return this.#e}#l(t){this.dispatchEvent(new CustomEvent("chart-wc:data-changed",{detail:{data:this.#t,config:this.#e,source:t},bubbles:!0}))}refresh(){this.#n()}toSVG(){return this.#i?.querySelector("svg")?.outerHTML||null}setup(){this.#n()}teardown(){this.#a()}attributeChangedCallback(){this.hasAttribute("data-upgraded")&&this.#n()}#n(){!this.isConnected||this.#r||(this.#r=!0,Promise.resolve().then(()=>{this.#r=!1,this.isConnected&&this.#f()}))}#c(){let t=(this.dataset.type||"").toLowerCase();return t||(t=(this.querySelector("table")?.dataset.type||"bar").toLowerCase()),fe[t]||J}#d(){if(this.#t!=null)return{data:X(this.#t,null),tableConfig:{}};let t=this.dataset.values;if(t!=null)return{data:X(t,null),tableConfig:{}};let e=this.querySelector('script[type="application/json"]');if(e)return{data:X(e.textContent,null),tableConfig:{}};let i=this.querySelector("template[data-chart-data]");if(i){let s=i.content?.textContent||i.innerHTML;return{data:X(s,null),tableConfig:{}}}let o=this.querySelector("table");if(o){let s=(this.dataset.type||o.dataset.type||"bar").toLowerCase(),{data:n,config:l}=Ht(o,s),c=qt(o),r=K(K({},l),c);return{data:n,tableConfig:r}}return null}#p(t={}){let e=Ot(this),i=X(this.#e,{})||{},o=X(this.dataset.config,{})||{},s={};s=K(s,e),s=K(s,t),s=K(s,i),s=K(s,o);let n=this.dataset.labelX,l=this.dataset.labelY;if(s.axis=s.axis||{},s.axis.label=s.axis.label||{},n!=null?s.axis.label.x={text:n,enabled:!0}:s.axis.label.x?.text||(s.axis.label.x=s.axis.label.x||{},s.axis.label.x.enabled=!1),l!=null?s.axis.label.y={text:l,enabled:!0}:s.axis.label.y?.text||(s.axis.label.y=s.axis.label.y||{},s.axis.label.y.enabled=!1),s.plot?.node?.label?.scaleBySize||(s.plot=s.plot||{},s.plot.node=s.plot.node||{},s.plot.node.label=s.plot.node.label||{},s.plot.node.label.scaleBySize=!1),this.dataset.title!=null){let c={text:this.dataset.title,enabled:!0};this.dataset.subtitle!=null&&(c.subtitle=this.dataset.subtitle),s.title=c}if(this.dataset.legend!=null&&(s.legend={enabled:!0}),this.dataset.tooltip!=null&&(s.tooltip={enabled:!0}),this.dataset.palette!=null){let c=X(this.dataset.palette,null);c&&(s.palette=c)}return this.dataset.size==="sparkline"&&(s.axis=s.axis||{},s.axis.x={...s.axis.x||{},enabled:!1},s.axis.y={...s.axis.y||{},enabled:!1},s.axis.label=s.axis.label||{},s.axis.label.x={...s.axis.label.x||{},enabled:!1},s.axis.label.y={...s.axis.label.y||{},enabled:!1},s.ticks=s.ticks||{},s.ticks.x={...s.ticks.x||{},enabled:!1},s.ticks.y={...s.ticks.y||{},enabled:!1},s.guides=s.guides||{},s.guides.x={...s.guides.x||{},enabled:!1},s.guides.y={...s.guides.y||{},enabled:!1},s.title={enabled:!1},s.legend={enabled:!1},s.tooltip={enabled:!1}),s.plugins=s.plugins||[],s.plugins.push(Yt(this)),s}#h(){if(this.#o&&this.contains(this.#o))return;this.#o=document.createElement("div"),this.#o.setAttribute("data-chart-svg",""),this.#o.setAttribute("aria-hidden","true"),this.appendChild(this.#o);let t=this.#o.attachShadow({mode:"open"}),e=document.createElement("style");e.textContent=`
395
+ .sparkline figure[data-chart-id] {
396
+ padding: 0;
397
+ background: transparent;
398
+ }
399
+ .sparkline chart-canvas {
400
+ padding: 0;
401
+ grid-template-columns: 0 0 0 1fr;
402
+ grid-template-rows: 1fr 0 0 0;
403
+ }
404
+ .sparkline chart-title,
405
+ .sparkline chart-legend,
406
+ .sparkline chart-axis,
407
+ .sparkline chart-label,
408
+ .sparkline .svc-scale-label-x,
409
+ .sparkline .svc-scale-label-y,
410
+ .sparkline .svc-origin-label,
411
+ .sparkline .svc-axis-y-label-dummy,
412
+ .sparkline .svc-ticks-x,
413
+ .sparkline .svc-ticks-y {
414
+ display: none !important;
415
+ }
416
+ `,t.appendChild(e),this.#i=document.createElement("div"),this.#i.style.cssText="width:100%;height:100%;overflow:visible;",t.appendChild(this.#i)}#u(t){if(!t)return;(this.dataset.chart||t.dataset.chart||"replace")==="replace"&&(t.classList.add("visually-hidden"),t.setAttribute("aria-hidden","false"))}#f(){let t=this.#c(),e=this.#d();if(!e||!e.data){this.dispatchEvent(new CustomEvent("chart-wc:error",{detail:{message:"No chart data found"},bubbles:!0}));return}let{data:i,tableConfig:o}=e,s=this.#p(o),n=this.querySelector("table"),l=this.#s!=null,c=()=>{this.#a(),this.#u(n),this.#h(),this.#i&&this.#i.classList.toggle("sparkline",this.dataset.size==="sparkline");try{this.dispatchEvent(new CustomEvent("chart-wc:config-resolved",{detail:{type:this.dataset.type||n?.dataset.type||"bar",config:s},bubbles:!0}));let r=new t({config:s,data:i});this.#s=r,this.#i&&r.mount(this.#i),this.dispatchEvent(new CustomEvent("chart-wc:render",{detail:{type:this.dataset.type||n?.dataset.type||"bar",seriesCount:Array.isArray(i)?i.length:Object.keys(i).length},bubbles:!0}))}catch(r){let u=r instanceof Error?r.message:String(r);this.dispatchEvent(new CustomEvent("chart-wc:error",{detail:{message:u},bubbles:!0}))}};l?Dt(this,c,"chart-vt"):c()}#a(){this.#s&&(this.#s.destroy(),this.#s=null),this.#i&&(this.#i.innerHTML="")}};Vt("chart-wc",_t);export{_t as ChartWc};
395
417
  //# sourceMappingURL=chart-wc.js.map
@@ -1,2 +1,2 @@
1
- var d=window.matchMedia("(prefers-reduced-motion: reduce)");var l=new Map;function u(n,e,t={}){let i=t.priority??10,r={impl:e,bundle:t.bundle,contract:t.contract,priority:i},s=l.get(n);if(customElements.get(n)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==e&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}l.set(n,r),customElements.define(n,e)}var o=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,i,r){e.addEventListener(t,i,r),this.#t.push(()=>e.removeEventListener(t,i,r))}setup(){}teardown(){}};var a=class extends o{static formAssociated=!0;#t;#e;#s;#r;constructor(){super(),this.#t=this.attachInternals()}setup(){if(this.#e=this.querySelector(":scope > textarea, :scope textarea[data-grow]"),this.#s=this.querySelector("[data-send]"),!this.#e)return!1;this.listen(this.#e,"keydown",this.#a),this.listen(this.#e,"input",this.#l),this.#s&&this.listen(this.#s,"click",this.#u),this.#i(),this.#n(),this.hasAttribute("autofocus")&&requestAnimationFrame(()=>this.#e.focus())}teardown(){clearTimeout(this.#r)}#a=e=>{switch(e.key){case"Enter":e.shiftKey||(e.preventDefault(),this.#o());break;case"Escape":e.preventDefault(),this.reset();break}};#l=()=>{this.#i(),this.#n(),clearTimeout(this.#r),this.#r=setTimeout(()=>{this.dispatchEvent(new CustomEvent("chat-input:input",{bubbles:!0,detail:{value:this.value,length:this.value.length}}))},100)};#u=e=>{e.preventDefault(),this.#o()};#o(){let e=this.value.trim(),t=parseInt(this.getAttribute("minlength")??"1",10)||1;e.length<t||this.disabled||(this.dispatchEvent(new CustomEvent("chat-input:send",{bubbles:!0,detail:{message:e,from:null,model:null}})),this.reset())}#i(){let e=this.value;e?this.#t.setFormValue(e):this.#t.setFormValue(null)}#n(){let e=this.value,t=parseInt(this.getAttribute("maxlength")??"4000",10)||4e3;e.length>t?this.#t.setValidity({tooLong:!0},`Message exceeds ${t} characters`,this.#e):this.#t.setValidity({})}formResetCallback(){this.reset()}formStateRestoreCallback(e){!e||!this.#e||(this.#e.value=e,this.#i(),this.#n())}get value(){return this.#e?.value??""}set value(e){this.#e&&(this.#e.value=e,this.#e.dispatchEvent(new Event("input",{bubbles:!0})),this.#i(),this.#n())}get disabled(){return this.hasAttribute("disabled")}set disabled(e){e?(this.setAttribute("disabled",""),this.#e&&(this.#e.disabled=!0),this.#s&&(this.#s.disabled=!0)):(this.removeAttribute("disabled"),this.#e&&(this.#e.disabled=!1),this.#s&&(this.#s.disabled=!1))}focus(){this.#e?.focus()}reset(){this.#e&&(this.#e.value="",this.#e.dispatchEvent(new Event("input",{bubbles:!0})),this.#i(),this.#n())}static get observedAttributes(){return["disabled"]}attributeChangedCallback(e,t,i){if(e==="disabled"){let r=i!==null;this.#e&&(this.#e.disabled=r),this.#s&&(this.#s.disabled=r)}}};u("chat-input",a);export{a as ChatInput};
1
+ var d=window.matchMedia("(prefers-reduced-motion: reduce)");var l=new Map;function u(r,e,t={}){let s=t.priority??10,n={impl:e,bundle:t.bundle,contract:t.contract,priority:s},i=l.get(r);if(customElements.get(r)){if(!i||i.priority>=s){i&&i.priority===s&&i.impl!==e&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${i.bundle}" (priority ${i.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${r}> defined by "${i.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(i&&i.priority>=s){i.priority===s&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${i.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}l.set(r,n),customElements.define(r,e)}var a=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,s,n){e.addEventListener(t,s,n),this.#t.push(()=>e.removeEventListener(t,s,n))}setup(){}teardown(){}setState(e,t){this.#e||(this.#e=this.attachInternals());let s=this.#e.states;try{t?s.add(e):s.delete(e)}catch{let n=`--${e}`;t?s.add(n):s.delete(n)}}_adoptInternals(e){this.#e||(this.#e=e)}};var o=class extends a{static formAssociated=!0;#t;#e;#s;#r;constructor(){super(),this.#t=this.attachInternals(),this._adoptInternals(this.#t)}setup(){return this.#e=this.querySelector(":scope > textarea, :scope textarea[data-grow]"),this.#s=this.querySelector("[data-send]"),this.#e?(this.listen(this.#e,"keydown",this.#o),this.listen(this.#e,"input",this.#l),this.#s&&this.listen(this.#s,"click",this.#u),this.#i(),this.#n(),this.hasAttribute("autofocus")&&requestAnimationFrame(()=>this.#e.focus()),!0):!1}teardown(){clearTimeout(this.#r)}#o=e=>{switch(e.key){case"Enter":e.shiftKey||(e.preventDefault(),this.#a());break;case"Escape":e.preventDefault(),this.reset();break}};#l=()=>{this.#i(),this.#n(),clearTimeout(this.#r),this.#r=setTimeout(()=>{this.dispatchEvent(new CustomEvent("chat-input:input",{bubbles:!0,detail:{value:this.value,length:this.value.length}}))},100)};#u=e=>{e.preventDefault(),this.#a()};#a(){let e=this.value.trim(),t=parseInt(this.getAttribute("minlength")??"1",10)||1;e.length<t||this.disabled||(this.dispatchEvent(new CustomEvent("chat-input:send",{bubbles:!0,detail:{message:e,from:null,model:null}})),this.reset())}#i(){let e=this.value;e?this.#t.setFormValue(e):this.#t.setFormValue(null)}#n(){let e=this.value,t=parseInt(this.getAttribute("maxlength")??"4000",10)||4e3;e.length>t?this.#t.setValidity({tooLong:!0},`Message exceeds ${t} characters`,this.#e):this.#t.setValidity({})}formResetCallback(){this.reset()}formStateRestoreCallback(e){!e||!this.#e||(this.#e.value=e,this.#i(),this.#n())}get value(){return this.#e?.value??""}set value(e){if(!this.#e)return;let t=e==null?"":String(e);this.#e.value!==t&&(this.#e.value=t,this.#e.dispatchEvent(new Event("input",{bubbles:!0})),this.#i(),this.#n(),this.dispatchEvent(new CustomEvent("chat-input:change",{bubbles:!0,detail:{value:t,source:"api"}})))}get disabled(){return this.hasAttribute("disabled")}set disabled(e){e?(this.setAttribute("disabled",""),this.#e&&(this.#e.disabled=!0),this.#s&&(this.#s.disabled=!0)):(this.removeAttribute("disabled"),this.#e&&(this.#e.disabled=!1),this.#s&&(this.#s.disabled=!1))}focus(){this.#e?.focus()}reset(){this.#e&&(this.#e.value="",this.#e.dispatchEvent(new Event("input",{bubbles:!0})),this.#i(),this.#n())}static get observedAttributes(){return["disabled"]}attributeChangedCallback(e,t,s){if(e==="disabled"){let n=s!==null;this.#e&&(this.#e.disabled=n),this.#s&&(this.#s.disabled=n)}}};u("chat-input",o);export{o as ChatInput};
2
2
  //# sourceMappingURL=chat-input.js.map