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.4 kB
{"version":3,"file":"index.mjs","sources":["../../src/colorpicker/BaseColorPicker.vue","../../src/colorpicker/ColorPicker.vue","../../src/colorpicker/ColorPicker.vue?vue&type=template&id=babcf592&lang.js"],"sourcesContent":["<script>\nimport BaseEditableHolder from '@primevue/core/baseeditableholder';\nimport ColorPickerStyle from 'primevue/colorpicker/style';\n\nexport default {\n name: 'BaseColorPicker',\n extends: BaseEditableHolder,\n props: {\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 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 overlayClass: 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 :tabindex=\"tabindex\" :disabled=\"disabled\" @click=\"onInputClick\" @keydown=\"onInputKeydown\" @blur=\"onInputBlur\" 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, overlayClass]\" @click=\"onOverlayClick\" v-bind=\"{ ...ptm('panel'), ...ptm('overlay') }\">\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 { absolutePosition, addClass, isTouchDevice, relativePosition, removeClass } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\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: ['change', 'show', 'hide'],\n data() {\n return {\n overlayVisible: false\n };\n },\n hsbValue: null,\n localHue: 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.localHue,\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 this.localHue = Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);\n\n this.hsbValue = this.validateHSB({\n h: this.localHue,\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.d_value;\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.writeValue(value, event);\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 if (this.localHue == null || !this.overlayVisible) {\n this.localHue = hsb.h;\n } else {\n hsb.h = this.localHue;\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 onInputBlur(event) {\n this.formField.onBlur?.();\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, true);\n }\n },\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener, true);\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 :tabindex=\"tabindex\" :disabled=\"disabled\" @click=\"onInputClick\" @keydown=\"onInputKeydown\" @blur=\"onInputBlur\" 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, overlayClass]\" @click=\"onOverlayClick\" v-bind=\"{ ...ptm('panel'), ...ptm('overlay') }\">\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 { absolutePosition, addClass, isTouchDevice, relativePosition, removeClass } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\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: ['change', 'show', 'hide'],\n data() {\n return {\n overlayVisible: false\n };\n },\n hsbValue: null,\n localHue: 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.localHue,\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 this.localHue = Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);\n\n this.hsbValue = this.validateHSB({\n h: this.localHue,\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.d_value;\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.writeValue(value, event);\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 if (this.localHue == null || !this.overlayVisible) {\n this.localHue = hsb.h;\n } else {\n hsb.h = this.localHue;\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 onInputBlur(event) {\n this.formField.onBlur?.();\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, true);\n }\n },\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener, true);\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","BaseEditableHolder","props","defaultColor","type","inline","Boolean","format","String","tabindex","autoZIndex","baseZIndex","Number","appendTo","Object","inputId","panelClass","overlayClass","style","ColorPickerStyle","provide","$pcColorPicker","$parentInstance","BaseColorPicker","inheritAttrs","emits","data","overlayVisible","hsbValue","localHue","outsideClickListener","documentMouseMoveListener","documentMouseUpListener","scrollHandler","resizeListener","hueDragging","colorDragging","selfUpdate","picker","colorSelector","colorHandle","hueView","hueHandle","watch","modelValue","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","d_value","HSBtoHEX","HSBtoRGB","writeValue","$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","disabled","onInputKeydown","code","preventDefault","onInputBlur","_this$formField$onBlu","_this$formField","formField","onBlur","call","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","_objectSpread","_createElementVNode","onMousedown","_cache","$event","onTouchstart","onTouchmove","onTouchend"],"mappings":"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