@ixfx/components 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/LICENSE +1 -1
  2. package/bundle/chunk-pbuEa-1d.js +13 -0
  3. package/bundle/index.d.ts +4702 -569
  4. package/bundle/index.d.ts.map +1 -1
  5. package/bundle/index.js +34929 -2800
  6. package/bundle/index.js.map +1 -1
  7. package/bundle/style.css +133 -0
  8. package/dist/ac-text/ac-text.d.ts +99 -0
  9. package/dist/ac-text/ac-text.d.ts.map +1 -0
  10. package/dist/ac-text/ac-text.js +571 -0
  11. package/dist/ac-text/ac-text.js.map +1 -0
  12. package/dist/button/button-styles.d.ts +2 -0
  13. package/dist/button/button-styles.d.ts.map +1 -0
  14. package/dist/button/button-styles.js +75 -0
  15. package/dist/button/button-styles.js.map +1 -0
  16. package/dist/button/button.d.ts +16 -0
  17. package/dist/button/button.d.ts.map +1 -0
  18. package/dist/button/button.js +58 -0
  19. package/dist/button/button.js.map +1 -0
  20. package/dist/button/radio-group.d.ts +44 -0
  21. package/dist/button/radio-group.d.ts.map +1 -0
  22. package/dist/button/radio-group.js +385 -0
  23. package/dist/button/radio-group.js.map +1 -0
  24. package/dist/button/split-button.d.ts +59 -0
  25. package/dist/button/split-button.d.ts.map +1 -0
  26. package/dist/button/split-button.js +480 -0
  27. package/dist/button/split-button.js.map +1 -0
  28. package/dist/button/types.d.ts +18 -0
  29. package/dist/button/types.d.ts.map +1 -0
  30. package/dist/button/types.js +2 -0
  31. package/dist/button/types.js.map +1 -0
  32. package/dist/checkbox.d.ts +64 -0
  33. package/dist/checkbox.d.ts.map +1 -0
  34. package/dist/checkbox.js +265 -0
  35. package/dist/checkbox.js.map +1 -0
  36. package/dist/colour-picker/colour-picker-popup.d.ts +102 -0
  37. package/dist/colour-picker/colour-picker-popup.d.ts.map +1 -0
  38. package/dist/colour-picker/colour-picker-popup.js +399 -0
  39. package/dist/colour-picker/colour-picker-popup.js.map +1 -0
  40. package/dist/colour-picker/colour-picker.d.ts +100 -0
  41. package/dist/colour-picker/colour-picker.d.ts.map +1 -0
  42. package/dist/colour-picker/colour-picker.js +567 -0
  43. package/dist/colour-picker/colour-picker.js.map +1 -0
  44. package/dist/colour-picker/index.d.ts +4 -0
  45. package/dist/colour-picker/index.d.ts.map +1 -0
  46. package/dist/colour-picker/index.js +3 -0
  47. package/dist/colour-picker/index.js.map +1 -0
  48. package/dist/colour-picker/styles.d.ts +2 -0
  49. package/dist/colour-picker/styles.d.ts.map +1 -0
  50. package/dist/colour-picker/styles.js +139 -0
  51. package/dist/colour-picker/styles.js.map +1 -0
  52. package/dist/colour-picker/types.d.ts +33 -0
  53. package/dist/colour-picker/types.d.ts.map +1 -0
  54. package/dist/colour-picker/types.js +2 -0
  55. package/dist/colour-picker/types.js.map +1 -0
  56. package/dist/colour-picker/util.d.ts +15 -0
  57. package/dist/colour-picker/util.d.ts.map +1 -0
  58. package/dist/colour-picker/util.js +35 -0
  59. package/dist/colour-picker/util.js.map +1 -0
  60. package/dist/common/searchable.d.ts +9 -0
  61. package/dist/common/searchable.d.ts.map +1 -0
  62. package/dist/common/searchable.js +9 -0
  63. package/dist/common/searchable.js.map +1 -0
  64. package/dist/common/tree-component.d.ts +172 -0
  65. package/dist/common/tree-component.d.ts.map +1 -0
  66. package/dist/common/tree-component.js +8 -0
  67. package/dist/common/tree-component.js.map +1 -0
  68. package/dist/common/tree-data-model.d.ts +100 -0
  69. package/dist/common/tree-data-model.d.ts.map +1 -0
  70. package/dist/common/tree-data-model.js +207 -0
  71. package/dist/common/tree-data-model.js.map +1 -0
  72. package/dist/common/tree-item.d.ts +7 -0
  73. package/dist/common/tree-item.d.ts.map +1 -0
  74. package/dist/common/tree-item.js +2 -0
  75. package/dist/common/tree-item.js.map +1 -0
  76. package/dist/common/types.d.ts +69 -0
  77. package/dist/common/types.d.ts.map +1 -0
  78. package/dist/common/types.js +6 -0
  79. package/dist/common/types.js.map +1 -0
  80. package/dist/crumbs/crumb-navigation.d.ts +96 -0
  81. package/dist/crumbs/crumb-navigation.d.ts.map +1 -0
  82. package/dist/crumbs/crumb-navigation.js +911 -0
  83. package/dist/crumbs/crumb-navigation.js.map +1 -0
  84. package/dist/crumbs/crumb-path-controller.d.ts +18 -0
  85. package/dist/crumbs/crumb-path-controller.d.ts.map +1 -0
  86. package/dist/crumbs/crumb-path-controller.js +81 -0
  87. package/dist/crumbs/crumb-path-controller.js.map +1 -0
  88. package/dist/crumbs/crumb-path.d.ts +65 -0
  89. package/dist/crumbs/crumb-path.d.ts.map +1 -0
  90. package/dist/crumbs/crumb-path.js +691 -0
  91. package/dist/crumbs/crumb-path.js.map +1 -0
  92. package/dist/data-display.d.ts +10 -3
  93. package/dist/data-display.d.ts.map +1 -1
  94. package/dist/data-display.js +45 -28
  95. package/dist/data-display.js.map +1 -1
  96. package/dist/editable-label/editable-label.d.ts +98 -0
  97. package/dist/editable-label/editable-label.d.ts.map +1 -0
  98. package/dist/editable-label/editable-label.js +348 -0
  99. package/dist/editable-label/editable-label.js.map +1 -0
  100. package/dist/editable-label/editable-number.d.ts +96 -0
  101. package/dist/editable-label/editable-number.d.ts.map +1 -0
  102. package/dist/editable-label/editable-number.js +702 -0
  103. package/dist/editable-label/editable-number.js.map +1 -0
  104. package/dist/hex/colour.d.ts +6 -0
  105. package/dist/hex/colour.d.ts.map +1 -0
  106. package/dist/hex/colour.js +33 -0
  107. package/dist/hex/colour.js.map +1 -0
  108. package/dist/hex/data.d.ts +18 -0
  109. package/dist/hex/data.d.ts.map +1 -0
  110. package/dist/hex/data.js +61 -0
  111. package/dist/hex/data.js.map +1 -0
  112. package/dist/hex/diff.d.ts +14 -0
  113. package/dist/hex/diff.d.ts.map +1 -0
  114. package/dist/hex/diff.js +31 -0
  115. package/dist/hex/diff.js.map +1 -0
  116. package/dist/hex/hex-editor.d.ts +101 -0
  117. package/dist/hex/hex-editor.d.ts.map +1 -0
  118. package/dist/hex/hex-editor.js +894 -0
  119. package/dist/hex/hex-editor.js.map +1 -0
  120. package/dist/hex/selection.d.ts +11 -0
  121. package/dist/hex/selection.d.ts.map +1 -0
  122. package/dist/hex/selection.js +218 -0
  123. package/dist/hex/selection.js.map +1 -0
  124. package/dist/hex/types.d.ts +34 -0
  125. package/dist/hex/types.d.ts.map +1 -0
  126. package/dist/hex/types.js +4 -0
  127. package/dist/hex/types.js.map +1 -0
  128. package/dist/icons/defaults.d.ts +27 -0
  129. package/dist/icons/defaults.d.ts.map +1 -0
  130. package/dist/icons/defaults.js +34 -0
  131. package/dist/icons/defaults.js.map +1 -0
  132. package/dist/icons/icon.d.ts +31 -0
  133. package/dist/icons/icon.d.ts.map +1 -0
  134. package/dist/icons/icon.js +125 -0
  135. package/dist/icons/icon.js.map +1 -0
  136. package/dist/icons/index.d.ts +5 -0
  137. package/dist/icons/index.d.ts.map +1 -0
  138. package/dist/icons/index.js +6 -0
  139. package/dist/icons/index.js.map +1 -0
  140. package/dist/icons/registry.d.ts +11 -0
  141. package/dist/icons/registry.d.ts.map +1 -0
  142. package/dist/icons/registry.js +17 -0
  143. package/dist/icons/registry.js.map +1 -0
  144. package/dist/incr-search/ac-adapter.d.ts +18 -0
  145. package/dist/incr-search/ac-adapter.d.ts.map +1 -0
  146. package/dist/incr-search/ac-adapter.js +29 -0
  147. package/dist/incr-search/ac-adapter.js.map +1 -0
  148. package/dist/incr-search/controller-miller.d.ts +9 -0
  149. package/dist/incr-search/controller-miller.d.ts.map +1 -0
  150. package/dist/incr-search/controller-miller.js +8 -0
  151. package/dist/incr-search/controller-miller.js.map +1 -0
  152. package/dist/incr-search/controller-tree.d.ts +55 -0
  153. package/dist/incr-search/controller-tree.d.ts.map +1 -0
  154. package/dist/incr-search/controller-tree.js +106 -0
  155. package/dist/incr-search/controller-tree.js.map +1 -0
  156. package/dist/incr-search/element-search.d.ts +15 -0
  157. package/dist/incr-search/element-search.d.ts.map +1 -0
  158. package/dist/incr-search/element-search.js +82 -0
  159. package/dist/incr-search/element-search.js.map +1 -0
  160. package/dist/incr-search/fuzzy.d.ts +3 -0
  161. package/dist/incr-search/fuzzy.d.ts.map +1 -0
  162. package/dist/incr-search/fuzzy.js +37 -0
  163. package/dist/incr-search/fuzzy.js.map +1 -0
  164. package/dist/incr-search/highlight.d.ts +5 -0
  165. package/dist/incr-search/highlight.d.ts.map +1 -0
  166. package/dist/incr-search/highlight.js +54 -0
  167. package/dist/incr-search/highlight.js.map +1 -0
  168. package/dist/incr-search/incr-search.d.ts +3 -0
  169. package/dist/incr-search/incr-search.d.ts.map +1 -0
  170. package/dist/incr-search/incr-search.js +73 -0
  171. package/dist/incr-search/incr-search.js.map +1 -0
  172. package/dist/incr-search/index.d.ts +12 -0
  173. package/dist/incr-search/index.d.ts.map +1 -0
  174. package/dist/incr-search/index.js +8 -0
  175. package/dist/incr-search/index.js.map +1 -0
  176. package/dist/incr-search/types.d.ts +59 -0
  177. package/dist/incr-search/types.d.ts.map +1 -0
  178. package/dist/incr-search/types.js +2 -0
  179. package/dist/incr-search/types.js.map +1 -0
  180. package/dist/index.d.ts +49 -9
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +50 -10
  183. package/dist/index.js.map +1 -1
  184. package/dist/interaction/index.d.ts +10 -0
  185. package/dist/interaction/index.d.ts.map +1 -0
  186. package/dist/interaction/index.js +10 -0
  187. package/dist/interaction/index.js.map +1 -0
  188. package/dist/interaction/tickled-controller.d.ts +186 -0
  189. package/dist/interaction/tickled-controller.d.ts.map +1 -0
  190. package/dist/interaction/tickled-controller.js +256 -0
  191. package/dist/interaction/tickled-controller.js.map +1 -0
  192. package/dist/interaction/tickled-styles.d.ts +53 -0
  193. package/dist/interaction/tickled-styles.d.ts.map +1 -0
  194. package/dist/interaction/tickled-styles.js +106 -0
  195. package/dist/interaction/tickled-styles.js.map +1 -0
  196. package/dist/interaction/tree-keyboard-controller.d.ts +30 -0
  197. package/dist/interaction/tree-keyboard-controller.d.ts.map +1 -0
  198. package/dist/interaction/tree-keyboard-controller.js +105 -0
  199. package/dist/interaction/tree-keyboard-controller.js.map +1 -0
  200. package/dist/keyboard.d.ts +16 -0
  201. package/dist/keyboard.d.ts.map +1 -0
  202. package/dist/keyboard.js +22 -0
  203. package/dist/keyboard.js.map +1 -0
  204. package/dist/labelled-radial-input/index.d.ts +2 -0
  205. package/dist/labelled-radial-input/index.d.ts.map +1 -0
  206. package/dist/labelled-radial-input/index.js +2 -0
  207. package/dist/labelled-radial-input/index.js.map +1 -0
  208. package/dist/labelled-radial-input/labelled-radial-input.d.ts +77 -0
  209. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +1 -0
  210. package/dist/labelled-radial-input/labelled-radial-input.js +214 -0
  211. package/dist/labelled-radial-input/labelled-radial-input.js.map +1 -0
  212. package/dist/labelled-range-input/index.d.ts +2 -0
  213. package/dist/labelled-range-input/index.d.ts.map +1 -0
  214. package/dist/labelled-range-input/index.js +2 -0
  215. package/dist/labelled-range-input/index.js.map +1 -0
  216. package/dist/labelled-range-input/labelled-range-input.d.ts +80 -0
  217. package/dist/labelled-range-input/labelled-range-input.d.ts.map +1 -0
  218. package/dist/labelled-range-input/labelled-range-input.js +137 -0
  219. package/dist/labelled-range-input/labelled-range-input.js.map +1 -0
  220. package/dist/led.d.ts +20 -0
  221. package/dist/led.d.ts.map +1 -0
  222. package/dist/led.js +100 -0
  223. package/dist/led.js.map +1 -0
  224. package/dist/menu/index.d.ts +14 -0
  225. package/dist/menu/index.d.ts.map +1 -0
  226. package/dist/menu/index.js +13 -0
  227. package/dist/menu/index.js.map +1 -0
  228. package/dist/menu/menu-bar.d.ts +23 -0
  229. package/dist/menu/menu-bar.d.ts.map +1 -0
  230. package/dist/menu/menu-bar.js +110 -0
  231. package/dist/menu/menu-bar.js.map +1 -0
  232. package/dist/menu/menu-check-item.d.ts +33 -0
  233. package/dist/menu/menu-check-item.d.ts.map +1 -0
  234. package/dist/menu/menu-check-item.js +175 -0
  235. package/dist/menu/menu-check-item.js.map +1 -0
  236. package/dist/menu/menu-command-controller.d.ts +14 -0
  237. package/dist/menu/menu-command-controller.d.ts.map +1 -0
  238. package/dist/menu/menu-command-controller.js +22 -0
  239. package/dist/menu/menu-command-controller.js.map +1 -0
  240. package/dist/menu/menu-container.d.ts +36 -0
  241. package/dist/menu/menu-container.d.ts.map +1 -0
  242. package/dist/menu/menu-container.js +351 -0
  243. package/dist/menu/menu-container.js.map +1 -0
  244. package/dist/menu/menu-from-tree.d.ts +17 -0
  245. package/dist/menu/menu-from-tree.d.ts.map +1 -0
  246. package/dist/menu/menu-from-tree.js +103 -0
  247. package/dist/menu/menu-from-tree.js.map +1 -0
  248. package/dist/menu/menu-header.d.ts +12 -0
  249. package/dist/menu/menu-header.d.ts.map +1 -0
  250. package/dist/menu/menu-header.js +36 -0
  251. package/dist/menu/menu-header.js.map +1 -0
  252. package/dist/menu/menu-item.d.ts +41 -0
  253. package/dist/menu/menu-item.d.ts.map +1 -0
  254. package/dist/menu/menu-item.js +240 -0
  255. package/dist/menu/menu-item.js.map +1 -0
  256. package/dist/menu/menu-radio-group.d.ts +24 -0
  257. package/dist/menu/menu-radio-group.d.ts.map +1 -0
  258. package/dist/menu/menu-radio-group.js +71 -0
  259. package/dist/menu/menu-radio-group.js.map +1 -0
  260. package/dist/menu/menu-radio-item.d.ts +22 -0
  261. package/dist/menu/menu-radio-item.d.ts.map +1 -0
  262. package/dist/menu/menu-radio-item.js +116 -0
  263. package/dist/menu/menu-radio-item.js.map +1 -0
  264. package/dist/menu/menu-separator.d.ts +11 -0
  265. package/dist/menu/menu-separator.d.ts.map +1 -0
  266. package/dist/menu/menu-separator.js +29 -0
  267. package/dist/menu/menu-separator.js.map +1 -0
  268. package/dist/menu/menu-sub-trigger.d.ts +46 -0
  269. package/dist/menu/menu-sub-trigger.d.ts.map +1 -0
  270. package/dist/menu/menu-sub-trigger.js +302 -0
  271. package/dist/menu/menu-sub-trigger.js.map +1 -0
  272. package/dist/menu/menu-trigger.d.ts +57 -0
  273. package/dist/menu/menu-trigger.d.ts.map +1 -0
  274. package/dist/menu/menu-trigger.js +351 -0
  275. package/dist/menu/menu-trigger.js.map +1 -0
  276. package/dist/miller/index.d.ts +5 -0
  277. package/dist/miller/index.d.ts.map +1 -0
  278. package/dist/miller/index.js +5 -0
  279. package/dist/miller/index.js.map +1 -0
  280. package/dist/miller/miller-base.d.ts +184 -0
  281. package/dist/miller/miller-base.d.ts.map +1 -0
  282. package/dist/miller/miller-base.js +1249 -0
  283. package/dist/miller/miller-base.js.map +1 -0
  284. package/dist/miller/miller-list.d.ts +30 -0
  285. package/dist/miller/miller-list.d.ts.map +1 -0
  286. package/dist/miller/miller-list.js +192 -0
  287. package/dist/miller/miller-list.js.map +1 -0
  288. package/dist/miller/miller-tree-controller.d.ts +58 -0
  289. package/dist/miller/miller-tree-controller.d.ts.map +1 -0
  290. package/dist/miller/miller-tree-controller.js +134 -0
  291. package/dist/miller/miller-tree-controller.js.map +1 -0
  292. package/dist/miller/types.d.ts +63 -0
  293. package/dist/miller/types.d.ts.map +1 -0
  294. package/dist/miller/types.js +6 -0
  295. package/dist/miller/types.js.map +1 -0
  296. package/dist/mixins/labelled-input-base.d.ts +38 -0
  297. package/dist/mixins/labelled-input-base.d.ts.map +1 -0
  298. package/dist/mixins/labelled-input-base.js +171 -0
  299. package/dist/mixins/labelled-input-base.js.map +1 -0
  300. package/dist/mixins/labelled-input-util.d.ts +3 -0
  301. package/dist/mixins/labelled-input-util.d.ts.map +1 -0
  302. package/dist/mixins/labelled-input-util.js +10 -0
  303. package/dist/mixins/labelled-input-util.js.map +1 -0
  304. package/dist/my-element.d.ts.map +1 -1
  305. package/dist/my-element.js +1 -1
  306. package/dist/my-element.js.map +1 -1
  307. package/dist/narrowed-text/index.d.ts +3 -0
  308. package/dist/narrowed-text/index.d.ts.map +1 -0
  309. package/dist/narrowed-text/index.js +3 -0
  310. package/dist/narrowed-text/index.js.map +1 -0
  311. package/dist/narrowed-text/narrowed-text.d.ts +48 -0
  312. package/dist/narrowed-text/narrowed-text.d.ts.map +1 -0
  313. package/dist/narrowed-text/narrowed-text.js +668 -0
  314. package/dist/narrowed-text/narrowed-text.js.map +1 -0
  315. package/dist/narrowed-text/types.d.ts +20 -0
  316. package/dist/narrowed-text/types.d.ts.map +1 -0
  317. package/dist/narrowed-text/types.js +2 -0
  318. package/dist/narrowed-text/types.js.map +1 -0
  319. package/dist/panel/panel-group.d.ts +23 -0
  320. package/dist/panel/panel-group.d.ts.map +1 -0
  321. package/dist/panel/panel-group.js +109 -0
  322. package/dist/panel/panel-group.js.map +1 -0
  323. package/dist/panel/panel.d.ts +39 -0
  324. package/dist/panel/panel.d.ts.map +1 -0
  325. package/dist/panel/panel.js +417 -0
  326. package/dist/panel/panel.js.map +1 -0
  327. package/dist/plots/colour-map.d.ts +31 -0
  328. package/dist/plots/colour-map.d.ts.map +1 -0
  329. package/dist/plots/colour-map.js +133 -0
  330. package/dist/plots/colour-map.js.map +1 -0
  331. package/dist/plots/data.d.ts +27 -0
  332. package/dist/plots/data.d.ts.map +1 -0
  333. package/dist/plots/data.js +47 -0
  334. package/dist/plots/data.js.map +1 -0
  335. package/dist/plots/single-axis.d.ts +41 -0
  336. package/dist/plots/single-axis.d.ts.map +1 -0
  337. package/dist/plots/single-axis.js +428 -0
  338. package/dist/plots/single-axis.js.map +1 -0
  339. package/dist/plots/svg-utils.d.ts +12 -0
  340. package/dist/plots/svg-utils.d.ts.map +1 -0
  341. package/dist/plots/svg-utils.js +64 -0
  342. package/dist/plots/svg-utils.js.map +1 -0
  343. package/dist/plots/xy-axis.d.ts +42 -0
  344. package/dist/plots/xy-axis.d.ts.map +1 -0
  345. package/dist/plots/xy-axis.js +307 -0
  346. package/dist/plots/xy-axis.js.map +1 -0
  347. package/dist/polar-pad/polar-pad.d.ts +132 -0
  348. package/dist/polar-pad/polar-pad.d.ts.map +1 -0
  349. package/dist/polar-pad/polar-pad.js +598 -0
  350. package/dist/polar-pad/polar-pad.js.map +1 -0
  351. package/dist/radial-input/radial-input.d.ts +45 -0
  352. package/dist/radial-input/radial-input.d.ts.map +1 -0
  353. package/dist/radial-input/radial-input.js +692 -0
  354. package/dist/radial-input/radial-input.js.map +1 -0
  355. package/dist/radial-input/svg-utils.d.ts +147 -0
  356. package/dist/radial-input/svg-utils.d.ts.map +1 -0
  357. package/dist/radial-input/svg-utils.js +346 -0
  358. package/dist/radial-input/svg-utils.js.map +1 -0
  359. package/dist/radial-input/types.d.ts +25 -0
  360. package/dist/radial-input/types.d.ts.map +1 -0
  361. package/dist/radial-input/types.js +5 -0
  362. package/dist/radial-input/types.js.map +1 -0
  363. package/dist/range/range-multi.d.ts +62 -0
  364. package/dist/range/range-multi.d.ts.map +1 -0
  365. package/dist/range/range-multi.js +652 -0
  366. package/dist/range/range-multi.js.map +1 -0
  367. package/dist/range/range.d.ts +23 -0
  368. package/dist/range/range.d.ts.map +1 -0
  369. package/dist/range/range.js +153 -0
  370. package/dist/range/range.js.map +1 -0
  371. package/dist/range-input/index.d.ts +2 -0
  372. package/dist/range-input/index.d.ts.map +1 -0
  373. package/dist/range-input/index.js +2 -0
  374. package/dist/range-input/index.js.map +1 -0
  375. package/dist/range-input/range-input.d.ts +92 -0
  376. package/dist/range-input/range-input.d.ts.map +1 -0
  377. package/dist/range-input/range-input.js +472 -0
  378. package/dist/range-input/range-input.js.map +1 -0
  379. package/dist/selecthorizontal.d.ts +1 -1
  380. package/dist/selecthorizontal.d.ts.map +1 -1
  381. package/dist/selecthorizontal.js +3 -3
  382. package/dist/selecthorizontal.js.map +1 -1
  383. package/dist/snap-container/snap-container.d.ts +45 -0
  384. package/dist/snap-container/snap-container.d.ts.map +1 -0
  385. package/dist/snap-container/snap-container.js +352 -0
  386. package/dist/snap-container/snap-container.js.map +1 -0
  387. package/dist/split-layout/split-layout.d.ts +25 -9
  388. package/dist/split-layout/split-layout.d.ts.map +1 -1
  389. package/dist/split-layout/split-layout.js +520 -66
  390. package/dist/split-layout/split-layout.js.map +1 -1
  391. package/dist/styles/popup.d.ts +11 -0
  392. package/dist/styles/popup.d.ts.map +1 -0
  393. package/dist/styles/popup.js +20 -0
  394. package/dist/styles/popup.js.map +1 -0
  395. package/dist/styles/prominence.d.ts +58 -0
  396. package/dist/styles/prominence.d.ts.map +1 -0
  397. package/dist/styles/prominence.js +94 -0
  398. package/dist/styles/prominence.js.map +1 -0
  399. package/dist/styles/tooltip.d.ts +2 -0
  400. package/dist/styles/tooltip.d.ts.map +1 -0
  401. package/dist/styles/tooltip.js +100 -0
  402. package/dist/styles/tooltip.js.map +1 -0
  403. package/dist/svg-edit-label.js +1 -1
  404. package/dist/svg-edit-label.js.map +1 -1
  405. package/dist/swipe/index.d.ts +2 -0
  406. package/dist/swipe/index.d.ts.map +1 -0
  407. package/dist/swipe/index.js +2 -0
  408. package/dist/swipe/index.js.map +1 -0
  409. package/dist/swipe/swipe.d.ts +65 -0
  410. package/dist/swipe/swipe.d.ts.map +1 -0
  411. package/dist/swipe/swipe.js +229 -0
  412. package/dist/swipe/swipe.js.map +1 -0
  413. package/dist/tabs/tab-layout-item.d.ts.map +1 -1
  414. package/dist/tabs/tab-layout-item.js +1 -1
  415. package/dist/tabs/tab-layout-item.js.map +1 -1
  416. package/dist/tabs/tab-layout.d.ts.map +1 -1
  417. package/dist/tabs/tab-layout.js +1 -1
  418. package/dist/tabs/tab-layout.js.map +1 -1
  419. package/dist/tabs/tab-list-item.d.ts +22 -6
  420. package/dist/tabs/tab-list-item.d.ts.map +1 -1
  421. package/dist/tabs/tab-list-item.js +174 -42
  422. package/dist/tabs/tab-list-item.js.map +1 -1
  423. package/dist/tabs/tab-list.d.ts +15 -5
  424. package/dist/tabs/tab-list.d.ts.map +1 -1
  425. package/dist/tabs/tab-list.js +159 -50
  426. package/dist/tabs/tab-list.js.map +1 -1
  427. package/dist/tabs/tab-panel.d.ts +1 -1
  428. package/dist/tabs/tab-panel.d.ts.map +1 -1
  429. package/dist/tabs/tab-panel.js +2 -2
  430. package/dist/tabs/tab-panel.js.map +1 -1
  431. package/dist/tabs/tab-panels.d.ts +3 -3
  432. package/dist/tabs/tab-panels.d.ts.map +1 -1
  433. package/dist/tabs/tab-panels.js +6 -6
  434. package/dist/tabs/tab-panels.js.map +1 -1
  435. package/dist/timeline/index.d.ts +9 -0
  436. package/dist/timeline/index.d.ts.map +1 -0
  437. package/dist/timeline/index.js +8 -0
  438. package/dist/timeline/index.js.map +1 -0
  439. package/dist/timeline/timeline-controller.d.ts +48 -0
  440. package/dist/timeline/timeline-controller.d.ts.map +1 -0
  441. package/dist/timeline/timeline-controller.js +81 -0
  442. package/dist/timeline/timeline-controller.js.map +1 -0
  443. package/dist/timeline/timeline-draw.d.ts +28 -0
  444. package/dist/timeline/timeline-draw.d.ts.map +1 -0
  445. package/dist/timeline/timeline-draw.js +330 -0
  446. package/dist/timeline/timeline-draw.js.map +1 -0
  447. package/dist/timeline/timeline-element.d.ts +140 -0
  448. package/dist/timeline/timeline-element.d.ts.map +1 -0
  449. package/dist/timeline/timeline-element.js +888 -0
  450. package/dist/timeline/timeline-element.js.map +1 -0
  451. package/dist/timeline/timeline-interactions.d.ts +40 -0
  452. package/dist/timeline/timeline-interactions.d.ts.map +1 -0
  453. package/dist/timeline/timeline-interactions.js +393 -0
  454. package/dist/timeline/timeline-interactions.js.map +1 -0
  455. package/dist/timeline/timeline-styles.d.ts +2 -0
  456. package/dist/timeline/timeline-styles.d.ts.map +1 -0
  457. package/dist/timeline/timeline-styles.js +153 -0
  458. package/dist/timeline/timeline-styles.js.map +1 -0
  459. package/dist/timeline/timeline-track-tabs.d.ts +30 -0
  460. package/dist/timeline/timeline-track-tabs.d.ts.map +1 -0
  461. package/dist/timeline/timeline-track-tabs.js +204 -0
  462. package/dist/timeline/timeline-track-tabs.js.map +1 -0
  463. package/dist/timeline/types.d.ts +144 -0
  464. package/dist/timeline/types.d.ts.map +1 -0
  465. package/dist/timeline/types.js +3 -0
  466. package/dist/timeline/types.js.map +1 -0
  467. package/dist/tree/index.d.ts +5 -0
  468. package/dist/tree/index.d.ts.map +1 -0
  469. package/dist/tree/index.js +5 -0
  470. package/dist/tree/index.js.map +1 -0
  471. package/dist/tree/tree-base.d.ts +70 -0
  472. package/dist/tree/tree-base.d.ts.map +1 -0
  473. package/dist/tree/tree-base.js +1028 -0
  474. package/dist/tree/tree-base.js.map +1 -0
  475. package/dist/tree/tree-controller.d.ts +14 -0
  476. package/dist/tree/tree-controller.d.ts.map +1 -0
  477. package/dist/tree/tree-controller.js +96 -0
  478. package/dist/tree/tree-controller.js.map +1 -0
  479. package/dist/tree/tree-list.d.ts +20 -0
  480. package/dist/tree/tree-list.d.ts.map +1 -0
  481. package/dist/tree/tree-list.js +174 -0
  482. package/dist/tree/tree-list.js.map +1 -0
  483. package/dist/tree/types.d.ts +14 -0
  484. package/dist/tree/types.d.ts.map +1 -0
  485. package/dist/tree/types.js +7 -0
  486. package/dist/tree/types.js.map +1 -0
  487. package/dist/util/checkbox.d.ts +2 -0
  488. package/dist/util/checkbox.d.ts.map +1 -0
  489. package/dist/util/checkbox.js +69 -0
  490. package/dist/util/checkbox.js.map +1 -0
  491. package/dist/util/circle-arc.d.ts +6 -6
  492. package/dist/util/circle-arc.d.ts.map +1 -1
  493. package/dist/util/circle-arc.js +28 -20
  494. package/dist/util/circle-arc.js.map +1 -1
  495. package/dist/util/clamp.d.ts +4 -0
  496. package/dist/util/clamp.d.ts.map +1 -0
  497. package/dist/util/clamp.js +23 -0
  498. package/dist/util/clamp.js.map +1 -0
  499. package/dist/util/compare.d.ts +8 -8
  500. package/dist/util/compare.d.ts.map +1 -1
  501. package/dist/util/compare.js +13 -13
  502. package/dist/util/compare.js.map +1 -1
  503. package/dist/util/content-editable.d.ts +1 -1
  504. package/dist/util/content-editable.d.ts.map +1 -1
  505. package/dist/util/content-editable.js +2 -2
  506. package/dist/util/content-editable.js.map +1 -1
  507. package/dist/util/coordinates.d.ts +3 -0
  508. package/dist/util/coordinates.d.ts.map +1 -0
  509. package/dist/util/coordinates.js +11 -0
  510. package/dist/util/coordinates.js.map +1 -0
  511. package/dist/util/drag.d.ts +16 -0
  512. package/dist/util/drag.d.ts.map +1 -0
  513. package/dist/util/drag.js +20 -0
  514. package/dist/util/drag.js.map +1 -0
  515. package/dist/util/is-numeric.d.ts +2 -0
  516. package/dist/util/is-numeric.d.ts.map +1 -0
  517. package/dist/util/is-numeric.js +9 -0
  518. package/dist/util/is-numeric.js.map +1 -0
  519. package/dist/util/key-value.d.ts +2 -2
  520. package/dist/util/key-value.d.ts.map +1 -1
  521. package/dist/util/key-value.js +4 -5
  522. package/dist/util/key-value.js.map +1 -1
  523. package/dist/util/near.d.ts +2 -0
  524. package/dist/util/near.d.ts.map +1 -0
  525. package/dist/util/near.js +6 -0
  526. package/dist/util/near.js.map +1 -0
  527. package/dist/util/svg-editable-text.d.ts +6 -2
  528. package/dist/util/svg-editable-text.d.ts.map +1 -1
  529. package/dist/util/svg-editable-text.js +5 -7
  530. package/dist/util/svg-editable-text.js.map +1 -1
  531. package/dist/util/time.d.ts.map +1 -1
  532. package/dist/util/time.js +1 -1
  533. package/dist/util/time.js.map +1 -1
  534. package/dist/util/tooltip-controller.d.ts +10 -0
  535. package/dist/util/tooltip-controller.d.ts.map +1 -0
  536. package/dist/util/tooltip-controller.js +237 -0
  537. package/dist/util/tooltip-controller.js.map +1 -0
  538. package/dist/util/tooltip.d.ts +21 -0
  539. package/dist/util/tooltip.d.ts.map +1 -0
  540. package/dist/util/tooltip.js +98 -0
  541. package/dist/util/tooltip.js.map +1 -0
  542. package/dist/util/value-drag.d.ts +33 -0
  543. package/dist/util/value-drag.d.ts.map +1 -0
  544. package/dist/util/value-drag.js +154 -0
  545. package/dist/util/value-drag.js.map +1 -0
  546. package/dist/xy-pad.d.ts +117 -0
  547. package/dist/xy-pad.d.ts.map +1 -0
  548. package/dist/xy-pad.js +455 -0
  549. package/dist/xy-pad.js.map +1 -0
  550. package/package.json +47 -30
  551. package/README.md +0 -14
  552. package/dist/charts/frequency-histogram-plot.d.ts +0 -33
  553. package/dist/charts/frequency-histogram-plot.d.ts.map +0 -1
  554. package/dist/charts/frequency-histogram-plot.js +0 -54
  555. package/dist/charts/frequency-histogram-plot.js.map +0 -1
  556. package/dist/charts/histogram-vis.d.ts +0 -57
  557. package/dist/charts/histogram-vis.d.ts.map +0 -1
  558. package/dist/charts/histogram-vis.js +0 -222
  559. package/dist/charts/histogram-vis.js.map +0 -1
  560. package/dist/charts/plot.d.ts +0 -199
  561. package/dist/charts/plot.d.ts.map +0 -1
  562. package/dist/charts/plot.js +0 -914
  563. package/dist/charts/plot.js.map +0 -1
  564. package/dist/crumb-nav.d.ts +0 -41
  565. package/dist/crumb-nav.d.ts.map +0 -1
  566. package/dist/crumb-nav.js +0 -198
  567. package/dist/crumb-nav.js.map +0 -1
  568. package/dist/crumb-navigation.d.ts +0 -30
  569. package/dist/crumb-navigation.d.ts.map +0 -1
  570. package/dist/crumb-navigation.js +0 -307
  571. package/dist/crumb-navigation.js.map +0 -1
  572. package/dist/dial.d.ts +0 -89
  573. package/dist/dial.d.ts.map +0 -1
  574. package/dist/dial.js +0 -506
  575. package/dist/dial.js.map +0 -1
  576. package/dist/util/drag-controller.d.ts +0 -13
  577. package/dist/util/drag-controller.d.ts.map +0 -1
  578. package/dist/util/drag-controller.js +0 -21
  579. package/dist/util/drag-controller.js.map +0 -1
