@milaboratories/uikit 2.10.15 → 2.10.17

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 (755) hide show
  1. package/.oxfmtrc.json +4 -0
  2. package/.oxlintrc.json +3 -0
  3. package/.prettierrc +1 -1
  4. package/.turbo/turbo-build.log +191 -191
  5. package/.turbo/turbo-formatter$colon$check.log +12 -0
  6. package/.turbo/turbo-linter$colon$check.log +10 -0
  7. package/.turbo/{turbo-type-check.log → turbo-types$colon$check.log} +2 -2
  8. package/CHANGELOG.md +18 -0
  9. package/build.browser-lib.config.js +6 -6
  10. package/dist/base/BtnBase.vue.js.map +1 -1
  11. package/dist/colors/color.d.ts.map +1 -1
  12. package/dist/colors/color.js.map +1 -1
  13. package/dist/colors/gradient.d.ts.map +1 -1
  14. package/dist/colors/gradient.js.map +1 -1
  15. package/dist/colors/palette.js.map +1 -1
  16. package/dist/components/ContextProvider.vue.js.map +1 -1
  17. package/dist/components/DataTable/BaseCellComponent.vue.js.map +1 -1
  18. package/dist/components/DataTable/ColumnCaret.vue.js.map +1 -1
  19. package/dist/components/DataTable/ColumnsCommandMenu.vue.d.ts.map +1 -1
  20. package/dist/components/DataTable/ColumnsCommandMenu.vue.js.map +1 -1
  21. package/dist/components/DataTable/RowsCommandMenu.vue.d.ts.map +1 -1
  22. package/dist/components/DataTable/RowsCommandMenu.vue.js.map +1 -1
  23. package/dist/components/DataTable/TScroll.vue.d.ts.map +1 -1
  24. package/dist/components/DataTable/TScroll.vue.js +6 -1
  25. package/dist/components/DataTable/TScroll.vue.js.map +1 -1
  26. package/dist/components/DataTable/TableComponent.vue.d.ts.map +1 -1
  27. package/dist/components/DataTable/TableComponent.vue.js +1 -1
  28. package/dist/components/DataTable/TableComponent.vue.js.map +1 -1
  29. package/dist/components/DataTable/TdCell.vue.d.ts.map +1 -1
  30. package/dist/components/DataTable/TdCell.vue.js +3 -1
  31. package/dist/components/DataTable/TdCell.vue.js.map +1 -1
  32. package/dist/components/DataTable/ThCell.vue.d.ts.map +1 -1
  33. package/dist/components/DataTable/ThCell.vue.js.map +1 -1
  34. package/dist/components/DataTable/TrBody.vue.d.ts.map +1 -1
  35. package/dist/components/DataTable/TrBody.vue.js.map +1 -1
  36. package/dist/components/DataTable/adapters/AsyncData.d.ts +1 -1
  37. package/dist/components/DataTable/adapters/AsyncData.js.map +1 -1
  38. package/dist/components/DataTable/adapters/RawData.d.ts +1 -1
  39. package/dist/components/DataTable/adapters/RawData.js.map +1 -1
  40. package/dist/components/DataTable/assets/TableIcon.vue.d.ts.map +1 -1
  41. package/dist/components/DataTable/assets/TableIcon.vue.js.map +1 -1
  42. package/dist/components/DataTable/composition/useColumn.d.ts.map +1 -1
  43. package/dist/components/DataTable/composition/useColumn.js.map +1 -1
  44. package/dist/components/DataTable/composition/useMouseUp.js.map +1 -1
  45. package/dist/components/DataTable/composition/useResize.js.map +1 -1
  46. package/dist/components/DataTable/composition/useTableColumns.js.map +1 -1
  47. package/dist/components/DataTable/composition/useTableRows.js.map +1 -1
  48. package/dist/components/DataTable/domain.d.ts +1 -1
  49. package/dist/components/DataTable/domain.d.ts.map +1 -1
  50. package/dist/components/DataTable/domain.js.map +1 -1
  51. package/dist/components/DataTable/index.d.ts +1 -1
  52. package/dist/components/DataTable/index.d.ts.map +1 -1
  53. package/dist/components/DataTable/index.js +5 -1
  54. package/dist/components/DataTable/index.js.map +1 -1
  55. package/dist/components/DataTable/keys.js.map +1 -1
  56. package/dist/components/DataTable/state.d.ts.map +1 -1
  57. package/dist/components/DataTable/state.js +10 -4
  58. package/dist/components/DataTable/state.js.map +1 -1
  59. package/dist/components/DataTable/types.d.ts +3 -3
  60. package/dist/components/DropdownListItem.vue.d.ts +1 -1
  61. package/dist/components/DropdownListItem.vue.d.ts.map +1 -1
  62. package/dist/components/DropdownListItem.vue.js.map +1 -1
  63. package/dist/components/GridTable/domain.d.ts +1 -1
  64. package/dist/components/GridTable/domain.d.ts.map +1 -1
  65. package/dist/components/GridTable/types.d.ts +4 -4
  66. package/dist/components/GridTable/types.d.ts.map +1 -1
  67. package/dist/components/GridTable/useColumn.d.ts.map +1 -1
  68. package/dist/components/HScroll.vue.js.map +1 -1
  69. package/dist/components/InputRange.vue.d.ts.map +1 -1
  70. package/dist/components/InputRange.vue.js +3 -1
  71. package/dist/components/InputRange.vue.js.map +1 -1
  72. package/dist/components/LongText.vue.d.ts.map +1 -1
  73. package/dist/components/LongText.vue.js +9 -7
  74. package/dist/components/LongText.vue.js.map +1 -1
  75. package/dist/components/PlAccordion/ExpandTransition.vue.d.ts.map +1 -1
  76. package/dist/components/PlAccordion/ExpandTransition.vue.js +27 -0
  77. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
  78. package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -1
  79. package/dist/components/PlAccordion/ExpandTransition.vue3.js +2 -2
  80. package/dist/components/PlAccordion/PlAccordion.vue.js.map +1 -1
  81. package/dist/components/PlAccordion/PlAccordionSection.vue2.js +2 -2
  82. package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
  83. package/dist/components/PlAlert/PlAlert.vue.d.ts.map +1 -1
  84. package/dist/components/PlAlert/PlAlert.vue.js.map +1 -1
  85. package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts.map +1 -1
  86. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +40 -19
  87. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
  88. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts +2 -2
  89. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts.map +1 -1
  90. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +22 -12
  91. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
  92. package/dist/components/PlAutocompleteMulti/index.d.ts +1 -1
  93. package/dist/components/PlAutocompleteMulti/index.d.ts.map +1 -1
  94. package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
  95. package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
  96. package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
  97. package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
  98. package/dist/components/PlBtnLink/PlBtnLink.vue.d.ts.map +1 -1
  99. package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
  100. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
  101. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
  102. package/dist/components/PlBtnSplit/PlBtnSplit.vue.d.ts.map +1 -1
  103. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +6 -4
  104. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
  105. package/dist/components/PlChartHistogram/PlChartHistogram.vue.d.ts.map +1 -1
  106. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +8 -1
  107. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
  108. package/dist/components/PlChartHistogram/PlChartHistogram.vue3.js +4 -4
  109. package/dist/components/PlChartHistogram/createGridlines.d.ts.map +1 -1
  110. package/dist/components/PlChartHistogram/createGridlines.js +5 -1
  111. package/dist/components/PlChartHistogram/createGridlines.js.map +1 -1
  112. package/dist/components/PlChartHistogram/createLabels.d.ts.map +1 -1
  113. package/dist/components/PlChartHistogram/createLabels.js.map +1 -1
  114. package/dist/components/PlChartHistogram/createSvgContainer.js.map +1 -1
  115. package/dist/components/PlChartHistogram/drawBins.d.ts.map +1 -1
  116. package/dist/components/PlChartHistogram/drawBins.js.map +1 -1
  117. package/dist/components/PlChartHistogram/drawThreshold.js.map +1 -1
  118. package/dist/components/PlChartHistogram/histogram.d.ts.map +1 -1
  119. package/dist/components/PlChartHistogram/histogram.js +6 -2
  120. package/dist/components/PlChartHistogram/histogram.js.map +1 -1
  121. package/dist/components/PlChartHistogram/normalizeBins.js.map +1 -1
  122. package/dist/components/PlChartHistogram/types.d.ts +2 -2
  123. package/dist/components/PlChartHistogram/types.d.ts.map +1 -1
  124. package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
  125. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue.d.ts.map +1 -1
  126. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +6 -4
  127. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
  128. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
  129. package/dist/components/PlChartStackedBar/StackedRow.vue.d.ts.map +1 -1
  130. package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
  131. package/dist/components/PlChartStackedBar/StackedRowCompact.vue.d.ts.map +1 -1
  132. package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
  133. package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
  134. package/dist/components/PlCheckbox/PlCheckboxBase.vue.d.ts.map +1 -1
  135. package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
  136. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.d.ts.map +1 -1
  137. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +8 -2
  138. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
  139. package/dist/components/PlChip/PlChip.vue.d.ts.map +1 -1
  140. package/dist/components/PlChip/PlChip.vue.js.map +1 -1
  141. package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
  142. package/dist/components/PlConfirmDialog.vue.d.ts.map +1 -1
  143. package/dist/components/PlConfirmDialog.vue.js.map +1 -1
  144. package/dist/components/PlDialogModal/PlDialogModal.vue.d.ts.map +1 -1
  145. package/dist/components/PlDialogModal/PlDialogModal.vue.js +4 -1
  146. package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
  147. package/dist/components/PlDropdown/OptionList.vue.d.ts +1 -1
  148. package/dist/components/PlDropdown/OptionList.vue.d.ts.map +1 -1
  149. package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
  150. package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
  151. package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
  152. package/dist/components/PlDropdown/types.d.ts.map +1 -1
  153. package/dist/components/PlDropdown/useGroupBy.d.ts.map +1 -1
  154. package/dist/components/PlDropdown/useGroupBy.js.map +1 -1
  155. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.d.ts.map +1 -1
  156. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
  157. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
  158. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
  159. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +5 -3
  160. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
  161. package/dist/components/PlDropdownLine/ResizableInput.vue.d.ts.map +1 -1
  162. package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
  163. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts.map +1 -1
  164. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
  165. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
  166. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
  167. package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts.map +1 -1
  168. package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
  169. package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
  170. package/dist/components/PlElementList/PlElementList.vue2.js +9 -2
  171. package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
  172. package/dist/components/PlElementList/PlElementList.vue3.js +4 -4
  173. package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
  174. package/dist/components/PlElementList/PlElementListItem.vue2.js +25 -13
  175. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
  176. package/dist/components/PlElementList/PlElementListItem.vue3.js +20 -20
  177. package/dist/components/PlElementList/utils.d.ts.map +1 -1
  178. package/dist/components/PlElementList/utils.js +3 -1
  179. package/dist/components/PlElementList/utils.js.map +1 -1
  180. package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
  181. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.d.ts.map +1 -1
  182. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js +4 -1
  183. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
  184. package/dist/components/PlFileDialog/Local.vue.d.ts.map +1 -1
  185. package/dist/components/PlFileDialog/Local.vue.js +6 -2
  186. package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
  187. package/dist/components/PlFileDialog/PlFileDialog.vue.d.ts.map +1 -1
  188. package/dist/components/PlFileDialog/PlFileDialog.vue.js +3 -1
  189. package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
  190. package/dist/components/PlFileDialog/Remote.vue.d.ts.map +1 -1
  191. package/dist/components/PlFileDialog/Remote.vue.js +6 -2
  192. package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
  193. package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
  194. package/dist/components/PlFileDialog/Shortcuts.vue3.js +4 -4
  195. package/dist/components/PlFileDialog/pl-file-dialog.module.scss.js +21 -21
  196. package/dist/components/PlFileDialog/remote.js.map +1 -1
  197. package/dist/components/PlFileDialog/utils.js.map +1 -1
  198. package/dist/components/PlFileInput/PlFileInput.vue.d.ts.map +1 -1
  199. package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  200. package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
  201. package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
  202. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts +1 -1
  203. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts.map +1 -1
  204. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +5 -1
  205. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
  206. package/dist/components/PlLoaderLogo.vue.d.ts.map +1 -1
  207. package/dist/components/PlLoaderLogo.vue2.js +8 -8
  208. package/dist/components/PlLoaderLogo.vue2.js.map +1 -1
  209. package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
  210. package/dist/components/PlLogView/PlLogView.vue.js +11 -7
  211. package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  212. package/dist/components/PlLogView/useLogHandle.d.ts.map +1 -1
  213. package/dist/components/PlLogView/useLogHandle.js +16 -3
  214. package/dist/components/PlLogView/useLogHandle.js.map +1 -1
  215. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts +1 -1
  216. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts.map +1 -1
  217. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
  218. package/dist/components/PlNumberField/PlNumberField.vue.d.ts.map +1 -1
  219. package/dist/components/PlNumberField/PlNumberField.vue.js +4 -6
  220. package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
  221. package/dist/components/PlNumberField/parseNumber.d.ts.map +1 -1
  222. package/dist/components/PlNumberField/parseNumber.js.map +1 -1
  223. package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
  224. package/dist/components/PlProgressCell/PlProgressCell.vue.d.ts.map +1 -1
  225. package/dist/components/PlProgressCell/PlProgressCell.vue.js +11 -2
  226. package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
  227. package/dist/components/PlProgressCell/types.d.ts +1 -1
  228. package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
  229. package/dist/components/PlRadio/PlRadio.vue3.js +3 -3
  230. package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
  231. package/dist/components/PlRadio/PlRadioGroup.vue3.js +6 -6
  232. package/dist/components/PlRadio/keys.js.map +1 -1
  233. package/dist/components/PlSearchField/PlSearchField.vue.d.ts.map +1 -1
  234. package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
  235. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
  236. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue3.js +1 -1
  237. package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
  238. package/dist/components/PlSidebar/PlSidebarGroup.vue3.js +6 -6
  239. package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts +6 -6
  240. package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts.map +1 -1
  241. package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
  242. package/dist/components/PlSidebar/PlSidebarItem.vue3.js +8 -8
  243. package/dist/components/PlSlideModal/PlPureSlideModal.vue.d.ts.map +1 -1
  244. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  245. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
  246. package/dist/components/PlSlideModal/PlSlideModal.vue.d.ts.map +1 -1
  247. package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
  248. package/dist/components/PlSlideModal/props.d.ts +8 -8
  249. package/dist/components/PlSlideModal/props.d.ts.map +1 -1
  250. package/dist/components/PlSlideModal/props.js.map +1 -1
  251. package/dist/components/PlSplash/PlSplash.vue.d.ts +1 -1
  252. package/dist/components/PlSplash/PlSplash.vue.d.ts.map +1 -1
  253. package/dist/components/PlSplash/PlSplash.vue.js +4 -1
  254. package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
  255. package/dist/components/PlStatusTag/PlStatusTag.vue.d.ts.map +1 -1
  256. package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
  257. package/dist/components/PlStatusTag/types.d.ts +1 -1
  258. package/dist/components/PlSvg/PlSvg.vue.d.ts.map +1 -1
  259. package/dist/components/PlSvg/PlSvg.vue2.js +7 -2
  260. package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
  261. package/dist/components/PlSvg/registry.d.ts.map +1 -1
  262. package/dist/components/PlSvg/registry.js.map +1 -1
  263. package/dist/components/PlTabs/PlTabs.vue.d.ts.map +1 -1
  264. package/dist/components/PlTabs/PlTabs.vue.js +4 -1
  265. package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
  266. package/dist/components/PlTabs/Tab.vue.js.map +1 -1
  267. package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
  268. package/dist/components/PlTextField/PlTextField.vue.d.ts.map +1 -1
  269. package/dist/components/PlTextField/PlTextField.vue.js +3 -1
  270. package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
  271. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
  272. package/dist/components/PlTooltip/Beak.vue.d.ts.map +1 -1
  273. package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
  274. package/dist/components/PlTooltip/PlTooltip.vue.d.ts.map +1 -1
  275. package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
  276. package/dist/components/PlTooltip/useTooltipPosition.d.ts +1 -1
  277. package/dist/components/PlTooltip/useTooltipPosition.js.map +1 -1
  278. package/dist/components/Scrollable.vue.d.ts.map +1 -1
  279. package/dist/components/Scrollable.vue.js +10 -1
  280. package/dist/components/Scrollable.vue.js.map +1 -1
  281. package/dist/components/Slider.vue.d.ts.map +1 -1
  282. package/dist/components/Slider.vue.js +3 -1
  283. package/dist/components/Slider.vue.js.map +1 -1
  284. package/dist/components/SliderRange.vue.d.ts.map +1 -1
  285. package/dist/components/SliderRange.vue.js +15 -3
  286. package/dist/components/SliderRange.vue.js.map +1 -1
  287. package/dist/components/SliderRangeTriple.vue.d.ts.map +1 -1
  288. package/dist/components/SliderRangeTriple.vue.js +7 -1
  289. package/dist/components/SliderRangeTriple.vue.js.map +1 -1
  290. package/dist/components/TabItem.vue.js.map +1 -1
  291. package/dist/components/ThemeSwitcher.vue.js.map +1 -1
  292. package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
  293. package/dist/components/VScroll.vue.js.map +1 -1
  294. package/dist/components/contextMenu/Menu.vue.js +1 -1
  295. package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
  296. package/dist/components/contextMenu/index.js.map +1 -1
  297. package/dist/composition/computedCached.js.map +1 -1
  298. package/dist/composition/filters/metadata.d.ts.map +1 -1
  299. package/dist/composition/filters/metadata.js.map +1 -1
  300. package/dist/composition/filters/types.d.ts +1 -19
  301. package/dist/composition/filters/types.d.ts.map +1 -1
  302. package/dist/composition/useClickOutside.js.map +1 -1
  303. package/dist/composition/useComponentProp.d.ts.map +1 -1
  304. package/dist/composition/useComponentProp.js.map +1 -1
  305. package/dist/composition/useConfirm.js.map +1 -1
  306. package/dist/composition/useDraggable.d.ts.map +1 -1
  307. package/dist/composition/useDraggable.js.map +1 -1
  308. package/dist/composition/useEventListener.d.ts.map +1 -1
  309. package/dist/composition/useEventListener.js +11 -7
  310. package/dist/composition/useEventListener.js.map +1 -1
  311. package/dist/composition/useFilteredList.d.ts.map +1 -1
  312. package/dist/composition/useFilteredList.js.map +1 -1
  313. package/dist/composition/useFormState.js.map +1 -1
  314. package/dist/composition/useHover.d.ts.map +1 -1
  315. package/dist/composition/useHover.js.map +1 -1
  316. package/dist/composition/useInterval.js.map +1 -1
  317. package/dist/composition/useLocalStorage.js.map +1 -1
  318. package/dist/composition/useMouse.js.map +1 -1
  319. package/dist/composition/useMouseCapture.d.ts.map +1 -1
  320. package/dist/composition/useMouseCapture.js.map +1 -1
  321. package/dist/composition/usePollingQuery.d.ts.map +1 -1
  322. package/dist/composition/usePollingQuery.js +4 -1
  323. package/dist/composition/usePollingQuery.js.map +1 -1
  324. package/dist/composition/usePosition.d.ts.map +1 -1
  325. package/dist/composition/usePosition.js.map +1 -1
  326. package/dist/composition/useQuery.js.map +1 -1
  327. package/dist/composition/useResizeObserver.d.ts.map +1 -1
  328. package/dist/composition/useResizeObserver.js.map +1 -1
  329. package/dist/composition/useRipple.js.map +1 -1
  330. package/dist/composition/useScroll.d.ts.map +1 -1
  331. package/dist/composition/useScroll.js.map +1 -1
  332. package/dist/composition/useSliderBreakpoints.d.ts.map +1 -1
  333. package/dist/composition/useSliderBreakpoints.js.map +1 -1
  334. package/dist/composition/useSortable.js.map +1 -1
  335. package/dist/composition/useSortable2.d.ts.map +1 -1
  336. package/dist/composition/useSortable2.js +8 -5
  337. package/dist/composition/useSortable2.js.map +1 -1
  338. package/dist/composition/useTheme.d.ts +1 -1
  339. package/dist/composition/useTheme.d.ts.map +1 -1
  340. package/dist/composition/useTheme.js.map +1 -1
  341. package/dist/composition/useTransformedModel.d.ts.map +1 -1
  342. package/dist/composition/useTransformedModel.js.map +1 -1
  343. package/dist/composition/useWatchFetch.js.map +1 -1
  344. package/dist/composition/utils.js.map +1 -1
  345. package/dist/composition/watchCached.d.ts.map +1 -1
  346. package/dist/composition/watchCached.js.map +1 -1
  347. package/dist/demo-site-data/all-css-variables.d.ts.map +1 -1
  348. package/dist/demo-site-data/all-css-variables.js +52 -13
  349. package/dist/demo-site-data/all-css-variables.js.map +1 -1
  350. package/dist/generated/icons-16.js.map +1 -1
  351. package/dist/generated/icons-24.js.map +1 -1
  352. package/dist/global/resizeObserver.js.map +1 -1
  353. package/dist/helpers/dom.d.ts.map +1 -1
  354. package/dist/helpers/dom.js.map +1 -1
  355. package/dist/helpers/downloadContent.d.ts +1 -1
  356. package/dist/helpers/downloadContent.d.ts.map +1 -1
  357. package/dist/helpers/downloadContent.js +3 -1
  358. package/dist/helpers/downloadContent.js.map +1 -1
  359. package/dist/helpers/error.js +4 -1
  360. package/dist/helpers/error.js.map +1 -1
  361. package/dist/helpers/functions.d.ts.map +1 -1
  362. package/dist/helpers/functions.js.map +1 -1
  363. package/dist/helpers/objects.js.map +1 -1
  364. package/dist/helpers/utils.d.ts.map +1 -1
  365. package/dist/helpers/utils.js.map +1 -1
  366. package/dist/index.d.ts +1 -1
  367. package/dist/index.js +1 -1
  368. package/dist/index.js.map +1 -1
  369. package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts.map +1 -1
  370. package/dist/layout/PlBlockPage/PlBlockPage.vue2.js.map +1 -1
  371. package/dist/layout/PlBlockPage/PlBlockPage.vue3.js +4 -4
  372. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js.map +1 -1
  373. package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js.map +1 -1
  374. package/dist/layout/PlContainer/PlContainer.vue.d.ts.map +1 -1
  375. package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
  376. package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
  377. package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts +1 -1
  378. package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts.map +1 -1
  379. package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js +8 -8
  380. package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js.map +1 -1
  381. package/dist/layout/PlPlaceholder/PlPlaceholder.vue3.js +15 -15
  382. package/dist/layout/PlPlaceholder/index.d.ts +1 -1
  383. package/dist/layout/PlPlaceholder/index.d.ts.map +1 -1
  384. package/dist/layout/PlPlaceholder/index.js.map +1 -1
  385. package/dist/layout/PlPlaceholder/paint-worklet.js +6 -6
  386. package/dist/layout/PlPlaceholder/paint-worklet.js.map +1 -1
  387. package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
  388. package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
  389. package/dist/types.d.ts +5 -5
  390. package/dist/types.d.ts.map +1 -1
  391. package/dist/utils/DoubleContour.vue.d.ts.map +1 -1
  392. package/dist/utils/DoubleContour.vue.js.map +1 -1
  393. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
  394. package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
  395. package/dist/utils/TextLabel.vue.js.map +1 -1
  396. package/dist/utils/useLabelNotch.d.ts.map +1 -1
  397. package/dist/utils/useLabelNotch.js.map +1 -1
  398. package/dist/utils/useValidation.js.map +1 -1
  399. package/package.json +23 -24
  400. package/scripts/parse-icons.js +20 -14
  401. package/src/__tests__/compositions/usePollingQuery.spec.ts +163 -165
  402. package/src/__tests__/compositions/useValidation.spec.ts +41 -28
  403. package/src/__tests__/setup.ts +1 -1
  404. package/src/__tests__/use-debounce-fn.test.ts +15 -11
  405. package/src/assets/animations.scss +5 -5
  406. package/src/assets/base-btn.scss +4 -3
  407. package/src/assets/base.scss +11 -8
  408. package/src/assets/common.scss +43 -43
  409. package/src/assets/dropdown-list-item.scss +53 -53
  410. package/src/assets/dropdown-tab-item.scss +4 -4
  411. package/src/assets/icons.scss +1 -1
  412. package/src/assets/input-range.scss +26 -27
  413. package/src/assets/layout.scss +1 -1
  414. package/src/assets/masks.scss +1 -1
  415. package/src/assets/mixins.scss +9 -17
  416. package/src/assets/scroll.scss +6 -6
  417. package/src/assets/slider.scss +6 -5
  418. package/src/assets/sortable.scss +1 -1
  419. package/src/assets/theme-switcher.scss +2 -2
  420. package/src/assets/typography.scss +16 -13
  421. package/src/assets/ui.scss +19 -19
  422. package/src/assets/utils.scss +19 -19
  423. package/src/assets/variables.scss +9 -10
  424. package/src/base/BtnBase.vue +6 -6
  425. package/src/colors/__tests__/colors.spec.ts +12 -10
  426. package/src/colors/color.ts +17 -12
  427. package/src/colors/gradient.ts +20 -17
  428. package/src/colors/index.ts +3 -3
  429. package/src/colors/palette.ts +194 -194
  430. package/src/components/ContextProvider.vue +1 -1
  431. package/src/components/DataTable/BaseCellComponent.vue +8 -8
  432. package/src/components/DataTable/ColumnCaret.vue +3 -3
  433. package/src/components/DataTable/ColumnsCommandMenu.vue +5 -3
  434. package/src/components/DataTable/RowsCommandMenu.vue +5 -3
  435. package/src/components/DataTable/TScroll.vue +11 -6
  436. package/src/components/DataTable/TableComponent.vue +41 -24
  437. package/src/components/DataTable/TdCell.vue +28 -15
  438. package/src/components/DataTable/ThCell.vue +14 -9
  439. package/src/components/DataTable/TrBody.vue +11 -4
  440. package/src/components/DataTable/adapters/AsyncData.ts +4 -4
  441. package/src/components/DataTable/adapters/RawData.ts +5 -5
  442. package/src/components/DataTable/assets/TableIcon.vue +6 -1
  443. package/src/components/DataTable/assets/data-table-style.scss +12 -10
  444. package/src/components/DataTable/composition/useColumn.ts +8 -5
  445. package/src/components/DataTable/composition/useMouseUp.ts +3 -3
  446. package/src/components/DataTable/composition/useResize.ts +16 -16
  447. package/src/components/DataTable/composition/useTableColumns.ts +8 -8
  448. package/src/components/DataTable/composition/useTableRows.ts +5 -5
  449. package/src/components/DataTable/domain.ts +8 -4
  450. package/src/components/DataTable/index.ts +26 -13
  451. package/src/components/DataTable/keys.ts +3 -3
  452. package/src/components/DataTable/state.ts +38 -18
  453. package/src/components/DataTable/types.ts +10 -10
  454. package/src/components/DropdownListItem.vue +18 -15
  455. package/src/components/GridTable/TdCell.vue +7 -7
  456. package/src/components/GridTable/ThCell.vue +14 -9
  457. package/src/components/GridTable/assets/TableIcon.vue +6 -1
  458. package/src/components/GridTable/assets/style.scss +6 -6
  459. package/src/components/GridTable/constants.ts +10 -10
  460. package/src/components/GridTable/domain.ts +8 -4
  461. package/src/components/GridTable/getColumnPositions.ts +4 -4
  462. package/src/components/GridTable/index.vue +41 -32
  463. package/src/components/GridTable/types.ts +14 -11
  464. package/src/components/GridTable/useColumn.ts +8 -5
  465. package/src/components/GridTable/useMouseUp.ts +3 -3
  466. package/src/components/GridTable/useResize.ts +13 -13
  467. package/src/components/HScroll.vue +10 -10
  468. package/src/components/InputRange.vue +9 -7
  469. package/src/components/LongText.vue +7 -5
  470. package/src/components/PlAccordion/ExpandTransition.vue +12 -6
  471. package/src/components/PlAccordion/PlAccordion.vue +3 -3
  472. package/src/components/PlAccordion/PlAccordionSection.vue +9 -9
  473. package/src/components/PlAccordion/index.ts +2 -2
  474. package/src/components/PlAlert/PlAlert.vue +21 -10
  475. package/src/components/PlAlert/index.ts +1 -1
  476. package/src/components/PlAlert/pl-alert.scss +1 -1
  477. package/src/components/PlAutocomplete/PlAutocomplete.vue +142 -82
  478. package/src/components/PlAutocomplete/__tests__/PlAutocomplete.spec.ts +19 -17
  479. package/src/components/PlAutocomplete/index.ts +1 -1
  480. package/src/components/PlAutocomplete/pl-autocomplete.scss +9 -7
  481. package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +92 -62
  482. package/src/components/PlAutocompleteMulti/__tests__/PlAutocompleteMulti.spec.ts +17 -16
  483. package/src/components/PlAutocompleteMulti/index.ts +4 -1
  484. package/src/components/PlAutocompleteMulti/pl-autocomplete-multi.scss +8 -6
  485. package/src/components/PlBtnAccent/PlBtnAccent.vue +4 -4
  486. package/src/components/PlBtnAccent/index.ts +1 -1
  487. package/src/components/PlBtnDanger/PlBtnDanger.vue +4 -4
  488. package/src/components/PlBtnDanger/index.ts +1 -1
  489. package/src/components/PlBtnDanger/pl-btn-danger.scss +1 -1
  490. package/src/components/PlBtnGhost/PlBtnGhost.vue +8 -8
  491. package/src/components/PlBtnGhost/index.ts +1 -1
  492. package/src/components/PlBtnGroup/PlBtnGroup.vue +10 -10
  493. package/src/components/PlBtnGroup/index.ts +1 -1
  494. package/src/components/PlBtnGroup/pl-btn-group.scss +4 -4
  495. package/src/components/PlBtnLink/PlBtnLink.vue +10 -5
  496. package/src/components/PlBtnLink/index.ts +1 -1
  497. package/src/components/PlBtnLink/pl-btn-link.scss +2 -1
  498. package/src/components/PlBtnPrimary/PlBtnPrimary.vue +4 -4
  499. package/src/components/PlBtnPrimary/__tests__/BtnPrimary.spec.ts +7 -7
  500. package/src/components/PlBtnPrimary/index.ts +1 -1
  501. package/src/components/PlBtnPrimary/pl-btn-primary.scss +2 -2
  502. package/src/components/PlBtnSecondary/PlBtnSecondary.vue +4 -4
  503. package/src/components/PlBtnSecondary/index.ts +1 -1
  504. package/src/components/PlBtnSecondary/pl-btn-secondary.scss +1 -1
  505. package/src/components/PlBtnSplit/PlBtnSplit.vue +42 -28
  506. package/src/components/PlBtnSplit/__tests__/PlBtnSplit.spec.ts +66 -66
  507. package/src/components/PlBtnSplit/index.ts +1 -1
  508. package/src/components/PlBtnSplit/pl-btn-split.scss +72 -75
  509. package/src/components/PlChartHistogram/PlChartHistogram.vue +29 -20
  510. package/src/components/PlChartHistogram/createGridlines.ts +28 -22
  511. package/src/components/PlChartHistogram/createLabels.ts +19 -17
  512. package/src/components/PlChartHistogram/createSvgContainer.ts +9 -9
  513. package/src/components/PlChartHistogram/drawBins.ts +27 -34
  514. package/src/components/PlChartHistogram/drawThreshold.ts +9 -9
  515. package/src/components/PlChartHistogram/histogram.ts +31 -34
  516. package/src/components/PlChartHistogram/index.ts +1 -1
  517. package/src/components/PlChartHistogram/normalizeBins.ts +3 -3
  518. package/src/components/PlChartHistogram/scales.spec.ts +5 -5
  519. package/src/components/PlChartHistogram/types.ts +6 -6
  520. package/src/components/PlChartStackedBar/Legends.vue +2 -2
  521. package/src/components/PlChartStackedBar/PlChartStackedBar.vue +16 -10
  522. package/src/components/PlChartStackedBar/PlChartStackedBarCompact.vue +4 -4
  523. package/src/components/PlChartStackedBar/StackedRow.vue +7 -9
  524. package/src/components/PlChartStackedBar/StackedRowCompact.vue +6 -8
  525. package/src/components/PlChartStackedBar/index.ts +3 -3
  526. package/src/components/PlChartStackedBar/types.ts +1 -1
  527. package/src/components/PlCheckbox/PlCheckbox.vue +5 -5
  528. package/src/components/PlCheckbox/PlCheckboxBase.vue +3 -5
  529. package/src/components/PlCheckbox/__tests__/PlCheckbox.spec.ts +15 -15
  530. package/src/components/PlCheckbox/index.ts +1 -1
  531. package/src/components/PlCheckbox/pl-checkbox-base.scss +13 -13
  532. package/src/components/PlCheckbox/pl-checkbox.scss +2 -2
  533. package/src/components/PlCheckboxGroup/PlCheckboxGroup.vue +24 -10
  534. package/src/components/PlCheckboxGroup/index.ts +1 -1
  535. package/src/components/PlCheckboxGroup/pl-checkbox-group.scss +1 -1
  536. package/src/components/PlChip/PlChip.vue +11 -5
  537. package/src/components/PlChip/index.ts +1 -1
  538. package/src/components/PlChip/pl-chip.scss +2 -2
  539. package/src/components/PlClipboard/PlClipboard.vue +7 -7
  540. package/src/components/PlClipboard/index.ts +1 -1
  541. package/src/components/PlConfirmDialog.vue +7 -6
  542. package/src/components/PlDialogModal/PlDialogModal.vue +52 -33
  543. package/src/components/PlDialogModal/index.ts +1 -1
  544. package/src/components/PlDialogModal/pl-dialog-modal.scss +2 -2
  545. package/src/components/PlDropdown/OptionList.vue +21 -10
  546. package/src/components/PlDropdown/PlDropdown.vue +65 -46
  547. package/src/components/PlDropdown/__tests__/PlDropdown.spec.ts +15 -15
  548. package/src/components/PlDropdown/index.ts +1 -1
  549. package/src/components/PlDropdown/pl-dropdown.scss +4 -2
  550. package/src/components/PlDropdown/types.ts +6 -2
  551. package/src/components/PlDropdown/useGroupBy.ts +7 -10
  552. package/src/components/PlDropdownLegacy/PlDropdownLegacy.vue +60 -43
  553. package/src/components/PlDropdownLegacy/__tests__/PlDropdownLegacy.spec.ts +16 -16
  554. package/src/components/PlDropdownLegacy/index.ts +1 -1
  555. package/src/components/PlDropdownLegacy/pl-dropdown-legacy.scss +6 -6
  556. package/src/components/PlDropdownLine/PlDropdownLine.vue +76 -54
  557. package/src/components/PlDropdownLine/ResizableInput.vue +15 -8
  558. package/src/components/PlDropdownLine/index.ts +1 -1
  559. package/src/components/PlDropdownLine/pl-dropdown-line.scss +132 -132
  560. package/src/components/PlDropdownLine/resizable-input.scss +38 -38
  561. package/src/components/PlDropdownMulti/PlDropdownMulti.vue +79 -45
  562. package/src/components/PlDropdownMulti/__tests__/PlDropdownMulti.spec.ts +15 -14
  563. package/src/components/PlDropdownMulti/index.ts +1 -1
  564. package/src/components/PlDropdownMulti/pl-dropdown-multi.scss +8 -6
  565. package/src/components/PlDropdownMultiRef/PlDropdownMultiRef.vue +5 -5
  566. package/src/components/PlDropdownMultiRef/__tests__/PlDropdownMultiRef.spec.ts +25 -24
  567. package/src/components/PlDropdownMultiRef/index.ts +1 -1
  568. package/src/components/PlDropdownRef/PlDropdownRef.vue +12 -12
  569. package/src/components/PlDropdownRef/__tests__/PlDropdownRef.spec.ts +23 -23
  570. package/src/components/PlDropdownRef/index.ts +1 -1
  571. package/src/components/PlEditableTitle/PlEditableTitle.vue +9 -10
  572. package/src/components/PlEditableTitle/index.ts +1 -1
  573. package/src/components/PlEditableTitle/pl-editable-title.module.scss +4 -4
  574. package/src/components/PlElementList/PlElementList.vue +60 -37
  575. package/src/components/PlElementList/PlElementListItem.vue +45 -29
  576. package/src/components/PlElementList/README.md +102 -119
  577. package/src/components/PlElementList/index.ts +1 -1
  578. package/src/components/PlElementList/utils.ts +3 -1
  579. package/src/components/PlErrorAlert/PlErrorAlert.vue +5 -5
  580. package/src/components/PlErrorAlert/index.ts +1 -1
  581. package/src/components/PlErrorBoundary/PlErrorBoundary.vue +8 -5
  582. package/src/components/PlErrorBoundary/index.ts +1 -1
  583. package/src/components/PlFileDialog/Local.vue +22 -16
  584. package/src/components/PlFileDialog/PlFileDialog.vue +27 -23
  585. package/src/components/PlFileDialog/Remote.vue +44 -34
  586. package/src/components/PlFileDialog/Shortcuts.vue +4 -4
  587. package/src/components/PlFileDialog/index.ts +1 -1
  588. package/src/components/PlFileDialog/pl-file-dialog.module.scss +15 -12
  589. package/src/components/PlFileDialog/remote.ts +9 -9
  590. package/src/components/PlFileDialog/utils.test.ts +20 -24
  591. package/src/components/PlFileDialog/utils.ts +8 -8
  592. package/src/components/PlFileInput/PlFileInput.vue +37 -26
  593. package/src/components/PlFileInput/index.ts +1 -1
  594. package/src/components/PlFileInput/pl-file-input.scss +3 -3
  595. package/src/components/PlFileInput/utils.ts +6 -6
  596. package/src/components/PlIcon16/PlIcon16.vue +7 -7
  597. package/src/components/PlIcon16/index.ts +1 -1
  598. package/src/components/PlIcon24/PlIcon24.vue +7 -7
  599. package/src/components/PlIcon24/index.ts +1 -1
  600. package/src/components/PlLoaderCircular/PlLoaderCircular.vue +24 -6
  601. package/src/components/PlLoaderCircular/index.ts +1 -1
  602. package/src/components/PlLoaderCircular/pl-loader-circular.scss +54 -50
  603. package/src/components/PlLoaderLogo.vue +8 -10
  604. package/src/components/PlLogView/PlLogView.vue +28 -22
  605. package/src/components/PlLogView/index.ts +1 -1
  606. package/src/components/PlLogView/pl-log-view.scss +10 -4
  607. package/src/components/PlLogView/useLogHandle.ts +32 -12
  608. package/src/components/PlMaskIcon16/index.ts +1 -1
  609. package/src/components/PlMaskIcon24/index.ts +1 -1
  610. package/src/components/PlNotificationAlert/PlNotificationAlert.vue +10 -5
  611. package/src/components/PlNotificationAlert/index.ts +1 -1
  612. package/src/components/PlNotificationAlert/pl-notification-alert.scss +43 -44
  613. package/src/components/PlNumberField/PlNumberField.vue +95 -68
  614. package/src/components/PlNumberField/__tests__/PlNumberField.spec.ts +71 -69
  615. package/src/components/PlNumberField/index.ts +1 -1
  616. package/src/components/PlNumberField/parseNumber.ts +20 -17
  617. package/src/components/PlProgressBar/PlProgressBar.vue +5 -5
  618. package/src/components/PlProgressBar/index.ts +1 -1
  619. package/src/components/PlProgressCell/PlProgressCell.vue +33 -14
  620. package/src/components/PlProgressCell/index.ts +2 -2
  621. package/src/components/PlProgressCell/pl-progress-cell.scss +70 -70
  622. package/src/components/PlProgressCell/types.ts +1 -1
  623. package/src/components/PlRadio/PlRadio.vue +54 -54
  624. package/src/components/PlRadio/PlRadioGroup.vue +16 -16
  625. package/src/components/PlRadio/__tests__/PlRadioGroup.spec.ts +50 -50
  626. package/src/components/PlRadio/index.ts +2 -2
  627. package/src/components/PlRadio/keys.ts +1 -1
  628. package/src/components/PlSearchField/PlSearchField.vue +21 -9
  629. package/src/components/PlSearchField/index.ts +1 -1
  630. package/src/components/PlSectionSeparator/PlSectionSeparator.vue +1 -1
  631. package/src/components/PlSectionSeparator/index.ts +1 -1
  632. package/src/components/PlSidebar/PlSidebarGroup.vue +2 -2
  633. package/src/components/PlSidebar/PlSidebarItem.vue +7 -7
  634. package/src/components/PlSidebar/index.ts +2 -2
  635. package/src/components/PlSlideModal/PlPureSlideModal.vue +18 -17
  636. package/src/components/PlSlideModal/PlSlideModal.vue +8 -12
  637. package/src/components/PlSlideModal/index.ts +2 -2
  638. package/src/components/PlSlideModal/pl-slide-modal.scss +2 -2
  639. package/src/components/PlSlideModal/props.ts +9 -9
  640. package/src/components/PlSpacer/PlSpacer.vue +1 -1
  641. package/src/components/PlSpacer/index.ts +1 -1
  642. package/src/components/PlSplash/PlSplash.vue +25 -17
  643. package/src/components/PlSplash/index.ts +1 -1
  644. package/src/components/PlSplash/pl-splash.module.scss +1 -1
  645. package/src/components/PlStatusTag/PlStatusTag.vue +13 -8
  646. package/src/components/PlStatusTag/index.ts +2 -2
  647. package/src/components/PlStatusTag/pl-status-tag.scss +18 -18
  648. package/src/components/PlStatusTag/types.ts +1 -1
  649. package/src/components/PlSvg/PlSvg.vue +24 -16
  650. package/src/components/PlSvg/index.ts +1 -1
  651. package/src/components/PlSvg/registry.ts +17 -21
  652. package/src/components/PlTabs/PlTabs.vue +10 -7
  653. package/src/components/PlTabs/Tab.vue +4 -4
  654. package/src/components/PlTabs/index.ts +2 -2
  655. package/src/components/PlTabs/pl-tabs.module.scss +3 -3
  656. package/src/components/PlTextArea/PlTextArea.vue +15 -15
  657. package/src/components/PlTextArea/__tests__/PlTextArea.spec.ts +12 -12
  658. package/src/components/PlTextArea/index.ts +1 -1
  659. package/src/components/PlTextArea/pl-textarea.scss +1 -1
  660. package/src/components/PlTextField/PlTextField.vue +48 -27
  661. package/src/components/PlTextField/__tests__/TextField.spec.ts +19 -19
  662. package/src/components/PlTextField/index.ts +1 -1
  663. package/src/components/PlToggleSwitch/PlToggleSwitch.vue +3 -3
  664. package/src/components/PlToggleSwitch/index.ts +1 -1
  665. package/src/components/PlToggleSwitch/pl-toggle-switch.scss +3 -2
  666. package/src/components/PlTooltip/Beak.vue +8 -1
  667. package/src/components/PlTooltip/PlTooltip.vue +33 -19
  668. package/src/components/PlTooltip/index.ts +1 -1
  669. package/src/components/PlTooltip/pl-tooltip.scss +4 -2
  670. package/src/components/PlTooltip/useTooltipPosition.ts +12 -12
  671. package/src/components/Scrollable.vue +17 -8
  672. package/src/components/Slider.vue +47 -23
  673. package/src/components/SliderRange.vue +72 -32
  674. package/src/components/SliderRangeTriple.vue +49 -31
  675. package/src/components/TabItem.vue +5 -5
  676. package/src/components/ThemeSwitcher.vue +1 -1
  677. package/src/components/TransitionSlidePanel.vue +2 -2
  678. package/src/components/VScroll.vue +10 -10
  679. package/src/components/contextMenu/Menu.vue +4 -4
  680. package/src/components/contextMenu/index.ts +6 -6
  681. package/src/composition/computedCached.ts +11 -7
  682. package/src/composition/filters/index.ts +2 -2
  683. package/src/composition/filters/metadata.ts +227 -220
  684. package/src/composition/filters/types.ts +44 -21
  685. package/src/composition/useClickOutside.ts +4 -4
  686. package/src/composition/useComponentProp.ts +5 -3
  687. package/src/composition/useConfirm.ts +5 -5
  688. package/src/composition/useDraggable.ts +16 -13
  689. package/src/composition/useEventListener.ts +13 -5
  690. package/src/composition/useFilteredList.ts +9 -6
  691. package/src/composition/useFormState.ts +3 -3
  692. package/src/composition/useHover.ts +10 -7
  693. package/src/composition/useInterval.ts +1 -1
  694. package/src/composition/useLocalStorage.ts +4 -4
  695. package/src/composition/useMouse.ts +3 -3
  696. package/src/composition/useMouseCapture.ts +10 -7
  697. package/src/composition/useNotificationPosition.ts +4 -4
  698. package/src/composition/usePollingQuery.ts +22 -20
  699. package/src/composition/usePosition.ts +13 -9
  700. package/src/composition/useQuery.ts +2 -2
  701. package/src/composition/useResizeObserver.ts +9 -6
  702. package/src/composition/useRipple.ts +6 -6
  703. package/src/composition/useScroll.ts +18 -12
  704. package/src/composition/useSliderBreakpoints.ts +6 -4
  705. package/src/composition/useSortable.ts +17 -17
  706. package/src/composition/useSortable2.ts +27 -24
  707. package/src/composition/useTheme.ts +11 -9
  708. package/src/composition/useTransformedModel.ts +6 -3
  709. package/src/composition/useWatchFetch.ts +3 -3
  710. package/src/composition/utils.ts +1 -1
  711. package/src/composition/watchCached.ts +2 -8
  712. package/src/demo-site-data/all-css-variables.ts +208 -169
  713. package/src/drafts/FileBaseInput.vue +35 -18
  714. package/src/generated/icons-16.ts +68 -68
  715. package/src/generated/icons-24.ts +211 -211
  716. package/src/global/resizeObserver.ts +1 -1
  717. package/src/helpers/dom.ts +12 -8
  718. package/src/helpers/downloadContent.ts +23 -21
  719. package/src/helpers/error.ts +6 -3
  720. package/src/helpers/functions.ts +5 -1
  721. package/src/helpers/objects.ts +1 -1
  722. package/src/helpers/utils.ts +23 -9
  723. package/src/index.ts +110 -110
  724. package/src/layout/PlBlockPage/PlBlockPage.vue +14 -19
  725. package/src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts +1 -1
  726. package/src/layout/PlBlockPage/index.ts +2 -2
  727. package/src/layout/PlBlockPage/pl-block-page.scss +1 -1
  728. package/src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts +2 -2
  729. package/src/layout/PlContainer/PlContainer.vue +10 -5
  730. package/src/layout/PlContainer/index.ts +1 -1
  731. package/src/layout/PlContainer/pl-container.scss +1 -1
  732. package/src/layout/PlGrid/PlGrid.vue +3 -3
  733. package/src/layout/PlGrid/index.ts +1 -1
  734. package/src/layout/PlGrid/pl-grid.scss +1 -1
  735. package/src/layout/PlPlaceholder/PlPlaceholder.vue +19 -18
  736. package/src/layout/PlPlaceholder/index.ts +11 -14
  737. package/src/layout/PlPlaceholder/paint-worklet.js +6 -6
  738. package/src/layout/PlRow/PlRow.vue +2 -2
  739. package/src/layout/PlRow/index.ts +1 -1
  740. package/src/layout/PlRow/pl-row.scss +1 -1
  741. package/src/layout/PlSpacer/PlSpacer.vue +1 -1
  742. package/src/layout/PlSpacer/index.ts +1 -1
  743. package/src/types.ts +23 -17
  744. package/src/utils/DoubleContour.vue +18 -7
  745. package/src/utils/DropdownOverlay/DropdownOverlay.vue +13 -13
  746. package/src/utils/DropdownOverlay/index.ts +1 -1
  747. package/src/utils/PlCloseModalBtn.vue +1 -1
  748. package/src/utils/TextLabel.vue +1 -1
  749. package/src/utils/WebStopWatchElement.ts +5 -5
  750. package/src/utils/useLabelNotch.ts +12 -9
  751. package/src/utils/useValidation.ts +2 -2
  752. package/tsconfig.json +2 -7
  753. package/vitest.config.mts +9 -9
  754. package/.turbo/turbo-lint.log +0 -5
  755. package/eslint.config.mjs +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"PlToggleSwitch.vue.js","sources":["../../../src/components/PlToggleSwitch/PlToggleSwitch.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for manipulating a boolean value\n */\nexport default {\n name: 'PlToggleSwitch',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport './pl-toggle-switch.scss';\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated\n *\n * @param value - The new boolean value of the model\n */\n (e: 'update:modelValue', value: boolean): void;\n}>();\n\ndefineProps<{\n /**\n * The label text for the component (optional)\n */\n label?: string;\n /**\n * The current boolean value of the component (represents 'on' | 'off' states generally).\n */\n modelValue?: boolean;\n}>();\n</script>\n\n<template>\n <div\n tabindex=\"0\"\n class=\"ui-toggle-switch\"\n :class=\"{ active: modelValue }\"\n @click=\"$emit('update:modelValue', !modelValue)\"\n @keydown.enter=\"$emit('update:modelValue', !modelValue)\"\n >\n <div class=\"ui-toggle-switch__body\">\n <div class=\"ui-toggle-switch__handle\" />\n </div>\n <span v-if=\"label\" class=\"label\">{{ label }}</span>\n </div>\n</template>\n"],"names":["__default__","_createElementBlock","_normalizeClass","__props","_cache","$event","$emit","_withKeys","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;GAIAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;2BA4BEC,EAWM,OAAA;AAAA,MAVJ,UAAS;AAAA,MACT,OAAKC,EAAA,CAAC,oBAAkB,EAAA,QACNC,EAAA,WAAA,CAAU,CAAA;AAAA,MAC3B,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU;AAAA,MAC7C,WAAOC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAG,EAAA,CAAAF,MAAQC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU,GAAA,CAAA,OAAA,CAAA;AAAA,IAAA;sBAEtDK,EAEM,OAAA,EAFD,OAAM,4BAAwB;AAAA,QACjCA,EAAwC,OAAA,EAAnC,OAAM,4BAA0B;AAAA,MAAA;MAE3BL,EAAA,cAAZF,EAAmD,QAAnDQ,GAAmDC,EAAfP,EAAA,KAAK,GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"PlToggleSwitch.vue.js","sources":["../../../src/components/PlToggleSwitch/PlToggleSwitch.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for manipulating a boolean value\n */\nexport default {\n name: \"PlToggleSwitch\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-toggle-switch.scss\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated\n *\n * @param value - The new boolean value of the model\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\ndefineProps<{\n /**\n * The label text for the component (optional)\n */\n label?: string;\n /**\n * The current boolean value of the component (represents 'on' | 'off' states generally).\n */\n modelValue?: boolean;\n}>();\n</script>\n\n<template>\n <div\n tabindex=\"0\"\n class=\"ui-toggle-switch\"\n :class=\"{ active: modelValue }\"\n @click=\"$emit('update:modelValue', !modelValue)\"\n @keydown.enter=\"$emit('update:modelValue', !modelValue)\"\n >\n <div class=\"ui-toggle-switch__body\">\n <div class=\"ui-toggle-switch__handle\" />\n </div>\n <span v-if=\"label\" class=\"label\">{{ label }}</span>\n </div>\n</template>\n"],"names":["__default__","_createElementBlock","_normalizeClass","__props","_cache","$event","$emit","_withKeys","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;GAIAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;2BA4BEC,EAWM,OAAA;AAAA,MAVJ,UAAS;AAAA,MACT,OAAKC,EAAA,CAAC,oBAAkB,EAAA,QACNC,EAAA,WAAA,CAAU,CAAA;AAAA,MAC3B,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU;AAAA,MAC7C,WAAOC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAG,EAAA,CAAAF,MAAQC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU,GAAA,CAAA,OAAA,CAAA;AAAA,IAAA;sBAEtDK,EAEM,OAAA,EAFD,OAAM,4BAAwB;AAAA,QACjCA,EAAwC,OAAA,EAAnC,OAAM,4BAA0B;AAAA,MAAA;MAE3BL,EAAA,cAAZF,EAAmD,QAAnDQ,GAAmDC,EAAfP,EAAA,KAAK,GAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Beak.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/Beak.vue"],"names":[],"mappings":";AAoDA,wBAMG"}
