@unoff/ui 1.21.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 (322) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +880 -0
  3. package/dist/assets/Accordion.css +1 -0
  4. package/dist/assets/ActionsItem.css +1 -0
  5. package/dist/assets/ActionsList.css +1 -0
  6. package/dist/assets/Avatar.css +1 -0
  7. package/dist/assets/Bar.css +1 -0
  8. package/dist/assets/Button.css +1 -0
  9. package/dist/assets/Card.css +1 -0
  10. package/dist/assets/Chip.css +1 -0
  11. package/dist/assets/ColorChip.css +1 -0
  12. package/dist/assets/ColorItem.css +1 -0
  13. package/dist/assets/Consent.css +1 -0
  14. package/dist/assets/Dialog.css +1 -0
  15. package/dist/assets/DraggableItem.css +1 -0
  16. package/dist/assets/DraggableWindow.css +1 -0
  17. package/dist/assets/Drawer.css +1 -0
  18. package/dist/assets/Dropdown.css +1 -0
  19. package/dist/assets/Dropzone.css +1 -0
  20. package/dist/assets/FormItem.css +1 -0
  21. package/dist/assets/Icon.css +1 -0
  22. package/dist/assets/IconChip.css +1 -0
  23. package/dist/assets/Input.css +1 -0
  24. package/dist/assets/InputsBar.css +1 -0
  25. package/dist/assets/KeyboardShortcutItem.css +1 -0
  26. package/dist/assets/Knob.css +1 -0
  27. package/dist/assets/Layout.css +1 -0
  28. package/dist/assets/List.css +1 -0
  29. package/dist/assets/MembersList.css +1 -0
  30. package/dist/assets/Menu.css +1 -0
  31. package/dist/assets/Message.css +1 -0
  32. package/dist/assets/MultipleSlider.css +1 -0
  33. package/dist/assets/Notification.css +1 -0
  34. package/dist/assets/Popin.css +1 -0
  35. package/dist/assets/Section.css +1 -0
  36. package/dist/assets/SectionTitle.css +1 -0
  37. package/dist/assets/Select.css +1 -0
  38. package/dist/assets/SemanticMessage.css +1 -0
  39. package/dist/assets/SimpleItem.css +1 -0
  40. package/dist/assets/SimpleSlider.css +1 -0
  41. package/dist/assets/SortableList.css +1 -0
  42. package/dist/assets/Tabs.css +1 -0
  43. package/dist/assets/Text.css +1 -0
  44. package/dist/assets/Thumbnail.css +1 -0
  45. package/dist/assets/Tooltip.css +1 -0
  46. package/dist/assets/styles/icons/icons.css +1 -0
  47. package/dist/assets/styles/icons/styles/figma.css +1 -0
  48. package/dist/assets/styles/icons/styles/framer.css +1 -0
  49. package/dist/assets/styles/icons/styles/penpot.css +1 -0
  50. package/dist/assets/styles/icons/styles/sketch.css +1 -0
  51. package/dist/assets/styles/layouts.css +1 -0
  52. package/dist/assets/styles/texts/styles/figma.css +1 -0
  53. package/dist/assets/styles/texts/styles/framer.css +1 -0
  54. package/dist/assets/styles/texts/styles/penpot.css +1 -0
  55. package/dist/assets/styles/texts/styles/sketch.css +1 -0
  56. package/dist/assets/styles/texts/texts.css +1 -0
  57. package/dist/assets/styles/tokens/figma-types.css +1 -0
  58. package/dist/assets/styles/tokens/framer-types.css +1 -0
  59. package/dist/assets/styles/tokens/modules/figma-colors.css +1 -0
  60. package/dist/assets/styles/tokens/modules/figma-types.css +1 -0
  61. package/dist/assets/styles/tokens/modules/framer-colors.css +1 -0
  62. package/dist/assets/styles/tokens/modules/framer-types.css +1 -0
  63. package/dist/assets/styles/tokens/modules/globals.css +1 -0
  64. package/dist/assets/styles/tokens/modules/penpot-colors.css +1 -0
  65. package/dist/assets/styles/tokens/modules/penpot-types.css +1 -0
  66. package/dist/assets/styles/tokens/modules/sketch-colors.css +1 -0
  67. package/dist/assets/styles/tokens/modules/sketch-types.css +1 -0
  68. package/dist/assets/styles/tokens/penpot-types.css +1 -0
  69. package/dist/assets/styles/tokens/sketch-types.css +1 -0
  70. package/dist/components/actions/accordion/Accordion.d.ts +59 -0
  71. package/dist/components/actions/accordion/Accordion.d.ts.map +1 -0
  72. package/dist/components/actions/accordion/Accordion.js +104 -0
  73. package/dist/components/actions/accordion/Accordion.js.map +1 -0
  74. package/dist/components/actions/button/Button.d.ts +148 -0
  75. package/dist/components/actions/button/Button.d.ts.map +1 -0
  76. package/dist/components/actions/button/Button.figma.d.ts +2 -0
  77. package/dist/components/actions/button/Button.figma.d.ts.map +1 -0
  78. package/dist/components/actions/button/Button.figma.js +43 -0
  79. package/dist/components/actions/button/Button.figma.js.map +1 -0
  80. package/dist/components/actions/button/Button.js +306 -0
  81. package/dist/components/actions/button/Button.js.map +1 -0
  82. package/dist/components/actions/card/Card.d.ts +39 -0
  83. package/dist/components/actions/card/Card.d.ts.map +1 -0
  84. package/dist/components/actions/card/Card.js +99 -0
  85. package/dist/components/actions/card/Card.js.map +1 -0
  86. package/dist/components/actions/knob/Knob.d.ts +93 -0
  87. package/dist/components/actions/knob/Knob.d.ts.map +1 -0
  88. package/dist/components/actions/knob/Knob.js +179 -0
  89. package/dist/components/actions/knob/Knob.js.map +1 -0
  90. package/dist/components/actions/menu/Menu.d.ts +104 -0
  91. package/dist/components/actions/menu/Menu.d.ts.map +1 -0
  92. package/dist/components/actions/menu/Menu.js +200 -0
  93. package/dist/components/actions/menu/Menu.js.map +1 -0
  94. package/dist/components/assets/avatar/Avatar.d.ts +30 -0
  95. package/dist/components/assets/avatar/Avatar.d.ts.map +1 -0
  96. package/dist/components/assets/avatar/Avatar.js +54 -0
  97. package/dist/components/assets/avatar/Avatar.js.map +1 -0
  98. package/dist/components/assets/icon/Icon.d.ts +28 -0
  99. package/dist/components/assets/icon/Icon.d.ts.map +1 -0
  100. package/dist/components/assets/icon/Icon.figma.d.ts +2 -0
  101. package/dist/components/assets/icon/Icon.figma.d.ts.map +1 -0
  102. package/dist/components/assets/icon/Icon.figma.js +27 -0
  103. package/dist/components/assets/icon/Icon.figma.js.map +1 -0
  104. package/dist/components/assets/icon/Icon.js +35 -0
  105. package/dist/components/assets/icon/Icon.js.map +1 -0
  106. package/dist/components/assets/section-title/SectionTitle.d.ts +22 -0
  107. package/dist/components/assets/section-title/SectionTitle.d.ts.map +1 -0
  108. package/dist/components/assets/section-title/SectionTitle.js +42 -0
  109. package/dist/components/assets/section-title/SectionTitle.js.map +1 -0
  110. package/dist/components/assets/text/Text.d.ts +34 -0
  111. package/dist/components/assets/text/Text.d.ts.map +1 -0
  112. package/dist/components/assets/text/Text.js +35 -0
  113. package/dist/components/assets/text/Text.js.map +1 -0
  114. package/dist/components/assets/thumbnail/Thumbnail.d.ts +25 -0
  115. package/dist/components/assets/thumbnail/Thumbnail.d.ts.map +1 -0
  116. package/dist/components/assets/thumbnail/Thumbnail.js +67 -0
  117. package/dist/components/assets/thumbnail/Thumbnail.js.map +1 -0
  118. package/dist/components/dialogs/consent/Consent.d.ts +85 -0
  119. package/dist/components/dialogs/consent/Consent.d.ts.map +1 -0
  120. package/dist/components/dialogs/consent/Consent.js +402 -0
  121. package/dist/components/dialogs/consent/Consent.js.map +1 -0
  122. package/dist/components/dialogs/dialog/Dialog.d.ts +81 -0
  123. package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -0
  124. package/dist/components/dialogs/dialog/Dialog.js +58 -0
  125. package/dist/components/dialogs/dialog/Dialog.js.map +1 -0
  126. package/dist/components/dialogs/message/Message.d.ts +25 -0
  127. package/dist/components/dialogs/message/Message.d.ts.map +1 -0
  128. package/dist/components/dialogs/message/Message.js +141 -0
  129. package/dist/components/dialogs/message/Message.js.map +1 -0
  130. package/dist/components/dialogs/notification/Notification.d.ts +22 -0
  131. package/dist/components/dialogs/notification/Notification.d.ts.map +1 -0
  132. package/dist/components/dialogs/notification/Notification.js +38 -0
  133. package/dist/components/dialogs/notification/Notification.js.map +1 -0
  134. package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts +40 -0
  135. package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -0
  136. package/dist/components/dialogs/semantic-message/SemanticMessage.js +71 -0
  137. package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -0
  138. package/dist/components/inputs/dropdown/Dropdown.d.ts +123 -0
  139. package/dist/components/inputs/dropdown/Dropdown.d.ts.map +1 -0
  140. package/dist/components/inputs/dropdown/Dropdown.figma.d.ts +2 -0
  141. package/dist/components/inputs/dropdown/Dropdown.figma.d.ts.map +1 -0
  142. package/dist/components/inputs/dropdown/Dropdown.figma.js +28 -0
  143. package/dist/components/inputs/dropdown/Dropdown.figma.js.map +1 -0
  144. package/dist/components/inputs/dropdown/Dropdown.js +307 -0
  145. package/dist/components/inputs/dropdown/Dropdown.js.map +1 -0
  146. package/dist/components/inputs/dropzone/Dropzone.d.ts +78 -0
  147. package/dist/components/inputs/dropzone/Dropzone.d.ts.map +1 -0
  148. package/dist/components/inputs/dropzone/Dropzone.js +222 -0
  149. package/dist/components/inputs/dropzone/Dropzone.js.map +1 -0
  150. package/dist/components/inputs/input/Input.d.ts +203 -0
  151. package/dist/components/inputs/input/Input.d.ts.map +1 -0
  152. package/dist/components/inputs/input/Input.figma.d.ts +2 -0
  153. package/dist/components/inputs/input/Input.figma.d.ts.map +1 -0
  154. package/dist/components/inputs/input/Input.figma.js +35 -0
  155. package/dist/components/inputs/input/Input.figma.js.map +1 -0
  156. package/dist/components/inputs/input/Input.js +713 -0
  157. package/dist/components/inputs/input/Input.js.map +1 -0
  158. package/dist/components/inputs/inputs-bar/InputsBar.d.ts +18 -0
  159. package/dist/components/inputs/inputs-bar/InputsBar.d.ts.map +1 -0
  160. package/dist/components/inputs/inputs-bar/InputsBar.js +15 -0
  161. package/dist/components/inputs/inputs-bar/InputsBar.js.map +1 -0
  162. package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +125 -0
  163. package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -0
  164. package/dist/components/inputs/multiple-slider/MultipleSlider.js +417 -0
  165. package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -0
  166. package/dist/components/inputs/multiple-slider/actions/addStop.d.ts +8 -0
  167. package/dist/components/inputs/multiple-slider/actions/addStop.d.ts.map +1 -0
  168. package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts +8 -0
  169. package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts.map +1 -0
  170. package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts +5 -0
  171. package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -0
  172. package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts +5 -0
  173. package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -0
  174. package/dist/components/inputs/select/Select.d.ts +112 -0
  175. package/dist/components/inputs/select/Select.d.ts.map +1 -0
  176. package/dist/components/inputs/select/Select.js +313 -0
  177. package/dist/components/inputs/select/Select.js.map +1 -0
  178. package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +93 -0
  179. package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -0
  180. package/dist/components/inputs/simple-slider/SimpleSlider.js +166 -0
  181. package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -0
  182. package/dist/components/lists/actions-item/ActionsItem.d.ts +64 -0
  183. package/dist/components/lists/actions-item/ActionsItem.d.ts.map +1 -0
  184. package/dist/components/lists/actions-item/ActionsItem.js +115 -0
  185. package/dist/components/lists/actions-item/ActionsItem.js.map +1 -0
  186. package/dist/components/lists/actions-list/ActionsList.d.ts +79 -0
  187. package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -0
  188. package/dist/components/lists/actions-list/ActionsList.js +384 -0
  189. package/dist/components/lists/actions-list/ActionsList.js.map +1 -0
  190. package/dist/components/lists/color-item/ColorItem.d.ts +27 -0
  191. package/dist/components/lists/color-item/ColorItem.d.ts.map +1 -0
  192. package/dist/components/lists/color-item/ColorItem.js +70 -0
  193. package/dist/components/lists/color-item/ColorItem.js.map +1 -0
  194. package/dist/components/lists/draggable-item/DraggableItem.d.ts +110 -0
  195. package/dist/components/lists/draggable-item/DraggableItem.d.ts.map +1 -0
  196. package/dist/components/lists/draggable-item/DraggableItem.js +176 -0
  197. package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -0
  198. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts +19 -0
  199. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts.map +1 -0
  200. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js +75 -0
  201. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js.map +1 -0
  202. package/dist/components/lists/members-list/MembersList.d.ts +32 -0
  203. package/dist/components/lists/members-list/MembersList.d.ts.map +1 -0
  204. package/dist/components/lists/members-list/MembersList.js +117 -0
  205. package/dist/components/lists/members-list/MembersList.js.map +1 -0
  206. package/dist/components/lists/sortable-list/SortableList.d.ts +103 -0
  207. package/dist/components/lists/sortable-list/SortableList.d.ts.map +1 -0
  208. package/dist/components/lists/sortable-list/SortableList.js +148 -0
  209. package/dist/components/lists/sortable-list/SortableList.js.map +1 -0
  210. package/dist/components/lists/tabs/Tabs.d.ts +48 -0
  211. package/dist/components/lists/tabs/Tabs.d.ts.map +1 -0
  212. package/dist/components/lists/tabs/Tabs.figma.d.ts +2 -0
  213. package/dist/components/lists/tabs/Tabs.figma.d.ts.map +1 -0
  214. package/dist/components/lists/tabs/Tabs.figma.js +31 -0
  215. package/dist/components/lists/tabs/Tabs.figma.js.map +1 -0
  216. package/dist/components/lists/tabs/Tabs.js +165 -0
  217. package/dist/components/lists/tabs/Tabs.js.map +1 -0
  218. package/dist/components/slots/bar/Bar.d.ts +65 -0
  219. package/dist/components/slots/bar/Bar.d.ts.map +1 -0
  220. package/dist/components/slots/bar/Bar.js +100 -0
  221. package/dist/components/slots/bar/Bar.js.map +1 -0
  222. package/dist/components/slots/draggable-window/DraggableWindow.d.ts +25 -0
  223. package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -0
  224. package/dist/components/slots/draggable-window/DraggableWindow.js +100 -0
  225. package/dist/components/slots/draggable-window/DraggableWindow.js.map +1 -0
  226. package/dist/components/slots/drawer/Drawer.d.ts +78 -0
  227. package/dist/components/slots/drawer/Drawer.d.ts.map +1 -0
  228. package/dist/components/slots/drawer/Drawer.js +148 -0
  229. package/dist/components/slots/drawer/Drawer.js.map +1 -0
  230. package/dist/components/slots/form-item/FormItem.d.ts +52 -0
  231. package/dist/components/slots/form-item/FormItem.d.ts.map +1 -0
  232. package/dist/components/slots/form-item/FormItem.js +89 -0
  233. package/dist/components/slots/form-item/FormItem.js.map +1 -0
  234. package/dist/components/slots/layout/Layout.d.ts +34 -0
  235. package/dist/components/slots/layout/Layout.d.ts.map +1 -0
  236. package/dist/components/slots/layout/Layout.js +45 -0
  237. package/dist/components/slots/layout/Layout.js.map +1 -0
  238. package/dist/components/slots/list/List.d.ts +49 -0
  239. package/dist/components/slots/list/List.d.ts.map +1 -0
  240. package/dist/components/slots/list/List.js +55 -0
  241. package/dist/components/slots/list/List.js.map +1 -0
  242. package/dist/components/slots/popin/Popin.d.ts +85 -0
  243. package/dist/components/slots/popin/Popin.d.ts.map +1 -0
  244. package/dist/components/slots/popin/Popin.js +182 -0
  245. package/dist/components/slots/popin/Popin.js.map +1 -0
  246. package/dist/components/slots/section/Section.d.ts +32 -0
  247. package/dist/components/slots/section/Section.d.ts.map +1 -0
  248. package/dist/components/slots/section/Section.js +49 -0
  249. package/dist/components/slots/section/Section.js.map +1 -0
  250. package/dist/components/slots/simple-item/SimpleItem.d.ts +45 -0
  251. package/dist/components/slots/simple-item/SimpleItem.d.ts.map +1 -0
  252. package/dist/components/slots/simple-item/SimpleItem.js +100 -0
  253. package/dist/components/slots/simple-item/SimpleItem.js.map +1 -0
  254. package/dist/components/tags/chip/Chip.d.ts +43 -0
  255. package/dist/components/tags/chip/Chip.d.ts.map +1 -0
  256. package/dist/components/tags/chip/Chip.figma.d.ts +2 -0
  257. package/dist/components/tags/chip/Chip.figma.d.ts.map +1 -0
  258. package/dist/components/tags/chip/Chip.figma.js +18 -0
  259. package/dist/components/tags/chip/Chip.figma.js.map +1 -0
  260. package/dist/components/tags/chip/Chip.js +88 -0
  261. package/dist/components/tags/chip/Chip.js.map +1 -0
  262. package/dist/components/tags/color-chip/ColorChip.d.ts +36 -0
  263. package/dist/components/tags/color-chip/ColorChip.d.ts.map +1 -0
  264. package/dist/components/tags/color-chip/ColorChip.js +39 -0
  265. package/dist/components/tags/color-chip/ColorChip.js.map +1 -0
  266. package/dist/components/tags/icon-chip/IconChip.d.ts +42 -0
  267. package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -0
  268. package/dist/components/tags/icon-chip/IconChip.js +54 -0
  269. package/dist/components/tags/icon-chip/IconChip.js.map +1 -0
  270. package/dist/components/tags/tooltip/Tooltip.d.ts +25 -0
  271. package/dist/components/tags/tooltip/Tooltip.d.ts.map +1 -0
  272. package/dist/components/tags/tooltip/Tooltip.js +72 -0
  273. package/dist/components/tags/tooltip/Tooltip.js.map +1 -0
  274. package/dist/do-classnames-DSDFCvzy.js +5 -0
  275. package/dist/do-classnames-DSDFCvzy.js.map +1 -0
  276. package/dist/do-map-2nhWP1KI.js +8 -0
  277. package/dist/do-map-2nhWP1KI.js.map +1 -0
  278. package/dist/index.d.ts +61 -0
  279. package/dist/index.d.ts.map +1 -0
  280. package/dist/index.js +113 -0
  281. package/dist/index.js.map +1 -0
  282. package/dist/index_react-CmuCVQet.js +13799 -0
  283. package/dist/index_react-CmuCVQet.js.map +1 -0
  284. package/dist/styles/icons/icons.module.js +115 -0
  285. package/dist/styles/icons/icons.module.js.map +1 -0
  286. package/dist/styles/layouts.module.js +37 -0
  287. package/dist/styles/layouts.module.js.map +1 -0
  288. package/dist/styles/texts/texts.module.js +23 -0
  289. package/dist/styles/texts/texts.module.js.map +1 -0
  290. package/dist/styles/tokens/modules/figma-colors.module.js +9 -0
  291. package/dist/styles/tokens/modules/figma-colors.module.js.map +1 -0
  292. package/dist/styles/tokens/modules/figma-types.module.js +9 -0
  293. package/dist/styles/tokens/modules/figma-types.module.js.map +1 -0
  294. package/dist/styles/tokens/modules/framer-colors.module.js +9 -0
  295. package/dist/styles/tokens/modules/framer-colors.module.js.map +1 -0
  296. package/dist/styles/tokens/modules/framer-types.module.js +9 -0
  297. package/dist/styles/tokens/modules/framer-types.module.js.map +1 -0
  298. package/dist/styles/tokens/modules/globals.module.js +9 -0
  299. package/dist/styles/tokens/modules/globals.module.js.map +1 -0
  300. package/dist/styles/tokens/modules/penpot-colors.module.js +9 -0
  301. package/dist/styles/tokens/modules/penpot-colors.module.js.map +1 -0
  302. package/dist/styles/tokens/modules/penpot-types.module.js +9 -0
  303. package/dist/styles/tokens/modules/penpot-types.module.js.map +1 -0
  304. package/dist/styles/tokens/modules/sketch-colors.module.js +9 -0
  305. package/dist/styles/tokens/modules/sketch-colors.module.js.map +1 -0
  306. package/dist/styles/tokens/modules/sketch-types.module.js +9 -0
  307. package/dist/styles/tokens/modules/sketch-types.module.js.map +1 -0
  308. package/dist/tests/setup.d.ts +2 -0
  309. package/dist/tests/setup.d.ts.map +1 -0
  310. package/dist/types/consent.types.d.ts +10 -0
  311. package/dist/types/consent.types.d.ts.map +1 -0
  312. package/dist/types/consent.types.js +2 -0
  313. package/dist/types/consent.types.js.map +1 -0
  314. package/dist/types/icon.types.d.ts +2 -0
  315. package/dist/types/icon.types.d.ts.map +1 -0
  316. package/dist/types/icon.types.js +2 -0
  317. package/dist/types/icon.types.js.map +1 -0
  318. package/dist/types/list.types.d.ts +14 -0
  319. package/dist/types/list.types.d.ts.map +1 -0
  320. package/dist/types/list.types.js +2 -0
  321. package/dist/types/list.types.js.map +1 -0
  322. package/package.json +108 -0
