@ixfx/components 0.2.4 → 0.2.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 (718) hide show
  1. package/bundle/index.d.ts +285 -159
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +3291 -2485
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +96 -0
  6. package/dist/ac-text.d.ts.map +1 -0
  7. package/dist/ac-text.js +484 -0
  8. package/dist/ac-text.js.map +1 -0
  9. package/dist/{button/button-styles.js → button-B9ztaKyl.js} +49 -3
  10. package/dist/button-B9ztaKyl.js.map +1 -0
  11. package/dist/button.d.ts +20 -0
  12. package/dist/button.d.ts.map +1 -0
  13. package/dist/button.js +3 -0
  14. package/dist/checkbox.d.ts +26 -57
  15. package/dist/checkbox.d.ts.map +1 -1
  16. package/dist/checkbox.js +74 -88
  17. package/dist/checkbox.js.map +1 -1
  18. package/dist/chunk-pbuEa-1d.js +13 -0
  19. package/dist/colour-C3MQIjFJ-BJV-QC-3.js +4138 -0
  20. package/dist/colour-C3MQIjFJ-BJV-QC-3.js.map +1 -0
  21. package/dist/colour-picker-BNqDz4wK.js +922 -0
  22. package/dist/colour-picker-BNqDz4wK.js.map +1 -0
  23. package/dist/colour-picker.d.ts +2 -0
  24. package/dist/colour-picker.js +2 -0
  25. package/dist/crumbs.d.ts +91 -0
  26. package/dist/crumbs.d.ts.map +1 -0
  27. package/dist/crumbs.js +789 -0
  28. package/dist/crumbs.js.map +1 -0
  29. package/dist/data-display.d.ts +22 -18
  30. package/dist/data-display.d.ts.map +1 -1
  31. package/dist/data-display.js +81 -108
  32. package/dist/data-display.js.map +1 -1
  33. package/dist/decorate-O4m1U4l3.js +25 -0
  34. package/dist/decorate-O4m1U4l3.js.map +1 -0
  35. package/dist/defaults-FEZaGiYZ.js +38 -0
  36. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  37. package/dist/dist-By5URG0Y.js +1290 -0
  38. package/dist/dist-By5URG0Y.js.map +1 -0
  39. package/dist/dist-D7kJgnSE.js +1039 -0
  40. package/dist/dist-D7kJgnSE.js.map +1 -0
  41. package/dist/editable-label.d.ts +71 -0
  42. package/dist/editable-label.d.ts.map +1 -0
  43. package/dist/editable-label.js +279 -0
  44. package/dist/editable-label.js.map +1 -0
  45. package/dist/hex-editor-2_s0Ua5t.d.ts +130 -0
  46. package/dist/hex-editor-2_s0Ua5t.d.ts.map +1 -0
  47. package/dist/hex-editor-gH3mteMr.js +1147 -0
  48. package/dist/hex-editor-gH3mteMr.js.map +1 -0
  49. package/dist/hex.d.ts +2 -0
  50. package/dist/hex.js +2 -0
  51. package/dist/highlight-CAjwQ4GE.js +50 -0
  52. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  53. package/dist/icon-CYACf6o8.js +100 -0
  54. package/dist/icon-CYACf6o8.js.map +1 -0
  55. package/dist/icon-CeTDJhC7.d.ts +35 -0
  56. package/dist/icon-CeTDJhC7.d.ts.map +1 -0
  57. package/dist/icons.d.ts +3 -0
  58. package/dist/icons.js +9 -0
  59. package/dist/icons.js.map +1 -0
  60. package/dist/incr-search-BZawvrfl.js +311 -0
  61. package/dist/incr-search-BZawvrfl.js.map +1 -0
  62. package/dist/incr-search.d.ts +2 -0
  63. package/dist/incr-search.js +3 -0
  64. package/dist/index-B1hNR7Z9.d.ts +36 -0
  65. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  66. package/dist/index-CnL9krsH.d.ts +1238 -0
  67. package/dist/index-CnL9krsH.d.ts.map +1 -0
  68. package/dist/index-CwGkb9s1.d.ts +395 -0
  69. package/dist/index-CwGkb9s1.d.ts.map +1 -0
  70. package/dist/index-DrQjA8Gs.d.ts +22 -0
  71. package/dist/index-DrQjA8Gs.d.ts.map +1 -0
  72. package/dist/index-V2cJorlA.d.ts +160 -0
  73. package/dist/index-V2cJorlA.d.ts.map +1 -0
  74. package/dist/index-kY5gxbkI.d.ts +182 -0
  75. package/dist/index-kY5gxbkI.d.ts.map +1 -0
  76. package/dist/index.d.ts +540 -53
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +6519 -54
  79. package/dist/index.js.map +1 -1
  80. package/dist/interaction-CQDQJf2Q.js +1 -0
  81. package/dist/keyboard-De_vOHLg.js +20 -0
  82. package/dist/keyboard-De_vOHLg.js.map +1 -0
  83. package/dist/labelled-input-base-BvgH7ldm.js +155 -0
  84. package/dist/labelled-input-base-BvgH7ldm.js.map +1 -0
  85. package/dist/labelled-input-base-D-Y7agky.d.ts +42 -0
  86. package/dist/labelled-input-base-D-Y7agky.d.ts.map +1 -0
  87. package/dist/labelled-radial-input.d.ts +33 -0
  88. package/dist/labelled-radial-input.d.ts.map +1 -0
  89. package/dist/labelled-radial-input.js +188 -0
  90. package/dist/labelled-radial-input.js.map +1 -0
  91. package/dist/labelled-range-input.d.ts +2 -0
  92. package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
  93. package/dist/labelled-range-input.js.map +1 -0
  94. package/dist/led.d.ts +20 -16
  95. package/dist/led.d.ts.map +1 -1
  96. package/dist/led.js +71 -79
  97. package/dist/led.js.map +1 -1
  98. package/dist/menu-C3eANB5M.js +813 -0
  99. package/dist/menu-C3eANB5M.js.map +1 -0
  100. package/dist/menu-item-6IU5weHi.js +766 -0
  101. package/dist/menu-item-6IU5weHi.js.map +1 -0
  102. package/dist/menu-item-ClQF2DKN.d.ts +127 -0
  103. package/dist/menu-item-ClQF2DKN.d.ts.map +1 -0
  104. package/dist/menu.d.ts +3 -0
  105. package/dist/menu.js +3 -0
  106. package/dist/miller.d.ts +323 -0
  107. package/dist/miller.d.ts.map +1 -0
  108. package/dist/miller.js +1343 -0
  109. package/dist/miller.js.map +1 -0
  110. package/dist/narrowed-text.d.ts +71 -0
  111. package/dist/narrowed-text.d.ts.map +1 -0
  112. package/dist/narrowed-text.js +571 -0
  113. package/dist/narrowed-text.js.map +1 -0
  114. package/dist/panel.d.ts +42 -0
  115. package/dist/panel.d.ts.map +1 -0
  116. package/dist/{panel/panel.js → panel.js} +82 -91
  117. package/dist/panel.js.map +1 -0
  118. package/dist/plots.d.ts +2 -0
  119. package/dist/plots.js +2 -0
  120. package/dist/polar-pad.d.ts +66 -0
  121. package/dist/polar-pad.d.ts.map +1 -0
  122. package/dist/polar-pad.js +537 -0
  123. package/dist/polar-pad.js.map +1 -0
  124. package/dist/popup-Ddx9LCzY.js +24 -0
  125. package/dist/popup-Ddx9LCzY.js.map +1 -0
  126. package/dist/prominence-CreDBdCs.js +98 -0
  127. package/dist/prominence-CreDBdCs.js.map +1 -0
  128. package/dist/radial-input-Dbc6fgCK.js +849 -0
  129. package/dist/radial-input-Dbc6fgCK.js.map +1 -0
  130. package/dist/radial-input-LUSBEycd.d.ts +69 -0
  131. package/dist/radial-input-LUSBEycd.d.ts.map +1 -0
  132. package/dist/radial-input.d.ts +2 -0
  133. package/dist/radial-input.js +2 -0
  134. package/dist/range-input.d.ts +42 -0
  135. package/dist/range-input.d.ts.map +1 -0
  136. package/dist/{range-input/range-input.js → range-input.js} +155 -168
  137. package/dist/range-input.js.map +1 -0
  138. package/dist/range.d.ts +27 -0
  139. package/dist/range.d.ts.map +1 -0
  140. package/dist/range.js +136 -0
  141. package/dist/range.js.map +1 -0
  142. package/dist/registry-CZEB1YI9.js +21 -0
  143. package/dist/registry-CZEB1YI9.js.map +1 -0
  144. package/dist/selecthorizontal.d.ts +12 -8
  145. package/dist/selecthorizontal.d.ts.map +1 -1
  146. package/dist/selecthorizontal.js +20 -24
  147. package/dist/selecthorizontal.js.map +1 -1
  148. package/dist/snap-container.d.ts +49 -0
  149. package/dist/snap-container.d.ts.map +1 -0
  150. package/dist/snap-container.js +297 -0
  151. package/dist/snap-container.js.map +1 -0
  152. package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +29 -25
  153. package/dist/split-layout.d.ts.map +1 -0
  154. package/dist/split-layout.js +545 -0
  155. package/dist/split-layout.js.map +1 -0
  156. package/dist/style.css +133 -0
  157. package/dist/swipe.d.ts +48 -0
  158. package/dist/swipe.d.ts.map +1 -0
  159. package/dist/swipe.js +204 -0
  160. package/dist/swipe.js.map +1 -0
  161. package/dist/tab-list-BnqISNvO.d.ts +65 -0
  162. package/dist/tab-list-BnqISNvO.d.ts.map +1 -0
  163. package/dist/tabs.d.ts +2 -0
  164. package/dist/tabs.js +203 -0
  165. package/dist/tabs.js.map +1 -0
  166. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  167. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  168. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  169. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  170. package/dist/timeline-B62Sz6J_.js +1748 -0
  171. package/dist/timeline-B62Sz6J_.js.map +1 -0
  172. package/dist/timeline.d.ts +2 -0
  173. package/dist/timeline.js +2 -0
  174. package/dist/tooltip-CwGfb4lp.d.ts +25 -0
  175. package/dist/tooltip-CwGfb4lp.d.ts.map +1 -0
  176. package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
  177. package/dist/tooltip-DMxmBNky.js.map +1 -0
  178. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  179. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  180. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  181. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  182. package/dist/tree.d.ts +99 -0
  183. package/dist/tree.d.ts.map +1 -0
  184. package/dist/tree.js +1144 -0
  185. package/dist/tree.js.map +1 -0
  186. package/dist/types-BKaqnpwx.d.ts +8 -0
  187. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  188. package/dist/xy-axis-C7fNxDwY.js +6243 -0
  189. package/dist/xy-axis-C7fNxDwY.js.map +1 -0
  190. package/dist/xy-axis-D9uwpGTT.d.ts +140 -0
  191. package/dist/xy-axis-D9uwpGTT.d.ts.map +1 -0
  192. package/dist/xy-pad.d.ts +73 -110
  193. package/dist/xy-pad.d.ts.map +1 -1
  194. package/dist/xy-pad.js +300 -320
  195. package/dist/xy-pad.js.map +1 -1
  196. package/package.json +24 -28
  197. package/dist/ac-text/ac-text.d.ts +0 -99
  198. package/dist/ac-text/ac-text.d.ts.map +0 -1
  199. package/dist/ac-text/ac-text.js +0 -571
  200. package/dist/ac-text/ac-text.js.map +0 -1
  201. package/dist/button/button-styles.d.ts +0 -2
  202. package/dist/button/button-styles.d.ts.map +0 -1
  203. package/dist/button/button-styles.js.map +0 -1
  204. package/dist/button/button.d.ts +0 -16
  205. package/dist/button/button.d.ts.map +0 -1
  206. package/dist/button/button.js +0 -58
  207. package/dist/button/button.js.map +0 -1
  208. package/dist/button/radio-group.d.ts +0 -44
  209. package/dist/button/radio-group.d.ts.map +0 -1
  210. package/dist/button/radio-group.js +0 -385
  211. package/dist/button/radio-group.js.map +0 -1
  212. package/dist/button/split-button.d.ts +0 -59
  213. package/dist/button/split-button.d.ts.map +0 -1
  214. package/dist/button/split-button.js +0 -480
  215. package/dist/button/split-button.js.map +0 -1
  216. package/dist/button/types.d.ts +0 -18
  217. package/dist/button/types.d.ts.map +0 -1
  218. package/dist/button/types.js +0 -2
  219. package/dist/button/types.js.map +0 -1
  220. package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
  221. package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
  222. package/dist/colour-picker/colour-picker-popup.js +0 -399
  223. package/dist/colour-picker/colour-picker-popup.js.map +0 -1
  224. package/dist/colour-picker/colour-picker.d.ts +0 -100
  225. package/dist/colour-picker/colour-picker.d.ts.map +0 -1
  226. package/dist/colour-picker/colour-picker.js +0 -567
  227. package/dist/colour-picker/colour-picker.js.map +0 -1
  228. package/dist/colour-picker/index.d.ts +0 -4
  229. package/dist/colour-picker/index.d.ts.map +0 -1
  230. package/dist/colour-picker/index.js +0 -3
  231. package/dist/colour-picker/index.js.map +0 -1
  232. package/dist/colour-picker/styles.d.ts +0 -2
  233. package/dist/colour-picker/styles.d.ts.map +0 -1
  234. package/dist/colour-picker/styles.js +0 -139
  235. package/dist/colour-picker/styles.js.map +0 -1
  236. package/dist/colour-picker/types.d.ts +0 -33
  237. package/dist/colour-picker/types.d.ts.map +0 -1
  238. package/dist/colour-picker/types.js +0 -2
  239. package/dist/colour-picker/types.js.map +0 -1
  240. package/dist/colour-picker/util.d.ts +0 -15
  241. package/dist/colour-picker/util.d.ts.map +0 -1
  242. package/dist/colour-picker/util.js +0 -35
  243. package/dist/colour-picker/util.js.map +0 -1
  244. package/dist/common/searchable.d.ts +0 -9
  245. package/dist/common/searchable.d.ts.map +0 -1
  246. package/dist/common/searchable.js +0 -9
  247. package/dist/common/searchable.js.map +0 -1
  248. package/dist/common/tree-component.d.ts +0 -172
  249. package/dist/common/tree-component.d.ts.map +0 -1
  250. package/dist/common/tree-component.js +0 -8
  251. package/dist/common/tree-component.js.map +0 -1
  252. package/dist/common/tree-data-model.d.ts +0 -100
  253. package/dist/common/tree-data-model.d.ts.map +0 -1
  254. package/dist/common/tree-data-model.js +0 -207
  255. package/dist/common/tree-data-model.js.map +0 -1
  256. package/dist/common/tree-item.d.ts +0 -7
  257. package/dist/common/tree-item.d.ts.map +0 -1
  258. package/dist/common/tree-item.js +0 -2
  259. package/dist/common/tree-item.js.map +0 -1
  260. package/dist/common/types.d.ts +0 -69
  261. package/dist/common/types.d.ts.map +0 -1
  262. package/dist/common/types.js +0 -6
  263. package/dist/common/types.js.map +0 -1
  264. package/dist/crumbs/crumb-navigation.d.ts +0 -96
  265. package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
  266. package/dist/crumbs/crumb-navigation.js +0 -911
  267. package/dist/crumbs/crumb-navigation.js.map +0 -1
  268. package/dist/crumbs/crumb-path-controller.d.ts +0 -18
  269. package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
  270. package/dist/crumbs/crumb-path-controller.js +0 -81
  271. package/dist/crumbs/crumb-path-controller.js.map +0 -1
  272. package/dist/crumbs/crumb-path.d.ts +0 -65
  273. package/dist/crumbs/crumb-path.d.ts.map +0 -1
  274. package/dist/crumbs/crumb-path.js +0 -691
  275. package/dist/crumbs/crumb-path.js.map +0 -1
  276. package/dist/editable-label/editable-label.d.ts +0 -98
  277. package/dist/editable-label/editable-label.d.ts.map +0 -1
  278. package/dist/editable-label/editable-label.js +0 -348
  279. package/dist/editable-label/editable-label.js.map +0 -1
  280. package/dist/editable-label/editable-number.d.ts +0 -96
  281. package/dist/editable-label/editable-number.d.ts.map +0 -1
  282. package/dist/editable-label/editable-number.js +0 -702
  283. package/dist/editable-label/editable-number.js.map +0 -1
  284. package/dist/hex/colour.d.ts +0 -6
  285. package/dist/hex/colour.d.ts.map +0 -1
  286. package/dist/hex/colour.js +0 -33
  287. package/dist/hex/colour.js.map +0 -1
  288. package/dist/hex/data.d.ts +0 -18
  289. package/dist/hex/data.d.ts.map +0 -1
  290. package/dist/hex/data.js +0 -61
  291. package/dist/hex/data.js.map +0 -1
  292. package/dist/hex/diff.d.ts +0 -14
  293. package/dist/hex/diff.d.ts.map +0 -1
  294. package/dist/hex/diff.js +0 -31
  295. package/dist/hex/diff.js.map +0 -1
  296. package/dist/hex/hex-editor.d.ts +0 -101
  297. package/dist/hex/hex-editor.d.ts.map +0 -1
  298. package/dist/hex/hex-editor.js +0 -894
  299. package/dist/hex/hex-editor.js.map +0 -1
  300. package/dist/hex/selection.d.ts +0 -11
  301. package/dist/hex/selection.d.ts.map +0 -1
  302. package/dist/hex/selection.js +0 -218
  303. package/dist/hex/selection.js.map +0 -1
  304. package/dist/hex/types.d.ts +0 -34
  305. package/dist/hex/types.d.ts.map +0 -1
  306. package/dist/hex/types.js +0 -4
  307. package/dist/hex/types.js.map +0 -1
  308. package/dist/icons/defaults.d.ts +0 -27
  309. package/dist/icons/defaults.d.ts.map +0 -1
  310. package/dist/icons/defaults.js +0 -34
  311. package/dist/icons/defaults.js.map +0 -1
  312. package/dist/icons/icon.d.ts +0 -31
  313. package/dist/icons/icon.d.ts.map +0 -1
  314. package/dist/icons/icon.js +0 -125
  315. package/dist/icons/icon.js.map +0 -1
  316. package/dist/icons/index.d.ts +0 -5
  317. package/dist/icons/index.d.ts.map +0 -1
  318. package/dist/icons/index.js +0 -6
  319. package/dist/icons/index.js.map +0 -1
  320. package/dist/icons/registry.d.ts +0 -11
  321. package/dist/icons/registry.d.ts.map +0 -1
  322. package/dist/icons/registry.js +0 -17
  323. package/dist/icons/registry.js.map +0 -1
  324. package/dist/incr-search/ac-adapter.d.ts +0 -18
  325. package/dist/incr-search/ac-adapter.d.ts.map +0 -1
  326. package/dist/incr-search/ac-adapter.js +0 -29
  327. package/dist/incr-search/ac-adapter.js.map +0 -1
  328. package/dist/incr-search/controller-miller.d.ts +0 -9
  329. package/dist/incr-search/controller-miller.d.ts.map +0 -1
  330. package/dist/incr-search/controller-miller.js +0 -8
  331. package/dist/incr-search/controller-miller.js.map +0 -1
  332. package/dist/incr-search/controller-tree.d.ts +0 -55
  333. package/dist/incr-search/controller-tree.d.ts.map +0 -1
  334. package/dist/incr-search/controller-tree.js +0 -106
  335. package/dist/incr-search/controller-tree.js.map +0 -1
  336. package/dist/incr-search/element-search.d.ts +0 -15
  337. package/dist/incr-search/element-search.d.ts.map +0 -1
  338. package/dist/incr-search/element-search.js +0 -82
  339. package/dist/incr-search/element-search.js.map +0 -1
  340. package/dist/incr-search/fuzzy.d.ts +0 -3
  341. package/dist/incr-search/fuzzy.d.ts.map +0 -1
  342. package/dist/incr-search/fuzzy.js +0 -37
  343. package/dist/incr-search/fuzzy.js.map +0 -1
  344. package/dist/incr-search/highlight.d.ts +0 -5
  345. package/dist/incr-search/highlight.d.ts.map +0 -1
  346. package/dist/incr-search/highlight.js +0 -54
  347. package/dist/incr-search/highlight.js.map +0 -1
  348. package/dist/incr-search/incr-search.d.ts +0 -3
  349. package/dist/incr-search/incr-search.d.ts.map +0 -1
  350. package/dist/incr-search/incr-search.js +0 -73
  351. package/dist/incr-search/incr-search.js.map +0 -1
  352. package/dist/incr-search/index.d.ts +0 -12
  353. package/dist/incr-search/index.d.ts.map +0 -1
  354. package/dist/incr-search/index.js +0 -8
  355. package/dist/incr-search/index.js.map +0 -1
  356. package/dist/incr-search/types.d.ts +0 -59
  357. package/dist/incr-search/types.d.ts.map +0 -1
  358. package/dist/incr-search/types.js +0 -2
  359. package/dist/incr-search/types.js.map +0 -1
  360. package/dist/interaction/index.d.ts +0 -10
  361. package/dist/interaction/index.d.ts.map +0 -1
  362. package/dist/interaction/index.js +0 -10
  363. package/dist/interaction/index.js.map +0 -1
  364. package/dist/interaction/tickled-controller.d.ts +0 -186
  365. package/dist/interaction/tickled-controller.d.ts.map +0 -1
  366. package/dist/interaction/tickled-controller.js +0 -256
  367. package/dist/interaction/tickled-controller.js.map +0 -1
  368. package/dist/interaction/tickled-styles.d.ts +0 -53
  369. package/dist/interaction/tickled-styles.d.ts.map +0 -1
  370. package/dist/interaction/tickled-styles.js +0 -106
  371. package/dist/interaction/tickled-styles.js.map +0 -1
  372. package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
  373. package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
  374. package/dist/interaction/tree-keyboard-controller.js +0 -105
  375. package/dist/interaction/tree-keyboard-controller.js.map +0 -1
  376. package/dist/keyboard.d.ts +0 -16
  377. package/dist/keyboard.d.ts.map +0 -1
  378. package/dist/keyboard.js +0 -22
  379. package/dist/keyboard.js.map +0 -1
  380. package/dist/labelled-radial-input/index.d.ts +0 -2
  381. package/dist/labelled-radial-input/index.d.ts.map +0 -1
  382. package/dist/labelled-radial-input/index.js +0 -2
  383. package/dist/labelled-radial-input/index.js.map +0 -1
  384. package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
  385. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
  386. package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
  387. package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
  388. package/dist/labelled-range-input/index.d.ts +0 -2
  389. package/dist/labelled-range-input/index.d.ts.map +0 -1
  390. package/dist/labelled-range-input/index.js +0 -2
  391. package/dist/labelled-range-input/index.js.map +0 -1
  392. package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
  393. package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
  394. package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
  395. package/dist/menu/index.d.ts +0 -14
  396. package/dist/menu/index.d.ts.map +0 -1
  397. package/dist/menu/index.js +0 -13
  398. package/dist/menu/index.js.map +0 -1
  399. package/dist/menu/menu-bar.d.ts +0 -23
  400. package/dist/menu/menu-bar.d.ts.map +0 -1
  401. package/dist/menu/menu-bar.js +0 -110
  402. package/dist/menu/menu-bar.js.map +0 -1
  403. package/dist/menu/menu-check-item.d.ts +0 -33
  404. package/dist/menu/menu-check-item.d.ts.map +0 -1
  405. package/dist/menu/menu-check-item.js +0 -175
  406. package/dist/menu/menu-check-item.js.map +0 -1
  407. package/dist/menu/menu-command-controller.d.ts +0 -14
  408. package/dist/menu/menu-command-controller.d.ts.map +0 -1
  409. package/dist/menu/menu-command-controller.js +0 -22
  410. package/dist/menu/menu-command-controller.js.map +0 -1
  411. package/dist/menu/menu-container.d.ts +0 -36
  412. package/dist/menu/menu-container.d.ts.map +0 -1
  413. package/dist/menu/menu-container.js +0 -351
  414. package/dist/menu/menu-container.js.map +0 -1
  415. package/dist/menu/menu-from-tree.d.ts +0 -17
  416. package/dist/menu/menu-from-tree.d.ts.map +0 -1
  417. package/dist/menu/menu-from-tree.js +0 -103
  418. package/dist/menu/menu-from-tree.js.map +0 -1
  419. package/dist/menu/menu-header.d.ts +0 -12
  420. package/dist/menu/menu-header.d.ts.map +0 -1
  421. package/dist/menu/menu-header.js +0 -36
  422. package/dist/menu/menu-header.js.map +0 -1
  423. package/dist/menu/menu-item.d.ts +0 -41
  424. package/dist/menu/menu-item.d.ts.map +0 -1
  425. package/dist/menu/menu-item.js +0 -240
  426. package/dist/menu/menu-item.js.map +0 -1
  427. package/dist/menu/menu-radio-group.d.ts +0 -24
  428. package/dist/menu/menu-radio-group.d.ts.map +0 -1
  429. package/dist/menu/menu-radio-group.js +0 -71
  430. package/dist/menu/menu-radio-group.js.map +0 -1
  431. package/dist/menu/menu-radio-item.d.ts +0 -22
  432. package/dist/menu/menu-radio-item.d.ts.map +0 -1
  433. package/dist/menu/menu-radio-item.js +0 -116
  434. package/dist/menu/menu-radio-item.js.map +0 -1
  435. package/dist/menu/menu-separator.d.ts +0 -11
  436. package/dist/menu/menu-separator.d.ts.map +0 -1
  437. package/dist/menu/menu-separator.js +0 -29
  438. package/dist/menu/menu-separator.js.map +0 -1
  439. package/dist/menu/menu-sub-trigger.d.ts +0 -46
  440. package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
  441. package/dist/menu/menu-sub-trigger.js +0 -302
  442. package/dist/menu/menu-sub-trigger.js.map +0 -1
  443. package/dist/menu/menu-trigger.d.ts +0 -57
  444. package/dist/menu/menu-trigger.d.ts.map +0 -1
  445. package/dist/menu/menu-trigger.js +0 -351
  446. package/dist/menu/menu-trigger.js.map +0 -1
  447. package/dist/miller/index.d.ts +0 -5
  448. package/dist/miller/index.d.ts.map +0 -1
  449. package/dist/miller/index.js +0 -5
  450. package/dist/miller/index.js.map +0 -1
  451. package/dist/miller/miller-base.d.ts +0 -184
  452. package/dist/miller/miller-base.d.ts.map +0 -1
  453. package/dist/miller/miller-base.js +0 -1249
  454. package/dist/miller/miller-base.js.map +0 -1
  455. package/dist/miller/miller-list.d.ts +0 -30
  456. package/dist/miller/miller-list.d.ts.map +0 -1
  457. package/dist/miller/miller-list.js +0 -192
  458. package/dist/miller/miller-list.js.map +0 -1
  459. package/dist/miller/miller-tree-controller.d.ts +0 -58
  460. package/dist/miller/miller-tree-controller.d.ts.map +0 -1
  461. package/dist/miller/miller-tree-controller.js +0 -134
  462. package/dist/miller/miller-tree-controller.js.map +0 -1
  463. package/dist/miller/types.d.ts +0 -63
  464. package/dist/miller/types.d.ts.map +0 -1
  465. package/dist/miller/types.js +0 -6
  466. package/dist/miller/types.js.map +0 -1
  467. package/dist/mixins/labelled-input-base.d.ts +0 -38
  468. package/dist/mixins/labelled-input-base.d.ts.map +0 -1
  469. package/dist/mixins/labelled-input-base.js +0 -171
  470. package/dist/mixins/labelled-input-base.js.map +0 -1
  471. package/dist/mixins/labelled-input-util.d.ts +0 -3
  472. package/dist/mixins/labelled-input-util.d.ts.map +0 -1
  473. package/dist/mixins/labelled-input-util.js +0 -10
  474. package/dist/mixins/labelled-input-util.js.map +0 -1
  475. package/dist/my-element.d.ts +0 -14
  476. package/dist/my-element.d.ts.map +0 -1
  477. package/dist/my-element.js +0 -44
  478. package/dist/my-element.js.map +0 -1
  479. package/dist/narrowed-text/index.d.ts +0 -3
  480. package/dist/narrowed-text/index.d.ts.map +0 -1
  481. package/dist/narrowed-text/index.js +0 -3
  482. package/dist/narrowed-text/index.js.map +0 -1
  483. package/dist/narrowed-text/narrowed-text.d.ts +0 -48
  484. package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
  485. package/dist/narrowed-text/narrowed-text.js +0 -668
  486. package/dist/narrowed-text/narrowed-text.js.map +0 -1
  487. package/dist/narrowed-text/types.d.ts +0 -20
  488. package/dist/narrowed-text/types.d.ts.map +0 -1
  489. package/dist/narrowed-text/types.js +0 -2
  490. package/dist/narrowed-text/types.js.map +0 -1
  491. package/dist/panel/panel-group.d.ts +0 -23
  492. package/dist/panel/panel-group.d.ts.map +0 -1
  493. package/dist/panel/panel-group.js +0 -109
  494. package/dist/panel/panel-group.js.map +0 -1
  495. package/dist/panel/panel.d.ts +0 -39
  496. package/dist/panel/panel.d.ts.map +0 -1
  497. package/dist/panel/panel.js.map +0 -1
  498. package/dist/plots/colour-map.d.ts +0 -31
  499. package/dist/plots/colour-map.d.ts.map +0 -1
  500. package/dist/plots/colour-map.js +0 -133
  501. package/dist/plots/colour-map.js.map +0 -1
  502. package/dist/plots/data.d.ts +0 -27
  503. package/dist/plots/data.d.ts.map +0 -1
  504. package/dist/plots/data.js +0 -47
  505. package/dist/plots/data.js.map +0 -1
  506. package/dist/plots/single-axis.d.ts +0 -41
  507. package/dist/plots/single-axis.d.ts.map +0 -1
  508. package/dist/plots/single-axis.js +0 -428
  509. package/dist/plots/single-axis.js.map +0 -1
  510. package/dist/plots/svg-utils.d.ts +0 -12
  511. package/dist/plots/svg-utils.d.ts.map +0 -1
  512. package/dist/plots/svg-utils.js +0 -64
  513. package/dist/plots/svg-utils.js.map +0 -1
  514. package/dist/plots/xy-axis.d.ts +0 -42
  515. package/dist/plots/xy-axis.d.ts.map +0 -1
  516. package/dist/plots/xy-axis.js +0 -307
  517. package/dist/plots/xy-axis.js.map +0 -1
  518. package/dist/polar-pad/polar-pad.d.ts +0 -132
  519. package/dist/polar-pad/polar-pad.d.ts.map +0 -1
  520. package/dist/polar-pad/polar-pad.js +0 -598
  521. package/dist/polar-pad/polar-pad.js.map +0 -1
  522. package/dist/radial-input/radial-input.d.ts +0 -45
  523. package/dist/radial-input/radial-input.d.ts.map +0 -1
  524. package/dist/radial-input/radial-input.js +0 -692
  525. package/dist/radial-input/radial-input.js.map +0 -1
  526. package/dist/radial-input/svg-utils.d.ts +0 -147
  527. package/dist/radial-input/svg-utils.d.ts.map +0 -1
  528. package/dist/radial-input/svg-utils.js +0 -346
  529. package/dist/radial-input/svg-utils.js.map +0 -1
  530. package/dist/radial-input/types.d.ts +0 -25
  531. package/dist/radial-input/types.d.ts.map +0 -1
  532. package/dist/radial-input/types.js +0 -5
  533. package/dist/radial-input/types.js.map +0 -1
  534. package/dist/range/range-multi.d.ts +0 -62
  535. package/dist/range/range-multi.d.ts.map +0 -1
  536. package/dist/range/range-multi.js +0 -652
  537. package/dist/range/range-multi.js.map +0 -1
  538. package/dist/range/range.d.ts +0 -23
  539. package/dist/range/range.d.ts.map +0 -1
  540. package/dist/range/range.js +0 -153
  541. package/dist/range/range.js.map +0 -1
  542. package/dist/range-input/index.d.ts +0 -2
  543. package/dist/range-input/index.d.ts.map +0 -1
  544. package/dist/range-input/index.js +0 -2
  545. package/dist/range-input/index.js.map +0 -1
  546. package/dist/range-input/range-input.d.ts +0 -92
  547. package/dist/range-input/range-input.d.ts.map +0 -1
  548. package/dist/range-input/range-input.js.map +0 -1
  549. package/dist/snap-container/snap-container.d.ts +0 -45
  550. package/dist/snap-container/snap-container.d.ts.map +0 -1
  551. package/dist/snap-container/snap-container.js +0 -352
  552. package/dist/snap-container/snap-container.js.map +0 -1
  553. package/dist/split-layout/split-layout.d.ts.map +0 -1
  554. package/dist/split-layout/split-layout.js +0 -674
  555. package/dist/split-layout/split-layout.js.map +0 -1
  556. package/dist/styles/popup.d.ts +0 -11
  557. package/dist/styles/popup.d.ts.map +0 -1
  558. package/dist/styles/popup.js +0 -20
  559. package/dist/styles/popup.js.map +0 -1
  560. package/dist/styles/prominence.d.ts +0 -58
  561. package/dist/styles/prominence.d.ts.map +0 -1
  562. package/dist/styles/prominence.js +0 -94
  563. package/dist/styles/prominence.js.map +0 -1
  564. package/dist/styles/tooltip.d.ts +0 -2
  565. package/dist/styles/tooltip.d.ts.map +0 -1
  566. package/dist/styles/tooltip.js.map +0 -1
  567. package/dist/svg-edit-label.d.ts +0 -2
  568. package/dist/svg-edit-label.d.ts.map +0 -1
  569. package/dist/svg-edit-label.js +0 -110
  570. package/dist/svg-edit-label.js.map +0 -1
  571. package/dist/swipe/index.d.ts +0 -2
  572. package/dist/swipe/index.d.ts.map +0 -1
  573. package/dist/swipe/index.js +0 -2
  574. package/dist/swipe/index.js.map +0 -1
  575. package/dist/swipe/swipe.d.ts +0 -65
  576. package/dist/swipe/swipe.d.ts.map +0 -1
  577. package/dist/swipe/swipe.js +0 -229
  578. package/dist/swipe/swipe.js.map +0 -1
  579. package/dist/tabs/tab-layout-item.d.ts +0 -10
  580. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  581. package/dist/tabs/tab-layout-item.js +0 -20
  582. package/dist/tabs/tab-layout-item.js.map +0 -1
  583. package/dist/tabs/tab-layout.d.ts +0 -10
  584. package/dist/tabs/tab-layout.d.ts.map +0 -1
  585. package/dist/tabs/tab-layout.js +0 -25
  586. package/dist/tabs/tab-layout.js.map +0 -1
  587. package/dist/tabs/tab-list-item.d.ts +0 -34
  588. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  589. package/dist/tabs/tab-list-item.js +0 -195
  590. package/dist/tabs/tab-list-item.js.map +0 -1
  591. package/dist/tabs/tab-list.d.ts +0 -31
  592. package/dist/tabs/tab-list.d.ts.map +0 -1
  593. package/dist/tabs/tab-list.js +0 -257
  594. package/dist/tabs/tab-list.js.map +0 -1
  595. package/dist/tabs/tab-panel.d.ts +0 -11
  596. package/dist/tabs/tab-panel.d.ts.map +0 -1
  597. package/dist/tabs/tab-panel.js +0 -30
  598. package/dist/tabs/tab-panel.js.map +0 -1
  599. package/dist/tabs/tab-panels.d.ts +0 -30
  600. package/dist/tabs/tab-panels.d.ts.map +0 -1
  601. package/dist/tabs/tab-panels.js +0 -80
  602. package/dist/tabs/tab-panels.js.map +0 -1
  603. package/dist/timeline/index.d.ts +0 -9
  604. package/dist/timeline/index.d.ts.map +0 -1
  605. package/dist/timeline/index.js +0 -8
  606. package/dist/timeline/index.js.map +0 -1
  607. package/dist/timeline/timeline-controller.d.ts +0 -48
  608. package/dist/timeline/timeline-controller.d.ts.map +0 -1
  609. package/dist/timeline/timeline-controller.js +0 -81
  610. package/dist/timeline/timeline-controller.js.map +0 -1
  611. package/dist/timeline/timeline-draw.d.ts +0 -28
  612. package/dist/timeline/timeline-draw.d.ts.map +0 -1
  613. package/dist/timeline/timeline-draw.js +0 -330
  614. package/dist/timeline/timeline-draw.js.map +0 -1
  615. package/dist/timeline/timeline-element.d.ts +0 -140
  616. package/dist/timeline/timeline-element.d.ts.map +0 -1
  617. package/dist/timeline/timeline-element.js +0 -888
  618. package/dist/timeline/timeline-element.js.map +0 -1
  619. package/dist/timeline/timeline-interactions.d.ts +0 -40
  620. package/dist/timeline/timeline-interactions.d.ts.map +0 -1
  621. package/dist/timeline/timeline-interactions.js +0 -393
  622. package/dist/timeline/timeline-interactions.js.map +0 -1
  623. package/dist/timeline/timeline-styles.d.ts +0 -2
  624. package/dist/timeline/timeline-styles.d.ts.map +0 -1
  625. package/dist/timeline/timeline-styles.js +0 -153
  626. package/dist/timeline/timeline-styles.js.map +0 -1
  627. package/dist/timeline/timeline-track-tabs.d.ts +0 -30
  628. package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
  629. package/dist/timeline/timeline-track-tabs.js +0 -204
  630. package/dist/timeline/timeline-track-tabs.js.map +0 -1
  631. package/dist/timeline/types.d.ts +0 -144
  632. package/dist/timeline/types.d.ts.map +0 -1
  633. package/dist/timeline/types.js +0 -3
  634. package/dist/timeline/types.js.map +0 -1
  635. package/dist/tree/index.d.ts +0 -5
  636. package/dist/tree/index.d.ts.map +0 -1
  637. package/dist/tree/index.js +0 -5
  638. package/dist/tree/index.js.map +0 -1
  639. package/dist/tree/tree-base.d.ts +0 -70
  640. package/dist/tree/tree-base.d.ts.map +0 -1
  641. package/dist/tree/tree-base.js +0 -1028
  642. package/dist/tree/tree-base.js.map +0 -1
  643. package/dist/tree/tree-controller.d.ts +0 -14
  644. package/dist/tree/tree-controller.d.ts.map +0 -1
  645. package/dist/tree/tree-controller.js +0 -96
  646. package/dist/tree/tree-controller.js.map +0 -1
  647. package/dist/tree/tree-list.d.ts +0 -20
  648. package/dist/tree/tree-list.d.ts.map +0 -1
  649. package/dist/tree/tree-list.js +0 -174
  650. package/dist/tree/tree-list.js.map +0 -1
  651. package/dist/tree/types.d.ts +0 -14
  652. package/dist/tree/types.d.ts.map +0 -1
  653. package/dist/tree/types.js +0 -7
  654. package/dist/tree/types.js.map +0 -1
  655. package/dist/util/checkbox.d.ts +0 -2
  656. package/dist/util/checkbox.d.ts.map +0 -1
  657. package/dist/util/checkbox.js +0 -69
  658. package/dist/util/checkbox.js.map +0 -1
  659. package/dist/util/circle-arc.d.ts +0 -34
  660. package/dist/util/circle-arc.d.ts.map +0 -1
  661. package/dist/util/circle-arc.js +0 -85
  662. package/dist/util/circle-arc.js.map +0 -1
  663. package/dist/util/clamp.d.ts +0 -4
  664. package/dist/util/clamp.d.ts.map +0 -1
  665. package/dist/util/clamp.js +0 -23
  666. package/dist/util/clamp.js.map +0 -1
  667. package/dist/util/compare.d.ts +0 -53
  668. package/dist/util/compare.d.ts.map +0 -1
  669. package/dist/util/compare.js +0 -91
  670. package/dist/util/compare.js.map +0 -1
  671. package/dist/util/content-editable.d.ts +0 -2
  672. package/dist/util/content-editable.d.ts.map +0 -1
  673. package/dist/util/content-editable.js +0 -13
  674. package/dist/util/content-editable.js.map +0 -1
  675. package/dist/util/coordinates.d.ts +0 -3
  676. package/dist/util/coordinates.d.ts.map +0 -1
  677. package/dist/util/coordinates.js +0 -11
  678. package/dist/util/coordinates.js.map +0 -1
  679. package/dist/util/drag.d.ts +0 -16
  680. package/dist/util/drag.d.ts.map +0 -1
  681. package/dist/util/drag.js +0 -20
  682. package/dist/util/drag.js.map +0 -1
  683. package/dist/util/is-numeric.d.ts +0 -2
  684. package/dist/util/is-numeric.d.ts.map +0 -1
  685. package/dist/util/is-numeric.js +0 -9
  686. package/dist/util/is-numeric.js.map +0 -1
  687. package/dist/util/key-value.d.ts +0 -5
  688. package/dist/util/key-value.d.ts.map +0 -1
  689. package/dist/util/key-value.js +0 -29
  690. package/dist/util/key-value.js.map +0 -1
  691. package/dist/util/near.d.ts +0 -2
  692. package/dist/util/near.d.ts.map +0 -1
  693. package/dist/util/near.js +0 -6
  694. package/dist/util/near.js.map +0 -1
  695. package/dist/util/primitive-types.d.ts +0 -6
  696. package/dist/util/primitive-types.d.ts.map +0 -1
  697. package/dist/util/primitive-types.js +0 -2
  698. package/dist/util/primitive-types.js.map +0 -1
  699. package/dist/util/svg-editable-text.d.ts +0 -26
  700. package/dist/util/svg-editable-text.d.ts.map +0 -1
  701. package/dist/util/svg-editable-text.js +0 -119
  702. package/dist/util/svg-editable-text.js.map +0 -1
  703. package/dist/util/time.d.ts +0 -2
  704. package/dist/util/time.d.ts.map +0 -1
  705. package/dist/util/time.js +0 -2
  706. package/dist/util/time.js.map +0 -1
  707. package/dist/util/tooltip-controller.d.ts +0 -10
  708. package/dist/util/tooltip-controller.d.ts.map +0 -1
  709. package/dist/util/tooltip-controller.js +0 -237
  710. package/dist/util/tooltip-controller.js.map +0 -1
  711. package/dist/util/tooltip.d.ts +0 -21
  712. package/dist/util/tooltip.d.ts.map +0 -1
  713. package/dist/util/tooltip.js +0 -98
  714. package/dist/util/tooltip.js.map +0 -1
  715. package/dist/util/value-drag.d.ts +0 -33
  716. package/dist/util/value-drag.d.ts.map +0 -1
  717. package/dist/util/value-drag.js +0 -154
  718. package/dist/util/value-drag.js.map +0 -1
