vuetify 3.1.5 → 3.1.7

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 (140) hide show
  1. package/dist/json/attributes.json +562 -34
  2. package/dist/json/importMap.json +36 -36
  3. package/dist/json/tags.json +136 -2
  4. package/dist/json/web-types.json +2163 -85
  5. package/dist/vuetify-labs.css +30 -25
  6. package/dist/vuetify-labs.d.ts +3455 -146
  7. package/dist/vuetify-labs.esm.js +123 -73
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +123 -73
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +89 -84
  12. package/dist/vuetify.d.ts +1928 -77
  13. package/dist/vuetify.esm.js +102 -63
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +102 -63
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +674 -669
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/index.d.ts +22 -0
  21. package/lib/components/VApp/index.d.ts +6 -0
  22. package/lib/components/VAppBar/index.d.ts +36 -0
  23. package/lib/components/VAutocomplete/index.d.ts +117 -6
  24. package/lib/components/VAvatar/index.d.ts +6 -0
  25. package/lib/components/VBadge/index.d.ts +8 -0
  26. package/lib/components/VBanner/index.d.ts +24 -0
  27. package/lib/components/VBottomNavigation/index.d.ts +6 -0
  28. package/lib/components/VBreadcrumbs/index.d.ts +28 -4
  29. package/lib/components/VBtn/index.d.ts +12 -0
  30. package/lib/components/VBtnGroup/index.d.ts +6 -0
  31. package/lib/components/VBtnToggle/index.d.ts +6 -0
  32. package/lib/components/VCard/index.d.ts +60 -0
  33. package/lib/components/VCarousel/index.d.ts +60 -0
  34. package/lib/components/VCheckbox/index.d.ts +38 -0
  35. package/lib/components/VChip/index.d.ts +12 -0
  36. package/lib/components/VChipGroup/index.d.ts +6 -0
  37. package/lib/components/VCode/index.d.ts +6 -0
  38. package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
  39. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  40. package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
  41. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
  42. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  43. package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
  44. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
  45. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  46. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  47. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  48. package/lib/components/VColorPicker/util/index.mjs +2 -5
  49. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  50. package/lib/components/VCombobox/index.d.ts +117 -6
  51. package/lib/components/VCounter/index.d.ts +24 -0
  52. package/lib/components/VDefaultsProvider/index.d.ts +6 -0
  53. package/lib/components/VDialog/index.d.ts +64 -1
  54. package/lib/components/VDivider/index.d.ts +6 -0
  55. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  56. package/lib/components/VExpansionPanel/index.d.ts +49 -12
  57. package/lib/components/VField/index.d.ts +20 -6
  58. package/lib/components/VFileInput/index.d.ts +43 -1
  59. package/lib/components/VFooter/index.d.ts +7 -1
  60. package/lib/components/VForm/index.d.ts +6 -0
  61. package/lib/components/VGrid/index.d.ts +24 -0
  62. package/lib/components/VHover/index.d.ts +12 -0
  63. package/lib/components/VIcon/index.d.ts +12 -0
  64. package/lib/components/VImg/index.d.ts +12 -0
  65. package/lib/components/VInput/index.d.ts +12 -0
  66. package/lib/components/VItemGroup/index.d.ts +12 -0
  67. package/lib/components/VKbd/index.d.ts +6 -0
  68. package/lib/components/VLabel/index.d.ts +6 -0
  69. package/lib/components/VLayout/index.d.ts +12 -0
  70. package/lib/components/VLazy/index.d.ts +6 -0
  71. package/lib/components/VList/index.d.ts +77 -6
  72. package/lib/components/VLocaleProvider/index.d.ts +6 -0
  73. package/lib/components/VMain/index.d.ts +6 -0
  74. package/lib/components/VMenu/index.d.ts +64 -1
  75. package/lib/components/VMessages/index.d.ts +24 -0
  76. package/lib/components/VNavigationDrawer/index.d.ts +12 -0
  77. package/lib/components/VNoSsr/index.d.ts +6 -0
  78. package/lib/components/VOverlay/index.d.ts +18 -0
  79. package/lib/components/VOverlay/scrollStrategies.mjs +1 -1
  80. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  81. package/lib/components/VPagination/index.d.ts +14 -0
  82. package/lib/components/VParallax/index.d.ts +12 -0
  83. package/lib/components/VProgressCircular/index.d.ts +6 -0
  84. package/lib/components/VProgressLinear/index.d.ts +12 -0
  85. package/lib/components/VRadio/index.d.ts +16 -0
  86. package/lib/components/VRadioGroup/index.d.ts +22 -0
  87. package/lib/components/VRangeSlider/index.d.ts +16 -0
  88. package/lib/components/VRating/index.d.ts +8 -0
  89. package/lib/components/VResponsive/index.d.ts +8 -0
  90. package/lib/components/VSelect/index.d.ts +183 -6
  91. package/lib/components/VSelectionControl/index.d.ts +14 -6
  92. package/lib/components/VSelectionControlGroup/index.d.ts +6 -0
  93. package/lib/components/VSheet/VSheet.mjs +22 -12
  94. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  95. package/lib/components/VSheet/index.d.ts +7 -1
  96. package/lib/components/VSlideGroup/index.d.ts +26 -0
  97. package/lib/components/VSlider/index.d.ts +16 -0
  98. package/lib/components/VSnackbar/index.d.ts +44 -1
  99. package/lib/components/VSwitch/index.d.ts +22 -0
  100. package/lib/components/VSystemBar/VSystemBar.css +5 -1
  101. package/lib/components/VSystemBar/VSystemBar.sass +5 -1
  102. package/lib/components/VSystemBar/_variables.scss +4 -1
  103. package/lib/components/VSystemBar/index.d.ts +6 -0
  104. package/lib/components/VTable/index.d.ts +12 -0
  105. package/lib/components/VTabs/index.d.ts +12 -0
  106. package/lib/components/VTextField/index.d.ts +54 -6
  107. package/lib/components/VTextarea/index.d.ts +39 -1
  108. package/lib/components/VThemeProvider/index.d.ts +6 -0
  109. package/lib/components/VTimeline/index.d.ts +16 -0
  110. package/lib/components/VToolbar/index.d.ts +30 -0
  111. package/lib/components/VTooltip/index.d.ts +46 -1
  112. package/lib/components/VValidation/index.d.ts +6 -0
  113. package/lib/components/VWindow/index.d.ts +34 -0
  114. package/lib/components/index.d.ts +1918 -67
  115. package/lib/components/transitions/index.d.ts +96 -0
  116. package/lib/composables/nested/nested.mjs +2 -2
  117. package/lib/composables/nested/nested.mjs.map +1 -1
  118. package/lib/composables/nested/selectStrategies.mjs +7 -1
  119. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  120. package/lib/composables/proxiedModel.mjs +1 -1
  121. package/lib/composables/proxiedModel.mjs.map +1 -1
  122. package/lib/composables/resizeObserver.mjs.map +1 -1
  123. package/lib/composables/theme.mjs +21 -13
  124. package/lib/composables/theme.mjs.map +1 -1
  125. package/lib/entry-bundler.mjs +1 -1
  126. package/lib/framework.mjs +1 -1
  127. package/lib/index.d.ts +9 -9
  128. package/lib/labs/VDataTable/VDataTableRows.mjs +4 -6
  129. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  130. package/lib/labs/VDataTable/VDataTableServer.mjs +2 -2
  131. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  132. package/lib/labs/VDataTable/index.d.ts +1503 -48
  133. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +18 -5
  134. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  135. package/lib/labs/VVirtualScroll/index.d.ts +9 -6
  136. package/lib/labs/components.d.ts +1512 -54
  137. package/lib/util/colorUtils.mjs +4 -5
  138. package/lib/util/colorUtils.mjs.map +1 -1
  139. package/lib/util/defineComponent.mjs.map +1 -1
  140. package/package.json +4 -4