@@ -0,0 +1,417 @@
1
+ import '../../../assets/MultipleSlider.css';
2
+ import { jsxs as S, jsx as m } from "react/jsx-runtime";
3
+ import v from "react";
4
+ import F from "../../tags/icon-chip/IconChip.js";
5
+ import T from "../../tags/chip/Chip.js";
6
+ import y from "../../actions/knob/Knob.js";
7
+ import { r as f } from "../../../do-map-2nhWP1KI.js";
8
+ import { t as x } from "../../../do-classnames-DSDFCvzy.js";
9
+ const E = (h, e, o, l = "LINEAR") => {
10
+ let t = 1;
11
+ const p = {};
12
+ return h.map((r) => {
13
+ p[r] = l !== "NONE" ? parseFloat(f(w(l, t), 0, 1, e, o).toFixed(1)) : r, t -= 1 / (h.length - 1), t < 0.01 && (t = 0);
14
+ }), p;
15
+ }, w = (h, e) => {
16
+ var o;
17
+ const l = {
18
+ LINEAR: (t) => t,
19
+ EASEIN_SINE: (t) => Math.pow(t, 1.2),
20
+ EASEOUT_SINE: (t) => 1 - Math.pow(1 - t, 1.2),
21
+ EASEINOUT_SINE: (t) => t < 0.5 ? Math.pow(t * 2, 1.2) / 2 : 1 - Math.pow((1 - t) * 2, 1.2) / 2,
22
+ EASEIN_QUAD: (t) => Math.pow(t, 1.5),
23
+ EASEOUT_QUAD: (t) => 1 - Math.pow(1 - t, 1.5),
24
+ EASEINOUT_QUAD: (t) => t < 0.5 ? Math.pow(t * 2, 1.5) / 2 : 1 - Math.pow((1 - t) * 2, 1.5) / 2,
25
+ EASEIN_CUBIC: (t) => 1 - Math.cos(t * Math.PI / 2),
26
+ EASEOUT_CUBIC: (t) => Math.sin(t * Math.PI / 2),
27
+ EASEINOUT_CUBIC: (t) => -(Math.cos(Math.PI * t) - 1) / 2
28
+ };
29
+ return (o = l[h ?? "LINEAR"]) == null ? void 0 : o.call(l, e);
30
+ }, D = (h, e, o, l, t, p) => {
31
+ const r = [], a = o || l ? 0.1 : 1;
32
+ Object.entries(h).sort((c, u) => c[1] - u[1]).forEach((c) => {
33
+ r.push(c[0]);
34
+ });
35
+ const i = r.indexOf(
36
+ e.dataset.id
37
+ ), n = h, s = n[r[i]];
38
+ return s + a <= t ? n[r[i]] = t : s + a >= p ? n[r[i]] = p : n[r[i]] = n[r[i]] + a, {
39
+ scale: n
40
+ };
41
+ }, A = (h, e, o, l, t, p) => {
42
+ const r = [], a = o || l ? 0.1 : 1;
43
+ Object.entries(h).sort((c, u) => c[1] - u[1]).forEach((c) => {
44
+ r.push(c[0]);
45
+ });
46
+ const i = r.indexOf(
47
+ e.dataset.id
48
+ ), n = h, s = n[r[i]];
49
+ return s - a <= t ? n[r[i]] = t : s - a >= p ? n[r[i]] = p : n[r[i]] = n[r[i]] - a, {
50
+ scale: n
51
+ };
52
+ }, _ = (h) => {
53
+ const e = Math.floor(Math.abs(h)).toString().length;
54
+ return Math.pow(10, e - 1);
55
+ }, N = (h, e) => {
56
+ const o = Object.entries(h).map(([a, i]) => ({
57
+ index: parseFloat(a),
58
+ value: i
59
+ })).filter((a) => a.index > 0), l = Math.min(...o.map((a) => a.index)), t = _(l), p = o.filter(
60
+ (a) => a.index !== parseFloat(e.dataset.id)
61
+ ), r = p.reduce(
62
+ (a, i, n) => {
63
+ const s = Math.max(1, n + 1) * t;
64
+ return a[s] = p[n].value, a;
65
+ },
66
+ {}
67
+ );
68
+ return {
69
+ scale: r,
70
+ stops: Object.keys(r).map((a) => parseFloat(a)),
71
+ min: Math.min(...Object.values(r)),
72
+ max: Math.max(...Object.values(r))
73
+ };
74
+ }, K = (h) => {
75
+ const e = Math.floor(Math.abs(h)).toString().length;
76
+ return Math.pow(10, e - 1);
77
+ }, O = (h, e, o, l) => {
78
+ const t = Object.entries(e).map(([s, c]) => ({
79
+ index: Math.max(1, parseFloat(s)),
80
+ value: c
81
+ })).filter((s) => s.index > 0), p = K(Math.min(...t.map((s) => s.index))), r = t[0].value > t[t.length - 1].value, a = h.target, i = parseFloat(
82
+ f(h.layerX, 0, a.offsetWidth, o, l).toFixed(1)
83
+ );
84
+ t.push({
85
+ index: Math.max(...t.map((s) => s.index)) + p,
86
+ value: i
87
+ }), t.sort((s, c) => r ? c.value - s.value : s.value - c.value);
88
+ const n = t.reduce(
89
+ (s, c, u) => (s[(u + 1) * p] = c.value, s),
90
+ {}
91
+ );
92
+ return {
93
+ scale: n,
94
+ stops: Object.keys(n).map((s) => parseFloat(s)),
95
+ min: Math.min(...Object.values(n)),
96
+ max: Math.max(...Object.values(n))
97
+ };
98
+ };
99
+ class B extends v.Component {
100
+ static defaultProps = {
101
+ scale: {},
102
+ stops: {
103
+ list: [],
104
+ min: 0,
105
+ max: 100
106
+ },
107
+ colors: {
108
+ min: "white",
109
+ max: "white"
110
+ },
111
+ isBlocked: !1,
112
+ isNew: !1
113
+ };
114
+ constructor(e) {
115
+ super(e), this.state = {
116
+ isTooltipDisplay: Array(e.stops.list.length).fill(!1),
117
+ activeKnobId: null
118
+ };
119
+ }
120
+ // Handlers
121
+ validHandler = (e, o) => {
122
+ const { scale: l, onChange: t, range: p } = this.props, r = p.step || 0.1, a = l ?? {}, i = o.target;
123
+ if (i.value !== "") {
124
+ let n = parseFloat(i.value);
125
+ n = Math.round(n / r) * r, n > parseFloat(i.max) ? n = parseFloat(i.max) : n < parseFloat(i.min) && (n = parseFloat(i.min));
126
+ const s = r.toString().split(".")[1]?.length || 0;
127
+ a[e] = parseFloat(n.toFixed(s)), t("TYPED", {
128
+ scale: a
129
+ });
130
+ }
131
+ };
132
+ // Direct Actions
133
+ onGrab = (e) => {
134
+ e.stopPropagation();
135
+ const o = e.currentTarget, l = o.parentElement, t = e.clientX - e.currentTarget.getBoundingClientRect().left - e.currentTarget.getBoundingClientRect().width / 2, p = l.offsetWidth, r = l.parentElement, a = Array.from(l.children);
136
+ this.setState({
137
+ activeKnobId: o.dataset.id || null
138
+ });
139
+ const i = (n) => {
140
+ const { range: s, onChange: c } = this.props, u = {};
141
+ a.forEach(
142
+ (d) => u[d.dataset.id] = parseFloat(
143
+ f(
144
+ parseFloat(d.style.left.replace("%", "")),
145
+ 0,
146
+ 100,
147
+ s.min,
148
+ s.max
149
+ ).toFixed(1)
150
+ )
151
+ ), c(n, {
152
+ scale: u
153
+ });
154
+ };
155
+ o.style.zIndex = "2", document.onmousemove = (n) => this.onSlide(
156
+ n,
157
+ r,
158
+ l,
159
+ a,
160
+ o,
161
+ t,
162
+ p,
163
+ (s) => i(s)
164
+ ), document.onmouseup = () => this.onRelease(a, o, (n) => i(n));
165
+ };
166
+ onSlide = (e, o, l, t, p, r, a, i) => {
167
+ const { min: n, max: s, step: c = 0.1 } = this.props.range, u = parseFloat(
168
+ window.getComputedStyle(o, null).getPropertyValue("padding-left")
169
+ );
170
+ let d = e.clientX - o.offsetLeft - u - r;
171
+ if (d <= 0 ? d = 0 : d >= a && (d = a), p === l.firstChild && e.shiftKey)
172
+ return this.distributeStops(
173
+ "MIN",
174
+ parseFloat(f(d, 0, a, n, s).toFixed(1)),
175
+ t
176
+ );
177
+ if (p === l.lastChild && e.shiftKey)
178
+ return this.distributeStops(
179
+ "MAX",
180
+ parseFloat(f(d, 0, a, n, s).toFixed(1)),
181
+ t
182
+ );
183
+ if (e.ctrlKey || e.metaKey)
184
+ if (d < p.offsetLeft - l.firstChild.offsetLeft || d > a - l.lastChild.offsetLeft + p.offsetLeft)
185
+ d = p.offsetLeft;
186
+ else
187
+ return this.linkStops(
188
+ parseFloat(f(d, 0, a, n, s).toFixed(1)),
189
+ p,
190
+ t
191
+ );
192
+ e.ctrlKey === !1 && e.metaKey === !1 && e.shiftKey === !1 && this.setState({
193
+ isTooltipDisplay: Array(t.length).fill(!1)
194
+ });
195
+ const g = f(d, 0, a, n, s), I = Math.round(g / c) * c, M = c.toString().split(".")[1]?.length || 0, b = f(I, n, s, 0, 100);
196
+ p.style.left = b.toFixed(M) + "%", requestAnimationFrame(() => {
197
+ p.focus();
198
+ }), i("UPDATING"), document.body.style.cursor = "ew-resize";
199
+ };
200
+ onRelease = (e, o, l) => {
201
+ document.onmousemove = null, document.onmouseup = null, o.onmouseup = null, o.style.zIndex = "1", this.setState({
202
+ activeKnobId: null
203
+ }), requestAnimationFrame(() => {
204
+ o.focus();
205
+ }), this.setState({
206
+ isTooltipDisplay: Array(e.length).fill(!1)
207
+ }), l("RELEASED"), document.body.style.cursor = "";
208
+ };
209
+ onAdd = (e) => {
210
+ const { scale: o, onChange: l } = this.props, { min: t, max: p } = this.props.range, r = O(e.nativeEvent, o, t, p);
211
+ l("SHIFTED", r, "ADD_STOP");
212
+ };
213
+ onDelete = (e) => {
214
+ const { scale: o, onChange: l } = this.props, t = N(o, e);
215
+ l("SHIFTED", t, "DELETE_STOP");
216
+ };
217
+ onShiftRight = (e, o, l) => {
218
+ const { scale: t, onChange: p } = this.props, { min: r, max: a } = this.props.range, i = D(t, e, o, l, r, a);
219
+ p("SHIFTED", i), requestAnimationFrame(() => {
220
+ const n = e.closest(".multiple-slider__range");
221
+ if (n) {
222
+ const s = n.querySelector(
223
+ `[data-id="${e.dataset.id}"]`
224
+ );
225
+ s instanceof HTMLElement && s.focus();
226
+ }
227
+ });
228
+ };
229
+ onShiftLeft = (e, o, l) => {
230
+ const { scale: t, onChange: p } = this.props, { min: r, max: a } = this.props.range, i = A(t, e, o, l, r, a);
231
+ p("SHIFTED", i), requestAnimationFrame(() => {
232
+ const n = e.closest(".multiple-slider__range");
233
+ if (n) {
234
+ const s = n.querySelector(
235
+ `[data-id="${e.dataset.id}"]`
236
+ );
237
+ s instanceof HTMLElement && s.focus();
238
+ }
239
+ });
240
+ };
241
+ distributeStops = (e, o, l) => {
242
+ const { scale: t, distributionEasing: p, onChange: r, range: a } = this.props, { min: i, max: n, step: s = 0.1 } = a, c = Math.round(o / s) * s, u = s.toString().split(".")[1]?.length || 0;
243
+ e === "MIN" ? r("UPDATING", {
244
+ scale: E(
245
+ Object.entries(t).sort((d, g) => g[1] - d[1]).map((d) => parseFloat(d[0])),
246
+ parseFloat(c.toFixed(u)),
247
+ Math.max(...Object.values(t)) ?? n,
248
+ p
249
+ )
250
+ }) : e === "MAX" && r("UPDATING", {
251
+ scale: E(
252
+ Object.entries(t).sort((d, g) => g[1] - d[1]).map((d) => parseFloat(d[0])),
253
+ Math.min(...Object.values(t)) ?? i,
254
+ parseFloat(c.toFixed(u)),
255
+ p
256
+ )
257
+ }), this.setState({
258
+ isTooltipDisplay: Array(l.length).fill(!0)
259
+ }), document.body.style.cursor = "ew-resize";
260
+ };
261
+ linkStops = (e, o, l) => {
262
+ const { scale: t, onChange: p, range: r } = this.props, { step: a = 0.1 } = r, i = t, n = Math.round(e / a) * a, s = a.toString().split(".")[1]?.length || 0;
263
+ l.filter((c) => c !== o).forEach((c) => {
264
+ const u = i[c.dataset.id] - i[o.dataset.id] + n, d = Math.round(u / a) * a;
265
+ i[c.dataset.id] = parseFloat(
266
+ d.toFixed(s)
267
+ );
268
+ }), i[o.dataset.id] = parseFloat(
269
+ n.toFixed(s)
270
+ ), this.setState({
271
+ isTooltipDisplay: this.state.isTooltipDisplay.fill(!0)
272
+ }), p("UPDATING", {
273
+ scale: i
274
+ }), document.body.style.cursor = "ew-resize";
275
+ };
276
+ // Templates
277
+ Status = () => {
278
+ const { warning: e, isBlocked: o, isNew: l } = this.props;
279
+ if (e || o || l)
280
+ return /* @__PURE__ */ S("div", { className: "multiple-slider__status", children: [
281
+ e !== void 0 && /* @__PURE__ */ m(
282
+ F,
283
+ {
284
+ iconType: "PICTO",
285
+ iconName: "warning",
286
+ text: e.label,
287
+ pin: e.pin,
288
+ type: e.type
289
+ }
290
+ ),
291
+ (o || l) && /* @__PURE__ */ m(
292
+ T,
293
+ {
294
+ isSolo: !0,
295
+ action: o ? this.props.onUnblock : void 0,
296
+ children: l ? "New" : "Pro"
297
+ }
298
+ )
299
+ ] });
300
+ };
301
+ Edit = () => {
302
+ const { scale: e, range: o, colors: l, tips: t, isBlocked: p } = this.props, { isTooltipDisplay: r } = this.state;
303
+ return /* @__PURE__ */ m(
304
+ "div",
305
+ {
306
+ className: x([
307
+ "multiple-slider__range",
308
+ p && "multiple-slider__range--blocked"
309
+ ]),
310
+ style: {
311
+ background: `linear-gradient(90deg, ${l.min}, ${l.max})`
312
+ },
313
+ role: "presentation",
314
+ children: Object.entries(e).sort((a, i) => a[1] - i[1]).map((a, i, n) => /* @__PURE__ */ m(
315
+ y,
316
+ {
317
+ id: a[0],
318
+ shortId: a[0],
319
+ value: a[1],
320
+ offset: f(a[1], o.min, o.max, 0, 100),
321
+ min: o.min.toString(),
322
+ max: o.max.toString(),
323
+ helper: i === 0 || i === n.length - 1 ? {
324
+ label: t.minMax,
325
+ type: "MULTI_LINE"
326
+ } : void 0,
327
+ canBeTyped: !0,
328
+ isDisplayed: r[i],
329
+ isBlocked: p,
330
+ style: {
331
+ pointerEvents: this.state.activeKnobId && this.state.activeKnobId !== a[0] || p ? "none" : "auto"
332
+ },
333
+ onShiftRight: (s) => {
334
+ this.onShiftRight(s.target, s.metaKey, s.ctrlKey);
335
+ },
336
+ onShiftLeft: (s) => {
337
+ this.onShiftLeft(s.target, s.metaKey, s.ctrlKey);
338
+ },
339
+ onMouseDown: (s) => {
340
+ this.onGrab(s), s.target.focus();
341
+ },
342
+ onValidStopValue: (s, c) => this.validHandler(s, c),
343
+ "aria-valuenow": a[1]
344
+ },
345
+ a[0]
346
+ ))
347
+ }
348
+ );
349
+ };
350
+ FullyEdit = () => {
351
+ const { scale: e, stops: o, range: l, colors: t, tips: p, isBlocked: r } = this.props, { isTooltipDisplay: a } = this.state;
352
+ return /* @__PURE__ */ m(
353
+ "div",
354
+ {
355
+ className: x([
356
+ "multiple-slider__range",
357
+ o.list.length < (o.max ?? 1 / 0) && !r && "multiple-slider__range--add",
358
+ o.list.length === (o.max ?? 1 / 0) && "multiple-slider__range--not-allowed",
359
+ r && "multiple-slider__range--blocked"
360
+ ]),
361
+ style: {
362
+ background: `linear-gradient(90deg, ${t.min}, ${t.max})`
363
+ },
364
+ onMouseDown: (i) => o.list.length < (o.max ?? 1 / 0) && this.onAdd(i),
365
+ children: Object.entries(e).sort((i, n) => i[1] - n[1]).map((i, n, s) => /* @__PURE__ */ m(
366
+ y,
367
+ {
368
+ id: i[0],
369
+ shortId: i[0],
370
+ value: i[1],
371
+ offset: f(i[1], l.min, l.max, 0, 100),
372
+ min: l.min.toString(),
373
+ max: l.max.toString(),
374
+ helper: n === 0 || n === s.length - 1 ? {
375
+ label: p.minMax,
376
+ type: "MULTI_LINE"
377
+ } : void 0,
378
+ canBeTyped: !0,
379
+ isDisplayed: a[n],
380
+ isBlocked: r,
381
+ style: {
382
+ pointerEvents: this.state.activeKnobId && this.state.activeKnobId !== i[0] || r ? "none" : "auto"
383
+ },
384
+ onShiftRight: (c) => {
385
+ this.onShiftRight(c.target, c.metaKey, c.ctrlKey);
386
+ },
387
+ onShiftLeft: (c) => {
388
+ this.onShiftLeft(c.target, c.metaKey, c.ctrlKey);
389
+ },
390
+ onDelete: (c) => {
391
+ o.list.length > (o.min ?? 1 / 0) && this.onDelete(c.target);
392
+ },
393
+ onMouseDown: (c) => {
394
+ this.onGrab(c), c.target.focus();
395
+ },
396
+ onValidStopValue: (c, u) => this.validHandler(c, u),
397
+ "aria-valuenow": i[1]
398
+ },
399
+ i[0]
400
+ ))
401
+ }
402
+ );
403
+ };
404
+ // Render
405
+ render() {
406
+ const { type: e } = this.props;
407
+ return /* @__PURE__ */ S("div", { className: "multiple-slider", children: [
408
+ e === "EDIT" && /* @__PURE__ */ m(this.Edit, {}),
409
+ e === "FULLY_EDIT" && /* @__PURE__ */ m(this.FullyEdit, {}),
410
+ this.Status()
411
+ ] });
412
+ }
413
+ }
414
+ export {
415
+ B as default
416
+ };
417
+ //# sourceMappingURL=MultipleSlider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultipleSlider.js","sources":["../../../../node_modules/@a_ng_d/figmug-utils/dist/modules/do-scale/do-scale.js","../../../../src/components/inputs/multiple-slider/actions/shiftRightStop.ts","../../../../src/components/inputs/multiple-slider/actions/shiftLeftStop.ts","../../../../src/components/inputs/multiple-slider/actions/deleteStop.ts","../../../../src/components/inputs/multiple-slider/actions/addStop.ts","../../../../src/components/inputs/multiple-slider/MultipleSlider.tsx"],"sourcesContent":["import M from \"../do-map/do-map.js\";\nconst S = (o, I, t, a = \"LINEAR\") => {\n let E = 1;\n const h = {};\n return o.map((A) => {\n h[A] = a !== \"NONE\" ? parseFloat(M(p(a, E), 0, 1, I, t).toFixed(1)) : A, E -= 1 / (o.length - 1), E < 0.01 && (E = 0);\n }), h;\n}, p = (o, I) => {\n var a;\n const t = {\n LINEAR: (E) => E,\n EASEIN_SINE: (E) => Math.pow(E, 1.2),\n EASEOUT_SINE: (E) => 1 - Math.pow(1 - E, 1.2),\n EASEINOUT_SINE: (E) => E < 0.5 ? Math.pow(E * 2, 1.2) / 2 : 1 - Math.pow((1 - E) * 2, 1.2) / 2,\n EASEIN_QUAD: (E) => Math.pow(E, 1.5),\n EASEOUT_QUAD: (E) => 1 - Math.pow(1 - E, 1.5),\n EASEINOUT_QUAD: (E) => E < 0.5 ? Math.pow(E * 2, 1.5) / 2 : 1 - Math.pow((1 - E) * 2, 1.5) / 2,\n EASEIN_CUBIC: (E) => 1 - Math.cos(E * Math.PI / 2),\n EASEOUT_CUBIC: (E) => Math.sin(E * Math.PI / 2),\n EASEINOUT_CUBIC: (E) => -(Math.cos(Math.PI * E) - 1) / 2\n };\n return (a = t[o ?? \"LINEAR\"]) == null ? void 0 : a.call(t, I);\n};\nexport {\n S as default\n};\n//# sourceMappingURL=do-scale.js.map\n","const shiftRightStop = (\n scale: Record<string, number>,\n selectedKnob: HTMLElement,\n meta: boolean,\n ctrl: boolean,\n minRange: number,\n maxRange: number\n) => {\n const stopsList: Array<string> = []\n const shiftValue = meta || ctrl ? 0.1 : 1\n\n Object.entries(scale)\n .sort((a, b) => a[1] - b[1])\n .forEach((stop) => {\n stopsList.push(stop[0])\n })\n\n const selectedKnobIndex = stopsList.indexOf(\n selectedKnob.dataset.id as string\n ),\n newScale = scale,\n currentStopValue: number = newScale[stopsList[selectedKnobIndex]]\n\n if (currentStopValue + shiftValue <= minRange)\n newScale[stopsList[selectedKnobIndex]] = minRange\n else if (currentStopValue + shiftValue >= maxRange)\n newScale[stopsList[selectedKnobIndex]] = maxRange\n else\n newScale[stopsList[selectedKnobIndex]] =\n newScale[stopsList[selectedKnobIndex]] + shiftValue\n\n return {\n scale: newScale as Record<string, number>,\n }\n}\n\nexport default shiftRightStop\n","const shiftLeftStop = (\n scale: Record<string, number>,\n selectedKnob: HTMLElement,\n meta: boolean,\n ctrl: boolean,\n minRange: number,\n maxRange: number\n) => {\n const stopsList: Array<string> = []\n const shiftValue = meta || ctrl ? 0.1 : 1\n\n Object.entries(scale)\n .sort((a, b) => a[1] - b[1])\n .forEach((stop) => {\n stopsList.push(stop[0])\n })\n\n const selectedKnobIndex = stopsList.indexOf(\n selectedKnob.dataset.id as string\n ),\n newScale = scale,\n currentStopValue: number = newScale[stopsList[selectedKnobIndex]]\n\n if (currentStopValue - shiftValue <= minRange)\n newScale[stopsList[selectedKnobIndex]] = minRange\n else if (currentStopValue - shiftValue >= maxRange)\n newScale[stopsList[selectedKnobIndex]] = maxRange\n else\n newScale[stopsList[selectedKnobIndex]] =\n newScale[stopsList[selectedKnobIndex]] - shiftValue\n\n return {\n scale: newScale as Record<string, number>,\n }\n}\n\nexport default shiftLeftStop\n","const getNumberScale = (num: number): number => {\n const length = Math.floor(Math.abs(num)).toString().length\n return Math.pow(10, length - 1)\n}\n\nconst deleteStop = (\n scale: Record<string, number>,\n selectedKnob: HTMLElement\n) => {\n const entries = Object.entries(scale)\n .map(([key, value]) => ({\n index: parseFloat(key),\n value: value as number,\n }))\n .filter((entry) => entry.index > 0)\n\n const firstKey = Math.min(...entries.map((e) => e.index))\n const numberScale = getNumberScale(firstKey)\n\n const filteredEntries = entries.filter(\n (entry) => entry.index !== parseFloat(selectedKnob.dataset.id as string)\n )\n\n const newScale = filteredEntries.reduce(\n (acc, _, idx) => {\n const newIndex = Math.max(1, idx + 1) * numberScale\n acc[newIndex] = filteredEntries[idx].value\n return acc\n },\n {} as Record<string, number>\n )\n\n return {\n scale: newScale,\n stops: Object.keys(newScale).map((k) => parseFloat(k)),\n min: Math.min(...Object.values(newScale)),\n max: Math.max(...Object.values(newScale)),\n }\n}\n\nexport default deleteStop\n","import { doMap } from '@a_ng_d/figmug-utils'\n\nconst getNumberScale = (num: number): number => {\n const length = Math.floor(Math.abs(num)).toString().length\n return Math.pow(10, length - 1)\n}\n\nconst addStop = (\n e: MouseEvent,\n scale: Record<string, number>,\n rangeMin: number,\n rangeMax: number\n) => {\n const entries = Object.entries(scale)\n .map(([key, value]) => ({\n index: Math.max(1, parseFloat(key)),\n value: value as number,\n }))\n .filter((entry) => entry.index > 0)\n\n const numberScale = getNumberScale(Math.min(...entries.map((e) => e.index)))\n const isDescending = entries[0].value > entries[entries.length - 1].value\n\n const target = e.target as HTMLElement\n const offset = parseFloat(\n doMap(e.layerX, 0, target.offsetWidth, rangeMin, rangeMax).toFixed(1)\n )\n\n entries.push({\n index: Math.max(...entries.map((e) => e.index)) + numberScale,\n value: offset,\n })\n\n entries.sort((a, b) => (isDescending ? b.value - a.value : a.value - b.value))\n\n const newScale = entries.reduce(\n (acc, entry, idx) => {\n acc[(idx + 1) * numberScale] = entry.value\n return acc\n },\n {} as Record<string, number>\n )\n\n return {\n scale: newScale,\n stops: Object.keys(newScale).map((k) => parseFloat(k)),\n min: Math.min(...Object.values(newScale)),\n max: Math.max(...Object.values(newScale)),\n }\n}\n\nexport default addStop\n","import React from 'react'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport Knob from '@components/actions/knob/Knob'\nimport { doClassnames, doMap, Easing } from '@a_ng_d/figmug-utils'\nimport { doScale } from '@a_ng_d/figmug-utils'\nimport shiftRightStop from './actions/shiftRightStop'\nimport shiftLeftStop from './actions/shiftLeftStop'\nimport deleteStop from './actions/deleteStop'\nimport addStop from './actions/addStop'\nimport './multiple-slider.scss'\n\ntype UpdateEvent = 'TYPED' | 'UPDATING' | 'RELEASED' | 'SHIFTED'\n\ninterface SliderProps {\n /**\n * Type of slider interaction\n */\n type: 'EDIT' | 'FULLY_EDIT'\n /**\n * Scale mapping stop positions to values\n */\n scale: Record<string, number>\n /**\n * Easing function for distribution\n */\n distributionEasing: Easing\n /**\n * Stops configuration\n */\n stops: {\n /** List of stop positions */\n list: Array<number>\n /** Minimum allowed stop value */\n min?: number\n /** Maximum allowed stop value */\n max?: number\n }\n /**\n * Range constraints for values\n */\n range: {\n /** Minimum value */\n min: number\n /** Maximum value */\n max: number\n /** Step increment */\n step?: number\n }\n /**\n * Colors for gradient display\n */\n colors: {\n /** Start color */\n min: string\n /** End color */\n max: string\n }\n /**\n * Tooltip configuration\n */\n tips: {\n /** Tooltip text for min/max values */\n minMax: string\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Whether the slider is blocked\n */\n isBlocked?: boolean\n /**\n * Whether to show a \"New\" badge\n */\n isNew?: boolean\n /**\n * Change handler\n */\n onChange: (\n state: UpdateEvent,\n results: {\n scale: Record<string, number>\n stops?: Array<number>\n min?: number\n max?: number\n },\n feature?: string\n ) => void\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\ninterface SliderStates {\n isTooltipDisplay: Array<boolean>\n activeKnobId: string | null\n}\n\nexport default class Slider extends React.Component<SliderProps, SliderStates> {\n static defaultProps = {\n scale: {},\n stops: {\n list: [],\n min: 0,\n max: 100,\n },\n colors: {\n min: 'white',\n max: 'white',\n },\n isBlocked: false,\n isNew: false,\n }\n\n constructor(props: SliderProps) {\n super(props)\n this.state = {\n isTooltipDisplay: Array(props.stops.list.length).fill(false),\n activeKnobId: null,\n }\n }\n\n // Handlers\n validHandler = (\n stopId: string,\n e:\n | React.FocusEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n ) => {\n const { scale, onChange, range } = this.props\n const step = range.step || 0.1\n\n const newScale = scale ?? {}\n const target = e.target as HTMLInputElement\n\n if (target.value !== '') {\n let value = parseFloat(target.value)\n\n value = Math.round(value / step) * step\n\n if (value > parseFloat(target.max)) value = parseFloat(target.max)\n else if (value < parseFloat(target.min)) value = parseFloat(target.min)\n\n const precision = step.toString().split('.')[1]?.length || 0\n newScale[stopId] = parseFloat(value.toFixed(precision))\n\n onChange('TYPED', {\n scale: newScale,\n })\n }\n }\n\n // Direct Actions\n onGrab = (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation()\n const stop = e.currentTarget as HTMLElement,\n range = stop.parentElement as HTMLElement,\n shift =\n e.clientX -\n (e.currentTarget as HTMLElement).getBoundingClientRect().left -\n (e.currentTarget as HTMLElement).getBoundingClientRect().width / 2,\n rangeWidth = range.offsetWidth as number,\n slider = range.parentElement as HTMLElement,\n stops = Array.from(range.children as HTMLCollectionOf<HTMLElement>)\n\n this.setState({\n activeKnobId: stop.dataset.id || null,\n })\n\n const update = (event: UpdateEvent) => {\n const { range, onChange } = this.props\n const scale: Record<string, number> = {}\n\n stops.forEach(\n (stop) =>\n (scale[stop.dataset.id as string] = parseFloat(\n doMap(\n parseFloat(stop.style.left.replace('%', '')),\n 0,\n 100,\n range.min,\n range.max\n ).toFixed(1)\n ))\n )\n onChange(event, {\n scale: scale,\n })\n }\n\n stop.style.zIndex = '2'\n\n document.onmousemove = (e) =>\n this.onSlide(\n e,\n slider,\n range,\n stops,\n stop,\n shift,\n rangeWidth,\n (event: UpdateEvent) => update(event)\n )\n\n document.onmouseup = () =>\n this.onRelease(stops, stop, (event: UpdateEvent) => update(event))\n }\n\n onSlide = (\n e: MouseEvent,\n slider: HTMLElement,\n range: HTMLElement,\n stops: Array<HTMLElement>,\n stop: HTMLElement,\n shift: number,\n rangeWidth: number,\n update: (e: UpdateEvent) => void\n ) => {\n const { min, max, step = 0.1 } = this.props.range\n const sliderPadding: number = parseFloat(\n window.getComputedStyle(slider, null).getPropertyValue('padding-left')\n )\n let offset = e.clientX - slider.offsetLeft - sliderPadding - shift\n\n if (offset <= 0) offset = 0\n else if (offset >= rangeWidth) offset = rangeWidth\n\n // Distribute stops horizontal spacing\n if (stop === range.firstChild && e.shiftKey)\n return this.distributeStops(\n 'MIN',\n parseFloat(doMap(offset, 0, rangeWidth, min, max).toFixed(1)),\n stops\n )\n else if (stop === range.lastChild && e.shiftKey)\n return this.distributeStops(\n 'MAX',\n parseFloat(doMap(offset, 0, rangeWidth, min, max).toFixed(1)),\n stops\n )\n\n // Link every stop\n if (e.ctrlKey || e.metaKey)\n if (\n offset <\n stop.offsetLeft - (range.firstChild as HTMLElement).offsetLeft ||\n offset >\n rangeWidth -\n (range.lastChild as HTMLElement).offsetLeft +\n stop.offsetLeft\n )\n offset = stop.offsetLeft\n else\n return this.linkStops(\n parseFloat(doMap(offset, 0, rangeWidth, min, max).toFixed(1)),\n stop,\n stops\n )\n\n if (e.ctrlKey === false && e.metaKey === false && e.shiftKey === false)\n this.setState({\n isTooltipDisplay: Array(stops.length).fill(false),\n })\n\n const rawValue = doMap(offset, 0, rangeWidth, min, max)\n const steppedValue = Math.round(rawValue / step) * step\n const precision = step.toString().split('.')[1]?.length || 0\n\n const newPosition = doMap(steppedValue, min, max, 0, 100)\n stop.style.left = newPosition.toFixed(precision) + '%'\n\n requestAnimationFrame(() => {\n stop.focus()\n })\n\n update('UPDATING')\n document.body.style.cursor = 'ew-resize'\n }\n\n onRelease = (\n stops: Array<HTMLElement>,\n stop: HTMLElement,\n update: (e: UpdateEvent) => void\n ) => {\n document.onmousemove = null\n document.onmouseup = null\n stop.onmouseup = null\n stop.style.zIndex = '1'\n\n this.setState({\n activeKnobId: null,\n })\n\n requestAnimationFrame(() => {\n stop.focus()\n })\n\n this.setState({\n isTooltipDisplay: Array(stops.length).fill(false),\n })\n\n update('RELEASED')\n document.body.style.cursor = ''\n }\n\n onAdd = (e: React.MouseEvent<HTMLDivElement>) => {\n const { scale, onChange } = this.props\n const { min, max } = this.props.range\n\n const results = addStop(e.nativeEvent, scale, min, max)\n onChange('SHIFTED', results, 'ADD_STOP')\n }\n\n onDelete = (knob: HTMLElement) => {\n const { scale, onChange } = this.props\n\n const results = deleteStop(scale, knob)\n onChange('SHIFTED', results, 'DELETE_STOP')\n }\n\n onShiftRight = (knob: HTMLElement, isMeta: boolean, isCtrl: boolean) => {\n const { scale, onChange } = this.props\n const { min, max } = this.props.range\n\n const results = shiftRightStop(scale, knob, isMeta, isCtrl, min, max)\n\n onChange('SHIFTED', results)\n\n requestAnimationFrame(() => {\n const sliderRange = knob.closest('.multiple-slider__range')\n if (sliderRange) {\n const updatedKnob = sliderRange.querySelector(\n `[data-id=\"${knob.dataset.id}\"]`\n )\n if (updatedKnob instanceof HTMLElement) updatedKnob.focus()\n }\n })\n }\n\n onShiftLeft = (knob: HTMLElement, isMeta: boolean, isCtrl: boolean) => {\n const { scale, onChange } = this.props\n const { min, max } = this.props.range\n\n const results = shiftLeftStop(scale, knob, isMeta, isCtrl, min, max)\n\n onChange('SHIFTED', results)\n\n requestAnimationFrame(() => {\n const sliderRange = knob.closest('.multiple-slider__range')\n if (sliderRange) {\n const updatedKnob = sliderRange.querySelector(\n `[data-id=\"${knob.dataset.id}\"]`\n )\n if (updatedKnob instanceof HTMLElement) updatedKnob.focus()\n }\n })\n }\n\n distributeStops = (\n type: string,\n value: number,\n stops: Array<HTMLElement>\n ) => {\n const { scale, distributionEasing, onChange, range } = this.props\n const { min, max, step = 0.1 } = range\n\n const steppedValue = Math.round(value / step) * step\n const precision = step.toString().split('.')[1]?.length || 0\n\n if (type === 'MIN')\n onChange('UPDATING', {\n scale: doScale(\n Object.entries(scale)\n .sort((a, b) => b[1] - a[1])\n .map((entry) => parseFloat(entry[0])),\n parseFloat(steppedValue.toFixed(precision)),\n Math.max(...Object.values(scale)) ?? max,\n distributionEasing\n ),\n })\n else if (type === 'MAX')\n onChange('UPDATING', {\n scale: doScale(\n Object.entries(scale)\n .sort((a, b) => b[1] - a[1])\n .map((entry) => parseFloat(entry[0])),\n Math.min(...Object.values(scale)) ?? min,\n parseFloat(steppedValue.toFixed(precision)),\n distributionEasing\n ),\n })\n\n this.setState({\n isTooltipDisplay: Array(stops.length).fill(true),\n })\n\n document.body.style.cursor = 'ew-resize'\n }\n\n linkStops = (value: number, src: HTMLElement, stops: Array<HTMLElement>) => {\n const { scale, onChange, range } = this.props\n const { step = 0.1 } = range\n const newScale: Record<string, number> = scale\n\n const steppedValue = Math.round(value / step) * step\n const precision = step.toString().split('.')[1]?.length || 0\n\n stops\n .filter((stop) => stop !== src)\n .forEach((stop) => {\n const delta =\n newScale[stop.dataset.id as string] -\n newScale[src.dataset.id as string] +\n steppedValue\n\n const steppedDelta = Math.round(delta / step) * step\n newScale[stop.dataset.id as string] = parseFloat(\n steppedDelta.toFixed(precision)\n )\n })\n\n newScale[src.dataset.id as string] = parseFloat(\n steppedValue.toFixed(precision)\n )\n\n this.setState({\n isTooltipDisplay: this.state.isTooltipDisplay.fill(true),\n })\n\n onChange('UPDATING', {\n scale: newScale,\n })\n document.body.style.cursor = 'ew-resize'\n }\n\n // Templates\n Status = () => {\n const { warning, isBlocked, isNew } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"multiple-slider__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && (\n <Chip\n isSolo\n action={isBlocked ? this.props.onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n Edit = () => {\n const { scale, range, colors, tips, isBlocked } = this.props\n const { isTooltipDisplay } = this.state\n\n return (\n <div\n className={doClassnames([\n 'multiple-slider__range',\n isBlocked && 'multiple-slider__range--blocked',\n ])}\n style={{\n background: `linear-gradient(90deg, ${colors.min}, ${colors.max})`,\n }}\n role=\"presentation\"\n >\n {Object.entries(scale)\n .sort((a, b) => a[1] - b[1])\n .map((item, index, original) => (\n <Knob\n key={item[0]}\n id={item[0]}\n shortId={item[0]}\n value={item[1]}\n offset={doMap(item[1], range.min, range.max, 0, 100)}\n min={range.min.toString()}\n max={range.max.toString()}\n helper={\n index === 0 || index === original.length - 1\n ? {\n label: tips.minMax,\n type: 'MULTI_LINE',\n }\n : undefined\n }\n canBeTyped\n isDisplayed={isTooltipDisplay[index]}\n isBlocked={isBlocked}\n style={{\n pointerEvents:\n (this.state.activeKnobId &&\n this.state.activeKnobId !== item[0]) ||\n isBlocked\n ? 'none'\n : 'auto',\n }}\n onShiftRight={(e: React.KeyboardEvent<HTMLInputElement>) => {\n this.onShiftRight(e.target as HTMLElement, e.metaKey, e.ctrlKey)\n }}\n onShiftLeft={(e: React.KeyboardEvent<HTMLInputElement>) => {\n this.onShiftLeft(e.target as HTMLElement, e.metaKey, e.ctrlKey)\n }}\n onMouseDown={(e: React.MouseEvent<HTMLElement>) => {\n this.onGrab(e)\n ;(e.target as HTMLElement).focus()\n }}\n onValidStopValue={(stopId, e) => this.validHandler(stopId, e)}\n aria-valuenow={item[1]}\n />\n ))}\n </div>\n )\n }\n\n FullyEdit = () => {\n const { scale, stops, range, colors, tips, isBlocked } = this.props\n const { isTooltipDisplay } = this.state\n\n return (\n <div\n className={doClassnames([\n 'multiple-slider__range',\n stops.list.length < (stops.max ?? Infinity) &&\n !isBlocked &&\n 'multiple-slider__range--add',\n stops.list.length === (stops.max ?? Infinity) &&\n 'multiple-slider__range--not-allowed',\n isBlocked && 'multiple-slider__range--blocked',\n ])}\n style={{\n background: `linear-gradient(90deg, ${colors.min}, ${colors.max})`,\n }}\n onMouseDown={(e) =>\n stops.list.length < (stops.max ?? Infinity) && this.onAdd(e)\n }\n >\n {Object.entries(scale)\n .sort((a, b) => a[1] - b[1])\n .map((item, index, original) => (\n <Knob\n key={item[0]}\n id={item[0]}\n shortId={item[0]}\n value={item[1]}\n offset={doMap(item[1], range.min, range.max, 0, 100)}\n min={range.min.toString()}\n max={range.max.toString()}\n helper={\n index === 0 || index === original.length - 1\n ? {\n label: tips.minMax,\n type: 'MULTI_LINE',\n }\n : undefined\n }\n canBeTyped\n isDisplayed={isTooltipDisplay[index]}\n isBlocked={isBlocked}\n style={{\n pointerEvents:\n (this.state.activeKnobId &&\n this.state.activeKnobId !== item[0]) ||\n isBlocked\n ? 'none'\n : 'auto',\n }}\n onShiftRight={(e: React.KeyboardEvent<HTMLInputElement>) => {\n this.onShiftRight(e.target as HTMLElement, e.metaKey, e.ctrlKey)\n }}\n onShiftLeft={(e: React.KeyboardEvent<HTMLInputElement>) => {\n this.onShiftLeft(e.target as HTMLElement, e.metaKey, e.ctrlKey)\n }}\n onDelete={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (stops.list.length > (stops.min ?? Infinity))\n this.onDelete(e.target as HTMLElement)\n }}\n onMouseDown={(e: React.MouseEvent<HTMLElement>) => {\n this.onGrab(e)\n ;(e.target as HTMLElement).focus()\n }}\n onValidStopValue={(stopId, e) => this.validHandler(stopId, e)}\n aria-valuenow={item[1]}\n />\n ))}\n </div>\n )\n }\n\n // Render\n render() {\n const { type } = this.props\n\n return (\n <div className=\"multiple-slider\">\n {type === 'EDIT' && <this.Edit />}\n {type === 'FULLY_EDIT' && <this.FullyEdit />}\n {this.Status()}\n </div>\n )\n }\n}\n"],"names":["S","o","I","t","a","E","h","A","M","p","shiftRightStop","scale","selectedKnob","meta","ctrl","minRange","maxRange","stopsList","shiftValue","b","stop","selectedKnobIndex","newScale","currentStopValue","shiftLeftStop","getNumberScale","num","length","deleteStop","entries","key","value","entry","firstKey","e","numberScale","filteredEntries","acc","_","idx","newIndex","k","addStop","rangeMin","rangeMax","isDescending","target","offset","doMap","Slider","React","props","stopId","onChange","range","step","precision","shift","rangeWidth","slider","stops","update","event","min","max","sliderPadding","rawValue","steppedValue","newPosition","results","knob","isMeta","isCtrl","sliderRange","updatedKnob","type","distributionEasing","doScale","src","delta","steppedDelta","warning","isBlocked","isNew","jsxs","jsx","IconChip","Chip","colors","tips","isTooltipDisplay","doClassnames","item","index","original","Knob"],"mappings":";;;;;;;AACA,MAAMA,IAAI,CAACC,GAAGC,GAAGC,GAAGC,IAAI,aAAa;AACnC,MAAIC,IAAI;AACR,QAAMC,IAAI,CAAA;AACV,SAAOL,EAAE,IAAI,CAACM,MAAM;AAClB,IAAAD,EAAEC,CAAC,IAAIH,MAAM,SAAS,WAAWI,EAAEC,EAAEL,GAAGC,CAAC,GAAG,GAAG,GAAGH,GAAGC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAII,GAAGF,KAAK,KAAKJ,EAAE,SAAS,IAAII,IAAI,SAASA,IAAI;AAAA,EACrH,CAAC,GAAGC;AACN,GAAGG,IAAI,CAACR,GAAGC,MAAM;AACf,MAAIE;AACJ,QAAMD,IAAI;AAAA,IACR,QAAQ,CAACE,MAAMA;AAAA,IACf,aAAa,CAACA,MAAM,KAAK,IAAIA,GAAG,GAAG;AAAA,IACnC,cAAc,CAACA,MAAM,IAAI,KAAK,IAAI,IAAIA,GAAG,GAAG;AAAA,IAC5C,gBAAgB,CAACA,MAAMA,IAAI,MAAM,KAAK,IAAIA,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,IAAIA,KAAK,GAAG,GAAG,IAAI;AAAA,IAC7F,aAAa,CAACA,MAAM,KAAK,IAAIA,GAAG,GAAG;AAAA,IACnC,cAAc,CAACA,MAAM,IAAI,KAAK,IAAI,IAAIA,GAAG,GAAG;AAAA,IAC5C,gBAAgB,CAACA,MAAMA,IAAI,MAAM,KAAK,IAAIA,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,IAAIA,KAAK,GAAG,GAAG,IAAI;AAAA,IAC7F,cAAc,CAACA,MAAM,IAAI,KAAK,IAAIA,IAAI,KAAK,KAAK,CAAC;AAAA,IACjD,eAAe,CAACA,MAAM,KAAK,IAAIA,IAAI,KAAK,KAAK,CAAC;AAAA,IAC9C,iBAAiB,CAACA,MAAM,EAAE,KAAK,IAAI,KAAK,KAAKA,CAAC,IAAI,KAAK;AAAA,EAC3D;AACE,UAAQD,IAAID,EAAEF,KAAK,QAAQ,MAAM,OAAO,SAASG,EAAE,KAAKD,GAAGD,CAAC;AAC9D,GCtBMQ,IAAiB,CACrBC,GACAC,GACAC,GACAC,GACAC,GACAC,MACG;AACH,QAAMC,IAA2B,CAAA,GAC3BC,IAAaL,KAAQC,IAAO,MAAM;AAExC,SAAO,QAAQH,CAAK,EACjB,KAAK,CAACP,GAAGe,MAAMf,EAAE,CAAC,IAAIe,EAAE,CAAC,CAAC,EAC1B,QAAQ,CAACC,MAAS;AACjB,IAAAH,EAAU,KAAKG,EAAK,CAAC,CAAC;AAAA,EACxB,CAAC;AAEH,QAAMC,IAAoBJ,EAAU;AAAA,IAChCL,EAAa,QAAQ;AAAA,EAAA,GAEvBU,IAAWX,GACXY,IAA2BD,EAASL,EAAUI,CAAiB,CAAC;AAElE,SAAIE,IAAmBL,KAAcH,IACnCO,EAASL,EAAUI,CAAiB,CAAC,IAAIN,IAClCQ,IAAmBL,KAAcF,IACxCM,EAASL,EAAUI,CAAiB,CAAC,IAAIL,IAEzCM,EAASL,EAAUI,CAAiB,CAAC,IACnCC,EAASL,EAAUI,CAAiB,CAAC,IAAIH,GAEtC;AAAA,IACL,OAAOI;AAAA,EAAA;AAEX,GClCME,IAAgB,CACpBb,GACAC,GACAC,GACAC,GACAC,GACAC,MACG;AACH,QAAMC,IAA2B,CAAA,GAC3BC,IAAaL,KAAQC,IAAO,MAAM;AAExC,SAAO,QAAQH,CAAK,EACjB,KAAK,CAACP,GAAGe,MAAMf,EAAE,CAAC,IAAIe,EAAE,CAAC,CAAC,EAC1B,QAAQ,CAACC,MAAS;AACjB,IAAAH,EAAU,KAAKG,EAAK,CAAC,CAAC;AAAA,EACxB,CAAC;AAEH,QAAMC,IAAoBJ,EAAU;AAAA,IAChCL,EAAa,QAAQ;AAAA,EAAA,GAEvBU,IAAWX,GACXY,IAA2BD,EAASL,EAAUI,CAAiB,CAAC;AAElE,SAAIE,IAAmBL,KAAcH,IACnCO,EAASL,EAAUI,CAAiB,CAAC,IAAIN,IAClCQ,IAAmBL,KAAcF,IACxCM,EAASL,EAAUI,CAAiB,CAAC,IAAIL,IAEzCM,EAASL,EAAUI,CAAiB,CAAC,IACnCC,EAASL,EAAUI,CAAiB,CAAC,IAAIH,GAEtC;AAAA,IACL,OAAOI;AAAA,EAAA;AAEX,GClCMG,IAAiB,CAACC,MAAwB;AAC9C,QAAMC,IAAS,KAAK,MAAM,KAAK,IAAID,CAAG,CAAC,EAAE,SAAA,EAAW;AACpD,SAAO,KAAK,IAAI,IAAIC,IAAS,CAAC;AAChC,GAEMC,IAAa,CACjBjB,GACAC,MACG;AACH,QAAMiB,IAAU,OAAO,QAAQlB,CAAK,EACjC,IAAI,CAAC,CAACmB,GAAKC,CAAK,OAAO;AAAA,IACtB,OAAO,WAAWD,CAAG;AAAA,IACrB,OAAAC;AAAA,EAAA,EACA,EACD,OAAO,CAACC,MAAUA,EAAM,QAAQ,CAAC,GAE9BC,IAAW,KAAK,IAAI,GAAGJ,EAAQ,IAAI,CAACK,MAAMA,EAAE,KAAK,CAAC,GAClDC,IAAcV,EAAeQ,CAAQ,GAErCG,IAAkBP,EAAQ;AAAA,IAC9B,CAACG,MAAUA,EAAM,UAAU,WAAWpB,EAAa,QAAQ,EAAY;AAAA,EAAA,GAGnEU,IAAWc,EAAgB;AAAA,IAC/B,CAACC,GAAKC,GAAGC,MAAQ;AACf,YAAMC,IAAW,KAAK,IAAI,GAAGD,IAAM,CAAC,IAAIJ;AACxC,aAAAE,EAAIG,CAAQ,IAAIJ,EAAgBG,CAAG,EAAE,OAC9BF;AAAA,IACT;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,SAAO;AAAA,IACL,OAAOf;AAAA,IACP,OAAO,OAAO,KAAKA,CAAQ,EAAE,IAAI,CAACmB,MAAM,WAAWA,CAAC,CAAC;AAAA,IACrD,KAAK,KAAK,IAAI,GAAG,OAAO,OAAOnB,CAAQ,CAAC;AAAA,IACxC,KAAK,KAAK,IAAI,GAAG,OAAO,OAAOA,CAAQ,CAAC;AAAA,EAAA;AAE5C,GCpCMG,IAAiB,CAACC,MAAwB;AAC9C,QAAMC,IAAS,KAAK,MAAM,KAAK,IAAID,CAAG,CAAC,EAAE,SAAA,EAAW;AACpD,SAAO,KAAK,IAAI,IAAIC,IAAS,CAAC;AAChC,GAEMe,IAAU,CACdR,GACAvB,GACAgC,GACAC,MACG;AACH,QAAMf,IAAU,OAAO,QAAQlB,CAAK,EACjC,IAAI,CAAC,CAACmB,GAAKC,CAAK,OAAO;AAAA,IACtB,OAAO,KAAK,IAAI,GAAG,WAAWD,CAAG,CAAC;AAAA,IAClC,OAAAC;AAAA,EAAA,EACA,EACD,OAAO,CAACC,MAAUA,EAAM,QAAQ,CAAC,GAE9BG,IAAcV,EAAe,KAAK,IAAI,GAAGI,EAAQ,IAAI,CAACK,MAAMA,EAAE,KAAK,CAAC,CAAC,GACrEW,IAAehB,EAAQ,CAAC,EAAE,QAAQA,EAAQA,EAAQ,SAAS,CAAC,EAAE,OAE9DiB,IAASZ,EAAE,QACXa,IAAS;AAAA,IACbC,EAAMd,EAAE,QAAQ,GAAGY,EAAO,aAAaH,GAAUC,CAAQ,EAAE,QAAQ,CAAC;AAAA,EAAA;AAGtE,EAAAf,EAAQ,KAAK;AAAA,IACX,OAAO,KAAK,IAAI,GAAGA,EAAQ,IAAI,CAACK,MAAMA,EAAE,KAAK,CAAC,IAAIC;AAAA,IAClD,OAAOY;AAAA,EAAA,CACR,GAEDlB,EAAQ,KAAK,CAACzB,GAAGe,MAAO0B,IAAe1B,EAAE,QAAQf,EAAE,QAAQA,EAAE,QAAQe,EAAE,KAAM;AAE7E,QAAMG,IAAWO,EAAQ;AAAA,IACvB,CAACQ,GAAKL,GAAOO,OACXF,GAAKE,IAAM,KAAKJ,CAAW,IAAIH,EAAM,OAC9BK;AAAA,IAET,CAAA;AAAA,EAAC;AAGH,SAAO;AAAA,IACL,OAAOf;AAAA,IACP,OAAO,OAAO,KAAKA,CAAQ,EAAE,IAAI,CAACmB,MAAM,WAAWA,CAAC,CAAC;AAAA,IACrD,KAAK,KAAK,IAAI,GAAG,OAAO,OAAOnB,CAAQ,CAAC;AAAA,IACxC,KAAK,KAAK,IAAI,GAAG,OAAO,OAAOA,CAAQ,CAAC;AAAA,EAAA;AAE5C;AC2DA,MAAqB2B,UAAeC,EAAM,UAAqC;AAAA,EAC7E,OAAO,eAAe;AAAA,IACpB,OAAO,CAAA;AAAA,IACP,OAAO;AAAA,MACL,MAAM,CAAA;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,IAEP,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,IAEP,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAGT,YAAYC,GAAoB;AAC9B,UAAMA,CAAK,GACX,KAAK,QAAQ;AAAA,MACX,kBAAkB,MAAMA,EAAM,MAAM,KAAK,MAAM,EAAE,KAAK,EAAK;AAAA,MAC3D,cAAc;AAAA,IAAA;AAAA,EAElB;AAAA;AAAA,EAGA,eAAe,CACbC,GACAlB,MAGG;AACH,UAAM,EAAE,OAAAvB,GAAO,UAAA0C,GAAU,OAAAC,EAAA,IAAU,KAAK,OAClCC,IAAOD,EAAM,QAAQ,KAErBhC,IAAWX,KAAS,CAAA,GACpBmC,IAASZ,EAAE;AAEjB,QAAIY,EAAO,UAAU,IAAI;AACvB,UAAIf,IAAQ,WAAWe,EAAO,KAAK;AAEnC,MAAAf,IAAQ,KAAK,MAAMA,IAAQwB,CAAI,IAAIA,GAE/BxB,IAAQ,WAAWe,EAAO,GAAG,IAAGf,IAAQ,WAAWe,EAAO,GAAG,IACxDf,IAAQ,WAAWe,EAAO,GAAG,MAAGf,IAAQ,WAAWe,EAAO,GAAG;AAEtE,YAAMU,IAAYD,EAAK,WAAW,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU;AAC3D,MAAAjC,EAAS8B,CAAM,IAAI,WAAWrB,EAAM,QAAQyB,CAAS,CAAC,GAEtDH,EAAS,SAAS;AAAA,QAChB,OAAO/B;AAAA,MAAA,CACR;AAAA,IACH;AAAA,EACF;AAAA;AAAA,EAGA,SAAS,CAAC,MAAqC;AAC7C,MAAE,gBAAA;AACF,UAAMF,IAAO,EAAE,eACbkC,IAAQlC,EAAK,eACbqC,IACE,EAAE,UACD,EAAE,cAA8B,sBAAA,EAAwB,OACxD,EAAE,cAA8B,sBAAA,EAAwB,QAAQ,GACnEC,IAAaJ,EAAM,aACnBK,IAASL,EAAM,eACfM,IAAQ,MAAM,KAAKN,EAAM,QAAyC;AAEpE,SAAK,SAAS;AAAA,MACZ,cAAclC,EAAK,QAAQ,MAAM;AAAA,IAAA,CAClC;AAED,UAAMyC,IAAS,CAACC,MAAuB;AACrC,YAAM,EAAE,OAAAR,GAAO,UAAAD,EAAA,IAAa,KAAK,OAC3B1C,IAAgC,CAAA;AAEtC,MAAAiD,EAAM;AAAA,QACJ,CAACxC,MACET,EAAMS,EAAK,QAAQ,EAAY,IAAI;AAAA,UAClC4B;AAAAA,YACE,WAAW5B,EAAK,MAAM,KAAK,QAAQ,KAAK,EAAE,CAAC;AAAA,YAC3C;AAAA,YACA;AAAA,YACAkC,EAAM;AAAA,YACNA,EAAM;AAAA,UAAA,EACN,QAAQ,CAAC;AAAA,QAAA;AAAA,MACb,GAEJD,EAASS,GAAO;AAAA,QACd,OAAAnD;AAAA,MAAA,CACD;AAAA,IACH;AAEA,IAAAS,EAAK,MAAM,SAAS,KAEpB,SAAS,cAAc,CAACc,MACtB,KAAK;AAAA,MACHA;AAAAA,MACAyB;AAAA,MACAL;AAAA,MACAM;AAAA,MACAxC;AAAA,MACAqC;AAAA,MACAC;AAAA,MACA,CAACI,MAAuBD,EAAOC,CAAK;AAAA,IAAA,GAGxC,SAAS,YAAY,MACnB,KAAK,UAAUF,GAAOxC,GAAM,CAAC0C,MAAuBD,EAAOC,CAAK,CAAC;AAAA,EACrE;AAAA,EAEA,UAAU,CACR,GACAH,GACAL,GACAM,GACAxC,GACAqC,GACAC,GACAG,MACG;AACH,UAAM,EAAE,KAAAE,GAAK,KAAAC,GAAK,MAAAT,IAAO,QAAQ,KAAK,MAAM,OACtCU,IAAwB;AAAA,MAC5B,OAAO,iBAAiBN,GAAQ,IAAI,EAAE,iBAAiB,cAAc;AAAA,IAAA;AAEvE,QAAIZ,IAAS,EAAE,UAAUY,EAAO,aAAaM,IAAgBR;AAM7D,QAJIV,KAAU,IAAGA,IAAS,IACjBA,KAAUW,MAAYX,IAASW,IAGpCtC,MAASkC,EAAM,cAAc,EAAE;AACjC,aAAO,KAAK;AAAA,QACV;AAAA,QACA,WAAWN,EAAMD,GAAQ,GAAGW,GAAYK,GAAKC,CAAG,EAAE,QAAQ,CAAC,CAAC;AAAA,QAC5DJ;AAAA,MAAA;AACF,QACOxC,MAASkC,EAAM,aAAa,EAAE;AACrC,aAAO,KAAK;AAAA,QACV;AAAA,QACA,WAAWN,EAAMD,GAAQ,GAAGW,GAAYK,GAAKC,CAAG,EAAE,QAAQ,CAAC,CAAC;AAAA,QAC5DJ;AAAA,MAAA;AAIJ,QAAI,EAAE,WAAW,EAAE;AACjB,UACEb,IACE3B,EAAK,aAAckC,EAAM,WAA2B,cACtDP,IACEW,IACGJ,EAAM,UAA0B,aACjClC,EAAK;AAET,QAAA2B,IAAS3B,EAAK;AAAA;AAEd,eAAO,KAAK;AAAA,UACV,WAAW4B,EAAMD,GAAQ,GAAGW,GAAYK,GAAKC,CAAG,EAAE,QAAQ,CAAC,CAAC;AAAA,UAC5D5C;AAAA,UACAwC;AAAA,QAAA;AAGN,IAAI,EAAE,YAAY,MAAS,EAAE,YAAY,MAAS,EAAE,aAAa,MAC/D,KAAK,SAAS;AAAA,MACZ,kBAAkB,MAAMA,EAAM,MAAM,EAAE,KAAK,EAAK;AAAA,IAAA,CACjD;AAEH,UAAMM,IAAWlB,EAAMD,GAAQ,GAAGW,GAAYK,GAAKC,CAAG,GAChDG,IAAe,KAAK,MAAMD,IAAWX,CAAI,IAAIA,GAC7CC,IAAYD,EAAK,WAAW,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU,GAErDa,IAAcpB,EAAMmB,GAAcJ,GAAKC,GAAK,GAAG,GAAG;AACxD,IAAA5C,EAAK,MAAM,OAAOgD,EAAY,QAAQZ,CAAS,IAAI,KAEnD,sBAAsB,MAAM;AAC1B,MAAApC,EAAK,MAAA;AAAA,IACP,CAAC,GAEDyC,EAAO,UAAU,GACjB,SAAS,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA,EAEA,YAAY,CACVD,GACAxC,GACAyC,MACG;AACH,aAAS,cAAc,MACvB,SAAS,YAAY,MACrBzC,EAAK,YAAY,MACjBA,EAAK,MAAM,SAAS,KAEpB,KAAK,SAAS;AAAA,MACZ,cAAc;AAAA,IAAA,CACf,GAED,sBAAsB,MAAM;AAC1B,MAAAA,EAAK,MAAA;AAAA,IACP,CAAC,GAED,KAAK,SAAS;AAAA,MACZ,kBAAkB,MAAMwC,EAAM,MAAM,EAAE,KAAK,EAAK;AAAA,IAAA,CACjD,GAEDC,EAAO,UAAU,GACjB,SAAS,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA,EAEA,QAAQ,CAAC,MAAwC;AAC/C,UAAM,EAAE,OAAAlD,GAAO,UAAA0C,EAAA,IAAa,KAAK,OAC3B,EAAE,KAAAU,GAAK,KAAAC,EAAA,IAAQ,KAAK,MAAM,OAE1BK,IAAU3B,EAAQ,EAAE,aAAa/B,GAAOoD,GAAKC,CAAG;AACtD,IAAAX,EAAS,WAAWgB,GAAS,UAAU;AAAA,EACzC;AAAA,EAEA,WAAW,CAACC,MAAsB;AAChC,UAAM,EAAE,OAAA3D,GAAO,UAAA0C,EAAA,IAAa,KAAK,OAE3BgB,IAAUzC,EAAWjB,GAAO2D,CAAI;AACtC,IAAAjB,EAAS,WAAWgB,GAAS,aAAa;AAAA,EAC5C;AAAA,EAEA,eAAe,CAACC,GAAmBC,GAAiBC,MAAoB;AACtE,UAAM,EAAE,OAAA7D,GAAO,UAAA0C,EAAA,IAAa,KAAK,OAC3B,EAAE,KAAAU,GAAK,KAAAC,EAAA,IAAQ,KAAK,MAAM,OAE1BK,IAAU3D,EAAeC,GAAO2D,GAAMC,GAAQC,GAAQT,GAAKC,CAAG;AAEpE,IAAAX,EAAS,WAAWgB,CAAO,GAE3B,sBAAsB,MAAM;AAC1B,YAAMI,IAAcH,EAAK,QAAQ,yBAAyB;AAC1D,UAAIG,GAAa;AACf,cAAMC,IAAcD,EAAY;AAAA,UAC9B,aAAaH,EAAK,QAAQ,EAAE;AAAA,QAAA;AAE9B,QAAII,aAAuB,eAAaA,EAAY,MAAA;AAAA,MACtD;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,cAAc,CAACJ,GAAmBC,GAAiBC,MAAoB;AACrE,UAAM,EAAE,OAAA7D,GAAO,UAAA0C,EAAA,IAAa,KAAK,OAC3B,EAAE,KAAAU,GAAK,KAAAC,EAAA,IAAQ,KAAK,MAAM,OAE1BK,IAAU7C,EAAcb,GAAO2D,GAAMC,GAAQC,GAAQT,GAAKC,CAAG;AAEnE,IAAAX,EAAS,WAAWgB,CAAO,GAE3B,sBAAsB,MAAM;AAC1B,YAAMI,IAAcH,EAAK,QAAQ,yBAAyB;AAC1D,UAAIG,GAAa;AACf,cAAMC,IAAcD,EAAY;AAAA,UAC9B,aAAaH,EAAK,QAAQ,EAAE;AAAA,QAAA;AAE9B,QAAII,aAAuB,eAAaA,EAAY,MAAA;AAAA,MACtD;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,CAChBC,GACA5C,GACA6B,MACG;AACH,UAAM,EAAE,OAAAjD,GAAO,oBAAAiE,GAAoB,UAAAvB,GAAU,OAAAC,EAAA,IAAU,KAAK,OACtD,EAAE,KAAAS,GAAK,KAAAC,GAAK,MAAAT,IAAO,QAAQD,GAE3Ba,IAAe,KAAK,MAAMpC,IAAQwB,CAAI,IAAIA,GAC1CC,IAAYD,EAAK,WAAW,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU;AAE3D,IAAIoB,MAAS,QACXtB,EAAS,YAAY;AAAA,MACnB,OAAOwB;AAAAA,QACL,OAAO,QAAQlE,CAAK,EACjB,KAAK,CAACP,GAAGe,MAAMA,EAAE,CAAC,IAAIf,EAAE,CAAC,CAAC,EAC1B,IAAI,CAAC4B,MAAU,WAAWA,EAAM,CAAC,CAAC,CAAC;AAAA,QACtC,WAAWmC,EAAa,QAAQX,CAAS,CAAC;AAAA,QAC1C,KAAK,IAAI,GAAG,OAAO,OAAO7C,CAAK,CAAC,KAAKqD;AAAA,QACrCY;AAAA,MAAA;AAAA,IACF,CACD,IACMD,MAAS,SAChBtB,EAAS,YAAY;AAAA,MACnB,OAAOwB;AAAAA,QACL,OAAO,QAAQlE,CAAK,EACjB,KAAK,CAACP,GAAGe,MAAMA,EAAE,CAAC,IAAIf,EAAE,CAAC,CAAC,EAC1B,IAAI,CAAC4B,MAAU,WAAWA,EAAM,CAAC,CAAC,CAAC;AAAA,QACtC,KAAK,IAAI,GAAG,OAAO,OAAOrB,CAAK,CAAC,KAAKoD;AAAA,QACrC,WAAWI,EAAa,QAAQX,CAAS,CAAC;AAAA,QAC1CoB;AAAA,MAAA;AAAA,IACF,CACD,GAEH,KAAK,SAAS;AAAA,MACZ,kBAAkB,MAAMhB,EAAM,MAAM,EAAE,KAAK,EAAI;AAAA,IAAA,CAChD,GAED,SAAS,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA,EAEA,YAAY,CAAC7B,GAAe+C,GAAkBlB,MAA8B;AAC1E,UAAM,EAAE,OAAAjD,GAAO,UAAA0C,GAAU,OAAAC,EAAA,IAAU,KAAK,OAClC,EAAE,MAAAC,IAAO,IAAA,IAAQD,GACjBhC,IAAmCX,GAEnCwD,IAAe,KAAK,MAAMpC,IAAQwB,CAAI,IAAIA,GAC1CC,IAAYD,EAAK,WAAW,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU;AAE3D,IAAAK,EACG,OAAO,CAACxC,MAASA,MAAS0D,CAAG,EAC7B,QAAQ,CAAC1D,MAAS;AACjB,YAAM2D,IACJzD,EAASF,EAAK,QAAQ,EAAY,IAClCE,EAASwD,EAAI,QAAQ,EAAY,IACjCX,GAEIa,IAAe,KAAK,MAAMD,IAAQxB,CAAI,IAAIA;AAChD,MAAAjC,EAASF,EAAK,QAAQ,EAAY,IAAI;AAAA,QACpC4D,EAAa,QAAQxB,CAAS;AAAA,MAAA;AAAA,IAElC,CAAC,GAEHlC,EAASwD,EAAI,QAAQ,EAAY,IAAI;AAAA,MACnCX,EAAa,QAAQX,CAAS;AAAA,IAAA,GAGhC,KAAK,SAAS;AAAA,MACZ,kBAAkB,KAAK,MAAM,iBAAiB,KAAK,EAAI;AAAA,IAAA,CACxD,GAEDH,EAAS,YAAY;AAAA,MACnB,OAAO/B;AAAA,IAAA,CACR,GACD,SAAS,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA;AAAA,EAGA,SAAS,MAAM;AACb,UAAM,EAAE,SAAA2D,GAAS,WAAAC,GAAW,OAAAC,EAAA,IAAU,KAAK;AAE3C,QAAIF,KAAWC,KAAaC;AAC1B,aACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,QAAAH,MAAY,UACX,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,UAAS;AAAA,YACT,MAAML,EAAQ;AAAA,YACd,KAAKA,EAAQ;AAAA,YACb,MAAMA,EAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,SAGhBC,KAAaC,MACb,gBAAAE;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,QAAM;AAAA,YACN,QAAQL,IAAY,KAAK,MAAM,YAAY;AAAA,YAE1C,cAAQ,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACnB,GAEJ;AAAA,EAEN;AAAA,EAEA,OAAO,MAAM;AACX,UAAM,EAAE,OAAAvE,GAAO,OAAA2C,GAAO,QAAAkC,GAAQ,MAAAC,GAAM,WAAAP,EAAA,IAAc,KAAK,OACjD,EAAE,kBAAAQ,MAAqB,KAAK;AAElC,WACE,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWM,EAAa;AAAA,UACtB;AAAA,UACAT,KAAa;AAAA,QAAA,CACd;AAAA,QACD,OAAO;AAAA,UACL,YAAY,0BAA0BM,EAAO,GAAG,KAAKA,EAAO,GAAG;AAAA,QAAA;AAAA,QAEjE,MAAK;AAAA,QAEJ,iBAAO,QAAQ7E,CAAK,EAClB,KAAK,CAAC,GAAGQ,MAAM,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC,EAC1B,IAAI,CAACyE,GAAMC,GAAOC,MACjB,gBAAAT;AAAA,UAACU;AAAA,UAAA;AAAA,YAEC,IAAIH,EAAK,CAAC;AAAA,YACV,SAASA,EAAK,CAAC;AAAA,YACf,OAAOA,EAAK,CAAC;AAAA,YACb,QAAQ5C,EAAM4C,EAAK,CAAC,GAAGtC,EAAM,KAAKA,EAAM,KAAK,GAAG,GAAG;AAAA,YACnD,KAAKA,EAAM,IAAI,SAAA;AAAA,YACf,KAAKA,EAAM,IAAI,SAAA;AAAA,YACf,QACEuC,MAAU,KAAKA,MAAUC,EAAS,SAAS,IACvC;AAAA,cACE,OAAOL,EAAK;AAAA,cACZ,MAAM;AAAA,YAAA,IAER;AAAA,YAEN,YAAU;AAAA,YACV,aAAaC,EAAiBG,CAAK;AAAA,YACnC,WAAAX;AAAA,YACA,OAAO;AAAA,cACL,eACG,KAAK,MAAM,gBACV,KAAK,MAAM,iBAAiBU,EAAK,CAAC,KACpCV,IACI,SACA;AAAA,YAAA;AAAA,YAER,cAAc,CAAChD,MAA6C;AAC1D,mBAAK,aAAaA,EAAE,QAAuBA,EAAE,SAASA,EAAE,OAAO;AAAA,YACjE;AAAA,YACA,aAAa,CAACA,MAA6C;AACzD,mBAAK,YAAYA,EAAE,QAAuBA,EAAE,SAASA,EAAE,OAAO;AAAA,YAChE;AAAA,YACA,aAAa,CAACA,MAAqC;AACjD,mBAAK,OAAOA,CAAC,GACXA,EAAE,OAAuB,MAAA;AAAA,YAC7B;AAAA,YACA,kBAAkB,CAACkB,GAAQlB,MAAM,KAAK,aAAakB,GAAQlB,CAAC;AAAA,YAC5D,iBAAe0D,EAAK,CAAC;AAAA,UAAA;AAAA,UArChBA,EAAK,CAAC;AAAA,QAAA,CAuCd;AAAA,MAAA;AAAA,IAAA;AAAA,EAGT;AAAA,EAEA,YAAY,MAAM;AAChB,UAAM,EAAE,OAAAjF,GAAO,OAAAiD,GAAO,OAAAN,GAAO,QAAAkC,GAAQ,MAAAC,GAAM,WAAAP,MAAc,KAAK,OACxD,EAAE,kBAAAQ,MAAqB,KAAK;AAElC,WACE,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWM,EAAa;AAAA,UACtB;AAAA,UACA/B,EAAM,KAAK,UAAUA,EAAM,OAAO,UAChC,CAACsB,KACD;AAAA,UACFtB,EAAM,KAAK,YAAYA,EAAM,OAAO,UAClC;AAAA,UACFsB,KAAa;AAAA,QAAA,CACd;AAAA,QACD,OAAO;AAAA,UACL,YAAY,0BAA0BM,EAAO,GAAG,KAAKA,EAAO,GAAG;AAAA,QAAA;AAAA,QAEjE,aAAa,CAACtD,MACZ0B,EAAM,KAAK,UAAUA,EAAM,OAAO,UAAa,KAAK,MAAM1B,CAAC;AAAA,QAG5D,iBAAO,QAAQvB,CAAK,EAClB,KAAK,CAACP,GAAGe,MAAMf,EAAE,CAAC,IAAIe,EAAE,CAAC,CAAC,EAC1B,IAAI,CAACyE,GAAMC,GAAOC,MACjB,gBAAAT;AAAA,UAACU;AAAA,UAAA;AAAA,YAEC,IAAIH,EAAK,CAAC;AAAA,YACV,SAASA,EAAK,CAAC;AAAA,YACf,OAAOA,EAAK,CAAC;AAAA,YACb,QAAQ5C,EAAM4C,EAAK,CAAC,GAAGtC,EAAM,KAAKA,EAAM,KAAK,GAAG,GAAG;AAAA,YACnD,KAAKA,EAAM,IAAI,SAAA;AAAA,YACf,KAAKA,EAAM,IAAI,SAAA;AAAA,YACf,QACEuC,MAAU,KAAKA,MAAUC,EAAS,SAAS,IACvC;AAAA,cACE,OAAOL,EAAK;AAAA,cACZ,MAAM;AAAA,YAAA,IAER;AAAA,YAEN,YAAU;AAAA,YACV,aAAaC,EAAiBG,CAAK;AAAA,YACnC,WAAAX;AAAA,YACA,OAAO;AAAA,cACL,eACG,KAAK,MAAM,gBACV,KAAK,MAAM,iBAAiBU,EAAK,CAAC,KACpCV,IACI,SACA;AAAA,YAAA;AAAA,YAER,cAAc,CAAChD,MAA6C;AAC1D,mBAAK,aAAaA,EAAE,QAAuBA,EAAE,SAASA,EAAE,OAAO;AAAA,YACjE;AAAA,YACA,aAAa,CAACA,MAA6C;AACzD,mBAAK,YAAYA,EAAE,QAAuBA,EAAE,SAASA,EAAE,OAAO;AAAA,YAChE;AAAA,YACA,UAAU,CAACA,MAA6C;AACtD,cAAI0B,EAAM,KAAK,UAAUA,EAAM,OAAO,UACpC,KAAK,SAAS1B,EAAE,MAAqB;AAAA,YACzC;AAAA,YACA,aAAa,CAACA,MAAqC;AACjD,mBAAK,OAAOA,CAAC,GACXA,EAAE,OAAuB,MAAA;AAAA,YAC7B;AAAA,YACA,kBAAkB,CAACkB,GAAQlB,MAAM,KAAK,aAAakB,GAAQlB,CAAC;AAAA,YAC5D,iBAAe0D,EAAK,CAAC;AAAA,UAAA;AAAA,UAzChBA,EAAK,CAAC;AAAA,QAAA,CA2Cd;AAAA,MAAA;AAAA,IAAA;AAAA,EAGT;AAAA;AAAA,EAGA,SAAS;AACP,UAAM,EAAE,MAAAjB,MAAS,KAAK;AAEtB,WACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,mBACZ,UAAA;AAAA,MAAAT,MAAS,UAAU,gBAAAU,EAAC,KAAK,MAAL,CAAA,CAAU;AAAA,MAC9BV,MAAS,gBAAgB,gBAAAU,EAAC,KAAK,WAAL,CAAA,CAAe;AAAA,MACzC,KAAK,OAAA;AAAA,IAAO,GACf;AAAA,EAEJ;AACF;","x_google_ignoreList":[0]}
@@ -0,0 +1,8 @@
1
+ declare const addStop: (e: MouseEvent, scale: Record<string, number>, rangeMin: number, rangeMax: number) => {
2
+ scale: Record<string, number>;
3
+ stops: number[];
4
+ min: number;
5
+ max: number;
6
+ };
7
+ export default addStop;
8
+ //# sourceMappingURL=addStop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStop.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/multiple-slider/actions/addStop.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,OAAO,MACR,UAAU,SACN,OAAO,MAAM,EAAE,MAAM,CAAC,YACnB,MAAM,YACN,MAAM;;;;;CAsCjB,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -0,0 +1,8 @@
1
+ declare const deleteStop: (scale: Record<string, number>, selectedKnob: HTMLElement) => {
2
+ scale: Record<string, number>;
3
+ stops: number[];
4
+ min: number;
5
+ max: number;
6
+ };
7
+ export default deleteStop;
8
+ //# sourceMappingURL=deleteStop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteStop.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/multiple-slider/actions/deleteStop.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,UAAU,UACP,OAAO,MAAM,EAAE,MAAM,CAAC,gBACf,WAAW;;;;;CA+B1B,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,5 @@
1
+ declare const shiftLeftStop: (scale: Record<string, number>, selectedKnob: HTMLElement, meta: boolean, ctrl: boolean, minRange: number, maxRange: number) => {
2
+ scale: Record<string, number>;
3
+ };
4
+ export default shiftLeftStop;
5
+ //# sourceMappingURL=shiftLeftStop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiftLeftStop.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/multiple-slider/actions/shiftLeftStop.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,UACV,OAAO,MAAM,EAAE,MAAM,CAAC,gBACf,WAAW,QACnB,OAAO,QACP,OAAO,YACH,MAAM,YACN,MAAM;;CA4BjB,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,5 @@
1
+ declare const shiftRightStop: (scale: Record<string, number>, selectedKnob: HTMLElement, meta: boolean, ctrl: boolean, minRange: number, maxRange: number) => {
2
+ scale: Record<string, number>;
3
+ };
4
+ export default shiftRightStop;
5
+ //# sourceMappingURL=shiftRightStop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiftRightStop.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/multiple-slider/actions/shiftRightStop.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,UACX,OAAO,MAAM,EAAE,MAAM,CAAC,gBACf,WAAW,QACnB,OAAO,QACP,OAAO,YACH,MAAM,YACN,MAAM;;CA4BjB,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface SelectProps {
4
+ /**
5
+ * Unique identifier for the select input
6
+ */
7
+ id: string;
8
+ /**
9
+ * Type of selection control
10
+ */
11
+ type: 'CHECK_BOX' | 'RADIO_BUTTON' | 'SWITCH_BUTTON';
12
+ /**
13
+ * Label text
14
+ */
15
+ label?: string;
16
+ /**
17
+ * Name attribute for form submission
18
+ */
19
+ name?: string;
20
+ /**
21
+ * Value attribute
22
+ */
23
+ value?: string;
24
+ /**
25
+ * Helper tooltip configuration
26
+ */
27
+ helper?: {
28
+ /** Tooltip content */
29
+ label: string | React.ReactNode;
30
+ /** Tooltip position */
31
+ pin?: 'TOP' | 'BOTTOM';
32
+ /** Tooltip display type */
33
+ type?: 'MULTI_LINE' | 'SINGLE_LINE';
34
+ };
35
+ /**
36
+ * Preview tooltip configuration with image
37
+ */
38
+ preview?: {
39
+ /** Preview image URL */
40
+ image: string;
41
+ /** Preview text */
42
+ text: string | React.ReactNode;
43
+ /** Preview position */
44
+ pin?: 'TOP' | 'BOTTOM';
45
+ };
46
+ /**
47
+ * Warning tooltip configuration
48
+ */
49
+ warning?: {
50
+ /** Warning message */
51
+ label: string | React.ReactNode;
52
+ /** Warning position */
53
+ pin?: 'TOP' | 'BOTTOM';
54
+ /** Warning display type */
55
+ type?: 'MULTI_LINE' | 'SINGLE_LINE';
56
+ };
57
+ /**
58
+ * Feature identifier for tracking
59
+ */
60
+ feature?: string;
61
+ /**
62
+ * Whether to reflow on small screens
63
+ * @default false
64
+ */
65
+ shouldReflow?: boolean;
66
+ /**
67
+ * Whether the control is checked
68
+ * @default false
69
+ */
70
+ isChecked?: boolean;
71
+ /**
72
+ * Whether the control is disabled
73
+ * @default false
74
+ */
75
+ isDisabled?: boolean;
76
+ /**
77
+ * Whether the control is blocked
78
+ * @default false
79
+ */
80
+ isBlocked?: boolean;
81
+ /**
82
+ * Whether to show a "New" badge
83
+ * @default false
84
+ */
85
+ isNew?: boolean;
86
+ /**
87
+ * Change event handler
88
+ */
89
+ action: React.ChangeEventHandler<HTMLInputElement>;
90
+ /**
91
+ * Handler called when unblock is clicked
92
+ */
93
+ onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler;
94
+ }
95
+ export interface SelectStates {
96
+ isTooltipVisible: boolean;
97
+ documentWidth: number;
98
+ }
99
+ export default class Select extends React.Component<SelectProps, SelectStates> {
100
+ private inputRef;
101
+ static defaultProps: Partial<SelectProps>;
102
+ constructor(props: SelectProps);
103
+ componentDidMount: () => void;
104
+ componentWillUnmount: () => void;
105
+ handleResize: () => void;
106
+ Status: (type: 'checkbox' | 'radio' | 'switch') => import("react/jsx-runtime").JSX.Element | undefined;
107
+ CheckBox: () => import("react/jsx-runtime").JSX.Element;
108
+ RadioButton: () => import("react/jsx-runtime").JSX.Element;
109
+ SwitchButton: () => import("react/jsx-runtime").JSX.Element;
110
+ render(): import("react/jsx-runtime").JSX.Element;
111
+ }
112
+ //# sourceMappingURL=Select.d.ts.map