1
+ {"version":3,"file":"Beak.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/Beak.vue"],"names":[],"mappings":";AA2DA,wBAMG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Beak.vue.js","sources":["../../../src/components/PlTooltip/Beak.vue"],"sourcesContent":["<template>\n <svg class=\"beak\" width=\"5\" height=\"9\" viewBox=\"0 0 3 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.00222 8.00933L0 4.00711L4.00222 0.00488281L4.00222 8.00933Z\" fill=\"#24223D\" />\n </svg>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode"],"mappings":";;cACOA,IAAY;AAAA,EAAC,OAAM;AAAA,EAAI;EAAW;EAAkB,SAAK;AAAA,EAAO;;;AAArE,SAAAC,EAAAC,GAAAC,GAAA;SACEC,EAAA,GAA0FC,EAAA,OAAAL,GAAA,CAAA,GAAAG,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,IAApFG,EAAE,QAAA;AAAA,MAAiE,GAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"Beak.vue.js","sources":["../../../src/components/PlTooltip/Beak.vue"],"sourcesContent":["<template>\n <svg\n class=\"beak\"\n width=\"5\"\n height=\"9\"\n viewBox=\"0 0 3 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.00222 8.00933L0 4.00711L4.00222 0.00488281L4.00222 8.00933Z\" fill=\"#24223D\" />\n </svg>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode"],"mappings":";;cAEIA,IAAY;AAAA,EACZ,OAAM;AAAA,EACN;EACA;EACA,SAAK;AAAA,EACL;;;AANF,SAAAC,EAAAC,GAAAC,GAAA;SAQEC,EAAA,GAA0FC,EAAA,OAAAL,GAAA,CAAA,GAAAG,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,IAApFG,EAAE,QAAA;AAAA,MAAiE,GAAA;AAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlTooltip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"names":[],"mappings":"AAyKA,OAAO,mBAAmB,CAAC;AAS3B,kCAAkC;;IAO9B;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;IA3BjB;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;SARX,MAAM;eAhBA,MAAM;gBAIL,MAAM;cAIR,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;aAYpD,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;cAI9C,MAAM;;;;;qBA4MS,GAAG;qBACH,GAAG;;AA9OjC,wBAmSK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlTooltip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"names":[],"mappings":"AAuLA,OAAO,mBAAmB,CAAC;AAS3B,kCAAkC;;IAO9B;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;IA3BjB;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;SARX,MAAM;eAhBA,MAAM;gBAIL,MAAM;cAIR,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;aAYpD,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;cAI9C,MAAM;;;;;qBA4MS,GAAG;qBACH,GAAG;;AA9OjC,wBAmSK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlTooltip.vue.js","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Simple tooltip on mouseover */\nexport default {\n name: 'PlTooltip',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport './pl-tooltip.scss';\nimport { computed, onUnmounted, reactive, ref, toRef, watch } from 'vue';\nimport { useTooltipPosition } from './useTooltipPosition';\nimport * as utils from '../../helpers/utils';\nimport { useClickOutside } from '../../composition/useClickOutside';\nimport Beak from './Beak.vue';\nimport { tMap } from './global';\n\nconst emit = defineEmits(['tooltip:close']);\n\nconst tKey = Symbol();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * delay in milliseconds before the tooltip opens\n */\n openDelay?: number;\n /**\n * delay in milliseconds before the tooltip disappears\n */\n closeDelay?: number;\n /**\n * Tooltip position\n */\n position?: 'top-left' | 'left' | 'right' | 'top' | 'southwest';\n /**\n * external prop to hide tooltips\n */\n hide?: boolean;\n /**\n * The gap in pixels between the tooltip and the target element\n */\n gap?: number;\n /**\n * base html element for tooltip\n */\n element?: 'div' | 'span' | 'a' | 'p' | 'h1' | 'h2' | 'h3';\n /**\n * Max width (css value) of the tooltip container (default is 300px)\n */\n maxWidth?: string;\n }>(),\n {\n openDelay: 100,\n closeDelay: 1000,\n gap: 8,\n position: 'top',\n element: 'div',\n maxWidth: '300px',\n },\n);\n\nconst data = reactive({\n open: false,\n over: false,\n tooltipOpen: false,\n key: Symbol(),\n});\n\ntMap.set(tKey, () => closeTooltip());\n\n// Hook to avoid the need to immediately teleport into the body (better performance)\nwatch(\n () => data.open,\n (v) => {\n requestAnimationFrame(() => {\n data.tooltipOpen = v;\n });\n },\n);\n\nlet clearTimeout = () => {};\n\nconst dispatchAdjust = utils.throttle(() => window.dispatchEvent(new CustomEvent('adjust')), 1000);\n\nconst showTooltip = () => {\n data.open = true;\n\n for (const [k, f] of tMap.entries()) {\n if (k !== tKey) {\n f();\n }\n }\n};\n\nconst closeTooltip = () => {\n data.open = false;\n emit('tooltip:close');\n};\n\nconst onOver = async () => {\n if (props.hide) {\n return;\n }\n\n dispatchAdjust();\n\n data.over = true;\n\n clearTimeout();\n\n await utils.delay(props.openDelay ?? 100);\n\n if (data.over) {\n showTooltip();\n }\n};\n\nconst onLeave = () => {\n data.over = false;\n clearTimeout = utils.timeout(() => {\n if (!data.over) {\n closeTooltip();\n }\n }, props.closeDelay);\n};\n\nwatch(\n () => props.hide,\n (hide) => {\n if (hide) {\n closeTooltip();\n }\n },\n);\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst tooltip = ref<HTMLElement | undefined>();\n\nconst style = useTooltipPosition(rootRef, toRef(props));\n\nuseClickOutside([rootRef, tooltip], () => closeTooltip());\n\nconst tooltipStyle = computed(() => ({\n '--pl-tooltip-max-width': props.maxWidth,\n}));\n\nonUnmounted(() => {\n tMap.delete(tKey);\n});\n</script>\n\n<template>\n <component :is=\"element\" v-bind=\"$attrs\" ref=\"rootRef\" @click=\"onOver\" @mouseover=\"onOver\" @mouseleave=\"onLeave\">\n <slot />\n <Teleport v-if=\"$slots['tooltip'] && data.open\" to=\"body\">\n <Transition name=\"tooltip-transition\">\n <div v-if=\"data.tooltipOpen\" class=\"pl-tooltip__container\" :style=\"style\" @click.stop>\n <div ref=\"tooltip\" class=\"pl-tooltip\" :style=\"tooltipStyle\" :class=\"position\" @mouseover=\"onOver\" @mouseleave=\"onLeave\">\n <!-- should be one line -->\n <div><slot name=\"tooltip\" /></div>\n <Beak />\n </div>\n </div>\n </Transition>\n </Teleport>\n </component>\n</template>\n"],"names":["__default__","emit","__emit","tKey","props","__props","data","reactive","tMap","closeTooltip","watch","v","clearTimeout","dispatchAdjust","utils.throttle","showTooltip","k","f","onOver","utils.delay","onLeave","utils.timeout","hide","rootRef","ref","tooltip","style","useTooltipPosition","toRef","useClickOutside","tooltipStyle","computed","onUnmounted","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","$attrs","_renderSlot","_ctx","$slots","_Teleport","_createVNode","_Transition","_createElementBlock","_unref","_createElementVNode","_normalizeClass","Beak"],"mappings":"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"}
1
+ {"version":3,"file":"PlTooltip.vue.js","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Simple tooltip on mouseover */\nexport default {\n name: \"PlTooltip\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-tooltip.scss\";\nimport { computed, onUnmounted, reactive, ref, toRef, watch } from \"vue\";\nimport { useTooltipPosition } from \"./useTooltipPosition\";\nimport * as utils from \"../../helpers/utils\";\nimport { useClickOutside } from \"../../composition/useClickOutside\";\nimport Beak from \"./Beak.vue\";\nimport { tMap } from \"./global\";\n\nconst emit = defineEmits([\"tooltip:close\"]);\n\nconst tKey = Symbol();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * delay in milliseconds before the tooltip opens\n */\n openDelay?: number;\n /**\n * delay in milliseconds before the tooltip disappears\n */\n closeDelay?: number;\n /**\n * Tooltip position\n */\n position?: \"top-left\" | \"left\" | \"right\" | \"top\" | \"southwest\";\n /**\n * external prop to hide tooltips\n */\n hide?: boolean;\n /**\n * The gap in pixels between the tooltip and the target element\n */\n gap?: number;\n /**\n * base html element for tooltip\n */\n element?: \"div\" | \"span\" | \"a\" | \"p\" | \"h1\" | \"h2\" | \"h3\";\n /**\n * Max width (css value) of the tooltip container (default is 300px)\n */\n maxWidth?: string;\n }>(),\n {\n openDelay: 100,\n closeDelay: 1000,\n gap: 8,\n position: \"top\",\n element: \"div\",\n maxWidth: \"300px\",\n },\n);\n\nconst data = reactive({\n open: false,\n over: false,\n tooltipOpen: false,\n key: Symbol(),\n});\n\ntMap.set(tKey, () => closeTooltip());\n\n// Hook to avoid the need to immediately teleport into the body (better performance)\nwatch(\n () => data.open,\n (v) => {\n requestAnimationFrame(() => {\n data.tooltipOpen = v;\n });\n },\n);\n\nlet clearTimeout = () => {};\n\nconst dispatchAdjust = utils.throttle(() => window.dispatchEvent(new CustomEvent(\"adjust\")), 1000);\n\nconst showTooltip = () => {\n data.open = true;\n\n for (const [k, f] of tMap.entries()) {\n if (k !== tKey) {\n f();\n }\n }\n};\n\nconst closeTooltip = () => {\n data.open = false;\n emit(\"tooltip:close\");\n};\n\nconst onOver = async () => {\n if (props.hide) {\n return;\n }\n\n dispatchAdjust();\n\n data.over = true;\n\n clearTimeout();\n\n await utils.delay(props.openDelay ?? 100);\n\n if (data.over) {\n showTooltip();\n }\n};\n\nconst onLeave = () => {\n data.over = false;\n clearTimeout = utils.timeout(() => {\n if (!data.over) {\n closeTooltip();\n }\n }, props.closeDelay);\n};\n\nwatch(\n () => props.hide,\n (hide) => {\n if (hide) {\n closeTooltip();\n }\n },\n);\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst tooltip = ref<HTMLElement | undefined>();\n\nconst style = useTooltipPosition(rootRef, toRef(props));\n\nuseClickOutside([rootRef, tooltip], () => closeTooltip());\n\nconst tooltipStyle = computed(() => ({\n \"--pl-tooltip-max-width\": props.maxWidth,\n}));\n\nonUnmounted(() => {\n tMap.delete(tKey);\n});\n</script>\n\n<template>\n <component\n :is=\"element\"\n v-bind=\"$attrs\"\n ref=\"rootRef\"\n @click=\"onOver\"\n @mouseover=\"onOver\"\n @mouseleave=\"onLeave\"\n >\n <slot />\n <Teleport v-if=\"$slots['tooltip'] && data.open\" to=\"body\">\n <Transition name=\"tooltip-transition\">\n <div v-if=\"data.tooltipOpen\" class=\"pl-tooltip__container\" :style=\"style\" @click.stop>\n <div\n ref=\"tooltip\"\n class=\"pl-tooltip\"\n :style=\"tooltipStyle\"\n :class=\"position\"\n @mouseover=\"onOver\"\n @mouseleave=\"onLeave\"\n >\n <!-- should be one line -->\n <div><slot name=\"tooltip\" /></div>\n <Beak />\n </div>\n </div>\n </Transition>\n </Teleport>\n </component>\n</template>\n"],"names":["__default__","emit","__emit","tKey","props","__props","data","reactive","tMap","closeTooltip","watch","v","clearTimeout","dispatchAdjust","utils.throttle","showTooltip","k","f","onOver","utils.delay","onLeave","utils.timeout","hide","rootRef","ref","tooltip","style","useTooltipPosition","toRef","useClickOutside","tooltipStyle","computed","onUnmounted","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","$attrs","_renderSlot","_ctx","$slots","_Teleport","_createVNode","_Transition","_createElementBlock","_unref","_createElementVNode","_normalizeClass","Beak"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Ref } from 'vue';
2
2
  type Options = {
3
- position: 'top-left' | 'right' | 'left' | 'top' | 'southwest';
3
+ position: "top-left" | "right" | "left" | "top" | "southwest";
4
4
  gap: number;
5
5
  };
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useTooltipPosition.js","sources":["../../../src/components/PlTooltip/useTooltipPosition.ts"],"sourcesContent":["import { computed, type Ref, ref, unref } from 'vue';\nimport { useElementPosition } from '../../composition/usePosition';\nimport type { ElementPosition } from '../../types';\n\ntype Options = {\n position: 'top-left' | 'right' | 'left' | 'top' | 'southwest';\n gap: number;\n};\n\n/**\n * A custom hook that calculates and returns the CSS style needed to position a tooltip\n * relative to a target HTML element based on the specified position and gap.\n */\nexport function useTooltipPosition(el: Ref<HTMLElement | undefined>, optionsRef: Ref<Options>) {\n const posRef = ref<ElementPosition>();\n\n useElementPosition(el, (v) => {\n posRef.value = v;\n });\n\n return computed(() => {\n const pos = unref(posRef);\n\n const options = unref(optionsRef);\n\n const position = options.position ?? 'top';\n\n const gap = options.gap ?? 8;\n\n if (!pos) {\n return '';\n }\n\n const offsetMiddleY = pos.offsetY + Math.floor(pos.height / 2);\n const offsetMiddleX = pos.offsetX + Math.floor(pos.width / 2);\n\n if (position === 'top-left') {\n return `left: ${pos.offsetX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === 'top') {\n return `left: ${offsetMiddleX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === 'right') {\n return `left: ${pos.offsetX + pos.width + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === 'left') {\n return `right: ${pos.scrollWidth - pos.x + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === 'southwest') {\n return `left: ${pos.offsetX + pos.width}px; top: ${pos.offsetY + pos.height + gap}px;`;\n }\n\n return '';\n });\n}\n"],"names":["useTooltipPosition","el","optionsRef","posRef","ref","useElementPosition","v","computed","pos","unref","options","position","gap","offsetMiddleY","offsetMiddleX"],"mappings":";;AAaO,SAASA,EAAmBC,GAAkCC,GAA0B;AAC7F,QAAMC,IAASC,EAAA;AAEf,SAAAC,EAAmBJ,GAAI,CAACK,MAAM;AAC5B,IAAAH,EAAO,QAAQG;AAAA,EACjB,CAAC,GAEMC,EAAS,MAAM;AACpB,UAAMC,IAAMC,EAAMN,CAAM,GAElBO,IAAUD,EAAMP,CAAU,GAE1BS,IAAWD,EAAQ,YAAY,OAE/BE,IAAMF,EAAQ,OAAO;AAE3B,QAAI,CAACF;AACH,aAAO;AAGT,UAAMK,IAAgBL,EAAI,UAAU,KAAK,MAAMA,EAAI,SAAS,CAAC,GACvDM,IAAgBN,EAAI,UAAU,KAAK,MAAMA,EAAI,QAAQ,CAAC;AAE5D,WAAIG,MAAa,aACR,SAASH,EAAI,OAAO,YAAYA,EAAI,UAAUI,CAAG,QAGtDD,MAAa,QACR,SAASG,CAAa,YAAYN,EAAI,UAAUI,CAAG,QAGxDD,MAAa,UACR,SAASH,EAAI,UAAUA,EAAI,QAAQI,CAAG,YAAYC,CAAa,QAGpEF,MAAa,SACR,UAAUH,EAAI,cAAcA,EAAI,IAAII,CAAG,YAAYC,CAAa,QAGrEF,MAAa,cACR,SAASH,EAAI,UAAUA,EAAI,KAAK,YAAYA,EAAI,UAAUA,EAAI,SAASI,CAAG,QAG5E;AAAA,EACT,CAAC;AACH;"}
1
+ {"version":3,"file":"useTooltipPosition.js","sources":["../../../src/components/PlTooltip/useTooltipPosition.ts"],"sourcesContent":["import { computed, type Ref, ref, unref } from \"vue\";\nimport { useElementPosition } from \"../../composition/usePosition\";\nimport type { ElementPosition } from \"../../types\";\n\ntype Options = {\n position: \"top-left\" | \"right\" | \"left\" | \"top\" | \"southwest\";\n gap: number;\n};\n\n/**\n * A custom hook that calculates and returns the CSS style needed to position a tooltip\n * relative to a target HTML element based on the specified position and gap.\n */\nexport function useTooltipPosition(el: Ref<HTMLElement | undefined>, optionsRef: Ref<Options>) {\n const posRef = ref<ElementPosition>();\n\n useElementPosition(el, (v) => {\n posRef.value = v;\n });\n\n return computed(() => {\n const pos = unref(posRef);\n\n const options = unref(optionsRef);\n\n const position = options.position ?? \"top\";\n\n const gap = options.gap ?? 8;\n\n if (!pos) {\n return \"\";\n }\n\n const offsetMiddleY = pos.offsetY + Math.floor(pos.height / 2);\n const offsetMiddleX = pos.offsetX + Math.floor(pos.width / 2);\n\n if (position === \"top-left\") {\n return `left: ${pos.offsetX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === \"top\") {\n return `left: ${offsetMiddleX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === \"right\") {\n return `left: ${pos.offsetX + pos.width + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === \"left\") {\n return `right: ${pos.scrollWidth - pos.x + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === \"southwest\") {\n return `left: ${pos.offsetX + pos.width}px; top: ${pos.offsetY + pos.height + gap}px;`;\n }\n\n return \"\";\n });\n}\n"],"names":["useTooltipPosition","el","optionsRef","posRef","ref","useElementPosition","v","computed","pos","unref","options","position","gap","offsetMiddleY","offsetMiddleX"],"mappings":";;AAaO,SAASA,EAAmBC,GAAkCC,GAA0B;AAC7F,QAAMC,IAASC,EAAA;AAEf,SAAAC,EAAmBJ,GAAI,CAACK,MAAM;AAC5B,IAAAH,EAAO,QAAQG;AAAA,EACjB,CAAC,GAEMC,EAAS,MAAM;AACpB,UAAMC,IAAMC,EAAMN,CAAM,GAElBO,IAAUD,EAAMP,CAAU,GAE1BS,IAAWD,EAAQ,YAAY,OAE/BE,IAAMF,EAAQ,OAAO;AAE3B,QAAI,CAACF;AACH,aAAO;AAGT,UAAMK,IAAgBL,EAAI,UAAU,KAAK,MAAMA,EAAI,SAAS,CAAC,GACvDM,IAAgBN,EAAI,UAAU,KAAK,MAAMA,EAAI,QAAQ,CAAC;AAE5D,WAAIG,MAAa,aACR,SAASH,EAAI,OAAO,YAAYA,EAAI,UAAUI,CAAG,QAGtDD,MAAa,QACR,SAASG,CAAa,YAAYN,EAAI,UAAUI,CAAG,QAGxDD,MAAa,UACR,SAASH,EAAI,UAAUA,EAAI,QAAQI,CAAG,YAAYC,CAAa,QAGpEF,MAAa,SACR,UAAUH,EAAI,cAAcA,EAAI,IAAII,CAAG,YAAYC,CAAa,QAGrEF,MAAa,cACR,SAASH,EAAI,UAAUA,EAAI,KAAK,YAAYA,EAAI,UAAUA,EAAI,SAASI,CAAG,QAG5E;AAAA,EACT,CAAC;AACH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scrollable.vue.d.ts","sourceRoot":"","sources":["../../src/components/Scrollable.vue"],"names":[],"mappings":"AA+IA,iBAAS,cAAc;WAkFT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAcD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;kBAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"Scrollable.vue.d.ts","sourceRoot":"","sources":["../../src/components/Scrollable.vue"],"names":[],"mappings":"AAiKA,iBAAS,cAAc;WAkFT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAcD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;kBAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -15,7 +15,16 @@ const E = { class: "ui-scrollable" }, B = /* @__PURE__ */ a({
15
15
  scrollWidth: 0
16
16
  });
17
17
  function r(e) {
18
- H(l, e, "scrollTop", "scrollLeft", "clientHeight", "clientWidth", "scrollHeight", "scrollWidth");
18
+ H(
19
+ l,
20
+ e,
21
+ "scrollTop",
22
+ "scrollLeft",
23
+ "clientHeight",
24
+ "clientWidth",
25
+ "scrollHeight",
26
+ "scrollWidth"
27
+ );
19
28
  }
20
29
  const i = (e) => {
21
30
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"Scrollable.vue.js","sources":["../../src/components/Scrollable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport VScroll from './VScroll.vue';\nimport HScroll from './HScroll.vue';\nimport { onMounted, onUnmounted, reactive, ref, unref } from 'vue';\nimport { tapIf, copyProps } from '../helpers/functions';\nimport { useResizeObserver } from '../composition/useResizeObserver';\n\nconst containerRef = ref<HTMLElement>();\n\nconst data = reactive({\n scrollTop: 0,\n scrollLeft: 0,\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n});\n\nfunction updateState(container: HTMLElement) {\n copyProps(data, container, 'scrollTop', 'scrollLeft', 'clientHeight', 'clientWidth', 'scrollHeight', 'scrollWidth');\n}\n\nconst onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const root = e.currentTarget as HTMLElement;\n root.scrollTop += e.deltaY;\n root.scrollLeft += e.deltaX;\n updateState(root);\n};\n\nfunction updateTop(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollTop = v;\n updateState(el);\n });\n}\n\nfunction updateLeft(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollLeft = v;\n updateState(el);\n });\n}\n\nuseResizeObserver(containerRef, (el) => {\n tapIf(el, (el) => updateState(el));\n});\n\nonMounted(() => {\n tapIf(unref(containerRef), (root) => {\n updateState(root);\n root.addEventListener('wheel', onWheel);\n });\n});\n\nonUnmounted(() => {\n tapIf(unref(containerRef), (root) => root.removeEventListener('wheel', onWheel));\n});\n</script>\n\n<template>\n <div class=\"ui-scrollable\">\n <div ref=\"containerRef\" class=\"ui-scrollable__container\" @wheel=\"onWheel\">\n <slot />\n </div>\n <VScroll\n :scroll-top=\"data.scrollTop\"\n :client-height=\"data.clientHeight\"\n :scroll-height=\"data.scrollHeight\"\n @wheel.stop\n @update:scroll-top=\"updateTop\"\n />\n <HScroll\n :scroll-left=\"data.scrollLeft\"\n :client-width=\"data.clientWidth\"\n :scroll-width=\"data.scrollWidth\"\n @wheel.stop\n @update:scroll-left=\"updateLeft\"\n />\n </div>\n</template>\n"],"names":["containerRef","ref","data","reactive","updateState","container","copyProps","onWheel","root","updateTop","v","tapIf","unref","el","updateLeft","useResizeObserver","onMounted","onUnmounted","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_renderSlot","_ctx","_createVNode","VScroll","HScroll"],"mappings":";;;;;;;;AAOA,UAAMA,IAAeC,EAAA,GAEfC,IAAOC,EAAS;AAAA,MACpB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,aAASC,EAAYC,GAAwB;AAC3C,MAAAC,EAAUJ,GAAMG,GAAW,aAAa,cAAc,gBAAgB,eAAe,gBAAgB,aAAa;AAAA,IACpH;AAEA,UAAME,IAAU,CAAC,MAAkB;AACjC,QAAE,eAAA;AACF,YAAMC,IAAO,EAAE;AACf,MAAAA,EAAK,aAAa,EAAE,QACpBA,EAAK,cAAc,EAAE,QACrBJ,EAAYI,CAAI;AAAA,IAClB;AAEA,aAASC,EAAUC,GAAW;AAC5B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,YAAYH,GACfN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,aAASC,EAAWJ,GAAW;AAC7B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,aAAaH,GAChBN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,WAAAE,EAAkBf,GAAc,CAACa,MAAO;AACtC,MAAAF,EAAME,GAAI,CAACA,MAAOT,EAAYS,CAAE,CAAC;AAAA,IACnC,CAAC,GAEDG,EAAU,MAAM;AACd,MAAAL,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAAS;AACnC,QAAAJ,EAAYI,CAAI,GAChBA,EAAK,iBAAiB,SAASD,CAAO;AAAA,MACxC,CAAC;AAAA,IACH,CAAC,GAEDU,EAAY,MAAM;AAChB,MAAAN,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAASA,EAAK,oBAAoB,SAASD,CAAO,CAAC;AAAA,IACjF,CAAC,cAICW,EAAA,GAAAC,EAkBM,OAlBNC,GAkBM;AAAA,MAjBJC,EAEM,OAAA;AAAA,iBAFG;AAAA,QAAJ,KAAIrB;AAAA,QAAe,OAAM;AAAA,QAA4B,SAAAO;AAAA,MAAA;QACxDe,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;MAEVC,EAMEC,GAAA;AAAA,QALC,cAAYvB,EAAK;AAAA,QACjB,iBAAeA,EAAK;AAAA,QACpB,iBAAeA,EAAK;AAAA,QACpB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,sBAAmBO;AAAA,MAAA;MAEtBe,EAMEE,GAAA;AAAA,QALC,eAAaxB,EAAK;AAAA,QAClB,gBAAcA,EAAK;AAAA,QACnB,gBAAcA,EAAK;AAAA,QACnB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,uBAAoBY;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"Scrollable.vue.js","sources":["../../src/components/Scrollable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport VScroll from \"./VScroll.vue\";\nimport HScroll from \"./HScroll.vue\";\nimport { onMounted, onUnmounted, reactive, ref, unref } from \"vue\";\nimport { tapIf, copyProps } from \"../helpers/functions\";\nimport { useResizeObserver } from \"../composition/useResizeObserver\";\n\nconst containerRef = ref<HTMLElement>();\n\nconst data = reactive({\n scrollTop: 0,\n scrollLeft: 0,\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n});\n\nfunction updateState(container: HTMLElement) {\n copyProps(\n data,\n container,\n \"scrollTop\",\n \"scrollLeft\",\n \"clientHeight\",\n \"clientWidth\",\n \"scrollHeight\",\n \"scrollWidth\",\n );\n}\n\nconst onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const root = e.currentTarget as HTMLElement;\n root.scrollTop += e.deltaY;\n root.scrollLeft += e.deltaX;\n updateState(root);\n};\n\nfunction updateTop(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollTop = v;\n updateState(el);\n });\n}\n\nfunction updateLeft(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollLeft = v;\n updateState(el);\n });\n}\n\nuseResizeObserver(containerRef, (el) => {\n tapIf(el, (el) => updateState(el));\n});\n\nonMounted(() => {\n tapIf(unref(containerRef), (root) => {\n updateState(root);\n root.addEventListener(\"wheel\", onWheel);\n });\n});\n\nonUnmounted(() => {\n tapIf(unref(containerRef), (root) => root.removeEventListener(\"wheel\", onWheel));\n});\n</script>\n\n<template>\n <div class=\"ui-scrollable\">\n <div ref=\"containerRef\" class=\"ui-scrollable__container\" @wheel=\"onWheel\">\n <slot />\n </div>\n <VScroll\n :scroll-top=\"data.scrollTop\"\n :client-height=\"data.clientHeight\"\n :scroll-height=\"data.scrollHeight\"\n @wheel.stop\n @update:scroll-top=\"updateTop\"\n />\n <HScroll\n :scroll-left=\"data.scrollLeft\"\n :client-width=\"data.clientWidth\"\n :scroll-width=\"data.scrollWidth\"\n @wheel.stop\n @update:scroll-left=\"updateLeft\"\n />\n </div>\n</template>\n"],"names":["containerRef","ref","data","reactive","updateState","container","copyProps","onWheel","root","updateTop","v","tapIf","unref","el","updateLeft","useResizeObserver","onMounted","onUnmounted","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_renderSlot","_ctx","_createVNode","VScroll","HScroll"],"mappings":";;;;;;;;AAOA,UAAMA,IAAeC,EAAA,GAEfC,IAAOC,EAAS;AAAA,MACpB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,aAASC,EAAYC,GAAwB;AAC3C,MAAAC;AAAA,QACEJ;AAAA,QACAG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAME,IAAU,CAAC,MAAkB;AACjC,QAAE,eAAA;AACF,YAAMC,IAAO,EAAE;AACf,MAAAA,EAAK,aAAa,EAAE,QACpBA,EAAK,cAAc,EAAE,QACrBJ,EAAYI,CAAI;AAAA,IAClB;AAEA,aAASC,EAAUC,GAAW;AAC5B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,YAAYH,GACfN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,aAASC,EAAWJ,GAAW;AAC7B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,aAAaH,GAChBN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,WAAAE,EAAkBf,GAAc,CAACa,MAAO;AACtC,MAAAF,EAAME,GAAI,CAACA,MAAOT,EAAYS,CAAE,CAAC;AAAA,IACnC,CAAC,GAEDG,EAAU,MAAM;AACd,MAAAL,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAAS;AACnC,QAAAJ,EAAYI,CAAI,GAChBA,EAAK,iBAAiB,SAASD,CAAO;AAAA,MACxC,CAAC;AAAA,IACH,CAAC,GAEDU,EAAY,MAAM;AAChB,MAAAN,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAASA,EAAK,oBAAoB,SAASD,CAAO,CAAC;AAAA,IACjF,CAAC,cAICW,EAAA,GAAAC,EAkBM,OAlBNC,GAkBM;AAAA,MAjBJC,EAEM,OAAA;AAAA,iBAFG;AAAA,QAAJ,KAAIrB;AAAA,QAAe,OAAM;AAAA,QAA4B,SAAAO;AAAA,MAAA;QACxDe,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;MAEVC,EAMEC,GAAA;AAAA,QALC,cAAYvB,EAAK;AAAA,QACjB,iBAAeA,EAAK;AAAA,QACpB,iBAAeA,EAAK;AAAA,QACpB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,sBAAmBO;AAAA,MAAA;MAEtBe,EAMEE,GAAA;AAAA,QALC,eAAaxB,EAAK;AAAA,QAClB,gBAAcA,EAAK;AAAA,QACnB,gBAAcA,EAAK;AAAA,QACnB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,uBAAoBY;AAAA,MAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.vue.d.ts","sourceRoot":"","sources":["../../src/components/Slider.vue"],"names":[],"mappings":"AAgMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAgIJ,iBAAS,cAAc;WAkIT,OAAO,IAA6B;;yBAZrB,GAAG;;;;;;;EAiB/B;AAqBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WApST,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;kBAySvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"Slider.vue.d.ts","sourceRoot":"","sources":["../../src/components/Slider.vue"],"names":[],"mappings":"AAwNA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAsIJ,iBAAS,cAAc;WAkIT,OAAO,IAA6B;;yBAZrB,GAAG;;;;;;;EAiB/B;AAqBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WA1ST,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;kBA+SvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -55,7 +55,9 @@ const W = { class: "ui-slider__wrapper" }, X = { class: "ui-slider__label-sectio
55
55
  var o;
56
56
  H((o = _(w)) == null ? void 0 : o.getBoundingClientRect(), (u) => {
57
57
  const { dx: f } = t;
58
- d.deltaValue = f / u.width * y.value, c.value = p(b((e.modelValue ?? 0) + d.deltaValue, e.min, e.max)), t.stop && (V("update:modelValue", p(x.value)), d.deltaValue = 0);
58
+ d.deltaValue = f / u.width * y.value, c.value = p(
59
+ b((e.modelValue ?? 0) + d.deltaValue, e.min, e.max)
60
+ ), t.stop && (V("update:modelValue", p(x.value)), d.deltaValue = 0);
59
61
  });
60
62
  });
61
63
  function M(t) {
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.vue.js","sources":["../../src/components/Slider.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: number;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue: 0,\n});\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue = computed(() => {\n return clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max);\n});\n\nconst realtimeVal = ref(props.modelValue);\n\nconst error = computed(() => {\n const v = props.modelValue;\n\n if (!Number.isFinite(v)) {\n return 'Not a number';\n }\n\n if (v < props.min) {\n return `Min value: ${props.min}`;\n }\n\n if (v > props.max) {\n return `Max value: ${props.max}`;\n }\n\n return getErrorMessage(props.error);\n});\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst position = computed(() => {\n return (localValue.value - props.min) / range.value;\n});\n\nconst progressStyle = computed(() => ({\n right: Math.ceil((1 - position.value) * 100) + '%',\n}));\n\nconst thumbStyle = computed(() => {\n const value = Math.ceil((1 - position.value) * 100);\n return {\n right: `calc(${value}%) `,\n };\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef = ref<HTMLElement>();\n\nwatch(\n () => props.modelValue,\n (val) => {\n realtimeVal.value = val;\n },\n);\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nuseMouseCapture(thumbRef, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue = (dx / rect.width) * range.value;\n\n realtimeVal.value = round(clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max));\n\n if (ev.stop) {\n emit('update:modelValue', round(localValue.value));\n data.deltaValue = 0;\n }\n });\n});\n\nfunction setModelValue(value: number) {\n emit('update:modelValue', round(value));\n}\n\nfunction updateModelValue(event: Event) {\n setModelValue(+(event.target as HTMLInputElement).value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n setModelValue(props.modelValue + nextStep);\n}\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">{{ realtimeVal }}{{ measure }}</div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div ref=\"thumbRef\" tabindex=\"0\" class=\"ui-slider__thumb ui-slider__thumb-active\" :style=\"thumbStyle\" @keydown=\"handleKeyPress\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <input v-if=\"props.mode === 'input'\" :value=\"realtimeVal\" class=\"ui-slider__value text-s\" @change=\"updateModelValue($event)\" />\n </div>\n </div>\n <!-- <div v-if=\"props.helper\" class=\"ui-slider__helper\">\n {{ props.helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","range","computed","localValue","clamp","realtimeVal","ref","error","v","getErrorMessage","propsRef","breakpointsRef","useSliderBreakpoints","position","progressStyle","thumbStyle","barRef","thumbRef","watch","val","round","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","setModelValue","updateModelValue","event","handleKeyPress","e","nextStep","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","index","_hoisted_8","_cache","$event","_hoisted_10"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.vue.js","sources":["../../src/components/Slider.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: number;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue: 0,\n});\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue = computed(() => {\n return clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max);\n});\n\nconst realtimeVal = ref(props.modelValue);\n\nconst error = computed(() => {\n const v = props.modelValue;\n\n if (!Number.isFinite(v)) {\n return \"Not a number\";\n }\n\n if (v < props.min) {\n return `Min value: ${props.min}`;\n }\n\n if (v > props.max) {\n return `Max value: ${props.max}`;\n }\n\n return getErrorMessage(props.error);\n});\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst position = computed(() => {\n return (localValue.value - props.min) / range.value;\n});\n\nconst progressStyle = computed(() => ({\n right: Math.ceil((1 - position.value) * 100) + \"%\",\n}));\n\nconst thumbStyle = computed(() => {\n const value = Math.ceil((1 - position.value) * 100);\n return {\n right: `calc(${value}%) `,\n };\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef = ref<HTMLElement>();\n\nwatch(\n () => props.modelValue,\n (val) => {\n realtimeVal.value = val;\n },\n);\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nuseMouseCapture(thumbRef, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue = (dx / rect.width) * range.value;\n\n realtimeVal.value = round(\n clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max),\n );\n\n if (ev.stop) {\n emit(\"update:modelValue\", round(localValue.value));\n data.deltaValue = 0;\n }\n });\n});\n\nfunction setModelValue(value: number) {\n emit(\"update:modelValue\", round(value));\n}\n\nfunction updateModelValue(event: Event) {\n setModelValue(+(event.target as HTMLInputElement).value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n setModelValue(props.modelValue + nextStep);\n}\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">\n {{ realtimeVal }}{{ measure }}\n </div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef\"\n tabindex=\"0\"\n class=\"ui-slider__thumb ui-slider__thumb-active\"\n :style=\"thumbStyle\"\n @keydown=\"handleKeyPress\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <input\n v-if=\"props.mode === 'input'\"\n :value=\"realtimeVal\"\n class=\"ui-slider__value text-s\"\n @change=\"updateModelValue($event)\"\n />\n </div>\n </div>\n <!-- <div v-if=\"props.helper\" class=\"ui-slider__helper\">\n {{ props.helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","range","computed","localValue","clamp","realtimeVal","ref","error","v","getErrorMessage","propsRef","breakpointsRef","useSliderBreakpoints","position","progressStyle","thumbStyle","barRef","thumbRef","watch","val","round","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","setModelValue","updateModelValue","event","handleKeyPress","e","nextStep","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","index","_hoisted_8","_cache","$event","_hoisted_10"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRange.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRange.vue"],"names":[],"mappings":"AAwOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAS3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmKJ,iBAAS,cAAc;WA6JT,OAAO,IAA6B;;yBAbrB,GAAG;;;;;;;;EAkB/B;AAyBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAtWT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;OA0WvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"SliderRange.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRange.vue"],"names":[],"mappings":"AAgRA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAS3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmLJ,iBAAS,cAAc;WA6JT,OAAO,IAA6B;;yBAbrB,GAAG;;;;;;;;EAkB/B;AAyBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAtXT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;OA0XvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -35,7 +35,11 @@ const re = { class: "ui-slider__wrapper" }, ue = { class: "ui-slider__label-sect
35
35
  const I = W(), P = F, e = g, r = X({
36
36
  deltaValue1: 0,
37
37
  deltaValue2: 0
38
- }), x = d(), S = d(), B = d(), f = d(e.modelValue), v = d(e.modelValue[0]), _ = d(e.modelValue[1]), j = a(() => e), O = ae(j), q = a(() => [v.value, _.value].sort((t, l) => t - l).join("-")), h = a(() => e.max - e.min), w = a(() => p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)), k = a(() => p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)), C = a(() => {
38
+ }), x = d(), S = d(), B = d(), f = d(e.modelValue), v = d(e.modelValue[0]), _ = d(e.modelValue[1]), j = a(() => e), O = ae(j), q = a(
39
+ () => [v.value, _.value].sort((t, l) => t - l).join("-")
40
+ ), h = a(() => e.max - e.min), w = a(() => p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)), k = a(
41
+ () => p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)
42
+ ), C = a(() => {
39
43
  const t = e.modelValue;
40
44
  return Array.isArray(t) && t.length === 2 && t.every((o) => Number.isFinite(o)) ? ie(e.error) : "Expected model [number, number]";
41
45
  }), D = a(() => (w.value - e.min) / h.value), E = a(() => (k.value - e.min) / h.value), L = a(() => Q()), G = a(() => ({
@@ -56,13 +60,21 @@ const re = { class: "ui-slider__wrapper" }, ue = { class: "ui-slider__label-sect
56
60
  var l;
57
61
  z((l = b(x)) == null ? void 0 : l.getBoundingClientRect(), (o) => {
58
62
  const { dx: i } = t;
59
- r.deltaValue1 = i / o.width * h.value, v.value = n(p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)), f.value = [v.value, _.value].sort((R, A) => R - A), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue1 = 0);
63
+ r.deltaValue1 = i / o.width * h.value, v.value = n(
64
+ p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)
65
+ ), f.value = [v.value, _.value].sort(
66
+ (R, A) => R - A
67
+ ), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue1 = 0);
60
68
  });
