Artifact
c8f8b7b9986bb1f673c24633943d4a120beb3488fe54cd488de233c15529f577:
0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 69 'use strict';..i
0010: 6d 70 6f 72 74 20 24 20 66 72 6f 6d 20 27 6a 71 mport $ from 'jq
0020: 75 65 72 79 27 3b 0a 0a 2f 2a 2a 0a 20 2a 20 48 uery';../**. * H
0030: 61 6e 64 6c 65 73 20 65 76 65 72 79 74 68 69 6e andles everythin
0040: 67 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 g related to the
0050: 20 63 6f 6c 6f 72 70 69 63 6b 65 72 20 55 49 0a colorpicker UI.
0060: 20 2a 20 40 69 67 6e 6f 72 65 0a 20 2a 2f 0a 63 * @ignore. */.c
0070: 6c 61 73 73 20 50 69 63 6b 65 72 48 61 6e 64 6c lass PickerHandl
0080: 65 72 20 7b 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 er {. /**. *
0090: 40 70 61 72 61 6d 20 7b 43 6f 6c 6f 72 70 69 63 @param {Colorpic
00a0: 6b 65 72 7d 20 63 6f 6c 6f 72 70 69 63 6b 65 72 ker} colorpicker
00b0: 0a 20 20 20 2a 2f 0a 20 20 63 6f 6e 73 74 72 75 . */. constru
00c0: 63 74 6f 72 28 63 6f 6c 6f 72 70 69 63 6b 65 72 ctor(colorpicker
00d0: 29 20 7b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 ) {. /**.
00e0: 20 2a 20 40 74 79 70 65 20 7b 43 6f 6c 6f 72 70 * @type {Colorp
00f0: 69 63 6b 65 72 7d 0a 20 20 20 20 20 2a 2f 0a 20 icker}. */.
0100: 20 20 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 this.colorpic
0110: 6b 65 72 20 3d 20 63 6f 6c 6f 72 70 69 63 6b 65 ker = colorpicke
0120: 72 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 r;. /**.
0130: 2a 20 40 74 79 70 65 20 7b 6a 51 75 65 72 79 7d * @type {jQuery}
0140: 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 74 68 69 . */. thi
0150: 73 2e 70 69 63 6b 65 72 20 3d 20 6e 75 6c 6c 3b s.picker = null;
0160: 0a 20 20 7d 0a 0a 20 20 67 65 74 20 6f 70 74 69 . }.. get opti
0170: 6f 6e 73 28 29 20 7b 0a 20 20 20 20 72 65 74 75 ons() {. retu
0180: 72 6e 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 rn this.colorpic
0190: 6b 65 72 2e 6f 70 74 69 6f 6e 73 3b 0a 20 20 7d ker.options;. }
01a0: 0a 0a 20 20 67 65 74 20 63 6f 6c 6f 72 28 29 20 .. get color()
01b0: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 {. return thi
01c0: 73 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 63 6f s.colorpicker.co
01d0: 6c 6f 72 48 61 6e 64 6c 65 72 2e 63 6f 6c 6f 72 lorHandler.color
01e0: 3b 0a 20 20 7d 0a 0a 20 20 62 69 6e 64 28 29 20 ;. }.. bind()
01f0: 7b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a {. /**. *
0200: 20 40 74 79 70 65 20 7b 6a 51 75 65 72 79 7c 48 @type {jQuery|H
0210: 54 4d 4c 45 6c 65 6d 65 6e 74 7d 0a 20 20 20 20 TMLElement}.
0220: 20 2a 2f 0a 20 20 20 20 6c 65 74 20 70 69 63 6b */. let pick
0230: 65 72 20 3d 20 74 68 69 73 2e 70 69 63 6b 65 72 er = this.picker
0240: 20 3d 20 24 28 74 68 69 73 2e 6f 70 74 69 6f 6e = $(this.option
0250: 73 2e 74 65 6d 70 6c 61 74 65 29 3b 0a 0a 20 20 s.template);..
0260: 20 20 69 66 20 28 74 68 69 73 2e 6f 70 74 69 6f if (this.optio
0270: 6e 73 2e 63 75 73 74 6f 6d 43 6c 61 73 73 29 20 ns.customClass)
0280: 7b 0a 20 20 20 20 20 20 70 69 63 6b 65 72 2e 61 {. picker.a
0290: 64 64 43 6c 61 73 73 28 74 68 69 73 2e 6f 70 74 ddClass(this.opt
02a0: 69 6f 6e 73 2e 63 75 73 74 6f 6d 43 6c 61 73 73 ions.customClass
02b0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 );. }.. if
02c0: 20 28 74 68 69 73 2e 6f 70 74 69 6f 6e 73 2e 68 (this.options.h
02d0: 6f 72 69 7a 6f 6e 74 61 6c 29 20 7b 0a 20 20 20 orizontal) {.
02e0: 20 20 20 70 69 63 6b 65 72 2e 61 64 64 43 6c 61 picker.addCla
02f0: 73 73 28 27 63 6f 6c 6f 72 70 69 63 6b 65 72 2d ss('colorpicker-
0300: 68 6f 72 69 7a 6f 6e 74 61 6c 27 29 3b 0a 20 20 horizontal');.
0310: 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 74 68 69 }.. if (thi
0320: 73 2e 5f 73 75 70 70 6f 72 74 73 41 6c 70 68 61 s._supportsAlpha
0330: 42 61 72 28 29 29 20 7b 0a 20 20 20 20 20 20 74 Bar()) {. t
0340: 68 69 73 2e 6f 70 74 69 6f 6e 73 2e 75 73 65 41 his.options.useA
0350: 6c 70 68 61 20 3d 20 74 72 75 65 3b 0a 20 20 20 lpha = true;.
0360: 20 20 20 70 69 63 6b 65 72 2e 61 64 64 43 6c 61 picker.addCla
0370: 73 73 28 27 63 6f 6c 6f 72 70 69 63 6b 65 72 2d ss('colorpicker-
0380: 77 69 74 68 2d 61 6c 70 68 61 27 29 3b 0a 20 20 with-alpha');.
0390: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 } else {.
03a0: 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 2e 75 73 this.options.us
03b0: 65 41 6c 70 68 61 20 3d 20 66 61 6c 73 65 3b 0a eAlpha = false;.
03c0: 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 61 74 74 }. }.. att
03d0: 61 63 68 28 29 20 7b 0a 20 20 20 20 2f 2f 20 49 ach() {. // I
03e0: 6e 6a 65 63 74 20 74 68 65 20 63 6f 6c 6f 72 70 nject the colorp
03f0: 69 63 6b 65 72 20 65 6c 65 6d 65 6e 74 20 69 6e icker element in
0400: 74 6f 20 74 68 65 20 44 4f 4d 0a 20 20 20 20 6c to the DOM. l
0410: 65 74 20 70 69 63 6b 65 72 50 61 72 65 6e 74 20 et pickerParent
0420: 3d 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b = this.colorpick
0430: 65 72 2e 63 6f 6e 74 61 69 6e 65 72 20 3f 20 74 er.container ? t
0440: 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e his.colorpicker.
0450: 63 6f 6e 74 61 69 6e 65 72 20 3a 20 6e 75 6c 6c container : null
0460: 3b 0a 0a 20 20 20 20 69 66 20 28 70 69 63 6b 65 ;.. if (picke
0470: 72 50 61 72 65 6e 74 29 20 7b 0a 20 20 20 20 20 rParent) {.
0480: 20 74 68 69 73 2e 70 69 63 6b 65 72 2e 61 70 70 this.picker.app
0490: 65 6e 64 54 6f 28 70 69 63 6b 65 72 50 61 72 65 endTo(pickerPare
04a0: 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a nt);. }. }..
04b0: 20 20 75 6e 62 69 6e 64 28 29 20 7b 0a 20 20 20 unbind() {.
04c0: 20 74 68 69 73 2e 70 69 63 6b 65 72 2e 72 65 6d this.picker.rem
04d0: 6f 76 65 28 29 3b 0a 20 20 7d 0a 0a 20 20 5f 73 ove();. }.. _s
04e0: 75 70 70 6f 72 74 73 41 6c 70 68 61 42 61 72 28 upportsAlphaBar(
04f0: 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 ) {. return (
0500: 0a 20 20 20 20 20 20 28 74 68 69 73 2e 6f 70 74 . (this.opt
0510: 69 6f 6e 73 2e 75 73 65 41 6c 70 68 61 20 7c 7c ions.useAlpha ||
0520: 20 28 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b (this.colorpick
0530: 65 72 2e 63 6f 6c 6f 72 48 61 6e 64 6c 65 72 2e er.colorHandler.
0540: 68 61 73 43 6f 6c 6f 72 28 29 20 26 26 20 74 68 hasColor() && th
0550: 69 73 2e 63 6f 6c 6f 72 2e 68 61 73 54 72 61 6e is.color.hasTran
0560: 73 70 61 72 65 6e 63 79 28 29 29 29 20 26 26 0a sparency())) &&.
0570: 20 20 20 20 20 20 28 74 68 69 73 2e 6f 70 74 69 (this.opti
0580: 6f 6e 73 2e 75 73 65 41 6c 70 68 61 20 21 3d 3d ons.useAlpha !==
0590: 20 66 61 6c 73 65 29 20 26 26 0a 20 20 20 20 20 false) &&.
05a0: 20 28 21 74 68 69 73 2e 6f 70 74 69 6f 6e 73 2e (!this.options.
05b0: 66 6f 72 6d 61 74 20 7c 7c 20 28 74 68 69 73 2e format || (this.
05c0: 6f 70 74 69 6f 6e 73 2e 66 6f 72 6d 61 74 20 26 options.format &
05d0: 26 20 21 74 68 69 73 2e 6f 70 74 69 6f 6e 73 2e & !this.options.
05e0: 66 6f 72 6d 61 74 2e 6d 61 74 63 68 28 2f 5e 68 format.match(/^h
05f0: 65 78 28 5b 33 36 5d 29 3f 24 2f 69 29 29 29 0a ex([36])?$/i))).
0600: 20 20 20 20 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a );. }.. /*
0610: 2a 0a 20 20 20 2a 20 43 68 61 6e 67 65 73 20 74 *. * Changes t
0620: 68 65 20 63 6f 6c 6f 72 20 61 64 6a 75 73 74 6d he color adjustm
0630: 65 6e 74 20 62 61 72 73 20 75 73 69 6e 67 20 74 ent bars using t
0640: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6c 6f 72 he current color
0650: 20 6f 62 6a 65 63 74 20 69 6e 66 6f 72 6d 61 74 object informat
0660: 69 6f 6e 2e 0a 20 20 20 2a 2f 0a 20 20 75 70 64 ion.. */. upd
0670: 61 74 65 28 29 20 7b 0a 20 20 20 20 69 66 20 28 ate() {. if (
0680: 21 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65 !this.colorpicke
0690: 72 2e 63 6f 6c 6f 72 48 61 6e 64 6c 65 72 2e 68 r.colorHandler.h
06a0: 61 73 43 6f 6c 6f 72 28 29 29 20 7b 0a 20 20 20 asColor()) {.
06b0: 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 7d return;. }
06c0: 0a 0a 20 20 20 20 6c 65 74 20 76 65 72 74 69 63 .. let vertic
06d0: 61 6c 20 3d 20 28 74 68 69 73 2e 6f 70 74 69 6f al = (this.optio
06e0: 6e 73 2e 68 6f 72 69 7a 6f 6e 74 61 6c 20 21 3d ns.horizontal !=
06f0: 3d 20 74 72 75 65 29 2c 0a 20 20 20 20 20 20 73 = true),. s
0700: 6c 69 64 65 72 20 3d 20 76 65 72 74 69 63 61 6c lider = vertical
0710: 20 3f 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 2e ? this.options.
0720: 73 6c 69 64 65 72 73 20 3a 20 74 68 69 73 2e 6f sliders : this.o
0730: 70 74 69 6f 6e 73 2e 73 6c 69 64 65 72 73 48 6f ptions.slidersHo
0740: 72 7a 3b 0a 0a 20 20 20 20 6c 65 74 20 73 61 74 rz;.. let sat
0750: 75 72 61 74 69 6f 6e 47 75 69 64 65 20 3d 20 74 urationGuide = t
0760: 68 69 73 2e 70 69 63 6b 65 72 2e 66 69 6e 64 28 his.picker.find(
0770: 27 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2d 73 61 '.colorpicker-sa
0780: 74 75 72 61 74 69 6f 6e 20 2e 63 6f 6c 6f 72 70 turation .colorp
0790: 69 63 6b 65 72 2d 67 75 69 64 65 27 29 2c 0a 20 icker-guide'),.
07a0: 20 20 20 20 20 68 75 65 47 75 69 64 65 20 3d 20 hueGuide =
07b0: 74 68 69 73 2e 70 69 63 6b 65 72 2e 66 69 6e 64 this.picker.find
07c0: 28 27 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2d 68 ('.colorpicker-h
07d0: 75 65 20 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2d ue .colorpicker-
07e0: 67 75 69 64 65 27 29 2c 0a 20 20 20 20 20 20 61 guide'),. a
07f0: 6c 70 68 61 47 75 69 64 65 20 3d 20 74 68 69 73 lphaGuide = this
0800: 2e 70 69 63 6b 65 72 2e 66 69 6e 64 28 27 2e 63 .picker.find('.c
0810: 6f 6c 6f 72 70 69 63 6b 65 72 2d 61 6c 70 68 61 olorpicker-alpha
0820: 20 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2d 67 75 .colorpicker-gu
0830: 69 64 65 27 29 3b 0a 0a 20 20 20 20 6c 65 74 20 ide');.. let
0840: 68 73 76 61 20 3d 20 74 68 69 73 2e 63 6f 6c 6f hsva = this.colo
0850: 72 2e 74 6f 48 73 76 61 52 61 74 69 6f 28 29 3b r.toHsvaRatio();
0860: 0a 0a 20 20 20 20 2f 2f 20 53 65 74 20 67 75 69 .. // Set gui
0870: 64 65 73 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 des position.
0880: 20 69 66 20 28 68 75 65 47 75 69 64 65 2e 6c 65 if (hueGuide.le
0890: 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 68 75 ngth) {. hu
08a0: 65 47 75 69 64 65 2e 63 73 73 28 76 65 72 74 69 eGuide.css(verti
08b0: 63 61 6c 20 3f 20 27 74 6f 70 27 20 3a 20 27 6c cal ? 'top' : 'l
08c0: 65 66 74 27 2c 20 28 76 65 72 74 69 63 61 6c 20 eft', (vertical
08d0: 3f 20 73 6c 69 64 65 72 2e 68 75 65 2e 6d 61 78 ? slider.hue.max
08e0: 54 6f 70 20 3a 20 73 6c 69 64 65 72 2e 68 75 65 Top : slider.hue
08f0: 2e 6d 61 78 4c 65 66 74 29 20 2a 20 28 31 20 2d .maxLeft) * (1 -
0900: 20 68 73 76 61 2e 68 29 29 3b 0a 20 20 20 20 7d hsva.h));. }
0910: 0a 20 20 20 20 69 66 20 28 61 6c 70 68 61 47 75 . if (alphaGu
0920: 69 64 65 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 ide.length) {.
0930: 20 20 20 20 61 6c 70 68 61 47 75 69 64 65 2e 63 alphaGuide.c
0940: 73 73 28 76 65 72 74 69 63 61 6c 20 3f 20 27 74 ss(vertical ? 't
0950: 6f 70 27 20 3a 20 27 6c 65 66 74 27 2c 20 28 76 op' : 'left', (v
0960: 65 72 74 69 63 61 6c 20 3f 20 73 6c 69 64 65 72 ertical ? slider
0970: 2e 61 6c 70 68 61 2e 6d 61 78 54 6f 70 20 3a 20 .alpha.maxTop :
0980: 73 6c 69 64 65 72 2e 61 6c 70 68 61 2e 6d 61 78 slider.alpha.max
0990: 4c 65 66 74 29 20 2a 20 28 31 20 2d 20 68 73 76 Left) * (1 - hsv
09a0: 61 2e 61 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 a.a));. }.
09b0: 20 69 66 20 28 73 61 74 75 72 61 74 69 6f 6e 47 if (saturationG
09c0: 75 69 64 65 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 uide.length) {.
09d0: 20 20 20 20 20 73 61 74 75 72 61 74 69 6f 6e 47 saturationG
09e0: 75 69 64 65 2e 63 73 73 28 7b 0a 20 20 20 20 20 uide.css({.
09f0: 20 20 20 27 74 6f 70 27 3a 20 73 6c 69 64 65 72 'top': slider
0a00: 2e 73 61 74 75 72 61 74 69 6f 6e 2e 6d 61 78 54 .saturation.maxT
0a10: 6f 70 20 2d 20 68 73 76 61 2e 76 20 2a 20 73 6c op - hsva.v * sl
0a20: 69 64 65 72 2e 73 61 74 75 72 61 74 69 6f 6e 2e ider.saturation.
0a30: 6d 61 78 54 6f 70 2c 0a 20 20 20 20 20 20 20 20 maxTop,.
0a40: 27 6c 65 66 74 27 3a 20 68 73 76 61 2e 73 20 2a 'left': hsva.s *
0a50: 20 73 6c 69 64 65 72 2e 73 61 74 75 72 61 74 69 slider.saturati
0a60: 6f 6e 2e 6d 61 78 4c 65 66 74 0a 20 20 20 20 20 on.maxLeft.
0a70: 20 7d 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 });. }..
0a80: 2f 2f 20 53 65 74 20 73 61 74 75 72 61 74 69 6f // Set saturatio
0a90: 6e 20 68 75 65 20 62 61 63 6b 67 72 6f 75 6e 64 n hue background
0aa0: 0a 20 20 20 20 74 68 69 73 2e 70 69 63 6b 65 72 . this.picker
0ab0: 2e 66 69 6e 64 28 27 2e 63 6f 6c 6f 72 70 69 63 .find('.colorpic
0ac0: 6b 65 72 2d 73 61 74 75 72 61 74 69 6f 6e 27 29 ker-saturation')
0ad0: 0a 20 20 20 20 20 20 2e 63 73 73 28 27 62 61 63 . .css('bac
0ae0: 6b 67 72 6f 75 6e 64 43 6f 6c 6f 72 27 2c 20 74 kgroundColor', t
0af0: 68 69 73 2e 63 6f 6c 6f 72 2e 67 65 74 43 6c 6f his.color.getClo
0b00: 6e 65 48 75 65 4f 6e 6c 79 28 29 2e 74 6f 48 65 neHueOnly().toHe
0b10: 78 53 74 72 69 6e 67 28 29 29 3b 20 2f 2f 20 77 xString()); // w
0b20: 65 20 6f 6e 6c 79 20 6e 65 65 64 20 68 75 65 0a e only need hue.
0b30: 0a 20 20 20 20 2f 2f 20 53 65 74 20 61 6c 70 68 . // Set alph
0b40: 61 20 63 6f 6c 6f 72 20 67 72 61 64 69 65 6e 74 a color gradient
0b50: 0a 20 20 20 20 6c 65 74 20 68 65 78 43 6f 6c 6f . let hexColo
0b60: 72 20 3d 20 74 68 69 73 2e 63 6f 6c 6f 72 2e 74 r = this.color.t
0b70: 6f 48 65 78 53 74 72 69 6e 67 28 29 3b 0a 20 20 oHexString();.
0b80: 20 20 6c 65 74 20 61 6c 70 68 61 42 67 20 3d 20 let alphaBg =
0b90: 27 27 3b 0a 0a 20 20 20 20 69 66 20 28 74 68 69 '';.. if (thi
0ba0: 73 2e 6f 70 74 69 6f 6e 73 2e 68 6f 72 69 7a 6f s.options.horizo
0bb0: 6e 74 61 6c 29 20 7b 0a 20 20 20 20 20 20 61 6c ntal) {. al
0bc0: 70 68 61 42 67 20 3d 20 60 6c 69 6e 65 61 72 2d phaBg = `linear-
0bd0: 67 72 61 64 69 65 6e 74 28 74 6f 20 72 69 67 68 gradient(to righ
0be0: 74 2c 20 24 7b 68 65 78 43 6f 6c 6f 72 7d 20 30 t, ${hexColor} 0
0bf0: 25 2c 20 74 72 61 6e 73 70 61 72 65 6e 74 20 31 %, transparent 1
0c00: 30 30 25 29 60 3b 0a 20 20 20 20 7d 20 65 6c 73 00%)`;. } els
0c10: 65 20 7b 0a 20 20 20 20 20 20 61 6c 70 68 61 42 e {. alphaB
0c20: 67 20 3d 20 60 6c 69 6e 65 61 72 2d 67 72 61 64 g = `linear-grad
0c30: 69 65 6e 74 28 74 6f 20 62 6f 74 74 6f 6d 2c 20 ient(to bottom,
0c40: 24 7b 68 65 78 43 6f 6c 6f 72 7d 20 30 25 2c 20 ${hexColor} 0%,
0c50: 74 72 61 6e 73 70 61 72 65 6e 74 20 31 30 30 25 transparent 100%
0c60: 29 60 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 )`;. }.. t
0c70: 68 69 73 2e 70 69 63 6b 65 72 2e 66 69 6e 64 28 his.picker.find(
0c80: 27 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2d 61 6c '.colorpicker-al
0c90: 70 68 61 2d 63 6f 6c 6f 72 27 29 2e 63 73 73 28 pha-color').css(
0ca0: 27 62 61 63 6b 67 72 6f 75 6e 64 27 2c 20 61 6c 'background', al
0cb0: 70 68 61 42 67 29 3b 0a 20 20 7d 0a 7d 0a 0a 65 phaBg);. }.}..e
0cc0: 78 70 6f 72 74 20 64 65 66 61 75 6c 74 20 50 69 xport default Pi
0cd0: 63 6b 65 72 48 61 6e 64 6c 65 72 3b 0a ckerHandler;.