⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

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;.