@ixfx/components 0.2.4 → 0.2.5

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 (717) hide show
  1. package/bundle/index.d.ts +130 -130
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +2196 -2196
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +97 -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-DgKUzE5o.js} +49 -3
  10. package/dist/button-DgKUzE5o.js.map +1 -0
  11. package/dist/button.d.ts +21 -0
  12. package/dist/button.d.ts.map +1 -0
  13. package/dist/button.js +3 -0
  14. package/dist/checkbox.d.ts +27 -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-Bw-AZoWx.js +922 -0
  22. package/dist/colour-picker-Bw-AZoWx.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 +92 -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 +23 -18
  30. package/dist/data-display.d.ts.map +1 -1
  31. package/dist/data-display.js +82 -108
  32. package/dist/data-display.js.map +1 -1
  33. package/dist/decorate-BZbkqIhA.js +9 -0
  34. package/dist/defaults-FEZaGiYZ.js +38 -0
  35. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  36. package/dist/dist-By5URG0Y.js +1290 -0
  37. package/dist/dist-By5URG0Y.js.map +1 -0
  38. package/dist/dist-D7kJgnSE.js +1039 -0
  39. package/dist/dist-D7kJgnSE.js.map +1 -0
  40. package/dist/editable-label.d.ts +71 -0
  41. package/dist/editable-label.d.ts.map +1 -0
  42. package/dist/editable-label.js +279 -0
  43. package/dist/editable-label.js.map +1 -0
  44. package/dist/hex-editor-Gib1Grg2.d.ts +131 -0
  45. package/dist/hex-editor-Gib1Grg2.d.ts.map +1 -0
  46. package/dist/hex-editor-Wd6ZtZA2.js +1147 -0
  47. package/dist/hex-editor-Wd6ZtZA2.js.map +1 -0
  48. package/dist/hex.d.ts +2 -0
  49. package/dist/hex.js +2 -0
  50. package/dist/highlight-CAjwQ4GE.js +50 -0
  51. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  52. package/dist/icon-BR5aTIiP.js +100 -0
  53. package/dist/icon-BR5aTIiP.js.map +1 -0
  54. package/dist/icon-DQKdfR7U.d.ts +36 -0
  55. package/dist/icon-DQKdfR7U.d.ts.map +1 -0
  56. package/dist/icons.d.ts +3 -0
  57. package/dist/icons.js +9 -0
  58. package/dist/icons.js.map +1 -0
  59. package/dist/incr-search-BjCNClnC.js +311 -0
  60. package/dist/incr-search-BjCNClnC.js.map +1 -0
  61. package/dist/incr-search.d.ts +2 -0
  62. package/dist/incr-search.js +3 -0
  63. package/dist/index-B1hNR7Z9.d.ts +36 -0
  64. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  65. package/dist/index-C5dK8RZa.d.ts +23 -0
  66. package/dist/index-C5dK8RZa.d.ts.map +1 -0
  67. package/dist/index-C9iBN908.d.ts +160 -0
  68. package/dist/index-C9iBN908.d.ts.map +1 -0
  69. package/dist/index-CPVcTTXo.d.ts +396 -0
  70. package/dist/index-CPVcTTXo.d.ts.map +1 -0
  71. package/dist/index-CQxanqXF.d.ts +183 -0
  72. package/dist/index-CQxanqXF.d.ts.map +1 -0
  73. package/dist/index-CpbBI3n7.d.ts +1239 -0
  74. package/dist/index-CpbBI3n7.d.ts.map +1 -0
  75. package/dist/index.d.ts +422 -53
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +5729 -54
  78. package/dist/index.js.map +1 -1
  79. package/dist/interaction-CQDQJf2Q.js +1 -0
  80. package/dist/keyboard-De_vOHLg.js +20 -0
  81. package/dist/keyboard-De_vOHLg.js.map +1 -0
  82. package/dist/labelled-input-base-DS6-6C0r.js +155 -0
  83. package/dist/labelled-input-base-DS6-6C0r.js.map +1 -0
  84. package/dist/labelled-input-base-DnRh4reU.d.ts +43 -0
  85. package/dist/labelled-input-base-DnRh4reU.d.ts.map +1 -0
  86. package/dist/labelled-radial-input.d.ts +34 -0
  87. package/dist/labelled-radial-input.d.ts.map +1 -0
  88. package/dist/labelled-radial-input.js +188 -0
  89. package/dist/labelled-radial-input.js.map +1 -0
  90. package/dist/labelled-range-input.d.ts +2 -0
  91. package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
  92. package/dist/labelled-range-input.js.map +1 -0
  93. package/dist/led.d.ts +21 -16
  94. package/dist/led.d.ts.map +1 -1
  95. package/dist/led.js +70 -78
  96. package/dist/led.js.map +1 -1
  97. package/dist/menu-BV6UFx_z.js +813 -0
  98. package/dist/menu-BV6UFx_z.js.map +1 -0
  99. package/dist/menu-item-Cikacp4F.d.ts +128 -0
  100. package/dist/menu-item-Cikacp4F.d.ts.map +1 -0
  101. package/dist/menu-item-DEzL_Yjk.js +766 -0
  102. package/dist/menu-item-DEzL_Yjk.js.map +1 -0
  103. package/dist/menu.d.ts +3 -0
  104. package/dist/menu.js +3 -0
  105. package/dist/miller.d.ts +324 -0
  106. package/dist/miller.d.ts.map +1 -0
  107. package/dist/miller.js +1343 -0
  108. package/dist/miller.js.map +1 -0
  109. package/dist/narrowed-text.d.ts +72 -0
  110. package/dist/narrowed-text.d.ts.map +1 -0
  111. package/dist/narrowed-text.js +571 -0
  112. package/dist/narrowed-text.js.map +1 -0
  113. package/dist/panel.d.ts +43 -0
  114. package/dist/panel.d.ts.map +1 -0
  115. package/dist/{panel/panel.js → panel.js} +82 -91
  116. package/dist/panel.js.map +1 -0
  117. package/dist/plots.d.ts +2 -0
  118. package/dist/plots.js +2 -0
  119. package/dist/polar-pad.d.ts +67 -0
  120. package/dist/polar-pad.d.ts.map +1 -0
  121. package/dist/polar-pad.js +537 -0
  122. package/dist/polar-pad.js.map +1 -0
  123. package/dist/popup-Ddx9LCzY.js +24 -0
  124. package/dist/popup-Ddx9LCzY.js.map +1 -0
  125. package/dist/prominence-CreDBdCs.js +98 -0
  126. package/dist/prominence-CreDBdCs.js.map +1 -0
  127. package/dist/radial-input-CNJ8asY2.js +849 -0
  128. package/dist/radial-input-CNJ8asY2.js.map +1 -0
  129. package/dist/radial-input-xSTd4kEz.d.ts +70 -0
  130. package/dist/radial-input-xSTd4kEz.d.ts.map +1 -0
  131. package/dist/radial-input.d.ts +2 -0
  132. package/dist/radial-input.js +2 -0
  133. package/dist/range-input.d.ts +43 -0
  134. package/dist/range-input.d.ts.map +1 -0
  135. package/dist/{range-input/range-input.js → range-input.js} +155 -168
  136. package/dist/range-input.js.map +1 -0
  137. package/dist/range.d.ts +28 -0
  138. package/dist/range.d.ts.map +1 -0
  139. package/dist/range.js +136 -0
  140. package/dist/range.js.map +1 -0
  141. package/dist/registry-CZEB1YI9.js +21 -0
  142. package/dist/registry-CZEB1YI9.js.map +1 -0
  143. package/dist/selecthorizontal.d.ts +13 -8
  144. package/dist/selecthorizontal.d.ts.map +1 -1
  145. package/dist/selecthorizontal.js +19 -23
  146. package/dist/selecthorizontal.js.map +1 -1
  147. package/dist/snap-container.d.ts +50 -0
  148. package/dist/snap-container.d.ts.map +1 -0
  149. package/dist/snap-container.js +297 -0
  150. package/dist/snap-container.js.map +1 -0
  151. package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +30 -25
  152. package/dist/split-layout.d.ts.map +1 -0
  153. package/dist/split-layout.js +545 -0
  154. package/dist/split-layout.js.map +1 -0
  155. package/dist/style.css +133 -0
  156. package/dist/swipe.d.ts +48 -0
  157. package/dist/swipe.d.ts.map +1 -0
  158. package/dist/swipe.js +204 -0
  159. package/dist/swipe.js.map +1 -0
  160. package/dist/tab-list-CFF7uSYH.d.ts +66 -0
  161. package/dist/tab-list-CFF7uSYH.d.ts.map +1 -0
  162. package/dist/tabs.d.ts +2 -0
  163. package/dist/tabs.js +203 -0
  164. package/dist/tabs.js.map +1 -0
  165. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  166. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  167. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  168. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  169. package/dist/timeline-DBWJsSjd.js +1748 -0
  170. package/dist/timeline-DBWJsSjd.js.map +1 -0
  171. package/dist/timeline.d.ts +2 -0
  172. package/dist/timeline.js +2 -0
  173. package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
  174. package/dist/tooltip-DMxmBNky.js.map +1 -0
  175. package/dist/tooltip-kfUBWYVB.d.ts +26 -0
  176. package/dist/tooltip-kfUBWYVB.d.ts.map +1 -0
  177. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  178. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  179. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  180. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  181. package/dist/tree.d.ts +100 -0
  182. package/dist/tree.d.ts.map +1 -0
  183. package/dist/tree.js +1144 -0
  184. package/dist/tree.js.map +1 -0
  185. package/dist/types-BKaqnpwx.d.ts +8 -0
  186. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  187. package/dist/xy-axis-BANbgrI5.js +6243 -0
  188. package/dist/xy-axis-BANbgrI5.js.map +1 -0
  189. package/dist/xy-axis-CIFok7MF.d.ts +141 -0
  190. package/dist/xy-axis-CIFok7MF.d.ts.map +1 -0
  191. package/dist/xy-pad.d.ts +74 -110
  192. package/dist/xy-pad.d.ts.map +1 -1
  193. package/dist/xy-pad.js +300 -320
  194. package/dist/xy-pad.js.map +1 -1
  195. package/package.json +10 -18
  196. package/dist/ac-text/ac-text.d.ts +0 -99
  197. package/dist/ac-text/ac-text.d.ts.map +0 -1
  198. package/dist/ac-text/ac-text.js +0 -571
  199. package/dist/ac-text/ac-text.js.map +0 -1
  200. package/dist/button/button-styles.d.ts +0 -2
  201. package/dist/button/button-styles.d.ts.map +0 -1
  202. package/dist/button/button-styles.js.map +0 -1
  203. package/dist/button/button.d.ts +0 -16
  204. package/dist/button/button.d.ts.map +0 -1
  205. package/dist/button/button.js +0 -58
  206. package/dist/button/button.js.map +0 -1
  207. package/dist/button/radio-group.d.ts +0 -44
  208. package/dist/button/radio-group.d.ts.map +0 -1
  209. package/dist/button/radio-group.js +0 -385
  210. package/dist/button/radio-group.js.map +0 -1
  211. package/dist/button/split-button.d.ts +0 -59
  212. package/dist/button/split-button.d.ts.map +0 -1
  213. package/dist/button/split-button.js +0 -480
  214. package/dist/button/split-button.js.map +0 -1
  215. package/dist/button/types.d.ts +0 -18
  216. package/dist/button/types.d.ts.map +0 -1
  217. package/dist/button/types.js +0 -2
  218. package/dist/button/types.js.map +0 -1
  219. package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
  220. package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
  221. package/dist/colour-picker/colour-picker-popup.js +0 -399
  222. package/dist/colour-picker/colour-picker-popup.js.map +0 -1
  223. package/dist/colour-picker/colour-picker.d.ts +0 -100
  224. package/dist/colour-picker/colour-picker.d.ts.map +0 -1
  225. package/dist/colour-picker/colour-picker.js +0 -567
  226. package/dist/colour-picker/colour-picker.js.map +0 -1
  227. package/dist/colour-picker/index.d.ts +0 -4
  228. package/dist/colour-picker/index.d.ts.map +0 -1
  229. package/dist/colour-picker/index.js +0 -3
  230. package/dist/colour-picker/index.js.map +0 -1
  231. package/dist/colour-picker/styles.d.ts +0 -2
  232. package/dist/colour-picker/styles.d.ts.map +0 -1
  233. package/dist/colour-picker/styles.js +0 -139
  234. package/dist/colour-picker/styles.js.map +0 -1
  235. package/dist/colour-picker/types.d.ts +0 -33
  236. package/dist/colour-picker/types.d.ts.map +0 -1
  237. package/dist/colour-picker/types.js +0 -2
  238. package/dist/colour-picker/types.js.map +0 -1
  239. package/dist/colour-picker/util.d.ts +0 -15
  240. package/dist/colour-picker/util.d.ts.map +0 -1
  241. package/dist/colour-picker/util.js +0 -35
  242. package/dist/colour-picker/util.js.map +0 -1
  243. package/dist/common/searchable.d.ts +0 -9
  244. package/dist/common/searchable.d.ts.map +0 -1
  245. package/dist/common/searchable.js +0 -9
  246. package/dist/common/searchable.js.map +0 -1
  247. package/dist/common/tree-component.d.ts +0 -172
  248. package/dist/common/tree-component.d.ts.map +0 -1
  249. package/dist/common/tree-component.js +0 -8
  250. package/dist/common/tree-component.js.map +0 -1
  251. package/dist/common/tree-data-model.d.ts +0 -100
  252. package/dist/common/tree-data-model.d.ts.map +0 -1
  253. package/dist/common/tree-data-model.js +0 -207
  254. package/dist/common/tree-data-model.js.map +0 -1
  255. package/dist/common/tree-item.d.ts +0 -7
  256. package/dist/common/tree-item.d.ts.map +0 -1
  257. package/dist/common/tree-item.js +0 -2
  258. package/dist/common/tree-item.js.map +0 -1
  259. package/dist/common/types.d.ts +0 -69
  260. package/dist/common/types.d.ts.map +0 -1
  261. package/dist/common/types.js +0 -6
  262. package/dist/common/types.js.map +0 -1
  263. package/dist/crumbs/crumb-navigation.d.ts +0 -96
  264. package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
  265. package/dist/crumbs/crumb-navigation.js +0 -911
  266. package/dist/crumbs/crumb-navigation.js.map +0 -1
  267. package/dist/crumbs/crumb-path-controller.d.ts +0 -18
  268. package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
  269. package/dist/crumbs/crumb-path-controller.js +0 -81
  270. package/dist/crumbs/crumb-path-controller.js.map +0 -1
  271. package/dist/crumbs/crumb-path.d.ts +0 -65
  272. package/dist/crumbs/crumb-path.d.ts.map +0 -1
  273. package/dist/crumbs/crumb-path.js +0 -691
  274. package/dist/crumbs/crumb-path.js.map +0 -1
  275. package/dist/editable-label/editable-label.d.ts +0 -98
  276. package/dist/editable-label/editable-label.d.ts.map +0 -1
  277. package/dist/editable-label/editable-label.js +0 -348
  278. package/dist/editable-label/editable-label.js.map +0 -1
  279. package/dist/editable-label/editable-number.d.ts +0 -96
  280. package/dist/editable-label/editable-number.d.ts.map +0 -1
  281. package/dist/editable-label/editable-number.js +0 -702
  282. package/dist/editable-label/editable-number.js.map +0 -1
  283. package/dist/hex/colour.d.ts +0 -6
  284. package/dist/hex/colour.d.ts.map +0 -1
  285. package/dist/hex/colour.js +0 -33
  286. package/dist/hex/colour.js.map +0 -1
  287. package/dist/hex/data.d.ts +0 -18
  288. package/dist/hex/data.d.ts.map +0 -1
  289. package/dist/hex/data.js +0 -61
  290. package/dist/hex/data.js.map +0 -1
  291. package/dist/hex/diff.d.ts +0 -14
  292. package/dist/hex/diff.d.ts.map +0 -1
  293. package/dist/hex/diff.js +0 -31
  294. package/dist/hex/diff.js.map +0 -1
  295. package/dist/hex/hex-editor.d.ts +0 -101
  296. package/dist/hex/hex-editor.d.ts.map +0 -1
  297. package/dist/hex/hex-editor.js +0 -894
  298. package/dist/hex/hex-editor.js.map +0 -1
  299. package/dist/hex/selection.d.ts +0 -11
  300. package/dist/hex/selection.d.ts.map +0 -1
  301. package/dist/hex/selection.js +0 -218
  302. package/dist/hex/selection.js.map +0 -1
  303. package/dist/hex/types.d.ts +0 -34
  304. package/dist/hex/types.d.ts.map +0 -1
  305. package/dist/hex/types.js +0 -4
  306. package/dist/hex/types.js.map +0 -1
  307. package/dist/icons/defaults.d.ts +0 -27
  308. package/dist/icons/defaults.d.ts.map +0 -1
  309. package/dist/icons/defaults.js +0 -34
  310. package/dist/icons/defaults.js.map +0 -1
  311. package/dist/icons/icon.d.ts +0 -31
  312. package/dist/icons/icon.d.ts.map +0 -1
  313. package/dist/icons/icon.js +0 -125
  314. package/dist/icons/icon.js.map +0 -1
  315. package/dist/icons/index.d.ts +0 -5
  316. package/dist/icons/index.d.ts.map +0 -1
  317. package/dist/icons/index.js +0 -6
  318. package/dist/icons/index.js.map +0 -1
  319. package/dist/icons/registry.d.ts +0 -11
  320. package/dist/icons/registry.d.ts.map +0 -1
  321. package/dist/icons/registry.js +0 -17
  322. package/dist/icons/registry.js.map +0 -1
  323. package/dist/incr-search/ac-adapter.d.ts +0 -18
  324. package/dist/incr-search/ac-adapter.d.ts.map +0 -1
  325. package/dist/incr-search/ac-adapter.js +0 -29
  326. package/dist/incr-search/ac-adapter.js.map +0 -1
  327. package/dist/incr-search/controller-miller.d.ts +0 -9
  328. package/dist/incr-search/controller-miller.d.ts.map +0 -1
  329. package/dist/incr-search/controller-miller.js +0 -8
  330. package/dist/incr-search/controller-miller.js.map +0 -1
  331. package/dist/incr-search/controller-tree.d.ts +0 -55
  332. package/dist/incr-search/controller-tree.d.ts.map +0 -1
  333. package/dist/incr-search/controller-tree.js +0 -106
  334. package/dist/incr-search/controller-tree.js.map +0 -1
  335. package/dist/incr-search/element-search.d.ts +0 -15
  336. package/dist/incr-search/element-search.d.ts.map +0 -1
  337. package/dist/incr-search/element-search.js +0 -82
  338. package/dist/incr-search/element-search.js.map +0 -1
  339. package/dist/incr-search/fuzzy.d.ts +0 -3
  340. package/dist/incr-search/fuzzy.d.ts.map +0 -1
  341. package/dist/incr-search/fuzzy.js +0 -37
  342. package/dist/incr-search/fuzzy.js.map +0 -1
  343. package/dist/incr-search/highlight.d.ts +0 -5
  344. package/dist/incr-search/highlight.d.ts.map +0 -1
  345. package/dist/incr-search/highlight.js +0 -54
  346. package/dist/incr-search/highlight.js.map +0 -1
  347. package/dist/incr-search/incr-search.d.ts +0 -3
  348. package/dist/incr-search/incr-search.d.ts.map +0 -1
  349. package/dist/incr-search/incr-search.js +0 -73
  350. package/dist/incr-search/incr-search.js.map +0 -1
  351. package/dist/incr-search/index.d.ts +0 -12
  352. package/dist/incr-search/index.d.ts.map +0 -1
  353. package/dist/incr-search/index.js +0 -8
  354. package/dist/incr-search/index.js.map +0 -1
  355. package/dist/incr-search/types.d.ts +0 -59
  356. package/dist/incr-search/types.d.ts.map +0 -1
  357. package/dist/incr-search/types.js +0 -2
  358. package/dist/incr-search/types.js.map +0 -1
  359. package/dist/interaction/index.d.ts +0 -10
  360. package/dist/interaction/index.d.ts.map +0 -1
  361. package/dist/interaction/index.js +0 -10
  362. package/dist/interaction/index.js.map +0 -1
  363. package/dist/interaction/tickled-controller.d.ts +0 -186
  364. package/dist/interaction/tickled-controller.d.ts.map +0 -1
  365. package/dist/interaction/tickled-controller.js +0 -256
  366. package/dist/interaction/tickled-controller.js.map +0 -1
  367. package/dist/interaction/tickled-styles.d.ts +0 -53
  368. package/dist/interaction/tickled-styles.d.ts.map +0 -1
  369. package/dist/interaction/tickled-styles.js +0 -106
  370. package/dist/interaction/tickled-styles.js.map +0 -1
  371. package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
  372. package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
  373. package/dist/interaction/tree-keyboard-controller.js +0 -105
  374. package/dist/interaction/tree-keyboard-controller.js.map +0 -1
  375. package/dist/keyboard.d.ts +0 -16
  376. package/dist/keyboard.d.ts.map +0 -1
  377. package/dist/keyboard.js +0 -22
  378. package/dist/keyboard.js.map +0 -1
  379. package/dist/labelled-radial-input/index.d.ts +0 -2
  380. package/dist/labelled-radial-input/index.d.ts.map +0 -1
  381. package/dist/labelled-radial-input/index.js +0 -2
  382. package/dist/labelled-radial-input/index.js.map +0 -1
  383. package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
  384. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
  385. package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
  386. package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
  387. package/dist/labelled-range-input/index.d.ts +0 -2
  388. package/dist/labelled-range-input/index.d.ts.map +0 -1
  389. package/dist/labelled-range-input/index.js +0 -2
  390. package/dist/labelled-range-input/index.js.map +0 -1
  391. package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
  392. package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
  393. package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
  394. package/dist/menu/index.d.ts +0 -14
  395. package/dist/menu/index.d.ts.map +0 -1
  396. package/dist/menu/index.js +0 -13
  397. package/dist/menu/index.js.map +0 -1
  398. package/dist/menu/menu-bar.d.ts +0 -23
  399. package/dist/menu/menu-bar.d.ts.map +0 -1
  400. package/dist/menu/menu-bar.js +0 -110
  401. package/dist/menu/menu-bar.js.map +0 -1
  402. package/dist/menu/menu-check-item.d.ts +0 -33
  403. package/dist/menu/menu-check-item.d.ts.map +0 -1
  404. package/dist/menu/menu-check-item.js +0 -175
  405. package/dist/menu/menu-check-item.js.map +0 -1
  406. package/dist/menu/menu-command-controller.d.ts +0 -14
  407. package/dist/menu/menu-command-controller.d.ts.map +0 -1
  408. package/dist/menu/menu-command-controller.js +0 -22
  409. package/dist/menu/menu-command-controller.js.map +0 -1
  410. package/dist/menu/menu-container.d.ts +0 -36
  411. package/dist/menu/menu-container.d.ts.map +0 -1
  412. package/dist/menu/menu-container.js +0 -351
  413. package/dist/menu/menu-container.js.map +0 -1
  414. package/dist/menu/menu-from-tree.d.ts +0 -17
  415. package/dist/menu/menu-from-tree.d.ts.map +0 -1
  416. package/dist/menu/menu-from-tree.js +0 -103
  417. package/dist/menu/menu-from-tree.js.map +0 -1
  418. package/dist/menu/menu-header.d.ts +0 -12
  419. package/dist/menu/menu-header.d.ts.map +0 -1
  420. package/dist/menu/menu-header.js +0 -36
  421. package/dist/menu/menu-header.js.map +0 -1
  422. package/dist/menu/menu-item.d.ts +0 -41
  423. package/dist/menu/menu-item.d.ts.map +0 -1
  424. package/dist/menu/menu-item.js +0 -240
  425. package/dist/menu/menu-item.js.map +0 -1
  426. package/dist/menu/menu-radio-group.d.ts +0 -24
  427. package/dist/menu/menu-radio-group.d.ts.map +0 -1
  428. package/dist/menu/menu-radio-group.js +0 -71
  429. package/dist/menu/menu-radio-group.js.map +0 -1
  430. package/dist/menu/menu-radio-item.d.ts +0 -22
  431. package/dist/menu/menu-radio-item.d.ts.map +0 -1
  432. package/dist/menu/menu-radio-item.js +0 -116
  433. package/dist/menu/menu-radio-item.js.map +0 -1
  434. package/dist/menu/menu-separator.d.ts +0 -11
  435. package/dist/menu/menu-separator.d.ts.map +0 -1
  436. package/dist/menu/menu-separator.js +0 -29
  437. package/dist/menu/menu-separator.js.map +0 -1
  438. package/dist/menu/menu-sub-trigger.d.ts +0 -46
  439. package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
  440. package/dist/menu/menu-sub-trigger.js +0 -302
  441. package/dist/menu/menu-sub-trigger.js.map +0 -1
  442. package/dist/menu/menu-trigger.d.ts +0 -57
  443. package/dist/menu/menu-trigger.d.ts.map +0 -1
  444. package/dist/menu/menu-trigger.js +0 -351
  445. package/dist/menu/menu-trigger.js.map +0 -1
  446. package/dist/miller/index.d.ts +0 -5
  447. package/dist/miller/index.d.ts.map +0 -1
  448. package/dist/miller/index.js +0 -5
  449. package/dist/miller/index.js.map +0 -1
  450. package/dist/miller/miller-base.d.ts +0 -184
  451. package/dist/miller/miller-base.d.ts.map +0 -1
  452. package/dist/miller/miller-base.js +0 -1249
  453. package/dist/miller/miller-base.js.map +0 -1
  454. package/dist/miller/miller-list.d.ts +0 -30
  455. package/dist/miller/miller-list.d.ts.map +0 -1
  456. package/dist/miller/miller-list.js +0 -192
  457. package/dist/miller/miller-list.js.map +0 -1
  458. package/dist/miller/miller-tree-controller.d.ts +0 -58
  459. package/dist/miller/miller-tree-controller.d.ts.map +0 -1
  460. package/dist/miller/miller-tree-controller.js +0 -134
  461. package/dist/miller/miller-tree-controller.js.map +0 -1
  462. package/dist/miller/types.d.ts +0 -63
  463. package/dist/miller/types.d.ts.map +0 -1
  464. package/dist/miller/types.js +0 -6
  465. package/dist/miller/types.js.map +0 -1
  466. package/dist/mixins/labelled-input-base.d.ts +0 -38
  467. package/dist/mixins/labelled-input-base.d.ts.map +0 -1
  468. package/dist/mixins/labelled-input-base.js +0 -171
  469. package/dist/mixins/labelled-input-base.js.map +0 -1
  470. package/dist/mixins/labelled-input-util.d.ts +0 -3
  471. package/dist/mixins/labelled-input-util.d.ts.map +0 -1
  472. package/dist/mixins/labelled-input-util.js +0 -10
  473. package/dist/mixins/labelled-input-util.js.map +0 -1
  474. package/dist/my-element.d.ts +0 -14
  475. package/dist/my-element.d.ts.map +0 -1
  476. package/dist/my-element.js +0 -44
  477. package/dist/my-element.js.map +0 -1
  478. package/dist/narrowed-text/index.d.ts +0 -3
  479. package/dist/narrowed-text/index.d.ts.map +0 -1
  480. package/dist/narrowed-text/index.js +0 -3
  481. package/dist/narrowed-text/index.js.map +0 -1
  482. package/dist/narrowed-text/narrowed-text.d.ts +0 -48
  483. package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
  484. package/dist/narrowed-text/narrowed-text.js +0 -668
  485. package/dist/narrowed-text/narrowed-text.js.map +0 -1
  486. package/dist/narrowed-text/types.d.ts +0 -20
  487. package/dist/narrowed-text/types.d.ts.map +0 -1
  488. package/dist/narrowed-text/types.js +0 -2
  489. package/dist/narrowed-text/types.js.map +0 -1
  490. package/dist/panel/panel-group.d.ts +0 -23
  491. package/dist/panel/panel-group.d.ts.map +0 -1
  492. package/dist/panel/panel-group.js +0 -109
  493. package/dist/panel/panel-group.js.map +0 -1
  494. package/dist/panel/panel.d.ts +0 -39
  495. package/dist/panel/panel.d.ts.map +0 -1
  496. package/dist/panel/panel.js.map +0 -1
  497. package/dist/plots/colour-map.d.ts +0 -31
  498. package/dist/plots/colour-map.d.ts.map +0 -1
  499. package/dist/plots/colour-map.js +0 -133
  500. package/dist/plots/colour-map.js.map +0 -1
  501. package/dist/plots/data.d.ts +0 -27
  502. package/dist/plots/data.d.ts.map +0 -1
  503. package/dist/plots/data.js +0 -47
  504. package/dist/plots/data.js.map +0 -1
  505. package/dist/plots/single-axis.d.ts +0 -41
  506. package/dist/plots/single-axis.d.ts.map +0 -1
  507. package/dist/plots/single-axis.js +0 -428
  508. package/dist/plots/single-axis.js.map +0 -1
  509. package/dist/plots/svg-utils.d.ts +0 -12
  510. package/dist/plots/svg-utils.d.ts.map +0 -1
  511. package/dist/plots/svg-utils.js +0 -64
  512. package/dist/plots/svg-utils.js.map +0 -1
  513. package/dist/plots/xy-axis.d.ts +0 -42
  514. package/dist/plots/xy-axis.d.ts.map +0 -1
  515. package/dist/plots/xy-axis.js +0 -307
  516. package/dist/plots/xy-axis.js.map +0 -1
  517. package/dist/polar-pad/polar-pad.d.ts +0 -132
  518. package/dist/polar-pad/polar-pad.d.ts.map +0 -1
  519. package/dist/polar-pad/polar-pad.js +0 -598
  520. package/dist/polar-pad/polar-pad.js.map +0 -1
  521. package/dist/radial-input/radial-input.d.ts +0 -45
  522. package/dist/radial-input/radial-input.d.ts.map +0 -1
  523. package/dist/radial-input/radial-input.js +0 -692
  524. package/dist/radial-input/radial-input.js.map +0 -1
  525. package/dist/radial-input/svg-utils.d.ts +0 -147
  526. package/dist/radial-input/svg-utils.d.ts.map +0 -1
  527. package/dist/radial-input/svg-utils.js +0 -346
  528. package/dist/radial-input/svg-utils.js.map +0 -1
  529. package/dist/radial-input/types.d.ts +0 -25
  530. package/dist/radial-input/types.d.ts.map +0 -1
  531. package/dist/radial-input/types.js +0 -5
  532. package/dist/radial-input/types.js.map +0 -1
  533. package/dist/range/range-multi.d.ts +0 -62
  534. package/dist/range/range-multi.d.ts.map +0 -1
  535. package/dist/range/range-multi.js +0 -652
  536. package/dist/range/range-multi.js.map +0 -1
  537. package/dist/range/range.d.ts +0 -23
  538. package/dist/range/range.d.ts.map +0 -1
  539. package/dist/range/range.js +0 -153
  540. package/dist/range/range.js.map +0 -1
  541. package/dist/range-input/index.d.ts +0 -2
  542. package/dist/range-input/index.d.ts.map +0 -1
  543. package/dist/range-input/index.js +0 -2
  544. package/dist/range-input/index.js.map +0 -1
  545. package/dist/range-input/range-input.d.ts +0 -92
  546. package/dist/range-input/range-input.d.ts.map +0 -1
  547. package/dist/range-input/range-input.js.map +0 -1
  548. package/dist/snap-container/snap-container.d.ts +0 -45
  549. package/dist/snap-container/snap-container.d.ts.map +0 -1
  550. package/dist/snap-container/snap-container.js +0 -352
  551. package/dist/snap-container/snap-container.js.map +0 -1
  552. package/dist/split-layout/split-layout.d.ts.map +0 -1
  553. package/dist/split-layout/split-layout.js +0 -674
  554. package/dist/split-layout/split-layout.js.map +0 -1
  555. package/dist/styles/popup.d.ts +0 -11
  556. package/dist/styles/popup.d.ts.map +0 -1
  557. package/dist/styles/popup.js +0 -20
  558. package/dist/styles/popup.js.map +0 -1
  559. package/dist/styles/prominence.d.ts +0 -58
  560. package/dist/styles/prominence.d.ts.map +0 -1
  561. package/dist/styles/prominence.js +0 -94
  562. package/dist/styles/prominence.js.map +0 -1
  563. package/dist/styles/tooltip.d.ts +0 -2
  564. package/dist/styles/tooltip.d.ts.map +0 -1
  565. package/dist/styles/tooltip.js.map +0 -1
  566. package/dist/svg-edit-label.d.ts +0 -2
  567. package/dist/svg-edit-label.d.ts.map +0 -1
  568. package/dist/svg-edit-label.js +0 -110
  569. package/dist/svg-edit-label.js.map +0 -1
  570. package/dist/swipe/index.d.ts +0 -2
  571. package/dist/swipe/index.d.ts.map +0 -1
  572. package/dist/swipe/index.js +0 -2
  573. package/dist/swipe/index.js.map +0 -1
  574. package/dist/swipe/swipe.d.ts +0 -65
  575. package/dist/swipe/swipe.d.ts.map +0 -1
  576. package/dist/swipe/swipe.js +0 -229
  577. package/dist/swipe/swipe.js.map +0 -1
  578. package/dist/tabs/tab-layout-item.d.ts +0 -10
  579. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  580. package/dist/tabs/tab-layout-item.js +0 -20
  581. package/dist/tabs/tab-layout-item.js.map +0 -1
  582. package/dist/tabs/tab-layout.d.ts +0 -10
  583. package/dist/tabs/tab-layout.d.ts.map +0 -1
  584. package/dist/tabs/tab-layout.js +0 -25
  585. package/dist/tabs/tab-layout.js.map +0 -1
  586. package/dist/tabs/tab-list-item.d.ts +0 -34
  587. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  588. package/dist/tabs/tab-list-item.js +0 -195
  589. package/dist/tabs/tab-list-item.js.map +0 -1
  590. package/dist/tabs/tab-list.d.ts +0 -31
  591. package/dist/tabs/tab-list.d.ts.map +0 -1
  592. package/dist/tabs/tab-list.js +0 -257
  593. package/dist/tabs/tab-list.js.map +0 -1
  594. package/dist/tabs/tab-panel.d.ts +0 -11
  595. package/dist/tabs/tab-panel.d.ts.map +0 -1
  596. package/dist/tabs/tab-panel.js +0 -30
  597. package/dist/tabs/tab-panel.js.map +0 -1
  598. package/dist/tabs/tab-panels.d.ts +0 -30
  599. package/dist/tabs/tab-panels.d.ts.map +0 -1
  600. package/dist/tabs/tab-panels.js +0 -80
  601. package/dist/tabs/tab-panels.js.map +0 -1
  602. package/dist/timeline/index.d.ts +0 -9
  603. package/dist/timeline/index.d.ts.map +0 -1
  604. package/dist/timeline/index.js +0 -8
  605. package/dist/timeline/index.js.map +0 -1
  606. package/dist/timeline/timeline-controller.d.ts +0 -48
  607. package/dist/timeline/timeline-controller.d.ts.map +0 -1
  608. package/dist/timeline/timeline-controller.js +0 -81
  609. package/dist/timeline/timeline-controller.js.map +0 -1
  610. package/dist/timeline/timeline-draw.d.ts +0 -28
  611. package/dist/timeline/timeline-draw.d.ts.map +0 -1
  612. package/dist/timeline/timeline-draw.js +0 -330
  613. package/dist/timeline/timeline-draw.js.map +0 -1
  614. package/dist/timeline/timeline-element.d.ts +0 -140
  615. package/dist/timeline/timeline-element.d.ts.map +0 -1
  616. package/dist/timeline/timeline-element.js +0 -888
  617. package/dist/timeline/timeline-element.js.map +0 -1
  618. package/dist/timeline/timeline-interactions.d.ts +0 -40
  619. package/dist/timeline/timeline-interactions.d.ts.map +0 -1
  620. package/dist/timeline/timeline-interactions.js +0 -393
  621. package/dist/timeline/timeline-interactions.js.map +0 -1
  622. package/dist/timeline/timeline-styles.d.ts +0 -2
  623. package/dist/timeline/timeline-styles.d.ts.map +0 -1
  624. package/dist/timeline/timeline-styles.js +0 -153
  625. package/dist/timeline/timeline-styles.js.map +0 -1
  626. package/dist/timeline/timeline-track-tabs.d.ts +0 -30
  627. package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
  628. package/dist/timeline/timeline-track-tabs.js +0 -204
  629. package/dist/timeline/timeline-track-tabs.js.map +0 -1
  630. package/dist/timeline/types.d.ts +0 -144
  631. package/dist/timeline/types.d.ts.map +0 -1
  632. package/dist/timeline/types.js +0 -3
  633. package/dist/timeline/types.js.map +0 -1
  634. package/dist/tree/index.d.ts +0 -5
  635. package/dist/tree/index.d.ts.map +0 -1
  636. package/dist/tree/index.js +0 -5
  637. package/dist/tree/index.js.map +0 -1
  638. package/dist/tree/tree-base.d.ts +0 -70
  639. package/dist/tree/tree-base.d.ts.map +0 -1
  640. package/dist/tree/tree-base.js +0 -1028
  641. package/dist/tree/tree-base.js.map +0 -1
  642. package/dist/tree/tree-controller.d.ts +0 -14
  643. package/dist/tree/tree-controller.d.ts.map +0 -1
  644. package/dist/tree/tree-controller.js +0 -96
  645. package/dist/tree/tree-controller.js.map +0 -1
  646. package/dist/tree/tree-list.d.ts +0 -20
  647. package/dist/tree/tree-list.d.ts.map +0 -1
  648. package/dist/tree/tree-list.js +0 -174
  649. package/dist/tree/tree-list.js.map +0 -1
  650. package/dist/tree/types.d.ts +0 -14
  651. package/dist/tree/types.d.ts.map +0 -1
  652. package/dist/tree/types.js +0 -7
  653. package/dist/tree/types.js.map +0 -1
  654. package/dist/util/checkbox.d.ts +0 -2
  655. package/dist/util/checkbox.d.ts.map +0 -1
  656. package/dist/util/checkbox.js +0 -69
  657. package/dist/util/checkbox.js.map +0 -1
  658. package/dist/util/circle-arc.d.ts +0 -34
  659. package/dist/util/circle-arc.d.ts.map +0 -1
  660. package/dist/util/circle-arc.js +0 -85
  661. package/dist/util/circle-arc.js.map +0 -1
  662. package/dist/util/clamp.d.ts +0 -4
  663. package/dist/util/clamp.d.ts.map +0 -1
  664. package/dist/util/clamp.js +0 -23
  665. package/dist/util/clamp.js.map +0 -1
  666. package/dist/util/compare.d.ts +0 -53
  667. package/dist/util/compare.d.ts.map +0 -1
  668. package/dist/util/compare.js +0 -91
  669. package/dist/util/compare.js.map +0 -1
  670. package/dist/util/content-editable.d.ts +0 -2
  671. package/dist/util/content-editable.d.ts.map +0 -1
  672. package/dist/util/content-editable.js +0 -13
  673. package/dist/util/content-editable.js.map +0 -1
  674. package/dist/util/coordinates.d.ts +0 -3
  675. package/dist/util/coordinates.d.ts.map +0 -1
  676. package/dist/util/coordinates.js +0 -11
  677. package/dist/util/coordinates.js.map +0 -1
  678. package/dist/util/drag.d.ts +0 -16
  679. package/dist/util/drag.d.ts.map +0 -1
  680. package/dist/util/drag.js +0 -20
  681. package/dist/util/drag.js.map +0 -1
  682. package/dist/util/is-numeric.d.ts +0 -2
  683. package/dist/util/is-numeric.d.ts.map +0 -1
  684. package/dist/util/is-numeric.js +0 -9
  685. package/dist/util/is-numeric.js.map +0 -1
  686. package/dist/util/key-value.d.ts +0 -5
  687. package/dist/util/key-value.d.ts.map +0 -1
  688. package/dist/util/key-value.js +0 -29
  689. package/dist/util/key-value.js.map +0 -1
  690. package/dist/util/near.d.ts +0 -2
  691. package/dist/util/near.d.ts.map +0 -1
  692. package/dist/util/near.js +0 -6
  693. package/dist/util/near.js.map +0 -1
  694. package/dist/util/primitive-types.d.ts +0 -6
  695. package/dist/util/primitive-types.d.ts.map +0 -1
  696. package/dist/util/primitive-types.js +0 -2
  697. package/dist/util/primitive-types.js.map +0 -1
  698. package/dist/util/svg-editable-text.d.ts +0 -26
  699. package/dist/util/svg-editable-text.d.ts.map +0 -1
  700. package/dist/util/svg-editable-text.js +0 -119
  701. package/dist/util/svg-editable-text.js.map +0 -1
  702. package/dist/util/time.d.ts +0 -2
  703. package/dist/util/time.d.ts.map +0 -1
  704. package/dist/util/time.js +0 -2
  705. package/dist/util/time.js.map +0 -1
  706. package/dist/util/tooltip-controller.d.ts +0 -10
  707. package/dist/util/tooltip-controller.d.ts.map +0 -1
  708. package/dist/util/tooltip-controller.js +0 -237
  709. package/dist/util/tooltip-controller.js.map +0 -1
  710. package/dist/util/tooltip.d.ts +0 -21
  711. package/dist/util/tooltip.d.ts.map +0 -1
  712. package/dist/util/tooltip.js +0 -98
  713. package/dist/util/tooltip.js.map +0 -1
  714. package/dist/util/value-drag.d.ts +0 -33
  715. package/dist/util/value-drag.d.ts.map +0 -1
  716. package/dist/util/value-drag.js +0 -154
  717. package/dist/util/value-drag.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex-editor-Wd6ZtZA2.js","names":["Colour","storeLength","undoDiff","redoDiff"],"sources":["../src/hex/colour.ts","../src/hex/data.ts","../src/hex/diff.ts","../src/hex/selection.ts","../src/hex/hex-editor.ts"],"sourcesContent":["import { Colour } from '@ixfx/visual';\n\nexport type ColourMap = {\n forByte: (byte: number) => string;\n};\n\nconst WHITESPACE_BYTES = new Set([0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x20]);\n\nconst isControlByte = (byte: number): boolean => {\n return byte < 0x20 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0b && byte !== 0x0c && byte !== 0x0d;\n};\n\nconst isPrintableAscii = (byte: number): boolean => {\n return byte >= 0x20 && byte <= 0x7e;\n};\n\nexport const getAsciiClass = (byte: number): string => {\n if (byte === 0) return 'byte-null';\n if (WHITESPACE_BYTES.has(byte)) return 'byte-whitespace';\n if (isControlByte(byte)) return 'byte-control';\n if (isPrintableAscii(byte)) return 'byte-printable';\n return 'byte-other';\n};\n\nexport const createShadeMap = (\n nullColour: string,\n maxColour: string,\n stepStart: string,\n stepEnd: string\n): ColourMap => {\n const steps = Colour.createSteps(stepStart, stepEnd, { steps: 16 });\n const cssSteps = steps.map(Colour.toCssColour);\n return {\n forByte: (byte) => {\n if (byte === 0x00) return nullColour;\n if (byte === 0xff) return maxColour;\n return cssSteps[byte >> 4];\n },\n };\n};\n","import type { BytePos, Diff } from './types.js';\n\ntype StoreImpl = {\n data: Uint8Array;\n changeset: Set<BytePos>;\n};\n\nexport type HexStore = StoreImpl;\n\nexport const createHexStore = (data: Uint8Array): HexStore => {\n return {\n data: new Uint8Array(data),\n changeset: new Set<BytePos>(),\n };\n};\n\nexport const readByte = (store: HexStore, pos: BytePos): number => {\n return store.data[pos] ?? 0;\n};\n\nexport const readBytes = (store: HexStore, positions: readonly BytePos[]): readonly number[] => {\n return positions.map((p) => store.data[p] ?? 0);\n};\n\nexport const length = (store: HexStore): number => {\n return store.data.length;\n};\n\nconst clamp = (value: number): number => {\n return Math.max(0, Math.min(255, value));\n};\n\nexport const writeByte = (store: HexStore, pos: BytePos, value: number): Diff => {\n const clampedValue = clamp(value);\n const before = store.data[pos];\n const diff: Diff = new Map([[pos, { before, after: clampedValue }]]);\n store.data[pos] = clampedValue;\n store.changeset.add(pos);\n return diff;\n};\n\nexport const writeBytes = (store: HexStore, entries: ReadonlyMap<BytePos, number>): Diff => {\n const diff = new Map<BytePos, { before: number; after: number }>();\n entries.forEach((value, pos) => {\n const clampedValue = clamp(value);\n const before = store.data[pos];\n diff.set(pos, { before, after: clampedValue });\n store.data[pos] = clampedValue;\n store.changeset.add(pos);\n });\n return diff as Diff;\n};\n\nexport const applyDiff = (store: HexStore, diff: Diff): Diff => {\n const reverse = new Map<BytePos, { before: number; after: number }>();\n diff.forEach((entry, pos) => {\n const before = store.data[pos];\n reverse.set(pos, { before: entry.after, after: before });\n store.data[pos] = entry.after;\n store.changeset.add(pos);\n });\n return reverse as Diff;\n};\n\nexport const reverseDiff = (diff: Diff): Diff => {\n const reversed = new Map<BytePos, { before: number; after: number }>();\n diff.forEach((entry, pos) => {\n reversed.set(pos, { before: entry.after, after: entry.before });\n });\n return reversed as Diff;\n};\n\nexport const getChangeset = (store: HexStore): ReadonlySet<BytePos> => {\n return store.changeset;\n};\n\nexport const clearChangeset = (store: HexStore): void => {\n store.changeset.clear();\n};\n","import type { Diff } from './types.js';\n\ntype StackImpl = {\n undos: Diff[];\n redos: Diff[];\n};\n\nexport type UndoRedoStack = StackImpl;\n\nexport const createUndoRedoStack = (): UndoRedoStack => {\n return {\n undos: [],\n redos: [],\n };\n};\n\nexport const push = (stack: UndoRedoStack, diff: Diff): void => {\n stack.undos.push(diff);\n stack.redos = [];\n};\n\nexport const undo = (stack: UndoRedoStack): Diff | undefined => {\n const diff = stack.undos.pop();\n if (diff) {\n stack.redos.push(diff);\n }\n return diff;\n};\n\nexport const redo = (stack: UndoRedoStack): Diff | undefined => {\n const diff = stack.redos.pop();\n if (diff) {\n stack.undos.push(diff);\n }\n return diff;\n};\n\nexport const canUndo = (stack: UndoRedoStack): boolean => {\n return stack.undos.length > 0;\n};\n\nexport const canRedo = (stack: UndoRedoStack): boolean => {\n return stack.redos.length > 0;\n};\n","import type { BytePos, Selection, SingleSelection, ContiguousSelection, RectangularSelection } from './types.js';\n\nexport const bytesPerRow = (columns: number): number => columns * 4;\n\nconst min = (a: number, b: number): number => (a < b ? a : b);\nconst max = (a: number, b: number): number => (a > b ? a : b);\n\nexport const clampPos = (pos: BytePos, dataLength: number): BytePos => {\n return Math.max(0, Math.min(pos, dataLength - 1));\n};\n\nexport const getSelectedPositions = (\n sel: Selection,\n columns: number\n): readonly BytePos[] => {\n if (!sel) return [];\n\n const bpr = bytesPerRow(columns);\n\n if (sel.kind === 'single') {\n return [sel.pos];\n }\n\n if (sel.kind === 'contiguous') {\n const start = min(sel.start, sel.end);\n const end = max(sel.start, sel.end);\n const positions: BytePos[] = [];\n for (let i = start; i <= end; i++) {\n positions.push(i);\n }\n return positions;\n }\n\n if (sel.kind === 'rectangular') {\n const positions: BytePos[] = [];\n for (let row = 0; row < sel.height; row++) {\n for (let col = 0; col < sel.width; col++) {\n const y = sel.y + row;\n const x = sel.x + col;\n const pos = y * bpr + x;\n positions.push(pos);\n }\n }\n return positions;\n }\n\n return [];\n};\n\nexport const selectionContains = (\n sel: Selection,\n pos: BytePos,\n columns: number\n): boolean => {\n if (!sel) return false;\n\n const bpr = bytesPerRow(columns);\n\n if (sel.kind === 'single') {\n return pos === sel.pos;\n }\n\n if (sel.kind === 'contiguous') {\n const start = min(sel.start, sel.end);\n const end = max(sel.start, sel.end);\n return pos >= start && pos <= end;\n }\n\n if (sel.kind === 'rectangular') {\n const row = Math.floor(pos / bpr);\n const col = pos % bpr;\n const x = sel.x;\n const y = sel.y;\n const width = sel.width;\n const height = sel.height;\n return row >= y && row < y + height && col >= x && col < x + width;\n }\n\n return false;\n};\n\nexport const getCursorPos = (\n sel: Selection,\n dir: 'up' | 'down' | 'left' | 'right',\n columns: number,\n dataLength: number\n): BytePos => {\n let currentPos: BytePos;\n\n if (!sel) {\n currentPos = 0;\n } else if (sel.kind === 'single') {\n currentPos = sel.pos;\n } else if (sel.kind === 'contiguous') {\n currentPos = max(sel.start, sel.end);\n } else if (sel.kind === 'rectangular') {\n currentPos = sel.y * bytesPerRow(columns) + sel.x + sel.width - 1;\n } else {\n currentPos = 0;\n }\n\n const bpr = bytesPerRow(columns);\n let newPos: BytePos;\n\n switch (dir) {\n case 'left':\n newPos = currentPos - 1;\n break;\n case 'right':\n newPos = currentPos + 1;\n break;\n case 'up':\n newPos = currentPos - bpr;\n break;\n case 'down':\n newPos = currentPos + bpr;\n break;\n default:\n newPos = currentPos;\n }\n\n return clampPos(newPos, dataLength);\n};\n\nexport const moveSelection = (\n sel: Selection,\n dir: 'up' | 'down' | 'left' | 'right',\n columns: number,\n dataLength: number\n): SingleSelection => {\n const newPos = getCursorPos(sel, dir, columns, dataLength);\n return { kind: 'single', pos: newPos };\n};\n\nexport const extendContiguous = (\n sel: Selection,\n _dir: 'up' | 'down' | 'left' | 'right',\n columns: number,\n _dataLength: number,\n anchor: BytePos | null = null\n): ContiguousSelection => {\n let currentPos: BytePos;\n\n if (!sel || sel.kind === 'single') {\n currentPos = sel?.kind === 'single' ? sel.pos : 0;\n } else if (sel.kind === 'contiguous') {\n currentPos = max(sel.start, sel.end);\n } else if (sel.kind === 'rectangular') {\n currentPos = sel.y * bytesPerRow(columns) + sel.x;\n } else {\n currentPos = 0;\n }\n\n const newPos = anchor ?? currentPos;\n const start = Math.min(currentPos, newPos);\n const end = Math.max(currentPos, newPos);\n\n return {\n kind: 'contiguous',\n start,\n end,\n };\n};\n\nexport const extendRectangular = (\n sel: Selection,\n dir: 'up' | 'down' | 'left' | 'right',\n columns: number,\n _dataLength: number,\n anchorX: number = 0,\n anchorY: number = 0\n): RectangularSelection => {\n const bpr = bytesPerRow(columns);\n\n let x: number;\n let y: number;\n let width: number;\n let height: number;\n\n if (!sel || sel.kind === 'single') {\n const pos = sel?.kind === 'single' ? sel.pos : 0;\n x = pos % bpr;\n y = Math.floor(pos / bpr);\n width = 1;\n height = 1;\n } else if (sel.kind === 'contiguous') {\n const start = min(sel.start, sel.end);\n const end = max(sel.start, sel.end);\n x = start % bpr;\n y = Math.floor(start / bpr);\n width = end - start + 1;\n height = 1;\n } else if (sel.kind === 'rectangular') {\n x = sel.x;\n y = sel.y;\n width = sel.width;\n height = sel.height;\n } else {\n x = 0;\n y = 0;\n width = 1;\n height = 1;\n }\n\n const effectiveAnchorX = anchorX > 0 || (sel?.kind === 'rectangular') ? anchorX : x;\n const effectiveAnchorY = anchorY > 0 || (sel?.kind === 'rectangular') ? anchorY : y;\n\n switch (dir) {\n case 'left':\n if (x > effectiveAnchorX) {\n width -= 1;\n } else if (x === effectiveAnchorX && width > 1) {\n x -= 1;\n width += 1;\n } else if (x > 0) {\n x -= 1;\n width += 1;\n }\n break;\n case 'right':\n if (x + width < bpr) {\n width += 1;\n }\n break;\n case 'up':\n if (y > effectiveAnchorY) {\n height -= 1;\n } else if (y === effectiveAnchorY && height > 1) {\n y -= 1;\n height += 1;\n } else if (y > 0) {\n y -= 1;\n height += 1;\n }\n break;\n case 'down':\n height += 1;\n break;\n }\n\n return { kind: 'rectangular', x, y, width, height };\n};\n\nexport const selectionFromPointerRange = (\n start: BytePos,\n end: BytePos,\n mode: 'contiguous' | 'rectangular',\n columns: number\n): Selection => {\n const bpr = bytesPerRow(columns);\n\n if (mode === 'contiguous') {\n const s = min(start, end);\n const e = max(start, end);\n return {\n kind: 'contiguous',\n start: s,\n end: e,\n };\n }\n\n const startX = start % bpr;\n const startY = Math.floor(start / bpr);\n const endX = end % bpr;\n const endY = Math.floor(end / bpr);\n\n const x = min(startX, endX);\n const y = min(startY, endY);\n const width = Math.abs(endX - startX) + 1;\n const height = Math.abs(endY - startY) + 1;\n\n return { kind: 'rectangular', x, y, width, height };\n};\n","import type { ColourMap } from './colour.js';\nimport type { BytePos, ColourScheme, Diff, EditState, Selection } from './types.js';\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { createShadeMap, getAsciiClass } from './colour.js';\n\nimport { applyDiff, clearChangeset, createHexStore, getChangeset, readByte, reverseDiff, length as storeLength, writeByte, writeBytes } from './data.js';\nimport { createUndoRedoStack, push as pushDiff, redo as redoDiff, undo as undoDiff } from './diff.js';\nimport { bytesPerRow, clampPos, extendContiguous, extendRectangular, getCursorPos, getSelectedPositions, moveSelection, selectionContains, selectionFromPointerRange } from './selection.js';\nimport { isContiguousSelection, isRectangularSelection } from './types.js';\n\ntype PointerMode = `pending` | `drag-value` | `select-cont` | `select-rect` | null;\n\ntype DragStart = {\n pos: BytePos;\n startValue: number;\n startY: number;\n startX: number;\n};\n\n@customElement(`ixfx-hex-editor`)\nexport class IxfxHexEditorElement extends LitElement {\n @property({ type: Number })\n columns = 4;\n\n @property({ type: String })\n colourScheme: ColourScheme = `ascii`;\n\n @property({ type: Boolean })\n showChangeset = true;\n\n @property({ type: Boolean, attribute: `hide-offset-col` })\n hideOffsetCol = false;\n\n @property({ type: Boolean, attribute: `hide-hex-col` })\n hideHexCol = false;\n\n @property({ type: Boolean, attribute: `hide-text-col` })\n hideTextCol = false;\n\n @state()\n private _selection: Selection = null;\n\n @state()\n private _scrollTop = 0;\n\n @state()\n private _editState: EditState | null = null;\n\n @state()\n private _containerH = 0;\n\n @state()\n private _shadeMap: ColourMap | null = null;\n\n @state()\n private _focusSide: `hex` | `text` | null = null;\n\n private _store = createHexStore(new Uint8Array(0));\n private _undoStack = createUndoRedoStack();\n private _copyBuffer: Uint8Array | null = null;\n private _rowHeight = 24;\n private _dragStart: DragStart | null = null;\n private _dragAnchor: BytePos | null = null;\n private _rectAnchorX = 0;\n private _rectAnchorY = 0;\n private _rectAnchorXFromKeyboard = 0;\n private _rectAnchorYFromKeyboard = 0;\n private _initialSelectionPoint: BytePos = 0;\n private _currentCursorPoint: BytePos = 0;\n private _pointerMode: PointerMode = null;\n private _currentDragDiff: Diff | null = null;\n private _shiftClickTarget: BytePos | null = null;\n\n static styles = css`\n :host {\n --hex-row-height: 24px;\n --hex-offset-width: 8ch;\n --hex-font: monospace;\n --hex-font-size: 0.85rem;\n --hex-changed-weight: bold;\n\n --ascii-null: #808080;\n --ascii-printable: #4caf50;\n --ascii-whitespace: #ffffff;\n --ascii-control: #f48fb1;\n --ascii-other: #ffeb3b;\n\n --shade-null: #808080;\n --shade-max: #ffffff;\n --shade-step-start: #ff0000;\n --shade-step-end: #0000ff;\n\n display: block;\n font-family: var(--hex-font);\n font-size: var(--hex-font-size);\n }\n\n .hex-editor {\n display: flex;\n flex-direction: column;\n height: 300px;\n overflow: hidden;\n background: #1e1e1e;\n color: #e0e0e0;\n border: 1px solid #333;\n border-radius: 4px;\n }\n\n .scroll-container {\n flex: 1;\n overflow-y: auto;\n position: relative;\n }\n\n .header {\n display: flex;\n background: #2d2d2d;\n font-weight: bold;\n border-bottom: 1px solid #444;\n height: var(--hex-row-height);\n flex-shrink: 0;\n align-items: center;\n }\n\n .row {\n display: flex;\n height: var(--hex-row-height);\n align-items: center;\n }\n\n .row:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n\n .offset-cell {\n width: var(--hex-offset-width);\n padding: 0 8px;\n text-align: right;\n color: #888;\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n .col-group {\n display: inline-flex;\n gap: 4px;\n margin-right: 16px;\n }\n\n .col-header {\n width: calc(8ch + 28px);\n padding: 0 8px;\n color: #555;\n text-align: right;\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n .col-header.active {\n color: #aaa;\n }\n\n .text-header {\n padding: 4px 8px;\n color: #555;\n width: calc(var(--columns, 4) * 4 * 1ch);\n box-sizing: border-box;\n flex-shrink: 0;\n }\n\n .text-header.active {\n color: #aaa;\n }\n\n .hex-cell, .text-char {\n display: inline-block;\n width: 2ch;\n text-align: center;\n cursor: pointer;\n user-select: none;\n padding: 2px 0;\n }\n\n .hex-cell.selected, .text-char.selected {\n background: rgba(100, 149, 237, 0.4);\n }\n\n .hex-cell.changed, .text-char.changed {\n font-weight: var(--hex-changed-weight);\n }\n\n .hex-cell.editing {\n background: rgba(255, 215, 0, 0.3);\n }\n\n\n .text-area {\n display: inline-flex;\n gap: 0;\n }\n\n .text-char {\n width: 1ch;\n text-align: left;\n }\n\n .byte-null { color: var(--ascii-null); }\n .byte-printable { color: var(--ascii-printable); }\n .byte-whitespace { color: var(--ascii-whitespace); }\n .byte-control { color: var(--ascii-control); }\n .byte-other { color: var(--ascii-other); }\n `;\n\n setData(data: Uint8Array): void {\n this._store = createHexStore(data);\n this._undoStack = createUndoRedoStack();\n this._selection = null;\n this._editState = null;\n this._scrollTop = 0;\n this.requestUpdate();\n }\n\n undo(): void {\n const diff = undoDiff(this._undoStack);\n if (!diff)\n return;\n const reverse = reverseDiff(diff);\n applyDiff(this._store, reverse);\n this.requestUpdate();\n }\n\n redo(): void {\n const diff = redoDiff(this._undoStack);\n if (!diff)\n return;\n applyDiff(this._store, diff);\n this.requestUpdate();\n }\n\n recomputeColours(): void {\n const style = getComputedStyle(this);\n const nullC = style.getPropertyValue(`--shade-null`).trim() || `#808080`;\n const maxC = style.getPropertyValue(`--shade-max`).trim() || `#ffffff`;\n const stepStart = style.getPropertyValue(`--shade-step-start`).trim() || `#ff0000`;\n const stepEnd = style.getPropertyValue(`--shade-step-end`).trim() || `#0000ff`;\n this._shadeMap = createShadeMap(nullC, maxC, stepStart, stepEnd);\n this.requestUpdate();\n }\n\n * selectedBytes(): Generator<{ selection_index: number; array_index: number; value: number }> {\n const positions = getSelectedPositions(this._selection, this.columns);\n for (let i = 0; i < positions.length; i++) {\n const pos = positions[i];\n yield {\n selection_index: i,\n array_index: pos,\n value: readByte(this._store, pos),\n };\n }\n }\n\n containsPosition(pos: number): boolean {\n return selectionContains(this._selection, pos as BytePos, this.columns);\n }\n\n selectSingle(position: number): void {\n this._selection = { kind: `single`, pos: position as BytePos };\n this._dispatchSelectEvent();\n this.requestUpdate();\n }\n\n selectContiguous(start: number, end: number): void {\n this._selection = {\n kind: `contiguous`,\n start: start as BytePos,\n end: end as BytePos,\n };\n this._dispatchSelectEvent();\n this.requestUpdate();\n }\n\n selectRectangular(x: number, y: number, width: number, height: number): void {\n this._selection = {\n kind: `rectangular`,\n x,\n y,\n width,\n height,\n };\n this._dispatchSelectEvent();\n this.requestUpdate();\n }\n\n clearSelection(): void {\n this._selection = null;\n this._dispatchSelectEvent();\n this.requestUpdate();\n }\n\n getSelection(): Selection {\n return this._selection;\n }\n\n protected override firstUpdated(): void {\n const container = this.shadowRoot?.querySelector(`.scroll-container`);\n if (container) {\n const ro = new ResizeObserver((entries) => {\n this._containerH = entries[0].contentRect.height;\n this.requestUpdate();\n });\n ro.observe(container);\n this._containerH = container.clientHeight;\n }\n this.recomputeColours();\n }\n\n private _onScroll = (e: Event): void => {\n const target = e.target as HTMLElement;\n this._scrollTop = target.scrollTop;\n this.requestUpdate();\n };\n\n private _onPointerDown(pos: BytePos, side: `hex` | `text`, e: PointerEvent): void {\n e.preventDefault();\n if (e.button !== 0)\n return;\n\n (this.shadowRoot?.querySelector(`.hex-editor`) as HTMLElement)?.focus();\n this._focusSide = side;\n\n const target = e.target as Element;\n target.setPointerCapture(e.pointerId);\n\n const bpr = bytesPerRow(this.columns);\n const startX = pos % bpr;\n const startY = Math.floor(pos / bpr);\n\n if (e.metaKey || e.ctrlKey) {\n this._pointerMode = `select-rect`;\n this._dragAnchor = pos;\n this._rectAnchorX = startX;\n this._rectAnchorY = startY;\n } else if (e.shiftKey) {\n this._pointerMode = `select-cont`;\n if (!this._selection || this._selection.kind !== `single`) {\n this._dragAnchor = pos;\n } else {\n this._dragAnchor = this._selection.pos;\n this._shiftClickTarget = pos;\n }\n } else {\n this._pointerMode = `pending`;\n this._dragStart = { pos, startValue: readByte(this._store, pos), startY: e.clientY, startX: e.clientX };\n this._dragAnchor = pos;\n this._currentDragDiff = null;\n }\n }\n\n private _onPointerMove(pos: BytePos, _side: `hex` | `text`, e: PointerEvent): void {\n if (!this._dragStart)\n return;\n\n const dy = Math.abs(e.clientY - this._dragStart.startY);\n const dx = Math.abs(e.clientX - this._dragStart.startX);\n\n if (this._pointerMode === `pending` && dy > 4 && dy > dx) {\n this._pointerMode = `drag-value`;\n this._editState = null;\n }\n\n if (this._pointerMode === `drag-value`) {\n const delta = Math.round((e.clientY - this._dragStart.startY) / 4);\n const newValue = Math.max(0, Math.min(255, this._dragStart.startValue - delta));\n this._currentDragDiff = writeByte(this._store, pos, newValue);\n this.requestUpdate();\n }\n\n if (this._pointerMode === `select-cont`) {\n if (this._dragAnchor !== null) {\n const mode = `contiguous`;\n this._selection = selectionFromPointerRange(this._dragAnchor, pos, mode, this.columns);\n this._dispatchSelectEvent();\n }\n }\n\n if (this._pointerMode === `select-rect`) {\n const bpr = bytesPerRow(this.columns);\n const currentX = pos % bpr;\n const currentY = Math.floor(pos / bpr);\n const x = Math.min(this._rectAnchorX, currentX);\n const y = Math.min(this._rectAnchorY, currentY);\n const width = Math.abs(currentX - this._rectAnchorX) + 1;\n const height = Math.abs(currentY - this._rectAnchorY) + 1;\n this._selection = { kind: `rectangular`, x, y, width, height };\n this._dispatchSelectEvent();\n }\n }\n\n private _onPointerUp(pos: BytePos, side: `hex` | `text`, e: PointerEvent): void {\n const target = e.target as Element;\n target.releasePointerCapture(e.pointerId);\n\n if (this._pointerMode === `pending`) {\n this._selection = { kind: `single`, pos };\n this._initialSelectionPoint = pos;\n this._currentCursorPoint = pos;\n this._editState = { pos, side, partial: `` };\n this._dispatchSelectEvent();\n }\n\n if (this._pointerMode === `select-cont`) {\n if (this._dragAnchor !== null && this._shiftClickTarget !== null) {\n this._selection = {\n kind: `contiguous`,\n start: this._dragAnchor,\n end: this._shiftClickTarget,\n };\n this._initialSelectionPoint = Math.min(this._dragAnchor, this._shiftClickTarget);\n this._currentCursorPoint = Math.max(this._dragAnchor, this._shiftClickTarget);\n this._dispatchSelectEvent();\n } else if (this._dragAnchor !== null) {\n const mode = `contiguous`;\n this._selection = selectionFromPointerRange(this._dragAnchor, pos, mode, this.columns);\n this._initialSelectionPoint = this._dragAnchor;\n this._currentCursorPoint = pos;\n this._dispatchSelectEvent();\n }\n }\n\n if (this._pointerMode === `select-rect`) {\n const bpr = bytesPerRow(this.columns);\n const currentX = pos % bpr;\n const currentY = Math.floor(pos / bpr);\n const x = Math.min(this._rectAnchorX, currentX);\n const y = Math.min(this._rectAnchorY, currentY);\n const width = Math.abs(currentX - this._rectAnchorX) + 1;\n const height = Math.abs(currentY - this._rectAnchorY) + 1;\n this._selection = { kind: `rectangular`, x, y, width, height };\n this._dispatchSelectEvent();\n }\n\n if (this._pointerMode === `drag-value` && this._currentDragDiff) {\n pushDiff(this._undoStack, this._currentDragDiff);\n this._dispatchChangeEvent(this._currentDragDiff);\n }\n\n this._pointerMode = null;\n this._dragStart = null;\n this._dragAnchor = null;\n this._currentDragDiff = null;\n this._shiftClickTarget = null;\n }\n\n private _onKeyDown = (e: KeyboardEvent): void => {\n const isNavigationKey = [`ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown`].includes(e.key);\n\n if (isNavigationKey) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this._editState) {\n this._editState = null;\n }\n\n const dir = e.key.replace(`Arrow`, ``).toLowerCase() as `left` | `right` | `up` | `down`;\n const dataLen = storeLength(this._store);\n const bpr = bytesPerRow(this.columns);\n\n if (e.metaKey || e.ctrlKey) {\n if (!this._selection || this._selection.kind !== `rectangular`) {\n let startPos = 0;\n if (this._selection?.kind === `single`) {\n startPos = this._selection.pos;\n } else if (this._selection?.kind === `contiguous`) {\n startPos = Math.min(this._selection.start, this._selection.end);\n }\n this._rectAnchorXFromKeyboard = startPos % bpr;\n this._rectAnchorYFromKeyboard = Math.floor(startPos / bpr);\n this._selection = { kind: `rectangular`, x: this._rectAnchorXFromKeyboard, y: this._rectAnchorYFromKeyboard, width: 1, height: 1 };\n }\n this._selection = extendRectangular(this._selection, dir, this.columns, dataLen, this._rectAnchorXFromKeyboard, this._rectAnchorYFromKeyboard);\n } else if (e.shiftKey) {\n if (!this._selection) {\n this._initialSelectionPoint = 0;\n this._currentCursorPoint = 0;\n } else if (this._selection.kind === `single`) {\n this._initialSelectionPoint = this._selection.pos;\n this._currentCursorPoint = this._selection.pos;\n } else if (this._selection.kind === `rectangular`) {\n const cursorPos = this._selection.y * bpr + this._selection.x;\n this._initialSelectionPoint = cursorPos;\n this._currentCursorPoint = cursorPos;\n }\n const newPos = getCursorPos(this._selection, dir, this.columns, dataLen);\n const start = Math.min(this._initialSelectionPoint, newPos);\n const end = Math.max(this._initialSelectionPoint, newPos);\n this._currentCursorPoint = newPos;\n this._selection = { kind: `contiguous`, start, end };\n } else {\n this._selection = moveSelection(this._selection, dir, this.columns, dataLen);\n const pos = getCursorPos(this._selection, dir, this.columns, dataLen);\n this._initialSelectionPoint = pos;\n this._currentCursorPoint = pos;\n }\n this._dispatchSelectEvent();\n this.requestUpdate();\n return;\n }\n\n if (e.key === `Tab`) {\n e.preventDefault();\n e.stopPropagation();\n if (this._editState) {\n this._advanceCursor();\n } else {\n const dataLen = storeLength(this._store);\n this._selection = moveSelection(this._selection, `right`, this.columns, dataLen);\n this._dispatchSelectEvent();\n }\n this.requestUpdate();\n return;\n }\n\n if (e.key === `Escape`) {\n e.preventDefault();\n e.stopPropagation();\n if (this._editState) {\n this._editState = null;\n } else if (this._selection && this._selection.kind !== `single`) {\n const sel = this._selection;\n let firstPos = 0;\n if ((sel as { kind: string }).kind === `contiguous`) {\n const c = sel as { start: number; end: number };\n firstPos = Math.min(c.start, c.end);\n }\n if ((sel as { kind: string }).kind === `rectangular`) {\n const r = sel as { y: number; x: number };\n firstPos = r.y * bytesPerRow(this.columns) + r.x;\n }\n this._selection = { kind: `single`, pos: firstPos };\n this._dispatchSelectEvent();\n }\n this.requestUpdate();\n return;\n }\n\n if (this._editState) {\n e.stopPropagation();\n\n if (e.key === `Backspace`) {\n this._handleBackspace();\n return;\n }\n\n if (e.key === `Enter`) {\n if (this._editState.side === `hex` && this._editState.partial.startsWith(`.`)) {\n this._commitDecimalValue();\n }\n return;\n }\n\n if (e.key.length === 1) {\n this._handleValueEntry(e.key);\n }\n return;\n }\n\n if (this._selection && this._selection.kind === `single` && e.key.length === 1) {\n e.preventDefault();\n e.stopPropagation();\n const pos = this._selection.pos;\n const side: `hex` | `text` = this._focusSide ?? `hex`;\n this._editState = { pos, side, partial: `` };\n this._handleValueEntry(e.key);\n }\n };\n\n private _handleBackspace(): void {\n if (!this._editState)\n return;\n this._editState = { ...this._editState, partial: `` };\n this.requestUpdate();\n }\n\n private _handleValueEntry(key: string): void {\n if (!this._editState)\n return;\n\n const { pos, side, partial } = this._editState;\n\n if (side === `text`) {\n if (key.length === 1 && key.charCodeAt(0) >= 0x20 && key.charCodeAt(0) <= 0x7E) {\n const value = key.charCodeAt(0);\n const diff = writeByte(this._store, pos, value);\n pushDiff(this._undoStack, diff);\n this._dispatchChangeEvent(diff);\n this._advanceCursor();\n }\n return;\n }\n\n if (partial === `` && key === `.`) {\n this._editState = { ...this._editState, partial: `.` };\n this.requestUpdate();\n return;\n }\n\n if (partial.startsWith(`.`)) {\n if (/\\d/.test(key)) {\n let newPartial = partial + key;\n if (Number(newPartial.slice(1)) > 255) {\n newPartial = `.255`;\n }\n this._editState = { ...this._editState, partial: newPartial };\n this.requestUpdate();\n }\n return;\n }\n\n const hexChars = `0123456789ABCDEFabcdef`;\n if (hexChars.includes(key)) {\n const newPartial = (partial + key.toUpperCase()).slice(-2);\n this._editState = { ...this._editState, partial: newPartial };\n this.requestUpdate();\n\n if (newPartial.length === 2) {\n const value = Number.parseInt(newPartial, 16);\n const diff = writeByte(this._store, pos, value);\n pushDiff(this._undoStack, diff);\n this._dispatchChangeEvent(diff);\n this._advanceCursor();\n }\n } else if (partial !== ``) {\n this._editState = { ...this._editState, partial: `` };\n this.requestUpdate();\n }\n }\n\n private _commitDecimalValue(): void {\n if (!this._editState)\n return;\n const value = Number.parseInt(this._editState.partial.slice(1), 10);\n if (!isNaN(value)) {\n const diff = writeByte(this._store, this._editState.pos, value);\n pushDiff(this._undoStack, diff);\n this._dispatchChangeEvent(diff);\n this._advanceCursor();\n }\n }\n\n private _advanceCursor(): void {\n if (!this._editState)\n return;\n const dataLen = storeLength(this._store);\n const newPos = clampPos(this._editState.pos + 1, dataLen);\n this._editState = { pos: newPos, side: this._editState.side, partial: `` };\n this._selection = { kind: `single`, pos: newPos };\n this.requestUpdate();\n }\n\n private _dispatchChangeEvent(diff: Diff): void {\n this.dispatchEvent(new CustomEvent(`hex-change`, {\n detail: { diff },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _dispatchSelectEvent(): void {\n const sel = this._selection;\n let detail: SelectEventDetail;\n\n if (!sel) {\n detail = { type: `none` };\n } else if (sel.kind === `single`) {\n detail = { type: `single`, position: sel.pos };\n } else if (sel.kind === `contiguous`) {\n detail = { type: `contiguous`, start: sel.start, end: sel.end };\n } else if (sel.kind === `rectangular`) {\n detail = { type: `rectangular`, x: sel.x, y: sel.y, width: sel.width, height: sel.height };\n } else {\n detail = { type: `none` };\n }\n\n this.dispatchEvent(new CustomEvent(`select`, {\n detail,\n bubbles: true,\n composed: true,\n }));\n }\n\n private _copy(): void {\n const positions = getSelectedPositions(this._selection, this.columns);\n if (positions.length === 0)\n return;\n\n const bytes = positions.map((p: BytePos) => readByte(this._store, p));\n this._copyBuffer = new Uint8Array(bytes);\n\n const hexStr = bytes.map((b: number) => b.toString(16).padStart(2, `0`)).join(` `);\n navigator.clipboard?.writeText(hexStr).catch(() => {});\n }\n\n private async _paste(): Promise<void> {\n let bytes: number[] | null = null;\n\n try {\n const text = await navigator.clipboard?.readText();\n if (text) {\n bytes = this._parseHexString(text);\n }\n } catch {\n // ignore\n }\n\n if (!bytes && this._copyBuffer) {\n bytes = Array.from(this._copyBuffer);\n }\n\n if (!bytes || bytes.length === 0)\n return;\n\n if (!this._selection)\n return;\n\n const entries = new Map<BytePos, number>();\n\n if (this._selection.kind === `single`) {\n const startPos = this._selection.pos;\n const dataLen = storeLength(this._store);\n for (let i = 0; i < bytes.length && startPos + i < dataLen; i++) {\n entries.set(startPos + i, bytes[i]);\n }\n } else if (this._selection.kind === `contiguous`) {\n const startPos = Math.min(this._selection.start, this._selection.end);\n const endPos = Math.max(this._selection.start, this._selection.end);\n const available = endPos - startPos + 1;\n for (let i = 0; i < Math.min(bytes.length, available); i++) {\n entries.set(startPos + i, bytes[i]);\n }\n } else if (this._selection.kind === `rectangular`) {\n const { x, y, width, height } = this._selection;\n const bpr = bytesPerRow(this.columns);\n let byteIdx = 0;\n for (let row = 0; row < height && byteIdx < bytes.length; row++) {\n for (let col = 0; col < width && byteIdx < bytes.length; col++) {\n const pos = (y + row) * bpr + x + col;\n entries.set(pos, bytes[byteIdx++]);\n }\n }\n }\n\n if (entries.size > 0) {\n const diff = writeBytes(this._store, entries);\n pushDiff(this._undoStack, diff);\n this._dispatchChangeEvent(diff);\n this.requestUpdate();\n }\n }\n\n private _parseHexString(text: string): number[] {\n const bytes: number[] = [];\n const cleaned = text.replace(/[^0-9A-F]/gi, ` `).trim();\n if (!cleaned)\n return bytes;\n\n const parts = cleaned.split(/\\s+/);\n for (const part of parts) {\n if (part.length === 1) {\n bytes.push(Number.parseInt(part + part, 16));\n } else if (part.length === 2) {\n bytes.push(Number.parseInt(part, 16));\n }\n }\n return bytes;\n }\n\n private _getColHeaders(): string[] {\n const headers: string[] = [];\n for (let i = 0; i < this.columns; i++) {\n const offset = i * 4;\n headers.push(`+${offset.toString(16).toUpperCase()}`);\n }\n return headers;\n }\n\n private _isRowShaded(pos: BytePos): boolean {\n const sel = this._selection;\n if (!sel || sel.kind !== `single`)\n return true;\n const bpr = bytesPerRow(this.columns);\n const row = Math.floor(pos / bpr);\n const selRow = Math.floor(sel.pos / bpr);\n return row === selRow;\n }\n\n private _isHexShaded(pos: BytePos): boolean {\n return this._isRowShaded(pos);\n }\n\n private _isTextShaded(pos: BytePos): boolean {\n return this._isRowShaded(pos);\n }\n\n protected render() {\n const dataLen = storeLength(this._store);\n const bpr = bytesPerRow(this.columns);\n const totalRows = Math.ceil(dataLen / bpr);\n const containerH = this._containerH > 0 ? this._containerH : 280;\n const startRow = Math.floor(this._scrollTop / this._rowHeight);\n const endRow = Math.min(startRow + Math.ceil(containerH / this._rowHeight) + 2, totalRows);\n const topSpacerHeight = startRow * this._rowHeight;\n const botSpacerHeight = (totalRows - endRow) * this._rowHeight;\n const changeset = getChangeset(this._store);\n\n const colHeaders = this._getColHeaders();\n const hexActive = this._focusSide === `hex` || this._focusSide === null;\n const textActive = this._focusSide === `text`;\n\n return html`\n <div class=\"hex-editor\" tabindex=\"0\" @keydown=${this._onKeyDown} @pointerleave=${() => {}}>\n <div class=\"header\">\n ${this.hideOffsetCol ? null : html`<span class=\"offset-cell\">Offset</span>`}\n ${this.hideHexCol ? null : repeat(colHeaders, h => html`<span class=\"col-header ${hexActive ? `active` : ``}\">${h}</span>`)}\n ${this.hideTextCol ? null : html`<span class=\"text-header ${textActive ? `active` : ``}\">Text</span>`}\n </div>\n <div class=\"scroll-container\" @scroll=${this._onScroll}>\n <div style=\"height: ${topSpacerHeight}px\"></div>\n ${repeat(\n Array.from({ length: endRow - startRow }, (_, i) => startRow + i),\n rowIndex => rowIndex,\n rowIndex => this._renderRow(rowIndex, changeset),\n )}\n <div style=\"height: ${botSpacerHeight}px\"></div>\n </div>\n </div>\n `;\n }\n\n private _renderRow(rowIndex: number, changeset: ReadonlySet<BytePos>) {\n const bpr = bytesPerRow(this.columns);\n const offset = rowIndex * bpr;\n\n return html`\n <div class=\"row\" data-row=${rowIndex}>\n ${this.hideOffsetCol ? null : html`<span class=\"offset-cell\">${offset.toString(16).toUpperCase().padStart(6, `0`)}</span>`}\n ${this.hideHexCol\n ? null\n : repeat(\n Array.from({ length: this.columns }, (_, i) => i),\n colIndex => colIndex,\n colIndex => this._renderColumn(rowIndex, colIndex, changeset),\n )}\n ${this.hideTextCol\n ? null\n : html`\n <span class=\"text-area\">\n ${repeat(\n Array.from({ length: bpr }, (_, i) => i),\n i => i,\n i => this._renderTextChar(offset + i, changeset),\n )}\n </span>\n `}\n </div>\n `;\n }\n\n private _renderColumn(rowIndex: number, colIndex: number, changeset: ReadonlySet<BytePos>) {\n const bpr = bytesPerRow(this.columns);\n const basePos = rowIndex * bpr + colIndex * 4;\n\n return html`\n <span class=\"col-group\">\n ${[0, 1, 2, 3].map(b => this._renderHexCell(basePos + b, changeset))}\n </span>\n `;\n }\n\n private _renderHexCell(pos: BytePos, changeset: ReadonlySet<BytePos>) {\n const dataLen = storeLength(this._store);\n if (pos >= dataLen) {\n return html`<span class=\"hex-cell\"></span>`;\n }\n\n const byte = readByte(this._store, pos);\n const hexStr = byte.toString(16).toUpperCase().padStart(2, `0`);\n\n const isSelected = selectionContains(this._selection, pos, this.columns);\n const isChanged = this.showChangeset && changeset.has(pos);\n const isEditing = this._editState?.pos === pos;\n\n const classes: string[] = [`hex-cell`];\n if (isSelected)\n classes.push(`selected`);\n if (isChanged)\n classes.push(`changed`);\n if (isEditing)\n classes.push(`editing`);\n if (this._isHexShaded(pos))\n classes.push(`shaded`);\n\n let displayText = hexStr;\n let colourStyle: Record<string, string> | undefined;\n\n if (isEditing && this._editState) {\n displayText = this._editState.partial === `` ? hexStr : `${this._editState.partial}_`;\n }\n\n if (this.colourScheme === `shade` && this._shadeMap) {\n colourStyle = { color: this._shadeMap.forByte(byte) };\n } else if (this.colourScheme === `ascii`) {\n classes.push(getAsciiClass(byte));\n }\n\n return html`\n <span\n class=${classes.join(` `)}\n style=${styleMap(colourStyle || {})}\n @pointerdown=${(e: PointerEvent) => this._onPointerDown(pos, `hex`, e)}\n @pointerup=${(e: PointerEvent) => this._onPointerUp(pos, `hex`, e)}\n @pointermove=${(e: PointerEvent) => this._onPointerMove(pos, `hex`, e)}\n >${displayText}</span>\n `;\n }\n\n private _renderTextChar(pos: BytePos, changeset: ReadonlySet<BytePos>) {\n const dataLen = storeLength(this._store);\n if (pos >= dataLen) {\n return html`<span class=\"text-char\"></span>`;\n }\n\n const byte = readByte(this._store, pos);\n const char = byte >= 0x20 && byte <= 0x7E ? String.fromCharCode(byte) : `.`;\n\n const isSelected = selectionContains(this._selection, pos, this.columns);\n const isChanged = this.showChangeset && changeset.has(pos);\n\n const classes: string[] = [`text-char`];\n if (isSelected)\n classes.push(`selected`);\n if (isChanged)\n classes.push(`changed`);\n if (this._isTextShaded(pos))\n classes.push(`shaded`);\n\n let colourStyle: Record<string, string> | undefined;\n\n if (this.colourScheme === `shade` && this._shadeMap) {\n colourStyle = { color: this._shadeMap.forByte(byte) };\n } else if (this.colourScheme === `ascii`) {\n classes.push(getAsciiClass(byte));\n }\n\n return html`\n <span\n class=${classes.join(` `)}\n style=${styleMap(colourStyle || {})}\n @pointerdown=${(e: PointerEvent) => this._onPointerDown(pos, `text`, e)}\n @pointerup=${(e: PointerEvent) => this._onPointerUp(pos, `text`, e)}\n @pointermove=${(e: PointerEvent) => this._onPointerMove(pos, `text`, e)}\n >${char}</span>\n `;\n }\n}\n\nexport type HexChangeDetail = {\n readonly diff: Diff;\n};\n\nexport type HexChangeEvent = CustomEvent<HexChangeDetail>;\n\nexport type SingleSelectEventDetail = { readonly type: `single`; readonly position: number };\nexport type ContiguousSelectEventDetail = { readonly type: `contiguous`; readonly start: number; readonly end: number };\nexport type RectangularSelectEventDetail = { readonly type: `rectangular`; readonly x: number; readonly y: number; readonly width: number; readonly height: number };\nexport type NoneSelectEventDetail = { readonly type: `none` };\nexport type SelectEventDetail = SingleSelectEventDetail | ContiguousSelectEventDetail | RectangularSelectEventDetail | NoneSelectEventDetail;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-hex-editor': IxfxHexEditorElement;\n }\n}\n"],"mappings":"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"}
package/dist/hex.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { a as NoneSelectEventDetail, c as SingleSelectEventDetail, i as IxfxHexEditorElement, n as HexChangeDetail, o as RectangularSelectEventDetail, r as HexChangeEvent, s as SelectEventDetail, t as ContiguousSelectEventDetail } from "./hex-editor-Gib1Grg2.js";
2
+ export { ContiguousSelectEventDetail, HexChangeDetail, HexChangeEvent, IxfxHexEditorElement, NoneSelectEventDetail, RectangularSelectEventDetail, SelectEventDetail, SingleSelectEventDetail };
package/dist/hex.js ADDED
@@ -0,0 +1,2 @@
1
+ import { t as IxfxHexEditorElement } from "./hex-editor-Wd6ZtZA2.js";
2
+ export { IxfxHexEditorElement };
@@ -0,0 +1,50 @@
1
+ //#region src/incr-search/highlight.ts
2
+ const DEFAULT_KEY = `incr-search-highlight`;
3
+ function applyHighlights(targets, options = {}) {
4
+ if (typeof CSS === `undefined` || !CSS.highlights) return;
5
+ const key = options.key ?? DEFAULT_KEY;
6
+ CSS.highlights.delete(key);
7
+ const ranges = [];
8
+ for (const { element, text, positions } of targets) {
9
+ if (!positions.size) continue;
10
+ const textNode = findTextNode(element, text);
11
+ if (!textNode) continue;
12
+ for (const pos of positions) {
13
+ const range = new Range();
14
+ range.setStart(textNode, pos);
15
+ range.setEnd(textNode, pos + 1);
16
+ ranges.push(range);
17
+ }
18
+ }
19
+ if (ranges.length > 0) CSS.highlights.set(key, new Highlight(...ranges));
20
+ }
21
+ function clearHighlights(options = {}) {
22
+ if (typeof CSS === `undefined` || !CSS.highlights) return;
23
+ CSS.highlights.delete(options.key ?? DEFAULT_KEY);
24
+ }
25
+ function buildHighlightTargets(root, itemSelector, positionsByItem, getItem, getText) {
26
+ const targets = [];
27
+ const labelEls = root.querySelectorAll(itemSelector);
28
+ for (const el of labelEls) {
29
+ const item = getItem(el);
30
+ if (item === void 0) continue;
31
+ const positions = positionsByItem.get(item);
32
+ if (!positions || positions.size === 0) continue;
33
+ targets.push({
34
+ element: el,
35
+ text: getText(el),
36
+ positions
37
+ });
38
+ }
39
+ return targets;
40
+ }
41
+ const findTextNode = (element, expectedText) => {
42
+ for (const node of element.childNodes) if (node.nodeType === Node.TEXT_NODE) {
43
+ if (expectedText === void 0 || node.textContent === expectedText) return node;
44
+ }
45
+ return null;
46
+ };
47
+ //#endregion
48
+ export { buildHighlightTargets as n, clearHighlights as r, applyHighlights as t };
49
+
50
+ //# sourceMappingURL=highlight-CAjwQ4GE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-CAjwQ4GE.js","names":[],"sources":["../src/incr-search/highlight.ts"],"sourcesContent":["import type { HighlightOptions, HighlightTarget } from './types.js';\n\nconst DEFAULT_KEY = `incr-search-highlight`;\n\nexport function applyHighlights(\n targets: readonly HighlightTarget[],\n options: HighlightOptions = {},\n): void {\n if (typeof CSS === `undefined` || !CSS.highlights) return;\n\n const key = options.key ?? DEFAULT_KEY;\n CSS.highlights.delete(key);\n\n const ranges: Range[] = [];\n\n for (const { element, text, positions } of targets) {\n if (!positions.size) continue;\n\n const textNode = findTextNode(element, text);\n if (!textNode) continue;\n\n for (const pos of positions) {\n const range = new Range();\n range.setStart(textNode, pos);\n range.setEnd(textNode, pos + 1);\n ranges.push(range);\n }\n }\n\n if (ranges.length > 0) {\n CSS.highlights.set(key, new Highlight(...ranges));\n }\n}\n\nexport function clearHighlights(options: HighlightOptions = {}): void {\n if (typeof CSS === `undefined` || !CSS.highlights) return;\n CSS.highlights.delete(options.key ?? DEFAULT_KEY);\n}\n\nexport function buildHighlightTargets<T>(\n root: ShadowRoot | Element,\n itemSelector: string,\n positionsByItem: ReadonlyMap<T, ReadonlySet<number>>,\n getItem: (el: Element) => T | undefined,\n getText: (el: Element) => string,\n): HighlightTarget[] {\n const targets: HighlightTarget[] = [];\n const labelEls = root.querySelectorAll(itemSelector);\n\n for (const el of labelEls) {\n const item = getItem(el);\n if (item === undefined) continue;\n const positions = positionsByItem.get(item);\n if (!positions || positions.size === 0) continue;\n targets.push({ element: el, text: getText(el), positions });\n }\n\n return targets;\n}\n\nconst findTextNode = (element: Element, expectedText?: string): Text | null => {\n for (const node of element.childNodes) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (expectedText === undefined || node.textContent === expectedText) {\n return node as Text;\n }\n }\n }\n return null;\n};\n"],"mappings":";AAEA,MAAM,cAAc;AAEpB,SAAgB,gBACd,SACA,UAA4B,EAAE,EACxB;AACN,KAAI,OAAO,QAAQ,eAAe,CAAC,IAAI,WAAY;CAEnD,MAAM,MAAM,QAAQ,OAAO;AAC3B,KAAI,WAAW,OAAO,IAAI;CAE1B,MAAM,SAAkB,EAAE;AAE1B,MAAK,MAAM,EAAE,SAAS,MAAM,eAAe,SAAS;AAClD,MAAI,CAAC,UAAU,KAAM;EAErB,MAAM,WAAW,aAAa,SAAS,KAAK;AAC5C,MAAI,CAAC,SAAU;AAEf,OAAK,MAAM,OAAO,WAAW;GAC3B,MAAM,QAAQ,IAAI,OAAO;AACzB,SAAM,SAAS,UAAU,IAAI;AAC7B,SAAM,OAAO,UAAU,MAAM,EAAE;AAC/B,UAAO,KAAK,MAAM;;;AAItB,KAAI,OAAO,SAAS,EAClB,KAAI,WAAW,IAAI,KAAK,IAAI,UAAU,GAAG,OAAO,CAAC;;AAIrD,SAAgB,gBAAgB,UAA4B,EAAE,EAAQ;AACpE,KAAI,OAAO,QAAQ,eAAe,CAAC,IAAI,WAAY;AACnD,KAAI,WAAW,OAAO,QAAQ,OAAO,YAAY;;AAGnD,SAAgB,sBACd,MACA,cACA,iBACA,SACA,SACmB;CACnB,MAAM,UAA6B,EAAE;CACrC,MAAM,WAAW,KAAK,iBAAiB,aAAa;AAEpD,MAAK,MAAM,MAAM,UAAU;EACzB,MAAM,OAAO,QAAQ,GAAG;AACxB,MAAI,SAAS,KAAA,EAAW;EACxB,MAAM,YAAY,gBAAgB,IAAI,KAAK;AAC3C,MAAI,CAAC,aAAa,UAAU,SAAS,EAAG;AACxC,UAAQ,KAAK;GAAE,SAAS;GAAI,MAAM,QAAQ,GAAG;GAAE;GAAW,CAAC;;AAG7D,QAAO;;AAGT,MAAM,gBAAgB,SAAkB,iBAAuC;AAC7E,MAAK,MAAM,QAAQ,QAAQ,WACzB,KAAI,KAAK,aAAa,KAAK;MACrB,iBAAiB,KAAA,KAAa,KAAK,gBAAgB,aACrD,QAAO;;AAIb,QAAO"}
@@ -0,0 +1,100 @@
1
+ import { r as iconBus, t as getIcon } from "./registry-CZEB1YI9.js";
2
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
3
+ import { LitElement, css, html, nothing } from "lit";
4
+ import { customElement, property } from "lit/decorators.js";
5
+ import "lit/directives/style-map.js";
6
+ import { unsafeHTML } from "lit/directives/unsafe-html.js";
7
+ //#region src/icons/icon.ts
8
+ let IxfxIconElement = class IxfxIconElement extends LitElement {
9
+ constructor(..._args) {
10
+ super(..._args);
11
+ this.name = ``;
12
+ this.label = ``;
13
+ this.prominence = false;
14
+ this.rotate = ``;
15
+ this.#onIconChange = (e) => {
16
+ if (e.detail.name === this.name) this.requestUpdate();
17
+ };
18
+ }
19
+ #onIconChange;
20
+ connectedCallback() {
21
+ super.connectedCallback();
22
+ iconBus.addEventListener(`ixfx-icon-change`, this.#onIconChange);
23
+ }
24
+ disconnectedCallback() {
25
+ super.disconnectedCallback();
26
+ iconBus.removeEventListener(`ixfx-icon-change`, this.#onIconChange);
27
+ }
28
+ render() {
29
+ const svg = getIcon(this.name);
30
+ if (!svg) return nothing;
31
+ const hasLabel = this.label.length > 0;
32
+ return html`
33
+ <span
34
+ class="icon-wrapper"
35
+ aria-hidden=${hasLabel ? nothing : `true`}
36
+ aria-label=${hasLabel ? this.label : nothing}
37
+ >${unsafeHTML(svg)}</span>
38
+ `;
39
+ }
40
+ updated(changed) {
41
+ super.updated(changed);
42
+ if (changed.has(`rotate`)) if (this.rotate?.length > 0) this.style.setProperty(`--rotate`, this.rotate);
43
+ else this.style.removeProperty(`--rotate`);
44
+ }
45
+ static {
46
+ this.styles = css`
47
+ :host {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ width: 1em;
52
+ height: 1em;
53
+ opacity: var(--opacity, 1);
54
+ }
55
+
56
+ :host([prominence]) {
57
+ opacity: var(--prominence-idle-opacity, 1);
58
+ }
59
+
60
+ :host([prominence]:hover) {
61
+ opacity: var(--prominence-tickled-opacity, 1);
62
+ }
63
+
64
+ :host([prominence][disabled]) {
65
+ opacity: var(--prominence-disabled-opacity, 0.5);
66
+ }
67
+
68
+ .icon-wrapper {
69
+ display: contents;
70
+ }
71
+
72
+ :host svg {
73
+ width: 100%;
74
+ height: 100%;
75
+ transition: transform var(--transition, 0.15s ease-out);
76
+ }
77
+
78
+ :host([rotate]) svg {
79
+ transform: rotate(var(--rotate));
80
+ }
81
+ `;
82
+ }
83
+ };
84
+ __decorate([property()], IxfxIconElement.prototype, "name", void 0);
85
+ __decorate([property({ type: Number })], IxfxIconElement.prototype, "size", void 0);
86
+ __decorate([property()], IxfxIconElement.prototype, "label", void 0);
87
+ __decorate([property({
88
+ type: Boolean,
89
+ attribute: `prominence`
90
+ })], IxfxIconElement.prototype, "prominence", void 0);
91
+ __decorate([property({
92
+ type: String,
93
+ attribute: "rotate",
94
+ reflect: true
95
+ })], IxfxIconElement.prototype, "rotate", void 0);
96
+ IxfxIconElement = __decorate([customElement(`ixfx-icon`)], IxfxIconElement);
97
+ //#endregion
98
+ export { IxfxIconElement as t };
99
+
100
+ //# sourceMappingURL=icon-BR5aTIiP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-BR5aTIiP.js","names":["#onIconChange"],"sources":["../src/icons/icon.ts"],"sourcesContent":["import type { IconChangedEvent } from './registry.js';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { getIcon, iconBus } from './registry.js';\n\n/**\n * Renders an icon from the icon registry by name.\n *\n * @example\n * ```html\n * <ixfx-icon name=\"chevron-down\"></ixfx-icon>\n * <ixfx-icon name=\"close\" size=\"32\" label=\"Close dialog\"></ixfx-icon>\n * ```\n *\n * Use `registerIcon(name, svgString)` to add or override icons.\n */\n@customElement(`ixfx-icon`)\nexport class IxfxIconElement extends LitElement {\n @property() name = ``;\n @property({ type: Number }) size: number | undefined;\n @property() label = ``;\n @property({ type: Boolean, attribute: `prominence` }) prominence = false;\n @property({ type: String, attribute: 'rotate', reflect: true }) rotate = ``;\n\n #onIconChange = (e: Event): void => {\n if ((e as IconChangedEvent).detail.name === this.name) {\n this.requestUpdate();\n }\n };\n\n override connectedCallback(): void {\n super.connectedCallback();\n iconBus.addEventListener(`ixfx-icon-change`, this.#onIconChange);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n iconBus.removeEventListener(`ixfx-icon-change`, this.#onIconChange);\n }\n\n protected override render() {\n const svg = getIcon(this.name);\n if (!svg)\n return nothing;\n\n const hasLabel = this.label.length > 0;\n\n return html`\n <span\n class=\"icon-wrapper\"\n aria-hidden=${hasLabel ? nothing : `true`}\n aria-label=${hasLabel ? this.label : nothing}\n >${unsafeHTML(svg)}</span>\n `;\n }\n\n protected override updated(changed: Map<string, unknown>): void {\n super.updated(changed);\n if (changed.has(`rotate`)) {\n if (this.rotate?.length > 0) {\n this.style.setProperty(`--rotate`, this.rotate);\n } else {\n this.style.removeProperty(`--rotate`);\n }\n }\n }\n\n static override styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1em;\n height: 1em;\n opacity: var(--opacity, 1);\n }\n\n :host([prominence]) {\n opacity: var(--prominence-idle-opacity, 1);\n }\n\n :host([prominence]:hover) {\n opacity: var(--prominence-tickled-opacity, 1);\n }\n\n :host([prominence][disabled]) {\n opacity: var(--prominence-disabled-opacity, 0.5);\n }\n\n .icon-wrapper {\n display: contents;\n }\n\n :host svg {\n width: 100%;\n height: 100%;\n transition: transform var(--transition, 0.15s ease-out);\n }\n\n :host([rotate]) svg {\n transform: rotate(var(--rotate));\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-icon': IxfxIconElement;\n }\n}\n"],"mappings":";;;;;;;AAmBO,IAAA,kBAAA,MAAM,wBAAwB,WAAW;;;cAC3B;eAEC;oBAC+C;gBACM;wBAExD,MAAmB;AAClC,OAAK,EAAuB,OAAO,SAAS,KAAK,KAC/C,MAAK,eAAe;;;CAFxB;CAMA,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,UAAQ,iBAAiB,oBAAoB,MAAA,aAAmB;;CAGlE,uBAAsC;AACpC,QAAM,sBAAsB;AAC5B,UAAQ,oBAAoB,oBAAoB,MAAA,aAAmB;;CAGrE,SAA4B;EAC1B,MAAM,MAAM,QAAQ,KAAK,KAAK;AAC9B,MAAI,CAAC,IACH,QAAO;EAET,MAAM,WAAW,KAAK,MAAM,SAAS;AAErC,SAAO,IAAI;;;sBAGO,WAAW,UAAU,OAAO;qBAC7B,WAAW,KAAK,QAAQ,QAAQ;SAC5C,WAAW,IAAI,CAAC;;;CAIvB,QAA2B,SAAqC;AAC9D,QAAM,QAAQ,QAAQ;AACtB,MAAI,QAAQ,IAAI,SAAS,CACvB,KAAI,KAAK,QAAQ,SAAS,EACxB,MAAK,MAAM,YAAY,YAAY,KAAK,OAAO;MAE/C,MAAK,MAAM,eAAe,WAAW;;;gBAKlB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAjD3B,UAAU,CAAA,EAAA,gBAAA,WAAA,QAAA,KAAA,EAAA;YACV,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,gBAAA,WAAA,QAAA,KAAA,EAAA;YAC1B,UAAU,CAAA,EAAA,gBAAA,WAAA,SAAA,KAAA,EAAA;YACV,SAAS;CAAE,MAAM;CAAS,WAAW;CAAc,CAAC,CAAA,EAAA,gBAAA,WAAA,cAAA,KAAA,EAAA;YACpD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAU,SAAS;CAAM,CAAC,CAAA,EAAA,gBAAA,WAAA,UAAA,KAAA,EAAA;8BANhE,cAAc,YAAY,CAAA,EAAA,gBAAA"}
@@ -0,0 +1,36 @@
1
+ import * as _$lit from "lit";
2
+ import { LitElement, nothing } from "lit";
3
+
4
+ //#region src/icons/icon.d.ts
5
+ /**
6
+ * Renders an icon from the icon registry by name.
7
+ *
8
+ * @example
9
+ * ```html
10
+ * <ixfx-icon name="chevron-down"></ixfx-icon>
11
+ * <ixfx-icon name="close" size="32" label="Close dialog"></ixfx-icon>
12
+ * ```
13
+ *
14
+ * Use `registerIcon(name, svgString)` to add or override icons.
15
+ */
16
+ declare class IxfxIconElement extends LitElement {
17
+ #private;
18
+ name: string;
19
+ size: number | undefined;
20
+ label: string;
21
+ prominence: boolean;
22
+ rotate: string;
23
+ connectedCallback(): void;
24
+ disconnectedCallback(): void;
25
+ protected render(): typeof nothing | _$lit.TemplateResult<1>;
26
+ protected updated(changed: Map<string, unknown>): void;
27
+ static styles: _$lit.CSSResult;
28
+ }
29
+ declare global {
30
+ interface HTMLElementTagNameMap {
31
+ 'ixfx-icon': IxfxIconElement;
32
+ }
33
+ } //# sourceMappingURL=icon.d.ts.map
34
+ //#endregion
35
+ export { IxfxIconElement as t };
36
+ //# sourceMappingURL=icon-DQKdfR7U.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-DQKdfR7U.d.ts","names":[],"sources":["../src/icons/icon.ts"],"mappings":";;;;;;;AAkBA;;;;;;;;cACa,eAAA,SAAwB,UAAA;EAAA;EACvB,IAAA;EACgB,IAAA;EAChB,KAAA;EAC0C,UAAA;EACU,MAAA;EAQvD,iBAAA,CAAA;EAKA,oBAAA,CAAA;EAAA,UAKU,MAAA,CAAA,UAAM,OAAA,GAAA,KAAA,CAAA,cAAA;EAAA,UAgBN,OAAA,CAAQ,OAAA,EAAS,GAAA;EAAA,OAWpB,MAAA,EAXuB,KAAA,CAWjB,SAAA;AAAA;AAAA,QAsChB,MAAA;EAAA,UACI,qBAAA;IACR,WAAA,EAAa,eAAA;EAAA;AAAA"}
@@ -0,0 +1,3 @@
1
+ import { t as IxfxIconElement } from "./icon-DQKdfR7U.js";
2
+ import { a as iconBus, c as ICON_CARET_RIGHT, d as ICON_CLOSE, i as hasIcon, l as ICON_CHECK, n as IconChangedEvent, o as registerIcon, r as getIcon, s as svgToDataUri, t as IconChangedDetail, u as ICON_CHEVRON_DOWN } from "./index-B1hNR7Z9.js";
3
+ export { ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IconChangedDetail, IconChangedEvent, IxfxIconElement, getIcon, hasIcon, iconBus, registerIcon, svgToDataUri };
package/dist/icons.js ADDED
@@ -0,0 +1,9 @@
1
+ import { a as svgToDataUri, i as registerIcon, n as hasIcon, r as iconBus, t as getIcon } from "./registry-CZEB1YI9.js";
2
+ import { t as IxfxIconElement } from "./icon-BR5aTIiP.js";
3
+ import { a as registerDefaults, i as ICON_CLOSE, n as ICON_CHECK, r as ICON_CHEVRON_DOWN, t as ICON_CARET_RIGHT } from "./defaults-FEZaGiYZ.js";
4
+ //#region src/icons/index.ts
5
+ registerDefaults();
6
+ //#endregion
7
+ export { ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IxfxIconElement, getIcon, hasIcon, iconBus, registerIcon, svgToDataUri };
8
+
9
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","names":[],"sources":["../src/icons/index.ts"],"sourcesContent":["import { registerDefaults } from './defaults.js';\n\nexport { ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE } from './defaults.js';\nexport { IxfxIconElement } from './icon.js';\nexport { getIcon, hasIcon, iconBus, registerIcon, svgToDataUri } from './registry.js';\nexport type { IconChangedDetail, IconChangedEvent } from './registry.js';\n\nregisterDefaults();\n"],"mappings":";;;;AAOA,kBAAkB"}