@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,537 @@
1
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
2
+ import { LitElement, css, html, svg } from "lit";
3
+ import { customElement, property } from "lit/decorators.js";
4
+ //#region src/polar-pad/polar-pad.ts
5
+ /**
6
+ * <ixfx-polar-pad> — circular pad for setting polar coordinates (angle + radius).
7
+ *
8
+ * The user clicks or drags within a circle to position a marker. The marker's
9
+ * position encodes an angle (degrees, 0 = right, clockwise) and a radius (0–1).
10
+ *
11
+ * Properties / attributes
12
+ * angle – current angle in degrees (0 = right, clockwise). Default: 0
13
+ * radius – current radius 0–1 where 1 = edge. Default: 0.5
14
+ * rings – number of concentric rings to draw (0 = none). Default: 0
15
+ * rays – number of evenly-spaced radial spokes to draw (0 = none). Default: 0
16
+ * show-ray – draw a line from the origin to the marker
17
+ * show-origin – draw a dot at the centre
18
+ * hide-cursor – hide cursor during drag and hover (default: false)
19
+ * snap-value – when set, marker snaps to nearest ring/spoke depending on what's displayed
20
+ * disabled – disable all interaction (default: false)
21
+ *
22
+ * Customisable CSS variables:
23
+ *
24
+ * Pad background
25
+ * --pad-background – CSS `background` of the circular pad. Accepts any CSS background
26
+ * value: solid colour, conic-gradient(), radial-gradient(), etc.
27
+ * Dynamic CSS vars like --angle-deg / --radius-pct are available
28
+ * so the gradient can track the current marker position.
29
+ * Default: var(--surface-4)
30
+ * --pad-border-color – stroke of the outer circle (default: --surface-6)
31
+ * --pad-border-width – thickness of outer border (default: 1px)
32
+ *
33
+ * Marker
34
+ * --marker-size – diameter of the draggable marker (default: 10cqb)
35
+ * --marker-color – fill colour of the marker (default: --accent)
36
+ * --marker-opacity – opacity of the marker (default: 1)
37
+ * --marker-stroke – stroke colour of the marker (default: none)
38
+ * --marker-stroke-width – stroke thickness of the marker (default: 0)
39
+ *
40
+ * Origin dot (show-origin)
41
+ * --origin-size – diameter of the origin dot (default: 6cqb)
42
+ * --origin-color – fill colour of the origin dot (default: --accent)
43
+ * --origin-opacity – opacity of the origin dot (default: 1)
44
+ *
45
+ * Ray line (show-ray)
46
+ * --ray-color – stroke colour (default: --surface-6)
47
+ * --ray-width – thickness (default: 2px)
48
+ * --ray-opacity – opacity (default: 1)
49
+ * --ray-dash – stroke-dasharray value e.g. "4 2" (default: none)
50
+ *
51
+ * Concentric rings (rings > 0)
52
+ * --ring-color – stroke colour (default: --surface-6)
53
+ * --ring-width – thickness (default: 1px)
54
+ * --ring-opacity – opacity (default: 1)
55
+ * --ring-dash – stroke-dasharray e.g. "4 2" (default: none)
56
+ *
57
+ * Radial spokes (rays > 0)
58
+ * --spoke-color – stroke colour (default: --surface-6)
59
+ * --spoke-width – thickness (default: 1px)
60
+ * --spoke-opacity – opacity (default: 1)
61
+ * --spoke-dash – stroke-dasharray e.g. "4 2" (default: none)
62
+ *
63
+ * CSS variables set on host for external dynamic styling:
64
+ * --angle-deg – current angle as unitless number in degrees
65
+ * --angle-rad – current angle as unitless number in radians
66
+ * --radius-pct – current radius as unitless number 0–100
67
+ *
68
+ * Events
69
+ * input – CustomEvent<PolarPadInputDetail> { angle: number (deg), radius: number (0–1) }
70
+ * bubbles + composed, fires continuously during drag
71
+ * change – CustomEvent<PolarPadInputDetail> { angle: number (deg), radius: number (0–1) }
72
+ * bubbles + composed, fires when drag ends
73
+ */
74
+ const DEG_TO_RAD = Math.PI / 180;
75
+ const RAD_TO_DEG = 180 / Math.PI;
76
+ /**
77
+ * Convert polar (angle in radians, radius 0-1) to SVG coordinates.
78
+ * SVG viewBox 0 0 100 100; origin at (50,50); full radius = 50.
79
+ * Convention: 0 rad = right (+x), increases CLOCKWISE (+y = downward in SVG).
80
+ */
81
+ function polarToSvg(angleRad, radius) {
82
+ const r = radius * 50;
83
+ return {
84
+ x: 50 + Math.cos(angleRad) * r,
85
+ y: 50 + Math.sin(angleRad) * r
86
+ };
87
+ }
88
+ /**
89
+ * Convert SVG coordinates back to polar (angle in radians 0..2π, radius 0-1).
90
+ * SVG: Y increases downward. Convention: 0=right, CW positive.
91
+ */
92
+ function svgToPolar(svgX, svgY) {
93
+ const dx = svgX - 50;
94
+ const dy = svgY - 50;
95
+ const dist = Math.sqrt(dx * dx + dy * dy);
96
+ const radius = Math.min(1, dist / 50);
97
+ return {
98
+ angleRad: (Math.atan2(dy, dx) % (2 * Math.PI) + 2 * Math.PI) % (2 * Math.PI),
99
+ radius
100
+ };
101
+ }
102
+ const clamp01 = (v) => Math.max(0, Math.min(1, v));
103
+ function snapAngle(angleDeg, prevAngleDeg, rays, snapEnabled) {
104
+ if (rays <= 0 || !snapEnabled) return angleDeg;
105
+ const spokeDeg = 360 / rays;
106
+ const normalized = (angleDeg % 360 + 360) % 360;
107
+ const nearest = Math.round(normalized / spokeDeg) * spokeDeg;
108
+ const remainder = normalized % spokeDeg;
109
+ if (Math.abs(remainder) < 1e-4 || Math.abs(spokeDeg - remainder) < 1e-4) {
110
+ let delta = angleDeg - prevAngleDeg;
111
+ if (delta > 180) delta -= 360;
112
+ if (delta < -180) delta += 360;
113
+ return (nearest + (delta >= 0 ? 1 : -1) * spokeDeg + 360) % 360;
114
+ }
115
+ return nearest;
116
+ }
117
+ function snapRadius(radius, prevRadius, rings, snapEnabled) {
118
+ if (rings <= 0 || !snapEnabled) return radius;
119
+ const ringStep = 1 / rings;
120
+ const nearest = Math.round(radius / ringStep) * ringStep;
121
+ const remainder = radius % ringStep;
122
+ if (Math.abs(remainder) < 1e-4 || Math.abs(ringStep - remainder) < 1e-4) return Math.max(0, Math.min(1, nearest + (radius >= prevRadius ? 1 : -1) * ringStep));
123
+ return nearest;
124
+ }
125
+ function quantiseAngle(angleDeg, stops) {
126
+ if (!stops || stops <= 1) return angleDeg;
127
+ const stepDeg = 360 / stops;
128
+ const normalized = (angleDeg % 360 + 360) % 360;
129
+ return Math.round(normalized / stepDeg) * stepDeg;
130
+ }
131
+ function quantiseRadius(radius, stops) {
132
+ if (!stops || stops <= 1) return radius;
133
+ const step = 1 / stops;
134
+ return Math.round(radius / step) * step;
135
+ }
136
+ let PolarPad = class PolarPad extends LitElement {
137
+ constructor(..._args) {
138
+ super(..._args);
139
+ this.angle = 0;
140
+ this.radius = .5;
141
+ this.rings = 0;
142
+ this.rays = 0;
143
+ this.showRay = false;
144
+ this.showOrigin = false;
145
+ this.hideCursor = false;
146
+ this.snapValue = false;
147
+ this.disabled = false;
148
+ this._dragging = false;
149
+ this._dragStartAngle = 0;
150
+ this._dragStartRadius = 0;
151
+ this._pressedKeys = /* @__PURE__ */ new Set();
152
+ this._prevAngle = 0;
153
+ this._prevRadius = 0;
154
+ this._onPointerDown = (e) => {
155
+ e.preventDefault();
156
+ this.renderRoot.querySelector(`svg`)?.focus();
157
+ const area = this.renderRoot.querySelector(`.polar-pad-area`);
158
+ if (area) area.setPointerCapture(e.pointerId);
159
+ this._dragging = true;
160
+ this._dragStartAngle = this.angle;
161
+ this._dragStartRadius = this.radius;
162
+ this.setAttribute(`dragging`, ``);
163
+ this._updateFromPointer(e);
164
+ globalThis.addEventListener(`pointermove`, this._onPointerMove);
165
+ globalThis.addEventListener(`pointerup`, this._onPointerUp);
166
+ };
167
+ this._onPointerMove = (e) => {
168
+ if (!this._dragging) return;
169
+ e.preventDefault();
170
+ this._updateFromPointer(e);
171
+ };
172
+ this._onPointerUp = () => {
173
+ const hasChanged = this.angle !== this._dragStartAngle || this.radius !== this._dragStartRadius;
174
+ this._dragging = false;
175
+ this.removeAttribute(`dragging`);
176
+ globalThis.removeEventListener(`pointermove`, this._onPointerMove);
177
+ globalThis.removeEventListener(`pointerup`, this._onPointerUp);
178
+ if (hasChanged) this.dispatchEvent(new CustomEvent(`change`, {
179
+ detail: {
180
+ angle: this.angle,
181
+ radius: this.radius
182
+ },
183
+ bubbles: true,
184
+ composed: true
185
+ }));
186
+ };
187
+ this._onKeyDown = (e) => {
188
+ if (this.disabled) return;
189
+ if ([
190
+ `ArrowLeft`,
191
+ `ArrowRight`,
192
+ `ArrowUp`,
193
+ `ArrowDown`
194
+ ].includes(e.key)) {
195
+ e.preventDefault();
196
+ this._pressedKeys.add(e.key);
197
+ this._handleKeyboardMove(e.shiftKey);
198
+ }
199
+ };
200
+ this._onKeyUp = (e) => {
201
+ this._pressedKeys.delete(e.key);
202
+ };
203
+ this._handleKeyboardMove = (shiftKey) => {
204
+ const shiftDivisor = shiftKey ? 10 : 1;
205
+ const effectiveStopsAngle = this.stopsAngle ?? this.stops;
206
+ const effectiveStopsRadius = this.stopsRadius ?? this.stops;
207
+ let angleStep;
208
+ if (effectiveStopsAngle && effectiveStopsAngle > 1) angleStep = 360 / effectiveStopsAngle;
209
+ else angleStep = 360 / (this.rays > 0 && this.snapValue ? this.rays : 20);
210
+ let radiusStep;
211
+ if (effectiveStopsRadius && effectiveStopsRadius > 1) radiusStep = 1 / effectiveStopsRadius;
212
+ else radiusStep = 1 / 20;
213
+ angleStep /= shiftDivisor;
214
+ radiusStep /= shiftDivisor;
215
+ this._prevAngle = this.angle;
216
+ this._prevRadius = this.radius;
217
+ let newAngle = this.angle;
218
+ let newRadius = this.radius;
219
+ if (this._pressedKeys.has(`ArrowLeft`)) newAngle -= angleStep;
220
+ if (this._pressedKeys.has(`ArrowRight`)) newAngle += angleStep;
221
+ if (this._pressedKeys.has(`ArrowUp`)) newRadius = Math.min(1, newRadius + radiusStep);
222
+ if (this._pressedKeys.has(`ArrowDown`)) newRadius = Math.max(0, newRadius - radiusStep);
223
+ newAngle = (newAngle % 360 + 360) % 360;
224
+ let finalAngle = snapAngle(newAngle, this._prevAngle, this.rays, this.snapValue);
225
+ let finalRadius = snapRadius(newRadius, this._prevRadius, this.rings, this.snapValue);
226
+ finalAngle = quantiseAngle(finalAngle, effectiveStopsAngle);
227
+ finalRadius = quantiseRadius(finalRadius, effectiveStopsRadius);
228
+ if (finalAngle !== this.angle || finalRadius !== this.radius) {
229
+ this.angle = finalAngle;
230
+ this.radius = finalRadius;
231
+ this.dispatchEvent(new CustomEvent(`input`, {
232
+ detail: {
233
+ angle: this.angle,
234
+ radius: this.radius
235
+ },
236
+ bubbles: true,
237
+ composed: true
238
+ }));
239
+ }
240
+ };
241
+ this._uid = Math.random().toString(36).slice(2, 8);
242
+ }
243
+ static {
244
+ this.styles = css`
245
+ :host {
246
+ display: block;
247
+ width: 200px;
248
+ height: 200px;
249
+ touch-action: none;
250
+ user-select: none;
251
+ container-type: size;
252
+
253
+ /* Pad background */
254
+ --pad-background: var(--surface-4, oklch(22% 0.02 240));
255
+ --pad-border-color: var(--surface-6, oklch(35% 0.02 240));
256
+ --pad-border-width: 1px;
257
+
258
+ /* Marker */
259
+ --marker-size: 10cqb;
260
+ --marker-color: var(--accent, oklch(60% 0.15 140));
261
+ --marker-opacity: 1;
262
+ --marker-stroke: none;
263
+ --marker-stroke-width: 0;
264
+
265
+ /* Origin dot */
266
+ --origin-size: 6cqb;
267
+ --origin-color: var(--accent, oklch(60% 0.15 140));
268
+ --origin-opacity: 1;
269
+
270
+ /* Ray line */
271
+ --ray-color: var(--surface-6, oklch(35% 0.02 240));
272
+ --ray-width: 2px;
273
+ --ray-opacity: 1;
274
+ --ray-dash: none;
275
+
276
+ /* Concentric rings */
277
+ --ring-color: var(--surface-6, oklch(35% 0.02 240));
278
+ --ring-width: 1px;
279
+ --ring-opacity: 1;
280
+ --ring-dash: none;
281
+
282
+ /* Radial spokes */
283
+ --spoke-color: var(--surface-6, oklch(35% 0.02 240));
284
+ --spoke-width: 1px;
285
+ --spoke-opacity: 1;
286
+ --spoke-dash: none;
287
+ }
288
+
289
+ :host([disabled]) {
290
+ opacity: 0.5;
291
+ pointer-events: none;
292
+ }
293
+
294
+ .polar-pad-area {
295
+ position: relative;
296
+ width: 100%;
297
+ height: 100%;
298
+ cursor: var(--cursor-display, crosshair);
299
+ }
300
+
301
+ :host([dragging]) .polar-pad-area {
302
+ cursor: none;
303
+ }
304
+
305
+ svg {
306
+ width: 100%;
307
+ height: 100%;
308
+ overflow: visible;
309
+ }
310
+
311
+ .pad-background {
312
+ /* Used on the foreignObject div — accepts any CSS background value */
313
+ width: 100%;
314
+ height: 100%;
315
+ background: var(--pad-background);
316
+ }
317
+
318
+ .pad-border {
319
+ fill: none;
320
+ stroke: var(--pad-border-color);
321
+ stroke-width: var(--pad-border-width);
322
+ vector-effect: non-scaling-stroke;
323
+ }
324
+
325
+ .ring {
326
+ fill: none;
327
+ stroke: var(--ring-color);
328
+ stroke-width: var(--ring-width);
329
+ stroke-dasharray: var(--ring-dash);
330
+ opacity: var(--ring-opacity);
331
+ vector-effect: non-scaling-stroke;
332
+ }
333
+
334
+ .spoke {
335
+ fill: none;
336
+ stroke: var(--spoke-color);
337
+ stroke-width: var(--spoke-width);
338
+ stroke-dasharray: var(--spoke-dash);
339
+ opacity: var(--spoke-opacity);
340
+ vector-effect: non-scaling-stroke;
341
+ }
342
+
343
+ .ray {
344
+ fill: none;
345
+ stroke: var(--ray-color);
346
+ stroke-width: var(--ray-width);
347
+ stroke-dasharray: var(--ray-dash);
348
+ opacity: var(--ray-opacity);
349
+ vector-effect: non-scaling-stroke;
350
+ }
351
+
352
+ .origin-dot {
353
+ fill: var(--origin-color);
354
+ opacity: var(--origin-opacity);
355
+ }
356
+
357
+ .marker {
358
+ fill: var(--marker-color);
359
+ opacity: var(--marker-opacity);
360
+ stroke: var(--marker-stroke);
361
+ stroke-width: var(--marker-stroke-width);
362
+ cursor: grab;
363
+ }
364
+
365
+ .marker:active {
366
+ cursor: grabbing;
367
+ }
368
+
369
+ svg:focus {
370
+ outline: none;
371
+ }
372
+
373
+ svg:focus-visible .pad-border {
374
+ stroke: var(--accent);
375
+ stroke-width: 3;
376
+ }
377
+ `;
378
+ }
379
+ _updateFromPointer(e) {
380
+ const area = this.renderRoot.querySelector(`.polar-pad-area`);
381
+ if (!area) return;
382
+ const rect = area.getBoundingClientRect();
383
+ const size = Math.min(rect.width, rect.height);
384
+ const { angleRad, radius } = svgToPolar((e.clientX - rect.left) / size * 100, (e.clientY - rect.top) / size * 100);
385
+ const newAngleDeg = angleRad * RAD_TO_DEG;
386
+ const newRadius = clamp01(radius);
387
+ this._prevAngle = this.angle;
388
+ this._prevRadius = this.radius;
389
+ const snappedAngle = snapAngle(newAngleDeg, this._prevAngle, this.rays, this.snapValue);
390
+ const snappedRadius = snapRadius(newRadius, this._prevRadius, this.rings, this.snapValue);
391
+ const effectiveStopsAngle = this.stopsAngle ?? this.stops;
392
+ const effectiveStopsRadius = this.stopsRadius ?? this.stops;
393
+ this.angle = quantiseAngle(snappedAngle, effectiveStopsAngle);
394
+ this.radius = quantiseRadius(snappedRadius, effectiveStopsRadius);
395
+ this._prevAngle = newAngleDeg;
396
+ this._prevRadius = newRadius;
397
+ this.dispatchEvent(new CustomEvent(`input`, {
398
+ detail: {
399
+ angle: this.angle,
400
+ radius: this.radius
401
+ },
402
+ bubbles: true,
403
+ composed: true
404
+ }));
405
+ }
406
+ _setCssVars() {
407
+ this.style.setProperty(`--angle-deg`, `${this.angle}`);
408
+ this.style.setProperty(`--angle-rad`, `${this.angle * DEG_TO_RAD}`);
409
+ this.style.setProperty(`--radius-pct`, `${clamp01(this.radius) * 100}`);
410
+ }
411
+ updated(_changed) {
412
+ super.updated(_changed);
413
+ this._setCssVars();
414
+ }
415
+ disconnectedCallback() {
416
+ super.disconnectedCallback();
417
+ this._onPointerUp();
418
+ this._pressedKeys.clear();
419
+ }
420
+ _renderRings() {
421
+ if (this.rings <= 0) return ``;
422
+ const items = [];
423
+ for (let i = 1; i <= this.rings; i++) {
424
+ const r = i / this.rings * 50;
425
+ items.push(svg`<circle class="ring" cx="50" cy="50" r="${r}" />`);
426
+ }
427
+ return items;
428
+ }
429
+ _renderSpokes() {
430
+ if (this.rays <= 0) return ``;
431
+ const items = [];
432
+ for (let i = 0; i < this.rays; i++) {
433
+ const angleRad = i / this.rays * 2 * Math.PI;
434
+ const cos = Math.cos(angleRad);
435
+ const sin = Math.sin(angleRad);
436
+ const x1 = 50 + cos * 50;
437
+ const y1 = 50 + sin * 50;
438
+ const x2 = 50 - cos * 50;
439
+ const y2 = 50 - sin * 50;
440
+ items.push(svg`<line class="spoke" x1="${x1}" y1="${y1}" x2="${x2}" y2="${y2}" />`);
441
+ }
442
+ return items;
443
+ }
444
+ _renderRay(markerX, markerY) {
445
+ if (!this.showRay) return ``;
446
+ return svg`<line class="ray" x1="50" y1="50" x2="${markerX}" y2="${markerY}" />`;
447
+ }
448
+ _renderOrigin() {
449
+ if (!this.showOrigin) return ``;
450
+ return svg`<circle class="origin-dot" cx="50" cy="50" r="3" style="r: calc(var(--origin-size) / 2)" />`;
451
+ }
452
+ render() {
453
+ const { x: markerX, y: markerY } = polarToSvg(this.angle * DEG_TO_RAD, clamp01(this.radius));
454
+ return html`
455
+ <div class="polar-pad-area"
456
+ @pointerdown=${this._onPointerDown}
457
+ @keydown=${this._onKeyDown}
458
+ @keyup=${this._onKeyUp}
459
+ @blur=${() => this._pressedKeys.clear()}>
460
+ <svg viewBox="0 0 100 100"
461
+ preserveAspectRatio="xMidYMid meet"
462
+ tabindex=${this.disabled ? -1 : 0}>
463
+ <defs>
464
+ <clipPath id="circle-clip-${this._uid}">
465
+ <circle cx="50" cy="50" r="50" />
466
+ </clipPath>
467
+ </defs>
468
+
469
+ <!-- clipped group: background + rings + spokes -->
470
+ <g clip-path="url(#circle-clip-${this._uid})">
471
+ <foreignObject x="0" y="0" width="100" height="100">
472
+ <div class="pad-background" xmlns="http://www.w3.org/1999/xhtml"></div>
473
+ </foreignObject>
474
+ ${this._renderRings()}
475
+ ${this._renderSpokes()}
476
+ </g>
477
+
478
+ <!-- border circle (on top of clip, non-scaling stroke) -->
479
+ <circle class="pad-border" cx="50" cy="50" r="49.75" />
480
+
481
+ <!-- ray + origin + marker -->
482
+ ${this._renderRay(markerX, markerY)}
483
+ ${this._renderOrigin()}
484
+ <circle
485
+ class="marker"
486
+ cx="${markerX}"
487
+ cy="${markerY}"
488
+ r="5"
489
+ style="r: calc(var(--marker-size) / 2)"
490
+ />
491
+ </svg>
492
+ </div>
493
+ `;
494
+ }
495
+ };
496
+ __decorate([property({ type: Number })], PolarPad.prototype, "angle", void 0);
497
+ __decorate([property({ type: Number })], PolarPad.prototype, "radius", void 0);
498
+ __decorate([property({ type: Number })], PolarPad.prototype, "rings", void 0);
499
+ __decorate([property({ type: Number })], PolarPad.prototype, "rays", void 0);
500
+ __decorate([property({
501
+ type: Boolean,
502
+ reflect: true,
503
+ attribute: `show-ray`
504
+ })], PolarPad.prototype, "showRay", void 0);
505
+ __decorate([property({
506
+ type: Boolean,
507
+ reflect: true,
508
+ attribute: `show-origin`
509
+ })], PolarPad.prototype, "showOrigin", void 0);
510
+ __decorate([property({
511
+ type: Boolean,
512
+ reflect: true,
513
+ attribute: `hide-cursor`
514
+ })], PolarPad.prototype, "hideCursor", void 0);
515
+ __decorate([property({
516
+ type: Boolean,
517
+ attribute: `snap-value`,
518
+ reflect: true
519
+ })], PolarPad.prototype, "snapValue", void 0);
520
+ __decorate([property({
521
+ type: Boolean,
522
+ reflect: true
523
+ })], PolarPad.prototype, "disabled", void 0);
524
+ __decorate([property({ type: Number })], PolarPad.prototype, "stops", void 0);
525
+ __decorate([property({
526
+ type: Number,
527
+ attribute: `stops-angle`
528
+ })], PolarPad.prototype, "stopsAngle", void 0);
529
+ __decorate([property({
530
+ type: Number,
531
+ attribute: `stops-radius`
532
+ })], PolarPad.prototype, "stopsRadius", void 0);
533
+ PolarPad = __decorate([customElement(`ixfx-polar-pad`)], PolarPad);
534
+ //#endregion
535
+ export { PolarPad };
536
+
537
+ //# sourceMappingURL=polar-pad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polar-pad.js","names":[],"sources":["../src/polar-pad/polar-pad.ts"],"sourcesContent":["import type { PropertyValues } from 'lit';\n/**\n * <ixfx-polar-pad> — circular pad for setting polar coordinates (angle + radius).\n *\n * The user clicks or drags within a circle to position a marker. The marker's\n * position encodes an angle (degrees, 0 = right, clockwise) and a radius (0–1).\n *\n * Properties / attributes\n * angle – current angle in degrees (0 = right, clockwise). Default: 0\n * radius – current radius 0–1 where 1 = edge. Default: 0.5\n * rings – number of concentric rings to draw (0 = none). Default: 0\n * rays – number of evenly-spaced radial spokes to draw (0 = none). Default: 0\n * show-ray – draw a line from the origin to the marker\n * show-origin – draw a dot at the centre\n * hide-cursor – hide cursor during drag and hover (default: false)\n * snap-value – when set, marker snaps to nearest ring/spoke depending on what's displayed\n * disabled – disable all interaction (default: false)\n *\n * Customisable CSS variables:\n *\n * Pad background\n * --pad-background – CSS `background` of the circular pad. Accepts any CSS background\n * value: solid colour, conic-gradient(), radial-gradient(), etc.\n * Dynamic CSS vars like --angle-deg / --radius-pct are available\n * so the gradient can track the current marker position.\n * Default: var(--surface-4)\n * --pad-border-color – stroke of the outer circle (default: --surface-6)\n * --pad-border-width – thickness of outer border (default: 1px)\n *\n * Marker\n * --marker-size – diameter of the draggable marker (default: 10cqb)\n * --marker-color – fill colour of the marker (default: --accent)\n * --marker-opacity – opacity of the marker (default: 1)\n * --marker-stroke – stroke colour of the marker (default: none)\n * --marker-stroke-width – stroke thickness of the marker (default: 0)\n *\n * Origin dot (show-origin)\n * --origin-size – diameter of the origin dot (default: 6cqb)\n * --origin-color – fill colour of the origin dot (default: --accent)\n * --origin-opacity – opacity of the origin dot (default: 1)\n *\n * Ray line (show-ray)\n * --ray-color – stroke colour (default: --surface-6)\n * --ray-width – thickness (default: 2px)\n * --ray-opacity – opacity (default: 1)\n * --ray-dash – stroke-dasharray value e.g. \"4 2\" (default: none)\n *\n * Concentric rings (rings > 0)\n * --ring-color – stroke colour (default: --surface-6)\n * --ring-width – thickness (default: 1px)\n * --ring-opacity – opacity (default: 1)\n * --ring-dash – stroke-dasharray e.g. \"4 2\" (default: none)\n *\n * Radial spokes (rays > 0)\n * --spoke-color – stroke colour (default: --surface-6)\n * --spoke-width – thickness (default: 1px)\n * --spoke-opacity – opacity (default: 1)\n * --spoke-dash – stroke-dasharray e.g. \"4 2\" (default: none)\n *\n * CSS variables set on host for external dynamic styling:\n * --angle-deg – current angle as unitless number in degrees\n * --angle-rad – current angle as unitless number in radians\n * --radius-pct – current radius as unitless number 0–100\n *\n * Events\n * input – CustomEvent<PolarPadInputDetail> { angle: number (deg), radius: number (0–1) }\n * bubbles + composed, fires continuously during drag\n * change – CustomEvent<PolarPadInputDetail> { angle: number (deg), radius: number (0–1) }\n * bubbles + composed, fires when drag ends\n */\nimport { css, html, LitElement, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { KEY_STEP_DIVISOR } from '../keyboard.js';\n\n// ---------------------------------------------------------------------------\n// Geometry helpers\n// ---------------------------------------------------------------------------\n\nconst DEG_TO_RAD = Math.PI / 180;\nconst RAD_TO_DEG = 180 / Math.PI;\n\n/**\n * Convert polar (angle in radians, radius 0-1) to SVG coordinates.\n * SVG viewBox 0 0 100 100; origin at (50,50); full radius = 50.\n * Convention: 0 rad = right (+x), increases CLOCKWISE (+y = downward in SVG).\n */\nfunction polarToSvg(angleRad: number, radius: number): { x: number; y: number } {\n const r = radius * 50;\n return { x: 50 + Math.cos(angleRad) * r, y: 50 + Math.sin(angleRad) * r };\n}\n\n/**\n * Convert SVG coordinates back to polar (angle in radians 0..2π, radius 0-1).\n * SVG: Y increases downward. Convention: 0=right, CW positive.\n */\nfunction svgToPolar(svgX: number, svgY: number): { angleRad: number; radius: number } {\n const dx = svgX - 50;\n const dy = svgY - 50; // +dy = downward = clockwise\n const dist = Math.sqrt(dx * dx + dy * dy);\n const radius = Math.min(1, dist / 50);\n const raw = Math.atan2(dy, dx);\n const angleRad = ((raw % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI);\n return { angleRad, radius };\n}\n\nconst clamp01 = (v: number): number => Math.max(0, Math.min(1, v));\n\n// ---------------------------------------------------------------------------\n// Direction-aware snapping helpers\n// ---------------------------------------------------------------------------\n\nfunction snapAngle(angleDeg: number, prevAngleDeg: number, rays: number, snapEnabled: boolean): number {\n if (rays <= 0 || !snapEnabled) return angleDeg;\n const spokeDeg = 360 / rays;\n const normalized = ((angleDeg % 360) + 360) % 360;\n const nearest = Math.round(normalized / spokeDeg) * spokeDeg;\n const remainder = normalized % spokeDeg;\n const tie = Math.abs(remainder) < 0.0001 || Math.abs(spokeDeg - remainder) < 0.0001;\n if (tie) {\n let delta = angleDeg - prevAngleDeg;\n if (delta > 180) delta -= 360;\n if (delta < -180) delta += 360;\n const direction = delta >= 0 ? 1 : -1;\n return (nearest + direction * spokeDeg + 360) % 360;\n }\n return nearest;\n}\n\nfunction snapRadius(radius: number, prevRadius: number, rings: number, snapEnabled: boolean): number {\n if (rings <= 0 || !snapEnabled) return radius;\n const ringStep = 1 / rings;\n const nearest = Math.round(radius / ringStep) * ringStep;\n const remainder = radius % ringStep;\n const tie = Math.abs(remainder) < 0.0001 || Math.abs(ringStep - remainder) < 0.0001;\n if (tie) {\n const direction = radius >= prevRadius ? 1 : -1;\n return Math.max(0, Math.min(1, nearest + direction * ringStep));\n }\n return nearest;\n}\n\nfunction quantiseAngle(angleDeg: number, stops?: number): number {\n if (!stops || stops <= 1) return angleDeg;\n const stepDeg = 360 / stops;\n const normalized = ((angleDeg % 360) + 360) % 360;\n return Math.round(normalized / stepDeg) * stepDeg;\n}\n\nfunction quantiseRadius(radius: number, stops?: number): number {\n if (!stops || stops <= 1) return radius;\n const step = 1 / stops;\n return Math.round(radius / step) * step;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n@customElement(`ixfx-polar-pad`)\nexport class PolarPad extends LitElement {\n static override styles = css`\n :host {\n display: block;\n width: 200px;\n height: 200px;\n touch-action: none;\n user-select: none;\n container-type: size;\n\n /* Pad background */\n --pad-background: var(--surface-4, oklch(22% 0.02 240));\n --pad-border-color: var(--surface-6, oklch(35% 0.02 240));\n --pad-border-width: 1px;\n\n /* Marker */\n --marker-size: 10cqb;\n --marker-color: var(--accent, oklch(60% 0.15 140));\n --marker-opacity: 1;\n --marker-stroke: none;\n --marker-stroke-width: 0;\n\n /* Origin dot */\n --origin-size: 6cqb;\n --origin-color: var(--accent, oklch(60% 0.15 140));\n --origin-opacity: 1;\n\n /* Ray line */\n --ray-color: var(--surface-6, oklch(35% 0.02 240));\n --ray-width: 2px;\n --ray-opacity: 1;\n --ray-dash: none;\n\n /* Concentric rings */\n --ring-color: var(--surface-6, oklch(35% 0.02 240));\n --ring-width: 1px;\n --ring-opacity: 1;\n --ring-dash: none;\n\n /* Radial spokes */\n --spoke-color: var(--surface-6, oklch(35% 0.02 240));\n --spoke-width: 1px;\n --spoke-opacity: 1;\n --spoke-dash: none;\n }\n\n :host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .polar-pad-area {\n position: relative;\n width: 100%;\n height: 100%;\n cursor: var(--cursor-display, crosshair);\n }\n\n :host([dragging]) .polar-pad-area {\n cursor: none;\n }\n\n svg {\n width: 100%;\n height: 100%;\n overflow: visible;\n }\n\n .pad-background {\n /* Used on the foreignObject div — accepts any CSS background value */\n width: 100%;\n height: 100%;\n background: var(--pad-background);\n }\n\n .pad-border {\n fill: none;\n stroke: var(--pad-border-color);\n stroke-width: var(--pad-border-width);\n vector-effect: non-scaling-stroke;\n }\n\n .ring {\n fill: none;\n stroke: var(--ring-color);\n stroke-width: var(--ring-width);\n stroke-dasharray: var(--ring-dash);\n opacity: var(--ring-opacity);\n vector-effect: non-scaling-stroke;\n }\n\n .spoke {\n fill: none;\n stroke: var(--spoke-color);\n stroke-width: var(--spoke-width);\n stroke-dasharray: var(--spoke-dash);\n opacity: var(--spoke-opacity);\n vector-effect: non-scaling-stroke;\n }\n\n .ray {\n fill: none;\n stroke: var(--ray-color);\n stroke-width: var(--ray-width);\n stroke-dasharray: var(--ray-dash);\n opacity: var(--ray-opacity);\n vector-effect: non-scaling-stroke;\n }\n\n .origin-dot {\n fill: var(--origin-color);\n opacity: var(--origin-opacity);\n }\n\n .marker {\n fill: var(--marker-color);\n opacity: var(--marker-opacity);\n stroke: var(--marker-stroke);\n stroke-width: var(--marker-stroke-width);\n cursor: grab;\n }\n\n .marker:active {\n cursor: grabbing;\n }\n\n svg:focus {\n outline: none;\n }\n\n svg:focus-visible .pad-border {\n stroke: var(--accent);\n stroke-width: 3;\n }\n `;\n\n /** Current angle in degrees. 0 = right, increases clockwise. */\n @property({ type: Number }) angle = 0;\n\n /** Current radius 0–1. 0 = origin, 1 = edge. */\n @property({ type: Number }) radius = 0.5;\n\n /** Number of concentric rings to display. 0 = none. */\n @property({ type: Number }) rings = 0;\n\n /** Number of evenly-spaced radial spoke lines to display. 0 = none. */\n @property({ type: Number }) rays = 0;\n\n /** Show a line from origin to the marker. */\n @property({ type: Boolean, reflect: true, attribute: `show-ray` }) showRay = false;\n\n /** Show a dot at the origin (centre). */\n @property({ type: Boolean, reflect: true, attribute: `show-origin` }) showOrigin = false;\n\n /** Hide cursor during drag and hover. */\n @property({ type: Boolean, reflect: true, attribute: `hide-cursor` }) hideCursor = false;\n\n /** When set, marker snaps to nearest ring/spoke depending on what's displayed. */\n @property({ type: Boolean, attribute: `snap-value`, reflect: true }) snapValue = false;\n\n /** Disable all interaction (pointer and keyboard). */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Number of quantised stops for both angle and radius. Overridden by stops-angle/stops-radius if set. */\n @property({ type: Number }) stops?: number;\n\n /** Number of quantised stops for angle. If set, overrides the stops setting for angle. */\n @property({ type: Number, attribute: `stops-angle` }) stopsAngle?: number;\n\n /** Number of quantised stops for radius. If set, overrides the stops setting for radius. */\n @property({ type: Number, attribute: `stops-radius` }) stopsRadius?: number;\n\n private _dragging = false;\n private _dragStartAngle = 0;\n private _dragStartRadius = 0;\n private _pressedKeys = new Set<string>();\n private _prevAngle = 0;\n private _prevRadius = 0;\n\n // -------------------------------------------------------------------------\n // Pointer handling\n // -------------------------------------------------------------------------\n\n private _onPointerDown = (e: PointerEvent): void => {\n e.preventDefault();\n const svg = this.renderRoot.querySelector(`svg`) as SVGSVGElement | undefined;\n (svg as HTMLElement | undefined)?.focus();\n const area = this.renderRoot.querySelector(`.polar-pad-area`) as HTMLElement | undefined;\n if (area)\n area.setPointerCapture(e.pointerId);\n this._dragging = true;\n this._dragStartAngle = this.angle;\n this._dragStartRadius = this.radius;\n this.setAttribute(`dragging`, ``);\n this._updateFromPointer(e);\n globalThis.addEventListener(`pointermove`, this._onPointerMove);\n globalThis.addEventListener(`pointerup`, this._onPointerUp);\n };\n\n private _onPointerMove = (e: PointerEvent): void => {\n if (!this._dragging)\n return;\n e.preventDefault();\n this._updateFromPointer(e);\n };\n\n private _onPointerUp = (): void => {\n const hasChanged = this.angle !== this._dragStartAngle || this.radius !== this._dragStartRadius;\n this._dragging = false;\n this.removeAttribute(`dragging`);\n globalThis.removeEventListener(`pointermove`, this._onPointerMove);\n globalThis.removeEventListener(`pointerup`, this._onPointerUp);\n if (hasChanged) {\n this.dispatchEvent(new CustomEvent<PolarPadInputDetail>(`change`, {\n detail: { angle: this.angle, radius: this.radius },\n bubbles: true,\n composed: true,\n }));\n }\n };\n\n private _updateFromPointer(e: PointerEvent): void {\n const area = this.renderRoot.querySelector(`.polar-pad-area`);\n if (!area)\n return;\n\n const rect = area.getBoundingClientRect();\n const size = Math.min(rect.width, rect.height);\n const svgX = ((e.clientX - rect.left) / size) * 100;\n const svgY = ((e.clientY - rect.top) / size) * 100;\n\n const { angleRad, radius } = svgToPolar(svgX, svgY);\n const newAngleDeg = angleRad * RAD_TO_DEG;\n const newRadius = clamp01(radius);\n\n this._prevAngle = this.angle;\n this._prevRadius = this.radius;\n\n const snappedAngle = snapAngle(newAngleDeg, this._prevAngle, this.rays, this.snapValue);\n const snappedRadius = snapRadius(newRadius, this._prevRadius, this.rings, this.snapValue);\n\n const effectiveStopsAngle = this.stopsAngle ?? this.stops;\n const effectiveStopsRadius = this.stopsRadius ?? this.stops;\n\n this.angle = quantiseAngle(snappedAngle, effectiveStopsAngle);\n this.radius = quantiseRadius(snappedRadius, effectiveStopsRadius);\n this._prevAngle = newAngleDeg;\n this._prevRadius = newRadius;\n\n this.dispatchEvent(new CustomEvent<PolarPadInputDetail>(`input`, {\n detail: { angle: this.angle, radius: this.radius },\n bubbles: true,\n composed: true,\n }));\n }\n\n // -------------------------------------------------------------------------\n // Keyboard handling\n // -------------------------------------------------------------------------\n\n private _onKeyDown = (e: KeyboardEvent): void => {\n if (this.disabled) return;\n if ([`ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown`].includes(e.key)) {\n e.preventDefault();\n this._pressedKeys.add(e.key);\n this._handleKeyboardMove(e.shiftKey);\n }\n };\n\n private _onKeyUp = (e: KeyboardEvent): void => {\n this._pressedKeys.delete(e.key);\n };\n\n private _handleKeyboardMove = (shiftKey: boolean): void => {\n const shiftDivisor = shiftKey ? KEY_STEP_DIVISOR : 1;\n const effectiveStopsAngle = this.stopsAngle ?? this.stops;\n const effectiveStopsRadius = this.stopsRadius ?? this.stops;\n\n let angleStep: number;\n if (effectiveStopsAngle && effectiveStopsAngle > 1) {\n angleStep = 360 / effectiveStopsAngle;\n } else {\n const angleRange = this.rays > 0 && this.snapValue ? this.rays : 20;\n angleStep = 360 / angleRange;\n }\n\n let radiusStep: number;\n if (effectiveStopsRadius && effectiveStopsRadius > 1) {\n radiusStep = 1 / effectiveStopsRadius;\n } else {\n radiusStep = 1 / 20;\n }\n\n angleStep /= shiftDivisor;\n radiusStep /= shiftDivisor;\n\n this._prevAngle = this.angle;\n this._prevRadius = this.radius;\n\n let newAngle = this.angle;\n let newRadius = this.radius;\n\n if (this._pressedKeys.has(`ArrowLeft`)) {\n newAngle -= angleStep;\n }\n if (this._pressedKeys.has(`ArrowRight`)) {\n newAngle += angleStep;\n }\n if (this._pressedKeys.has(`ArrowUp`)) {\n newRadius = Math.min(1, newRadius + radiusStep);\n }\n if (this._pressedKeys.has(`ArrowDown`)) {\n newRadius = Math.max(0, newRadius - radiusStep);\n }\n\n newAngle = ((newAngle % 360) + 360) % 360;\n\n let finalAngle = snapAngle(newAngle, this._prevAngle, this.rays, this.snapValue);\n let finalRadius = snapRadius(newRadius, this._prevRadius, this.rings, this.snapValue);\n\n finalAngle = quantiseAngle(finalAngle, effectiveStopsAngle);\n finalRadius = quantiseRadius(finalRadius, effectiveStopsRadius);\n\n if (finalAngle !== this.angle || finalRadius !== this.radius) {\n this.angle = finalAngle;\n this.radius = finalRadius;\n this.dispatchEvent(new CustomEvent<PolarPadInputDetail>(`input`, {\n detail: { angle: this.angle, radius: this.radius },\n bubbles: true,\n composed: true,\n }));\n }\n };\n\n // -------------------------------------------------------------------------\n // CSS variable sync\n // -------------------------------------------------------------------------\n\n private _setCssVars(): void {\n this.style.setProperty(`--angle-deg`, `${this.angle}`);\n this.style.setProperty(`--angle-rad`, `${this.angle * DEG_TO_RAD}`);\n this.style.setProperty(`--radius-pct`, `${clamp01(this.radius) * 100}`);\n }\n\n override updated(_changed: PropertyValues): void {\n super.updated(_changed);\n this._setCssVars();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._onPointerUp();\n this._pressedKeys.clear();\n }\n\n // -------------------------------------------------------------------------\n // SVG helpers\n // -------------------------------------------------------------------------\n\n private _renderRings() {\n if (this.rings <= 0)\n return ``;\n const items = [];\n for (let i = 1; i <= this.rings; i++) {\n const r = (i / this.rings) * 50;\n items.push(svg`<circle class=\"ring\" cx=\"50\" cy=\"50\" r=\"${r}\" />`);\n }\n return items;\n }\n\n private _renderSpokes() {\n if (this.rays <= 0)\n return ``;\n const items = [];\n for (let i = 0; i < this.rays; i++) {\n const angleRad = (i / this.rays) * 2 * Math.PI;\n const cos = Math.cos(angleRad);\n const sin = Math.sin(angleRad); // SVG +y downward matches CW convention directly\n const x1 = 50 + cos * 50;\n const y1 = 50 + sin * 50;\n const x2 = 50 - cos * 50;\n const y2 = 50 - sin * 50;\n items.push(svg`<line class=\"spoke\" x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\" />`);\n }\n return items;\n }\n\n private _renderRay(markerX: number, markerY: number) {\n if (!this.showRay)\n return ``;\n return svg`<line class=\"ray\" x1=\"50\" y1=\"50\" x2=\"${markerX}\" y2=\"${markerY}\" />`;\n }\n\n private _renderOrigin() {\n if (!this.showOrigin)\n return ``;\n return svg`<circle class=\"origin-dot\" cx=\"50\" cy=\"50\" r=\"3\" style=\"r: calc(var(--origin-size) / 2)\" />`;\n }\n\n // -------------------------------------------------------------------------\n // Render\n // -------------------------------------------------------------------------\n\n override render(): ReturnType<typeof html> {\n const angleRad = this.angle * DEG_TO_RAD;\n const { x: markerX, y: markerY } = polarToSvg(angleRad, clamp01(this.radius));\n\n return html`\n <div class=\"polar-pad-area\"\n @pointerdown=${this._onPointerDown}\n @keydown=${this._onKeyDown}\n @keyup=${this._onKeyUp}\n @blur=${() => this._pressedKeys.clear()}>\n <svg viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid meet\"\n tabindex=${this.disabled ? -1 : 0}>\n <defs>\n <clipPath id=\"circle-clip-${this._uid}\">\n <circle cx=\"50\" cy=\"50\" r=\"50\" />\n </clipPath>\n </defs>\n\n <!-- clipped group: background + rings + spokes -->\n <g clip-path=\"url(#circle-clip-${this._uid})\">\n <foreignObject x=\"0\" y=\"0\" width=\"100\" height=\"100\">\n <div class=\"pad-background\" xmlns=\"http://www.w3.org/1999/xhtml\"></div>\n </foreignObject>\n ${this._renderRings()}\n ${this._renderSpokes()}\n </g>\n\n <!-- border circle (on top of clip, non-scaling stroke) -->\n <circle class=\"pad-border\" cx=\"50\" cy=\"50\" r=\"49.75\" />\n\n <!-- ray + origin + marker -->\n ${this._renderRay(markerX, markerY)}\n ${this._renderOrigin()}\n <circle\n class=\"marker\"\n cx=\"${markerX}\"\n cy=\"${markerY}\"\n r=\"5\"\n style=\"r: calc(var(--marker-size) / 2)\"\n />\n </svg>\n </div>\n `;\n }\n\n /** Stable per-instance uid for SVG clipPath IDs. */\n private readonly _uid = Math.random().toString(36).slice(2, 8);\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type PolarPadInputDetail = {\n readonly angle: number; // degrees, 0 = right, clockwise\n readonly radius: number; // 0–1\n};\n\nexport type PolarPadInputEvent = CustomEvent<PolarPadInputDetail>;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-polar-pad': PolarPad;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { css } from "lit";
2
+ //#region src/styles/popup.ts
3
+ /**
4
+ * Canonical surface styles for floating popup elements (menus, dropdowns,
5
+ * colour picker, tooltips). Apply by adding `popupSurfaceStyles` to a
6
+ * component's `static styles` array and the class `popup-surface` to the
7
+ * popup container element.
8
+ *
9
+ * Intentionally omitted (remain per-component): positioning, padding,
10
+ * dimensions, z-index, and open/close animations.
11
+ */
12
+ const popupSurfaceStyles = css`
13
+ .popup-surface {
14
+ background: var(--surface-5);
15
+ border: 1px solid var(--surface-6);
16
+ border-radius: var(--radius-l);
17
+ box-shadow: var(--shadow-m);
18
+ color: var(--surface-5-text);
19
+ }
20
+ `;
21
+ //#endregion
22
+ export { popupSurfaceStyles as t };
23
+
24
+ //# sourceMappingURL=popup-Ddx9LCzY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popup-Ddx9LCzY.js","names":[],"sources":["../src/styles/popup.ts"],"sourcesContent":["import { css } from \"lit\";\n\n/**\n * Canonical surface styles for floating popup elements (menus, dropdowns,\n * colour picker, tooltips). Apply by adding `popupSurfaceStyles` to a\n * component's `static styles` array and the class `popup-surface` to the\n * popup container element.\n *\n * Intentionally omitted (remain per-component): positioning, padding,\n * dimensions, z-index, and open/close animations.\n */\nexport const popupSurfaceStyles = css`\n .popup-surface {\n background: var(--surface-5);\n border: 1px solid var(--surface-6);\n border-radius: var(--radius-l);\n box-shadow: var(--shadow-m);\n color: var(--surface-5-text);\n }\n`;\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,qBAAqB,GAAG"}