@ixfx/components 0.2.3 → 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 (291) hide show
  1. package/LICENSE +1 -1
  2. package/bundle/chunk-pbuEa-1d.js +13 -0
  3. package/bundle/index.d.ts +4702 -569
  4. package/bundle/index.d.ts.map +1 -1
  5. package/bundle/index.js +34929 -2800
  6. package/bundle/index.js.map +1 -1
  7. package/bundle/style.css +133 -0
  8. package/dist/ac-text.d.ts +97 -0
  9. package/dist/ac-text.d.ts.map +1 -0
  10. package/dist/ac-text.js +484 -0
  11. package/dist/ac-text.js.map +1 -0
  12. package/dist/button-DgKUzE5o.js +121 -0
  13. package/dist/button-DgKUzE5o.js.map +1 -0
  14. package/dist/button.d.ts +21 -0
  15. package/dist/button.d.ts.map +1 -0
  16. package/dist/button.js +3 -0
  17. package/dist/checkbox.d.ts +34 -0
  18. package/dist/checkbox.d.ts.map +1 -0
  19. package/dist/checkbox.js +251 -0
  20. package/dist/checkbox.js.map +1 -0
  21. package/dist/chunk-pbuEa-1d.js +13 -0
  22. package/dist/colour-C3MQIjFJ-BJV-QC-3.js +4138 -0
  23. package/dist/colour-C3MQIjFJ-BJV-QC-3.js.map +1 -0
  24. package/dist/colour-picker-Bw-AZoWx.js +922 -0
  25. package/dist/colour-picker-Bw-AZoWx.js.map +1 -0
  26. package/dist/colour-picker.d.ts +2 -0
  27. package/dist/colour-picker.js +2 -0
  28. package/dist/crumbs.d.ts +92 -0
  29. package/dist/crumbs.d.ts.map +1 -0
  30. package/dist/crumbs.js +789 -0
  31. package/dist/crumbs.js.map +1 -0
  32. package/dist/data-display.d.ts +24 -12
  33. package/dist/data-display.d.ts.map +1 -1
  34. package/dist/data-display.js +96 -105
  35. package/dist/data-display.js.map +1 -1
  36. package/dist/decorate-BZbkqIhA.js +9 -0
  37. package/dist/defaults-FEZaGiYZ.js +38 -0
  38. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  39. package/dist/dist-By5URG0Y.js +1290 -0
  40. package/dist/dist-By5URG0Y.js.map +1 -0
  41. package/dist/dist-D7kJgnSE.js +1039 -0
  42. package/dist/dist-D7kJgnSE.js.map +1 -0
  43. package/dist/editable-label.d.ts +71 -0
  44. package/dist/editable-label.d.ts.map +1 -0
  45. package/dist/editable-label.js +279 -0
  46. package/dist/editable-label.js.map +1 -0
  47. package/dist/hex-editor-Gib1Grg2.d.ts +131 -0
  48. package/dist/hex-editor-Gib1Grg2.d.ts.map +1 -0
  49. package/dist/hex-editor-Wd6ZtZA2.js +1147 -0
  50. package/dist/hex-editor-Wd6ZtZA2.js.map +1 -0
  51. package/dist/hex.d.ts +2 -0
  52. package/dist/hex.js +2 -0
  53. package/dist/highlight-CAjwQ4GE.js +50 -0
  54. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  55. package/dist/icon-BR5aTIiP.js +100 -0
  56. package/dist/icon-BR5aTIiP.js.map +1 -0
  57. package/dist/icon-DQKdfR7U.d.ts +36 -0
  58. package/dist/icon-DQKdfR7U.d.ts.map +1 -0
  59. package/dist/icons.d.ts +3 -0
  60. package/dist/icons.js +9 -0
  61. package/dist/icons.js.map +1 -0
  62. package/dist/incr-search-BjCNClnC.js +311 -0
  63. package/dist/incr-search-BjCNClnC.js.map +1 -0
  64. package/dist/incr-search.d.ts +2 -0
  65. package/dist/incr-search.js +3 -0
  66. package/dist/index-B1hNR7Z9.d.ts +36 -0
  67. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  68. package/dist/index-C5dK8RZa.d.ts +23 -0
  69. package/dist/index-C5dK8RZa.d.ts.map +1 -0
  70. package/dist/index-C9iBN908.d.ts +160 -0
  71. package/dist/index-C9iBN908.d.ts.map +1 -0
  72. package/dist/index-CPVcTTXo.d.ts +396 -0
  73. package/dist/index-CPVcTTXo.d.ts.map +1 -0
  74. package/dist/index-CQxanqXF.d.ts +183 -0
  75. package/dist/index-CQxanqXF.d.ts.map +1 -0
  76. package/dist/index-CpbBI3n7.d.ts +1239 -0
  77. package/dist/index-CpbBI3n7.d.ts.map +1 -0
  78. package/dist/index.d.ts +422 -13
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +5729 -14
  81. package/dist/index.js.map +1 -1
  82. package/dist/interaction-CQDQJf2Q.js +1 -0
  83. package/dist/keyboard-De_vOHLg.js +20 -0
  84. package/dist/keyboard-De_vOHLg.js.map +1 -0
  85. package/dist/labelled-input-base-DS6-6C0r.js +155 -0
  86. package/dist/labelled-input-base-DS6-6C0r.js.map +1 -0
  87. package/dist/labelled-input-base-DnRh4reU.d.ts +43 -0
  88. package/dist/labelled-input-base-DnRh4reU.d.ts.map +1 -0
  89. package/dist/labelled-radial-input.d.ts +34 -0
  90. package/dist/labelled-radial-input.d.ts.map +1 -0
  91. package/dist/labelled-radial-input.js +188 -0
  92. package/dist/labelled-radial-input.js.map +1 -0
  93. package/dist/labelled-range-input.d.ts +2 -0
  94. package/dist/labelled-range-input.js +132 -0
  95. package/dist/labelled-range-input.js.map +1 -0
  96. package/dist/led.d.ts +25 -0
  97. package/dist/led.d.ts.map +1 -0
  98. package/dist/led.js +92 -0
  99. package/dist/led.js.map +1 -0
  100. package/dist/menu-BV6UFx_z.js +813 -0
  101. package/dist/menu-BV6UFx_z.js.map +1 -0
  102. package/dist/menu-item-Cikacp4F.d.ts +128 -0
  103. package/dist/menu-item-Cikacp4F.d.ts.map +1 -0
  104. package/dist/menu-item-DEzL_Yjk.js +766 -0
  105. package/dist/menu-item-DEzL_Yjk.js.map +1 -0
  106. package/dist/menu.d.ts +3 -0
  107. package/dist/menu.js +3 -0
  108. package/dist/miller.d.ts +324 -0
  109. package/dist/miller.d.ts.map +1 -0
  110. package/dist/miller.js +1343 -0
  111. package/dist/miller.js.map +1 -0
  112. package/dist/narrowed-text.d.ts +72 -0
  113. package/dist/narrowed-text.d.ts.map +1 -0
  114. package/dist/narrowed-text.js +571 -0
  115. package/dist/narrowed-text.js.map +1 -0
  116. package/dist/panel.d.ts +43 -0
  117. package/dist/panel.d.ts.map +1 -0
  118. package/dist/panel.js +408 -0
  119. package/dist/panel.js.map +1 -0
  120. package/dist/plots.d.ts +2 -0
  121. package/dist/plots.js +2 -0
  122. package/dist/polar-pad.d.ts +67 -0
  123. package/dist/polar-pad.d.ts.map +1 -0
  124. package/dist/polar-pad.js +537 -0
  125. package/dist/polar-pad.js.map +1 -0
  126. package/dist/popup-Ddx9LCzY.js +24 -0
  127. package/dist/popup-Ddx9LCzY.js.map +1 -0
  128. package/dist/prominence-CreDBdCs.js +98 -0
  129. package/dist/prominence-CreDBdCs.js.map +1 -0
  130. package/dist/radial-input-CNJ8asY2.js +849 -0
  131. package/dist/radial-input-CNJ8asY2.js.map +1 -0
  132. package/dist/radial-input-xSTd4kEz.d.ts +70 -0
  133. package/dist/radial-input-xSTd4kEz.d.ts.map +1 -0
  134. package/dist/radial-input.d.ts +2 -0
  135. package/dist/radial-input.js +2 -0
  136. package/dist/range-input.d.ts +43 -0
  137. package/dist/range-input.d.ts.map +1 -0
  138. package/dist/range-input.js +459 -0
  139. package/dist/range-input.js.map +1 -0
  140. package/dist/range.d.ts +28 -0
  141. package/dist/range.d.ts.map +1 -0
  142. package/dist/range.js +136 -0
  143. package/dist/range.js.map +1 -0
  144. package/dist/registry-CZEB1YI9.js +21 -0
  145. package/dist/registry-CZEB1YI9.js.map +1 -0
  146. package/dist/selecthorizontal.d.ts +13 -8
  147. package/dist/selecthorizontal.d.ts.map +1 -1
  148. package/dist/selecthorizontal.js +21 -25
  149. package/dist/selecthorizontal.js.map +1 -1
  150. package/dist/snap-container.d.ts +50 -0
  151. package/dist/snap-container.d.ts.map +1 -0
  152. package/dist/snap-container.js +297 -0
  153. package/dist/snap-container.js.map +1 -0
  154. package/dist/split-layout.d.ts +56 -0
  155. package/dist/split-layout.d.ts.map +1 -0
  156. package/dist/split-layout.js +545 -0
  157. package/dist/split-layout.js.map +1 -0
  158. package/dist/style.css +133 -0
  159. package/dist/swipe.d.ts +48 -0
  160. package/dist/swipe.d.ts.map +1 -0
  161. package/dist/swipe.js +204 -0
  162. package/dist/swipe.js.map +1 -0
  163. package/dist/tab-list-CFF7uSYH.d.ts +66 -0
  164. package/dist/tab-list-CFF7uSYH.d.ts.map +1 -0
  165. package/dist/tabs.d.ts +2 -0
  166. package/dist/tabs.js +203 -0
  167. package/dist/tabs.js.map +1 -0
  168. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  169. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  170. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  171. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  172. package/dist/timeline-DBWJsSjd.js +1748 -0
  173. package/dist/timeline-DBWJsSjd.js.map +1 -0
  174. package/dist/timeline.d.ts +2 -0
  175. package/dist/timeline.js +2 -0
  176. package/dist/tooltip-DMxmBNky.js +104 -0
  177. package/dist/tooltip-DMxmBNky.js.map +1 -0
  178. package/dist/tooltip-kfUBWYVB.d.ts +26 -0
  179. package/dist/tooltip-kfUBWYVB.d.ts.map +1 -0
  180. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  181. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  182. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  183. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  184. package/dist/tree.d.ts +100 -0
  185. package/dist/tree.d.ts.map +1 -0
  186. package/dist/tree.js +1144 -0
  187. package/dist/tree.js.map +1 -0
  188. package/dist/types-BKaqnpwx.d.ts +8 -0
  189. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  190. package/dist/xy-axis-BANbgrI5.js +6243 -0
  191. package/dist/xy-axis-BANbgrI5.js.map +1 -0
  192. package/dist/xy-axis-CIFok7MF.d.ts +141 -0
  193. package/dist/xy-axis-CIFok7MF.d.ts.map +1 -0
  194. package/dist/xy-pad.d.ts +81 -0
  195. package/dist/xy-pad.d.ts.map +1 -0
  196. package/dist/xy-pad.js +435 -0
  197. package/dist/xy-pad.js.map +1 -0
  198. package/package.json +48 -39
  199. package/README.md +0 -14
  200. package/dist/charts/frequency-histogram-plot.d.ts +0 -33
  201. package/dist/charts/frequency-histogram-plot.d.ts.map +0 -1
  202. package/dist/charts/frequency-histogram-plot.js +0 -54
  203. package/dist/charts/frequency-histogram-plot.js.map +0 -1
  204. package/dist/charts/histogram-vis.d.ts +0 -57
  205. package/dist/charts/histogram-vis.d.ts.map +0 -1
  206. package/dist/charts/histogram-vis.js +0 -222
  207. package/dist/charts/histogram-vis.js.map +0 -1
  208. package/dist/charts/plot.d.ts +0 -199
  209. package/dist/charts/plot.d.ts.map +0 -1
  210. package/dist/charts/plot.js +0 -914
  211. package/dist/charts/plot.js.map +0 -1
  212. package/dist/crumb-nav.d.ts +0 -41
  213. package/dist/crumb-nav.d.ts.map +0 -1
  214. package/dist/crumb-nav.js +0 -198
  215. package/dist/crumb-nav.js.map +0 -1
  216. package/dist/crumb-navigation.d.ts +0 -30
  217. package/dist/crumb-navigation.d.ts.map +0 -1
  218. package/dist/crumb-navigation.js +0 -307
  219. package/dist/crumb-navigation.js.map +0 -1
  220. package/dist/dial.d.ts +0 -89
  221. package/dist/dial.d.ts.map +0 -1
  222. package/dist/dial.js +0 -506
  223. package/dist/dial.js.map +0 -1
  224. package/dist/my-element.d.ts +0 -14
  225. package/dist/my-element.d.ts.map +0 -1
  226. package/dist/my-element.js +0 -44
  227. package/dist/my-element.js.map +0 -1
  228. package/dist/split-layout/split-layout.d.ts +0 -35
  229. package/dist/split-layout/split-layout.d.ts.map +0 -1
  230. package/dist/split-layout/split-layout.js +0 -220
  231. package/dist/split-layout/split-layout.js.map +0 -1
  232. package/dist/svg-edit-label.d.ts +0 -2
  233. package/dist/svg-edit-label.d.ts.map +0 -1
  234. package/dist/svg-edit-label.js +0 -110
  235. package/dist/svg-edit-label.js.map +0 -1
  236. package/dist/tabs/tab-layout-item.d.ts +0 -10
  237. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  238. package/dist/tabs/tab-layout-item.js +0 -20
  239. package/dist/tabs/tab-layout-item.js.map +0 -1
  240. package/dist/tabs/tab-layout.d.ts +0 -10
  241. package/dist/tabs/tab-layout.d.ts.map +0 -1
  242. package/dist/tabs/tab-layout.js +0 -25
  243. package/dist/tabs/tab-layout.js.map +0 -1
  244. package/dist/tabs/tab-list-item.d.ts +0 -18
  245. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  246. package/dist/tabs/tab-list-item.js +0 -63
  247. package/dist/tabs/tab-list-item.js.map +0 -1
  248. package/dist/tabs/tab-list.d.ts +0 -21
  249. package/dist/tabs/tab-list.d.ts.map +0 -1
  250. package/dist/tabs/tab-list.js +0 -148
  251. package/dist/tabs/tab-list.js.map +0 -1
  252. package/dist/tabs/tab-panel.d.ts +0 -11
  253. package/dist/tabs/tab-panel.d.ts.map +0 -1
  254. package/dist/tabs/tab-panel.js +0 -30
  255. package/dist/tabs/tab-panel.js.map +0 -1
  256. package/dist/tabs/tab-panels.d.ts +0 -30
  257. package/dist/tabs/tab-panels.d.ts.map +0 -1
  258. package/dist/tabs/tab-panels.js +0 -80
  259. package/dist/tabs/tab-panels.js.map +0 -1
  260. package/dist/util/circle-arc.d.ts +0 -34
  261. package/dist/util/circle-arc.d.ts.map +0 -1
  262. package/dist/util/circle-arc.js +0 -77
  263. package/dist/util/circle-arc.js.map +0 -1
  264. package/dist/util/compare.d.ts +0 -53
  265. package/dist/util/compare.d.ts.map +0 -1
  266. package/dist/util/compare.js +0 -91
  267. package/dist/util/compare.js.map +0 -1
  268. package/dist/util/content-editable.d.ts +0 -2
  269. package/dist/util/content-editable.d.ts.map +0 -1
  270. package/dist/util/content-editable.js +0 -13
  271. package/dist/util/content-editable.js.map +0 -1
  272. package/dist/util/drag-controller.d.ts +0 -13
  273. package/dist/util/drag-controller.d.ts.map +0 -1
  274. package/dist/util/drag-controller.js +0 -21
  275. package/dist/util/drag-controller.js.map +0 -1
  276. package/dist/util/key-value.d.ts +0 -5
  277. package/dist/util/key-value.d.ts.map +0 -1
  278. package/dist/util/key-value.js +0 -30
  279. package/dist/util/key-value.js.map +0 -1
  280. package/dist/util/primitive-types.d.ts +0 -6
  281. package/dist/util/primitive-types.d.ts.map +0 -1
  282. package/dist/util/primitive-types.js +0 -2
  283. package/dist/util/primitive-types.js.map +0 -1
  284. package/dist/util/svg-editable-text.d.ts +0 -22
  285. package/dist/util/svg-editable-text.d.ts.map +0 -1
  286. package/dist/util/svg-editable-text.js +0 -121
  287. package/dist/util/svg-editable-text.js.map +0 -1
  288. package/dist/util/time.d.ts +0 -2
  289. package/dist/util/time.d.ts.map +0 -1
  290. package/dist/util/time.js +0 -2
  291. package/dist/util/time.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","names":["#value"],"sources":["../src/range/range.ts"],"sourcesContent":["import type { TooltipOrientations } from \"../util/tooltip.js\";\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { prominenceStyles } from \"../styles/prominence.js\";\nimport { tooltipValueStyles } from \"../styles/tooltip.js\";\n\n@customElement(`ixfx-range`)\nexport class RangeElement extends LitElement {\n @property({ type: Boolean })\n tooltip = true;\n\n @property({ type: String, attribute: `tooltip-orientation` })\n tooltipOrientation: TooltipOrientations = `top`;\n\n @property({ type: String, reflect: true })\n orientation: `horizontal` | `vertical` = `horizontal`;\n\n @property({ type: Boolean, attribute: true })\n disabled = false;\n\n @property({ type: Number })\n min = 0;\n\n @property({ type: Number })\n max = 100;\n\n @property({ type: Number })\n set value(v: number) {\n this.#value = v;\n }\n\n get value() {\n return this.#value;\n }\n\n #value = 0;\n\n @property({ type: Number })\n step = 0;\n\n onRangeInput(event: InputEvent) {\n const valueNum = (event.target as HTMLInputElement).valueAsNumber;\n const valueStr = (event.target as HTMLInputElement).value;\n this.#value = valueNum;\n\n if (this.tooltip) {\n const o = this.shadowRoot?.querySelector(`output`);\n if (o) {\n o.value = valueStr;\n } else {\n console.warn(`Output element not found`);\n }\n }\n }\n\n protected render(): unknown {\n const tt = this.tooltip\n ? html`<ixfx-tooltip\n style=\"--tooltip-background: var(--surface-5); --tooltip-color: var(--surface-5-text)\"\n .orientation=${this.tooltipOrientation}\n anchor=\"--thumb-tooltip\"\n .value=${this.value}></ixfx-tooltip>`\n : nothing;\n const verticalStyle = this.orientation === `vertical`\n ? `writing-mode: vertical-lr; direction: rtl;`\n : nothing;\n return html`\n <input ?disabled=${this.disabled} step=${this.step} min=${this.min} max=${this.max} value=${this.value} @input=${this.onRangeInput} type=\"range\" style=${verticalStyle}>\n ${tt}\n `;\n }\n\n static styles = [\n prominenceStyles,\n tooltipValueStyles,\n css`\n :host {\n display: inline-block;\n --value-label-color: unset;\n --thumb-background: ButtonFace;\n --thumb-radius: 50%;\n --thumb-width: 1em;\n --thumb-height: 1em;\n }\n\n :host([orientation=\"vertical\"]) {\n display: block;\n width: 1.5em;\n height: 200px;\n }\n\n [type=\"range\"] {\n width: 100%;\n height: 1.5em;\n accent-color: var(--accent, AccentColor);\n }\n\n :host([orientation=\"vertical\"]) [type=\"range\"] {\n writing-mode: vertical-lr;\n direction: rtl;\n width: 1.5em;\n height: 100%;\n }\n\n [type=\"range\"]::-webkit-slider-thumb {\n width: var(--thumb-width);\n height: var(--thumb-height);\n border-radius: var(--thumb-radius);\n background: var(--thumb-background);\n anchor-name: --thumb-tooltip;\n }\n\n :host([orientation=\"vertical\"]) [type=\"range\"]::-webkit-slider-thumb {\n width: var(--thumb-height);\n height: var(--thumb-width);\n }\n\n [type=\"range\"]::-moz-range-thumb {\n width: var(--thumb-width);\n height: var(--thumb-height);\n border-radius: var(--thumb-radius);\n background: var(--thumb-background);\n box-shadow: var(--shadow-m);\n anchor-name: --thumb-tooltip;\n }\n\n :host([orientation=\"vertical\"]) [type=\"range\"]::-moz-range-thumb {\n width: var(--thumb-height);\n height: var(--thumb-width);\n }\n\n [type=\"range\"]:focus {\n outline: none;\n }\n `,\n ];\n}\n\ndeclare global {\n interface HTMLElementMap {\n \"ixfx-range\": RangeElement;\n }\n}\n"],"mappings":";;;;;;AAOO,IAAA,eAAA,MAAM,qBAAqB,WAAW;;;iBAEjC;4BAGgC;qBAGD;kBAG9B;aAGL;aAGA;gBAWG;cAGF;;CAZP,IACI,MAAM,GAAW;AACnB,QAAA,QAAc;;CAGhB,IAAI,QAAQ;AACV,SAAO,MAAA;;CAGT;CAKA,aAAa,OAAmB;EAC9B,MAAM,WAAY,MAAM,OAA4B;EACpD,MAAM,WAAY,MAAM,OAA4B;AACpD,QAAA,QAAc;AAEd,MAAI,KAAK,SAAS;GAChB,MAAM,IAAI,KAAK,YAAY,cAAc,SAAS;AAClD,OAAI,EACF,GAAE,QAAQ;OAEV,SAAQ,KAAK,2BAA2B;;;CAK9C,SAA4B;EAC1B,MAAM,KAAK,KAAK,UACZ,IAAI;;yBAEa,KAAK,mBAAmB;;mBAE9B,KAAK,MAAM,oBACtB;EACJ,MAAM,gBAAgB,KAAK,gBAAgB,aACvC,+CACA;AACJ,SAAO,IAAI;yBACU,KAAK,SAAS,QAAQ,KAAK,KAAK,OAAO,KAAK,IAAI,OAAO,KAAK,IAAI,SAAS,KAAK,MAAM,UAAU,KAAK,aAAa,sBAAsB,cAAc;QACrK,GAAG;;;;gBAIO;GACd;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DJ;;;YA/HA,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,aAAA,WAAA,WAAA,KAAA,EAAA;YAG3B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAuB,CAAC,CAAA,EAAA,aAAA,WAAA,sBAAA,KAAA,EAAA;YAG5D,SAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,aAAA,WAAA,eAAA,KAAA,EAAA;YAGzC,SAAS;CAAE,MAAM;CAAS,WAAW;CAAM,CAAC,CAAA,EAAA,aAAA,WAAA,YAAA,KAAA,EAAA;YAG5C,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,OAAA,KAAA,EAAA;YAG1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,OAAA,KAAA,EAAA;YAG1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,SAAA,KAAA;YAW1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,QAAA,KAAA,EAAA;2BA/B5B,cAAc,aAAa,CAAA,EAAA,aAAA"}