61
69
  }), U(B, (t) => {
62
70
  var l;
63
71
  z((l = b(x)) == null ? void 0 : l.getBoundingClientRect(), (o) => {
64
72
  const { dx: i } = t;
65
- r.deltaValue2 = i / o.width * h.value, _.value = n(p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)), f.value = [v.value, _.value].sort((R, A) => R - A), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue2 = 0);
73
+ r.deltaValue2 = i / o.width * h.value, _.value = n(
74
+ p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)
75
+ ), f.value = [v.value, _.value].sort(
76
+ (R, A) => R - A
77
+ ), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue2 = 0);
66
78
  });
67
79
  });
68
80
  function Q() {
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRange.vue.js","sources":["../../src/components/SliderRange.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport InputRange from './InputRange.vue';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: [number, number];\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst inputRange = ref<[number, number]>(props.modelValue);\nconst leftDelta = ref(props.modelValue[0]);\nconst rightDelta = ref(props.modelValue[1]);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst textModelValue = computed(() => [leftDelta.value, rightDelta.value].sort((a, b) => a - b).join('-'));\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue1 = computed(() => {\n return clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max);\n});\n\nconst localValue2 = computed(() => clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 2 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return 'Expected model [number, number]';\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + '%',\n left: 100 - leftRight.value[1] + '%',\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + '%',\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + '%',\n}));\n\nwatch(\n () => props.modelValue,\n (value: [number, number]) => {\n inputRange.value = value;\n leftDelta.value = +value[0];\n rightDelta.value = +value[1];\n },\n { immediate: true },\n);\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n leftDelta.value = round(clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max));\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort((a, b) => a - b);\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n rightDelta.value = round(clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort((a, b) => a - b);\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n return [point1, point2].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: [number, number]) {\n emit('update:modelValue', value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n const arr: [number, number] = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n}\n</script>\n\n<template>\n <!-- {{ leftDelta }} {{ rightDelta }} -->\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">{{ textModelValue }}</div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div ref=\"thumbRef1\" :style=\"thumbStyle1\" class=\"ui-slider__thumb\" tabindex=\"0\" @keydown=\"handleKeyPress($event, 0)\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div ref=\"thumbRef2\" :style=\"thumbStyle2\" class=\"ui-slider__thumb\" tabindex=\"0\" @keydown=\"handleKeyPress($event, 1)\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" @change=\"setModelValue\" />\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","inputRange","leftDelta","rightDelta","propsRef","computed","breakpointsRef","useSliderBreakpoints","textModelValue","a","b","range","localValue1","clamp","localValue2","error","v","it","getErrorMessage","position1","position2","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","watch","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","round","setModelValue","point1","point2","handleKeyPress","e","index","nextStep","arr","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","_cache","$event","_hoisted_8","InputRange","_hoisted_9"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAMA,IAAQC,EAAA,GAERC,IAAOC,GAEPC,IAAQC,GA2BRC,IAAOC,EAAS;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,IAAA,CACd,GAEKC,IAASC,EAAA,GACTC,IAAYD,EAAA,GACZE,IAAYF,EAAA,GACZG,IAAaH,EAAsBL,EAAM,UAAU,GACnDS,IAAYJ,EAAIL,EAAM,WAAW,CAAC,CAAC,GACnCU,IAAaL,EAAIL,EAAM,WAAW,CAAC,CAAC,GAEpCW,IAAWC,EAAS,MAAMZ,CAAK,GAE/Ba,IAAiBC,GAAqBH,CAAQ,GAE9CI,IAAiBH,EAAS,MAAM,CAACH,EAAU,OAAOC,EAAW,KAAK,EAAE,KAAK,CAACM,GAAGC,MAAMD,IAAIC,CAAC,EAAE,KAAK,GAAG,CAAC,GAEnGC,IAAQN,EAAS,MAAMZ,EAAM,MAAMA,EAAM,GAAG,GAE5CmB,IAAcP,EAAS,MACpBQ,GAAOpB,EAAM,WAAW,CAAC,KAAK,KAAKE,EAAK,aAAaF,EAAM,KAAKA,EAAM,GAAG,CACjF,GAEKqB,IAAcT,EAAS,MAAMQ,GAAOpB,EAAM,WAAW,CAAC,KAAK,KAAKE,EAAK,aAAaF,EAAM,KAAKA,EAAM,GAAG,CAAC,GAEvGsB,IAAQV,EAAS,MAAM;AAC3B,YAAMW,IAAIvB,EAAM;AAIhB,aAFqB,MAAM,QAAQuB,CAAC,KAAKA,EAAE,WAAW,KAAKA,EAAE,MAAM,CAACC,MAAO,OAAO,SAASA,CAAE,CAAC,IAMvFC,GAAgBzB,EAAM,KAAK,IAHzB;AAAA,IAIX,CAAC,GAEK0B,IAAYd,EAAS,OACjBO,EAAY,QAAQnB,EAAM,OAAOkB,EAAM,KAChD,GAEKS,IAAYf,EAAS,OACjBS,EAAY,QAAQrB,EAAM,OAAOkB,EAAM,KAChD,GAEKU,IAAYhB,EAAS,MAAMiB,GAAiB,GAE5CC,IAAgBlB,EAAS,OAAO;AAAA,MACpC,OAAOgB,EAAU,MAAM,CAAC,IAAI;AAAA,MAC5B,MAAM,MAAMA,EAAU,MAAM,CAAC,IAAI;AAAA,IAAA,EACjC,GAEIG,IAAcnB,EAAS,OAAO;AAAA,MAClC,OAAO,KAAK,MAAM,IAAIc,EAAU,SAAS,GAAG,IAAI;AAAA,IAAA,EAChD,GAEIM,IAAcpB,EAAS,OAAO;AAAA,MAClC,OAAO,KAAK,MAAM,IAAIe,EAAU,SAAS,GAAG,IAAI;AAAA,IAAA,EAChD;AAEF,IAAAM;AAAA,MACE,MAAMjC,EAAM;AAAA,MACZ,CAACkC,MAA4B;AAC3B,QAAA1B,EAAW,QAAQ0B,GACnBzB,EAAU,QAAQ,CAACyB,EAAM,CAAC,GAC1BxB,EAAW,QAAQ,CAACwB,EAAM,CAAC;AAAA,MAC7B;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAGpBC,EAAgB7B,GAAW,CAAC8B,MAAO;;AACjC,MAAAC,GAAMC,IAAAC,EAAMnC,CAAM,MAAZ,gBAAAkC,EAAe,yBAAyB,CAACE,MAAS;AACtD,cAAM,EAAE,IAAAC,MAAOL;AAEf,QAAAlC,EAAK,cAAeuC,IAAKD,EAAK,QAAStB,EAAM,OAE7CT,EAAU,QAAQiC,EAAMtB,GAAOpB,EAAM,WAAW,CAAC,KAAK,KAAKE,EAAK,aAAaF,EAAM,KAAKA,EAAM,GAAG,CAAC,GAElGQ,EAAW,QAAS,CAACC,EAAU,OAAOC,EAAW,KAAK,EAAuB,KAAK,CAACM,GAAGC,MAAMD,IAAIC,CAAC,GAE7FmB,EAAG,SACLO,EAAc,CAACD,EAAMvB,EAAY,KAAK,GAAGuB,EAAMrB,EAAY,KAAK,CAAC,CAAC,GAClEnB,EAAK,cAAc;AAAA,MAEvB,CAAC;AAAA,IACH,CAAC,GAEDiC,EAAgB5B,GAAW,CAAC6B,MAAO;;AACjC,MAAAC,GAAMC,IAAAC,EAAMnC,CAAM,MAAZ,gBAAAkC,EAAe,yBAAyB,CAACE,MAAS;AACtD,cAAM,EAAE,IAAAC,MAAOL;AAEf,QAAAlC,EAAK,cAAeuC,IAAKD,EAAK,QAAStB,EAAM,OAE7CR,EAAW,QAAQgC,EAAMtB,GAAOpB,EAAM,WAAW,CAAC,KAAK,KAAKE,EAAK,aAAaF,EAAM,KAAKA,EAAM,GAAG,CAAC,GAEnGQ,EAAW,QAAS,CAACC,EAAU,OAAOC,EAAW,KAAK,EAAuB,KAAK,CAACM,GAAGC,MAAMD,IAAIC,CAAC,GAE7FmB,EAAG,SACLO,EAAc,CAACD,EAAMvB,EAAY,KAAK,GAAGuB,EAAMrB,EAAY,KAAK,CAAC,CAAC,GAClEnB,EAAK,cAAc;AAAA,MAEvB,CAAC;AAAA,IACH,CAAC;AAED,aAAS2B,IAAkB;AACzB,YAAMe,IAAS,KAAK,MAAM,IAAIlB,EAAU,SAAS,GAAG,GAC9CmB,IAAS,KAAK,MAAM,IAAIlB,EAAU,SAAS,GAAG;AACpD,aAAO,CAACiB,GAAQC,CAAM,EAAE,KAAK,CAAC7B,GAAGC,MAAMD,IAAIC,CAAC;AAAA,IAC9C;AAEA,aAASyB,EAAMR,GAAe;AAC5B,YAAMX,IAAIH,EAAMc,GAAOlC,EAAM,KAAKA,EAAM,GAAG;AAE3C,aAAO,KAAK,OAAOuB,IAAI,OAAO,YAAY,IAAIvB,EAAM,KAAK,KAAK,IAAIA,EAAM;AAAA,IAC1E;AAEA,aAAS2C,EAAcT,GAAyB;AAC9C,MAAApC,EAAK,qBAAqBoC,CAAK;AAAA,IACjC;AAEA,aAASY,EAAeC,GAA6CC,GAAe;AAClF,MAAI,CAAC,aAAa,WAAW,cAAc,aAAa,OAAO,EAAE,SAASD,EAAE,IAAI,KAC9EA,EAAE,eAAA;AAGJ,YAAME,IACFF,EAAE,SAAS,aAAaA,EAAE,SAAS,eAAe/C,EAAM,OAAO,IAAI+C,EAAE,SAAS,eAAeA,EAAE,SAAS,cAAc/C,EAAM,OAAO,KAAK,GAEtIkD,IAAwB,CAAC,GAAGlD,EAAM,UAAU;AAClD,MAAAkD,EAAIF,CAAK,IAAI5B,EAAM8B,EAAIF,CAAK,IAAIC,GAAUjD,EAAM,KAAKA,EAAM,GAAG,GAC9D2C,EAAcO,CAAG;AAAA,IACnB;2BAKEC,EA4CM,OAAA;AAAA,MA5CA,UAAOnD,EAAM,WAAQ,wBAA2B,QAAiB,qBAAqB,CAAA;AAAA,IAAA;MAC1FoD,EAoCM,OAAA;AAAA,QApCA,OAAKC,EAAA,CAAA,mBAAqBrD,EAAM,IAAI,IAAU,WAAW,CAAA;AAAA,MAAA;QAC7DoD,EA8BM,OA9BNE,IA8BM;AAAA,UA7BJF,EAUM,OAVNG,IAUM;AAAA,YATStD,EAAA,SAAbuD,EAAA,GAAAL,EAOQ,SAPRM,IAOQ;AAAA,cANNL,EAAwB,gBAAfnD,EAAA,KAAK,GAAA,CAAA;AAAA,cACGyD,EAAA9D,CAAA,EAAM,gBAAvB+D,EAIYD,EAAAE,EAAA,GAAA;AAAA;gBAJoB,OAAM;AAAA,gBAAO,UAAS;AAAA,cAAA;gBACzC,WACT,MAAuB;AAAA,kBAAvBC,GAAuBC,EAAA,QAAA,SAAA;AAAA,gBAAA;;;;YAIlB9D,EAAM,SAAI,eAArBmD,EAAmG,OAAnGY,IAAmGC,EAAvBjD,EAAA,KAAc,GAAA,CAAA;;UAE5FqC,EAiBM,OAjBNa,IAiBM;AAAA,YAhBJb,EAIM,OAJNc,IAIM;AAAA,cAHJd,EAEM,OAAA;AAAA,yBAFG;AAAA,gBAAJ,KAAIhD;AAAA,gBAAS,OAAM;AAAA,cAAA;gBACtBgD,EAA0D,OAAA;AAAA,kBAArD,OAAM;AAAA,kBAAuB,SAAOtB,EAAA,KAAa;AAAA,gBAAA;;;YAG1DsB,EAUM,OAVNe,IAUM;AAAA,cATYnE,EAAM,eACpBwD,EAAA,EAAA,GAAAL,EAAwHiB,IAAA,EAAA,KAAA,EAAA,GAAAC,GAA3FX,EAAA7C,CAAA,GAAc,CAA9ByD,GAAMtB,YAAnBG,EAAwH,OAAA;AAAA,gBAA1E,KAAKH;AAAA,gBAAQ,qBAAmBsB,CAAI,KAAA;AAAA,gBAAO,OAAM;AAAA,cAAA;cAEjGlB,EAEM,OAAA;AAAA,yBAFG;AAAA,gBAAJ,KAAI9C;AAAA,gBAAa,SAAOyB,EAAA,KAAW;AAAA,gBAAE,OAAM;AAAA,gBAAmB,UAAS;AAAA,gBAAK,WAAOwC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE1B,EAAe0B,GAAM,CAAA;AAAA,cAAA;gBAC7GpB,EAAgD,OAAA,EAA3C,OAAM,mCAAA,GAAkC,MAAA,EAAA;AAAA,cAAA;cAE/CA,EAEM,OAAA;AAAA,yBAFG;AAAA,gBAAJ,KAAI7C;AAAA,gBAAa,SAAOyB,EAAA,KAAW;AAAA,gBAAE,OAAM;AAAA,gBAAmB,UAAS;AAAA,gBAAK,WAAOuC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE1B,EAAe0B,GAAM,CAAA;AAAA,cAAA;gBAC7GpB,EAAgD,OAAA,EAA3C,OAAM,mCAAA,GAAkC,MAAA,EAAA;AAAA,cAAA;;;;QAMrDA,EAEM,OAFNqB,IAEM;AAAA,UADczE,EAAM,SAAI,gBAA5B2D,EAAmHe,IAAA;AAAA;wBAAhElE,EAAA;AAAA,0DAAAA,EAAU,QAAAgE;AAAA,YAAE,OAAM;AAAA,YAAqB,UAAQ7B;AAAA,UAAA;;;MAM3FrB,EAAA,cAAX6B,EAEM,OAFNwB,IAEMX,EADD1C,EAAA,KAAK,GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"SliderRange.vue.js","sources":["../../src/components/SliderRange.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport InputRange from \"./InputRange.vue\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: [number, number];\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst inputRange = ref<[number, number]>(props.modelValue);\nconst leftDelta = ref(props.modelValue[0]);\nconst rightDelta = ref(props.modelValue[1]);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst textModelValue = computed(() =>\n [leftDelta.value, rightDelta.value].sort((a, b) => a - b).join(\"-\"),\n);\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue1 = computed(() => {\n return clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max);\n});\n\nconst localValue2 = computed(() =>\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n);\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 2 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return \"Expected model [number, number]\";\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + \"%\",\n left: 100 - leftRight.value[1] + \"%\",\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + \"%\",\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + \"%\",\n}));\n\nwatch(\n () => props.modelValue,\n (value: [number, number]) => {\n inputRange.value = value;\n leftDelta.value = +value[0];\n rightDelta.value = +value[1];\n },\n { immediate: true },\n);\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n leftDelta.value = round(\n clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max),\n );\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort(\n (a, b) => a - b,\n );\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n rightDelta.value = round(\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n );\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort(\n (a, b) => a - b,\n );\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n return [point1, point2].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: [number, number]) {\n emit(\"update:modelValue\", value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n const arr: [number, number] = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n}\n</script>\n\n<template>\n <!-- {{ leftDelta }} {{ rightDelta }} -->\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">\n {{ textModelValue }}\n </div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n class=\"ui-slider__thumb\"\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n class=\"ui-slider__thumb\"\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <InputRange\n v-if=\"props.mode === 'input'\"\n v-model=\"inputRange\"\n class=\"ui-focused-border\"\n @change=\"setModelValue\"\n />\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","inputRange","leftDelta","rightDelta","propsRef","computed","breakpointsRef","useSliderBreakpoints","textModelValue","a","b","range","localValue1","clamp","localValue2","error","v","it","getErrorMessage","position1","position2","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","watch","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","round","setModelValue","point1","point2","handleKeyPress","e","index","nextStep","arr","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","_cache","$event","_hoisted_8","InputRange","_hoisted_9"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRangeTriple.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRangeTriple.vue"],"names":[],"mappings":"AA6TA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAK1C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA4NJ,iBAAS,cAAc;WAyJT,OAAO,IAA6B;;yBAdrB,GAAG;;;;;;;;;EAmB/B;AAuBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAzZT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;;kBA8ZvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"SliderRangeTriple.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRangeTriple.vue"],"names":[],"mappings":"AA+UA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAK1C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAsOJ,iBAAS,cAAc;WAyJT,OAAO,IAA6B;;yBAdrB,GAAG;;;;;;;;;EAmB/B;AAuBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAnaT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;;kBAwavB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -32,7 +32,13 @@ const ue = { class: "ui-slider__wrapper" }, ne = { class: "ui-slider__label-sect
32
32
  deltaValue1: 0,
33
33
  deltaValue2: 0,
34
34
  deltaValue3: 0
35
- }), b = w(), p = w(), v = w(), f = w(), n = r(() => e.max - e.min), O = r(() => e), q = re(O), g = r(() => c((e.modelValue[0] ?? 0) + s.deltaValue1, e.min, e.max)), V = r(() => c((e.modelValue[1] ?? 0) + s.deltaValue2, e.min, e.max)), y = r(() => c((e.modelValue[2] ?? 0) + s.deltaValue3, e.min, e.max)), L = r(() => {
35
+ }), b = w(), p = w(), v = w(), f = w(), n = r(() => e.max - e.min), O = r(() => e), q = re(O), g = r(
36
+ () => c((e.modelValue[0] ?? 0) + s.deltaValue1, e.min, e.max)
37
+ ), V = r(
38
+ () => c((e.modelValue[1] ?? 0) + s.deltaValue2, e.min, e.max)
39
+ ), y = r(
40
+ () => c((e.modelValue[2] ?? 0) + s.deltaValue3, e.min, e.max)
41
+ ), L = r(() => {
36
42
  const l = e.modelValue;
37
43
  if (!(Array.isArray(l) && l.length === 3 && l.every((a) => Number.isFinite(a))))
38
44
  return "Expected model [number, number, number]";
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRangeTriple.vue.js","sources":["../../src/components/SliderRangeTriple.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, unref, useSlots } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\ntype ModelType = [number, number, number];\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: ModelType;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '%',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n deltaValue3: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst thumbRef3 = ref<HTMLElement>();\n\nconst range = computed(() => props.max - props.min);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst localValue1 = computed(() => clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max));\nconst localValue2 = computed(() => clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\nconst localValue3 = computed(() => clamp((props.modelValue[2] ?? 0) + data.deltaValue3, props.min, props.max));\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 3 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return 'Expected model [number, number, number]';\n }\n\n const errors: string[] = [];\n\n [...props.modelValue].forEach((v) => {\n if (v > props.max) {\n errors.push(`Max model value must be lower than max props ${props.max}.`);\n }\n if (v < props.min) {\n errors.push('Min model value must be greater than max props.');\n }\n });\n\n if (errors.length > 0) {\n return errors.join(' ');\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst position3 = computed(() => {\n return (localValue3.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + '%',\n left: 100 - leftRight.value[2] + '%',\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + '%',\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + '%',\n}));\n\nconst thumbStyle3 = computed(() => ({\n right: Math.ceil((1 - position3.value) * 100) + '%',\n}));\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n if (thumbRef1.value) {\n updateDatasetForThumb(thumbRef1.value, props.modelValue[0], data.deltaValue1);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n if (thumbRef2.value) {\n updateDatasetForThumb(thumbRef2.value, props.modelValue[1], data.deltaValue2);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef3, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue3 = (dx / rect.width) * range.value;\n\n if (thumbRef3.value) {\n updateDatasetForThumb(thumbRef3.value, props.modelValue[2], data.deltaValue3);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue3 = 0;\n }\n });\n});\n\nfunction updateDatasetForThumb(thumb: HTMLElement, modelVal: number, delta: number) {\n const value = round(clamp((modelVal ?? 0) + delta, props.min, props.max));\n thumb.dataset.percent = `${value}${props.measure}`;\n getHint();\n}\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n const point3 = Math.ceil((1 - position3.value) * 100);\n return [point1, point2, point3].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: ModelType) {\n emit('update:modelValue', value);\n}\n\nfunction getHint() {\n const right1 = Number(thumbStyle1.value.right.substring(0, thumbStyle1.value.right.length - 1));\n const right2 = Number(thumbStyle2.value.right.substring(0, thumbStyle2.value.right.length - 1));\n const right3 = Number(thumbStyle3.value.right.substring(0, thumbStyle3.value.right.length - 1));\n\n const arr = [\n { r: right1, th: thumbRef1 },\n { r: right2, th: thumbRef2 },\n { r: right3, th: thumbRef3 },\n ].sort((a, b) => a.r - b.r);\n\n if (arr[0].th.value) {\n arr[0].th.value.dataset.hint = 'high';\n }\n if (arr[1].th.value) {\n arr[1].th.value.dataset.hint = 'mid';\n }\n\n if (arr[2].th.value) {\n arr[2].th.value.dataset.hint = 'low';\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n const arr: ModelType = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n getHint();\n}\n\nonMounted(() => {\n getHint();\n});\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope ui-slider__triple\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n :data-percent=\"props.modelValue[0] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r1\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n :data-percent=\"props.modelValue[1] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r2\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef3\"\n :style=\"thumbStyle3\"\n :data-percent=\"props.modelValue[2] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r3\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 2)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <!-- {{ props.modelValue }} -->\n <!-- <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" /> -->\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n\n<style></style>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","thumbRef3","range","computed","propsRef","breakpointsRef","useSliderBreakpoints","localValue1","clamp","localValue2","localValue3","error","v","it","errors","getErrorMessage","position1","position2","position3","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","thumbStyle3","useMouseCapture","ev","tapIf","_a","unref","rect","dx","updateDatasetForThumb","setModelValue","round","thumb","modelVal","delta","value","getHint","point1","point2","point3","b","right1","right2","right3","arr","a","handleKeyPress","e","index","nextStep","onMounted","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","item","_cache","$event","_hoisted_10","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"SliderRangeTriple.vue.js","sources":["../../src/components/SliderRangeTriple.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, unref, useSlots } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\ntype ModelType = [number, number, number];\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: ModelType;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"%\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n deltaValue3: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst thumbRef3 = ref<HTMLElement>();\n\nconst range = computed(() => props.max - props.min);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst localValue1 = computed(() =>\n clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max),\n);\nconst localValue2 = computed(() =>\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n);\nconst localValue3 = computed(() =>\n clamp((props.modelValue[2] ?? 0) + data.deltaValue3, props.min, props.max),\n);\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 3 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return \"Expected model [number, number, number]\";\n }\n\n const errors: string[] = [];\n\n [...props.modelValue].forEach((v) => {\n if (v > props.max) {\n errors.push(`Max model value must be lower than max props ${props.max}.`);\n }\n if (v < props.min) {\n errors.push(\"Min model value must be greater than max props.\");\n }\n });\n\n if (errors.length > 0) {\n return errors.join(\" \");\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst position3 = computed(() => {\n return (localValue3.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + \"%\",\n left: 100 - leftRight.value[2] + \"%\",\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + \"%\",\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + \"%\",\n}));\n\nconst thumbStyle3 = computed(() => ({\n right: Math.ceil((1 - position3.value) * 100) + \"%\",\n}));\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n if (thumbRef1.value) {\n updateDatasetForThumb(thumbRef1.value, props.modelValue[0], data.deltaValue1);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n if (thumbRef2.value) {\n updateDatasetForThumb(thumbRef2.value, props.modelValue[1], data.deltaValue2);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef3, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue3 = (dx / rect.width) * range.value;\n\n if (thumbRef3.value) {\n updateDatasetForThumb(thumbRef3.value, props.modelValue[2], data.deltaValue3);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue3 = 0;\n }\n });\n});\n\nfunction updateDatasetForThumb(thumb: HTMLElement, modelVal: number, delta: number) {\n const value = round(clamp((modelVal ?? 0) + delta, props.min, props.max));\n thumb.dataset.percent = `${value}${props.measure}`;\n getHint();\n}\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n const point3 = Math.ceil((1 - position3.value) * 100);\n return [point1, point2, point3].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: ModelType) {\n emit(\"update:modelValue\", value);\n}\n\nfunction getHint() {\n const right1 = Number(thumbStyle1.value.right.substring(0, thumbStyle1.value.right.length - 1));\n const right2 = Number(thumbStyle2.value.right.substring(0, thumbStyle2.value.right.length - 1));\n const right3 = Number(thumbStyle3.value.right.substring(0, thumbStyle3.value.right.length - 1));\n\n const arr = [\n { r: right1, th: thumbRef1 },\n { r: right2, th: thumbRef2 },\n { r: right3, th: thumbRef3 },\n ].sort((a, b) => a.r - b.r);\n\n if (arr[0].th.value) {\n arr[0].th.value.dataset.hint = \"high\";\n }\n if (arr[1].th.value) {\n arr[1].th.value.dataset.hint = \"mid\";\n }\n\n if (arr[2].th.value) {\n arr[2].th.value.dataset.hint = \"low\";\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n const arr: ModelType = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n getHint();\n}\n\nonMounted(() => {\n getHint();\n});\n</script>\n\n<template>\n <div\n :class=\"props.disabled ? 'ui-slider__disabled' : undefined\"\n class=\"ui-slider__envelope ui-slider__triple\"\n >\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n :data-percent=\"props.modelValue[0] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r1\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n :data-percent=\"props.modelValue[1] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r2\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef3\"\n :style=\"thumbStyle3\"\n :data-percent=\"props.modelValue[2] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r3\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 2)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <!-- {{ props.modelValue }} -->\n <!-- <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" /> -->\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n\n<style></style>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","thumbRef3","range","computed","propsRef","breakpointsRef","useSliderBreakpoints","localValue1","clamp","localValue2","localValue3","error","v","it","errors","getErrorMessage","position1","position2","position3","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","thumbStyle3","useMouseCapture","ev","tapIf","_a","unref","rect","dx","updateDatasetForThumb","setModelValue","round","thumb","modelVal","delta","value","getHint","point1","point2","point3","b","right1","right2","right3","arr","a","handleKeyPress","e","index","nextStep","onMounted","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","item","_cache","$event","_hoisted_10","_toDisplayString"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabItem.vue.js","sources":["../../src/components/TabItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { ListOptionNormalized } from '../types';\n\nconst props = withDefaults(\n defineProps<{\n option: ListOptionNormalized;\n isSelected: boolean;\n isHovered: boolean;\n }>(),\n {\n isSelected: false,\n isHovered: false,\n },\n);\n\nconst label = computed(() => props.option.label);\n\nconst classes = computed<string>(() => {\n const classList: string[] = [];\n if (props.isSelected) {\n classList.push('dropdown-tab-item__selected');\n }\n if (props.isHovered) {\n classList.push('hovered-item');\n }\n return classList.join(' ');\n});\n</script>\n<template>\n <div :class=\"classes\" class=\"dropdown-tab-item\">\n <div class=\"dropdown-tab-item__title text-caps13\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"names":["props","__props","label","computed","classes","classList","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAQC,EAAS,MAAMH,EAAM,OAAO,KAAK,GAEzCI,IAAUD,EAAiB,MAAM;AACrC,YAAME,IAAsB,CAAA;AAC5B,aAAIL,EAAM,cACRK,EAAU,KAAK,6BAA6B,GAE1CL,EAAM,aACRK,EAAU,KAAK,cAAc,GAExBA,EAAU,KAAK,GAAG;AAAA,IAC3B,CAAC;2BAGCC,EAIM,OAAA;AAAA,MAJA,OAAKC,EAAA,CAAEH,EAAA,OAAe,mBAAmB,CAAA;AAAA,IAAA;MAC7CI,EAEM,OAFNC,GAEMC,EADDR,EAAA,KAAK,GAAA,CAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"TabItem.vue.js","sources":["../../src/components/TabItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport type { ListOptionNormalized } from \"../types\";\n\nconst props = withDefaults(\n defineProps<{\n option: ListOptionNormalized;\n isSelected: boolean;\n isHovered: boolean;\n }>(),\n {\n isSelected: false,\n isHovered: false,\n },\n);\n\nconst label = computed(() => props.option.label);\n\nconst classes = computed<string>(() => {\n const classList: string[] = [];\n if (props.isSelected) {\n classList.push(\"dropdown-tab-item__selected\");\n }\n if (props.isHovered) {\n classList.push(\"hovered-item\");\n }\n return classList.join(\" \");\n});\n</script>\n<template>\n <div :class=\"classes\" class=\"dropdown-tab-item\">\n <div class=\"dropdown-tab-item__title text-caps13\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"names":["props","__props","label","computed","classes","classList","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAQC,EAAS,MAAMH,EAAM,OAAO,KAAK,GAEzCI,IAAUD,EAAiB,MAAM;AACrC,YAAME,IAAsB,CAAA;AAC5B,aAAIL,EAAM,cACRK,EAAU,KAAK,6BAA6B,GAE1CL,EAAM,aACRK,EAAU,KAAK,cAAc,GAExBA,EAAU,KAAK,GAAG;AAAA,IAC3B,CAAC;2BAGCC,EAIM,OAAA;AAAA,MAJA,OAAKC,EAAA,CAAEH,EAAA,OAAe,mBAAmB,CAAA;AAAA,IAAA;MAC7CI,EAEM,OAFNC,GAEMC,EADDR,EAAA,KAAK,GAAA,CAAA;AAAA,IAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeSwitcher.vue.js","sources":["../../src/components/ThemeSwitcher.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTheme } from '../composition/useTheme';\nconst [theme, toggleTheme] = useTheme();\n</script>\n\n<template>\n <div class=\"ui-theme-switcher\" :class=\"theme\" @click=\"toggleTheme\">\n <div />\n </div>\n</template>\n"],"names":["theme","toggleTheme","useTheme","_createElementBlock","_normalizeClass","_unref","_cache","args","_createElementVNode"],"mappings":";;;;;AAEA,UAAM,CAACA,GAAOC,CAAW,IAAIC,EAAA;2BAI3BC,EAEM,OAAA;AAAA,MAFD,OAAKC,EAAA,CAAC,qBAA4BC,EAAAL,CAAA,CAAK,CAAA;AAAA,MAAG,SAAKM,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,gBAAED,EAAAJ,CAAA,KAAAI,EAAAJ,CAAA,EAAA,GAAAM,CAAA;AAAA,IAAA;MACpDC,EAAO,OAAA,MAAA,MAAA,EAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"ThemeSwitcher.vue.js","sources":["../../src/components/ThemeSwitcher.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTheme } from \"../composition/useTheme\";\nconst [theme, toggleTheme] = useTheme();\n</script>\n\n<template>\n <div class=\"ui-theme-switcher\" :class=\"theme\" @click=\"toggleTheme\">\n <div />\n </div>\n</template>\n"],"names":["theme","toggleTheme","useTheme","_createElementBlock","_normalizeClass","_unref","_cache","args","_createElementVNode"],"mappings":";;;;;AAEA,UAAM,CAACA,GAAOC,CAAW,IAAIC,EAAA;2BAI3BC,EAEM,OAAA;AAAA,MAFD,OAAKC,EAAA,CAAC,qBAA4BC,EAAAL,CAAA,CAAK,CAAA;AAAA,MAAG,SAAKM,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,gBAAED,EAAAJ,CAAA,KAAAI,EAAAJ,CAAA,EAAA,GAAAM,CAAA;AAAA,IAAA;MACpDC,EAAO,OAAA,MAAA,MAAA,EAAA;AAAA,IAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionSlidePanel.vue.js","sources":["../../src/components/TransitionSlidePanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nfunction onAfterEnter() {\n window.dispatchEvent(new CustomEvent('adjust'));\n}\n\nfunction onAfterLeave() {\n window.dispatchEvent(new CustomEvent('adjust'));\n}\n</script>\n\n<template>\n <Transition name=\"slide-panel\" @after-enter=\"onAfterEnter\" @after-leave=\"onAfterLeave\">\n <slot />\n </Transition>\n</template>\n"],"names":["onAfterEnter","onAfterLeave","_createBlock","_Transition","_renderSlot","_ctx"],"mappings":";;;;AACA,aAASA,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;AAEA,aAASC,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;2BAIEC,EAEaC,GAAA;AAAA,MAFD,MAAK;AAAA,MAAe,cAAAH;AAAA,MAA4B,cAAAC;AAAA,IAAA;iBAC1D,MAAQ;AAAA,QAARG,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
1
+ {"version":3,"file":"TransitionSlidePanel.vue.js","sources":["../../src/components/TransitionSlidePanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nfunction onAfterEnter() {\n window.dispatchEvent(new CustomEvent(\"adjust\"));\n}\n\nfunction onAfterLeave() {\n window.dispatchEvent(new CustomEvent(\"adjust\"));\n}\n</script>\n\n<template>\n <Transition name=\"slide-panel\" @after-enter=\"onAfterEnter\" @after-leave=\"onAfterLeave\">\n <slot />\n </Transition>\n</template>\n"],"names":["onAfterEnter","onAfterLeave","_createBlock","_Transition","_renderSlot","_ctx"],"mappings":";;;;AACA,aAASA,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;AAEA,aAASC,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;2BAIEC,EAEaC,GAAA;AAAA,MAFD,MAAK;AAAA,MAAe,cAAAH;AAAA,MAA4B,cAAAC;AAAA,IAAA;iBAC1D,MAAQ;AAAA,QAARG,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VScroll.vue.js","sources":["../../src/components/VScroll.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue';\nimport { useEventListener } from '../composition/useEventListener';\nimport { eventListener } from '../helpers/dom';\n\nconst emit = defineEmits(['update:scrollTop']);\n\nconst props = defineProps<{\n scrollTop: number;\n clientHeight: number;\n scrollHeight: number;\n}>();\n\nconst scrollRef = ref<EventTarget>();\n\nconst ratioRef = computed(() => props.clientHeight / (props.scrollHeight || 1));\n\nconst visibleRef = computed(() => {\n return ratioRef.value < 1;\n});\n\nconst scrollbarStyle = computed(() => {\n const ratio = unref(ratioRef);\n return {\n top: props.scrollTop * ratio + 'px',\n height: Math.floor(props.clientHeight * ratio) + 'px',\n };\n});\n\nuseEventListener(scrollRef, 'pointerdown', (down: PointerEvent) => {\n const s = {\n clientY: down.clientY,\n };\n\n const update = (e: MouseEvent) => {\n const dy = (e.clientY - s.clientY) / ratioRef.value;\n emit('update:scrollTop', props.scrollTop + dy);\n s.clientY = e.clientY;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const removePointerMove = eventListener(document as any, 'mousemove', update);\n\n ['mouseup', 'pointercancel'].forEach((eventType) => {\n document.addEventListener(eventType, removePointerMove, { once: true });\n });\n});\n</script>\n\n<template>\n <div v-if=\"visibleRef\" ref=\"scrollRef\" class=\"v-scroll\">\n <div class=\"v-scroll__scrollbar\" :style=\"scrollbarStyle\" />\n </div>\n</template>\n"],"names":["emit","__emit","props","__props","scrollRef","ref","ratioRef","computed","visibleRef","scrollbarStyle","ratio","unref","useEventListener","down","s","removePointerMove","eventListener","e","dy","eventType","_createElementBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAOC,GAEPC,IAAQC,GAMRC,IAAYC,EAAA,GAEZC,IAAWC,EAAS,MAAML,EAAM,gBAAgBA,EAAM,gBAAgB,EAAE,GAExEM,IAAaD,EAAS,MACnBD,EAAS,QAAQ,CACzB,GAEKG,IAAiBF,EAAS,MAAM;AACpC,YAAMG,IAAQC,EAAML,CAAQ;AAC5B,aAAO;AAAA,QACL,KAAKJ,EAAM,YAAYQ,IAAQ;AAAA,QAC/B,QAAQ,KAAK,MAAMR,EAAM,eAAeQ,CAAK,IAAI;AAAA,MAAA;AAAA,IAErD,CAAC;AAED,WAAAE,EAAiBR,GAAW,eAAe,CAACS,MAAuB;AACjE,YAAMC,IAAI;AAAA,QACR,SAASD,EAAK;AAAA,MAAA,GAUVE,IAAoBC,EAAc,UAAiB,aAP1C,CAACC,MAAkB;AAChC,cAAMC,KAAMD,EAAE,UAAUH,EAAE,WAAWR,EAAS;AAC9C,QAAAN,EAAK,oBAAoBE,EAAM,YAAYgB,CAAE,GAC7CJ,EAAE,UAAUG,EAAE;AAAA,MAChB,CAG4E;AAE5E,OAAC,WAAW,eAAe,EAAE,QAAQ,CAACE,MAAc;AAClD,iBAAS,iBAAiBA,GAAWJ,GAAmB,EAAE,MAAM,IAAM;AAAA,MACxE,CAAC;AAAA,IACH,CAAC,aAIYP,EAAA,cAAXY,EAEM,OAAA;AAAA;eAFqB;AAAA,MAAJ,KAAIhB;AAAA,MAAY,OAAM;AAAA,IAAA;MAC3CiB,EAA2D,OAAA;AAAA,QAAtD,OAAM;AAAA,QAAuB,SAAOZ,EAAA,KAAc;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"VScroll.vue.js","sources":["../../src/components/VScroll.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, unref } from \"vue\";\nimport { useEventListener } from \"../composition/useEventListener\";\nimport { eventListener } from \"../helpers/dom\";\n\nconst emit = defineEmits([\"update:scrollTop\"]);\n\nconst props = defineProps<{\n scrollTop: number;\n clientHeight: number;\n scrollHeight: number;\n}>();\n\nconst scrollRef = ref<EventTarget>();\n\nconst ratioRef = computed(() => props.clientHeight / (props.scrollHeight || 1));\n\nconst visibleRef = computed(() => {\n return ratioRef.value < 1;\n});\n\nconst scrollbarStyle = computed(() => {\n const ratio = unref(ratioRef);\n return {\n top: props.scrollTop * ratio + \"px\",\n height: Math.floor(props.clientHeight * ratio) + \"px\",\n };\n});\n\nuseEventListener(scrollRef, \"pointerdown\", (down: PointerEvent) => {\n const s = {\n clientY: down.clientY,\n };\n\n const update = (e: MouseEvent) => {\n const dy = (e.clientY - s.clientY) / ratioRef.value;\n emit(\"update:scrollTop\", props.scrollTop + dy);\n s.clientY = e.clientY;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const removePointerMove = eventListener(document as any, \"mousemove\", update);\n\n [\"mouseup\", \"pointercancel\"].forEach((eventType) => {\n document.addEventListener(eventType, removePointerMove, { once: true });\n });\n});\n</script>\n\n<template>\n <div v-if=\"visibleRef\" ref=\"scrollRef\" class=\"v-scroll\">\n <div class=\"v-scroll__scrollbar\" :style=\"scrollbarStyle\" />\n </div>\n</template>\n"],"names":["emit","__emit","props","__props","scrollRef","ref","ratioRef","computed","visibleRef","scrollbarStyle","ratio","unref","useEventListener","down","s","removePointerMove","eventListener","e","dy","eventType","_createElementBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAOC,GAEPC,IAAQC,GAMRC,IAAYC,EAAA,GAEZC,IAAWC,EAAS,MAAML,EAAM,gBAAgBA,EAAM,gBAAgB,EAAE,GAExEM,IAAaD,EAAS,MACnBD,EAAS,QAAQ,CACzB,GAEKG,IAAiBF,EAAS,MAAM;AACpC,YAAMG,IAAQC,EAAML,CAAQ;AAC5B,aAAO;AAAA,QACL,KAAKJ,EAAM,YAAYQ,IAAQ;AAAA,QAC/B,QAAQ,KAAK,MAAMR,EAAM,eAAeQ,CAAK,IAAI;AAAA,MAAA;AAAA,IAErD,CAAC;AAED,WAAAE,EAAiBR,GAAW,eAAe,CAACS,MAAuB;AACjE,YAAMC,IAAI;AAAA,QACR,SAASD,EAAK;AAAA,MAAA,GAUVE,IAAoBC,EAAc,UAAiB,aAP1C,CAACC,MAAkB;AAChC,cAAMC,KAAMD,EAAE,UAAUH,EAAE,WAAWR,EAAS;AAC9C,QAAAN,EAAK,oBAAoBE,EAAM,YAAYgB,CAAE,GAC7CJ,EAAE,UAAUG,EAAE;AAAA,MAChB,CAG4E;AAE5E,OAAC,WAAW,eAAe,EAAE,QAAQ,CAACE,MAAc;AAClD,iBAAS,iBAAiBA,GAAWJ,GAAmB,EAAE,MAAM,IAAM;AAAA,MACxE,CAAC;AAAA,IACH,CAAC,aAIYP,EAAA,cAAXY,EAEM,OAAA;AAAA;eAFqB;AAAA,MAAJ,KAAIhB;AAAA,MAAY,OAAM;AAAA,IAAA;MAC3CiB,EAA2D,OAAA;AAAA,QAAtD,OAAM;AAAA,QAAuB,SAAOZ,EAAA,KAAc;AAAA,MAAA;;;;"}
@@ -1,7 +1,7 @@
1
1
  import o from "./Menu.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-12530966"]]);
