@ai-qa/workflow 2.0.3 → 2.0.6

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 (1036) hide show
  1. package/.cursorrules +5 -0
  2. package/.github/copilot-instructions.md +3 -0
  3. package/PROJECT_GUIDE.md +102 -0
  4. package/README.md +15 -14
  5. package/agents/router.md +29 -0
  6. package/cli.js +14 -5
  7. package/docs/application-context.md +20 -0
  8. package/install.js +12 -2
  9. package/package.json +22 -1
  10. package/qa-dashboard/.env +3 -0
  11. package/qa-dashboard/data/projects.json +9 -0
  12. package/qa-dashboard/node_modules/.bin/ejs +16 -0
  13. package/qa-dashboard/node_modules/.bin/ejs.cmd +17 -0
  14. package/qa-dashboard/node_modules/.bin/ejs.ps1 +28 -0
  15. package/qa-dashboard/node_modules/.bin/jake +16 -0
  16. package/qa-dashboard/node_modules/.bin/jake.cmd +17 -0
  17. package/qa-dashboard/node_modules/.bin/jake.ps1 +28 -0
  18. package/qa-dashboard/node_modules/.bin/mime +16 -0
  19. package/qa-dashboard/node_modules/.bin/mime.cmd +17 -0
  20. package/qa-dashboard/node_modules/.bin/mime.ps1 +28 -0
  21. package/qa-dashboard/node_modules/.package-lock.json +990 -0
  22. package/qa-dashboard/node_modules/@kurkle/color/LICENSE.md +9 -0
  23. package/qa-dashboard/node_modules/@kurkle/color/README.md +79 -0
  24. package/qa-dashboard/node_modules/@kurkle/color/dist/color.cjs +624 -0
  25. package/qa-dashboard/node_modules/@kurkle/color/dist/color.d.ts +235 -0
  26. package/qa-dashboard/node_modules/@kurkle/color/dist/color.esm.js +589 -0
  27. package/qa-dashboard/node_modules/@kurkle/color/dist/color.min.js +8 -0
  28. package/qa-dashboard/node_modules/@kurkle/color/dist/color.min.js.map +1 -0
  29. package/qa-dashboard/node_modules/@kurkle/color/package.json +77 -0
  30. package/qa-dashboard/node_modules/accepts/HISTORY.md +243 -0
  31. package/qa-dashboard/node_modules/accepts/LICENSE +23 -0
  32. package/qa-dashboard/node_modules/accepts/README.md +140 -0
  33. package/qa-dashboard/node_modules/accepts/index.js +238 -0
  34. package/qa-dashboard/node_modules/accepts/package.json +47 -0
  35. package/qa-dashboard/node_modules/array-flatten/LICENSE +21 -0
  36. package/qa-dashboard/node_modules/array-flatten/README.md +43 -0
  37. package/qa-dashboard/node_modules/array-flatten/array-flatten.js +64 -0
  38. package/qa-dashboard/node_modules/array-flatten/package.json +39 -0
  39. package/qa-dashboard/node_modules/async/CHANGELOG.md +351 -0
  40. package/qa-dashboard/node_modules/async/LICENSE +19 -0
  41. package/qa-dashboard/node_modules/async/README.md +59 -0
  42. package/qa-dashboard/node_modules/async/all.js +119 -0
  43. package/qa-dashboard/node_modules/async/allLimit.js +46 -0
  44. package/qa-dashboard/node_modules/async/allSeries.js +45 -0
  45. package/qa-dashboard/node_modules/async/any.js +122 -0
  46. package/qa-dashboard/node_modules/async/anyLimit.js +47 -0
  47. package/qa-dashboard/node_modules/async/anySeries.js +46 -0
  48. package/qa-dashboard/node_modules/async/apply.js +11 -0
  49. package/qa-dashboard/node_modules/async/applyEach.js +57 -0
  50. package/qa-dashboard/node_modules/async/applyEachSeries.js +37 -0
  51. package/qa-dashboard/node_modules/async/asyncify.js +118 -0
  52. package/qa-dashboard/node_modules/async/auto.js +333 -0
  53. package/qa-dashboard/node_modules/async/autoInject.js +182 -0
  54. package/qa-dashboard/node_modules/async/bower.json +17 -0
  55. package/qa-dashboard/node_modules/async/cargo.js +63 -0
  56. package/qa-dashboard/node_modules/async/cargoQueue.js +71 -0
  57. package/qa-dashboard/node_modules/async/compose.js +55 -0
  58. package/qa-dashboard/node_modules/async/concat.js +115 -0
  59. package/qa-dashboard/node_modules/async/concatLimit.js +60 -0
  60. package/qa-dashboard/node_modules/async/concatSeries.js +41 -0
  61. package/qa-dashboard/node_modules/async/constant.js +14 -0
  62. package/qa-dashboard/node_modules/async/detect.js +96 -0
  63. package/qa-dashboard/node_modules/async/detectLimit.js +48 -0
  64. package/qa-dashboard/node_modules/async/detectSeries.js +47 -0
  65. package/qa-dashboard/node_modules/async/dir.js +43 -0
  66. package/qa-dashboard/node_modules/async/dist/async.js +6061 -0
  67. package/qa-dashboard/node_modules/async/dist/async.min.js +1 -0
  68. package/qa-dashboard/node_modules/async/dist/async.mjs +5948 -0
  69. package/qa-dashboard/node_modules/async/doDuring.js +68 -0
  70. package/qa-dashboard/node_modules/async/doUntil.js +46 -0
  71. package/qa-dashboard/node_modules/async/doWhilst.js +68 -0
  72. package/qa-dashboard/node_modules/async/during.js +78 -0
  73. package/qa-dashboard/node_modules/async/each.js +129 -0
  74. package/qa-dashboard/node_modules/async/eachLimit.js +50 -0
  75. package/qa-dashboard/node_modules/async/eachOf.js +185 -0
  76. package/qa-dashboard/node_modules/async/eachOfLimit.js +47 -0
  77. package/qa-dashboard/node_modules/async/eachOfSeries.js +39 -0
  78. package/qa-dashboard/node_modules/async/eachSeries.js +44 -0
  79. package/qa-dashboard/node_modules/async/ensureAsync.js +67 -0
  80. package/qa-dashboard/node_modules/async/every.js +119 -0
  81. package/qa-dashboard/node_modules/async/everyLimit.js +46 -0
  82. package/qa-dashboard/node_modules/async/everySeries.js +45 -0
  83. package/qa-dashboard/node_modules/async/filter.js +93 -0
  84. package/qa-dashboard/node_modules/async/filterLimit.js +45 -0
  85. package/qa-dashboard/node_modules/async/filterSeries.js +43 -0
  86. package/qa-dashboard/node_modules/async/find.js +96 -0
  87. package/qa-dashboard/node_modules/async/findLimit.js +48 -0
  88. package/qa-dashboard/node_modules/async/findSeries.js +47 -0
  89. package/qa-dashboard/node_modules/async/flatMap.js +115 -0
  90. package/qa-dashboard/node_modules/async/flatMapLimit.js +60 -0
  91. package/qa-dashboard/node_modules/async/flatMapSeries.js +41 -0
  92. package/qa-dashboard/node_modules/async/foldl.js +153 -0
  93. package/qa-dashboard/node_modules/async/foldr.js +41 -0
  94. package/qa-dashboard/node_modules/async/forEach.js +129 -0
  95. package/qa-dashboard/node_modules/async/forEachLimit.js +50 -0
  96. package/qa-dashboard/node_modules/async/forEachOf.js +185 -0
  97. package/qa-dashboard/node_modules/async/forEachOfLimit.js +47 -0
  98. package/qa-dashboard/node_modules/async/forEachOfSeries.js +39 -0
  99. package/qa-dashboard/node_modules/async/forEachSeries.js +44 -0
  100. package/qa-dashboard/node_modules/async/forever.js +68 -0
  101. package/qa-dashboard/node_modules/async/groupBy.js +108 -0
  102. package/qa-dashboard/node_modules/async/groupByLimit.js +71 -0
  103. package/qa-dashboard/node_modules/async/groupBySeries.js +36 -0
  104. package/qa-dashboard/node_modules/async/index.js +588 -0
  105. package/qa-dashboard/node_modules/async/inject.js +153 -0
  106. package/qa-dashboard/node_modules/async/internal/DoublyLinkedList.js +92 -0
  107. package/qa-dashboard/node_modules/async/internal/Heap.js +120 -0
  108. package/qa-dashboard/node_modules/async/internal/applyEach.js +29 -0
  109. package/qa-dashboard/node_modules/async/internal/asyncEachOfLimit.js +75 -0
  110. package/qa-dashboard/node_modules/async/internal/awaitify.js +28 -0
  111. package/qa-dashboard/node_modules/async/internal/breakLoop.js +10 -0
  112. package/qa-dashboard/node_modules/async/internal/consoleFunc.js +31 -0
  113. package/qa-dashboard/node_modules/async/internal/createTester.js +40 -0
  114. package/qa-dashboard/node_modules/async/internal/eachOfLimit.js +90 -0
  115. package/qa-dashboard/node_modules/async/internal/filter.js +55 -0
  116. package/qa-dashboard/node_modules/async/internal/getIterator.js +11 -0
  117. package/qa-dashboard/node_modules/async/internal/initialParams.js +14 -0
  118. package/qa-dashboard/node_modules/async/internal/isArrayLike.js +10 -0
  119. package/qa-dashboard/node_modules/async/internal/iterator.js +57 -0
  120. package/qa-dashboard/node_modules/async/internal/map.js +30 -0
  121. package/qa-dashboard/node_modules/async/internal/once.js +17 -0
  122. package/qa-dashboard/node_modules/async/internal/onlyOnce.js +15 -0
  123. package/qa-dashboard/node_modules/async/internal/parallel.js +34 -0
  124. package/qa-dashboard/node_modules/async/internal/promiseCallback.js +23 -0
  125. package/qa-dashboard/node_modules/async/internal/queue.js +294 -0
  126. package/qa-dashboard/node_modules/async/internal/range.js +14 -0
  127. package/qa-dashboard/node_modules/async/internal/reject.js +26 -0
  128. package/qa-dashboard/node_modules/async/internal/setImmediate.js +34 -0
  129. package/qa-dashboard/node_modules/async/internal/withoutIndex.js +10 -0
  130. package/qa-dashboard/node_modules/async/internal/wrapAsync.js +34 -0
  131. package/qa-dashboard/node_modules/async/log.js +41 -0
  132. package/qa-dashboard/node_modules/async/map.js +142 -0
  133. package/qa-dashboard/node_modules/async/mapLimit.js +45 -0
  134. package/qa-dashboard/node_modules/async/mapSeries.js +44 -0
  135. package/qa-dashboard/node_modules/async/mapValues.js +152 -0
  136. package/qa-dashboard/node_modules/async/mapValuesLimit.js +61 -0
  137. package/qa-dashboard/node_modules/async/mapValuesSeries.js +37 -0
  138. package/qa-dashboard/node_modules/async/memoize.js +91 -0
  139. package/qa-dashboard/node_modules/async/nextTick.js +52 -0
  140. package/qa-dashboard/node_modules/async/package.json +75 -0
  141. package/qa-dashboard/node_modules/async/parallel.js +180 -0
  142. package/qa-dashboard/node_modules/async/parallelLimit.js +41 -0
  143. package/qa-dashboard/node_modules/async/priorityQueue.js +60 -0
  144. package/qa-dashboard/node_modules/async/queue.js +24 -0
  145. package/qa-dashboard/node_modules/async/race.js +67 -0
  146. package/qa-dashboard/node_modules/async/reduce.js +153 -0
  147. package/qa-dashboard/node_modules/async/reduceRight.js +41 -0
  148. package/qa-dashboard/node_modules/async/reflect.js +78 -0
  149. package/qa-dashboard/node_modules/async/reflectAll.js +93 -0
  150. package/qa-dashboard/node_modules/async/reject.js +87 -0
  151. package/qa-dashboard/node_modules/async/rejectLimit.js +45 -0
  152. package/qa-dashboard/node_modules/async/rejectSeries.js +43 -0
  153. package/qa-dashboard/node_modules/async/retry.js +159 -0
  154. package/qa-dashboard/node_modules/async/retryable.js +77 -0
  155. package/qa-dashboard/node_modules/async/select.js +93 -0
  156. package/qa-dashboard/node_modules/async/selectLimit.js +45 -0
  157. package/qa-dashboard/node_modules/async/selectSeries.js +43 -0
  158. package/qa-dashboard/node_modules/async/seq.js +79 -0
  159. package/qa-dashboard/node_modules/async/series.js +186 -0
  160. package/qa-dashboard/node_modules/async/setImmediate.js +45 -0
  161. package/qa-dashboard/node_modules/async/some.js +122 -0
  162. package/qa-dashboard/node_modules/async/someLimit.js +47 -0
  163. package/qa-dashboard/node_modules/async/someSeries.js +46 -0
  164. package/qa-dashboard/node_modules/async/sortBy.js +190 -0
  165. package/qa-dashboard/node_modules/async/timeout.js +89 -0
  166. package/qa-dashboard/node_modules/async/times.js +50 -0
  167. package/qa-dashboard/node_modules/async/timesLimit.js +43 -0
  168. package/qa-dashboard/node_modules/async/timesSeries.js +32 -0
  169. package/qa-dashboard/node_modules/async/transform.js +173 -0
  170. package/qa-dashboard/node_modules/async/tryEach.js +78 -0
  171. package/qa-dashboard/node_modules/async/unmemoize.js +25 -0
  172. package/qa-dashboard/node_modules/async/until.js +61 -0
  173. package/qa-dashboard/node_modules/async/waterfall.js +105 -0
  174. package/qa-dashboard/node_modules/async/whilst.js +78 -0
  175. package/qa-dashboard/node_modules/async/wrapSync.js +118 -0
  176. package/qa-dashboard/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  177. package/qa-dashboard/node_modules/balanced-match/LICENSE.md +21 -0
  178. package/qa-dashboard/node_modules/balanced-match/README.md +97 -0
  179. package/qa-dashboard/node_modules/balanced-match/index.js +62 -0
  180. package/qa-dashboard/node_modules/balanced-match/package.json +48 -0
  181. package/qa-dashboard/node_modules/basic-auth/HISTORY.md +52 -0
  182. package/qa-dashboard/node_modules/basic-auth/LICENSE +24 -0
  183. package/qa-dashboard/node_modules/basic-auth/README.md +113 -0
  184. package/qa-dashboard/node_modules/basic-auth/index.js +133 -0
  185. package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/LICENSE +21 -0
  186. package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/README.md +584 -0
  187. package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/index.d.ts +187 -0
  188. package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/index.js +62 -0
  189. package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/package.json +37 -0
  190. package/qa-dashboard/node_modules/basic-auth/package.json +41 -0
  191. package/qa-dashboard/node_modules/body-parser/HISTORY.md +686 -0
  192. package/qa-dashboard/node_modules/body-parser/LICENSE +23 -0
  193. package/qa-dashboard/node_modules/body-parser/README.md +476 -0
  194. package/qa-dashboard/node_modules/body-parser/index.js +156 -0
  195. package/qa-dashboard/node_modules/body-parser/lib/read.js +205 -0
  196. package/qa-dashboard/node_modules/body-parser/lib/types/json.js +243 -0
  197. package/qa-dashboard/node_modules/body-parser/lib/types/raw.js +101 -0
  198. package/qa-dashboard/node_modules/body-parser/lib/types/text.js +121 -0
  199. package/qa-dashboard/node_modules/body-parser/lib/types/urlencoded.js +299 -0
  200. package/qa-dashboard/node_modules/body-parser/package.json +55 -0
  201. package/qa-dashboard/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  202. package/qa-dashboard/node_modules/brace-expansion/LICENSE +21 -0
  203. package/qa-dashboard/node_modules/brace-expansion/README.md +135 -0
  204. package/qa-dashboard/node_modules/brace-expansion/index.js +205 -0
  205. package/qa-dashboard/node_modules/brace-expansion/package.json +49 -0
  206. package/qa-dashboard/node_modules/bytes/History.md +97 -0
  207. package/qa-dashboard/node_modules/bytes/LICENSE +23 -0
  208. package/qa-dashboard/node_modules/bytes/Readme.md +152 -0
  209. package/qa-dashboard/node_modules/bytes/index.js +170 -0
  210. package/qa-dashboard/node_modules/bytes/package.json +42 -0
  211. package/qa-dashboard/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  212. package/qa-dashboard/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  213. package/qa-dashboard/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  214. package/qa-dashboard/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  215. package/qa-dashboard/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  216. package/qa-dashboard/node_modules/call-bind-apply-helpers/README.md +62 -0
  217. package/qa-dashboard/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  218. package/qa-dashboard/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  219. package/qa-dashboard/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  220. package/qa-dashboard/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  221. package/qa-dashboard/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  222. package/qa-dashboard/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  223. package/qa-dashboard/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  224. package/qa-dashboard/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  225. package/qa-dashboard/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  226. package/qa-dashboard/node_modules/call-bind-apply-helpers/index.js +15 -0
  227. package/qa-dashboard/node_modules/call-bind-apply-helpers/package.json +85 -0
  228. package/qa-dashboard/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  229. package/qa-dashboard/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  230. package/qa-dashboard/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  231. package/qa-dashboard/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  232. package/qa-dashboard/node_modules/call-bound/.eslintrc +13 -0
  233. package/qa-dashboard/node_modules/call-bound/.github/FUNDING.yml +12 -0
  234. package/qa-dashboard/node_modules/call-bound/.nycrc +9 -0
  235. package/qa-dashboard/node_modules/call-bound/CHANGELOG.md +42 -0
  236. package/qa-dashboard/node_modules/call-bound/LICENSE +21 -0
  237. package/qa-dashboard/node_modules/call-bound/README.md +53 -0
  238. package/qa-dashboard/node_modules/call-bound/index.d.ts +94 -0
  239. package/qa-dashboard/node_modules/call-bound/index.js +19 -0
  240. package/qa-dashboard/node_modules/call-bound/package.json +99 -0
  241. package/qa-dashboard/node_modules/call-bound/test/index.js +61 -0
  242. package/qa-dashboard/node_modules/call-bound/tsconfig.json +10 -0
  243. package/qa-dashboard/node_modules/chart.js/LICENSE.md +9 -0
  244. package/qa-dashboard/node_modules/chart.js/README.md +38 -0
  245. package/qa-dashboard/node_modules/chart.js/auto/auto.cjs +6 -0
  246. package/qa-dashboard/node_modules/chart.js/auto/auto.d.ts +4 -0
  247. package/qa-dashboard/node_modules/chart.js/auto/auto.js +6 -0
  248. package/qa-dashboard/node_modules/chart.js/auto/package.json +14 -0
  249. package/qa-dashboard/node_modules/chart.js/dist/chart.cjs +11647 -0
  250. package/qa-dashboard/node_modules/chart.js/dist/chart.cjs.map +1 -0
  251. package/qa-dashboard/node_modules/chart.js/dist/chart.js +11599 -0
  252. package/qa-dashboard/node_modules/chart.js/dist/chart.js.map +1 -0
  253. package/qa-dashboard/node_modules/chart.js/dist/chart.umd.js +14 -0
  254. package/qa-dashboard/node_modules/chart.js/dist/chart.umd.js.map +1 -0
  255. package/qa-dashboard/node_modules/chart.js/dist/chart.umd.min.js +14 -0
  256. package/qa-dashboard/node_modules/chart.js/dist/chart.umd.min.js.map +1 -0
  257. package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.cjs +2915 -0
  258. package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.cjs.map +1 -0
  259. package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.js +2788 -0
  260. package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.js.map +1 -0
  261. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.bar.d.ts +65 -0
  262. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.bubble.d.ts +35 -0
  263. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.doughnut.d.ts +64 -0
  264. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.line.d.ts +13 -0
  265. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.pie.d.ts +3 -0
  266. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.polarArea.d.ts +35 -0
  267. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.radar.d.ts +19 -0
  268. package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.scatter.d.ts +20 -0
  269. package/qa-dashboard/node_modules/chart.js/dist/controllers/index.d.ts +8 -0
  270. package/qa-dashboard/node_modules/chart.js/dist/core/core.adapters.d.ts +67 -0
  271. package/qa-dashboard/node_modules/chart.js/dist/core/core.animation.d.ts +21 -0
  272. package/qa-dashboard/node_modules/chart.js/dist/core/core.animations.d.ts +22 -0
  273. package/qa-dashboard/node_modules/chart.js/dist/core/core.animations.defaults.d.ts +1 -0
  274. package/qa-dashboard/node_modules/chart.js/dist/core/core.animator.d.ts +67 -0
  275. package/qa-dashboard/node_modules/chart.js/dist/core/core.config.d.ts +86 -0
  276. package/qa-dashboard/node_modules/chart.js/dist/core/core.controller.d.ts +257 -0
  277. package/qa-dashboard/node_modules/chart.js/dist/core/core.datasetController.d.ts +251 -0
  278. package/qa-dashboard/node_modules/chart.js/dist/core/core.defaults.d.ts +80 -0
  279. package/qa-dashboard/node_modules/chart.js/dist/core/core.element.d.ts +21 -0
  280. package/qa-dashboard/node_modules/chart.js/dist/core/core.interaction.d.ts +92 -0
  281. package/qa-dashboard/node_modules/chart.js/dist/core/core.layouts.d.ts +88 -0
  282. package/qa-dashboard/node_modules/chart.js/dist/core/core.layouts.defaults.d.ts +1 -0
  283. package/qa-dashboard/node_modules/chart.js/dist/core/core.plugins.d.ts +64 -0
  284. package/qa-dashboard/node_modules/chart.js/dist/core/core.registry.d.ts +90 -0
  285. package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.autoskip.d.ts +19 -0
  286. package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.d.ts +343 -0
  287. package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.defaults.d.ts +1 -0
  288. package/qa-dashboard/node_modules/chart.js/dist/core/core.ticks.d.ts +31 -0
  289. package/qa-dashboard/node_modules/chart.js/dist/core/core.typedRegistry.d.ts +33 -0
  290. package/qa-dashboard/node_modules/chart.js/dist/core/index.d.ts +15 -0
  291. package/qa-dashboard/node_modules/chart.js/dist/elements/element.arc.d.ts +51 -0
  292. package/qa-dashboard/node_modules/chart.js/dist/elements/element.bar.d.ts +32 -0
  293. package/qa-dashboard/node_modules/chart.js/dist/elements/element.line.d.ts +87 -0
  294. package/qa-dashboard/node_modules/chart.js/dist/elements/element.point.d.ts +39 -0
  295. package/qa-dashboard/node_modules/chart.js/dist/elements/index.d.ts +4 -0
  296. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.canvas.d.ts +75 -0
  297. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.collection.d.ts +68 -0
  298. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.color.d.ts +13 -0
  299. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.config.d.ts +31 -0
  300. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.config.types.d.ts +41 -0
  301. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.core.d.ts +147 -0
  302. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.curve.d.ts +17 -0
  303. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.dataset.d.ts +2 -0
  304. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.dom.d.ts +48 -0
  305. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.easing.d.ts +40 -0
  306. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.extras.d.ts +45 -0
  307. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.interpolation.d.ts +22 -0
  308. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.intl.d.ts +1 -0
  309. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.math.d.ts +84 -0
  310. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.options.d.ts +97 -0
  311. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.rtl.d.ts +10 -0
  312. package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.segment.d.ts +65 -0
  313. package/qa-dashboard/node_modules/chart.js/dist/helpers/index.d.ts +16 -0
  314. package/qa-dashboard/node_modules/chart.js/dist/helpers.cjs +136 -0
  315. package/qa-dashboard/node_modules/chart.js/dist/helpers.cjs.map +1 -0
  316. package/qa-dashboard/node_modules/chart.js/dist/helpers.js +9 -0
  317. package/qa-dashboard/node_modules/chart.js/dist/helpers.js.map +1 -0
  318. package/qa-dashboard/node_modules/chart.js/dist/index.d.ts +12 -0
  319. package/qa-dashboard/node_modules/chart.js/dist/index.umd.d.ts +5 -0
  320. package/qa-dashboard/node_modules/chart.js/dist/platform/index.d.ts +5 -0
  321. package/qa-dashboard/node_modules/chart.js/dist/platform/platform.base.d.ts +63 -0
  322. package/qa-dashboard/node_modules/chart.js/dist/platform/platform.basic.d.ts +10 -0
  323. package/qa-dashboard/node_modules/chart.js/dist/platform/platform.dom.d.ts +19 -0
  324. package/qa-dashboard/node_modules/chart.js/dist/plugins/index.d.ts +7 -0
  325. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.colors.d.ts +11 -0
  326. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.decimation.d.ts +10 -0
  327. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.drawing.d.ts +1 -0
  328. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.helper.d.ts +14 -0
  329. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.options.d.ts +30 -0
  330. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.segment.d.ts +36 -0
  331. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.target.d.ts +9 -0
  332. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.target.stack.d.ts +14 -0
  333. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/index.d.ts +12 -0
  334. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/simpleArc.d.ts +12 -0
  335. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.legend.d.ts +114 -0
  336. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.subtitle.d.ts +27 -0
  337. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.title.d.ts +61 -0
  338. package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.tooltip.d.ts +288 -0
  339. package/qa-dashboard/node_modules/chart.js/dist/scales/index.d.ts +6 -0
  340. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.category.d.ts +21 -0
  341. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.linear.d.ts +10 -0
  342. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.linearbase.d.ts +20 -0
  343. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.logarithmic.d.ts +25 -0
  344. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.radialLinear.d.ts +63 -0
  345. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.time.d.ts +130 -0
  346. package/qa-dashboard/node_modules/chart.js/dist/scales/scale.timeseries.d.ts +39 -0
  347. package/qa-dashboard/node_modules/chart.js/dist/types/animation.d.ts +34 -0
  348. package/qa-dashboard/node_modules/chart.js/dist/types/basic.d.ts +3 -0
  349. package/qa-dashboard/node_modules/chart.js/dist/types/color.d.ts +1 -0
  350. package/qa-dashboard/node_modules/chart.js/dist/types/geometric.d.ts +52 -0
  351. package/qa-dashboard/node_modules/chart.js/dist/types/index.d.ts +3885 -0
  352. package/qa-dashboard/node_modules/chart.js/dist/types/layout.d.ts +65 -0
  353. package/qa-dashboard/node_modules/chart.js/dist/types/utils.d.ts +30 -0
  354. package/qa-dashboard/node_modules/chart.js/dist/types.d.ts +10 -0
  355. package/qa-dashboard/node_modules/chart.js/helpers/helpers.cjs +1 -0
  356. package/qa-dashboard/node_modules/chart.js/helpers/helpers.d.ts +1 -0
  357. package/qa-dashboard/node_modules/chart.js/helpers/helpers.js +1 -0
  358. package/qa-dashboard/node_modules/chart.js/helpers/package.json +14 -0
  359. package/qa-dashboard/node_modules/chart.js/package.json +139 -0
  360. package/qa-dashboard/node_modules/content-disposition/HISTORY.md +60 -0
  361. package/qa-dashboard/node_modules/content-disposition/LICENSE +22 -0
  362. package/qa-dashboard/node_modules/content-disposition/README.md +142 -0
  363. package/qa-dashboard/node_modules/content-disposition/index.js +458 -0
  364. package/qa-dashboard/node_modules/content-disposition/package.json +44 -0
  365. package/qa-dashboard/node_modules/content-type/HISTORY.md +29 -0
  366. package/qa-dashboard/node_modules/content-type/LICENSE +22 -0
  367. package/qa-dashboard/node_modules/content-type/README.md +94 -0
  368. package/qa-dashboard/node_modules/content-type/index.js +225 -0
  369. package/qa-dashboard/node_modules/content-type/package.json +42 -0
  370. package/qa-dashboard/node_modules/cookie/LICENSE +24 -0
  371. package/qa-dashboard/node_modules/cookie/README.md +317 -0
  372. package/qa-dashboard/node_modules/cookie/SECURITY.md +25 -0
  373. package/qa-dashboard/node_modules/cookie/index.js +335 -0
  374. package/qa-dashboard/node_modules/cookie/package.json +44 -0
  375. package/qa-dashboard/node_modules/cookie-signature/History.md +42 -0
  376. package/qa-dashboard/node_modules/cookie-signature/Readme.md +42 -0
  377. package/qa-dashboard/node_modules/cookie-signature/index.js +51 -0
  378. package/qa-dashboard/node_modules/cookie-signature/package.json +18 -0
  379. package/qa-dashboard/node_modules/debug/.coveralls.yml +1 -0
  380. package/qa-dashboard/node_modules/debug/.eslintrc +11 -0
  381. package/qa-dashboard/node_modules/debug/.travis.yml +14 -0
  382. package/qa-dashboard/node_modules/debug/CHANGELOG.md +362 -0
  383. package/qa-dashboard/node_modules/debug/LICENSE +19 -0
  384. package/qa-dashboard/node_modules/debug/Makefile +50 -0
  385. package/qa-dashboard/node_modules/debug/README.md +312 -0
  386. package/qa-dashboard/node_modules/debug/component.json +19 -0
  387. package/qa-dashboard/node_modules/debug/karma.conf.js +70 -0
  388. package/qa-dashboard/node_modules/debug/node.js +1 -0
  389. package/qa-dashboard/node_modules/debug/package.json +49 -0
  390. package/qa-dashboard/node_modules/debug/src/browser.js +185 -0
  391. package/qa-dashboard/node_modules/debug/src/debug.js +202 -0
  392. package/qa-dashboard/node_modules/debug/src/index.js +10 -0
  393. package/qa-dashboard/node_modules/debug/src/inspector-log.js +15 -0
  394. package/qa-dashboard/node_modules/debug/src/node.js +248 -0
  395. package/qa-dashboard/node_modules/depd/History.md +103 -0
  396. package/qa-dashboard/node_modules/depd/LICENSE +22 -0
  397. package/qa-dashboard/node_modules/depd/Readme.md +280 -0
  398. package/qa-dashboard/node_modules/depd/index.js +538 -0
  399. package/qa-dashboard/node_modules/depd/lib/browser/index.js +77 -0
  400. package/qa-dashboard/node_modules/depd/package.json +45 -0
  401. package/qa-dashboard/node_modules/destroy/LICENSE +23 -0
  402. package/qa-dashboard/node_modules/destroy/README.md +63 -0
  403. package/qa-dashboard/node_modules/destroy/index.js +209 -0
  404. package/qa-dashboard/node_modules/destroy/package.json +48 -0
  405. package/qa-dashboard/node_modules/dotenv/CHANGELOG.md +520 -0
  406. package/qa-dashboard/node_modules/dotenv/LICENSE +23 -0
  407. package/qa-dashboard/node_modules/dotenv/README-es.md +411 -0
  408. package/qa-dashboard/node_modules/dotenv/README.md +645 -0
  409. package/qa-dashboard/node_modules/dotenv/SECURITY.md +1 -0
  410. package/qa-dashboard/node_modules/dotenv/config.d.ts +1 -0
  411. package/qa-dashboard/node_modules/dotenv/config.js +9 -0
  412. package/qa-dashboard/node_modules/dotenv/lib/cli-options.js +17 -0
  413. package/qa-dashboard/node_modules/dotenv/lib/env-options.js +28 -0
  414. package/qa-dashboard/node_modules/dotenv/lib/main.d.ts +162 -0
  415. package/qa-dashboard/node_modules/dotenv/lib/main.js +386 -0
  416. package/qa-dashboard/node_modules/dotenv/package.json +62 -0
  417. package/qa-dashboard/node_modules/dunder-proto/.eslintrc +5 -0
  418. package/qa-dashboard/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  419. package/qa-dashboard/node_modules/dunder-proto/.nycrc +13 -0
  420. package/qa-dashboard/node_modules/dunder-proto/CHANGELOG.md +24 -0
  421. package/qa-dashboard/node_modules/dunder-proto/LICENSE +21 -0
  422. package/qa-dashboard/node_modules/dunder-proto/README.md +54 -0
  423. package/qa-dashboard/node_modules/dunder-proto/get.d.ts +5 -0
  424. package/qa-dashboard/node_modules/dunder-proto/get.js +30 -0
  425. package/qa-dashboard/node_modules/dunder-proto/package.json +76 -0
  426. package/qa-dashboard/node_modules/dunder-proto/set.d.ts +5 -0
  427. package/qa-dashboard/node_modules/dunder-proto/set.js +35 -0
  428. package/qa-dashboard/node_modules/dunder-proto/test/get.js +34 -0
  429. package/qa-dashboard/node_modules/dunder-proto/test/index.js +4 -0
  430. package/qa-dashboard/node_modules/dunder-proto/test/set.js +50 -0
  431. package/qa-dashboard/node_modules/dunder-proto/tsconfig.json +9 -0
  432. package/qa-dashboard/node_modules/ee-first/LICENSE +22 -0
  433. package/qa-dashboard/node_modules/ee-first/README.md +80 -0
  434. package/qa-dashboard/node_modules/ee-first/index.js +95 -0
  435. package/qa-dashboard/node_modules/ee-first/package.json +29 -0
  436. package/qa-dashboard/node_modules/ejs/LICENSE +202 -0
  437. package/qa-dashboard/node_modules/ejs/README.md +358 -0
  438. package/qa-dashboard/node_modules/ejs/bin/cli.js +211 -0
  439. package/qa-dashboard/node_modules/ejs/ejs.js +1746 -0
  440. package/qa-dashboard/node_modules/ejs/ejs.min.js +1 -0
  441. package/qa-dashboard/node_modules/ejs/jakefile.js +88 -0
  442. package/qa-dashboard/node_modules/ejs/lib/ejs.js +952 -0
  443. package/qa-dashboard/node_modules/ejs/lib/utils.js +250 -0
  444. package/qa-dashboard/node_modules/ejs/package.json +42 -0
  445. package/qa-dashboard/node_modules/ejs/usage.txt +24 -0
  446. package/qa-dashboard/node_modules/encodeurl/LICENSE +22 -0
  447. package/qa-dashboard/node_modules/encodeurl/README.md +109 -0
  448. package/qa-dashboard/node_modules/encodeurl/index.js +60 -0
  449. package/qa-dashboard/node_modules/encodeurl/package.json +40 -0
  450. package/qa-dashboard/node_modules/es-define-property/.eslintrc +13 -0
  451. package/qa-dashboard/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  452. package/qa-dashboard/node_modules/es-define-property/.nycrc +9 -0
  453. package/qa-dashboard/node_modules/es-define-property/CHANGELOG.md +29 -0
  454. package/qa-dashboard/node_modules/es-define-property/LICENSE +21 -0
  455. package/qa-dashboard/node_modules/es-define-property/README.md +49 -0
  456. package/qa-dashboard/node_modules/es-define-property/index.d.ts +3 -0
  457. package/qa-dashboard/node_modules/es-define-property/index.js +14 -0
  458. package/qa-dashboard/node_modules/es-define-property/package.json +81 -0
  459. package/qa-dashboard/node_modules/es-define-property/test/index.js +56 -0
  460. package/qa-dashboard/node_modules/es-define-property/tsconfig.json +10 -0
  461. package/qa-dashboard/node_modules/es-errors/.eslintrc +5 -0
  462. package/qa-dashboard/node_modules/es-errors/.github/FUNDING.yml +12 -0
  463. package/qa-dashboard/node_modules/es-errors/CHANGELOG.md +40 -0
  464. package/qa-dashboard/node_modules/es-errors/LICENSE +21 -0
  465. package/qa-dashboard/node_modules/es-errors/README.md +55 -0
  466. package/qa-dashboard/node_modules/es-errors/eval.d.ts +3 -0
  467. package/qa-dashboard/node_modules/es-errors/eval.js +4 -0
  468. package/qa-dashboard/node_modules/es-errors/index.d.ts +3 -0
  469. package/qa-dashboard/node_modules/es-errors/index.js +4 -0
  470. package/qa-dashboard/node_modules/es-errors/package.json +80 -0
  471. package/qa-dashboard/node_modules/es-errors/range.d.ts +3 -0
  472. package/qa-dashboard/node_modules/es-errors/range.js +4 -0
  473. package/qa-dashboard/node_modules/es-errors/ref.d.ts +3 -0
  474. package/qa-dashboard/node_modules/es-errors/ref.js +4 -0
  475. package/qa-dashboard/node_modules/es-errors/syntax.d.ts +3 -0
  476. package/qa-dashboard/node_modules/es-errors/syntax.js +4 -0
  477. package/qa-dashboard/node_modules/es-errors/test/index.js +19 -0
  478. package/qa-dashboard/node_modules/es-errors/tsconfig.json +49 -0
  479. package/qa-dashboard/node_modules/es-errors/type.d.ts +3 -0
  480. package/qa-dashboard/node_modules/es-errors/type.js +4 -0
  481. package/qa-dashboard/node_modules/es-errors/uri.d.ts +3 -0
  482. package/qa-dashboard/node_modules/es-errors/uri.js +4 -0
  483. package/qa-dashboard/node_modules/es-object-atoms/.eslintrc +16 -0
  484. package/qa-dashboard/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  485. package/qa-dashboard/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  486. package/qa-dashboard/node_modules/es-object-atoms/LICENSE +21 -0
  487. package/qa-dashboard/node_modules/es-object-atoms/README.md +63 -0
  488. package/qa-dashboard/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  489. package/qa-dashboard/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  490. package/qa-dashboard/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  491. package/qa-dashboard/node_modules/es-object-atoms/ToObject.js +10 -0
  492. package/qa-dashboard/node_modules/es-object-atoms/index.d.ts +3 -0
  493. package/qa-dashboard/node_modules/es-object-atoms/index.js +4 -0
  494. package/qa-dashboard/node_modules/es-object-atoms/isObject.d.ts +3 -0
  495. package/qa-dashboard/node_modules/es-object-atoms/isObject.js +6 -0
  496. package/qa-dashboard/node_modules/es-object-atoms/package.json +80 -0
  497. package/qa-dashboard/node_modules/es-object-atoms/test/index.js +38 -0
  498. package/qa-dashboard/node_modules/es-object-atoms/tsconfig.json +6 -0
  499. package/qa-dashboard/node_modules/escape-html/LICENSE +24 -0
  500. package/qa-dashboard/node_modules/escape-html/Readme.md +43 -0
  501. package/qa-dashboard/node_modules/escape-html/index.js +78 -0
  502. package/qa-dashboard/node_modules/escape-html/package.json +24 -0
  503. package/qa-dashboard/node_modules/etag/HISTORY.md +83 -0
  504. package/qa-dashboard/node_modules/etag/LICENSE +22 -0
  505. package/qa-dashboard/node_modules/etag/README.md +159 -0
  506. package/qa-dashboard/node_modules/etag/index.js +131 -0
  507. package/qa-dashboard/node_modules/etag/package.json +47 -0
  508. package/qa-dashboard/node_modules/express/History.md +3676 -0
  509. package/qa-dashboard/node_modules/express/LICENSE +24 -0
  510. package/qa-dashboard/node_modules/express/Readme.md +260 -0
  511. package/qa-dashboard/node_modules/express/index.js +11 -0
  512. package/qa-dashboard/node_modules/express/lib/application.js +661 -0
  513. package/qa-dashboard/node_modules/express/lib/express.js +116 -0
  514. package/qa-dashboard/node_modules/express/lib/middleware/init.js +43 -0
  515. package/qa-dashboard/node_modules/express/lib/middleware/query.js +47 -0
  516. package/qa-dashboard/node_modules/express/lib/request.js +525 -0
  517. package/qa-dashboard/node_modules/express/lib/response.js +1179 -0
  518. package/qa-dashboard/node_modules/express/lib/router/index.js +673 -0
  519. package/qa-dashboard/node_modules/express/lib/router/layer.js +181 -0
  520. package/qa-dashboard/node_modules/express/lib/router/route.js +230 -0
  521. package/qa-dashboard/node_modules/express/lib/utils.js +304 -0
  522. package/qa-dashboard/node_modules/express/lib/view.js +182 -0
  523. package/qa-dashboard/node_modules/express/package.json +102 -0
  524. package/qa-dashboard/node_modules/express-ejs-layouts/.travis.yml +3 -0
  525. package/qa-dashboard/node_modules/express-ejs-layouts/LICENSE +7 -0
  526. package/qa-dashboard/node_modules/express-ejs-layouts/Readme.md +266 -0
  527. package/qa-dashboard/node_modules/express-ejs-layouts/example/index.js +27 -0
  528. package/qa-dashboard/node_modules/express-ejs-layouts/example/views/layout.ejs +33 -0
  529. package/qa-dashboard/node_modules/express-ejs-layouts/example/views/view.ejs +37 -0
  530. package/qa-dashboard/node_modules/express-ejs-layouts/lib/express-layouts.js +117 -0
  531. package/qa-dashboard/node_modules/express-ejs-layouts/package.json +24 -0
  532. package/qa-dashboard/node_modules/filelist/README.md +84 -0
  533. package/qa-dashboard/node_modules/filelist/index.d.ts +110 -0
  534. package/qa-dashboard/node_modules/filelist/index.js +495 -0
  535. package/qa-dashboard/node_modules/filelist/jakefile.js +15 -0
  536. package/qa-dashboard/node_modules/filelist/package.json +28 -0
  537. package/qa-dashboard/node_modules/finalhandler/HISTORY.md +216 -0
  538. package/qa-dashboard/node_modules/finalhandler/LICENSE +22 -0
  539. package/qa-dashboard/node_modules/finalhandler/README.md +147 -0
  540. package/qa-dashboard/node_modules/finalhandler/SECURITY.md +25 -0
  541. package/qa-dashboard/node_modules/finalhandler/index.js +341 -0
  542. package/qa-dashboard/node_modules/finalhandler/package.json +47 -0
  543. package/qa-dashboard/node_modules/forwarded/HISTORY.md +21 -0
  544. package/qa-dashboard/node_modules/forwarded/LICENSE +22 -0
  545. package/qa-dashboard/node_modules/forwarded/README.md +57 -0
  546. package/qa-dashboard/node_modules/forwarded/index.js +90 -0
  547. package/qa-dashboard/node_modules/forwarded/package.json +45 -0
  548. package/qa-dashboard/node_modules/fresh/HISTORY.md +70 -0
  549. package/qa-dashboard/node_modules/fresh/LICENSE +23 -0
  550. package/qa-dashboard/node_modules/fresh/README.md +119 -0
  551. package/qa-dashboard/node_modules/fresh/index.js +137 -0
  552. package/qa-dashboard/node_modules/fresh/package.json +46 -0
  553. package/qa-dashboard/node_modules/function-bind/.eslintrc +21 -0
  554. package/qa-dashboard/node_modules/function-bind/.github/FUNDING.yml +12 -0
  555. package/qa-dashboard/node_modules/function-bind/.github/SECURITY.md +3 -0
  556. package/qa-dashboard/node_modules/function-bind/.nycrc +13 -0
  557. package/qa-dashboard/node_modules/function-bind/CHANGELOG.md +136 -0
  558. package/qa-dashboard/node_modules/function-bind/LICENSE +20 -0
  559. package/qa-dashboard/node_modules/function-bind/README.md +46 -0
  560. package/qa-dashboard/node_modules/function-bind/implementation.js +84 -0
  561. package/qa-dashboard/node_modules/function-bind/index.js +5 -0
  562. package/qa-dashboard/node_modules/function-bind/package.json +87 -0
  563. package/qa-dashboard/node_modules/function-bind/test/.eslintrc +9 -0
  564. package/qa-dashboard/node_modules/function-bind/test/index.js +252 -0
  565. package/qa-dashboard/node_modules/get-intrinsic/.eslintrc +42 -0
  566. package/qa-dashboard/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  567. package/qa-dashboard/node_modules/get-intrinsic/.nycrc +9 -0
  568. package/qa-dashboard/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  569. package/qa-dashboard/node_modules/get-intrinsic/LICENSE +21 -0
  570. package/qa-dashboard/node_modules/get-intrinsic/README.md +71 -0
  571. package/qa-dashboard/node_modules/get-intrinsic/index.js +378 -0
  572. package/qa-dashboard/node_modules/get-intrinsic/package.json +97 -0
  573. package/qa-dashboard/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  574. package/qa-dashboard/node_modules/get-proto/.eslintrc +10 -0
  575. package/qa-dashboard/node_modules/get-proto/.github/FUNDING.yml +12 -0
  576. package/qa-dashboard/node_modules/get-proto/.nycrc +9 -0
  577. package/qa-dashboard/node_modules/get-proto/CHANGELOG.md +21 -0
  578. package/qa-dashboard/node_modules/get-proto/LICENSE +21 -0
  579. package/qa-dashboard/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  580. package/qa-dashboard/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  581. package/qa-dashboard/node_modules/get-proto/README.md +50 -0
  582. package/qa-dashboard/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  583. package/qa-dashboard/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  584. package/qa-dashboard/node_modules/get-proto/index.d.ts +5 -0
  585. package/qa-dashboard/node_modules/get-proto/index.js +27 -0
  586. package/qa-dashboard/node_modules/get-proto/package.json +81 -0
  587. package/qa-dashboard/node_modules/get-proto/test/index.js +68 -0
  588. package/qa-dashboard/node_modules/get-proto/tsconfig.json +9 -0
  589. package/qa-dashboard/node_modules/gopd/.eslintrc +16 -0
  590. package/qa-dashboard/node_modules/gopd/.github/FUNDING.yml +12 -0
  591. package/qa-dashboard/node_modules/gopd/CHANGELOG.md +45 -0
  592. package/qa-dashboard/node_modules/gopd/LICENSE +21 -0
  593. package/qa-dashboard/node_modules/gopd/README.md +40 -0
  594. package/qa-dashboard/node_modules/gopd/gOPD.d.ts +1 -0
  595. package/qa-dashboard/node_modules/gopd/gOPD.js +4 -0
  596. package/qa-dashboard/node_modules/gopd/index.d.ts +5 -0
  597. package/qa-dashboard/node_modules/gopd/index.js +15 -0
  598. package/qa-dashboard/node_modules/gopd/package.json +77 -0
  599. package/qa-dashboard/node_modules/gopd/test/index.js +36 -0
  600. package/qa-dashboard/node_modules/gopd/tsconfig.json +9 -0
  601. package/qa-dashboard/node_modules/has-symbols/.eslintrc +11 -0
  602. package/qa-dashboard/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  603. package/qa-dashboard/node_modules/has-symbols/.nycrc +9 -0
  604. package/qa-dashboard/node_modules/has-symbols/CHANGELOG.md +91 -0
  605. package/qa-dashboard/node_modules/has-symbols/LICENSE +21 -0
  606. package/qa-dashboard/node_modules/has-symbols/README.md +46 -0
  607. package/qa-dashboard/node_modules/has-symbols/index.d.ts +3 -0
  608. package/qa-dashboard/node_modules/has-symbols/index.js +14 -0
  609. package/qa-dashboard/node_modules/has-symbols/package.json +111 -0
  610. package/qa-dashboard/node_modules/has-symbols/shams.d.ts +3 -0
  611. package/qa-dashboard/node_modules/has-symbols/shams.js +45 -0
  612. package/qa-dashboard/node_modules/has-symbols/test/index.js +22 -0
  613. package/qa-dashboard/node_modules/has-symbols/test/shams/core-js.js +29 -0
  614. package/qa-dashboard/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  615. package/qa-dashboard/node_modules/has-symbols/test/tests.js +58 -0
  616. package/qa-dashboard/node_modules/has-symbols/tsconfig.json +10 -0
  617. package/qa-dashboard/node_modules/hasown/.github/FUNDING.yml +12 -0
  618. package/qa-dashboard/node_modules/hasown/.nycrc +13 -0
  619. package/qa-dashboard/node_modules/hasown/CHANGELOG.md +51 -0
  620. package/qa-dashboard/node_modules/hasown/LICENSE +21 -0
  621. package/qa-dashboard/node_modules/hasown/README.md +40 -0
  622. package/qa-dashboard/node_modules/hasown/eslint.config.mjs +6 -0
  623. package/qa-dashboard/node_modules/hasown/index.d.ts +4 -0
  624. package/qa-dashboard/node_modules/hasown/index.js +8 -0
  625. package/qa-dashboard/node_modules/hasown/package.json +92 -0
  626. package/qa-dashboard/node_modules/hasown/tsconfig.json +6 -0
  627. package/qa-dashboard/node_modules/http-errors/HISTORY.md +186 -0
  628. package/qa-dashboard/node_modules/http-errors/LICENSE +23 -0
  629. package/qa-dashboard/node_modules/http-errors/README.md +169 -0
  630. package/qa-dashboard/node_modules/http-errors/index.js +290 -0
  631. package/qa-dashboard/node_modules/http-errors/package.json +54 -0
  632. package/qa-dashboard/node_modules/iconv-lite/Changelog.md +162 -0
  633. package/qa-dashboard/node_modules/iconv-lite/LICENSE +21 -0
  634. package/qa-dashboard/node_modules/iconv-lite/README.md +156 -0
  635. package/qa-dashboard/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  636. package/qa-dashboard/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  637. package/qa-dashboard/node_modules/iconv-lite/encodings/index.js +22 -0
  638. package/qa-dashboard/node_modules/iconv-lite/encodings/internal.js +188 -0
  639. package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  640. package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  641. package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  642. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  643. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  644. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  645. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  646. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  647. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  648. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  649. package/qa-dashboard/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  650. package/qa-dashboard/node_modules/iconv-lite/encodings/utf16.js +177 -0
  651. package/qa-dashboard/node_modules/iconv-lite/encodings/utf7.js +290 -0
  652. package/qa-dashboard/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  653. package/qa-dashboard/node_modules/iconv-lite/lib/extend-node.js +217 -0
  654. package/qa-dashboard/node_modules/iconv-lite/lib/index.d.ts +24 -0
  655. package/qa-dashboard/node_modules/iconv-lite/lib/index.js +153 -0
  656. package/qa-dashboard/node_modules/iconv-lite/lib/streams.js +121 -0
  657. package/qa-dashboard/node_modules/iconv-lite/package.json +46 -0
  658. package/qa-dashboard/node_modules/inherits/LICENSE +16 -0
  659. package/qa-dashboard/node_modules/inherits/README.md +42 -0
  660. package/qa-dashboard/node_modules/inherits/inherits.js +9 -0
  661. package/qa-dashboard/node_modules/inherits/inherits_browser.js +27 -0
  662. package/qa-dashboard/node_modules/inherits/package.json +29 -0
  663. package/qa-dashboard/node_modules/ipaddr.js/LICENSE +19 -0
  664. package/qa-dashboard/node_modules/ipaddr.js/README.md +233 -0
  665. package/qa-dashboard/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  666. package/qa-dashboard/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  667. package/qa-dashboard/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  668. package/qa-dashboard/node_modules/ipaddr.js/package.json +35 -0
  669. package/qa-dashboard/node_modules/jake/Makefile +44 -0
  670. package/qa-dashboard/node_modules/jake/README.md +17 -0
  671. package/qa-dashboard/node_modules/jake/bin/bash_completion.sh +41 -0
  672. package/qa-dashboard/node_modules/jake/bin/cli.js +31 -0
  673. package/qa-dashboard/node_modules/jake/jakefile.js +112 -0
  674. package/qa-dashboard/node_modules/jake/lib/api.js +409 -0
  675. package/qa-dashboard/node_modules/jake/lib/jake.js +330 -0
  676. package/qa-dashboard/node_modules/jake/lib/loader.js +174 -0
  677. package/qa-dashboard/node_modules/jake/lib/namespace.js +115 -0
  678. package/qa-dashboard/node_modules/jake/lib/package_task.js +406 -0
  679. package/qa-dashboard/node_modules/jake/lib/parseargs.js +134 -0
  680. package/qa-dashboard/node_modules/jake/lib/program.js +282 -0
  681. package/qa-dashboard/node_modules/jake/lib/publish_task.js +290 -0
  682. package/qa-dashboard/node_modules/jake/lib/rule.js +311 -0
  683. package/qa-dashboard/node_modules/jake/lib/task/directory_task.js +30 -0
  684. package/qa-dashboard/node_modules/jake/lib/task/file_task.js +126 -0
  685. package/qa-dashboard/node_modules/jake/lib/task/index.js +9 -0
  686. package/qa-dashboard/node_modules/jake/lib/task/task.js +458 -0
  687. package/qa-dashboard/node_modules/jake/lib/test_task.js +270 -0
  688. package/qa-dashboard/node_modules/jake/lib/utils/file.js +286 -0
  689. package/qa-dashboard/node_modules/jake/lib/utils/index.js +297 -0
  690. package/qa-dashboard/node_modules/jake/lib/utils/logger.js +24 -0
  691. package/qa-dashboard/node_modules/jake/package.json +44 -0
  692. package/qa-dashboard/node_modules/jake/test/integration/concurrent.js +45 -0
  693. package/qa-dashboard/node_modules/jake/test/integration/file.js +228 -0
  694. package/qa-dashboard/node_modules/jake/test/integration/file_task.js +141 -0
  695. package/qa-dashboard/node_modules/jake/test/integration/helpers.js +80 -0
  696. package/qa-dashboard/node_modules/jake/test/integration/jakefile.js +352 -0
  697. package/qa-dashboard/node_modules/jake/test/integration/jakelib/concurrent.jake.js +113 -0
  698. package/qa-dashboard/node_modules/jake/test/integration/jakelib/publish.jake.js +49 -0
  699. package/qa-dashboard/node_modules/jake/test/integration/jakelib/required_module.jake.js +10 -0
  700. package/qa-dashboard/node_modules/jake/test/integration/jakelib/rule.jake.js +222 -0
  701. package/qa-dashboard/node_modules/jake/test/integration/list_tasks.js +15 -0
  702. package/qa-dashboard/node_modules/jake/test/integration/publish_task.js +27 -0
  703. package/qa-dashboard/node_modules/jake/test/integration/rule.js +217 -0
  704. package/qa-dashboard/node_modules/jake/test/integration/selfdep.js +42 -0
  705. package/qa-dashboard/node_modules/jake/test/integration/task_base.js +167 -0
  706. package/qa-dashboard/node_modules/jake/test/unit/jakefile.js +36 -0
  707. package/qa-dashboard/node_modules/jake/test/unit/namespace.js +77 -0
  708. package/qa-dashboard/node_modules/jake/test/unit/parseargs.js +169 -0
  709. package/qa-dashboard/node_modules/jake/usage.txt +17 -0
  710. package/qa-dashboard/node_modules/math-intrinsics/.eslintrc +16 -0
  711. package/qa-dashboard/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  712. package/qa-dashboard/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  713. package/qa-dashboard/node_modules/math-intrinsics/LICENSE +21 -0
  714. package/qa-dashboard/node_modules/math-intrinsics/README.md +50 -0
  715. package/qa-dashboard/node_modules/math-intrinsics/abs.d.ts +1 -0
  716. package/qa-dashboard/node_modules/math-intrinsics/abs.js +4 -0
  717. package/qa-dashboard/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  718. package/qa-dashboard/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  719. package/qa-dashboard/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  720. package/qa-dashboard/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  721. package/qa-dashboard/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  722. package/qa-dashboard/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  723. package/qa-dashboard/node_modules/math-intrinsics/floor.d.ts +1 -0
  724. package/qa-dashboard/node_modules/math-intrinsics/floor.js +4 -0
  725. package/qa-dashboard/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  726. package/qa-dashboard/node_modules/math-intrinsics/isFinite.js +12 -0
  727. package/qa-dashboard/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  728. package/qa-dashboard/node_modules/math-intrinsics/isInteger.js +16 -0
  729. package/qa-dashboard/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  730. package/qa-dashboard/node_modules/math-intrinsics/isNaN.js +6 -0
  731. package/qa-dashboard/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  732. package/qa-dashboard/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  733. package/qa-dashboard/node_modules/math-intrinsics/max.d.ts +1 -0
  734. package/qa-dashboard/node_modules/math-intrinsics/max.js +4 -0
  735. package/qa-dashboard/node_modules/math-intrinsics/min.d.ts +1 -0
  736. package/qa-dashboard/node_modules/math-intrinsics/min.js +4 -0
  737. package/qa-dashboard/node_modules/math-intrinsics/mod.d.ts +3 -0
  738. package/qa-dashboard/node_modules/math-intrinsics/mod.js +9 -0
  739. package/qa-dashboard/node_modules/math-intrinsics/package.json +86 -0
  740. package/qa-dashboard/node_modules/math-intrinsics/pow.d.ts +1 -0
  741. package/qa-dashboard/node_modules/math-intrinsics/pow.js +4 -0
  742. package/qa-dashboard/node_modules/math-intrinsics/round.d.ts +1 -0
  743. package/qa-dashboard/node_modules/math-intrinsics/round.js +4 -0
  744. package/qa-dashboard/node_modules/math-intrinsics/sign.d.ts +3 -0
  745. package/qa-dashboard/node_modules/math-intrinsics/sign.js +11 -0
  746. package/qa-dashboard/node_modules/math-intrinsics/test/index.js +192 -0
  747. package/qa-dashboard/node_modules/math-intrinsics/tsconfig.json +3 -0
  748. package/qa-dashboard/node_modules/media-typer/HISTORY.md +22 -0
  749. package/qa-dashboard/node_modules/media-typer/LICENSE +22 -0
  750. package/qa-dashboard/node_modules/media-typer/README.md +81 -0
  751. package/qa-dashboard/node_modules/media-typer/index.js +270 -0
  752. package/qa-dashboard/node_modules/media-typer/package.json +26 -0
  753. package/qa-dashboard/node_modules/merge-descriptors/HISTORY.md +21 -0
  754. package/qa-dashboard/node_modules/merge-descriptors/LICENSE +23 -0
  755. package/qa-dashboard/node_modules/merge-descriptors/README.md +49 -0
  756. package/qa-dashboard/node_modules/merge-descriptors/index.js +60 -0
  757. package/qa-dashboard/node_modules/merge-descriptors/package.json +39 -0
  758. package/qa-dashboard/node_modules/methods/HISTORY.md +29 -0
  759. package/qa-dashboard/node_modules/methods/LICENSE +24 -0
  760. package/qa-dashboard/node_modules/methods/README.md +51 -0
  761. package/qa-dashboard/node_modules/methods/index.js +69 -0
  762. package/qa-dashboard/node_modules/methods/package.json +36 -0
  763. package/qa-dashboard/node_modules/mime/CHANGELOG.md +164 -0
  764. package/qa-dashboard/node_modules/mime/LICENSE +21 -0
  765. package/qa-dashboard/node_modules/mime/README.md +90 -0
  766. package/qa-dashboard/node_modules/mime/cli.js +8 -0
  767. package/qa-dashboard/node_modules/mime/mime.js +108 -0
  768. package/qa-dashboard/node_modules/mime/package.json +44 -0
  769. package/qa-dashboard/node_modules/mime/src/build.js +53 -0
  770. package/qa-dashboard/node_modules/mime/src/test.js +60 -0
  771. package/qa-dashboard/node_modules/mime/types.json +1 -0
  772. package/qa-dashboard/node_modules/mime-db/HISTORY.md +507 -0
  773. package/qa-dashboard/node_modules/mime-db/LICENSE +23 -0
  774. package/qa-dashboard/node_modules/mime-db/README.md +100 -0
  775. package/qa-dashboard/node_modules/mime-db/db.json +8519 -0
  776. package/qa-dashboard/node_modules/mime-db/index.js +12 -0
  777. package/qa-dashboard/node_modules/mime-db/package.json +60 -0
  778. package/qa-dashboard/node_modules/mime-types/HISTORY.md +397 -0
  779. package/qa-dashboard/node_modules/mime-types/LICENSE +23 -0
  780. package/qa-dashboard/node_modules/mime-types/README.md +113 -0
  781. package/qa-dashboard/node_modules/mime-types/index.js +188 -0
  782. package/qa-dashboard/node_modules/mime-types/package.json +44 -0
  783. package/qa-dashboard/node_modules/minimatch/LICENSE +15 -0
  784. package/qa-dashboard/node_modules/minimatch/README.md +296 -0
  785. package/qa-dashboard/node_modules/minimatch/changelog.md +35 -0
  786. package/qa-dashboard/node_modules/minimatch/lib/path.js +4 -0
  787. package/qa-dashboard/node_modules/minimatch/minimatch.js +996 -0
  788. package/qa-dashboard/node_modules/minimatch/package.json +35 -0
  789. package/qa-dashboard/node_modules/morgan/HISTORY.md +221 -0
  790. package/qa-dashboard/node_modules/morgan/LICENSE +23 -0
  791. package/qa-dashboard/node_modules/morgan/README.md +436 -0
  792. package/qa-dashboard/node_modules/morgan/index.js +544 -0
  793. package/qa-dashboard/node_modules/morgan/node_modules/on-finished/HISTORY.md +88 -0
  794. package/qa-dashboard/node_modules/morgan/node_modules/on-finished/LICENSE +23 -0
  795. package/qa-dashboard/node_modules/morgan/node_modules/on-finished/README.md +154 -0
  796. package/qa-dashboard/node_modules/morgan/node_modules/on-finished/index.js +196 -0
  797. package/qa-dashboard/node_modules/morgan/node_modules/on-finished/package.json +31 -0
  798. package/qa-dashboard/node_modules/morgan/package.json +52 -0
  799. package/qa-dashboard/node_modules/ms/index.js +152 -0
  800. package/qa-dashboard/node_modules/ms/license.md +21 -0
  801. package/qa-dashboard/node_modules/ms/package.json +37 -0
  802. package/qa-dashboard/node_modules/ms/readme.md +51 -0
  803. package/qa-dashboard/node_modules/negotiator/HISTORY.md +108 -0
  804. package/qa-dashboard/node_modules/negotiator/LICENSE +24 -0
  805. package/qa-dashboard/node_modules/negotiator/README.md +203 -0
  806. package/qa-dashboard/node_modules/negotiator/index.js +82 -0
  807. package/qa-dashboard/node_modules/negotiator/lib/charset.js +169 -0
  808. package/qa-dashboard/node_modules/negotiator/lib/encoding.js +184 -0
  809. package/qa-dashboard/node_modules/negotiator/lib/language.js +179 -0
  810. package/qa-dashboard/node_modules/negotiator/lib/mediaType.js +294 -0
  811. package/qa-dashboard/node_modules/negotiator/package.json +42 -0
  812. package/qa-dashboard/node_modules/object-inspect/.eslintrc +53 -0
  813. package/qa-dashboard/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  814. package/qa-dashboard/node_modules/object-inspect/.nycrc +13 -0
  815. package/qa-dashboard/node_modules/object-inspect/CHANGELOG.md +424 -0
  816. package/qa-dashboard/node_modules/object-inspect/LICENSE +21 -0
  817. package/qa-dashboard/node_modules/object-inspect/example/all.js +23 -0
  818. package/qa-dashboard/node_modules/object-inspect/example/circular.js +6 -0
  819. package/qa-dashboard/node_modules/object-inspect/example/fn.js +5 -0
  820. package/qa-dashboard/node_modules/object-inspect/example/inspect.js +10 -0
  821. package/qa-dashboard/node_modules/object-inspect/index.js +544 -0
  822. package/qa-dashboard/node_modules/object-inspect/package-support.json +20 -0
  823. package/qa-dashboard/node_modules/object-inspect/package.json +105 -0
  824. package/qa-dashboard/node_modules/object-inspect/readme.markdown +84 -0
  825. package/qa-dashboard/node_modules/object-inspect/test/bigint.js +58 -0
  826. package/qa-dashboard/node_modules/object-inspect/test/browser/dom.js +15 -0
  827. package/qa-dashboard/node_modules/object-inspect/test/circular.js +16 -0
  828. package/qa-dashboard/node_modules/object-inspect/test/deep.js +12 -0
  829. package/qa-dashboard/node_modules/object-inspect/test/element.js +53 -0
  830. package/qa-dashboard/node_modules/object-inspect/test/err.js +48 -0
  831. package/qa-dashboard/node_modules/object-inspect/test/fakes.js +29 -0
  832. package/qa-dashboard/node_modules/object-inspect/test/fn.js +76 -0
  833. package/qa-dashboard/node_modules/object-inspect/test/global.js +17 -0
  834. package/qa-dashboard/node_modules/object-inspect/test/has.js +15 -0
  835. package/qa-dashboard/node_modules/object-inspect/test/holes.js +15 -0
  836. package/qa-dashboard/node_modules/object-inspect/test/indent-option.js +271 -0
  837. package/qa-dashboard/node_modules/object-inspect/test/inspect.js +139 -0
  838. package/qa-dashboard/node_modules/object-inspect/test/lowbyte.js +12 -0
  839. package/qa-dashboard/node_modules/object-inspect/test/number.js +58 -0
  840. package/qa-dashboard/node_modules/object-inspect/test/quoteStyle.js +26 -0
  841. package/qa-dashboard/node_modules/object-inspect/test/toStringTag.js +40 -0
  842. package/qa-dashboard/node_modules/object-inspect/test/undef.js +12 -0
  843. package/qa-dashboard/node_modules/object-inspect/test/values.js +261 -0
  844. package/qa-dashboard/node_modules/object-inspect/test-core-js.js +26 -0
  845. package/qa-dashboard/node_modules/object-inspect/util.inspect.js +1 -0
  846. package/qa-dashboard/node_modules/on-finished/HISTORY.md +98 -0
  847. package/qa-dashboard/node_modules/on-finished/LICENSE +23 -0
  848. package/qa-dashboard/node_modules/on-finished/README.md +162 -0
  849. package/qa-dashboard/node_modules/on-finished/index.js +234 -0
  850. package/qa-dashboard/node_modules/on-finished/package.json +39 -0
  851. package/qa-dashboard/node_modules/on-headers/HISTORY.md +26 -0
  852. package/qa-dashboard/node_modules/on-headers/LICENSE +22 -0
  853. package/qa-dashboard/node_modules/on-headers/README.md +81 -0
  854. package/qa-dashboard/node_modules/on-headers/index.js +180 -0
  855. package/qa-dashboard/node_modules/on-headers/package.json +44 -0
  856. package/qa-dashboard/node_modules/parseurl/HISTORY.md +58 -0
  857. package/qa-dashboard/node_modules/parseurl/LICENSE +24 -0
  858. package/qa-dashboard/node_modules/parseurl/README.md +133 -0
  859. package/qa-dashboard/node_modules/parseurl/index.js +158 -0
  860. package/qa-dashboard/node_modules/parseurl/package.json +40 -0
  861. package/qa-dashboard/node_modules/path-to-regexp/LICENSE +21 -0
  862. package/qa-dashboard/node_modules/path-to-regexp/Readme.md +35 -0
  863. package/qa-dashboard/node_modules/path-to-regexp/index.js +158 -0
  864. package/qa-dashboard/node_modules/path-to-regexp/package.json +30 -0
  865. package/qa-dashboard/node_modules/picocolors/LICENSE +15 -0
  866. package/qa-dashboard/node_modules/picocolors/README.md +21 -0
  867. package/qa-dashboard/node_modules/picocolors/package.json +25 -0
  868. package/qa-dashboard/node_modules/picocolors/picocolors.browser.js +4 -0
  869. package/qa-dashboard/node_modules/picocolors/picocolors.d.ts +5 -0
  870. package/qa-dashboard/node_modules/picocolors/picocolors.js +75 -0
  871. package/qa-dashboard/node_modules/picocolors/types.d.ts +51 -0
  872. package/qa-dashboard/node_modules/proxy-addr/HISTORY.md +161 -0
  873. package/qa-dashboard/node_modules/proxy-addr/LICENSE +22 -0
  874. package/qa-dashboard/node_modules/proxy-addr/README.md +139 -0
  875. package/qa-dashboard/node_modules/proxy-addr/index.js +327 -0
  876. package/qa-dashboard/node_modules/proxy-addr/package.json +47 -0
  877. package/qa-dashboard/node_modules/qs/.editorconfig +46 -0
  878. package/qa-dashboard/node_modules/qs/.github/FUNDING.yml +12 -0
  879. package/qa-dashboard/node_modules/qs/.github/SECURITY.md +11 -0
  880. package/qa-dashboard/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  881. package/qa-dashboard/node_modules/qs/.nycrc +13 -0
  882. package/qa-dashboard/node_modules/qs/CHANGELOG.md +822 -0
  883. package/qa-dashboard/node_modules/qs/LICENSE.md +29 -0
  884. package/qa-dashboard/node_modules/qs/README.md +758 -0
  885. package/qa-dashboard/node_modules/qs/dist/qs.js +141 -0
  886. package/qa-dashboard/node_modules/qs/eslint.config.mjs +57 -0
  887. package/qa-dashboard/node_modules/qs/lib/formats.js +23 -0
  888. package/qa-dashboard/node_modules/qs/lib/index.js +11 -0
  889. package/qa-dashboard/node_modules/qs/lib/parse.js +403 -0
  890. package/qa-dashboard/node_modules/qs/lib/stringify.js +363 -0
  891. package/qa-dashboard/node_modules/qs/lib/utils.js +342 -0
  892. package/qa-dashboard/node_modules/qs/package.json +94 -0
  893. package/qa-dashboard/node_modules/qs/test/empty-keys-cases.js +267 -0
  894. package/qa-dashboard/node_modules/qs/test/parse.js +1703 -0
  895. package/qa-dashboard/node_modules/qs/test/stringify.js +1448 -0
  896. package/qa-dashboard/node_modules/qs/test/utils.js +432 -0
  897. package/qa-dashboard/node_modules/range-parser/HISTORY.md +56 -0
  898. package/qa-dashboard/node_modules/range-parser/LICENSE +23 -0
  899. package/qa-dashboard/node_modules/range-parser/README.md +84 -0
  900. package/qa-dashboard/node_modules/range-parser/index.js +162 -0
  901. package/qa-dashboard/node_modules/range-parser/package.json +44 -0
  902. package/qa-dashboard/node_modules/raw-body/LICENSE +22 -0
  903. package/qa-dashboard/node_modules/raw-body/README.md +223 -0
  904. package/qa-dashboard/node_modules/raw-body/index.d.ts +87 -0
  905. package/qa-dashboard/node_modules/raw-body/index.js +336 -0
  906. package/qa-dashboard/node_modules/raw-body/package.json +47 -0
  907. package/qa-dashboard/node_modules/safe-buffer/LICENSE +21 -0
  908. package/qa-dashboard/node_modules/safe-buffer/README.md +584 -0
  909. package/qa-dashboard/node_modules/safe-buffer/index.d.ts +187 -0
  910. package/qa-dashboard/node_modules/safe-buffer/index.js +65 -0
  911. package/qa-dashboard/node_modules/safe-buffer/package.json +51 -0
  912. package/qa-dashboard/node_modules/safer-buffer/LICENSE +21 -0
  913. package/qa-dashboard/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  914. package/qa-dashboard/node_modules/safer-buffer/Readme.md +156 -0
  915. package/qa-dashboard/node_modules/safer-buffer/dangerous.js +58 -0
  916. package/qa-dashboard/node_modules/safer-buffer/package.json +34 -0
  917. package/qa-dashboard/node_modules/safer-buffer/safer.js +77 -0
  918. package/qa-dashboard/node_modules/safer-buffer/tests.js +406 -0
  919. package/qa-dashboard/node_modules/send/HISTORY.md +538 -0
  920. package/qa-dashboard/node_modules/send/LICENSE +23 -0
  921. package/qa-dashboard/node_modules/send/README.md +327 -0
  922. package/qa-dashboard/node_modules/send/SECURITY.md +24 -0
  923. package/qa-dashboard/node_modules/send/index.js +1142 -0
  924. package/qa-dashboard/node_modules/send/node_modules/ms/index.js +162 -0
  925. package/qa-dashboard/node_modules/send/node_modules/ms/license.md +21 -0
  926. package/qa-dashboard/node_modules/send/node_modules/ms/package.json +38 -0
  927. package/qa-dashboard/node_modules/send/node_modules/ms/readme.md +59 -0
  928. package/qa-dashboard/node_modules/send/package.json +62 -0
  929. package/qa-dashboard/node_modules/serve-static/HISTORY.md +493 -0
  930. package/qa-dashboard/node_modules/serve-static/LICENSE +25 -0
  931. package/qa-dashboard/node_modules/serve-static/README.md +257 -0
  932. package/qa-dashboard/node_modules/serve-static/index.js +209 -0
  933. package/qa-dashboard/node_modules/serve-static/package.json +42 -0
  934. package/qa-dashboard/node_modules/setprototypeof/LICENSE +13 -0
  935. package/qa-dashboard/node_modules/setprototypeof/README.md +31 -0
  936. package/qa-dashboard/node_modules/setprototypeof/index.d.ts +2 -0
  937. package/qa-dashboard/node_modules/setprototypeof/index.js +17 -0
  938. package/qa-dashboard/node_modules/setprototypeof/package.json +38 -0
  939. package/qa-dashboard/node_modules/setprototypeof/test/index.js +24 -0
  940. package/qa-dashboard/node_modules/side-channel/.editorconfig +9 -0
  941. package/qa-dashboard/node_modules/side-channel/.eslintrc +12 -0
  942. package/qa-dashboard/node_modules/side-channel/.github/FUNDING.yml +12 -0
  943. package/qa-dashboard/node_modules/side-channel/.nycrc +13 -0
  944. package/qa-dashboard/node_modules/side-channel/CHANGELOG.md +110 -0
  945. package/qa-dashboard/node_modules/side-channel/LICENSE +21 -0
  946. package/qa-dashboard/node_modules/side-channel/README.md +61 -0
  947. package/qa-dashboard/node_modules/side-channel/index.d.ts +14 -0
  948. package/qa-dashboard/node_modules/side-channel/index.js +43 -0
  949. package/qa-dashboard/node_modules/side-channel/package.json +85 -0
  950. package/qa-dashboard/node_modules/side-channel/test/index.js +104 -0
  951. package/qa-dashboard/node_modules/side-channel/tsconfig.json +9 -0
  952. package/qa-dashboard/node_modules/side-channel-list/.editorconfig +9 -0
  953. package/qa-dashboard/node_modules/side-channel-list/.eslintrc +11 -0
  954. package/qa-dashboard/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  955. package/qa-dashboard/node_modules/side-channel-list/.nycrc +13 -0
  956. package/qa-dashboard/node_modules/side-channel-list/CHANGELOG.md +36 -0
  957. package/qa-dashboard/node_modules/side-channel-list/LICENSE +21 -0
  958. package/qa-dashboard/node_modules/side-channel-list/README.md +62 -0
  959. package/qa-dashboard/node_modules/side-channel-list/index.d.ts +13 -0
  960. package/qa-dashboard/node_modules/side-channel-list/index.js +111 -0
  961. package/qa-dashboard/node_modules/side-channel-list/list.d.ts +14 -0
  962. package/qa-dashboard/node_modules/side-channel-list/package.json +77 -0
  963. package/qa-dashboard/node_modules/side-channel-list/test/index.js +154 -0
  964. package/qa-dashboard/node_modules/side-channel-list/tsconfig.json +9 -0
  965. package/qa-dashboard/node_modules/side-channel-map/.editorconfig +9 -0
  966. package/qa-dashboard/node_modules/side-channel-map/.eslintrc +11 -0
  967. package/qa-dashboard/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  968. package/qa-dashboard/node_modules/side-channel-map/.nycrc +13 -0
  969. package/qa-dashboard/node_modules/side-channel-map/CHANGELOG.md +22 -0
  970. package/qa-dashboard/node_modules/side-channel-map/LICENSE +21 -0
  971. package/qa-dashboard/node_modules/side-channel-map/README.md +62 -0
  972. package/qa-dashboard/node_modules/side-channel-map/index.d.ts +15 -0
  973. package/qa-dashboard/node_modules/side-channel-map/index.js +68 -0
  974. package/qa-dashboard/node_modules/side-channel-map/package.json +80 -0
  975. package/qa-dashboard/node_modules/side-channel-map/test/index.js +114 -0
  976. package/qa-dashboard/node_modules/side-channel-map/tsconfig.json +9 -0
  977. package/qa-dashboard/node_modules/side-channel-weakmap/.editorconfig +9 -0
  978. package/qa-dashboard/node_modules/side-channel-weakmap/.eslintrc +12 -0
  979. package/qa-dashboard/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  980. package/qa-dashboard/node_modules/side-channel-weakmap/.nycrc +13 -0
  981. package/qa-dashboard/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  982. package/qa-dashboard/node_modules/side-channel-weakmap/LICENSE +21 -0
  983. package/qa-dashboard/node_modules/side-channel-weakmap/README.md +62 -0
  984. package/qa-dashboard/node_modules/side-channel-weakmap/index.d.ts +15 -0
  985. package/qa-dashboard/node_modules/side-channel-weakmap/index.js +84 -0
  986. package/qa-dashboard/node_modules/side-channel-weakmap/package.json +87 -0
  987. package/qa-dashboard/node_modules/side-channel-weakmap/test/index.js +114 -0
  988. package/qa-dashboard/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  989. package/qa-dashboard/node_modules/statuses/HISTORY.md +87 -0
  990. package/qa-dashboard/node_modules/statuses/LICENSE +23 -0
  991. package/qa-dashboard/node_modules/statuses/README.md +139 -0
  992. package/qa-dashboard/node_modules/statuses/codes.json +65 -0
  993. package/qa-dashboard/node_modules/statuses/index.js +146 -0
  994. package/qa-dashboard/node_modules/statuses/package.json +49 -0
  995. package/qa-dashboard/node_modules/toidentifier/HISTORY.md +9 -0
  996. package/qa-dashboard/node_modules/toidentifier/LICENSE +21 -0
  997. package/qa-dashboard/node_modules/toidentifier/README.md +61 -0
  998. package/qa-dashboard/node_modules/toidentifier/index.js +32 -0
  999. package/qa-dashboard/node_modules/toidentifier/package.json +38 -0
  1000. package/qa-dashboard/node_modules/type-is/HISTORY.md +259 -0
  1001. package/qa-dashboard/node_modules/type-is/LICENSE +23 -0
  1002. package/qa-dashboard/node_modules/type-is/README.md +170 -0
  1003. package/qa-dashboard/node_modules/type-is/index.js +266 -0
  1004. package/qa-dashboard/node_modules/type-is/package.json +45 -0
  1005. package/qa-dashboard/node_modules/unpipe/HISTORY.md +4 -0
  1006. package/qa-dashboard/node_modules/unpipe/LICENSE +22 -0
  1007. package/qa-dashboard/node_modules/unpipe/README.md +43 -0
  1008. package/qa-dashboard/node_modules/unpipe/index.js +69 -0
  1009. package/qa-dashboard/node_modules/unpipe/package.json +27 -0
  1010. package/qa-dashboard/node_modules/utils-merge/LICENSE +20 -0
  1011. package/qa-dashboard/node_modules/utils-merge/README.md +34 -0
  1012. package/qa-dashboard/node_modules/utils-merge/index.js +23 -0
  1013. package/qa-dashboard/node_modules/utils-merge/package.json +40 -0
  1014. package/qa-dashboard/node_modules/vary/HISTORY.md +39 -0
  1015. package/qa-dashboard/node_modules/vary/LICENSE +22 -0
  1016. package/qa-dashboard/node_modules/vary/README.md +101 -0
  1017. package/qa-dashboard/node_modules/vary/index.js +149 -0
  1018. package/qa-dashboard/node_modules/vary/package.json +43 -0
  1019. package/qa-dashboard/views/stories.ejs +2 -2
  1020. package/qa-dashboard/views/story.ejs +3 -6
  1021. package/test-results/run-2026-05-18T14-50-14/execution-output.json +3 -0
  1022. package/test-results/run-2026-05-18T14-50-43/execution-output.json +2 -0
  1023. package/test-results/run-2026-05-18T14-50-43/execution-result.json +11 -0
  1024. package/test-results/run-2026-05-18T14-50-43/final-test-report.md +42 -0
  1025. package/test-results/run-2026-05-18T14-50-43/healing-report.json +15 -0
  1026. package/test-results/run-2026-05-18T14-51-36/execution-output.json +2 -0
  1027. package/test-results/run-2026-05-18T14-51-36/execution-result.json +11 -0
  1028. package/test-results/run-2026-05-18T14-51-36/final-test-report.md +42 -0
  1029. package/test-results/run-2026-05-18T14-51-36/healing-report.json +15 -0
  1030. package/.opencode/agents/qa-generator.md +0 -19
  1031. package/.opencode/agents/qa-healer.md +0 -25
  1032. package/.opencode/agents/qa-planner.md +0 -20
  1033. package/.qa-workflow.json +0 -22
  1034. package/DESIGN.md +0 -0
  1035. package/opencode.json +0 -31
  1036. package/specs/us-expense-01-test-plan.md +0 -55