@@ -0,0 +1,21 @@
1
+ //#region src/icons/registry.ts
2
+ const _registry = /* @__PURE__ */ new Map();
3
+ const iconBus = new EventTarget();
4
+ function registerIcon(name, svg) {
5
+ _registry.set(name, svg);
6
+ iconBus.dispatchEvent(new CustomEvent(`ixfx-icon-change`, { detail: { name } }));
7
+ }
8
+ function getIcon(name) {
9
+ return _registry.get(name);
10
+ }
11
+ function hasIcon(name) {
12
+ return _registry.has(name);
13
+ }
14
+ /** Converts an SVG string to a CSS data-URI value, e.g. for use as a mask-image. */
15
+ function svgToDataUri(svg) {
16
+ return `url("data:image/svg+xml,${encodeURIComponent(svg)}")`;
17
+ }
18
+ //#endregion
19
+ export { svgToDataUri as a, registerIcon as i, hasIcon as n, iconBus as r, getIcon as t };
20
+
21
+ //# sourceMappingURL=registry-CZEB1YI9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-CZEB1YI9.js","names":[],"sources":["../src/icons/registry.ts"],"sourcesContent":["const _registry = new Map<string, string>();\n\nexport const iconBus = new EventTarget();\n\nexport type IconChangedDetail = { readonly name: string };\nexport type IconChangedEvent = CustomEvent<IconChangedDetail>;\n\nexport function registerIcon(name: string, svg: string): void {\n _registry.set(name, svg);\n iconBus.dispatchEvent(new CustomEvent<IconChangedDetail>(`ixfx-icon-change`, { detail: { name } }));\n}\n\nexport function getIcon(name: string): string | undefined {\n return _registry.get(name);\n}\n\nexport function hasIcon(name: string): boolean {\n return _registry.has(name);\n}\n\n/** Converts an SVG string to a CSS data-URI value, e.g. for use as a mask-image. */\nexport function svgToDataUri(svg: string): string {\n return `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\")`;\n}\n"],"mappings":";AAAA,MAAM,4BAAY,IAAI,KAAqB;AAE3C,MAAa,UAAU,IAAI,aAAa;AAKxC,SAAgB,aAAa,MAAc,KAAmB;AAC5D,WAAU,IAAI,MAAM,IAAI;AACxB,SAAQ,cAAc,IAAI,YAA+B,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;;AAGrG,SAAgB,QAAQ,MAAkC;AACxD,QAAO,UAAU,IAAI,KAAK;;AAG5B,SAAgB,QAAQ,MAAuB;AAC7C,QAAO,UAAU,IAAI,KAAK;;;AAI5B,SAAgB,aAAa,KAAqB;AAChD,QAAO,2BAA2B,mBAAmB,IAAI,CAAC"}
@@ -1,12 +1,17 @@
1
+ import * as _$lit from "lit";
1
2
  import { LitElement } from "lit";