@@ -1,914 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { css, html, LitElement } from "lit";
8
- import { customElement, property } from "lit/decorators.js";
9
- import { createRef, ref } from "lit/directives/ref.js";
10
- import { CanvasHelper } from "ixfx/visual.js";
11
- import { Rects } from "ixfx/geometry.js";
12
- import * as Arrays from 'ixfx/arrays.js';
13
- import * as Numbers from 'ixfx/numbers.js';
14
- import { getCssVariable } from 'ixfx/dom.js';
15
- import { Drawing, Colour } from "ixfx/visual.js";
16
- import { Flow, Pathed } from 'ixfx';
17
- const rangeIsEqual = (a, b) => {
18
- if (a === undefined || b === undefined)
19
- return false;
20
- return (a.max === b.max && a.min === b.min);
21
- };
22
- export class PlotAxis {
23
- // units: Readonly<{ major: number, minor: number }> = { major: Number.NaN, minor: Number.NaN }
24
- // altAxisCrossing: AxisCrossing<T> = { at: `min` }
25
- // ticks: TickMarks = { major: `inside`, minor: `inside` }
26
- // labels: AxisLabels = `axis`;
27
- #currentScalerRange;
28
- #persistentScale;
29
- #currentScaler;
30
- constructor(name) {
31
- this.name = name;
32
- this.bounds = `auto`;
33
- this.#persistentScale = Numbers.rangeInit();
34
- this.#currentScaler = (v) => v;
35
- }
36
- humanFormatValue(value) {
37
- if (value.length === 0)
38
- return ``;
39
- const v = value[0];
40
- return v.toFixed(2);
41
- }
42
- getRange(series) {
43
- if (this.bounds === `auto`)
44
- return this.computeActualRange(series);
45
- if (this.bounds === `auto-persistent`) {
46
- const r = this.computeActualRange(series);
47
- this.#persistentScale = Numbers.rangeMergeRange(r, this.#persistentScale);
48
- return this.#persistentScale;
49
- }
50
- return this.bounds;
51
- }
52
- getCurrentRange() {
53
- return this.#currentScalerRange;
54
- }
55
- getValueScaler(series) {
56
- const r = this.getRange(series);
57
- if (!rangeIsEqual(r, this.#currentScalerRange)) {
58
- this.#currentScalerRange = r;
59
- this.#currentScaler = Numbers.scaler(r.min, r.max, 0, 1);
60
- }
61
- return this.#currentScaler;
62
- }
63
- computeActualRange(seriesOnAxis, column = 0) {
64
- let min = Number.MAX_SAFE_INTEGER;
65
- let max = Number.MIN_SAFE_INTEGER;
66
- let count = 0;
67
- for (const s of seriesOnAxis) {
68
- for (const [v, _index] of s.getValuesForColumn(column)) {
69
- if (typeof v !== `number`)
70
- continue;
71
- if (Number.isNaN(v))
72
- continue;
73
- if (v < min)
74
- min = v;
75
- if (v > max)
76
- max = v;
77
- }
78
- count++;
79
- }
80
- return { min, max };
81
- }
82
- }
83
- /**
84
- * Attributes
85
- * * streaming: true/false (default: true)
86
- * * max-length: number (default: 500). How many data points per series to store
87
- * * data-width: when streaming, how much horizontal width per point
88
- * * fixed-max/fixed-min: global input scaling (default: NaN, ie. disabled)
89
- *
90
- * * line-width: stroke width of drawing line (default:2)
91
- *
92
- * * render: 'dot', 'line' or 'bar'(default: 'dot')
93
- * * hide-legend: If added, legend is not shown
94
- * * manual-draw: If added, automatic drawning is disabled
95
- *
96
- * Styling variables
97
- * * --legend-fg: legend foreground text
98
- */
99
- let PlotElement = class PlotElement extends LitElement {
100
- constructor() {
101
- //@property({ attribute: `streaming`, type: Boolean })
102
- //streaming = true;
103
- super(...arguments);
104
- this.hideLegend = false;
105
- //@property({ attribute: `max-length`, type: Number })
106
- //maxLength = 500;
107
- //@property({ attribute: `data-width`, type: Number })
108
- //dataWidth = 5;
109
- //@property({ attribute: `fixed-max`, type: Number })
110
- //fixedMax = Number.NaN;
111
- //@property({ attribute: `fixed-min`, type: Number })
112
- //fixedMin = Number.NaN;
113
- //@property({ attribute: `line-width`, type: Number })
114
- //lineWidth = 2;
115
- this.renderStyle = `dot`;
116
- //@property({ attribute: `manual-draw`, type: Boolean })
117
- //manualDraw = false;
118
- this.padding = 5;
119
- this.primaryAxis = new PlotAxis(`primary`);
120
- this.secondaryAxis = new PlotAxis(`secondary`);
121
- this.paused = false;
122
- this.plotAreaFormat = {
123
- fill: { type: `none` },
124
- outline: { type: `none` }
125
- };
126
- /**
127
- * Settings used for automatically generating series colour
128
- */
129
- this.automaticSeriesColour = {
130
- saturation: 1,
131
- lightness: 0.5,
132
- alpha: 1
133
- };
134
- this.seriesDefault = {};
135
- this.#series = new Map();
136
- this.#legendColour = ``;
137
- this.#autoSeriesColour = 0;
138
- this.#hitboxes = [];
139
- this.#seriesFormatting = new Map();
140
- this.#swatchSize = 10;
141
- this.canvasEl = createRef();
142
- this.tooltipEl = createRef();
143
- this.#drawThrottled = Flow.throttle(() => this.#drawImpl(), 100);
144
- this.seriesColourGenerate = (_seriesName) => {
145
- const c = Colour.goldenAngleColour(this.#autoSeriesColour, this.automaticSeriesColour.saturation, this.automaticSeriesColour.lightness, this.automaticSeriesColour.alpha);
146
- this.#autoSeriesColour++;
147
- return c;
148
- };
149
- }
150
- #series;
151
- #canvas;
152
- #drawing;
153
- #legendColour;
154
- #autoSeriesColour;
155
- #hitboxes;
156
- #seriesFormatting;
157
- #swatchSize;
158
- #drawThrottled;
159
- setDrawDebounce(millis) {
160
- this.#drawThrottled = Flow.throttle(() => this.#drawImpl(), millis);
161
- }
162
- get series() {
163
- return [...this.#series.values()];
164
- }
165
- get seriesCount() {
166
- return this.#series.size;
167
- }
168
- getSeriesFormatting(seriesName, createIfNeeded) {
169
- let f = this.#seriesFormatting.get(seriesName);
170
- if (!f && createIfNeeded) {
171
- f = {
172
- axis: `primary`,
173
- fill: {
174
- colour: this.seriesColourGenerate(seriesName),
175
- type: `solid`
176
- },
177
- outline: {
178
- type: `none`
179
- },
180
- bar: {
181
- gapWidth: 3
182
- },
183
- dot: {
184
- gapWidth: 0,
185
- radius: `automatic`
186
- },
187
- line: {
188
- width: 2,
189
- cap: `round`,
190
- join: `round`
191
- }
192
- };
193
- this.#seriesFormatting.set(seriesName, f);
194
- }
195
- return f;
196
- }
197
- setSeriesFormatting(seriesName, formatting) {
198
- let existing = this.getSeriesFormatting(seriesName, true);
199
- const combined = {
200
- ...existing,
201
- ...formatting
202
- };
203
- combined.fill = resolveFillDrawStyle(combined.fill);
204
- combined.outline = resolveOutlineDrawStyle(combined.outline);
205
- this.#seriesFormatting.set(seriesName, combined);
206
- }
207
- /**
208
- * Returns a `PlotElement` instance based on a query
209
- * ```js
210
- * PlotElement.fromQuery(`#someplot`); // PlotElement
211
- * ```
212
- *
213
- * Throws an error if query does not match.
214
- * @param query
215
- * @returns
216
- */
217
- static fromQuery(query) {
218
- const el = document.querySelector(query);
219
- if (!el)
220
- throw new Error(`Query does not match an element`);
221
- if (el.nodeName === 'IXFX-PLOT-ELEMENT')
222
- return el;
223
- throw new Error(`Element is not a PlotElement ('${el.nodeName}')`);
224
- }
225
- /**
226
- * Delete a series.
227
- * Returns _true_ if there was a series to delete
228
- * @param name
229
- * @returns
230
- */
231
- deleteSeries(name) {
232
- name = name.toLowerCase();
233
- const s = this.#series.get(name);
234
- if (!s)
235
- return false;
236
- this.#series.delete(name);
237
- return true;
238
- }
239
- /**
240
- * Keeps the series, but deletes its data
241
- * @param name
242
- * @returns
243
- */
244
- clearSeries(name) {
245
- name = name.toLowerCase();
246
- const s = this.#series.get(name);
247
- if (!s)
248
- return false;
249
- this.#series.clear();
250
- return true;
251
- }
252
- /**
253
- * Delete all data & series
254
- */
255
- clear() {
256
- this.#series.clear();
257
- this.#autoSeriesColour = 0;
258
- }
259
- /**
260
- * Keeps all series, but deletes their data
261
- */
262
- clearData() {
263
- for (const s of this.#series.values()) {
264
- s.clear();
265
- }
266
- }
267
- #lastPointerPosition;
268
- #onPointerLeave() {
269
- this.#lastPointerPosition = undefined;
270
- this.#hideTooltip();
271
- }
272
- #onPointerMove(event) {
273
- this.#lastPointerPosition = {
274
- x: event.offsetX,
275
- screenX: event.pageX,
276
- y: event.offsetY,
277
- screenY: event.pageY
278
- };
279
- this.#updateToolTip();
280
- }
281
- #updateToolTip() {
282
- if (!this.#lastPointerPosition)
283
- return;
284
- for (const hb of this.#hitboxes) {
285
- if (hb.width <= 0)
286
- continue;
287
- if (Rects.intersectsPoint(hb, this.#lastPointerPosition)) {
288
- if (hb.value) {
289
- this.#setTooltip(hb.series.humanFormatValue(hb.value));
290
- }
291
- else {
292
- this.#setTooltip(``);
293
- }
294
- return;
295
- }
296
- }
297
- this.#hideTooltip();
298
- }
299
- #hideTooltip() {
300
- const v = this.tooltipEl.value;
301
- if (!v)
302
- return;
303
- v.classList.add(`hidden`);
304
- }
305
- #setTooltip(innerHtml) {
306
- const v = this.tooltipEl.value;
307
- if (!v)
308
- return;
309
- const pos = this.#lastPointerPosition;
310
- v.classList.remove(`hidden`);
311
- const offset = 10;
312
- v.innerHTML = innerHtml;
313
- if (pos) {
314
- v.style.left = `${pos.screenX + offset}px`;
315
- v.style.top = `${pos.screenY + offset}px`;
316
- }
317
- }
318
- #setupCanvas() {
319
- if (this.#canvas !== undefined)
320
- return this.#canvas;
321
- const canvas = this.canvasEl.value; // this.shadowRoot?.querySelector(`canvas`);
322
- if (!canvas)
323
- throw new Error(`canvas element not found`);
324
- const c = new CanvasHelper(canvas);
325
- this.#canvas = c;
326
- this.#drawing = Drawing.makeHelper(c.ctx);
327
- return c;
328
- }
329
- connectedCallback() {
330
- super.connectedCallback();
331
- }
332
- firstUpdated(_changedProperties) {
333
- const ro = new ResizeObserver((event) => {
334
- const c = this.#setupCanvas();
335
- if (!c)
336
- return;
337
- const entry = event[0];
338
- c.setLogicalSize(entry.contentRect);
339
- if (this.#hasDirty()) {
340
- this.#drawImpl();
341
- }
342
- });
343
- ro.observe(this);
344
- this.updateColours();
345
- //this.#setupCanvas();
346
- }
347
- #hasDirty() {
348
- for (const s of this.series.values()) {
349
- if (s.isDirty)
350
- return true;
351
- }
352
- return false;
353
- }
354
- updateColours() {
355
- this.#legendColour = getCssVariable(`legend-fg`, `black`);
356
- }
357
- setRawValues(values, seriesName, automaticallyDraw) {
358
- if (!Array.isArray(values))
359
- throw new TypeError(`Param 'values' is not an array`);
360
- let s = this.getOrCreateSeries(seriesName);
361
- s.setRawValues(values, automaticallyDraw);
362
- return s;
363
- }
364
- /**
365
- * Treats each property of an object as the series name
366
- * @param value
367
- * @param automaticallyDraw
368
- */
369
- appendObjectBySeries(value, automaticallyDraw) {
370
- for (const p of Pathed.getPathsAndData(value, true)) {
371
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
372
- const v = p.value;
373
- if (typeof v === `number`) {
374
- this.appendRawValues(v, p.path, false);
375
- }
376
- }
377
- if (automaticallyDraw)
378
- this.draw();
379
- }
380
- appendRawValues(values, seriesName, automaticallyDraw) {
381
- if (!Array.isArray(values))
382
- values = [values];
383
- let s = this.getOrCreateSeries(seriesName);
384
- for (const v of values) {
385
- s.pushValue(v, false);
386
- }
387
- if (automaticallyDraw)
388
- this.draw();
389
- }
390
- draw(force = false) {
391
- if (force) {
392
- this.#drawImpl();
393
- }
394
- else {
395
- void this.#drawThrottled();
396
- }
397
- }
398
- #drawImpl() {
399
- if (this.paused)
400
- return;
401
- const c = this.#canvas;
402
- const d = this.#drawing;
403
- const padding = this.padding;
404
- if (!d || !c) {
405
- return;
406
- }
407
- c.clear();
408
- const ctx = d.ctx;
409
- const axisYwidth = this.computeAxisYWidth(c);
410
- const remainingWidth = c.width - axisYwidth;
411
- const clLegend = this.computeLegend(c, remainingWidth, padding);
412
- const plotHeight = c.height - clLegend.bounds.height - padding;
413
- const cy = { width: axisYwidth, height: plotHeight };
414
- const plotDataArea = this.calculatePlotDataArea(c, plotHeight, cy.width, padding);
415
- const cl = { ...clLegend.bounds, x: cy.width, y: plotDataArea.y + plotDataArea.height + padding };
416
- // Draw legend
417
- if (!this.hideLegend) {
418
- ctx.save();
419
- ctx.translate(cl.x + padding, cl.y + padding);
420
- this.drawLegend(cl, d);
421
- ctx.restore();
422
- }
423
- ctx.save();
424
- ctx.translate(plotDataArea.x + padding, plotDataArea.y + padding);
425
- if (this.plotAreaFormat.fill.type === `solid`) {
426
- ctx.fillStyle = Colour.resolveCss(this.plotAreaFormat.fill.colour);
427
- ctx.fillRect(0, 0, plotDataArea.width, plotDataArea.height);
428
- }
429
- if (this.plotAreaFormat.outline.type === `solid`) {
430
- ctx.strokeStyle = Colour.resolveCss(this.plotAreaFormat.outline.colour);
431
- ctx.strokeRect(0, 0, plotDataArea.width, plotDataArea.height);
432
- }
433
- // Compute axis scaling
434
- const primaryAxisS = this.primaryAxis.getValueScaler(this.#series.values().filter(s => s.onPrimaryAxis));
435
- const secondaryAxisAxisS = this.secondaryAxis.getValueScaler(this.#series.values().filter(s => !s.onPrimaryAxis));
436
- // Draw data
437
- this.#hitboxes = [];
438
- for (const series of this.#series.values()) {
439
- switch (this.renderStyle) {
440
- case `line`: {
441
- this.#drawLineSeries(series, d, series.onPrimaryAxis ? primaryAxisS : secondaryAxisAxisS, plotDataArea, { x: padding, y: padding });
442
- break;
443
- }
444
- case `bar`: {
445
- this.#drawBarSeries(series, d, series.onPrimaryAxis ? primaryAxisS : secondaryAxisAxisS, plotDataArea, { x: padding, y: padding });
446
- break;
447
- }
448
- default: {
449
- this.#drawDotSeries(series, d, series.onPrimaryAxis ? primaryAxisS : secondaryAxisAxisS, plotDataArea, { x: padding, y: padding });
450
- }
451
- }
452
- series.isDirty = false;
453
- }
454
- ctx.restore();
455
- this.#updateToolTip();
456
- }
457
- drawLegend(cl, d) {
458
- const textColour = this.#legendColour;
459
- const padding = this.padding;
460
- let x = 0;
461
- let y = padding;
462
- const swatchSize = 10;
463
- const ctx = d.ctx;
464
- for (const series of this.#series.values()) {
465
- const f = series.getFormatting();
466
- const colour = (f.fill.type === `solid`) ? f.fill.colour : `transparent`;
467
- ctx.fillStyle = Colour.toCssColour(colour);
468
- ctx.fillRect(x, y, swatchSize, swatchSize);
469
- ctx.fillStyle = textColour;
470
- x += swatchSize + padding;
471
- const m = ctx.measureText(series.name);
472
- ctx.textBaseline = `middle`;
473
- ctx.fillText(series.name, x, y + swatchSize / 2);
474
- x += m.width + padding;
475
- if (x >= cl.width) {
476
- y += 10 + padding;
477
- x = 0;
478
- }
479
- }
480
- }
481
- // #drawBarSeries(data: number[], cp: Rect, d: DrawingHelper, series: PlotSeries) {
482
- // const barWidth = this.streaming ? this.dataWidth : (cp.width / data.length);
483
- // const formatting = series.getFormatting();
484
- // let x = 0;
485
- // if (this.streaming) x = cp.width - (barWidth * data.length);
486
- // const rects = data.map(d => {
487
- // x += barWidth;
488
- // const h = (d) * cp.height;
489
- // return {
490
- // x: x,
491
- // y: cp.height - h,
492
- // height: h,
493
- // width: barWidth,
494
- // value: d
495
- // };
496
- // })
497
- // this.#hitboxes = rects.map(r => {
498
- // return {
499
- // ...r,
500
- // series: series.name
501
- // }
502
- // })
503
- // let drawOptions: { stroke: boolean, filled: boolean, strokeWidth?: number, strokeStyle?: string, fillStyle?: string } = {
504
- // stroke: false,
505
- // filled: false
506
- // }
507
- // if (formatting.outline.type === `solid`) {
508
- // drawOptions.stroke = true;
509
- // drawOptions.strokeStyle = formatting.outline.colour;
510
- // drawOptions.strokeWidth = 1;
511
- // }
512
- // if (formatting.fill.type === `solid`) {
513
- // drawOptions.filled = true;
514
- // drawOptions.fillStyle = formatting.fill.colour;
515
- // }
516
- // d.rect(rects, drawOptions);
517
- // }
518
- #drawLineSeries(series, d, scaler, plotDataArea, plotDataAreaOffset) {
519
- const formatting = series.getFormatting();
520
- const lineFormatting = formatting.line;
521
- const widthPerValue = plotDataArea.width / series.length;
522
- const xOffset = widthPerValue / 2;
523
- const lineThickness = lineFormatting.width;
524
- const lineThicknessHalf = lineThickness / 2;
525
- const h = plotDataArea.height;
526
- let x = 0;
527
- const dotsToDraw = [...series.getValuesForColumn(0)].map(d => {
528
- const [value, index] = d;
529
- x += widthPerValue;
530
- const scaledValue = scaler(value);
531
- if (Number.isNaN(value))
532
- return undefined;
533
- return {
534
- x: x - xOffset,
535
- y: (1 - scaledValue) * h,
536
- value, index
537
- };
538
- });
539
- const filtered = dotsToDraw.filter(f => f !== undefined);
540
- const hitboxes = filtered.map(d => ({
541
- height: lineThickness,
542
- width: widthPerValue,
543
- x: plotDataAreaOffset.x + d.x - lineThicknessHalf,
544
- y: plotDataAreaOffset.y + d.y - lineThicknessHalf,
545
- series,
546
- index: d.index,
547
- value: series.getValue(d.index),
548
- }));
549
- this.#hitboxes.push(...hitboxes);
550
- const drawOpts = {
551
- filled: false,
552
- fillStyle: `transparent`,
553
- stroked: true,
554
- strokeStyle: `black`,
555
- strokeWidth: lineFormatting.width
556
- };
557
- if (formatting.outline.type === `solid`) {
558
- drawOpts.strokeStyle = formatting.outline.colour;
559
- }
560
- else if (formatting.fill.type === `solid`) {
561
- drawOpts.strokeStyle = formatting.fill.colour;
562
- }
563
- d.ctx.lineWidth = lineFormatting.width;
564
- d.ctx.lineCap = lineFormatting.cap;
565
- d.ctx.lineJoin = lineFormatting.join;
566
- d.connectedPoints(filtered, drawOpts);
567
- //d.textBlock([ `hello` ], { fillStyle: `black`, anchor: { x: 1, y: 1 } })
568
- }
569
- #drawDotSeries(series, d, scaler, plotDataArea, plotDataAreaOffset) {
570
- const formatting = series.getFormatting();
571
- const dotFormatting = formatting.dot;
572
- const widthPerValue = plotDataArea.width / series.length;
573
- const radius = dotFormatting.radius === `automatic` ? widthPerValue * 0.3 : dotFormatting.radius;
574
- const xOffset = widthPerValue / 2;
575
- const h = plotDataArea.height;
576
- let x = 0;
577
- const dotsToDraw = [...series.getValuesForColumn(0)].map(d => {
578
- const [value, index] = d;
579
- x += widthPerValue;
580
- const scaledValue = scaler(value);
581
- if (Number.isNaN(value))
582
- return undefined;
583
- return {
584
- x: x - xOffset,
585
- y: (1 - scaledValue) * h,
586
- radius: radius,
587
- value, index
588
- };
589
- });
590
- const filtered = dotsToDraw.filter(f => f !== undefined);
591
- const hitboxes = filtered.map(d => ({
592
- height: d.radius * 2,
593
- width: d.radius * 2,
594
- x: plotDataAreaOffset.x + d.x - d.radius,
595
- y: plotDataAreaOffset.y + d.y - d.radius,
596
- series,
597
- index: d.index,
598
- value: series.getValue(d.index),
599
- }));
600
- this.#hitboxes.push(...hitboxes);
601
- const drawOpts = { filled: false, fillStyle: `transparent`, stroked: false, strokeStyle: `transparent` };
602
- if (formatting.fill.type === `solid`) {
603
- drawOpts.filled = true;
604
- drawOpts.fillStyle = formatting.fill.colour;
605
- }
606
- if (formatting.outline.type === `solid`) {
607
- drawOpts.stroked = true;
608
- drawOpts.strokeStyle = formatting.outline.colour;
609
- }
610
- d.dot(filtered, drawOpts);
611
- //d.textBlock([ `hello` ], { fillStyle: `black`, anchor: { x: 1, y: 1 } })
612
- }
613
- #drawBarSeries(series, d, scaler, plotDataArea, plotDataAreaOffset) {
614
- const formatting = series.getFormatting();
615
- const barFormatting = formatting.bar;
616
- const widthPerValue = plotDataArea.width / series.length;
617
- const rectWidth = widthPerValue - (barFormatting.gapWidth / 2);
618
- //const xOffset = widthPerValue / 2;
619
- const h = plotDataArea.height;
620
- let x = 0;
621
- const rectsToDraw = [...series.getValuesForColumn(0)].map(d => {
622
- const [value, index] = d;
623
- x += widthPerValue;
624
- const scaledValue = scaler(value);
625
- if (Number.isNaN(value))
626
- return undefined;
627
- const barHeight = scaledValue * h;
628
- return {
629
- x: x - rectWidth,
630
- y: h - barHeight,
631
- width: rectWidth,
632
- height: barHeight,
633
- value, index
634
- };
635
- });
636
- const filtered = rectsToDraw.filter(f => f !== undefined);
637
- const hitboxes = filtered.map(d => ({
638
- height: Math.max(5, d.height),
639
- width: d.width,
640
- x: plotDataAreaOffset.x + d.x,
641
- y: plotDataAreaOffset.y + d.y,
642
- series,
643
- index: d.index,
644
- value: series.getValue(d.index),
645
- }));
646
- this.#hitboxes.push(...hitboxes);
647
- const drawOpts = { filled: false, fillStyle: `transparent`, stroked: false, strokeStyle: `transparent` };
648
- if (formatting.fill.type === `solid`) {
649
- drawOpts.filled = true;
650
- drawOpts.fillStyle = formatting.fill.colour;
651
- }
652
- if (formatting.outline.type === `solid`) {
653
- drawOpts.stroked = true;
654
- drawOpts.strokeStyle = formatting.outline.colour;
655
- }
656
- d.rect(filtered, drawOpts);
657
- //d.textBlock([ `hello` ], { fillStyle: `black`, anchor: { x: 1, y: 1 } })
658
- }
659
- calculatePlotDataArea(c, plotHeight, axisYwidth, padding) {
660
- return {
661
- x: axisYwidth,
662
- y: 0,
663
- width: c.width - axisYwidth - padding - padding,
664
- height: plotHeight - padding
665
- };
666
- }
667
- computeAxisYWidth(_c) {
668
- return 0;
669
- }
670
- computeLegend(c, maxWidth, padding) {
671
- if (this.hideLegend) {
672
- return {
673
- bounds: { width: 0, height: 0 },
674
- parts: []
675
- };
676
- }
677
- const ctx = c.ctx;
678
- const series = [...this.#series.values()];
679
- let largestH = 0;
680
- const sizes = series.map(s => {
681
- let width = this.#swatchSize + padding;
682
- const m = ctx.measureText(s.name);
683
- width += m.width;
684
- const height = m.emHeightAscent + m.emHeightDescent;
685
- largestH = Math.max(height, largestH);
686
- return {
687
- width,
688
- height
689
- };
690
- });
691
- const parts = [];
692
- let x = padding;
693
- let y = padding;
694
- let usedWidthMax = 0;
695
- for (const s of sizes) {
696
- parts.push({
697
- x, y, ...s
698
- });
699
- x += s.width;
700
- usedWidthMax = Math.max(x, usedWidthMax);
701
- if (x >= maxWidth) {
702
- x = padding;
703
- y += largestH + padding;
704
- }
705
- }
706
- const bounds = { width: usedWidthMax, height: y + largestH + padding };
707
- return {
708
- bounds, parts
709
- };
710
- }
711
- getOrCreateSeries(name) {
712
- let s = this.#series.get(name.toLowerCase());
713
- if (s)
714
- return s;
715
- s = new PlotSeries(name, this);
716
- const seriesDefault = {
717
- limit: Number.NaN,
718
- ...this.seriesDefault
719
- };
720
- if (!Number.isNaN(seriesDefault.limit)) {
721
- s.setCapacityLimit(seriesDefault.limit);
722
- }
723
- this.#series.set(name.toLowerCase(), s);
724
- return s;
725
- }
726
- getSeries(name) {
727
- return this.#series.get(name);
728
- }
729
- render() {
730
- // eslint-disable-next-line @typescript-eslint/unbound-method
731
- return html `<canvas @pointerleave="${this.#onPointerLeave}" @pointermove="${this.#onPointerMove}" ${ref(this.canvasEl)}></canvas><div class="hidden" ${ref(this.tooltipEl)} id="tooltip"></div>`;
732
- }
733
- static { this.styles = css `
734
- :host {
735
- width: 100%;
736
- height: 100%;
737
- display: block;
738
- }
739
-
740
- #tooltip {
741
- border: 1px solid black;
742
- background: white;
743
- color: black;
744
- padding: 0.3em;
745
- font-size: 10px;
746
- display: inline-block;
747
- position: absolute;
748
- left: 0px;
749
- top: 0px;
750
- opacity:1;
751
- pointer-events: none;
752
- }
753
-
754
- .hidden {
755
- opacity:0 !important;
756
- }
757
- `; }
758
- };
759
- __decorate([
760
- property({ attribute: `hide-legend`, type: Boolean })
761
- ], PlotElement.prototype, "hideLegend", void 0);
762
- __decorate([
763
- property({ attribute: `render`, type: String })
764
- ], PlotElement.prototype, "renderStyle", void 0);
765
- __decorate([
766
- property({ attribute: `padding`, type: Number })
767
- ], PlotElement.prototype, "padding", void 0);
768
- PlotElement = __decorate([
769
- customElement(`ixfx-plot-element`)
770
- ], PlotElement);
771
- export { PlotElement };
772
- const resolveFillDrawStyle = (s) => {
773
- if (s.type === `none`)
774
- return s;
775
- const c = Colour.resolveCss(s.colour);
776
- return {
777
- type: `solid`,
778
- colour: c
779
- };
780
- };
781
- const resolveOutlineDrawStyle = (s) => {
782
- if (s.type === `none`)
783
- return s;
784
- const c = Colour.resolveCss(s.colour);
785
- return {
786
- ...s,
787
- colour: c
788
- };
789
- };
790
- //export type Range = { min: number, max: number }
791
- // const initRange = (): Range => ({ min: Number.MAX_SAFE_INTEGER, max: Number.MIN_SAFE_INTEGER });
792
- // function computeRangeWithNewValue(v: number | undefined, prev: Range): Range {
793
- // if (typeof v === `number`) {
794
- // // Skip creating an object if it's in range
795
- // if (v >= prev.min && v <= prev.max) return prev;
796
- // return {
797
- // min: Math.min(v, prev.min),
798
- // max: Math.max(v, prev.max),
799
- // }
800
- // }
801
- // return prev;
802
- // }
803
- // function computeMergedRange(newRange: Range, existingRange: Range): Range {
804
- // if (newRange.max <= existingRange.max && newRange.min >= existingRange.min) return existingRange;
805
- // return {
806
- // min: Math.min(newRange.min, existingRange.min),
807
- // max: Math.max(newRange.max, existingRange.max)
808
- // }
809
- // }
810
- export class PlotSeries {
811
- #data = [];
812
- #capacityLimit = Number.NaN;
813
- #dirty = false;
814
- #onPrimaryAxis = true;
815
- constructor(name, plot) {
816
- this.name = name;
817
- this.plot = plot;
818
- }
819
- get length() {
820
- return this.#data.length;
821
- }
822
- *getValuesForColumn(column) {
823
- let index = 0;
824
- for (const dv of this.#data) {
825
- if (dv && column in dv) {
826
- yield [dv[column], index];
827
- }
828
- else {
829
- yield [Number.NaN, index];
830
- }
831
- index++;
832
- }
833
- }
834
- getValue(index) {
835
- return this.#data[index];
836
- }
837
- pushValue(value, automaticallyDraw) {
838
- if (!Array.isArray(value)) {
839
- value = [value];
840
- }
841
- if (value.length === 0)
842
- throw new Error(`Param 'value' is empty. Expected a value or array of value components`);
843
- this.#data.push(value);
844
- if (!Number.isNaN(this.#capacityLimit)) {
845
- this.#data = Arrays.ensureLength(this.#data, this.#capacityLimit, `undefined`, `from-start`);
846
- }
847
- this.#dirty = true;
848
- if (automaticallyDraw)
849
- this.plot.draw();
850
- }
851
- setValues(values, automaticallyDraw) {
852
- if (!Array.isArray(values))
853
- throw new TypeError(`Param 'values' is not an array`);
854
- this.#data = Arrays.ensureLength(values, this.#capacityLimit, `undefined`);
855
- //this.#updateRanges();
856
- this.#dirty = true;
857
- if (automaticallyDraw)
858
- this.plot.draw();
859
- }
860
- humanFormatValue(value) {
861
- let v = `${this.name} `;
862
- if (this.onPrimaryAxis) {
863
- v += this.plot.primaryAxis.humanFormatValue(value);
864
- }
865
- else {
866
- v += this.plot.secondaryAxis.humanFormatValue(value);
867
- }
868
- return v;
869
- }
870
- setRawValues(values, automaticallyDraw) {
871
- this.setValues(values.map(v => [v]), automaticallyDraw);
872
- }
873
- setCapacityLimit(v) {
874
- if (typeof v !== `number`)
875
- throw new TypeError(`Expect type number. Got: ${typeof v}`);
876
- if (!Number.isFinite(v)) {
877
- throw new TypeError(`Param 'v' is not finite`);
878
- }
879
- if (Number.isNaN(v)) {
880
- throw new TypeError(`Param 'v' is NaN`);
881
- }
882
- this.#capacityLimit = v;
883
- this.#data = Arrays.ensureLength(this.#data, this.#capacityLimit, `undefined`);
884
- }
885
- unsetCapacityLimit() {
886
- this.#capacityLimit = Number.NaN;
887
- }
888
- setFormatting(formatting) {
889
- this.plot.setSeriesFormatting(this.name, formatting);
890
- }
891
- getFormatting() {
892
- return this.plot.getSeriesFormatting(this.name, true);
893
- }
894
- get isDirty() {
895
- return this.#dirty;
896
- }
897
- set isDirty(value) {
898
- this.#dirty = value;
899
- }
900
- get onPrimaryAxis() {
901
- return this.#onPrimaryAxis;
902
- }
903
- set onPrimaryAxis(value) {
904
- if (value === this.#onPrimaryAxis)
905
- return;
906
- this.#onPrimaryAxis = value;
907
- this.#dirty = true;
908
- }
909
- clear() {
910
- this.#data = [];
911
- this.#dirty = true;
912
- }
913
- }
914
- //# sourceMappingURL=plot.js.map