@sectile/dom 0.2.0 → 0.3.0

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 (317) hide show
  1. package/dist/accordion.d.ts +91 -0
  2. package/dist/accordion.d.ts.map +1 -0
  3. package/dist/accordion.js +289 -0
  4. package/dist/accordion.js.map +1 -0
  5. package/dist/alert-dialog.d.ts +40 -0
  6. package/dist/alert-dialog.d.ts.map +1 -0
  7. package/dist/alert-dialog.js +14 -0
  8. package/dist/alert-dialog.js.map +1 -0
  9. package/dist/calendar.d.ts +98 -0
  10. package/dist/calendar.d.ts.map +1 -0
  11. package/dist/calendar.js +296 -0
  12. package/dist/calendar.js.map +1 -0
  13. package/dist/carousel.d.ts +64 -0
  14. package/dist/carousel.d.ts.map +1 -0
  15. package/dist/carousel.js +290 -0
  16. package/dist/carousel.js.map +1 -0
  17. package/dist/cascade-select.d.ts +61 -0
  18. package/dist/cascade-select.d.ts.map +1 -0
  19. package/dist/cascade-select.js +175 -0
  20. package/dist/cascade-select.js.map +1 -0
  21. package/dist/checkbox-group.d.ts +22 -0
  22. package/dist/checkbox-group.d.ts.map +1 -0
  23. package/dist/checkbox-group.js +32 -0
  24. package/dist/checkbox-group.js.map +1 -0
  25. package/dist/checkbox.d.ts +64 -0
  26. package/dist/checkbox.d.ts.map +1 -0
  27. package/dist/checkbox.js +63 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/color-picker.d.ts +54 -0
  30. package/dist/color-picker.d.ts.map +1 -0
  31. package/dist/color-picker.js +316 -0
  32. package/dist/color-picker.js.map +1 -0
  33. package/dist/combobox.d.ts +129 -0
  34. package/dist/combobox.d.ts.map +1 -0
  35. package/dist/combobox.js +397 -0
  36. package/dist/combobox.js.map +1 -0
  37. package/dist/date-field.d.ts +42 -0
  38. package/dist/date-field.d.ts.map +1 -0
  39. package/dist/date-field.js +91 -0
  40. package/dist/date-field.js.map +1 -0
  41. package/dist/date-picker.d.ts +52 -0
  42. package/dist/date-picker.d.ts.map +1 -0
  43. package/dist/date-picker.js +127 -0
  44. package/dist/date-picker.js.map +1 -0
  45. package/dist/date-range-field.d.ts +48 -0
  46. package/dist/date-range-field.d.ts.map +1 -0
  47. package/dist/date-range-field.js +114 -0
  48. package/dist/date-range-field.js.map +1 -0
  49. package/dist/date-range-picker.d.ts +52 -0
  50. package/dist/date-range-picker.d.ts.map +1 -0
  51. package/dist/date-range-picker.js +69 -0
  52. package/dist/date-range-picker.js.map +1 -0
  53. package/dist/date-time-field.d.ts +42 -0
  54. package/dist/date-time-field.d.ts.map +1 -0
  55. package/dist/date-time-field.js +166 -0
  56. package/dist/date-time-field.js.map +1 -0
  57. package/dist/date-time-picker.d.ts +54 -0
  58. package/dist/date-time-picker.d.ts.map +1 -0
  59. package/dist/date-time-picker.js +295 -0
  60. package/dist/date-time-picker.js.map +1 -0
  61. package/dist/date-time-range-picker.d.ts +57 -0
  62. package/dist/date-time-range-picker.d.ts.map +1 -0
  63. package/dist/date-time-range-picker.js +322 -0
  64. package/dist/date-time-range-picker.js.map +1 -0
  65. package/dist/dialog.d.ts +39 -0
  66. package/dist/dialog.d.ts.map +1 -0
  67. package/dist/dialog.js +15 -0
  68. package/dist/dialog.js.map +1 -0
  69. package/dist/disclosure.d.ts +70 -0
  70. package/dist/disclosure.d.ts.map +1 -0
  71. package/dist/disclosure.js +142 -0
  72. package/dist/disclosure.js.map +1 -0
  73. package/dist/drawer.d.ts +45 -0
  74. package/dist/drawer.d.ts.map +1 -0
  75. package/dist/drawer.js +252 -0
  76. package/dist/drawer.js.map +1 -0
  77. package/dist/editable.d.ts +37 -0
  78. package/dist/editable.d.ts.map +1 -0
  79. package/dist/editable.js +83 -0
  80. package/dist/editable.js.map +1 -0
  81. package/dist/feed.d.ts +43 -0
  82. package/dist/feed.d.ts.map +1 -0
  83. package/dist/feed.js +151 -0
  84. package/dist/feed.js.map +1 -0
  85. package/dist/form.d.ts +82 -0
  86. package/dist/form.d.ts.map +1 -0
  87. package/dist/form.js +473 -0
  88. package/dist/form.js.map +1 -0
  89. package/dist/grid.d.ts +54 -0
  90. package/dist/grid.d.ts.map +1 -0
  91. package/dist/grid.js +172 -0
  92. package/dist/grid.js.map +1 -0
  93. package/dist/index.d.ts +112 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +62 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/interact-outside.d.ts +12 -0
  98. package/dist/interact-outside.d.ts.map +1 -0
  99. package/dist/interact-outside.js +28 -0
  100. package/dist/interact-outside.js.map +1 -0
  101. package/dist/internal/checked-control.d.ts +67 -0
  102. package/dist/internal/checked-control.d.ts.map +1 -0
  103. package/dist/internal/checked-control.js +137 -0
  104. package/dist/internal/checked-control.js.map +1 -0
  105. package/dist/internal/controller.d.ts +6 -0
  106. package/dist/internal/controller.d.ts.map +1 -0
  107. package/dist/internal/controller.js +35 -0
  108. package/dist/internal/controller.js.map +1 -0
  109. package/dist/internal/date-picker-cell.d.ts +2 -0
  110. package/dist/internal/date-picker-cell.d.ts.map +1 -0
  111. package/dist/internal/date-picker-cell.js +10 -0
  112. package/dist/internal/date-picker-cell.js.map +1 -0
  113. package/dist/internal/delegated-event.d.ts +2 -0
  114. package/dist/internal/delegated-event.d.ts.map +1 -0
  115. package/dist/internal/delegated-event.js +11 -0
  116. package/dist/internal/delegated-event.js.map +1 -0
  117. package/dist/internal/direction.d.ts +3 -0
  118. package/dist/internal/direction.d.ts.map +1 -0
  119. package/dist/internal/direction.js +8 -0
  120. package/dist/internal/direction.js.map +1 -0
  121. package/dist/internal/disabled-items.d.ts +6 -0
  122. package/dist/internal/disabled-items.d.ts.map +1 -0
  123. package/dist/internal/disabled-items.js +15 -0
  124. package/dist/internal/disabled-items.js.map +1 -0
  125. package/dist/internal/facade.d.ts +45 -0
  126. package/dist/internal/facade.d.ts.map +1 -0
  127. package/dist/internal/facade.js +58 -0
  128. package/dist/internal/facade.js.map +1 -0
  129. package/dist/internal/floating-position.d.ts +26 -0
  130. package/dist/internal/floating-position.d.ts.map +1 -0
  131. package/dist/internal/floating-position.js +103 -0
  132. package/dist/internal/floating-position.js.map +1 -0
  133. package/dist/internal/interaction.d.ts +14 -0
  134. package/dist/internal/interaction.d.ts.map +1 -0
  135. package/dist/internal/interaction.js +25 -0
  136. package/dist/internal/interaction.js.map +1 -0
  137. package/dist/internal/layer-binding.d.ts +16 -0
  138. package/dist/internal/layer-binding.d.ts.map +1 -0
  139. package/dist/internal/layer-binding.js +99 -0
  140. package/dist/internal/layer-binding.js.map +1 -0
  141. package/dist/internal/layer-manager.d.ts +19 -0
  142. package/dist/internal/layer-manager.d.ts.map +1 -0
  143. package/dist/internal/layer-manager.js +81 -0
  144. package/dist/internal/layer-manager.js.map +1 -0
  145. package/dist/internal/menu-control.d.ts +41 -0
  146. package/dist/internal/menu-control.d.ts.map +1 -0
  147. package/dist/internal/menu-control.js +279 -0
  148. package/dist/internal/menu-control.js.map +1 -0
  149. package/dist/internal/modal-effects.d.ts +5 -0
  150. package/dist/internal/modal-effects.d.ts.map +1 -0
  151. package/dist/internal/modal-effects.js +125 -0
  152. package/dist/internal/modal-effects.js.map +1 -0
  153. package/dist/internal/popup-control.d.ts +45 -0
  154. package/dist/internal/popup-control.d.ts.map +1 -0
  155. package/dist/internal/popup-control.js +223 -0
  156. package/dist/internal/popup-control.js.map +1 -0
  157. package/dist/internal/semantic-controller.d.ts +20 -0
  158. package/dist/internal/semantic-controller.d.ts.map +1 -0
  159. package/dist/internal/semantic-controller.js +42 -0
  160. package/dist/internal/semantic-controller.js.map +1 -0
  161. package/dist/internal/text-element.d.ts +16 -0
  162. package/dist/internal/text-element.d.ts.map +1 -0
  163. package/dist/internal/text-element.js +217 -0
  164. package/dist/internal/text-element.js.map +1 -0
  165. package/dist/listbox.d.ts +142 -0
  166. package/dist/listbox.d.ts.map +1 -0
  167. package/dist/listbox.js +463 -0
  168. package/dist/listbox.js.map +1 -0
  169. package/dist/menu-button.d.ts +10 -0
  170. package/dist/menu-button.d.ts.map +1 -0
  171. package/dist/menu-button.js +11 -0
  172. package/dist/menu-button.js.map +1 -0
  173. package/dist/menu.d.ts +10 -0
  174. package/dist/menu.d.ts.map +1 -0
  175. package/dist/menu.js +11 -0
  176. package/dist/menu.js.map +1 -0
  177. package/dist/menubar.d.ts +8 -0
  178. package/dist/menubar.d.ts.map +1 -0
  179. package/dist/menubar.js +11 -0
  180. package/dist/menubar.js.map +1 -0
  181. package/dist/month-picker.d.ts +5 -0
  182. package/dist/month-picker.d.ts.map +1 -0
  183. package/dist/month-picker.js +3 -0
  184. package/dist/month-picker.js.map +1 -0
  185. package/dist/month-range-picker.d.ts +4 -0
  186. package/dist/month-range-picker.d.ts.map +1 -0
  187. package/dist/month-range-picker.js +3 -0
  188. package/dist/month-range-picker.js.map +1 -0
  189. package/dist/multi-thumb-slider.d.ts +43 -0
  190. package/dist/multi-thumb-slider.d.ts.map +1 -0
  191. package/dist/multi-thumb-slider.js +190 -0
  192. package/dist/multi-thumb-slider.js.map +1 -0
  193. package/dist/navigation-menu.d.ts +8 -0
  194. package/dist/navigation-menu.d.ts.map +1 -0
  195. package/dist/navigation-menu.js +10 -0
  196. package/dist/navigation-menu.js.map +1 -0
  197. package/dist/number-field.d.ts +48 -0
  198. package/dist/number-field.d.ts.map +1 -0
  199. package/dist/number-field.js +138 -0
  200. package/dist/number-field.js.map +1 -0
  201. package/dist/pagination.d.ts +52 -0
  202. package/dist/pagination.d.ts.map +1 -0
  203. package/dist/pagination.js +199 -0
  204. package/dist/pagination.js.map +1 -0
  205. package/dist/pin-input.d.ts +31 -0
  206. package/dist/pin-input.d.ts.map +1 -0
  207. package/dist/pin-input.js +84 -0
  208. package/dist/pin-input.js.map +1 -0
  209. package/dist/popover.d.ts +60 -0
  210. package/dist/popover.d.ts.map +1 -0
  211. package/dist/popover.js +82 -0
  212. package/dist/popover.js.map +1 -0
  213. package/dist/quantity-field.d.ts +53 -0
  214. package/dist/quantity-field.d.ts.map +1 -0
  215. package/dist/quantity-field.js +190 -0
  216. package/dist/quantity-field.js.map +1 -0
  217. package/dist/radio-group.d.ts +69 -0
  218. package/dist/radio-group.d.ts.map +1 -0
  219. package/dist/radio-group.js +225 -0
  220. package/dist/radio-group.js.map +1 -0
  221. package/dist/range-calendar.d.ts +3 -0
  222. package/dist/range-calendar.d.ts.map +1 -0
  223. package/dist/range-calendar.js +2 -0
  224. package/dist/range-calendar.js.map +1 -0
  225. package/dist/rating.d.ts +23 -0
  226. package/dist/rating.d.ts.map +1 -0
  227. package/dist/rating.js +38 -0
  228. package/dist/rating.js.map +1 -0
  229. package/dist/reorder.d.ts +39 -0
  230. package/dist/reorder.d.ts.map +1 -0
  231. package/dist/reorder.js +308 -0
  232. package/dist/reorder.js.map +1 -0
  233. package/dist/select.d.ts +68 -0
  234. package/dist/select.d.ts.map +1 -0
  235. package/dist/select.js +114 -0
  236. package/dist/select.js.map +1 -0
  237. package/dist/slider.d.ts +108 -0
  238. package/dist/slider.d.ts.map +1 -0
  239. package/dist/slider.js +342 -0
  240. package/dist/slider.js.map +1 -0
  241. package/dist/spin-button.d.ts +44 -0
  242. package/dist/spin-button.d.ts.map +1 -0
  243. package/dist/spin-button.js +130 -0
  244. package/dist/spin-button.js.map +1 -0
  245. package/dist/stepper.d.ts +24 -0
  246. package/dist/stepper.d.ts.map +1 -0
  247. package/dist/stepper.js +32 -0
  248. package/dist/stepper.js.map +1 -0
  249. package/dist/switch.d.ts +45 -0
  250. package/dist/switch.d.ts.map +1 -0
  251. package/dist/switch.js +44 -0
  252. package/dist/switch.js.map +1 -0
  253. package/dist/tabs.d.ts +86 -0
  254. package/dist/tabs.d.ts.map +1 -0
  255. package/dist/tabs.js +259 -0
  256. package/dist/tabs.js.map +1 -0
  257. package/dist/tags-input.d.ts +38 -0
  258. package/dist/tags-input.d.ts.map +1 -0
  259. package/dist/tags-input.js +93 -0
  260. package/dist/tags-input.js.map +1 -0
  261. package/dist/text.d.ts +85 -0
  262. package/dist/text.d.ts.map +1 -0
  263. package/dist/text.js +225 -0
  264. package/dist/text.js.map +1 -0
  265. package/dist/time-field.d.ts +42 -0
  266. package/dist/time-field.d.ts.map +1 -0
  267. package/dist/time-field.js +59 -0
  268. package/dist/time-field.js.map +1 -0
  269. package/dist/time-range-field.d.ts +48 -0
  270. package/dist/time-range-field.d.ts.map +1 -0
  271. package/dist/time-range-field.js +98 -0
  272. package/dist/time-range-field.js.map +1 -0
  273. package/dist/timer.d.ts +32 -0
  274. package/dist/timer.d.ts.map +1 -0
  275. package/dist/timer.js +46 -0
  276. package/dist/timer.js.map +1 -0
  277. package/dist/toast.d.ts +44 -0
  278. package/dist/toast.d.ts.map +1 -0
  279. package/dist/toast.js +263 -0
  280. package/dist/toast.js.map +1 -0
  281. package/dist/toggle-button.d.ts +39 -0
  282. package/dist/toggle-button.d.ts.map +1 -0
  283. package/dist/toggle-button.js +37 -0
  284. package/dist/toggle-button.js.map +1 -0
  285. package/dist/toggle-group.d.ts +42 -0
  286. package/dist/toggle-group.d.ts.map +1 -0
  287. package/dist/toggle-group.js +91 -0
  288. package/dist/toggle-group.js.map +1 -0
  289. package/dist/toolbar.d.ts +43 -0
  290. package/dist/toolbar.d.ts.map +1 -0
  291. package/dist/toolbar.js +151 -0
  292. package/dist/toolbar.js.map +1 -0
  293. package/dist/tooltip.d.ts +45 -0
  294. package/dist/tooltip.d.ts.map +1 -0
  295. package/dist/tooltip.js +68 -0
  296. package/dist/tooltip.js.map +1 -0
  297. package/dist/tree-grid.d.ts +131 -0
  298. package/dist/tree-grid.d.ts.map +1 -0
  299. package/dist/tree-grid.js +466 -0
  300. package/dist/tree-grid.js.map +1 -0
  301. package/dist/tree-view.d.ts +104 -0
  302. package/dist/tree-view.d.ts.map +1 -0
  303. package/dist/tree-view.js +332 -0
  304. package/dist/tree-view.js.map +1 -0
  305. package/dist/window-splitter.d.ts +8 -0
  306. package/dist/window-splitter.d.ts.map +1 -0
  307. package/dist/window-splitter.js +13 -0
  308. package/dist/window-splitter.js.map +1 -0
  309. package/dist/year-picker.d.ts +3 -0
  310. package/dist/year-picker.d.ts.map +1 -0
  311. package/dist/year-picker.js +2 -0
  312. package/dist/year-picker.js.map +1 -0
  313. package/dist/year-range-picker.d.ts +3 -0
  314. package/dist/year-range-picker.d.ts.map +1 -0
  315. package/dist/year-range-picker.js +2 -0
  316. package/dist/year-range-picker.js.map +1 -0
  317. package/package.json +8 -3
