vectis-ui 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/VAccordion/VAccordion.css +1 -1
- package/dist/components/VAccordion/VAccordion.d.ts +6 -5
- package/dist/components/VAccordion/VAccordion.js.map +1 -1
- package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VAccordion/VAccordionItem.css +1 -1
- package/dist/components/VAccordion/VAccordionItem.d.ts +1 -1
- package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
- package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VAlert/VAlert.css +2 -0
- package/dist/components/VAlert/VAlert.d.ts +73 -0
- package/dist/components/VAlert/VAlert.js +9 -0
- package/dist/components/VAlert/VAlert.js.map +1 -0
- package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAvatar/VAvatar.d.ts +2 -2
- package/dist/components/VAvatar/VAvatarGroup.d.ts +1 -1
- package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VBadge/VBadge.d.ts +3 -3
- package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/VButton/VButton.d.ts +4 -4
- package/dist/components/VButton/VButtonGroup.css +1 -1
- package/dist/components/VButton/VButtonGroup.d.ts +2 -2
- package/dist/components/VButton/VButtonGroup.js.map +1 -1
- package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendar.css +1 -1
- package/dist/components/VCalendar/VCalendar.d.ts +7 -1
- package/dist/components/VCalendar/VCalendar.js.map +1 -1
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +20 -18
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
- package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarMonth.css +1 -1
- package/dist/components/VCalendar/VCalendarMonth.d.ts +2 -2
- package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
- package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.css +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +3 -3
- package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarYear.css +1 -1
- package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
- package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/gesture.d.ts +1 -16
- package/dist/components/VCalendar/gesture.js +1 -1
- package/dist/components/VCalendar/gesture.js.map +1 -1
- package/dist/components/VCalendar/types.d.ts +2 -0
- package/dist/components/VCard/VCard.css +2 -0
- package/dist/components/VCard/VCard.d.ts +87 -0
- package/dist/components/VCard/VCard.js +9 -0
- package/dist/components/VCard/VCard.js.map +1 -0
- package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCarousel/VCarousel.d.ts +1 -1
- package/dist/components/VCarousel/VCarousel.js.map +1 -1
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCheckbox/VCheckMark.css +2 -0
- package/dist/components/VCheckbox/VCheckMark.js +9 -0
- package/dist/components/VCheckbox/VCheckMark.js.map +1 -0
- package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCheckbox/VCheckbox.css +1 -1
- package/dist/components/VCheckbox/VCheckbox.d.ts +8 -3
- package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +54 -69
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VChip/VChip.d.ts +6 -6
- package/dist/components/VChip/VChip.js.map +1 -1
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +26 -26
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VColorInput/VColorInput.css +2 -0
- package/dist/components/VColorInput/VColorInput.d.ts +113 -0
- package/dist/components/VColorInput/VColorInput.js +9 -0
- package/dist/components/VColorInput/VColorInput.js.map +1 -0
- package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js +230 -0
- package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VColorPicker/VColorPicker.css +2 -0
- package/dist/components/VColorPicker/VColorPicker.d.ts +67 -0
- package/dist/components/VColorPicker/VColorPicker.js +9 -0
- package/dist/components/VColorPicker/VColorPicker.js.map +1 -0
- package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js +390 -0
- package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VColorPicker/color.d.ts +42 -0
- package/dist/components/VColorPicker/color.js +158 -0
- package/dist/components/VColorPicker/color.js.map +1 -0
- package/dist/components/VCombobox/VCombobox.css +1 -1
- package/dist/components/VCombobox/VCombobox.d.ts +46 -60
- package/dist/components/VCombobox/VCombobox.js.map +1 -1
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +271 -372
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCommandPalette/VCommandPalette.css +2 -0
- package/dist/components/VCommandPalette/VCommandPalette.d.ts +163 -0
- package/dist/components/VCommandPalette/VCommandPalette.js +9 -0
- package/dist/components/VCommandPalette/VCommandPalette.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.css +2 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.d.ts +38 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.js +9 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VContextMenu/VContextMenu.css +2 -0
- package/dist/components/VContextMenu/VContextMenu.d.ts +66 -0
- package/dist/components/VContextMenu/VContextMenu.js +9 -0
- package/dist/components/VContextMenu/VContextMenu.js.map +1 -0
- package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDataTable/VDataTable.css +1 -1
- package/dist/components/VDataTable/VDataTable.d.ts +41 -16
- package/dist/components/VDataTable/VDataTable.js.map +1 -1
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +307 -195
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDateInput/VDateInput.d.ts +27 -7
- package/dist/components/VDateInput/VDateInput.js.map +1 -1
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +170 -162
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDatePicker/VDatePicker.d.ts +3 -3
- package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +228 -227
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDatePicker/keyboard.d.ts +7 -7
- package/dist/components/VDatePicker/keyboard.js +8 -6
- package/dist/components/VDatePicker/keyboard.js.map +1 -1
- package/dist/components/VDatePicker/names.js +16 -20
- package/dist/components/VDatePicker/names.js.map +1 -1
- package/dist/components/VDialog/VDialog.d.ts +2 -4
- package/dist/components/VDialog/VDialog.js.map +1 -1
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +46 -77
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDrawer/VDrawer.css +2 -0
- package/dist/components/VDrawer/VDrawer.d.ts +102 -0
- package/dist/components/VDrawer/VDrawer.js +9 -0
- package/dist/components/VDrawer/VDrawer.js.map +1 -0
- package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VEmptyState/VEmptyState.css +2 -0
- package/dist/components/VEmptyState/VEmptyState.d.ts +43 -0
- package/dist/components/VEmptyState/VEmptyState.js +9 -0
- package/dist/components/VEmptyState/VEmptyState.js.map +1 -0
- package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VField.css +2 -0
- package/dist/components/VField/VField.d.ts +84 -0
- package/dist/components/VField/VField.js +9 -0
- package/dist/components/VField/VField.js.map +1 -0
- package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VFieldAnnouncer.d.ts +7 -0
- package/dist/components/VField/VFieldAnnouncer.js +7 -0
- package/dist/components/VField/VFieldAnnouncer.js.map +1 -0
- package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VFieldMessage.d.ts +11 -0
- package/dist/components/VField/VFieldMessage.js +7 -0
- package/dist/components/VField/VFieldMessage.js.map +1 -0
- package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFieldset/VFieldset.css +2 -0
- package/dist/components/VFieldset/VFieldset.d.ts +52 -0
- package/dist/components/VFieldset/VFieldset.js +9 -0
- package/dist/components/VFieldset/VFieldset.js.map +1 -0
- package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFileInput/VFileInput.css +1 -1
- package/dist/components/VFileInput/VFileInput.d.ts +31 -7
- package/dist/components/VFileInput/VFileInput.js.map +1 -1
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +168 -161
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VFilePicker/VFilePicker.d.ts +4 -4
- package/dist/components/VHotkeys/VHotkeys.css +1 -1
- package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +27 -30
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VHotkeys/platform.d.ts +2 -0
- package/dist/components/VHotkeys/platform.js +24 -5
- package/dist/components/VHotkeys/platform.js.map +1 -1
- package/dist/components/VHoverCard/VHoverCard.css +2 -0
- package/dist/components/VHoverCard/VHoverCard.d.ts +62 -0
- package/dist/components/VHoverCard/VHoverCard.js +9 -0
- package/dist/components/VHoverCard/VHoverCard.js.map +1 -0
- package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js +97 -0
- package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VIcon/icons/add.d.ts +5 -0
- package/dist/components/VIcon/icons/add.js +9 -0
- package/dist/components/VIcon/icons/add.js.map +1 -0
- package/dist/components/VIcon/icons/colorize.d.ts +5 -0
- package/dist/components/VIcon/icons/colorize.js +9 -0
- package/dist/components/VIcon/icons/colorize.js.map +1 -0
- package/dist/components/VIcon/icons/inbox.d.ts +5 -0
- package/dist/components/VIcon/icons/inbox.js +9 -0
- package/dist/components/VIcon/icons/inbox.js.map +1 -0
- package/dist/components/VIcon/icons/index.d.ts +42 -2
- package/dist/components/VIcon/icons/index.js +88 -72
- package/dist/components/VIcon/icons/index.js.map +1 -1
- package/dist/components/VIcon/icons/names.d.ts +2 -2
- package/dist/components/VIcon/icons/names.js +1 -1
- package/dist/components/VIcon/icons/names.js.map +1 -1
- package/dist/components/VIcon/icons/open_in_new.d.ts +5 -0
- package/dist/components/VIcon/icons/open_in_new.js +9 -0
- package/dist/components/VIcon/icons/open_in_new.js.map +1 -0
- package/dist/components/VIcon/icons/priority_high.d.ts +5 -0
- package/dist/components/VIcon/icons/priority_high.js +9 -0
- package/dist/components/VIcon/icons/priority_high.js.map +1 -0
- package/dist/components/VIcon/icons/remove.d.ts +5 -0
- package/dist/components/VIcon/icons/remove.js +9 -0
- package/dist/components/VIcon/icons/remove.js.map +1 -0
- package/dist/components/VIcon/icons/search_off.d.ts +5 -0
- package/dist/components/VIcon/icons/search_off.js +9 -0
- package/dist/components/VIcon/icons/search_off.js.map +1 -0
- package/dist/components/VIcon/icons/star.d.ts +5 -0
- package/dist/components/VIcon/icons/star.js +9 -0
- package/dist/components/VIcon/icons/star.js.map +1 -0
- package/dist/components/VIconButton/VIconButton.d.ts +4 -4
- package/dist/components/VInput/VInput.css +1 -1
- package/dist/components/VInput/VInput.d.ts +51 -2
- package/dist/components/VInput/VInput.js.map +1 -1
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +129 -106
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VInput/VInputGroup.css +1 -1
- package/dist/components/VInput/VInputGroup.d.ts +20 -0
- package/dist/components/VInput/VInputGroup.js.map +1 -1
- package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +50 -51
- package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VInputOTP/VInputOTP.css +1 -1
- package/dist/components/VInputOTP/VInputOTP.d.ts +27 -4
- package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +131 -113
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VLink/VLink.css +2 -0
- package/dist/components/VLink/VLink.d.ts +53 -0
- package/dist/components/VLink/VLink.js +9 -0
- package/dist/components/VLink/VLink.js.map +1 -0
- package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxChevron.css +2 -0
- package/dist/components/VListbox/VListboxChevron.d.ts +12 -0
- package/dist/components/VListbox/VListboxChevron.js +9 -0
- package/dist/components/VListbox/VListboxChevron.js.map +1 -0
- package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxGroup.css +2 -0
- package/dist/components/VListbox/VListboxGroup.d.ts +27 -0
- package/dist/components/VListbox/VListboxGroup.js +9 -0
- package/dist/components/VListbox/VListboxGroup.js.map +1 -0
- package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxOption.css +2 -0
- package/dist/components/{VCombobox/VComboboxOption.d.ts → VListbox/VListboxOption.d.ts} +4 -4
- package/dist/components/VListbox/VListboxOption.js +9 -0
- package/dist/components/VListbox/VListboxOption.js.map +1 -0
- package/dist/components/{VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js} +6 -6
- package/dist/components/VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxPanel.css +2 -0
- package/dist/components/VListbox/VListboxPanel.d.ts +59 -0
- package/dist/components/VListbox/VListboxPanel.js +9 -0
- package/dist/components/VListbox/VListboxPanel.js.map +1 -0
- package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxSeparator.css +2 -0
- package/dist/components/VListbox/VListboxSeparator.d.ts +3 -0
- package/dist/components/VListbox/VListboxSeparator.js +9 -0
- package/dist/components/VListbox/VListboxSeparator.js.map +1 -0
- package/dist/components/{VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js} +4 -4
- package/dist/components/VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxValues.css +2 -0
- package/dist/components/VListbox/VListboxValues.d.ts +52 -0
- package/dist/components/VListbox/VListboxValues.js +9 -0
- package/dist/components/VListbox/VListboxValues.js.map +1 -0
- package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenu.d.ts +1 -1
- package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/VMenu/VMenuItem.d.ts +1 -1
- package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/components/VMenu/VMenuPanel.d.ts +2 -2
- package/dist/components/VMenu/VMenuPanel.js.map +1 -1
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VMeter/VMeter.css +2 -0
- package/dist/components/VMeter/VMeter.d.ts +77 -0
- package/dist/components/VMeter/VMeter.js +9 -0
- package/dist/components/VMeter/VMeter.js.map +1 -0
- package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js +113 -0
- package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VNumberInput/VNumberInput.css +2 -0
- package/dist/components/VNumberInput/VNumberInput.d.ts +114 -0
- package/dist/components/VNumberInput/VNumberInput.js +9 -0
- package/dist/components/VNumberInput/VNumberInput.js.map +1 -0
- package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
- package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VNumberInput/number.d.ts +30 -0
- package/dist/components/VNumberInput/number.js +38 -0
- package/dist/components/VNumberInput/number.js.map +1 -0
- package/dist/components/VPagination/VPagination.d.ts +1 -1
- package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +76 -76
- package/dist/components/VProgressCircular/VProgressCircular.d.ts +2 -2
- package/dist/components/VProgressLinear/VProgressLinear.css +1 -1
- package/dist/components/VProgressLinear/VProgressLinear.d.ts +10 -7
- package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +52 -34
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VRadio/VRadio.d.ts +8 -3
- package/dist/components/VRadio/VRadio.js.map +1 -1
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +52 -46
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VRating/VRating.css +2 -0
- package/dist/components/VRating/VRating.d.ts +92 -0
- package/dist/components/VRating/VRating.js +9 -0
- package/dist/components/VRating/VRating.js.map +1 -0
- package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js +158 -0
- package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/VResizable.css +2 -0
- package/dist/components/VResizable/VResizable.d.ts +50 -0
- package/dist/components/VResizable/VResizable.js +9 -0
- package/dist/components/VResizable/VResizable.js.map +1 -0
- package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js +225 -0
- package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/VResizablePanel.css +2 -0
- package/dist/components/VResizable/VResizablePanel.d.ts +60 -0
- package/dist/components/VResizable/VResizablePanel.js +9 -0
- package/dist/components/VResizable/VResizablePanel.js.map +1 -0
- package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/context.d.ts +24 -0
- package/dist/components/VResizable/context.js +6 -0
- package/dist/components/VResizable/context.js.map +1 -0
- package/dist/components/VResizable/layout.d.ts +28 -0
- package/dist/components/VResizable/layout.js +41 -0
- package/dist/components/VResizable/layout.js.map +1 -0
- package/dist/components/VSelect/VSelect.css +2 -0
- package/dist/components/VSelect/VSelect.d.ts +193 -0
- package/dist/components/VSelect/VSelect.js +9 -0
- package/dist/components/VSelect/VSelect.js.map +1 -0
- package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js +424 -0
- package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSeparator/VSeparator.js.map +1 -1
- package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +2 -2
- package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +3 -3
- package/dist/components/VSlider/VSlider.css +1 -1
- package/dist/components/VSlider/VSlider.d.ts +34 -8
- package/dist/components/VSlider/VSlider.js.map +1 -1
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +236 -215
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/VSnackbar/state.js.map +1 -1
- package/dist/components/VSplitButton/VSplitButton.css +2 -0
- package/dist/components/VSplitButton/VSplitButton.d.ts +114 -0
- package/dist/components/VSplitButton/VSplitButton.js +9 -0
- package/dist/components/VSplitButton/VSplitButton.js.map +1 -0
- package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VStepper/VStepper.css +2 -0
- package/dist/components/VStepper/VStepper.d.ts +73 -0
- package/dist/components/VStepper/VStepper.js +9 -0
- package/dist/components/VStepper/VStepper.js.map +1 -0
- package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSwitch/VSwitch.d.ts +8 -3
- package/dist/components/VSwitch/VSwitch.js.map +1 -1
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +53 -47
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTabs/VTab.css +1 -1
- package/dist/components/VTabs/VTab.d.ts +1 -1
- package/dist/components/VTabs/VTab.js.map +1 -1
- package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTabs/VTabs.css +1 -1
- package/dist/components/VTabs/VTabs.d.ts +13 -5
- package/dist/components/VTabs/VTabs.js.map +1 -1
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +20 -20
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTextarea/VTextarea.css +1 -1
- package/dist/components/VTextarea/VTextarea.d.ts +22 -2
- package/dist/components/VTextarea/VTextarea.js.map +1 -1
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +108 -100
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimeInput/VTimeInput.d.ts +27 -7
- package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +187 -171
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimePicker/VTimePicker.d.ts +2 -2
- package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimeline/VTimeline.css +2 -0
- package/dist/components/VTimeline/VTimeline.d.ts +59 -0
- package/dist/components/VTimeline/VTimeline.js +9 -0
- package/dist/components/VTimeline/VTimeline.js.map +1 -0
- package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimeline/VTimelineItem.css +2 -0
- package/dist/components/VTimeline/VTimelineItem.d.ts +48 -0
- package/dist/components/VTimeline/VTimelineItem.js +9 -0
- package/dist/components/VTimeline/VTimelineItem.js.map +1 -0
- package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimeline/context.d.ts +11 -0
- package/dist/components/VTimeline/context.js +6 -0
- package/dist/components/VTimeline/context.js.map +1 -0
- package/dist/components/VTimeline/datetime.d.ts +8 -0
- package/dist/components/VTimeline/datetime.js +36 -0
- package/dist/components/VTimeline/datetime.js.map +1 -0
- package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/components/VToggle/VToggle.d.ts +4 -4
- package/dist/components/VToggle/VToggleItem.d.ts +1 -1
- package/dist/components/VTooltip/VTooltip.d.ts +8 -2
- package/dist/components/VTooltip/VTooltip.js.map +1 -1
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +45 -43
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTreeView/VTreeView.css +2 -0
- package/dist/components/VTreeView/VTreeView.d.ts +112 -0
- package/dist/components/VTreeView/VTreeView.js +9 -0
- package/dist/components/VTreeView/VTreeView.js.map +1 -0
- package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTypography/VTypography.d.ts +1 -1
- package/dist/components/VVirtualList/VVirtualList.css +2 -0
- package/dist/components/VVirtualList/VVirtualList.d.ts +78 -0
- package/dist/components/VVirtualList/VVirtualList.js +9 -0
- package/dist/components/VVirtualList/VVirtualList.js.map +1 -0
- package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/composables/useChoice.d.ts +28 -0
- package/dist/composables/useChoice.js +28 -0
- package/dist/composables/useChoice.js.map +1 -0
- package/dist/composables/useDebouncedSearch.d.ts +17 -0
- package/dist/composables/useDebouncedSearch.js +18 -0
- package/dist/composables/useDebouncedSearch.js.map +1 -0
- package/dist/composables/useEscapeDismiss.d.ts +8 -0
- package/dist/composables/useEscapeDismiss.js +16 -0
- package/dist/composables/useEscapeDismiss.js.map +1 -0
- package/dist/composables/useFieldIds.d.ts +2 -1
- package/dist/composables/useFieldIds.js +7 -6
- package/dist/composables/useFieldIds.js.map +1 -1
- package/dist/composables/useFieldPanel.d.ts +1 -0
- package/dist/composables/useFieldPanel.js +52 -42
- package/dist/composables/useFieldPanel.js.map +1 -1
- package/dist/composables/useFileField.d.ts +1 -3
- package/dist/composables/useFileField.js +48 -50
- package/dist/composables/useFileField.js.map +1 -1
- package/dist/composables/useHotkeyListener.d.ts +17 -0
- package/dist/composables/useHotkeyListener.js +26 -0
- package/dist/composables/useHotkeyListener.js.map +1 -0
- package/dist/composables/useIconClickHandlers.d.ts +2 -10
- package/dist/composables/useIconClickHandlers.js +1 -1
- package/dist/composables/useIconClickHandlers.js.map +1 -1
- package/dist/{components/VCombobox/infiniteScroll.d.ts → composables/useInfiniteScroll.d.ts} +6 -0
- package/dist/{components/VCombobox/infiniteScroll.js → composables/useInfiniteScroll.js} +7 -7
- package/dist/composables/useInfiniteScroll.js.map +1 -0
- package/dist/composables/useListbox.d.ts +132 -0
- package/dist/composables/useListbox.js +227 -0
- package/dist/composables/useListbox.js.map +1 -0
- package/dist/composables/useModalDialog.d.ts +28 -0
- package/dist/composables/useModalDialog.js +60 -0
- package/dist/composables/useModalDialog.js.map +1 -0
- package/dist/composables/useRootAttrs.d.ts +2 -3
- package/dist/composables/useRootAttrs.js.map +1 -1
- package/dist/composables/useVirtualList.d.ts +46 -0
- package/dist/composables/useVirtualList.js +145 -0
- package/dist/composables/useVirtualList.js.map +1 -0
- package/dist/i18n/en.js +50 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.js +50 -0
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/types.d.ts +103 -2
- package/dist/icons.js +45 -37
- package/dist/index.d.ts +49 -3
- package/dist/index.js +80 -56
- package/dist/styles.css +1 -1
- package/dist/tokens/index.d.ts +43 -0
- package/dist/tokens/semantic.d.ts +42 -0
- package/dist/tokens/semantic.js +43 -1
- package/dist/tokens/semantic.js.map +1 -1
- package/dist/tokens/themes/dark.d.ts +1 -0
- package/dist/tokens/themes/dark.js +1 -0
- package/dist/tokens/themes/dark.js.map +1 -1
- package/dist/tokens.json +215 -1
- package/dist/types.d.ts +57 -4
- package/dist/utils/arrowNav.js.map +1 -1
- package/dist/utils/attrs.d.ts +9 -0
- package/dist/utils/attrs.js +14 -0
- package/dist/utils/attrs.js.map +1 -0
- package/dist/utils/date.d.ts +1 -0
- package/dist/utils/date.js +2 -2
- package/dist/utils/date.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/VCombobox/VComboboxGroup.css +0 -2
- package/dist/components/VCombobox/VComboboxGroup.d.ts +0 -17
- package/dist/components/VCombobox/VComboboxGroup.js +0 -9
- package/dist/components/VCombobox/VComboboxGroup.js.map +0 -1
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +0 -21
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/VComboboxOption.css +0 -2
- package/dist/components/VCombobox/VComboboxOption.js +0 -9
- package/dist/components/VCombobox/VComboboxOption.js.map +0 -1
- package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/VComboboxSeparator.css +0 -2
- package/dist/components/VCombobox/VComboboxSeparator.js +0 -9
- package/dist/components/VCombobox/VComboboxSeparator.js.map +0 -1
- package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/infiniteScroll.js.map +0 -1
- /package/dist/components/{VCombobox/VComboboxSeparator.d.ts → VCheckbox/VCheckMark.d.ts} +0 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { useLocale as e, useMessages as t } from "../../i18n/state.js";
|
|
2
|
+
import { clamp as n } from "../../utils/number.js";
|
|
3
|
+
import r from "../VIconButton/VIconButton.js";
|
|
4
|
+
import { useAriaLabel as i } from "../../composables/useAriaLabel.js";
|
|
5
|
+
import a from "../VInput/VInput.js";
|
|
6
|
+
import o from "../VSelect/VSelect.js";
|
|
7
|
+
import { colorize as ee } from "../VIcon/icons/colorize.js";
|
|
8
|
+
import { COLOR_FORMATS as te, formatColor as s, hsvToRgb as c, parseColor as l, rgbToHsv as u, sameColor as ne } from "./color.js";
|
|
9
|
+
import { Fragment as d, computed as f, createBlock as re, createCommentVNode as p, createElementBlock as m, createElementVNode as h, createVNode as g, defineComponent as _, mergeModels as v, normalizeStyle as y, onMounted as ie, openBlock as b, ref as x, renderList as ae, toDisplayString as oe, unref as S, useId as se, useModel as ce, watch as C } from "vue";
|
|
10
|
+
//#region src/components/VColorPicker/VColorPicker.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
+
var le = [
|
|
12
|
+
"aria-label",
|
|
13
|
+
"data-disabled",
|
|
14
|
+
"data-readonly"
|
|
15
|
+
], w = [
|
|
16
|
+
"value",
|
|
17
|
+
"aria-label",
|
|
18
|
+
"aria-valuetext",
|
|
19
|
+
"aria-readonly",
|
|
20
|
+
"disabled"
|
|
21
|
+
], ue = [
|
|
22
|
+
"value",
|
|
23
|
+
"aria-label",
|
|
24
|
+
"aria-valuetext",
|
|
25
|
+
"aria-readonly",
|
|
26
|
+
"disabled"
|
|
27
|
+
], de = { class: "v-color-picker-controls" }, T = { class: "v-color-picker-tracks" }, E = [
|
|
28
|
+
"value",
|
|
29
|
+
"aria-label",
|
|
30
|
+
"aria-valuetext",
|
|
31
|
+
"aria-readonly",
|
|
32
|
+
"disabled"
|
|
33
|
+
], D = [
|
|
34
|
+
"value",
|
|
35
|
+
"aria-label",
|
|
36
|
+
"aria-valuetext",
|
|
37
|
+
"aria-readonly",
|
|
38
|
+
"disabled"
|
|
39
|
+
], fe = {
|
|
40
|
+
key: 0,
|
|
41
|
+
class: "v-color-picker-fields"
|
|
42
|
+
}, pe = ["aria-label", "disabled"], me = [
|
|
43
|
+
"name",
|
|
44
|
+
"form",
|
|
45
|
+
"value",
|
|
46
|
+
"checked",
|
|
47
|
+
"aria-disabled",
|
|
48
|
+
"onChange"
|
|
49
|
+
], he = { class: "v-visually-hidden" }, ge = ["name", "value"], O = /*@__PURE__*/ _({
|
|
50
|
+
__name: "VColorPicker",
|
|
51
|
+
props: /*@__PURE__*/ v({
|
|
52
|
+
format: { default: "hex" },
|
|
53
|
+
alpha: {
|
|
54
|
+
type: Boolean,
|
|
55
|
+
default: !1
|
|
56
|
+
},
|
|
57
|
+
swatches: { default: void 0 },
|
|
58
|
+
hideInput: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
default: !1
|
|
61
|
+
},
|
|
62
|
+
hideEyeDropper: {
|
|
63
|
+
type: Boolean,
|
|
64
|
+
default: !1
|
|
65
|
+
},
|
|
66
|
+
disabled: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: !1
|
|
69
|
+
},
|
|
70
|
+
readonly: {
|
|
71
|
+
type: Boolean,
|
|
72
|
+
default: !1
|
|
73
|
+
},
|
|
74
|
+
label: { default: void 0 },
|
|
75
|
+
name: { default: void 0 }
|
|
76
|
+
}, {
|
|
77
|
+
modelValue: { default: null },
|
|
78
|
+
modelModifiers: {}
|
|
79
|
+
}),
|
|
80
|
+
emits: ["update:modelValue"],
|
|
81
|
+
setup(_, { expose: v }) {
|
|
82
|
+
let O = _, k = ce(_, "modelValue"), A = t(), j = e(), M = i(() => O.label ?? A.value.colorPicker.label), N = x({
|
|
83
|
+
h: 0,
|
|
84
|
+
s: 0,
|
|
85
|
+
v: 0,
|
|
86
|
+
a: 1
|
|
87
|
+
}), P = f(() => c(N.value)), F = null;
|
|
88
|
+
C(k, (e) => {
|
|
89
|
+
if (e === F) return;
|
|
90
|
+
let t = l(e);
|
|
91
|
+
t && (N.value = u(O.alpha ? t : {
|
|
92
|
+
...t,
|
|
93
|
+
a: 1
|
|
94
|
+
}, N.value.h));
|
|
95
|
+
}, { immediate: !0 });
|
|
96
|
+
function I(e) {
|
|
97
|
+
N.value = e, F = s(c(e), O.format, O.alpha), k.value = F;
|
|
98
|
+
}
|
|
99
|
+
function L(e) {
|
|
100
|
+
I(u(O.alpha ? e : {
|
|
101
|
+
...e,
|
|
102
|
+
a: 1
|
|
103
|
+
}, N.value.h));
|
|
104
|
+
}
|
|
105
|
+
let R = f(() => new Intl.NumberFormat(j.value, { style: "percent" })), _e = f(() => new Intl.NumberFormat(j.value, {
|
|
106
|
+
style: "unit",
|
|
107
|
+
unit: "degree",
|
|
108
|
+
unitDisplay: "narrow"
|
|
109
|
+
})), z = f(() => A.value.colorPicker.areaValue(R.value.format(Math.round(N.value.s * 100) / 100), R.value.format(Math.round(N.value.v * 100) / 100))), B = x(null), V = x(null);
|
|
110
|
+
function H(e) {
|
|
111
|
+
let t = B.value.getBoundingClientRect();
|
|
112
|
+
I({
|
|
113
|
+
...N.value,
|
|
114
|
+
s: n((e.clientX - t.left) / t.width, 0, 1),
|
|
115
|
+
v: n(1 - (e.clientY - t.top) / t.height, 0, 1)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
let U = null;
|
|
119
|
+
function ve(e) {
|
|
120
|
+
if (!(O.disabled || e.button !== 0) && (e.preventDefault(), V.value?.focus({ preventScroll: !0 }), !O.readonly)) {
|
|
121
|
+
U = e.pointerId;
|
|
122
|
+
try {
|
|
123
|
+
B.value.setPointerCapture(e.pointerId);
|
|
124
|
+
} catch {}
|
|
125
|
+
H(e);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function ye(e) {
|
|
129
|
+
e.pointerId === U && H(e);
|
|
130
|
+
}
|
|
131
|
+
function W(e) {
|
|
132
|
+
e.pointerId === U && (U = null);
|
|
133
|
+
}
|
|
134
|
+
function G(e) {
|
|
135
|
+
if (O.readonly) return;
|
|
136
|
+
let t = e.shiftKey ? 10 : 1, r = {
|
|
137
|
+
ArrowLeft: ["s", -t],
|
|
138
|
+
ArrowRight: ["s", t],
|
|
139
|
+
ArrowDown: ["v", -t],
|
|
140
|
+
ArrowUp: ["v", t],
|
|
141
|
+
PageDown: ["v", -10],
|
|
142
|
+
PageUp: ["v", 10],
|
|
143
|
+
Home: ["s", -100],
|
|
144
|
+
End: ["s", 100]
|
|
145
|
+
}[e.key];
|
|
146
|
+
if (!r) return;
|
|
147
|
+
e.preventDefault();
|
|
148
|
+
let [i, a] = r;
|
|
149
|
+
I({
|
|
150
|
+
...N.value,
|
|
151
|
+
[i]: n((Math.round(N.value[i] * 100) + a) / 100, 0, 1)
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function K(e, t, n) {
|
|
155
|
+
let r = n.target;
|
|
156
|
+
if (O.readonly) {
|
|
157
|
+
r.value = String(Math.round(N.value[e] * t));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
I({
|
|
161
|
+
...N.value,
|
|
162
|
+
[e]: Number(r.value) / t
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function be(e) {
|
|
166
|
+
O.readonly && e.preventDefault();
|
|
167
|
+
}
|
|
168
|
+
let q = x(O.format);
|
|
169
|
+
C(() => O.format, (e) => q.value = e);
|
|
170
|
+
let xe = te.map((e) => ({
|
|
171
|
+
value: e,
|
|
172
|
+
label: e.toUpperCase()
|
|
173
|
+
})), J = x("");
|
|
174
|
+
C([
|
|
175
|
+
P,
|
|
176
|
+
q,
|
|
177
|
+
() => O.alpha,
|
|
178
|
+
() => k.value === null
|
|
179
|
+
], () => {
|
|
180
|
+
J.value = k.value === null ? "" : s(P.value, q.value, O.alpha);
|
|
181
|
+
}, { immediate: !0 });
|
|
182
|
+
function Y() {
|
|
183
|
+
let e = J.value.trim();
|
|
184
|
+
if (!e) {
|
|
185
|
+
F = null, k.value = null;
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
let t = l(e);
|
|
189
|
+
t ? L(t) : J.value = s(P.value, q.value, O.alpha);
|
|
190
|
+
}
|
|
191
|
+
function Se(e) {
|
|
192
|
+
e.key === "Enter" && (e.preventDefault(), Y());
|
|
193
|
+
}
|
|
194
|
+
let X = f(() => (O.swatches ?? []).map((e) => {
|
|
195
|
+
let t = typeof e == "string" ? e : e.color;
|
|
196
|
+
return {
|
|
197
|
+
color: t,
|
|
198
|
+
label: typeof e == "string" ? e : e.label,
|
|
199
|
+
rgba: l(t)
|
|
200
|
+
};
|
|
201
|
+
})), Z = se(), Q = x(null);
|
|
202
|
+
ie(() => {
|
|
203
|
+
Q.value = window.EyeDropper ?? null;
|
|
204
|
+
});
|
|
205
|
+
async function Ce() {
|
|
206
|
+
if (Q.value) try {
|
|
207
|
+
let { sRGBHex: e } = await new Q.value().open(), t = l(e);
|
|
208
|
+
t && L({
|
|
209
|
+
...t,
|
|
210
|
+
a: N.value.a
|
|
211
|
+
});
|
|
212
|
+
} catch {}
|
|
213
|
+
}
|
|
214
|
+
let we = f(() => s({
|
|
215
|
+
...P.value,
|
|
216
|
+
a: 1
|
|
217
|
+
}, "rgb")), Te = f(() => ({
|
|
218
|
+
"--color-picker-hue": String(N.value.h),
|
|
219
|
+
"--color-picker-opaque": we.value,
|
|
220
|
+
"--color-picker-color": s(P.value, "rgb", O.alpha),
|
|
221
|
+
"--color-picker-s": String(N.value.s),
|
|
222
|
+
"--color-picker-v": String(N.value.v)
|
|
223
|
+
})), $ = x(null);
|
|
224
|
+
return v({
|
|
225
|
+
focus: (e) => V.value?.focus(e),
|
|
226
|
+
el: $
|
|
227
|
+
}), (e, t) => (b(), m("div", {
|
|
228
|
+
ref_key: "rootEl",
|
|
229
|
+
ref: $,
|
|
230
|
+
class: "v-color-picker",
|
|
231
|
+
role: "group",
|
|
232
|
+
"aria-label": S(M),
|
|
233
|
+
"data-disabled": _.disabled ? "" : void 0,
|
|
234
|
+
"data-readonly": _.readonly ? "" : void 0,
|
|
235
|
+
style: y(Te.value)
|
|
236
|
+
}, [
|
|
237
|
+
h("div", {
|
|
238
|
+
ref_key: "areaEl",
|
|
239
|
+
ref: B,
|
|
240
|
+
class: "v-color-picker-area",
|
|
241
|
+
onPointerdown: ve,
|
|
242
|
+
onPointermove: ye,
|
|
243
|
+
onPointerup: W,
|
|
244
|
+
onPointercancel: W
|
|
245
|
+
}, [
|
|
246
|
+
h("input", {
|
|
247
|
+
ref_key: "saturationEl",
|
|
248
|
+
ref: V,
|
|
249
|
+
type: "range",
|
|
250
|
+
class: "v-hidden-input",
|
|
251
|
+
min: "0",
|
|
252
|
+
max: "100",
|
|
253
|
+
value: Math.round(N.value.s * 100),
|
|
254
|
+
"aria-label": S(A).colorPicker.saturation,
|
|
255
|
+
"aria-valuetext": z.value,
|
|
256
|
+
"aria-readonly": _.readonly || void 0,
|
|
257
|
+
disabled: _.disabled,
|
|
258
|
+
onInput: t[0] ||= (e) => K("s", 100, e),
|
|
259
|
+
onKeydown: G
|
|
260
|
+
}, null, 40, w),
|
|
261
|
+
h("input", {
|
|
262
|
+
type: "range",
|
|
263
|
+
class: "v-hidden-input",
|
|
264
|
+
tabindex: "-1",
|
|
265
|
+
min: "0",
|
|
266
|
+
max: "100",
|
|
267
|
+
value: Math.round(N.value.v * 100),
|
|
268
|
+
"aria-label": S(A).colorPicker.brightness,
|
|
269
|
+
"aria-valuetext": z.value,
|
|
270
|
+
"aria-readonly": _.readonly || void 0,
|
|
271
|
+
disabled: _.disabled,
|
|
272
|
+
onInput: t[1] ||= (e) => K("v", 100, e),
|
|
273
|
+
onKeydown: G
|
|
274
|
+
}, null, 40, ue),
|
|
275
|
+
t[6] ||= h("span", {
|
|
276
|
+
class: "v-color-picker-thumb",
|
|
277
|
+
"aria-hidden": "true"
|
|
278
|
+
}, null, -1)
|
|
279
|
+
], 544),
|
|
280
|
+
h("div", de, [
|
|
281
|
+
Q.value && !_.hideEyeDropper ? (b(), re(r, {
|
|
282
|
+
key: 0,
|
|
283
|
+
class: "v-color-picker-eye-dropper",
|
|
284
|
+
icon: S(ee),
|
|
285
|
+
label: S(A).colorPicker.eyeDropper,
|
|
286
|
+
size: "sm",
|
|
287
|
+
disabled: _.disabled || _.readonly,
|
|
288
|
+
onClick: Ce
|
|
289
|
+
}, null, 8, [
|
|
290
|
+
"icon",
|
|
291
|
+
"label",
|
|
292
|
+
"disabled"
|
|
293
|
+
])) : p("", !0),
|
|
294
|
+
t[7] ||= h("span", {
|
|
295
|
+
class: "v-color-picker-preview",
|
|
296
|
+
"aria-hidden": "true"
|
|
297
|
+
}, null, -1),
|
|
298
|
+
h("div", T, [h("input", {
|
|
299
|
+
type: "range",
|
|
300
|
+
class: "v-color-picker-track v-color-picker-hue",
|
|
301
|
+
min: "0",
|
|
302
|
+
max: "360",
|
|
303
|
+
value: Math.round(N.value.h),
|
|
304
|
+
"aria-label": S(A).colorPicker.hue,
|
|
305
|
+
"aria-valuetext": _e.value.format(Math.round(N.value.h)),
|
|
306
|
+
"aria-readonly": _.readonly || void 0,
|
|
307
|
+
disabled: _.disabled,
|
|
308
|
+
onInput: t[2] ||= (e) => K("h", 1, e)
|
|
309
|
+
}, null, 40, E), _.alpha ? (b(), m("input", {
|
|
310
|
+
key: 0,
|
|
311
|
+
type: "range",
|
|
312
|
+
class: "v-color-picker-track v-color-picker-alpha",
|
|
313
|
+
min: "0",
|
|
314
|
+
max: "100",
|
|
315
|
+
value: Math.round(N.value.a * 100),
|
|
316
|
+
"aria-label": S(A).colorPicker.alpha,
|
|
317
|
+
"aria-valuetext": R.value.format(Math.round(N.value.a * 100) / 100),
|
|
318
|
+
"aria-readonly": _.readonly || void 0,
|
|
319
|
+
disabled: _.disabled,
|
|
320
|
+
onInput: t[3] ||= (e) => K("a", 100, e)
|
|
321
|
+
}, null, 40, D)) : p("", !0)])
|
|
322
|
+
]),
|
|
323
|
+
_.hideInput ? p("", !0) : (b(), m("div", fe, [g(o, {
|
|
324
|
+
"model-value": q.value,
|
|
325
|
+
class: "v-color-picker-format",
|
|
326
|
+
options: S(xe),
|
|
327
|
+
size: "sm",
|
|
328
|
+
"aria-label": S(A).colorPicker.format,
|
|
329
|
+
disabled: _.disabled,
|
|
330
|
+
"onUpdate:modelValue": t[4] ||= (e) => q.value = e
|
|
331
|
+
}, null, 8, [
|
|
332
|
+
"model-value",
|
|
333
|
+
"options",
|
|
334
|
+
"aria-label",
|
|
335
|
+
"disabled"
|
|
336
|
+
]), g(a, {
|
|
337
|
+
modelValue: J.value,
|
|
338
|
+
"onUpdate:modelValue": t[5] ||= (e) => J.value = e,
|
|
339
|
+
class: "v-color-picker-value",
|
|
340
|
+
size: "sm",
|
|
341
|
+
"aria-label": S(A).colorPicker.value,
|
|
342
|
+
autocomplete: "off",
|
|
343
|
+
spellcheck: "false",
|
|
344
|
+
disabled: _.disabled,
|
|
345
|
+
readonly: _.readonly,
|
|
346
|
+
onChange: Y,
|
|
347
|
+
onKeydown: Se
|
|
348
|
+
}, null, 8, [
|
|
349
|
+
"modelValue",
|
|
350
|
+
"aria-label",
|
|
351
|
+
"disabled",
|
|
352
|
+
"readonly"
|
|
353
|
+
])])),
|
|
354
|
+
X.value.length ? (b(), m("fieldset", {
|
|
355
|
+
key: 1,
|
|
356
|
+
class: "v-color-picker-swatches",
|
|
357
|
+
"aria-label": S(A).colorPicker.swatches,
|
|
358
|
+
disabled: _.disabled
|
|
359
|
+
}, [(b(!0), m(d, null, ae(X.value, (e) => (b(), m("label", {
|
|
360
|
+
key: e.color,
|
|
361
|
+
class: "v-color-picker-swatch",
|
|
362
|
+
style: y({ "--color-picker-swatch": e.color })
|
|
363
|
+
}, [
|
|
364
|
+
h("input", {
|
|
365
|
+
type: "radio",
|
|
366
|
+
class: "v-hidden-input",
|
|
367
|
+
name: S(Z),
|
|
368
|
+
form: `${S(Z)}-none`,
|
|
369
|
+
value: e.color,
|
|
370
|
+
checked: k.value !== null && S(ne)(e.rgba, P.value, _.alpha),
|
|
371
|
+
"aria-disabled": _.readonly || void 0,
|
|
372
|
+
onClick: be,
|
|
373
|
+
onChange: (t) => e.rgba && L(e.rgba)
|
|
374
|
+
}, null, 40, me),
|
|
375
|
+
t[8] ||= h("span", { class: "v-color-picker-chip" }, null, -1),
|
|
376
|
+
h("span", he, oe(e.label), 1)
|
|
377
|
+
], 4))), 128))], 8, pe)) : p("", !0),
|
|
378
|
+
_.name && k.value ? (b(), m("input", {
|
|
379
|
+
key: 2,
|
|
380
|
+
type: "hidden",
|
|
381
|
+
name: _.name,
|
|
382
|
+
value: k.value
|
|
383
|
+
}, null, 8, ge)) : p("", !0)
|
|
384
|
+
], 12, le));
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
//#endregion
|
|
388
|
+
export { O as default };
|
|
389
|
+
|
|
390
|
+
//# sourceMappingURL=VColorPicker.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VColorPicker.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VColorPicker/VColorPicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @a11y @core\n/**\n * A colour picker built from native ranges: the hue and alpha tracks are `<input type=\"range\">`,\n * and the saturation-brightness area holds two hidden ones, one per axis, which assistive\n * technology adjusts on its own. JavaScript adds the pointer on the area and its two-axis arrow\n * keys, which no native control offers.\n */\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport VIconButton from '../VIconButton/VIconButton.vue'\nimport VInput from '../VInput/VInput.vue'\nimport VSelect from '../VSelect/VSelect.vue'\nimport { colorize as colorizeIcon } from '../VIcon/icons/colorize'\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useLocale, useMessages } from '../../i18n/state'\nimport { clamp } from '../../utils/number'\nimport { COLOR_FORMATS, formatColor, hsvToRgb, parseColor, rgbToHsv, sameColor } from './color'\nimport type { ColorFormat, Hsva, Rgba } from './color'\n\nexport type { ColorFormat } from './color'\n\n/** A preset colour: the colour alone, or the colour and the words that name it. */\nexport type ColorSwatch = string | { color: string; label: string }\n\ninterface ColorPickerProps {\n /**\n * How the value is written: `#rrggbb`, `rgb()`, `hsl()` or `oklch()`. The text field accepts\n * all four whatever this says.\n */\n format?: ColorFormat\n /** Offers an opacity track, and writes the alpha into the value when it is below 1. */\n alpha?: boolean\n /** Preset colours, offered as a row of swatches under the picker. */\n swatches?: ColorSwatch[]\n /**\n * Hides the text field and its format menu. VColorInput does, its own field playing that\n * part.\n */\n hideInput?: boolean\n /**\n * Hides the eyedropper button, shown otherwise wherever the browser offers the `EyeDropper`\n * API.\n */\n hideEyeDropper?: boolean\n /** Makes the picker unusable. */\n disabled?: boolean\n /**\n * Shows the colour without letting it be changed. The controls stay focusable and announce\n * their values, which separates it from `disabled`, and the value is still submitted.\n */\n readonly?: boolean\n /** What the picker is called. It falls back to the design system dictionary. */\n label?: string\n /** The name the value is sent under in a form. */\n name?: string\n}\n\nconst props = withDefaults(defineProps<ColorPickerProps>(), {\n format: 'hex',\n alpha: false,\n swatches: undefined,\n hideInput: false,\n hideEyeDropper: false,\n disabled: false,\n readonly: false,\n label: undefined,\n name: undefined,\n})\n\n/** The colour, written in `format`, or `null` when none has been chosen. */\nconst model = defineModel<string | null>({ default: null })\n\nconst m = useMessages()\nconst locale = useLocale()\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.colorPicker.label)\n\n/** What the picker shows. With no colour yet, it rests on black, which writes nothing. */\nconst hsva = ref<Hsva>({ h: 0, s: 0, v: 0, a: 1 })\nconst rgba = computed(() => hsvToRgb(hsva.value))\n\n// @core\n// The value last written, so that its echo through the model is not parsed back: hex rounds the\n// channels, and a grey has no hue, so reading it back would move the thumbs under the pointer.\nlet written: string | null = null\n\nwatch(\n model,\n (value) => {\n if (value === written) return\n const parsed = parseColor(value)\n if (parsed) hsva.value = rgbToHsv(props.alpha ? parsed : { ...parsed, a: 1 }, hsva.value.h)\n },\n { immediate: true },\n)\n\nfunction write(next: Hsva) {\n hsva.value = next\n written = formatColor(hsvToRgb(next), props.format, props.alpha)\n model.value = written\n}\n\nfunction writeRgba(next: Rgba) {\n write(rgbToHsv(props.alpha ? next : { ...next, a: 1 }, hsva.value.h))\n}\n\nconst percent = computed(() => new Intl.NumberFormat(locale.value, { style: 'percent' }))\nconst degrees = computed(\n () =>\n new Intl.NumberFormat(locale.value, { style: 'unit', unit: 'degree', unitDisplay: 'narrow' }),\n)\n\n/** Both axes in words: read on either of the area's inputs, whichever one has the focus. */\nconst areaValueText = computed(() =>\n m.value.colorPicker.areaValue(\n percent.value.format(Math.round(hsva.value.s * 100) / 100),\n percent.value.format(Math.round(hsva.value.v * 100) / 100),\n ),\n)\n\nconst areaEl = ref<HTMLElement | null>(null)\nconst saturationEl = ref<HTMLInputElement | null>(null)\n\nfunction moveTo(event: PointerEvent) {\n const rect = areaEl.value!.getBoundingClientRect()\n write({\n ...hsva.value,\n s: clamp((event.clientX - rect.left) / rect.width, 0, 1),\n v: clamp(1 - (event.clientY - rect.top) / rect.height, 0, 1),\n })\n}\n\n/** The pointer dragging the area's thumb, if one is. */\nlet dragging: number | null = null\n\nfunction onAreaPointerdown(event: PointerEvent) {\n if (props.disabled || event.button !== 0) return\n // The focus is moved by hand, without the scroll a default focus on mousedown could cause.\n event.preventDefault()\n saturationEl.value?.focus({ preventScroll: true })\n if (props.readonly) return\n dragging = event.pointerId\n // @fallback\n // Capture keeps the drag going outside the area; synthetic events may not reference a\n // capturable pointer.\n try {\n areaEl.value!.setPointerCapture(event.pointerId)\n } catch {\n /* Synthetic pointers cannot be captured. */\n }\n moveTo(event)\n}\n\nfunction onAreaPointermove(event: PointerEvent) {\n if (event.pointerId === dragging) moveTo(event)\n}\n\nfunction onAreaPointerup(event: PointerEvent) {\n if (event.pointerId === dragging) dragging = null\n}\n\n// @keyboard\n/**\n * Both inputs of the area answer the same keys: the horizontal arrows and Home/End move the\n * saturation, the vertical arrows and PageUp/PageDown the brightness. Natively each input would\n * move its own axis on every arrow.\n */\nfunction onAreaKeydown(event: KeyboardEvent) {\n if (props.readonly) return\n const step = event.shiftKey ? 10 : 1\n const moves: Record<string, [axis: 's' | 'v', delta: number]> = {\n ArrowLeft: ['s', -step],\n ArrowRight: ['s', step],\n ArrowDown: ['v', -step],\n ArrowUp: ['v', step],\n PageDown: ['v', -10],\n PageUp: ['v', 10],\n Home: ['s', -100],\n End: ['s', 100],\n }\n const move = moves[event.key]\n if (!move) return\n event.preventDefault()\n const [axis, delta] = move\n write({ ...hsva.value, [axis]: clamp((Math.round(hsva.value[axis] * 100) + delta) / 100, 0, 1) })\n}\n\n/** What a native range reports on its own: a drag on a track, or assistive technology. */\nfunction onRangeInput(channel: keyof Hsva, scale: number, event: Event) {\n const el = event.target as HTMLInputElement\n // @core\n // A range has no native `readonly`: the move it has already made is put back.\n if (props.readonly) {\n el.value = String(Math.round(hsva.value[channel] * scale))\n return\n }\n write({ ...hsva.value, [channel]: Number(el.value) / scale })\n}\n\n/** A read-only swatch refuses the click, which is what checks a radio, arrows included. */\nfunction onSwatchClick(event: MouseEvent) {\n if (props.readonly) event.preventDefault()\n}\n\nconst shownFormat = ref<ColorFormat>(props.format)\nwatch(\n () => props.format,\n (format) => (shownFormat.value = format),\n)\n\nconst formatOptions = COLOR_FORMATS.map((format) => ({\n value: format,\n label: format.toUpperCase(),\n}))\n\n/** The text field's own copy, rewritten whenever the colour changes from elsewhere. */\nconst fieldText = ref('')\nwatch(\n [rgba, shownFormat, () => props.alpha, () => model.value === null],\n () => {\n fieldText.value =\n model.value === null ? '' : formatColor(rgba.value, shownFormat.value, props.alpha)\n },\n { immediate: true },\n)\n\n/** Takes what was typed, in any of the four formats, or puts the field back as it was. */\nfunction commitField() {\n const text = fieldText.value.trim()\n if (!text) {\n written = null\n model.value = null\n return\n }\n const parsed = parseColor(text)\n if (parsed) writeRgba(parsed)\n else fieldText.value = formatColor(rgba.value, shownFormat.value, props.alpha)\n}\n\nfunction onFieldKeydown(event: KeyboardEvent) {\n if (event.key !== 'Enter') return\n event.preventDefault()\n commitField()\n}\n\nconst items = computed(() =>\n (props.swatches ?? []).map((swatch) => {\n const color = typeof swatch === 'string' ? swatch : swatch.color\n return {\n color,\n label: typeof swatch === 'string' ? swatch : swatch.label,\n rgba: parseColor(color),\n }\n }),\n)\n\n// @core\n// The swatches are native radios, so the arrow keys move between them. Their name only groups\n// them: they are tied to a form that does not exist so that no enclosing form sends them, the\n// picker's value going through its own hidden input.\nconst swatchGroup = useId()\n\ninterface EyeDropperResult {\n sRGBHex: string\n}\n\n/** The EyeDropper API, which TypeScript's DOM library does not describe yet. */\ntype EyeDropperConstructor = new () => { open: () => Promise<EyeDropperResult> }\n\n// @fallback\n// Detected once mounted, never on the server: the button simply does not exist elsewhere.\nconst eyeDropper = ref<EyeDropperConstructor | null>(null)\nonMounted(() => {\n eyeDropper.value =\n (window as unknown as { EyeDropper?: EyeDropperConstructor }).EyeDropper ?? null\n})\n\nasync function pickFromScreen() {\n if (!eyeDropper.value) return\n try {\n const { sRGBHex } = await new eyeDropper.value().open()\n const picked = parseColor(sRGBHex)\n // The screen has no transparency: the opacity already chosen is kept.\n if (picked) writeRgba({ ...picked, a: hsva.value.a })\n } catch {\n // Escape cancels the eyedropper by rejecting the promise: nothing to report.\n }\n}\n\nconst opaque = computed(() => formatColor({ ...rgba.value, a: 1 }, 'rgb'))\n\nconst rootStyle = computed(() => ({\n '--color-picker-hue': String(hsva.value.h),\n '--color-picker-opaque': opaque.value,\n '--color-picker-color': formatColor(rgba.value, 'rgb', props.alpha),\n '--color-picker-s': String(hsva.value.s),\n '--color-picker-v': String(hsva.value.v),\n}))\n\nconst rootEl = ref<HTMLElement | null>(null)\n\ndefineExpose({\n /** Moves the focus to the saturation-brightness area. */\n focus: (options?: FocusOptions) => saturationEl.value?.focus(options),\n /** The root element. */\n el: rootEl,\n})\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"v-color-picker\"\n role=\"group\"\n :aria-label=\"ariaLabel\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :style=\"rootStyle\"\n >\n <div\n ref=\"areaEl\"\n class=\"v-color-picker-area\"\n @pointerdown=\"onAreaPointerdown\"\n @pointermove=\"onAreaPointermove\"\n @pointerup=\"onAreaPointerup\"\n @pointercancel=\"onAreaPointerup\"\n >\n <input\n ref=\"saturationEl\"\n type=\"range\"\n class=\"v-hidden-input\"\n min=\"0\"\n max=\"100\"\n :value=\"Math.round(hsva.s * 100)\"\n :aria-label=\"m.colorPicker.saturation\"\n :aria-valuetext=\"areaValueText\"\n :aria-readonly=\"readonly || undefined\"\n :disabled=\"disabled\"\n @input=\"onRangeInput('s', 100, $event)\"\n @keydown=\"onAreaKeydown\"\n />\n <!-- Out of the tab order: one stop for the area, whose arrows move both axes. -->\n <input\n type=\"range\"\n class=\"v-hidden-input\"\n tabindex=\"-1\"\n min=\"0\"\n max=\"100\"\n :value=\"Math.round(hsva.v * 100)\"\n :aria-label=\"m.colorPicker.brightness\"\n :aria-valuetext=\"areaValueText\"\n :aria-readonly=\"readonly || undefined\"\n :disabled=\"disabled\"\n @input=\"onRangeInput('v', 100, $event)\"\n @keydown=\"onAreaKeydown\"\n />\n <span class=\"v-color-picker-thumb\" aria-hidden=\"true\" />\n </div>\n\n <div class=\"v-color-picker-controls\">\n <VIconButton\n v-if=\"eyeDropper && !hideEyeDropper\"\n class=\"v-color-picker-eye-dropper\"\n :icon=\"colorizeIcon\"\n :label=\"m.colorPicker.eyeDropper\"\n size=\"sm\"\n :disabled=\"disabled || readonly\"\n @click=\"pickFromScreen\"\n />\n <span class=\"v-color-picker-preview\" aria-hidden=\"true\" />\n <div class=\"v-color-picker-tracks\">\n <input\n type=\"range\"\n class=\"v-color-picker-track v-color-picker-hue\"\n min=\"0\"\n max=\"360\"\n :value=\"Math.round(hsva.h)\"\n :aria-label=\"m.colorPicker.hue\"\n :aria-valuetext=\"degrees.format(Math.round(hsva.h))\"\n :aria-readonly=\"readonly || undefined\"\n :disabled=\"disabled\"\n @input=\"onRangeInput('h', 1, $event)\"\n />\n <input\n v-if=\"alpha\"\n type=\"range\"\n class=\"v-color-picker-track v-color-picker-alpha\"\n min=\"0\"\n max=\"100\"\n :value=\"Math.round(hsva.a * 100)\"\n :aria-label=\"m.colorPicker.alpha\"\n :aria-valuetext=\"percent.format(Math.round(hsva.a * 100) / 100)\"\n :aria-readonly=\"readonly || undefined\"\n :disabled=\"disabled\"\n @input=\"onRangeInput('a', 100, $event)\"\n />\n </div>\n </div>\n\n <div v-if=\"!hideInput\" class=\"v-color-picker-fields\">\n <VSelect\n :model-value=\"shownFormat\"\n class=\"v-color-picker-format\"\n :options=\"formatOptions\"\n size=\"sm\"\n :aria-label=\"m.colorPicker.format\"\n :disabled=\"disabled\"\n @update:model-value=\"shownFormat = $event as ColorFormat\"\n />\n <VInput\n v-model=\"fieldText\"\n class=\"v-color-picker-value\"\n size=\"sm\"\n :aria-label=\"m.colorPicker.value\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @change=\"commitField\"\n @keydown=\"onFieldKeydown\"\n />\n </div>\n\n <fieldset\n v-if=\"items.length\"\n class=\"v-color-picker-swatches\"\n :aria-label=\"m.colorPicker.swatches\"\n :disabled=\"disabled\"\n >\n <label\n v-for=\"item in items\"\n :key=\"item.color\"\n class=\"v-color-picker-swatch\"\n :style=\"{ '--color-picker-swatch': item.color }\"\n >\n <input\n type=\"radio\"\n class=\"v-hidden-input\"\n :name=\"swatchGroup\"\n :form=\"`${swatchGroup}-none`\"\n :value=\"item.color\"\n :checked=\"model !== null && sameColor(item.rgba, rgba, alpha)\"\n :aria-disabled=\"readonly || undefined\"\n @click=\"onSwatchClick\"\n @change=\"item.rgba && writeRgba(item.rgba)\"\n />\n <span class=\"v-color-picker-chip\" />\n <span class=\"v-visually-hidden\">{{ item.label }}</span>\n </label>\n </fieldset>\n\n <input v-if=\"name && model\" type=\"hidden\" :name=\"name\" :value=\"model\" />\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-color-picker {\n /*\n * The checkerboard that shows through a translucent colour. It is drawn in the theme's own\n * surface and border colours, so it reads as \"transparent\" in both themes.\n */\n --color-picker-checker: repeating-conic-gradient(\n var(--vectis-color-border) 0 25%,\n var(--vectis-color-surface) 0 50%\n )\n 0 0 / var(--vectis-control-size-color-picker-checker)\n var(--vectis-control-size-color-picker-checker);\n --color-picker-thumb: var(--vectis-control-size-color-picker-thumb);\n\n display: inline-flex;\n flex-direction: column;\n gap: var(--vectis-space-3);\n inline-size: var(--vectis-control-size-color-picker-width);\n max-inline-size: 100%;\n padding: var(--vectis-space-3);\n color: var(--vectis-color-text);\n font-family: var(--vectis-text-family);\n }\n\n /*\n * The colour content (area, tracks, preview, swatches) is the value itself, not the theme's\n * paint: it is never mirrored in right-to-left text, and forced colours leave it untouched.\n * Its gradients run between literal black and white, the ends of the colour model.\n */\n\n /*\n * The edge of the preview and the swatches is a translucent border over the colour, which it\n * shades rather than covers: an opaque grey ring left a pale fringe on the antialiased pixels.\n * The colour runs under the border and the checkerboard stops inside it, so no square of the\n * checkerboard shows through those pixels either.\n */\n .v-color-picker-area,\n .v-color-picker-track,\n .v-color-picker-preview,\n .v-color-picker-chip {\n direction: ltr;\n forced-color-adjust: none;\n }\n\n .v-color-picker-area {\n position: relative;\n block-size: var(--vectis-control-size-color-picker-area);\n border-radius: var(--vectis-radius-interactive);\n background:\n linear-gradient(to top, black, transparent), linear-gradient(to right, white, transparent),\n hsl(var(--color-picker-hue) 100% 50%);\n cursor: crosshair;\n touch-action: none;\n }\n\n /*\n * Every thumb carries a light ring and a dark one, whatever the theme: it sits on colours of\n * any lightness, against which a single themed ring would vanish.\n */\n .v-color-picker-thumb {\n position: absolute;\n inset-inline-start: calc(var(--color-picker-s) * 100%);\n inset-block-start: calc((1 - var(--color-picker-v)) * 100%);\n inline-size: var(--color-picker-thumb);\n block-size: var(--color-picker-thumb);\n border: 2px solid white;\n border-radius: var(--vectis-radius-pill);\n background: var(--color-picker-opaque);\n box-shadow:\n 0 0 0 1px rgb(0 0 0 / 0.4),\n inset 0 0 0 1px rgb(0 0 0 / 0.4);\n translate: -50% -50%;\n pointer-events: none;\n }\n\n .v-color-picker-area:has(.v-hidden-input:focus-visible) .v-color-picker-thumb {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n .v-color-picker-controls {\n display: flex;\n align-items: center;\n gap: var(--vectis-space-2);\n }\n\n .v-color-picker-preview {\n flex: none;\n inline-size: var(--vectis-control-size-color-picker-preview);\n block-size: var(--vectis-control-size-color-picker-preview);\n border-radius: var(--vectis-radius-pill);\n border: 1px solid var(--vectis-color-border-on-fill);\n background:\n linear-gradient(var(--color-picker-color), var(--color-picker-color)) border-box,\n var(--color-picker-checker) padding-box;\n }\n\n .v-color-picker-tracks {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--vectis-space-3);\n min-inline-size: 0;\n }\n\n .v-color-picker-track {\n display: block;\n inline-size: 100%;\n block-size: var(--vectis-control-size-color-picker-track);\n margin: 0;\n border-radius: var(--vectis-radius-pill);\n appearance: none;\n cursor: pointer;\n }\n\n .v-color-picker-hue {\n --color-picker-track-thumb: hsl(var(--color-picker-hue) 100% 50%);\n background: linear-gradient(\n to right,\n hsl(0 100% 50%),\n hsl(60 100% 50%),\n hsl(120 100% 50%),\n hsl(180 100% 50%),\n hsl(240 100% 50%),\n hsl(300 100% 50%),\n hsl(360 100% 50%)\n );\n }\n\n .v-color-picker-alpha {\n --color-picker-track-thumb: var(--color-picker-color);\n background:\n linear-gradient(to right, transparent, var(--color-picker-opaque)),\n var(--color-picker-checker);\n }\n\n /*\n * The two vendor pseudo-elements stay in two separate rules: a selector list holding one a\n * browser does not know is dropped whole.\n */\n .v-color-picker-track::-webkit-slider-thumb {\n appearance: none;\n inline-size: var(--color-picker-thumb);\n block-size: var(--color-picker-thumb);\n border: 2px solid white;\n border-radius: var(--vectis-radius-pill);\n background:\n linear-gradient(var(--color-picker-track-thumb), var(--color-picker-track-thumb)),\n var(--color-picker-checker);\n box-shadow:\n 0 0 0 1px rgb(0 0 0 / 0.4),\n inset 0 0 0 1px rgb(0 0 0 / 0.4);\n }\n\n .v-color-picker-track::-moz-range-thumb {\n box-sizing: border-box;\n inline-size: var(--color-picker-thumb);\n block-size: var(--color-picker-thumb);\n border: 2px solid white;\n border-radius: var(--vectis-radius-pill);\n background:\n linear-gradient(var(--color-picker-track-thumb), var(--color-picker-track-thumb)),\n var(--color-picker-checker);\n box-shadow:\n 0 0 0 1px rgb(0 0 0 / 0.4),\n inset 0 0 0 1px rgb(0 0 0 / 0.4);\n }\n\n .v-color-picker-track:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n .v-color-picker-fields {\n display: flex;\n gap: var(--vectis-space-2);\n }\n\n /* Qualified to outweigh the full width VSelect takes by default. */\n .v-color-picker-fields .v-color-picker-format {\n flex: none;\n inline-size: var(--vectis-control-size-color-picker-format);\n }\n\n .v-color-picker-value {\n flex: 1;\n min-inline-size: 0;\n }\n\n /*\n * A colour is written left to right in every language: in right-to-left text the bidi\n * algorithm would move the `#` of `#f59e0b` to the end. The field keeps its right alignment.\n */\n .v-color-picker-value .v-input-control {\n direction: ltr;\n font-variant-numeric: tabular-nums;\n }\n\n .v-color-picker-value .v-input-control:dir(rtl) {\n text-align: right;\n }\n\n .v-color-picker-swatches {\n display: flex;\n flex-wrap: wrap;\n gap: var(--vectis-space-2);\n min-inline-size: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .v-color-picker-swatch {\n position: relative;\n display: inline-flex;\n cursor: pointer;\n }\n\n .v-color-picker-chip {\n inline-size: var(--vectis-control-size-color-picker-swatch);\n block-size: var(--vectis-control-size-color-picker-swatch);\n border-radius: var(--vectis-radius-interactive);\n border: 1px solid var(--vectis-color-border-on-fill);\n background:\n linear-gradient(var(--color-picker-swatch), var(--color-picker-swatch)) border-box,\n var(--color-picker-checker) padding-box;\n }\n\n /* An outline rather than a shadow marks the chosen swatch: forced colours keep outlines. */\n .v-color-picker-swatch .v-hidden-input:checked + .v-color-picker-chip {\n outline: 2px solid var(--vectis-color-text);\n outline-offset: 1px;\n }\n\n .v-color-picker-swatch .v-hidden-input:focus-visible + .v-color-picker-chip {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n /* Colour content is media, which may fade; the text controls take the disabled tokens. */\n .v-color-picker[data-disabled]\n :is(\n .v-color-picker-area,\n .v-color-picker-preview,\n .v-color-picker-track,\n .v-color-picker-chip\n ) {\n opacity: 0.5;\n }\n\n .v-color-picker[data-disabled]\n :is(.v-color-picker-area, .v-color-picker-track, .v-color-picker-swatch) {\n cursor: not-allowed;\n }\n\n /* A read-only picker is still read, so it keeps the ordinary cursor, as VTimePicker does. */\n .v-color-picker[data-readonly]\n :is(.v-color-picker-area, .v-color-picker-track, .v-color-picker-swatch) {\n cursor: default;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colour parsing, conversion and formatting for VColorPicker and VColorInput, without a
|
|
3
|
+
* dependency. Everything works in sRGB: an `oklch()` colour outside it is clipped to the nearest
|
|
4
|
+
* displayable one, which is what the picker could show anyway.
|
|
5
|
+
*/
|
|
6
|
+
/** How a colour is written: `#rrggbb`, `rgb()`, `hsl()` or `oklch()`. */
|
|
7
|
+
export type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'oklch';
|
|
8
|
+
/** The formats in the order the picker offers them. */
|
|
9
|
+
export declare const COLOR_FORMATS: readonly ColorFormat[];
|
|
10
|
+
/** A colour in sRGB, each channel from 0 to 1, alpha included. */
|
|
11
|
+
export interface Rgba {
|
|
12
|
+
r: number;
|
|
13
|
+
g: number;
|
|
14
|
+
b: number;
|
|
15
|
+
a: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A colour as the picker holds it: hue in degrees, saturation and value (brightness) from 0 to
|
|
19
|
+
* 1. The hue survives where RGB would lose it, on greys, black and white.
|
|
20
|
+
*/
|
|
21
|
+
export interface Hsva {
|
|
22
|
+
h: number;
|
|
23
|
+
s: number;
|
|
24
|
+
v: number;
|
|
25
|
+
a: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function hsvToRgb({ h, s, v, a }: Hsva): Rgba;
|
|
28
|
+
/** `hue` is kept when the colour has none of its own: a grey, black or white. */
|
|
29
|
+
export declare function rgbToHsv({ r, g, b, a }: Rgba, hue?: number): Hsva;
|
|
30
|
+
/**
|
|
31
|
+
* Reads a colour written in hex (`#` optional, 3, 4, 6 or 8 digits), `rgb()`, `hsl()` or
|
|
32
|
+
* `oklch()`, in the comma or the space syntax, with an optional alpha. Returns `null` for
|
|
33
|
+
* anything else, CSS colour names included.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseColor(input: string | null | undefined): Rgba | null;
|
|
36
|
+
/**
|
|
37
|
+
* Writes a colour in `format`. The alpha appears only when `alpha` is true and the colour is not
|
|
38
|
+
* opaque, so an opaque colour always reads the same whether alpha is offered or not.
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatColor(rgba: Rgba, format: ColorFormat, alpha?: boolean): string;
|
|
41
|
+
/** Whether two colours are the same once written in hex, which is how swatches are matched. */
|
|
42
|
+
export declare function sameColor(a: Rgba | null, b: Rgba | null, alpha: boolean): boolean;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
//#region src/components/VColorPicker/color.ts
|
|
2
|
+
var e = [
|
|
3
|
+
"hex",
|
|
4
|
+
"rgb",
|
|
5
|
+
"hsl",
|
|
6
|
+
"oklch"
|
|
7
|
+
], t = (e) => Math.min(Math.max(e, 0), 1), n = (e) => (e % 360 + 360) % 360;
|
|
8
|
+
function r({ h: e, s: t, v: n, a: r }) {
|
|
9
|
+
let i = (r) => {
|
|
10
|
+
let i = (r + e / 60) % 6;
|
|
11
|
+
return n - n * t * Math.max(0, Math.min(i, 4 - i, 1));
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
r: i(5),
|
|
15
|
+
g: i(3),
|
|
16
|
+
b: i(1),
|
|
17
|
+
a: r
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function i({ r: e, g: t, b: r, a: i }, a = 0) {
|
|
21
|
+
let o = Math.max(e, t, r), s = o - Math.min(e, t, r), c = a;
|
|
22
|
+
return s > 0 && (c = o === e ? 60 * (((t - r) / s + 6) % 6) : o === t ? 60 * ((r - e) / s + 2) : 60 * ((e - t) / s + 4)), {
|
|
23
|
+
h: n(c),
|
|
24
|
+
s: o === 0 ? 0 : s / o,
|
|
25
|
+
v: o,
|
|
26
|
+
a: i
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function a(e, t, n, i) {
|
|
30
|
+
let a = n + t * Math.min(n, 1 - n);
|
|
31
|
+
return r({
|
|
32
|
+
h: e,
|
|
33
|
+
s: a === 0 ? 0 : 2 * (1 - n / a),
|
|
34
|
+
v: a,
|
|
35
|
+
a: i
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function o(e) {
|
|
39
|
+
let { h: t, s: n, v: r } = i(e), a = r * (1 - n / 2);
|
|
40
|
+
return {
|
|
41
|
+
h: t,
|
|
42
|
+
s: a === 0 || a === 1 ? 0 : (r - a) / Math.min(a, 1 - a),
|
|
43
|
+
l: a
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
var s = (e) => e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4, c = (e) => e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
|
|
47
|
+
function l({ r: e, g: t, b: r }) {
|
|
48
|
+
let [i, a, o] = [
|
|
49
|
+
s(e),
|
|
50
|
+
s(t),
|
|
51
|
+
s(r)
|
|
52
|
+
], c = Math.cbrt(.4122214708 * i + .5363325363 * a + .0514459929 * o), l = Math.cbrt(.2119034982 * i + .6806995451 * a + .1073969566 * o), u = Math.cbrt(.0883024619 * i + .2817188376 * a + .6299787005 * o), d = .2104542553 * c + .793617785 * l - .0040720468 * u, f = 1.9779984951 * c - 2.428592205 * l + .4505937099 * u, p = .0259040371 * c + .7827717662 * l - .808675766 * u;
|
|
53
|
+
return {
|
|
54
|
+
l: d,
|
|
55
|
+
c: Math.hypot(f, p),
|
|
56
|
+
h: n(Math.atan2(p, f) * 180 / Math.PI)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function u(e, n, r, i) {
|
|
60
|
+
let a = n * Math.cos(r * Math.PI / 180), o = n * Math.sin(r * Math.PI / 180), s = (e + .3963377774 * a + .2158037573 * o) ** 3, l = (e - .1055613458 * a - .0638541728 * o) ** 3, u = (e - .0894841775 * a - 1.291485548 * o) ** 3, d = (e) => t(c(e));
|
|
61
|
+
return {
|
|
62
|
+
r: d(4.0767416621 * s - 3.3077115913 * l + .2309699292 * u),
|
|
63
|
+
g: d(-1.2684380046 * s + 2.6097574011 * l - .3413193965 * u),
|
|
64
|
+
b: d(-.0041960863 * s - .7034186147 * l + 1.707614701 * u),
|
|
65
|
+
a: i
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function d(e, t) {
|
|
69
|
+
if (e === void 0) return null;
|
|
70
|
+
if (e === "none") return 0;
|
|
71
|
+
let n = /^([+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?)(%|deg|grad|rad|turn)?$/.exec(e);
|
|
72
|
+
if (!n) return null;
|
|
73
|
+
let r = Number(n[1]);
|
|
74
|
+
switch (n[2]) {
|
|
75
|
+
case "%": return r / 100 * t;
|
|
76
|
+
case "grad": return r * .9;
|
|
77
|
+
case "rad": return r * 180 / Math.PI;
|
|
78
|
+
case "turn": return r * 360;
|
|
79
|
+
default: return r;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function f(e) {
|
|
83
|
+
if (!/^[0-9a-f]+$/.test(e) || ![
|
|
84
|
+
3,
|
|
85
|
+
4,
|
|
86
|
+
6,
|
|
87
|
+
8
|
|
88
|
+
].includes(e.length)) return null;
|
|
89
|
+
let [t = 0, n = 0, r = 0, i = 1] = (e.length <= 4 ? [...e].map((e) => e + e) : e.match(/../g)).map((e) => parseInt(e, 16) / 255);
|
|
90
|
+
return {
|
|
91
|
+
r: t,
|
|
92
|
+
g: n,
|
|
93
|
+
b: r,
|
|
94
|
+
a: i
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function p(e) {
|
|
98
|
+
let r = (e ?? "").trim().toLowerCase();
|
|
99
|
+
if (!r) return null;
|
|
100
|
+
let i = /^(rgba?|hsla?|oklch)\(\s*([^)]*)\)$/.exec(r);
|
|
101
|
+
if (!i) return f(r.replace(/^#/, ""));
|
|
102
|
+
let [o = "", s, c] = i[2].split("/");
|
|
103
|
+
if (c !== void 0) return null;
|
|
104
|
+
let l = o.trim().split(/\s*,\s*|\s+/), p = s === void 0 && l.length === 4 ? l.pop() : void 0;
|
|
105
|
+
if (l.length !== 3) return null;
|
|
106
|
+
let m = (s ?? p)?.trim(), h = m === void 0 ? 1 : d(m, 1);
|
|
107
|
+
if (h === null) return null;
|
|
108
|
+
let g = i[1];
|
|
109
|
+
if (g.startsWith("rgb")) {
|
|
110
|
+
let [e, n, r] = l.map((e) => d(e, 255));
|
|
111
|
+
return e == null || n == null || r == null ? null : {
|
|
112
|
+
r: t(e / 255),
|
|
113
|
+
g: t(n / 255),
|
|
114
|
+
b: t(r / 255),
|
|
115
|
+
a: t(h)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (g.startsWith("hsl")) {
|
|
119
|
+
let [e, r, i] = [
|
|
120
|
+
d(l[0], 360),
|
|
121
|
+
d(l[1], 100),
|
|
122
|
+
d(l[2], 100)
|
|
123
|
+
];
|
|
124
|
+
return e == null || r == null || i == null ? null : a(n(e), t(r / 100), t(i / 100), t(h));
|
|
125
|
+
}
|
|
126
|
+
let [_, v, y] = [
|
|
127
|
+
d(l[0], 1),
|
|
128
|
+
d(l[1], .4),
|
|
129
|
+
d(l[2], 360)
|
|
130
|
+
];
|
|
131
|
+
return _ == null || v == null || y == null ? null : u(t(_), Math.max(v, 0), n(y), t(h));
|
|
132
|
+
}
|
|
133
|
+
var m = (e, t = 0) => String(Number(e.toFixed(t)));
|
|
134
|
+
function h(e, n, r = !1) {
|
|
135
|
+
let i = r ? t(e.a) : 1, a = i < 1 ? ` / ${m(i, 2)}` : "";
|
|
136
|
+
switch (n) {
|
|
137
|
+
case "rgb": return `rgb(${m(e.r * 255)} ${m(e.g * 255)} ${m(e.b * 255)}${a})`;
|
|
138
|
+
case "hsl": {
|
|
139
|
+
let { h: t, s: n, l: r } = o(e);
|
|
140
|
+
return `hsl(${m(t)} ${m(n * 100)}% ${m(r * 100)}%${a})`;
|
|
141
|
+
}
|
|
142
|
+
case "oklch": {
|
|
143
|
+
let { l: t, c: n, h: r } = l(e), i = n < 5e-4 ? 0 : r;
|
|
144
|
+
return `oklch(${m(t * 100, 1)}% ${m(n, 3)} ${m(i, 1)}${a})`;
|
|
145
|
+
}
|
|
146
|
+
default: {
|
|
147
|
+
let n = (e) => Math.round(t(e) * 255).toString(16).padStart(2, "0");
|
|
148
|
+
return `#${n(e.r)}${n(e.g)}${n(e.b)}${i < 1 ? n(i) : ""}`;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function g(e, t, n) {
|
|
153
|
+
return !!e && !!t && h(e, "hex", n) === h(t, "hex", n);
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
export { e as COLOR_FORMATS, h as formatColor, r as hsvToRgb, p as parseColor, i as rgbToHsv, g as sameColor };
|
|
157
|
+
|
|
158
|
+
//# sourceMappingURL=color.js.map
|