@@ -2,7 +2,8 @@ import { createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VColorPickerCanvas.css";
4
4
 
5
- // Utilities
5
+ // Composables
6
+ import { useResizeObserver } from "../../composables/resizeObserver.mjs"; // Utilities
6
7
  import { clamp, convertToUnit, defineComponent, getEventCoordinates, useRender } from "../../util/index.mjs";
7
8
  import { computed, onMounted, ref, watch } from 'vue';
8
9
 
@@ -55,6 +56,19 @@ export const VColorPickerCanvas = defineComponent({
55
56
  };
56
57
  });
57
58
  const canvasRef = ref();
59
+ const canvasWidth = ref(parseFloat(props.width));
60
+ const canvasHeight = ref(parseFloat(props.height));
61
+ const {
62
+ resizeRef
63
+ } = useResizeObserver(entries => {
64
+ if (!resizeRef.value?.offsetParent) return;
65
+ const {
66
+ width,
67
+ height
68
+ } = entries[0].contentRect;
69
+ canvasWidth.value = width;
70
+ canvasHeight.value = height;
71
+ });
58
72
  function updateDotPosition(x, y, rect) {
59
73
  const {
60
74
  left,
@@ -99,18 +113,14 @@ export const VColorPickerCanvas = defineComponent({
99
113
  return;
100
114
  }
101
115
  if (!canvasRef.value) return;
102
- const {
103
- width,
104
- height
105
- } = canvasRef.value.getBoundingClientRect();
106
116
  const {
107
117
  x,
108
118
  y
109
119
  } = dotPosition.value;
110
120
  emit('update:color', {
111
121
  h: props.color?.h ?? 0,
112
- s: clamp(x, 0, width) / width,
113
- v: 1 - clamp(y, 0, height) / height,
122
+ s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
123
+ v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
114
124
  a: props.color?.a ?? 1
115
125
  });
116
126
  });
@@ -133,16 +143,27 @@ export const VColorPickerCanvas = defineComponent({
133
143
  watch(() => props.color?.h, updateCanvas, {
134
144
  immediate: true
135
145
  });
146
+ watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {
147
+ updateCanvas();
148
+ dotPosition.value = {
149
+ x: dotPosition.value.x * newVal[0] / oldVal[0],
150
+ y: dotPosition.value.y * newVal[1] / oldVal[1]
151
+ };
152
+ }, {
153
+ flush: 'post'
154
+ });
136
155
  watch(() => props.color, () => {
137
156
  if (isInteracting.value) {
138
157
  isInteracting.value = false;
139
158
  return;
140
159
  }
141
- if (!props.color) return;
142
160
  isOutsideUpdate.value = true;
143
- dotPosition.value = {
144
- x: props.color.s * parseInt(props.width, 10),
145
- y: (1 - props.color.v) * parseInt(props.height, 10)
161
+ dotPosition.value = props.color ? {
162
+ x: props.color.s * canvasWidth.value,
163
+ y: (1 - props.color.v) * canvasHeight.value
164
+ } : {
165
+ x: 0,
166
+ y: 0
146
167
  };
147
168
  }, {
148
169
  deep: true,
@@ -150,19 +171,16 @@ export const VColorPickerCanvas = defineComponent({
150
171
  });
151
172
  onMounted(() => updateCanvas());
152
173
  useRender(() => _createVNode("div", {
174
+ "ref": resizeRef,
153
175
  "class": "v-color-picker-canvas",
154
- "style": {
155
- width: convertToUnit(props.width),
156
- height: convertToUnit(props.height)
157
- },
158
176
  "onClick": handleClick,
159
177
  "onMousedown": handleMouseDown,
160
178
  "onTouchstart": handleMouseDown
161
179
  }, [_createVNode("canvas", {
162
180
  "ref": canvasRef,
163
- "width": props.width,
164
- "height": props.height
165
- }, null), _createVNode("div", {
181
+ "width": canvasWidth.value,
182
+ "height": canvasHeight.value
183
+ }, null), props.color && _createVNode("div", {
166
184
  "class": ['v-color-picker-canvas__dot', {
167
185
  'v-color-picker-canvas__dot--disabled': props.disabled
168
186
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"VColorPickerCanvas.mjs","names":["clamp","convertToUnit","defineComponent","getEventCoordinates","useRender","computed","onMounted","ref","watch","VColorPickerCanvas","name","props","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","emits","hue","setup","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","deep"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, useRender } from '@/util'\nimport { computed, onMounted, ref, watch } from 'vue'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = ref(false)\n const isOutsideUpdate = ref(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { width, height } = canvasRef.value.getBoundingClientRect()\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, width) / width,\n v: 1 - clamp(y, 0, height) / height,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n if (!props.color) return\n\n isOutsideUpdate.value = true\n\n dotPosition.value = {\n x: props.color.s * parseInt(props.width, 10),\n y: (1 - props.color.v) * parseInt(props.height, 10),\n }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n class=\"v-color-picker-canvas\"\n style={{\n width: convertToUnit(props.width),\n height: convertToUnit(props.height),\n }}\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ props.width }\n height={ props.height }\n />\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VColorPickerCanvas.mjs","names":["useResizeObserver","clamp","convertToUnit","defineComponent","getEventCoordinates","useRender","computed","onMounted","ref","watch","VColorPickerCanvas","name","props","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","emits","hue","setup","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","canvasWidth","parseFloat","canvasHeight","resizeRef","entries","offsetParent","contentRect","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","newVal","oldVal","flush","deep"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, useRender } from '@/util'\nimport { computed, onMounted, ref, watch } from 'vue'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = ref(false)\n const isOutsideUpdate = ref(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = ref(parseFloat(props.width))\n const canvasHeight = ref(parseFloat(props.height))\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.value?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n isOutsideUpdate.value = true\n\n dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class=\"v-color-picker-canvas\"\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,gDAE1B;AAAA,SACSC,KAAK,EAAEC,aAAa,EAAEC,eAAe,EAAEC,mBAAmB,EAAEC,SAAS;AAC9E,SAASC,QAAQ,EAAEC,SAAS,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;;AAErD;;AAIA,OAAO,MAAMC,kBAAkB,GAAGP,eAAe,CAAC;EAChDQ,IAAI,EAAE,oBAAoB;EAE1BC,KAAK,EAAE;IACLC,KAAK,EAAE;MACLC,IAAI,EAAEC;IACR,CAAC;IACDC,QAAQ,EAAEC,OAAO;IACjBC,OAAO,EAAE;MACPJ,IAAI,EAAE,CAACK,MAAM,EAAEC,MAAM,CAAC;MACtBC,OAAO,EAAE;IACX,CAAC;IACDC,MAAM,EAAE;MACNR,IAAI,EAAE,CAACK,MAAM,EAAEC,MAAM,CAAC;MACtBC,OAAO,EAAE;IACX,CAAC;IACDE,KAAK,EAAE;MACLT,IAAI,EAAE,CAACK,MAAM,EAAEC,MAAM,CAAC;MACtBC,OAAO,EAAE;IACX;EACF,CAAC;EAEDG,KAAK,EAAE;IACL,cAAc,EAAGX,KAAU,IAAK,IAAI;IACpC,iBAAiB,EAAGY,GAAQ,IAAK;EACnC,CAAC;EAEDC,KAAK,CAAEd,KAAK,QAAY;IAAA,IAAV;MAAEe;IAAK,CAAC;IACpB,MAAMC,aAAa,GAAGpB,GAAG,CAAC,KAAK,CAAC;IAChC,MAAMqB,eAAe,GAAGrB,GAAG,CAAC,KAAK,CAAC;IAClC,MAAMsB,WAAW,GAAGtB,GAAG,CAAC;MAAEuB,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC,CAAC;IAEvC,MAAMC,SAAS,GAAG3B,QAAQ,CAAC,MAAM;MAC/B,MAAM;QAAEyB,CAAC;QAAEC;MAAE,CAAC,GAAGF,WAAW,CAACI,KAAK;MAClC,MAAMC,MAAM,GAAGC,QAAQ,CAACxB,KAAK,CAACM,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;MAE9C,OAAO;QACLK,KAAK,EAAErB,aAAa,CAACU,KAAK,CAACM,OAAO,CAAC;QACnCI,MAAM,EAAEpB,aAAa,CAACU,KAAK,CAACM,OAAO,CAAC;QACpCmB,SAAS,EAAG,aAAYnC,aAAa,CAAC6B,CAAC,GAAGI,MAAM,CAAE,KAAIjC,aAAa,CAAC8B,CAAC,GAAGG,MAAM,CAAE;MAClF,CAAC;IACH,CAAC,CAAC;IAEF,MAAMG,SAAS,GAAG9B,GAAG,EAA4B;IACjD,MAAM+B,WAAW,GAAG/B,GAAG,CAACgC,UAAU,CAAC5B,KAAK,CAACW,KAAK,CAAC,CAAC;IAChD,MAAMkB,YAAY,GAAGjC,GAAG,CAACgC,UAAU,CAAC5B,KAAK,CAACU,MAAM,CAAC,CAAC;IAClD,MAAM;MAAEoB;IAAU,CAAC,GAAG1C,iBAAiB,CAAC2C,OAAO,IAAI;MACjD,IAAI,CAACD,SAAS,CAACR,KAAK,EAAEU,YAAY,EAAE;MAEpC,MAAM;QAAErB,KAAK;QAAED;MAAO,CAAC,GAAGqB,OAAO,CAAC,CAAC,CAAC,CAACE,WAAW;MAEhDN,WAAW,CAACL,KAAK,GAAGX,KAAK;MACzBkB,YAAY,CAACP,KAAK,GAAGZ,MAAM;IAC7B,CAAC,CAAC;IAEF,SAASwB,iBAAiB,CAAEf,CAAS,EAAEC,CAAS,EAAEe,IAAa,EAAE;MAC/D,MAAM;QAAEC,IAAI;QAAEC,GAAG;QAAE1B,KAAK;QAAED;MAAO,CAAC,GAAGyB,IAAI;MACzCjB,WAAW,CAACI,KAAK,GAAG;QAClBH,CAAC,EAAE9B,KAAK,CAAC8B,CAAC,GAAGiB,IAAI,EAAE,CAAC,EAAEzB,KAAK,CAAC;QAC5BS,CAAC,EAAE/B,KAAK,CAAC+B,CAAC,GAAGiB,GAAG,EAAE,CAAC,EAAE3B,MAAM;MAC7B,CAAC;IACH;IAEA,SAAS4B,WAAW,CAAEC,CAAa,EAAE;MACnC,IAAIvC,KAAK,CAACI,QAAQ,IAAI,CAACsB,SAAS,CAACJ,KAAK,EAAE;MAExCY,iBAAiB,CAACK,CAAC,CAACC,OAAO,EAAED,CAAC,CAACE,OAAO,EAAEf,SAAS,CAACJ,KAAK,CAACoB,qBAAqB,EAAE,CAAC;IAClF;IAEA,SAASC,eAAe,CAAEJ,CAA0B,EAAE;MACpD;MACAA,CAAC,CAACK,cAAc,EAAE;MAElB,IAAI5C,KAAK,CAACI,QAAQ,EAAE;MAEpBY,aAAa,CAACM,KAAK,GAAG,IAAI;MAE1BuB,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEC,eAAe,CAAC;MACrDF,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEE,aAAa,CAAC;MACjDH,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEC,eAAe,CAAC;MACrDF,MAAM,CAACC,gBAAgB,CAAC,UAAU,EAAEE,aAAa,CAAC;IACpD;IAEA,SAASD,eAAe,CAAER,CAA0B,EAAE;MACpD,IAAIvC,KAAK,CAACI,QAAQ,IAAI,CAACsB,SAAS,CAACJ,KAAK,EAAE;MAExCN,aAAa,CAACM,KAAK,GAAG,IAAI;MAE1B,MAAM2B,MAAM,GAAGzD,mBAAmB,CAAC+C,CAAC,CAAC;MAErCL,iBAAiB,CAACe,MAAM,CAACT,OAAO,EAAES,MAAM,CAACR,OAAO,EAAEf,SAAS,CAACJ,KAAK,CAACoB,qBAAqB,EAAE,CAAC;IAC5F;IAEA,SAASM,aAAa,GAAI;MACxBH,MAAM,CAACK,mBAAmB,CAAC,WAAW,EAAEH,eAAe,CAAC;MACxDF,MAAM,CAACK,mBAAmB,CAAC,SAAS,EAAEF,aAAa,CAAC;MACpDH,MAAM,CAACK,mBAAmB,CAAC,WAAW,EAAEH,eAAe,CAAC;MACxDF,MAAM,CAACK,mBAAmB,CAAC,UAAU,EAAEF,aAAa,CAAC;IACvD;IAEAnD,KAAK,CAACqB,WAAW,EAAE,MAAM;MACvB,IAAID,eAAe,CAACK,KAAK,EAAE;QACzBL,eAAe,CAACK,KAAK,GAAG,KAAK;QAC7B;MACF;MAEA,IAAI,CAACI,SAAS,CAACJ,KAAK,EAAE;MAEtB,MAAM;QAAEH,CAAC;QAAEC;MAAE,CAAC,GAAGF,WAAW,CAACI,KAAK;MAElCP,IAAI,CAAC,cAAc,EAAE;QACnBoC,CAAC,EAAEnD,KAAK,CAACC,KAAK,EAAEkD,CAAC,IAAI,CAAC;QACtBC,CAAC,EAAE/D,KAAK,CAAC8B,CAAC,EAAE,CAAC,EAAEQ,WAAW,CAACL,KAAK,CAAC,GAAGK,WAAW,CAACL,KAAK;QACrD+B,CAAC,EAAE,CAAC,GAAGhE,KAAK,CAAC+B,CAAC,EAAE,CAAC,EAAES,YAAY,CAACP,KAAK,CAAC,GAAGO,YAAY,CAACP,KAAK;QAC3DgC,CAAC,EAAEtD,KAAK,CAACC,KAAK,EAAEqD,CAAC,IAAI;MACvB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASC,YAAY,GAAI;MACvB,IAAI,CAAC7B,SAAS,CAACJ,KAAK,EAAE;MAEtB,MAAMkC,MAAM,GAAG9B,SAAS,CAACJ,KAAK;MAC9B,MAAMmC,GAAG,GAAGD,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC;MAEnC,IAAI,CAACD,GAAG,EAAE;MAEV,MAAME,kBAAkB,GAAGF,GAAG,CAACG,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAEJ,MAAM,CAAC7C,KAAK,EAAE,CAAC,CAAC;MAC1EgD,kBAAkB,CAACE,YAAY,CAAC,CAAC,EAAE,sBAAsB,CAAC,EAAC;MAC3DF,kBAAkB,CAACE,YAAY,CAAC,CAAC,EAAG,QAAO7D,KAAK,CAACC,KAAK,EAAEkD,CAAC,IAAI,CAAE,iBAAgB,CAAC;MAChFM,GAAG,CAACK,SAAS,GAAGH,kBAAkB;MAClCF,GAAG,CAACM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEP,MAAM,CAAC7C,KAAK,EAAE6C,MAAM,CAAC9C,MAAM,CAAC;MAE/C,MAAMsD,aAAa,GAAGP,GAAG,CAACG,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEJ,MAAM,CAAC9C,MAAM,CAAC;MACtEsD,aAAa,CAACH,YAAY,CAAC,CAAC,EAAE,sBAAsB,CAAC,EAAC;MACtDG,aAAa,CAACH,YAAY,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAC;MACpDJ,GAAG,CAACK,SAAS,GAAGE,aAAa;MAC7BP,GAAG,CAACM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEP,MAAM,CAAC7C,KAAK,EAAE6C,MAAM,CAAC9C,MAAM,CAAC;IACjD;IAEAb,KAAK,CAAC,MAAMG,KAAK,CAACC,KAAK,EAAEkD,CAAC,EAAEI,YAAY,EAAE;MAAEU,SAAS,EAAE;IAAK,CAAC,CAAC;IAC9DpE,KAAK,CAAC,MAAM,CAAC8B,WAAW,CAACL,KAAK,EAAEO,YAAY,CAACP,KAAK,CAAC,EAAE,CAAC4C,MAAM,EAAEC,MAAM,KAAK;MACvEZ,YAAY,EAAE;MACdrC,WAAW,CAACI,KAAK,GAAG;QAClBH,CAAC,EAAED,WAAW,CAACI,KAAK,CAACH,CAAC,GAAG+C,MAAM,CAAC,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,CAAC;QAC9C/C,CAAC,EAAEF,WAAW,CAACI,KAAK,CAACF,CAAC,GAAG8C,MAAM,CAAC,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC;MAC/C,CAAC;IACH,CAAC,EAAE;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAErBvE,KAAK,CAAC,MAAMG,KAAK,CAACC,KAAK,EAAE,MAAM;MAC7B,IAAIe,aAAa,CAACM,KAAK,EAAE;QACvBN,aAAa,CAACM,KAAK,GAAG,KAAK;QAC3B;MACF;MAEAL,eAAe,CAACK,KAAK,GAAG,IAAI;MAE5BJ,WAAW,CAACI,KAAK,GAAGtB,KAAK,CAACC,KAAK,GAAG;QAChCkB,CAAC,EAAEnB,KAAK,CAACC,KAAK,CAACmD,CAAC,GAAGzB,WAAW,CAACL,KAAK;QACpCF,CAAC,EAAE,CAAC,CAAC,GAAGpB,KAAK,CAACC,KAAK,CAACoD,CAAC,IAAIxB,YAAY,CAACP;MACxC,CAAC,GAAG;QAAEH,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;IACpB,CAAC,EAAE;MAAEiD,IAAI,EAAE,IAAI;MAAEJ,SAAS,EAAE;IAAK,CAAC,CAAC;IAEnCtE,SAAS,CAAC,MAAM4D,YAAY,EAAE,CAAC;IAE/B9D,SAAS,CAAC;MAAA,OAEAqC,SAAS;MAAA,SACT,uBAAuB;MAAA,WACnBQ,WAAW;MAAA,eACPK,eAAe;MAAA,gBACdA;IAAe;MAAA,OAGtBjB,SAAS;MAAA,SACPC,WAAW,CAACL,KAAK;MAAA,UAChBO,YAAY,CAACP;IAAK,UAE3BtB,KAAK,CAACC,KAAK;MAAA,SAEF,CACL,4BAA4B,EAC5B;QACE,sCAAsC,EAAED,KAAK,CAACI;MAChD,CAAC,CACF;MAAA,SACOiB,SAAS,CAACC;IAAK,QAE1B,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -3,9 +3,10 @@
3
3
 
4
4
  .v-color-picker-canvas
5
5
  $root: &
6
+ display: flex
6
7
  position: relative
7
8
  overflow: hidden
8
- contain: strict
9
+ contain: content
9
10
 
10
11
  &__dot
11
12
  position: absolute
@@ -6,7 +6,7 @@ import "./VColorPickerEdit.css";
6
6
  import { VBtn } from "../VBtn/index.mjs"; // Utilities
7
7
  import { computed } from 'vue';
8
8
  import { defineComponent, useRender } from "../../util/index.mjs";
9
- import { modes } from "./util/index.mjs"; // Types
9
+ import { modes, nullColor } from "./util/index.mjs"; // Types
10
10
  const VColorPickerInput = _ref => {
11
11
  let {
12
12
  label,
@@ -49,7 +49,7 @@ export const VColorPickerEdit = defineComponent({
49
49
  const inputs = computed(() => {
50
50
  const mode = enabledModes.value.find(m => m.name === props.mode);
51
51
  if (!mode) return [];
52
- const color = props.color ? mode.to(props.color) : {};
52
+ const color = props.color ? mode.to(props.color) : null;
53
53
  return mode.inputs?.map(_ref3 => {
54
54
  let {
55
55
  getValue,
@@ -60,11 +60,11 @@ export const VColorPickerEdit = defineComponent({
60
60
  ...mode.inputProps,
61
61
  ...inputProps,
62
62
  disabled: props.disabled,
63
- value: getValue(color),
63
+ value: color && getValue(color),
64
64
  onChange: e => {
65
65
  const target = e.target;
66
66
  if (!target) return;
67
- emit('update:color', mode.from(getColor(color, target.value)));
67
+ emit('update:color', mode.from(getColor(color ?? nullColor, target.value)));
68
68
  }
69
69
  };
70
70
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VColorPickerEdit.mjs","names":["VBtn","computed","defineComponent","useRender","modes","VColorPickerInput","label","rest","VColorPickerEdit","name","props","color","Object","disabled","Boolean","mode","type","String","default","validator","v","keys","includes","Array","isArray","every","m","emits","setup","emit","enabledModes","map","key","inputs","value","find","to","getValue","getColor","inputProps","onChange","e","target","from","length","mi","findIndex"],"sources":["../../../src/components/VColorPicker/VColorPickerEdit.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender } from '@/util'\nimport { modes } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util/colorUtils'\n\nconst VColorPickerInput = ({ label, ...rest }: any) => {\n return (\n <div\n class=\"v-color-picker-edit__input\"\n >\n <input {...rest} />\n <span>{ label }</span>\n </div>\n )\n}\n\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n\n props: {\n color: Object as PropType<HSV | null>,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<string[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:mode': (mode: string) => true,\n },\n\n setup (props, { emit }) {\n const enabledModes = computed(() => {\n return props.modes.map(key => ({ ...modes[key], name: key }))\n })\n\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode)\n\n if (!mode) return []\n\n const color = props.color ? mode.to(props.color) : {}\n\n return mode.inputs?.map(({ getValue, getColor, ...inputProps }) => {\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: getValue(color),\n onChange: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | null\n\n if (!target) return\n\n emit('update:color', mode.from(getColor(color, target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n <div\n class=\"v-color-picker-edit\"\n >\n { inputs.value?.map(props => (\n <VColorPickerInput {...props} />\n )) }\n { enabledModes.value.length > 1 && (\n <VBtn\n icon=\"$unfold\"\n size=\"x-small\"\n variant=\"plain\"\n onClick={ () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode)\n\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name)\n } }\n />\n ) }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType<typeof VColorPickerEdit>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VColorPickerEdit.mjs","names":["VBtn","computed","defineComponent","useRender","modes","nullColor","VColorPickerInput","label","rest","VColorPickerEdit","name","props","color","Object","disabled","Boolean","mode","type","String","default","validator","v","keys","includes","Array","isArray","every","m","emits","setup","emit","enabledModes","map","key","inputs","value","find","to","getValue","getColor","inputProps","onChange","e","target","from","length","mi","findIndex"],"sources":["../../../src/components/VColorPicker/VColorPickerEdit.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender } from '@/util'\nimport { modes, nullColor } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util/colorUtils'\n\nconst VColorPickerInput = ({ label, ...rest }: any) => {\n return (\n <div\n class=\"v-color-picker-edit__input\"\n >\n <input {...rest} />\n <span>{ label }</span>\n </div>\n )\n}\n\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n\n props: {\n color: Object as PropType<HSV | null>,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<string[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:mode': (mode: string) => true,\n },\n\n setup (props, { emit }) {\n const enabledModes = computed(() => {\n return props.modes.map(key => ({ ...modes[key], name: key }))\n })\n\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode)\n\n if (!mode) return []\n\n const color = props.color ? mode.to(props.color) : null\n\n return mode.inputs?.map(({ getValue, getColor, ...inputProps }) => {\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | null\n\n if (!target) return\n\n emit('update:color', mode.from(getColor(color ?? nullColor, target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n <div\n class=\"v-color-picker-edit\"\n >\n { inputs.value?.map(props => (\n <VColorPickerInput {...props} />\n )) }\n { enabledModes.value.length > 1 && (\n <VBtn\n icon=\"$unfold\"\n size=\"x-small\"\n variant=\"plain\"\n onClick={ () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode)\n\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name)\n } }\n />\n ) }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType<typeof VColorPickerEdit>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI,6BAEb;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,KAAK,EAAEC,SAAS,4BAEzB;AAIA,MAAMC,iBAAiB,GAAG,QAA6B;EAAA,IAA5B;IAAEC,KAAK;IAAE,GAAGC;EAAU,CAAC;EAChD;IAAA,SAEU;EAA4B,0BAEvBA,IAAI,qCACPD,KAAK;AAGnB,CAAC;AAED,OAAO,MAAME,gBAAgB,GAAGP,eAAe,CAAC;EAC9CQ,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAA8B;IACrCC,QAAQ,EAAEC,OAAO;IACjBC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE,MAAM;MACfC,SAAS,EAAGC,CAAS,IAAKR,MAAM,CAACS,IAAI,CAAClB,KAAK,CAAC,CAACmB,QAAQ,CAACF,CAAC;IACzD,CAAC;IACDjB,KAAK,EAAE;MACLa,IAAI,EAAEO,KAA2B;MACjCL,OAAO,EAAE,MAAMN,MAAM,CAACS,IAAI,CAAClB,KAAK,CAAC;MACjCgB,SAAS,EAAGC,CAAM,IAAKG,KAAK,CAACC,OAAO,CAACJ,CAAC,CAAC,IAAIA,CAAC,CAACK,KAAK,CAACC,CAAC,IAAId,MAAM,CAACS,IAAI,CAAClB,KAAK,CAAC,CAACmB,QAAQ,CAACI,CAAC,CAAC;IACxF;EACF,CAAC;EAEDC,KAAK,EAAE;IACL,cAAc,EAAGhB,KAAU,IAAK,IAAI;IACpC,aAAa,EAAGI,IAAY,IAAK;EACnC,CAAC;EAEDa,KAAK,CAAElB,KAAK,SAAY;IAAA,IAAV;MAAEmB;IAAK,CAAC;IACpB,MAAMC,YAAY,GAAG9B,QAAQ,CAAC,MAAM;MAClC,OAAOU,KAAK,CAACP,KAAK,CAAC4B,GAAG,CAACC,GAAG,KAAK;QAAE,GAAG7B,KAAK,CAAC6B,GAAG,CAAC;QAAEvB,IAAI,EAAEuB;MAAI,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAGjC,QAAQ,CAAC,MAAM;MAC5B,MAAMe,IAAI,GAAGe,YAAY,CAACI,KAAK,CAACC,IAAI,CAACT,CAAC,IAAIA,CAAC,CAACjB,IAAI,KAAKC,KAAK,CAACK,IAAI,CAAC;MAEhE,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;MAEpB,MAAMJ,KAAK,GAAGD,KAAK,CAACC,KAAK,GAAGI,IAAI,CAACqB,EAAE,CAAC1B,KAAK,CAACC,KAAK,CAAC,GAAG,IAAI;MAEvD,OAAOI,IAAI,CAACkB,MAAM,EAAEF,GAAG,CAAC,SAA2C;QAAA,IAA1C;UAAEM,QAAQ;UAAEC,QAAQ;UAAE,GAAGC;QAAW,CAAC;QAC5D,OAAO;UACL,GAAGxB,IAAI,CAACwB,UAAU;UAClB,GAAGA,UAAU;UACb1B,QAAQ,EAAEH,KAAK,CAACG,QAAQ;UACxBqB,KAAK,EAAEvB,KAAK,IAAI0B,QAAQ,CAAC1B,KAAK,CAAC;UAC/B6B,QAAQ,EAAGC,CAAa,IAAK;YAC3B,MAAMC,MAAM,GAAGD,CAAC,CAACC,MAAiC;YAElD,IAAI,CAACA,MAAM,EAAE;YAEbb,IAAI,CAAC,cAAc,EAAEd,IAAI,CAAC4B,IAAI,CAACL,QAAQ,CAAC3B,KAAK,IAAIP,SAAS,EAAEsC,MAAM,CAACR,KAAK,CAAC,CAAC,CAAC;UAC7E;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhC,SAAS,CAAC;MAAA,SAEA;IAAqB,IAEzB+B,MAAM,CAACC,KAAK,EAAEH,GAAG,CAACrB,KAAK,oCACAA,KAAK,OAC7B,CAAC,EACAoB,YAAY,CAACI,KAAK,CAACU,MAAM,GAAG,CAAC;MAAA,QAEtB,SAAS;MAAA,QACT,SAAS;MAAA,WACN,OAAO;MAAA,WACL,MAAM;QACd,MAAMC,EAAE,GAAGf,YAAY,CAACI,KAAK,CAACY,SAAS,CAACpB,CAAC,IAAIA,CAAC,CAACjB,IAAI,KAAKC,KAAK,CAACK,IAAI,CAAC;QAEnEc,IAAI,CAAC,aAAa,EAAEC,YAAY,CAACI,KAAK,CAAC,CAACW,EAAE,GAAG,CAAC,IAAIf,YAAY,CAACI,KAAK,CAACU,MAAM,CAAC,CAACnC,IAAI,CAAC;MACpF;IAAC,QAEJ,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -51,12 +51,12 @@ export const VColorPickerPreview = defineComponent({
51
51
  "hideDetails": true
52
52
  }, null), !props.hideAlpha && _createVNode(VSlider, {
53
53
  "class": "v-color-picker-preview__track v-color-picker-preview__alpha",
54
- "modelValue": props.color?.a,
54
+ "modelValue": props.color?.a ?? 1,
55
55
  "onUpdate:modelValue": a => emit('update:color', {
56
56
  ...(props.color ?? nullColor),
57
57
  a
58
58
  }),
59
- "step": 0,
59
+ "step": 1 / 256,
60
60
  "min": 0,
61
61
  "max": 1,
62
62
  "disabled": props.disabled,
@@ -1 +1 @@
1
- {"version":3,"file":"VColorPickerPreview.mjs","names":["VSlider","defineComponent","HSVtoCSS","useRender","nullColor","VColorPickerPreview","name","props","color","type","Object","disabled","Boolean","hideAlpha","emits","setup","emit","background","h","a"],"sources":["../../../src/components/VColorPicker/VColorPickerPreview.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VSlider } from '@/components/VSlider'\n\n// Utilities\nimport { defineComponent, HSVtoCSS, useRender } from '@/util'\nimport { nullColor } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class={[\n 'v-color-picker-preview',\n {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha,\n },\n ]}\n >\n <div class=\"v-color-picker-preview__dot\">\n <div style={{ background: HSVtoCSS(props.color ?? nullColor) }} />\n </div>\n\n <div class=\"v-color-picker-preview__sliders\">\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__hue\"\n modelValue={ props.color?.h }\n onUpdate:modelValue={ h => emit('update:color', { ...(props.color ?? nullColor), h }) }\n step={ 0 }\n min={ 0 }\n max={ 360 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n\n { !props.hideAlpha && (\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__alpha\"\n modelValue={ props.color?.a }\n onUpdate:modelValue={ a => emit('update:color', { ...(props.color ?? nullColor), a }) }\n step={ 0 }\n min={ 0 }\n max={ 1 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n ) }\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType<typeof VColorPickerPreview>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,OAAO,gCAEhB;AAAA,SACSC,eAAe,EAAEC,QAAQ,EAAEC,SAAS;AAAA,SACpCC,SAAS,4BAElB;AAIA,OAAO,MAAMC,mBAAmB,GAAGJ,eAAe,CAAC;EACjDK,IAAI,EAAE,qBAAqB;EAE3BC,KAAK,EAAE;IACLC,KAAK,EAAE;MACLC,IAAI,EAAEC;IACR,CAAC;IACDC,QAAQ,EAAEC,OAAO;IACjBC,SAAS,EAAED;EACb,CAAC;EAEDE,KAAK,EAAE;IACL,cAAc,EAAGN,KAAU,IAAK;EAClC,CAAC;EAEDO,KAAK,CAAER,KAAK,QAAY;IAAA,IAAV;MAAES;IAAK,CAAC;IACpBb,SAAS,CAAC;MAAA,SAEC,CACL,wBAAwB,EACxB;QACE,oCAAoC,EAAEI,KAAK,CAACM;MAC9C,CAAC;IACF;MAAA,SAEU;IAA6B;MAAA,SAC1B;QAAEI,UAAU,EAAEf,QAAQ,CAACK,KAAK,CAACC,KAAK,IAAIJ,SAAS;MAAE;IAAC;MAAA,SAGrD;IAAiC;MAAA,SAElC,2DAA2D;MAAA,cACpDG,KAAK,CAACC,KAAK,EAAEU,CAAC;MAAA,uBACLA,CAAC,IAAIF,IAAI,CAAC,cAAc,EAAE;QAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;QAAEc;MAAE,CAAC,CAAC;MAAA,QAC9E,CAAC;MAAA,OACF,CAAC;MAAA,OACD,GAAG;MAAA,YACEX,KAAK,CAACI,QAAQ;MAAA,aACb,EAAE;MAAA,aACF,CAAC;MAAA,kBACE,OAAO;MAAA;IAAA,UAItB,CAACJ,KAAK,CAACM,SAAS;MAAA,SAER,6DAA6D;MAAA,cACtDN,KAAK,CAACC,KAAK,EAAEW,CAAC;MAAA,uBACLA,CAAC,IAAIH,IAAI,CAAC,cAAc,EAAE;QAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;QAAEe;MAAE,CAAC,CAAC;MAAA,QAC9E,CAAC;MAAA,OACF,CAAC;MAAA,OACD,CAAC;MAAA,YACIZ,KAAK,CAACI,QAAQ;MAAA,aACb,EAAE;MAAA,aACF,CAAC;MAAA,kBACE,OAAO;MAAA;IAAA,QAGzB,IAGN,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VColorPickerPreview.mjs","names":["VSlider","defineComponent","HSVtoCSS","useRender","nullColor","VColorPickerPreview","name","props","color","type","Object","disabled","Boolean","hideAlpha","emits","setup","emit","background","h","a"],"sources":["../../../src/components/VColorPicker/VColorPickerPreview.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VSlider } from '@/components/VSlider'\n\n// Utilities\nimport { defineComponent, HSVtoCSS, useRender } from '@/util'\nimport { nullColor } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class={[\n 'v-color-picker-preview',\n {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha,\n },\n ]}\n >\n <div class=\"v-color-picker-preview__dot\">\n <div style={{ background: HSVtoCSS(props.color ?? nullColor) }} />\n </div>\n\n <div class=\"v-color-picker-preview__sliders\">\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__hue\"\n modelValue={ props.color?.h }\n onUpdate:modelValue={ h => emit('update:color', { ...(props.color ?? nullColor), h }) }\n step={ 0 }\n min={ 0 }\n max={ 360 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n\n { !props.hideAlpha && (\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__alpha\"\n modelValue={ props.color?.a ?? 1 }\n onUpdate:modelValue={ a => emit('update:color', { ...(props.color ?? nullColor), a }) }\n step={ 1 / 256 }\n min={ 0 }\n max={ 1 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n ) }\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType<typeof VColorPickerPreview>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,OAAO,gCAEhB;AAAA,SACSC,eAAe,EAAEC,QAAQ,EAAEC,SAAS;AAAA,SACpCC,SAAS,4BAElB;AAIA,OAAO,MAAMC,mBAAmB,GAAGJ,eAAe,CAAC;EACjDK,IAAI,EAAE,qBAAqB;EAE3BC,KAAK,EAAE;IACLC,KAAK,EAAE;MACLC,IAAI,EAAEC;IACR,CAAC;IACDC,QAAQ,EAAEC,OAAO;IACjBC,SAAS,EAAED;EACb,CAAC;EAEDE,KAAK,EAAE;IACL,cAAc,EAAGN,KAAU,IAAK;EAClC,CAAC;EAEDO,KAAK,CAAER,KAAK,QAAY;IAAA,IAAV;MAAES;IAAK,CAAC;IACpBb,SAAS,CAAC;MAAA,SAEC,CACL,wBAAwB,EACxB;QACE,oCAAoC,EAAEI,KAAK,CAACM;MAC9C,CAAC;IACF;MAAA,SAEU;IAA6B;MAAA,SAC1B;QAAEI,UAAU,EAAEf,QAAQ,CAACK,KAAK,CAACC,KAAK,IAAIJ,SAAS;MAAE;IAAC;MAAA,SAGrD;IAAiC;MAAA,SAElC,2DAA2D;MAAA,cACpDG,KAAK,CAACC,KAAK,EAAEU,CAAC;MAAA,uBACLA,CAAC,IAAIF,IAAI,CAAC,cAAc,EAAE;QAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;QAAEc;MAAE,CAAC,CAAC;MAAA,QAC9E,CAAC;MAAA,OACF,CAAC;MAAA,OACD,GAAG;MAAA,YACEX,KAAK,CAACI,QAAQ;MAAA,aACb,EAAE;MAAA,aACF,CAAC;MAAA,kBACE,OAAO;MAAA;IAAA,UAItB,CAACJ,KAAK,CAACM,SAAS;MAAA,SAER,6DAA6D;MAAA,cACtDN,KAAK,CAACC,KAAK,EAAEW,CAAC,IAAI,CAAC;MAAA,uBACVA,CAAC,IAAIH,IAAI,CAAC,cAAc,EAAE;QAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;QAAEe;MAAE,CAAC,CAAC;MAAA,QAC9E,CAAC,GAAG,GAAG;MAAA,OACR,CAAC;MAAA,OACD,CAAC;MAAA,YACIZ,KAAK,CAACI,QAAQ;MAAA,aACb,EAAE;MAAA,aACF,CAAC;MAAA,kBACE,OAAO;MAAA;IAAA,QAGzB,IAGN,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -19,10 +19,7 @@ export function parseColor(color) {
19
19
  hsva = color;
20
20
  }
21
21
  }
22
- return hsva != null ? {
23
- ...hsva,
24
- a: hsva.a ?? 1
25
- } : null;
22
+ return hsva;
26
23
  }
27
24
  function stripAlpha(color, stripAlpha) {
28
25
  if (stripAlpha) {
@@ -42,7 +39,7 @@ export function extractColor(color, input) {
42
39
  if (typeof input === 'object') {
43
40
  let converted;
44
41
  if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
45
- return stripAlpha(converted, !has(input, ['a']));
42
+ return stripAlpha(converted, !has(input, ['a']) && color.a === 1);
46
43
  }
47
44
  return color;
48
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["HexToHSV","HSLtoHSV","HSVtoHex","HSVtoHSL","HSVtoRGB","parseHex","RGBtoHSV","has","obj","key","every","k","hasOwnProperty","parseColor","color","hsva","hex","a","stripAlpha","rest","extractColor","input","slice","converted","hasAlpha","length","nullColor","h","s","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","Math","round","r","getColor","Number","g","b","to","from","rgb","hsla","l","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n parseHex,\n RGBtoHSV,\n} from '@/util/colorUtils'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any): HSV | null {\n if (!color) return null\n\n let hsva: HSV | null = null\n\n if (typeof color === 'string') {\n const hex = parseHex(color)\n\n hsva = HexToHSV(hex)\n }\n\n if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n hsva = RGBtoHSV(color)\n } else if (has(color, ['h', 's', 'l'])) {\n hsva = HSLtoHSV(color)\n } else if (has(color, ['h', 's', 'v'])) {\n hsva = color\n }\n }\n\n return hsva != null ? { ...hsva, a: hsva.a ?? 1 } : null\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSV, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']))\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 1, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record<string, unknown>\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSV\n to: (color: HSV) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.r),\n getColor: (c: RGB, v: string): RGB => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.g),\n getColor: (c: RGB, v: string): RGB => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.b),\n getColor: (c: RGB, v: string): RGB => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoRGB,\n from: RGBtoHSV,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSL) => Math.round(c.h),\n getColor: (c: HSL, v: string): HSL => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.s * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.l * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoHSL,\n from: HSLtoHSV,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVtoHex,\n from: HexToHSV,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes: Record<string, ColorPickerMode> = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["HexToHSV","HSLtoHSV","HSVtoHex","HSVtoHSL","HSVtoRGB","parseHex","RGBtoHSV","has","obj","key","every","k","hasOwnProperty","parseColor","color","hsva","hex","stripAlpha","a","rest","extractColor","input","slice","converted","hasAlpha","length","nullColor","h","s","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","Math","round","r","getColor","Number","g","b","to","from","rgb","hsla","l","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n parseHex,\n RGBtoHSV,\n} from '@/util/colorUtils'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any): HSV | null {\n if (!color) return null\n\n let hsva: HSV | null = null\n\n if (typeof color === 'string') {\n const hex = parseHex(color)\n\n hsva = HexToHSV(hex)\n }\n\n if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n hsva = RGBtoHSV(color)\n } else if (has(color, ['h', 's', 'l'])) {\n hsva = HSLtoHSV(color)\n } else if (has(color, ['h', 's', 'v'])) {\n hsva = color\n }\n }\n\n return hsva\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSV, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1)\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 1, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record<string, unknown>\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSV\n to: (color: HSV) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.r),\n getColor: (c: RGB, v: string): RGB => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.g),\n getColor: (c: RGB, v: string): RGB => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.b),\n getColor: (c: RGB, v: string): RGB => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoRGB,\n from: RGBtoHSV,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSL) => Math.round(c.h),\n getColor: (c: HSL, v: string): HSL => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.s * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.l * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoHSL,\n from: HSLtoHSV,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVtoHex,\n from: HexToHSV,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes: Record<string, ColorPickerMode> = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n}\n"],"mappings":"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"}