@@ -0,0 +1,32 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { tryCreateListbox } from './listbox.js';
4
+ export function createCheckboxGroup(options) {
5
+ return unwrap(tryCreateCheckboxGroup(options));
6
+ }
7
+ export function tryCreateCheckboxGroup(options) {
8
+ return createFacadeConnection(options, (options) => tryCreateCheckboxGroupConnection(options));
9
+ }
10
+ function tryCreateCheckboxGroupConnection(options) {
11
+ const result = tryCreateListbox({ ...options, selectionMode: 'multiple' });
12
+ if (!result.ok)
13
+ return result;
14
+ options.root.setAttribute('role', 'group');
15
+ options.root.removeAttribute('aria-multiselectable');
16
+ return { ok: true, value: wrap(result.value, options.root) };
17
+ }
18
+ function wrap(connection, root) {
19
+ return Object.freeze({
20
+ getSnapshot: () => connection.getSnapshot(),
21
+ syncControlledValues: (values) => connection.syncControlledValues(values),
22
+ setItemAttributes: (element, attributes) => {
23
+ connection.setItemAttributes(element, attributes);
24
+ element.setAttribute('role', 'checkbox');
25
+ element.setAttribute('aria-checked', element.getAttribute('aria-selected') ?? 'false');
26
+ element.removeAttribute('aria-selected');
27
+ },
28
+ handleEvent: (event) => connection.handleEvent(event),
29
+ disconnect: () => { connection.disconnect(); root.removeAttribute('role'); },
30
+ });
31
+ }
32
+ //# sourceMappingURL=checkbox-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group.js","sourceRoot":"","sources":["../src/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EAAE,gBAAgB,EAA+C,MAAM,cAAc,CAAC;AAW7F,MAAM,UAAU,mBAAmB,CAAsB,OAAiC;IACxF,OAAO,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAsB,OAAiC;IAC3F,OAAO,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,gCAAgC,CAAsB,OAAiC;IAC9F,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,IAAI,CAAsB,UAAiC,EAAE,IAAiB;IACrF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3C,oBAAoB,EAAE,CAAC,MAAiF,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACpJ,iBAAiB,EAAE,CAAC,OAAoB,EAAE,UAA4D,EAAQ,EAAE;YAC9G,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,CAAC;YACvF,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QACD,WAAW,EAAE,CAAC,KAA6B,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;QAC7E,UAAU,EAAE,GAAS,EAAE,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACnF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { type FacadeConnection } from './internal/facade.js';
2
+ import type { Result } from '@sectile/core';
3
+ import { type CheckboxEvent, type CheckboxPolicies, type CheckboxState, type CheckboxValue } from '@sectile/core/checkbox';
4
+ import { type CheckedControlAttributes, type CheckedControlController, type DOMCheckedControl } from './internal/checked-control.js';
5
+ export type { CheckboxPolicies, CheckboxState, CheckboxValue } from '@sectile/core/checkbox';
6
+ export interface CheckboxOptions {
7
+ readonly element: HTMLElement;
8
+ readonly value?: CheckboxValue;
9
+ readonly defaultValue?: CheckboxValue;
10
+ readonly policies?: CheckboxPolicies;
11
+ readonly disabled?: boolean;
12
+ readonly readOnly?: boolean;
13
+ readonly onValueChange?: (value: CheckboxValue) => void;
14
+ readonly onUpdate?: () => void;
15
+ }
16
+ export type CheckboxValueChangeHandler = NonNullable<CheckboxOptions['onValueChange']>;
17
+ export type CheckboxUpdateHandler = NonNullable<CheckboxOptions['onUpdate']>;
18
+ export type CheckboxConnection = DOMCheckedControl<CheckboxState, CheckboxEvent, CheckboxValue>;
19
+ export interface CheckboxControllerOptions {
20
+ readonly value?: CheckboxValue;
21
+ readonly defaultValue?: CheckboxValue;
22
+ readonly policies?: CheckboxPolicies;
23
+ readonly disabled?: boolean;
24
+ readonly readOnly?: boolean;
25
+ readonly onValueChange?: (value: CheckboxValue) => void;
26
+ }
27
+ export type CheckboxControllerValueChangeHandler = NonNullable<CheckboxControllerOptions['onValueChange']>;
28
+ export type CheckboxController = CheckedControlController<CheckboxState, CheckboxEvent, CheckboxValue>;
29
+ export interface CheckboxAttributeOptions {
30
+ readonly disabled?: boolean;
31
+ readonly readOnly?: boolean;
32
+ readonly required?: boolean;
33
+ readonly native?: boolean;
34
+ }
35
+ export type CheckboxAttributes = CheckedControlAttributes & {
36
+ readonly 'aria-required': 'true' | undefined;
37
+ readonly 'data-scope': 'checkbox';
38
+ readonly 'data-part': 'root';
39
+ };
40
+ export interface CheckboxInputOptions {
41
+ readonly name?: string;
42
+ readonly value?: string;
43
+ readonly form?: string;
44
+ readonly required?: boolean;
45
+ readonly disabled?: boolean;
46
+ }
47
+ export interface CheckboxInputAttributes {
48
+ readonly type: 'checkbox';
49
+ readonly name: string | undefined;
50
+ readonly value: string;
51
+ readonly form: string | undefined;
52
+ readonly checked: boolean;
53
+ readonly indeterminate: boolean;
54
+ readonly required: boolean;
55
+ readonly disabled: boolean;
56
+ readonly tabIndex: -1;
57
+ readonly 'aria-hidden': 'true';
58
+ }
59
+ export declare function createCheckboxController(options?: CheckboxControllerOptions): Result<CheckboxController>;
60
+ export declare function getCheckboxAttributes(state: CheckboxState, options?: CheckboxAttributeOptions): CheckboxAttributes;
61
+ export declare function getCheckboxInputAttributes(state: CheckboxState, options?: CheckboxInputOptions): CheckboxInputAttributes;
62
+ export declare function createCheckbox(options: CheckboxOptions): FacadeConnection<CheckboxConnection>;
63
+ export declare function tryCreateCheckbox(options: CheckboxOptions): Result<FacadeConnection<CheckboxConnection>>;
64
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../src/checkbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { applyCheckboxEvent, tryCreateCheckboxState } from '@sectile/core/checkbox';
4
+ import { createCheckedControlController, createDOMCheckedControl, getCheckedControlAttributes, } from './internal/checked-control.js';
5
+ export function createCheckboxController(options = {}) {
6
+ return createCheckedControlController({
7
+ controlled: options.value !== undefined,
8
+ initial: tryCreateCheckboxState(options.value ?? options.defaultValue ?? false, options.policies),
9
+ reducer: (state, event) => applyCheckboxEvent(state, event, options.policies),
10
+ create: (value) => tryCreateCheckboxState(value, options.policies),
11
+ read: (state) => state.checked,
12
+ interaction: options,
13
+ onChange: options.onValueChange,
14
+ });
15
+ }
16
+ export function getCheckboxAttributes(state, options = {}) {
17
+ return Object.freeze({
18
+ ...getCheckedControlAttributes({
19
+ role: 'checkbox',
20
+ attribute: 'aria-checked',
21
+ value: state.checked,
22
+ format: String,
23
+ supportsReadOnly: true,
24
+ ...(options.disabled === undefined ? {} : { disabled: options.disabled }),
25
+ ...(options.readOnly === undefined ? {} : { readOnly: options.readOnly }),
26
+ ...(options.native === undefined ? {} : { native: options.native }),
27
+ }),
28
+ 'aria-required': options.required === true ? 'true' : undefined,
29
+ 'data-scope': 'checkbox',
30
+ 'data-part': 'root',
31
+ });
32
+ }
33
+ export function getCheckboxInputAttributes(state, options = {}) {
34
+ return Object.freeze({
35
+ type: 'checkbox',
36
+ name: options.name,
37
+ value: options.value ?? 'on',
38
+ form: options.form,
39
+ checked: state.checked === true,
40
+ indeterminate: state.checked === 'mixed',
41
+ required: options.required ?? false,
42
+ disabled: options.disabled ?? false,
43
+ tabIndex: -1,
44
+ 'aria-hidden': 'true',
45
+ });
46
+ }
47
+ export function createCheckbox(options) {
48
+ return unwrap(tryCreateCheckbox(options));
49
+ }
50
+ export function tryCreateCheckbox(options) {
51
+ return createFacadeConnection(options, (options) => tryCreateCheckboxConnection(options));
52
+ }
53
+ function tryCreateCheckboxConnection(options) { return createDOMCheckedControl({ element: options.element, role: 'checkbox', attribute: 'aria-checked', controlled: options.value !== undefined, initial: tryCreateCheckboxState(options.value ?? options.defaultValue ?? false, options.policies), toggleEvent: 'toggle', reducer: (state, event) => applyCheckboxEvent(state, event, options.policies), create: (value) => tryCreateCheckboxState(value, options.policies), read: (state) => state.checked, format: String, interaction: options, supportsReadOnly: true, applyValue: applyNativeCheckboxValue, onChange: options.onValueChange, onUpdate: options.onUpdate }); }
54
+ function applyNativeCheckboxValue(element, value) {
55
+ if (!('checked' in element) || !('indeterminate' in element))
56
+ return;
57
+ const input = element;
58
+ if (input.type !== 'checkbox')
59
+ return;
60
+ input.checked = value === true;
61
+ input.indeterminate = value === 'mixed';
62
+ }
63
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../src/checkbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { Result } from '@sectile/core';
2
+ import { type ColorAreaValue, type ColorChannel, type ColorCoordinate, type ColorCoordinateValue, type ColorFormat, type ColorModel, type ColorPickerEvent, type ColorPickerPolicies, type ColorPickerState, type ColorValue } from '@sectile/core/color-picker';
3
+ import type { RevisionSnapshot } from '@sectile/core/revision';
4
+ import { type FacadeConnection } from './internal/facade.js';
5
+ export interface ColorPickerOptions extends ColorPickerPolicies {
6
+ readonly root: HTMLElement;
7
+ readonly value?: ColorValue | string;
8
+ readonly defaultValue?: ColorValue | string;
9
+ readonly draft?: string | null;
10
+ readonly defaultDraft?: string | null;
11
+ readonly format?: ColorFormat;
12
+ readonly defaultFormat?: ColorFormat;
13
+ readonly disabled?: boolean;
14
+ readonly readOnly?: boolean;
15
+ readonly label?: string;
16
+ readonly onValueChange?: (value: ColorValue) => void;
17
+ readonly onDraftChange?: (draft: string | null) => void;
18
+ readonly onFormatChange?: (format: ColorFormat) => void;
19
+ readonly onUpdate?: () => void;
20
+ }
21
+ export type ColorPickerValueChangeHandler = NonNullable<ColorPickerOptions['onValueChange']>;
22
+ export type ColorPickerDraftChangeHandler = NonNullable<ColorPickerOptions['onDraftChange']>;
23
+ export type ColorPickerFormatChangeHandler = NonNullable<ColorPickerOptions['onFormatChange']>;
24
+ export type ColorPickerUpdateHandler = NonNullable<ColorPickerOptions['onUpdate']>;
25
+ export interface ColorPickerConnection {
26
+ getSnapshot(): RevisionSnapshot<ColorPickerState>;
27
+ getText(): string;
28
+ getCSSColor(): string;
29
+ getAreaValue(): ColorAreaValue;
30
+ getCoordinates(format?: ColorFormat): readonly ColorCoordinateValue[];
31
+ syncControlledValues(values: {
32
+ readonly value?: ColorValue | string;
33
+ readonly draft?: string | null;
34
+ readonly format?: ColorFormat;
35
+ }): Result<RevisionSnapshot<ColorPickerState>>;
36
+ handleEvent(event: ColorPickerEvent): boolean;
37
+ setNativeInputAttributes(element: HTMLInputElement): void;
38
+ setTextInputAttributes(element: HTMLInputElement): void;
39
+ setChannelInputAttributes(element: HTMLInputElement, channel: ColorChannel): void;
40
+ setCoordinateInputAttributes(element: HTMLInputElement, format: ColorModel, coordinate: ColorCoordinate): void;
41
+ setCoordinateSliderAttributes(element: HTMLInputElement, format: ColorModel, coordinate: ColorCoordinate): void;
42
+ setAreaAttributes(element: HTMLElement): void;
43
+ setAreaThumbAttributes(element: HTMLElement): void;
44
+ setHueInputAttributes(element: HTMLInputElement): void;
45
+ setAlphaInputAttributes(element: HTMLInputElement): void;
46
+ setSwatchAttributes(element: HTMLElement): void;
47
+ refresh(): void;
48
+ disconnect(): void;
49
+ }
50
+ export declare function createColorPicker(options: ColorPickerOptions): FacadeConnection<ColorPickerConnection>;
51
+ export declare function tryCreateColorPicker(options: ColorPickerOptions): Result<FacadeConnection<ColorPickerConnection>>;
52
+ export type { ColorAreaValue, ColorChannel, ColorCoordinate, ColorCoordinateValue, ColorFormat, ColorModel, ColorPickerEvent, ColorPickerPolicies, ColorPickerState, ColorValue } from '@sectile/core/color-picker';
53
+ export { formatColorValue, getColorAreaValue, getColorCoordinates, parseColorValue, setColorCoordinate } from '@sectile/core/color-picker';
54
+ //# sourceMappingURL=color-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-picker.d.ts","sourceRoot":"","sources":["../src/color-picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ import { applyColorPickerEvent, tryCreateColorPickerState, formatColorValue, getColorAreaValue, getColorCoordinates } from '@sectile/core/color-picker';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { createFacadeConnection } from './internal/facade.js';
4
+ import { createSemanticController } from './internal/semantic-controller.js';
5
+ export function createColorPicker(options) { return unwrap(tryCreateColorPicker(options)); }
6
+ export function tryCreateColorPicker(options) { return createFacadeConnection(options, (normalized) => tryCreateColorPickerConnection(normalized)); }
7
+ function tryCreateColorPickerConnection(options) {
8
+ const valueControlled = options.value !== undefined;
9
+ const draftControlled = options.draft !== undefined;
10
+ const formatControlled = options.format !== undefined;
11
+ const policies = {
12
+ ...(options.allowAlpha === undefined ? {} : { allowAlpha: options.allowAlpha }),
13
+ ...(options.channelStep === undefined ? {} : { channelStep: options.channelStep }),
14
+ ...(options.alphaStep === undefined ? {} : { alphaStep: options.alphaStep }),
15
+ };
16
+ const runtime = createSemanticController({
17
+ initial: tryCreateColorPickerState({ value: options.value ?? options.defaultValue ?? '#000000', draft: options.draft !== undefined ? options.draft : options.defaultDraft ?? null, format: options.format ?? options.defaultFormat ?? 'hex' }, policies),
18
+ reducer: (state, event) => applyColorPickerEvent(state, event, policies),
19
+ reconcile: (previous, proposed) => tryCreateColorPickerState({
20
+ value: valueControlled ? previous.value : proposed.value,
21
+ draft: draftControlled ? previous.draft : proposed.draft,
22
+ format: formatControlled ? previous.format : proposed.format,
23
+ channel: proposed.channel,
24
+ }, policies),
25
+ notify: (previous, proposed) => {
26
+ if (!sameColor(previous.value, proposed.value))
27
+ options.onValueChange?.(proposed.value);
28
+ if (previous.draft !== proposed.draft)
29
+ options.onDraftChange?.(proposed.draft);
30
+ if (previous.format !== proposed.format)
31
+ options.onFormatChange?.(proposed.format);
32
+ },
33
+ toEffect: (command) => command,
34
+ interaction: options,
35
+ });
36
+ return runtime.ok ? { ok: true, value: new DOMColorPicker(options, policies, runtime.value, valueControlled, draftControlled, formatControlled) } : runtime;
37
+ }
38
+ class DOMColorPicker {
39
+ #options;
40
+ #policies;
41
+ #runtime;
42
+ #controlled;
43
+ #native = new Map();
44
+ #text = new Map();
45
+ #channels = new Map();
46
+ #coordinates = new Map();
47
+ #areas = new Map();
48
+ #areaThumbs = new Set();
49
+ #hues = new Map();
50
+ #alphas = new Map();
51
+ #swatches = new Set();
52
+ constructor(options, policies, runtime, valueControlled, draftControlled, formatControlled) {
53
+ this.#options = options;
54
+ this.#policies = policies;
55
+ this.#runtime = runtime;
56
+ this.#controlled = [valueControlled, draftControlled, formatControlled];
57
+ options.root.setAttribute('role', 'group');
58
+ if (options.label !== undefined)
59
+ options.root.setAttribute('aria-label', options.label);
60
+ this.refresh();
61
+ }
62
+ getSnapshot() { return this.#runtime.getSnapshot(); }
63
+ getText() { const state = this.getSnapshot().state; return state.draft ?? unwrap(formatColorValue(state.value, state.format)); }
64
+ getCSSColor() { return unwrap(formatColorValue(this.getSnapshot().state.value, 'rgb')); }
65
+ getAreaValue() { return unwrap(getColorAreaValue(this.getSnapshot().state.value)); }
66
+ getCoordinates(format = this.getSnapshot().state.format) { return unwrap(getColorCoordinates(this.getSnapshot().state.value, format)); }
67
+ syncControlledValues(values) {
68
+ if (this.#controlled[0] !== (values.value !== undefined) || this.#controlled[1] !== (values.draft !== undefined) || this.#controlled[2] !== (values.format !== undefined))
69
+ return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled color picker values must preserve their construction-time shape.' } };
70
+ const state = this.getSnapshot().state;
71
+ const result = this.#runtime.replace(tryCreateColorPickerState({ value: values.value ?? state.value, draft: values.draft === undefined ? state.draft : values.draft, format: values.format ?? state.format, channel: state.channel }, this.#policies));
72
+ if (result.ok) {
73
+ this.refresh();
74
+ this.#options.onUpdate?.();
75
+ }
76
+ return result;
77
+ }
78
+ handleEvent(event) { const result = this.#runtime.handle(event); this.refresh(); if (result.ok)
79
+ this.#options.onUpdate?.(); return result.ok; }
80
+ setNativeInputAttributes(element) {
81
+ this.#removeNative(element);
82
+ const input = () => { this.handleEvent({ type: 'set-color', value: element.value }); };
83
+ const focus = () => { this.handleEvent({ type: 'focus-channel', channel: 'red' }); };
84
+ element.addEventListener('input', input);
85
+ element.addEventListener('focus', focus);
86
+ this.#native.set(element, [input, focus]);
87
+ this.refresh();
88
+ }
89
+ setTextInputAttributes(element) {
90
+ this.#removeText(element);
91
+ const input = () => { this.handleEvent({ type: 'input', text: element.value }); };
92
+ const key = (event) => { if (event.key === 'Enter') {
93
+ event.preventDefault();
94
+ this.handleEvent('commit');
95
+ }
96
+ else if (event.key === 'Escape') {
97
+ event.preventDefault();
98
+ this.handleEvent('cancel');
99
+ } };
100
+ const blur = () => { if (!this.handleEvent('commit'))
101
+ this.handleEvent('cancel'); };
102
+ element.addEventListener('input', input);
103
+ element.addEventListener('keydown', key);
104
+ element.addEventListener('blur', blur);
105
+ this.#text.set(element, [input, key, blur]);
106
+ this.refresh();
107
+ }
108
+ setChannelInputAttributes(element, channel) {
109
+ this.#removeChannel(element);
110
+ const input = () => { this.handleEvent({ type: 'set-channel', channel, value: Number(element.value) }); };
111
+ const focus = () => { this.handleEvent({ type: 'focus-channel', channel }); };
112
+ element.addEventListener('input', input);
113
+ element.addEventListener('focus', focus);
114
+ this.#channels.set(element, [channel, input, focus]);
115
+ this.refresh();
116
+ }
117
+ setCoordinateInputAttributes(element, format, coordinate) {
118
+ this.#setCoordinateAttributes(element, format, coordinate, 'number');
119
+ }
120
+ setCoordinateSliderAttributes(element, format, coordinate) {
121
+ this.#setCoordinateAttributes(element, format, coordinate, 'range');
122
+ }
123
+ #setCoordinateAttributes(element, format, coordinate, kind) {
124
+ this.#removeCoordinate(element);
125
+ const input = () => { this.handleEvent({ type: 'set-coordinate', format, coordinate, value: Number(element.value) }); };
126
+ element.addEventListener('input', input);
127
+ this.#coordinates.set(element, [format, coordinate, kind, input]);
128
+ this.refresh();
129
+ }
130
+ setAreaAttributes(element) {
131
+ this.#removeArea(element);
132
+ let dragging = false;
133
+ const update = (event) => {
134
+ const bounds = element.getBoundingClientRect();
135
+ if (bounds.width <= 0 || bounds.height <= 0)
136
+ return;
137
+ const x = Math.min(1, Math.max(0, (event.clientX - bounds.left) / bounds.width));
138
+ const y = 1 - Math.min(1, Math.max(0, (event.clientY - bounds.top) / bounds.height));
139
+ this.handleEvent({ type: 'set-area', x, y });
140
+ };
141
+ const down = (event) => { if (event.button !== 0)
142
+ return; event.preventDefault(); dragging = true; element.setPointerCapture?.(event.pointerId); update(event); };
143
+ const move = (event) => { if (dragging)
144
+ update(event); };
145
+ const end = () => { dragging = false; };
146
+ const key = (event) => {
147
+ const current = this.getAreaValue();
148
+ let x = current.x;
149
+ let y = current.y;
150
+ if (event.key === 'ArrowLeft')
151
+ x -= 0.01;
152
+ else if (event.key === 'ArrowRight')
153
+ x += 0.01;
154
+ else if (event.key === 'ArrowDown')
155
+ y -= 0.01;
156
+ else if (event.key === 'ArrowUp')
157
+ y += 0.01;
158
+ else
159
+ return;
160
+ event.preventDefault();
161
+ this.handleEvent({ type: 'set-area', x: Math.min(1, Math.max(0, x)), y: Math.min(1, Math.max(0, y)) });
162
+ };
163
+ element.addEventListener('pointerdown', down);
164
+ element.addEventListener('pointermove', move);
165
+ element.addEventListener('pointerup', end);
166
+ element.addEventListener('pointercancel', end);
167
+ element.addEventListener('keydown', key);
168
+ this.#areas.set(element, [down, move, end, end, key]);
169
+ this.refresh();
170
+ }
171
+ setAreaThumbAttributes(element) { this.#areaThumbs.add(element); this.refresh(); }
172
+ setHueInputAttributes(element) { this.#removeHue(element); const input = () => { this.handleEvent({ type: 'set-hue', value: Number(element.value) }); }; element.addEventListener('input', input); this.#hues.set(element, input); this.refresh(); }
173
+ setAlphaInputAttributes(element) { this.#removeAlpha(element); const input = () => { this.handleEvent({ type: 'set-alpha', value: Number(element.value) / 100 }); }; element.addEventListener('input', input); this.#alphas.set(element, input); this.refresh(); }
174
+ setSwatchAttributes(element) { this.#swatches.add(element); this.refresh(); }
175
+ refresh() {
176
+ const state = this.getSnapshot().state;
177
+ const opaqueHex = unwrap(formatColorValue({ ...state.value, alpha: 255 }, 'hex'));
178
+ this.#options.root.dataset['color'] = this.getCSSColor();
179
+ this.#options.root.dataset['format'] = state.format;
180
+ this.#options.root.dataset['channel'] = state.channel;
181
+ this.#options.root.setAttribute('aria-disabled', String(this.#options.disabled ?? false));
182
+ this.#options.root.setAttribute('aria-readonly', String(this.#options.readOnly ?? false));
183
+ for (const element of this.#native.keys()) {
184
+ element.type = 'color';
185
+ element.value = opaqueHex;
186
+ element.disabled = this.#options.disabled ?? false;
187
+ element.setAttribute('aria-readonly', String(this.#options.readOnly ?? false));
188
+ }
189
+ for (const element of this.#text.keys()) {
190
+ element.type = 'text';
191
+ element.inputMode = 'text';
192
+ if (element.value !== this.getText())
193
+ element.value = this.getText();
194
+ element.disabled = this.#options.disabled ?? false;
195
+ element.readOnly = this.#options.readOnly ?? false;
196
+ element.setAttribute('aria-invalid', String(state.draft !== null && !isValidDraft(state.draft, this.#policies)));
197
+ }
198
+ for (const [element, [channel]] of this.#channels) {
199
+ element.type = 'range';
200
+ element.min = '0';
201
+ element.max = '255';
202
+ element.step = '1';
203
+ element.value = String(state.value[channel]);
204
+ element.disabled = (this.#options.disabled ?? false) || (channel === 'alpha' && this.#policies.allowAlpha === false);
205
+ element.setAttribute('aria-label', `${channel} channel`);
206
+ element.setAttribute('aria-valuetext', String(state.value[channel]));
207
+ }
208
+ for (const [element, [format, coordinate, kind]] of this.#coordinates) {
209
+ const entry = unwrap(getColorCoordinates(state.value, format)).find((item) => item.coordinate === coordinate);
210
+ if (entry === undefined)
211
+ continue;
212
+ element.type = kind;
213
+ element.min = String(entry.min);
214
+ element.max = String(entry.max);
215
+ element.step = String(entry.step);
216
+ if (kind === 'range' || typeof document === 'undefined' || document.activeElement !== element)
217
+ element.value = String(entry.value);
218
+ element.disabled = (this.#options.disabled ?? false) || (coordinate === 'alpha' && this.#policies.allowAlpha === false);
219
+ element.readOnly = kind === 'number' && (this.#options.readOnly ?? false);
220
+ element.setAttribute('aria-readonly', String(this.#options.readOnly ?? false));
221
+ element.setAttribute('aria-label', entry.label);
222
+ element.setAttribute('aria-valuetext', `${entry.value}${entry.unit}`);
223
+ element.dataset['coordinate'] = coordinate;
224
+ element.dataset['format'] = format;
225
+ element.style.setProperty('--sectile-color-coordinate-color', this.getCSSColor());
226
+ }
227
+ const area = this.getAreaValue();
228
+ for (const element of this.#areas.keys()) {
229
+ element.tabIndex = this.#options.disabled ? -1 : 0;
230
+ element.setAttribute('aria-label', 'Color saturation and brightness');
231
+ element.setAttribute('aria-valuetext', `${Math.round(area.x * 100)}% saturation, ${Math.round(area.y * 100)}% brightness`);
232
+ element.setAttribute('aria-disabled', String(this.#options.disabled ?? false));
233
+ element.setAttribute('aria-readonly', String(this.#options.readOnly ?? false));
234
+ element.style.setProperty('--sectile-color-area-hue', `hsl(${area.hue} 100% 50%)`);
235
+ }
236
+ for (const element of this.#areaThumbs) {
237
+ element.style.setProperty('--sectile-color-area-x', `${area.x * 100}%`);
238
+ element.style.setProperty('--sectile-color-area-y', `${(1 - area.y) * 100}%`);
239
+ element.dataset['color'] = this.getCSSColor();
240
+ }
241
+ for (const element of this.#hues.keys()) {
242
+ element.type = 'range';
243
+ element.min = '0';
244
+ element.max = '360';
245
+ element.step = '1';
246
+ element.value = String(area.hue);
247
+ element.disabled = this.#options.disabled ?? false;
248
+ element.setAttribute('aria-label', 'Hue');
249
+ }
250
+ for (const element of this.#alphas.keys()) {
251
+ element.type = 'range';
252
+ element.min = '0';
253
+ element.max = '100';
254
+ element.step = '1';
255
+ element.value = String(Math.round(area.alpha * 100));
256
+ element.disabled = (this.#options.disabled ?? false) || this.#policies.allowAlpha === false;
257
+ element.setAttribute('aria-label', 'Alpha');
258
+ element.style.setProperty('--sectile-color-alpha', this.getCSSColor());
259
+ }
260
+ for (const element of this.#swatches) {
261
+ element.dataset['color'] = this.getCSSColor();
262
+ element.setAttribute('aria-label', this.getText());
263
+ }
264
+ }
265
+ disconnect() { for (const element of [...this.#native.keys()])
266
+ this.#removeNative(element); for (const element of [...this.#text.keys()])
267
+ this.#removeText(element); for (const element of [...this.#channels.keys()])
268
+ this.#removeChannel(element); for (const element of [...this.#coordinates.keys()])
269
+ this.#removeCoordinate(element); for (const element of [...this.#areas.keys()])
270
+ this.#removeArea(element); for (const element of [...this.#hues.keys()])
271
+ this.#removeHue(element); for (const element of [...this.#alphas.keys()])
272
+ this.#removeAlpha(element); this.#areaThumbs.clear(); this.#swatches.clear(); }
273
+ #removeNative(element) { const current = this.#native.get(element); if (current !== undefined) {
274
+ element.removeEventListener('input', current[0]);
275
+ element.removeEventListener('focus', current[1]);
276
+ this.#native.delete(element);
277
+ } }
278
+ #removeText(element) { const current = this.#text.get(element); if (current !== undefined) {
279
+ element.removeEventListener('input', current[0]);
280
+ element.removeEventListener('keydown', current[1]);
281
+ element.removeEventListener('blur', current[2]);
282
+ this.#text.delete(element);
283
+ } }
284
+ #removeChannel(element) { const current = this.#channels.get(element); if (current !== undefined) {
285
+ element.removeEventListener('input', current[1]);
286
+ element.removeEventListener('focus', current[2]);
287
+ this.#channels.delete(element);
288
+ } }
289
+ #removeCoordinate(element) { const current = this.#coordinates.get(element); if (current !== undefined) {
290
+ element.removeEventListener('input', current[3]);
291
+ this.#coordinates.delete(element);
292
+ } }
293
+ #removeArea(element) { const current = this.#areas.get(element); if (current !== undefined) {
294
+ element.removeEventListener('pointerdown', current[0]);
295
+ element.removeEventListener('pointermove', current[1]);
296
+ element.removeEventListener('pointerup', current[2]);
297
+ element.removeEventListener('pointercancel', current[3]);
298
+ element.removeEventListener('keydown', current[4]);
299
+ this.#areas.delete(element);
300
+ } }
301
+ #removeHue(element) { const current = this.#hues.get(element); if (current !== undefined) {
302
+ element.removeEventListener('input', current);
303
+ this.#hues.delete(element);
304
+ } }
305
+ #removeAlpha(element) { const current = this.#alphas.get(element); if (current !== undefined) {
306
+ element.removeEventListener('input', current);
307
+ this.#alphas.delete(element);
308
+ } }
309
+ }
310
+ function isValidDraft(text, policies) {
311
+ const result = tryCreateColorPickerState({ value: text }, policies);
312
+ return result.ok;
313
+ }
314
+ function sameColor(left, right) { return left.red === right.red && left.green === right.green && left.blue === right.blue && left.alpha === right.alpha; }
315
+ export { formatColorValue, getColorAreaValue, getColorCoordinates, parseColorValue, setColorCoordinate } from '@sectile/core/color-picker';
316
+ //# sourceMappingURL=color-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-picker.js","sourceRoot":"","sources":["../src/color-picker.ts"],"names":[],"mappings":"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"}