⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact 59eecb0f781e94cd7eb8867c5e500b40caf777ca3f61ee36876cd18489aa8d9a:


0000: 69 6d 70 6f 72 74 20 75 70 64 61 74 65 20 66 72  import update fr
0010: 6f 6d 20 27 2e 2e 2f 75 70 64 61 74 65 27 0a 69  om '../update'.i
0020: 6d 70 6f 72 74 20 65 78 74 65 6e 64 20 66 72 6f  mport extend fro
0030: 6d 20 27 2e 2f 2e 2e 2f 2e 2e 2f 63 6f 6d 6d 6f  m './../../commo
0040: 6e 2f 75 74 69 6c 2f 6d 69 73 63 2f 65 78 74 65  n/util/misc/exte
0050: 6e 64 27 0a 69 6d 70 6f 72 74 20 69 73 46 75 6e  nd'.import isFun
0060: 63 74 69 6f 6e 20 66 72 6f 6d 20 27 2e 2f 2e 2e  ction from './..
0070: 2f 2e 2e 2f 63 6f 6d 6d 6f 6e 2f 75 74 69 6c 2f  /../common/util/
0080: 63 68 65 63 6b 73 2f 69 73 2d 66 75 6e 63 74 69  checks/is-functi
0090: 6f 6e 27 0a 69 6d 70 6f 72 74 20 75 70 64 61 74  on'.import updat
00a0: 65 4f 70 74 73 20 66 72 6f 6d 20 27 2e 2f 2e 2e  eOpts from './..
00b0: 2f 2e 2e 2f 63 6f 6d 6d 6f 6e 2f 75 74 69 6c 2f  /../common/util/
00c0: 74 61 67 73 2f 75 70 64 61 74 65 2d 6f 70 74 69  tags/update-opti
00d0: 6f 6e 73 27 0a 0a 2f 2a 2a 0a 20 2a 20 55 70 64  ons'../**. * Upd
00e0: 61 74 65 20 74 68 65 20 74 61 67 20 65 78 70 72  ate the tag expr
00f0: 65 73 73 69 6f 6e 73 20 61 6e 64 20 6f 70 74 69  essions and opti
0100: 6f 6e 73 0a 20 2a 20 40 70 61 72 61 6d 20 7b 20  ons. * @param { 
0110: 54 61 67 20 7d 20 74 61 67 20 2d 20 74 61 67 20  Tag } tag - tag 
0120: 6f 62 6a 65 63 74 0a 20 2a 20 40 70 61 72 61 6d  object. * @param
0130: 20 7b 20 2a 20 7d 20 64 61 74 61 20 2d 20 64 61   { * } data - da
0140: 74 61 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  ta we want to us
0150: 65 20 74 6f 20 65 78 74 65 6e 64 20 74 68 65 20  e to extend the 
0160: 74 61 67 20 70 72 6f 70 65 72 74 69 65 73 0a 20  tag properties. 
0170: 2a 20 40 70 61 72 61 6d 20 7b 20 41 72 72 61 79  * @param { Array
0180: 20 7d 20 65 78 70 72 65 73 73 69 6f 6e 73 20 2d   } expressions -
0190: 20 63 6f 6d 70 6f 6e 65 6e 74 20 65 78 70 72 65   component expre
01a0: 73 73 69 6f 6e 73 20 61 72 72 61 79 0a 20 2a 20  ssions array. * 
01b0: 40 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d  @returns { Tag }
01c0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 61 67   the current tag
01d0: 20 69 6e 73 74 61 6e 63 65 0a 20 2a 2f 0a 65 78   instance. */.ex
01e0: 70 6f 72 74 20 64 65 66 61 75 6c 74 20 66 75 6e  port default fun
01f0: 63 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 55  ction componentU
0200: 70 64 61 74 65 28 74 61 67 2c 20 64 61 74 61 2c  pdate(tag, data,
0210: 20 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b 0a   expressions) {.
0220: 20 20 63 6f 6e 73 74 20 5f 5f 20 3d 20 74 61 67    const __ = tag
0230: 2e 5f 5f 0a 20 20 63 6f 6e 73 74 20 6e 65 78 74  .__.  const next
0240: 4f 70 74 73 20 3d 20 7b 7d 0a 20 20 63 6f 6e 73  Opts = {}.  cons
0250: 74 20 63 61 6e 54 72 69 67 67 65 72 20 3d 20 74  t canTrigger = t
0260: 61 67 2e 69 73 4d 6f 75 6e 74 65 64 20 26 26 20  ag.isMounted && 
0270: 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75  !__.skipAnonymou
0280: 73 0a 0a 20 20 2f 2f 20 69 6e 68 65 72 69 74 20  s..  // inherit 
0290: 70 72 6f 70 65 72 74 69 65 73 20 66 72 6f 6d 20  properties from 
02a0: 74 68 65 20 70 61 72 65 6e 74 20 74 61 67 0a 20  the parent tag. 
02b0: 20 69 66 20 28 5f 5f 2e 69 73 41 6e 6f 6e 79 6d   if (__.isAnonym
02c0: 6f 75 73 20 26 26 20 5f 5f 2e 70 61 72 65 6e 74  ous && __.parent
02d0: 29 20 65 78 74 65 6e 64 28 74 61 67 2c 20 5f 5f  ) extend(tag, __
02e0: 2e 70 61 72 65 6e 74 29 0a 20 20 65 78 74 65 6e  .parent).  exten
02f0: 64 28 74 61 67 2c 20 64 61 74 61 29 0a 0a 20 20  d(tag, data)..  
0300: 75 70 64 61 74 65 4f 70 74 73 2e 61 70 70 6c 79  updateOpts.apply
0310: 28 74 61 67 2c 20 5b 5f 5f 2e 69 73 4c 6f 6f 70  (tag, [__.isLoop
0320: 2c 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f 5f 2e  , __.parent, __.
0330: 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6e 65 78  isAnonymous, nex
0340: 74 4f 70 74 73 2c 20 5f 5f 2e 69 6e 73 74 41 74  tOpts, __.instAt
0350: 74 72 73 5d 29 0a 0a 20 20 69 66 20 28 0a 20 20  trs])..  if (.  
0360: 20 20 63 61 6e 54 72 69 67 67 65 72 20 26 26 0a    canTrigger &&.
0370: 20 20 20 20 74 61 67 2e 69 73 4d 6f 75 6e 74 65      tag.isMounte
0380: 64 20 26 26 0a 20 20 20 20 69 73 46 75 6e 63 74  d &&.    isFunct
0390: 69 6f 6e 28 74 61 67 2e 73 68 6f 75 6c 64 55 70  ion(tag.shouldUp
03a0: 64 61 74 65 29 20 26 26 20 21 74 61 67 2e 73 68  date) && !tag.sh
03b0: 6f 75 6c 64 55 70 64 61 74 65 28 64 61 74 61 2c  ouldUpdate(data,
03c0: 20 6e 65 78 74 4f 70 74 73 29 0a 20 20 29 20 7b   nextOpts).  ) {
03d0: 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a  .    return tag.
03e0: 20 20 7d 0a 0a 20 20 65 78 74 65 6e 64 28 74 61    }..  extend(ta
03f0: 67 2e 6f 70 74 73 2c 20 6e 65 78 74 4f 70 74 73  g.opts, nextOpts
0400: 29 0a 0a 20 20 69 66 20 28 63 61 6e 54 72 69 67  )..  if (canTrig
0410: 67 65 72 29 20 74 61 67 2e 74 72 69 67 67 65 72  ger) tag.trigger
0420: 28 27 75 70 64 61 74 65 27 2c 20 64 61 74 61 29  ('update', data)
0430: 0a 20 20 75 70 64 61 74 65 2e 63 61 6c 6c 28 74  .  update.call(t
0440: 61 67 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 29  ag, expressions)
0450: 0a 20 20 69 66 20 28 63 61 6e 54 72 69 67 67 65  .  if (canTrigge
0460: 72 29 20 74 61 67 2e 74 72 69 67 67 65 72 28 27  r) tag.trigger('
0470: 75 70 64 61 74 65 64 27 29 0a 0a 20 20 72 65 74  updated')..  ret
0480: 75 72 6e 20 74 61 67 0a 7d                       urn tag.}