⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact 37c4654141865f5fbd44edb4dc56909636e232a3372085dac39a5a8581dcf867:


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 69 6d 70 6f 72 74 20 43 6f  uery';.import Co
0030: 6c 6f 72 49 74 65 6d 20 66 72 6f 6d 20 27 2e 2f  lorItem from './
0040: 43 6f 6c 6f 72 49 74 65 6d 27 3b 0a 0a 2f 2a 2a  ColorItem';../**
0050: 0a 20 2a 20 48 61 6e 64 6c 65 73 20 65 76 65 72  . * Handles ever
0060: 79 74 68 69 6e 67 20 72 65 6c 61 74 65 64 20 74  ything related t
0070: 6f 20 74 68 65 20 63 6f 6c 6f 72 70 69 63 6b 65  o the colorpicke
0080: 72 20 63 6f 6c 6f 72 0a 20 2a 20 40 69 67 6e 6f  r color. * @igno
0090: 72 65 0a 20 2a 2f 0a 63 6c 61 73 73 20 43 6f 6c  re. */.class Col
00a0: 6f 72 48 61 6e 64 6c 65 72 20 7b 0a 20 20 2f 2a  orHandler {.  /*
00b0: 2a 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 43  *.   * @param {C
00c0: 6f 6c 6f 72 70 69 63 6b 65 72 7d 20 63 6f 6c 6f  olorpicker} colo
00d0: 72 70 69 63 6b 65 72 0a 20 20 20 2a 2f 0a 20 20  rpicker.   */.  
00e0: 63 6f 6e 73 74 72 75 63 74 6f 72 28 63 6f 6c 6f  constructor(colo
00f0: 72 70 69 63 6b 65 72 29 20 7b 0a 20 20 20 20 2f  rpicker) {.    /
0100: 2a 2a 0a 20 20 20 20 20 2a 20 40 74 79 70 65 20  **.     * @type 
0110: 7b 43 6f 6c 6f 72 70 69 63 6b 65 72 7d 0a 20 20  {Colorpicker}.  
0120: 20 20 20 2a 2f 0a 20 20 20 20 74 68 69 73 2e 63     */.    this.c
0130: 6f 6c 6f 72 70 69 63 6b 65 72 20 3d 20 63 6f 6c  olorpicker = col
0140: 6f 72 70 69 63 6b 65 72 3b 0a 20 20 7d 0a 0a 20  orpicker;.  }.. 
0150: 20 2f 2a 2a 0a 20 20 20 2a 20 40 72 65 74 75 72   /**.   * @retur
0160: 6e 73 20 7b 2a 7c 53 74 72 69 6e 67 7c 43 6f 6c  ns {*|String|Col
0170: 6f 72 49 74 65 6d 7d 0a 20 20 20 2a 2f 0a 20 20  orItem}.   */.  
0180: 67 65 74 20 66 61 6c 6c 62 61 63 6b 28 29 20 7b  get fallback() {
0190: 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73  .    return this
01a0: 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 6f 70 74  .colorpicker.opt
01b0: 69 6f 6e 73 2e 66 61 6c 6c 62 61 63 6b 43 6f 6c  ions.fallbackCol
01c0: 6f 72 20 3f 0a 20 20 20 20 20 20 74 68 69 73 2e  or ?.      this.
01d0: 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 6f 70 74 69  colorpicker.opti
01e0: 6f 6e 73 2e 66 61 6c 6c 62 61 63 6b 43 6f 6c 6f  ons.fallbackColo
01f0: 72 20 3a 20 28 74 68 69 73 2e 68 61 73 43 6f 6c  r : (this.hasCol
0200: 6f 72 28 29 20 3f 20 74 68 69 73 2e 63 6f 6c 6f  or() ? this.colo
0210: 72 20 3a 20 6e 75 6c 6c 29 3b 0a 20 20 7d 0a 0a  r : null);.  }..
0220: 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 72 65 74 75    /**.   * @retu
0230: 72 6e 73 20 7b 53 74 72 69 6e 67 7c 6e 75 6c 6c  rns {String|null
0240: 7d 0a 20 20 20 2a 2f 0a 20 20 67 65 74 20 66 6f  }.   */.  get fo
0250: 72 6d 61 74 28 29 20 7b 0a 20 20 20 20 69 66 20  rmat() {.    if 
0260: 28 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65  (this.colorpicke
0270: 72 2e 6f 70 74 69 6f 6e 73 2e 66 6f 72 6d 61 74  r.options.format
0280: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ) {.      return
0290: 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65   this.colorpicke
02a0: 72 2e 6f 70 74 69 6f 6e 73 2e 66 6f 72 6d 61 74  r.options.format
02b0: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20  ;.    }..    if 
02c0: 28 74 68 69 73 2e 68 61 73 43 6f 6c 6f 72 28 29  (this.hasColor()
02d0: 20 26 26 20 74 68 69 73 2e 63 6f 6c 6f 72 2e 68   && this.color.h
02e0: 61 73 54 72 61 6e 73 70 61 72 65 6e 63 79 28 29  asTransparency()
02f0: 20 26 26 20 74 68 69 73 2e 63 6f 6c 6f 72 2e 66   && this.color.f
0300: 6f 72 6d 61 74 2e 6d 61 74 63 68 28 2f 5e 68 65  ormat.match(/^he
0310: 78 2f 29 29 20 7b 0a 20 20 20 20 20 20 72 65 74  x/)) {.      ret
0320: 75 72 6e 20 74 68 69 73 2e 69 73 41 6c 70 68 61  urn this.isAlpha
0330: 45 6e 61 62 6c 65 64 28 29 20 3f 20 27 72 67 62  Enabled() ? 'rgb
0340: 61 27 20 3a 20 27 68 65 78 27 3b 0a 20 20 20 20  a' : 'hex';.    
0350: 7d 0a 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e  }..    if (this.
0360: 68 61 73 43 6f 6c 6f 72 28 29 29 20 7b 0a 20 20  hasColor()) {.  
0370: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
0380: 63 6f 6c 6f 72 2e 66 6f 72 6d 61 74 3b 0a 20 20  color.format;.  
0390: 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20    }..    return 
03a0: 27 72 67 62 27 3b 0a 20 20 7d 0a 0a 20 20 2f 2a  'rgb';.  }..  /*
03b0: 2a 0a 20 20 20 2a 20 49 6e 74 65 72 6e 61 6c 20  *.   * Internal 
03c0: 63 6f 6c 6f 72 20 67 65 74 74 65 72 0a 20 20 20  color getter.   
03d0: 2a 0a 20 20 20 2a 20 40 74 79 70 65 20 7b 43 6f  *.   * @type {Co
03e0: 6c 6f 72 49 74 65 6d 7c 6e 75 6c 6c 7d 0a 20 20  lorItem|null}.  
03f0: 20 2a 2f 0a 20 20 67 65 74 20 63 6f 6c 6f 72 28   */.  get color(
0400: 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74  ) {.    return t
0410: 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e  his.colorpicker.
0420: 65 6c 65 6d 65 6e 74 2e 64 61 74 61 28 27 63 6f  element.data('co
0430: 6c 6f 72 27 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a  lor');.  }..  /*
0440: 2a 0a 20 20 20 2a 20 49 6e 74 65 72 6e 61 6c 20  *.   * Internal 
0450: 63 6f 6c 6f 72 20 73 65 74 74 65 72 0a 20 20 20  color setter.   
0460: 2a 0a 20 20 20 2a 20 40 69 67 6e 6f 72 65 0a 20  *.   * @ignore. 
0470: 20 20 2a 20 40 70 61 72 61 6d 20 7b 43 6f 6c 6f    * @param {Colo
0480: 72 49 74 65 6d 7c 6e 75 6c 6c 7d 20 76 61 6c 75  rItem|null} valu
0490: 65 0a 20 20 20 2a 2f 0a 20 20 73 65 74 20 63 6f  e.   */.  set co
04a0: 6c 6f 72 28 76 61 6c 75 65 29 20 7b 0a 20 20 20  lor(value) {.   
04b0: 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65   this.colorpicke
04c0: 72 2e 65 6c 65 6d 65 6e 74 2e 64 61 74 61 28 27  r.element.data('
04d0: 63 6f 6c 6f 72 27 2c 20 76 61 6c 75 65 29 3b 0a  color', value);.
04e0: 0a 20 20 20 20 69 66 20 28 28 76 61 6c 75 65 20  .    if ((value 
04f0: 69 6e 73 74 61 6e 63 65 6f 66 20 43 6f 6c 6f 72  instanceof Color
0500: 49 74 65 6d 29 20 26 26 20 28 74 68 69 73 2e 63  Item) && (this.c
0510: 6f 6c 6f 72 70 69 63 6b 65 72 2e 6f 70 74 69 6f  olorpicker.optio
0520: 6e 73 2e 66 6f 72 6d 61 74 20 3d 3d 3d 20 27 61  ns.format === 'a
0530: 75 74 6f 27 29 29 20 7b 0a 20 20 20 20 20 20 2f  uto')) {.      /
0540: 2f 20 49 66 20 66 6f 72 6d 61 74 20 69 73 20 27  / If format is '
0550: 61 75 74 6f 27 2c 20 75 73 65 20 74 68 65 20 66  auto', use the f
0560: 69 72 73 74 20 70 61 72 73 65 64 20 6f 6e 65 20  irst parsed one 
0570: 66 72 6f 6d 20 6e 6f 77 20 6f 6e 0a 20 20 20 20  from now on.    
0580: 20 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b    this.colorpick
0590: 65 72 2e 6f 70 74 69 6f 6e 73 2e 66 6f 72 6d 61  er.options.forma
05a0: 74 20 3d 20 74 68 69 73 2e 63 6f 6c 6f 72 2e 66  t = this.color.f
05b0: 6f 72 6d 61 74 3b 0a 20 20 20 20 7d 0a 20 20 7d  ormat;.    }.  }
05c0: 0a 0a 20 20 62 69 6e 64 28 29 20 7b 0a 20 20 20  ..  bind() {.   
05d0: 20 2f 2f 20 69 66 20 74 68 65 20 63 6f 6c 6f 72   // if the color
05e0: 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 0a 20   option is set. 
05f0: 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6c 6f     if (this.colo
0600: 72 70 69 63 6b 65 72 2e 6f 70 74 69 6f 6e 73 2e  rpicker.options.
0610: 63 6f 6c 6f 72 29 20 7b 0a 20 20 20 20 20 20 74  color) {.      t
0620: 68 69 73 2e 63 6f 6c 6f 72 20 3d 20 74 68 69 73  his.color = this
0630: 2e 63 72 65 61 74 65 43 6f 6c 6f 72 28 74 68 69  .createColor(thi
0640: 73 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 6f 70  s.colorpicker.op
0650: 74 69 6f 6e 73 2e 63 6f 6c 6f 72 29 3b 0a 20 20  tions.color);.  
0660: 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20      return;.    
0670: 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 20 65 6c 65  }..    // if ele
0680: 6d 65 6e 74 5b 63 6f 6c 6f 72 5d 20 69 73 20 65  ment[color] is e
0690: 6d 70 74 79 20 61 6e 64 20 74 68 65 20 69 6e 70  mpty and the inp
06a0: 75 74 20 68 61 73 20 61 20 76 61 6c 75 65 0a 20  ut has a value. 
06b0: 20 20 20 69 66 20 28 21 74 68 69 73 2e 63 6f 6c     if (!this.col
06c0: 6f 72 20 26 26 20 21 21 74 68 69 73 2e 63 6f 6c  or && !!this.col
06d0: 6f 72 70 69 63 6b 65 72 2e 69 6e 70 75 74 48 61  orpicker.inputHa
06e0: 6e 64 6c 65 72 2e 67 65 74 56 61 6c 75 65 28 29  ndler.getValue()
06f0: 29 20 7b 0a 20 20 20 20 20 20 74 68 69 73 2e 63  ) {.      this.c
0700: 6f 6c 6f 72 20 3d 20 74 68 69 73 2e 63 72 65 61  olor = this.crea
0710: 74 65 43 6f 6c 6f 72 28 0a 20 20 20 20 20 20 20  teColor(.       
0720: 20 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b 65   this.colorpicke
0730: 72 2e 69 6e 70 75 74 48 61 6e 64 6c 65 72 2e 67  r.inputHandler.g
0740: 65 74 56 61 6c 75 65 28 29 2c 20 74 68 69 73 2e  etValue(), this.
0750: 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 6f 70 74 69  colorpicker.opti
0760: 6f 6e 73 2e 61 75 74 6f 49 6e 70 75 74 46 61 6c  ons.autoInputFal
0770: 6c 62 61 63 6b 0a 20 20 20 20 20 20 29 3b 0a 20  lback.      );. 
0780: 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 75 6e 62 69     }.  }..  unbi
0790: 6e 64 28 29 20 7b 0a 20 20 20 20 74 68 69 73 2e  nd() {.    this.
07a0: 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 65 6c 65 6d  colorpicker.elem
07b0: 65 6e 74 2e 72 65 6d 6f 76 65 44 61 74 61 28 27  ent.removeData('
07c0: 63 6f 6c 6f 72 27 29 3b 0a 20 20 7d 0a 0a 20 20  color');.  }..  
07d0: 2f 2a 2a 0a 20 20 20 2a 20 52 65 74 75 72 6e 73  /**.   * Returns
07e0: 20 74 68 65 20 63 6f 6c 6f 72 20 73 74 72 69 6e   the color strin
07f0: 67 20 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74  g from the input
0800: 20 76 61 6c 75 65 20 6f 72 20 74 68 65 20 27 64   value or the 'd
0810: 61 74 61 2d 63 6f 6c 6f 72 27 20 61 74 74 72 69  ata-color' attri
0820: 62 75 74 65 20 6f 66 20 74 68 65 20 69 6e 70 75  bute of the inpu
0830: 74 20 6f 72 20 65 6c 65 6d 65 6e 74 2e 0a 20 20  t or element..  
0840: 20 2a 20 49 66 20 65 6d 70 74 79 2c 20 69 74 20   * If empty, it 
0850: 72 65 74 75 72 6e 73 20 74 68 65 20 64 65 66 61  returns the defa
0860: 75 6c 74 56 61 6c 75 65 20 70 61 72 61 6d 65 74  ultValue paramet
0870: 65 72 2e 0a 20 20 20 2a 0a 20 20 20 2a 20 40 72  er..   *.   * @r
0880: 65 74 75 72 6e 73 20 7b 53 74 72 69 6e 67 7c 2a  eturns {String|*
0890: 7d 0a 20 20 20 2a 2f 0a 20 20 67 65 74 43 6f 6c  }.   */.  getCol
08a0: 6f 72 53 74 72 69 6e 67 28 29 20 7b 0a 20 20 20  orString() {.   
08b0: 20 69 66 20 28 21 74 68 69 73 2e 68 61 73 43 6f   if (!this.hasCo
08c0: 6c 6f 72 28 29 29 20 7b 0a 20 20 20 20 20 20 72  lor()) {.      r
08d0: 65 74 75 72 6e 20 27 27 3b 0a 20 20 20 20 7d 0a  eturn '';.    }.
08e0: 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73  .    return this
08f0: 2e 63 6f 6c 6f 72 2e 73 74 72 69 6e 67 28 74 68  .color.string(th
0900: 69 73 2e 66 6f 72 6d 61 74 29 3b 0a 20 20 7d 0a  is.format);.  }.
0910: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 53 65 74 73  .  /**.   * Sets
0920: 20 74 68 65 20 63 6f 6c 6f 72 20 76 61 6c 75 65   the color value
0930: 0a 20 20 20 2a 0a 20 20 20 2a 20 40 70 61 72 61  .   *.   * @para
0940: 6d 20 7b 53 74 72 69 6e 67 7c 43 6f 6c 6f 72 49  m {String|ColorI
0950: 74 65 6d 7d 20 76 61 6c 0a 20 20 20 2a 2f 0a 20  tem} val.   */. 
0960: 20 73 65 74 43 6f 6c 6f 72 53 74 72 69 6e 67 28   setColorString(
0970: 76 61 6c 29 20 7b 0a 20 20 20 20 6c 65 74 20 63  val) {.    let c
0980: 6f 6c 6f 72 20 3d 20 76 61 6c 20 3f 20 74 68 69  olor = val ? thi
0990: 73 2e 63 72 65 61 74 65 43 6f 6c 6f 72 28 76 61  s.createColor(va
09a0: 6c 29 20 3a 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20  l) : null;..    
09b0: 74 68 69 73 2e 63 6f 6c 6f 72 20 3d 20 63 6f 6c  this.color = col
09c0: 6f 72 20 3f 20 63 6f 6c 6f 72 20 3a 20 6e 75 6c  or ? color : nul
09d0: 6c 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20  l;.  }..  /**.  
09e0: 20 2a 20 43 72 65 61 74 65 73 20 61 20 6e 65 77   * Creates a new
09f0: 20 63 6f 6c 6f 72 20 75 73 69 6e 67 20 74 68 65   color using the
0a00: 20 77 69 64 67 65 74 20 69 6e 73 74 61 6e 63 65   widget instance
0a10: 20 6f 70 74 69 6f 6e 73 20 28 66 61 6c 6c 62 61   options (fallba
0a20: 63 6b 43 6f 6c 6f 72 2c 20 66 6f 72 6d 61 74 29  ckColor, format)
0a30: 2e 0a 20 20 20 2a 0a 20 20 20 2a 20 40 66 69 72  ..   *.   * @fir
0a40: 65 73 20 43 6f 6c 6f 72 70 69 63 6b 65 72 23 63  es Colorpicker#c
0a50: 6f 6c 6f 72 70 69 63 6b 65 72 49 6e 76 61 6c 69  olorpickerInvali
0a60: 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 2a  d.   * @param {*
0a70: 7d 20 76 61 6c 0a 20 20 20 2a 20 40 70 61 72 61  } val.   * @para
0a80: 6d 20 7b 62 6f 6f 6c 65 61 6e 7d 20 66 61 6c 6c  m {boolean} fall
0a90: 62 61 63 6b 4f 6e 49 6e 76 61 6c 69 64 0a 20 20  backOnInvalid.  
0aa0: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 43 6f 6c   * @returns {Col
0ab0: 6f 72 49 74 65 6d 7d 0a 20 20 20 2a 2f 0a 20 20  orItem}.   */.  
0ac0: 63 72 65 61 74 65 43 6f 6c 6f 72 28 76 61 6c 2c  createColor(val,
0ad0: 20 66 61 6c 6c 62 61 63 6b 4f 6e 49 6e 76 61 6c   fallbackOnInval
0ae0: 69 64 20 3d 20 74 72 75 65 29 20 7b 0a 20 20 20  id = true) {.   
0af0: 20 6c 65 74 20 63 6f 6c 6f 72 20 3d 20 6e 65 77   let color = new
0b00: 20 43 6f 6c 6f 72 49 74 65 6d 28 74 68 69 73 2e   ColorItem(this.
0b10: 72 65 73 6f 6c 76 65 43 6f 6c 6f 72 44 65 6c 65  resolveColorDele
0b20: 67 61 74 65 28 76 61 6c 29 2c 20 74 68 69 73 2e  gate(val), this.
0b30: 66 6f 72 6d 61 74 29 3b 0a 0a 20 20 20 20 69 66  format);..    if
0b40: 20 28 21 63 6f 6c 6f 72 2e 69 73 56 61 6c 69 64   (!color.isValid
0b50: 28 29 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28  ()) {.      if (
0b60: 66 61 6c 6c 62 61 63 6b 4f 6e 49 6e 76 61 6c 69  fallbackOnInvali
0b70: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6c  d) {.        col
0b80: 6f 72 20 3d 20 74 68 69 73 2e 67 65 74 46 61 6c  or = this.getFal
0b90: 6c 62 61 63 6b 43 6f 6c 6f 72 28 29 3b 0a 20 20  lbackColor();.  
0ba0: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2a 2a      }..      /**
0bb0: 0a 20 20 20 20 20 20 20 2a 20 28 43 6f 6c 6f 72  .       * (Color
0bc0: 70 69 63 6b 65 72 29 20 46 69 72 65 64 20 77 68  picker) Fired wh
0bd0: 65 6e 20 74 68 65 20 63 6f 6c 6f 72 20 69 73 20  en the color is 
0be0: 69 6e 76 61 6c 69 64 20 61 6e 64 20 74 68 65 20  invalid and the 
0bf0: 66 61 6c 6c 62 61 63 6b 20 63 6f 6c 6f 72 20 69  fallback color i
0c00: 73 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 75 73  s going to be us
0c10: 65 64 2e 0a 20 20 20 20 20 20 20 2a 0a 20 20 20  ed..       *.   
0c20: 20 20 20 20 2a 20 40 65 76 65 6e 74 20 43 6f 6c      * @event Col
0c30: 6f 72 70 69 63 6b 65 72 23 63 6f 6c 6f 72 70 69  orpicker#colorpi
0c40: 63 6b 65 72 49 6e 76 61 6c 69 64 0a 20 20 20 20  ckerInvalid.    
0c50: 20 20 20 2a 2f 0a 20 20 20 20 20 20 74 68 69 73     */.      this
0c60: 2e 63 6f 6c 6f 72 70 69 63 6b 65 72 2e 74 72 69  .colorpicker.tri
0c70: 67 67 65 72 28 27 63 6f 6c 6f 72 70 69 63 6b 65  gger('colorpicke
0c80: 72 49 6e 76 61 6c 69 64 27 2c 20 63 6f 6c 6f 72  rInvalid', color
0c90: 2c 20 76 61 6c 29 3b 0a 20 20 20 20 7d 0a 0a 20  , val);.    }.. 
0ca0: 20 20 20 69 66 20 28 21 74 68 69 73 2e 69 73 41     if (!this.isA
0cb0: 6c 70 68 61 45 6e 61 62 6c 65 64 28 29 29 20 7b  lphaEnabled()) {
0cc0: 0a 20 20 20 20 20 20 2f 2f 20 41 6c 70 68 61 20  .      // Alpha 
0cd0: 69 73 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20  is disabled.    
0ce0: 20 20 63 6f 6c 6f 72 2e 61 6c 70 68 61 20 3d 20    color.alpha = 
0cf0: 31 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65  1;.    }..    re
0d00: 74 75 72 6e 20 63 6f 6c 6f 72 3b 0a 20 20 7d 0a  turn color;.  }.
0d10: 0a 20 20 67 65 74 46 61 6c 6c 62 61 63 6b 43 6f  .  getFallbackCo
0d20: 6c 6f 72 28 29 20 7b 0a 20 20 20 20 69 66 20 28  lor() {.    if (
0d30: 74 68 69 73 2e 66 61 6c 6c 62 61 63 6b 20 26 26  this.fallback &&
0d40: 20 28 74 68 69 73 2e 66 61 6c 6c 62 61 63 6b 20   (this.fallback 
0d50: 3d 3d 3d 20 74 68 69 73 2e 63 6f 6c 6f 72 29 29  === this.color))
0d60: 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20   {.      return 
0d70: 74 68 69 73 2e 63 6f 6c 6f 72 3b 0a 20 20 20 20  this.color;.    
0d80: 7d 0a 0a 20 20 20 20 6c 65 74 20 66 61 6c 6c 62  }..    let fallb
0d90: 61 63 6b 20 3d 20 74 68 69 73 2e 72 65 73 6f 6c  ack = this.resol
0da0: 76 65 43 6f 6c 6f 72 44 65 6c 65 67 61 74 65 28  veColorDelegate(
0db0: 74 68 69 73 2e 66 61 6c 6c 62 61 63 6b 29 3b 0a  this.fallback);.
0dc0: 20 20 20 20 6c 65 74 20 63 6f 6c 6f 72 20 3d 20      let color = 
0dd0: 6e 65 77 20 43 6f 6c 6f 72 49 74 65 6d 28 66 61  new ColorItem(fa
0de0: 6c 6c 62 61 63 6b 2c 20 74 68 69 73 2e 66 6f 72  llback, this.for
0df0: 6d 61 74 29 3b 0a 0a 20 20 20 20 69 66 20 28 21  mat);..    if (!
0e00: 63 6f 6c 6f 72 2e 69 73 56 61 6c 69 64 28 29 29  color.isValid())
0e10: 20 7b 0a 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65   {.      console
0e20: 2e 77 61 72 6e 28 27 54 68 65 20 66 61 6c 6c 62  .warn('The fallb
0e30: 61 63 6b 20 63 6f 6c 6f 72 20 69 73 20 69 6e 76  ack color is inv
0e40: 61 6c 69 64 2e 20 46 61 6c 6c 69 6e 67 20 62 61  alid. Falling ba
0e50: 63 6b 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f  ck to the previo
0e60: 75 73 20 63 6f 6c 6f 72 20 6f 72 20 62 6c 61 63  us color or blac
0e70: 6b 20 69 66 20 61 6e 79 2e 27 29 3b 0a 20 20 20  k if any.');.   
0e80: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 63     return this.c
0e90: 6f 6c 6f 72 20 3f 20 74 68 69 73 2e 63 6f 6c 6f  olor ? this.colo
0ea0: 72 20 3a 20 6e 65 77 20 43 6f 6c 6f 72 49 74 65  r : new ColorIte
0eb0: 6d 28 27 23 30 30 30 30 30 30 27 2c 20 74 68 69  m('#000000', thi
0ec0: 73 2e 66 6f 72 6d 61 74 29 3b 0a 20 20 20 20 7d  s.format);.    }
0ed0: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6c  ..    return col
0ee0: 6f 72 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20  or;.  }..  /**. 
0ef0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 43 6f    * @returns {Co
0f00: 6c 6f 72 49 74 65 6d 7d 0a 20 20 20 2a 2f 0a 20  lorItem}.   */. 
0f10: 20 61 73 73 75 72 65 43 6f 6c 6f 72 28 29 20 7b   assureColor() {
0f20: 0a 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 68  .    if (!this.h
0f30: 61 73 43 6f 6c 6f 72 28 29 29 20 7b 0a 20 20 20  asColor()) {.   
0f40: 20 20 20 74 68 69 73 2e 63 6f 6c 6f 72 20 3d 20     this.color = 
0f50: 74 68 69 73 2e 67 65 74 46 61 6c 6c 62 61 63 6b  this.getFallback
0f60: 43 6f 6c 6f 72 28 29 3b 0a 20 20 20 20 7d 0a 0a  Color();.    }..
0f70: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
0f80: 63 6f 6c 6f 72 3b 0a 20 20 7d 0a 0a 20 20 2f 2a  color;.  }..  /*
0f90: 2a 0a 20 20 20 2a 20 44 65 6c 65 67 61 74 65 73  *.   * Delegates
0fa0: 20 74 68 65 20 63 6f 6c 6f 72 20 72 65 73 6f 6c   the color resol
0fb0: 75 74 69 6f 6e 20 74 6f 20 74 68 65 20 63 6f 6c  ution to the col
0fc0: 6f 72 70 69 63 6b 65 72 20 65 78 74 65 6e 73 69  orpicker extensi
0fd0: 6f 6e 73 2e 0a 20 20 20 2a 0a 20 20 20 2a 20 40  ons..   *.   * @
0fe0: 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 7c 2a 7d  param {String|*}
0ff0: 20 63 6f 6c 6f 72 0a 20 20 20 2a 20 40 70 61 72   color.   * @par
1000: 61 6d 20 7b 62 6f 6f 6c 65 61 6e 7d 20 72 65 61  am {boolean} rea
1010: 6c 43 6f 6c 6f 72 20 69 66 20 74 72 75 65 2c 20  lColor if true, 
1020: 74 68 65 20 63 6f 6c 6f 72 20 73 68 6f 75 6c 64  the color should
1030: 20 72 65 73 6f 6c 76 65 20 69 6e 74 6f 20 61 20   resolve into a 
1040: 72 65 61 6c 20 28 6e 6f 74 20 6e 61 6d 65 64 29  real (not named)
1050: 20 63 6f 6c 6f 72 20 63 6f 64 65 0a 20 20 20 2a   color code.   *
1060: 20 40 72 65 74 75 72 6e 73 20 7b 43 6f 6c 6f 72   @returns {Color
1070: 49 74 65 6d 7c 53 74 72 69 6e 67 7c 2a 7c 6e 75  Item|String|*|nu
1080: 6c 6c 7d 0a 20 20 20 2a 2f 0a 20 20 72 65 73 6f  ll}.   */.  reso
1090: 6c 76 65 43 6f 6c 6f 72 44 65 6c 65 67 61 74 65  lveColorDelegate
10a0: 28 63 6f 6c 6f 72 2c 20 72 65 61 6c 43 6f 6c 6f  (color, realColo
10b0: 72 20 3d 20 74 72 75 65 29 20 7b 0a 20 20 20 20  r = true) {.    
10c0: 6c 65 74 20 65 78 74 52 65 73 6f 6c 76 65 64 43  let extResolvedC
10d0: 6f 6c 6f 72 20 3d 20 66 61 6c 73 65 3b 0a 0a 20  olor = false;.. 
10e0: 20 20 20 24 2e 65 61 63 68 28 74 68 69 73 2e 63     $.each(this.c
10f0: 6f 6c 6f 72 70 69 63 6b 65 72 2e 65 78 74 65 6e  olorpicker.exten
1100: 73 69 6f 6e 73 2c 20 66 75 6e 63 74 69 6f 6e 20  sions, function 
1110: 28 6e 61 6d 65 2c 20 65 78 74 29 20 7b 0a 20 20  (name, ext) {.  
1120: 20 20 20 20 69 66 20 28 65 78 74 52 65 73 6f 6c      if (extResol
1130: 76 65 64 43 6f 6c 6f 72 20 21 3d 3d 20 66 61 6c  vedColor !== fal
1140: 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f  se) {.        //
1150: 20 73 6b 69 70 20 69 66 20 72 65 73 6f 6c 76 65   skip if resolve
1160: 64 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  d.        return
1170: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
1180: 65 78 74 52 65 73 6f 6c 76 65 64 43 6f 6c 6f 72  extResolvedColor
1190: 20 3d 20 65 78 74 2e 72 65 73 6f 6c 76 65 43 6f   = ext.resolveCo
11a0: 6c 6f 72 28 63 6f 6c 6f 72 2c 20 72 65 61 6c 43  lor(color, realC
11b0: 6f 6c 6f 72 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a  olor);.    });..
11c0: 20 20 20 20 72 65 74 75 72 6e 20 65 78 74 52 65      return extRe
11d0: 73 6f 6c 76 65 64 43 6f 6c 6f 72 20 3f 20 65 78  solvedColor ? ex
11e0: 74 52 65 73 6f 6c 76 65 64 43 6f 6c 6f 72 20 3a  tResolvedColor :
11f0: 20 63 6f 6c 6f 72 3b 0a 20 20 7d 0a 0a 20 20 2f   color;.  }..  /
1200: 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 73 20 69  **.   * Checks i
1210: 66 20 74 68 65 72 65 20 69 73 20 61 20 63 6f 6c  f there is a col
1220: 6f 72 20 6f 62 6a 65 63 74 2c 20 74 68 61 74 20  or object, that 
1230: 69 74 20 69 73 20 76 61 6c 69 64 20 61 6e 64 20  it is valid and 
1240: 69 74 20 69 73 20 6e 6f 74 20 61 20 66 61 6c 6c  it is not a fall
1250: 62 61 63 6b 0a 20 20 20 2a 20 40 72 65 74 75 72  back.   * @retur
1260: 6e 73 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 20 20 20  ns {boolean}.   
1270: 2a 2f 0a 20 20 69 73 49 6e 76 61 6c 69 64 43 6f  */.  isInvalidCo
1280: 6c 6f 72 28 29 20 7b 0a 20 20 20 20 72 65 74 75  lor() {.    retu
1290: 72 6e 20 21 74 68 69 73 2e 68 61 73 43 6f 6c 6f  rn !this.hasColo
12a0: 72 28 29 20 7c 7c 20 21 74 68 69 73 2e 63 6f 6c  r() || !this.col
12b0: 6f 72 2e 69 73 56 61 6c 69 64 28 29 3b 0a 20 20  or.isValid();.  
12c0: 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 52 65  }..  /**.   * Re
12d0: 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 68  turns true if th
12e0: 65 20 75 73 65 41 6c 70 68 61 20 6f 70 74 69 6f  e useAlpha optio
12f0: 6e 20 69 73 20 65 78 61 63 74 6c 79 20 74 72 75  n is exactly tru
1300: 65 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69  e, false otherwi
1310: 73 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  se.   * @returns
1320: 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 20 20 20 2a 2f   {boolean}.   */
1330: 0a 20 20 69 73 41 6c 70 68 61 45 6e 61 62 6c 65  .  isAlphaEnable
1340: 64 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  d() {.    return
1350: 20 28 74 68 69 73 2e 63 6f 6c 6f 72 70 69 63 6b   (this.colorpick
1360: 65 72 2e 6f 70 74 69 6f 6e 73 2e 75 73 65 41 6c  er.options.useAl
1370: 70 68 61 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a  pha !== false);.
1380: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20    }..  /**.   * 
1390: 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20  Returns true if 
13a0: 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6c 6f  the current colo
13b0: 72 20 6f 62 6a 65 63 74 20 69 73 20 61 6e 20 69  r object is an i
13c0: 6e 73 74 61 6e 63 65 20 6f 66 20 43 6f 6c 6f 72  nstance of Color
13d0: 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73  , false otherwis
13e0: 65 2e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73  e..   * @returns
13f0: 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 20 20 20 2a 2f   {boolean}.   */
1400: 0a 20 20 68 61 73 43 6f 6c 6f 72 28 29 20 7b 0a  .  hasColor() {.
1410: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
1420: 63 6f 6c 6f 72 20 69 6e 73 74 61 6e 63 65 6f 66  color instanceof
1430: 20 43 6f 6c 6f 72 49 74 65 6d 3b 0a 20 20 7d 0a   ColorItem;.  }.
1440: 7d 0a 0a 65 78 70 6f 72 74 20 64 65 66 61 75 6c  }..export defaul
1450: 74 20 43 6f 6c 6f 72 48 61 6e 64 6c 65 72 3b 0a  t ColorHandler;.