4
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-1bb3001b"]]);
5
5
  export {
6
6
  _ as default
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.vue2.js","sources":["../../../src/components/contextMenu/Menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextOption } from './types';\n\nconst emit = defineEmits(['close']);\n\ndefineProps<{\n options: readonly ContextOption[];\n}>();\n\nconst onClickOption = (opt: ContextOption) => {\n opt.cb();\n emit('close');\n};\n</script>\n\n<template>\n <div class=\"context-menu\">\n <div v-for=\"(opt, i) in options\" :key=\"i\" @click.stop=\"onClickOption(opt)\">\n <span>{{ opt.text }}</span>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.context-menu {\n display: block;\n position: absolute;\n top: 50px;\n left: 50px;\n z-index: var(--z-context-menu);\n\n margin: 0;\n padding: 3px 0 4px;\n\n background: rgba(255, 255, 255, 0.95);\n box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.35);\n border-radius: 4px;\n\n font-family:\n Lucida Grande,\n sans-serif;\n font-size: 14px;\n line-height: 15px;\n\n &::before {\n display: block;\n position: absolute;\n content: '';\n top: -1px;\n left: -1px;\n bottom: -1px;\n right: -1px;\n\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.125);\n z-index: -1;\n }\n\n hr {\n border: none;\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 6px 1px 5px;\n padding: 0;\n }\n\n > div {\n display: block;\n padding: 0 20px;\n border-top: 1px solid rgba(0, 0, 0, 0);\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n\n span {\n vertical-align: 2px;\n user-select: none;\n }\n\n &:hover {\n background: -webkit-linear-gradient(top, #648bf5, #2866f2);\n background: linear-gradient(to bottom, #648bf5 0%, #2866f2 100%);\n border-top: 1px solid #5a82eb;\n border-bottom: 1px solid #1758e7;\n }\n\n &:hover::after {\n color: #fff;\n }\n }\n}\n</style>\n"],"names":["emit","__emit","onClickOption","opt","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","__props","i","_withModifiers","$event","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;AAGA,UAAMA,IAAOC,GAMPC,IAAgB,CAACC,MAAuB;AAC5C,MAAAA,EAAI,GAAA,GACJH,EAAK,OAAO;AAAA,IACd;sBAIEI,EAAA,GAAAC,EAIM,OAJNC,GAIM;AAAA,OAHJF,EAAA,EAAA,GAAAC,EAEME,GAAA,MAAAC,EAFkBC,EAAA,SAAO,CAAlBN,GAAKO,YAAlBL,EAEM,OAAA;AAAA,QAF4B,KAAKK;AAAA,QAAI,SAAKC,EAAA,CAAAC,MAAOV,EAAcC,CAAG,GAAA,CAAA,MAAA,CAAA;AAAA,MAAA;QACtEU,EAA2B,QAAA,MAAAC,EAAlBX,EAAI,IAAI,GAAA,CAAA;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"Menu.vue2.js","sources":["../../../src/components/contextMenu/Menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextOption } from \"./types\";\n\nconst emit = defineEmits([\"close\"]);\n\ndefineProps<{\n options: readonly ContextOption[];\n}>();\n\nconst onClickOption = (opt: ContextOption) => {\n opt.cb();\n emit(\"close\");\n};\n</script>\n\n<template>\n <div class=\"context-menu\">\n <div v-for=\"(opt, i) in options\" :key=\"i\" @click.stop=\"onClickOption(opt)\">\n <span>{{ opt.text }}</span>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.context-menu {\n display: block;\n position: absolute;\n top: 50px;\n left: 50px;\n z-index: var(--z-context-menu);\n\n margin: 0;\n padding: 3px 0 4px;\n\n background: rgba(255, 255, 255, 0.95);\n box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.35);\n border-radius: 4px;\n\n font-family:\n Lucida Grande,\n sans-serif;\n font-size: 14px;\n line-height: 15px;\n\n &::before {\n display: block;\n position: absolute;\n content: \"\";\n top: -1px;\n left: -1px;\n bottom: -1px;\n right: -1px;\n\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.125);\n z-index: -1;\n }\n\n hr {\n border: none;\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 6px 1px 5px;\n padding: 0;\n }\n\n > div {\n display: block;\n padding: 0 20px;\n border-top: 1px solid rgba(0, 0, 0, 0);\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n\n span {\n vertical-align: 2px;\n user-select: none;\n }\n\n &:hover {\n background: -webkit-linear-gradient(top, #648bf5, #2866f2);\n background: linear-gradient(to bottom, #648bf5 0%, #2866f2 100%);\n border-top: 1px solid #5a82eb;\n border-bottom: 1px solid #1758e7;\n }\n\n &:hover::after {\n color: #fff;\n }\n }\n}\n</style>\n"],"names":["emit","__emit","onClickOption","opt","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","__props","i","_withModifiers","$event","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;AAGA,UAAMA,IAAOC,GAMPC,IAAgB,CAACC,MAAuB;AAC5C,MAAAA,EAAI,GAAA,GACJH,EAAK,OAAO;AAAA,IACd;sBAIEI,EAAA,GAAAC,EAIM,OAJNC,GAIM;AAAA,OAHJF,EAAA,EAAA,GAAAC,EAEME,GAAA,MAAAC,EAFkBC,EAAA,SAAO,CAAlBN,GAAKO,YAAlBL,EAEM,OAAA;AAAA,QAF4B,KAAKK;AAAA,QAAI,SAAKC,EAAA,CAAAC,MAAOV,EAAcC,CAAG,GAAA,CAAA,MAAA,CAAA;AAAA,MAAA;QACtEU,EAA2B,QAAA,MAAAC,EAAlBX,EAAI,IAAI,GAAA,CAAA;AAAA,MAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/contextMenu/index.ts"],"sourcesContent":["import Menu from './Menu.vue';\nimport { h, render } from 'vue';\nimport type { ContextOption } from './types';\n\nexport function showContextMenu(ev: MouseEvent, options: readonly ContextOption[]) {\n ev.preventDefault();\n\n const destroy = () => {\n render(null, document.body);\n };\n\n const vNode = h(Menu, {\n options,\n onClose: () => {\n destroy();\n },\n });\n\n render(vNode, document.body);\n\n const el = vNode.el as HTMLElement;\n\n el.style.top = ev.clientY + 'px';\n el.style.left = ev.clientX + 'px';\n\n document.addEventListener('click', (ev: Event) => {\n if (!el.contains(ev.target as HTMLElement)) {\n destroy();\n }\n });\n\n return destroy;\n}\n"],"names":["showContextMenu","ev","options","destroy","render","vNode","h","Menu","el"],"mappings":";;AAIO,SAASA,EAAgBC,GAAgBC,GAAmC;AACjF,EAAAD,EAAG,eAAA;AAEH,QAAME,IAAU,MAAM;AACpB,IAAAC,EAAO,MAAM,SAAS,IAAI;AAAA,EAC5B,GAEMC,IAAQC,EAAEC,GAAM;AAAA,IACpB,SAAAL;AAAA,IACA,SAAS,MAAM;AACb,MAAAC,EAAA;AAAA,IACF;AAAA,EAAA,CACD;AAED,EAAAC,EAAOC,GAAO,SAAS,IAAI;AAE3B,QAAMG,IAAKH,EAAM;AAEjB,SAAAG,EAAG,MAAM,MAAMP,EAAG,UAAU,MAC5BO,EAAG,MAAM,OAAOP,EAAG,UAAU,MAE7B,SAAS,iBAAiB,SAAS,CAACA,MAAc;AAChD,IAAKO,EAAG,SAASP,EAAG,MAAqB,KACvCE,EAAA;AAAA,EAEJ,CAAC,GAEMA;AACT;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/contextMenu/index.ts"],"sourcesContent":["import Menu from \"./Menu.vue\";\nimport { h, render } from \"vue\";\nimport type { ContextOption } from \"./types\";\n\nexport function showContextMenu(ev: MouseEvent, options: readonly ContextOption[]) {\n ev.preventDefault();\n\n const destroy = () => {\n render(null, document.body);\n };\n\n const vNode = h(Menu, {\n options,\n onClose: () => {\n destroy();\n },\n });\n\n render(vNode, document.body);\n\n const el = vNode.el as HTMLElement;\n\n el.style.top = ev.clientY + \"px\";\n el.style.left = ev.clientX + \"px\";\n\n document.addEventListener(\"click\", (ev: Event) => {\n if (!el.contains(ev.target as HTMLElement)) {\n destroy();\n }\n });\n\n return destroy;\n}\n"],"names":["showContextMenu","ev","options","destroy","render","vNode","h","Menu","el"],"mappings":";;AAIO,SAASA,EAAgBC,GAAgBC,GAAmC;AACjF,EAAAD,EAAG,eAAA;AAEH,QAAME,IAAU,MAAM;AACpB,IAAAC,EAAO,MAAM,SAAS,IAAI;AAAA,EAC5B,GAEMC,IAAQC,EAAEC,GAAM;AAAA,IACpB,SAAAL;AAAA,IACA,SAAS,MAAM;AACb,MAAAC,EAAA;AAAA,IACF;AAAA,EAAA,CACD;AAED,EAAAC,EAAOC,GAAO,SAAS,IAAI;AAE3B,QAAMG,IAAKH,EAAM;AAEjB,SAAAG,EAAG,MAAM,MAAMP,EAAG,UAAU,MAC5BO,EAAG,MAAM,OAAOP,EAAG,UAAU,MAE7B,SAAS,iBAAiB,SAAS,CAACA,MAAc;AAChD,IAAKO,EAAG,SAASP,EAAG,MAAqB,KACvCE,EAAA;AAAA,EAEJ,CAAC,GAEMA;AACT;"}