/*! * vanilla-picker-mini v1.0.2 * https://github.com/Sphinxxxx/vanilla-picker-mini * * Copyright 2017-2018 Andreas Borgen (https://github.com/Sphinxxxx), Adam Brooks (https://github.com/dissimulate) * Released under the ISC license. */ !function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Picker=e()}(this,function(){"use strict";function w(t,e){return(e||document).querySelector(t)}function a(t,e,i){t.addEventListener(e,i,!1)}function l(c,u){var h=!1;function d(t,e,i){return Math.max(e,Math.min(t,i))}function i(t,e,i){if(i&&(h=!0),h){t.preventDefault();var o=c.getBoundingClientRect(),r=o.width,n=o.height,s=e.clientX,p=e.clientY,a=d(s-o.left,0,r),l=d(p-o.top,0,n);u(a/r,l/n)}}function e(t,e){1===(void 0===t.buttons?t.which:t.buttons)?i(t,t,e):h=!1}function o(t,e){1===t.touches.length?i(t,t.touches[0],e):h=!1}a(c,"mousedown",function(t){e(t,!0)}),a(c,"touchstart",function(t){o(t,!0)}),a(window,"mousemove",e),a(c,"touchmove",o),a(window,"mouseup",function(t){h=!1}),a(c,"touchend",function(t){h=!1}),a(c,"touchcancel",function(t){h=!1})}String.prototype.startsWith=String.prototype.startsWith||function(t){return 0===this.indexOf(t)},String.prototype.padStart=String.prototype.padStart||function(t,e){for(var i=this;i.length*{margin:.5em}.layout_default.picker_wrapper::before{content:'';display:block;width:100%;height:0;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl::before{content:'';display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6rem}.layout_default .picker_editor input{width:calc(100% + 2px);height:calc(100% + 2px)}.layout_default .picker_sample{order:1;flex:1 1 auto}.layout_default .picker_done{order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{margin:-1px}.picker_selector{position:absolute;z-index:1;display:block;transform:translate(-50%, -50%);border:2px solid white;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:linear-gradient(180deg, white, rgba(255,255,255,0) 50%),linear-gradient(0deg, black, rgba(0,0,0,0) 50%),linear-gradient(90deg, gray, rgba(128,128,128,0))}.picker_alpha,.picker_sample{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E\") left top/contain white;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{box-sizing:border-box;font-family:monospace;padding:.1em .2em}.picker_sample::before{content:'';position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_done button{box-sizing:border-box;padding:.2em .5em;cursor:pointer}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,0.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:\"\";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;transform:skew(45deg);transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}";var e=t.prototype;return e.setOptions=function(t){if(t){var e=this.settings;if(t instanceof HTMLElement)e.parent=t;else{e.parent&&t.parent&&e.parent!==t.parent&&(e.parent.removeEventListener("click",this._openProxy,!1),this._popupInited=!1),function(t,e,i){for(var o in t)i&&0<=i.indexOf(o)||(e[o]=t[o])}(t,e),t.onChange&&(this.onChange=t.onChange),t.onDone&&(this.onDone=t.onDone),t.onOpen&&(this.onOpen=t.onOpen),t.onClose&&(this.onClose=t.onClose);var i=t.color;i&&this._setColor(i)}var o=e.parent;o&&e.popup&&!this._popupInited?(a(o,"click",this._openProxy),p(o,[" ","Spacebar","Enter"],this._openProxy),this._popupInited=!0):t.parent&&!e.popup&&this.show()}},e.openHandler=function(t){if(this.show()){t&&t.preventDefault(),this.settings.parent.style.pointerEvents="none";var e=t&&t.type===o?this._domEdit:this.domElement;setTimeout(function(){e.focus()},100),this.onOpen&&this.onOpen(this.color)}},e.closeHandler=function(t){var e,i=this.settings.parent,o=t&&t.type,r=!1;t?o===n||o===s?this.domElement.contains(t.target)||(r=!0):((e=t).preventDefault(),e.stopPropagation(),r=!0):r=!0,r&&this.hide()&&(i.style.pointerEvents="",o!==n&&i.focus(),this.onClose&&this.onClose(this.color))},e.movePopup=function(t,e){this.closeHandler(),this.setOptions(t),e&&this.openHandler()},e.setColor=function(t,e){this._setColor(t,{silent:e})},e._setColor=function(t,e){if("string"==typeof t&&(t=t.trim()),t){var i;e=e||{};try{i=new r(t)}catch(t){if(e.failSilently)return;throw t}if(!this.settings.alpha){var o=i.hsla();o[3]=1,i.hsla(o)}this.color=i,this._setHSLA(null,null,null,null,e)}},e.show=function(){var t=this.settings;if(!t.parent)return!1;if(this.domElement){var e=this._toggleDOM(!0);return this._setPosition(),e}var i,o,r=t.template||'
',n=(i=r,(o=document.createElement("div")).innerHTML=i,o.firstElementChild);return this.domElement=n,this._domH=w(".picker_hue",n),this._domSL=w(".picker_sl",n),this._domA=w(".picker_alpha",n),this._domEdit=w(".picker_editor input",n),this._domSample=w(".picker_sample",n),this._domOkay=w(".picker_done button",n),n.classList.add("layout_"+t.layout),t.alpha||n.classList.add("no_alpha"),t.editor||n.classList.add("no_editor"),this._ifPopup(function(){n.classList.add("popup")}),this._setPosition(),this.color?this._updateUI():this._setColor("#0cf"),this._bindEvents(),!0},e.hide=function(){return this._toggleDOM(!1)},e._bindEvents=function(){var i=this,t=this.domElement;a(t,"click",function(t){t.preventDefault()}),l(this._domH,function(t,e){i._setHSLA(t)}),l(this._domSL,function(t,e){i._setHSLA(null,t,1-e)}),this.settings.alpha&&l(this._domA,function(t,e){i._setHSLA(null,null,null,1-e)});var e=this._domEdit;function o(t){i._ifPopup(function(){i.closeHandler(t)})}function r(t){i._ifPopup(function(){i.closeHandler(t)}),i.onDone&&i.onDone(i.color)}a(e,"input",function(t){i._setColor(this.value,{fromEditor:!0,failSilently:!0})}),a(e,"focus",function(t){this.selectionStart===this.selectionEnd&&this.select()}),a(window,n,o),a(window,s,o),p(t,["Esc","Escape"],o),a(this._domOkay,"click",r),p(t,["Enter"],r)},e._setPosition=function(){var i=this.settings.parent,o=this.domElement;i!==o.parentNode&&i.appendChild(o),this._ifPopup(function(t){"static"===getComputedStyle(i).position&&(i.style.position="relative");var e=!0===t?"popup_right":"popup_"+t;["popup_top","popup_bottom","popup_left","popup_right"].forEach(function(t){t===e?o.classList.add(t):o.classList.remove(t)}),o.classList.add(e)})},e._setHSLA=function(t,e,i,o,r){r=r||{};var n=this.color,s=n.hsla();[t,e,i,o].forEach(function(t,e){(t||0===t)&&(s[e]=t)}),n.hsla(s),this._updateUI(r),this.onChange&&!r.silent&&this.onChange(n)},e._updateUI=function(t){if(this.domElement){t=t||{};var e=this.color,i=e.hsla(),o="hsl("+360*i[0]+", 100%, 50%)",r=e.hslString(),n=e.hslaString(),s=this._domH,p=this._domSL,a=this._domA,l=w(".picker_selector",s),c=w(".picker_selector",p),u=w(".picker_selector",a);g(0,l,i[0]),this._domSL.style.backgroundColor=this._domH.style.color=o,g(0,c,i[1]),m(0,c,1-i[2]),p.style.color=r,m(0,u,1-i[3]);var h=r,d=h.replace("hsl","hsla").replace(")",", 0)"),f="linear-gradient("+[h,d]+")";if(this._domA.style.backgroundImage=f+", url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E\")",!t.fromEditor){var _=e.hex();this._domEdit.value=this.settings.alpha?_:_.substr(0,7)}this._domSample.style.color=n}function g(t,e,i){e.style.left=100*i+"%"}function m(t,e,i){e.style.top=100*i+"%"}},e._ifPopup=function(t,e){var i=this.settings;i.parent&&i.popup?t&&t(i.popup):e&&e()},e._toggleDOM=function(t){var e=this.domElement;if(!e)return!1;var i=t?"":"none",o=e.style.display!==i;return o&&(e.style.display=i),o},t}()});