@@ -0,0 +1,3885 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import {DeepPartial, DistributiveArray, UnionToIntersection} from './utils.js';
3
+
4
+ import {TimeUnit} from '../core/core.adapters.js';
5
+ import PointElement from '../elements/element.point.js';
6
+ import {EasingFunction} from '../helpers/helpers.easing.js';
7
+ import {AnimationEvent} from './animation.js';
8
+ import {AnyObject, EmptyObject} from './basic.js';
9
+ import {Color} from './color.js';
10
+ import Element from '../core/core.element.js';
11
+ import {ChartArea, Padding, Point} from './geometric.js';
12
+ import {LayoutItem, LayoutPosition} from './layout.js';
13
+ import {ColorsPluginOptions} from '../plugins/plugin.colors.js';
14
+
15
+ export {EasingFunction} from '../helpers/helpers.easing.js';
16
+ export {default as ArcElement, ArcProps} from '../elements/element.arc.js';
17
+ export {default as PointElement, PointProps} from '../elements/element.point.js';
18
+ export {Animation, Animations, Animator, AnimationEvent} from './animation.js';
19
+ export {Color} from './color.js';
20
+ export {ChartArea, Point, TRBL} from './geometric.js';
21
+ export {LayoutItem, LayoutPosition} from './layout.js';
22
+
23
+ export interface ScriptableContext<TType extends ChartType> {
24
+ active: boolean;
25
+ chart: Chart;
26
+ dataIndex: number;
27
+ dataset: UnionToIntersection<ChartDataset<TType>>;
28
+ datasetIndex: number;
29
+ type: string;
30
+ mode: string;
31
+ parsed: UnionToIntersection<ParsedDataType<TType>>;
32
+ raw: unknown;
33
+ }
34
+
35
+ export interface ScriptableLineSegmentContext {
36
+ type: 'segment',
37
+ p0: PointElement,
38
+ p1: PointElement,
39
+ p0DataIndex: number,
40
+ p1DataIndex: number,
41
+ datasetIndex: number
42
+ }
43
+
44
+ export type Scriptable<T, TContext> = T | ((ctx: TContext, options: AnyObject) => T | undefined);
45
+ export type ScriptableOptions<T, TContext> = { [P in keyof T]: Scriptable<T[P], TContext> };
46
+ export type ScriptableAndScriptableOptions<T, TContext> = Scriptable<T, TContext> | ScriptableOptions<T, TContext>;
47
+ export type ScriptableAndArray<T, TContext> = readonly T[] | Scriptable<T, TContext>;
48
+ export type ScriptableAndArrayOptions<T, TContext> = { [P in keyof T]: ScriptableAndArray<T[P], TContext> };
49
+
50
+ export interface ParsingOptions {
51
+ /**
52
+ * How to parse the dataset. The parsing can be disabled by specifying parsing: false at chart options or dataset. If parsing is disabled, data must be sorted and in the formats the associated chart type and scales use internally.
53
+ */
54
+ parsing:
55
+ {
56
+ [key: string]: string;
57
+ }
58
+ | false;
59
+
60
+ /**
61
+ * Chart.js is fastest if you provide data with indices that are unique, sorted, and consistent across datasets and provide the normalized: true option to let Chart.js know that you have done so.
62
+ */
63
+ normalized: boolean;
64
+ }
65
+
66
+ export interface ControllerDatasetOptions extends ParsingOptions {
67
+ /**
68
+ * The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts.
69
+ * @default 'x'
70
+ */
71
+ indexAxis: 'x' | 'y';
72
+ /**
73
+ * How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
74
+ */
75
+ clip: number | ChartArea | false;
76
+ /**
77
+ * The label for the dataset which appears in the legend and tooltips.
78
+ */
79
+ label: string;
80
+ /**
81
+ * The drawing order of dataset. Also affects order for stacking, tooltip and legend.
82
+ */
83
+ order: number;
84
+
85
+ /**
86
+ * The ID of the group to which this dataset belongs to (when stacked, each group will be a separate stack).
87
+ */
88
+ stack: string;
89
+ /**
90
+ * Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart.
91
+ * @default false
92
+ */
93
+ hidden: boolean;
94
+ }
95
+
96
+ export interface BarControllerDatasetOptions
97
+ extends ControllerDatasetOptions,
98
+ ScriptableAndArrayOptions<BarOptions, ScriptableContext<'bar'>>,
99
+ ScriptableAndArrayOptions<CommonHoverOptions, ScriptableContext<'bar'>>,
100
+ AnimationOptions<'bar'> {
101
+ /**
102
+ * The ID of the x axis to plot this dataset on.
103
+ */
104
+ xAxisID: string;
105
+ /**
106
+ * The ID of the y axis to plot this dataset on.
107
+ */
108
+ yAxisID: string;
109
+
110
+ /**
111
+ * Percent (0-1) of the available width each bar should be within the category width. 1.0 will take the whole category width and put the bars right next to each other.
112
+ * @default 0.9
113
+ */
114
+ barPercentage: number;
115
+ /**
116
+ * Percent (0-1) of the available width each category should be within the sample width.
117
+ * @default 0.8
118
+ */
119
+ categoryPercentage: number;
120
+
121
+ /**
122
+ * Manually set width of each bar in pixels. If set to 'flex', it computes "optimal" sample widths that globally arrange bars side by side. If not set (default), bars are equally sized based on the smallest interval.
123
+ */
124
+ barThickness: number | 'flex';
125
+
126
+ /**
127
+ * Set this to ensure that bars are not sized thicker than this.
128
+ */
129
+ maxBarThickness: number;
130
+
131
+ /**
132
+ * Set this to ensure that bars have a minimum length in pixels.
133
+ */
134
+ minBarLength: number;
135
+
136
+ /**
137
+ * Point style for the legend
138
+ * @default 'circle;
139
+ */
140
+ pointStyle: PointStyle;
141
+
142
+ /**
143
+ * Should the bars be grouped on index axis
144
+ * @default true
145
+ */
146
+ grouped: boolean;
147
+ }
148
+
149
+ export interface BarControllerChartOptions {
150
+ /**
151
+ * Should null or undefined values be omitted from drawing
152
+ */
153
+ skipNull?: boolean;
154
+ }
155
+
156
+ export type BarController = DatasetController
157
+ export declare const BarController: ChartComponent & {
158
+ prototype: BarController;
159
+ new (chart: Chart, datasetIndex: number): BarController;
160
+ };
161
+
162
+ export interface BubbleControllerDatasetOptions
163
+ extends ControllerDatasetOptions,
164
+ ScriptableAndArrayOptions<PointOptions, ScriptableContext<'bubble'>>,
165
+ ScriptableAndArrayOptions<PointHoverOptions, ScriptableContext<'bubble'>> {
166
+ /**
167
+ * The ID of the x axis to plot this dataset on.
168
+ */
169
+ xAxisID: string;
170
+ /**
171
+ * The ID of the y axis to plot this dataset on.
172
+ */
173
+ yAxisID: string;
174
+ }
175
+
176
+ export interface BubbleDataPoint extends Point {
177
+ /**
178
+ * Bubble radius in pixels (not scaled).
179
+ */
180
+ r?: number;
181
+ }
182
+
183
+ export type BubbleController = DatasetController
184
+ export declare const BubbleController: ChartComponent & {
185
+ prototype: BubbleController;
186
+ new (chart: Chart, datasetIndex: number): BubbleController;
187
+ };
188
+
189
+ export interface LineControllerDatasetOptions
190
+ extends ControllerDatasetOptions,
191
+ ScriptableAndArrayOptions<PointPrefixedOptions, ScriptableContext<'line'>>,
192
+ ScriptableAndArrayOptions<PointPrefixedHoverOptions, ScriptableContext<'line'>>,
193
+ ScriptableOptions<Omit<LineOptions, keyof CommonElementOptions>, ScriptableContext<'line'>>,
194
+ ScriptableAndArrayOptions<CommonElementOptions, ScriptableContext<'line'>>,
195
+ ScriptableOptions<Omit<LineHoverOptions, keyof CommonHoverOptions>, ScriptableContext<'line'>>,
196
+ ScriptableAndArrayOptions<CommonHoverOptions, ScriptableContext<'line'>>,
197
+ AnimationOptions<'line'> {
198
+ /**
199
+ * The ID of the x axis to plot this dataset on.
200
+ */
201
+ xAxisID: string;
202
+ /**
203
+ * The ID of the y axis to plot this dataset on.
204
+ */
205
+ yAxisID: string;
206
+
207
+ /**
208
+ * If true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.
209
+ * @default false
210
+ */
211
+ spanGaps: boolean | number;
212
+
213
+ showLine: boolean;
214
+ }
215
+
216
+ export interface LineControllerChartOptions {
217
+ /**
218
+ * If true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.
219
+ * @default false
220
+ */
221
+ spanGaps: boolean | number;
222
+ /**
223
+ * If false, the lines between points are not drawn.
224
+ * @default true
225
+ */
226
+ showLine: boolean;
227
+ }
228
+
229
+ export type LineController = DatasetController
230
+ export declare const LineController: ChartComponent & {
231
+ prototype: LineController;
232
+ new (chart: Chart, datasetIndex: number): LineController;
233
+ };
234
+
235
+ export type ScatterControllerDatasetOptions = LineControllerDatasetOptions;
236
+
237
+ export type ScatterDataPoint = Point
238
+
239
+ export type ScatterControllerChartOptions = LineControllerChartOptions;
240
+
241
+ export type ScatterController = LineController
242
+ export declare const ScatterController: ChartComponent & {
243
+ prototype: ScatterController;
244
+ new (chart: Chart, datasetIndex: number): ScatterController;
245
+ };
246
+
247
+ export interface DoughnutControllerDatasetOptions
248
+ extends ControllerDatasetOptions,
249
+ ScriptableAndArrayOptions<ArcOptions, ScriptableContext<'doughnut'>>,
250
+ ScriptableAndArrayOptions<ArcHoverOptions, ScriptableContext<'doughnut'>>,
251
+ AnimationOptions<'doughnut'> {
252
+
253
+ /**
254
+ * Sweep to allow arcs to cover.
255
+ * @default 360
256
+ */
257
+ circumference: number;
258
+
259
+ /**
260
+ * Arc offset (in pixels).
261
+ */
262
+ offset: number | number[];
263
+
264
+ /**
265
+ * Starting angle to draw this dataset from.
266
+ * @default 0
267
+ */
268
+ rotation: number;
269
+
270
+ /**
271
+ * The relative thickness of the dataset. Providing a value for weight will cause the pie or doughnut dataset to be drawn with a thickness relative to the sum of all the dataset weight values.
272
+ * @default 1
273
+ */
274
+ weight: number;
275
+
276
+ /**
277
+ * Similar to the `offset` option, but applies to all arcs. This can be used to to add spaces
278
+ * between arcs
279
+ * @default 0
280
+ */
281
+ spacing: number;
282
+ }
283
+
284
+ export interface DoughnutAnimationOptions extends AnimationSpec<'doughnut'> {
285
+ /**
286
+ * If true, the chart will animate in with a rotation animation. This property is in the options.animation object.
287
+ * @default true
288
+ */
289
+ animateRotate: boolean;
290
+
291
+ /**
292
+ * If true, will animate scaling the chart from the center outwards.
293
+ * @default false
294
+ */
295
+ animateScale: boolean;
296
+ }
297
+
298
+ export interface DoughnutControllerChartOptions {
299
+ /**
300
+ * Sweep to allow arcs to cover.
301
+ * @default 360
302
+ */
303
+ circumference: number;
304
+
305
+ /**
306
+ * The portion of the chart that is cut out of the middle. ('50%' - for doughnut, 0 - for pie)
307
+ * String ending with '%' means percentage, number means pixels.
308
+ * @default 50
309
+ */
310
+ cutout: Scriptable<number | string, ScriptableContext<'doughnut'>>;
311
+
312
+ /**
313
+ * Arc offset (in pixels).
314
+ */
315
+ offset: number | number[];
316
+
317
+ /**
318
+ * The outer radius of the chart. String ending with '%' means percentage of maximum radius, number means pixels.
319
+ * @default '100%'
320
+ */
321
+ radius: Scriptable<number | string, ScriptableContext<'doughnut'>>;
322
+
323
+ /**
324
+ * Starting angle to draw arcs from.
325
+ * @default 0
326
+ */
327
+ rotation: number;
328
+
329
+ /**
330
+ * Spacing between the arcs
331
+ * @default 0
332
+ */
333
+ spacing: number;
334
+
335
+ animation: false | DoughnutAnimationOptions;
336
+ }
337
+
338
+ export type DoughnutDataPoint = number;
339
+
340
+ export interface DoughnutController extends DatasetController {
341
+ readonly innerRadius: number;
342
+ readonly outerRadius: number;
343
+ readonly offsetX: number;
344
+ readonly offsetY: number;
345
+
346
+ calculateTotal(): number;
347
+ calculateCircumference(value: number): number;
348
+ }
349
+
350
+ export declare const DoughnutController: ChartComponent & {
351
+ prototype: DoughnutController;
352
+ new (chart: Chart, datasetIndex: number): DoughnutController;
353
+ };
354
+
355
+ export interface DoughnutMetaExtensions {
356
+ total: number;
357
+ }
358
+
359
+ export type PieControllerDatasetOptions = DoughnutControllerDatasetOptions;
360
+ export type PieControllerChartOptions = DoughnutControllerChartOptions;
361
+ export type PieAnimationOptions = DoughnutAnimationOptions;
362
+
363
+ export type PieDataPoint = DoughnutDataPoint;
364
+ export type PieMetaExtensions = DoughnutMetaExtensions;
365
+
366
+ export type PieController = DoughnutController
367
+ export declare const PieController: ChartComponent & {
368
+ prototype: PieController;
369
+ new (chart: Chart, datasetIndex: number): PieController;
370
+ };
371
+
372
+ export interface PolarAreaControllerDatasetOptions extends DoughnutControllerDatasetOptions {
373
+ /**
374
+ * Arc angle to cover. - for polar only
375
+ * @default circumference / (arc count)
376
+ */
377
+ angle: number;
378
+ }
379
+
380
+ export type PolarAreaAnimationOptions = DoughnutAnimationOptions;
381
+
382
+ export interface PolarAreaControllerChartOptions {
383
+ /**
384
+ * Starting angle to draw arcs for the first item in a dataset. In degrees, 0 is at top.
385
+ * @default 0
386
+ */
387
+ startAngle: number;
388
+
389
+ animation: false | PolarAreaAnimationOptions;
390
+ }
391
+
392
+ export interface PolarAreaController extends DoughnutController {
393
+ countVisibleElements(): number;
394
+ }
395
+ export declare const PolarAreaController: ChartComponent & {
396
+ prototype: PolarAreaController;
397
+ new (chart: Chart, datasetIndex: number): PolarAreaController;
398
+ };
399
+
400
+ export interface RadarControllerDatasetOptions
401
+ extends ControllerDatasetOptions,
402
+ ScriptableAndArrayOptions<PointOptions & PointHoverOptions & PointPrefixedOptions & PointPrefixedHoverOptions, ScriptableContext<'radar'>>,
403
+ ScriptableAndArrayOptions<LineOptions & LineHoverOptions, ScriptableContext<'radar'>>,
404
+ AnimationOptions<'radar'> {
405
+ /**
406
+ * The ID of the x axis to plot this dataset on.
407
+ */
408
+ xAxisID: string;
409
+ /**
410
+ * The ID of the y axis to plot this dataset on.
411
+ */
412
+ yAxisID: string;
413
+
414
+ /**
415
+ * If true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.
416
+ */
417
+ spanGaps: boolean | number;
418
+
419
+ /**
420
+ * If false, the line is not drawn for this dataset.
421
+ */
422
+ showLine: boolean;
423
+ }
424
+
425
+ export type RadarControllerChartOptions = LineControllerChartOptions;
426
+
427
+ export type RadarController = DatasetController
428
+ export declare const RadarController: ChartComponent & {
429
+ prototype: RadarController;
430
+ new (chart: Chart, datasetIndex: number): RadarController;
431
+ };
432
+
433
+ interface ChartMetaClip {
434
+ left: number | boolean;
435
+ top: number | boolean;
436
+ right: number | boolean;
437
+ bottom: number | boolean;
438
+ disabled: boolean;
439
+ }
440
+
441
+ interface ChartMetaCommon<TElement extends Element = Element, TDatasetElement extends Element = Element> {
442
+ type: string;
443
+ controller: DatasetController;
444
+ order: number;
445
+
446
+ label: string;
447
+ index: number;
448
+ visible: boolean;
449
+
450
+ stack: number;
451
+
452
+ indexAxis: 'x' | 'y';
453
+
454
+ data: TElement[];
455
+ dataset?: TDatasetElement;
456
+
457
+ hidden: boolean;
458
+
459
+ xAxisID?: string;
460
+ yAxisID?: string;
461
+ rAxisID?: string;
462
+ iAxisID: string;
463
+ vAxisID: string;
464
+
465
+ xScale?: Scale;
466
+ yScale?: Scale;
467
+ rScale?: Scale;
468
+ iScale?: Scale;
469
+ vScale?: Scale;
470
+
471
+ _sorted: boolean;
472
+ _stacked: boolean | 'single';
473
+ _parsed: unknown[];
474
+ _clip: ChartMetaClip;
475
+ }
476
+
477
+ export type ChartMeta<
478
+ TType extends ChartType = ChartType,
479
+ TElement extends Element = Element,
480
+ TDatasetElement extends Element = Element,
481
+ > = DeepPartial<
482
+ { [key in ChartType]: ChartTypeRegistry[key]['metaExtensions'] }[TType]
483
+ > & ChartMetaCommon<TElement, TDatasetElement>;
484
+
485
+ export interface ActiveDataPoint {
486
+ datasetIndex: number;
487
+ index: number;
488
+ }
489
+
490
+ export interface ActiveElement extends ActiveDataPoint {
491
+ element: Element;
492
+ }
493
+
494
+ export declare class Chart<
495
+ TType extends ChartType = ChartType,
496
+ TData = DefaultDataPoint<TType>,
497
+ TLabel = unknown
498
+ > {
499
+ readonly platform: BasePlatform;
500
+ readonly id: string;
501
+ readonly canvas: HTMLCanvasElement;
502
+ readonly ctx: CanvasRenderingContext2D;
503
+ readonly config: ChartConfiguration<TType, TData, TLabel> | ChartConfigurationCustomTypesPerDataset<TType, TData, TLabel>;
504
+ readonly width: number;
505
+ readonly height: number;
506
+ readonly aspectRatio: number;
507
+ readonly boxes: LayoutItem[];
508
+ readonly currentDevicePixelRatio: number;
509
+ readonly chartArea: ChartArea;
510
+ readonly scales: { [key: string]: Scale };
511
+ readonly attached: boolean;
512
+
513
+ readonly legend?: LegendElement<TType>; // Only available if legend plugin is registered and enabled
514
+ readonly tooltip?: TooltipModel<TType>; // Only available if tooltip plugin is registered and enabled
515
+
516
+ data: ChartData<TType, TData, TLabel>;
517
+ options: ChartOptions<TType>;
518
+
519
+ constructor(item: ChartItem, config: ChartConfiguration<TType, TData, TLabel> | ChartConfigurationCustomTypesPerDataset<TType, TData, TLabel>);
520
+
521
+ clear(): this;
522
+ stop(): this;
523
+
524
+ resize(width?: number, height?: number): void;
525
+ ensureScalesHaveIDs(): void;
526
+ buildOrUpdateScales(): void;
527
+ buildOrUpdateControllers(): void;
528
+ reset(): void;
529
+ update(mode?: UpdateMode | ((ctx: { datasetIndex: number }) => UpdateMode)): void;
530
+ render(): void;
531
+ draw(): void;
532
+
533
+ isPointInArea(point: Point): boolean;
534
+ getElementsAtEventForMode(e: Event, mode: string, options: InteractionOptions, useFinalPosition: boolean): InteractionItem[];
535
+
536
+ getSortedVisibleDatasetMetas(): ChartMeta[];
537
+ getDatasetMeta(datasetIndex: number): ChartMeta;
538
+ getVisibleDatasetCount(): number;
539
+ isDatasetVisible(datasetIndex: number): boolean;
540
+ setDatasetVisibility(datasetIndex: number, visible: boolean): void;
541
+ toggleDataVisibility(index: number): void;
542
+ getDataVisibility(index: number): boolean;
543
+ hide(datasetIndex: number, dataIndex?: number): void;
544
+ show(datasetIndex: number, dataIndex?: number): void;
545
+
546
+ getActiveElements(): ActiveElement[];
547
+ setActiveElements(active: ActiveDataPoint[]): void;
548
+
549
+ destroy(): void;
550
+ toBase64Image(type?: string, quality?: unknown): string;
551
+ bindEvents(): void;
552
+ unbindEvents(): void;
553
+ updateHoverStyle(items: InteractionItem[], mode: 'dataset', enabled: boolean): void;
554
+
555
+ notifyPlugins(hook: string, args?: AnyObject): boolean | void;
556
+
557
+ isPluginEnabled(pluginId: string): boolean;
558
+
559
+ getContext(): { chart: Chart, type: string };
560
+
561
+ static readonly defaults: Defaults;
562
+ static readonly overrides: Overrides;
563
+ static readonly version: string;
564
+ static readonly instances: { [key: string]: Chart };
565
+ static readonly registry: Registry;
566
+ static getChart(key: string | CanvasRenderingContext2D | HTMLCanvasElement): Chart | undefined;
567
+ static register(...items: ChartComponentLike[]): void;
568
+ static unregister(...items: ChartComponentLike[]): void;
569
+ }
570
+
571
+ export declare const registerables: readonly ChartComponentLike[];
572
+
573
+ export declare type ChartItem =
574
+ | string
575
+ | CanvasRenderingContext2D
576
+ | HTMLCanvasElement
577
+ | { canvas: HTMLCanvasElement }
578
+ | ArrayLike<CanvasRenderingContext2D | HTMLCanvasElement>;
579
+
580
+ export declare enum UpdateModeEnum {
581
+ resize = 'resize',
582
+ reset = 'reset',
583
+ none = 'none',
584
+ hide = 'hide',
585
+ show = 'show',
586
+ default = 'default',
587
+ active = 'active'
588
+ }
589
+
590
+ export type UpdateMode = keyof typeof UpdateModeEnum;
591
+
592
+ export declare class DatasetController<
593
+ TType extends ChartType = ChartType,
594
+ TElement extends Element = Element,
595
+ TDatasetElement extends Element = Element,
596
+ TParsedData = ParsedDataType<TType>,
597
+ > {
598
+ constructor(chart: Chart, datasetIndex: number);
599
+
600
+ readonly chart: Chart;
601
+ readonly index: number;
602
+ readonly _cachedMeta: ChartMeta<TType, TElement, TDatasetElement>;
603
+ enableOptionSharing: boolean;
604
+ // If true, the controller supports the decimation
605
+ // plugin. Defaults to `false` for all controllers
606
+ // except the LineController
607
+ supportsDecimation: boolean;
608
+
609
+ linkScales(): void;
610
+ getAllParsedValues(scale: Scale): number[];
611
+ protected getLabelAndValue(index: number): { label: string; value: string };
612
+ updateElements(elements: TElement[], start: number, count: number, mode: UpdateMode): void;
613
+ update(mode: UpdateMode): void;
614
+ updateIndex(datasetIndex: number): void;
615
+ protected getMaxOverflow(): boolean | number;
616
+ draw(): void;
617
+ reset(): void;
618
+ getDataset(): ChartDataset;
619
+ getMeta(): ChartMeta<TType, TElement, TDatasetElement>;
620
+ getScaleForId(scaleID: string): Scale | undefined;
621
+ configure(): void;
622
+ initialize(): void;
623
+ addElements(): void;
624
+ buildOrUpdateElements(resetNewElements?: boolean): void;
625
+
626
+ getStyle(index: number, active: boolean): AnyObject;
627
+ protected resolveDatasetElementOptions(mode: UpdateMode): AnyObject;
628
+ protected resolveDataElementOptions(index: number, mode: UpdateMode): AnyObject;
629
+ /**
630
+ * Utility for checking if the options are shared and should be animated separately.
631
+ * @protected
632
+ */
633
+ protected getSharedOptions(options: AnyObject): undefined | AnyObject;
634
+ /**
635
+ * Utility for determining if `options` should be included in the updated properties
636
+ * @protected
637
+ */
638
+ protected includeOptions(mode: UpdateMode, sharedOptions: AnyObject): boolean;
639
+ /**
640
+ * Utility for updating an element with new properties, using animations when appropriate.
641
+ * @protected
642
+ */
643
+
644
+ protected updateElement(element: TElement | TDatasetElement, index: number | undefined, properties: AnyObject, mode: UpdateMode): void;
645
+ /**
646
+ * Utility to animate the shared options, that are potentially affecting multiple elements.
647
+ * @protected
648
+ */
649
+
650
+ protected updateSharedOptions(sharedOptions: AnyObject, mode: UpdateMode, newOptions: AnyObject): void;
651
+ removeHoverStyle(element: TElement, datasetIndex: number, index: number): void;
652
+ setHoverStyle(element: TElement, datasetIndex: number, index: number): void;
653
+
654
+ parse(start: number, count: number): void;
655
+ protected parsePrimitiveData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
656
+ protected parseArrayData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
657
+ protected parseObjectData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
658
+ protected getParsed(index: number): TParsedData;
659
+ protected applyStack(scale: Scale, parsed: unknown[]): number;
660
+ protected updateRangeFromParsed(
661
+ range: { min: number; max: number },
662
+ scale: Scale,
663
+ parsed: unknown[],
664
+ stack: boolean | string
665
+ ): void;
666
+ protected getMinMax(scale: Scale, canStack?: boolean): { min: number; max: number };
667
+ }
668
+
669
+ export interface DatasetControllerChartComponent extends ChartComponent {
670
+ defaults: {
671
+ datasetElementType?: string | null | false;
672
+ dataElementType?: string | null | false;
673
+ };
674
+ }
675
+
676
+ export interface Defaults extends CoreChartOptions<ChartType>, ElementChartOptions<ChartType>, PluginChartOptions<ChartType> {
677
+
678
+ scale: ScaleOptionsByType;
679
+ scales: {
680
+ [key in ScaleType]: ScaleOptionsByType<key>;
681
+ };
682
+
683
+ set(values: AnyObject): AnyObject;
684
+ set(scope: string, values: AnyObject): AnyObject;
685
+ get(scope: string): AnyObject;
686
+
687
+ describe(scope: string, values: AnyObject): AnyObject;
688
+ override(scope: string, values: AnyObject): AnyObject;
689
+
690
+ /**
691
+ * Routes the named defaults to fallback to another scope/name.
692
+ * This routing is useful when those target values, like defaults.color, are changed runtime.
693
+ * If the values would be copied, the runtime change would not take effect. By routing, the
694
+ * fallback is evaluated at each access, so its always up to date.
695
+ *
696
+ * Example:
697
+ *
698
+ * defaults.route('elements.arc', 'backgroundColor', '', 'color')
699
+ * - reads the backgroundColor from defaults.color when undefined locally
700
+ *
701
+ * @param scope Scope this route applies to.
702
+ * @param name Property name that should be routed to different namespace when not defined here.
703
+ * @param targetScope The namespace where those properties should be routed to.
704
+ * Empty string ('') is the root of defaults.
705
+ * @param targetName The target name in the target scope the property should be routed to.
706
+ */
707
+ route(scope: string, name: string, targetScope: string, targetName: string): void;
708
+ }
709
+
710
+ export type Overrides = {
711
+ [key in ChartType]:
712
+ CoreChartOptions<key> &
713
+ ElementChartOptions<key> &
714
+ PluginChartOptions<key> &
715
+ DatasetChartOptions<ChartType> &
716
+ ScaleChartOptions<key> &
717
+ ChartTypeRegistry[key]['chartOptions'];
718
+ }
719
+
720
+ export declare const defaults: Defaults;
721
+ export interface InteractionOptions {
722
+ axis?: string;
723
+ intersect?: boolean;
724
+ includeInvisible?: boolean;
725
+ }
726
+
727
+ export interface InteractionItem {
728
+ element: Element;
729
+ datasetIndex: number;
730
+ index: number;
731
+ }
732
+
733
+ export type InteractionModeFunction = (
734
+ chart: Chart,
735
+ e: ChartEvent,
736
+ options: InteractionOptions,
737
+ useFinalPosition?: boolean
738
+ ) => InteractionItem[];
739
+
740
+ export interface InteractionModeMap {
741
+ /**
742
+ * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something
743
+ * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item
744
+ */
745
+ index: InteractionModeFunction;
746
+
747
+ /**
748
+ * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something
749
+ * If the options.intersect is false, we find the nearest item and return the items in that dataset
750
+ */
751
+ dataset: InteractionModeFunction;
752
+ /**
753
+ * Point mode returns all elements that hit test based on the event position
754
+ * of the event
755
+ */
756
+ point: InteractionModeFunction;
757
+ /**
758
+ * nearest mode returns the element closest to the point
759
+ */
760
+ nearest: InteractionModeFunction;
761
+ /**
762
+ * x mode returns the elements that hit-test at the current x coordinate
763
+ */
764
+ x: InteractionModeFunction;
765
+ /**
766
+ * y mode returns the elements that hit-test at the current y coordinate
767
+ */
768
+ y: InteractionModeFunction;
769
+ }
770
+
771
+ export type InteractionMode = keyof InteractionModeMap;
772
+
773
+ export declare const Interaction: {
774
+ modes: InteractionModeMap;
775
+
776
+ /**
777
+ * Helper function to select candidate elements for interaction
778
+ */
779
+ evaluateInteractionItems(
780
+ chart: Chart,
781
+ axis: InteractionAxis,
782
+ position: Point,
783
+ handler: (element: Element & VisualElement, datasetIndex: number, index: number) => void,
784
+ intersect?: boolean
785
+ ): InteractionItem[];
786
+ };
787
+
788
+ export declare const layouts: {
789
+ /**
790
+ * Register a box to a chart.
791
+ * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.
792
+ * @param {Chart} chart - the chart to use
793
+ * @param {LayoutItem} item - the item to add to be laid out
794
+ */
795
+ addBox(chart: Chart, item: LayoutItem): void;
796
+
797
+ /**
798
+ * Remove a layoutItem from a chart
799
+ * @param {Chart} chart - the chart to remove the box from
800
+ * @param {LayoutItem} layoutItem - the item to remove from the layout
801
+ */
802
+ removeBox(chart: Chart, layoutItem: LayoutItem): void;
803
+
804
+ /**
805
+ * Sets (or updates) options on the given `item`.
806
+ * @param {Chart} chart - the chart in which the item lives (or will be added to)
807
+ * @param {LayoutItem} item - the item to configure with the given options
808
+ * @param options - the new item options.
809
+ */
810
+ configure(
811
+ chart: Chart,
812
+ item: LayoutItem,
813
+ options: { fullSize?: number; position?: LayoutPosition; weight?: number }
814
+ ): void;
815
+
816
+ /**
817
+ * Fits boxes of the given chart into the given size by having each box measure itself
818
+ * then running a fitting algorithm
819
+ * @param {Chart} chart - the chart
820
+ * @param {number} width - the width to fit into
821
+ * @param {number} height - the height to fit into
822
+ */
823
+ update(chart: Chart, width: number, height: number): void;
824
+ };
825
+
826
+ export interface Plugin<TType extends ChartType = ChartType, O = AnyObject> extends ExtendedPlugin<TType, O> {
827
+ id: string;
828
+
829
+ /**
830
+ * The events option defines the browser events that the plugin should listen.
831
+ * @default ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']
832
+ */
833
+ events?: (keyof HTMLElementEventMap)[]
834
+
835
+ /**
836
+ * @desc Called when plugin is installed for this chart instance. This hook is also invoked for disabled plugins (options === false).
837
+ * @param {Chart} chart - The chart instance.
838
+ * @param {object} args - The call arguments.
839
+ * @param {object} options - The plugin options.
840
+ * @since 3.0.0
841
+ */
842
+ install?(chart: Chart<TType>, args: EmptyObject, options: O): void;
843
+ /**
844
+ * @desc Called when a plugin is starting. This happens when chart is created or plugin is enabled.
845
+ * @param {Chart} chart - The chart instance.
846
+ * @param {object} args - The call arguments.
847
+ * @param {object} options - The plugin options.
848
+ * @since 3.0.0
849
+ */
850
+ start?(chart: Chart<TType>, args: EmptyObject, options: O): void;
851
+ /**
852
+ * @desc Called when a plugin stopping. This happens when chart is destroyed or plugin is disabled.
853
+ * @param {Chart} chart - The chart instance.
854
+ * @param {object} args - The call arguments.
855
+ * @param {object} options - The plugin options.
856
+ * @since 3.0.0
857
+ */
858
+ stop?(chart: Chart<TType>, args: EmptyObject, options: O): void;
859
+ /**
860
+ * @desc Called before initializing `chart`.
861
+ * @param {Chart} chart - The chart instance.
862
+ * @param {object} args - The call arguments.
863
+ * @param {object} options - The plugin options.
864
+ */
865
+ beforeInit?(chart: Chart<TType>, args: EmptyObject, options: O): void;
866
+ /**
867
+ * @desc Called after `chart` has been initialized and before the first update.
868
+ * @param {Chart} chart - The chart instance.
869
+ * @param {object} args - The call arguments.
870
+ * @param {object} options - The plugin options.
871
+ */
872
+ afterInit?(chart: Chart<TType>, args: EmptyObject, options: O): void;
873
+ /**
874
+ * @desc Called before updating `chart`. If any plugin returns `false`, the update
875
+ * is cancelled (and thus subsequent render(s)) until another `update` is triggered.
876
+ * @param {Chart} chart - The chart instance.
877
+ * @param {object} args - The call arguments.
878
+ * @param {UpdateMode} args.mode - The update mode
879
+ * @param {object} options - The plugin options.
880
+ * @returns {boolean} `false` to cancel the chart update.
881
+ */
882
+ beforeUpdate?(chart: Chart<TType>, args: { mode: UpdateMode, cancelable: true }, options: O): boolean | void;
883
+ /**
884
+ * @desc Called after `chart` has been updated and before rendering. Note that this
885
+ * hook will not be called if the chart update has been previously cancelled.
886
+ * @param {Chart} chart - The chart instance.
887
+ * @param {object} args - The call arguments.
888
+ * @param {UpdateMode} args.mode - The update mode
889
+ * @param {object} options - The plugin options.
890
+ */
891
+ afterUpdate?(chart: Chart<TType>, args: { mode: UpdateMode }, options: O): void;
892
+ /**
893
+ * @desc Called during the update process, before any chart elements have been created.
894
+ * This can be used for data decimation by changing the data array inside a dataset.
895
+ * @param {Chart} chart - The chart instance.
896
+ * @param {object} args - The call arguments.
897
+ * @param {object} options - The plugin options.
898
+ */
899
+ beforeElementsUpdate?(chart: Chart<TType>, args: EmptyObject, options: O): void;
900
+ /**
901
+ * @desc Called during chart reset
902
+ * @param {Chart} chart - The chart instance.
903
+ * @param {object} args - The call arguments.
904
+ * @param {object} options - The plugin options.
905
+ * @since version 3.0.0
906
+ */
907
+ reset?(chart: Chart<TType>, args: EmptyObject, options: O): void;
908
+ /**
909
+ * @desc Called before updating the `chart` datasets. If any plugin returns `false`,
910
+ * the datasets update is cancelled until another `update` is triggered.
911
+ * @param {Chart} chart - The chart instance.
912
+ * @param {object} args - The call arguments.
913
+ * @param {UpdateMode} args.mode - The update mode.
914
+ * @param {object} options - The plugin options.
915
+ * @returns {boolean} false to cancel the datasets update.
916
+ * @since version 2.1.5
917
+ */
918
+ beforeDatasetsUpdate?(chart: Chart<TType>, args: { mode: UpdateMode }, options: O): boolean | void;
919
+ /**
920
+ * @desc Called after the `chart` datasets have been updated. Note that this hook
921
+ * will not be called if the datasets update has been previously cancelled.
922
+ * @param {Chart} chart - The chart instance.
923
+ * @param {object} args - The call arguments.
924
+ * @param {UpdateMode} args.mode - The update mode.
925
+ * @param {object} options - The plugin options.
926
+ * @since version 2.1.5
927
+ */
928
+ afterDatasetsUpdate?(chart: Chart<TType>, args: { mode: UpdateMode, cancelable: true }, options: O): void;
929
+ /**
930
+ * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin
931
+ * returns `false`, the datasets update is cancelled until another `update` is triggered.
932
+ * @param {Chart} chart - The chart instance.
933
+ * @param {object} args - The call arguments.
934
+ * @param {number} args.index - The dataset index.
935
+ * @param {object} args.meta - The dataset metadata.
936
+ * @param {UpdateMode} args.mode - The update mode.
937
+ * @param {object} options - The plugin options.
938
+ * @returns {boolean} `false` to cancel the chart datasets drawing.
939
+ */
940
+ beforeDatasetUpdate?(chart: Chart<TType>, args: { index: number; meta: ChartMeta, mode: UpdateMode, cancelable: true }, options: O): boolean | void;
941
+ /**
942
+ * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note
943
+ * that this hook will not be called if the datasets update has been previously cancelled.
944
+ * @param {Chart} chart - The chart instance.
945
+ * @param {object} args - The call arguments.
946
+ * @param {number} args.index - The dataset index.
947
+ * @param {object} args.meta - The dataset metadata.
948
+ * @param {UpdateMode} args.mode - The update mode.
949
+ * @param {object} options - The plugin options.
950
+ */
951
+ afterDatasetUpdate?(chart: Chart<TType>, args: { index: number; meta: ChartMeta, mode: UpdateMode, cancelable: false }, options: O): void;
952
+ /**
953
+ * @desc Called before laying out `chart`. If any plugin returns `false`,
954
+ * the layout update is cancelled until another `update` is triggered.
955
+ * @param {Chart} chart - The chart instance.
956
+ * @param {object} args - The call arguments.
957
+ * @param {object} options - The plugin options.
958
+ * @returns {boolean} `false` to cancel the chart layout.
959
+ */
960
+ beforeLayout?(chart: Chart<TType>, args: { cancelable: true }, options: O): boolean | void;
961
+ /**
962
+ * @desc Called before scale data limits are calculated. This hook is called separately for each scale in the chart.
963
+ * @param {Chart} chart - The chart instance.
964
+ * @param {object} args - The call arguments.
965
+ * @param {Scale} args.scale - The scale.
966
+ * @param {object} options - The plugin options.
967
+ */
968
+ beforeDataLimits?(chart: Chart<TType>, args: { scale: Scale }, options: O): void;
969
+ /**
970
+ * @desc Called after scale data limits are calculated. This hook is called separately for each scale in the chart.
971
+ * @param {Chart} chart - The chart instance.
972
+ * @param {object} args - The call arguments.
973
+ * @param {Scale} args.scale - The scale.
974
+ * @param {object} options - The plugin options.
975
+ */
976
+ afterDataLimits?(chart: Chart<TType>, args: { scale: Scale }, options: O): void;
977
+ /**
978
+ * @desc Called before scale builds its ticks. This hook is called separately for each scale in the chart.
979
+ * @param {Chart} chart - The chart instance.
980
+ * @param {object} args - The call arguments.
981
+ * @param {Scale} args.scale - The scale.
982
+ * @param {object} options - The plugin options.
983
+ */
984
+ beforeBuildTicks?(chart: Chart<TType>, args: { scale: Scale }, options: O): void;
985
+ /**
986
+ * @desc Called after scale has build its ticks. This hook is called separately for each scale in the chart.
987
+ * @param {Chart} chart - The chart instance.
988
+ * @param {object} args - The call arguments.
989
+ * @param {Scale} args.scale - The scale.
990
+ * @param {object} options - The plugin options.
991
+ */
992
+ afterBuildTicks?(chart: Chart<TType>, args: { scale: Scale }, options: O): void;
993
+ /**
994
+ * @desc Called after the `chart` has been laid out. Note that this hook will not
995
+ * be called if the layout update has been previously cancelled.
996
+ * @param {Chart} chart - The chart instance.
997
+ * @param {object} args - The call arguments.
998
+ * @param {object} options - The plugin options.
999
+ */
1000
+ afterLayout?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1001
+ /**
1002
+ * @desc Called before rendering `chart`. If any plugin returns `false`,
1003
+ * the rendering is cancelled until another `render` is triggered.
1004
+ * @param {Chart} chart - The chart instance.
1005
+ * @param {object} args - The call arguments.
1006
+ * @param {object} options - The plugin options.
1007
+ * @returns {boolean} `false` to cancel the chart rendering.
1008
+ */
1009
+ beforeRender?(chart: Chart<TType>, args: { cancelable: true }, options: O): boolean | void;
1010
+ /**
1011
+ * @desc Called after the `chart` has been fully rendered (and animation completed). Note
1012
+ * that this hook will not be called if the rendering has been previously cancelled.
1013
+ * @param {Chart} chart - The chart instance.
1014
+ * @param {object} args - The call arguments.
1015
+ * @param {object} options - The plugin options.
1016
+ */
1017
+ afterRender?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1018
+ /**
1019
+ * @desc Called before drawing `chart` at every animation frame. If any plugin returns `false`,
1020
+ * the frame drawing is cancelled untilanother `render` is triggered.
1021
+ * @param {Chart} chart - The chart instance.
1022
+ * @param {object} args - The call arguments.
1023
+ * @param {object} options - The plugin options.
1024
+ * @returns {boolean} `false` to cancel the chart drawing.
1025
+ */
1026
+ beforeDraw?(chart: Chart<TType>, args: { cancelable: true }, options: O): boolean | void;
1027
+ /**
1028
+ * @desc Called after the `chart` has been drawn. Note that this hook will not be called
1029
+ * if the drawing has been previously cancelled.
1030
+ * @param {Chart} chart - The chart instance.
1031
+ * @param {object} args - The call arguments.
1032
+ * @param {object} options - The plugin options.
1033
+ */
1034
+ afterDraw?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1035
+ /**
1036
+ * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,
1037
+ * the datasets drawing is cancelled until another `render` is triggered.
1038
+ * @param {Chart} chart - The chart instance.
1039
+ * @param {object} args - The call arguments.
1040
+ * @param {object} options - The plugin options.
1041
+ * @returns {boolean} `false` to cancel the chart datasets drawing.
1042
+ */
1043
+ beforeDatasetsDraw?(chart: Chart<TType>, args: { cancelable: true }, options: O): boolean | void;
1044
+ /**
1045
+ * @desc Called after the `chart` datasets have been drawn. Note that this hook
1046
+ * will not be called if the datasets drawing has been previously cancelled.
1047
+ * @param {Chart} chart - The chart instance.
1048
+ * @param {object} args - The call arguments.
1049
+ * @param {object} options - The plugin options.
1050
+ */
1051
+ afterDatasetsDraw?(chart: Chart<TType>, args: EmptyObject, options: O, cancelable: false): void;
1052
+ /**
1053
+ * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets
1054
+ * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing
1055
+ * is cancelled until another `render` is triggered.
1056
+ * @param {Chart} chart - The chart instance.
1057
+ * @param {object} args - The call arguments.
1058
+ * @param {number} args.index - The dataset index.
1059
+ * @param {object} args.meta - The dataset metadata.
1060
+ * @param {object} options - The plugin options.
1061
+ * @returns {boolean} `false` to cancel the chart datasets drawing.
1062
+ */
1063
+ beforeDatasetDraw?(chart: Chart<TType>, args: { index: number; meta: ChartMeta }, options: O): boolean | void;
1064
+ /**
1065
+ * @desc Called after the `chart` datasets at the given `args.index` have been drawn
1066
+ * (datasets are drawn in the reverse order). Note that this hook will not be called
1067
+ * if the datasets drawing has been previously cancelled.
1068
+ * @param {Chart} chart - The chart instance.
1069
+ * @param {object} args - The call arguments.
1070
+ * @param {number} args.index - The dataset index.
1071
+ * @param {object} args.meta - The dataset metadata.
1072
+ * @param {object} options - The plugin options.
1073
+ */
1074
+ afterDatasetDraw?(chart: Chart<TType>, args: { index: number; meta: ChartMeta }, options: O): void;
1075
+ /**
1076
+ * @desc Called before processing the specified `event`. If any plugin returns `false`,
1077
+ * the event will be discarded.
1078
+ * @param {Chart} chart - The chart instance.
1079
+ * @param {object} args - The call arguments.
1080
+ * @param {ChartEvent} args.event - The event object.
1081
+ * @param {boolean} args.replay - True if this event is replayed from `Chart.update`
1082
+ * @param {boolean} args.inChartArea - The event position is inside chartArea
1083
+ * @param {boolean} [args.changed] - Set to true if the plugin needs a render. Should only be changed to true, because this args object is passed through all plugins.
1084
+ * @param {object} options - The plugin options.
1085
+ */
1086
+ beforeEvent?(chart: Chart<TType>, args: { event: ChartEvent, replay: boolean, changed?: boolean; cancelable: true, inChartArea: boolean }, options: O): boolean | void;
1087
+ /**
1088
+ * @desc Called after the `event` has been consumed. Note that this hook
1089
+ * will not be called if the `event` has been previously discarded.
1090
+ * @param {Chart} chart - The chart instance.
1091
+ * @param {object} args - The call arguments.
1092
+ * @param {ChartEvent} args.event - The event object.
1093
+ * @param {boolean} args.replay - True if this event is replayed from `Chart.update`
1094
+ * @param {boolean} args.inChartArea - The event position is inside chartArea
1095
+ * @param {boolean} [args.changed] - Set to true if the plugin needs a render. Should only be changed to true, because this args object is passed through all plugins.
1096
+ * @param {object} options - The plugin options.
1097
+ */
1098
+ afterEvent?(chart: Chart<TType>, args: { event: ChartEvent, replay: boolean, changed?: boolean, cancelable: false, inChartArea: boolean }, options: O): void;
1099
+ /**
1100
+ * @desc Called after the chart as been resized.
1101
+ * @param {Chart} chart - The chart instance.
1102
+ * @param {object} args - The call arguments.
1103
+ * @param {number} args.size - The new canvas display size (eq. canvas.style width & height).
1104
+ * @param {object} options - The plugin options.
1105
+ */
1106
+ resize?(chart: Chart<TType>, args: { size: { width: number, height: number } }, options: O): void;
1107
+ /**
1108
+ * Called before the chart is being destroyed.
1109
+ * @param {Chart} chart - The chart instance.
1110
+ * @param {object} args - The call arguments.
1111
+ * @param {object} options - The plugin options.
1112
+ */
1113
+ beforeDestroy?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1114
+ /**
1115
+ * Called after the chart has been destroyed.
1116
+ * @param {Chart} chart - The chart instance.
1117
+ * @param {object} args - The call arguments.
1118
+ * @param {object} options - The plugin options.
1119
+ */
1120
+ afterDestroy?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1121
+ /**
1122
+ * Called after chart is destroyed on all plugins that were installed for that chart. This hook is also invoked for disabled plugins (options === false).
1123
+ * @param {Chart} chart - The chart instance.
1124
+ * @param {object} args - The call arguments.
1125
+ * @param {object} options - The plugin options.
1126
+ * @since 3.0.0
1127
+ */
1128
+ uninstall?(chart: Chart<TType>, args: EmptyObject, options: O): void;
1129
+
1130
+ /**
1131
+ * Default options used in the plugin
1132
+ */
1133
+ defaults?: Partial<O>;
1134
+ }
1135
+
1136
+ export declare type ChartComponentLike = ChartComponent | ChartComponent[] | { [key: string]: ChartComponent } | Plugin | Plugin[];
1137
+
1138
+ /**
1139
+ * Please use the module's default export which provides a singleton instance
1140
+ * Note: class is exported for typedoc
1141
+ */
1142
+ export interface Registry {
1143
+ readonly controllers: TypedRegistry<DatasetController>;
1144
+ readonly elements: TypedRegistry<Element>;
1145
+ readonly plugins: TypedRegistry<Plugin>;
1146
+ readonly scales: TypedRegistry<Scale>;
1147
+
1148
+ add(...args: ChartComponentLike[]): void;
1149
+ remove(...args: ChartComponentLike[]): void;
1150
+
1151
+ addControllers(...args: ChartComponentLike[]): void;
1152
+ addElements(...args: ChartComponentLike[]): void;
1153
+ addPlugins(...args: ChartComponentLike[]): void;
1154
+ addScales(...args: ChartComponentLike[]): void;
1155
+
1156
+ getController(id: string): DatasetController | undefined;
1157
+ getElement(id: string): Element | undefined;
1158
+ getPlugin(id: string): Plugin | undefined;
1159
+ getScale(id: string): Scale | undefined;
1160
+ }
1161
+
1162
+ export declare const registry: Registry;
1163
+
1164
+ export interface Tick {
1165
+ value: number;
1166
+ label?: string | string[];
1167
+ major?: boolean;
1168
+ }
1169
+
1170
+ export interface CoreScaleOptions {
1171
+ /**
1172
+ * Controls the axis global visibility (visible when true, hidden when false). When display: 'auto', the axis is visible only if at least one associated dataset is visible.
1173
+ * @default true
1174
+ */
1175
+ display: boolean | 'auto';
1176
+ /**
1177
+ * Align pixel values to device pixels
1178
+ */
1179
+ alignToPixels: boolean;
1180
+ /**
1181
+ * Background color of the scale area.
1182
+ */
1183
+ backgroundColor: Color;
1184
+ /**
1185
+ * Reverse the scale.
1186
+ * @default false
1187
+ */
1188
+ reverse: boolean;
1189
+ /**
1190
+ * Clip the dataset drawing against the size of the scale instead of chart area.
1191
+ * @default true
1192
+ */
1193
+ clip: boolean;
1194
+ /**
1195
+ * The weight used to sort the axis. Higher weights are further away from the chart area.
1196
+ * @default true
1197
+ */
1198
+ weight: number;
1199
+ /**
1200
+ * User defined minimum value for the scale, overrides minimum value from data.
1201
+ */
1202
+ min: unknown;
1203
+ /**
1204
+ * User defined maximum value for the scale, overrides maximum value from data.
1205
+ */
1206
+ max: unknown;
1207
+ /**
1208
+ * Adjustment used when calculating the maximum data value.
1209
+ */
1210
+ suggestedMin: unknown;
1211
+ /**
1212
+ * Adjustment used when calculating the minimum data value.
1213
+ */
1214
+ suggestedMax: unknown;
1215
+ /**
1216
+ * Callback called before the update process starts.
1217
+ */
1218
+ beforeUpdate(axis: Scale): void;
1219
+ /**
1220
+ * Callback that runs before dimensions are set.
1221
+ */
1222
+ beforeSetDimensions(axis: Scale): void;
1223
+ /**
1224
+ * Callback that runs after dimensions are set.
1225
+ */
1226
+ afterSetDimensions(axis: Scale): void;
1227
+ /**
1228
+ * Callback that runs before data limits are determined.
1229
+ */
1230
+ beforeDataLimits(axis: Scale): void;
1231
+ /**
1232
+ * Callback that runs after data limits are determined.
1233
+ */
1234
+ afterDataLimits(axis: Scale): void;
1235
+ /**
1236
+ * Callback that runs before ticks are created.
1237
+ */
1238
+ beforeBuildTicks(axis: Scale): void;
1239
+ /**
1240
+ * Callback that runs after ticks are created. Useful for filtering ticks.
1241
+ */
1242
+ afterBuildTicks(axis: Scale): void;
1243
+ /**
1244
+ * Callback that runs before ticks are converted into strings.
1245
+ */
1246
+ beforeTickToLabelConversion(axis: Scale): void;
1247
+ /**
1248
+ * Callback that runs after ticks are converted into strings.
1249
+ */
1250
+ afterTickToLabelConversion(axis: Scale): void;
1251
+ /**
1252
+ * Callback that runs before tick rotation is determined.
1253
+ */
1254
+ beforeCalculateLabelRotation(axis: Scale): void;
1255
+ /**
1256
+ * Callback that runs after tick rotation is determined.
1257
+ */
1258
+ afterCalculateLabelRotation(axis: Scale): void;
1259
+ /**
1260
+ * Callback that runs before the scale fits to the canvas.
1261
+ */
1262
+ beforeFit(axis: Scale): void;
1263
+ /**
1264
+ * Callback that runs after the scale fits to the canvas.
1265
+ */
1266
+ afterFit(axis: Scale): void;
1267
+ /**
1268
+ * Callback that runs at the end of the update process.
1269
+ */
1270
+ afterUpdate(axis: Scale): void;
1271
+ }
1272
+
1273
+ export interface Scale<O extends CoreScaleOptions = CoreScaleOptions> extends Element<unknown, O>, LayoutItem {
1274
+ readonly id: string;
1275
+ readonly type: string;
1276
+ readonly ctx: CanvasRenderingContext2D;
1277
+ readonly chart: Chart;
1278
+
1279
+ maxWidth: number;
1280
+ maxHeight: number;
1281
+
1282
+ paddingTop: number;
1283
+ paddingBottom: number;
1284
+ paddingLeft: number;
1285
+ paddingRight: number;
1286
+
1287
+ axis: string;
1288
+ labelRotation: number;
1289
+ min: number;
1290
+ max: number;
1291
+ ticks: Tick[];
1292
+ getMatchingVisibleMetas(type?: string): ChartMeta[];
1293
+
1294
+ drawTitle(chartArea: ChartArea): void;
1295
+ drawLabels(chartArea: ChartArea): void;
1296
+ drawGrid(chartArea: ChartArea): void;
1297
+
1298
+ /**
1299
+ * @param {number} pixel
1300
+ * @return {number}
1301
+ */
1302
+ getDecimalForPixel(pixel: number): number;
1303
+ /**
1304
+ * Utility for getting the pixel location of a percentage of scale
1305
+ * The coordinate (0, 0) is at the upper-left corner of the canvas
1306
+ * @param {number} decimal
1307
+ * @return {number}
1308
+ */
1309
+ getPixelForDecimal(decimal: number): number;
1310
+ /**
1311
+ * Returns the location of the tick at the given index
1312
+ * The coordinate (0, 0) is at the upper-left corner of the canvas
1313
+ * @param {number} index
1314
+ * @return {number}
1315
+ */
1316
+ getPixelForTick(index: number): number;
1317
+ /**
1318
+ * Used to get the label to display in the tooltip for the given value
1319
+ * @param {*} value
1320
+ * @return {string}
1321
+ */
1322
+ getLabelForValue(value: number): string;
1323
+
1324
+ /**
1325
+ * Returns the grid line width at given value
1326
+ */
1327
+ getLineWidthForValue(value: number): number;
1328
+
1329
+ /**
1330
+ * Returns the location of the given data point. Value can either be an index or a numerical value
1331
+ * The coordinate (0, 0) is at the upper-left corner of the canvas
1332
+ * @param {*} value
1333
+ * @param {number} [index]
1334
+ * @return {number}
1335
+ */
1336
+ getPixelForValue(value: number, index?: number): number;
1337
+
1338
+ /**
1339
+ * Used to get the data value from a given pixel. This is the inverse of getPixelForValue
1340
+ * The coordinate (0, 0) is at the upper-left corner of the canvas
1341
+ * @param {number} pixel
1342
+ * @return {*}
1343
+ */
1344
+ getValueForPixel(pixel: number): number | undefined;
1345
+
1346
+ getBaseValue(): number;
1347
+ /**
1348
+ * Returns the pixel for the minimum chart value
1349
+ * The coordinate (0, 0) is at the upper-left corner of the canvas
1350
+ * @return {number}
1351
+ */
1352
+ getBasePixel(): number;
1353
+
1354
+ init(options: O): void;
1355
+ parse(raw: unknown, index?: number): unknown;
1356
+ getUserBounds(): { min: number; max: number; minDefined: boolean; maxDefined: boolean };
1357
+ getMinMax(canStack: boolean): { min: number; max: number };
1358
+ getTicks(): Tick[];
1359
+ getLabels(): string[];
1360
+ getLabelItems(chartArea?: ChartArea): LabelItem[];
1361
+ beforeUpdate(): void;
1362
+ configure(): void;
1363
+ afterUpdate(): void;
1364
+ beforeSetDimensions(): void;
1365
+ setDimensions(): void;
1366
+ afterSetDimensions(): void;
1367
+ beforeDataLimits(): void;
1368
+ determineDataLimits(): void;
1369
+ afterDataLimits(): void;
1370
+ beforeBuildTicks(): void;
1371
+ buildTicks(): Tick[];
1372
+ afterBuildTicks(): void;
1373
+ beforeTickToLabelConversion(): void;
1374
+ generateTickLabels(ticks: Tick[]): void;
1375
+ afterTickToLabelConversion(): void;
1376
+ beforeCalculateLabelRotation(): void;
1377
+ calculateLabelRotation(): void;
1378
+ afterCalculateLabelRotation(): void;
1379
+ beforeFit(): void;
1380
+ fit(): void;
1381
+ afterFit(): void;
1382
+
1383
+ isFullSize(): boolean;
1384
+ }
1385
+ export declare class Scale {
1386
+ constructor(cfg: {id: string, type: string, ctx: CanvasRenderingContext2D, chart: Chart});
1387
+ }
1388
+
1389
+ export interface ScriptableScaleContext {
1390
+ chart: Chart;
1391
+ scale: Scale;
1392
+ index: number;
1393
+ tick: Tick;
1394
+ }
1395
+
1396
+ export interface ScriptableScalePointLabelContext {
1397
+ chart: Chart;
1398
+ scale: Scale;
1399
+ index: number;
1400
+ label: string;
1401
+ type: string;
1402
+ }
1403
+
1404
+ export interface RenderTextOpts {
1405
+ /**
1406
+ * The fill color of the text. If unset, the existing
1407
+ * fillStyle property of the canvas is unchanged.
1408
+ */
1409
+ color?: Color;
1410
+
1411
+ /**
1412
+ * The width of the strikethrough / underline
1413
+ * @default 2
1414
+ */
1415
+ decorationWidth?: number;
1416
+
1417
+ /**
1418
+ * The max width of the text in pixels
1419
+ */
1420
+ maxWidth?: number;
1421
+
1422
+ /**
1423
+ * A rotation to be applied to the canvas
1424
+ * This is applied after the translation is applied
1425
+ */
1426
+ rotation?: number;
1427
+
1428
+ /**
1429
+ * Apply a strikethrough effect to the text
1430
+ */
1431
+ strikethrough?: boolean;
1432
+
1433
+ /**
1434
+ * The color of the text stroke. If unset, the existing
1435
+ * strokeStyle property of the context is unchanged
1436
+ */
1437
+ strokeColor?: Color;
1438
+
1439
+ /**
1440
+ * The text stroke width. If unset, the existing
1441
+ * lineWidth property of the context is unchanged
1442
+ */
1443
+ strokeWidth?: number;
1444
+
1445
+ /**
1446
+ * The text alignment to use. If unset, the existing
1447
+ * textAlign property of the context is unchanged
1448
+ */
1449
+ textAlign?: CanvasTextAlign;
1450
+
1451
+ /**
1452
+ * The text baseline to use. If unset, the existing
1453
+ * textBaseline property of the context is unchanged
1454
+ */
1455
+ textBaseline?: CanvasTextBaseline;
1456
+
1457
+ /**
1458
+ * If specified, a translation to apply to the context
1459
+ */
1460
+ translation?: [number, number];
1461
+
1462
+ /**
1463
+ * Underline the text
1464
+ */
1465
+ underline?: boolean;
1466
+
1467
+ /**
1468
+ * Dimensions for drawing the label backdrop
1469
+ */
1470
+ backdrop?: BackdropOptions;
1471
+ }
1472
+
1473
+ export interface BackdropOptions {
1474
+ /**
1475
+ * Left position of backdrop as pixel
1476
+ */
1477
+ left: number;
1478
+
1479
+ /**
1480
+ * Top position of backdrop as pixel
1481
+ */
1482
+ top: number;
1483
+
1484
+ /**
1485
+ * Width of backdrop in pixels
1486
+ */
1487
+ width: number;
1488
+
1489
+ /**
1490
+ * Height of backdrop in pixels
1491
+ */
1492
+ height: number;
1493
+
1494
+ /**
1495
+ * Color of label backdrops.
1496
+ */
1497
+ color: Scriptable<Color, ScriptableScaleContext>;
1498
+ }
1499
+
1500
+ export interface LabelItem {
1501
+ label: string | string[];
1502
+ font: CanvasFontSpec;
1503
+ textOffset: number;
1504
+ options: RenderTextOpts;
1505
+ }
1506
+
1507
+ export declare const Ticks: {
1508
+ formatters: {
1509
+ /**
1510
+ * Formatter for value labels
1511
+ * @param value the value to display
1512
+ * @return {string|string[]} the label to display
1513
+ */
1514
+ values(value: unknown): string | string[];
1515
+ /**
1516
+ * Formatter for numeric ticks
1517
+ * @param tickValue the value to be formatted
1518
+ * @param index the position of the tickValue parameter in the ticks array
1519
+ * @param ticks the list of ticks being converted
1520
+ * @return string representation of the tickValue parameter
1521
+ */
1522
+ numeric(this: Scale, tickValue: number, index: number, ticks: { value: number }[]): string;
1523
+ /**
1524
+ * Formatter for logarithmic ticks
1525
+ * @param tickValue the value to be formatted
1526
+ * @param index the position of the tickValue parameter in the ticks array
1527
+ * @param ticks the list of ticks being converted
1528
+ * @return string representation of the tickValue parameter
1529
+ */
1530
+ logarithmic(this: Scale, tickValue: number, index: number, ticks: { value: number }[]): string;
1531
+ };
1532
+ };
1533
+
1534
+ export interface TypedRegistry<T> {
1535
+ /**
1536
+ * @param {ChartComponent} item
1537
+ * @returns {string} The scope where items defaults were registered to.
1538
+ */
1539
+ register(item: ChartComponent): string;
1540
+ get(id: string): T | undefined;
1541
+ unregister(item: ChartComponent): void;
1542
+ }
1543
+
1544
+ export interface ChartEvent {
1545
+ type:
1546
+ | 'contextmenu'
1547
+ | 'mouseenter'
1548
+ | 'mousedown'
1549
+ | 'mousemove'
1550
+ | 'mouseup'
1551
+ | 'mouseout'
1552
+ | 'click'
1553
+ | 'dblclick'
1554
+ | 'keydown'
1555
+ | 'keypress'
1556
+ | 'keyup'
1557
+ | 'resize';
1558
+ native: Event | null;
1559
+ x: number | null;
1560
+ y: number | null;
1561
+ }
1562
+ export interface ChartComponent {
1563
+ id: string;
1564
+ defaults?: AnyObject;
1565
+ defaultRoutes?: { [property: string]: string };
1566
+
1567
+ beforeRegister?(): void;
1568
+ afterRegister?(): void;
1569
+ beforeUnregister?(): void;
1570
+ afterUnregister?(): void;
1571
+ }
1572
+
1573
+ export type InteractionAxis = 'x' | 'y' | 'xy' | 'r';
1574
+
1575
+ export interface CoreInteractionOptions {
1576
+ /**
1577
+ * Sets which elements appear in the tooltip. See Interaction Modes for details.
1578
+ * @default 'nearest'
1579
+ */
1580
+ mode: InteractionMode;
1581
+ /**
1582
+ * if true, the hover mode only applies when the mouse position intersects an item on the chart.
1583
+ * @default true
1584
+ */
1585
+ intersect: boolean;
1586
+
1587
+ /**
1588
+ * Defines which directions are used in calculating distances. Defaults to 'x' for 'index' mode and 'xy' in dataset and 'nearest' modes.
1589
+ */
1590
+ axis: InteractionAxis;
1591
+
1592
+ /**
1593
+ * if true, the invisible points that are outside of the chart area will also be included when evaluating interactions.
1594
+ * @default false
1595
+ */
1596
+ includeInvisible: boolean;
1597
+ }
1598
+
1599
+ export interface CoreChartOptions<TType extends ChartType> extends ParsingOptions, AnimationOptions<TType> {
1600
+
1601
+ datasets: {
1602
+ [key in ChartType]: ChartTypeRegistry[key]['datasetOptions']
1603
+ }
1604
+
1605
+ /**
1606
+ * The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts.
1607
+ * @default 'x'
1608
+ */
1609
+ indexAxis: 'x' | 'y';
1610
+
1611
+ /**
1612
+ * How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
1613
+ */
1614
+ clip: number | ChartArea | false;
1615
+
1616
+ /**
1617
+ * base color
1618
+ * @see Defaults.color
1619
+ */
1620
+ color: Scriptable<Color, ScriptableContext<TType>>;
1621
+ /**
1622
+ * base background color
1623
+ * @see Defaults.backgroundColor
1624
+ */
1625
+ backgroundColor: ScriptableAndArray<Color, ScriptableContext<TType>>;
1626
+ /**
1627
+ * base hover background color
1628
+ * @see Defaults.hoverBackgroundColor
1629
+ */
1630
+ hoverBackgroundColor: ScriptableAndArray<Color, ScriptableContext<TType>>;
1631
+ /**
1632
+ * base border color
1633
+ * @see Defaults.borderColor
1634
+ */
1635
+ borderColor: ScriptableAndArray<Color, ScriptableContext<TType>>;
1636
+ /**
1637
+ * base hover border color
1638
+ * @see Defaults.hoverBorderColor
1639
+ */
1640
+ hoverBorderColor: ScriptableAndArray<Color, ScriptableContext<TType>>;
1641
+ /**
1642
+ * base font
1643
+ * @see Defaults.font
1644
+ */
1645
+ font: Partial<FontSpec>;
1646
+ /**
1647
+ * Resizes the chart canvas when its container does (important note...).
1648
+ * @default true
1649
+ */
1650
+ responsive: boolean;
1651
+ /**
1652
+ * Maintain the original canvas aspect ratio (width / height) when resizing. For this option to work properly the chart must be in its own dedicated container.
1653
+ * @default true
1654
+ */
1655
+ maintainAspectRatio: boolean;
1656
+ /**
1657
+ * Delay the resize update by give amount of milliseconds. This can ease the resize process by debouncing update of the elements.
1658
+ * @default 0
1659
+ */
1660
+ resizeDelay: number;
1661
+
1662
+ /**
1663
+ * Canvas aspect ratio (i.e. width / height, a value of 1 representing a square canvas). Note that this option is ignored if the height is explicitly defined either as attribute or via the style.
1664
+ * @default 2
1665
+ */
1666
+ aspectRatio: number;
1667
+
1668
+ /**
1669
+ * Locale used for number formatting (using `Intl.NumberFormat`).
1670
+ * @default user's browser setting
1671
+ */
1672
+ locale: string;
1673
+
1674
+ /**
1675
+ * Called when a resize occurs. Gets passed two arguments: the chart instance and the new size.
1676
+ */
1677
+ onResize(chart: Chart, size: { width: number; height: number }): void;
1678
+
1679
+ /**
1680
+ * Override the window's default devicePixelRatio.
1681
+ * @default window.devicePixelRatio
1682
+ */
1683
+ devicePixelRatio: number;
1684
+
1685
+ interaction: CoreInteractionOptions;
1686
+
1687
+ hover: CoreInteractionOptions;
1688
+
1689
+ /**
1690
+ * The events option defines the browser events that the chart should listen to for tooltips and hovering.
1691
+ * @default ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']
1692
+ */
1693
+ events: (keyof HTMLElementEventMap)[]
1694
+
1695
+ /**
1696
+ * Called when any of the events fire. Passed the event, an array of active elements (bars, points, etc), and the chart.
1697
+ */
1698
+ onHover(event: ChartEvent, elements: ActiveElement[], chart: Chart): void;
1699
+
1700
+ /**
1701
+ * Called if the event is of type 'mouseup' or 'click'. Passed the event, an array of active elements, and the chart.
1702
+ */
1703
+ onClick(event: ChartEvent, elements: ActiveElement[], chart: Chart): void;
1704
+
1705
+ layout: Partial<{
1706
+ autoPadding: boolean;
1707
+ padding: Scriptable<Padding, ScriptableContext<TType>>;
1708
+ }>;
1709
+ }
1710
+
1711
+ export type AnimationSpec<TType extends ChartType> = {
1712
+ /**
1713
+ * The number of milliseconds an animation takes.
1714
+ * @default 1000
1715
+ */
1716
+ duration?: Scriptable<number, ScriptableContext<TType>>;
1717
+ /**
1718
+ * Easing function to use
1719
+ * @default 'easeOutQuart'
1720
+ */
1721
+ easing?: Scriptable<EasingFunction, ScriptableContext<TType>>;
1722
+
1723
+ /**
1724
+ * Delay before starting the animations.
1725
+ * @default 0
1726
+ */
1727
+ delay?: Scriptable<number, ScriptableContext<TType>>;
1728
+
1729
+ /**
1730
+ * If set to true, the animations loop endlessly.
1731
+ * @default false
1732
+ */
1733
+ loop?: Scriptable<boolean, ScriptableContext<TType>>;
1734
+ }
1735
+
1736
+ export type AnimationsSpec<TType extends ChartType> = {
1737
+ [name: string]: false | AnimationSpec<TType> & {
1738
+ properties: string[];
1739
+
1740
+ /**
1741
+ * Type of property, determines the interpolator used. Possible values: 'number', 'color' and 'boolean'. Only really needed for 'color', because typeof does not get that right.
1742
+ */
1743
+ type: 'color' | 'number' | 'boolean';
1744
+
1745
+ fn: <T>(from: T, to: T, factor: number) => T;
1746
+
1747
+ /**
1748
+ * Start value for the animation. Current value is used when undefined
1749
+ */
1750
+ from: Scriptable<Color | number | boolean, ScriptableContext<TType>>;
1751
+ /**
1752
+ *
1753
+ */
1754
+ to: Scriptable<Color | number | boolean, ScriptableContext<TType>>;
1755
+ }
1756
+ }
1757
+
1758
+ export type TransitionSpec<TType extends ChartType> = {
1759
+ animation: AnimationSpec<TType>;
1760
+ animations: AnimationsSpec<TType>;
1761
+ }
1762
+
1763
+ export type TransitionsSpec<TType extends ChartType> = {
1764
+ [mode: string]: TransitionSpec<TType>
1765
+ }
1766
+
1767
+ export type AnimationOptions<TType extends ChartType> = {
1768
+ animation: false | AnimationSpec<TType> & {
1769
+ /**
1770
+ * Callback called on each step of an animation.
1771
+ */
1772
+ onProgress?: (this: Chart, event: AnimationEvent) => void;
1773
+ /**
1774
+ * Callback called when all animations are completed.
1775
+ */
1776
+ onComplete?: (this: Chart, event: AnimationEvent) => void;
1777
+ };
1778
+ animations: AnimationsSpec<TType>;
1779
+ transitions: TransitionsSpec<TType>;
1780
+ };
1781
+
1782
+ export interface FontSpec {
1783
+ /**
1784
+ * Default font family for all text, follows CSS font-family options.
1785
+ * @default "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"
1786
+ */
1787
+ family: string;
1788
+ /**
1789
+ * Default font size (in px) for text. Does not apply to radialLinear scale point labels.
1790
+ * @default 12
1791
+ */
1792
+ size: number;
1793
+ /**
1794
+ * Default font style. Does not apply to tooltip title or footer. Does not apply to chart title. Follows CSS font-style options (i.e. normal, italic, oblique, initial, inherit)
1795
+ * @default 'normal'
1796
+ */
1797
+ style: 'normal' | 'italic' | 'oblique' | 'initial' | 'inherit';
1798
+ /**
1799
+ * Default font weight (boldness). (see MDN).
1800
+ */
1801
+ weight: 'normal' | 'bold' | 'lighter' | 'bolder' | number | null;
1802
+ /**
1803
+ * Height of an individual line of text (see MDN).
1804
+ * @default 1.2
1805
+ */
1806
+ lineHeight: number | string;
1807
+ }
1808
+
1809
+ export interface CanvasFontSpec extends FontSpec {
1810
+ string: string;
1811
+ }
1812
+
1813
+ export type TextAlign = 'left' | 'center' | 'right';
1814
+ export type Align = 'start' | 'center' | 'end';
1815
+
1816
+ export interface VisualElement {
1817
+ draw(ctx: CanvasRenderingContext2D, area?: ChartArea): void;
1818
+ inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): boolean;
1819
+ inXRange(mouseX: number, useFinalPosition?: boolean): boolean;
1820
+ inYRange(mouseY: number, useFinalPosition?: boolean): boolean;
1821
+ getCenterPoint(useFinalPosition?: boolean): Point;
1822
+ getRange?(axis: 'x' | 'y'): number;
1823
+ }
1824
+
1825
+ export interface CommonElementOptions {
1826
+ borderWidth: number;
1827
+ borderColor: Color;
1828
+ backgroundColor: Color;
1829
+ }
1830
+
1831
+ export interface CommonHoverOptions {
1832
+ hoverBorderWidth: number;
1833
+ hoverBorderColor: Color;
1834
+ hoverBackgroundColor: Color;
1835
+ }
1836
+
1837
+ export interface Segment {
1838
+ start: number;
1839
+ end: number;
1840
+ loop: boolean;
1841
+ }
1842
+
1843
+ export interface ArcBorderRadius {
1844
+ outerStart: number;
1845
+ outerEnd: number;
1846
+ innerStart: number;
1847
+ innerEnd: number;
1848
+ }
1849
+
1850
+ export interface ArcOptions extends CommonElementOptions {
1851
+ /**
1852
+ * If true, Arc can take up 100% of a circular graph without any visual split or cut. This option doesn't support borderRadius and borderJoinStyle miter
1853
+ * @default true
1854
+ */
1855
+ selfJoin: boolean;
1856
+
1857
+ /**
1858
+ * Arc stroke alignment.
1859
+ */
1860
+ borderAlign: 'center' | 'inner';
1861
+ /**
1862
+ * Line dash. See MDN.
1863
+ * @default []
1864
+ */
1865
+ borderDash: number[];
1866
+ /**
1867
+ * Line dash offset. See MDN.
1868
+ * @default 0.0
1869
+ */
1870
+ borderDashOffset: number;
1871
+ /**
1872
+ * Line join style. See MDN. Default is 'round' when `borderAlign` is 'inner', else 'bevel'.
1873
+ */
1874
+ borderJoinStyle: CanvasLineJoin;
1875
+
1876
+ /**
1877
+ * Sets the border radius for arcs
1878
+ * @default 0
1879
+ */
1880
+ borderRadius: number | ArcBorderRadius;
1881
+
1882
+ /**
1883
+ * Arc offset (in pixels).
1884
+ */
1885
+ offset: number;
1886
+
1887
+ /**
1888
+ * If false, Arc will be flat.
1889
+ * @default true
1890
+ */
1891
+ circular: boolean;
1892
+
1893
+ /**
1894
+ * Spacing between arcs
1895
+ */
1896
+ spacing: number
1897
+ }
1898
+
1899
+ export interface ArcHoverOptions extends CommonHoverOptions {
1900
+ hoverBorderDash: number[];
1901
+ hoverBorderDashOffset: number;
1902
+ hoverOffset: number;
1903
+ }
1904
+
1905
+ export interface LineProps {
1906
+ points: Point[]
1907
+ }
1908
+
1909
+ export interface LineOptions extends CommonElementOptions {
1910
+ /**
1911
+ * Line cap style. See MDN.
1912
+ * @default 'butt'
1913
+ */
1914
+ borderCapStyle: CanvasLineCap;
1915
+ /**
1916
+ * Line dash. See MDN.
1917
+ * @default []
1918
+ */
1919
+ borderDash: number[];
1920
+ /**
1921
+ * Line dash offset. See MDN.
1922
+ * @default 0.0
1923
+ */
1924
+ borderDashOffset: number;
1925
+ /**
1926
+ * Line join style. See MDN.
1927
+ * @default 'miter'
1928
+ */
1929
+ borderJoinStyle: CanvasLineJoin;
1930
+ /**
1931
+ * true to keep Bézier control inside the chart, false for no restriction.
1932
+ * @default true
1933
+ */
1934
+ capBezierPoints: boolean;
1935
+ /**
1936
+ * Interpolation mode to apply.
1937
+ * @default 'default'
1938
+ */
1939
+ cubicInterpolationMode: 'default' | 'monotone';
1940
+ /**
1941
+ * Bézier curve tension (0 for no Bézier curves).
1942
+ * @default 0
1943
+ */
1944
+ tension: number;
1945
+ /**
1946
+ * true to show the line as a stepped line (tension will be ignored).
1947
+ * @default false
1948
+ */
1949
+ stepped: 'before' | 'after' | 'middle' | boolean;
1950
+ /**
1951
+ * Both line and radar charts support a fill option on the dataset object which can be used to create area between two datasets or a dataset and a boundary, i.e. the scale origin, start or end
1952
+ */
1953
+ fill: FillTarget | ComplexFillTarget;
1954
+ /**
1955
+ * If true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.
1956
+ */
1957
+ spanGaps: boolean | number;
1958
+
1959
+ segment: {
1960
+ backgroundColor: Scriptable<Color|undefined, ScriptableLineSegmentContext>,
1961
+ borderColor: Scriptable<Color|undefined, ScriptableLineSegmentContext>,
1962
+ borderCapStyle: Scriptable<CanvasLineCap|undefined, ScriptableLineSegmentContext>;
1963
+ borderDash: Scriptable<number[]|undefined, ScriptableLineSegmentContext>;
1964
+ borderDashOffset: Scriptable<number|undefined, ScriptableLineSegmentContext>;
1965
+ borderJoinStyle: Scriptable<CanvasLineJoin|undefined, ScriptableLineSegmentContext>;
1966
+ borderWidth: Scriptable<number|undefined, ScriptableLineSegmentContext>;
1967
+ };
1968
+ }
1969
+
1970
+ export interface LineHoverOptions extends CommonHoverOptions {
1971
+ hoverBorderCapStyle: CanvasLineCap;
1972
+ hoverBorderDash: number[];
1973
+ hoverBorderDashOffset: number;
1974
+ hoverBorderJoinStyle: CanvasLineJoin;
1975
+ }
1976
+
1977
+ export interface LineElement<T extends LineProps = LineProps, O extends LineOptions = LineOptions>
1978
+ extends Element<T, O>,
1979
+ VisualElement {
1980
+ updateControlPoints(chartArea: ChartArea, indexAxis?: 'x' | 'y'): void;
1981
+ points: Point[];
1982
+ readonly segments: Segment[];
1983
+ first(): Point | false;
1984
+ last(): Point | false;
1985
+ interpolate(point: Point, property: 'x' | 'y'): undefined | Point | Point[];
1986
+ pathSegment(ctx: CanvasRenderingContext2D, segment: Segment, params: AnyObject): undefined | boolean;
1987
+ path(ctx: CanvasRenderingContext2D): boolean;
1988
+ }
1989
+
1990
+ export declare const LineElement: ChartComponent & {
1991
+ prototype: LineElement;
1992
+ new (cfg: AnyObject): LineElement;
1993
+ };
1994
+
1995
+ export type PointStyle =
1996
+ | 'circle'
1997
+ | 'cross'
1998
+ | 'crossRot'
1999
+ | 'dash'
2000
+ | 'line'
2001
+ | 'rect'
2002
+ | 'rectRounded'
2003
+ | 'rectRot'
2004
+ | 'star'
2005
+ | 'triangle'
2006
+ | false
2007
+ | HTMLImageElement
2008
+ | HTMLCanvasElement;
2009
+
2010
+ export interface PointOptions extends CommonElementOptions {
2011
+ /**
2012
+ * Point radius
2013
+ * @default 3
2014
+ */
2015
+ radius: number;
2016
+ /**
2017
+ * Extra radius added to point radius for hit detection.
2018
+ * @default 1
2019
+ */
2020
+ hitRadius: number;
2021
+ /**
2022
+ * Point style
2023
+ * @default 'circle;
2024
+ */
2025
+ pointStyle: PointStyle;
2026
+ /**
2027
+ * Point rotation (in degrees).
2028
+ * @default 0
2029
+ */
2030
+ rotation: number;
2031
+ /**
2032
+ * Draw the active elements over the other elements of the dataset,
2033
+ * @default true
2034
+ */
2035
+ drawActiveElementsOnTop: boolean;
2036
+ }
2037
+
2038
+ export interface PointHoverOptions extends CommonHoverOptions {
2039
+ /**
2040
+ * Point radius when hovered.
2041
+ * @default 4
2042
+ */
2043
+ hoverRadius: number;
2044
+ }
2045
+
2046
+ export interface PointPrefixedOptions {
2047
+ /**
2048
+ * The fill color for points.
2049
+ */
2050
+ pointBackgroundColor: Color;
2051
+ /**
2052
+ * The border color for points.
2053
+ */
2054
+ pointBorderColor: Color;
2055
+ /**
2056
+ * The width of the point border in pixels.
2057
+ */
2058
+ pointBorderWidth: number;
2059
+ /**
2060
+ * The pixel size of the non-displayed point that reacts to mouse events.
2061
+ */
2062
+ pointHitRadius: number;
2063
+ /**
2064
+ * The radius of the point shape. If set to 0, the point is not rendered.
2065
+ */
2066
+ pointRadius: number;
2067
+ /**
2068
+ * The rotation of the point in degrees.
2069
+ */
2070
+ pointRotation: number;
2071
+ /**
2072
+ * Style of the point.
2073
+ */
2074
+ pointStyle: PointStyle;
2075
+ }
2076
+
2077
+ export interface PointPrefixedHoverOptions {
2078
+ /**
2079
+ * Point background color when hovered.
2080
+ */
2081
+ pointHoverBackgroundColor: Color;
2082
+ /**
2083
+ * Point border color when hovered.
2084
+ */
2085
+ pointHoverBorderColor: Color;
2086
+ /**
2087
+ * Border width of point when hovered.
2088
+ */
2089
+ pointHoverBorderWidth: number;
2090
+ /**
2091
+ * The radius of the point when hovered.
2092
+ */
2093
+ pointHoverRadius: number;
2094
+ }
2095
+
2096
+ export interface BarProps extends Point {
2097
+ base: number;
2098
+ horizontal: boolean;
2099
+ width: number;
2100
+ height: number;
2101
+ }
2102
+
2103
+ export interface BarOptions extends Omit<CommonElementOptions, 'borderWidth'> {
2104
+ /**
2105
+ * The base value for the bar in data units along the value axis.
2106
+ */
2107
+ base: number;
2108
+
2109
+ /**
2110
+ * Skipped (excluded) border: 'start', 'end', 'left', 'right', 'bottom', 'top', 'middle', false (none) or true (all).
2111
+ * @default 'start'
2112
+ */
2113
+ borderSkipped: 'start' | 'end' | 'left' | 'right' | 'bottom' | 'top' | 'middle' | boolean;
2114
+
2115
+ /**
2116
+ * Border radius
2117
+ * @default 0
2118
+ */
2119
+ borderRadius: number | BorderRadius;
2120
+
2121
+ /**
2122
+ * Amount to inflate the rectangle(s). This can be used to hide artifacts between bars.
2123
+ * Unit is pixels. 'auto' translates to 0.33 pixels when barPercentage * categoryPercentage is 1, else 0.
2124
+ * @default 'auto'
2125
+ */
2126
+ inflateAmount: number | 'auto';
2127
+
2128
+ /**
2129
+ * Width of the border, number for all sides, object to specify width for each side specifically
2130
+ * @default 0
2131
+ */
2132
+ borderWidth: number | { top?: number, right?: number, bottom?: number, left?: number };
2133
+ }
2134
+
2135
+ export interface BorderRadius {
2136
+ topLeft: number;
2137
+ topRight: number;
2138
+ bottomLeft: number;
2139
+ bottomRight: number;
2140
+ }
2141
+
2142
+ export interface BarHoverOptions extends CommonHoverOptions {
2143
+ hoverBorderRadius: number | BorderRadius;
2144
+ }
2145
+
2146
+ export interface BarElement<
2147
+ T extends BarProps = BarProps,
2148
+ O extends BarOptions = BarOptions
2149
+ > extends Element<T, O>, VisualElement {}
2150
+
2151
+ export declare const BarElement: ChartComponent & {
2152
+ prototype: BarElement;
2153
+ new (cfg: AnyObject): BarElement;
2154
+ };
2155
+
2156
+ export interface ElementOptionsByType<TType extends ChartType> {
2157
+ arc: ScriptableAndArrayOptions<ArcOptions & ArcHoverOptions, ScriptableContext<TType>>;
2158
+ bar: ScriptableAndArrayOptions<BarOptions & BarHoverOptions, ScriptableContext<TType>>;
2159
+ line: ScriptableAndArrayOptions<LineOptions & LineHoverOptions, ScriptableContext<TType>>;
2160
+ point: ScriptableAndArrayOptions<PointOptions & PointHoverOptions, ScriptableContext<TType>>;
2161
+ }
2162
+
2163
+ export type ElementChartOptions<TType extends ChartType = ChartType> = {
2164
+ elements: ElementOptionsByType<TType>
2165
+ };
2166
+
2167
+ export declare class BasePlatform {
2168
+ /**
2169
+ * Called at chart construction time, returns a context2d instance implementing
2170
+ * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.
2171
+ * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)
2172
+ * @param options - The chart options
2173
+ */
2174
+ acquireContext(
2175
+ canvas: HTMLCanvasElement,
2176
+ options?: CanvasRenderingContext2DSettings
2177
+ ): CanvasRenderingContext2D | null;
2178
+ /**
2179
+ * Called at chart destruction time, releases any resources associated to the context
2180
+ * previously returned by the acquireContext() method.
2181
+ * @param {CanvasRenderingContext2D} context - The context2d instance
2182
+ * @returns {boolean} true if the method succeeded, else false
2183
+ */
2184
+ releaseContext(context: CanvasRenderingContext2D): boolean;
2185
+ /**
2186
+ * Registers the specified listener on the given chart.
2187
+ * @param {Chart} chart - Chart from which to listen for event
2188
+ * @param {string} type - The ({@link ChartEvent}) type to listen for
2189
+ * @param listener - Receives a notification (an object that implements
2190
+ * the {@link ChartEvent} interface) when an event of the specified type occurs.
2191
+ */
2192
+ addEventListener(chart: Chart, type: string, listener: (e: ChartEvent) => void): void;
2193
+ /**
2194
+ * Removes the specified listener previously registered with addEventListener.
2195
+ * @param {Chart} chart - Chart from which to remove the listener
2196
+ * @param {string} type - The ({@link ChartEvent}) type to remove
2197
+ * @param listener - The listener function to remove from the event target.
2198
+ */
2199
+ removeEventListener(chart: Chart, type: string, listener: (e: ChartEvent) => void): void;
2200
+ /**
2201
+ * @returns {number} the current devicePixelRatio of the device this platform is connected to.
2202
+ */
2203
+ getDevicePixelRatio(): number;
2204
+ /**
2205
+ * @param {HTMLCanvasElement} canvas - The canvas for which to calculate the maximum size
2206
+ * @param {number} [width] - Parent element's content width
2207
+ * @param {number} [height] - Parent element's content height
2208
+ * @param {number} [aspectRatio] - The aspect ratio to maintain
2209
+ * @returns { width: number, height: number } the maximum size available.
2210
+ */
2211
+ getMaximumSize(canvas: HTMLCanvasElement, width?: number, height?: number, aspectRatio?: number): { width: number, height: number };
2212
+ /**
2213
+ * @param {HTMLCanvasElement} canvas
2214
+ * @returns {boolean} true if the canvas is attached to the platform, false if not.
2215
+ */
2216
+ isAttached(canvas: HTMLCanvasElement): boolean;
2217
+ /**
2218
+ * Updates config with platform specific requirements
2219
+ * @param {ChartConfiguration | ChartConfigurationCustomTypes} config
2220
+ */
2221
+ updateConfig(config: ChartConfiguration | ChartConfigurationCustomTypesPerDataset): void;
2222
+ }
2223
+
2224
+ export declare class BasicPlatform extends BasePlatform {}
2225
+ export declare class DomPlatform extends BasePlatform {}
2226
+
2227
+ export declare const Decimation: Plugin;
2228
+
2229
+ export declare const enum DecimationAlgorithm {
2230
+ lttb = 'lttb',
2231
+ minmax = 'min-max',
2232
+ }
2233
+ interface BaseDecimationOptions {
2234
+ enabled: boolean;
2235
+ threshold?: number;
2236
+ }
2237
+
2238
+ interface LttbDecimationOptions extends BaseDecimationOptions {
2239
+ algorithm: DecimationAlgorithm.lttb | 'lttb';
2240
+ samples?: number;
2241
+ }
2242
+
2243
+ interface MinMaxDecimationOptions extends BaseDecimationOptions {
2244
+ algorithm: DecimationAlgorithm.minmax | 'min-max';
2245
+ }
2246
+
2247
+ export type DecimationOptions = LttbDecimationOptions | MinMaxDecimationOptions;
2248
+
2249
+ export declare const Filler: Plugin;
2250
+ export interface FillerOptions {
2251
+ drawTime: 'beforeDraw' | 'beforeDatasetDraw' | 'beforeDatasetsDraw';
2252
+ propagate: boolean;
2253
+ }
2254
+
2255
+ export type FillTarget = number | string | { value: number } | 'start' | 'end' | 'origin' | 'stack' | 'shape' | boolean;
2256
+
2257
+ export interface ComplexFillTarget {
2258
+ /**
2259
+ * The accepted values are the same as the filling mode values, so you may use absolute and relative dataset indexes and/or boundaries.
2260
+ */
2261
+ target: FillTarget;
2262
+ /**
2263
+ * If no color is set, the default color will be the background color of the chart.
2264
+ */
2265
+ above: Color;
2266
+ /**
2267
+ * Same as the above.
2268
+ */
2269
+ below: Color;
2270
+ }
2271
+
2272
+ export interface FillerControllerDatasetOptions {
2273
+ /**
2274
+ * Both line and radar charts support a fill option on the dataset object which can be used to create area between two datasets or a dataset and a boundary, i.e. the scale origin, start or end
2275
+ */
2276
+ fill: FillTarget | ComplexFillTarget;
2277
+ }
2278
+
2279
+ export declare const Legend: Plugin;
2280
+
2281
+ export interface LegendItem {
2282
+ /**
2283
+ * Label that will be displayed
2284
+ */
2285
+ text: string;
2286
+
2287
+ /**
2288
+ * Border radius of the legend box
2289
+ * @since 3.1.0
2290
+ */
2291
+ borderRadius?: number | BorderRadius;
2292
+
2293
+ /**
2294
+ * Index of the associated dataset
2295
+ */
2296
+ datasetIndex?: number;
2297
+
2298
+ /**
2299
+ * Index the associated label in the labels array
2300
+ */
2301
+ index?: number
2302
+
2303
+ /**
2304
+ * Fill style of the legend box
2305
+ */
2306
+ fillStyle?: Color;
2307
+
2308
+ /**
2309
+ * Font color for the text
2310
+ * Defaults to LegendOptions.labels.color
2311
+ */
2312
+ fontColor?: Color;
2313
+
2314
+ /**
2315
+ * If true, this item represents a hidden dataset. Label will be rendered with a strike-through effect
2316
+ */
2317
+ hidden?: boolean;
2318
+
2319
+ /**
2320
+ * For box border.
2321
+ * @see https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap
2322
+ */
2323
+ lineCap?: CanvasLineCap;
2324
+
2325
+ /**
2326
+ * For box border.
2327
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash
2328
+ */
2329
+ lineDash?: number[];
2330
+
2331
+ /**
2332
+ * For box border.
2333
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
2334
+ */
2335
+ lineDashOffset?: number;
2336
+
2337
+ /**
2338
+ * For box border.
2339
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
2340
+ */
2341
+ lineJoin?: CanvasLineJoin;
2342
+
2343
+ /**
2344
+ * Width of box border
2345
+ */
2346
+ lineWidth?: number;
2347
+
2348
+ /**
2349
+ * Stroke style of the legend box
2350
+ */
2351
+ strokeStyle?: Color;
2352
+
2353
+ /**
2354
+ * Point style of the legend box (only used if usePointStyle is true)
2355
+ */
2356
+ pointStyle?: PointStyle;
2357
+
2358
+ /**
2359
+ * Rotation of the point in degrees (only used if usePointStyle is true)
2360
+ */
2361
+ rotation?: number;
2362
+
2363
+ /**
2364
+ * Text alignment
2365
+ */
2366
+ textAlign?: TextAlign;
2367
+ }
2368
+
2369
+ export interface LegendElement<TType extends ChartType> extends Element<AnyObject, LegendOptions<TType>>, LayoutItem {
2370
+ chart: Chart<TType>;
2371
+ ctx: CanvasRenderingContext2D;
2372
+ legendItems?: LegendItem[];
2373
+ options: LegendOptions<TType>;
2374
+ fit(): void;
2375
+ }
2376
+
2377
+ export interface LegendOptions<TType extends ChartType> {
2378
+ /**
2379
+ * Is the legend shown?
2380
+ * @default true
2381
+ */
2382
+ display: boolean;
2383
+ /**
2384
+ * Position of the legend.
2385
+ * @default 'top'
2386
+ */
2387
+ position: LayoutPosition;
2388
+ /**
2389
+ * Alignment of the legend.
2390
+ * @default 'center'
2391
+ */
2392
+ align: Align;
2393
+ /**
2394
+ * Maximum height of the legend, in pixels
2395
+ */
2396
+ maxHeight: number;
2397
+ /**
2398
+ * Maximum width of the legend, in pixels
2399
+ */
2400
+ maxWidth: number;
2401
+ /**
2402
+ * Marks that this box should take the full width/height of the canvas (moving other boxes). This is unlikely to need to be changed in day-to-day use.
2403
+ * @default true
2404
+ */
2405
+ fullSize: boolean;
2406
+ /**
2407
+ * Legend will show datasets in reverse order.
2408
+ * @default false
2409
+ */
2410
+ reverse: boolean;
2411
+ /**
2412
+ * A callback that is called when a click event is registered on a label item.
2413
+ */
2414
+ onClick(this: LegendElement<TType>, e: ChartEvent, legendItem: LegendItem, legend: LegendElement<TType>): void;
2415
+ /**
2416
+ * A callback that is called when a 'mousemove' event is registered on top of a label item
2417
+ */
2418
+ onHover(this: LegendElement<TType>, e: ChartEvent, legendItem: LegendItem, legend: LegendElement<TType>): void;
2419
+ /**
2420
+ * A callback that is called when a 'mousemove' event is registered outside of a previously hovered label item.
2421
+ */
2422
+ onLeave(this: LegendElement<TType>, e: ChartEvent, legendItem: LegendItem, legend: LegendElement<TType>): void;
2423
+
2424
+ labels: {
2425
+ /**
2426
+ * Width of colored box.
2427
+ * @default 40
2428
+ */
2429
+ boxWidth: number;
2430
+ /**
2431
+ * Height of the coloured box.
2432
+ * @default fontSize
2433
+ */
2434
+ boxHeight: number;
2435
+ /**
2436
+ * Color of label
2437
+ * @see Defaults.color
2438
+ */
2439
+ color: Color;
2440
+ /**
2441
+ * Font of label
2442
+ * @see Defaults.font
2443
+ */
2444
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
2445
+ /**
2446
+ * Padding between rows of colored boxes.
2447
+ * @default 10
2448
+ */
2449
+ padding: number;
2450
+ /**
2451
+ * If usePointStyle is true, the width of the point style used for the legend.
2452
+ */
2453
+ pointStyleWidth: number;
2454
+ /**
2455
+ * Generates legend items for each thing in the legend. Default implementation returns the text + styling for the color box. See Legend Item for details.
2456
+ */
2457
+ generateLabels(chart: Chart): LegendItem[];
2458
+
2459
+ /**
2460
+ * Filters legend items out of the legend. Receives 2 parameters, a Legend Item and the chart data
2461
+ */
2462
+ filter(item: LegendItem, data: ChartData): boolean;
2463
+
2464
+ /**
2465
+ * Sorts the legend items
2466
+ */
2467
+ sort(a: LegendItem, b: LegendItem, data: ChartData): number;
2468
+
2469
+ /**
2470
+ * Override point style for the legend. Only applies if usePointStyle is true
2471
+ */
2472
+ pointStyle: PointStyle;
2473
+
2474
+ /**
2475
+ * Text alignment
2476
+ */
2477
+ textAlign?: TextAlign;
2478
+
2479
+ /**
2480
+ * Label style will match corresponding point style (size is based on the minimum value between boxWidth and font.size).
2481
+ * @default false
2482
+ */
2483
+ usePointStyle: boolean;
2484
+
2485
+ /**
2486
+ * Label borderRadius will match corresponding borderRadius.
2487
+ * @default false
2488
+ */
2489
+ useBorderRadius: boolean;
2490
+
2491
+ /**
2492
+ * Override the borderRadius to use.
2493
+ * @default undefined
2494
+ */
2495
+ borderRadius: number;
2496
+ };
2497
+ /**
2498
+ * true for rendering the legends from right to left.
2499
+ */
2500
+ rtl: boolean;
2501
+ /**
2502
+ * This will force the text direction 'rtl' or 'ltr' on the canvas for rendering the legend, regardless of the css specified on the canvas
2503
+ * @default canvas's default
2504
+ */
2505
+ textDirection: string;
2506
+
2507
+ title: {
2508
+ /**
2509
+ * Is the legend title displayed.
2510
+ * @default false
2511
+ */
2512
+ display: boolean;
2513
+ /**
2514
+ * Color of title
2515
+ * @see Defaults.color
2516
+ */
2517
+ color: Color;
2518
+ /**
2519
+ * see Fonts
2520
+ */
2521
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
2522
+ position: 'center' | 'start' | 'end';
2523
+ padding?: number | ChartArea;
2524
+ /**
2525
+ * The string title.
2526
+ */
2527
+ text: string;
2528
+ };
2529
+ }
2530
+
2531
+ export declare const SubTitle: Plugin;
2532
+ export declare const Title: Plugin;
2533
+
2534
+ export interface TitleOptions {
2535
+ /**
2536
+ * Alignment of the title.
2537
+ * @default 'center'
2538
+ */
2539
+ align: Align;
2540
+ /**
2541
+ * Is the title shown?
2542
+ * @default false
2543
+ */
2544
+ display: boolean;
2545
+ /**
2546
+ * Position of title
2547
+ * @default 'top'
2548
+ */
2549
+ position: 'top' | 'left' | 'bottom' | 'right';
2550
+ /**
2551
+ * Color of text
2552
+ * @see Defaults.color
2553
+ */
2554
+ color: Color;
2555
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
2556
+
2557
+ /**
2558
+ * Marks that this box should take the full width/height of the canvas (moving other boxes). If set to `false`, places the box above/beside the
2559
+ * chart area
2560
+ * @default true
2561
+ */
2562
+ fullSize: boolean;
2563
+ /**
2564
+ * Adds padding above and below the title text if a single number is specified. It is also possible to change top and bottom padding separately.
2565
+ */
2566
+ padding: number | { top: number; bottom: number };
2567
+ /**
2568
+ * Title text to display. If specified as an array, text is rendered on multiple lines.
2569
+ */
2570
+ text: string | string[];
2571
+ }
2572
+
2573
+ export type TooltipXAlignment = 'left' | 'center' | 'right';
2574
+ export type TooltipYAlignment = 'top' | 'center' | 'bottom';
2575
+ export interface TooltipLabelStyle {
2576
+ borderColor: Color;
2577
+ backgroundColor: Color;
2578
+
2579
+ /**
2580
+ * Width of border line
2581
+ * @since 3.1.0
2582
+ */
2583
+ borderWidth?: number;
2584
+
2585
+ /**
2586
+ * Border dash
2587
+ * @since 3.1.0
2588
+ */
2589
+ borderDash?: [number, number];
2590
+
2591
+ /**
2592
+ * Border dash offset
2593
+ * @since 3.1.0
2594
+ */
2595
+ borderDashOffset?: number;
2596
+
2597
+ /**
2598
+ * borderRadius
2599
+ * @since 3.1.0
2600
+ */
2601
+ borderRadius?: number | BorderRadius;
2602
+ }
2603
+ export interface TooltipModel<TType extends ChartType> extends Element<AnyObject, TooltipOptions<TType>> {
2604
+ readonly chart: Chart<TType>;
2605
+
2606
+ // The items that we are rendering in the tooltip. See Tooltip Item Interface section
2607
+ dataPoints: TooltipItem<TType>[];
2608
+
2609
+ // Positioning
2610
+ xAlign: TooltipXAlignment;
2611
+ yAlign: TooltipYAlignment;
2612
+
2613
+ // X and Y properties are the top left of the tooltip
2614
+ x: number;
2615
+ y: number;
2616
+ width: number;
2617
+ height: number;
2618
+ // Where the tooltip points to
2619
+ caretX: number;
2620
+ caretY: number;
2621
+
2622
+ // Body
2623
+ // The body lines that need to be rendered
2624
+ // Each object contains 3 parameters
2625
+ // before: string[] // lines of text before the line with the color square
2626
+ // lines: string[]; // lines of text to render as the main item with color square
2627
+ // after: string[]; // lines of text to render after the main lines
2628
+ body: { before: string[]; lines: string[]; after: string[] }[];
2629
+ // lines of text that appear after the title but before the body
2630
+ beforeBody: string[];
2631
+ // line of text that appear after the body and before the footer
2632
+ afterBody: string[];
2633
+
2634
+ // Title
2635
+ // lines of text that form the title
2636
+ title: string[];
2637
+
2638
+ // Footer
2639
+ // lines of text that form the footer
2640
+ footer: string[];
2641
+
2642
+ // Styles to render for each item in body[]. This is the styling of the squares in the tooltip
2643
+ labelColors: TooltipLabelStyle[];
2644
+ labelTextColors: Color[];
2645
+ labelPointStyles: { pointStyle: PointStyle; rotation: number }[];
2646
+
2647
+ // 0 opacity is a hidden tooltip
2648
+ opacity: number;
2649
+
2650
+ // tooltip options
2651
+ options: TooltipOptions<TType>;
2652
+
2653
+ getActiveElements(): ActiveElement[];
2654
+ setActiveElements(active: ActiveDataPoint[], eventPosition: Point): void;
2655
+ }
2656
+
2657
+ export interface TooltipPosition extends Point {
2658
+ xAlign?: TooltipXAlignment;
2659
+ yAlign?: TooltipYAlignment;
2660
+ }
2661
+
2662
+ export type TooltipPositionerFunction<TType extends ChartType> = (
2663
+ this: TooltipModel<TType>,
2664
+ items: readonly ActiveElement[],
2665
+ eventPosition: Point
2666
+ ) => TooltipPosition | false;
2667
+
2668
+ export interface TooltipPositionerMap {
2669
+ average: TooltipPositionerFunction<ChartType>;
2670
+ nearest: TooltipPositionerFunction<ChartType>;
2671
+ }
2672
+
2673
+ export type TooltipPositioner = keyof TooltipPositionerMap;
2674
+
2675
+ export interface Tooltip extends Plugin {
2676
+ readonly positioners: TooltipPositionerMap;
2677
+ }
2678
+
2679
+ export declare const Tooltip: Tooltip;
2680
+
2681
+ export interface TooltipDatasetCallbacks<
2682
+ TType extends ChartType,
2683
+ Model = TooltipModel<TType>,
2684
+ Item = TooltipItem<TType>> {
2685
+ beforeLabel(this: Model, tooltipItem: Item): string | string[] | void;
2686
+ label(this: Model, tooltipItem: Item): string | string[] | void;
2687
+ afterLabel(this: Model, tooltipItem: Item): string | string[] | void;
2688
+
2689
+ labelColor(this: Model, tooltipItem: Item): TooltipLabelStyle | void;
2690
+ labelTextColor(this: Model, tooltipItem: Item): Color | void;
2691
+ labelPointStyle(this: Model, tooltipItem: Item): { pointStyle: PointStyle; rotation: number } | void;
2692
+ }
2693
+
2694
+ export interface TooltipCallbacks<
2695
+ TType extends ChartType,
2696
+ Model = TooltipModel<TType>,
2697
+ Item = TooltipItem<TType>> extends TooltipDatasetCallbacks<TType, Model, Item> {
2698
+
2699
+ beforeTitle(this: Model, tooltipItems: Item[]): string | string[] | void;
2700
+ title(this: Model, tooltipItems: Item[]): string | string[] | void;
2701
+ afterTitle(this: Model, tooltipItems: Item[]): string | string[] | void;
2702
+
2703
+ beforeBody(this: Model, tooltipItems: Item[]): string | string[] | void;
2704
+ afterBody(this: Model, tooltipItems: Item[]): string | string[] | void;
2705
+
2706
+ beforeLabel(this: Model, tooltipItem: Item): string | string[] | void;
2707
+ label(this: Model, tooltipItem: Item): string | string[] | void;
2708
+ afterLabel(this: Model, tooltipItem: Item): string | string[] | void;
2709
+
2710
+ labelColor(this: Model, tooltipItem: Item): TooltipLabelStyle | void;
2711
+ labelTextColor(this: Model, tooltipItem: Item): Color | void;
2712
+ labelPointStyle(this: Model, tooltipItem: Item): { pointStyle: PointStyle; rotation: number } | void;
2713
+
2714
+ beforeFooter(this: Model, tooltipItems: Item[]): string | string[] | void;
2715
+ footer(this: Model, tooltipItems: Item[]): string | string[] | void;
2716
+ afterFooter(this: Model, tooltipItems: Item[]): string | string[] | void;
2717
+ }
2718
+
2719
+ export interface ExtendedPlugin<
2720
+ TType extends ChartType,
2721
+ O = AnyObject,
2722
+ Model = TooltipModel<TType>> {
2723
+ /**
2724
+ * @desc Called before drawing the `tooltip`. If any plugin returns `false`,
2725
+ * the tooltip drawing is cancelled until another `render` is triggered.
2726
+ * @param {Chart} chart - The chart instance.
2727
+ * @param {object} args - The call arguments.
2728
+ * @param {Tooltip} args.tooltip - The tooltip.
2729
+ * @param {object} options - The plugin options.
2730
+ * @returns {boolean} `false` to cancel the chart tooltip drawing.
2731
+ */
2732
+ beforeTooltipDraw?(chart: Chart, args: { tooltip: Model, cancelable: true }, options: O): boolean | void;
2733
+ /**
2734
+ * @desc Called after drawing the `tooltip`. Note that this hook will not
2735
+ * be called if the tooltip drawing has been previously cancelled.
2736
+ * @param {Chart} chart - The chart instance.
2737
+ * @param {object} args - The call arguments.
2738
+ * @param {Tooltip} args.tooltip - The tooltip.
2739
+ * @param {object} options - The plugin options.
2740
+ */
2741
+ afterTooltipDraw?(chart: Chart, args: { tooltip: Model }, options: O): void;
2742
+ }
2743
+
2744
+ export interface ScriptableTooltipContext<TType extends ChartType> {
2745
+ chart: UnionToIntersection<Chart<TType>>;
2746
+ tooltip: UnionToIntersection<TooltipModel<TType>>;
2747
+ tooltipItems: TooltipItem<TType>[];
2748
+ }
2749
+
2750
+ export interface TooltipOptions<TType extends ChartType = ChartType> extends CoreInteractionOptions {
2751
+ /**
2752
+ * Are on-canvas tooltips enabled?
2753
+ * @default true
2754
+ */
2755
+ enabled: Scriptable<boolean, ScriptableTooltipContext<TType>>;
2756
+ /**
2757
+ * See external tooltip section.
2758
+ */
2759
+ external(this: TooltipModel<TType>, args: { chart: Chart; tooltip: TooltipModel<TType> }): void;
2760
+ /**
2761
+ * The mode for positioning the tooltip
2762
+ */
2763
+ position: Scriptable<TooltipPositioner, ScriptableTooltipContext<TType>>
2764
+
2765
+ /**
2766
+ * Override the tooltip alignment calculations
2767
+ */
2768
+ xAlign: Scriptable<TooltipXAlignment, ScriptableTooltipContext<TType>>;
2769
+ yAlign: Scriptable<TooltipYAlignment, ScriptableTooltipContext<TType>>;
2770
+
2771
+ /**
2772
+ * Sort tooltip items.
2773
+ */
2774
+ itemSort: (a: TooltipItem<TType>, b: TooltipItem<TType>, data: ChartData) => number;
2775
+
2776
+ filter: (e: TooltipItem<TType>, index: number, array: TooltipItem<TType>[], data: ChartData) => boolean;
2777
+
2778
+ /**
2779
+ * Background color of the tooltip.
2780
+ * @default 'rgba(0, 0, 0, 0.8)'
2781
+ */
2782
+ backgroundColor: Scriptable<Color, ScriptableTooltipContext<TType>>;
2783
+ /**
2784
+ * Padding between the color box and the text.
2785
+ * @default 1
2786
+ */
2787
+ boxPadding: number;
2788
+ /**
2789
+ * Color of title
2790
+ * @default '#fff'
2791
+ */
2792
+ titleColor: Scriptable<Color, ScriptableTooltipContext<TType>>;
2793
+ /**
2794
+ * See Fonts
2795
+ * @default {weight: 'bold'}
2796
+ */
2797
+ titleFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
2798
+ /**
2799
+ * Spacing to add to top and bottom of each title line.
2800
+ * @default 2
2801
+ */
2802
+ titleSpacing: Scriptable<number, ScriptableTooltipContext<TType>>;
2803
+ /**
2804
+ * Margin to add on bottom of title section.
2805
+ * @default 6
2806
+ */
2807
+ titleMarginBottom: Scriptable<number, ScriptableTooltipContext<TType>>;
2808
+ /**
2809
+ * Horizontal alignment of the title text lines.
2810
+ * @default 'left'
2811
+ */
2812
+ titleAlign: Scriptable<TextAlign, ScriptableTooltipContext<TType>>;
2813
+ /**
2814
+ * Spacing to add to top and bottom of each tooltip item.
2815
+ * @default 2
2816
+ */
2817
+ bodySpacing: Scriptable<number, ScriptableTooltipContext<TType>>;
2818
+ /**
2819
+ * Color of body
2820
+ * @default '#fff'
2821
+ */
2822
+ bodyColor: Scriptable<Color, ScriptableTooltipContext<TType>>;
2823
+ /**
2824
+ * See Fonts.
2825
+ * @default {}
2826
+ */
2827
+ bodyFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
2828
+ /**
2829
+ * Horizontal alignment of the body text lines.
2830
+ * @default 'left'
2831
+ */
2832
+ bodyAlign: Scriptable<TextAlign, ScriptableTooltipContext<TType>>;
2833
+ /**
2834
+ * Spacing to add to top and bottom of each footer line.
2835
+ * @default 2
2836
+ */
2837
+ footerSpacing: Scriptable<number, ScriptableTooltipContext<TType>>;
2838
+ /**
2839
+ * Margin to add before drawing the footer.
2840
+ * @default 6
2841
+ */
2842
+ footerMarginTop: Scriptable<number, ScriptableTooltipContext<TType>>;
2843
+ /**
2844
+ * Color of footer
2845
+ * @default '#fff'
2846
+ */
2847
+ footerColor: Scriptable<Color, ScriptableTooltipContext<TType>>;
2848
+ /**
2849
+ * See Fonts
2850
+ * @default {weight: 'bold'}
2851
+ */
2852
+ footerFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
2853
+ /**
2854
+ * Horizontal alignment of the footer text lines.
2855
+ * @default 'left'
2856
+ */
2857
+ footerAlign: Scriptable<TextAlign, ScriptableTooltipContext<TType>>;
2858
+ /**
2859
+ * Padding to add to the tooltip
2860
+ * @default 6
2861
+ */
2862
+ padding: Scriptable<Padding, ScriptableTooltipContext<TType>>;
2863
+ /**
2864
+ * Extra distance to move the end of the tooltip arrow away from the tooltip point.
2865
+ * @default 2
2866
+ */
2867
+ caretPadding: Scriptable<number, ScriptableTooltipContext<TType>>;
2868
+ /**
2869
+ * Size, in px, of the tooltip arrow.
2870
+ * @default 5
2871
+ */
2872
+ caretSize: Scriptable<number, ScriptableTooltipContext<TType>>;
2873
+ /**
2874
+ * Radius of tooltip corner curves.
2875
+ * @default 6
2876
+ */
2877
+ cornerRadius: Scriptable<number | BorderRadius, ScriptableTooltipContext<TType>>;
2878
+ /**
2879
+ * Color to draw behind the colored boxes when multiple items are in the tooltip.
2880
+ * @default '#fff'
2881
+ */
2882
+ multiKeyBackground: Scriptable<Color, ScriptableTooltipContext<TType>>;
2883
+ /**
2884
+ * If true, color boxes are shown in the tooltip.
2885
+ * @default true
2886
+ */
2887
+ displayColors: Scriptable<boolean, ScriptableTooltipContext<TType>>;
2888
+ /**
2889
+ * Width of the color box if displayColors is true.
2890
+ * @default bodyFont.size
2891
+ */
2892
+ boxWidth: Scriptable<number, ScriptableTooltipContext<TType>>;
2893
+ /**
2894
+ * Height of the color box if displayColors is true.
2895
+ * @default bodyFont.size
2896
+ */
2897
+ boxHeight: Scriptable<number, ScriptableTooltipContext<TType>>;
2898
+ /**
2899
+ * Use the corresponding point style (from dataset options) instead of color boxes, ex: star, triangle etc. (size is based on the minimum value between boxWidth and boxHeight)
2900
+ * @default false
2901
+ */
2902
+ usePointStyle: Scriptable<boolean, ScriptableTooltipContext<TType>>;
2903
+ /**
2904
+ * Color of the border.
2905
+ * @default 'rgba(0, 0, 0, 0)'
2906
+ */
2907
+ borderColor: Scriptable<Color, ScriptableTooltipContext<TType>>;
2908
+ /**
2909
+ * Size of the border.
2910
+ * @default 0
2911
+ */
2912
+ borderWidth: Scriptable<number, ScriptableTooltipContext<TType>>;
2913
+ /**
2914
+ * true for rendering the legends from right to left.
2915
+ */
2916
+ rtl: Scriptable<boolean, ScriptableTooltipContext<TType>>;
2917
+
2918
+ /**
2919
+ * This will force the text direction 'rtl' or 'ltr on the canvas for rendering the tooltips, regardless of the css specified on the canvas
2920
+ * @default canvas's default
2921
+ */
2922
+ textDirection: Scriptable<string, ScriptableTooltipContext<TType>>;
2923
+
2924
+ animation: AnimationSpec<TType> | false;
2925
+ animations: AnimationsSpec<TType> | false;
2926
+ callbacks: TooltipCallbacks<TType>;
2927
+ }
2928
+
2929
+ export interface TooltipDatasetOptions<TType extends ChartType = ChartType> {
2930
+ callbacks: TooltipDatasetCallbacks<TType>;
2931
+ }
2932
+
2933
+ export interface TooltipItem<TType extends ChartType> {
2934
+ /**
2935
+ * The chart the tooltip is being shown on
2936
+ */
2937
+ chart: Chart;
2938
+
2939
+ /**
2940
+ * Label for the tooltip
2941
+ */
2942
+ label: string;
2943
+
2944
+ /**
2945
+ * Parsed data values for the given `dataIndex` and `datasetIndex`
2946
+ */
2947
+ parsed: UnionToIntersection<ParsedDataType<TType>>;
2948
+
2949
+ /**
2950
+ * Raw data values for the given `dataIndex` and `datasetIndex`
2951
+ */
2952
+ raw: unknown;
2953
+
2954
+ /**
2955
+ * Formatted value for the tooltip
2956
+ */
2957
+ formattedValue: string;
2958
+
2959
+ /**
2960
+ * The dataset the item comes from
2961
+ */
2962
+ dataset: UnionToIntersection<ChartDataset<TType>>;
2963
+
2964
+ /**
2965
+ * Index of the dataset the item comes from
2966
+ */
2967
+ datasetIndex: number;
2968
+
2969
+ /**
2970
+ * Index of this data item in the dataset
2971
+ */
2972
+ dataIndex: number;
2973
+
2974
+ /**
2975
+ * The chart element (point, arc, bar, etc.) for this tooltip item
2976
+ */
2977
+ element: Element;
2978
+ }
2979
+
2980
+ export interface PluginDatasetOptionsByType<TType extends ChartType> {
2981
+ tooltip: TooltipDatasetOptions<TType>;
2982
+ }
2983
+
2984
+ export interface PluginOptionsByType<TType extends ChartType> {
2985
+ colors: ColorsPluginOptions;
2986
+ decimation: DecimationOptions;
2987
+ filler: FillerOptions;
2988
+ legend: LegendOptions<TType>;
2989
+ subtitle: TitleOptions;
2990
+ title: TitleOptions;
2991
+ tooltip: TooltipOptions<TType>;
2992
+ }
2993
+ export interface PluginChartOptions<TType extends ChartType> {
2994
+ plugins: PluginOptionsByType<TType>;
2995
+ }
2996
+
2997
+ export interface BorderOptions {
2998
+ /**
2999
+ * @default true
3000
+ */
3001
+ display: boolean
3002
+ /**
3003
+ * @default []
3004
+ */
3005
+ dash: Scriptable<number[], ScriptableScaleContext>;
3006
+ /**
3007
+ * @default 0
3008
+ */
3009
+ dashOffset: Scriptable<number, ScriptableScaleContext>;
3010
+ color: Color;
3011
+ width: number;
3012
+ z: number;
3013
+ }
3014
+
3015
+ export interface GridLineOptions {
3016
+ /**
3017
+ * @default true
3018
+ */
3019
+ display: boolean;
3020
+ /**
3021
+ * @default false
3022
+ */
3023
+ circular: boolean;
3024
+ /**
3025
+ * @default 'rgba(0, 0, 0, 0.1)'
3026
+ */
3027
+ color: ScriptableAndArray<Color, ScriptableScaleContext>;
3028
+ /**
3029
+ * @default 1
3030
+ */
3031
+ lineWidth: ScriptableAndArray<number, ScriptableScaleContext>;
3032
+ /**
3033
+ * @default true
3034
+ */
3035
+ drawOnChartArea: boolean;
3036
+ /**
3037
+ * @default true
3038
+ */
3039
+ drawTicks: boolean;
3040
+ /**
3041
+ * @default []
3042
+ */
3043
+ tickBorderDash: Scriptable<number[], ScriptableScaleContext>;
3044
+ /**
3045
+ * @default 0
3046
+ */
3047
+ tickBorderDashOffset: Scriptable<number, ScriptableScaleContext>;
3048
+ /**
3049
+ * @default 'rgba(0, 0, 0, 0.1)'
3050
+ */
3051
+ tickColor: ScriptableAndArray<Color, ScriptableScaleContext>;
3052
+ /**
3053
+ * @default 10
3054
+ */
3055
+ tickLength: number;
3056
+ /**
3057
+ * @default 1
3058
+ */
3059
+ tickWidth: number;
3060
+ /**
3061
+ * @default false
3062
+ */
3063
+ offset: boolean;
3064
+ /**
3065
+ * @default 0
3066
+ */
3067
+ z: number;
3068
+ }
3069
+
3070
+ export interface TickOptions {
3071
+ /**
3072
+ * Color of label backdrops.
3073
+ * @default 'rgba(255, 255, 255, 0.75)'
3074
+ */
3075
+ backdropColor: Scriptable<Color, ScriptableScaleContext>;
3076
+ /**
3077
+ * Padding of tick backdrop.
3078
+ * @default 2
3079
+ */
3080
+ backdropPadding: number | ChartArea;
3081
+
3082
+ /**
3083
+ * Returns the string representation of the tick value as it should be displayed on the chart. See callback.
3084
+ */
3085
+ callback: (this: Scale, tickValue: number | string, index: number, ticks: Tick[]) => string | string[] | number | number[] | null | undefined;
3086
+ /**
3087
+ * If true, show tick labels.
3088
+ * @default true
3089
+ */
3090
+ display: boolean;
3091
+ /**
3092
+ * Color of tick
3093
+ * @see Defaults.color
3094
+ */
3095
+ color: ScriptableAndArray<Color, ScriptableScaleContext>;
3096
+ /**
3097
+ * see Fonts
3098
+ */
3099
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableScaleContext>;
3100
+ /**
3101
+ * Sets the offset of the tick labels from the axis
3102
+ */
3103
+ padding: number;
3104
+ /**
3105
+ * If true, draw a background behind the tick labels.
3106
+ * @default false
3107
+ */
3108
+ showLabelBackdrop: Scriptable<boolean, ScriptableScaleContext>;
3109
+ /**
3110
+ * The color of the stroke around the text.
3111
+ * @default undefined
3112
+ */
3113
+ textStrokeColor: Scriptable<Color, ScriptableScaleContext>;
3114
+ /**
3115
+ * Stroke width around the text.
3116
+ * @default 0
3117
+ */
3118
+ textStrokeWidth: Scriptable<number, ScriptableScaleContext>;
3119
+ /**
3120
+ * z-index of tick layer. Useful when ticks are drawn on chart area. Values <= 0 are drawn under datasets, > 0 on top.
3121
+ * @default 0
3122
+ */
3123
+ z: number;
3124
+
3125
+ major: {
3126
+ /**
3127
+ * If true, major ticks are generated. A major tick will affect autoskipping and major will be defined on ticks in the scriptable options context.
3128
+ * @default false
3129
+ */
3130
+ enabled: boolean;
3131
+ };
3132
+ }
3133
+
3134
+ export type CartesianTickOptions = TickOptions & {
3135
+ /**
3136
+ * The number of ticks to examine when deciding how many labels will fit. Setting a smaller value will be faster, but may be less accurate when there is large variability in label length.
3137
+ * @default ticks.length
3138
+ */
3139
+ sampleSize: number;
3140
+ /**
3141
+ * The label alignment
3142
+ * @default 'center'
3143
+ */
3144
+ align: Align | 'inner';
3145
+ /**
3146
+ * If true, automatically calculates how many labels can be shown and hides labels accordingly. Labels will be rotated up to maxRotation before skipping any. Turn autoSkip off to show all labels no matter what.
3147
+ * @default true
3148
+ */
3149
+ autoSkip: boolean;
3150
+ /**
3151
+ * Padding between the ticks on the horizontal axis when autoSkip is enabled.
3152
+ * @default 0
3153
+ */
3154
+ autoSkipPadding: number;
3155
+
3156
+ /**
3157
+ * How is the label positioned perpendicular to the axis direction.
3158
+ * This only applies when the rotation is 0 and the axis position is one of "top", "left", "right", or "bottom"
3159
+ * @default 'near'
3160
+ */
3161
+ crossAlign: 'near' | 'center' | 'far';
3162
+
3163
+ /**
3164
+ * Should the defined `min` and `max` values be presented as ticks even if they are not "nice".
3165
+ * @default: true
3166
+ */
3167
+ includeBounds: boolean;
3168
+
3169
+ /**
3170
+ * Distance in pixels to offset the label from the centre point of the tick (in the x direction for the x axis, and the y direction for the y axis). Note: this can cause labels at the edges to be cropped by the edge of the canvas
3171
+ * @default 0
3172
+ */
3173
+ labelOffset: number;
3174
+
3175
+ /**
3176
+ * Minimum rotation for tick labels. Note: Only applicable to horizontal scales.
3177
+ * @default 0
3178
+ */
3179
+ minRotation: number;
3180
+ /**
3181
+ * Maximum rotation for tick labels when rotating to condense labels. Note: Rotation doesn't occur until necessary. Note: Only applicable to horizontal scales.
3182
+ * @default 50
3183
+ */
3184
+ maxRotation: number;
3185
+ /**
3186
+ * Flips tick labels around axis, displaying the labels inside the chart instead of outside. Note: Only applicable to vertical scales.
3187
+ * @default false
3188
+ */
3189
+ mirror: boolean;
3190
+ /**
3191
+ * Padding between the tick label and the axis. When set on a vertical axis, this applies in the horizontal (X) direction. When set on a horizontal axis, this applies in the vertical (Y) direction.
3192
+ * @default 0
3193
+ */
3194
+ padding: number;
3195
+ /**
3196
+ * Maximum number of ticks and gridlines to show.
3197
+ * @default 11
3198
+ */
3199
+ maxTicksLimit: number;
3200
+ }
3201
+
3202
+ export interface ScriptableCartesianScaleContext {
3203
+ scale: keyof CartesianScaleTypeRegistry;
3204
+ type: string;
3205
+ }
3206
+
3207
+ export interface ScriptableChartContext {
3208
+ chart: Chart;
3209
+ type: string;
3210
+ }
3211
+
3212
+ export interface CartesianScaleOptions extends CoreScaleOptions {
3213
+ /**
3214
+ * Scale boundary strategy (bypassed by min/max time options)
3215
+ * - `data`: make sure data are fully visible, ticks outside are removed
3216
+ * - `ticks`: make sure ticks are fully visible, data outside are truncated
3217
+ * @since 2.7.0
3218
+ * @default 'ticks'
3219
+ */
3220
+ bounds: 'ticks' | 'data';
3221
+
3222
+ /**
3223
+ * Position of the axis.
3224
+ */
3225
+ position: 'left' | 'top' | 'right' | 'bottom' | 'center' | { [scale: string]: number };
3226
+
3227
+ /**
3228
+ * Stack group. Axes at the same `position` with same `stack` are stacked.
3229
+ */
3230
+ stack?: string;
3231
+
3232
+ /**
3233
+ * Weight of the scale in stack group. Used to determine the amount of allocated space for the scale within the group.
3234
+ * @default 1
3235
+ */
3236
+ stackWeight?: number;
3237
+
3238
+ /**
3239
+ * Which type of axis this is. Possible values are: 'x', 'y', 'r'. If not set, this is inferred from the first character of the ID which should be 'x', 'y' or 'r'.
3240
+ */
3241
+ axis: 'x' | 'y' | 'r';
3242
+
3243
+ /**
3244
+ * User defined minimum value for the scale, overrides minimum value from data.
3245
+ */
3246
+ min: number;
3247
+
3248
+ /**
3249
+ * User defined maximum value for the scale, overrides maximum value from data.
3250
+ */
3251
+ max: number;
3252
+
3253
+ /**
3254
+ * If true, extra space is added to the both edges and the axis is scaled to fit into the chart area. This is set to true for a bar chart by default.
3255
+ * @default false
3256
+ */
3257
+ offset: boolean;
3258
+
3259
+ grid: Partial<GridLineOptions>;
3260
+
3261
+ border: BorderOptions;
3262
+
3263
+ /** Options for the scale title. */
3264
+ title: {
3265
+ /** If true, displays the axis title. */
3266
+ display: boolean;
3267
+ /** Alignment of the axis title. */
3268
+ align: Align;
3269
+ /** The text for the title, e.g. "# of People" or "Response Choices". */
3270
+ text: string | string[];
3271
+ /** Color of the axis label. */
3272
+ color: Color;
3273
+ /** Information about the axis title font. */
3274
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableCartesianScaleContext>;
3275
+ /** Padding to apply around scale labels. */
3276
+ padding: number | {
3277
+ /** Padding on the (relative) top side of this axis label. */
3278
+ top: number;
3279
+ /** Padding on the (relative) bottom side of this axis label. */
3280
+ bottom: number;
3281
+ /** This is a shorthand for defining top/bottom to the same values. */
3282
+ y: number;
3283
+ };
3284
+ };
3285
+
3286
+ /**
3287
+ * If true, data will be comprised between datasets of data
3288
+ * @default false
3289
+ */
3290
+ stacked?: boolean | 'single';
3291
+
3292
+ ticks: CartesianTickOptions;
3293
+ }
3294
+
3295
+ export type CategoryScaleOptions = Omit<CartesianScaleOptions, 'min' | 'max'> & {
3296
+ min: string | number;
3297
+ max: string | number;
3298
+ labels: string[] | string[][];
3299
+ };
3300
+
3301
+ export type CategoryScale<O extends CategoryScaleOptions = CategoryScaleOptions> = Scale<O>
3302
+ export declare const CategoryScale: ChartComponent & {
3303
+ prototype: CategoryScale;
3304
+ new <O extends CategoryScaleOptions = CategoryScaleOptions>(cfg: AnyObject): CategoryScale<O>;
3305
+ };
3306
+
3307
+ export type LinearScaleOptions = CartesianScaleOptions & {
3308
+
3309
+ /**
3310
+ * if true, scale will include 0 if it is not already included.
3311
+ * @default true
3312
+ */
3313
+ beginAtZero: boolean;
3314
+ /**
3315
+ * Adjustment used when calculating the minimum data value.
3316
+ */
3317
+ suggestedMin?: number;
3318
+ /**
3319
+ * Adjustment used when calculating the maximum data value.
3320
+ */
3321
+ suggestedMax?: number;
3322
+ /**
3323
+ * Percentage (string ending with %) or amount (number) for added room in the scale range above and below data.
3324
+ */
3325
+ grace?: string | number;
3326
+
3327
+ ticks: {
3328
+ /**
3329
+ * The Intl.NumberFormat options used by the default label formatter
3330
+ */
3331
+ format: Intl.NumberFormatOptions;
3332
+
3333
+ /**
3334
+ * if defined and stepSize is not specified, the step size will be rounded to this many decimal places.
3335
+ */
3336
+ precision: number;
3337
+
3338
+ /**
3339
+ * User defined fixed step size for the scale
3340
+ */
3341
+ stepSize: number;
3342
+
3343
+ /**
3344
+ * User defined count of ticks
3345
+ */
3346
+ count: number;
3347
+ };
3348
+ };
3349
+
3350
+ export type LinearScale<O extends LinearScaleOptions = LinearScaleOptions> = Scale<O>
3351
+ export declare const LinearScale: ChartComponent & {
3352
+ prototype: LinearScale;
3353
+ new <O extends LinearScaleOptions = LinearScaleOptions>(cfg: AnyObject): LinearScale<O>;
3354
+ };
3355
+
3356
+ export type LogarithmicScaleOptions = CartesianScaleOptions & {
3357
+ /**
3358
+ * Adjustment used when calculating the maximum data value.
3359
+ */
3360
+ suggestedMin?: number;
3361
+ /**
3362
+ * Adjustment used when calculating the minimum data value.
3363
+ */
3364
+ suggestedMax?: number;
3365
+
3366
+ ticks: {
3367
+ /**
3368
+ * The Intl.NumberFormat options used by the default label formatter
3369
+ */
3370
+ format: Intl.NumberFormatOptions;
3371
+ };
3372
+ };
3373
+
3374
+ export type LogarithmicScale<O extends LogarithmicScaleOptions = LogarithmicScaleOptions> = Scale<O>
3375
+ export declare const LogarithmicScale: ChartComponent & {
3376
+ prototype: LogarithmicScale;
3377
+ new <O extends LogarithmicScaleOptions = LogarithmicScaleOptions>(cfg: AnyObject): LogarithmicScale<O>;
3378
+ };
3379
+
3380
+ export type TimeScaleTimeOptions = {
3381
+ /**
3382
+ * Custom parser for dates.
3383
+ */
3384
+ parser: string | ((v: unknown) => number);
3385
+ /**
3386
+ * If defined, dates will be rounded to the start of this unit. See Time Units below for the allowed units.
3387
+ */
3388
+ round: false | TimeUnit;
3389
+ /**
3390
+ * If boolean and true and the unit is set to 'week', then the first day of the week will be Monday. Otherwise, it will be Sunday.
3391
+ * If `number`, the index of the first day of the week (0 - Sunday, 6 - Saturday).
3392
+ * @default false
3393
+ */
3394
+ isoWeekday: boolean | number;
3395
+ /**
3396
+ * Sets how different time units are displayed.
3397
+ */
3398
+ displayFormats: {
3399
+ [key: string]: string;
3400
+ };
3401
+ /**
3402
+ * The format string to use for the tooltip.
3403
+ */
3404
+ tooltipFormat: string;
3405
+ /**
3406
+ * If defined, will force the unit to be a certain type. See Time Units section below for details.
3407
+ * @default false
3408
+ */
3409
+ unit: false | TimeUnit;
3410
+ /**
3411
+ * The minimum display format to be used for a time unit.
3412
+ * @default 'millisecond'
3413
+ */
3414
+ minUnit: TimeUnit;
3415
+ };
3416
+
3417
+ export type TimeScaleTickOptions = {
3418
+ /**
3419
+ * Ticks generation input values:
3420
+ * - 'auto': generates "optimal" ticks based on scale size and time options.
3421
+ * - 'data': generates ticks from data (including labels from data `{t|x|y}` objects).
3422
+ * - 'labels': generates ticks from user given `data.labels` values ONLY.
3423
+ * @see https://github.com/chartjs/Chart.js/pull/4507
3424
+ * @since 2.7.0
3425
+ * @default 'auto'
3426
+ */
3427
+ source: 'labels' | 'auto' | 'data';
3428
+ /**
3429
+ * The number of units between grid lines.
3430
+ * @default 1
3431
+ */
3432
+ stepSize: number;
3433
+ };
3434
+
3435
+ export type TimeScaleOptions = Omit<CartesianScaleOptions, 'min' | 'max'> & {
3436
+ min: string | number;
3437
+ max: string | number;
3438
+ suggestedMin: string | number;
3439
+ suggestedMax: string | number;
3440
+ /**
3441
+ * Scale boundary strategy (bypassed by min/max time options)
3442
+ * - `data`: make sure data are fully visible, ticks outside are removed
3443
+ * - `ticks`: make sure ticks are fully visible, data outside are truncated
3444
+ * @since 2.7.0
3445
+ * @default 'data'
3446
+ */
3447
+ bounds: 'ticks' | 'data';
3448
+
3449
+ /**
3450
+ * If true, bar chart offsets are computed with skipped tick sizes
3451
+ * @since 3.8.0
3452
+ * @default false
3453
+ */
3454
+ offsetAfterAutoskip: boolean;
3455
+
3456
+ /**
3457
+ * options for creating a new adapter instance
3458
+ */
3459
+ adapters: {
3460
+ date: unknown;
3461
+ };
3462
+
3463
+ time: TimeScaleTimeOptions;
3464
+
3465
+ ticks: TimeScaleTickOptions;
3466
+ };
3467
+
3468
+ export interface TimeScale<O extends TimeScaleOptions = TimeScaleOptions> extends Scale<O> {
3469
+ format(value: number, format?: string): string;
3470
+ getDataTimestamps(): number[];
3471
+ getLabelTimestamps(): string[];
3472
+ normalize(values: number[]): number[];
3473
+ }
3474
+
3475
+ export declare const TimeScale: ChartComponent & {
3476
+ prototype: TimeScale;
3477
+ new <O extends TimeScaleOptions = TimeScaleOptions>(cfg: AnyObject): TimeScale<O>;
3478
+ };
3479
+
3480
+ export type TimeSeriesScale<O extends TimeScaleOptions = TimeScaleOptions> = TimeScale<O>
3481
+ export declare const TimeSeriesScale: ChartComponent & {
3482
+ prototype: TimeSeriesScale;
3483
+ new <O extends TimeScaleOptions = TimeScaleOptions>(cfg: AnyObject): TimeSeriesScale<O>;
3484
+ };
3485
+
3486
+ export type RadialTickOptions = TickOptions & {
3487
+ /**
3488
+ * The Intl.NumberFormat options used by the default label formatter
3489
+ */
3490
+ format: Intl.NumberFormatOptions;
3491
+
3492
+ /**
3493
+ * Maximum number of ticks and gridlines to show.
3494
+ * @default 11
3495
+ */
3496
+ maxTicksLimit: number;
3497
+
3498
+ /**
3499
+ * if defined and stepSize is not specified, the step size will be rounded to this many decimal places.
3500
+ */
3501
+ precision: number;
3502
+
3503
+ /**
3504
+ * User defined fixed step size for the scale.
3505
+ */
3506
+ stepSize: number;
3507
+
3508
+ /**
3509
+ * User defined number of ticks
3510
+ */
3511
+ count: number;
3512
+ }
3513
+
3514
+ export type RadialLinearScaleOptions = CoreScaleOptions & {
3515
+ animate: boolean;
3516
+
3517
+ startAngle: number;
3518
+
3519
+ angleLines: {
3520
+ /**
3521
+ * if true, angle lines are shown.
3522
+ * @default true
3523
+ */
3524
+ display: boolean;
3525
+ /**
3526
+ * Color of angled lines.
3527
+ * @default 'rgba(0, 0, 0, 0.1)'
3528
+ */
3529
+ color: Scriptable<Color, ScriptableScaleContext>;
3530
+ /**
3531
+ * Width of angled lines.
3532
+ * @default 1
3533
+ */
3534
+ lineWidth: Scriptable<number, ScriptableScaleContext>;
3535
+ /**
3536
+ * Length and spacing of dashes on angled lines. See MDN.
3537
+ * @default []
3538
+ */
3539
+ borderDash: Scriptable<number[], ScriptableScaleContext>;
3540
+ /**
3541
+ * Offset for line dashes. See MDN.
3542
+ * @default 0
3543
+ */
3544
+ borderDashOffset: Scriptable<number, ScriptableScaleContext>;
3545
+ };
3546
+
3547
+ /**
3548
+ * if true, scale will include 0 if it is not already included.
3549
+ * @default false
3550
+ */
3551
+ beginAtZero: boolean;
3552
+
3553
+ grid: Partial<GridLineOptions>;
3554
+
3555
+ /**
3556
+ * User defined minimum number for the scale, overrides minimum value from data.
3557
+ */
3558
+ min: number;
3559
+ /**
3560
+ * User defined maximum number for the scale, overrides maximum value from data.
3561
+ */
3562
+ max: number;
3563
+
3564
+ pointLabels: {
3565
+ /**
3566
+ * Background color of the point label.
3567
+ * @default undefined
3568
+ */
3569
+ backdropColor: Scriptable<Color, ScriptableScalePointLabelContext>;
3570
+ /**
3571
+ * Padding of label backdrop.
3572
+ * @default 2
3573
+ */
3574
+ backdropPadding: Scriptable<number | ChartArea, ScriptableScalePointLabelContext>;
3575
+
3576
+ /**
3577
+ * Border radius
3578
+ * @default 0
3579
+ * @since 3.8.0
3580
+ */
3581
+ borderRadius: Scriptable<number | BorderRadius, ScriptableScalePointLabelContext>;
3582
+
3583
+ /**
3584
+ * if true, point labels are shown. When `display: 'auto'`, the label is hidden if it overlaps with another label.
3585
+ * @default true
3586
+ */
3587
+ display: boolean | 'auto';
3588
+ /**
3589
+ * Color of label
3590
+ * @see Defaults.color
3591
+ */
3592
+ color: Scriptable<Color, ScriptableScalePointLabelContext>;
3593
+ /**
3594
+ */
3595
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableScalePointLabelContext>;
3596
+
3597
+ /**
3598
+ * Callback function to transform data labels to point labels. The default implementation simply returns the current string.
3599
+ */
3600
+ callback: (label: string, index: number) => string | string[] | number | number[];
3601
+
3602
+ /**
3603
+ * Padding around the pointLabels
3604
+ * @default 5
3605
+ */
3606
+ padding: Scriptable<number, ScriptableScalePointLabelContext>;
3607
+
3608
+ /**
3609
+ * if true, point labels are centered.
3610
+ * @default false
3611
+ */
3612
+ centerPointLabels: boolean;
3613
+ };
3614
+
3615
+ /**
3616
+ * Adjustment used when calculating the maximum data value.
3617
+ */
3618
+ suggestedMax: number;
3619
+ /**
3620
+ * Adjustment used when calculating the minimum data value.
3621
+ */
3622
+ suggestedMin: number;
3623
+
3624
+ ticks: RadialTickOptions;
3625
+ };
3626
+
3627
+ export interface RadialLinearScale<O extends RadialLinearScaleOptions = RadialLinearScaleOptions> extends Scale<O> {
3628
+ xCenter: number;
3629
+ yCenter: number;
3630
+ readonly drawingArea: number;
3631
+ setCenterPoint(leftMovement: number, rightMovement: number, topMovement: number, bottomMovement: number): void;
3632
+ getIndexAngle(index: number): number;
3633
+ getDistanceFromCenterForValue(value: number): number;
3634
+ getValueForDistanceFromCenter(distance: number): number;
3635
+ getPointPosition(index: number, distanceFromCenter: number): { x: number; y: number; angle: number };
3636
+ getPointPositionForValue(index: number, value: number): { x: number; y: number; angle: number };
3637
+ getPointLabelPosition(index: number): ChartArea;
3638
+ getBasePosition(index: number): { x: number; y: number; angle: number };
3639
+ }
3640
+ export declare const RadialLinearScale: ChartComponent & {
3641
+ prototype: RadialLinearScale;
3642
+ new <O extends RadialLinearScaleOptions = RadialLinearScaleOptions>(cfg: AnyObject): RadialLinearScale<O>;
3643
+ };
3644
+
3645
+ export interface CartesianScaleTypeRegistry {
3646
+ linear: {
3647
+ options: LinearScaleOptions;
3648
+ };
3649
+ logarithmic: {
3650
+ options: LogarithmicScaleOptions;
3651
+ };
3652
+ category: {
3653
+ options: CategoryScaleOptions;
3654
+ };
3655
+ time: {
3656
+ options: TimeScaleOptions;
3657
+ };
3658
+ timeseries: {
3659
+ options: TimeScaleOptions;
3660
+ };
3661
+ }
3662
+
3663
+ export interface RadialScaleTypeRegistry {
3664
+ radialLinear: {
3665
+ options: RadialLinearScaleOptions;
3666
+ };
3667
+ }
3668
+
3669
+ export interface ScaleTypeRegistry extends CartesianScaleTypeRegistry, RadialScaleTypeRegistry {
3670
+ }
3671
+
3672
+ export type ScaleType = keyof ScaleTypeRegistry;
3673
+
3674
+ export interface CartesianParsedData extends Point {
3675
+ // Only specified when stacked bars are enabled
3676
+ _stacks?: {
3677
+ // Key is the stack ID which is generally the axis ID
3678
+ [key: string]: {
3679
+ // Inner key is the datasetIndex
3680
+ [key: number]: number;
3681
+ }
3682
+ }
3683
+ }
3684
+
3685
+ export interface BarParsedData extends CartesianParsedData {
3686
+ // Only specified if floating bars are show
3687
+ _custom?: {
3688
+ barStart: number;
3689
+ barEnd: number;
3690
+ start: number;
3691
+ end: number;
3692
+ min: number;
3693
+ max: number;
3694
+ }
3695
+ }
3696
+
3697
+ export interface BubbleParsedData extends CartesianParsedData {
3698
+ // The bubble radius value
3699
+ _custom: number;
3700
+ }
3701
+
3702
+ export interface RadialParsedData {
3703
+ r: number;
3704
+ }
3705
+
3706
+ export interface ChartTypeRegistry {
3707
+ bar: {
3708
+ chartOptions: BarControllerChartOptions;
3709
+ datasetOptions: BarControllerDatasetOptions;
3710
+ defaultDataPoint: number | [number, number] | null;
3711
+ metaExtensions: {};
3712
+ parsedDataType: BarParsedData,
3713
+ scales: keyof CartesianScaleTypeRegistry;
3714
+ };
3715
+ line: {
3716
+ chartOptions: LineControllerChartOptions;
3717
+ datasetOptions: LineControllerDatasetOptions & FillerControllerDatasetOptions;
3718
+ defaultDataPoint: ScatterDataPoint | number | null;
3719
+ metaExtensions: {};
3720
+ parsedDataType: CartesianParsedData;
3721
+ scales: keyof CartesianScaleTypeRegistry;
3722
+ };
3723
+ scatter: {
3724
+ chartOptions: ScatterControllerChartOptions;
3725
+ datasetOptions: ScatterControllerDatasetOptions;
3726
+ defaultDataPoint: ScatterDataPoint | number | null;
3727
+ metaExtensions: {};
3728
+ parsedDataType: CartesianParsedData;
3729
+ scales: keyof CartesianScaleTypeRegistry;
3730
+ };
3731
+ bubble: {
3732
+ chartOptions: unknown;
3733
+ datasetOptions: BubbleControllerDatasetOptions;
3734
+ defaultDataPoint: BubbleDataPoint;
3735
+ metaExtensions: {};
3736
+ parsedDataType: BubbleParsedData;
3737
+ scales: keyof CartesianScaleTypeRegistry;
3738
+ };
3739
+ pie: {
3740
+ chartOptions: PieControllerChartOptions;
3741
+ datasetOptions: PieControllerDatasetOptions;
3742
+ defaultDataPoint: PieDataPoint;
3743
+ metaExtensions: PieMetaExtensions;
3744
+ parsedDataType: number;
3745
+ scales: keyof CartesianScaleTypeRegistry;
3746
+ };
3747
+ doughnut: {
3748
+ chartOptions: DoughnutControllerChartOptions;
3749
+ datasetOptions: DoughnutControllerDatasetOptions;
3750
+ defaultDataPoint: DoughnutDataPoint;
3751
+ metaExtensions: DoughnutMetaExtensions;
3752
+ parsedDataType: number;
3753
+ scales: keyof CartesianScaleTypeRegistry;
3754
+ };
3755
+ polarArea: {
3756
+ chartOptions: PolarAreaControllerChartOptions;
3757
+ datasetOptions: PolarAreaControllerDatasetOptions;
3758
+ defaultDataPoint: number;
3759
+ metaExtensions: {};
3760
+ parsedDataType: RadialParsedData;
3761
+ scales: keyof RadialScaleTypeRegistry;
3762
+ };
3763
+ radar: {
3764
+ chartOptions: RadarControllerChartOptions;
3765
+ datasetOptions: RadarControllerDatasetOptions & FillerControllerDatasetOptions;
3766
+ defaultDataPoint: number | null;
3767
+ metaExtensions: {};
3768
+ parsedDataType: RadialParsedData;
3769
+ scales: keyof RadialScaleTypeRegistry;
3770
+ };
3771
+ }
3772
+
3773
+ export type ChartType = keyof ChartTypeRegistry;
3774
+
3775
+ export type ScaleOptionsByType<TScale extends ScaleType = ScaleType> =
3776
+ { [key in ScaleType]: { type: key } & ScaleTypeRegistry[key]['options'] }[TScale]
3777
+ ;
3778
+
3779
+ // Convenience alias for creating and manipulating scale options in user code
3780
+ export type ScaleOptions<TScale extends ScaleType = ScaleType> = DeepPartial<ScaleOptionsByType<TScale>>;
3781
+
3782
+ export type DatasetChartOptions<TType extends ChartType = ChartType> = {
3783
+ [key in TType]: {
3784
+ datasets: ChartTypeRegistry[key]['datasetOptions'];
3785
+ };
3786
+ };
3787
+
3788
+ export type ScaleChartOptions<TType extends ChartType = ChartType> = {
3789
+ scales: {
3790
+ [key: string]: ScaleOptionsByType<ChartTypeRegistry[TType]['scales']>;
3791
+ };
3792
+ };
3793
+
3794
+ export type ChartOptions<TType extends ChartType = ChartType> = Exclude<
3795
+ DeepPartial<
3796
+ CoreChartOptions<TType> &
3797
+ ElementChartOptions<TType> &
3798
+ PluginChartOptions<TType> &
3799
+ DatasetChartOptions<TType> &
3800
+ ScaleChartOptions<TType> &
3801
+ ChartTypeRegistry[TType]['chartOptions']
3802
+ >,
3803
+ DeepPartial<unknown[]>
3804
+ >;
3805
+
3806
+ export type DefaultDataPoint<TType extends ChartType> = DistributiveArray<ChartTypeRegistry[TType]['defaultDataPoint']>;
3807
+
3808
+ export type ParsedDataType<TType extends ChartType = ChartType> = ChartTypeRegistry[TType]['parsedDataType'];
3809
+
3810
+ export interface ChartDatasetProperties<TType extends ChartType, TData> {
3811
+ type?: TType;
3812
+ data: TData;
3813
+ }
3814
+
3815
+ export interface ChartDatasetPropertiesCustomTypesPerDataset<TType extends ChartType, TData> {
3816
+ type: TType;
3817
+ data: TData;
3818
+ }
3819
+
3820
+ export type ChartDataset<
3821
+ TType extends ChartType = ChartType,
3822
+ TData = DefaultDataPoint<TType>
3823
+ > = DeepPartial<
3824
+ { [key in ChartType]: { type: key } & ChartTypeRegistry[key]['datasetOptions'] }[TType]
3825
+ > & DeepPartial<
3826
+ PluginDatasetOptionsByType<TType>
3827
+ > & ChartDatasetProperties<TType, TData>;
3828
+
3829
+ export type ChartDatasetCustomTypesPerDataset<
3830
+ TType extends ChartType = ChartType,
3831
+ TData = DefaultDataPoint<TType>
3832
+ > = DeepPartial<
3833
+ { [key in ChartType]: { type: key } & ChartTypeRegistry[key]['datasetOptions'] }[TType]
3834
+ > & DeepPartial<
3835
+ PluginDatasetOptionsByType<TType>
3836
+ > & ChartDatasetPropertiesCustomTypesPerDataset<TType, TData>;
3837
+
3838
+ /**
3839
+ * TData represents the data point type. If unspecified, a default is provided
3840
+ * based on the chart type.
3841
+ * TLabel represents the label type
3842
+ */
3843
+ export interface ChartData<
3844
+ TType extends ChartType = ChartType,
3845
+ TData = DefaultDataPoint<TType>,
3846
+ TLabel = unknown
3847
+ > {
3848
+ labels?: TLabel[];
3849
+ xLabels?: TLabel[];
3850
+ yLabels?: TLabel[];
3851
+ datasets: ChartDataset<TType, TData>[];
3852
+ }
3853
+
3854
+ export interface ChartDataCustomTypesPerDataset<
3855
+ TType extends ChartType = ChartType,
3856
+ TData = DefaultDataPoint<TType>,
3857
+ TLabel = unknown
3858
+ > {
3859
+ labels?: TLabel[];
3860
+ xLabels?: TLabel[];
3861
+ yLabels?: TLabel[];
3862
+ datasets: ChartDatasetCustomTypesPerDataset<TType, TData>[];
3863
+ }
3864
+
3865
+ export interface ChartConfiguration<
3866
+ TType extends ChartType = ChartType,
3867
+ TData = DefaultDataPoint<TType>,
3868
+ TLabel = unknown
3869
+ > {
3870
+ type: TType;
3871
+ data: ChartData<TType, TData, TLabel>;
3872
+ options?: ChartOptions<TType> | undefined;
3873
+ plugins?: Plugin<TType>[];
3874
+ platform?: typeof BasePlatform;
3875
+ }
3876
+
3877
+ export interface ChartConfigurationCustomTypesPerDataset<
3878
+ TType extends ChartType = ChartType,
3879
+ TData = DefaultDataPoint<TType>,
3880
+ TLabel = unknown
3881
+ > {
3882
+ data: ChartDataCustomTypesPerDataset<TType, TData, TLabel>;
3883
+ options?: ChartOptions<TType> | undefined;
3884
+ plugins?: Plugin<TType>[];
3885
+ }