UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

1 lines 67.5 kB
{"version":3,"file":"index.mjs","sources":["../../src/colorpicker/BaseColorPicker.vue","../../src/colorpicker/ColorPicker.vue","../../src/colorpicker/ColorPicker.vue?vue&type=template&id=76dfb7c0&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ColorPickerStyle from 'primevue/colorpicker/style';\n\nexport default {\n name: 'BaseColorPicker',\n extends: BaseComponent,\n props: {\n modelValue: {\n type: null,\n default: null\n },\n defaultColor: {\n type: null,\n default: 'ff0000'\n },\n inline: {\n type: Boolean,\n default: false\n },\n format: {\n type: String,\n default: 'hex'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n tabindex: {\n type: String,\n default: null\n },\n autoZIndex: {\n type: Boolean,\n default: true\n },\n baseZIndex: {\n type: Number,\n default: 0\n },\n appendTo: {\n type: [String, Object],\n default: 'body'\n },\n inputId: {\n type: String,\n default: null\n },\n panelClass: null\n },\n style: ColorPickerStyle,\n provide() {\n return {\n $pcColorPicker: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <div ref=\"container\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <input v-if=\"!inline\" ref=\"input\" :id=\"inputId\" type=\"text\" :class=\"cx('preview')\" readonly=\"readonly\" :tabindex=\"tabindex\" :disabled=\"disabled\" @click=\"onInputClick\" @keydown=\"onInputKeydown\" v-bind=\"ptm('preview')\" />\n <Portal :appendTo=\"appendTo\" :disabled=\"inline\">\n <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n <div v-if=\"inline ? true : overlayVisible\" :ref=\"pickerRef\" :class=\"[cx('panel'), panelClass]\" @click=\"onOverlayClick\" v-bind=\"ptm('panel')\">\n <div :class=\"cx('content')\" v-bind=\"ptm('content')\">\n <div :ref=\"colorSelectorRef\" :class=\"cx('colorSelector')\" @mousedown=\"onColorMousedown($event)\" @touchstart=\"onColorDragStart($event)\" @touchmove=\"onDrag($event)\" @touchend=\"onDragEnd()\" v-bind=\"ptm('colorSelector')\">\n <div :class=\"cx('colorBackground')\" v-bind=\"ptm('colorBackground')\">\n <div :ref=\"colorHandleRef\" :class=\"cx('colorHandle')\" v-bind=\"ptm('colorHandle')\"></div>\n </div>\n </div>\n <div :ref=\"hueViewRef\" :class=\"cx('hue')\" @mousedown=\"onHueMousedown($event)\" @touchstart=\"onHueDragStart($event)\" @touchmove=\"onDrag($event)\" @touchend=\"onDragEnd()\" v-bind=\"ptm('hue')\">\n <div :ref=\"hueHandleRef\" :class=\"cx('hueHandle')\" v-bind=\"ptm('hueHandle')\"></div>\n </div>\n </div>\n </div>\n </transition>\n </Portal>\n </div>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport { relativePosition, absolutePosition, addClass, removeClass, isTouchDevice } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseColorPicker from './BaseColorPicker.vue';\n\nexport default {\n name: 'ColorPicker',\n extends: BaseColorPicker,\n inheritAttrs: false,\n emits: ['update:modelValue', 'change', 'show', 'hide'],\n data() {\n return {\n overlayVisible: false\n };\n },\n hsbValue: null,\n outsideClickListener: null,\n documentMouseMoveListener: null,\n documentMouseUpListener: null,\n scrollHandler: null,\n resizeListener: null,\n hueDragging: null,\n colorDragging: null,\n selfUpdate: null,\n picker: null,\n colorSelector: null,\n colorHandle: null,\n hueView: null,\n hueHandle: null,\n watch: {\n modelValue: {\n immediate: true,\n handler(newValue) {\n this.hsbValue = this.toHSB(newValue);\n\n if (this.selfUpdate) this.selfUpdate = false;\n else this.updateUI();\n }\n }\n },\n beforeUnmount() {\n this.unbindOutsideClickListener();\n this.unbindDragListeners();\n this.unbindResizeListener();\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.picker && this.autoZIndex) {\n ZIndex.clear(this.picker);\n }\n\n this.clearRefs();\n },\n mounted() {\n this.updateUI();\n },\n methods: {\n pickColor(event) {\n let rect = this.colorSelector.getBoundingClientRect();\n let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n let left = rect.left + document.body.scrollLeft;\n let saturation = Math.floor((100 * Math.max(0, Math.min(150, (event.pageX || event.changedTouches[0].pageX) - left))) / 150);\n let brightness = Math.floor((100 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);\n\n this.hsbValue = this.validateHSB({\n h: this.hsbValue.h,\n s: saturation,\n b: brightness\n });\n\n this.selfUpdate = true;\n this.updateColorHandle();\n this.updateInput();\n this.updateModel(event);\n },\n pickHue(event) {\n let top = this.hueView.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n\n this.hsbValue = this.validateHSB({\n h: Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150),\n s: 100,\n b: 100\n });\n\n this.selfUpdate = true;\n this.updateColorSelector();\n this.updateHue();\n this.updateModel(event);\n this.updateInput();\n },\n updateModel(event) {\n let value = this.modelValue;\n\n switch (this.format) {\n case 'hex':\n value = this.HSBtoHEX(this.hsbValue);\n break;\n\n case 'rgb':\n value = this.HSBtoRGB(this.hsbValue);\n break;\n\n case 'hsb':\n value = this.hsbValue;\n break;\n\n default:\n //NoOp\n break;\n }\n\n this.$emit('update:modelValue', value);\n this.$emit('change', { event, value });\n },\n updateColorSelector() {\n if (this.colorSelector) {\n let hsbValue = this.validateHSB({\n h: this.hsbValue.h,\n s: 100,\n b: 100\n });\n\n this.colorSelector.style.backgroundColor = '#' + this.HSBtoHEX(hsbValue);\n }\n },\n updateColorHandle() {\n if (this.colorHandle) {\n this.colorHandle.style.left = Math.floor((150 * this.hsbValue.s) / 100) + 'px';\n this.colorHandle.style.top = Math.floor((150 * (100 - this.hsbValue.b)) / 100) + 'px';\n }\n },\n updateHue() {\n if (this.hueHandle) {\n this.hueHandle.style.top = Math.floor(150 - (150 * this.hsbValue.h) / 360) + 'px';\n }\n },\n updateInput() {\n if (this.$refs.input) {\n this.$refs.input.style.backgroundColor = '#' + this.HSBtoHEX(this.hsbValue);\n }\n },\n updateUI() {\n this.updateHue();\n this.updateColorHandle();\n this.updateInput();\n this.updateColorSelector();\n },\n validateHSB(hsb) {\n return {\n h: Math.min(360, Math.max(0, hsb.h)),\n s: Math.min(100, Math.max(0, hsb.s)),\n b: Math.min(100, Math.max(0, hsb.b))\n };\n },\n validateRGB(rgb) {\n return {\n r: Math.min(255, Math.max(0, rgb.r)),\n g: Math.min(255, Math.max(0, rgb.g)),\n b: Math.min(255, Math.max(0, rgb.b))\n };\n },\n validateHEX(hex) {\n var len = 6 - hex.length;\n\n if (len > 0) {\n var o = [];\n\n for (var i = 0; i < len; i++) {\n o.push('0');\n }\n\n o.push(hex);\n hex = o.join('');\n }\n\n return hex;\n },\n HEXtoRGB(hex) {\n let hexValue = parseInt(hex.indexOf('#') > -1 ? hex.substring(1) : hex, 16);\n\n return { r: hexValue >> 16, g: (hexValue & 0x00ff00) >> 8, b: hexValue & 0x0000ff };\n },\n HEXtoHSB(hex) {\n return this.RGBtoHSB(this.HEXtoRGB(hex));\n },\n RGBtoHSB(rgb) {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n\n hsb.b = max;\n hsb.s = max !== 0 ? (255 * delta) / max : 0;\n\n if (hsb.s !== 0) {\n if (rgb.r === max) {\n hsb.h = (rgb.g - rgb.b) / delta;\n } else if (rgb.g === max) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n } else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n } else {\n hsb.h = -1;\n }\n\n hsb.h *= 60;\n\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n\n return hsb;\n },\n HSBtoRGB(hsb) {\n var rgb = {\n r: null,\n g: null,\n b: null\n };\n var h = Math.round(hsb.h);\n var s = Math.round((hsb.s * 255) / 100);\n var v = Math.round((hsb.b * 255) / 100);\n\n if (s === 0) {\n rgb = {\n r: v,\n g: v,\n b: v\n };\n } else {\n var t1 = v;\n var t2 = ((255 - s) * v) / 255;\n var t3 = ((t1 - t2) * (h % 60)) / 60;\n\n if (h === 360) h = 0;\n\n if (h < 60) {\n rgb.r = t1;\n rgb.b = t2;\n rgb.g = t2 + t3;\n } else if (h < 120) {\n rgb.g = t1;\n rgb.b = t2;\n rgb.r = t1 - t3;\n } else if (h < 180) {\n rgb.g = t1;\n rgb.r = t2;\n rgb.b = t2 + t3;\n } else if (h < 240) {\n rgb.b = t1;\n rgb.r = t2;\n rgb.g = t1 - t3;\n } else if (h < 300) {\n rgb.b = t1;\n rgb.g = t2;\n rgb.r = t2 + t3;\n } else if (h < 360) {\n rgb.r = t1;\n rgb.g = t2;\n rgb.b = t1 - t3;\n } else {\n rgb.r = 0;\n rgb.g = 0;\n rgb.b = 0;\n }\n }\n\n return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };\n },\n RGBtoHEX(rgb) {\n var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n\n for (var key in hex) {\n if (hex[key].length === 1) {\n hex[key] = '0' + hex[key];\n }\n }\n\n return hex.join('');\n },\n HSBtoHEX(hsb) {\n return this.RGBtoHEX(this.HSBtoRGB(hsb));\n },\n toHSB(value) {\n let hsb;\n\n if (value) {\n switch (this.format) {\n case 'hex':\n hsb = this.HEXtoHSB(value);\n break;\n\n case 'rgb':\n hsb = this.RGBtoHSB(value);\n break;\n\n case 'hsb':\n hsb = value;\n break;\n\n default:\n break;\n }\n } else {\n hsb = this.HEXtoHSB(this.defaultColor);\n }\n\n return hsb;\n },\n onOverlayEnter(el) {\n this.updateUI();\n this.alignOverlay();\n this.bindOutsideClickListener();\n this.bindScrollListener();\n this.bindResizeListener();\n\n if (this.autoZIndex) {\n ZIndex.set('overlay', el, this.baseZIndex, this.$primevue.config.zIndex.overlay);\n }\n\n this.$emit('show');\n },\n onOverlayLeave() {\n this.unbindOutsideClickListener();\n this.unbindScrollListener();\n this.unbindResizeListener();\n this.clearRefs();\n this.$emit('hide');\n },\n onOverlayAfterLeave(el) {\n if (this.autoZIndex) {\n ZIndex.clear(el);\n }\n },\n alignOverlay() {\n if (this.appendTo === 'self') relativePosition(this.picker, this.$refs.input);\n else absolutePosition(this.picker, this.$refs.input);\n },\n onInputClick() {\n if (this.disabled) {\n return;\n }\n\n this.overlayVisible = !this.overlayVisible;\n },\n onInputKeydown(event) {\n switch (event.code) {\n case 'Space':\n this.overlayVisible = !this.overlayVisible;\n event.preventDefault();\n break;\n\n case 'Escape':\n case 'Tab':\n this.overlayVisible = false;\n break;\n\n default:\n //NoOp\n break;\n }\n },\n onColorMousedown(event) {\n if (this.disabled) {\n return;\n }\n\n this.bindDragListeners();\n this.onColorDragStart(event);\n },\n onColorDragStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.colorDragging = true;\n this.pickColor(event);\n this.$el.setAttribute('p-colorpicker-dragging', 'true');\n !this.isUnstyled && addClass(this.$el, 'p-colorpicker-dragging');\n event.preventDefault();\n },\n onDrag(event) {\n if (this.colorDragging) {\n this.pickColor(event);\n event.preventDefault();\n }\n\n if (this.hueDragging) {\n this.pickHue(event);\n event.preventDefault();\n }\n },\n onDragEnd() {\n this.colorDragging = false;\n this.hueDragging = false;\n this.$el.setAttribute('p-colorpicker-dragging', 'false');\n !this.isUnstyled && removeClass(this.$el, 'p-colorpicker-dragging');\n this.unbindDragListeners();\n },\n onHueMousedown(event) {\n if (this.disabled) {\n return;\n }\n\n this.bindDragListeners();\n this.onHueDragStart(event);\n },\n onHueDragStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.hueDragging = true;\n this.pickHue(event);\n !this.isUnstyled && addClass(this.$el, 'p-colorpicker-dragging');\n },\n isInputClicked(event) {\n return this.$refs.input && this.$refs.input.isSameNode(event.target);\n },\n bindDragListeners() {\n this.bindDocumentMouseMoveListener();\n this.bindDocumentMouseUpListener();\n },\n unbindDragListeners() {\n this.unbindDocumentMouseMoveListener();\n this.unbindDocumentMouseUpListener();\n },\n bindOutsideClickListener() {\n if (!this.outsideClickListener) {\n this.outsideClickListener = (event) => {\n if (this.overlayVisible && this.picker && !this.picker.contains(event.target) && !this.isInputClicked(event)) {\n this.overlayVisible = false;\n }\n };\n\n document.addEventListener('click', this.outsideClickListener);\n }\n },\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n },\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n },\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n },\n bindResizeListener() {\n if (!this.resizeListener) {\n this.resizeListener = () => {\n if (this.overlayVisible && !isTouchDevice()) {\n this.overlayVisible = false;\n }\n };\n\n window.addEventListener('resize', this.resizeListener);\n }\n },\n unbindResizeListener() {\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = null;\n }\n },\n bindDocumentMouseMoveListener() {\n if (!this.documentMouseMoveListener) {\n this.documentMouseMoveListener = this.onDrag.bind(this);\n document.addEventListener('mousemove', this.documentMouseMoveListener);\n }\n },\n unbindDocumentMouseMoveListener() {\n if (this.documentMouseMoveListener) {\n document.removeEventListener('mousemove', this.documentMouseMoveListener);\n this.documentMouseMoveListener = null;\n }\n },\n bindDocumentMouseUpListener() {\n if (!this.documentMouseUpListener) {\n this.documentMouseUpListener = this.onDragEnd.bind(this);\n document.addEventListener('mouseup', this.documentMouseUpListener);\n }\n },\n unbindDocumentMouseUpListener() {\n if (this.documentMouseUpListener) {\n document.removeEventListener('mouseup', this.documentMouseUpListener);\n this.documentMouseUpListener = null;\n }\n },\n pickerRef(el) {\n this.picker = el;\n },\n colorSelectorRef(el) {\n this.colorSelector = el;\n },\n colorHandleRef(el) {\n this.colorHandle = el;\n },\n hueViewRef(el) {\n this.hueView = el;\n },\n hueHandleRef(el) {\n this.hueHandle = el;\n },\n clearRefs() {\n this.picker = null;\n this.colorSelector = null;\n this.colorHandle = null;\n this.hueView = null;\n this.hueHandle = null;\n },\n onOverlayClick(event) {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: this.$el\n });\n }\n },\n components: {\n Portal: Portal\n }\n};\n</script>\n","<template>\n <div ref=\"container\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <input v-if=\"!inline\" ref=\"input\" :id=\"inputId\" type=\"text\" :class=\"cx('preview')\" readonly=\"readonly\" :tabindex=\"tabindex\" :disabled=\"disabled\" @click=\"onInputClick\" @keydown=\"onInputKeydown\" v-bind=\"ptm('preview')\" />\n <Portal :appendTo=\"appendTo\" :disabled=\"inline\">\n <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n <div v-if=\"inline ? true : overlayVisible\" :ref=\"pickerRef\" :class=\"[cx('panel'), panelClass]\" @click=\"onOverlayClick\" v-bind=\"ptm('panel')\">\n <div :class=\"cx('content')\" v-bind=\"ptm('content')\">\n <div :ref=\"colorSelectorRef\" :class=\"cx('colorSelector')\" @mousedown=\"onColorMousedown($event)\" @touchstart=\"onColorDragStart($event)\" @touchmove=\"onDrag($event)\" @touchend=\"onDragEnd()\" v-bind=\"ptm('colorSelector')\">\n <div :class=\"cx('colorBackground')\" v-bind=\"ptm('colorBackground')\">\n <div :ref=\"colorHandleRef\" :class=\"cx('colorHandle')\" v-bind=\"ptm('colorHandle')\"></div>\n </div>\n </div>\n <div :ref=\"hueViewRef\" :class=\"cx('hue')\" @mousedown=\"onHueMousedown($event)\" @touchstart=\"onHueDragStart($event)\" @touchmove=\"onDrag($event)\" @touchend=\"onDragEnd()\" v-bind=\"ptm('hue')\">\n <div :ref=\"hueHandleRef\" :class=\"cx('hueHandle')\" v-bind=\"ptm('hueHandle')\"></div>\n </div>\n </div>\n </div>\n </transition>\n </Portal>\n </div>\n</template>\n\n<script>\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport { relativePosition, absolutePosition, addClass, removeClass, isTouchDevice } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport BaseColorPicker from './BaseColorPicker.vue';\n\nexport default {\n name: 'ColorPicker',\n extends: BaseColorPicker,\n inheritAttrs: false,\n emits: ['update:modelValue', 'change', 'show', 'hide'],\n data() {\n return {\n overlayVisible: false\n };\n },\n hsbValue: null,\n outsideClickListener: null,\n documentMouseMoveListener: null,\n documentMouseUpListener: null,\n scrollHandler: null,\n resizeListener: null,\n hueDragging: null,\n colorDragging: null,\n selfUpdate: null,\n picker: null,\n colorSelector: null,\n colorHandle: null,\n hueView: null,\n hueHandle: null,\n watch: {\n modelValue: {\n immediate: true,\n handler(newValue) {\n this.hsbValue = this.toHSB(newValue);\n\n if (this.selfUpdate) this.selfUpdate = false;\n else this.updateUI();\n }\n }\n },\n beforeUnmount() {\n this.unbindOutsideClickListener();\n this.unbindDragListeners();\n this.unbindResizeListener();\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.picker && this.autoZIndex) {\n ZIndex.clear(this.picker);\n }\n\n this.clearRefs();\n },\n mounted() {\n this.updateUI();\n },\n methods: {\n pickColor(event) {\n let rect = this.colorSelector.getBoundingClientRect();\n let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n let left = rect.left + document.body.scrollLeft;\n let saturation = Math.floor((100 * Math.max(0, Math.min(150, (event.pageX || event.changedTouches[0].pageX) - left))) / 150);\n let brightness = Math.floor((100 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);\n\n this.hsbValue = this.validateHSB({\n h: this.hsbValue.h,\n s: saturation,\n b: brightness\n });\n\n this.selfUpdate = true;\n this.updateColorHandle();\n this.updateInput();\n this.updateModel(event);\n },\n pickHue(event) {\n let top = this.hueView.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n\n this.hsbValue = this.validateHSB({\n h: Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150),\n s: 100,\n b: 100\n });\n\n this.selfUpdate = true;\n this.updateColorSelector();\n this.updateHue();\n this.updateModel(event);\n this.updateInput();\n },\n updateModel(event) {\n let value = this.modelValue;\n\n switch (this.format) {\n case 'hex':\n value = this.HSBtoHEX(this.hsbValue);\n break;\n\n case 'rgb':\n value = this.HSBtoRGB(this.hsbValue);\n break;\n\n case 'hsb':\n value = this.hsbValue;\n break;\n\n default:\n //NoOp\n break;\n }\n\n this.$emit('update:modelValue', value);\n this.$emit('change', { event, value });\n },\n updateColorSelector() {\n if (this.colorSelector) {\n let hsbValue = this.validateHSB({\n h: this.hsbValue.h,\n s: 100,\n b: 100\n });\n\n this.colorSelector.style.backgroundColor = '#' + this.HSBtoHEX(hsbValue);\n }\n },\n updateColorHandle() {\n if (this.colorHandle) {\n this.colorHandle.style.left = Math.floor((150 * this.hsbValue.s) / 100) + 'px';\n this.colorHandle.style.top = Math.floor((150 * (100 - this.hsbValue.b)) / 100) + 'px';\n }\n },\n updateHue() {\n if (this.hueHandle) {\n this.hueHandle.style.top = Math.floor(150 - (150 * this.hsbValue.h) / 360) + 'px';\n }\n },\n updateInput() {\n if (this.$refs.input) {\n this.$refs.input.style.backgroundColor = '#' + this.HSBtoHEX(this.hsbValue);\n }\n },\n updateUI() {\n this.updateHue();\n this.updateColorHandle();\n this.updateInput();\n this.updateColorSelector();\n },\n validateHSB(hsb) {\n return {\n h: Math.min(360, Math.max(0, hsb.h)),\n s: Math.min(100, Math.max(0, hsb.s)),\n b: Math.min(100, Math.max(0, hsb.b))\n };\n },\n validateRGB(rgb) {\n return {\n r: Math.min(255, Math.max(0, rgb.r)),\n g: Math.min(255, Math.max(0, rgb.g)),\n b: Math.min(255, Math.max(0, rgb.b))\n };\n },\n validateHEX(hex) {\n var len = 6 - hex.length;\n\n if (len > 0) {\n var o = [];\n\n for (var i = 0; i < len; i++) {\n o.push('0');\n }\n\n o.push(hex);\n hex = o.join('');\n }\n\n return hex;\n },\n HEXtoRGB(hex) {\n let hexValue = parseInt(hex.indexOf('#') > -1 ? hex.substring(1) : hex, 16);\n\n return { r: hexValue >> 16, g: (hexValue & 0x00ff00) >> 8, b: hexValue & 0x0000ff };\n },\n HEXtoHSB(hex) {\n return this.RGBtoHSB(this.HEXtoRGB(hex));\n },\n RGBtoHSB(rgb) {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n\n hsb.b = max;\n hsb.s = max !== 0 ? (255 * delta) / max : 0;\n\n if (hsb.s !== 0) {\n if (rgb.r === max) {\n hsb.h = (rgb.g - rgb.b) / delta;\n } else if (rgb.g === max) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n } else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n } else {\n hsb.h = -1;\n }\n\n hsb.h *= 60;\n\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n\n return hsb;\n },\n HSBtoRGB(hsb) {\n var rgb = {\n r: null,\n g: null,\n b: null\n };\n var h = Math.round(hsb.h);\n var s = Math.round((hsb.s * 255) / 100);\n var v = Math.round((hsb.b * 255) / 100);\n\n if (s === 0) {\n rgb = {\n r: v,\n g: v,\n b: v\n };\n } else {\n var t1 = v;\n var t2 = ((255 - s) * v) / 255;\n var t3 = ((t1 - t2) * (h % 60)) / 60;\n\n if (h === 360) h = 0;\n\n if (h < 60) {\n rgb.r = t1;\n rgb.b = t2;\n rgb.g = t2 + t3;\n } else if (h < 120) {\n rgb.g = t1;\n rgb.b = t2;\n rgb.r = t1 - t3;\n } else if (h < 180) {\n rgb.g = t1;\n rgb.r = t2;\n rgb.b = t2 + t3;\n } else if (h < 240) {\n rgb.b = t1;\n rgb.r = t2;\n rgb.g = t1 - t3;\n } else if (h < 300) {\n rgb.b = t1;\n rgb.g = t2;\n rgb.r = t2 + t3;\n } else if (h < 360) {\n rgb.r = t1;\n rgb.g = t2;\n rgb.b = t1 - t3;\n } else {\n rgb.r = 0;\n rgb.g = 0;\n rgb.b = 0;\n }\n }\n\n return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };\n },\n RGBtoHEX(rgb) {\n var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n\n for (var key in hex) {\n if (hex[key].length === 1) {\n hex[key] = '0' + hex[key];\n }\n }\n\n return hex.join('');\n },\n HSBtoHEX(hsb) {\n return this.RGBtoHEX(this.HSBtoRGB(hsb));\n },\n toHSB(value) {\n let hsb;\n\n if (value) {\n switch (this.format) {\n case 'hex':\n hsb = this.HEXtoHSB(value);\n break;\n\n case 'rgb':\n hsb = this.RGBtoHSB(value);\n break;\n\n case 'hsb':\n hsb = value;\n break;\n\n default:\n break;\n }\n } else {\n hsb = this.HEXtoHSB(this.defaultColor);\n }\n\n return hsb;\n },\n onOverlayEnter(el) {\n this.updateUI();\n this.alignOverlay();\n this.bindOutsideClickListener();\n this.bindScrollListener();\n this.bindResizeListener();\n\n if (this.autoZIndex) {\n ZIndex.set('overlay', el, this.baseZIndex, this.$primevue.config.zIndex.overlay);\n }\n\n this.$emit('show');\n },\n onOverlayLeave() {\n this.unbindOutsideClickListener();\n this.unbindScrollListener();\n this.unbindResizeListener();\n this.clearRefs();\n this.$emit('hide');\n },\n onOverlayAfterLeave(el) {\n if (this.autoZIndex) {\n ZIndex.clear(el);\n }\n },\n alignOverlay() {\n if (this.appendTo === 'self') relativePosition(this.picker, this.$refs.input);\n else absolutePosition(this.picker, this.$refs.input);\n },\n onInputClick() {\n if (this.disabled) {\n return;\n }\n\n this.overlayVisible = !this.overlayVisible;\n },\n onInputKeydown(event) {\n switch (event.code) {\n case 'Space':\n this.overlayVisible = !this.overlayVisible;\n event.preventDefault();\n break;\n\n case 'Escape':\n case 'Tab':\n this.overlayVisible = false;\n break;\n\n default:\n //NoOp\n break;\n }\n },\n onColorMousedown(event) {\n if (this.disabled) {\n return;\n }\n\n this.bindDragListeners();\n this.onColorDragStart(event);\n },\n onColorDragStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.colorDragging = true;\n this.pickColor(event);\n this.$el.setAttribute('p-colorpicker-dragging', 'true');\n !this.isUnstyled && addClass(this.$el, 'p-colorpicker-dragging');\n event.preventDefault();\n },\n onDrag(event) {\n if (this.colorDragging) {\n this.pickColor(event);\n event.preventDefault();\n }\n\n if (this.hueDragging) {\n this.pickHue(event);\n event.preventDefault();\n }\n },\n onDragEnd() {\n this.colorDragging = false;\n this.hueDragging = false;\n this.$el.setAttribute('p-colorpicker-dragging', 'false');\n !this.isUnstyled && removeClass(this.$el, 'p-colorpicker-dragging');\n this.unbindDragListeners();\n },\n onHueMousedown(event) {\n if (this.disabled) {\n return;\n }\n\n this.bindDragListeners();\n this.onHueDragStart(event);\n },\n onHueDragStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.hueDragging = true;\n this.pickHue(event);\n !this.isUnstyled && addClass(this.$el, 'p-colorpicker-dragging');\n },\n isInputClicked(event) {\n return this.$refs.input && this.$refs.input.isSameNode(event.target);\n },\n bindDragListeners() {\n this.bindDocumentMouseMoveListener();\n this.bindDocumentMouseUpListener();\n },\n unbindDragListeners() {\n this.unbindDocumentMouseMoveListener();\n this.unbindDocumentMouseUpListener();\n },\n bindOutsideClickListener() {\n if (!this.outsideClickListener) {\n this.outsideClickListener = (event) => {\n if (this.overlayVisible && this.picker && !this.picker.contains(event.target) && !this.isInputClicked(event)) {\n this.overlayVisible = false;\n }\n };\n\n document.addEventListener('click', this.outsideClickListener);\n }\n },\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n },\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n },\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n },\n bindResizeListener() {\n if (!this.resizeListener) {\n this.resizeListener = () => {\n if (this.overlayVisible && !isTouchDevice()) {\n this.overlayVisible = false;\n }\n };\n\n window.addEventListener('resize', this.resizeListener);\n }\n },\n unbindResizeListener() {\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = null;\n }\n },\n bindDocumentMouseMoveListener() {\n if (!this.documentMouseMoveListener) {\n this.documentMouseMoveListener = this.onDrag.bind(this);\n document.addEventListener('mousemove', this.documentMouseMoveListener);\n }\n },\n unbindDocumentMouseMoveListener() {\n if (this.documentMouseMoveListener) {\n document.removeEventListener('mousemove', this.documentMouseMoveListener);\n this.documentMouseMoveListener = null;\n }\n },\n bindDocumentMouseUpListener() {\n if (!this.documentMouseUpListener) {\n this.documentMouseUpListener = this.onDragEnd.bind(this);\n document.addEventListener('mouseup', this.documentMouseUpListener);\n }\n },\n unbindDocumentMouseUpListener() {\n if (this.documentMouseUpListener) {\n document.removeEventListener('mouseup', this.documentMouseUpListener);\n this.documentMouseUpListener = null;\n }\n },\n pickerRef(el) {\n this.picker = el;\n },\n colorSelectorRef(el) {\n this.colorSelector = el;\n },\n colorHandleRef(el) {\n this.colorHandle = el;\n },\n hueViewRef(el) {\n this.hueView = el;\n },\n hueHandleRef(el) {\n this.hueHandle = el;\n },\n clearRefs() {\n this.picker = null;\n this.colorSelector = null;\n this.colorHandle = null;\n this.hueView = null;\n this.hueHandle = null;\n },\n onOverlayClick(event) {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: this.$el\n });\n }\n },\n components: {\n Portal: Portal\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","modelValue","type","defaultColor","inline","Boolean","format","String","disabled","tabindex","autoZIndex","baseZIndex","Number","appendTo","Object","inputId","panelClass","style","ColorPickerStyle","provide","$pcColorPicker","$parentInstance","BaseColorPicker","inheritAttrs","emits","data","overlayVisible","hsbValue","outsideClickListener","documentMouseMoveListener","documentMouseUpListener","scrollHandler","resizeListener","hueDragging","colorDragging","selfUpdate","picker","colorSelector","colorHandle","hueView","hueHandle","watch","immediate","handler","newValue","toHSB","updateUI","beforeUnmount","unbindOutsideClickListener","unbindDragListeners","unbindResizeListener","destroy","ZIndex","clear","clearRefs","mounted","methods","pickColor","event","rect","getBoundingClientRect","top","window","pageYOffset","document","documentElement","scrollTop","body","left","scrollLeft","saturation","Math","floor","max","min","pageX","changedTouches","brightness","pageY","validateHSB","h","s","b","updateColorHandle","updateInput","updateModel","pickHue","updateColorSelector","updateHue","value","HSBtoHEX","HSBtoRGB","$emit","backgroundColor","$refs","input","hsb","validateRGB","rgb","r","g","validateHEX","hex","len","length","o","i","push","join","HEXtoRGB","hexValue","parseInt","indexOf","substring","HEXtoHSB","RGBtoHSB","delta","round","v","t1","t2","t3","RGBtoHEX","toString","key","onOverlayEnter","el","alignOverlay","bindOutsideClickListener","bindScrollListener","bindResizeListener","set","$primevue","config","zIndex","overlay","onOverlayLeave","unbindScrollListener","onOverlayAfterLeave","relativePosition","absolutePosition","onInputClick","onInputKeydown","code","preventDefault","onColorMousedown","bindDragListeners","onColorDragStart","$el","setAttribute","isUnstyled","addClass","onDrag","onDragEnd","removeClass","onHueMousedown","onHueDragStart","isInputClicked","isSameNode","target","bindDocumentMouseMoveListener","bindDocumentMouseUpListener","unbindDocumentMouseMoveListener","unbindDocumentMouseUpListener","_this","contains","addEventListener","removeEventListener","_this2","ConnectedOverlayScrollHandler","container","_this3","isTouchDevice","bind","pickerRef","colorSelectorRef","colorHandleRef","hueViewRef","hueHandleRef","onOverlayClick","OverlayEventBus","emit","originalEvent","components","Portal","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","ptmi","id","readonly","onClick","$options","apply","arguments","onKeydown","ptm","_hoisted_1","_createVNode","_component_Portal","_Transition","onEnter","onLeave","onAfterLeave","$data","_createElementVNode","onMousedown","_cache","$event","onTouchstart","onTouchmove","onTouchend"],"mappings":"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