2
- export declare class SelectHorizontalElement extends LitElement {
3
- editMode: boolean;
4
- render(): import("lit-html").TemplateResult<1>;
5
- static styles: import("lit").CSSResult;
3
+
4
+ //#region src/selecthorizontal.d.ts
5
+ declare class SelectHorizontalElement extends LitElement {
6
+ editMode: boolean;
7
+ render(): _$lit.TemplateResult<1>;
8
+ static styles: _$lit.CSSResult;
6
9
  }
7
10
  declare global {
8
- interface HTMLElementTagNameMap {
9
- "ixfx-selecthorizontal-element": SelectHorizontalElement;
10
- }
11
- }
11
+ interface HTMLElementTagNameMap {
12
+ "ixfx-selecthorizontal-element": SelectHorizontalElement;
13
+ }
14
+ } //# sourceMappingURL=selecthorizontal.d.ts.map
15
+ //#endregion
16
+ export { SelectHorizontalElement };
12
17
  //# sourceMappingURL=selecthorizontal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selecthorizontal.d.ts","sourceRoot":"","sources":["../src/selecthorizontal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAG5C,qBACa,uBAAwB,SAAQ,UAAU;IAErD,QAAQ,UAAS;IAGjB,MAAM;IASN,MAAM,CAAC,MAAM,0BAed;CACA;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,+BAA+B,EAAE,uBAAuB,CAAC;KAC1D;CACF"}