@@ -0,0 +1,1147 @@
1
+ import { n as safeCustomElement, t as __decorate } from "./decorate-O4m1U4l3.js";
2
+ import { t as colour_exports } from "./colour-C3MQIjFJ-BJV-QC-3.js";
3
+ import { LitElement, css, html } from "lit";
4
+ import { property, state } from "lit/decorators.js";
5
+ import { styleMap } from "lit/directives/style-map.js";
6
+ import { repeat } from "lit/directives/repeat.js";
7
+ //#region src/hex/colour.ts
8
+ const WHITESPACE_BYTES = new Set([
9
+ 9,
10
+ 10,
11
+ 11,
12
+ 12,
13
+ 13,
14
+ 32
15
+ ]);
16
+ const isControlByte = (byte) => {
17
+ return byte < 32 && byte !== 9 && byte !== 10 && byte !== 11 && byte !== 12 && byte !== 13;
18
+ };
19
+ const isPrintableAscii = (byte) => {
20
+ return byte >= 32 && byte <= 126;
21
+ };
22
+ const getAsciiClass = (byte) => {
23
+ if (byte === 0) return "byte-null";
24
+ if (WHITESPACE_BYTES.has(byte)) return "byte-whitespace";
25
+ if (isControlByte(byte)) return "byte-control";
26
+ if (isPrintableAscii(byte)) return "byte-printable";
27
+ return "byte-other";
28
+ };
29
+ const createShadeMap = (nullColour, maxColour, stepStart, stepEnd) => {
30
+ const cssSteps = colour_exports.createSteps(stepStart, stepEnd, { steps: 16 }).map(colour_exports.toCssColour);
31
+ return { forByte: (byte) => {
32
+ if (byte === 0) return nullColour;
33
+ if (byte === 255) return maxColour;
34
+ return cssSteps[byte >> 4];
35
+ } };
36
+ };
37
+ //#endregion
38
+ //#region src/hex/data.ts
39
+ const createHexStore = (data) => {
40
+ return {
41
+ data: new Uint8Array(data),
42
+ changeset: /* @__PURE__ */ new Set()
43
+ };
44
+ };
45
+ const readByte = (store, pos) => {
46
+ return store.data[pos] ?? 0;
47
+ };
48
+ const length = (store) => {
49
+ return store.data.length;
50
+ };
51
+ const clamp = (value) => {
52
+ return Math.max(0, Math.min(255, value));
53
+ };
54
+ const writeByte = (store, pos, value) => {
55
+ const clampedValue = clamp(value);
56
+ const before = store.data[pos];
57
+ const diff = new Map([[pos, {
58
+ before,
59
+ after: clampedValue
60
+ }]]);
61
+ store.data[pos] = clampedValue;
62
+ store.changeset.add(pos);
63
+ return diff;
64
+ };
65
+ const writeBytes = (store, entries) => {
66
+ const diff = /* @__PURE__ */ new Map();
67
+ entries.forEach((value, pos) => {
68
+ const clampedValue = clamp(value);
69
+ const before = store.data[pos];
70
+ diff.set(pos, {
71
+ before,
72
+ after: clampedValue
73
+ });
74
+ store.data[pos] = clampedValue;
75
+ store.changeset.add(pos);
76
+ });
77
+ return diff;
78
+ };
79
+ const applyDiff = (store, diff) => {
80
+ const reverse = /* @__PURE__ */ new Map();
81
+ diff.forEach((entry, pos) => {
82
+ const before = store.data[pos];
83
+ reverse.set(pos, {
84
+ before: entry.after,
85
+ after: before
86
+ });
87
+ store.data[pos] = entry.after;
88
+ store.changeset.add(pos);
89
+ });
90
+ return reverse;
91
+ };
92
+ const reverseDiff = (diff) => {
93
+ const reversed = /* @__PURE__ */ new Map();
94
+ diff.forEach((entry, pos) => {
95
+ reversed.set(pos, {
96
+ before: entry.after,
97
+ after: entry.before
98
+ });
99
+ });
100
+ return reversed;
101
+ };
102
+ const getChangeset = (store) => {
103
+ return store.changeset;
104
+ };
105
+ //#endregion
106
+ //#region src/hex/diff.ts
107
+ const createUndoRedoStack = () => {
108
+ return {
109
+ undos: [],
110
+ redos: []
111
+ };
112
+ };
113
+ const push = (stack, diff) => {
114
+ stack.undos.push(diff);
115
+ stack.redos = [];
116
+ };
117
+ const undo = (stack) => {
118
+ const diff = stack.undos.pop();
119
+ if (diff) stack.redos.push(diff);
120
+ return diff;
121
+ };
122
+ const redo = (stack) => {
123
+ const diff = stack.redos.pop();
124
+ if (diff) stack.undos.push(diff);
125
+ return diff;
126
+ };
127
+ //#endregion
128
+ //#region src/hex/selection.ts
129
+ const bytesPerRow = (columns) => columns * 4;
130
+ const min = (a, b) => a < b ? a : b;
131
+ const max = (a, b) => a > b ? a : b;
132
+ const clampPos = (pos, dataLength) => {
133
+ return Math.max(0, Math.min(pos, dataLength - 1));
134
+ };
135
+ const getSelectedPositions = (sel, columns) => {
136
+ if (!sel) return [];
137
+ const bpr = bytesPerRow(columns);
138
+ if (sel.kind === "single") return [sel.pos];
139
+ if (sel.kind === "contiguous") {
140
+ const start = min(sel.start, sel.end);
141
+ const end = max(sel.start, sel.end);
142
+ const positions = [];
143
+ for (let i = start; i <= end; i++) positions.push(i);
144
+ return positions;
145
+ }
146
+ if (sel.kind === "rectangular") {
147
+ const positions = [];
148
+ for (let row = 0; row < sel.height; row++) for (let col = 0; col < sel.width; col++) {
149
+ const y = sel.y + row;
150
+ const x = sel.x + col;
151
+ const pos = y * bpr + x;
152
+ positions.push(pos);
153
+ }
154
+ return positions;
155
+ }
156
+ return [];
157
+ };
158
+ const selectionContains = (sel, pos, columns) => {
159
+ if (!sel) return false;
160
+ const bpr = bytesPerRow(columns);
161
+ if (sel.kind === "single") return pos === sel.pos;
162
+ if (sel.kind === "contiguous") {
163
+ const start = min(sel.start, sel.end);
164
+ const end = max(sel.start, sel.end);
165
+ return pos >= start && pos <= end;
166
+ }
167
+ if (sel.kind === "rectangular") {
168
+ const row = Math.floor(pos / bpr);
169
+ const col = pos % bpr;
170
+ const x = sel.x;
171
+ const y = sel.y;
172
+ const width = sel.width;
173
+ const height = sel.height;
174
+ return row >= y && row < y + height && col >= x && col < x + width;
175
+ }
176
+ return false;
177
+ };
178
+ const getCursorPos = (sel, dir, columns, dataLength) => {
179
+ let currentPos;
180
+ if (!sel) currentPos = 0;
181
+ else if (sel.kind === "single") currentPos = sel.pos;
182
+ else if (sel.kind === "contiguous") currentPos = max(sel.start, sel.end);
183
+ else if (sel.kind === "rectangular") currentPos = sel.y * bytesPerRow(columns) + sel.x + sel.width - 1;
184
+ else currentPos = 0;
185
+ const bpr = bytesPerRow(columns);
186
+ let newPos;
187
+ switch (dir) {
188
+ case "left":
189
+ newPos = currentPos - 1;
190
+ break;
191
+ case "right":
192
+ newPos = currentPos + 1;
193
+ break;
194
+ case "up":
195
+ newPos = currentPos - bpr;
196
+ break;
197
+ case "down":
198
+ newPos = currentPos + bpr;
199
+ break;
200
+ default: newPos = currentPos;
201
+ }
202
+ return clampPos(newPos, dataLength);
203
+ };
204
+ const moveSelection = (sel, dir, columns, dataLength) => {
205
+ return {
206
+ kind: "single",
207
+ pos: getCursorPos(sel, dir, columns, dataLength)
208
+ };
209
+ };
210
+ const extendRectangular = (sel, dir, columns, _dataLength, anchorX = 0, anchorY = 0) => {
211
+ const bpr = bytesPerRow(columns);
212
+ let x;
213
+ let y;
214
+ let width;
215
+ let height;
216
+ if (!sel || sel.kind === "single") {
217
+ const pos = sel?.kind === "single" ? sel.pos : 0;
218
+ x = pos % bpr;
219
+ y = Math.floor(pos / bpr);
220
+ width = 1;
221
+ height = 1;
222
+ } else if (sel.kind === "contiguous") {
223
+ const start = min(sel.start, sel.end);
224
+ const end = max(sel.start, sel.end);
225
+ x = start % bpr;
226
+ y = Math.floor(start / bpr);
227
+ width = end - start + 1;
228
+ height = 1;
229
+ } else if (sel.kind === "rectangular") {
230
+ x = sel.x;
231
+ y = sel.y;
232
+ width = sel.width;
233
+ height = sel.height;
234
+ } else {
235
+ x = 0;
236
+ y = 0;
237
+ width = 1;
238
+ height = 1;
239
+ }
240
+ const effectiveAnchorX = anchorX > 0 || sel?.kind === "rectangular" ? anchorX : x;
241
+ const effectiveAnchorY = anchorY > 0 || sel?.kind === "rectangular" ? anchorY : y;
242
+ switch (dir) {
243
+ case "left":
244
+ if (x > effectiveAnchorX) width -= 1;
245
+ else if (x === effectiveAnchorX && width > 1) {
246
+ x -= 1;
247
+ width += 1;
248
+ } else if (x > 0) {
249
+ x -= 1;
250
+ width += 1;
251
+ }
252
+ break;
253
+ case "right":
254
+ if (x + width < bpr) width += 1;
255
+ break;
256
+ case "up":
257
+ if (y > effectiveAnchorY) height -= 1;
258
+ else if (y === effectiveAnchorY && height > 1) {
259
+ y -= 1;
260
+ height += 1;
261
+ } else if (y > 0) {
262
+ y -= 1;
263
+ height += 1;
264
+ }
265
+ break;
266
+ case "down":
267
+ height += 1;
268
+ break;
269
+ }
270
+ return {
271
+ kind: "rectangular",
272
+ x,
273
+ y,
274
+ width,
275
+ height
276
+ };
277
+ };
278
+ const selectionFromPointerRange = (start, end, mode, columns) => {
279
+ const bpr = bytesPerRow(columns);
280
+ if (mode === "contiguous") return {
281
+ kind: "contiguous",
282
+ start: min(start, end),
283
+ end: max(start, end)
284
+ };
285
+ const startX = start % bpr;
286
+ const startY = Math.floor(start / bpr);
287
+ const endX = end % bpr;
288
+ const endY = Math.floor(end / bpr);
289
+ return {
290
+ kind: "rectangular",
291
+ x: min(startX, endX),
292
+ y: min(startY, endY),
293
+ width: Math.abs(endX - startX) + 1,
294
+ height: Math.abs(endY - startY) + 1
295
+ };
296
+ };
297
+ //#endregion
298
+ //#region src/hex/hex-editor.ts
299
+ let IxfxHexEditorElement = class IxfxHexEditorElement extends LitElement {
300
+ constructor(..._args) {
301
+ super(..._args);
302
+ this.columns = 4;
303
+ this.colourScheme = `ascii`;
304
+ this.showChangeset = true;
305
+ this.hideOffsetCol = false;
306
+ this.hideHexCol = false;
307
+ this.hideTextCol = false;
308
+ this._selection = null;
309
+ this._scrollTop = 0;
310
+ this._editState = null;
311
+ this._containerH = 0;
312
+ this._shadeMap = null;
313
+ this._focusSide = null;
314
+ this._store = createHexStore(new Uint8Array(0));
315
+ this._undoStack = createUndoRedoStack();
316
+ this._copyBuffer = null;
317
+ this._rowHeight = 24;
318
+ this._dragStart = null;
319
+ this._dragAnchor = null;
320
+ this._rectAnchorX = 0;
321
+ this._rectAnchorY = 0;
322
+ this._rectAnchorXFromKeyboard = 0;
323
+ this._rectAnchorYFromKeyboard = 0;
324
+ this._initialSelectionPoint = 0;
325
+ this._currentCursorPoint = 0;
326
+ this._pointerMode = null;
327
+ this._currentDragDiff = null;
328
+ this._shiftClickTarget = null;
329
+ this._onScroll = (e) => {
330
+ const target = e.target;
331
+ this._scrollTop = target.scrollTop;
332
+ this.requestUpdate();
333
+ };
334
+ this._onKeyDown = (e) => {
335
+ if ([
336
+ `ArrowLeft`,
337
+ `ArrowRight`,
338
+ `ArrowUp`,
339
+ `ArrowDown`
340
+ ].includes(e.key)) {
341
+ e.preventDefault();
342
+ e.stopPropagation();
343
+ if (this._editState) this._editState = null;
344
+ const dir = e.key.replace(`Arrow`, ``).toLowerCase();
345
+ const dataLen = length(this._store);
346
+ const bpr = bytesPerRow(this.columns);
347
+ if (e.metaKey || e.ctrlKey) {
348
+ if (!this._selection || this._selection.kind !== `rectangular`) {
349
+ let startPos = 0;
350
+ if (this._selection?.kind === `single`) startPos = this._selection.pos;
351
+ else if (this._selection?.kind === `contiguous`) startPos = Math.min(this._selection.start, this._selection.end);
352
+ this._rectAnchorXFromKeyboard = startPos % bpr;
353
+ this._rectAnchorYFromKeyboard = Math.floor(startPos / bpr);
354
+ this._selection = {
355
+ kind: `rectangular`,
356
+ x: this._rectAnchorXFromKeyboard,
357
+ y: this._rectAnchorYFromKeyboard,
358
+ width: 1,
359
+ height: 1
360
+ };
361
+ }
362
+ this._selection = extendRectangular(this._selection, dir, this.columns, dataLen, this._rectAnchorXFromKeyboard, this._rectAnchorYFromKeyboard);
363
+ } else if (e.shiftKey) {
364
+ if (!this._selection) {
365
+ this._initialSelectionPoint = 0;
366
+ this._currentCursorPoint = 0;
367
+ } else if (this._selection.kind === `single`) {
368
+ this._initialSelectionPoint = this._selection.pos;
369
+ this._currentCursorPoint = this._selection.pos;
370
+ } else if (this._selection.kind === `rectangular`) {
371
+ const cursorPos = this._selection.y * bpr + this._selection.x;
372
+ this._initialSelectionPoint = cursorPos;
373
+ this._currentCursorPoint = cursorPos;
374
+ }
375
+ const newPos = getCursorPos(this._selection, dir, this.columns, dataLen);
376
+ const start = Math.min(this._initialSelectionPoint, newPos);
377
+ const end = Math.max(this._initialSelectionPoint, newPos);
378
+ this._currentCursorPoint = newPos;
379
+ this._selection = {
380
+ kind: `contiguous`,
381
+ start,
382
+ end
383
+ };
384
+ } else {
385
+ this._selection = moveSelection(this._selection, dir, this.columns, dataLen);
386
+ const pos = getCursorPos(this._selection, dir, this.columns, dataLen);
387
+ this._initialSelectionPoint = pos;
388
+ this._currentCursorPoint = pos;
389
+ }
390
+ this._dispatchSelectEvent();
391
+ this.requestUpdate();
392
+ return;
393
+ }
394
+ if (e.key === `Tab`) {
395
+ e.preventDefault();
396
+ e.stopPropagation();
397
+ if (this._editState) this._advanceCursor();
398
+ else {
399
+ const dataLen = length(this._store);
400
+ this._selection = moveSelection(this._selection, `right`, this.columns, dataLen);
401
+ this._dispatchSelectEvent();
402
+ }
403
+ this.requestUpdate();
404
+ return;
405
+ }
406
+ if (e.key === `Escape`) {
407
+ e.preventDefault();
408
+ e.stopPropagation();
409
+ if (this._editState) this._editState = null;
410
+ else if (this._selection && this._selection.kind !== `single`) {
411
+ const sel = this._selection;
412
+ let firstPos = 0;
413
+ if (sel.kind === `contiguous`) {
414
+ const c = sel;
415
+ firstPos = Math.min(c.start, c.end);
416
+ }
417
+ if (sel.kind === `rectangular`) {
418
+ const r = sel;
419
+ firstPos = r.y * bytesPerRow(this.columns) + r.x;
420
+ }
421
+ this._selection = {
422
+ kind: `single`,
423
+ pos: firstPos
424
+ };
425
+ this._dispatchSelectEvent();
426
+ }
427
+ this.requestUpdate();
428
+ return;
429
+ }
430
+ if (this._editState) {
431
+ e.stopPropagation();
432
+ if (e.key === `Backspace`) {
433
+ this._handleBackspace();
434
+ return;
435
+ }
436
+ if (e.key === `Enter`) {
437
+ if (this._editState.side === `hex` && this._editState.partial.startsWith(`.`)) this._commitDecimalValue();
438
+ return;
439
+ }
440
+ if (e.key.length === 1) this._handleValueEntry(e.key);
441
+ return;
442
+ }
443
+ if (this._selection && this._selection.kind === `single` && e.key.length === 1) {
444
+ e.preventDefault();
445
+ e.stopPropagation();
446
+ const pos = this._selection.pos;
447
+ const side = this._focusSide ?? `hex`;
448
+ this._editState = {
449
+ pos,
450
+ side,
451
+ partial: ``
452
+ };
453
+ this._handleValueEntry(e.key);
454
+ }
455
+ };
456
+ }
457
+ static {
458
+ this.styles = css`
459
+ :host {
460
+ --hex-row-height: 24px;
461
+ --hex-offset-width: 8ch;
462
+ --hex-font: monospace;
463
+ --hex-font-size: 0.85rem;
464
+ --hex-changed-weight: bold;
465
+
466
+ --ascii-null: #808080;
467
+ --ascii-printable: #4caf50;
468
+ --ascii-whitespace: #ffffff;
469
+ --ascii-control: #f48fb1;
470
+ --ascii-other: #ffeb3b;
471
+
472
+ --shade-null: #808080;
473
+ --shade-max: #ffffff;
474
+ --shade-step-start: #ff0000;
475
+ --shade-step-end: #0000ff;
476
+
477
+ display: block;
478
+ font-family: var(--hex-font);
479
+ font-size: var(--hex-font-size);
480
+ }
481
+
482
+ .hex-editor {
483
+ display: flex;
484
+ flex-direction: column;
485
+ height: 300px;
486
+ overflow: hidden;
487
+ background: #1e1e1e;
488
+ color: #e0e0e0;
489
+ border: 1px solid #333;
490
+ border-radius: 4px;
491
+ }
492
+
493
+ .scroll-container {
494
+ flex: 1;
495
+ overflow-y: auto;
496
+ position: relative;
497
+ }
498
+
499
+ .header {
500
+ display: flex;
501
+ background: #2d2d2d;
502
+ font-weight: bold;
503
+ border-bottom: 1px solid #444;
504
+ height: var(--hex-row-height);
505
+ flex-shrink: 0;
506
+ align-items: center;
507
+ }
508
+
509
+ .row {
510
+ display: flex;
511
+ height: var(--hex-row-height);
512
+ align-items: center;
513
+ }
514
+
515
+ .row:hover {
516
+ background: rgba(255, 255, 255, 0.05);
517
+ }
518
+
519
+ .offset-cell {
520
+ width: var(--hex-offset-width);
521
+ padding: 0 8px;
522
+ text-align: right;
523
+ color: #888;
524
+ flex-shrink: 0;
525
+ box-sizing: border-box;
526
+ }
527
+
528
+ .col-group {
529
+ display: inline-flex;
530
+ gap: 4px;
531
+ margin-right: 16px;
532
+ }
533
+
534
+ .col-header {
535
+ width: calc(8ch + 28px);
536
+ padding: 0 8px;
537
+ color: #555;
538
+ text-align: right;
539
+ flex-shrink: 0;
540
+ box-sizing: border-box;
541
+ }
542
+
543
+ .col-header.active {
544
+ color: #aaa;
545
+ }
546
+
547
+ .text-header {
548
+ padding: 4px 8px;
549
+ color: #555;
550
+ width: calc(var(--columns, 4) * 4 * 1ch);
551
+ box-sizing: border-box;
552
+ flex-shrink: 0;
553
+ }
554
+
555
+ .text-header.active {
556
+ color: #aaa;
557
+ }
558
+
559
+ .hex-cell, .text-char {
560
+ display: inline-block;
561
+ width: 2ch;
562
+ text-align: center;
563
+ cursor: pointer;
564
+ user-select: none;
565
+ padding: 2px 0;
566
+ }
567
+
568
+ .hex-cell.selected, .text-char.selected {
569
+ background: rgba(100, 149, 237, 0.4);
570
+ }
571
+
572
+ .hex-cell.changed, .text-char.changed {
573
+ font-weight: var(--hex-changed-weight);
574
+ }
575
+
576
+ .hex-cell.editing {
577
+ background: rgba(255, 215, 0, 0.3);
578
+ }
579
+
580
+
581
+ .text-area {
582
+ display: inline-flex;
583
+ gap: 0;
584
+ }
585
+
586
+ .text-char {
587
+ width: 1ch;
588
+ text-align: left;
589
+ }
590
+
591
+ .byte-null { color: var(--ascii-null); }
592
+ .byte-printable { color: var(--ascii-printable); }
593
+ .byte-whitespace { color: var(--ascii-whitespace); }
594
+ .byte-control { color: var(--ascii-control); }
595
+ .byte-other { color: var(--ascii-other); }
596
+ `;
597
+ }
598
+ setData(data) {
599
+ this._store = createHexStore(data);
600
+ this._undoStack = createUndoRedoStack();
601
+ this._selection = null;
602
+ this._editState = null;
603
+ this._scrollTop = 0;
604
+ this.requestUpdate();
605
+ }
606
+ undo() {
607
+ const diff = undo(this._undoStack);
608
+ if (!diff) return;
609
+ const reverse = reverseDiff(diff);
610
+ applyDiff(this._store, reverse);
611
+ this.requestUpdate();
612
+ }
613
+ redo() {
614
+ const diff = redo(this._undoStack);
615
+ if (!diff) return;
616
+ applyDiff(this._store, diff);
617
+ this.requestUpdate();
618
+ }
619
+ recomputeColours() {
620
+ const style = getComputedStyle(this);
621
+ const nullC = style.getPropertyValue(`--shade-null`).trim() || `#808080`;
622
+ const maxC = style.getPropertyValue(`--shade-max`).trim() || `#ffffff`;
623
+ const stepStart = style.getPropertyValue(`--shade-step-start`).trim() || `#ff0000`;
624
+ const stepEnd = style.getPropertyValue(`--shade-step-end`).trim() || `#0000ff`;
625
+ this._shadeMap = createShadeMap(nullC, maxC, stepStart, stepEnd);
626
+ this.requestUpdate();
627
+ }
628
+ *selectedBytes() {
629
+ const positions = getSelectedPositions(this._selection, this.columns);
630
+ for (let i = 0; i < positions.length; i++) {
631
+ const pos = positions[i];
632
+ yield {
633
+ selection_index: i,
634
+ array_index: pos,
635
+ value: readByte(this._store, pos)
636
+ };
637
+ }
638
+ }
639
+ containsPosition(pos) {
640
+ return selectionContains(this._selection, pos, this.columns);
641
+ }
642
+ selectSingle(position) {
643
+ this._selection = {
644
+ kind: `single`,
645
+ pos: position
646
+ };
647
+ this._dispatchSelectEvent();
648
+ this.requestUpdate();
649
+ }
650
+ selectContiguous(start, end) {
651
+ this._selection = {
652
+ kind: `contiguous`,
653
+ start,
654
+ end
655
+ };
656
+ this._dispatchSelectEvent();
657
+ this.requestUpdate();
658
+ }
659
+ selectRectangular(x, y, width, height) {
660
+ this._selection = {
661
+ kind: `rectangular`,
662
+ x,
663
+ y,
664
+ width,
665
+ height
666
+ };
667
+ this._dispatchSelectEvent();
668
+ this.requestUpdate();
669
+ }
670
+ clearSelection() {
671
+ this._selection = null;
672
+ this._dispatchSelectEvent();
673
+ this.requestUpdate();
674
+ }
675
+ getSelection() {
676
+ return this._selection;
677
+ }
678
+ firstUpdated() {
679
+ const container = this.shadowRoot?.querySelector(`.scroll-container`);
680
+ if (container) {
681
+ new ResizeObserver((entries) => {
682
+ this._containerH = entries[0].contentRect.height;
683
+ this.requestUpdate();
684
+ }).observe(container);
685
+ this._containerH = container.clientHeight;
686
+ }
687
+ this.recomputeColours();
688
+ }
689
+ _onPointerDown(pos, side, e) {
690
+ e.preventDefault();
691
+ if (e.button !== 0) return;
692
+ (this.shadowRoot?.querySelector(`.hex-editor`))?.focus();
693
+ this._focusSide = side;
694
+ e.target.setPointerCapture(e.pointerId);
695
+ const bpr = bytesPerRow(this.columns);
696
+ const startX = pos % bpr;
697
+ const startY = Math.floor(pos / bpr);
698
+ if (e.metaKey || e.ctrlKey) {
699
+ this._pointerMode = `select-rect`;
700
+ this._dragAnchor = pos;
701
+ this._rectAnchorX = startX;
702
+ this._rectAnchorY = startY;
703
+ } else if (e.shiftKey) {
704
+ this._pointerMode = `select-cont`;
705
+ if (!this._selection || this._selection.kind !== `single`) this._dragAnchor = pos;
706
+ else {
707
+ this._dragAnchor = this._selection.pos;
708
+ this._shiftClickTarget = pos;
709
+ }
710
+ } else {
711
+ this._pointerMode = `pending`;
712
+ this._dragStart = {
713
+ pos,
714
+ startValue: readByte(this._store, pos),
715
+ startY: e.clientY,
716
+ startX: e.clientX
717
+ };
718
+ this._dragAnchor = pos;
719
+ this._currentDragDiff = null;
720
+ }
721
+ }
722
+ _onPointerMove(pos, _side, e) {
723
+ if (!this._dragStart) return;
724
+ const dy = Math.abs(e.clientY - this._dragStart.startY);
725
+ const dx = Math.abs(e.clientX - this._dragStart.startX);
726
+ if (this._pointerMode === `pending` && dy > 4 && dy > dx) {
727
+ this._pointerMode = `drag-value`;
728
+ this._editState = null;
729
+ }
730
+ if (this._pointerMode === `drag-value`) {
731
+ const delta = Math.round((e.clientY - this._dragStart.startY) / 4);
732
+ const newValue = Math.max(0, Math.min(255, this._dragStart.startValue - delta));
733
+ this._currentDragDiff = writeByte(this._store, pos, newValue);
734
+ this.requestUpdate();
735
+ }
736
+ if (this._pointerMode === `select-cont`) {
737
+ if (this._dragAnchor !== null) {
738
+ const mode = `contiguous`;
739
+ this._selection = selectionFromPointerRange(this._dragAnchor, pos, mode, this.columns);
740
+ this._dispatchSelectEvent();
741
+ }
742
+ }
743
+ if (this._pointerMode === `select-rect`) {
744
+ const bpr = bytesPerRow(this.columns);
745
+ const currentX = pos % bpr;
746
+ const currentY = Math.floor(pos / bpr);
747
+ const x = Math.min(this._rectAnchorX, currentX);
748
+ const y = Math.min(this._rectAnchorY, currentY);
749
+ const width = Math.abs(currentX - this._rectAnchorX) + 1;
750
+ const height = Math.abs(currentY - this._rectAnchorY) + 1;
751
+ this._selection = {
752
+ kind: `rectangular`,
753
+ x,
754
+ y,
755
+ width,
756
+ height
757
+ };
758
+ this._dispatchSelectEvent();
759
+ }
760
+ }
761
+ _onPointerUp(pos, side, e) {
762
+ e.target.releasePointerCapture(e.pointerId);
763
+ if (this._pointerMode === `pending`) {
764
+ this._selection = {
765
+ kind: `single`,
766
+ pos
767
+ };
768
+ this._initialSelectionPoint = pos;
769
+ this._currentCursorPoint = pos;
770
+ this._editState = {
771
+ pos,
772
+ side,
773
+ partial: ``
774
+ };
775
+ this._dispatchSelectEvent();
776
+ }
777
+ if (this._pointerMode === `select-cont`) {
778
+ if (this._dragAnchor !== null && this._shiftClickTarget !== null) {
779
+ this._selection = {
780
+ kind: `contiguous`,
781
+ start: this._dragAnchor,
782
+ end: this._shiftClickTarget
783
+ };
784
+ this._initialSelectionPoint = Math.min(this._dragAnchor, this._shiftClickTarget);
785
+ this._currentCursorPoint = Math.max(this._dragAnchor, this._shiftClickTarget);
786
+ this._dispatchSelectEvent();
787
+ } else if (this._dragAnchor !== null) {
788
+ const mode = `contiguous`;
789
+ this._selection = selectionFromPointerRange(this._dragAnchor, pos, mode, this.columns);
790
+ this._initialSelectionPoint = this._dragAnchor;
791
+ this._currentCursorPoint = pos;
792
+ this._dispatchSelectEvent();
793
+ }
794
+ }
795
+ if (this._pointerMode === `select-rect`) {
796
+ const bpr = bytesPerRow(this.columns);
797
+ const currentX = pos % bpr;
798
+ const currentY = Math.floor(pos / bpr);
799
+ const x = Math.min(this._rectAnchorX, currentX);
800
+ const y = Math.min(this._rectAnchorY, currentY);
801
+ const width = Math.abs(currentX - this._rectAnchorX) + 1;
802
+ const height = Math.abs(currentY - this._rectAnchorY) + 1;
803
+ this._selection = {
804
+ kind: `rectangular`,
805
+ x,
806
+ y,
807
+ width,
808
+ height
809
+ };
810
+ this._dispatchSelectEvent();
811
+ }
812
+ if (this._pointerMode === `drag-value` && this._currentDragDiff) {
813
+ push(this._undoStack, this._currentDragDiff);
814
+ this._dispatchChangeEvent(this._currentDragDiff);
815
+ }
816
+ this._pointerMode = null;
817
+ this._dragStart = null;
818
+ this._dragAnchor = null;
819
+ this._currentDragDiff = null;
820
+ this._shiftClickTarget = null;
821
+ }
822
+ _handleBackspace() {
823
+ if (!this._editState) return;
824
+ this._editState = {
825
+ ...this._editState,
826
+ partial: ``
827
+ };
828
+ this.requestUpdate();
829
+ }
830
+ _handleValueEntry(key) {
831
+ if (!this._editState) return;
832
+ const { pos, side, partial } = this._editState;
833
+ if (side === `text`) {
834
+ if (key.length === 1 && key.charCodeAt(0) >= 32 && key.charCodeAt(0) <= 126) {
835
+ const value = key.charCodeAt(0);
836
+ const diff = writeByte(this._store, pos, value);
837
+ push(this._undoStack, diff);
838
+ this._dispatchChangeEvent(diff);
839
+ this._advanceCursor();
840
+ }
841
+ return;
842
+ }
843
+ if (partial === `` && key === `.`) {
844
+ this._editState = {
845
+ ...this._editState,
846
+ partial: `.`
847
+ };
848
+ this.requestUpdate();
849
+ return;
850
+ }
851
+ if (partial.startsWith(`.`)) {
852
+ if (/\d/.test(key)) {
853
+ let newPartial = partial + key;
854
+ if (Number(newPartial.slice(1)) > 255) newPartial = `.255`;
855
+ this._editState = {
856
+ ...this._editState,
857
+ partial: newPartial
858
+ };
859
+ this.requestUpdate();
860
+ }
861
+ return;
862
+ }
863
+ if (`0123456789ABCDEFabcdef`.includes(key)) {
864
+ const newPartial = (partial + key.toUpperCase()).slice(-2);
865
+ this._editState = {
866
+ ...this._editState,
867
+ partial: newPartial
868
+ };
869
+ this.requestUpdate();
870
+ if (newPartial.length === 2) {
871
+ const value = Number.parseInt(newPartial, 16);
872
+ const diff = writeByte(this._store, pos, value);
873
+ push(this._undoStack, diff);
874
+ this._dispatchChangeEvent(diff);
875
+ this._advanceCursor();
876
+ }
877
+ } else if (partial !== ``) {
878
+ this._editState = {
879
+ ...this._editState,
880
+ partial: ``
881
+ };
882
+ this.requestUpdate();
883
+ }
884
+ }
885
+ _commitDecimalValue() {
886
+ if (!this._editState) return;
887
+ const value = Number.parseInt(this._editState.partial.slice(1), 10);
888
+ if (!isNaN(value)) {
889
+ const diff = writeByte(this._store, this._editState.pos, value);
890
+ push(this._undoStack, diff);
891
+ this._dispatchChangeEvent(diff);
892
+ this._advanceCursor();
893
+ }
894
+ }
895
+ _advanceCursor() {
896
+ if (!this._editState) return;
897
+ const dataLen = length(this._store);
898
+ const newPos = clampPos(this._editState.pos + 1, dataLen);
899
+ this._editState = {
900
+ pos: newPos,
901
+ side: this._editState.side,
902
+ partial: ``
903
+ };
904
+ this._selection = {
905
+ kind: `single`,
906
+ pos: newPos
907
+ };
908
+ this.requestUpdate();
909
+ }
910
+ _dispatchChangeEvent(diff) {
911
+ this.dispatchEvent(new CustomEvent(`hex-change`, {
912
+ detail: { diff },
913
+ bubbles: true,
914
+ composed: true
915
+ }));
916
+ }
917
+ _dispatchSelectEvent() {
918
+ const sel = this._selection;
919
+ let detail;
920
+ if (!sel) detail = { type: `none` };
921
+ else if (sel.kind === `single`) detail = {
922
+ type: `single`,
923
+ position: sel.pos
924
+ };
925
+ else if (sel.kind === `contiguous`) detail = {
926
+ type: `contiguous`,
927
+ start: sel.start,
928
+ end: sel.end
929
+ };
930
+ else if (sel.kind === `rectangular`) detail = {
931
+ type: `rectangular`,
932
+ x: sel.x,
933
+ y: sel.y,
934
+ width: sel.width,
935
+ height: sel.height
936
+ };
937
+ else detail = { type: `none` };
938
+ this.dispatchEvent(new CustomEvent(`select`, {
939
+ detail,
940
+ bubbles: true,
941
+ composed: true
942
+ }));
943
+ }
944
+ _copy() {
945
+ const positions = getSelectedPositions(this._selection, this.columns);
946
+ if (positions.length === 0) return;
947
+ const bytes = positions.map((p) => readByte(this._store, p));
948
+ this._copyBuffer = new Uint8Array(bytes);
949
+ const hexStr = bytes.map((b) => b.toString(16).padStart(2, `0`)).join(` `);
950
+ navigator.clipboard?.writeText(hexStr).catch(() => {});
951
+ }
952
+ async _paste() {
953
+ let bytes = null;
954
+ try {
955
+ const text = await navigator.clipboard?.readText();
956
+ if (text) bytes = this._parseHexString(text);
957
+ } catch {}
958
+ if (!bytes && this._copyBuffer) bytes = Array.from(this._copyBuffer);
959
+ if (!bytes || bytes.length === 0) return;
960
+ if (!this._selection) return;
961
+ const entries = /* @__PURE__ */ new Map();
962
+ if (this._selection.kind === `single`) {
963
+ const startPos = this._selection.pos;
964
+ const dataLen = length(this._store);
965
+ for (let i = 0; i < bytes.length && startPos + i < dataLen; i++) entries.set(startPos + i, bytes[i]);
966
+ } else if (this._selection.kind === `contiguous`) {
967
+ const startPos = Math.min(this._selection.start, this._selection.end);
968
+ const available = Math.max(this._selection.start, this._selection.end) - startPos + 1;
969
+ for (let i = 0; i < Math.min(bytes.length, available); i++) entries.set(startPos + i, bytes[i]);
970
+ } else if (this._selection.kind === `rectangular`) {
971
+ const { x, y, width, height } = this._selection;
972
+ const bpr = bytesPerRow(this.columns);
973
+ let byteIdx = 0;
974
+ for (let row = 0; row < height && byteIdx < bytes.length; row++) for (let col = 0; col < width && byteIdx < bytes.length; col++) {
975
+ const pos = (y + row) * bpr + x + col;
976
+ entries.set(pos, bytes[byteIdx++]);
977
+ }
978
+ }
979
+ if (entries.size > 0) {
980
+ const diff = writeBytes(this._store, entries);
981
+ push(this._undoStack, diff);
982
+ this._dispatchChangeEvent(diff);
983
+ this.requestUpdate();
984
+ }
985
+ }
986
+ _parseHexString(text) {
987
+ const bytes = [];
988
+ const cleaned = text.replace(/[^0-9A-F]/gi, ` `).trim();
989
+ if (!cleaned) return bytes;
990
+ const parts = cleaned.split(/\s+/);
991
+ for (const part of parts) if (part.length === 1) bytes.push(Number.parseInt(part + part, 16));
992
+ else if (part.length === 2) bytes.push(Number.parseInt(part, 16));
993
+ return bytes;
994
+ }
995
+ _getColHeaders() {
996
+ const headers = [];
997
+ for (let i = 0; i < this.columns; i++) {
998
+ const offset = i * 4;
999
+ headers.push(`+${offset.toString(16).toUpperCase()}`);
1000
+ }
1001
+ return headers;
1002
+ }
1003
+ _isRowShaded(pos) {
1004
+ const sel = this._selection;
1005
+ if (!sel || sel.kind !== `single`) return true;
1006
+ const bpr = bytesPerRow(this.columns);
1007
+ return Math.floor(pos / bpr) === Math.floor(sel.pos / bpr);
1008
+ }
1009
+ _isHexShaded(pos) {
1010
+ return this._isRowShaded(pos);
1011
+ }
1012
+ _isTextShaded(pos) {
1013
+ return this._isRowShaded(pos);
1014
+ }
1015
+ render() {
1016
+ const dataLen = length(this._store);
1017
+ const bpr = bytesPerRow(this.columns);
1018
+ const totalRows = Math.ceil(dataLen / bpr);
1019
+ const containerH = this._containerH > 0 ? this._containerH : 280;
1020
+ const startRow = Math.floor(this._scrollTop / this._rowHeight);
1021
+ const endRow = Math.min(startRow + Math.ceil(containerH / this._rowHeight) + 2, totalRows);
1022
+ const topSpacerHeight = startRow * this._rowHeight;
1023
+ const botSpacerHeight = (totalRows - endRow) * this._rowHeight;
1024
+ const changeset = getChangeset(this._store);
1025
+ const colHeaders = this._getColHeaders();
1026
+ const hexActive = this._focusSide === `hex` || this._focusSide === null;
1027
+ const textActive = this._focusSide === `text`;
1028
+ return html`
1029
+ <div class="hex-editor" tabindex="0" @keydown=${this._onKeyDown} @pointerleave=${() => {}}>
1030
+ <div class="header">
1031
+ ${this.hideOffsetCol ? null : html`<span class="offset-cell">Offset</span>`}
1032
+ ${this.hideHexCol ? null : repeat(colHeaders, (h) => html`<span class="col-header ${hexActive ? `active` : ``}">${h}</span>`)}
1033
+ ${this.hideTextCol ? null : html`<span class="text-header ${textActive ? `active` : ``}">Text</span>`}
1034
+ </div>
1035
+ <div class="scroll-container" @scroll=${this._onScroll}>
1036
+ <div style="height: ${topSpacerHeight}px"></div>
1037
+ ${repeat(Array.from({ length: endRow - startRow }, (_, i) => startRow + i), (rowIndex) => rowIndex, (rowIndex) => this._renderRow(rowIndex, changeset))}
1038
+ <div style="height: ${botSpacerHeight}px"></div>
1039
+ </div>
1040
+ </div>
1041
+ `;
1042
+ }
1043
+ _renderRow(rowIndex, changeset) {
1044
+ const bpr = bytesPerRow(this.columns);
1045
+ const offset = rowIndex * bpr;
1046
+ return html`
1047
+ <div class="row" data-row=${rowIndex}>
1048
+ ${this.hideOffsetCol ? null : html`<span class="offset-cell">${offset.toString(16).toUpperCase().padStart(6, `0`)}</span>`}
1049
+ ${this.hideHexCol ? null : repeat(Array.from({ length: this.columns }, (_, i) => i), (colIndex) => colIndex, (colIndex) => this._renderColumn(rowIndex, colIndex, changeset))}
1050
+ ${this.hideTextCol ? null : html`
1051
+ <span class="text-area">
1052
+ ${repeat(Array.from({ length: bpr }, (_, i) => i), (i) => i, (i) => this._renderTextChar(offset + i, changeset))}
1053
+ </span>
1054
+ `}
1055
+ </div>
1056
+ `;
1057
+ }
1058
+ _renderColumn(rowIndex, colIndex, changeset) {
1059
+ const basePos = rowIndex * bytesPerRow(this.columns) + colIndex * 4;
1060
+ return html`
1061
+ <span class="col-group">
1062
+ ${[
1063
+ 0,
1064
+ 1,
1065
+ 2,
1066
+ 3
1067
+ ].map((b) => this._renderHexCell(basePos + b, changeset))}
1068
+ </span>
1069
+ `;
1070
+ }
1071
+ _renderHexCell(pos, changeset) {
1072
+ if (pos >= length(this._store)) return html`<span class="hex-cell"></span>`;
1073
+ const byte = readByte(this._store, pos);
1074
+ const hexStr = byte.toString(16).toUpperCase().padStart(2, `0`);
1075
+ const isSelected = selectionContains(this._selection, pos, this.columns);
1076
+ const isChanged = this.showChangeset && changeset.has(pos);
1077
+ const isEditing = this._editState?.pos === pos;
1078
+ const classes = [`hex-cell`];
1079
+ if (isSelected) classes.push(`selected`);
1080
+ if (isChanged) classes.push(`changed`);
1081
+ if (isEditing) classes.push(`editing`);
1082
+ if (this._isHexShaded(pos)) classes.push(`shaded`);
1083
+ let displayText = hexStr;
1084
+ let colourStyle;
1085
+ if (isEditing && this._editState) displayText = this._editState.partial === `` ? hexStr : `${this._editState.partial}_`;
1086
+ if (this.colourScheme === `shade` && this._shadeMap) colourStyle = { color: this._shadeMap.forByte(byte) };
1087
+ else if (this.colourScheme === `ascii`) classes.push(getAsciiClass(byte));
1088
+ return html`
1089
+ <span
1090
+ class=${classes.join(` `)}
1091
+ style=${styleMap(colourStyle || {})}
1092
+ @pointerdown=${(e) => this._onPointerDown(pos, `hex`, e)}
1093
+ @pointerup=${(e) => this._onPointerUp(pos, `hex`, e)}
1094
+ @pointermove=${(e) => this._onPointerMove(pos, `hex`, e)}
1095
+ >${displayText}</span>
1096
+ `;
1097
+ }
1098
+ _renderTextChar(pos, changeset) {
1099
+ if (pos >= length(this._store)) return html`<span class="text-char"></span>`;
1100
+ const byte = readByte(this._store, pos);
1101
+ const char = byte >= 32 && byte <= 126 ? String.fromCharCode(byte) : `.`;
1102
+ const isSelected = selectionContains(this._selection, pos, this.columns);
1103
+ const isChanged = this.showChangeset && changeset.has(pos);
1104
+ const classes = [`text-char`];
1105
+ if (isSelected) classes.push(`selected`);
1106
+ if (isChanged) classes.push(`changed`);
1107
+ if (this._isTextShaded(pos)) classes.push(`shaded`);
1108
+ let colourStyle;
1109
+ if (this.colourScheme === `shade` && this._shadeMap) colourStyle = { color: this._shadeMap.forByte(byte) };
1110
+ else if (this.colourScheme === `ascii`) classes.push(getAsciiClass(byte));
1111
+ return html`
1112
+ <span
1113
+ class=${classes.join(` `)}
1114
+ style=${styleMap(colourStyle || {})}
1115
+ @pointerdown=${(e) => this._onPointerDown(pos, `text`, e)}
1116
+ @pointerup=${(e) => this._onPointerUp(pos, `text`, e)}
1117
+ @pointermove=${(e) => this._onPointerMove(pos, `text`, e)}
1118
+ >${char}</span>
1119
+ `;
1120
+ }
1121
+ };
1122
+ __decorate([property({ type: Number })], IxfxHexEditorElement.prototype, "columns", void 0);
1123
+ __decorate([property({ type: String })], IxfxHexEditorElement.prototype, "colourScheme", void 0);
1124
+ __decorate([property({ type: Boolean })], IxfxHexEditorElement.prototype, "showChangeset", void 0);
1125
+ __decorate([property({
1126
+ type: Boolean,
1127
+ attribute: `hide-offset-col`
1128
+ })], IxfxHexEditorElement.prototype, "hideOffsetCol", void 0);
1129
+ __decorate([property({
1130
+ type: Boolean,
1131
+ attribute: `hide-hex-col`
1132
+ })], IxfxHexEditorElement.prototype, "hideHexCol", void 0);
1133
+ __decorate([property({
1134
+ type: Boolean,
1135
+ attribute: `hide-text-col`
1136
+ })], IxfxHexEditorElement.prototype, "hideTextCol", void 0);
1137
+ __decorate([state()], IxfxHexEditorElement.prototype, "_selection", void 0);
1138
+ __decorate([state()], IxfxHexEditorElement.prototype, "_scrollTop", void 0);
1139
+ __decorate([state()], IxfxHexEditorElement.prototype, "_editState", void 0);
1140
+ __decorate([state()], IxfxHexEditorElement.prototype, "_containerH", void 0);
1141
+ __decorate([state()], IxfxHexEditorElement.prototype, "_shadeMap", void 0);
1142
+ __decorate([state()], IxfxHexEditorElement.prototype, "_focusSide", void 0);
1143
+ IxfxHexEditorElement = __decorate([safeCustomElement(`ixfx-hex-editor`)], IxfxHexEditorElement);
1144
+ //#endregion
1145
+ export { IxfxHexEditorElement as t };
1146
+
1147
+ //# sourceMappingURL=hex-editor-gH3mteMr.js.map