1
+ {"version":3,"file":"selecthorizontal.d.ts","names":[],"sources":["../src/selecthorizontal.ts"],"mappings":";;;;cAIa,uBAAA,SAAgC,UAAA;EAE3C,QAAA;EAEA,MAAA,CAAA,GAJmC,KAAA,CAI7B,cAAA;EAAA,OASC,MAAA,EATD,KAAA,CASO,SAAA;AAAA;AAAA,QAkBP,MAAA;EAAA,UACI,qBAAA;IACR,+BAAA,EAAiC,uBAAA;EAAA;AAAA"}
@@ -1,25 +1,22 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { css, html, LitElement } from "lit";
1
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
2
+ import { LitElement, css, html } from "lit";
8
3
  import { customElement, property } from "lit/decorators.js";
4
+ //#region src/selecthorizontal.ts
9
5
  let SelectHorizontalElement = class SelectHorizontalElement extends LitElement {
10
- constructor() {
11
- super(...arguments);
12
- this.editMode = false;
13
- }
14
- render() {
15
- console.log(`render`);
16
- return html `
6
+ constructor(..._args) {
7
+ super(..._args);
8
+ this.editMode = false;
9
+ }
10
+ render() {
11
+ console.log(`render`);
12
+ return html`
17
13
  <option>pre</option>
18
14
  <slot></slot>
19
15
  <option>post</option>
20
16
  `;
21
- }
22
- static { this.styles = css `
17
+ }
18
+ static {
19
+ this.styles = css`
23
20
  :host {
24
21
  display: flex;
25
22
  overflow: scroll;
@@ -31,16 +28,15 @@ let SelectHorizontalElement = class SelectHorizontalElement extends LitElement {
31
28
  ::slotted(*),option {
32
29
  user-select: none;
33
30
  scroll-snap-align: start;
34
- border: 1px solid silver;
35
- color:red;
31
+ border: var(--border);
32
+ color: var(--accent);
36
33
  }
37
- `; }
34
+ `;
35
+ }
38
36
  };
39
- __decorate([
40
- property({ type: Boolean })
41
- ], SelectHorizontalElement.prototype, "editMode", void 0);
42
- SelectHorizontalElement = __decorate([
43
- customElement('ixfx-selecthorizontal-element')
44
- ], SelectHorizontalElement);
37
+ __decorate([property({ type: Boolean })], SelectHorizontalElement.prototype, "editMode", void 0);
38
+ SelectHorizontalElement = __decorate([customElement(`ixfx-selecthorizontal-element`)], SelectHorizontalElement);
39
+ //#endregion
45
40
  export { SelectHorizontalElement };
41
+
46
42
  //# sourceMappingURL=selecthorizontal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selecthorizontal.js","sourceRoot":"","sources":["../src/selecthorizontal.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGrD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;QAEL,aAAQ,GAAG,KAAK,CAAC;IA4BnB,CAAC;IAzBC,MAAM;QACJ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;aAEM,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;CAepB,AAfc,CAed;;AA3BC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;yDACX;AAFN,uBAAuB;IADnC,aAAa,CAAC,+BAA+B,CAAC;GAClC,uBAAuB,CA8BnC"}
1
+ {"version":3,"file":"selecthorizontal.js","names":[],"sources":["../src/selecthorizontal.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n\n@customElement(`ixfx-selecthorizontal-element`)\nexport class SelectHorizontalElement extends LitElement {\n @property({ type: Boolean })\n editMode = false;\n\n render() {\n console.log(`render`);\n return html`\n <option>pre</option>\n <slot></slot>\n <option>post</option>\n `;\n }\n\n static styles = css`\n :host {\n display: flex;\n overflow: scroll;\n width: 100%;\n scroll-snap-type: x mandatory;\n scrollbar-width: none;\n }\n \n ::slotted(*),option {\n user-select: none;\n scroll-snap-align: start;\n border: var(--border);\n color: var(--accent);\n }\n`;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ixfx-selecthorizontal-element\": SelectHorizontalElement;\n }\n}"],"mappings":";;;;AAIO,IAAA,0BAAA,MAAM,gCAAgC,WAAW;;;kBAE3C;;CAEX,SAAS;AACP,UAAQ,IAAI,SAAS;AACrB,SAAO,IAAI;;;;;;;gBAOG,GAAG;;;;;;;;;;;;;;;;;;YAZlB,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,wBAAA,WAAA,YAAA,KAAA,EAAA;sCAF7B,cAAc,gCAAgC,CAAA,EAAA,wBAAA"}
@@ -0,0 +1,50 @@
1
+ import * as _$lit from "lit";
2
+ import { LitElement, html } from "lit";
3
+
4
+ //#region src/snap-container/snap-container.d.ts
5
+ type SnapLogic = `centre` | `balanced`;
6
+ type ClickSnapMode = `closest` | `step`;
7
+ declare class SnapContainer extends LitElement {
8
+ static styles: _$lit.CSSResult;
9
+ orientation: `horizontal` | `vertical`;
10
+ snapPositions: number;
11
+ snapLogic: SnapLogic;
12
+ clickSnap: `closest` | `step`;
13
+ snap: number;
14
+ private _dragging;
15
+ private _dragStart;
16
+ private _dragThreshold;
17
+ private _thresholdReached;
18
+ private _currentDragIndex;
19
+ private _child;
20
+ private get _isHorizontal();
21
+ private _getChild;
22
+ private _computeSnapPositions;
23
+ private _getSnapIndex;
24
+ private _clampChildPosition;
25
+ private _updateChildPosition;
26
+ private _onPointerDown;
27
+ private _onPointerMove;
28
+ private _onPointerUp;
29
+ private _onKeyDown;
30
+ firstUpdated(): void;
31
+ updated(changedProperties: Map<string, unknown>): void;
32
+ render(): ReturnType<typeof html>;
33
+ }
34
+ type SnapChangeDetail = {
35
+ readonly previousSnap: number;
36
+ readonly newSnap: number;
37
+ };
38
+ type SnapChangeEvent = CustomEvent<SnapChangeDetail>;
39
+ type SnapInputDetail = {
40
+ readonly index: number;
41
+ };
42
+ type SnapInputEvent = CustomEvent<SnapInputDetail>;
43
+ declare global {
44
+ interface HTMLElementTagNameMap {
45
+ 'ixfx-snap-container': SnapContainer;
46
+ }
47
+ } //# sourceMappingURL=snap-container.d.ts.map
48
+ //#endregion
49
+ export { ClickSnapMode, SnapChangeDetail, SnapChangeEvent, SnapContainer, SnapInputDetail, SnapInputEvent, SnapLogic };
50
+ //# sourceMappingURL=snap-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-container.d.ts","names":[],"sources":["../src/snap-container/snap-container.ts"],"mappings":";;;;KAGY,SAAA;AAAA,KACA,aAAA;AAAA,cAGC,aAAA,SAAsB,UAAA;EAAA,OACjB,MAAA,EADS,KAAA,CACH,SAAA;EA0DtB,WAAA;EAGA,aAAA;EAGA,SAAA,EAAW,SAAA;EAGX,SAAA;EAGA,IAAA;EAAA,QAGQ,SAAA;EAAA,QAEA,UAAA;EAAA,QACA,cAAA;EAAA,QACA,iBAAA;EAAA,QACA,iBAAA;EAAA,QACA,MAAA;EAAA,YAEI,aAAA,CAAA;EAAA,QAIJ,SAAA;EAAA,QAMA,qBAAA;EAAA,QAwCA,aAAA;EAAA,QA8BA,mBAAA;EAAA,QAWA,oBAAA;EAAA,QAwBA,cAAA;EAAA,QA0DA,cAAA;EAAA,QAyBA,YAAA;EAAA,QA2BA,UAAA;EAoCC,YAAA,CAAA;EAKA,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAM3B,MAAA,CAAA,GAAU,UAAA,QAAkB,IAAA;AAAA;AAAA,KAc3B,gBAAA;EAAA,SACD,YAAA;EAAA,SACA,OAAA;AAAA;AAAA,KAGC,eAAA,GAAkB,WAAA,CAAY,gBAAA;AAAA,KAE9B,eAAA;EAAA,SACD,KAAA;AAAA;AAAA,KAGC,cAAA,GAAiB,WAAA,CAAY,eAAA;AAAA,QAEjC,MAAA;EAAA,UACI,qBAAA;IACR,qBAAA,EAAuB,aAAA;EAAA;AAAA"}
@@ -0,0 +1,297 @@
1
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
2
+ import { LitElement, css, html } from "lit";
3
+ import { customElement, property, state } from "lit/decorators.js";
4
+ //#region src/snap-container/snap-container.ts
5
+ let SnapContainer = class SnapContainer extends LitElement {
6
+ constructor(..._args) {
7
+ super(..._args);
8
+ this.orientation = `horizontal`;
9
+ this.snapPositions = 3;
10
+ this.snapLogic = `balanced`;
11
+ this.clickSnap = `closest`;
12
+ this.snap = 0;
13
+ this._dragging = false;
14
+ this._dragStart = 0;
15
+ this._dragThreshold = 10;
16
+ this._thresholdReached = false;
17
+ this._currentDragIndex = 0;
18
+ this._child = null;
19
+ this._onPointerDown = (e) => {
20
+ const child = this._getChild();
21
+ if (!child) return;
22
+ const containerRect = this.getBoundingClientRect();
23
+ const newIndex = this._getSnapIndex(this._isHorizontal ? e.clientX : e.clientY, containerRect);
24
+ if (child.contains(e.target)) {
25
+ e.preventDefault();
26
+ e.stopPropagation();
27
+ this._dragging = true;
28
+ this._thresholdReached = false;
29
+ this._dragStart = this._isHorizontal ? e.clientX : e.clientY;
30
+ this._currentDragIndex = newIndex;
31
+ child.classList.add(`dragging`);
32
+ document.addEventListener(`pointermove`, this._onPointerMove);
33
+ document.addEventListener(`pointerup`, this._onPointerUp);
34
+ } else {
35
+ let targetIndex;
36
+ if (this.clickSnap === `step`) {
37
+ targetIndex = this.snap;
38
+ const childRect = child.getBoundingClientRect();
39
+ const childCenter = this._isHorizontal ? childRect.left + childRect.width / 2 : childRect.top + childRect.height / 2;
40
+ const clickPos = this._isHorizontal ? e.clientX : e.clientY;
41
+ if (clickPos > childCenter) targetIndex = Math.min(this.snapPositions - 1, this.snap + 1);
42
+ else if (clickPos < childCenter) targetIndex = Math.max(0, this.snap - 1);
43
+ } else targetIndex = newIndex;
44
+ if (targetIndex !== this.snap) {
45
+ const previousSnap = this.snap;
46
+ this.snap = targetIndex;
47
+ this._updateChildPosition(this.snap);
48
+ this.dispatchEvent(new CustomEvent(`snap-change`, {
49
+ detail: {
50
+ previousSnap,
51
+ newSnap: this.snap
52
+ },
53
+ bubbles: true,
54
+ composed: true
55
+ }));
56
+ } else this._updateChildPosition(this.snap);
57
+ }
58
+ };
59
+ this._onPointerMove = (e) => {
60
+ if (!this._dragging) return;
61
+ const currentPos = this._isHorizontal ? e.clientX : e.clientY;
62
+ const delta = currentPos - this._dragStart;
63
+ const containerRect = this.getBoundingClientRect();
64
+ if (!this._thresholdReached && Math.abs(delta) < this._dragThreshold) return;
65
+ this._thresholdReached = true;
66
+ const newIndex = this._getSnapIndex(currentPos, containerRect);
67
+ this._currentDragIndex = newIndex;
68
+ this._updateChildPosition(newIndex);
69
+ this.dispatchEvent(new CustomEvent(`snap-input`, {
70
+ detail: { index: newIndex },
71
+ bubbles: true,
72
+ composed: true
73
+ }));
74
+ };
75
+ this._onPointerUp = () => {
76
+ if (!this._dragging) return;
77
+ this._dragging = false;
78
+ const child = this._getChild();
79
+ if (child) child.classList.remove(`dragging`);
80
+ document.removeEventListener(`pointermove`, this._onPointerMove);
81
+ document.removeEventListener(`pointerup`, this._onPointerUp);
82
+ if (this._thresholdReached && this._currentDragIndex !== this.snap) {
83
+ const previousSnap = this.snap;
84
+ this.snap = this._currentDragIndex;
85
+ this._updateChildPosition(this.snap);
86
+ this.dispatchEvent(new CustomEvent(`snap-change`, {
87
+ detail: {
88
+ previousSnap,
89
+ newSnap: this.snap
90
+ },
91
+ bubbles: true,
92
+ composed: true
93
+ }));
94
+ } else this._updateChildPosition(this.snap);
95
+ };
96
+ this._onKeyDown = (e) => {
97
+ let newSnap = this.snap;
98
+ if (this._isHorizontal) if (e.key === `ArrowLeft`) newSnap = Math.max(0, this.snap - 1);
99
+ else if (e.key === `ArrowRight`) newSnap = Math.min(this.snapPositions - 1, this.snap + 1);
100
+ else return;
101
+ else if (e.key === `ArrowUp`) newSnap = Math.max(0, this.snap - 1);
102
+ else if (e.key === `ArrowDown`) newSnap = Math.min(this.snapPositions - 1, this.snap + 1);
103
+ else return;
104
+ e.preventDefault();
105
+ if (newSnap !== this.snap) {
106
+ const previousSnap = this.snap;
107
+ this.snap = newSnap;
108
+ this._updateChildPosition(this.snap);
109
+ this.dispatchEvent(new CustomEvent(`snap-change`, {
110
+ detail: {
111
+ previousSnap,
112
+ newSnap: this.snap
113
+ },
114
+ bubbles: true,
115
+ composed: true
116
+ }));
117
+ }
118
+ };
119
+ }
120
+ static {
121
+ this.styles = css`
122
+ :host {
123
+ display: block;
124
+ position: relative;
125
+ overflow: hidden;
126
+ touch-action: none;
127
+ user-select: none;
128
+ --transition-duration: 200ms;
129
+ }
130
+
131
+ :host([orientation="horizontal"]) {
132
+ width: 100%;
133
+ height: auto;
134
+ min-height: 25px;
135
+ }
136
+
137
+ :host([orientation="vertical"]) {
138
+ height: 100%;
139
+ width: auto;
140
+ min-width: 25px;
141
+ }
142
+
143
+ :host(:not([orientation])) {
144
+ width: 100%;
145
+ min-height: 25px;
146
+ }
147
+
148
+ .container {
149
+ position: relative;
150
+ width: 100%;
151
+ height: 100%;
152
+ min-height: inherit;
153
+ min-width: inherit;
154
+ }
155
+
156
+ ::slotted(*) {
157
+ position: absolute;
158
+ transition: left var(--transition-duration) ease-out,
159
+ top var(--transition-duration) ease-out;
160
+ cursor: grab;
161
+ will-change: left, top;
162
+ }
163
+
164
+ ::slotted(*:active) {
165
+ cursor: grabbing;
166
+ }
167
+
168
+ :host([orientation="vertical"]) ::slotted(*) {
169
+ transition: top var(--transition-duration) ease-out,
170
+ left var(--transition-duration) ease-out;
171
+ }
172
+
173
+ .dragging {
174
+ transition: none !important;
175
+ }
176
+ `;
177
+ }
178
+ get _isHorizontal() {
179
+ return this.orientation !== `vertical`;
180
+ }
181
+ _getChild() {
182
+ if (this._child) return this._child;
183
+ return this.firstElementChild;
184
+ }
185
+ _computeSnapPositions() {
186
+ const positions = [];
187
+ const containerSize = this._isHorizontal ? this.clientWidth : this.clientHeight;
188
+ const child = this._getChild();
189
+ const childSize = child ? this._isHorizontal ? child.offsetWidth : child.offsetHeight : 0;
190
+ if (containerSize === 0 || childSize === 0) return [];
191
+ const availableSpace = containerSize - childSize;
192
+ if (this.snapLogic === `centre`) for (let i = 0; i < this.snapPositions; i++) {
193
+ const fraction = i / (this.snapPositions - 1 || 1);
194
+ positions.push(fraction * availableSpace);
195
+ }
196
+ else {
197
+ const firstPosition = 0;
198
+ const lastPosition = availableSpace;
199
+ if (this.snapPositions === 1) positions.push(availableSpace / 2);
200
+ else if (this.snapPositions === 2) positions.push(firstPosition, lastPosition);
201
+ else {
202
+ positions.push(firstPosition);
203
+ const middleCount = this.snapPositions - 2;
204
+ for (let i = 1; i <= middleCount; i++) {
205
+ const fraction = i / (middleCount + 1);
206
+ positions.push(firstPosition + fraction * (lastPosition - firstPosition));
207
+ }
208
+ positions.push(lastPosition);
209
+ }
210
+ }
211
+ return positions;
212
+ }
213
+ _getSnapIndex(clientPos, containerRect) {
214
+ const offsetInAxis = this._isHorizontal ? clientPos - containerRect.left : clientPos - containerRect.top;
215
+ const snapPositions = this._computeSnapPositions();
216
+ if (snapPositions.length === 0) return 0;
217
+ const child = this._getChild();
218
+ const halfChild = (child ? this._isHorizontal ? child.offsetWidth : child.offsetHeight : 0) / 2;
219
+ let closestIndex = 0;
220
+ let closestDistance = Infinity;
221
+ for (let i = 0; i < snapPositions.length; i++) {
222
+ const snapCenter = snapPositions[i] + halfChild;
223
+ const distance = Math.abs(offsetInAxis - snapCenter);
224
+ if (distance < closestDistance) {
225
+ closestDistance = distance;
226
+ closestIndex = i;
227
+ }
228
+ }
229
+ return closestIndex;
230
+ }
231
+ _clampChildPosition(position) {
232
+ const containerSize = this._isHorizontal ? this.clientWidth : this.clientHeight;
233
+ const child = this._getChild();
234
+ const maxPosition = containerSize - (child ? this._isHorizontal ? child.offsetWidth : child.offsetHeight : 0);
235
+ return Math.max(0, Math.min(position, maxPosition));
236
+ }
237
+ _updateChildPosition(index) {
238
+ const snapPositions = this._computeSnapPositions();
239
+ if (snapPositions.length === 0) return;
240
+ const clampedIndex = Math.max(0, Math.min(index, snapPositions.length - 1));
241
+ const position = snapPositions[clampedIndex];
242
+ const child = this._getChild();
243
+ if (!child) return;
244
+ if (this._isHorizontal) {
245
+ const clampedPosition = this._clampChildPosition(position);
246
+ child.style.left = `${clampedPosition}px`;
247
+ child.style.top = `0px`;
248
+ } else {
249
+ const clampedPosition = this._clampChildPosition(position);
250
+ child.style.top = `${clampedPosition}px`;
251
+ child.style.left = `0px`;
252
+ }
253
+ child.style.setProperty(`--snap-index`, String(clampedIndex));
254
+ }
255
+ firstUpdated() {
256
+ this._child = this.firstElementChild;
257
+ this._updateChildPosition(this.snap);
258
+ }
259
+ updated(changedProperties) {
260
+ if (changedProperties.has(`snap`) && !this._dragging) this._updateChildPosition(this.snap);
261
+ }
262
+ render() {
263
+ return html`
264
+ <div
265
+ class="container"
266
+ @pointerdown=${this._onPointerDown}
267
+ tabindex="0"
268
+ @keydown=${this._onKeyDown}
269
+ >
270
+ <slot></slot>
271
+ </div>
272
+ `;
273
+ }
274
+ };
275
+ __decorate([property({
276
+ type: String,
277
+ attribute: `orientation`
278
+ })], SnapContainer.prototype, "orientation", void 0);
279
+ __decorate([property({
280
+ type: Number,
281
+ attribute: `snap-positions`
282
+ })], SnapContainer.prototype, "snapPositions", void 0);
283
+ __decorate([property({
284
+ type: String,
285
+ attribute: `snap-logic`
286
+ })], SnapContainer.prototype, "snapLogic", void 0);
287
+ __decorate([property({
288
+ type: String,
289
+ attribute: `click-snap`
290
+ })], SnapContainer.prototype, "clickSnap", void 0);
291
+ __decorate([property({ type: Number })], SnapContainer.prototype, "snap", void 0);
292
+ __decorate([state()], SnapContainer.prototype, "_dragging", void 0);
293
+ SnapContainer = __decorate([customElement(`ixfx-snap-container`)], SnapContainer);
294
+ //#endregion
295
+ export { SnapContainer };
296
+
297
+ //# sourceMappingURL=snap-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-container.js","names":[],"sources":["../src/snap-container/snap-container.ts"],"sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nexport type SnapLogic = `centre` | `balanced`;\nexport type ClickSnapMode = `closest` | `step`;\n\n@customElement(`ixfx-snap-container`)\nexport class SnapContainer extends LitElement {\n static override styles = css`\n :host {\n display: block;\n position: relative;\n overflow: hidden;\n touch-action: none;\n user-select: none;\n --transition-duration: 200ms;\n }\n \n :host([orientation=\"horizontal\"]) {\n width: 100%;\n height: auto;\n min-height: 25px;\n }\n \n :host([orientation=\"vertical\"]) {\n height: 100%;\n width: auto;\n min-width: 25px;\n }\n \n :host(:not([orientation])) {\n width: 100%;\n min-height: 25px;\n }\n \n .container {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: inherit;\n min-width: inherit;\n }\n \n ::slotted(*) {\n position: absolute;\n transition: left var(--transition-duration) ease-out, \n top var(--transition-duration) ease-out;\n cursor: grab;\n will-change: left, top;\n }\n \n ::slotted(*:active) {\n cursor: grabbing;\n }\n \n :host([orientation=\"vertical\"]) ::slotted(*) {\n transition: top var(--transition-duration) ease-out,\n left var(--transition-duration) ease-out;\n }\n \n .dragging {\n transition: none !important;\n }\n `;\n\n @property({ type: String, attribute: `orientation` })\n orientation: `horizontal` | `vertical` = `horizontal`;\n\n @property({ type: Number, attribute: `snap-positions` })\n snapPositions = 3;\n\n @property({ type: String, attribute: `snap-logic` })\n snapLogic: SnapLogic = `balanced`;\n\n @property({ type: String, attribute: `click-snap` })\n clickSnap: `closest` | `step` = `closest`;\n\n @property({ type: Number })\n snap = 0;\n\n @state()\n private _dragging = false;\n\n private _dragStart = 0;\n private _dragThreshold = 10;\n private _thresholdReached = false;\n private _currentDragIndex = 0;\n private _child: HTMLElement | null = null;\n\n private get _isHorizontal(): boolean {\n return this.orientation !== `vertical`;\n }\n\n private _getChild(): HTMLElement | null {\n if (this._child)\n return this._child;\n return this.firstElementChild as HTMLElement | null;\n }\n\n private _computeSnapPositions(): number[] {\n const positions: number[] = [];\n const containerSize = this._isHorizontal ? this.clientWidth : this.clientHeight;\n const child = this._getChild();\n const childSize = child\n ? (this._isHorizontal ? child.offsetWidth : child.offsetHeight)\n : 0;\n\n if (containerSize === 0 || childSize === 0)\n return [];\n\n const availableSpace = containerSize - childSize;\n\n if (this.snapLogic === `centre`) {\n for (let i = 0; i < this.snapPositions; i++) {\n const fraction = i / (this.snapPositions - 1 || 1);\n positions.push(fraction * availableSpace);\n }\n } else {\n const firstPosition = 0;\n const lastPosition = availableSpace;\n\n if (this.snapPositions === 1) {\n positions.push(availableSpace / 2);\n } else if (this.snapPositions === 2) {\n positions.push(firstPosition, lastPosition);\n } else {\n positions.push(firstPosition);\n const middleCount = this.snapPositions - 2;\n for (let i = 1; i <= middleCount; i++) {\n const fraction = i / (middleCount + 1);\n positions.push(firstPosition + fraction * (lastPosition - firstPosition));\n }\n positions.push(lastPosition);\n }\n }\n\n return positions;\n }\n\n private _getSnapIndex(clientPos: number, containerRect: DOMRect): number {\n const offsetInAxis = this._isHorizontal\n ? clientPos - containerRect.left\n : clientPos - containerRect.top;\n\n const snapPositions = this._computeSnapPositions();\n if (snapPositions.length === 0)\n return 0;\n\n const child = this._getChild();\n const childSize = child\n ? (this._isHorizontal ? child.offsetWidth : child.offsetHeight)\n : 0;\n\n const halfChild = childSize / 2;\n let closestIndex = 0;\n let closestDistance = Infinity;\n\n for (let i = 0; i < snapPositions.length; i++) {\n const snapCenter = snapPositions[i] + halfChild;\n const distance = Math.abs(offsetInAxis - snapCenter);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestIndex = i;\n }\n }\n\n return closestIndex;\n }\n\n private _clampChildPosition(position: number): number {\n const containerSize = this._isHorizontal ? this.clientWidth : this.clientHeight;\n const child = this._getChild();\n const childSize = child\n ? (this._isHorizontal ? child.offsetWidth : child.offsetHeight)\n : 0;\n\n const maxPosition = containerSize - childSize;\n return Math.max(0, Math.min(position, maxPosition));\n }\n\n private _updateChildPosition(index: number): void {\n const snapPositions = this._computeSnapPositions();\n if (snapPositions.length === 0)\n return;\n\n const clampedIndex = Math.max(0, Math.min(index, snapPositions.length - 1));\n const position = snapPositions[clampedIndex];\n\n const child = this._getChild();\n if (!child)\n return;\n\n if (this._isHorizontal) {\n const clampedPosition = this._clampChildPosition(position);\n child.style.left = `${clampedPosition}px`;\n child.style.top = `0px`;\n } else {\n const clampedPosition = this._clampChildPosition(position);\n child.style.top = `${clampedPosition}px`;\n child.style.left = `0px`;\n }\n child.style.setProperty(`--snap-index`, String(clampedIndex));\n }\n\n private _onPointerDown = (e: PointerEvent): void => {\n const child = this._getChild();\n if (!child)\n return;\n\n const containerRect = this.getBoundingClientRect();\n const newIndex = this._getSnapIndex(\n this._isHorizontal ? e.clientX : e.clientY,\n containerRect,\n );\n\n if (child.contains(e.target as Node)) {\n e.preventDefault();\n e.stopPropagation();\n this._dragging = true;\n this._thresholdReached = false;\n this._dragStart = this._isHorizontal ? e.clientX : e.clientY;\n this._currentDragIndex = newIndex;\n child.classList.add(`dragging`);\n\n document.addEventListener(`pointermove`, this._onPointerMove);\n document.addEventListener(`pointerup`, this._onPointerUp);\n } else {\n let targetIndex: number;\n\n if (this.clickSnap === `step`) {\n targetIndex = this.snap;\n const childRect = child.getBoundingClientRect();\n const childCenter = this._isHorizontal\n ? childRect.left + childRect.width / 2\n : childRect.top + childRect.height / 2;\n const clickPos = this._isHorizontal ? e.clientX : e.clientY;\n\n if (clickPos > childCenter) {\n targetIndex = Math.min(this.snapPositions - 1, this.snap + 1);\n } else if (clickPos < childCenter) {\n targetIndex = Math.max(0, this.snap - 1);\n }\n } else {\n targetIndex = newIndex;\n }\n\n if (targetIndex !== this.snap) {\n const previousSnap = this.snap;\n this.snap = targetIndex;\n this._updateChildPosition(this.snap);\n\n this.dispatchEvent(new CustomEvent<SnapChangeDetail>(`snap-change`, {\n detail: { previousSnap, newSnap: this.snap },\n bubbles: true,\n composed: true,\n }));\n } else {\n this._updateChildPosition(this.snap);\n }\n }\n };\n\n private _onPointerMove = (e: PointerEvent): void => {\n if (!this._dragging)\n return;\n\n const currentPos = this._isHorizontal ? e.clientX : e.clientY;\n const delta = currentPos - this._dragStart;\n const containerRect = this.getBoundingClientRect();\n\n if (!this._thresholdReached && Math.abs(delta) < this._dragThreshold) {\n return;\n }\n\n this._thresholdReached = true;\n\n const newIndex = this._getSnapIndex(currentPos, containerRect);\n this._currentDragIndex = newIndex;\n this._updateChildPosition(newIndex);\n\n this.dispatchEvent(new CustomEvent<SnapInputDetail>(`snap-input`, {\n detail: { index: newIndex },\n bubbles: true,\n composed: true,\n }));\n };\n\n private _onPointerUp = (): void => {\n if (!this._dragging)\n return;\n\n this._dragging = false;\n const child = this._getChild();\n if (child)\n child.classList.remove(`dragging`);\n\n document.removeEventListener(`pointermove`, this._onPointerMove);\n document.removeEventListener(`pointerup`, this._onPointerUp);\n\n if (this._thresholdReached && this._currentDragIndex !== this.snap) {\n const previousSnap = this.snap;\n this.snap = this._currentDragIndex;\n this._updateChildPosition(this.snap);\n\n this.dispatchEvent(new CustomEvent<SnapChangeDetail>(`snap-change`, {\n detail: { previousSnap, newSnap: this.snap },\n bubbles: true,\n composed: true,\n }));\n } else {\n this._updateChildPosition(this.snap);\n }\n };\n\n private _onKeyDown = (e: KeyboardEvent): void => {\n let newSnap = this.snap;\n\n if (this._isHorizontal) {\n if (e.key === `ArrowLeft`) {\n newSnap = Math.max(0, this.snap - 1);\n } else if (e.key === `ArrowRight`) {\n newSnap = Math.min(this.snapPositions - 1, this.snap + 1);\n } else {\n return;\n }\n } else {\n if (e.key === `ArrowUp`) {\n newSnap = Math.max(0, this.snap - 1);\n } else if (e.key === `ArrowDown`) {\n newSnap = Math.min(this.snapPositions - 1, this.snap + 1);\n } else {\n return;\n }\n }\n\n e.preventDefault();\n\n if (newSnap !== this.snap) {\n const previousSnap = this.snap;\n this.snap = newSnap;\n this._updateChildPosition(this.snap);\n\n this.dispatchEvent(new CustomEvent<SnapChangeDetail>(`snap-change`, {\n detail: { previousSnap, newSnap: this.snap },\n bubbles: true,\n composed: true,\n }));\n }\n };\n\n override firstUpdated(): void {\n this._child = this.firstElementChild as HTMLElement | null;\n this._updateChildPosition(this.snap);\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`snap`) && !this._dragging) {\n this._updateChildPosition(this.snap);\n }\n }\n\n override render(): ReturnType<typeof html> {\n return html`\n <div \n class=\"container\"\n @pointerdown=${this._onPointerDown}\n tabindex=\"0\"\n @keydown=${this._onKeyDown}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport type SnapChangeDetail = {\n readonly previousSnap: number;\n readonly newSnap: number;\n};\n\nexport type SnapChangeEvent = CustomEvent<SnapChangeDetail>;\n\nexport type SnapInputDetail = {\n readonly index: number;\n};\n\nexport type SnapInputEvent = CustomEvent<SnapInputDetail>;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-snap-container': SnapContainer;\n }\n}"],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import * as _$lit from "lit";
2
+ import { LitElement } from "lit";
3
+
4
+ //#region src/split-layout/split-layout.d.ts
5
+ /**
6
+ * Lays out two elements within a container, with a bar to resize them
7
+ * proportionally.
8
+ *
9
+ * Events
10
+ * ixfx-split-collapsed: Dispatched when a panel is collapsed/uncollapsed via drag.
11
+ * detail: { panel: 'A' | 'B', collapsed: boolean }
12
+ *
13
+ * Attributes
14
+ * layout: `vertical`|`horizontal`
15
+ * sizeA/B: CSS size of section A or B. Can use relative or absolute values
16
+ * fixedA/B: If _true_ size will be calculated in pixels. By default (_false_) it uses % of whole
17
+ * collapsible: If _true_, panels can be collapsed by dragging to edge (default: false)
18
+ * minSizeA/B: Minimum size for panel A or B (e.g., "100px" or "20%"). Default: none
19
+ * maxSizeA/B: Maximum size for panel A or B (e.g., "200px" or "80%"). Default: none
20
+ *
21
+ * CSS variables
22
+ * --handle-size: 2px; // Width/height of resize handle
23
+ * --handle-colour: var(--surface-5); // Colour of handle
24
+ * --handle-hover-colour: var(--surface-6); // Colour of handle when hovering
25
+ * --handle-active-colour: var(--accent); // Colour of handle when being used
26
+ */
27
+ declare class SplitLayoutElement extends LitElement {
28
+ #private;
29
+ layout: `vertical` | `horizontal`;
30
+ sizeA: string;
31
+ sizeB: string;
32
+ fixedA: boolean;
33
+ fixedB: boolean;
34
+ collapsible: boolean;
35
+ collapsedA: boolean;
36
+ collapsedB: boolean;
37
+ minSizeA: string;
38
+ maxSizeA: string;
39
+ minSizeB: string;
40
+ maxSizeB: string;
41
+ private _hasCorner;
42
+ disconnectedCallback(): void;
43
+ firstUpdated(): void;
44
+ updated(changedProperties: Map<string, unknown>): void;
45
+ getZone(): HTMLElement | undefined;
46
+ render(): _$lit.TemplateResult<1>;
47
+ static styles: _$lit.CSSResult;
48
+ }
49
+ declare global {
50
+ interface HTMLElementTagNameMap {
51
+ "ixfx-split-layout": SplitLayoutElement;
52
+ }
53
+ } //# sourceMappingURL=split-layout.d.ts.map
54
+ //#endregion
55
+ export { SplitLayoutElement };
56
+ //# sourceMappingURL=split-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-layout.d.ts","names":[],"sources":["../src/split-layout/split-layout.ts"],"mappings":";;;;;;;AA2BA;;;;;;;;;;;;;;;;;;;cACa,kBAAA,SAA2B,UAAA;EAAA;EAEtC,MAAA;EAGA,KAAA;EAGA,KAAA;EAGA,MAAA;EAGA,MAAA;EAGA,WAAA;EAGA,UAAA;EAGA,UAAA;EAGA,QAAA;EAGA,QAAA;EAGA,QAAA;EAGA,QAAA;EAAA,QAGQ,UAAA;EAmBR,oBAAA,CAAA;EAKA,YAAA,CAAA;EAIA,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAgP3B,OAAA,CAAA,GAAW,WAAA;EAsRX,MAAA,CAAA,GAtRsB,KAAA,CAsRhB,cAAA;EAAA,OA+BC,MAAA,EA/BD,KAAA,CA+BO,SAAA;AAAA;AAAA,QAqFP,MAAA;EAAA,UACI,qBAAA;IACR,mBAAA,EAAqB,kBAAA;EAAA;AAAA"}