0000: 2f 2a 20 52 69 6f 74 20 76 33 2e 31 33 2e 32 2c /* Riot v3.13.2,
0010: 20 40 6c 69 63 65 6e 73 65 20 4d 49 54 20 2a 2f @license MIT */
0020: 0a 28 66 75 6e 63 74 69 6f 6e 20 28 67 6c 6f 62 .(function (glob
0030: 61 6c 2c 20 66 61 63 74 6f 72 79 29 20 7b 0a 20 al, factory) {.
0040: 20 74 79 70 65 6f 66 20 65 78 70 6f 72 74 73 20 typeof exports
0050: 3d 3d 3d 20 27 6f 62 6a 65 63 74 27 20 26 26 20 === 'object' &&
0060: 74 79 70 65 6f 66 20 6d 6f 64 75 6c 65 20 21 3d typeof module !=
0070: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 20 3f 20 = 'undefined' ?
0080: 66 61 63 74 6f 72 79 28 65 78 70 6f 72 74 73 29 factory(exports)
0090: 20 3a 0a 20 20 74 79 70 65 6f 66 20 64 65 66 69 :. typeof defi
00a0: 6e 65 20 3d 3d 3d 20 27 66 75 6e 63 74 69 6f 6e ne === 'function
00b0: 27 20 26 26 20 64 65 66 69 6e 65 2e 61 6d 64 20 ' && define.amd
00c0: 3f 20 64 65 66 69 6e 65 28 5b 27 65 78 70 6f 72 ? define(['expor
00d0: 74 73 27 5d 2c 20 66 61 63 74 6f 72 79 29 20 3a ts'], factory) :
00e0: 0a 20 20 28 66 61 63 74 6f 72 79 28 28 67 6c 6f . (factory((glo
00f0: 62 61 6c 2e 72 69 6f 74 20 3d 20 7b 7d 29 29 29 bal.riot = {})))
0100: 3b 0a 7d 28 74 68 69 73 2c 20 28 66 75 6e 63 74 ;.}(this, (funct
0110: 69 6f 6e 20 28 65 78 70 6f 72 74 73 29 20 7b 20 ion (exports) {
0120: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 20 'use strict';..
0130: 20 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65 /**. * Shorte
0140: 72 20 61 6e 64 20 66 61 73 74 20 77 61 79 20 74 r and fast way t
0150: 6f 20 73 65 6c 65 63 74 20 61 20 73 69 6e 67 6c o select a singl
0160: 65 20 6e 6f 64 65 20 69 6e 20 74 68 65 20 44 4f e node in the DO
0170: 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 M. * @param
0180: 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63 { String } selec
0190: 74 6f 72 20 2d 20 75 6e 69 71 75 65 20 64 6f 6d tor - unique dom
01a0: 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 20 40 selector. * @
01b0: 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 param { Object
01c0: 20 7d 20 63 74 78 20 2d 20 44 4f 4d 20 6e 6f 64 } ctx - DOM nod
01d0: 65 20 77 68 65 72 65 20 74 68 65 20 74 61 72 67 e where the targ
01e0: 65 74 20 6f 66 20 6f 75 72 20 73 65 61 72 63 68 et of our search
01f0: 20 77 69 6c 6c 20 69 73 20 6c 6f 63 61 74 65 64 will is located
0200: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
0210: 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 6e 6f Object } dom no
0220: 64 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a 20 de found. */.
0230: 20 66 75 6e 63 74 69 6f 6e 20 24 28 73 65 6c 65 function $(sele
0240: 63 74 6f 72 2c 20 63 74 78 29 20 7b 0a 20 20 20 ctor, ctx) {.
0250: 20 72 65 74 75 72 6e 20 28 63 74 78 20 7c 7c 20 return (ctx ||
0260: 64 6f 63 75 6d 65 6e 74 29 2e 71 75 65 72 79 53 document).queryS
0270: 65 6c 65 63 74 6f 72 28 73 65 6c 65 63 74 6f 72 elector(selector
0280: 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a 20 20 20 ). }.. var.
0290: 20 2f 2f 20 62 65 20 61 77 61 72 65 2c 20 69 6e // be aware, in
02a0: 74 65 72 6e 61 6c 20 75 73 61 67 65 0a 20 20 20 ternal usage.
02b0: 20 2f 2f 20 41 54 54 45 4e 54 49 4f 4e 3a 20 70 // ATTENTION: p
02c0: 72 65 66 69 78 20 74 68 65 20 67 6c 6f 62 61 6c refix the global
02d0: 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61 62 6c dynamic variabl
02e0: 65 73 20 77 69 74 68 20 60 5f 5f 60 0a 20 20 20 es with `__`.
02f0: 20 2f 2f 20 74 61 67 73 20 69 6e 73 74 61 6e 63 // tags instanc
0300: 65 73 20 63 61 63 68 65 0a 20 20 20 20 5f 5f 54 es cache. __T
0310: 41 47 53 5f 43 41 43 48 45 20 3d 20 5b 5d 2c 0a AGS_CACHE = [],.
0320: 20 20 20 20 2f 2f 20 74 61 67 73 20 69 6d 70 6c // tags impl
0330: 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 63 68 65 ementation cache
0340: 0a 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 20 . __TAG_IMPL
0350: 3d 20 7b 7d 2c 0a 20 20 20 20 59 49 45 4c 44 5f = {},. YIELD_
0360: 54 41 47 20 3d 20 27 79 69 65 6c 64 27 2c 0a 0a TAG = 'yield',..
0370: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 /**. * C
0380: 6f 6e 73 74 0a 20 20 20 20 20 2a 2f 0a 20 20 20 onst. */.
0390: 20 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e 20 3d 20 GLOBAL_MIXIN =
03a0: 27 5f 5f 67 6c 6f 62 61 6c 5f 6d 69 78 69 6e 27 '__global_mixin'
03b0: 2c 0a 0a 20 20 20 20 2f 2f 20 72 69 6f 74 20 73 ,.. // riot s
03c0: 70 65 63 69 66 69 63 20 70 72 65 66 69 78 65 73 pecific prefixes
03d0: 20 6f 72 20 61 74 74 72 69 62 75 74 65 73 0a 20 or attributes.
03e0: 20 20 20 41 54 54 52 53 5f 50 52 45 46 49 58 20 ATTRS_PREFIX
03f0: 3d 20 27 72 69 6f 74 2d 27 2c 0a 0a 20 20 20 20 = 'riot-',..
0400: 2f 2f 20 52 69 6f 74 20 44 69 72 65 63 74 69 76 // Riot Directiv
0410: 65 73 0a 20 20 20 20 52 45 46 5f 44 49 52 45 43 es. REF_DIREC
0420: 54 49 56 45 53 20 3d 20 5b 27 72 65 66 27 2c 20 TIVES = ['ref',
0430: 27 64 61 74 61 2d 72 65 66 27 5d 2c 0a 20 20 20 'data-ref'],.
0440: 20 49 53 5f 44 49 52 45 43 54 49 56 45 20 3d 20 IS_DIRECTIVE =
0450: 27 64 61 74 61 2d 69 73 27 2c 0a 20 20 20 20 43 'data-is',. C
0460: 4f 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 ONDITIONAL_DIREC
0470: 54 49 56 45 20 3d 20 27 69 66 27 2c 0a 20 20 20 TIVE = 'if',.
0480: 20 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 20 LOOP_DIRECTIVE
0490: 3d 20 27 65 61 63 68 27 2c 0a 20 20 20 20 4c 4f = 'each',. LO
04a0: 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 5f 44 49 OP_NO_REORDER_DI
04b0: 52 45 43 54 49 56 45 20 3d 20 27 6e 6f 2d 72 65 RECTIVE = 'no-re
04c0: 6f 72 64 65 72 27 2c 0a 20 20 20 20 53 48 4f 57 order',. SHOW
04d0: 5f 44 49 52 45 43 54 49 56 45 20 3d 20 27 73 68 _DIRECTIVE = 'sh
04e0: 6f 77 27 2c 0a 20 20 20 20 48 49 44 45 5f 44 49 ow',. HIDE_DI
04f0: 52 45 43 54 49 56 45 20 3d 20 27 68 69 64 65 27 RECTIVE = 'hide'
0500: 2c 0a 20 20 20 20 4b 45 59 5f 44 49 52 45 43 54 ,. KEY_DIRECT
0510: 49 56 45 20 3d 20 27 6b 65 79 27 2c 0a 20 20 20 IVE = 'key',.
0520: 20 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59 RIOT_EVENTS_KEY
0530: 20 3d 20 27 5f 5f 72 69 6f 74 2d 65 76 65 6e 74 = '__riot-event
0540: 73 5f 5f 27 2c 0a 0a 20 20 20 20 2f 2f 20 66 6f s__',.. // fo
0550: 72 20 74 79 70 65 6f 66 20 3d 3d 20 27 27 20 63 r typeof == '' c
0560: 6f 6d 70 61 72 69 73 6f 6e 73 0a 20 20 20 20 54 omparisons. T
0570: 5f 53 54 52 49 4e 47 20 3d 20 27 73 74 72 69 6e _STRING = 'strin
0580: 67 27 2c 0a 20 20 20 20 54 5f 4f 42 4a 45 43 54 g',. T_OBJECT
0590: 20 3d 20 27 6f 62 6a 65 63 74 27 2c 0a 20 20 20 = 'object',.
05a0: 20 54 5f 55 4e 44 45 46 20 20 3d 20 27 75 6e 64 T_UNDEF = 'und
05b0: 65 66 69 6e 65 64 27 2c 0a 20 20 20 20 54 5f 46 efined',. T_F
05c0: 55 4e 43 54 49 4f 4e 20 3d 20 27 66 75 6e 63 74 UNCTION = 'funct
05d0: 69 6f 6e 27 2c 0a 0a 20 20 20 20 58 4c 49 4e 4b ion',.. XLINK
05e0: 5f 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 _NS = 'http://ww
05f0: 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 6c w.w3.org/1999/xl
0600: 69 6e 6b 27 2c 0a 20 20 20 20 53 56 47 5f 4e 53 ink',. SVG_NS
0610: 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 77 2e 77 = 'http://www.w
0620: 33 2e 6f 72 67 2f 32 30 30 30 2f 73 76 67 27 2c 3.org/2000/svg',
0630: 0a 20 20 20 20 58 4c 49 4e 4b 5f 52 45 47 45 58 . XLINK_REGEX
0640: 20 3d 20 2f 5e 78 6c 69 6e 6b 3a 28 5c 77 2b 29 = /^xlink:(\w+)
0650: 2f 2c 0a 0a 20 20 20 20 57 49 4e 20 3d 20 74 79 /,.. WIN = ty
0660: 70 65 6f 66 20 77 69 6e 64 6f 77 20 3d 3d 3d 20 peof window ===
0670: 54 5f 55 4e 44 45 46 20 3f 20 2f 2a 20 69 73 74 T_UNDEF ? /* ist
0680: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 anbul ignore nex
0690: 74 20 2a 2f 20 75 6e 64 65 66 69 6e 65 64 20 3a t */ undefined :
06a0: 20 77 69 6e 64 6f 77 2c 0a 0a 20 20 20 20 2f 2f window,.. //
06b0: 20 73 70 65 63 69 61 6c 20 6e 61 74 69 76 65 20 special native
06c0: 74 61 67 73 20 74 68 61 74 20 63 61 6e 6e 6f 74 tags that cannot
06d0: 20 62 65 20 74 72 65 61 74 65 64 20 6c 69 6b 65 be treated like
06e0: 20 74 68 65 20 6f 74 68 65 72 73 0a 20 20 20 20 the others.
06f0: 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 20 RE_SPECIAL_TAGS
0700: 3d 20 2f 5e 28 3f 3a 74 28 3f 3a 62 6f 64 79 7c = /^(?:t(?:body|
0710: 68 65 61 64 7c 66 6f 6f 74 7c 5b 72 68 64 5d 29 head|foot|[rhd])
0720: 7c 63 61 70 74 69 6f 6e 7c 63 6f 6c 28 3f 3a 67 |caption|col(?:g
0730: 72 6f 75 70 29 3f 7c 6f 70 74 28 3f 3a 69 6f 6e roup)?|opt(?:ion
0740: 7c 67 72 6f 75 70 29 29 24 2f 2c 0a 20 20 20 20 |group))$/,.
0750: 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 5f RE_SPECIAL_TAGS_
0760: 4e 4f 5f 4f 50 54 49 4f 4e 20 3d 20 2f 5e 28 3f NO_OPTION = /^(?
0770: 3a 74 28 3f 3a 62 6f 64 79 7c 68 65 61 64 7c 66 :t(?:body|head|f
0780: 6f 6f 74 7c 5b 72 68 64 5d 29 7c 63 61 70 74 69 oot|[rhd])|capti
0790: 6f 6e 7c 63 6f 6c 28 3f 3a 67 72 6f 75 70 29 3f on|col(?:group)?
07a0: 29 24 2f 2c 0a 20 20 20 20 52 45 5f 45 56 45 4e )$/,. RE_EVEN
07b0: 54 53 5f 50 52 45 46 49 58 20 3d 20 2f 5e 6f 6e TS_PREFIX = /^on
07c0: 2f 2c 0a 20 20 20 20 52 45 5f 48 54 4d 4c 5f 41 /,. RE_HTML_A
07d0: 54 54 52 53 20 3d 20 2f 28 5b 2d 5c 77 5d 2b 29 TTRS = /([-\w]+)
07e0: 20 3f 3d 20 3f 28 3f 3a 22 28 5b 5e 22 5d 2a 29 ?= ?(?:"([^"]*)
07f0: 7c 27 28 5b 5e 27 5d 2a 29 7c 28 7b 5b 5e 7d 5d |'([^']*)|({[^}]
0800: 2a 7d 29 29 2f 67 2c 0a 20 20 20 20 2f 2f 20 73 *}))/g,. // s
0810: 6f 6d 65 20 44 4f 4d 20 61 74 74 72 69 62 75 74 ome DOM attribut
0820: 65 73 20 6d 75 73 74 20 62 65 20 6e 6f 72 6d 61 es must be norma
0830: 6c 69 7a 65 64 0a 20 20 20 20 43 41 53 45 5f 53 lized. CASE_S
0840: 45 4e 53 49 54 49 56 45 5f 41 54 54 52 49 42 55 ENSITIVE_ATTRIBU
0850: 54 45 53 20 3d 20 7b 0a 20 20 20 20 20 20 27 76 TES = {. 'v
0860: 69 65 77 62 6f 78 27 3a 20 27 76 69 65 77 42 6f iewbox': 'viewBo
0870: 78 27 2c 0a 20 20 20 20 20 20 27 70 72 65 73 65 x',. 'prese
0880: 72 76 65 61 73 70 65 63 74 72 61 74 69 6f 27 3a rveaspectratio':
0890: 20 27 70 72 65 73 65 72 76 65 41 73 70 65 63 74 'preserveAspect
08a0: 52 61 74 69 6f 27 0a 20 20 20 20 7d 2c 0a 20 20 Ratio'. },.
08b0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 4d 61 74 /**. * Mat
08c0: 63 68 65 73 20 62 6f 6f 6c 65 61 6e 20 48 54 4d ches boolean HTM
08d0: 4c 20 61 74 74 72 69 62 75 74 65 73 20 69 6e 20 L attributes in
08e0: 74 68 65 20 72 69 6f 74 20 74 61 67 20 64 65 66 the riot tag def
08f0: 69 6e 69 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 20 inition.. *
0900: 57 69 74 68 20 61 20 6c 6f 6e 67 20 6c 69 73 74 With a long list
0910: 20 6c 69 6b 65 20 74 68 69 73 2c 20 61 20 72 65 like this, a re
0920: 67 65 78 20 69 73 20 66 61 73 74 65 72 20 74 68 gex is faster th
0930: 61 6e 20 60 5b 5d 2e 69 6e 64 65 78 4f 66 60 20 an `[].indexOf`
0940: 69 6e 20 6d 6f 73 74 20 62 72 6f 77 73 65 72 73 in most browsers
0950: 2e 0a 20 20 20 20 20 2a 20 40 63 6f 6e 73 74 20 .. * @const
0960: 7b 52 65 67 45 78 70 7d 0a 20 20 20 20 20 2a 20 {RegExp}. *
0970: 40 73 65 65 20 5b 61 74 74 72 69 62 75 74 65 73 @see [attributes
0980: 2e 6d 64 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 .md](https://git
0990: 68 75 62 2e 63 6f 6d 2f 72 69 6f 74 2f 63 6f 6d hub.com/riot/com
09a0: 70 69 6c 65 72 2f 62 6c 6f 62 2f 64 65 76 2f 64 piler/blob/dev/d
09b0: 6f 63 2f 61 74 74 72 69 62 75 74 65 73 2e 6d 64 oc/attributes.md
09c0: 29 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 52 45 ). */. RE
09d0: 5f 42 4f 4f 4c 5f 41 54 54 52 53 20 3d 20 2f 5e _BOOL_ATTRS = /^
09e0: 28 3f 3a 64 69 73 61 62 6c 65 64 7c 63 68 65 63 (?:disabled|chec
09f0: 6b 65 64 7c 72 65 61 64 6f 6e 6c 79 7c 72 65 71 ked|readonly|req
0a00: 75 69 72 65 64 7c 61 6c 6c 6f 77 66 75 6c 6c 73 uired|allowfulls
0a10: 63 72 65 65 6e 7c 61 75 74 6f 28 3f 3a 66 6f 63 creen|auto(?:foc
0a20: 75 73 7c 70 6c 61 79 29 7c 63 6f 6d 70 61 63 74 us|play)|compact
0a30: 7c 63 6f 6e 74 72 6f 6c 73 7c 64 65 66 61 75 6c |controls|defaul
0a40: 74 7c 66 6f 72 6d 6e 6f 76 61 6c 69 64 61 74 65 t|formnovalidate
0a50: 7c 68 69 64 64 65 6e 7c 69 73 6d 61 70 7c 69 74 |hidden|ismap|it
0a60: 65 6d 73 63 6f 70 65 7c 6c 6f 6f 70 7c 6d 75 6c emscope|loop|mul
0a70: 74 69 70 6c 65 7c 6d 75 74 65 64 7c 6e 6f 28 3f tiple|muted|no(?
0a80: 3a 72 65 73 69 7a 65 7c 73 68 61 64 65 7c 76 61 :resize|shade|va
0a90: 6c 69 64 61 74 65 7c 77 72 61 70 29 3f 7c 6f 70 lidate|wrap)?|op
0aa0: 65 6e 7c 72 65 76 65 72 73 65 64 7c 73 65 61 6d en|reversed|seam
0ab0: 6c 65 73 73 7c 73 65 6c 65 63 74 65 64 7c 73 6f less|selected|so
0ac0: 72 74 61 62 6c 65 7c 74 72 75 65 73 70 65 65 64 rtable|truespeed
0ad0: 7c 74 79 70 65 6d 75 73 74 6d 61 74 63 68 29 24 |typemustmatch)$
0ae0: 2f 2c 0a 20 20 20 20 2f 2f 20 76 65 72 73 69 6f /,. // versio
0af0: 6e 23 20 66 6f 72 20 49 45 20 38 2d 31 31 2c 20 n# for IE 8-11,
0b00: 30 20 66 6f 72 20 6f 74 68 65 72 73 0a 20 20 20 0 for others.
0b10: 20 49 45 5f 56 45 52 53 49 4f 4e 20 3d 20 28 57 IE_VERSION = (W
0b20: 49 4e 20 26 26 20 57 49 4e 2e 64 6f 63 75 6d 65 IN && WIN.docume
0b30: 6e 74 20 7c 7c 20 2f 2a 20 69 73 74 61 6e 62 75 nt || /* istanbu
0b40: 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f l ignore next */
0b50: 20 7b 7d 29 2e 64 6f 63 75 6d 65 6e 74 4d 6f 64 {}).documentMod
0b60: 65 20 7c 20 30 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 e | 0;.. /**.
0b70: 20 2a 20 43 72 65 61 74 65 20 61 20 67 65 6e 65 * Create a gene
0b80: 72 69 63 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 ric DOM node.
0b90: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 * @param { Str
0ba0: 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61 6d ing } name - nam
0bb0: 65 20 6f 66 20 74 68 65 20 44 4f 4d 20 6e 6f 64 e of the DOM nod
0bc0: 65 20 77 65 20 77 61 6e 74 20 74 6f 20 63 72 65 e we want to cre
0bd0: 61 74 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e ate. * @return
0be0: 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 44 4f 4d s { Object } DOM
0bf0: 20 6e 6f 64 65 20 6a 75 73 74 20 63 72 65 61 74 node just creat
0c00: 65 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 ed. */. funct
0c10: 69 6f 6e 20 6d 61 6b 65 45 6c 65 6d 65 6e 74 28 ion makeElement(
0c20: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 72 65 74 75 name) {. retu
0c30: 72 6e 20 6e 61 6d 65 20 3d 3d 3d 20 27 73 76 67 rn name === 'svg
0c40: 27 20 3f 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 ' ? document.cre
0c50: 61 74 65 45 6c 65 6d 65 6e 74 4e 53 28 53 56 47 ateElementNS(SVG
0c60: 5f 4e 53 2c 20 6e 61 6d 65 29 20 3a 20 64 6f 63 _NS, name) : doc
0c70: 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d ument.createElem
0c80: 65 6e 74 28 6e 61 6d 65 29 0a 20 20 7d 0a 0a 20 ent(name). }..
0c90: 20 2f 2a 2a 0a 20 20 20 2a 20 53 65 74 20 61 6e /**. * Set an
0ca0: 79 20 44 4f 4d 20 61 74 74 72 69 62 75 74 65 0a y DOM attribute.
0cb0: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62 * @param { Ob
0cc0: 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d ject } dom - DOM
0cd0: 20 6e 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f node we want to
0ce0: 20 75 70 64 61 74 65 0a 20 20 20 2a 20 40 70 61 update. * @pa
0cf0: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e ram { String } n
0d00: 61 6d 65 20 2d 20 6e 61 6d 65 20 6f 66 20 74 68 ame - name of th
0d10: 65 20 70 72 6f 70 65 72 74 79 20 77 65 20 77 61 e property we wa
0d20: 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a 20 40 nt to set. * @
0d30: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d param { String }
0d40: 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 6f 66 20 val - value of
0d50: 74 68 65 20 70 72 6f 70 65 72 74 79 20 77 65 20 the property we
0d60: 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a want to set. *
0d70: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 /. function set
0d80: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e Attribute(dom, n
0d90: 61 6d 65 2c 20 76 61 6c 29 20 7b 0a 20 20 20 20 ame, val) {.
0da0: 76 61 72 20 78 6c 69 6e 6b 20 3d 20 58 4c 49 4e var xlink = XLIN
0db0: 4b 5f 52 45 47 45 58 2e 65 78 65 63 28 6e 61 6d K_REGEX.exec(nam
0dc0: 65 29 3b 0a 20 20 20 20 69 66 20 28 78 6c 69 6e e);. if (xlin
0dd0: 6b 20 26 26 20 78 6c 69 6e 6b 5b 31 5d 29 0a 20 k && xlink[1]).
0de0: 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 41 74 { dom.setAt
0df0: 74 72 69 62 75 74 65 4e 53 28 58 4c 49 4e 4b 5f tributeNS(XLINK_
0e00: 4e 53 2c 20 78 6c 69 6e 6b 5b 31 5d 2c 20 76 61 NS, xlink[1], va
0e10: 6c 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 l); }. else.
0e20: 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 41 74 { dom.setAt
0e30: 74 72 69 62 75 74 65 28 6e 61 6d 65 2c 20 76 61 tribute(name, va
0e40: 6c 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 76 61 72 l); }. }.. var
0e50: 20 73 74 79 6c 65 4e 6f 64 65 3b 0a 20 20 2f 2f styleNode;. //
0e60: 20 43 72 65 61 74 65 20 63 61 63 68 65 20 61 6e Create cache an
0e70: 64 20 73 68 6f 72 74 63 75 74 20 74 6f 20 74 68 d shortcut to th
0e80: 65 20 63 6f 72 72 65 63 74 20 70 72 6f 70 65 72 e correct proper
0e90: 74 79 0a 20 20 76 61 72 20 63 73 73 54 65 78 74 ty. var cssText
0ea0: 50 72 6f 70 3b 0a 20 20 76 61 72 20 62 79 4e 61 Prop;. var byNa
0eb0: 6d 65 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6e me = {};. var n
0ec0: 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 66 61 6c eedsInject = fal
0ed0: 73 65 3b 0a 0a 20 20 2f 2f 20 73 6b 69 70 20 74 se;.. // skip t
0ee0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 64 he following cod
0ef0: 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 0a e on the server.
0f00: 20 20 69 66 20 28 57 49 4e 29 20 7b 0a 20 20 20 if (WIN) {.
0f10: 20 73 74 79 6c 65 4e 6f 64 65 20 3d 20 28 28 66 styleNode = ((f
0f20: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 unction () {.
0f30: 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61 20 6e // create a n
0f40: 65 77 20 73 74 79 6c 65 20 65 6c 65 6d 65 6e 74 ew style element
0f50: 20 77 69 74 68 20 74 68 65 20 63 6f 72 72 65 63 with the correc
0f60: 74 20 74 79 70 65 0a 20 20 20 20 20 20 76 61 72 t type. var
0f70: 20 6e 65 77 4e 6f 64 65 20 3d 20 6d 61 6b 65 45 newNode = makeE
0f80: 6c 65 6d 65 6e 74 28 27 73 74 79 6c 65 27 29 3b lement('style');
0f90: 0a 20 20 20 20 20 20 2f 2f 20 72 65 70 6c 61 63 . // replac
0fa0: 65 20 61 6e 79 20 75 73 65 72 20 6e 6f 64 65 20 e any user node
0fb0: 6f 72 20 69 6e 73 65 72 74 20 74 68 65 20 6e 65 or insert the ne
0fc0: 77 20 6f 6e 65 20 69 6e 74 6f 20 74 68 65 20 68 w one into the h
0fd0: 65 61 64 0a 20 20 20 20 20 20 76 61 72 20 75 73 ead. var us
0fe0: 65 72 4e 6f 64 65 20 3d 20 24 28 27 73 74 79 6c erNode = $('styl
0ff0: 65 5b 74 79 70 65 3d 72 69 6f 74 5d 27 29 3b 0a e[type=riot]');.
1000: 0a 20 20 20 20 20 20 73 65 74 41 74 74 72 69 62 . setAttrib
1010: 75 74 65 28 6e 65 77 4e 6f 64 65 2c 20 27 74 79 ute(newNode, 'ty
1020: 70 65 27 2c 20 27 74 65 78 74 2f 63 73 73 27 29 pe', 'text/css')
1030: 3b 0a 20 20 20 20 20 20 2f 2a 20 69 73 74 61 6e ;. /* istan
1040: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 bul ignore next
1050: 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 75 73 65 */. if (use
1060: 72 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 rNode) {.
1070: 20 69 66 20 28 75 73 65 72 4e 6f 64 65 2e 69 64 if (userNode.id
1080: 29 20 7b 20 6e 65 77 4e 6f 64 65 2e 69 64 20 3d ) { newNode.id =
1090: 20 75 73 65 72 4e 6f 64 65 2e 69 64 3b 20 7d 0a userNode.id; }.
10a0: 20 20 20 20 20 20 20 20 75 73 65 72 4e 6f 64 65 userNode
10b0: 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 70 6c .parentNode.repl
10c0: 61 63 65 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65 aceChild(newNode
10d0: 2c 20 75 73 65 72 4e 6f 64 65 29 3b 0a 20 20 20 , userNode);.
10e0: 20 20 20 7d 20 65 6c 73 65 20 7b 20 64 6f 63 75 } else { docu
10f0: 6d 65 6e 74 2e 68 65 61 64 2e 61 70 70 65 6e 64 ment.head.append
1100: 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65 29 3b 20 Child(newNode);
1110: 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 }.. return
1120: 6e 65 77 4e 6f 64 65 0a 20 20 20 20 7d 29 29 28 newNode. }))(
1130: 29 3b 0a 20 20 20 20 63 73 73 54 65 78 74 50 72 );. cssTextPr
1140: 6f 70 20 3d 20 73 74 79 6c 65 4e 6f 64 65 2e 73 op = styleNode.s
1150: 74 79 6c 65 53 68 65 65 74 3b 0a 20 20 7d 0a 0a tyleSheet;. }..
1160: 20 20 2f 2a 2a 0a 20 20 20 2a 20 4f 62 6a 65 63 /**. * Objec
1170: 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 75 t that will be u
1180: 73 65 64 20 74 6f 20 69 6e 6a 65 63 74 20 61 6e sed to inject an
1190: 64 20 6d 61 6e 61 67 65 20 74 68 65 20 63 73 73 d manage the css
11a0: 20 6f 66 20 65 76 65 72 79 20 74 61 67 20 69 6e of every tag in
11b0: 73 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 76 stance. */. v
11c0: 61 72 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 20 ar styleManager
11d0: 3d 20 7b 0a 20 20 20 20 73 74 79 6c 65 4e 6f 64 = {. styleNod
11e0: 65 3a 20 73 74 79 6c 65 4e 6f 64 65 2c 0a 20 20 e: styleNode,.
11f0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 61 76 /**. * Sav
1200: 65 20 61 20 74 61 67 20 73 74 79 6c 65 20 74 6f e a tag style to
1210: 20 62 65 20 6c 61 74 65 72 20 69 6e 6a 65 63 74 be later inject
1220: 65 64 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20 20 ed into DOM.
1230: 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 * @param { Stri
1240: 6e 67 20 7d 20 63 73 73 20 2d 20 63 73 73 20 73 ng } css - css s
1250: 74 72 69 6e 67 0a 20 20 20 20 20 2a 20 40 70 61 tring. * @pa
1260: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e ram { String } n
1270: 61 6d 65 20 2d 20 69 66 20 69 74 27 73 20 70 61 ame - if it's pa
1280: 73 73 65 64 20 77 65 20 77 69 6c 6c 20 6d 61 70 ssed we will map
1290: 20 74 68 65 20 63 73 73 20 74 6f 20 61 20 74 61 the css to a ta
12a0: 67 6e 61 6d 65 0a 20 20 20 20 20 2a 2f 0a 20 20 gname. */.
12b0: 20 20 61 64 64 3a 20 66 75 6e 63 74 69 6f 6e 20 add: function
12c0: 61 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 20 7b add(css, name) {
12d0: 0a 20 20 20 20 20 20 62 79 4e 61 6d 65 5b 6e 61 . byName[na
12e0: 6d 65 5d 20 3d 20 63 73 73 3b 0a 20 20 20 20 20 me] = css;.
12f0: 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 74 needsInject = t
1300: 72 75 65 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 rue;. },.
1310: 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6e 6a 65 63 /**. * Injec
1320: 74 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 6c 79 t all previously
1330: 20 73 61 76 65 64 20 74 61 67 20 73 74 79 6c 65 saved tag style
1340: 73 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20 20 20 s into DOM.
1350: 2a 20 69 6e 6e 65 72 48 54 4d 4c 20 73 65 65 6d * innerHTML seem
1360: 73 20 73 6c 6f 77 3a 20 68 74 74 70 3a 2f 2f 6a s slow: http://j
1370: 73 70 65 72 66 2e 63 6f 6d 2f 72 69 6f 74 2d 69 sperf.com/riot-i
1380: 6e 73 65 72 74 2d 73 74 79 6c 65 0a 20 20 20 20 nsert-style.
1390: 20 2a 2f 0a 20 20 20 20 69 6e 6a 65 63 74 3a 20 */. inject:
13a0: 66 75 6e 63 74 69 6f 6e 20 69 6e 6a 65 63 74 28 function inject(
13b0: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 57 ) {. if (!W
13c0: 49 4e 20 7c 7c 20 21 6e 65 65 64 73 49 6e 6a 65 IN || !needsInje
13d0: 63 74 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 ct) { return }.
13e0: 20 20 20 20 20 6e 65 65 64 73 49 6e 6a 65 63 74 needsInject
13f0: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 = false;.
1400: 76 61 72 20 73 74 79 6c 65 20 3d 20 4f 62 6a 65 var style = Obje
1410: 63 74 2e 6b 65 79 73 28 62 79 4e 61 6d 65 29 0a ct.keys(byName).
1420: 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66 75 6e .map(fun
1430: 63 74 69 6f 6e 20 28 6b 29 20 7b 20 72 65 74 75 ction (k) { retu
1440: 72 6e 20 62 79 4e 61 6d 65 5b 6b 5d 3b 20 7d 29 rn byName[k]; })
1450: 0a 20 20 20 20 20 20 20 20 2e 6a 6f 69 6e 28 27 . .join('
1460: 5c 6e 27 29 3b 0a 20 20 20 20 20 20 2f 2a 20 69 \n');. /* i
1470: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e stanbul ignore n
1480: 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 ext */. if
1490: 28 63 73 73 54 65 78 74 50 72 6f 70 29 20 7b 20 (cssTextProp) {
14a0: 63 73 73 54 65 78 74 50 72 6f 70 2e 63 73 73 54 cssTextProp.cssT
14b0: 65 78 74 20 3d 20 73 74 79 6c 65 3b 20 7d 0a 20 ext = style; }.
14c0: 20 20 20 20 20 65 6c 73 65 20 7b 20 73 74 79 6c else { styl
14d0: 65 4e 6f 64 65 2e 69 6e 6e 65 72 48 54 4d 4c 20 eNode.innerHTML
14e0: 3d 20 73 74 79 6c 65 3b 20 7d 0a 20 20 20 20 7d = style; }. }
14f0: 2c 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 ,.. /**.
1500: 2a 20 52 65 6d 6f 76 65 20 61 20 74 61 67 20 73 * Remove a tag s
1510: 74 79 6c 65 20 6f 66 20 69 6e 6a 65 63 74 65 64 tyle of injected
1520: 20 44 4f 4d 20 6c 61 74 65 72 2e 0a 20 20 20 20 DOM later..
1530: 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e * @param {Strin
1540: 67 7d 20 6e 61 6d 65 20 61 20 72 65 67 69 73 74 g} name a regist
1550: 65 72 65 64 20 74 61 67 6e 61 6d 65 0a 20 20 20 ered tagname.
1560: 20 20 2a 2f 0a 20 20 20 20 72 65 6d 6f 76 65 3a */. remove:
1570: 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65 function remove
1580: 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 64 (name) {. d
1590: 65 6c 65 74 65 20 62 79 4e 61 6d 65 5b 6e 61 6d elete byName[nam
15a0: 65 5d 3b 0a 20 20 20 20 20 20 6e 65 65 64 73 49 e];. needsI
15b0: 6e 6a 65 63 74 20 3d 20 74 72 75 65 3b 0a 20 20 nject = true;.
15c0: 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a }. };.. /**.
15d0: 20 20 20 2a 20 54 68 65 20 72 69 6f 74 20 74 65 * The riot te
15e0: 6d 70 6c 61 74 65 20 65 6e 67 69 6e 65 0a 20 20 mplate engine.
15f0: 20 2a 20 40 76 65 72 73 69 6f 6e 20 76 33 2e 30 * @version v3.0
1600: 2e 38 0a 20 20 20 2a 2f 0a 0a 20 20 2f 2a 20 69 .8. */.. /* i
1610: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e stanbul ignore n
1620: 65 78 74 20 2a 2f 0a 20 20 76 61 72 20 73 6b 69 ext */. var ski
1630: 70 52 65 67 65 78 20 3d 20 28 66 75 6e 63 74 69 pRegex = (functi
1640: 6f 6e 20 28 29 20 7b 20 2f 2f 65 73 6c 69 6e 74 on () { //eslint
1650: 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 20 6e 6f -disable-line no
1660: 2d 75 6e 75 73 65 64 2d 76 61 72 73 0a 0a 20 20 -unused-vars..
1670: 20 20 76 61 72 20 62 65 66 6f 72 65 52 65 43 68 var beforeReCh
1680: 61 72 73 20 3d 20 27 5b 7b 28 2c 3b 3a 3f 3d 7c ars = '[{(,;:?=|
1690: 26 21 5e 7e 3e 25 2a 2f 27 3b 0a 0a 20 20 20 20 &!^~>%*/';..
16a0: 76 61 72 20 62 65 66 6f 72 65 52 65 57 6f 72 64 var beforeReWord
16b0: 73 20 3d 20 5b 0a 20 20 20 20 20 20 27 63 61 73 s = [. 'cas
16c0: 65 27 2c 0a 20 20 20 20 20 20 27 64 65 66 61 75 e',. 'defau
16d0: 6c 74 27 2c 0a 20 20 20 20 20 20 27 64 6f 27 2c lt',. 'do',
16e0: 0a 20 20 20 20 20 20 27 65 6c 73 65 27 2c 0a 20 . 'else',.
16f0: 20 20 20 20 20 27 69 6e 27 2c 0a 20 20 20 20 20 'in',.
1700: 20 27 69 6e 73 74 61 6e 63 65 6f 66 27 2c 0a 20 'instanceof',.
1710: 20 20 20 20 20 27 70 72 65 66 69 78 27 2c 0a 20 'prefix',.
1720: 20 20 20 20 20 27 72 65 74 75 72 6e 27 2c 0a 20 'return',.
1730: 20 20 20 20 20 27 74 79 70 65 6f 66 27 2c 0a 20 'typeof',.
1740: 20 20 20 20 20 27 76 6f 69 64 27 2c 0a 20 20 20 'void',.
1750: 20 20 20 27 79 69 65 6c 64 27 0a 20 20 20 20 5d 'yield'. ]
1760: 3b 0a 0a 20 20 20 20 76 61 72 20 77 6f 72 64 73 ;.. var words
1770: 4c 61 73 74 43 68 61 72 20 3d 20 62 65 66 6f 72 LastChar = befor
1780: 65 52 65 57 6f 72 64 73 2e 72 65 64 75 63 65 28 eReWords.reduce(
1790: 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 77 29 20 function (s, w)
17a0: 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 {. return s
17b0: 20 2b 20 77 2e 73 6c 69 63 65 28 2d 31 29 0a 20 + w.slice(-1).
17c0: 20 20 20 7d 2c 20 27 27 29 3b 0a 0a 20 20 20 20 }, '');..
17d0: 76 61 72 20 52 45 5f 52 45 47 45 58 20 3d 20 2f var RE_REGEX = /
17e0: 5e 5c 2f 28 3f 3d 5b 5e 2a 3e 2f 5d 29 5b 5e 5b ^\/(?=[^*>/])[^[
17f0: 2f 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5c 2e 7c 5c /\\]*(?:(?:\\.|\
1800: 5b 28 3f 3a 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a [(?:\\.|[^\]\\]*
1810: 29 2a 5c 5d 29 5b 5e 5b 5c 5c 2f 5d 2a 29 2a 3f )*\])[^[\\/]*)*?
1820: 5c 2f 5b 67 69 6d 75 79 5d 2a 2f 3b 0a 20 20 20 \/[gimuy]*/;.
1830: 20 76 61 72 20 52 45 5f 56 4e 5f 43 48 41 52 20 var RE_VN_CHAR
1840: 3d 20 2f 5b 24 5c 77 5d 2f 3b 0a 0a 20 20 20 20 = /[$\w]/;..
1850: 66 75 6e 63 74 69 6f 6e 20 70 72 65 76 20 28 63 function prev (c
1860: 6f 64 65 2c 20 70 6f 73 29 20 7b 0a 20 20 20 20 ode, pos) {.
1870: 20 20 77 68 69 6c 65 20 28 2d 2d 70 6f 73 20 3e while (--pos >
1880: 3d 20 30 20 26 26 20 2f 5c 73 2f 2e 74 65 73 74 = 0 && /\s/.test
1890: 28 63 6f 64 65 5b 70 6f 73 5d 29 29 7b 20 7d 0a (code[pos])){ }.
18a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6f 73 return pos
18b0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 . }.. func
18c0: 74 69 6f 6e 20 5f 73 6b 69 70 52 65 67 65 78 20 tion _skipRegex
18d0: 28 63 6f 64 65 2c 20 73 74 61 72 74 29 20 7b 0a (code, start) {.
18e0: 0a 20 20 20 20 20 20 76 61 72 20 72 65 20 3d 20 . var re =
18f0: 2f 2e 2a 2f 67 3b 0a 20 20 20 20 20 20 76 61 72 /.*/g;. var
1900: 20 70 6f 73 20 3d 20 72 65 2e 6c 61 73 74 49 6e pos = re.lastIn
1910: 64 65 78 20 3d 20 73 74 61 72 74 2b 2b 3b 0a 20 dex = start++;.
1920: 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 20 3d var match =
1930: 20 72 65 2e 65 78 65 63 28 63 6f 64 65 29 5b 30 re.exec(code)[0
1940: 5d 2e 6d 61 74 63 68 28 52 45 5f 52 45 47 45 58 ].match(RE_REGEX
1950: 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 6d 61 );.. if (ma
1960: 74 63 68 29 20 7b 0a 20 20 20 20 20 20 20 20 76 tch) {. v
1970: 61 72 20 6e 65 78 74 20 3d 20 70 6f 73 20 2b 20 ar next = pos +
1980: 6d 61 74 63 68 5b 30 5d 2e 6c 65 6e 67 74 68 3b match[0].length;
1990: 0a 0a 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 .. pos =
19a0: 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73 29 3b prev(code, pos);
19b0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 20 3d . var c =
19c0: 20 63 6f 64 65 5b 70 6f 73 5d 3b 0a 0a 20 20 20 code[pos];..
19d0: 20 20 20 20 20 69 66 20 28 70 6f 73 20 3c 20 30 if (pos < 0
19e0: 20 7c 7c 20 7e 62 65 66 6f 72 65 52 65 43 68 61 || ~beforeReCha
19f0: 72 73 2e 69 6e 64 65 78 4f 66 28 63 29 29 20 7b rs.indexOf(c)) {
1a00: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 . retur
1a10: 6e 20 6e 65 78 74 0a 20 20 20 20 20 20 20 20 7d n next. }
1a20: 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 20 .. if (c
1a30: 3d 3d 3d 20 27 2e 27 29 20 7b 0a 0a 20 20 20 20 === '.') {..
1a40: 20 20 20 20 20 20 69 66 20 28 63 6f 64 65 5b 70 if (code[p
1a50: 6f 73 20 2d 20 31 5d 20 3d 3d 3d 20 27 2e 27 29 os - 1] === '.')
1a60: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 {. s
1a70: 74 61 72 74 20 3d 20 6e 65 78 74 3b 0a 20 20 20 tart = next;.
1a80: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 }..
1a90: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 20 3d } else if (c =
1aa0: 3d 3d 20 27 2b 27 20 7c 7c 20 63 20 3d 3d 3d 20 == '+' || c ===
1ab0: 27 2d 27 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 '-') {..
1ac0: 20 20 69 66 20 28 63 6f 64 65 5b 2d 2d 70 6f 73 if (code[--pos
1ad0: 5d 20 21 3d 3d 20 63 20 7c 7c 0a 20 20 20 20 20 ] !== c ||.
1ae0: 20 20 20 20 20 20 20 20 20 28 70 6f 73 20 3d 20 (pos =
1af0: 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73 29 29 prev(code, pos))
1b00: 20 3c 20 30 20 7c 7c 0a 20 20 20 20 20 20 20 20 < 0 ||.
1b10: 20 20 20 20 20 20 21 52 45 5f 56 4e 5f 43 48 41 !RE_VN_CHA
1b20: 52 2e 74 65 73 74 28 63 6f 64 65 5b 70 6f 73 5d R.test(code[pos]
1b30: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {.
1b40: 20 73 74 61 72 74 20 3d 20 6e 65 78 74 3b 0a 20 start = next;.
1b50: 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 }..
1b60: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 7e } else if (~
1b70: 77 6f 72 64 73 4c 61 73 74 43 68 61 72 2e 69 6e wordsLastChar.in
1b80: 64 65 78 4f 66 28 63 29 29 20 7b 0a 0a 20 20 20 dexOf(c)) {..
1b90: 20 20 20 20 20 20 20 76 61 72 20 65 6e 64 20 3d var end =
1ba0: 20 70 6f 73 20 2b 20 31 3b 0a 0a 20 20 20 20 20 pos + 1;..
1bb0: 20 20 20 20 20 77 68 69 6c 65 20 28 2d 2d 70 6f while (--po
1bc0: 73 20 3e 3d 20 30 20 26 26 20 52 45 5f 56 4e 5f s >= 0 && RE_VN_
1bd0: 43 48 41 52 2e 74 65 73 74 28 63 6f 64 65 5b 70 CHAR.test(code[p
1be0: 6f 73 5d 29 29 7b 20 7d 0a 20 20 20 20 20 20 20 os])){ }.
1bf0: 20 20 20 69 66 20 28 7e 62 65 66 6f 72 65 52 65 if (~beforeRe
1c00: 57 6f 72 64 73 2e 69 6e 64 65 78 4f 66 28 63 6f Words.indexOf(co
1c10: 64 65 2e 73 6c 69 63 65 28 70 6f 73 20 2b 20 31 de.slice(pos + 1
1c20: 2c 20 65 6e 64 29 29 29 20 7b 0a 20 20 20 20 20 , end))) {.
1c30: 20 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 6e start = n
1c40: 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 7d ext;. }
1c50: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
1c60: 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e }.. return
1c70: 20 73 74 61 72 74 0a 20 20 20 20 7d 0a 0a 20 20 start. }..
1c80: 20 20 72 65 74 75 72 6e 20 5f 73 6b 69 70 52 65 return _skipRe
1c90: 67 65 78 0a 0a 20 20 7d 29 28 29 3b 0a 0a 20 20 gex.. })();..
1ca0: 2f 2a 2a 0a 20 20 20 2a 20 72 69 6f 74 2e 75 74 /**. * riot.ut
1cb0: 69 6c 2e 62 72 61 63 6b 65 74 73 0a 20 20 20 2a il.brackets. *
1cc0: 0a 20 20 20 2a 20 2d 20 60 62 72 61 63 6b 65 74 . * - `bracket
1cd0: 73 20 20 20 20 60 20 2d 20 52 65 74 75 72 6e 73 s ` - Returns
1ce0: 20 61 20 73 74 72 69 6e 67 20 6f 72 20 72 65 67 a string or reg
1cf0: 65 78 20 62 61 73 65 64 20 6f 6e 20 69 74 73 20 ex based on its
1d00: 70 61 72 61 6d 65 74 65 72 0a 20 20 20 2a 20 2d parameter. * -
1d10: 20 60 62 72 61 63 6b 65 74 73 2e 73 65 74 60 20 `brackets.set`
1d20: 2d 20 43 68 61 6e 67 65 20 74 68 65 20 63 75 72 - Change the cur
1d30: 72 65 6e 74 20 72 69 6f 74 20 62 72 61 63 6b 65 rent riot bracke
1d40: 74 73 0a 20 20 20 2a 0a 20 20 20 2a 20 40 6d 6f ts. *. * @mo
1d50: 64 75 6c 65 0a 20 20 20 2a 2f 0a 0a 20 20 2f 2a dule. */.. /*
1d60: 20 67 6c 6f 62 61 6c 20 72 69 6f 74 20 2a 2f 0a global riot */.
1d70: 0a 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 . /* istanbul i
1d80: 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 gnore next */.
1d90: 76 61 72 20 62 72 61 63 6b 65 74 73 20 3d 20 28 var brackets = (
1da0: 66 75 6e 63 74 69 6f 6e 20 28 55 4e 44 45 46 29 function (UNDEF)
1db0: 20 7b 0a 0a 20 20 20 20 76 61 72 0a 20 20 20 20 {.. var.
1dc0: 20 20 52 45 47 4c 4f 42 20 3d 20 27 67 27 2c 0a REGLOB = 'g',.
1dd0: 0a 20 20 20 20 20 20 52 5f 4d 4c 43 4f 4d 4d 53 . R_MLCOMMS
1de0: 20 3d 20 2f 5c 2f 5c 2a 5b 5e 2a 5d 2a 5c 2a 2b = /\/\*[^*]*\*+
1df0: 28 3f 3a 5b 5e 2a 5c 2f 5d 5b 5e 2a 5d 2a 5c 2a (?:[^*\/][^*]*\*
1e00: 2b 29 2a 5c 2f 2f 67 2c 0a 0a 20 20 20 20 20 20 +)*\//g,..
1e10: 52 5f 53 54 52 49 4e 47 53 20 3d 20 2f 22 5b 5e R_STRINGS = /"[^
1e20: 22 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d "\\]*(?:\\[\S\s]
1e30: 5b 5e 22 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e 27 5c [^"\\]*)*"|'[^'\
1e40: 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e \]*(?:\\[\S\s][^
1e50: 27 5c 5c 5d 2a 29 2a 27 7c 60 5b 5e 60 5c 5c 5d '\\]*)*'|`[^`\\]
1e60: 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e 60 5c *(?:\\[\S\s][^`\
1e70: 5c 5d 2a 29 2a 60 2f 67 2c 0a 0a 20 20 20 20 20 \]*)*`/g,..
1e80: 20 53 5f 51 42 4c 4f 43 4b 53 20 3d 20 52 5f 53 S_QBLOCKS = R_S
1e90: 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 2b 20 TRINGS.source +
1ea0: 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f 28 '|' +. /(
1eb0: 3f 3a 5c 62 72 65 74 75 72 6e 5c 73 2b 7c 28 3f ?:\breturn\s+|(?
1ec0: 3a 5b 24 5c 77 5c 29 5c 5d 5d 7c 5c 2b 5c 2b 7c :[$\w\)\]]|\+\+|
1ed0: 2d 2d 29 5c 73 2a 28 5c 2f 29 28 3f 21 5b 2a 5c --)\s*(\/)(?![*\
1ee0: 2f 5d 29 29 2f 2e 73 6f 75 72 63 65 20 2b 20 27 /]))/.source + '
1ef0: 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f 5c 2f |' +. /\/
1f00: 28 3f 3d 5b 5e 2a 5c 2f 5d 29 5b 5e 5b 5c 2f 5c (?=[^*\/])[^[\/\
1f10: 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5b 28 3f 3a 5c 5c \]*(?:(?:\[(?:\\
1f20: 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a 29 2a 5c 5d 7c 5c .|[^\]\\]*)*\]|\
1f30: 5c 2e 29 5b 5e 5b 5c 2f 5c 5c 5d 2a 29 2a 3f 28 \.)[^[\/\\]*)*?(
1f40: 5b 5e 3c 5d 5c 2f 29 5b 67 69 6d 5d 2a 2f 2e 73 [^<]\/)[gim]*/.s
1f50: 6f 75 72 63 65 2c 0a 0a 20 20 20 20 20 20 55 4e ource,.. UN
1f60: 53 55 50 50 4f 52 54 45 44 20 3d 20 52 65 67 45 SUPPORTED = RegE
1f70: 78 70 28 27 5b 5c 5c 27 20 2b 20 27 78 30 30 2d xp('[\\' + 'x00-
1f80: 5c 5c 78 31 46 3c 3e 61 2d 7a 41 2d 5a 30 2d 39 \\x1F<>a-zA-Z0-9
1f90: 5c 27 22 2c 3b 5c 5c 5c 5c 5d 27 29 2c 0a 0a 20 \'",;\\\\]'),..
1fa0: 20 20 20 20 20 4e 45 45 44 5f 45 53 43 41 50 45 NEED_ESCAPE
1fb0: 20 3d 20 2f 28 3f 3d 5b 5b 5c 5d 28 29 2a 2b 3f = /(?=[[\]()*+?
1fc0: 2e 5e 24 7c 5d 29 2f 67 2c 0a 0a 20 20 20 20 20 .^$|])/g,..
1fd0: 20 53 5f 51 42 4c 4f 43 4b 32 20 3d 20 52 5f 53 S_QBLOCK2 = R_S
1fe0: 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 2b 20 TRINGS.source +
1ff0: 27 7c 27 20 2b 20 2f 28 5c 2f 29 28 3f 21 5b 2a '|' + /(\/)(?![*
2000: 5c 2f 5d 29 2f 2e 73 6f 75 72 63 65 2c 0a 0a 20 \/])/.source,..
2010: 20 20 20 20 20 46 49 4e 44 42 52 41 43 45 53 20 FINDBRACES
2020: 3d 20 7b 0a 20 20 20 20 20 20 20 20 27 28 27 3a = {. '(':
2030: 20 52 65 67 45 78 70 28 27 28 5b 28 29 5d 29 7c RegExp('([()])|
2040: 27 20 20 20 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c ' + S_QBLOCK2,
2050: 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 20 20 REGLOB),.
2060: 20 20 27 5b 27 3a 20 52 65 67 45 78 70 28 27 28 '[': RegExp('(
2070: 5b 5b 5c 5c 5d 5d 29 7c 27 20 2b 20 53 5f 51 42 [[\\]])|' + S_QB
2080: 4c 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29 2c 0a LOCK2, REGLOB),.
2090: 20 20 20 20 20 20 20 20 27 7b 27 3a 20 52 65 67 '{': Reg
20a0: 45 78 70 28 27 28 5b 7b 7d 5d 29 7c 27 20 20 20 Exp('([{}])|'
20b0: 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c 20 52 45 47 + S_QBLOCK2, REG
20c0: 4c 4f 42 29 0a 20 20 20 20 20 20 7d 2c 0a 0a 20 LOB). },..
20d0: 20 20 20 20 20 44 45 46 41 55 4c 54 20 3d 20 27 DEFAULT = '
20e0: 7b 20 7d 27 3b 0a 0a 20 20 20 20 76 61 72 20 5f { }';.. var _
20f0: 70 61 69 72 73 20 3d 20 5b 0a 20 20 20 20 20 20 pairs = [.
2100: 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 20 20 '{', '}',.
2110: 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 20 20 '{', '}',.
2120: 2f 7b 5b 5e 7d 5d 2a 7d 2f 2c 0a 20 20 20 20 20 /{[^}]*}/,.
2130: 20 2f 5c 5c 28 5b 7b 7d 5d 29 2f 67 2c 0a 20 20 /\\([{}])/g,.
2140: 20 20 20 20 2f 5c 5c 28 7b 29 7c 7b 2f 67 2c 0a /\\({)|{/g,.
2150: 20 20 20 20 20 20 52 65 67 45 78 70 28 27 5c 5c RegExp('\\
2160: 5c 5c 28 7d 29 7c 28 5b 5b 28 7b 5d 29 7c 28 7d \\(})|([[({])|(}
2170: 29 7c 27 20 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c )|' + S_QBLOCK2,
2180: 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 20 20 REGLOB),.
2190: 44 45 46 41 55 4c 54 2c 0a 20 20 20 20 20 20 2f DEFAULT,. /
21a0: 5e 5c 73 2a 7b 5c 5e 3f 5c 73 2a 28 5b 24 5c 77 ^\s*{\^?\s*([$\w
21b0: 5d 2b 29 28 3f 3a 5c 73 2a 2c 5c 73 2a 28 5c 53 ]+)(?:\s*,\s*(\S
21c0: 2b 29 29 3f 5c 73 2b 69 6e 5c 73 2b 28 5c 53 2e +))?\s+in\s+(\S.
21d0: 2a 29 5c 73 2a 7d 2f 2c 0a 20 20 20 20 20 20 2f *)\s*}/,. /
21e0: 28 5e 7c 5b 5e 5c 5c 5d 29 7b 3d 5b 5c 53 5c 73 (^|[^\\]){=[\S\s
21f0: 5d 2a 3f 7d 2f 0a 20 20 20 20 5d 3b 0a 0a 20 20 ]*?}/. ];..
2200: 20 20 76 61 72 0a 20 20 20 20 20 20 63 61 63 68 var. cach
2210: 65 64 42 72 61 63 6b 65 74 73 20 3d 20 55 4e 44 edBrackets = UND
2220: 45 46 2c 0a 20 20 20 20 20 20 5f 72 65 67 65 78 EF,. _regex
2230: 2c 0a 20 20 20 20 20 20 5f 63 61 63 68 65 20 3d ,. _cache =
2240: 20 5b 5d 2c 0a 20 20 20 20 20 20 5f 73 65 74 74 [],. _sett
2250: 69 6e 67 73 3b 0a 0a 20 20 20 20 66 75 6e 63 74 ings;.. funct
2260: 69 6f 6e 20 5f 6c 6f 6f 70 62 61 63 6b 20 28 72 ion _loopback (r
2270: 65 29 20 7b 20 72 65 74 75 72 6e 20 72 65 20 7d e) { return re }
2280: 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f .. function _
2290: 72 65 77 72 69 74 65 20 28 72 65 2c 20 62 70 29 rewrite (re, bp)
22a0: 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 62 70 {. if (!bp
22b0: 29 20 7b 20 62 70 20 3d 20 5f 63 61 63 68 65 3b ) { bp = _cache;
22c0: 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 }. return
22d0: 6e 65 77 20 52 65 67 45 78 70 28 0a 20 20 20 20 new RegExp(.
22e0: 20 20 20 20 72 65 2e 73 6f 75 72 63 65 2e 72 65 re.source.re
22f0: 70 6c 61 63 65 28 2f 7b 2f 67 2c 20 62 70 5b 32 place(/{/g, bp[2
2300: 5d 29 2e 72 65 70 6c 61 63 65 28 2f 7d 2f 67 2c ]).replace(/}/g,
2310: 20 62 70 5b 33 5d 29 2c 20 72 65 2e 67 6c 6f 62 bp[3]), re.glob
2320: 61 6c 20 3f 20 52 45 47 4c 4f 42 20 3a 20 27 27 al ? REGLOB : ''
2330: 0a 20 20 20 20 20 20 29 0a 20 20 20 20 7d 0a 0a . ). }..
2340: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 63 72 function _cr
2350: 65 61 74 65 20 28 70 61 69 72 29 20 7b 0a 20 20 eate (pair) {.
2360: 20 20 20 20 69 66 20 28 70 61 69 72 20 3d 3d 3d if (pair ===
2370: 20 44 45 46 41 55 4c 54 29 20 7b 20 72 65 74 75 DEFAULT) { retu
2380: 72 6e 20 5f 70 61 69 72 73 20 7d 0a 0a 20 20 20 rn _pairs }..
2390: 20 20 20 76 61 72 20 61 72 72 20 3d 20 70 61 69 var arr = pai
23a0: 72 2e 73 70 6c 69 74 28 27 20 27 29 3b 0a 0a 20 r.split(' ');..
23b0: 20 20 20 20 20 69 66 20 28 61 72 72 2e 6c 65 6e if (arr.len
23c0: 67 74 68 20 21 3d 3d 20 32 20 7c 7c 20 55 4e 53 gth !== 2 || UNS
23d0: 55 50 50 4f 52 54 45 44 2e 74 65 73 74 28 70 61 UPPORTED.test(pa
23e0: 69 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 74 ir)) {. t
23f0: 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 27 hrow new Error('
2400: 55 6e 73 75 70 70 6f 72 74 65 64 20 62 72 61 63 Unsupported brac
2410: 6b 65 74 73 20 22 27 20 2b 20 70 61 69 72 20 2b kets "' + pair +
2420: 20 27 22 27 29 0a 20 20 20 20 20 20 7d 0a 20 20 '"'). }.
2430: 20 20 20 20 61 72 72 20 3d 20 61 72 72 2e 63 6f arr = arr.co
2440: 6e 63 61 74 28 70 61 69 72 2e 72 65 70 6c 61 63 ncat(pair.replac
2450: 65 28 4e 45 45 44 5f 45 53 43 41 50 45 2c 20 27 e(NEED_ESCAPE, '
2460: 5c 5c 27 29 2e 73 70 6c 69 74 28 27 20 27 29 29 \\').split(' '))
2470: 3b 0a 0a 20 20 20 20 20 20 61 72 72 5b 34 5d 20 ;.. arr[4]
2480: 3d 20 5f 72 65 77 72 69 74 65 28 61 72 72 5b 31 = _rewrite(arr[1
2490: 5d 2e 6c 65 6e 67 74 68 20 3e 20 31 20 3f 20 2f ].length > 1 ? /
24a0: 7b 5b 5c 53 5c 73 5d 2a 3f 7d 2f 20 3a 20 5f 70 {[\S\s]*?}/ : _p
24b0: 61 69 72 73 5b 34 5d 2c 20 61 72 72 29 3b 0a 20 airs[4], arr);.
24c0: 20 20 20 20 20 61 72 72 5b 35 5d 20 3d 20 5f 72 arr[5] = _r
24d0: 65 77 72 69 74 65 28 70 61 69 72 2e 6c 65 6e 67 ewrite(pair.leng
24e0: 74 68 20 3e 20 33 20 3f 20 2f 5c 5c 28 7b 7c 7d th > 3 ? /\\({|}
24f0: 29 2f 67 20 3a 20 5f 70 61 69 72 73 5b 35 5d 2c )/g : _pairs[5],
2500: 20 61 72 72 29 3b 0a 20 20 20 20 20 20 61 72 72 arr);. arr
2510: 5b 36 5d 20 3d 20 5f 72 65 77 72 69 74 65 28 5f [6] = _rewrite(_
2520: 70 61 69 72 73 5b 36 5d 2c 20 61 72 72 29 3b 0a pairs[6], arr);.
2530: 20 20 20 20 20 20 61 72 72 5b 37 5d 20 3d 20 52 arr[7] = R
2540: 65 67 45 78 70 28 27 5c 5c 5c 5c 28 27 20 2b 20 egExp('\\\\(' +
2550: 61 72 72 5b 33 5d 20 2b 20 27 29 7c 28 5b 5b 28 arr[3] + ')|([[(
2560: 7b 5d 29 7c 28 27 20 2b 20 61 72 72 5b 33 5d 20 {])|(' + arr[3]
2570: 2b 20 27 29 7c 27 20 2b 20 53 5f 51 42 4c 4f 43 + ')|' + S_QBLOC
2580: 4b 32 2c 20 52 45 47 4c 4f 42 29 3b 0a 20 20 20 K2, REGLOB);.
2590: 20 20 20 61 72 72 5b 38 5d 20 3d 20 70 61 69 72 arr[8] = pair
25a0: 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 ;. return a
25b0: 72 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 rr. }.. fu
25c0: 6e 63 74 69 6f 6e 20 5f 62 72 61 63 6b 65 74 73 nction _brackets
25d0: 20 28 72 65 4f 72 49 64 78 29 20 7b 0a 20 20 20 (reOrIdx) {.
25e0: 20 20 20 72 65 74 75 72 6e 20 72 65 4f 72 49 64 return reOrId
25f0: 78 20 69 6e 73 74 61 6e 63 65 6f 66 20 52 65 67 x instanceof Reg
2600: 45 78 70 20 3f 20 5f 72 65 67 65 78 28 72 65 4f Exp ? _regex(reO
2610: 72 49 64 78 29 20 3a 20 5f 63 61 63 68 65 5b 72 rIdx) : _cache[r
2620: 65 4f 72 49 64 78 5d 0a 20 20 20 20 7d 0a 0a 20 eOrIdx]. }..
2630: 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 70 6c _brackets.spl
2640: 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 73 70 it = function sp
2650: 6c 69 74 20 28 73 74 72 2c 20 74 6d 70 6c 2c 20 lit (str, tmpl,
2660: 5f 62 70 29 20 7b 0a 20 20 20 20 20 20 2f 2f 20 _bp) {. //
2670: 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 istanbul ignore
2680: 6e 65 78 74 3a 20 5f 62 70 20 69 73 20 66 6f 72 next: _bp is for
2690: 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a 20 20 the compiler.
26a0: 20 20 20 20 69 66 20 28 21 5f 62 70 29 20 7b 20 if (!_bp) {
26b0: 5f 62 70 20 3d 20 5f 63 61 63 68 65 3b 20 7d 0a _bp = _cache; }.
26c0: 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20 20 20 . var.
26d0: 20 20 20 70 61 72 74 73 20 3d 20 5b 5d 2c 0a 20 parts = [],.
26e0: 20 20 20 20 20 20 20 6d 61 74 63 68 2c 0a 20 20 match,.
26f0: 20 20 20 20 20 20 69 73 65 78 70 72 2c 0a 20 20 isexpr,.
2700: 20 20 20 20 20 20 73 74 61 72 74 2c 0a 20 20 20 start,.
2710: 20 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 20 20 pos,.
2720: 20 20 72 65 20 3d 20 5f 62 70 5b 36 5d 3b 0a 0a re = _bp[6];..
2730: 20 20 20 20 20 20 76 61 72 20 71 62 6c 6f 63 6b var qblock
2740: 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 76 61 s = [];. va
2750: 72 20 70 72 65 76 53 74 72 20 3d 20 27 27 3b 0a r prevStr = '';.
2760: 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b 2c 20 var mark,
2770: 6c 61 73 74 49 6e 64 65 78 3b 0a 0a 20 20 20 20 lastIndex;..
2780: 20 20 69 73 65 78 70 72 20 3d 20 73 74 61 72 74 isexpr = start
2790: 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 = re.lastIndex
27a0: 3d 20 30 3b 0a 0a 20 20 20 20 20 20 77 68 69 6c = 0;.. whil
27b0: 65 20 28 28 6d 61 74 63 68 20 3d 20 72 65 2e 65 e ((match = re.e
27c0: 78 65 63 28 73 74 72 29 29 29 20 7b 0a 0a 20 20 xec(str))) {..
27d0: 20 20 20 20 20 20 6c 61 73 74 49 6e 64 65 78 20 lastIndex
27e0: 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b 0a = re.lastIndex;.
27f0: 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 6d 61 pos = ma
2800: 74 63 68 2e 69 6e 64 65 78 3b 0a 0a 20 20 20 20 tch.index;..
2810: 20 20 20 20 69 66 20 28 69 73 65 78 70 72 29 20 if (isexpr)
2820: 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 {.. if
2830: 28 6d 61 74 63 68 5b 32 5d 29 20 7b 0a 0a 20 20 (match[2]) {..
2840: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 68 var ch
2850: 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 20 20 20 = match[2];.
2860: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 63 var rec
2870: 68 20 3d 20 46 49 4e 44 42 52 41 43 45 53 5b 63 h = FINDBRACES[c
2880: 68 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 h];.
2890: 76 61 72 20 69 78 20 3d 20 31 3b 0a 0a 20 20 20 var ix = 1;..
28a0: 20 20 20 20 20 20 20 20 20 72 65 63 68 2e 6c 61 rech.la
28b0: 73 74 49 6e 64 65 78 20 3d 20 6c 61 73 74 49 6e stIndex = lastIn
28c0: 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 dex;.
28d0: 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68 20 3d while ((match =
28e0: 20 72 65 63 68 2e 65 78 65 63 28 73 74 72 29 29 rech.exec(str))
28f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
2900: 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d 29 20 if (match[1])
2910: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
2920: 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d 20 3d if (match[1] =
2930: 3d 3d 20 63 68 29 20 7b 20 2b 2b 69 78 3b 20 7d == ch) { ++ix; }
2940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2950: 20 65 6c 73 65 20 69 66 20 28 21 2d 2d 69 78 29 else if (!--ix)
2960: 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20 20 20 { break }.
2970: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
2980: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
2990: 20 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65 78 rech.lastIndex
29a0: 20 3d 20 70 75 73 68 51 42 6c 6f 63 6b 28 6d 61 = pushQBlock(ma
29b0: 74 63 68 2e 69 6e 64 65 78 2c 20 72 65 63 68 2e tch.index, rech.
29c0: 6c 61 73 74 49 6e 64 65 78 2c 20 6d 61 74 63 68 lastIndex, match
29d0: 5b 32 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 [2]);.
29e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
29f0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }.
2a00: 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 69 re.lastIndex = i
2a10: 78 20 3f 20 73 74 72 2e 6c 65 6e 67 74 68 20 3a x ? str.length :
2a20: 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65 78 3b rech.lastIndex;
2a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e . con
2a40: 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20 tinue.
2a50: 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 }.. if
2a60: 28 21 6d 61 74 63 68 5b 33 5d 29 20 7b 0a 20 20 (!match[3]) {.
2a70: 20 20 20 20 20 20 20 20 20 20 72 65 2e 6c 61 73 re.las
2a80: 74 49 6e 64 65 78 20 3d 20 70 75 73 68 51 42 6c tIndex = pushQBl
2a90: 6f 63 6b 28 70 6f 73 2c 20 6c 61 73 74 49 6e 64 ock(pos, lastInd
2aa0: 65 78 2c 20 6d 61 74 63 68 5b 34 5d 29 3b 0a 20 ex, match[4]);.
2ab0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 conti
2ac0: 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20 7d 0a nue. }.
2ad0: 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }..
2ae0: 20 20 20 69 66 20 28 21 6d 61 74 63 68 5b 31 5d if (!match[1]
2af0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 75 6e ) {. un
2b00: 65 73 63 61 70 65 53 74 72 28 73 74 72 2e 73 6c escapeStr(str.sl
2b10: 69 63 65 28 73 74 61 72 74 2c 20 70 6f 73 29 29 ice(start, pos))
2b20: 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74 61 72 ;. star
2b30: 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 t = re.lastIndex
2b40: 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 20 3d ;. re =
2b50: 20 5f 62 70 5b 36 20 2b 20 28 69 73 65 78 70 72 _bp[6 + (isexpr
2b60: 20 5e 3d 20 31 29 5d 3b 0a 20 20 20 20 20 20 20 ^= 1)];.
2b70: 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 re.lastIndex
2b80: 3d 20 73 74 61 72 74 3b 0a 20 20 20 20 20 20 20 = start;.
2b90: 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 }. }..
2ba0: 20 20 69 66 20 28 73 74 72 20 26 26 20 73 74 61 if (str && sta
2bb0: 72 74 20 3c 20 73 74 72 2e 6c 65 6e 67 74 68 29 rt < str.length)
2bc0: 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 65 73 63 {. unesc
2bd0: 61 70 65 53 74 72 28 73 74 72 2e 73 6c 69 63 65 apeStr(str.slice
2be0: 28 73 74 61 72 74 29 29 3b 0a 20 20 20 20 20 20 (start));.
2bf0: 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73 2e 71 }.. parts.q
2c00: 62 6c 6f 63 6b 73 20 3d 20 71 62 6c 6f 63 6b 73 blocks = qblocks
2c10: 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 ;.. return
2c20: 70 61 72 74 73 0a 0a 20 20 20 20 20 20 66 75 6e parts.. fun
2c30: 63 74 69 6f 6e 20 75 6e 65 73 63 61 70 65 53 74 ction unescapeSt
2c40: 72 20 28 73 29 20 7b 0a 20 20 20 20 20 20 20 20 r (s) {.
2c50: 69 66 20 28 70 72 65 76 53 74 72 29 20 7b 0a 20 if (prevStr) {.
2c60: 20 20 20 20 20 20 20 20 20 73 20 3d 20 70 72 65 s = pre
2c70: 76 53 74 72 20 2b 20 73 3b 0a 20 20 20 20 20 20 vStr + s;.
2c80: 20 20 20 20 70 72 65 76 53 74 72 20 3d 20 27 27 prevStr = ''
2c90: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
2ca0: 20 20 20 20 69 66 20 28 74 6d 70 6c 20 7c 7c 20 if (tmpl ||
2cb0: 69 73 65 78 70 72 29 20 7b 0a 20 20 20 20 20 20 isexpr) {.
2cc0: 20 20 20 20 70 61 72 74 73 2e 70 75 73 68 28 73 parts.push(s
2cd0: 20 26 26 20 73 2e 72 65 70 6c 61 63 65 28 5f 62 && s.replace(_b
2ce0: 70 5b 35 5d 2c 20 27 24 31 27 29 29 3b 0a 20 20 p[5], '$1'));.
2cf0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 } else {.
2d00: 20 20 20 20 20 20 20 20 20 70 61 72 74 73 2e 70 parts.p
2d10: 75 73 68 28 73 29 3b 0a 20 20 20 20 20 20 20 20 ush(s);.
2d20: 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }. }..
2d30: 20 66 75 6e 63 74 69 6f 6e 20 70 75 73 68 51 42 function pushQB
2d40: 6c 6f 63 6b 28 5f 70 6f 73 2c 20 5f 6c 61 73 74 lock(_pos, _last
2d50: 49 6e 64 65 78 2c 20 73 6c 61 73 68 29 20 7b 20 Index, slash) {
2d60: 2f 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 //eslint-disable
2d70: 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 69 66 -line. if
2d80: 20 28 73 6c 61 73 68 29 20 7b 0a 20 20 20 20 20 (slash) {.
2d90: 20 20 20 20 20 5f 6c 61 73 74 49 6e 64 65 78 20 _lastIndex
2da0: 3d 20 73 6b 69 70 52 65 67 65 78 28 73 74 72 2c = skipRegex(str,
2db0: 20 5f 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 _pos);.
2dc0: 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 }.. if (t
2dd0: 6d 70 6c 20 26 26 20 5f 6c 61 73 74 49 6e 64 65 mpl && _lastInde
2de0: 78 20 3e 20 5f 70 6f 73 20 2b 20 32 29 20 7b 0a x > _pos + 2) {.
2df0: 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 20 3d mark =
2e00: 20 27 5c 75 32 30 35 37 27 20 2b 20 71 62 6c 6f '\u2057' + qblo
2e10: 63 6b 73 2e 6c 65 6e 67 74 68 20 2b 20 27 7e 27 cks.length + '~'
2e20: 3b 0a 20 20 20 20 20 20 20 20 20 20 71 62 6c 6f ;. qblo
2e30: 63 6b 73 2e 70 75 73 68 28 73 74 72 2e 73 6c 69 cks.push(str.sli
2e40: 63 65 28 5f 70 6f 73 2c 20 5f 6c 61 73 74 49 6e ce(_pos, _lastIn
2e50: 64 65 78 29 29 3b 0a 20 20 20 20 20 20 20 20 20 dex));.
2e60: 20 70 72 65 76 53 74 72 20 2b 3d 20 73 74 72 2e prevStr += str.
2e70: 73 6c 69 63 65 28 73 74 61 72 74 2c 20 5f 70 6f slice(start, _po
2e80: 73 29 20 2b 20 6d 61 72 6b 3b 0a 20 20 20 20 20 s) + mark;.
2e90: 20 20 20 20 20 73 74 61 72 74 20 3d 20 5f 6c 61 start = _la
2ea0: 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 stIndex;.
2eb0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur
2ec0: 6e 20 5f 6c 61 73 74 49 6e 64 65 78 0a 20 20 20 n _lastIndex.
2ed0: 20 20 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 }. };..
2ee0: 20 5f 62 72 61 63 6b 65 74 73 2e 68 61 73 45 78 _brackets.hasEx
2ef0: 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 68 61 pr = function ha
2f00: 73 45 78 70 72 20 28 73 74 72 29 20 7b 0a 20 20 sExpr (str) {.
2f10: 20 20 20 20 72 65 74 75 72 6e 20 5f 63 61 63 68 return _cach
2f20: 65 5b 34 5d 2e 74 65 73 74 28 73 74 72 29 0a 20 e[4].test(str).
2f30: 20 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 61 63 };.. _brac
2f40: 6b 65 74 73 2e 6c 6f 6f 70 4b 65 79 73 20 3d 20 kets.loopKeys =
2f50: 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 70 4b 65 79 function loopKey
2f60: 73 20 28 65 78 70 72 29 20 7b 0a 20 20 20 20 20 s (expr) {.
2f70: 20 76 61 72 20 6d 20 3d 20 65 78 70 72 2e 6d 61 var m = expr.ma
2f80: 74 63 68 28 5f 63 61 63 68 65 5b 39 5d 29 3b 0a tch(_cache[9]);.
2f90: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 0a . return m.
2fa0: 20 20 20 20 20 20 20 20 3f 20 7b 20 6b 65 79 3a ? { key:
2fb0: 20 6d 5b 31 5d 2c 20 70 6f 73 3a 20 6d 5b 32 5d m[1], pos: m[2]
2fc0: 2c 20 76 61 6c 3a 20 5f 63 61 63 68 65 5b 30 5d , val: _cache[0]
2fd0: 20 2b 20 6d 5b 33 5d 2e 74 72 69 6d 28 29 20 2b + m[3].trim() +
2fe0: 20 5f 63 61 63 68 65 5b 31 5d 20 7d 0a 20 20 20 _cache[1] }.
2ff0: 20 20 20 20 20 3a 20 7b 20 76 61 6c 3a 20 65 78 : { val: ex
3000: 70 72 2e 74 72 69 6d 28 29 20 7d 0a 20 20 20 20 pr.trim() }.
3010: 7d 3b 0a 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 };.. _bracket
3020: 73 2e 61 72 72 61 79 20 3d 20 66 75 6e 63 74 69 s.array = functi
3030: 6f 6e 20 61 72 72 61 79 20 28 70 61 69 72 29 20 on array (pair)
3040: 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 {. return p
3050: 61 69 72 20 3f 20 5f 63 72 65 61 74 65 28 70 61 air ? _create(pa
3060: 69 72 29 20 3a 20 5f 63 61 63 68 65 0a 20 20 20 ir) : _cache.
3070: 20 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f };.. functio
3080: 6e 20 5f 72 65 73 65 74 20 28 70 61 69 72 29 20 n _reset (pair)
3090: 7b 0a 20 20 20 20 20 20 69 66 20 28 28 70 61 69 {. if ((pai
30a0: 72 20 7c 7c 20 28 70 61 69 72 20 3d 20 44 45 46 r || (pair = DEF
30b0: 41 55 4c 54 29 29 20 21 3d 3d 20 5f 63 61 63 68 AULT)) !== _cach
30c0: 65 5b 38 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 e[8]) {.
30d0: 5f 63 61 63 68 65 20 3d 20 5f 63 72 65 61 74 65 _cache = _create
30e0: 28 70 61 69 72 29 3b 0a 20 20 20 20 20 20 20 20 (pair);.
30f0: 5f 72 65 67 65 78 20 3d 20 70 61 69 72 20 3d 3d _regex = pair ==
3100: 3d 20 44 45 46 41 55 4c 54 20 3f 20 5f 6c 6f 6f = DEFAULT ? _loo
3110: 70 62 61 63 6b 20 3a 20 5f 72 65 77 72 69 74 65 pback : _rewrite
3120: 3b 0a 20 20 20 20 20 20 20 20 5f 63 61 63 68 65 ;. _cache
3130: 5b 39 5d 20 3d 20 5f 72 65 67 65 78 28 5f 70 61 [9] = _regex(_pa
3140: 69 72 73 5b 39 5d 29 3b 0a 20 20 20 20 20 20 7d irs[9]);. }
3150: 0a 20 20 20 20 20 20 63 61 63 68 65 64 42 72 61 . cachedBra
3160: 63 6b 65 74 73 20 3d 20 70 61 69 72 3b 0a 20 20 ckets = pair;.
3170: 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f }.. functio
3180: 6e 20 5f 73 65 74 53 65 74 74 69 6e 67 73 20 28 n _setSettings (
3190: 6f 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 62 o) {. var b
31a0: 3b 0a 0a 20 20 20 20 20 20 6f 20 3d 20 6f 20 7c ;.. o = o |
31b0: 7c 20 7b 7d 3b 0a 20 20 20 20 20 20 62 20 3d 20 | {};. b =
31c0: 6f 2e 62 72 61 63 6b 65 74 73 3b 0a 20 20 20 20 o.brackets;.
31d0: 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
31e0: 72 6f 70 65 72 74 79 28 6f 2c 20 27 62 72 61 63 roperty(o, 'brac
31f0: 6b 65 74 73 27 2c 20 7b 0a 20 20 20 20 20 20 20 kets', {.
3200: 20 73 65 74 3a 20 5f 72 65 73 65 74 2c 0a 20 20 set: _reset,.
3210: 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
3220: 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 ion () { return
3230: 63 61 63 68 65 64 42 72 61 63 6b 65 74 73 20 7d cachedBrackets }
3240: 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65 72 ,. enumer
3250: 61 62 6c 65 3a 20 74 72 75 65 0a 20 20 20 20 20 able: true.
3260: 20 7d 29 3b 0a 20 20 20 20 20 20 5f 73 65 74 74 });. _sett
3270: 69 6e 67 73 20 3d 20 6f 3b 0a 20 20 20 20 20 20 ings = o;.
3280: 5f 72 65 73 65 74 28 62 29 3b 0a 20 20 20 20 7d _reset(b);. }
3290: 0a 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
32a0: 69 6e 65 50 72 6f 70 65 72 74 79 28 5f 62 72 61 ineProperty(_bra
32b0: 63 6b 65 74 73 2c 20 27 73 65 74 74 69 6e 67 73 ckets, 'settings
32c0: 27 2c 20 7b 0a 20 20 20 20 20 20 73 65 74 3a 20 ', {. set:
32d0: 5f 73 65 74 53 65 74 74 69 6e 67 73 2c 0a 20 20 _setSettings,.
32e0: 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
32f0: 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 5f 73 n () { return _s
3300: 65 74 74 69 6e 67 73 20 7d 0a 20 20 20 20 7d 29 ettings }. })
3310: 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 ;.. /* istanb
3320: 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 3a 20 ul ignore next:
3330: 69 6e 20 74 68 65 20 62 72 6f 77 73 65 72 20 72 in the browser r
3340: 69 6f 74 20 69 73 20 61 6c 77 61 79 73 20 69 6e iot is always in
3350: 20 74 68 65 20 73 63 6f 70 65 20 2a 2f 0a 20 20 the scope */.
3360: 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 65 74 74 _brackets.sett
3370: 69 6e 67 73 20 3d 20 74 79 70 65 6f 66 20 72 69 ings = typeof ri
3380: 6f 74 20 21 3d 3d 20 27 75 6e 64 65 66 69 6e 65 ot !== 'undefine
3390: 64 27 20 26 26 20 72 69 6f 74 2e 73 65 74 74 69 d' && riot.setti
33a0: 6e 67 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 5f ngs || {};. _
33b0: 62 72 61 63 6b 65 74 73 2e 73 65 74 20 3d 20 5f brackets.set = _
33c0: 72 65 73 65 74 3b 0a 20 20 20 20 5f 62 72 61 63 reset;. _brac
33d0: 6b 65 74 73 2e 73 6b 69 70 52 65 67 65 78 20 3d kets.skipRegex =
33e0: 20 73 6b 69 70 52 65 67 65 78 3b 0a 0a 20 20 20 skipRegex;..
33f0: 20 5f 62 72 61 63 6b 65 74 73 2e 52 5f 53 54 52 _brackets.R_STR
3400: 49 4e 47 53 20 3d 20 52 5f 53 54 52 49 4e 47 53 INGS = R_STRINGS
3410: 3b 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e ;. _brackets.
3420: 52 5f 4d 4c 43 4f 4d 4d 53 20 3d 20 52 5f 4d 4c R_MLCOMMS = R_ML
3430: 43 4f 4d 4d 53 3b 0a 20 20 20 20 5f 62 72 61 63 COMMS;. _brac
3440: 6b 65 74 73 2e 53 5f 51 42 4c 4f 43 4b 53 20 3d kets.S_QBLOCKS =
3450: 20 53 5f 51 42 4c 4f 43 4b 53 3b 0a 20 20 20 20 S_QBLOCKS;.
3460: 5f 62 72 61 63 6b 65 74 73 2e 53 5f 51 42 4c 4f _brackets.S_QBLO
3470: 43 4b 32 20 3d 20 53 5f 51 42 4c 4f 43 4b 32 3b CK2 = S_QBLOCK2;
3480: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 62 72 .. return _br
3490: 61 63 6b 65 74 73 0a 0a 20 20 7d 29 28 29 3b 0a ackets.. })();.
34a0: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 6d 6f 64 . /**. * @mod
34b0: 75 6c 65 20 74 6d 70 6c 0a 20 20 20 2a 0a 20 20 ule tmpl. *.
34c0: 20 2a 20 74 6d 70 6c 20 20 20 20 20 20 20 20 20 * tmpl
34d0: 20 2d 20 52 6f 6f 74 20 66 75 6e 63 74 69 6f 6e - Root function
34e0: 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 65 , returns the te
34f0: 6d 70 6c 61 74 65 20 76 61 6c 75 65 2c 20 72 65 mplate value, re
3500: 6e 64 65 72 20 77 69 74 68 20 64 61 74 61 0a 20 nder with data.
3510: 20 20 2a 20 74 6d 70 6c 2e 68 61 73 45 78 70 72 * tmpl.hasExpr
3520: 20 20 2d 20 54 65 73 74 20 74 68 65 20 65 78 69 - Test the exi
3530: 73 74 65 6e 63 65 20 6f 66 20 61 20 65 78 70 72 stence of a expr
3540: 65 73 73 69 6f 6e 20 69 6e 73 69 64 65 20 61 20 ession inside a
3550: 73 74 72 69 6e 67 0a 20 20 20 2a 20 74 6d 70 6c string. * tmpl
3560: 2e 6c 6f 6f 70 4b 65 79 73 20 2d 20 47 65 74 20 .loopKeys - Get
3570: 74 68 65 20 6b 65 79 73 20 66 6f 72 20 61 6e 20 the keys for an
3580: 27 65 61 63 68 27 20 6c 6f 6f 70 20 28 75 73 65 'each' loop (use
3590: 64 20 62 79 20 60 5f 65 61 63 68 60 29 0a 20 20 d by `_each`).
35a0: 20 2a 2f 0a 0a 20 20 2f 2a 20 69 73 74 61 6e 62 */.. /* istanb
35b0: 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a ul ignore next *
35c0: 2f 0a 20 20 76 61 72 20 74 6d 70 6c 20 3d 20 28 /. var tmpl = (
35d0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 0a 20 function () {..
35e0: 20 20 20 76 61 72 20 5f 63 61 63 68 65 20 3d 20 var _cache =
35f0: 7b 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f {};.. functio
3600: 6e 20 5f 74 6d 70 6c 20 28 73 74 72 2c 20 64 61 n _tmpl (str, da
3610: 74 61 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 ta) {. if (
3620: 21 73 74 72 29 20 7b 20 72 65 74 75 72 6e 20 73 !str) { return s
3630: 74 72 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 tr }.. retu
3640: 72 6e 20 28 5f 63 61 63 68 65 5b 73 74 72 5d 20 rn (_cache[str]
3650: 7c 7c 20 28 5f 63 61 63 68 65 5b 73 74 72 5d 20 || (_cache[str]
3660: 3d 20 5f 63 72 65 61 74 65 28 73 74 72 29 29 29 = _create(str)))
3670: 2e 63 61 6c 6c 28 0a 20 20 20 20 20 20 20 20 64 .call(. d
3680: 61 74 61 2c 20 5f 6c 6f 67 45 72 72 2e 62 69 6e ata, _logErr.bin
3690: 64 28 7b 0a 20 20 20 20 20 20 20 20 20 20 64 61 d({. da
36a0: 74 61 3a 20 64 61 74 61 2c 0a 20 20 20 20 20 20 ta: data,.
36b0: 20 20 20 20 74 6d 70 6c 3a 20 73 74 72 0a 20 20 tmpl: str.
36c0: 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20 20 29 }). )
36d0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74 6d 70 . }.. _tmp
36e0: 6c 2e 68 61 73 45 78 70 72 20 3d 20 62 72 61 63 l.hasExpr = brac
36f0: 6b 65 74 73 2e 68 61 73 45 78 70 72 3b 0a 0a 20 kets.hasExpr;..
3700: 20 20 20 5f 74 6d 70 6c 2e 6c 6f 6f 70 4b 65 79 _tmpl.loopKey
3710: 73 20 3d 20 62 72 61 63 6b 65 74 73 2e 6c 6f 6f s = brackets.loo
3720: 70 4b 65 79 73 3b 0a 0a 20 20 20 20 2f 2f 20 69 pKeys;.. // i
3730: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e stanbul ignore n
3740: 65 78 74 0a 20 20 20 20 5f 74 6d 70 6c 2e 63 6c ext. _tmpl.cl
3750: 65 61 72 43 61 63 68 65 20 3d 20 66 75 6e 63 74 earCache = funct
3760: 69 6f 6e 20 28 29 20 7b 20 5f 63 61 63 68 65 20 ion () { _cache
3770: 3d 20 7b 7d 3b 20 7d 3b 0a 0a 20 20 20 20 5f 74 = {}; };.. _t
3780: 6d 70 6c 2e 65 72 72 6f 72 48 61 6e 64 6c 65 72 mpl.errorHandler
3790: 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 66 75 = null;.. fu
37a0: 6e 63 74 69 6f 6e 20 5f 6c 6f 67 45 72 72 20 28 nction _logErr (
37b0: 65 72 72 2c 20 63 74 78 29 20 7b 0a 0a 20 20 20 err, ctx) {..
37c0: 20 20 20 65 72 72 2e 72 69 6f 74 44 61 74 61 20 err.riotData
37d0: 3d 20 7b 0a 20 20 20 20 20 20 20 20 74 61 67 4e = {. tagN
37e0: 61 6d 65 3a 20 63 74 78 20 26 26 20 63 74 78 2e ame: ctx && ctx.
37f0: 5f 5f 20 26 26 20 63 74 78 2e 5f 5f 2e 74 61 67 __ && ctx.__.tag
3800: 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 5f 72 Name,. _r
3810: 69 6f 74 5f 69 64 3a 20 63 74 78 20 26 26 20 63 iot_id: ctx && c
3820: 74 78 2e 5f 72 69 6f 74 5f 69 64 20 20 2f 2f 65 tx._riot_id //e
3830: 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 slint-disable-li
3840: 6e 65 20 63 61 6d 65 6c 63 61 73 65 0a 20 20 20 ne camelcase.
3850: 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 69 66 20 };.. if
3860: 28 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61 6e 64 (_tmpl.errorHand
3870: 6c 65 72 29 20 7b 20 5f 74 6d 70 6c 2e 65 72 72 ler) { _tmpl.err
3880: 6f 72 48 61 6e 64 6c 65 72 28 65 72 72 29 3b 20 orHandler(err);
3890: 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 }. else if
38a0: 28 0a 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 (. typeof
38b0: 20 63 6f 6e 73 6f 6c 65 20 21 3d 3d 20 27 75 6e console !== 'un
38c0: 64 65 66 69 6e 65 64 27 20 26 26 0a 20 20 20 20 defined' &&.
38d0: 20 20 20 20 74 79 70 65 6f 66 20 63 6f 6e 73 6f typeof conso
38e0: 6c 65 2e 65 72 72 6f 72 20 3d 3d 3d 20 27 66 75 le.error === 'fu
38f0: 6e 63 74 69 6f 6e 27 0a 20 20 20 20 20 20 29 20 nction'. )
3900: 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c {. consol
3910: 65 2e 65 72 72 6f 72 28 65 72 72 2e 6d 65 73 73 e.error(err.mess
3920: 61 67 65 29 3b 0a 20 20 20 20 20 20 20 20 63 6f age);. co
3930: 6e 73 6f 6c 65 2e 6c 6f 67 28 27 3c 25 73 3e 20 nsole.log('<%s>
3940: 25 73 27 2c 20 65 72 72 2e 72 69 6f 74 44 61 74 %s', err.riotDat
3950: 61 2e 74 61 67 4e 61 6d 65 20 7c 7c 20 27 55 6e a.tagName || 'Un
3960: 6b 6e 6f 77 6e 20 74 61 67 27 2c 20 74 68 69 73 known tag', this
3970: 2e 74 6d 70 6c 29 3b 20 2f 2f 20 65 73 6c 69 6e .tmpl); // eslin
3980: 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 0a 20 t-disable-line.
3990: 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c console.l
39a0: 6f 67 28 74 68 69 73 2e 64 61 74 61 29 3b 20 2f og(this.data); /
39b0: 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 / eslint-disable
39c0: 2d 6c 69 6e 65 0a 20 20 20 20 20 20 7d 0a 20 20 -line. }.
39d0: 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f }.. functio
39e0: 6e 20 5f 63 72 65 61 74 65 20 28 73 74 72 29 20 n _create (str)
39f0: 7b 0a 20 20 20 20 20 20 76 61 72 20 65 78 70 72 {. var expr
3a00: 20 3d 20 5f 67 65 74 54 6d 70 6c 28 73 74 72 29 = _getTmpl(str)
3a10: 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 ;.. if (exp
3a20: 72 2e 73 6c 69 63 65 28 30 2c 20 31 31 29 20 21 r.slice(0, 11) !
3a30: 3d 3d 20 27 74 72 79 7b 72 65 74 75 72 6e 20 27 == 'try{return '
3a40: 29 20 7b 20 65 78 70 72 20 3d 20 27 72 65 74 75 ) { expr = 'retu
3a50: 72 6e 20 27 20 2b 20 65 78 70 72 3b 20 7d 0a 0a rn ' + expr; }..
3a60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 return new
3a70: 20 46 75 6e 63 74 69 6f 6e 28 27 45 27 2c 20 65 Function('E', e
3a80: 78 70 72 20 2b 20 27 3b 27 29 20 20 20 20 2f 2f xpr + ';') //
3a90: 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d eslint-disable-
3aa0: 6c 69 6e 65 20 6e 6f 2d 6e 65 77 2d 66 75 6e 63 line no-new-func
3ab0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 . }.. var
3ac0: 52 45 5f 44 51 55 4f 54 45 20 3d 20 2f 5c 75 32 RE_DQUOTE = /\u2
3ad0: 30 35 37 2f 67 3b 0a 20 20 20 20 76 61 72 20 52 057/g;. var R
3ae0: 45 5f 51 42 4d 41 52 4b 20 3d 20 2f 5c 75 32 30 E_QBMARK = /\u20
3af0: 35 37 28 5c 64 2b 29 7e 2f 67 3b 0a 0a 20 20 20 57(\d+)~/g;..
3b00: 20 66 75 6e 63 74 69 6f 6e 20 5f 67 65 74 54 6d function _getTm
3b10: 70 6c 20 28 73 74 72 29 20 7b 0a 20 20 20 20 20 pl (str) {.
3b20: 20 76 61 72 20 70 61 72 74 73 20 3d 20 62 72 61 var parts = bra
3b30: 63 6b 65 74 73 2e 73 70 6c 69 74 28 73 74 72 2e ckets.split(str.
3b40: 72 65 70 6c 61 63 65 28 52 45 5f 44 51 55 4f 54 replace(RE_DQUOT
3b50: 45 2c 20 27 22 27 29 2c 20 31 29 3b 0a 20 20 20 E, '"'), 1);.
3b60: 20 20 20 76 61 72 20 71 73 74 72 20 3d 20 70 61 var qstr = pa
3b70: 72 74 73 2e 71 62 6c 6f 63 6b 73 3b 0a 20 20 20 rts.qblocks;.
3b80: 20 20 20 76 61 72 20 65 78 70 72 3b 0a 0a 20 20 var expr;..
3b90: 20 20 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 if (parts.le
3ba0: 6e 67 74 68 20 3e 20 32 20 7c 7c 20 70 61 72 74 ngth > 2 || part
3bb0: 73 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 s[0]) {.
3bc0: 76 61 72 20 69 2c 20 6a 2c 20 6c 69 73 74 20 3d var i, j, list =
3bd0: 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 20 20 66 6f [];.. fo
3be0: 72 20 28 69 20 3d 20 6a 20 3d 20 30 3b 20 69 20 r (i = j = 0; i
3bf0: 3c 20 70 61 72 74 73 2e 6c 65 6e 67 74 68 3b 20 < parts.length;
3c00: 2b 2b 69 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 ++i) {..
3c10: 20 20 65 78 70 72 20 3d 20 70 61 72 74 73 5b 69 expr = parts[i
3c20: 5d 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 ];.. if
3c30: 20 28 65 78 70 72 20 26 26 20 28 65 78 70 72 20 (expr && (expr
3c40: 3d 20 69 20 26 20 31 0a 0a 20 20 20 20 20 20 20 = i & 1..
3c50: 20 20 20 20 20 20 20 3f 20 5f 70 61 72 73 65 45 ? _parseE
3c60: 78 70 72 28 65 78 70 72 2c 20 31 2c 20 71 73 74 xpr(expr, 1, qst
3c70: 72 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 r)..
3c80: 20 20 3a 20 27 22 27 20 2b 20 65 78 70 72 0a 20 : '"' + expr.
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ca0: 20 2e 72 65 70 6c 61 63 65 28 2f 5c 5c 2f 67 2c .replace(/\\/g,
3cb0: 20 27 5c 5c 5c 5c 27 29 0a 20 20 20 20 20 20 20 '\\\\').
3cc0: 20 20 20 20 20 20 20 20 20 20 20 2e 72 65 70 6c .repl
3cd0: 61 63 65 28 2f 5c 72 5c 6e 3f 7c 5c 6e 2f 67 2c ace(/\r\n?|\n/g,
3ce0: 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 '\\n').
3cf0: 20 20 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61 .repla
3d00: 63 65 28 2f 22 2f 67 2c 20 27 5c 5c 22 27 29 20 ce(/"/g, '\\"')
3d10: 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +.
3d20: 20 20 27 22 27 0a 0a 20 20 20 20 20 20 20 20 20 '"'..
3d30: 20 20 20 29 29 20 7b 20 6c 69 73 74 5b 6a 2b 2b )) { list[j++
3d40: 5d 20 3d 20 65 78 70 72 3b 20 7d 0a 0a 20 20 20 ] = expr; }..
3d50: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 }..
3d60: 65 78 70 72 20 3d 20 6a 20 3c 20 32 20 3f 20 6c expr = j < 2 ? l
3d70: 69 73 74 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 ist[0].
3d80: 20 20 20 20 3a 20 27 5b 27 20 2b 20 6c 69 73 74 : '[' + list
3d90: 2e 6a 6f 69 6e 28 27 2c 27 29 20 2b 20 27 5d 2e .join(',') + '].
3da0: 6a 6f 69 6e 28 22 22 29 27 3b 0a 0a 20 20 20 20 join("")';..
3db0: 20 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20 } else {..
3dc0: 20 20 20 20 65 78 70 72 20 3d 20 5f 70 61 72 73 expr = _pars
3dd0: 65 45 78 70 72 28 70 61 72 74 73 5b 31 5d 2c 20 eExpr(parts[1],
3de0: 30 2c 20 71 73 74 72 29 3b 0a 20 20 20 20 20 20 0, qstr);.
3df0: 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 71 73 74 }.. if (qst
3e00: 72 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 r.length) {.
3e10: 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 2e expr = expr.
3e20: 72 65 70 6c 61 63 65 28 52 45 5f 51 42 4d 41 52 replace(RE_QBMAR
3e30: 4b 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 K, function (_,
3e40: 70 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 pos) {.
3e50: 20 72 65 74 75 72 6e 20 71 73 74 72 5b 70 6f 73 return qstr[pos
3e60: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 ]. .r
3e70: 65 70 6c 61 63 65 28 2f 5c 72 2f 67 2c 20 27 5c eplace(/\r/g, '\
3e80: 5c 72 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 \r').
3e90: 20 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 2f 67 2c .replace(/\n/g,
3ea0: 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 '\\n').
3eb0: 7d 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 });. }.
3ec0: 20 20 72 65 74 75 72 6e 20 65 78 70 72 0a 20 20 return expr.
3ed0: 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 52 45 5f }.. var RE_
3ee0: 43 53 4e 41 4d 45 20 3d 20 2f 5e 28 3f 3a 28 2d CSNAME = /^(?:(-
3ef0: 3f 5b 5f 41 2d 5a 61 2d 7a 5c 78 41 30 2d 5c 78 ?[_A-Za-z\xA0-\x
3f00: 46 46 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78 46 46 FF][-\w\xA0-\xFF
3f10: 5d 2a 29 7c 5c 75 32 30 35 37 28 5c 64 2b 29 7e ]*)|\u2057(\d+)~
3f20: 29 3a 2f 3b 0a 20 20 20 20 76 61 72 0a 20 20 20 ):/;. var.
3f30: 20 20 20 52 45 5f 42 52 45 4e 44 20 3d 20 7b 0a RE_BREND = {.
3f40: 20 20 20 20 20 20 20 20 27 28 27 3a 20 2f 5b 28 '(': /[(
3f50: 29 5d 2f 67 2c 0a 20 20 20 20 20 20 20 20 27 5b )]/g,. '[
3f60: 27 3a 20 2f 5b 5b 5c 5d 5d 2f 67 2c 0a 20 20 20 ': /[[\]]/g,.
3f70: 20 20 20 20 20 27 7b 27 3a 20 2f 5b 7b 7d 5d 2f '{': /[{}]/
3f80: 67 0a 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 g. };..
3f90: 66 75 6e 63 74 69 6f 6e 20 5f 70 61 72 73 65 45 function _parseE
3fa0: 78 70 72 20 28 65 78 70 72 2c 20 61 73 54 65 78 xpr (expr, asTex
3fb0: 74 2c 20 71 73 74 72 29 20 7b 0a 0a 20 20 20 20 t, qstr) {..
3fc0: 20 20 65 78 70 72 20 3d 20 65 78 70 72 0a 20 20 expr = expr.
3fd0: 20 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f .replace(/
3fe0: 5c 73 2b 2f 67 2c 20 27 20 27 29 2e 74 72 69 6d \s+/g, ' ').trim
3ff0: 28 29 0a 20 20 20 20 20 20 20 20 2e 72 65 70 6c (). .repl
4000: 61 63 65 28 2f 5c 20 3f 28 5b 5b 5c 28 7b 7d 2c ace(/\ ?([[\({},
4010: 3f 5c 2e 3a 5d 29 5c 20 3f 2f 67 2c 20 27 24 31 ?\.:])\ ?/g, '$1
4020: 27 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 65 ');.. if (e
4030: 78 70 72 29 20 7b 0a 20 20 20 20 20 20 20 20 76 xpr) {. v
4040: 61 72 0a 20 20 20 20 20 20 20 20 20 20 6c 69 73 ar. lis
4050: 74 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 20 20 t = [],.
4060: 20 20 63 6e 74 20 3d 20 30 2c 0a 20 20 20 20 20 cnt = 0,.
4070: 20 20 20 20 20 6d 61 74 63 68 3b 0a 0a 20 20 20 match;..
4080: 20 20 20 20 20 77 68 69 6c 65 20 28 65 78 70 72 while (expr
4090: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&.
40a0: 20 20 28 6d 61 74 63 68 20 3d 20 65 78 70 72 2e (match = expr.
40b0: 6d 61 74 63 68 28 52 45 5f 43 53 4e 41 4d 45 29 match(RE_CSNAME)
40c0: 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 ) &&.
40d0: 20 20 20 21 6d 61 74 63 68 2e 69 6e 64 65 78 0a !match.index.
40e0: 20 20 20 20 20 20 20 20 20 20 29 20 7b 0a 20 20 ) {.
40f0: 20 20 20 20 20 20 20 20 76 61 72 0a 20 20 20 20 var.
4100: 20 20 20 20 20 20 20 20 6b 65 79 2c 0a 20 20 20 key,.
4110: 20 20 20 20 20 20 20 20 20 6a 73 62 2c 0a 20 20 jsb,.
4120: 20 20 20 20 20 20 20 20 20 20 72 65 20 3d 20 2f re = /
4130: 2c 7c 28 5b 5b 7b 28 5d 29 7c 24 2f 67 3b 0a 0a ,|([[{(])|$/g;..
4140: 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d expr =
4150: 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f 6e RegExp.rightCon
4160: 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 text;.
4170: 6b 65 79 20 20 3d 20 6d 61 74 63 68 5b 32 5d 20 key = match[2]
4180: 3f 20 71 73 74 72 5b 6d 61 74 63 68 5b 32 5d 5d ? qstr[match[2]]
4190: 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 2e 74 72 .slice(1, -1).tr
41a0: 69 6d 28 29 2e 72 65 70 6c 61 63 65 28 2f 5c 73 im().replace(/\s
41b0: 2b 2f 67 2c 20 27 20 27 29 20 3a 20 6d 61 74 63 +/g, ' ') : matc
41c0: 68 5b 31 5d 3b 0a 0a 20 20 20 20 20 20 20 20 20 h[1];..
41d0: 20 77 68 69 6c 65 20 28 6a 73 62 20 3d 20 28 6d while (jsb = (m
41e0: 61 74 63 68 20 3d 20 72 65 2e 65 78 65 63 28 65 atch = re.exec(e
41f0: 78 70 72 29 29 5b 31 5d 29 20 7b 20 73 6b 69 70 xpr))[1]) { skip
4200: 42 72 61 63 65 73 28 6a 73 62 2c 20 72 65 29 3b Braces(jsb, re);
4210: 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 6a 73 }.. js
4220: 62 20 20 3d 20 65 78 70 72 2e 73 6c 69 63 65 28 b = expr.slice(
4230: 30 2c 20 6d 61 74 63 68 2e 69 6e 64 65 78 29 3b 0, match.index);
4240: 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 . expr
4250: 3d 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f = RegExp.rightCo
4260: 6e 74 65 78 74 3b 0a 0a 20 20 20 20 20 20 20 20 ntext;..
4270: 20 20 6c 69 73 74 5b 63 6e 74 2b 2b 5d 20 3d 20 list[cnt++] =
4280: 5f 77 72 61 70 45 78 70 72 28 6a 73 62 2c 20 31 _wrapExpr(jsb, 1
4290: 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20 , key);.
42a0: 7d 0a 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 }.. expr
42b0: 3d 20 21 63 6e 74 20 3f 20 5f 77 72 61 70 45 78 = !cnt ? _wrapEx
42c0: 70 72 28 65 78 70 72 2c 20 61 73 54 65 78 74 29 pr(expr, asText)
42d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 . :
42e0: 63 6e 74 20 3e 20 31 20 3f 20 27 5b 27 20 2b 20 cnt > 1 ? '[' +
42f0: 6c 69 73 74 2e 6a 6f 69 6e 28 27 2c 27 29 20 2b list.join(',') +
4300: 20 27 5d 2e 6a 6f 69 6e 28 22 20 22 29 2e 74 72 '].join(" ").tr
4310: 69 6d 28 29 27 20 3a 20 6c 69 73 74 5b 30 5d 3b im()' : list[0];
4320: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 . }. r
4330: 65 74 75 72 6e 20 65 78 70 72 0a 0a 20 20 20 20 eturn expr..
4340: 20 20 66 75 6e 63 74 69 6f 6e 20 73 6b 69 70 42 function skipB
4350: 72 61 63 65 73 20 28 63 68 2c 20 72 65 29 20 7b races (ch, re) {
4360: 0a 20 20 20 20 20 20 20 20 76 61 72 0a 20 20 20 . var.
4370: 20 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20 20 20 mm,.
4380: 20 20 20 20 20 6c 76 20 3d 20 31 2c 0a 20 20 20 lv = 1,.
4390: 20 20 20 20 20 20 20 69 72 20 3d 20 52 45 5f 42 ir = RE_B
43a0: 52 45 4e 44 5b 63 68 5d 3b 0a 0a 20 20 20 20 20 REND[ch];..
43b0: 20 20 20 69 72 2e 6c 61 73 74 49 6e 64 65 78 20 ir.lastIndex
43c0: 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b 0a = re.lastIndex;.
43d0: 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6d while (m
43e0: 6d 20 3d 20 69 72 2e 65 78 65 63 28 65 78 70 72 m = ir.exec(expr
43f0: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 )) {. i
4400: 66 20 28 6d 6d 5b 30 5d 20 3d 3d 3d 20 63 68 29 f (mm[0] === ch)
4410: 20 7b 20 2b 2b 6c 76 3b 20 7d 0a 20 20 20 20 20 { ++lv; }.
4420: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 2d else if (!-
4430: 2d 6c 76 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 -lv) { break }.
4440: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
4450: 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 re.lastIndex =
4460: 6c 76 20 3f 20 65 78 70 72 2e 6c 65 6e 67 74 68 lv ? expr.length
4470: 20 3a 20 69 72 2e 6c 61 73 74 49 6e 64 65 78 3b : ir.lastIndex;
4480: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a . }. }..
4490: 20 20 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 // istanbul
44a0: 69 67 6e 6f 72 65 20 6e 65 78 74 3a 20 6e 6f 74 ignore next: not
44b0: 20 62 6f 74 68 0a 20 20 20 20 76 61 72 20 2f 2f both. var //
44c0: 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d eslint-disable-
44d0: 6e 65 78 74 2d 6c 69 6e 65 20 6d 61 78 2d 6c 65 next-line max-le
44e0: 6e 0a 20 20 20 20 20 20 4a 53 5f 43 4f 4e 54 45 n. JS_CONTE
44f0: 58 54 20 3d 20 27 22 69 6e 20 74 68 69 73 3f 74 XT = '"in this?t
4500: 68 69 73 3a 27 20 2b 20 28 74 79 70 65 6f 66 20 his:' + (typeof
4510: 77 69 6e 64 6f 77 20 21 3d 3d 20 27 6f 62 6a 65 window !== 'obje
4520: 63 74 27 20 3f 20 27 67 6c 6f 62 61 6c 27 20 3a ct' ? 'global' :
4530: 20 27 77 69 6e 64 6f 77 27 29 20 2b 20 27 29 2e 'window') + ').
4540: 27 2c 0a 20 20 20 20 20 20 4a 53 5f 56 41 52 4e ',. JS_VARN
4550: 41 4d 45 20 3d 20 2f 5b 2c 7b 5d 5b 5c 24 5c 77 AME = /[,{][\$\w
4560: 5d 2b 28 3f 3d 3a 29 7c 28 5e 20 2a 7c 5b 5e 24 ]+(?=:)|(^ *|[^$
4570: 5c 77 5c 2e 7b 5d 29 28 3f 21 28 3f 3a 74 79 70 \w\.{])(?!(?:typ
4580: 65 6f 66 7c 74 72 75 65 7c 66 61 6c 73 65 7c 6e eof|true|false|n
4590: 75 6c 6c 7c 75 6e 64 65 66 69 6e 65 64 7c 69 6e ull|undefined|in
45a0: 7c 69 6e 73 74 61 6e 63 65 6f 66 7c 69 73 28 3f |instanceof|is(?
45b0: 3a 46 69 6e 69 74 65 7c 4e 61 4e 29 7c 76 6f 69 :Finite|NaN)|voi
45c0: 64 7c 4e 61 4e 7c 6e 65 77 7c 44 61 74 65 7c 52 d|NaN|new|Date|R
45d0: 65 67 45 78 70 7c 4d 61 74 68 29 28 3f 21 5b 24 egExp|Math)(?![$
45e0: 5c 77 5d 29 29 28 5b 24 5f 41 2d 5a 61 2d 7a 5d \w]))([$_A-Za-z]
45f0: 5b 24 5c 77 5d 2a 29 2f 67 2c 0a 20 20 20 20 20 [$\w]*)/g,.
4600: 20 4a 53 5f 4e 4f 50 52 4f 50 53 20 3d 20 2f 5e JS_NOPROPS = /^
4610: 28 3f 3d 28 5c 2e 5b 24 5c 77 5d 2b 29 29 5c 31 (?=(\.[$\w]+))\1
4620: 28 3f 3a 5b 5e 2e 5b 28 5d 7c 24 29 2f 3b 0a 0a (?:[^.[(]|$)/;..
4630: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 77 72 function _wr
4640: 61 70 45 78 70 72 20 28 65 78 70 72 2c 20 61 73 apExpr (expr, as
4650: 54 65 78 74 2c 20 6b 65 79 29 20 7b 0a 20 20 20 Text, key) {.
4660: 20 20 20 76 61 72 20 74 62 3b 0a 0a 20 20 20 20 var tb;..
4670: 20 20 65 78 70 72 20 3d 20 65 78 70 72 2e 72 65 expr = expr.re
4680: 70 6c 61 63 65 28 4a 53 5f 56 41 52 4e 41 4d 45 place(JS_VARNAME
4690: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6d 61 74 63 , function (matc
46a0: 68 2c 20 70 2c 20 6d 76 61 72 2c 20 70 6f 73 2c h, p, mvar, pos,
46b0: 20 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 s) {. if
46c0: 20 28 6d 76 61 72 29 20 7b 0a 20 20 20 20 20 20 (mvar) {.
46d0: 20 20 20 20 70 6f 73 20 3d 20 74 62 20 3f 20 30 pos = tb ? 0
46e0: 20 3a 20 70 6f 73 20 2b 20 6d 61 74 63 68 2e 6c : pos + match.l
46f0: 65 6e 67 74 68 3b 0a 0a 20 20 20 20 20 20 20 20 ength;..
4700: 20 20 69 66 20 28 6d 76 61 72 20 21 3d 3d 20 27 if (mvar !== '
4710: 74 68 69 73 27 20 26 26 20 6d 76 61 72 20 21 3d this' && mvar !=
4720: 3d 20 27 67 6c 6f 62 61 6c 27 20 26 26 20 6d 76 = 'global' && mv
4730: 61 72 20 21 3d 3d 20 27 77 69 6e 64 6f 77 27 29 ar !== 'window')
4740: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d {. m
4750: 61 74 63 68 20 3d 20 70 20 2b 20 27 28 22 27 20 atch = p + '("'
4760: 2b 20 6d 76 61 72 20 2b 20 4a 53 5f 43 4f 4e 54 + mvar + JS_CONT
4770: 45 58 54 20 2b 20 6d 76 61 72 3b 0a 20 20 20 20 EXT + mvar;.
4780: 20 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 29 if (pos)
4790: 20 7b 20 74 62 20 3d 20 28 73 20 3d 20 73 5b 70 { tb = (s = s[p
47a0: 6f 73 5d 29 20 3d 3d 3d 20 27 2e 27 20 7c 7c 20 os]) === '.' ||
47b0: 73 20 3d 3d 3d 20 27 28 27 20 7c 7c 20 73 20 3d s === '(' || s =
47c0: 3d 3d 20 27 5b 27 3b 20 7d 0a 20 20 20 20 20 20 == '['; }.
47d0: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 70 } else if (p
47e0: 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 os) {.
47f0: 20 20 74 62 20 3d 20 21 4a 53 5f 4e 4f 50 52 4f tb = !JS_NOPRO
4800: 50 53 2e 74 65 73 74 28 73 2e 73 6c 69 63 65 28 PS.test(s.slice(
4810: 70 6f 73 29 29 3b 0a 20 20 20 20 20 20 20 20 20 pos));.
4820: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }.
4830: 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 63 return matc
4840: 68 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 h. });..
4850: 20 20 20 69 66 20 28 74 62 29 20 7b 0a 20 20 20 if (tb) {.
4860: 20 20 20 20 20 65 78 70 72 20 3d 20 27 74 72 79 expr = 'try
4870: 7b 72 65 74 75 72 6e 20 27 20 2b 20 65 78 70 72 {return ' + expr
4880: 20 2b 20 27 7d 63 61 74 63 68 28 65 29 7b 45 28 + '}catch(e){E(
4890: 65 2c 74 68 69 73 29 7d 27 3b 0a 20 20 20 20 20 e,this)}';.
48a0: 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 6b 65 }.. if (ke
48b0: 79 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 65 78 y) {.. ex
48c0: 70 72 20 3d 20 28 74 62 0a 20 20 20 20 20 20 20 pr = (tb.
48d0: 20 20 20 20 20 3f 20 27 66 75 6e 63 74 69 6f 6e ? 'function
48e0: 28 29 7b 27 20 2b 20 65 78 70 72 20 2b 20 27 7d (){' + expr + '}
48f0: 2e 63 61 6c 6c 28 74 68 69 73 29 27 20 3a 20 27 .call(this)' : '
4900: 28 27 20 2b 20 65 78 70 72 20 2b 20 27 29 27 0a (' + expr + ')'.
4910: 20 20 20 20 20 20 20 20 20 20 29 20 2b 20 27 3f ) + '?
4920: 22 27 20 2b 20 6b 65 79 20 2b 20 27 22 3a 22 22 "' + key + '":""
4930: 27 3b 0a 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 ';.. } else
4940: 20 69 66 20 28 61 73 54 65 78 74 29 20 7b 0a 0a if (asText) {..
4950: 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 27 expr = '
4960: 66 75 6e 63 74 69 6f 6e 28 76 29 7b 27 20 2b 20 function(v){' +
4970: 28 74 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 (tb.
4980: 3f 20 65 78 70 72 2e 72 65 70 6c 61 63 65 28 27 ? expr.replace('
4990: 72 65 74 75 72 6e 20 27 2c 20 27 76 3d 27 29 20 return ', 'v=')
49a0: 3a 20 27 76 3d 28 27 20 2b 20 65 78 70 72 20 2b : 'v=(' + expr +
49b0: 20 27 29 27 0a 20 20 20 20 20 20 20 20 20 20 29 ')'. )
49c0: 20 2b 20 27 3b 72 65 74 75 72 6e 20 76 7c 7c 76 + ';return v||v
49d0: 3d 3d 3d 30 3f 76 3a 22 22 7d 2e 63 61 6c 6c 28 ===0?v:""}.call(
49e0: 74 68 69 73 29 27 3b 0a 20 20 20 20 20 20 7d 0a this)';. }.
49f0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 . return ex
4a00: 70 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74 pr. }.. _t
4a10: 6d 70 6c 2e 76 65 72 73 69 6f 6e 20 3d 20 62 72 mpl.version = br
4a20: 61 63 6b 65 74 73 2e 76 65 72 73 69 6f 6e 20 3d ackets.version =
4a30: 20 27 76 33 2e 30 2e 38 27 3b 0a 0a 20 20 20 20 'v3.0.8';..
4a40: 72 65 74 75 72 6e 20 5f 74 6d 70 6c 0a 0a 20 20 return _tmpl..
4a50: 7d 29 28 29 3b 0a 0a 20 20 2f 2a 20 69 73 74 61 })();.. /* ista
4a60: 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 nbul ignore next
4a70: 20 2a 2f 0a 20 20 76 61 72 20 6f 62 73 65 72 76 */. var observ
4a80: 61 62 6c 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 able = function(
4a90: 65 6c 29 20 7b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 el) {.. /**.
4aa0: 20 20 20 20 2a 20 45 78 74 65 6e 64 20 74 68 65 * Extend the
4ab0: 20 6f 72 69 67 69 6e 61 6c 20 6f 62 6a 65 63 74 original object
4ac0: 20 6f 72 20 63 72 65 61 74 65 20 61 20 6e 65 77 or create a new
4ad0: 20 65 6d 70 74 79 20 6f 6e 65 0a 20 20 20 20 20 empty one.
4ae0: 2a 20 40 74 79 70 65 20 7b 20 4f 62 6a 65 63 74 * @type { Object
4af0: 20 7d 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 }. */..
4b00: 65 6c 20 3d 20 65 6c 20 7c 7c 20 7b 7d 3b 0a 0a el = el || {};..
4b10: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 50 /**. * P
4b20: 72 69 76 61 74 65 20 76 61 72 69 61 62 6c 65 73 rivate variables
4b30: 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 . */. var
4b40: 20 63 61 6c 6c 62 61 63 6b 73 20 3d 20 7b 7d 2c callbacks = {},
4b50: 0a 20 20 20 20 20 20 73 6c 69 63 65 20 3d 20 41 . slice = A
4b60: 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 rray.prototype.s
4b70: 6c 69 63 65 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 lice;.. /**.
4b80: 20 20 20 20 2a 20 50 75 62 6c 69 63 20 41 70 69 * Public Api
4b90: 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 2f 2f . */.. //
4ba0: 20 65 78 74 65 6e 64 20 74 68 65 20 65 6c 20 6f extend the el o
4bb0: 62 6a 65 63 74 20 61 64 64 69 6e 67 20 74 68 65 bject adding the
4bc0: 20 6f 62 73 65 72 76 61 62 6c 65 20 6d 65 74 68 observable meth
4bd0: 6f 64 73 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64 ods. Object.d
4be0: 65 66 69 6e 65 50 72 6f 70 65 72 74 69 65 73 28 efineProperties(
4bf0: 65 6c 2c 20 7b 0a 20 20 20 20 20 20 2f 2a 2a 0a el, {. /**.
4c00: 20 20 20 20 20 20 20 2a 20 4c 69 73 74 65 6e 20 * Listen
4c10: 74 6f 20 74 68 65 20 67 69 76 65 6e 20 60 65 76 to the given `ev
4c20: 65 6e 74 60 20 61 6e 64 73 0a 20 20 20 20 20 20 ent` ands.
4c30: 20 2a 20 65 78 65 63 75 74 65 20 74 68 65 20 60 * execute the `
4c40: 63 61 6c 6c 62 61 63 6b 60 20 65 61 63 68 20 74 callback` each t
4c50: 69 6d 65 20 61 6e 20 65 76 65 6e 74 20 69 73 20 ime an event is
4c60: 74 72 69 67 67 65 72 65 64 2e 0a 20 20 20 20 20 triggered..
4c70: 20 20 2a 20 40 70 61 72 61 6d 20 20 7b 20 53 74 * @param { St
4c80: 72 69 6e 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 ring } event - e
4c90: 76 65 6e 74 20 69 64 0a 20 20 20 20 20 20 20 2a vent id. *
4ca0: 20 40 70 61 72 61 6d 20 20 7b 20 46 75 6e 63 74 @param { Funct
4cb0: 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 ion } fn - callb
4cc0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 ack function.
4cd0: 20 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b * @returns {
4ce0: 20 4f 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 Object } el.
4cf0: 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 6f 6e 3a */. on:
4d00: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 {. value
4d10: 3a 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 : function(event
4d20: 2c 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 , fn) {.
4d30: 20 20 69 66 20 28 74 79 70 65 6f 66 20 66 6e 20 if (typeof fn
4d40: 3d 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29 0a 20 == 'function').
4d50: 20 20 20 20 20 20 20 20 20 20 20 7b 20 28 63 61 { (ca
4d60: 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 20 3d llbacks[event] =
4d70: 20 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 callbacks[event
4d80: 5d 20 7c 7c 20 5b 5d 29 2e 70 75 73 68 28 66 6e ] || []).push(fn
4d90: 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 20 72 ); }. r
4da0: 65 74 75 72 6e 20 65 6c 0a 20 20 20 20 20 20 20 eturn el.
4db0: 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d },. enum
4dc0: 65 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 erable: false,.
4dd0: 20 20 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a writable:
4de0: 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 false,.
4df0: 63 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 66 61 configurable: fa
4e00: 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 0a 20 20 lse. },..
4e10: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 20 20 2a /**. *
4e20: 20 52 65 6d 6f 76 65 73 20 74 68 65 20 67 69 76 Removes the giv
4e30: 65 6e 20 60 65 76 65 6e 74 60 20 6c 69 73 74 65 en `event` liste
4e40: 6e 65 72 73 0a 20 20 20 20 20 20 20 2a 20 40 70 ners. * @p
4e50: 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
4e60: 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 } event - event
4e70: 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72 id. * @par
4e80: 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 am { Function
4e90: 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20 } fn - callback
4ea0: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 function.
4eb0: 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a * @returns { Obj
4ec0: 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20 20 20 ect } el.
4ed0: 2a 2f 0a 20 20 20 20 20 20 6f 66 66 3a 20 7b 0a */. off: {.
4ee0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20 66 value: f
4ef0: 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c 20 66 unction(event, f
4f00: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 n) {. i
4f10: 66 20 28 65 76 65 6e 74 20 3d 3d 20 27 2a 27 20 f (event == '*'
4f20: 26 26 20 21 66 6e 29 20 7b 20 63 61 6c 6c 62 61 && !fn) { callba
4f30: 63 6b 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 20 cks = {}; }.
4f40: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 else {.
4f50: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6e 29 if (fn)
4f60: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
4f70: 20 76 61 72 20 61 72 72 20 3d 20 63 61 6c 6c 62 var arr = callb
4f80: 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 0a 20 20 20 acks[event];.
4f90: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for (
4fa0: 76 61 72 20 69 20 3d 20 30 2c 20 63 62 3b 20 63 var i = 0, cb; c
4fb0: 62 20 3d 20 61 72 72 20 26 26 20 61 72 72 5b 69 b = arr && arr[i
4fc0: 5d 3b 20 2b 2b 69 29 20 7b 0a 20 20 20 20 20 20 ]; ++i) {.
4fd0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 62 if (cb
4fe0: 20 3d 3d 20 66 6e 29 20 7b 20 61 72 72 2e 73 70 == fn) { arr.sp
4ff0: 6c 69 63 65 28 69 2d 2d 2c 20 31 29 3b 20 7d 0a lice(i--, 1); }.
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
5010: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
5020: 73 65 20 7b 20 64 65 6c 65 74 65 20 63 61 6c 6c se { delete call
5030: 62 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 20 7d 0a backs[event]; }.
5040: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }.
5050: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 6c 0a return el.
5060: 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 },.
5070: 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 66 enumerable: f
5080: 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 77 72 alse,. wr
5090: 69 74 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 itable: false,.
50a0: 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 configura
50b0: 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 ble: false.
50c0: 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a 0a 20 },.. /**.
50d0: 20 20 20 20 20 20 2a 20 4c 69 73 74 65 6e 20 74 * Listen t
50e0: 6f 20 74 68 65 20 67 69 76 65 6e 20 60 65 76 65 o the given `eve
50f0: 6e 74 60 20 61 6e 64 0a 20 20 20 20 20 20 20 2a nt` and. *
5100: 20 65 78 65 63 75 74 65 20 74 68 65 20 60 63 61 execute the `ca
5110: 6c 6c 62 61 63 6b 60 20 61 74 20 6d 6f 73 74 20 llback` at most
5120: 6f 6e 63 65 0a 20 20 20 20 20 20 20 2a 20 40 70 once. * @p
5130: 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
5140: 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 } event - event
5150: 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72 id. * @par
5160: 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 am { Function
5170: 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20 } fn - callback
5180: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 function.
5190: 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a * @returns { Obj
51a0: 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20 20 20 ect } el.
51b0: 2a 2f 0a 20 20 20 20 20 20 6f 6e 65 3a 20 7b 0a */. one: {.
51c0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a 20 66 value: f
51d0: 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c 20 66 unction(event, f
51e0: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 66 n) {. f
51f0: 75 6e 63 74 69 6f 6e 20 6f 6e 28 29 20 7b 0a 20 unction on() {.
5200: 20 20 20 20 20 20 20 20 20 20 20 65 6c 2e 6f 66 el.of
5210: 66 28 65 76 65 6e 74 2c 20 6f 6e 29 3b 0a 20 20 f(event, on);.
5220: 20 20 20 20 20 20 20 20 20 20 66 6e 2e 61 70 70 fn.app
5230: 6c 79 28 65 6c 2c 20 61 72 67 75 6d 65 6e 74 73 ly(el, arguments
5240: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 );. }.
5250: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
5260: 65 6c 2e 6f 6e 28 65 76 65 6e 74 2c 20 6f 6e 29 el.on(event, on)
5270: 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 . },.
5280: 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 enumerable:
5290: 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 77 false,. w
52a0: 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a ritable: false,.
52b0: 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 configur
52c0: 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20 20 20 able: false.
52d0: 20 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a 0a },.. /**.
52e0: 20 20 20 20 20 20 20 2a 20 45 78 65 63 75 74 65 * Execute
52f0: 20 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 66 75 all callback fu
5300: 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 6c 69 73 nctions that lis
5310: 74 65 6e 20 74 6f 0a 20 20 20 20 20 20 20 2a 20 ten to. *
5320: 74 68 65 20 67 69 76 65 6e 20 60 65 76 65 6e 74 the given `event
5330: 60 0a 20 20 20 20 20 20 20 2a 20 40 70 61 72 61 `. * @para
5340: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 65 m { String } e
5350: 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 69 64 0a vent - event id.
5360: 20 20 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e * @return
5370: 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65 6c 0a s { Object } el.
5380: 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 */.
5390: 74 72 69 67 67 65 72 3a 20 7b 0a 20 20 20 20 20 trigger: {.
53a0: 20 20 20 76 61 6c 75 65 3a 20 66 75 6e 63 74 69 value: functi
53b0: 6f 6e 28 65 76 65 6e 74 29 20 7b 0a 20 20 20 20 on(event) {.
53c0: 20 20 20 20 20 20 76 61 72 20 61 72 67 75 6d 65 var argume
53d0: 6e 74 73 24 31 20 3d 20 61 72 67 75 6d 65 6e 74 nts$1 = argument
53e0: 73 3b 0a 0a 0a 20 20 20 20 20 20 20 20 20 20 2f s;... /
53f0: 2f 20 67 65 74 74 69 6e 67 20 74 68 65 20 61 72 / getting the ar
5400: 67 75 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 guments.
5410: 20 20 76 61 72 20 61 72 67 6c 65 6e 20 3d 20 61 var arglen = a
5420: 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 rguments.length
5430: 2d 20 31 2c 0a 20 20 20 20 20 20 20 20 20 20 20 - 1,.
5440: 20 61 72 67 73 20 3d 20 6e 65 77 20 41 72 72 61 args = new Arra
5450: 79 28 61 72 67 6c 65 6e 29 2c 0a 20 20 20 20 20 y(arglen),.
5460: 20 20 20 20 20 20 20 66 6e 73 2c 0a 20 20 20 20 fns,.
5470: 20 20 20 20 20 20 20 20 66 6e 2c 0a 20 20 20 20 fn,.
5480: 20 20 20 20 20 20 20 20 69 3b 0a 0a 20 20 20 20 i;..
5490: 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 for (i = 0
54a0: 3b 20 69 20 3c 20 61 72 67 6c 65 6e 3b 20 69 2b ; i < arglen; i+
54b0: 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 +) {.
54c0: 20 61 72 67 73 5b 69 5d 20 3d 20 61 72 67 75 6d args[i] = argum
54d0: 65 6e 74 73 24 31 5b 69 20 2b 20 31 5d 3b 20 2f ents$1[i + 1]; /
54e0: 2f 20 73 6b 69 70 20 66 69 72 73 74 20 61 72 67 / skip first arg
54f0: 75 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 ument.
5500: 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 66 6e 73 }.. fns
5510: 20 3d 20 73 6c 69 63 65 2e 63 61 6c 6c 28 63 61 = slice.call(ca
5520: 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 20 7c llbacks[event] |
5530: 7c 20 5b 5d 2c 20 30 29 3b 0a 0a 20 20 20 20 20 | [], 0);..
5540: 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b for (i = 0;
5550: 20 66 6e 20 3d 20 66 6e 73 5b 69 5d 3b 20 2b 2b fn = fns[i]; ++
5560: 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 i) {.
5570: 20 66 6e 2e 61 70 70 6c 79 28 65 6c 2c 20 61 72 fn.apply(el, ar
5580: 67 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d gs);. }
5590: 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 .. if (
55a0: 63 61 6c 6c 62 61 63 6b 73 5b 27 2a 27 5d 20 26 callbacks['*'] &
55b0: 26 20 65 76 65 6e 74 20 21 3d 20 27 2a 27 29 0a & event != '*').
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 65 6c { el
55d0: 2e 74 72 69 67 67 65 72 2e 61 70 70 6c 79 28 65 .trigger.apply(e
55e0: 6c 2c 20 5b 27 2a 27 2c 20 65 76 65 6e 74 5d 2e l, ['*', event].
55f0: 63 6f 6e 63 61 74 28 61 72 67 73 29 29 3b 20 7d concat(args)); }
5600: 0a 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 .. retu
5610: 72 6e 20 65 6c 0a 20 20 20 20 20 20 20 20 7d 2c rn el. },
5620: 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65 72 61 . enumera
5630: 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 ble: false,.
5640: 20 20 20 20 77 72 69 74 61 62 6c 65 3a 20 66 61 writable: fa
5650: 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e lse,. con
5660: 66 69 67 75 72 61 62 6c 65 3a 20 66 61 6c 73 65 figurable: false
5670: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 29 3b . }. });
5680: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 65 6c 0a .. return el.
5690: 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20 . };.. /**.
56a0: 2a 20 53 68 6f 72 74 20 61 6c 69 61 73 20 66 6f * Short alias fo
56b0: 72 20 4f 62 6a 65 63 74 2e 67 65 74 4f 77 6e 50 r Object.getOwnP
56c0: 72 6f 70 65 72 74 79 44 65 73 63 72 69 70 74 6f ropertyDescripto
56d0: 72 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 r. */. functi
56e0: 6f 6e 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 on getPropDescri
56f0: 70 74 6f 72 20 28 6f 2c 20 6b 29 20 7b 0a 20 20 ptor (o, k) {.
5700: 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e return Object.
5710: 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79 44 65 getOwnPropertyDe
5720: 73 63 72 69 70 74 6f 72 28 6f 2c 20 6b 29 0a 20 scriptor(o, k).
5730: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 }.. /**. * C
5740: 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 20 61 heck if passed a
5750: 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 64 65 66 rgument is undef
5760: 69 6e 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d ined. * @param
5770: 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d { * } value -
5780: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
5790: 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 Boolean } -.
57a0: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 */. function is
57b0: 55 6e 64 65 66 69 6e 65 64 28 76 61 6c 75 65 29 Undefined(value)
57c0: 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74 79 {. return ty
57d0: 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 peof value === T
57e0: 5f 55 4e 44 45 46 0a 20 20 7d 0a 0a 20 20 2f 2a _UNDEF. }.. /*
57f0: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 77 68 65 *. * Check whe
5800: 74 68 65 72 20 6f 62 6a 65 63 74 27 73 20 70 72 ther object's pr
5810: 6f 70 65 72 74 79 20 63 6f 75 6c 64 20 62 65 20 operty could be
5820: 6f 76 65 72 72 69 64 64 65 6e 0a 20 20 20 2a 20 overridden. *
5830: 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 @param { Objec
5840: 74 20 7d 20 20 6f 62 6a 20 2d 20 73 6f 75 72 63 t } obj - sourc
5850: 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20 40 70 e object. * @p
5860: 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
5870: 7d 20 20 6b 65 79 20 2d 20 6f 62 6a 65 63 74 20 } key - object
5880: 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 72 property. * @r
5890: 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e eturns { Boolean
58a0: 20 7d 20 74 72 75 65 20 69 66 20 77 72 69 74 61 } true if writa
58b0: 62 6c 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 ble. */. func
58c0: 74 69 6f 6e 20 69 73 57 72 69 74 61 62 6c 65 28 tion isWritable(
58d0: 6f 62 6a 2c 20 6b 65 79 29 20 7b 0a 20 20 20 20 obj, key) {.
58e0: 76 61 72 20 64 65 73 63 72 69 70 74 6f 72 20 3d var descriptor =
58f0: 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 70 74 getPropDescript
5900: 6f 72 28 6f 62 6a 2c 20 6b 65 79 29 3b 0a 20 20 or(obj, key);.
5910: 20 20 72 65 74 75 72 6e 20 69 73 55 6e 64 65 66 return isUndef
5920: 69 6e 65 64 28 6f 62 6a 5b 6b 65 79 5d 29 20 7c ined(obj[key]) |
5930: 7c 20 64 65 73 63 72 69 70 74 6f 72 20 26 26 20 | descriptor &&
5940: 64 65 73 63 72 69 70 74 6f 72 2e 77 72 69 74 61 descriptor.writa
5950: 62 6c 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 ble. }.. /**.
5960: 20 20 2a 20 45 78 74 65 6e 64 20 61 6e 79 20 6f * Extend any o
5970: 62 6a 65 63 74 20 77 69 74 68 20 6f 74 68 65 72 bject with other
5980: 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 2a properties. *
5990: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
59a0: 63 74 20 7d 20 73 72 63 20 2d 20 73 6f 75 72 63 ct } src - sourc
59b0: 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20 40 72 e object. * @r
59c0: 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 eturns { Object
59d0: 7d 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 } the resulting
59e0: 65 78 74 65 6e 64 65 64 20 6f 62 6a 65 63 74 0a extended object.
59f0: 20 20 20 2a 0a 20 20 20 2a 20 76 61 72 20 6f 62 *. * var ob
5a00: 6a 20 3d 20 7b 20 66 6f 6f 3a 20 27 62 61 7a 27 j = { foo: 'baz'
5a10: 20 7d 0a 20 20 20 2a 20 65 78 74 65 6e 64 28 6f }. * extend(o
5a20: 62 6a 2c 20 7b 62 61 72 3a 20 27 62 61 72 27 2c bj, {bar: 'bar',
5a30: 20 66 6f 6f 3a 20 27 62 61 72 27 7d 29 0a 20 20 foo: 'bar'}).
5a40: 20 2a 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 6f * console.log(o
5a50: 62 6a 29 20 3d 3e 20 7b 62 61 72 3a 20 27 62 61 bj) => {bar: 'ba
5a60: 72 27 2c 20 66 6f 6f 3a 20 27 62 61 72 27 7d 0a r', foo: 'bar'}.
5a70: 20 20 20 2a 0a 20 20 20 2a 2f 0a 20 20 66 75 6e *. */. fun
5a80: 63 74 69 6f 6e 20 65 78 74 65 6e 64 28 73 72 63 ction extend(src
5a90: 29 20 7b 0a 20 20 20 20 76 61 72 20 6f 62 6a 3b ) {. var obj;
5aa0: 0a 20 20 20 20 76 61 72 20 69 20 3d 20 31 3b 0a . var i = 1;.
5ab0: 20 20 20 20 76 61 72 20 61 72 67 73 20 3d 20 61 var args = a
5ac0: 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 20 76 61 rguments;. va
5ad0: 72 20 6c 20 3d 20 61 72 67 73 2e 6c 65 6e 67 74 r l = args.lengt
5ae0: 68 3b 0a 0a 20 20 20 20 66 6f 72 20 28 3b 20 69 h;.. for (; i
5af0: 20 3c 20 6c 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 < l; i++) {.
5b00: 20 20 20 69 66 20 28 6f 62 6a 20 3d 20 61 72 67 if (obj = arg
5b10: 73 5b 69 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 s[i]) {.
5b20: 66 6f 72 20 28 76 61 72 20 6b 65 79 20 69 6e 20 for (var key in
5b30: 6f 62 6a 29 20 7b 0a 20 20 20 20 20 20 20 20 20 obj) {.
5b40: 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 74 68 69 // check if thi
5b50: 73 20 70 72 6f 70 65 72 74 79 20 6f 66 20 74 68 s property of th
5b60: 65 20 73 6f 75 72 63 65 20 6f 62 6a 65 63 74 20 e source object
5b70: 63 6f 75 6c 64 20 62 65 20 6f 76 65 72 72 69 64 could be overrid
5b80: 64 65 6e 0a 20 20 20 20 20 20 20 20 20 20 69 66 den. if
5b90: 20 28 69 73 57 72 69 74 61 62 6c 65 28 73 72 63 (isWritable(src
5ba0: 2c 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 , key)).
5bb0: 20 20 20 20 7b 20 73 72 63 5b 6b 65 79 5d 20 3d { src[key] =
5bc0: 20 6f 62 6a 5b 6b 65 79 5d 3b 20 7d 0a 20 20 20 obj[key]; }.
5bd0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 }. }.
5be0: 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 }. return
5bf0: 73 72 63 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 src. }.. /**.
5c00: 20 20 2a 20 41 6c 69 61 73 20 66 6f 72 20 4f 62 * Alias for Ob
5c10: 6a 65 63 74 2e 63 72 65 61 74 65 0a 20 20 20 2a ject.create. *
5c20: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 /. function cre
5c30: 61 74 65 28 73 72 63 29 20 7b 0a 20 20 20 20 72 ate(src) {. r
5c40: 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 63 72 65 eturn Object.cre
5c50: 61 74 65 28 73 72 63 29 0a 20 20 7d 0a 0a 20 20 ate(src). }..
5c60: 76 61 72 20 73 65 74 74 69 6e 67 73 20 3d 20 65 var settings = e
5c70: 78 74 65 6e 64 28 63 72 65 61 74 65 28 62 72 61 xtend(create(bra
5c80: 63 6b 65 74 73 2e 73 65 74 74 69 6e 67 73 29 2c ckets.settings),
5c90: 20 7b 0a 20 20 20 20 73 6b 69 70 41 6e 6f 6e 79 {. skipAnony
5ca0: 6d 6f 75 73 54 61 67 73 3a 20 74 72 75 65 2c 0a mousTags: true,.
5cb0: 20 20 20 20 2f 2f 20 74 68 65 20 22 76 61 6c 75 // the "valu
5cc0: 65 22 20 61 74 74 72 69 62 75 74 65 73 20 77 69 e" attributes wi
5cd0: 6c 6c 20 62 65 20 70 72 65 73 65 72 76 65 64 0a ll be preserved.
5ce0: 20 20 20 20 6b 65 65 70 56 61 6c 75 65 41 74 74 keepValueAtt
5cf0: 72 69 62 75 74 65 73 3a 20 66 61 6c 73 65 2c 0a ributes: false,.
5d00: 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 74 68 // handle th
5d10: 65 20 61 75 74 6f 20 75 70 64 61 74 65 73 20 6f e auto updates o
5d20: 6e 20 61 6e 79 20 44 4f 4d 20 65 76 65 6e 74 0a n any DOM event.
5d30: 20 20 20 20 61 75 74 6f 55 70 64 61 74 65 3a 20 autoUpdate:
5d40: 74 72 75 65 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a true. });.. /*
5d50: 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65 72 20 61 *. * Shorter a
5d60: 6e 64 20 66 61 73 74 20 77 61 79 20 74 6f 20 73 nd fast way to s
5d70: 65 6c 65 63 74 20 6d 75 6c 74 69 70 6c 65 20 6e elect multiple n
5d80: 6f 64 65 73 20 69 6e 20 74 68 65 20 44 4f 4d 0a odes in the DOM.
5d90: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
5da0: 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63 74 6f String } selecto
5db0: 72 20 2d 20 44 4f 4d 20 73 65 6c 65 63 74 6f 72 r - DOM selector
5dc0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
5dd0: 20 4f 62 6a 65 63 74 20 7d 20 63 74 78 20 2d 20 Object } ctx -
5de0: 44 4f 4d 20 6e 6f 64 65 20 77 68 65 72 65 20 74 DOM node where t
5df0: 68 65 20 74 61 72 67 65 74 73 20 6f 66 20 6f 75 he targets of ou
5e00: 72 20 73 65 61 72 63 68 20 77 69 6c 6c 20 69 73 r search will is
5e10: 20 6c 6f 63 61 74 65 64 0a 20 20 20 2a 20 40 72 located. * @r
5e20: 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 eturns { Object
5e30: 7d 20 64 6f 6d 20 6e 6f 64 65 73 20 66 6f 75 6e } dom nodes foun
5e40: 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 d. */. functi
5e50: 6f 6e 20 24 24 28 73 65 6c 65 63 74 6f 72 2c 20 on $$(selector,
5e60: 63 74 78 29 20 7b 0a 20 20 20 20 72 65 74 75 72 ctx) {. retur
5e70: 6e 20 5b 5d 2e 73 6c 69 63 65 2e 63 61 6c 6c 28 n [].slice.call(
5e80: 28 63 74 78 20 7c 7c 20 64 6f 63 75 6d 65 6e 74 (ctx || document
5e90: 29 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72 41 ).querySelectorA
5ea0: 6c 6c 28 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 ll(selector)).
5eb0: 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 }.. /**. * Cr
5ec0: 65 61 74 65 20 61 20 64 6f 63 75 6d 65 6e 74 20 eate a document
5ed0: 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 2a 20 40 text node. * @
5ee0: 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 returns { Object
5ef0: 20 7d 20 63 72 65 61 74 65 20 61 20 74 65 78 74 } create a text
5f00: 20 6e 6f 64 65 20 74 6f 20 75 73 65 20 61 73 20 node to use as
5f10: 70 6c 61 63 65 68 6f 6c 64 65 72 0a 20 20 20 2a placeholder. *
5f20: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 /. function cre
5f30: 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 ateDOMPlaceholde
5f40: 72 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e r() {. return
5f50: 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 document.create
5f60: 54 65 78 74 4e 6f 64 65 28 27 27 29 0a 20 20 7d TextNode(''). }
5f70: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 6f 67 .. /**. * Tog
5f80: 67 6c 65 20 74 68 65 20 76 69 73 69 62 69 6c 69 gle the visibili
5f90: 74 79 20 6f 66 20 61 6e 79 20 44 4f 4d 20 6e 6f ty of any DOM no
5fa0: 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 de. * @param
5fb0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 64 6f 6d { Object } dom
5fc0: 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 77 - DOM node we w
5fd0: 61 6e 74 20 74 6f 20 68 69 64 65 0a 20 20 20 2a ant to hide. *
5fe0: 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c @param { Bool
5ff0: 65 61 6e 20 7d 20 73 68 6f 77 20 2d 20 64 6f 20 ean } show - do
6000: 77 65 20 77 61 6e 74 20 74 6f 20 73 68 6f 77 20 we want to show
6010: 69 74 3f 0a 20 20 20 2a 2f 0a 0a 20 20 66 75 6e it?. */.. fun
6020: 63 74 69 6f 6e 20 74 6f 67 67 6c 65 56 69 73 69 ction toggleVisi
6030: 62 69 6c 69 74 79 28 64 6f 6d 2c 20 73 68 6f 77 bility(dom, show
6040: 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 73 74 79 6c ) {. dom.styl
6050: 65 2e 64 69 73 70 6c 61 79 20 3d 20 73 68 6f 77 e.display = show
6060: 20 3f 20 27 27 20 3a 20 27 6e 6f 6e 65 27 3b 0a ? '' : 'none';.
6070: 20 20 20 20 64 6f 6d 2e 68 69 64 64 65 6e 20 3d dom.hidden =
6080: 20 73 68 6f 77 20 3f 20 66 61 6c 73 65 20 3a 20 show ? false :
6090: 74 72 75 65 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a true;. }.. /**
60a0: 0a 20 20 20 2a 20 47 65 74 20 74 68 65 20 76 61 . * Get the va
60b0: 6c 75 65 20 6f 66 20 61 6e 79 20 44 4f 4d 20 61 lue of any DOM a
60c0: 74 74 72 69 62 75 74 65 20 6f 6e 20 61 20 6e 6f ttribute on a no
60d0: 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 de. * @param
60e0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 { Object } dom
60f0: 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 77 61 - DOM node we wa
6100: 6e 74 20 74 6f 20 70 61 72 73 65 0a 20 20 20 2a nt to parse. *
6110: 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 @param { Stri
6120: 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 ng } name - name
6130: 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 of the attribut
6140: 65 20 77 65 20 77 61 6e 74 20 74 6f 20 67 65 74 e we want to get
6150: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
6160: 20 53 74 72 69 6e 67 20 7c 20 75 6e 64 65 66 69 String | undefi
6170: 6e 65 64 20 7d 20 6e 61 6d 65 20 6f 66 20 74 68 ned } name of th
6180: 65 20 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 e node attribute
6190: 20 77 68 65 74 68 65 72 20 69 74 20 65 78 69 73 whether it exis
61a0: 74 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 ts. */. funct
61b0: 69 6f 6e 20 67 65 74 41 74 74 72 69 62 75 74 65 ion getAttribute
61c0: 28 64 6f 6d 2c 20 6e 61 6d 65 29 20 7b 0a 20 20 (dom, name) {.
61d0: 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 67 65 74 return dom.get
61e0: 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 29 0a Attribute(name).
61f0: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
6200: 52 65 6d 6f 76 65 20 61 6e 79 20 44 4f 4d 20 61 Remove any DOM a
6210: 74 74 72 69 62 75 74 65 20 66 72 6f 6d 20 61 20 ttribute from a
6220: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d node. * @param
6230: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f { Object } do
6240: 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 m - DOM node we
6250: 77 61 6e 74 20 74 6f 20 75 70 64 61 74 65 0a 20 want to update.
6260: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 * @param { S
6270: 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e tring } name - n
6280: 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f 70 65 ame of the prope
6290: 72 74 79 20 77 65 20 77 61 6e 74 20 74 6f 20 72 rty we want to r
62a0: 65 6d 6f 76 65 0a 20 20 20 2a 2f 0a 20 20 66 75 emove. */. fu
62b0: 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65 41 74 74 nction removeAtt
62c0: 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e 61 6d 65 ribute(dom, name
62d0: 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 72 65 6d 6f ) {. dom.remo
62e0: 76 65 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 veAttribute(name
62f0: 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 );. }.. /**.
6300: 20 2a 20 53 65 74 20 74 68 65 20 69 6e 6e 65 72 * Set the inner
6310: 20 68 74 6d 6c 20 6f 66 20 61 6e 79 20 44 4f 4d html of any DOM
6320: 20 6e 6f 64 65 20 53 56 47 73 20 69 6e 63 6c 75 node SVGs inclu
6330: 64 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ded. * @param
6340: 7b 20 4f 62 6a 65 63 74 20 7d 20 63 6f 6e 74 61 { Object } conta
6350: 69 6e 65 72 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 iner - DOM node
6360: 77 68 65 72 65 20 77 65 27 6c 6c 20 69 6e 6a 65 where we'll inje
6370: 63 74 20 6e 65 77 20 68 74 6d 6c 0a 20 20 20 2a ct new html. *
6380: 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 @param { String
6390: 20 7d 20 68 74 6d 6c 20 2d 20 68 74 6d 6c 20 74 } html - html t
63a0: 6f 20 69 6e 6a 65 63 74 0a 20 20 20 2a 20 40 70 o inject. * @p
63b0: 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d aram { Boolean }
63c0: 20 69 73 53 76 67 20 2d 20 73 76 67 20 74 61 67 isSvg - svg tag
63d0: 73 20 73 68 6f 75 6c 64 20 62 65 20 74 72 65 61 s should be trea
63e0: 74 65 64 20 61 20 62 69 74 20 64 69 66 66 65 72 ted a bit differ
63f0: 65 6e 74 6c 79 0a 20 20 20 2a 2f 0a 20 20 2f 2a ently. */. /*
6400: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 istanbul ignore
6410: 20 6e 65 78 74 20 2a 2f 0a 20 20 66 75 6e 63 74 next */. funct
6420: 69 6f 6e 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c ion setInnerHTML
6430: 28 63 6f 6e 74 61 69 6e 65 72 2c 20 68 74 6d 6c (container, html
6440: 2c 20 69 73 53 76 67 29 20 7b 0a 20 20 20 20 2f , isSvg) {. /
6450: 2f 20 69 6e 6e 65 72 48 54 4d 4c 20 69 73 20 6e / innerHTML is n
6460: 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 ot supported on
6470: 73 76 67 20 74 61 67 73 20 73 6f 20 77 65 20 6e svg tags so we n
6480: 65 65 74 20 74 6f 20 74 72 65 61 74 20 74 68 65 eet to treat the
6490: 6d 20 64 69 66 66 65 72 65 6e 74 6c 79 0a 20 20 m differently.
64a0: 20 20 69 66 20 28 69 73 53 76 67 29 20 7b 0a 20 if (isSvg) {.
64b0: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 var node =
64c0: 63 6f 6e 74 61 69 6e 65 72 2e 6f 77 6e 65 72 44 container.ownerD
64d0: 6f 63 75 6d 65 6e 74 2e 69 6d 70 6f 72 74 4e 6f ocument.importNo
64e0: 64 65 28 0a 20 20 20 20 20 20 20 20 6e 65 77 20 de(. new
64f0: 44 4f 4d 50 61 72 73 65 72 28 29 0a 20 20 20 20 DOMParser().
6500: 20 20 20 20 20 20 2e 70 61 72 73 65 46 72 6f 6d .parseFrom
6510: 53 74 72 69 6e 67 28 28 22 3c 73 76 67 20 78 6d String(("<svg xm
6520: 6c 6e 73 3d 5c 22 22 20 2b 20 53 56 47 5f 4e 53 lns=\"" + SVG_NS
6530: 20 2b 20 22 5c 22 3e 22 20 2b 20 68 74 6d 6c 20 + "\">" + html
6540: 2b 20 22 3c 2f 73 76 67 3e 22 29 2c 20 27 61 70 + "</svg>"), 'ap
6550: 70 6c 69 63 61 74 69 6f 6e 2f 78 6d 6c 27 29 0a plication/xml').
6560: 20 20 20 20 20 20 20 20 20 20 2e 64 6f 63 75 6d .docum
6570: 65 6e 74 45 6c 65 6d 65 6e 74 2c 0a 20 20 20 20 entElement,.
6580: 20 20 20 20 74 72 75 65 0a 20 20 20 20 20 20 29 true. )
6590: 3b 0a 0a 20 20 20 20 20 20 63 6f 6e 74 61 69 6e ;.. contain
65a0: 65 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6e er.appendChild(n
65b0: 6f 64 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 ode);. } else
65c0: 20 7b 0a 20 20 20 20 20 20 63 6f 6e 74 61 69 6e {. contain
65d0: 65 72 2e 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 68 er.innerHTML = h
65e0: 74 6d 6c 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a tml;. }. }..
65f0: 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 69 6e 69 6d /**. * Minim
6600: 69 7a 65 20 72 69 73 6b 3a 20 6f 6e 6c 79 20 7a ize risk: only z
6610: 65 72 6f 20 6f 72 20 6f 6e 65 20 5f 73 70 61 63 ero or one _spac
6620: 65 5f 20 62 65 74 77 65 65 6e 20 61 74 74 72 20 e_ between attr
6630: 26 20 76 61 6c 75 65 0a 20 20 20 2a 20 40 70 61 & value. * @pa
6640: 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d ram { String }
6650: 20 20 20 68 74 6d 6c 20 2d 20 68 74 6d 6c 20 73 html - html s
6660: 74 72 69 6e 67 20 77 65 20 77 61 6e 74 20 74 6f tring we want to
6670: 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70 61 72 parse. * @par
6680: 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 am { Function
6690: 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 6b 20 } fn - callback
66a0: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 61 70 70 6c function to appl
66b0: 79 20 6f 6e 20 61 6e 79 20 61 74 74 72 69 62 75 y on any attribu
66c0: 74 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a 20 te found. */.
66d0: 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 41 74 function walkAt
66e0: 74 72 69 62 75 74 65 73 28 68 74 6d 6c 2c 20 66 tributes(html, f
66f0: 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 21 68 74 n) {. if (!ht
6700: 6d 6c 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 ml) { return }.
6710: 20 20 20 76 61 72 20 6d 3b 0a 20 20 20 20 77 68 var m;. wh
6720: 69 6c 65 20 28 6d 20 3d 20 52 45 5f 48 54 4d 4c ile (m = RE_HTML
6730: 5f 41 54 54 52 53 2e 65 78 65 63 28 68 74 6d 6c _ATTRS.exec(html
6740: 29 29 0a 20 20 20 20 20 20 7b 20 66 6e 28 6d 5b )). { fn(m[
6750: 31 5d 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 1].toLowerCase()
6760: 2c 20 6d 5b 32 5d 20 7c 7c 20 6d 5b 33 5d 20 7c , m[2] || m[3] |
6770: 7c 20 6d 5b 34 5d 29 3b 20 7d 0a 20 20 7d 0a 0a | m[4]); }. }..
6780: 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 /**. * Creat
6790: 65 20 61 20 64 6f 63 75 6d 65 6e 74 20 66 72 61 e a document fra
67a0: 67 6d 65 6e 74 0a 20 20 20 2a 20 40 72 65 74 75 gment. * @retu
67b0: 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 rns { Object } d
67c0: 6f 63 75 6d 65 6e 74 20 66 72 61 67 6d 65 6e 74 ocument fragment
67d0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
67e0: 6e 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74 n createFragment
67f0: 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 () {. return
6800: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 44 document.createD
6810: 6f 63 75 6d 65 6e 74 46 72 61 67 6d 65 6e 74 28 ocumentFragment(
6820: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 ). }.. /**.
6830: 2a 20 49 6e 73 65 72 74 20 73 61 66 65 6c 79 20 * Insert safely
6840: 61 20 74 61 67 20 74 6f 20 66 69 78 20 23 31 39 a tag to fix #19
6850: 36 32 20 23 31 36 34 39 0a 20 20 20 2a 20 40 70 62 #1649. * @p
6860: 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 aram { HTMLEle
6870: 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 63 68 ment } root - ch
6880: 69 6c 64 72 65 6e 20 63 6f 6e 74 61 69 6e 65 72 ildren container
6890: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
68a0: 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 63 HTMLElement } c
68b0: 75 72 72 20 2d 20 6e 6f 64 65 20 74 6f 20 69 6e urr - node to in
68c0: 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72 61 6d sert. * @param
68d0: 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 { HTMLElement
68e0: 20 7d 20 6e 65 78 74 20 2d 20 6e 6f 64 65 20 74 } next - node t
68f0: 68 61 74 20 73 68 6f 75 6c 64 20 70 72 65 63 65 hat should prece
6900: 65 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 6e ed the current n
6910: 6f 64 65 20 69 6e 73 65 72 74 65 64 0a 20 20 20 ode inserted.
6920: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 61 */. function sa
6930: 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 63 feInsert(root, c
6940: 75 72 72 2c 20 6e 65 78 74 29 20 7b 0a 20 20 20 urr, next) {.
6950: 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 6f root.insertBefo
6960: 72 65 28 63 75 72 72 2c 20 6e 65 78 74 2e 70 61 re(curr, next.pa
6970: 72 65 6e 74 4e 6f 64 65 20 26 26 20 6e 65 78 74 rentNode && next
6980: 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 );. }.. /**.
6990: 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73 74 79 * Convert a sty
69a0: 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 61 20 73 le object to a s
69b0: 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 61 tring. * @para
69c0: 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 73 m { Object } s
69d0: 74 79 6c 65 20 2d 20 73 74 79 6c 65 20 6f 62 6a tyle - style obj
69e0: 65 63 74 20 77 65 20 6e 65 65 64 20 74 6f 20 70 ect we need to p
69f0: 61 72 73 65 0a 20 20 20 2a 20 40 72 65 74 75 72 arse. * @retur
6a00: 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 72 65 ns { String } re
6a10: 73 75 6c 74 69 6e 67 20 63 73 73 20 73 74 72 69 sulting css stri
6a20: 6e 67 0a 20 20 20 2a 20 40 65 78 61 6d 70 6c 65 ng. * @example
6a30: 0a 20 20 20 2a 20 73 74 79 6c 65 4f 62 6a 65 63 . * styleObjec
6a40: 74 54 6f 53 74 72 69 6e 67 28 7b 20 63 6f 6c 6f tToString({ colo
6a50: 72 3a 20 27 72 65 64 27 2c 20 68 65 69 67 68 74 r: 'red', height
6a60: 3a 20 27 31 30 70 78 27 7d 29 20 2f 2f 20 3d 3e : '10px'}) // =>
6a70: 20 27 63 6f 6c 6f 72 3a 20 72 65 64 3b 20 68 65 'color: red; he
6a80: 69 67 68 74 3a 20 31 30 70 78 27 0a 20 20 20 2a ight: 10px'. *
6a90: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 74 79 /. function sty
6aa0: 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69 6e 67 leObjectToString
6ab0: 28 73 74 79 6c 65 29 20 7b 0a 20 20 20 20 72 65 (style) {. re
6ac0: 74 75 72 6e 20 4f 62 6a 65 63 74 2e 6b 65 79 73 turn Object.keys
6ad0: 28 73 74 79 6c 65 29 2e 72 65 64 75 63 65 28 66 (style).reduce(f
6ae0: 75 6e 63 74 69 6f 6e 20 28 61 63 63 2c 20 70 72 unction (acc, pr
6af0: 6f 70 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 op) {. retu
6b00: 72 6e 20 28 61 63 63 20 2b 20 22 20 22 20 2b 20 rn (acc + " " +
6b10: 70 72 6f 70 20 2b 20 22 3a 20 22 20 2b 20 28 73 prop + ": " + (s
6b20: 74 79 6c 65 5b 70 72 6f 70 5d 29 20 2b 20 22 3b tyle[prop]) + ";
6b30: 22 29 0a 20 20 20 20 7d 2c 20 27 27 29 0a 20 20 "). }, '').
6b40: 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61 }.. /**. * Wa
6b50: 6c 6b 20 64 6f 77 6e 20 72 65 63 75 72 73 69 76 lk down recursiv
6b60: 65 6c 79 20 61 6c 6c 20 74 68 65 20 63 68 69 6c ely all the chil
6b70: 64 72 65 6e 20 74 61 67 73 20 73 74 61 72 74 69 dren tags starti
6b80: 6e 67 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a ng dom node. *
6b90: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
6ba0: 63 74 20 7d 20 20 20 64 6f 6d 20 2d 20 73 74 61 ct } dom - sta
6bb0: 72 74 69 6e 67 20 6e 6f 64 65 20 77 68 65 72 65 rting node where
6bc0: 20 77 65 20 77 69 6c 6c 20 73 74 61 72 74 20 74 we will start t
6bd0: 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20 20 20 he recursion.
6be0: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e * @param { Fun
6bf0: 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c ction } fn - cal
6c00: 6c 62 61 63 6b 20 74 6f 20 74 72 61 6e 73 66 6f lback to transfo
6c10: 72 6d 20 74 68 65 20 63 68 69 6c 64 20 6e 6f 64 rm the child nod
6c20: 65 20 6a 75 73 74 20 66 6f 75 6e 64 0a 20 20 20 e just found.
6c30: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a * @param { Obj
6c40: 65 63 74 20 7d 20 20 20 63 6f 6e 74 65 78 74 20 ect } context
6c50: 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69 6f 6e 61 - fn can optiona
6c60: 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e 20 6f 62 lly return an ob
6c70: 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 20 70 ject, which is p
6c80: 61 73 73 65 64 20 74 6f 20 63 68 69 6c 64 72 65 assed to childre
6c90: 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 n. */. functi
6ca0: 6f 6e 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d on walkNodes(dom
6cb0: 2c 20 66 6e 2c 20 63 6f 6e 74 65 78 74 29 20 7b , fn, context) {
6cc0: 0a 20 20 20 20 69 66 20 28 64 6f 6d 29 20 7b 0a . if (dom) {.
6cd0: 20 20 20 20 20 20 76 61 72 20 72 65 73 20 3d 20 var res =
6ce0: 66 6e 28 64 6f 6d 2c 20 63 6f 6e 74 65 78 74 29 fn(dom, context)
6cf0: 3b 0a 20 20 20 20 20 20 76 61 72 20 6e 65 78 74 ;. var next
6d00: 3b 0a 20 20 20 20 20 20 2f 2f 20 73 74 6f 70 20 ;. // stop
6d10: 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20 20 the recursion.
6d20: 20 20 20 20 69 66 20 28 72 65 73 20 3d 3d 3d 20 if (res ===
6d30: 66 61 6c 73 65 29 20 7b 20 72 65 74 75 72 6e 20 false) { return
6d40: 7d 0a 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20 64 }.. dom = d
6d50: 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 3b 0a 0a om.firstChild;..
6d60: 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 6f 6d while (dom
6d70: 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 65 78 74 ) {. next
6d80: 20 3d 20 64 6f 6d 2e 6e 65 78 74 53 69 62 6c 69 = dom.nextSibli
6d90: 6e 67 3b 0a 20 20 20 20 20 20 20 20 77 61 6c 6b ng;. walk
6da0: 4e 6f 64 65 73 28 64 6f 6d 2c 20 66 6e 2c 20 72 Nodes(dom, fn, r
6db0: 65 73 29 3b 0a 20 20 20 20 20 20 20 20 64 6f 6d es);. dom
6dc0: 20 3d 20 6e 65 78 74 3b 0a 20 20 20 20 20 20 7d = next;. }
6dd0: 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20 . }. }....
6de0: 76 61 72 20 64 6f 6d 20 3d 20 2f 2a 23 5f 5f 50 var dom = /*#__P
6df0: 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 URE__*/Object.fr
6e00: 65 65 7a 65 28 7b 0a 20 20 20 20 24 24 3a 20 24 eeze({. $$: $
6e10: 24 2c 0a 20 20 20 20 24 3a 20 24 2c 0a 20 20 20 $,. $: $,.
6e20: 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 createDOMPlaceh
6e30: 6f 6c 64 65 72 3a 20 63 72 65 61 74 65 44 4f 4d older: createDOM
6e40: 50 6c 61 63 65 68 6f 6c 64 65 72 2c 0a 20 20 20 Placeholder,.
6e50: 20 6d 6b 45 6c 3a 20 6d 61 6b 65 45 6c 65 6d 65 mkEl: makeEleme
6e60: 6e 74 2c 0a 20 20 20 20 73 65 74 41 74 74 72 3a nt,. setAttr:
6e70: 20 73 65 74 41 74 74 72 69 62 75 74 65 2c 0a 20 setAttribute,.
6e80: 20 20 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c toggleVisibil
6e90: 69 74 79 3a 20 74 6f 67 67 6c 65 56 69 73 69 62 ity: toggleVisib
6ea0: 69 6c 69 74 79 2c 0a 20 20 20 20 67 65 74 41 74 ility,. getAt
6eb0: 74 72 3a 20 67 65 74 41 74 74 72 69 62 75 74 65 tr: getAttribute
6ec0: 2c 0a 20 20 20 20 72 65 6d 41 74 74 72 3a 20 72 ,. remAttr: r
6ed0: 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65 2c 0a emoveAttribute,.
6ee0: 20 20 20 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c setInnerHTML
6ef0: 3a 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c 2c 0a : setInnerHTML,.
6f00: 20 20 20 20 77 61 6c 6b 41 74 74 72 73 3a 20 77 walkAttrs: w
6f10: 61 6c 6b 41 74 74 72 69 62 75 74 65 73 2c 0a 20 alkAttributes,.
6f20: 20 20 20 63 72 65 61 74 65 46 72 61 67 3a 20 63 createFrag: c
6f30: 72 65 61 74 65 46 72 61 67 6d 65 6e 74 2c 0a 20 reateFragment,.
6f40: 20 20 20 73 61 66 65 49 6e 73 65 72 74 3a 20 73 safeInsert: s
6f50: 61 66 65 49 6e 73 65 72 74 2c 0a 20 20 20 20 73 afeInsert,. s
6f60: 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69 tyleObjectToStri
6f70: 6e 67 3a 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 ng: styleObjectT
6f80: 6f 53 74 72 69 6e 67 2c 0a 20 20 20 20 77 61 6c oString,. wal
6f90: 6b 4e 6f 64 65 73 3a 20 77 61 6c 6b 4e 6f 64 65 kNodes: walkNode
6fa0: 73 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20 s. });.. /**.
6fb0: 20 20 2a 20 43 68 65 63 6b 20 61 67 61 69 6e 73 * Check agains
6fc0: 74 20 74 68 65 20 6e 75 6c 6c 20 61 6e 64 20 75 t the null and u
6fd0: 6e 64 65 66 69 6e 65 64 20 76 61 6c 75 65 73 0a ndefined values.
6fe0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
6ff0: 2a 20 7d 20 20 76 61 6c 75 65 20 2d 0a 20 20 20 * } value -.
7000: 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f 6f 6c * @returns {Bool
7010: 65 61 6e 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 ean} -. */. f
7020: 75 6e 63 74 69 6f 6e 20 69 73 4e 69 6c 28 76 61 unction isNil(va
7030: 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 lue) {. retur
7040: 6e 20 69 73 55 6e 64 65 66 69 6e 65 64 28 76 61 n isUndefined(va
7050: 6c 75 65 29 20 7c 7c 20 76 61 6c 75 65 20 3d 3d lue) || value ==
7060: 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a = null. }.. /*
7070: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 *. * Check if
7080: 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20 passed argument
7090: 69 73 20 65 6d 70 74 79 2e 20 44 69 66 66 65 72 is empty. Differ
70a0: 65 6e 74 20 66 72 6f 6d 20 66 61 6c 73 79 2c 20 ent from falsy,
70b0: 62 65 63 61 75 73 65 20 77 65 20 64 6f 6e 74 20 because we dont
70c0: 63 6f 6e 73 69 64 65 72 20 30 20 6f 72 20 66 61 consider 0 or fa
70d0: 6c 73 65 20 74 6f 20 62 65 20 62 6c 61 6e 6b 0a lse to be blank.
70e0: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 2a 20 * @param { *
70f0: 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40 } value -. * @
7100: 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 returns { Boolea
7110: 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 n } -. */. fu
7120: 6e 63 74 69 6f 6e 20 69 73 42 6c 61 6e 6b 28 76 nction isBlank(v
7130: 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 alue) {. retu
7140: 72 6e 20 69 73 4e 69 6c 28 76 61 6c 75 65 29 20 rn isNil(value)
7150: 7c 7c 20 76 61 6c 75 65 20 3d 3d 3d 20 27 27 0a || value === ''.
7160: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
7170: 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 20 Check if passed
7180: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 66 75 argument is a fu
7190: 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 nction. * @par
71a0: 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 am { * } value
71b0: 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 -. * @returns
71c0: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 { Boolean } -.
71d0: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
71e0: 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c 75 65 isFunction(value
71f0: 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74 ) {. return t
7200: 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 ypeof value ===
7210: 54 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 7d 0a 0a T_FUNCTION. }..
7220: 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b /**. * Check
7230: 20 69 66 20 70 61 73 73 65 64 20 61 72 67 75 6d if passed argum
7240: 65 6e 74 20 69 73 20 61 6e 20 6f 62 6a 65 63 74 ent is an object
7250: 2c 20 65 78 63 6c 75 64 65 20 6e 75 6c 6c 0a 20 , exclude null.
7260: 20 20 2a 20 4e 4f 54 45 3a 20 75 73 65 20 69 73 * NOTE: use is
7270: 4f 62 6a 65 63 74 28 78 29 20 26 26 20 21 69 73 Object(x) && !is
7280: 41 72 72 61 79 28 78 29 20 74 6f 20 65 78 63 6c Array(x) to excl
7290: 75 64 65 73 20 61 72 72 61 79 73 2e 0a 20 20 20 udes arrays..
72a0: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d * @param { * }
72b0: 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40 72 value -. * @r
72c0: 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e eturns { Boolean
72d0: 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e } -. */. fun
72e0: 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 74 28 76 ction isObject(v
72f0: 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 alue) {. retu
7300: 72 6e 20 76 61 6c 75 65 20 26 26 20 74 79 70 65 rn value && type
7310: 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f 4f of value === T_O
7320: 42 4a 45 43 54 20 2f 2f 20 74 79 70 65 6f 66 20 BJECT // typeof
7330: 6e 75 6c 6c 20 69 73 20 27 6f 62 6a 65 63 74 27 null is 'object'
7340: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
7350: 20 43 68 65 63 6b 20 69 66 20 61 20 44 4f 4d 20 Check if a DOM
7360: 6e 6f 64 65 20 69 73 20 61 6e 20 73 76 67 20 74 node is an svg t
7370: 61 67 20 6f 72 20 70 61 72 74 20 6f 66 20 61 6e ag or part of an
7380: 20 73 76 67 0a 20 20 20 2a 20 40 70 61 72 61 6d svg. * @param
7390: 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 { HTMLElement
73a0: 20 7d 20 20 65 6c 20 2d 20 6e 6f 64 65 20 77 65 } el - node we
73b0: 20 77 61 6e 74 20 74 6f 20 74 65 73 74 0a 20 20 want to test.
73c0: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f 6f * @returns {Boo
73d0: 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 20 69 74 lean} true if it
73e0: 27 73 20 61 6e 20 73 76 67 20 6e 6f 64 65 0a 20 's an svg node.
73f0: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
7400: 69 73 53 76 67 28 65 6c 29 20 7b 0a 20 20 20 20 isSvg(el) {.
7410: 76 61 72 20 6f 77 6e 65 72 20 3d 20 65 6c 2e 6f var owner = el.o
7420: 77 6e 65 72 53 56 47 45 6c 65 6d 65 6e 74 3b 0a wnerSVGElement;.
7430: 20 20 20 20 72 65 74 75 72 6e 20 21 21 6f 77 6e return !!own
7440: 65 72 20 7c 7c 20 6f 77 6e 65 72 20 3d 3d 3d 20 er || owner ===
7450: 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a null. }.. /**.
7460: 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 70 61 * Check if pa
7470: 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20 69 73 ssed argument is
7480: 20 61 20 6b 69 6e 64 20 6f 66 20 61 72 72 61 79 a kind of array
7490: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
74a0: 20 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 * } value -.
74b0: 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f * @returns { Boo
74c0: 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 lean } -. */.
74d0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72 72 61 function isArra
74e0: 79 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 y(value) {. r
74f0: 65 74 75 72 6e 20 41 72 72 61 79 2e 69 73 41 72 eturn Array.isAr
7500: 72 61 79 28 76 61 6c 75 65 29 20 7c 7c 20 76 61 ray(value) || va
7510: 6c 75 65 20 69 6e 73 74 61 6e 63 65 6f 66 20 41 lue instanceof A
7520: 72 72 61 79 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a rray. }.. /**.
7530: 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68 * Check if th
7540: 65 20 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e e passed argumen
7550: 74 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 61 t is a boolean a
7560: 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 70 ttribute. * @p
7570: 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
7580: 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 40 } value -. * @
7590: 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 returns { Boolea
75a0: 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 n } -. */. fu
75b0: 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 41 74 74 nction isBoolAtt
75c0: 72 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 r(value) {. r
75d0: 65 74 75 72 6e 20 52 45 5f 42 4f 4f 4c 5f 41 54 eturn RE_BOOL_AT
75e0: 54 52 53 2e 74 65 73 74 28 76 61 6c 75 65 29 0a TRS.test(value).
75f0: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
7600: 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 20 Check if passed
7610: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 73 74 argument is a st
7620: 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 61 6d ring. * @param
7630: 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d { * } value -
7640: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
7650: 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 Boolean } -.
7660: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 */. function is
7670: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 20 7b 0a String(value) {.
7680: 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 65 6f return typeo
7690: 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f 53 54 f value === T_ST
76a0: 52 49 4e 47 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 RING. }.... va
76b0: 72 20 63 68 65 63 6b 20 3d 20 2f 2a 23 5f 5f 50 r check = /*#__P
76c0: 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 URE__*/Object.fr
76d0: 65 65 7a 65 28 7b 0a 20 20 20 20 69 73 42 6c 61 eeze({. isBla
76e0: 6e 6b 3a 20 69 73 42 6c 61 6e 6b 2c 0a 20 20 20 nk: isBlank,.
76f0: 20 69 73 46 75 6e 63 74 69 6f 6e 3a 20 69 73 46 isFunction: isF
7700: 75 6e 63 74 69 6f 6e 2c 0a 20 20 20 20 69 73 4f unction,. isO
7710: 62 6a 65 63 74 3a 20 69 73 4f 62 6a 65 63 74 2c bject: isObject,
7720: 0a 20 20 20 20 69 73 53 76 67 3a 20 69 73 53 76 . isSvg: isSv
7730: 67 2c 0a 20 20 20 20 69 73 57 72 69 74 61 62 6c g,. isWritabl
7740: 65 3a 20 69 73 57 72 69 74 61 62 6c 65 2c 0a 20 e: isWritable,.
7750: 20 20 20 69 73 41 72 72 61 79 3a 20 69 73 41 72 isArray: isAr
7760: 72 61 79 2c 0a 20 20 20 20 69 73 42 6f 6f 6c 41 ray,. isBoolA
7770: 74 74 72 3a 20 69 73 42 6f 6f 6c 41 74 74 72 2c ttr: isBoolAttr,
7780: 0a 20 20 20 20 69 73 4e 69 6c 3a 20 69 73 4e 69 . isNil: isNi
7790: 6c 2c 0a 20 20 20 20 69 73 53 74 72 69 6e 67 3a l,. isString:
77a0: 20 69 73 53 74 72 69 6e 67 2c 0a 20 20 20 20 69 isString,. i
77b0: 73 55 6e 64 65 66 69 6e 65 64 3a 20 69 73 55 6e sUndefined: isUn
77c0: 64 65 66 69 6e 65 64 0a 20 20 7d 29 3b 0a 0a 20 defined. });..
77d0: 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 /**. * Check
77e0: 77 68 65 74 68 65 72 20 61 6e 20 61 72 72 61 79 whether an array
77f0: 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69 74 65 contains an ite
7800: 6d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 m. * @param
7810: 7b 20 41 72 72 61 79 20 7d 20 61 72 72 61 79 20 { Array } array
7820: 2d 20 74 61 72 67 65 74 20 61 72 72 61 79 0a 20 - target array.
7830: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a * @param { *
7840: 20 7d 20 69 74 65 6d 20 2d 20 69 74 65 6d 20 74 } item - item t
7850: 6f 20 74 65 73 74 0a 20 20 20 2a 20 40 72 65 74 o test. * @ret
7860: 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d urns { Boolean }
7870: 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 -. */. funct
7880: 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 28 61 72 72 ion contains(arr
7890: 61 79 2c 20 69 74 65 6d 29 20 7b 0a 20 20 20 20 ay, item) {.
78a0: 72 65 74 75 72 6e 20 61 72 72 61 79 2e 69 6e 64 return array.ind
78b0: 65 78 4f 66 28 69 74 65 6d 29 20 21 3d 3d 20 2d exOf(item) !== -
78c0: 31 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 1. }.. /**.
78d0: 2a 20 53 70 65 63 69 61 6c 69 7a 65 64 20 66 75 * Specialized fu
78e0: 6e 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 6f 70 69 nction for loopi
78f0: 6e 67 20 61 6e 20 61 72 72 61 79 2d 6c 69 6b 65 ng an array-like
7900: 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 77 69 74 68 collection with
7910: 20 60 65 61 63 68 3d 7b 7d 60 0a 20 20 20 2a 20 `each={}`. *
7920: 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 @param { Array
7930: 20 7d 20 6c 69 73 74 20 2d 20 63 6f 6c 6c 65 63 } list - collec
7940: 74 69 6f 6e 20 6f 66 20 69 74 65 6d 73 0a 20 20 tion of items.
7950: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 46 75 6e * @param {Fun
7960: 63 74 69 6f 6e 7d 20 66 6e 20 2d 20 63 61 6c 6c ction} fn - call
7970: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 back function.
7980: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41 72 * @returns { Ar
7990: 72 61 79 20 7d 20 74 68 65 20 61 72 72 61 79 20 ray } the array
79a0: 6c 6f 6f 70 65 64 0a 20 20 20 2a 2f 0a 20 20 66 looped. */. f
79b0: 75 6e 63 74 69 6f 6e 20 65 61 63 68 28 6c 69 73 unction each(lis
79c0: 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 76 61 72 t, fn) {. var
79d0: 20 6c 65 6e 20 3d 20 6c 69 73 74 20 3f 20 6c 69 len = list ? li
79e0: 73 74 2e 6c 65 6e 67 74 68 20 3a 20 30 3b 0a 20 st.length : 0;.
79f0: 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 var i = 0;.
7a00: 20 20 66 6f 72 20 28 3b 20 69 20 3c 20 6c 65 6e for (; i < len
7a10: 3b 20 69 2b 2b 29 20 7b 20 66 6e 28 6c 69 73 74 ; i++) { fn(list
7a20: 5b 69 5d 2c 20 69 29 3b 20 7d 0a 20 20 20 20 72 [i], i); }. r
7a30: 65 74 75 72 6e 20 6c 69 73 74 0a 20 20 7d 0a 0a eturn list. }..
7a40: 20 20 2f 2a 2a 0a 20 20 20 2a 20 46 61 73 74 65 /**. * Faste
7a50: 72 20 53 74 72 69 6e 67 20 73 74 61 72 74 73 57 r String startsW
7a60: 69 74 68 20 61 6c 74 65 72 6e 61 74 69 76 65 0a ith alternative.
7a70: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
7a80: 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d 20 73 String } str - s
7a90: 6f 75 72 63 65 20 73 74 72 69 6e 67 0a 20 20 20 ource string.
7aa0: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 * @param { Str
7ab0: 69 6e 67 20 7d 20 76 61 6c 75 65 20 2d 20 74 65 ing } value - te
7ac0: 73 74 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 40 st string. * @
7ad0: 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 returns { Boolea
7ae0: 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 n } -. */. fu
7af0: 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 57 69 74 nction startsWit
7b00: 68 28 73 74 72 2c 20 76 61 6c 75 65 29 20 7b 0a h(str, value) {.
7b10: 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 2e 73 return str.s
7b20: 6c 69 63 65 28 30 2c 20 76 61 6c 75 65 2e 6c 65 lice(0, value.le
7b30: 6e 67 74 68 29 20 3d 3d 3d 20 76 61 6c 75 65 0a ngth) === value.
7b40: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
7b50: 46 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 69 Function returni
7b60: 6e 67 20 61 6c 77 61 79 73 20 61 20 75 6e 69 71 ng always a uniq
7b70: 75 65 20 69 64 65 6e 74 69 66 69 65 72 0a 20 20 ue identifier.
7b80: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4e 75 * @returns { Nu
7b90: 6d 62 65 72 20 7d 20 2d 20 6e 75 6d 62 65 72 20 mber } - number
7ba0: 66 72 6f 6d 20 30 2e 2e 2e 6e 0a 20 20 20 2a 2f from 0...n. */
7bb0: 0a 20 20 76 61 72 20 75 69 64 20 3d 20 28 66 75 . var uid = (fu
7bc0: 6e 63 74 69 6f 6e 20 75 69 64 28 29 20 7b 0a 20 nction uid() {.
7bd0: 20 20 20 76 61 72 20 69 20 3d 20 2d 31 3b 0a 20 var i = -1;.
7be0: 20 20 20 72 65 74 75 72 6e 20 66 75 6e 63 74 69 return functi
7bf0: 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 2b on () { return +
7c00: 2b 69 3b 20 7d 0a 20 20 7d 29 28 29 3b 0a 0a 20 +i; }. })();..
7c10: 20 2f 2a 2a 0a 20 20 20 2a 20 48 65 6c 70 65 72 /**. * Helper
7c20: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 74 function to set
7c30: 20 61 6e 20 69 6d 6d 75 74 61 62 6c 65 20 70 72 an immutable pr
7c40: 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 operty. * @par
7c50: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 am { Object }
7c60: 65 6c 20 2d 20 6f 62 6a 65 63 74 20 77 68 65 72 el - object wher
7c70: 65 20 74 68 65 20 6e 65 77 20 70 72 6f 70 65 72 e the new proper
7c80: 74 79 20 77 69 6c 6c 20 62 65 20 73 65 74 0a 20 ty will be set.
7c90: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 * @param { S
7ca0: 74 72 69 6e 67 20 7d 20 6b 65 79 20 2d 20 6f 62 tring } key - ob
7cb0: 6a 65 63 74 20 6b 65 79 20 77 68 65 72 65 20 74 ject key where t
7cc0: 68 65 20 6e 65 77 20 70 72 6f 70 65 72 74 79 20 he new property
7cd0: 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0a 20 will be stored.
7ce0: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a * @param { *
7cf0: 20 7d 20 76 61 6c 75 65 20 2d 20 76 61 6c 75 65 } value - value
7d00: 20 6f 66 20 74 68 65 20 6e 65 77 20 70 72 6f 70 of the new prop
7d10: 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 61 6d erty. * @param
7d20: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 { Object } op
7d30: 74 69 6f 6e 73 20 2d 20 73 65 74 20 74 68 65 20 tions - set the
7d40: 70 72 6f 70 65 72 79 20 6f 76 65 72 72 69 64 69 propery overridi
7d50: 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f ng the default o
7d60: 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 72 65 74 ptions. * @ret
7d70: 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 urns { Object }
7d80: 2d 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6f 62 - the initial ob
7d90: 6a 65 63 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ject. */. fun
7da0: 63 74 69 6f 6e 20 64 65 66 69 6e 65 28 65 6c 2c ction define(el,
7db0: 20 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f 70 74 key, value, opt
7dc0: 69 6f 6e 73 29 20 7b 0a 20 20 20 20 4f 62 6a 65 ions) {. Obje
7dd0: 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
7de0: 79 28 65 6c 2c 20 6b 65 79 2c 20 65 78 74 65 6e y(el, key, exten
7df0: 64 28 7b 0a 20 20 20 20 20 20 76 61 6c 75 65 3a d({. value:
7e00: 20 76 61 6c 75 65 2c 0a 20 20 20 20 20 20 65 6e value,. en
7e10: 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c umerable: false,
7e20: 0a 20 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a . writable:
7e30: 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 63 6f false,. co
7e40: 6e 66 69 67 75 72 61 62 6c 65 3a 20 74 72 75 65 nfigurable: true
7e50: 0a 20 20 20 20 7d 2c 20 6f 70 74 69 6f 6e 73 29 . }, options)
7e60: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 65 6c );. return el
7e70: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
7e80: 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e Convert a strin
7e90: 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 64 61 73 g containing das
7ea0: 68 65 73 20 74 6f 20 63 61 6d 65 6c 20 63 61 73 hes to camel cas
7eb0: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 e. * @param
7ec0: 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d { String } str -
7ed0: 20 69 6e 70 75 74 20 73 74 72 69 6e 67 0a 20 20 input string.
7ee0: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 53 74 * @returns { St
7ef0: 72 69 6e 67 20 7d 20 6d 79 2d 73 74 72 69 6e 67 ring } my-string
7f00: 20 2d 3e 20 6d 79 53 74 72 69 6e 67 0a 20 20 20 -> myString.
7f10: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f */. function to
7f20: 43 61 6d 65 6c 28 73 74 72 29 20 7b 0a 20 20 20 Camel(str) {.
7f30: 20 72 65 74 75 72 6e 20 73 74 72 2e 72 65 70 6c return str.repl
7f40: 61 63 65 28 2f 2d 28 5c 77 29 2f 67 2c 20 66 75 ace(/-(\w)/g, fu
7f50: 6e 63 74 69 6f 6e 20 28 5f 2c 20 63 29 20 7b 20 nction (_, c) {
7f60: 72 65 74 75 72 6e 20 63 2e 74 6f 55 70 70 65 72 return c.toUpper
7f70: 43 61 73 65 28 29 3b 20 7d 29 0a 20 20 7d 0a 0a Case(); }). }..
7f80: 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61 72 6e 20 /**. * Warn
7f90: 61 20 6d 65 73 73 61 67 65 20 76 69 61 20 63 6f a message via co
7fa0: 6e 73 6f 6c 65 0a 20 20 20 2a 20 40 70 61 72 61 nsole. * @para
7fb0: 6d 20 20 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73 m {String} mes
7fc0: 73 61 67 65 20 2d 20 77 61 72 6e 69 6e 67 20 6d sage - warning m
7fd0: 65 73 73 61 67 65 0a 20 20 20 2a 2f 0a 20 20 66 essage. */. f
7fe0: 75 6e 63 74 69 6f 6e 20 77 61 72 6e 28 6d 65 73 unction warn(mes
7ff0: 73 61 67 65 29 20 7b 0a 20 20 20 20 69 66 20 28 sage) {. if (
8000: 63 6f 6e 73 6f 6c 65 20 26 26 20 63 6f 6e 73 6f console && conso
8010: 6c 65 2e 77 61 72 6e 29 20 7b 20 63 6f 6e 73 6f le.warn) { conso
8020: 6c 65 2e 77 61 72 6e 28 6d 65 73 73 61 67 65 29 le.warn(message)
8030: 3b 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 72 ; }. }.... var
8040: 20 6d 69 73 63 20 3d 20 2f 2a 23 5f 5f 50 55 52 misc = /*#__PUR
8050: 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 E__*/Object.free
8060: 7a 65 28 7b 0a 20 20 20 20 63 6f 6e 74 61 69 6e ze({. contain
8070: 73 3a 20 63 6f 6e 74 61 69 6e 73 2c 0a 20 20 20 s: contains,.
8080: 20 65 61 63 68 3a 20 65 61 63 68 2c 0a 20 20 20 each: each,.
8090: 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 70 74 getPropDescript
80a0: 6f 72 3a 20 67 65 74 50 72 6f 70 44 65 73 63 72 or: getPropDescr
80b0: 69 70 74 6f 72 2c 0a 20 20 20 20 73 74 61 72 74 iptor,. start
80c0: 73 57 69 74 68 3a 20 73 74 61 72 74 73 57 69 74 sWith: startsWit
80d0: 68 2c 0a 20 20 20 20 75 69 64 3a 20 75 69 64 2c h,. uid: uid,
80e0: 0a 20 20 20 20 64 65 66 69 6e 65 50 72 6f 70 65 . definePrope
80f0: 72 74 79 3a 20 64 65 66 69 6e 65 2c 0a 20 20 20 rty: define,.
8100: 20 6f 62 6a 65 63 74 43 72 65 61 74 65 3a 20 63 objectCreate: c
8110: 72 65 61 74 65 2c 0a 20 20 20 20 65 78 74 65 6e reate,. exten
8120: 64 3a 20 65 78 74 65 6e 64 2c 0a 20 20 20 20 74 d: extend,. t
8130: 6f 43 61 6d 65 6c 3a 20 74 6f 43 61 6d 65 6c 2c oCamel: toCamel,
8140: 0a 20 20 20 20 77 61 72 6e 3a 20 77 61 72 6e 0a . warn: warn.
8150: 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20 });.. /**.
8160: 2a 20 53 65 74 20 74 68 65 20 70 72 6f 70 65 72 * Set the proper
8170: 74 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 ty of an object
8180: 66 6f 72 20 61 20 67 69 76 65 6e 20 6b 65 79 2e for a given key.
8190: 20 49 66 20 73 6f 6d 65 74 68 69 6e 67 20 61 6c If something al
81a0: 72 65 61 64 79 0a 20 20 20 2a 20 65 78 69 73 74 ready. * exist
81b0: 73 20 74 68 65 72 65 2c 20 74 68 65 6e 20 69 74 s there, then it
81c0: 20 62 65 63 6f 6d 65 73 20 61 6e 20 61 72 72 61 becomes an arra
81d0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 62 6f 74 y containing bot
81e0: 68 20 74 68 65 20 6f 6c 64 20 61 6e 64 20 6e 65 h the old and ne
81f0: 77 20 76 61 6c 75 65 2e 0a 20 20 20 2a 20 40 70 w value.. * @p
8200: 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 aram { Object }
8210: 6f 62 6a 20 2d 20 6f 62 6a 65 63 74 20 6f 6e 20 obj - object on
8220: 77 68 69 63 68 20 74 6f 20 73 65 74 20 74 68 65 which to set the
8230: 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 property. * @
8240: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d param { String }
8250: 20 6b 65 79 20 2d 20 70 72 6f 70 65 72 74 79 20 key - property
8260: 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72 61 6d name. * @param
8270: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 76 61 6c 75 { Object } valu
8280: 65 20 2d 20 74 68 65 20 76 61 6c 75 65 20 6f 66 e - the value of
8290: 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 74 6f the property to
82a0: 20 62 65 20 73 65 74 0a 20 20 20 2a 20 40 70 61 be set. * @pa
82b0: 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 ram { Boolean }
82c0: 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20 65 6e ensureArray - en
82d0: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 70 72 sure that the pr
82e0: 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73 20 61 operty remains a
82f0: 6e 20 61 72 72 61 79 0a 20 20 20 2a 20 40 70 61 n array. * @pa
8300: 72 61 6d 20 7b 20 4e 75 6d 62 65 72 20 7d 20 69 ram { Number } i
8310: 6e 64 65 78 20 2d 20 61 64 64 20 74 68 65 20 6e ndex - add the n
8320: 65 77 20 69 74 65 6d 20 69 6e 20 61 20 63 65 72 ew item in a cer
8330: 74 61 69 6e 20 61 72 72 61 79 20 70 6f 73 69 74 tain array posit
8340: 69 6f 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 ion. */. func
8350: 74 69 6f 6e 20 61 72 72 61 79 69 73 68 41 64 64 tion arrayishAdd
8360: 28 6f 62 6a 2c 20 6b 65 79 2c 20 76 61 6c 75 65 (obj, key, value
8370: 2c 20 65 6e 73 75 72 65 41 72 72 61 79 2c 20 69 , ensureArray, i
8380: 6e 64 65 78 29 20 7b 0a 20 20 20 20 76 61 72 20 ndex) {. var
8390: 64 65 73 74 20 3d 20 6f 62 6a 5b 6b 65 79 5d 3b dest = obj[key];
83a0: 0a 20 20 20 20 76 61 72 20 69 73 41 72 72 20 3d . var isArr =
83b0: 20 69 73 41 72 72 61 79 28 64 65 73 74 29 3b 0a isArray(dest);.
83c0: 20 20 20 20 76 61 72 20 68 61 73 49 6e 64 65 78 var hasIndex
83d0: 20 3d 20 21 69 73 55 6e 64 65 66 69 6e 65 64 28 = !isUndefined(
83e0: 69 6e 64 65 78 29 3b 0a 0a 20 20 20 20 69 66 20 index);.. if
83f0: 28 64 65 73 74 20 26 26 20 64 65 73 74 20 3d 3d (dest && dest ==
8400: 3d 20 76 61 6c 75 65 29 20 7b 20 72 65 74 75 72 = value) { retur
8410: 6e 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 20 74 n }.. // if t
8420: 68 65 20 6b 65 79 20 77 61 73 20 6e 65 76 65 72 he key was never
8430: 20 73 65 74 2c 20 73 65 74 20 69 74 20 6f 6e 63 set, set it onc
8440: 65 0a 20 20 20 20 69 66 20 28 21 64 65 73 74 20 e. if (!dest
8450: 26 26 20 65 6e 73 75 72 65 41 72 72 61 79 29 20 && ensureArray)
8460: 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b 76 61 { obj[key] = [va
8470: 6c 75 65 5d 3b 20 7d 0a 20 20 20 20 65 6c 73 65 lue]; }. else
8480: 20 69 66 20 28 21 64 65 73 74 29 20 7b 20 6f 62 if (!dest) { ob
8490: 6a 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 3b 20 j[key] = value;
84a0: 7d 0a 20 20 20 20 2f 2f 20 69 66 20 69 74 20 77 }. // if it w
84b0: 61 73 20 61 6e 20 61 72 72 61 79 20 61 6e 64 20 as an array and
84c0: 6e 6f 74 20 79 65 74 20 73 65 74 0a 20 20 20 20 not yet set.
84d0: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 69 66 20 else {. if
84e0: 28 69 73 41 72 72 29 20 7b 0a 20 20 20 20 20 20 (isArr) {.
84f0: 20 20 76 61 72 20 6f 6c 64 49 6e 64 65 78 20 3d var oldIndex =
8500: 20 64 65 73 74 2e 69 6e 64 65 78 4f 66 28 76 61 dest.indexOf(va
8510: 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f lue);. //
8520: 20 74 68 69 73 20 69 74 65 6d 20 6e 65 76 65 72 this item never
8530: 20 63 68 61 6e 67 65 64 20 69 74 73 20 70 6f 73 changed its pos
8540: 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 69 66 ition. if
8550: 20 28 6f 6c 64 49 6e 64 65 78 20 3d 3d 3d 20 69 (oldIndex === i
8560: 6e 64 65 78 29 20 7b 20 72 65 74 75 72 6e 20 7d ndex) { return }
8570: 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6d 6f . // remo
8580: 76 65 20 74 68 65 20 69 74 65 6d 20 66 72 6f 6d ve the item from
8590: 20 69 74 73 20 6f 6c 64 20 70 6f 73 69 74 69 6f its old positio
85a0: 6e 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 6c n. if (ol
85b0: 64 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 7b dIndex !== -1) {
85c0: 20 64 65 73 74 2e 73 70 6c 69 63 65 28 6f 6c 64 dest.splice(old
85d0: 49 6e 64 65 78 2c 20 31 29 3b 20 7d 0a 20 20 20 Index, 1); }.
85e0: 20 20 20 20 20 2f 2f 20 6d 6f 76 65 20 6f 72 20 // move or
85f0: 61 64 64 20 74 68 65 20 69 74 65 6d 0a 20 20 20 add the item.
8600: 20 20 20 20 20 69 66 20 28 68 61 73 49 6e 64 65 if (hasInde
8610: 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 64 x) {. d
8620: 65 73 74 2e 73 70 6c 69 63 65 28 69 6e 64 65 78 est.splice(index
8630: 2c 20 30 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 , 0, value);.
8640: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 } else {.
8650: 20 20 20 20 20 20 20 20 64 65 73 74 2e 70 75 73 dest.pus
8660: 68 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 h(value);.
8670: 20 20 7d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 }. } else
8680: 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b 64 { obj[key] = [d
8690: 65 73 74 2c 20 76 61 6c 75 65 5d 3b 20 7d 0a 20 est, value]; }.
86a0: 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a }. }.. /**.
86b0: 20 20 20 2a 20 44 65 74 65 63 74 20 74 68 65 20 * Detect the
86c0: 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 tag implementati
86d0: 6f 6e 20 62 79 20 61 20 44 4f 4d 20 6e 6f 64 65 on by a DOM node
86e0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
86f0: 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 Object } dom -
8700: 44 4f 4d 20 6e 6f 64 65 20 77 65 20 6e 65 65 64 DOM node we need
8710: 20 74 6f 20 70 61 72 73 65 20 74 6f 20 67 65 74 to parse to get
8720: 20 69 74 73 20 74 61 67 20 69 6d 70 6c 65 6d 65 its tag impleme
8730: 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 72 65 ntation. * @re
8740: 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d turns { Object }
8750: 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 6f it returns an o
8760: 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 bject containing
8770: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 the implementat
8780: 69 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f 6d 20 ion of a custom
8790: 74 61 67 20 28 74 65 6d 70 6c 61 74 65 20 61 6e tag (template an
87a0: 64 20 62 6f 6f 74 20 66 75 6e 63 74 69 6f 6e 29 d boot function)
87b0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
87c0: 6e 20 67 65 74 28 64 6f 6d 29 20 7b 0a 20 20 20 n get(dom) {.
87d0: 20 72 65 74 75 72 6e 20 64 6f 6d 2e 74 61 67 4e return dom.tagN
87e0: 61 6d 65 20 26 26 20 5f 5f 54 41 47 5f 49 4d 50 ame && __TAG_IMP
87f0: 4c 5b 67 65 74 41 74 74 72 69 62 75 74 65 28 64 L[getAttribute(d
8800: 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 om, IS_DIRECTIVE
8810: 29 20 7c 7c 0a 20 20 20 20 20 20 67 65 74 41 74 ) ||. getAt
8820: 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 49 53 5f tribute(dom, IS_
8830: 44 49 52 45 43 54 49 56 45 29 20 7c 7c 20 64 6f DIRECTIVE) || do
8840: 6d 2e 74 61 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 m.tagName.toLowe
8850: 72 43 61 73 65 28 29 5d 0a 20 20 7d 0a 0a 20 20 rCase()]. }..
8860: 2f 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74 68 65 /**. * Get the
8870: 20 74 61 67 20 6e 61 6d 65 20 6f 66 20 61 6e 79 tag name of any
8880: 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 DOM node. * @
8890: 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 param { Object
88a0: 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 } dom - DOM nod
88b0: 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70 61 72 e we want to par
88c0: 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 se. * @param
88d0: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 73 6b 69 { Boolean } ski
88e0: 70 44 61 74 61 49 73 20 2d 20 68 61 63 6b 20 74 pDataIs - hack t
88f0: 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 64 61 74 o ignore the dat
8900: 61 2d 69 73 20 61 74 74 72 69 62 75 74 65 20 77 a-is attribute w
8910: 68 65 6e 20 61 74 74 61 63 68 69 6e 67 20 74 6f hen attaching to
8920: 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 72 65 parent. * @re
8930: 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d turns { String }
8940: 20 6e 61 6d 65 20 74 6f 20 69 64 65 6e 74 69 66 name to identif
8950: 79 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64 65 20 y this dom node
8960: 69 6e 20 72 69 6f 74 0a 20 20 20 2a 2f 0a 20 20 in riot. */.
8970: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65 function getName
8980: 28 64 6f 6d 2c 20 73 6b 69 70 44 61 74 61 49 73 (dom, skipDataIs
8990: 29 20 7b 0a 20 20 20 20 76 61 72 20 63 68 69 6c ) {. var chil
89a0: 64 20 3d 20 67 65 74 28 64 6f 6d 29 3b 0a 20 20 d = get(dom);.
89b0: 20 20 76 61 72 20 6e 61 6d 65 64 54 61 67 20 3d var namedTag =
89c0: 20 21 73 6b 69 70 44 61 74 61 49 73 20 26 26 20 !skipDataIs &&
89d0: 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d getAttribute(dom
89e0: 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 29 3b , IS_DIRECTIVE);
89f0: 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 . return name
8a00: 64 54 61 67 20 26 26 20 21 74 6d 70 6c 2e 68 61 dTag && !tmpl.ha
8a10: 73 45 78 70 72 28 6e 61 6d 65 64 54 61 67 29 20 sExpr(namedTag)
8a20: 3f 0a 20 20 20 20 20 20 6e 61 6d 65 64 54 61 67 ?. namedTag
8a30: 20 3a 20 63 68 69 6c 64 20 3f 20 63 68 69 6c 64 : child ? child
8a40: 2e 6e 61 6d 65 20 3a 20 64 6f 6d 2e 74 61 67 4e .name : dom.tagN
8a50: 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 ame.toLowerCase(
8a60: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 ). }.. /**.
8a70: 2a 20 52 65 74 75 72 6e 20 61 20 74 65 6d 70 6f * Return a tempo
8a80: 72 61 72 79 20 63 6f 6e 74 65 78 74 20 63 6f 6e rary context con
8a90: 74 61 69 6e 69 6e 67 20 61 6c 73 6f 20 74 68 65 taining also the
8aa0: 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72 74 69 parent properti
8ab0: 65 73 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 es. * @this Ta
8ac0: 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 g. * @param {
8ad0: 54 61 67 20 7d 20 2d 20 74 65 6d 70 6f 72 61 72 Tag } - temporar
8ae0: 79 20 74 61 67 20 63 6f 6e 74 65 78 74 20 63 6f y tag context co
8af0: 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 ntaining all the
8b00: 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72 74 69 parent properti
8b10: 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 es. */. funct
8b20: 69 6f 6e 20 69 6e 68 65 72 69 74 50 61 72 65 6e ion inheritParen
8b30: 74 50 72 6f 70 73 28 29 20 7b 0a 20 20 20 20 69 tProps() {. i
8b40: 66 20 28 74 68 69 73 2e 70 61 72 65 6e 74 29 20 f (this.parent)
8b50: 7b 20 72 65 74 75 72 6e 20 65 78 74 65 6e 64 28 { return extend(
8b60: 63 72 65 61 74 65 28 74 68 69 73 29 2c 20 74 68 create(this), th
8b70: 69 73 2e 70 61 72 65 6e 74 29 20 7d 0a 20 20 20 is.parent) }.
8b80: 20 72 65 74 75 72 6e 20 74 68 69 73 0a 20 20 7d return this. }
8b90: 0a 0a 20 20 2f 2a 0a 20 20 20 20 49 6e 63 6c 75 .. /*. Inclu
8ba0: 64 65 73 20 68 61 63 6b 73 20 6e 65 65 64 65 64 des hacks needed
8bb0: 20 66 6f 72 20 74 68 65 20 49 6e 74 65 72 6e 65 for the Interne
8bc0: 74 20 45 78 70 6c 6f 72 65 72 20 76 65 72 73 69 t Explorer versi
8bd0: 6f 6e 20 39 20 61 6e 64 20 62 65 6c 6f 77 0a 20 on 9 and below.
8be0: 20 20 20 53 65 65 3a 20 68 74 74 70 3a 2f 2f 6b See: http://k
8bf0: 61 6e 67 61 78 2e 67 69 74 68 75 62 2e 69 6f 2f angax.github.io/
8c00: 63 6f 6d 70 61 74 2d 74 61 62 6c 65 2f 65 73 35 compat-table/es5
8c10: 2f 23 69 65 38 0a 20 20 20 20 20 20 20 20 20 68 /#ie8. h
8c20: 74 74 70 3a 2f 2f 63 6f 64 65 70 6c 61 6e 65 74 ttp://codeplanet
8c30: 2e 69 6f 2f 64 72 6f 70 70 69 6e 67 2d 69 65 38 .io/dropping-ie8
8c40: 2f 0a 20 20 2a 2f 0a 0a 20 20 76 61 72 0a 20 20 /. */.. var.
8c50: 20 20 72 65 48 61 73 59 69 65 6c 64 20 20 3d 20 reHasYield =
8c60: 2f 3c 79 69 65 6c 64 5c 62 2f 69 2c 0a 20 20 20 /<yield\b/i,.
8c70: 20 72 65 59 69 65 6c 64 41 6c 6c 20 20 3d 20 2f reYieldAll = /
8c80: 3c 79 69 65 6c 64 5c 73 2a 28 3f 3a 5c 2f 3e 7c <yield\s*(?:\/>|
8c90: 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f 79 69 >([\S\s]*?)<\/yi
8ca0: 65 6c 64 5c 73 2a 3e 7c 3e 29 2f 69 67 2c 0a 20 eld\s*>|>)/ig,.
8cb0: 20 20 20 72 65 59 69 65 6c 64 53 72 63 20 20 3d reYieldSrc =
8cc0: 20 2f 3c 79 69 65 6c 64 5c 73 2b 74 6f 3d 5b 27 /<yield\s+to=['
8cd0: 22 5d 28 5b 5e 27 22 3e 5d 2a 29 5b 27 22 5d 5c "]([^'">]*)['"]\
8ce0: 73 2a 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f s*>([\S\s]*?)<\/
8cf0: 79 69 65 6c 64 5c 73 2a 3e 2f 69 67 2c 0a 20 20 yield\s*>/ig,.
8d00: 20 20 72 65 59 69 65 6c 64 44 65 73 74 20 3d 20 reYieldDest =
8d10: 2f 3c 79 69 65 6c 64 5c 73 2b 66 72 6f 6d 3d 5b /<yield\s+from=[
8d20: 27 22 5d 3f 28 5b 2d 5c 77 5d 2b 29 5b 27 22 5d '"]?([-\w]+)['"]
8d30: 3f 5c 73 2a 28 3f 3a 5c 2f 3e 7c 3e 28 5b 5c 53 ?\s*(?:\/>|>([\S
8d40: 5c 73 5d 2a 3f 29 3c 5c 2f 79 69 65 6c 64 5c 73 \s]*?)<\/yield\s
8d50: 2a 3e 29 2f 69 67 2c 0a 20 20 20 20 72 6f 6f 74 *>)/ig,. root
8d60: 45 6c 73 20 3d 20 7b 20 74 72 3a 20 27 74 62 6f Els = { tr: 'tbo
8d70: 64 79 27 2c 20 74 68 3a 20 27 74 72 27 2c 20 74 dy', th: 'tr', t
8d80: 64 3a 20 27 74 72 27 2c 20 63 6f 6c 3a 20 27 63 d: 'tr', col: 'c
8d90: 6f 6c 67 72 6f 75 70 27 20 7d 2c 0a 20 20 20 20 olgroup' },.
8da0: 74 62 6c 54 61 67 73 20 3d 20 49 45 5f 56 45 52 tblTags = IE_VER
8db0: 53 49 4f 4e 20 26 26 20 49 45 5f 56 45 52 53 49 SION && IE_VERSI
8dc0: 4f 4e 20 3c 20 31 30 20 3f 20 52 45 5f 53 50 45 ON < 10 ? RE_SPE
8dd0: 43 49 41 4c 5f 54 41 47 53 20 3a 20 52 45 5f 53 CIAL_TAGS : RE_S
8de0: 50 45 43 49 41 4c 5f 54 41 47 53 5f 4e 4f 5f 4f PECIAL_TAGS_NO_O
8df0: 50 54 49 4f 4e 2c 0a 20 20 20 20 47 45 4e 45 52 PTION,. GENER
8e00: 49 43 20 3d 20 27 64 69 76 27 2c 0a 20 20 20 20 IC = 'div',.
8e10: 53 56 47 20 3d 20 27 73 76 67 27 3b 0a 0a 0a 20 SVG = 'svg';...
8e20: 20 2f 2a 0a 20 20 20 20 43 72 65 61 74 65 73 20 /*. Creates
8e30: 74 68 65 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 the root element
8e40: 20 66 6f 72 20 74 61 62 6c 65 20 6f 72 20 73 65 for table or se
8e50: 6c 65 63 74 20 63 68 69 6c 64 20 65 6c 65 6d 65 lect child eleme
8e60: 6e 74 73 3a 0a 20 20 20 20 74 72 2f 74 68 2f 74 nts:. tr/th/t
8e70: 64 2f 74 68 65 61 64 2f 74 66 6f 6f 74 2f 74 62 d/thead/tfoot/tb
8e80: 6f 64 79 2f 63 61 70 74 69 6f 6e 2f 63 6f 6c 2f ody/caption/col/
8e90: 63 6f 6c 67 72 6f 75 70 2f 6f 70 74 69 6f 6e 2f colgroup/option/
8ea0: 6f 70 74 67 72 6f 75 70 0a 20 20 2a 2f 0a 20 20 optgroup. */.
8eb0: 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 61 6c function special
8ec0: 54 61 67 73 28 65 6c 2c 20 74 6d 70 6c 2c 20 74 Tags(el, tmpl, t
8ed0: 61 67 4e 61 6d 65 29 20 7b 0a 0a 20 20 20 20 76 agName) {.. v
8ee0: 61 72 0a 20 20 20 20 20 20 73 65 6c 65 63 74 20 ar. select
8ef0: 3d 20 74 61 67 4e 61 6d 65 5b 30 5d 20 3d 3d 3d = tagName[0] ===
8f00: 20 27 6f 27 2c 0a 20 20 20 20 20 20 70 61 72 65 'o',. pare
8f10: 6e 74 20 3d 20 73 65 6c 65 63 74 20 3f 20 27 73 nt = select ? 's
8f20: 65 6c 65 63 74 3e 27 20 3a 20 27 74 61 62 6c 65 elect>' : 'table
8f30: 3e 27 3b 0a 0a 20 20 20 20 2f 2f 20 74 72 69 6d >';.. // trim
8f40: 28 29 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 () is important
8f50: 68 65 72 65 2c 20 74 68 69 73 20 65 6e 73 75 72 here, this ensur
8f60: 65 73 20 77 65 20 64 6f 6e 27 74 20 68 61 76 65 es we don't have
8f70: 20 61 72 74 69 66 61 63 74 73 2c 0a 20 20 20 20 artifacts,.
8f80: 2f 2f 20 73 6f 20 77 65 20 63 61 6e 20 63 68 65 // so we can che
8f90: 63 6b 20 69 66 20 77 65 20 68 61 76 65 20 6f 6e ck if we have on
8fa0: 6c 79 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 20 69 ly one element i
8fb0: 6e 73 69 64 65 20 74 68 65 20 70 61 72 65 6e 74 nside the parent
8fc0: 0a 20 20 20 20 65 6c 2e 69 6e 6e 65 72 48 54 4d . el.innerHTM
8fd0: 4c 20 3d 20 27 3c 27 20 2b 20 70 61 72 65 6e 74 L = '<' + parent
8fe0: 20 2b 20 74 6d 70 6c 2e 74 72 69 6d 28 29 20 2b + tmpl.trim() +
8ff0: 20 27 3c 2f 27 20 2b 20 70 61 72 65 6e 74 3b 0a '</' + parent;.
9000: 20 20 20 20 70 61 72 65 6e 74 20 3d 20 65 6c 2e parent = el.
9010: 66 69 72 73 74 43 68 69 6c 64 3b 0a 0a 20 20 20 firstChild;..
9020: 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20 // returns the
9030: 69 6d 6d 65 64 69 61 74 65 20 70 61 72 65 6e 74 immediate parent
9040: 20 69 66 20 74 72 2f 74 68 2f 74 64 2f 63 6f 6c if tr/th/td/col
9050: 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 65 6c 65 is the only ele
9060: 6d 65 6e 74 2c 20 69 66 20 6e 6f 74 0a 20 20 20 ment, if not.
9070: 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20 // returns the
9080: 77 68 6f 6c 65 20 74 72 65 65 2c 20 61 73 20 74 whole tree, as t
9090: 68 69 73 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 his can include
90a0: 61 64 64 69 74 69 6f 6e 61 6c 20 65 6c 65 6d 65 additional eleme
90b0: 6e 74 73 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e nts. /* istan
90c0: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 bul ignore next
90d0: 2a 2f 0a 20 20 20 20 69 66 20 28 73 65 6c 65 63 */. if (selec
90e0: 74 29 20 7b 0a 20 20 20 20 20 20 70 61 72 65 6e t) {. paren
90f0: 74 2e 73 65 6c 65 63 74 65 64 49 6e 64 65 78 20 t.selectedIndex
9100: 3d 20 2d 31 3b 20 20 2f 2f 20 66 6f 72 20 49 45 = -1; // for IE
9110: 39 2c 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 2f 9, compatible w/
9120: 63 75 72 72 65 6e 74 20 72 69 6f 74 20 62 65 68 current riot beh
9130: 61 76 69 6f 72 0a 20 20 20 20 7d 20 65 6c 73 65 avior. } else
9140: 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 76 6f 69 {. // avoi
9150: 64 73 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66 20 ds insertion of
9160: 63 6f 69 6e 74 61 69 6e 65 72 20 69 6e 73 69 64 cointainer insid
9170: 65 20 63 6f 6e 74 61 69 6e 65 72 20 28 65 78 3a e container (ex:
9180: 20 74 62 6f 64 79 20 69 6e 73 69 64 65 20 74 62 tbody inside tb
9190: 6f 64 79 29 0a 20 20 20 20 20 20 76 61 72 20 74 ody). var t
91a0: 6e 61 6d 65 20 3d 20 72 6f 6f 74 45 6c 73 5b 74 name = rootEls[t
91b0: 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 20 20 69 agName];. i
91c0: 66 20 28 74 6e 61 6d 65 20 26 26 20 70 61 72 65 f (tname && pare
91d0: 6e 74 2e 63 68 69 6c 64 45 6c 65 6d 65 6e 74 43 nt.childElementC
91e0: 6f 75 6e 74 20 3d 3d 3d 20 31 29 20 7b 20 70 61 ount === 1) { pa
91f0: 72 65 6e 74 20 3d 20 24 28 74 6e 61 6d 65 2c 20 rent = $(tname,
9200: 70 61 72 65 6e 74 29 3b 20 7d 0a 20 20 20 20 7d parent); }. }
9210: 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 . return pare
9220: 6e 74 0a 20 20 7d 0a 0a 20 20 2f 2a 0a 20 20 20 nt. }.. /*.
9230: 20 52 65 70 6c 61 63 65 20 74 68 65 20 79 69 65 Replace the yie
9240: 6c 64 20 74 61 67 20 66 72 6f 6d 20 61 6e 79 20 ld tag from any
9250: 74 61 67 20 74 65 6d 70 6c 61 74 65 20 77 69 74 tag template wit
9260: 68 20 74 68 65 20 69 6e 6e 65 72 48 54 4d 4c 20 h the innerHTML
9270: 6f 66 20 74 68 65 0a 20 20 20 20 6f 72 69 67 69 of the. origi
9280: 6e 61 6c 20 74 61 67 20 69 6e 20 74 68 65 20 70 nal tag in the p
9290: 61 67 65 0a 20 20 2a 2f 0a 20 20 66 75 6e 63 74 age. */. funct
92a0: 69 6f 6e 20 72 65 70 6c 61 63 65 59 69 65 6c 64 ion replaceYield
92b0: 28 74 6d 70 6c 2c 20 68 74 6d 6c 29 20 7b 0a 20 (tmpl, html) {.
92c0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 // do nothing
92d0: 20 69 66 20 6e 6f 20 79 69 65 6c 64 0a 20 20 20 if no yield.
92e0: 20 69 66 20 28 21 72 65 48 61 73 59 69 65 6c 64 if (!reHasYield
92f0: 2e 74 65 73 74 28 74 6d 70 6c 29 29 20 7b 20 72 .test(tmpl)) { r
9300: 65 74 75 72 6e 20 74 6d 70 6c 20 7d 0a 0a 20 20 eturn tmpl }..
9310: 20 20 2f 2f 20 62 65 20 63 61 72 65 66 75 6c 20 // be careful
9320: 77 69 74 68 20 23 31 33 34 33 20 2d 20 73 74 72 with #1343 - str
9330: 69 6e 67 20 6f 6e 20 74 68 65 20 73 6f 75 72 63 ing on the sourc
9340: 65 20 68 61 76 69 6e 67 20 60 24 31 60 0a 20 20 e having `$1`.
9350: 20 20 76 61 72 20 73 72 63 20 3d 20 7b 7d 3b 0a var src = {};.
9360: 0a 20 20 20 20 68 74 6d 6c 20 3d 20 68 74 6d 6c . html = html
9370: 20 26 26 20 68 74 6d 6c 2e 72 65 70 6c 61 63 65 && html.replace
9380: 28 72 65 59 69 65 6c 64 53 72 63 2c 20 66 75 6e (reYieldSrc, fun
9390: 63 74 69 6f 6e 20 28 5f 2c 20 72 65 66 2c 20 74 ction (_, ref, t
93a0: 65 78 74 29 20 7b 0a 20 20 20 20 20 20 73 72 63 ext) {. src
93b0: 5b 72 65 66 5d 20 3d 20 73 72 63 5b 72 65 66 5d [ref] = src[ref]
93c0: 20 7c 7c 20 74 65 78 74 3b 20 20 20 2f 2f 20 70 || text; // p
93d0: 72 65 73 65 72 76 65 20 66 69 72 73 74 20 64 65 reserve first de
93e0: 66 69 6e 69 74 69 6f 6e 0a 20 20 20 20 20 20 72 finition. r
93f0: 65 74 75 72 6e 20 27 27 0a 20 20 20 20 7d 29 2e eturn ''. }).
9400: 74 72 69 6d 28 29 3b 0a 0a 20 20 20 20 72 65 74 trim();.. ret
9410: 75 72 6e 20 74 6d 70 6c 0a 20 20 20 20 20 20 2e urn tmpl. .
9420: 72 65 70 6c 61 63 65 28 72 65 59 69 65 6c 64 44 replace(reYieldD
9430: 65 73 74 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f est, function (_
9440: 2c 20 72 65 66 2c 20 64 65 66 29 20 7b 20 20 2f , ref, def) { /
9450: 2f 20 79 69 65 6c 64 20 77 69 74 68 20 66 72 6f / yield with fro
9460: 6d 20 2d 20 74 6f 20 61 74 74 72 73 0a 20 20 20 m - to attrs.
9470: 20 20 20 20 20 72 65 74 75 72 6e 20 73 72 63 5b return src[
9480: 72 65 66 5d 20 7c 7c 20 64 65 66 20 7c 7c 20 27 ref] || def || '
9490: 27 0a 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20 '. }).
94a0: 20 2e 72 65 70 6c 61 63 65 28 72 65 59 69 65 6c .replace(reYiel
94b0: 64 41 6c 6c 2c 20 66 75 6e 63 74 69 6f 6e 20 28 dAll, function (
94c0: 5f 2c 20 64 65 66 29 20 7b 20 20 20 20 20 20 20 _, def) {
94d0: 20 2f 2f 20 79 69 65 6c 64 20 77 69 74 68 6f 75 // yield withou
94e0: 74 20 61 6e 79 20 22 66 72 6f 6d 22 0a 20 20 20 t any "from".
94f0: 20 20 20 20 20 72 65 74 75 72 6e 20 68 74 6d 6c return html
9500: 20 7c 7c 20 64 65 66 20 7c 7c 20 27 27 0a 20 20 || def || ''.
9510: 20 20 20 20 7d 29 0a 20 20 7d 0a 0a 20 20 2f 2a }). }.. /*
9520: 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 73 20 61 *. * Creates a
9530: 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20 74 6f 20 DOM element to
9540: 77 72 61 70 20 74 68 65 20 67 69 76 65 6e 20 63 wrap the given c
9550: 6f 6e 74 65 6e 74 2e 20 4e 6f 72 6d 61 6c 6c 79 ontent. Normally
9560: 20 61 6e 20 60 44 49 56 60 2c 20 62 75 74 20 63 an `DIV`, but c
9570: 61 6e 20 62 65 0a 20 20 20 2a 20 61 6c 73 6f 20 an be. * also
9580: 61 20 60 54 41 42 4c 45 60 2c 20 60 53 45 4c 45 a `TABLE`, `SELE
9590: 43 54 60 2c 20 60 54 42 4f 44 59 60 2c 20 60 54 CT`, `TBODY`, `T
95a0: 52 60 2c 20 6f 72 20 60 43 4f 4c 47 52 4f 55 50 R`, or `COLGROUP
95b0: 60 20 65 6c 65 6d 65 6e 74 2e 0a 20 20 20 2a 0a ` element.. *.
95c0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
95d0: 53 74 72 69 6e 67 20 7d 20 74 6d 70 6c 20 20 2d String } tmpl -
95e0: 20 54 68 65 20 74 65 6d 70 6c 61 74 65 20 63 6f The template co
95f0: 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 63 75 ming from the cu
9600: 73 74 6f 6d 20 74 61 67 20 64 65 66 69 6e 69 74 stom tag definit
9610: 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ion. * @param
9620: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 68 74 6d { String } htm
9630: 6c 20 2d 20 48 54 4d 4c 20 63 6f 6e 74 65 6e 74 l - HTML content
9640: 20 74 68 61 74 20 63 6f 6d 65 73 20 66 72 6f 6d that comes from
9650: 20 74 68 65 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 the DOM element
9660: 20 77 68 65 72 65 20 79 6f 75 0a 20 20 20 2a 20 where you. *
9670: 20 20 20 20 20 20 20 20 20 20 77 69 6c 6c 20 6d will m
9680: 6f 75 6e 74 20 74 68 65 20 74 61 67 2c 20 6d 6f ount the tag, mo
9690: 73 74 6c 79 20 74 68 65 20 6f 72 69 67 69 6e 61 stly the origina
96a0: 6c 20 74 61 67 20 69 6e 20 74 68 65 20 70 61 67 l tag in the pag
96b0: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 e. * @param
96c0: 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 69 73 53 76 { Boolean } isSv
96d0: 67 20 2d 20 74 72 75 65 20 69 66 20 74 68 65 20 g - true if the
96e0: 72 6f 6f 74 20 6e 6f 64 65 20 69 73 20 61 6e 20 root node is an
96f0: 73 76 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e svg. * @return
9700: 73 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 s { HTMLElement
9710: 7d 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20 77 69 } DOM element wi
9720: 74 68 20 5f 74 6d 70 6c 5f 20 6d 65 72 67 65 64 th _tmpl_ merged
9730: 20 74 68 72 6f 75 67 68 20 60 59 49 45 4c 44 60 through `YIELD`
9740: 20 77 69 74 68 20 74 68 65 20 5f 68 74 6d 6c 5f with the _html_
9750: 2e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 .. */. functi
9760: 6f 6e 20 6d 6b 64 6f 6d 28 74 6d 70 6c 2c 20 68 on mkdom(tmpl, h
9770: 74 6d 6c 2c 20 69 73 53 76 67 29 20 7b 0a 20 20 tml, isSvg) {.
9780: 20 20 76 61 72 20 6d 61 74 63 68 20 20 20 3d 20 var match =
9790: 74 6d 70 6c 20 26 26 20 74 6d 70 6c 2e 6d 61 74 tmpl && tmpl.mat
97a0: 63 68 28 2f 5e 5c 73 2a 3c 28 5b 2d 5c 77 5d 2b ch(/^\s*<([-\w]+
97b0: 29 2f 29 3b 0a 20 20 20 20 76 61 72 20 20 74 61 )/);. var ta
97c0: 67 4e 61 6d 65 20 3d 20 6d 61 74 63 68 20 26 26 gName = match &&
97d0: 20 6d 61 74 63 68 5b 31 5d 2e 74 6f 4c 6f 77 65 match[1].toLowe
97e0: 72 43 61 73 65 28 29 3b 0a 20 20 20 20 76 61 72 rCase();. var
97f0: 20 65 6c 20 3d 20 6d 61 6b 65 45 6c 65 6d 65 6e el = makeElemen
9800: 74 28 69 73 53 76 67 20 3f 20 53 56 47 20 3a 20 t(isSvg ? SVG :
9810: 47 45 4e 45 52 49 43 29 3b 0a 0a 20 20 20 20 2f GENERIC);.. /
9820: 2f 20 72 65 70 6c 61 63 65 20 61 6c 6c 20 74 68 / replace all th
9830: 65 20 79 69 65 6c 64 20 74 61 67 73 20 77 69 74 e yield tags wit
9840: 68 20 74 68 65 20 74 61 67 20 69 6e 6e 65 72 20 h the tag inner
9850: 68 74 6d 6c 0a 20 20 20 20 74 6d 70 6c 20 3d 20 html. tmpl =
9860: 72 65 70 6c 61 63 65 59 69 65 6c 64 28 74 6d 70 replaceYield(tmp
9870: 6c 2c 20 68 74 6d 6c 29 3b 0a 0a 20 20 20 20 2f l, html);.. /
9880: 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 * istanbul ignor
9890: 65 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 69 66 e next */. if
98a0: 20 28 74 62 6c 54 61 67 73 2e 74 65 73 74 28 74 (tblTags.test(t
98b0: 61 67 4e 61 6d 65 29 29 0a 20 20 20 20 20 20 7b agName)). {
98c0: 20 65 6c 20 3d 20 73 70 65 63 69 61 6c 54 61 67 el = specialTag
98d0: 73 28 65 6c 2c 20 74 6d 70 6c 2c 20 74 61 67 4e s(el, tmpl, tagN
98e0: 61 6d 65 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 ame); }. else
98f0: 0a 20 20 20 20 20 20 7b 20 73 65 74 49 6e 6e 65 . { setInne
9900: 72 48 54 4d 4c 28 65 6c 2c 20 74 6d 70 6c 2c 20 rHTML(el, tmpl,
9910: 69 73 53 76 67 29 3b 20 7d 0a 0a 20 20 20 20 72 isSvg); }.. r
9920: 65 74 75 72 6e 20 65 6c 0a 20 20 7d 0a 0a 20 20 eturn el. }..
9930: 76 61 72 20 45 56 45 4e 54 5f 41 54 54 52 5f 52 var EVENT_ATTR_R
9940: 45 20 3d 20 2f 5e 6f 6e 2f 3b 0a 0a 20 20 2f 2a E = /^on/;.. /*
9950: 2a 0a 20 20 20 2a 20 54 72 75 65 20 69 66 20 74 *. * True if t
9960: 68 65 20 65 76 65 6e 74 20 61 74 74 72 69 62 75 he event attribu
9970: 74 65 20 73 74 61 72 74 73 20 77 69 74 68 20 27 te starts with '
9980: 6f 6e 27 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 on'. * @param
9990: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 { String } att
99a0: 72 69 62 75 74 65 20 2d 20 65 76 65 6e 74 20 61 ribute - event a
99b0: 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 72 ttribute. * @r
99c0: 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e eturns { Boolean
99d0: 20 7d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 }. */. funct
99e0: 69 6f 6e 20 69 73 45 76 65 6e 74 41 74 74 72 69 ion isEventAttri
99f0: 62 75 74 65 28 61 74 74 72 69 62 75 74 65 29 20 bute(attribute)
9a00: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 45 56 45 {. return EVE
9a10: 4e 54 5f 41 54 54 52 5f 52 45 2e 74 65 73 74 28 NT_ATTR_RE.test(
9a20: 61 74 74 72 69 62 75 74 65 29 0a 20 20 7d 0a 0a attribute). }..
9a30: 20 20 2f 2a 2a 0a 20 20 20 2a 20 4c 6f 6f 70 20 /**. * Loop
9a40: 62 61 63 6b 77 61 72 64 20 61 6c 6c 20 74 68 65 backward all the
9a50: 20 70 61 72 65 6e 74 73 20 74 72 65 65 20 74 6f parents tree to
9a60: 20 64 65 74 65 63 74 20 74 68 65 20 66 69 72 73 detect the firs
9a70: 74 20 63 75 73 74 6f 6d 20 70 61 72 65 6e 74 20 t custom parent
9a80: 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 tag. * @param
9a90: 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 74 61 67 { Object } tag
9aa0: 20 2d 20 61 20 54 61 67 20 69 6e 73 74 61 6e 63 - a Tag instanc
9ab0: 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 e. * @returns
9ac0: 7b 20 4f 62 6a 65 63 74 20 7d 20 74 68 65 20 69 { Object } the i
9ad0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 66 nstance of the f
9ae0: 69 72 73 74 20 63 75 73 74 6f 6d 20 70 61 72 65 irst custom pare
9af0: 6e 74 20 74 61 67 20 66 6f 75 6e 64 0a 20 20 20 nt tag found.
9b00: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 */. function ge
9b10: 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d tImmediateCustom
9b20: 50 61 72 65 6e 74 28 74 61 67 29 20 7b 0a 20 20 Parent(tag) {.
9b30: 20 20 76 61 72 20 70 74 61 67 20 3d 20 74 61 67 var ptag = tag
9b40: 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 70 74 61 ;. while (pta
9b50: 67 2e 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 g.__.isAnonymous
9b60: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 70 ) {. if (!p
9b70: 74 61 67 2e 70 61 72 65 6e 74 29 20 7b 20 62 72 tag.parent) { br
9b80: 65 61 6b 20 7d 0a 20 20 20 20 20 20 70 74 61 67 eak }. ptag
9b90: 20 3d 20 70 74 61 67 2e 70 61 72 65 6e 74 3b 0a = ptag.parent;.
9ba0: 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e }. return
9bb0: 20 70 74 61 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a ptag. }.. /**
9bc0: 0a 20 20 20 2a 20 54 72 69 67 67 65 72 20 44 4f . * Trigger DO
9bd0: 4d 20 65 76 65 6e 74 73 0a 20 20 20 2a 20 40 70 M events. * @p
9be0: 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 aram { HTMLEle
9bf0: 6d 65 6e 74 20 7d 20 64 6f 6d 20 2d 20 64 6f 6d ment } dom - dom
9c00: 20 65 6c 65 6d 65 6e 74 20 74 61 72 67 65 74 20 element target
9c10: 6f 66 20 74 68 65 20 65 76 65 6e 74 0a 20 20 20 of the event.
9c20: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e * @param { Fun
9c30: 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65 72 20 ction } handler
9c40: 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 0a - user function.
9c50: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
9c60: 4f 62 6a 65 63 74 20 7d 20 65 20 2d 20 65 76 65 Object } e - eve
9c70: 6e 74 20 6f 62 6a 65 63 74 0a 20 20 20 2a 2f 0a nt object. */.
9c80: 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 6e 64 6c function handl
9c90: 65 45 76 65 6e 74 28 64 6f 6d 2c 20 68 61 6e 64 eEvent(dom, hand
9ca0: 6c 65 72 2c 20 65 29 20 7b 0a 20 20 20 20 76 61 ler, e) {. va
9cb0: 72 20 70 74 61 67 20 3d 20 74 68 69 73 2e 5f 5f r ptag = this.__
9cc0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72 .parent;. var
9cd0: 20 69 74 65 6d 20 3d 20 74 68 69 73 2e 5f 5f 2e item = this.__.
9ce0: 69 74 65 6d 3b 0a 0a 20 20 20 20 69 66 20 28 21 item;.. if (!
9cf0: 69 74 65 6d 29 0a 20 20 20 20 20 20 7b 20 77 68 item). { wh
9d00: 69 6c 65 20 28 70 74 61 67 20 26 26 20 21 69 74 ile (ptag && !it
9d10: 65 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 69 74 em) {. it
9d20: 65 6d 20 3d 20 70 74 61 67 2e 5f 5f 2e 69 74 65 em = ptag.__.ite
9d30: 6d 3b 0a 20 20 20 20 20 20 20 20 70 74 61 67 20 m;. ptag
9d40: 3d 20 70 74 61 67 2e 5f 5f 2e 70 61 72 65 6e 74 = ptag.__.parent
9d50: 3b 0a 20 20 20 20 20 20 7d 20 7d 0a 0a 20 20 20 ;. } }..
9d60: 20 2f 2f 20 6f 76 65 72 72 69 64 65 20 74 68 65 // override the
9d70: 20 65 76 65 6e 74 20 70 72 6f 70 65 72 74 69 65 event propertie
9d80: 73 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 75 s. /* istanbu
9d90: 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f l ignore next */
9da0: 0a 20 20 20 20 69 66 20 28 69 73 57 72 69 74 61 . if (isWrita
9db0: 62 6c 65 28 65 2c 20 27 63 75 72 72 65 6e 74 54 ble(e, 'currentT
9dc0: 61 72 67 65 74 27 29 29 20 7b 20 65 2e 63 75 72 arget')) { e.cur
9dd0: 72 65 6e 74 54 61 72 67 65 74 20 3d 20 64 6f 6d rentTarget = dom
9de0: 3b 20 7d 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e ; }. /* istan
9df0: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 bul ignore next
9e00: 2a 2f 0a 20 20 20 20 69 66 20 28 69 73 57 72 69 */. if (isWri
9e10: 74 61 62 6c 65 28 65 2c 20 27 74 61 72 67 65 74 table(e, 'target
9e20: 27 29 29 20 7b 20 65 2e 74 61 72 67 65 74 20 3d ')) { e.target =
9e30: 20 65 2e 73 72 63 45 6c 65 6d 65 6e 74 3b 20 7d e.srcElement; }
9e40: 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c . /* istanbul
9e50: 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f 0a ignore next */.
9e60: 20 20 20 20 69 66 20 28 69 73 57 72 69 74 61 62 if (isWritab
9e70: 6c 65 28 65 2c 20 27 77 68 69 63 68 27 29 29 20 le(e, 'which'))
9e80: 7b 20 65 2e 77 68 69 63 68 20 3d 20 65 2e 63 68 { e.which = e.ch
9e90: 61 72 43 6f 64 65 20 7c 7c 20 65 2e 6b 65 79 43 arCode || e.keyC
9ea0: 6f 64 65 3b 20 7d 0a 0a 20 20 20 20 65 2e 69 74 ode; }.. e.it
9eb0: 65 6d 20 3d 20 69 74 65 6d 3b 0a 0a 20 20 20 20 em = item;..
9ec0: 68 61 6e 64 6c 65 72 2e 63 61 6c 6c 28 74 68 69 handler.call(thi
9ed0: 73 2c 20 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 61 s, e);.. // a
9ee0: 76 6f 69 64 20 61 75 74 6f 20 75 70 64 61 74 65 void auto update
9ef0: 73 0a 20 20 20 20 69 66 20 28 21 73 65 74 74 69 s. if (!setti
9f00: 6e 67 73 2e 61 75 74 6f 55 70 64 61 74 65 29 20 ngs.autoUpdate)
9f10: 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 { return }..
9f20: 69 66 20 28 21 65 2e 70 72 65 76 65 6e 74 55 70 if (!e.preventUp
9f30: 64 61 74 65 29 20 7b 0a 20 20 20 20 20 20 76 61 date) {. va
9f40: 72 20 70 20 3d 20 67 65 74 49 6d 6d 65 64 69 61 r p = getImmedia
9f50: 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 teCustomParent(t
9f60: 68 69 73 29 3b 0a 20 20 20 20 20 20 2f 2f 20 66 his);. // f
9f70: 69 78 65 73 20 23 32 30 38 33 0a 20 20 20 20 20 ixes #2083.
9f80: 20 69 66 20 28 70 2e 69 73 4d 6f 75 6e 74 65 64 if (p.isMounted
9f90: 29 20 7b 20 70 2e 75 70 64 61 74 65 28 29 3b 20 ) { p.update();
9fa0: 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f }. }. }.. /
9fb0: 2a 2a 0a 20 20 20 2a 20 41 74 74 61 63 68 20 61 **. * Attach a
9fc0: 6e 20 65 76 65 6e 74 20 74 6f 20 61 20 44 4f 4d n event to a DOM
9fd0: 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 node. * @para
9fe0: 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d m { String } nam
9ff0: 65 20 2d 20 65 76 65 6e 74 20 6e 61 6d 65 0a 20 e - event name.
a000: 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 46 75 6e * @param { Fun
a010: 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65 72 20 ction } handler
a020: 2d 20 65 76 65 6e 74 20 63 61 6c 6c 62 61 63 6b - event callback
a030: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f . * @param { O
a040: 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 64 6f bject } dom - do
a050: 6d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 m node. * @par
a060: 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 20 2d am { Tag } tag -
a070: 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 tag instance.
a080: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 */. function s
a090: 65 74 45 76 65 6e 74 48 61 6e 64 6c 65 72 28 6e etEventHandler(n
a0a0: 61 6d 65 2c 20 68 61 6e 64 6c 65 72 2c 20 64 6f ame, handler, do
a0b0: 6d 2c 20 74 61 67 29 20 7b 0a 20 20 20 20 76 61 m, tag) {. va
a0c0: 72 20 65 76 65 6e 74 4e 61 6d 65 3b 0a 20 20 20 r eventName;.
a0d0: 20 76 61 72 20 63 62 20 3d 20 68 61 6e 64 6c 65 var cb = handle
a0e0: 45 76 65 6e 74 2e 62 69 6e 64 28 74 61 67 2c 20 Event.bind(tag,
a0f0: 64 6f 6d 2c 20 68 61 6e 64 6c 65 72 29 3b 0a 0a dom, handler);..
a100: 20 20 20 20 2f 2f 20 61 76 6f 69 64 20 74 6f 20 // avoid to
a110: 62 69 6e 64 20 74 77 69 63 65 20 74 68 65 20 73 bind twice the s
a120: 61 6d 65 20 65 76 65 6e 74 0a 20 20 20 20 2f 2f ame event. //
a130: 20 70 6f 73 73 69 62 6c 65 20 66 69 78 20 66 6f possible fix fo
a140: 72 20 23 32 33 33 32 0a 20 20 20 20 64 6f 6d 5b r #2332. dom[
a150: 6e 61 6d 65 5d 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 name] = null;..
a160: 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a 65 20 // normalize
a170: 65 76 65 6e 74 20 6e 61 6d 65 0a 20 20 20 20 65 event name. e
a180: 76 65 6e 74 4e 61 6d 65 20 3d 20 6e 61 6d 65 2e ventName = name.
a190: 72 65 70 6c 61 63 65 28 52 45 5f 45 56 45 4e 54 replace(RE_EVENT
a1a0: 53 5f 50 52 45 46 49 58 2c 20 27 27 29 3b 0a 0a S_PREFIX, '');..
a1b0: 20 20 20 20 2f 2f 20 63 61 63 68 65 20 74 68 65 // cache the
a1c0: 20 6c 69 73 74 65 6e 65 72 20 69 6e 74 6f 20 74 listener into t
a1d0: 68 65 20 6c 69 73 74 65 6e 65 72 73 20 61 72 72 he listeners arr
a1e0: 61 79 0a 20 20 20 20 69 66 20 28 21 63 6f 6e 74 ay. if (!cont
a1f0: 61 69 6e 73 28 74 61 67 2e 5f 5f 2e 6c 69 73 74 ains(tag.__.list
a200: 65 6e 65 72 73 2c 20 64 6f 6d 29 29 20 7b 20 74 eners, dom)) { t
a210: 61 67 2e 5f 5f 2e 6c 69 73 74 65 6e 65 72 73 2e ag.__.listeners.
a220: 70 75 73 68 28 64 6f 6d 29 3b 20 7d 0a 20 20 20 push(dom); }.
a230: 20 69 66 20 28 21 64 6f 6d 5b 52 49 4f 54 5f 45 if (!dom[RIOT_E
a240: 56 45 4e 54 53 5f 4b 45 59 5d 29 20 7b 20 64 6f VENTS_KEY]) { do
a250: 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 m[RIOT_EVENTS_KE
a260: 59 5d 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 20 69 Y] = {}; }. i
a270: 66 20 28 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e f (dom[RIOT_EVEN
a280: 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d 29 20 7b TS_KEY][name]) {
a290: 20 64 6f 6d 2e 72 65 6d 6f 76 65 45 76 65 6e 74 dom.removeEvent
a2a0: 4c 69 73 74 65 6e 65 72 28 65 76 65 6e 74 4e 61 Listener(eventNa
a2b0: 6d 65 2c 20 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 me, dom[RIOT_EVE
a2c0: 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d 29 3b NTS_KEY][name]);
a2d0: 20 7d 0a 0a 20 20 20 20 64 6f 6d 5b 52 49 4f 54 }.. dom[RIOT
a2e0: 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d _EVENTS_KEY][nam
a2f0: 65 5d 20 3d 20 63 62 3b 0a 20 20 20 20 64 6f 6d e] = cb;. dom
a300: 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 .addEventListene
a310: 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20 63 62 2c r(eventName, cb,
a320: 20 66 61 6c 73 65 29 3b 0a 20 20 7d 0a 0a 20 20 false);. }..
a330: 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 20 /**. * Create
a340: 61 20 6e 65 77 20 63 68 69 6c 64 20 74 61 67 20 a new child tag
a350: 69 6e 63 6c 75 64 69 6e 67 20 69 74 20 63 6f 72 including it cor
a360: 72 65 63 74 6c 79 20 69 6e 74 6f 20 69 74 73 20 rectly into its
a370: 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 70 61 72 parent. * @par
a380: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 am { Object }
a390: 63 68 69 6c 64 20 2d 20 63 68 69 6c 64 20 74 61 child - child ta
a3a0: 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e g implementation
a3b0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
a3c0: 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d Object } opts -
a3d0: 20 74 61 67 20 6f 70 74 69 6f 6e 73 20 63 6f 6e tag options con
a3e0: 74 61 69 6e 69 6e 67 20 74 68 65 20 44 4f 4d 20 taining the DOM
a3f0: 6e 6f 64 65 20 77 68 65 72 65 20 74 68 65 20 74 node where the t
a400: 61 67 20 77 69 6c 6c 20 62 65 20 6d 6f 75 6e 74 ag will be mount
a410: 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ed. * @param
a420: 20 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e 6e 65 { String } inne
a430: 72 48 54 4d 4c 20 2d 20 69 6e 6e 65 72 20 68 74 rHTML - inner ht
a440: 6d 6c 20 6f 66 20 74 68 65 20 63 68 69 6c 64 20 ml of the child
a450: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d node. * @param
a460: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 70 61 { Object } pa
a470: 72 65 6e 74 20 2d 20 69 6e 73 74 61 6e 63 65 20 rent - instance
a480: 6f 66 20 74 68 65 20 70 61 72 65 6e 74 20 74 61 of the parent ta
a490: 67 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 g including the
a4a0: 63 68 69 6c 64 20 63 75 73 74 6f 6d 20 74 61 67 child custom tag
a4b0: 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
a4c0: 20 4f 62 6a 65 63 74 20 7d 20 69 6e 73 74 61 6e Object } instan
a4d0: 63 65 20 6f 66 20 74 68 65 20 6e 65 77 20 63 68 ce of the new ch
a4e0: 69 6c 64 20 74 61 67 20 6a 75 73 74 20 63 72 65 ild tag just cre
a4f0: 61 74 65 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ated. */. fun
a500: 63 74 69 6f 6e 20 69 6e 69 74 43 68 69 6c 64 28 ction initChild(
a510: 63 68 69 6c 64 2c 20 6f 70 74 73 2c 20 69 6e 6e child, opts, inn
a520: 65 72 48 54 4d 4c 2c 20 70 61 72 65 6e 74 29 20 erHTML, parent)
a530: 7b 0a 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 {. var tag =
a540: 63 72 65 61 74 65 54 61 67 28 63 68 69 6c 64 2c createTag(child,
a550: 20 6f 70 74 73 2c 20 69 6e 6e 65 72 48 54 4d 4c opts, innerHTML
a560: 29 3b 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61 );. var tagNa
a570: 6d 65 20 3d 20 6f 70 74 73 2e 74 61 67 4e 61 6d me = opts.tagNam
a580: 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 6f 70 74 e || getName(opt
a590: 73 2e 72 6f 6f 74 2c 20 74 72 75 65 29 3b 0a 20 s.root, true);.
a5a0: 20 20 20 76 61 72 20 70 74 61 67 20 3d 20 67 65 var ptag = ge
a5b0: 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d tImmediateCustom
a5c0: 50 61 72 65 6e 74 28 70 61 72 65 6e 74 29 3b 0a Parent(parent);.
a5d0: 20 20 20 20 2f 2f 20 66 69 78 20 66 6f 72 20 74 // fix for t
a5e0: 68 65 20 70 61 72 65 6e 74 20 61 74 74 72 69 62 he parent attrib
a5f0: 75 74 65 20 69 6e 20 74 68 65 20 6c 6f 6f 70 65 ute in the loope
a600: 64 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 20 64 d elements. d
a610: 65 66 69 6e 65 28 74 61 67 2c 20 27 70 61 72 65 efine(tag, 'pare
a620: 6e 74 27 2c 20 70 74 61 67 29 3b 0a 20 20 20 20 nt', ptag);.
a630: 2f 2f 20 73 74 6f 72 65 20 74 68 65 20 72 65 61 // store the rea
a640: 6c 20 70 61 72 65 6e 74 20 74 61 67 0a 20 20 20 l parent tag.
a650: 20 2f 2f 20 69 6e 20 73 6f 6d 65 20 63 61 73 65 // in some case
a660: 73 20 74 68 69 73 20 63 6f 75 6c 64 20 62 65 20 s this could be
a670: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 different from t
a680: 68 65 20 63 75 73 74 6f 6d 20 70 61 72 65 6e 74 he custom parent
a690: 20 74 61 67 0a 20 20 20 20 2f 2f 20 66 6f 72 20 tag. // for
a6a0: 65 78 61 6d 70 6c 65 20 69 6e 20 6e 65 73 74 65 example in neste
a6b0: 64 20 6c 6f 6f 70 73 0a 20 20 20 20 74 61 67 2e d loops. tag.
a6c0: 5f 5f 2e 70 61 72 65 6e 74 20 3d 20 70 61 72 65 __.parent = pare
a6d0: 6e 74 3b 0a 0a 20 20 20 20 2f 2f 20 61 64 64 20 nt;.. // add
a6e0: 74 68 69 73 20 74 61 67 20 74 6f 20 74 68 65 20 this tag to the
a6f0: 63 75 73 74 6f 6d 20 70 61 72 65 6e 74 20 74 61 custom parent ta
a700: 67 0a 20 20 20 20 61 72 72 61 79 69 73 68 41 64 g. arrayishAd
a710: 64 28 70 74 61 67 2e 74 61 67 73 2c 20 74 61 67 d(ptag.tags, tag
a720: 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 0a 20 20 20 Name, tag);..
a730: 20 2f 2f 20 61 6e 64 20 61 6c 73 6f 20 74 6f 20 // and also to
a740: 74 68 65 20 72 65 61 6c 20 70 61 72 65 6e 74 20 the real parent
a750: 74 61 67 0a 20 20 20 20 69 66 20 28 70 74 61 67 tag. if (ptag
a760: 20 21 3d 3d 20 70 61 72 65 6e 74 29 0a 20 20 20 !== parent).
a770: 20 20 20 7b 20 61 72 72 61 79 69 73 68 41 64 64 { arrayishAdd
a780: 28 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 74 61 (parent.tags, ta
a790: 67 4e 61 6d 65 2c 20 74 61 67 29 3b 20 7d 0a 0a gName, tag); }..
a7a0: 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 return tag.
a7b0: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 52 }.. /**. * R
a7c0: 65 6d 6f 76 65 73 20 61 6e 20 69 74 65 6d 20 66 emoves an item f
a7d0: 72 6f 6d 20 61 6e 20 6f 62 6a 65 63 74 20 61 74 rom an object at
a7e0: 20 61 20 67 69 76 65 6e 20 6b 65 79 2e 20 49 66 a given key. If
a7f0: 20 74 68 65 20 6b 65 79 20 70 6f 69 6e 74 73 20 the key points
a800: 74 6f 20 61 6e 20 61 72 72 61 79 2c 0a 20 20 20 to an array,.
a810: 2a 20 74 68 65 6e 20 74 68 65 20 69 74 65 6d 20 * then the item
a820: 69 73 20 6a 75 73 74 20 72 65 6d 6f 76 65 64 20 is just removed
a830: 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79 2e 0a from the array..
a840: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62 * @param { Ob
a850: 6a 65 63 74 20 7d 20 6f 62 6a 20 2d 20 6f 62 6a ject } obj - obj
a860: 65 63 74 20 6f 6e 20 77 68 69 63 68 20 74 6f 20 ect on which to
a870: 72 65 6d 6f 76 65 20 74 68 65 20 70 72 6f 70 65 remove the prope
a880: 72 74 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 rty. * @param
a890: 7b 20 53 74 72 69 6e 67 20 7d 20 6b 65 79 20 2d { String } key -
a8a0: 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 0a 20 property name.
a8b0: 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62 6a * @param { Obj
a8c0: 65 63 74 20 7d 20 76 61 6c 75 65 20 2d 20 74 68 ect } value - th
a8d0: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 70 e value of the p
a8e0: 72 6f 70 65 72 74 79 20 74 6f 20 62 65 20 72 65 roperty to be re
a8f0: 6d 6f 76 65 64 0a 20 20 20 2a 20 40 70 61 72 61 moved. * @para
a900: 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 65 6e m { Boolean } en
a910: 73 75 72 65 41 72 72 61 79 20 2d 20 65 6e 73 75 sureArray - ensu
a920: 72 65 20 74 68 61 74 20 74 68 65 20 70 72 6f 70 re that the prop
a930: 65 72 74 79 20 72 65 6d 61 69 6e 73 20 61 6e 20 erty remains an
a940: 61 72 72 61 79 0a 20 20 2a 2f 0a 20 20 66 75 6e array. */. fun
a950: 63 74 69 6f 6e 20 61 72 72 61 79 69 73 68 52 65 ction arrayishRe
a960: 6d 6f 76 65 28 6f 62 6a 2c 20 6b 65 79 2c 20 76 move(obj, key, v
a970: 61 6c 75 65 2c 20 65 6e 73 75 72 65 41 72 72 61 alue, ensureArra
a980: 79 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 41 y) {. if (isA
a990: 72 72 61 79 28 6f 62 6a 5b 6b 65 79 5d 29 29 20 rray(obj[key]))
a9a0: 7b 0a 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 {. var inde
a9b0: 78 20 3d 20 6f 62 6a 5b 6b 65 79 5d 2e 69 6e 64 x = obj[key].ind
a9c0: 65 78 4f 66 28 76 61 6c 75 65 29 3b 0a 20 20 20 exOf(value);.
a9d0: 20 20 20 69 66 20 28 69 6e 64 65 78 20 21 3d 3d if (index !==
a9e0: 20 2d 31 29 20 7b 20 6f 62 6a 5b 6b 65 79 5d 2e -1) { obj[key].
a9f0: 73 70 6c 69 63 65 28 69 6e 64 65 78 2c 20 31 29 splice(index, 1)
aa00: 3b 20 7d 0a 20 20 20 20 20 20 69 66 20 28 21 6f ; }. if (!o
aa10: 62 6a 5b 6b 65 79 5d 2e 6c 65 6e 67 74 68 29 20 bj[key].length)
aa20: 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b 65 79 { delete obj[key
aa30: 5d 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 ]; }. else
aa40: 69 66 20 28 6f 62 6a 5b 6b 65 79 5d 2e 6c 65 6e if (obj[key].len
aa50: 67 74 68 20 3d 3d 3d 20 31 20 26 26 20 21 65 6e gth === 1 && !en
aa60: 73 75 72 65 41 72 72 61 79 29 20 7b 20 6f 62 6a sureArray) { obj
aa70: 5b 6b 65 79 5d 20 3d 20 6f 62 6a 5b 6b 65 79 5d [key] = obj[key]
aa80: 5b 30 5d 3b 20 7d 0a 20 20 20 20 7d 20 65 6c 73 [0]; }. } els
aa90: 65 20 69 66 20 28 6f 62 6a 5b 6b 65 79 5d 20 3d e if (obj[key] =
aaa0: 3d 3d 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 == value).
aab0: 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b 65 79 { delete obj[key
aac0: 5d 3b 20 7d 20 2f 2f 20 6f 74 68 65 72 77 69 73 ]; } // otherwis
aad0: 65 20 6a 75 73 74 20 64 65 6c 65 74 65 20 74 68 e just delete th
aae0: 65 20 6b 65 79 0a 20 20 7d 0a 0a 20 20 2f 2a 2a e key. }.. /**
aaf0: 0a 20 20 20 2a 20 41 64 64 73 20 74 68 65 20 65 . * Adds the e
ab00: 6c 65 6d 65 6e 74 73 20 66 6f 72 20 61 20 76 69 lements for a vi
ab10: 72 74 75 61 6c 20 74 61 67 0a 20 20 20 2a 20 40 rtual tag. * @
ab20: 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 this Tag. * @p
ab30: 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 73 72 aram { Node } sr
ab40: 63 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 68 61 c - the node tha
ab50: 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 69 6e t will do the in
ab60: 73 65 72 74 69 6e 67 20 6f 72 20 61 70 70 65 6e serting or appen
ab70: 64 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 61 6d ding. * @param
ab80: 20 7b 20 54 61 67 20 7d 20 74 61 72 67 65 74 20 { Tag } target
ab90: 2d 20 6f 6e 6c 79 20 69 66 20 69 6e 73 65 72 74 - only if insert
aba0: 69 6e 67 2c 20 69 6e 73 65 72 74 20 62 65 66 6f ing, insert befo
abb0: 72 65 20 74 68 69 73 20 74 61 67 27 73 20 66 69 re this tag's fi
abc0: 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a 2f 0a rst child. */.
abd0: 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 6b 65 56 function makeV
abe0: 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61 72 67 irtual(src, targ
abf0: 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 68 et) {. var th
ac00: 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 is$1 = this;..
ac10: 20 20 76 61 72 20 68 65 61 64 20 3d 20 63 72 65 var head = cre
ac20: 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 ateDOMPlaceholde
ac30: 72 28 29 3b 0a 20 20 20 20 76 61 72 20 74 61 69 r();. var tai
ac40: 6c 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 l = createDOMPla
ac50: 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20 ceholder();.
ac60: 76 61 72 20 66 72 61 67 20 3d 20 63 72 65 61 74 var frag = creat
ac70: 65 46 72 61 67 6d 65 6e 74 28 29 3b 0a 20 20 20 eFragment();.
ac80: 20 76 61 72 20 73 69 62 3b 0a 20 20 20 20 76 61 var sib;. va
ac90: 72 20 65 6c 3b 0a 0a 20 20 20 20 74 68 69 73 2e r el;.. this.
aca0: 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 6f 72 root.insertBefor
acb0: 65 28 68 65 61 64 2c 20 74 68 69 73 2e 72 6f 6f e(head, this.roo
acc0: 74 2e 66 69 72 73 74 43 68 69 6c 64 29 3b 0a 20 t.firstChild);.
acd0: 20 20 20 74 68 69 73 2e 72 6f 6f 74 2e 61 70 70 this.root.app
ace0: 65 6e 64 43 68 69 6c 64 28 74 61 69 6c 29 3b 0a endChild(tail);.
acf0: 0a 20 20 20 20 74 68 69 73 2e 5f 5f 2e 68 65 61 . this.__.hea
ad00: 64 20 3d 20 65 6c 20 3d 20 68 65 61 64 3b 0a 20 d = el = head;.
ad10: 20 20 20 74 68 69 73 2e 5f 5f 2e 74 61 69 6c 20 this.__.tail
ad20: 3d 20 74 61 69 6c 3b 0a 0a 20 20 20 20 77 68 69 = tail;.. whi
ad30: 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20 20 20 le (el) {.
ad40: 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53 69 62 sib = el.nextSib
ad50: 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72 61 67 ling;. frag
ad60: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29 .appendChild(el)
ad70: 3b 0a 20 20 20 20 20 20 74 68 69 73 24 31 2e 5f ;. this$1._
ad80: 5f 2e 76 69 72 74 73 2e 70 75 73 68 28 65 6c 29 _.virts.push(el)
ad90: 3b 20 2f 2f 20 68 6f 6c 64 20 66 6f 72 20 75 6e ; // hold for un
ada0: 6d 6f 75 6e 74 69 6e 67 0a 20 20 20 20 20 20 65 mounting. e
adb0: 6c 20 3d 20 73 69 62 3b 0a 20 20 20 20 7d 0a 0a l = sib;. }..
adc0: 20 20 20 20 69 66 20 28 74 61 72 67 65 74 29 0a if (target).
add0: 20 20 20 20 20 20 7b 20 73 72 63 2e 69 6e 73 65 { src.inse
ade0: 72 74 42 65 66 6f 72 65 28 66 72 61 67 2c 20 74 rtBefore(frag, t
adf0: 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64 29 3b 20 arget.__.head);
ae00: 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 }. else.
ae10: 20 7b 20 73 72 63 2e 61 70 70 65 6e 64 43 68 69 { src.appendChi
ae20: 6c 64 28 66 72 61 67 29 3b 20 7d 0a 20 20 7d 0a ld(frag); }. }.
ae30: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 6d 61 6b 65 . /**. * make
ae40: 73 20 61 20 74 61 67 20 76 69 72 74 75 61 6c 20 s a tag virtual
ae50: 61 6e 64 20 72 65 70 6c 61 63 65 73 20 61 20 72 and replaces a r
ae60: 65 66 65 72 65 6e 63 65 20 69 6e 20 74 68 65 20 eference in the
ae70: 64 6f 6d 0a 20 20 20 2a 20 40 74 68 69 73 20 54 dom. * @this T
ae80: 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b ag. * @param {
ae90: 20 74 61 67 20 7d 20 74 68 65 20 74 61 67 20 74 tag } the tag t
aea0: 6f 20 6d 61 6b 65 20 76 69 72 74 75 61 6c 0a 20 o make virtual.
aeb0: 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 72 65 66 * @param { ref
aec0: 20 7d 20 74 68 65 20 64 6f 6d 20 72 65 66 65 72 } the dom refer
aed0: 65 6e 63 65 20 6c 6f 63 61 74 69 6f 6e 0a 20 20 ence location.
aee0: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d */. function m
aef0: 61 6b 65 52 65 70 6c 61 63 65 56 69 72 74 75 61 akeReplaceVirtua
af00: 6c 28 74 61 67 2c 20 72 65 66 29 20 7b 0a 20 20 l(tag, ref) {.
af10: 20 20 69 66 20 28 21 72 65 66 2e 70 61 72 65 6e if (!ref.paren
af20: 74 4e 6f 64 65 29 20 7b 20 72 65 74 75 72 6e 20 tNode) { return
af30: 7d 0a 20 20 20 20 76 61 72 20 66 72 61 67 20 3d }. var frag =
af40: 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74 28 createFragment(
af50: 29 3b 0a 20 20 20 20 6d 61 6b 65 56 69 72 74 75 );. makeVirtu
af60: 61 6c 2e 63 61 6c 6c 28 74 61 67 2c 20 66 72 61 al.call(tag, fra
af70: 67 29 3b 0a 20 20 20 20 72 65 66 2e 70 61 72 65 g);. ref.pare
af80: 6e 74 4e 6f 64 65 2e 72 65 70 6c 61 63 65 43 68 ntNode.replaceCh
af90: 69 6c 64 28 66 72 61 67 2c 20 72 65 66 29 3b 0a ild(frag, ref);.
afa0: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
afb0: 55 70 64 61 74 65 20 64 79 6e 61 6d 69 63 61 6c Update dynamical
afc0: 6c 79 20 63 72 65 61 74 65 64 20 64 61 74 61 2d ly created data-
afd0: 69 73 20 74 61 67 73 20 77 69 74 68 20 63 68 61 is tags with cha
afe0: 6e 67 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e nging expression
aff0: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 s. * @param {
b000: 4f 62 6a 65 63 74 20 7d 20 65 78 70 72 20 2d 20 Object } expr -
b010: 65 78 70 72 65 73 73 69 6f 6e 20 74 61 67 20 61 expression tag a
b020: 6e 64 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e nd expression in
b030: 66 6f 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b fo. * @param {
b040: 20 54 61 67 20 7d 20 20 20 20 70 61 72 65 6e 74 Tag } parent
b050: 20 2d 20 70 61 72 65 6e 74 20 66 6f 72 20 74 61 - parent for ta
b060: 67 20 63 72 65 61 74 69 6f 6e 0a 20 20 20 2a 20 g creation. *
b070: 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 @param { String
b080: 7d 20 74 61 67 4e 61 6d 65 20 2d 20 74 61 67 20 } tagName - tag
b090: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 implementation w
b0a0: 65 20 77 61 6e 74 20 74 6f 20 75 73 65 0a 20 20 e want to use.
b0b0: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 */. function u
b0c0: 70 64 61 74 65 44 61 74 61 49 73 28 65 78 70 72 pdateDataIs(expr
b0d0: 2c 20 70 61 72 65 6e 74 2c 20 74 61 67 4e 61 6d , parent, tagNam
b0e0: 65 29 20 7b 0a 20 20 20 20 76 61 72 20 74 61 67 e) {. var tag
b0f0: 20 3d 20 65 78 70 72 2e 74 61 67 20 7c 7c 20 65 = expr.tag || e
b100: 78 70 72 2e 64 6f 6d 2e 5f 74 61 67 3b 0a 20 20 xpr.dom._tag;.
b110: 20 20 76 61 72 20 72 65 66 3b 0a 0a 20 20 20 20 var ref;..
b120: 76 61 72 20 72 65 66 24 31 20 3d 20 74 61 67 20 var ref$1 = tag
b130: 3f 20 74 61 67 2e 5f 5f 20 3a 20 7b 7d 3b 0a 20 ? tag.__ : {};.
b140: 20 20 20 76 61 72 20 68 65 61 64 20 3d 20 72 65 var head = re
b150: 66 24 31 2e 68 65 61 64 3b 0a 20 20 20 20 76 61 f$1.head;. va
b160: 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 65 78 r isVirtual = ex
b170: 70 72 2e 64 6f 6d 2e 74 61 67 4e 61 6d 65 20 3d pr.dom.tagName =
b180: 3d 3d 20 27 56 49 52 54 55 41 4c 27 3b 0a 0a 20 == 'VIRTUAL';..
b190: 20 20 20 69 66 20 28 74 61 67 20 26 26 20 65 78 if (tag && ex
b1a0: 70 72 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 74 pr.tagName === t
b1b0: 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 agName) {.
b1c0: 74 61 67 2e 75 70 64 61 74 65 28 29 3b 0a 20 20 tag.update();.
b1d0: 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d return. }
b1e0: 0a 0a 20 20 20 20 2f 2f 20 73 79 6e 63 20 5f 70 .. // sync _p
b1f0: 61 72 65 6e 74 20 74 6f 20 61 63 63 6f 6d 6d 6f arent to accommo
b200: 64 61 74 65 20 63 68 61 6e 67 69 6e 67 20 74 61 date changing ta
b210: 67 6e 61 6d 65 73 0a 20 20 20 20 69 66 20 28 74 gnames. if (t
b220: 61 67 29 20 7b 0a 20 20 20 20 20 20 2f 2f 20 6e ag) {. // n
b230: 65 65 64 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 eed placeholder
b240: 62 65 66 6f 72 65 20 75 6e 6d 6f 75 6e 74 0a 20 before unmount.
b250: 20 20 20 20 20 69 66 28 69 73 56 69 72 74 75 61 if(isVirtua
b260: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 66 l) {. ref
b270: 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 = createDOMPlac
b280: 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20 20 eholder();.
b290: 20 20 20 68 65 61 64 2e 70 61 72 65 6e 74 4e 6f head.parentNo
b2a0: 64 65 2e 69 6e 73 65 72 74 42 65 66 6f 72 65 28 de.insertBefore(
b2b0: 72 65 66 2c 20 68 65 61 64 29 3b 0a 20 20 20 20 ref, head);.
b2c0: 20 20 7d 0a 0a 20 20 20 20 20 20 74 61 67 2e 75 }.. tag.u
b2d0: 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 0a 20 20 nmount(true);.
b2e0: 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 75 6e 61 62 }.. // unab
b2f0: 6c 65 20 74 6f 20 67 65 74 20 74 68 65 20 74 61 le to get the ta
b300: 67 20 6e 61 6d 65 0a 20 20 20 20 69 66 20 28 21 g name. if (!
b310: 69 73 53 74 72 69 6e 67 28 74 61 67 4e 61 6d 65 isString(tagName
b320: 29 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 )) { return }..
b330: 20 20 20 65 78 70 72 2e 69 6d 70 6c 20 3d 20 5f expr.impl = _
b340: 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e 61 6d _TAG_IMPL[tagNam
b350: 65 5d 3b 0a 0a 20 20 20 20 2f 2f 20 75 6e 6b 6e e];.. // unkn
b360: 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 own implementati
b370: 6f 6e 0a 20 20 20 20 69 66 20 28 21 65 78 70 72 on. if (!expr
b380: 2e 69 6d 70 6c 29 20 7b 20 72 65 74 75 72 6e 20 .impl) { return
b390: 7d 0a 0a 20 20 20 20 65 78 70 72 2e 74 61 67 20 }.. expr.tag
b3a0: 3d 20 74 61 67 20 3d 20 69 6e 69 74 43 68 69 6c = tag = initChil
b3b0: 64 28 0a 20 20 20 20 20 20 65 78 70 72 2e 69 6d d(. expr.im
b3c0: 70 6c 2c 20 7b 0a 20 20 20 20 20 20 20 20 72 6f pl, {. ro
b3d0: 6f 74 3a 20 65 78 70 72 2e 64 6f 6d 2c 0a 20 20 ot: expr.dom,.
b3e0: 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70 61 parent: pa
b3f0: 72 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 74 61 rent,. ta
b400: 67 4e 61 6d 65 3a 20 74 61 67 4e 61 6d 65 0a 20 gName: tagName.
b410: 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 65 78 },. ex
b420: 70 72 2e 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c pr.dom.innerHTML
b430: 2c 0a 20 20 20 20 20 20 70 61 72 65 6e 74 0a 20 ,. parent.
b440: 20 20 20 29 3b 0a 0a 20 20 20 20 65 61 63 68 28 );.. each(
b450: 65 78 70 72 2e 61 74 74 72 73 2c 20 66 75 6e 63 expr.attrs, func
b460: 74 69 6f 6e 20 28 61 29 20 7b 20 72 65 74 75 72 tion (a) { retur
b470: 6e 20 73 65 74 41 74 74 72 69 62 75 74 65 28 74 n setAttribute(t
b480: 61 67 2e 72 6f 6f 74 2c 20 61 2e 6e 61 6d 65 2c ag.root, a.name,
b490: 20 61 2e 76 61 6c 75 65 29 3b 20 7d 29 3b 0a 20 a.value); });.
b4a0: 20 20 20 65 78 70 72 2e 74 61 67 4e 61 6d 65 20 expr.tagName
b4b0: 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 74 = tagName;. t
b4c0: 61 67 2e 6d 6f 75 6e 74 28 29 3b 0a 0a 20 20 20 ag.mount();..
b4d0: 20 2f 2f 20 72 6f 6f 74 20 65 78 69 73 74 20 66 // root exist f
b4e0: 69 72 73 74 20 74 69 6d 65 2c 20 61 66 74 65 72 irst time, after
b4f0: 20 75 73 65 20 70 6c 61 63 65 68 6f 6c 64 65 72 use placeholder
b500: 0a 20 20 20 20 69 66 20 28 69 73 56 69 72 74 75 . if (isVirtu
b510: 61 6c 29 20 7b 20 6d 61 6b 65 52 65 70 6c 61 63 al) { makeReplac
b520: 65 56 69 72 74 75 61 6c 28 74 61 67 2c 20 72 65 eVirtual(tag, re
b530: 66 20 7c 7c 20 74 61 67 2e 72 6f 6f 74 29 3b 20 f || tag.root);
b540: 7d 0a 0a 20 20 20 20 2f 2f 20 70 61 72 65 6e 74 }.. // parent
b550: 20 69 73 20 74 68 65 20 70 6c 61 63 65 68 6f 6c is the placehol
b560: 64 65 72 20 74 61 67 2c 20 6e 6f 74 20 74 68 65 der tag, not the
b570: 20 64 79 6e 61 6d 69 63 20 74 61 67 20 73 6f 20 dynamic tag so
b580: 63 6c 65 61 6e 20 75 70 0a 20 20 20 20 70 61 72 clean up. par
b590: 65 6e 74 2e 5f 5f 2e 6f 6e 55 6e 6d 6f 75 6e 74 ent.__.onUnmount
b5a0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
b5b0: 0a 20 20 20 20 20 20 76 61 72 20 64 65 6c 4e 61 . var delNa
b5c0: 6d 65 20 3d 20 74 61 67 2e 6f 70 74 73 2e 64 61 me = tag.opts.da
b5d0: 74 61 49 73 3b 0a 20 20 20 20 20 20 61 72 72 61 taIs;. arra
b5e0: 79 69 73 68 52 65 6d 6f 76 65 28 74 61 67 2e 70 yishRemove(tag.p
b5f0: 61 72 65 6e 74 2e 74 61 67 73 2c 20 64 65 6c 4e arent.tags, delN
b600: 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20 20 20 ame, tag);.
b610: 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 arrayishRemove(
b620: 74 61 67 2e 5f 5f 2e 70 61 72 65 6e 74 2e 74 61 tag.__.parent.ta
b630: 67 73 2c 20 64 65 6c 4e 61 6d 65 2c 20 74 61 67 gs, delName, tag
b640: 29 3b 0a 20 20 20 20 20 20 74 61 67 2e 75 6e 6d );. tag.unm
b650: 6f 75 6e 74 28 29 3b 0a 20 20 20 20 7d 3b 0a 20 ount();. };.
b660: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4e }.. /**. * N
b670: 6f 6d 61 6c 69 7a 65 20 61 6e 79 20 61 74 74 72 omalize any attr
b680: 69 62 75 74 65 20 72 65 6d 6f 76 69 6e 67 20 74 ibute removing t
b690: 68 65 20 22 72 69 6f 74 2d 22 20 70 72 65 66 69 he "riot-" prefi
b6a0: 78 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 x. * @param
b6b0: 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 72 4e { String } attrN
b6c0: 61 6d 65 20 2d 20 6f 72 69 67 69 6e 61 6c 20 61 ame - original a
b6d0: 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a 20 20 ttribute name.
b6e0: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 53 74 * @returns { St
b6f0: 72 69 6e 67 20 7d 20 76 61 6c 69 64 20 68 74 6d ring } valid htm
b700: 6c 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 l attribute name
b710: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
b720: 6e 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74 72 4e n normalizeAttrN
b730: 61 6d 65 28 61 74 74 72 4e 61 6d 65 29 20 7b 0a ame(attrName) {.
b740: 20 20 20 20 69 66 20 28 21 61 74 74 72 4e 61 6d if (!attrNam
b750: 65 29 20 7b 20 72 65 74 75 72 6e 20 6e 75 6c 6c e) { return null
b760: 20 7d 0a 20 20 20 20 61 74 74 72 4e 61 6d 65 20 }. attrName
b770: 3d 20 61 74 74 72 4e 61 6d 65 2e 72 65 70 6c 61 = attrName.repla
b780: 63 65 28 41 54 54 52 53 5f 50 52 45 46 49 58 2c ce(ATTRS_PREFIX,
b790: 20 27 27 29 3b 0a 20 20 20 20 69 66 20 28 43 41 '');. if (CA
b7a0: 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 41 54 54 SE_SENSITIVE_ATT
b7b0: 52 49 42 55 54 45 53 5b 61 74 74 72 4e 61 6d 65 RIBUTES[attrName
b7c0: 5d 29 20 7b 20 61 74 74 72 4e 61 6d 65 20 3d 20 ]) { attrName =
b7d0: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 41 CASE_SENSITIVE_A
b7e0: 54 54 52 49 42 55 54 45 53 5b 61 74 74 72 4e 61 TTRIBUTES[attrNa
b7f0: 6d 65 5d 3b 20 7d 0a 20 20 20 20 72 65 74 75 72 me]; }. retur
b800: 6e 20 61 74 74 72 4e 61 6d 65 0a 20 20 7d 0a 0a n attrName. }..
b810: 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 /**. * Updat
b820: 65 20 6f 6e 20 73 69 6e 67 6c 65 20 74 61 67 20 e on single tag
b830: 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 2a 20 expression. *
b840: 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 @this Tag. * @
b850: 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d param { Object }
b860: 20 65 78 70 72 20 2d 20 65 78 70 72 65 73 73 69 expr - expressi
b870: 6f 6e 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 72 on logic. * @r
b880: 65 74 75 72 6e 73 20 7b 20 75 6e 64 65 66 69 6e eturns { undefin
b890: 65 64 20 7d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ed }. */. fun
b8a0: 63 74 69 6f 6e 20 75 70 64 61 74 65 45 78 70 72 ction updateExpr
b8b0: 65 73 73 69 6f 6e 28 65 78 70 72 29 20 7b 0a 20 ession(expr) {.
b8c0: 20 20 20 69 66 20 28 74 68 69 73 2e 72 6f 6f 74 if (this.root
b8d0: 20 26 26 20 67 65 74 41 74 74 72 69 62 75 74 65 && getAttribute
b8e0: 28 74 68 69 73 2e 72 6f 6f 74 2c 27 76 69 72 74 (this.root,'virt
b8f0: 75 61 6c 69 7a 65 64 27 29 29 20 7b 20 72 65 74 ualized')) { ret
b900: 75 72 6e 20 7d 0a 0a 20 20 20 20 76 61 72 20 64 urn }.. var d
b910: 6f 6d 20 3d 20 65 78 70 72 2e 64 6f 6d 3b 0a 20 om = expr.dom;.
b920: 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 // remove the
b930: 20 72 69 6f 74 2d 20 70 72 65 66 69 78 0a 20 20 riot- prefix.
b940: 20 20 76 61 72 20 61 74 74 72 4e 61 6d 65 20 3d var attrName =
b950: 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74 72 4e 61 normalizeAttrNa
b960: 6d 65 28 65 78 70 72 2e 61 74 74 72 29 3b 0a 20 me(expr.attr);.
b970: 20 20 20 76 61 72 20 69 73 54 6f 67 67 6c 65 20 var isToggle
b980: 3d 20 63 6f 6e 74 61 69 6e 73 28 5b 53 48 4f 57 = contains([SHOW
b990: 5f 44 49 52 45 43 54 49 56 45 2c 20 48 49 44 45 _DIRECTIVE, HIDE
b9a0: 5f 44 49 52 45 43 54 49 56 45 5d 2c 20 61 74 74 _DIRECTIVE], att
b9b0: 72 4e 61 6d 65 29 3b 0a 20 20 20 20 76 61 72 20 rName);. var
b9c0: 69 73 56 69 72 74 75 61 6c 20 3d 20 65 78 70 72 isVirtual = expr
b9d0: 2e 72 6f 6f 74 20 26 26 20 65 78 70 72 2e 72 6f .root && expr.ro
b9e0: 6f 74 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 ot.tagName === '
b9f0: 56 49 52 54 55 41 4c 27 3b 0a 20 20 20 20 76 61 VIRTUAL';. va
ba00: 72 20 72 65 66 20 3d 20 74 68 69 73 2e 5f 5f 3b r ref = this.__;
ba10: 0a 20 20 20 20 76 61 72 20 69 73 41 6e 6f 6e 79 . var isAnony
ba20: 6d 6f 75 73 20 3d 20 72 65 66 2e 69 73 41 6e 6f mous = ref.isAno
ba30: 6e 79 6d 6f 75 73 3b 0a 20 20 20 20 76 61 72 20 nymous;. var
ba40: 70 61 72 65 6e 74 20 3d 20 64 6f 6d 20 26 26 20 parent = dom &&
ba50: 28 65 78 70 72 2e 70 61 72 65 6e 74 20 7c 7c 20 (expr.parent ||
ba60: 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 29 3b dom.parentNode);
ba70: 0a 20 20 20 20 76 61 72 20 6b 65 65 70 56 61 6c . var keepVal
ba80: 75 65 41 74 74 72 69 62 75 74 65 73 20 3d 20 73 ueAttributes = s
ba90: 65 74 74 69 6e 67 73 2e 6b 65 65 70 56 61 6c 75 ettings.keepValu
baa0: 65 41 74 74 72 69 62 75 74 65 73 3b 0a 20 20 20 eAttributes;.
bab0: 20 2f 2f 20 64 65 74 65 63 74 20 74 68 65 20 73 // detect the s
bac0: 74 79 6c 65 20 61 74 74 72 69 62 75 74 65 73 0a tyle attributes.
bad0: 20 20 20 20 76 61 72 20 69 73 53 74 79 6c 65 41 var isStyleA
bae0: 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65 20 3d ttr = attrName =
baf0: 3d 3d 20 27 73 74 79 6c 65 27 3b 0a 20 20 20 20 == 'style';.
bb00: 76 61 72 20 69 73 43 6c 61 73 73 41 74 74 72 20 var isClassAttr
bb10: 3d 20 61 74 74 72 4e 61 6d 65 20 3d 3d 3d 20 27 = attrName === '
bb20: 63 6c 61 73 73 27 3b 0a 20 20 20 20 76 61 72 20 class';. var
bb30: 69 73 56 61 6c 75 65 41 74 74 72 20 3d 20 61 74 isValueAttr = at
bb40: 74 72 4e 61 6d 65 20 3d 3d 3d 20 27 76 61 6c 75 trName === 'valu
bb50: 65 27 3b 0a 0a 20 20 20 20 76 61 72 20 76 61 6c e';.. var val
bb60: 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 20 69 ue;.. // if i
bb70: 74 27 73 20 61 20 74 61 67 20 77 65 20 63 6f 75 t's a tag we cou
bb80: 6c 64 20 74 6f 74 61 6c 6c 79 20 73 6b 69 70 20 ld totally skip
bb90: 74 68 65 20 72 65 73 74 0a 20 20 20 20 69 66 20 the rest. if
bba0: 28 65 78 70 72 2e 5f 72 69 6f 74 5f 69 64 29 20 (expr._riot_id)
bbb0: 7b 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 72 {. if (expr
bbc0: 2e 5f 5f 2e 77 61 73 43 72 65 61 74 65 64 29 20 .__.wasCreated)
bbd0: 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72 2e 75 {. expr.u
bbe0: 70 64 61 74 65 28 29 3b 0a 20 20 20 20 20 20 2f pdate();. /
bbf0: 2f 20 69 66 20 69 74 20 68 61 73 6e 27 74 20 62 / if it hasn't b
bc00: 65 65 6e 20 6d 6f 75 6e 74 65 64 20 79 65 74 2c een mounted yet,
bc10: 20 64 6f 20 74 68 61 74 20 6e 6f 77 2e 0a 20 20 do that now..
bc20: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 } else {.
bc30: 20 20 20 20 20 65 78 70 72 2e 6d 6f 75 6e 74 28 expr.mount(
bc40: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 );. if (i
bc50: 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 sVirtual) {.
bc60: 20 20 20 20 20 20 6d 61 6b 65 52 65 70 6c 61 63 makeReplac
bc70: 65 56 69 72 74 75 61 6c 28 65 78 70 72 2c 20 65 eVirtual(expr, e
bc80: 78 70 72 2e 72 6f 6f 74 29 3b 0a 20 20 20 20 20 xpr.root);.
bc90: 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 }. }.
bca0: 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a return. }.
bcb0: 0a 20 20 20 20 2f 2f 20 69 66 20 74 68 69 73 20 . // if this
bcc0: 65 78 70 72 65 73 73 69 6f 6e 20 68 61 73 20 74 expression has t
bcd0: 68 65 20 75 70 64 61 74 65 20 6d 65 74 68 6f 64 he update method
bce0: 20 69 74 20 6d 65 61 6e 73 20 69 74 20 63 61 6e it means it can
bcf0: 20 68 61 6e 64 6c 65 20 74 68 65 20 44 4f 4d 20 handle the DOM
bd00: 63 68 61 6e 67 65 73 20 62 79 20 69 74 73 65 6c changes by itsel
bd10: 66 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e 75 f. if (expr.u
bd20: 70 64 61 74 65 29 20 7b 20 72 65 74 75 72 6e 20 pdate) { return
bd30: 65 78 70 72 2e 75 70 64 61 74 65 28 29 20 7d 0a expr.update() }.
bd40: 0a 20 20 20 20 76 61 72 20 63 6f 6e 74 65 78 74 . var context
bd50: 20 3d 20 69 73 54 6f 67 67 6c 65 20 26 26 20 21 = isToggle && !
bd60: 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3f 20 69 6e isAnonymous ? in
bd70: 68 65 72 69 74 50 61 72 65 6e 74 50 72 6f 70 73 heritParentProps
bd80: 2e 63 61 6c 6c 28 74 68 69 73 29 20 3a 20 74 68 .call(this) : th
bd90: 69 73 3b 0a 0a 20 20 20 20 2f 2f 20 2e 2e 2e 69 is;.. // ...i
bda0: 74 20 73 65 65 6d 73 20 74 6f 20 62 65 20 61 20 t seems to be a
bdb0: 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 69 6f simple expressio
bdc0: 6e 20 73 6f 20 77 65 20 74 72 79 20 74 6f 20 63 n so we try to c
bdd0: 61 6c 63 75 6c 61 74 65 20 69 74 73 20 76 61 6c alculate its val
bde0: 75 65 0a 20 20 20 20 76 61 6c 75 65 20 3d 20 74 ue. value = t
bdf0: 6d 70 6c 28 65 78 70 72 2e 65 78 70 72 2c 20 63 mpl(expr.expr, c
be00: 6f 6e 74 65 78 74 29 3b 0a 0a 20 20 20 20 76 61 ontext);.. va
be10: 72 20 68 61 73 56 61 6c 75 65 20 3d 20 21 69 73 r hasValue = !is
be20: 42 6c 61 6e 6b 28 76 61 6c 75 65 29 3b 0a 20 20 Blank(value);.
be30: 20 20 76 61 72 20 69 73 4f 62 6a 20 3d 20 69 73 var isObj = is
be40: 4f 62 6a 65 63 74 28 76 61 6c 75 65 29 3b 0a 0a Object(value);..
be50: 20 20 20 20 2f 2f 20 63 6f 6e 76 65 72 74 20 74 // convert t
be60: 68 65 20 73 74 79 6c 65 2f 63 6c 61 73 73 20 6f he style/class o
be70: 62 6a 65 63 74 73 20 74 6f 20 73 74 72 69 6e 67 bjects to string
be80: 73 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 29 s. if (isObj)
be90: 20 7b 0a 20 20 20 20 20 20 69 66 20 28 69 73 43 {. if (isC
bea0: 6c 61 73 73 41 74 74 72 29 20 7b 0a 20 20 20 20 lassAttr) {.
beb0: 20 20 20 20 76 61 6c 75 65 20 3d 20 74 6d 70 6c value = tmpl
bec0: 28 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 (JSON.stringify(
bed0: 76 61 6c 75 65 29 2c 20 74 68 69 73 29 3b 0a 20 value), this);.
bee0: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
bef0: 69 73 53 74 79 6c 65 41 74 74 72 29 20 7b 0a 20 isStyleAttr) {.
bf00: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 73 value = s
bf10: 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69 tyleObjectToStri
bf20: 6e 67 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 ng(value);.
bf30: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f }. }.. //
bf40: 20 72 65 6d 6f 76 65 20 6f 72 69 67 69 6e 61 6c remove original
bf50: 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 20 69 attribute. i
bf60: 66 20 28 65 78 70 72 2e 61 74 74 72 20 26 26 0a f (expr.attr &&.
bf70: 20 20 20 20 20 20 20 20 28 0a 20 20 20 20 20 20 (.
bf80: 20 20 20 20 2f 2f 20 74 68 65 20 6f 72 69 67 69 // the origi
bf90: 6e 61 6c 20 61 74 74 72 69 62 75 74 65 20 63 61 nal attribute ca
bfa0: 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 6f 6e 6c n be removed onl
bfb0: 79 20 69 66 20 77 65 20 61 72 65 20 70 61 72 73 y if we are pars
bfc0: 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 61 6c ing the original
bfd0: 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 expression.
bfe0: 20 20 20 20 20 20 21 65 78 70 72 2e 77 61 73 50 !expr.wasP
bff0: 61 72 73 65 64 4f 6e 63 65 20 7c 7c 0a 20 20 20 arsedOnce ||.
c000: 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69 74 73 // or its
c010: 20 76 61 6c 75 65 20 69 73 20 66 61 6c 73 65 0a value is false.
c020: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 value
c030: 3d 3d 3d 20 66 61 6c 73 65 20 7c 7c 0a 20 20 20 === false ||.
c040: 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69 66 20 // or if
c050: 69 74 73 20 76 61 6c 75 65 20 69 73 20 63 75 72 its value is cur
c060: 72 65 6e 74 6c 79 20 66 61 6c 73 79 2e 2e 2e 0a rently falsy....
c070: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 // We
c080: 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 22 76 will keep the "v
c090: 61 6c 75 65 22 20 61 74 74 72 69 62 75 74 65 73 alue" attributes
c0a0: 20 69 66 20 74 68 65 20 22 6b 65 65 70 56 61 6c if the "keepVal
c0b0: 75 65 41 74 74 72 69 62 75 74 65 73 22 0a 20 20 ueAttributes".
c0c0: 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 65 6e // is en
c0d0: 61 62 6c 65 64 20 74 68 6f 75 67 68 0a 20 20 20 abled though.
c0e0: 20 20 20 20 20 20 20 28 21 68 61 73 56 61 6c 75 (!hasValu
c0f0: 65 20 26 26 20 28 21 69 73 56 61 6c 75 65 41 74 e && (!isValueAt
c100: 74 72 20 7c 7c 20 69 73 56 61 6c 75 65 41 74 74 tr || isValueAtt
c110: 72 20 26 26 20 21 6b 65 65 70 56 61 6c 75 65 41 r && !keepValueA
c120: 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 ttributes)).
c130: 20 20 20 20 29 0a 20 20 20 20 29 20 7b 0a 20 20 ). ) {.
c140: 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 65 69 // remove ei
c150: 74 68 65 72 20 72 69 6f 74 2d 2a 20 61 74 74 72 ther riot-* attr
c160: 69 62 75 74 65 73 20 6f 72 20 6a 75 73 74 20 74 ibutes or just t
c170: 68 65 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d he attribute nam
c180: 65 0a 20 20 20 20 20 20 72 65 6d 6f 76 65 41 74 e. removeAt
c190: 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 67 65 74 tribute(dom, get
c1a0: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 65 Attribute(dom, e
c1b0: 78 70 72 2e 61 74 74 72 29 20 3f 20 65 78 70 72 xpr.attr) ? expr
c1c0: 2e 61 74 74 72 20 3a 20 61 74 74 72 4e 61 6d 65 .attr : attrName
c1d0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f );. }.. //
c1e0: 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 65 61 6e for the boolean
c1f0: 20 61 74 74 72 69 62 75 74 65 73 20 77 65 20 64 attributes we d
c200: 6f 6e 27 74 20 6e 65 65 64 20 74 68 65 20 76 61 on't need the va
c210: 6c 75 65 0a 20 20 20 20 2f 2f 20 77 65 20 63 61 lue. // we ca
c220: 6e 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20 n convert it to
c230: 63 68 65 63 6b 65 64 3d 74 72 75 65 20 74 6f 20 checked=true to
c240: 63 68 65 63 6b 65 64 3d 63 68 65 63 6b 65 64 0a checked=checked.
c250: 20 20 20 20 69 66 20 28 65 78 70 72 2e 62 6f 6f if (expr.boo
c260: 6c 29 20 7b 20 76 61 6c 75 65 20 3d 20 76 61 6c l) { value = val
c270: 75 65 20 3f 20 61 74 74 72 4e 61 6d 65 20 3a 20 ue ? attrName :
c280: 66 61 6c 73 65 3b 20 7d 0a 20 20 20 20 69 66 20 false; }. if
c290: 28 65 78 70 72 2e 69 73 52 74 61 67 29 20 7b 20 (expr.isRtag) {
c2a0: 72 65 74 75 72 6e 20 75 70 64 61 74 65 44 61 74 return updateDat
c2b0: 61 49 73 28 65 78 70 72 2c 20 74 68 69 73 2c 20 aIs(expr, this,
c2c0: 76 61 6c 75 65 29 20 7d 0a 20 20 20 20 69 66 20 value) }. if
c2d0: 28 65 78 70 72 2e 77 61 73 50 61 72 73 65 64 4f (expr.wasParsedO
c2e0: 6e 63 65 20 26 26 20 65 78 70 72 2e 76 61 6c 75 nce && expr.valu
c2f0: 65 20 3d 3d 3d 20 76 61 6c 75 65 29 20 7b 20 72 e === value) { r
c300: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 2f 2f 20 eturn }.. //
c310: 75 70 64 61 74 65 20 74 68 65 20 65 78 70 72 65 update the expre
c320: 73 73 69 6f 6e 20 76 61 6c 75 65 0a 20 20 20 20 ssion value.
c330: 65 78 70 72 2e 76 61 6c 75 65 20 3d 20 76 61 6c expr.value = val
c340: 75 65 3b 0a 20 20 20 20 65 78 70 72 2e 77 61 73 ue;. expr.was
c350: 50 61 72 73 65 64 4f 6e 63 65 20 3d 20 74 72 75 ParsedOnce = tru
c360: 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 20 74 68 e;.. // if th
c370: 65 20 76 61 6c 75 65 20 69 73 20 61 6e 20 6f 62 e value is an ob
c380: 6a 65 63 74 20 28 61 6e 64 20 69 74 27 73 20 6e ject (and it's n
c390: 6f 74 20 61 20 73 74 79 6c 65 20 6f 72 20 63 6c ot a style or cl
c3a0: 61 73 73 20 61 74 74 72 69 62 75 74 65 29 20 77 ass attribute) w
c3b0: 65 20 63 61 6e 20 6e 6f 74 20 64 6f 20 6d 75 63 e can not do muc
c3c0: 68 20 6d 6f 72 65 20 77 69 74 68 20 69 74 0a 20 h more with it.
c3d0: 20 20 20 69 66 20 28 69 73 4f 62 6a 20 26 26 20 if (isObj &&
c3e0: 21 69 73 43 6c 61 73 73 41 74 74 72 20 26 26 20 !isClassAttr &&
c3f0: 21 69 73 53 74 79 6c 65 41 74 74 72 20 26 26 20 !isStyleAttr &&
c400: 21 69 73 54 6f 67 67 6c 65 29 20 7b 20 72 65 74 !isToggle) { ret
c410: 75 72 6e 20 7d 0a 20 20 20 20 2f 2f 20 61 76 6f urn }. // avo
c420: 69 64 20 74 6f 20 72 65 6e 64 65 72 20 75 6e 64 id to render und
c430: 65 66 69 6e 65 64 2f 6e 75 6c 6c 20 76 61 6c 75 efined/null valu
c440: 65 73 0a 20 20 20 20 69 66 20 28 21 68 61 73 56 es. if (!hasV
c450: 61 6c 75 65 29 20 7b 20 76 61 6c 75 65 20 3d 20 alue) { value =
c460: 27 27 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 74 65 ''; }.. // te
c470: 78 74 61 72 65 61 20 61 6e 64 20 74 65 78 74 20 xtarea and text
c480: 6e 6f 64 65 73 20 68 61 76 65 20 6e 6f 20 61 74 nodes have no at
c490: 74 72 69 62 75 74 65 20 6e 61 6d 65 0a 20 20 20 tribute name.
c4a0: 20 69 66 20 28 21 61 74 74 72 4e 61 6d 65 29 20 if (!attrName)
c4b0: 7b 0a 20 20 20 20 20 20 2f 2f 20 61 62 6f 75 74 {. // about
c4c0: 20 23 38 31 35 20 77 2f 6f 20 72 65 70 6c 61 63 #815 w/o replac
c4d0: 65 3a 20 74 68 65 20 62 72 6f 77 73 65 72 20 63 e: the browser c
c4e0: 6f 6e 76 65 72 74 73 20 74 68 65 20 76 61 6c 75 onverts the valu
c4f0: 65 20 74 6f 20 61 20 73 74 72 69 6e 67 2c 0a 20 e to a string,.
c500: 20 20 20 20 20 2f 2f 20 74 68 65 20 63 6f 6d 70 // the comp
c510: 61 72 69 73 6f 6e 20 62 79 20 22 3d 3d 22 20 64 arison by "==" d
c520: 6f 65 73 20 74 6f 6f 2c 20 62 75 74 20 6e 6f 74 oes too, but not
c530: 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 0a 20 in the server.
c540: 20 20 20 20 20 76 61 6c 75 65 20 2b 3d 20 27 27 value += ''
c550: 3b 0a 20 20 20 20 20 20 2f 2f 20 74 65 73 74 20 ;. // test
c560: 66 6f 72 20 70 61 72 65 6e 74 20 61 76 6f 69 64 for parent avoid
c570: 73 20 65 72 72 6f 72 20 77 69 74 68 20 69 6e 76 s error with inv
c580: 61 6c 69 64 20 61 73 73 69 67 6e 6d 65 6e 74 20 alid assignment
c590: 74 6f 20 6e 6f 64 65 56 61 6c 75 65 0a 20 20 20 to nodeValue.
c5a0: 20 20 20 69 66 20 28 70 61 72 65 6e 74 29 20 7b if (parent) {
c5b0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61 63 68 . // cach
c5c0: 65 20 74 68 65 20 70 61 72 65 6e 74 20 6e 6f 64 e the parent nod
c5d0: 65 20 62 65 63 61 75 73 65 20 73 6f 6d 65 68 6f e because someho
c5e0: 77 20 69 74 20 77 69 6c 6c 20 62 65 63 6f 6d 65 w it will become
c5f0: 20 6e 75 6c 6c 20 6f 6e 20 49 45 0a 20 20 20 20 null on IE.
c600: 20 20 20 20 2f 2f 20 6f 6e 20 74 68 65 20 6e 65 // on the ne
c610: 78 74 20 69 74 65 72 61 74 69 6f 6e 0a 20 20 20 xt iteration.
c620: 20 20 20 20 20 65 78 70 72 2e 70 61 72 65 6e 74 expr.parent
c630: 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 = parent;.
c640: 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e 74 61 if (parent.ta
c650: 67 4e 61 6d 65 20 3d 3d 3d 20 27 54 45 58 54 41 gName === 'TEXTA
c660: 52 45 41 27 29 20 7b 0a 20 20 20 20 20 20 20 20 REA') {.
c670: 20 20 70 61 72 65 6e 74 2e 76 61 6c 75 65 20 3d parent.value =
c680: 20 76 61 6c 75 65 3b 20 20 20 20 20 20 20 20 20 value;
c690: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 23 31 // #1
c6a0: 31 31 33 0a 20 20 20 20 20 20 20 20 20 20 69 66 113. if
c6b0: 20 28 21 49 45 5f 56 45 52 53 49 4f 4e 29 20 7b (!IE_VERSION) {
c6c0: 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 20 3d dom.nodeValue =
c6d0: 20 76 61 6c 75 65 3b 20 7d 20 20 2f 2f 20 23 31 value; } // #1
c6e0: 36 32 35 20 49 45 20 74 68 72 6f 77 73 20 68 65 625 IE throws he
c6f0: 72 65 2c 20 6e 6f 64 65 56 61 6c 75 65 0a 20 20 re, nodeValue.
c700: 20 20 20 20 20 20 7d 20 20 20 20 20 20 20 20 20 }
c710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
c730: 2f 2f 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c // will be avail
c740: 61 62 6c 65 20 6f 6e 20 27 75 70 64 61 74 65 64 able on 'updated
c750: 27 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b '. else {
c760: 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 20 3d dom.nodeValue =
c770: 20 76 61 6c 75 65 3b 20 7d 0a 20 20 20 20 20 20 value; }.
c780: 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 }. return.
c790: 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68 }.. switch
c7a0: 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 2f 2f (true) {. //
c7b0: 20 68 61 6e 64 6c 65 20 65 76 65 6e 74 73 20 62 handle events b
c7c0: 69 6e 64 69 6e 67 0a 20 20 20 20 63 61 73 65 20 inding. case
c7d0: 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c 75 65 isFunction(value
c7e0: 29 3a 0a 20 20 20 20 20 20 69 66 20 28 69 73 45 ):. if (isE
c7f0: 76 65 6e 74 41 74 74 72 69 62 75 74 65 28 61 74 ventAttribute(at
c800: 74 72 4e 61 6d 65 29 29 20 7b 0a 20 20 20 20 20 trName)) {.
c810: 20 20 20 73 65 74 45 76 65 6e 74 48 61 6e 64 6c setEventHandl
c820: 65 72 28 61 74 74 72 4e 61 6d 65 2c 20 76 61 6c er(attrName, val
c830: 75 65 2c 20 64 6f 6d 2c 20 74 68 69 73 29 3b 0a ue, dom, this);.
c840: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 62 72 }. br
c850: 65 61 6b 0a 20 20 20 20 2f 2f 20 73 68 6f 77 20 eak. // show
c860: 2f 20 68 69 64 65 0a 20 20 20 20 63 61 73 65 20 / hide. case
c870: 69 73 54 6f 67 67 6c 65 3a 0a 20 20 20 20 20 20 isToggle:.
c880: 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69 74 79 toggleVisibility
c890: 28 64 6f 6d 2c 20 61 74 74 72 4e 61 6d 65 20 3d (dom, attrName =
c8a0: 3d 3d 20 48 49 44 45 5f 44 49 52 45 43 54 49 56 == HIDE_DIRECTIV
c8b0: 45 20 3f 20 21 76 61 6c 75 65 20 3a 20 76 61 6c E ? !value : val
c8c0: 75 65 29 3b 0a 20 20 20 20 20 20 62 72 65 61 6b ue);. break
c8d0: 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 61 . // handle a
c8e0: 74 74 72 69 62 75 74 65 73 0a 20 20 20 20 64 65 ttributes. de
c8f0: 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 69 66 20 fault:. if
c900: 28 65 78 70 72 2e 62 6f 6f 6c 29 20 7b 0a 20 20 (expr.bool) {.
c910: 20 20 20 20 20 20 64 6f 6d 5b 61 74 74 72 4e 61 dom[attrNa
c920: 6d 65 5d 20 3d 20 76 61 6c 75 65 3b 0a 20 20 20 me] = value;.
c930: 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 }.. if (
c940: 69 73 56 61 6c 75 65 41 74 74 72 20 26 26 20 64 isValueAttr && d
c950: 6f 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 76 61 6c om.value !== val
c960: 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 64 6f ue) {. do
c970: 6d 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b m.value = value;
c980: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 . } else if
c990: 20 28 68 61 73 56 61 6c 75 65 20 26 26 20 76 61 (hasValue && va
c9a0: 6c 75 65 20 21 3d 3d 20 66 61 6c 73 65 29 20 7b lue !== false) {
c9b0: 0a 20 20 20 20 20 20 20 20 73 65 74 41 74 74 72 . setAttr
c9c0: 69 62 75 74 65 28 64 6f 6d 2c 20 61 74 74 72 4e ibute(dom, attrN
c9d0: 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 ame, value);.
c9e0: 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 6d }.. // m
c9f0: 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 69 6e ake sure that in
ca00: 20 63 61 73 65 20 6f 66 20 73 74 79 6c 65 20 63 case of style c
ca10: 68 61 6e 67 65 73 0a 20 20 20 20 20 20 2f 2f 20 hanges. //
ca20: 74 68 65 20 65 6c 65 6d 65 6e 74 20 73 74 61 79 the element stay
ca30: 73 20 68 69 64 64 65 6e 0a 20 20 20 20 20 20 69 s hidden. i
ca40: 66 20 28 69 73 53 74 79 6c 65 41 74 74 72 20 26 f (isStyleAttr &
ca50: 26 20 64 6f 6d 2e 68 69 64 64 65 6e 29 20 7b 20 & dom.hidden) {
ca60: 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69 74 79 toggleVisibility
ca70: 28 64 6f 6d 2c 20 66 61 6c 73 65 29 3b 20 7d 0a (dom, false); }.
ca80: 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a }. }.. /**
ca90: 0a 20 20 20 2a 20 55 70 64 61 74 65 20 61 6c 6c . * Update all
caa0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 the expressions
cab0: 20 69 6e 20 61 20 54 61 67 20 69 6e 73 74 61 6e in a Tag instan
cac0: 63 65 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 ce. * @this Ta
cad0: 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 g. * @param {
cae0: 41 72 72 61 79 20 7d 20 65 78 70 72 65 73 73 69 Array } expressi
caf0: 6f 6e 73 20 2d 20 65 78 70 72 65 73 73 69 6f 6e ons - expression
cb00: 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 72 65 that must be re
cb10: 20 65 76 61 6c 75 61 74 65 64 0a 20 20 20 2a 2f evaluated. */
cb20: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61 . function upda
cb30: 74 65 28 65 78 70 72 65 73 73 69 6f 6e 73 29 20 te(expressions)
cb40: 7b 0a 20 20 20 20 65 61 63 68 28 65 78 70 72 65 {. each(expre
cb50: 73 73 69 6f 6e 73 2c 20 75 70 64 61 74 65 45 78 ssions, updateEx
cb60: 70 72 65 73 73 69 6f 6e 2e 62 69 6e 64 28 74 68 pression.bind(th
cb70: 69 73 29 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a is));. }.. /**
cb80: 0a 20 20 20 2a 20 57 65 20 6e 65 65 64 20 74 6f . * We need to
cb90: 20 75 70 64 61 74 65 20 6f 70 74 73 20 66 6f 72 update opts for
cba0: 20 74 68 69 73 20 74 61 67 2e 20 54 68 61 74 20 this tag. That
cbb0: 72 65 71 75 69 72 65 73 20 75 70 64 61 74 69 6e requires updatin
cbc0: 67 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e g the expression
cbd0: 73 0a 20 20 20 2a 20 69 6e 20 61 6e 79 20 61 74 s. * in any at
cbe0: 74 72 69 62 75 74 65 73 20 6f 6e 20 74 68 65 20 tributes on the
cbf0: 74 61 67 2c 20 61 6e 64 20 74 68 65 6e 20 63 6f tag, and then co
cc00: 70 79 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 pying the result
cc10: 20 6f 6e 74 6f 20 6f 70 74 73 2e 0a 20 20 20 2a onto opts.. *
cc20: 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 @this Tag. *
cc30: 40 70 61 72 61 6d 20 20 20 7b 42 6f 6f 6c 65 61 @param {Boolea
cc40: 6e 7d 20 69 73 4c 6f 6f 70 20 2d 20 69 73 20 69 n} isLoop - is i
cc50: 74 20 61 20 6c 6f 6f 70 20 74 61 67 3f 0a 20 20 t a loop tag?.
cc60: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 54 61 * @param { Ta
cc70: 67 20 7d 20 20 70 61 72 65 6e 74 20 2d 20 70 61 g } parent - pa
cc80: 72 65 6e 74 20 74 61 67 20 6e 6f 64 65 0a 20 20 rent tag node.
cc90: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f * @param { Bo
cca0: 6f 6c 65 61 6e 20 7d 20 20 69 73 41 6e 6f 6e 79 olean } isAnony
ccb0: 6d 6f 75 73 20 2d 20 69 73 20 69 74 20 61 20 74 mous - is it a t
ccc0: 61 67 20 77 69 74 68 6f 75 74 20 61 6e 79 20 69 ag without any i
ccd0: 6d 70 6c 3f 20 28 61 20 74 61 67 20 6e 6f 74 20 mpl? (a tag not
cce0: 72 65 67 69 73 74 65 72 65 64 29 0a 20 20 20 2a registered). *
ccf0: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
cd00: 63 74 20 7d 20 20 6f 70 74 73 20 2d 20 74 61 67 ct } opts - tag
cd10: 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 options. * @p
cd20: 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d aram { Array }
cd30: 20 20 69 6e 73 74 41 74 74 72 73 20 2d 20 74 61 instAttrs - ta
cd40: 67 20 61 74 74 72 69 62 75 74 65 73 20 61 72 72 g attributes arr
cd50: 61 79 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 ay. */. funct
cd60: 69 6f 6e 20 75 70 64 61 74 65 4f 70 74 73 28 69 ion updateOpts(i
cd70: 73 4c 6f 6f 70 2c 20 70 61 72 65 6e 74 2c 20 69 sLoop, parent, i
cd80: 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70 74 73 sAnonymous, opts
cd90: 2c 20 69 6e 73 74 41 74 74 72 73 29 20 7b 0a 20 , instAttrs) {.
cda0: 20 20 20 2f 2f 20 69 73 41 6e 6f 6e 79 6d 6f 75 // isAnonymou
cdb0: 73 20 60 65 61 63 68 60 20 74 61 67 73 20 74 72 s `each` tags tr
cdc0: 65 61 74 20 60 64 6f 6d 60 20 61 6e 64 20 60 72 eat `dom` and `r
cdd0: 6f 6f 74 60 20 64 69 66 66 65 72 65 6e 74 6c 79 oot` differently
cde0: 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 0a 20 . In this case.
cdf0: 20 20 20 2f 2f 20 28 61 6e 64 20 6f 6e 6c 79 20 // (and only
ce00: 74 68 69 73 20 63 61 73 65 29 20 77 65 20 64 6f this case) we do
ce10: 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f 20 75 n't need to do u
ce20: 70 64 61 74 65 4f 70 74 73 2c 20 62 65 63 61 75 pdateOpts, becau
ce30: 73 65 20 74 68 65 20 72 65 67 75 6c 61 72 20 70 se the regular p
ce40: 61 72 73 65 0a 20 20 20 20 2f 2f 20 77 69 6c 6c arse. // will
ce50: 20 75 70 64 61 74 65 20 74 68 6f 73 65 20 61 74 update those at
ce60: 74 72 73 2e 20 50 6c 75 73 2c 20 69 73 41 6e 6f trs. Plus, isAno
ce70: 6e 79 6d 6f 75 73 20 74 61 67 73 20 64 6f 6e 27 nymous tags don'
ce80: 74 20 6e 65 65 64 20 6f 70 74 73 20 61 6e 79 77 t need opts anyw
ce90: 61 79 0a 20 20 20 20 69 66 20 28 69 73 4c 6f 6f ay. if (isLoo
cea0: 70 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 p && isAnonymous
ceb0: 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 ) { return }.
cec0: 20 76 61 72 20 63 74 78 20 3d 20 69 73 4c 6f 6f var ctx = isLoo
ced0: 70 20 3f 20 69 6e 68 65 72 69 74 50 61 72 65 6e p ? inheritParen
cee0: 74 50 72 6f 70 73 2e 63 61 6c 6c 28 74 68 69 73 tProps.call(this
cef0: 29 20 3a 20 70 61 72 65 6e 74 20 7c 7c 20 74 68 ) : parent || th
cf00: 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28 69 6e is;.. each(in
cf10: 73 74 41 74 74 72 73 2c 20 66 75 6e 63 74 69 6f stAttrs, functio
cf20: 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20 20 20 n (attr) {.
cf30: 20 69 66 20 28 61 74 74 72 2e 65 78 70 72 29 20 if (attr.expr)
cf40: 7b 20 75 70 64 61 74 65 45 78 70 72 65 73 73 69 { updateExpressi
cf50: 6f 6e 2e 63 61 6c 6c 28 63 74 78 2c 20 61 74 74 on.call(ctx, att
cf60: 72 2e 65 78 70 72 29 3b 20 7d 0a 20 20 20 20 20 r.expr); }.
cf70: 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 // normalize th
cf80: 65 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 e attribute name
cf90: 73 0a 20 20 20 20 20 20 6f 70 74 73 5b 74 6f 43 s. opts[toC
cfa0: 61 6d 65 6c 28 61 74 74 72 2e 6e 61 6d 65 29 2e amel(attr.name).
cfb0: 72 65 70 6c 61 63 65 28 41 54 54 52 53 5f 50 52 replace(ATTRS_PR
cfc0: 45 46 49 58 2c 20 27 27 29 5d 20 3d 20 61 74 74 EFIX, '')] = att
cfd0: 72 2e 65 78 70 72 20 3f 20 61 74 74 72 2e 65 78 r.expr ? attr.ex
cfe0: 70 72 2e 76 61 6c 75 65 20 3a 20 61 74 74 72 2e pr.value : attr.
cff0: 76 61 6c 75 65 3b 0a 20 20 20 20 7d 29 3b 0a 20 value;. });.
d000: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 }.. /**. * U
d010: 70 64 61 74 65 20 74 68 65 20 74 61 67 20 65 78 pdate the tag ex
d020: 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 6f 70 pressions and op
d030: 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 tions. * @para
d040: 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 20 2d 20 m { Tag } tag -
d050: 74 61 67 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20 tag object. *
d060: 40 70 61 72 61 6d 20 7b 20 2a 20 7d 20 64 61 74 @param { * } dat
d070: 61 20 2d 20 64 61 74 61 20 77 65 20 77 61 6e 74 a - data we want
d080: 20 74 6f 20 75 73 65 20 74 6f 20 65 78 74 65 6e to use to exten
d090: 64 20 74 68 65 20 74 61 67 20 70 72 6f 70 65 72 d the tag proper
d0a0: 74 69 65 73 0a 20 20 20 2a 20 40 70 61 72 61 6d ties. * @param
d0b0: 20 7b 20 41 72 72 61 79 20 7d 20 65 78 70 72 65 { Array } expre
d0c0: 73 73 69 6f 6e 73 20 2d 20 63 6f 6d 70 6f 6e 65 ssions - compone
d0d0: 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 nt expressions a
d0e0: 72 72 61 79 0a 20 20 20 2a 20 40 72 65 74 75 72 rray. * @retur
d0f0: 6e 73 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 ns { Tag } the c
d100: 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 urrent tag insta
d110: 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 nce. */. func
d120: 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 55 70 tion componentUp
d130: 64 61 74 65 28 74 61 67 2c 20 64 61 74 61 2c 20 date(tag, data,
d140: 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b 0a 20 expressions) {.
d150: 20 20 20 76 61 72 20 5f 5f 20 3d 20 74 61 67 2e var __ = tag.
d160: 5f 5f 3b 0a 20 20 20 20 76 61 72 20 6e 65 78 74 __;. var next
d170: 4f 70 74 73 20 3d 20 7b 7d 3b 0a 20 20 20 20 76 Opts = {};. v
d180: 61 72 20 63 61 6e 54 72 69 67 67 65 72 20 3d 20 ar canTrigger =
d190: 74 61 67 2e 69 73 4d 6f 75 6e 74 65 64 20 26 26 tag.isMounted &&
d1a0: 20 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f !__.skipAnonymo
d1b0: 75 73 3b 0a 0a 20 20 20 20 2f 2f 20 69 6e 68 65 us;.. // inhe
d1c0: 72 69 74 20 70 72 6f 70 65 72 74 69 65 73 20 66 rit properties f
d1d0: 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74 20 74 rom the parent t
d1e0: 61 67 0a 20 20 20 20 69 66 20 28 5f 5f 2e 69 73 ag. if (__.is
d1f0: 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 5f 5f 2e Anonymous && __.
d200: 70 61 72 65 6e 74 29 20 7b 20 65 78 74 65 6e 64 parent) { extend
d210: 28 74 61 67 2c 20 5f 5f 2e 70 61 72 65 6e 74 29 (tag, __.parent)
d220: 3b 20 7d 0a 20 20 20 20 65 78 74 65 6e 64 28 74 ; }. extend(t
d230: 61 67 2c 20 64 61 74 61 29 3b 0a 0a 20 20 20 20 ag, data);..
d240: 75 70 64 61 74 65 4f 70 74 73 2e 61 70 70 6c 79 updateOpts.apply
d250: 28 74 61 67 2c 20 5b 5f 5f 2e 69 73 4c 6f 6f 70 (tag, [__.isLoop
d260: 2c 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f 5f 2e , __.parent, __.
d270: 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6e 65 78 isAnonymous, nex
d280: 74 4f 70 74 73 2c 20 5f 5f 2e 69 6e 73 74 41 74 tOpts, __.instAt
d290: 74 72 73 5d 29 3b 0a 0a 20 20 20 20 69 66 20 28 trs]);.. if (
d2a0: 0a 20 20 20 20 20 20 63 61 6e 54 72 69 67 67 65 . canTrigge
d2b0: 72 20 26 26 0a 20 20 20 20 20 20 74 61 67 2e 69 r &&. tag.i
d2c0: 73 4d 6f 75 6e 74 65 64 20 26 26 0a 20 20 20 20 sMounted &&.
d2d0: 20 20 69 73 46 75 6e 63 74 69 6f 6e 28 74 61 67 isFunction(tag
d2e0: 2e 73 68 6f 75 6c 64 55 70 64 61 74 65 29 20 26 .shouldUpdate) &
d2f0: 26 20 21 74 61 67 2e 73 68 6f 75 6c 64 55 70 64 & !tag.shouldUpd
d300: 61 74 65 28 64 61 74 61 2c 20 6e 65 78 74 4f 70 ate(data, nextOp
d310: 74 73 29 0a 20 20 20 20 29 20 7b 0a 20 20 20 20 ts). ) {.
d320: 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 20 20 return tag.
d330: 20 7d 0a 0a 20 20 20 20 65 78 74 65 6e 64 28 74 }.. extend(t
d340: 61 67 2e 6f 70 74 73 2c 20 6e 65 78 74 4f 70 74 ag.opts, nextOpt
d350: 73 29 3b 0a 0a 20 20 20 20 69 66 20 28 63 61 6e s);.. if (can
d360: 54 72 69 67 67 65 72 29 20 7b 20 74 61 67 2e 74 Trigger) { tag.t
d370: 72 69 67 67 65 72 28 27 75 70 64 61 74 65 27 2c rigger('update',
d380: 20 64 61 74 61 29 3b 20 7d 0a 20 20 20 20 75 70 data); }. up
d390: 64 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c 20 65 date.call(tag, e
d3a0: 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20 20 20 xpressions);.
d3b0: 20 69 66 20 28 63 61 6e 54 72 69 67 67 65 72 29 if (canTrigger)
d3c0: 20 7b 20 74 61 67 2e 74 72 69 67 67 65 72 28 27 { tag.trigger('
d3d0: 75 70 64 61 74 65 64 27 29 3b 20 7d 0a 0a 20 20 updated'); }..
d3e0: 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 20 7d return tag. }
d3f0: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 47 65 74 .. /**. * Get
d400: 20 73 65 6c 65 63 74 6f 72 73 20 66 6f 72 20 74 selectors for t
d410: 61 67 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ags. * @param
d420: 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61 67 73 { Array } tags
d430: 20 2d 20 74 61 67 20 6e 61 6d 65 73 20 74 6f 20 - tag names to
d440: 73 65 6c 65 63 74 0a 20 20 20 2a 20 40 72 65 74 select. * @ret
d450: 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 urns { String }
d460: 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 2f 0a 20 selector. */.
d470: 20 66 75 6e 63 74 69 6f 6e 20 71 75 65 72 79 28 function query(
d480: 74 61 67 73 29 20 7b 0a 20 20 20 20 2f 2f 20 73 tags) {. // s
d490: 65 6c 65 63 74 20 61 6c 6c 20 74 61 67 73 0a 20 elect all tags.
d4a0: 20 20 20 69 66 20 28 21 74 61 67 73 29 20 7b 0a if (!tags) {.
d4b0: 20 20 20 20 20 20 76 61 72 20 6b 65 79 73 20 3d var keys =
d4c0: 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 5f 5f 54 Object.keys(__T
d4d0: 41 47 5f 49 4d 50 4c 29 3b 0a 20 20 20 20 20 20 AG_IMPL);.
d4e0: 72 65 74 75 72 6e 20 6b 65 79 73 20 2b 20 71 75 return keys + qu
d4f0: 65 72 79 28 6b 65 79 73 29 0a 20 20 20 20 7d 0a ery(keys). }.
d500: 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 73 . return tags
d510: 0a 20 20 20 20 20 20 2e 66 69 6c 74 65 72 28 66 . .filter(f
d520: 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20 72 65 unction (t) { re
d530: 74 75 72 6e 20 21 2f 5b 5e 2d 5c 77 5d 2f 2e 74 turn !/[^-\w]/.t
d540: 65 73 74 28 74 29 3b 20 7d 29 0a 20 20 20 20 20 est(t); }).
d550: 20 2e 72 65 64 75 63 65 28 66 75 6e 63 74 69 6f .reduce(functio
d560: 6e 20 28 6c 69 73 74 2c 20 74 29 20 7b 0a 20 20 n (list, t) {.
d570: 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d var name =
d580: 20 74 2e 74 72 69 6d 28 29 2e 74 6f 4c 6f 77 65 t.trim().toLowe
d590: 72 43 61 73 65 28 29 3b 0a 20 20 20 20 20 20 20 rCase();.
d5a0: 20 72 65 74 75 72 6e 20 6c 69 73 74 20 2b 20 22 return list + "
d5b0: 2c 5b 22 20 2b 20 49 53 5f 44 49 52 45 43 54 49 ,[" + IS_DIRECTI
d5c0: 56 45 20 2b 20 22 3d 5c 22 22 20 2b 20 6e 61 6d VE + "=\"" + nam
d5d0: 65 20 2b 20 22 5c 22 5d 22 0a 20 20 20 20 20 20 e + "\"]".
d5e0: 7d 2c 20 27 27 29 0a 20 20 7d 0a 0a 20 20 2f 2a }, ''). }.. /*
d5f0: 2a 0a 20 20 20 2a 20 41 6e 6f 74 68 65 72 20 77 *. * Another w
d600: 61 79 20 74 6f 20 63 72 65 61 74 65 20 61 20 72 ay to create a r
d610: 69 6f 74 20 74 61 67 20 61 20 62 69 74 20 6d 6f iot tag a bit mo
d620: 72 65 20 65 73 36 20 66 72 69 65 6e 64 6c 79 0a re es6 friendly.
d630: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 48 54 * @param { HT
d640: 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 65 6c 20 2d MLElement } el -
d650: 20 74 61 67 20 44 4f 4d 20 73 65 6c 65 63 74 6f tag DOM selecto
d660: 72 20 6f 72 20 44 4f 4d 20 6e 6f 64 65 2f 73 0a r or DOM node/s.
d670: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f 62 * @param { Ob
d680: 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d 20 74 61 ject } opts - ta
d690: 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 72 65 g logic. * @re
d6a0: 74 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 6e 65 turns { Tag } ne
d6b0: 77 20 72 69 6f 74 20 74 61 67 20 69 6e 73 74 61 w riot tag insta
d6c0: 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 nce. */. func
d6d0: 74 69 6f 6e 20 54 61 67 28 65 6c 2c 20 6f 70 74 tion Tag(el, opt
d6e0: 73 29 20 7b 0a 20 20 20 20 2f 2f 20 67 65 74 20 s) {. // get
d6f0: 74 68 65 20 74 61 67 20 70 72 6f 70 65 72 74 69 the tag properti
d700: 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6c 61 73 es from the clas
d710: 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a 20 20 s constructor.
d720: 20 20 76 61 72 20 72 65 66 20 3d 20 74 68 69 73 var ref = this
d730: 3b 0a 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d ;. var name =
d740: 20 72 65 66 2e 6e 61 6d 65 3b 0a 20 20 20 20 76 ref.name;. v
d750: 61 72 20 74 6d 70 6c 20 3d 20 72 65 66 2e 74 6d ar tmpl = ref.tm
d760: 70 6c 3b 0a 20 20 20 20 76 61 72 20 63 73 73 20 pl;. var css
d770: 3d 20 72 65 66 2e 63 73 73 3b 0a 20 20 20 20 76 = ref.css;. v
d780: 61 72 20 61 74 74 72 73 20 3d 20 72 65 66 2e 61 ar attrs = ref.a
d790: 74 74 72 73 3b 0a 20 20 20 20 76 61 72 20 6f 6e ttrs;. var on
d7a0: 43 72 65 61 74 65 20 3d 20 72 65 66 2e 6f 6e 43 Create = ref.onC
d7b0: 72 65 61 74 65 3b 0a 20 20 20 20 2f 2f 20 72 65 reate;. // re
d7c0: 67 69 73 74 65 72 20 61 20 6e 65 77 20 74 61 67 gister a new tag
d7d0: 20 61 6e 64 20 63 61 63 68 65 20 74 68 65 20 63 and cache the c
d7e0: 6c 61 73 73 20 70 72 6f 74 6f 74 79 70 65 0a 20 lass prototype.
d7f0: 20 20 20 69 66 20 28 21 5f 5f 54 41 47 5f 49 4d if (!__TAG_IM
d800: 50 4c 5b 6e 61 6d 65 5d 29 20 7b 0a 20 20 20 20 PL[name]) {.
d810: 20 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d 70 6c tag(name, tmpl
d820: 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20 6f 6e , css, attrs, on
d830: 43 72 65 61 74 65 29 3b 0a 20 20 20 20 20 20 2f Create);. /
d840: 2f 20 63 61 63 68 65 20 74 68 65 20 63 6c 61 73 / cache the clas
d850: 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a 20 20 s constructor.
d860: 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 6e __TAG_IMPL[n
d870: 61 6d 65 5d 2e 63 6c 61 73 73 20 3d 20 74 68 69 ame].class = thi
d880: 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3b 0a 20 s.constructor;.
d890: 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d 6f 75 }.. // mou
d8a0: 6e 74 20 74 68 65 20 74 61 67 20 75 73 69 6e 67 nt the tag using
d8b0: 20 74 68 65 20 63 6c 61 73 73 20 69 6e 73 74 61 the class insta
d8c0: 6e 63 65 0a 20 20 20 20 6d 6f 75 6e 74 24 31 28 nce. mount$1(
d8d0: 65 6c 2c 20 6e 61 6d 65 2c 20 6f 70 74 73 2c 20 el, name, opts,
d8e0: 74 68 69 73 29 3b 0a 20 20 20 20 2f 2f 20 69 6e this);. // in
d8f0: 6a 65 63 74 20 74 68 65 20 63 6f 6d 70 6f 6e 65 ject the compone
d900: 6e 74 20 63 73 73 0a 20 20 20 20 69 66 20 28 63 nt css. if (c
d910: 73 73 29 20 7b 20 73 74 79 6c 65 4d 61 6e 61 67 ss) { styleManag
d920: 65 72 2e 69 6e 6a 65 63 74 28 29 3b 20 7d 0a 0a er.inject(); }..
d930: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 0a return this.
d940: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
d950: 43 72 65 61 74 65 20 61 20 6e 65 77 20 72 69 6f Create a new rio
d960: 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 t tag implementa
d970: 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d tion. * @param
d980: 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 { String }
d990: 6e 61 6d 65 20 2d 20 6e 61 6d 65 2f 69 64 20 6f name - name/id o
d9a0: 66 20 74 68 65 20 6e 65 77 20 72 69 6f 74 20 74 f the new riot t
d9b0: 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ag. * @param
d9c0: 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 74 6d { String } tm
d9d0: 70 6c 20 2d 20 74 61 67 20 74 65 6d 70 6c 61 74 pl - tag templat
d9e0: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 e. * @param
d9f0: 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 63 73 73 { String } css
da00: 20 2d 20 63 75 73 74 6f 6d 20 74 61 67 20 63 73 - custom tag cs
da10: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 s. * @param
da20: 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 61 74 74 { String } att
da30: 72 73 20 2d 20 72 6f 6f 74 20 74 61 67 20 61 74 rs - root tag at
da40: 74 72 69 62 75 74 65 73 0a 20 20 20 2a 20 40 70 tributes. * @p
da50: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f aram { Functio
da60: 6e 20 7d 20 66 6e 20 2d 20 75 73 65 72 20 66 75 n } fn - user fu
da70: 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 72 65 74 nction. * @ret
da80: 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 urns { String }
da90: 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65 20 74 name/id of the t
daa0: 61 67 20 6a 75 73 74 20 63 72 65 61 74 65 64 0a ag just created.
dab0: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
dac0: 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d 70 6c 2c tag(name, tmpl,
dad0: 20 63 73 73 2c 20 61 74 74 72 73 2c 20 66 6e 29 css, attrs, fn)
dae0: 20 7b 0a 20 20 20 20 69 66 20 28 69 73 46 75 6e {. if (isFun
daf0: 63 74 69 6f 6e 28 61 74 74 72 73 29 29 20 7b 0a ction(attrs)) {.
db00: 20 20 20 20 20 20 66 6e 20 3d 20 61 74 74 72 73 fn = attrs
db10: 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 2f 5e 5b ;.. if (/^[
db20: 5c 77 2d 5d 2b 5c 73 3f 3d 2f 2e 74 65 73 74 28 \w-]+\s?=/.test(
db30: 63 73 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 css)) {.
db40: 61 74 74 72 73 20 3d 20 63 73 73 3b 0a 20 20 20 attrs = css;.
db50: 20 20 20 20 20 63 73 73 20 3d 20 27 27 3b 0a 20 css = '';.
db60: 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20 20 20 } else.
db70: 20 20 20 20 7b 20 61 74 74 72 73 20 3d 20 27 27 { attrs = ''
db80: 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 ; }. }.. i
db90: 66 20 28 63 73 73 29 20 7b 0a 20 20 20 20 20 20 f (css) {.
dba0: 69 66 20 28 69 73 46 75 6e 63 74 69 6f 6e 28 63 if (isFunction(c
dbb0: 73 73 29 29 0a 20 20 20 20 20 20 20 20 7b 20 66 ss)). { f
dbc0: 6e 20 3d 20 63 73 73 3b 20 7d 0a 20 20 20 20 20 n = css; }.
dbd0: 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 7b 20 else. {
dbe0: 73 74 79 6c 65 4d 61 6e 61 67 65 72 2e 61 64 64 styleManager.add
dbf0: 28 63 73 73 2c 20 6e 61 6d 65 29 3b 20 7d 0a 20 (css, name); }.
dc00: 20 20 20 7d 0a 0a 20 20 20 20 6e 61 6d 65 20 3d }.. name =
dc10: 20 6e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 name.toLowerCas
dc20: 65 28 29 3b 0a 20 20 20 20 5f 5f 54 41 47 5f 49 e();. __TAG_I
dc30: 4d 50 4c 5b 6e 61 6d 65 5d 20 3d 20 7b 20 6e 61 MPL[name] = { na
dc40: 6d 65 3a 20 6e 61 6d 65 2c 20 74 6d 70 6c 3a 20 me: name, tmpl:
dc50: 74 6d 70 6c 2c 20 61 74 74 72 73 3a 20 61 74 74 tmpl, attrs: att
dc60: 72 73 2c 20 66 6e 3a 20 66 6e 20 7d 3b 0a 0a 20 rs, fn: fn };..
dc70: 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 0a 20 return name.
dc80: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 }.. /**. * C
dc90: 72 65 61 74 65 20 61 20 6e 65 77 20 72 69 6f 74 reate a new riot
dca0: 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 tag implementat
dcb0: 69 6f 6e 20 28 66 6f 72 20 75 73 65 20 62 79 20 ion (for use by
dcc0: 74 68 65 20 63 6f 6d 70 69 6c 65 72 29 0a 20 20 the compiler).
dcd0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 * @param { St
dce0: 72 69 6e 67 20 7d 20 20 20 6e 61 6d 65 20 2d 20 ring } name -
dcf0: 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65 20 6e name/id of the n
dd00: 65 77 20 72 69 6f 74 20 74 61 67 0a 20 20 20 2a ew riot tag. *
dd10: 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 @param { Stri
dd20: 6e 67 20 7d 20 20 20 74 6d 70 6c 20 2d 20 74 61 ng } tmpl - ta
dd30: 67 20 74 65 6d 70 6c 61 74 65 0a 20 20 20 2a 20 g template. *
dd40: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
dd50: 67 20 7d 20 20 20 63 73 73 20 2d 20 63 75 73 74 g } css - cust
dd60: 6f 6d 20 74 61 67 20 63 73 73 0a 20 20 20 2a 20 om tag css. *
dd70: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
dd80: 67 20 7d 20 20 20 61 74 74 72 73 20 2d 20 72 6f g } attrs - ro
dd90: 6f 74 20 74 61 67 20 61 74 74 72 69 62 75 74 65 ot tag attribute
dda0: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 s. * @param
ddb0: 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66 6e 20 { Function } fn
ddc0: 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 0a - user function.
ddd0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
dde0: 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 2f 69 64 String } name/id
ddf0: 20 6f 66 20 74 68 65 20 74 61 67 20 6a 75 73 74 of the tag just
de00: 20 63 72 65 61 74 65 64 0a 20 20 20 2a 2f 0a 20 created. */.
de10: 20 66 75 6e 63 74 69 6f 6e 20 74 61 67 32 28 6e function tag2(n
de20: 61 6d 65 2c 20 74 6d 70 6c 2c 20 63 73 73 2c 20 ame, tmpl, css,
de30: 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20 20 20 attrs, fn) {.
de40: 20 69 66 20 28 63 73 73 29 20 7b 20 73 74 79 6c if (css) { styl
de50: 65 4d 61 6e 61 67 65 72 2e 61 64 64 28 63 73 73 eManager.add(css
de60: 2c 20 6e 61 6d 65 29 3b 20 7d 0a 0a 20 20 20 20 , name); }..
de70: 5f 5f 54 41 47 5f 49 4d 50 4c 5b 6e 61 6d 65 5d __TAG_IMPL[name]
de80: 20 3d 20 7b 20 6e 61 6d 65 3a 20 6e 61 6d 65 2c = { name: name,
de90: 20 74 6d 70 6c 3a 20 74 6d 70 6c 2c 20 61 74 74 tmpl: tmpl, att
dea0: 72 73 3a 20 61 74 74 72 73 2c 20 66 6e 3a 20 66 rs: attrs, fn: f
deb0: 6e 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e n };.. return
dec0: 20 6e 61 6d 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a name. }.. /**
ded0: 0a 20 20 20 2a 20 4d 6f 75 6e 74 20 61 20 74 61 . * Mount a ta
dee0: 67 20 75 73 69 6e 67 20 61 20 73 70 65 63 69 66 g using a specif
def0: 69 63 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 ic tag implement
df00: 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 ation. * @para
df10: 6d 20 20 20 7b 20 2a 20 7d 20 73 65 6c 65 63 74 m { * } select
df20: 6f 72 20 2d 20 74 61 67 20 44 4f 4d 20 73 65 6c or - tag DOM sel
df30: 65 63 74 6f 72 20 6f 72 20 44 4f 4d 20 6e 6f 64 ector or DOM nod
df40: 65 2f 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 e/s. * @param
df50: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74 61 67 { String } tag
df60: 4e 61 6d 65 20 2d 20 74 61 67 20 69 6d 70 6c 65 Name - tag imple
df70: 6d 65 6e 74 61 74 69 6f 6e 20 6e 61 6d 65 0a 20 mentation name.
df80: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f * @param { O
df90: 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d 20 74 bject } opts - t
dfa0: 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 72 ag logic. * @r
dfb0: 65 74 75 72 6e 73 20 7b 20 41 72 72 61 79 20 7d eturns { Array }
dfc0: 20 6e 65 77 20 74 61 67 73 20 69 6e 73 74 61 6e new tags instan
dfd0: 63 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 ces. */. func
dfe0: 74 69 6f 6e 20 6d 6f 75 6e 74 28 73 65 6c 65 63 tion mount(selec
dff0: 74 6f 72 2c 20 74 61 67 4e 61 6d 65 2c 20 6f 70 tor, tagName, op
e000: 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20 74 61 ts) {. var ta
e010: 67 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61 72 gs = [];. var
e020: 20 65 6c 65 6d 2c 20 61 6c 6c 54 61 67 73 3b 0a elem, allTags;.
e030: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 75 . function pu
e040: 73 68 54 61 67 73 54 6f 28 72 6f 6f 74 29 20 7b shTagsTo(root) {
e050: 0a 20 20 20 20 20 20 69 66 20 28 72 6f 6f 74 2e . if (root.
e060: 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20 tagName) {.
e070: 20 20 20 76 61 72 20 72 69 6f 74 54 61 67 20 3d var riotTag =
e080: 20 67 65 74 41 74 74 72 69 62 75 74 65 28 72 6f getAttribute(ro
e090: 6f 74 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 ot, IS_DIRECTIVE
e0a0: 29 2c 20 74 61 67 3b 0a 0a 20 20 20 20 20 20 20 ), tag;..
e0b0: 20 2f 2f 20 68 61 76 65 20 74 61 67 4e 61 6d 65 // have tagName
e0c0: 3f 20 66 6f 72 63 65 20 72 69 6f 74 2d 74 61 67 ? force riot-tag
e0d0: 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d 65 0a to be the same.
e0e0: 20 20 20 20 20 20 20 20 69 66 20 28 74 61 67 4e if (tagN
e0f0: 61 6d 65 20 26 26 20 72 69 6f 74 54 61 67 20 21 ame && riotTag !
e100: 3d 3d 20 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 == tagName) {.
e110: 20 20 20 20 20 20 20 20 72 69 6f 74 54 61 67 20 riotTag
e120: 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 20 = tagName;.
e130: 20 20 20 20 20 73 65 74 41 74 74 72 69 62 75 74 setAttribut
e140: 65 28 72 6f 6f 74 2c 20 49 53 5f 44 49 52 45 43 e(root, IS_DIREC
e150: 54 49 56 45 2c 20 74 61 67 4e 61 6d 65 29 3b 0a TIVE, tagName);.
e160: 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }..
e170: 20 20 20 74 61 67 20 3d 20 6d 6f 75 6e 74 24 31 tag = mount$1
e180: 28 0a 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 (. root
e190: 2c 0a 20 20 20 20 20 20 20 20 20 20 72 69 6f 74 ,. riot
e1a0: 54 61 67 20 7c 7c 20 72 6f 6f 74 2e 74 61 67 4e Tag || root.tagN
e1b0: 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 ame.toLowerCase(
e1c0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 69 73 46 ),. isF
e1d0: 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29 20 3f 20 unction(opts) ?
e1e0: 6f 70 74 73 28 29 20 3a 20 6f 70 74 73 0a 20 20 opts() : opts.
e1f0: 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 20 20 20 );..
e200: 20 20 69 66 20 28 74 61 67 29 0a 20 20 20 20 20 if (tag).
e210: 20 20 20 20 20 7b 20 74 61 67 73 2e 70 75 73 68 { tags.push
e220: 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 20 20 7d (tag); }. }
e230: 20 65 6c 73 65 20 69 66 20 28 72 6f 6f 74 2e 6c else if (root.l
e240: 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 7b ength). {
e250: 20 65 61 63 68 28 72 6f 6f 74 2c 20 70 75 73 68 each(root, push
e260: 54 61 67 73 54 6f 29 3b 20 7d 20 2f 2f 20 61 73 TagsTo); } // as
e270: 73 75 6d 65 20 6e 6f 64 65 4c 69 73 74 0a 20 20 sume nodeList.
e280: 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e 6a 65 }.. // inje
e290: 63 74 20 73 74 79 6c 65 73 20 69 6e 74 6f 20 44 ct styles into D
e2a0: 4f 4d 0a 20 20 20 20 73 74 79 6c 65 4d 61 6e 61 OM. styleMana
e2b0: 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 0a 0a 20 ger.inject();..
e2c0: 20 20 20 69 66 20 28 69 73 4f 62 6a 65 63 74 28 if (isObject(
e2d0: 74 61 67 4e 61 6d 65 29 20 7c 7c 20 69 73 46 75 tagName) || isFu
e2e0: 6e 63 74 69 6f 6e 28 74 61 67 4e 61 6d 65 29 29 nction(tagName))
e2f0: 20 7b 0a 20 20 20 20 20 20 6f 70 74 73 20 3d 20 {. opts =
e300: 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 20 20 74 tagName;. t
e310: 61 67 4e 61 6d 65 20 3d 20 30 3b 0a 20 20 20 20 agName = 0;.
e320: 7d 0a 0a 20 20 20 20 2f 2f 20 63 72 61 77 6c 20 }.. // crawl
e330: 74 68 65 20 44 4f 4d 20 74 6f 20 66 69 6e 64 20 the DOM to find
e340: 74 68 65 20 74 61 67 0a 20 20 20 20 69 66 20 28 the tag. if (
e350: 69 73 53 74 72 69 6e 67 28 73 65 6c 65 63 74 6f isString(selecto
e360: 72 29 29 20 7b 0a 20 20 20 20 20 20 73 65 6c 65 r)) {. sele
e370: 63 74 6f 72 20 3d 20 73 65 6c 65 63 74 6f 72 20 ctor = selector
e380: 3d 3d 3d 20 27 2a 27 20 3f 0a 20 20 20 20 20 20 === '*' ?.
e390: 20 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c 6c 20 // select all
e3a0: 72 65 67 69 73 74 65 72 65 64 20 74 61 67 73 0a registered tags.
e3b0: 20 20 20 20 20 20 20 20 2f 2f 20 26 20 74 61 67 // & tag
e3c0: 73 20 66 6f 75 6e 64 20 77 69 74 68 20 74 68 65 s found with the
e3d0: 20 72 69 6f 74 2d 74 61 67 20 61 74 74 72 69 62 riot-tag attrib
e3e0: 75 74 65 20 73 65 74 0a 20 20 20 20 20 20 20 20 ute set.
e3f0: 61 6c 6c 54 61 67 73 20 3d 20 71 75 65 72 79 28 allTags = query(
e400: 29 20 3a 0a 20 20 20 20 20 20 20 20 2f 2f 20 6f ) :. // o
e410: 72 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 73 20 r just the ones
e420: 6e 61 6d 65 64 20 6c 69 6b 65 20 74 68 65 20 73 named like the s
e430: 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 elector.
e440: 73 65 6c 65 63 74 6f 72 20 2b 20 71 75 65 72 79 selector + query
e450: 28 73 65 6c 65 63 74 6f 72 2e 73 70 6c 69 74 28 (selector.split(
e460: 2f 2c 20 2a 2f 29 29 3b 0a 0a 20 20 20 20 20 20 /, */));..
e470: 2f 2f 20 6d 61 6b 65 20 73 75 72 65 20 74 6f 20 // make sure to
e480: 70 61 73 73 20 61 6c 77 61 79 73 20 61 20 73 65 pass always a se
e490: 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 2f 2f 20 lector. //
e4a0: 74 6f 20 74 68 65 20 71 75 65 72 79 53 65 6c 65 to the querySele
e4b0: 63 74 6f 72 41 6c 6c 20 66 75 6e 63 74 69 6f 6e ctorAll function
e4c0: 0a 20 20 20 20 20 20 65 6c 65 6d 20 3d 20 73 65 . elem = se
e4d0: 6c 65 63 74 6f 72 20 3f 20 24 24 28 73 65 6c 65 lector ? $$(sele
e4e0: 63 74 6f 72 29 20 3a 20 5b 5d 3b 0a 20 20 20 20 ctor) : [];.
e4f0: 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 }. else.
e500: 20 2f 2f 20 70 72 6f 62 61 62 6c 79 20 79 6f 75 // probably you
e510: 20 68 61 76 65 20 70 61 73 73 65 64 20 61 6c 72 have passed alr
e520: 65 61 64 79 20 61 20 74 61 67 20 6f 72 20 61 20 eady a tag or a
e530: 4e 6f 64 65 4c 69 73 74 0a 20 20 20 20 20 20 7b NodeList. {
e540: 20 65 6c 65 6d 20 3d 20 73 65 6c 65 63 74 6f 72 elem = selector
e550: 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 65 6c 65 ; }.. // sele
e560: 63 74 20 61 6c 6c 20 74 68 65 20 72 65 67 69 73 ct all the regis
e570: 74 65 72 65 64 20 61 6e 64 20 6d 6f 75 6e 74 20 tered and mount
e580: 74 68 65 6d 20 69 6e 73 69 64 65 20 74 68 65 69 them inside thei
e590: 72 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 73 0a r root elements.
e5a0: 20 20 20 20 69 66 20 28 74 61 67 4e 61 6d 65 20 if (tagName
e5b0: 3d 3d 3d 20 27 2a 27 29 20 7b 0a 20 20 20 20 20 === '*') {.
e5c0: 20 2f 2f 20 67 65 74 20 61 6c 6c 20 63 75 73 74 // get all cust
e5d0: 6f 6d 20 74 61 67 73 0a 20 20 20 20 20 20 74 61 om tags. ta
e5e0: 67 4e 61 6d 65 20 3d 20 61 6c 6c 54 61 67 73 20 gName = allTags
e5f0: 7c 7c 20 71 75 65 72 79 28 29 3b 0a 20 20 20 20 || query();.
e600: 20 20 2f 2f 20 69 66 20 74 68 65 20 72 6f 6f 74 // if the root
e610: 20 65 6c 73 20 69 74 27 73 20 6a 75 73 74 20 61 els it's just a
e620: 20 73 69 6e 67 6c 65 20 74 61 67 0a 20 20 20 20 single tag.
e630: 20 20 69 66 20 28 65 6c 65 6d 2e 74 61 67 4e 61 if (elem.tagNa
e640: 6d 65 29 0a 20 20 20 20 20 20 20 20 7b 20 65 6c me). { el
e650: 65 6d 20 3d 20 24 24 28 74 61 67 4e 61 6d 65 2c em = $$(tagName,
e660: 20 65 6c 65 6d 29 3b 20 7d 0a 20 20 20 20 20 20 elem); }.
e670: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 2f else {. /
e680: 2f 20 73 65 6c 65 63 74 20 61 6c 6c 20 74 68 65 / select all the
e690: 20 63 68 69 6c 64 72 65 6e 20 66 6f 72 20 61 6c children for al
e6a0: 6c 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 l the different
e6b0: 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 73 0a 20 20 root elements.
e6c0: 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 4c 69 var nodeLi
e6d0: 73 74 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 st = [];..
e6e0: 20 20 65 61 63 68 28 65 6c 65 6d 2c 20 66 75 6e each(elem, fun
e6f0: 63 74 69 6f 6e 20 28 5f 65 6c 29 20 7b 20 72 65 ction (_el) { re
e700: 74 75 72 6e 20 6e 6f 64 65 4c 69 73 74 2e 70 75 turn nodeList.pu
e710: 73 68 28 24 24 28 74 61 67 4e 61 6d 65 2c 20 5f sh($$(tagName, _
e720: 65 6c 29 29 3b 20 7d 29 3b 0a 0a 20 20 20 20 20 el)); });..
e730: 20 20 20 65 6c 65 6d 20 3d 20 6e 6f 64 65 4c 69 elem = nodeLi
e740: 73 74 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 st;. }.
e750: 20 20 2f 2f 20 67 65 74 20 72 69 64 20 6f 66 20 // get rid of
e760: 74 68 65 20 74 61 67 4e 61 6d 65 0a 20 20 20 20 the tagName.
e770: 20 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b 0a 20 tagName = 0;.
e780: 20 20 20 7d 0a 0a 20 20 20 20 70 75 73 68 54 61 }.. pushTa
e790: 67 73 54 6f 28 65 6c 65 6d 29 3b 0a 0a 20 20 20 gsTo(elem);..
e7a0: 20 72 65 74 75 72 6e 20 74 61 67 73 0a 20 20 7d return tags. }
e7b0: 0a 0a 20 20 2f 2f 20 43 72 65 61 74 65 20 61 20 .. // Create a
e7c0: 6d 69 78 69 6e 20 74 68 61 74 20 63 6f 75 6c 64 mixin that could
e7d0: 20 62 65 20 67 6c 6f 62 61 6c 6c 79 20 73 68 61 be globally sha
e7e0: 72 65 64 20 61 63 72 6f 73 73 20 61 6c 6c 20 74 red across all t
e7f0: 68 65 20 74 61 67 73 0a 20 20 76 61 72 20 6d 69 he tags. var mi
e800: 78 69 6e 73 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 xins = {};. var
e810: 20 67 6c 6f 62 61 6c 73 20 3d 20 6d 69 78 69 6e globals = mixin
e820: 73 5b 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e 5d 20 s[GLOBAL_MIXIN]
e830: 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6d 69 78 69 = {};. var mixi
e840: 6e 73 5f 69 64 20 3d 20 30 3b 0a 0a 20 20 2f 2a ns_id = 0;.. /*
e850: 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 2f 52 65 *. * Create/Re
e860: 74 75 72 6e 20 61 20 6d 69 78 69 6e 20 62 79 20 turn a mixin by
e870: 69 74 73 20 6e 61 6d 65 0a 20 20 20 2a 20 40 70 its name. * @p
e880: 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
e890: 7d 20 20 6e 61 6d 65 20 2d 20 6d 69 78 69 6e 20 } name - mixin
e8a0: 6e 61 6d 65 20 28 67 6c 6f 62 61 6c 20 6d 69 78 name (global mix
e8b0: 69 6e 20 69 66 20 6f 62 6a 65 63 74 29 0a 20 20 in if object).
e8c0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
e8d0: 6a 65 63 74 20 7d 20 20 6d 69 78 20 2d 20 6d 69 ject } mix - mi
e8e0: 78 69 6e 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 xin logic. * @
e8f0: 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 param { Boolea
e900: 6e 20 7d 20 67 20 2d 20 69 73 20 67 6c 6f 62 61 n } g - is globa
e910: 6c 3f 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 l?. * @returns
e920: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 74 68 65 { Object } the
e930: 20 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20 20 20 mixin logic.
e940: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 69 */. function mi
e950: 78 69 6e 28 6e 61 6d 65 2c 20 6d 69 78 2c 20 67 xin(name, mix, g
e960: 29 20 7b 0a 20 20 20 20 2f 2f 20 55 6e 6e 61 6d ) {. // Unnam
e970: 65 64 20 67 6c 6f 62 61 6c 0a 20 20 20 20 69 66 ed global. if
e980: 20 28 69 73 4f 62 6a 65 63 74 28 6e 61 6d 65 29 (isObject(name)
e990: 29 20 7b 0a 20 20 20 20 20 20 6d 69 78 69 6e 28 ) {. mixin(
e9a0: 28 22 5f 5f 22 20 2b 20 28 6d 69 78 69 6e 73 5f ("__" + (mixins_
e9b0: 69 64 2b 2b 29 20 2b 20 22 5f 5f 22 29 2c 20 6e id++) + "__"), n
e9c0: 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 ame, true);.
e9d0: 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a return. }..
e9e0: 20 20 20 20 76 61 72 20 73 74 6f 72 65 20 3d 20 var store =
e9f0: 67 20 3f 20 67 6c 6f 62 61 6c 73 20 3a 20 6d 69 g ? globals : mi
ea00: 78 69 6e 73 3b 0a 0a 20 20 20 20 2f 2f 20 47 65 xins;.. // Ge
ea10: 74 74 65 72 0a 20 20 20 20 69 66 20 28 21 6d 69 tter. if (!mi
ea20: 78 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 69 x) {. if (i
ea30: 73 55 6e 64 65 66 69 6e 65 64 28 73 74 6f 72 65 sUndefined(store
ea40: 5b 6e 61 6d 65 5d 29 29 0a 20 20 20 20 20 20 20 [name])).
ea50: 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 { throw new Err
ea60: 6f 72 28 28 22 55 6e 72 65 67 69 73 74 65 72 65 or(("Unregistere
ea70: 64 20 6d 69 78 69 6e 3a 20 22 20 2b 20 6e 61 6d d mixin: " + nam
ea80: 65 29 29 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 e)) }.. ret
ea90: 75 72 6e 20 73 74 6f 72 65 5b 6e 61 6d 65 5d 0a urn store[name].
eaa0: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 53 65 }.. // Se
eab0: 74 74 65 72 0a 20 20 20 20 73 74 6f 72 65 5b 6e tter. store[n
eac0: 61 6d 65 5d 20 3d 20 69 73 46 75 6e 63 74 69 6f ame] = isFunctio
ead0: 6e 28 6d 69 78 29 20 3f 0a 20 20 20 20 20 20 65 n(mix) ?. e
eae0: 78 74 65 6e 64 28 6d 69 78 2e 70 72 6f 74 6f 74 xtend(mix.protot
eaf0: 79 70 65 2c 20 73 74 6f 72 65 5b 6e 61 6d 65 5d ype, store[name]
eb00: 20 7c 7c 20 7b 7d 29 20 26 26 20 6d 69 78 20 3a || {}) && mix :
eb10: 0a 20 20 20 20 20 20 65 78 74 65 6e 64 28 73 74 . extend(st
eb20: 6f 72 65 5b 6e 61 6d 65 5d 20 7c 7c 20 7b 7d 2c ore[name] || {},
eb30: 20 6d 69 78 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a mix);. }.. /*
eb40: 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20 61 6c *. * Update al
eb50: 6c 20 74 68 65 20 74 61 67 73 20 69 6e 73 74 61 l the tags insta
eb60: 6e 63 65 73 20 63 72 65 61 74 65 64 0a 20 20 20 nces created.
eb70: 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41 72 72 * @returns { Arr
eb80: 61 79 20 7d 20 61 6c 6c 20 74 68 65 20 74 61 67 ay } all the tag
eb90: 73 20 69 6e 73 74 61 6e 63 65 73 0a 20 20 20 2a s instances. *
eba0: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 /. function upd
ebb0: 61 74 65 24 31 28 29 20 7b 0a 20 20 20 20 72 65 ate$1() {. re
ebc0: 74 75 72 6e 20 65 61 63 68 28 5f 5f 54 41 47 53 turn each(__TAGS
ebd0: 5f 43 41 43 48 45 2c 20 66 75 6e 63 74 69 6f 6e _CACHE, function
ebe0: 20 28 74 61 67 29 20 7b 20 72 65 74 75 72 6e 20 (tag) { return
ebf0: 74 61 67 2e 75 70 64 61 74 65 28 29 3b 20 7d 29 tag.update(); })
ec00: 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e . }.. function
ec10: 20 75 6e 72 65 67 69 73 74 65 72 28 6e 61 6d 65 unregister(name
ec20: 29 20 7b 0a 20 20 20 20 73 74 79 6c 65 4d 61 6e ) {. styleMan
ec30: 61 67 65 72 2e 72 65 6d 6f 76 65 28 6e 61 6d 65 ager.remove(name
ec40: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 64 65 );. return de
ec50: 6c 65 74 65 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b lete __TAG_IMPL[
ec60: 6e 61 6d 65 5d 0a 20 20 7d 0a 0a 20 20 76 61 72 name]. }.. var
ec70: 20 76 65 72 73 69 6f 6e 20 3d 20 27 76 33 2e 31 version = 'v3.1
ec80: 33 2e 32 27 3b 0a 0a 20 20 76 61 72 20 63 6f 72 3.2';.. var cor
ec90: 65 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f 5f 2a e = /*#__PURE__*
eca0: 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 28 7b /Object.freeze({
ecb0: 0a 20 20 20 20 54 61 67 3a 20 54 61 67 2c 0a 20 . Tag: Tag,.
ecc0: 20 20 20 74 61 67 3a 20 74 61 67 2c 0a 20 20 20 tag: tag,.
ecd0: 20 74 61 67 32 3a 20 74 61 67 32 2c 0a 20 20 20 tag2: tag2,.
ece0: 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 2c 0a 20 mount: mount,.
ecf0: 20 20 20 6d 69 78 69 6e 3a 20 6d 69 78 69 6e 2c mixin: mixin,
ed00: 0a 20 20 20 20 75 70 64 61 74 65 3a 20 75 70 64 . update: upd
ed10: 61 74 65 24 31 2c 0a 20 20 20 20 75 6e 72 65 67 ate$1,. unreg
ed20: 69 73 74 65 72 3a 20 75 6e 72 65 67 69 73 74 65 ister: unregiste
ed30: 72 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e 3a 20 r,. version:
ed40: 76 65 72 73 69 6f 6e 0a 20 20 7d 29 3b 0a 0a 20 version. });..
ed50: 20 2f 2a 2a 0a 20 20 20 2a 20 41 64 64 20 61 20 /**. * Add a
ed60: 6d 69 78 69 6e 20 74 6f 20 74 68 69 73 20 74 61 mixin to this ta
ed70: 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 g. * @returns
ed80: 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75 72 72 { Tag } the curr
ed90: 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 ent tag instance
eda0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
edb0: 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 69 78 69 6e n componentMixin
edc0: 28 74 61 67 24 24 31 29 20 7b 0a 20 20 20 20 76 (tag$$1) {. v
edd0: 61 72 20 6d 69 78 69 6e 73 20 3d 20 5b 5d 2c 20 ar mixins = [],
ede0: 6c 65 6e 20 3d 20 61 72 67 75 6d 65 6e 74 73 2e len = arguments.
edf0: 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 20 20 20 length - 1;.
ee00: 77 68 69 6c 65 20 28 20 6c 65 6e 2d 2d 20 3e 20 while ( len-- >
ee10: 30 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65 6e 20 0 ) mixins[ len
ee20: 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20 6c ] = arguments[ l
ee30: 65 6e 20 2b 20 31 20 5d 3b 0a 0a 20 20 20 20 65 en + 1 ];.. e
ee40: 61 63 68 28 6d 69 78 69 6e 73 2c 20 66 75 6e 63 ach(mixins, func
ee50: 74 69 6f 6e 20 28 6d 69 78 29 20 7b 0a 20 20 20 tion (mix) {.
ee60: 20 20 20 76 61 72 20 69 6e 73 74 61 6e 63 65 3b var instance;
ee70: 0a 20 20 20 20 20 20 76 61 72 20 6f 62 6a 3b 0a . var obj;.
ee80: 20 20 20 20 20 20 76 61 72 20 70 72 6f 70 73 20 var props
ee90: 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 = [];.. //
eea0: 70 72 6f 70 65 72 74 69 65 73 20 62 6c 61 63 6b properties black
eeb0: 6c 69 73 74 65 64 20 61 6e 64 20 77 69 6c 6c 20 listed and will
eec0: 6e 6f 74 20 62 65 20 62 6f 75 6e 64 20 74 6f 20 not be bound to
eed0: 74 68 65 20 74 61 67 20 69 6e 73 74 61 6e 63 65 the tag instance
eee0: 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f 70 73 . var props
eef0: 42 6c 61 63 6b 6c 69 73 74 20 3d 20 5b 27 69 6e Blacklist = ['in
ef00: 69 74 27 2c 20 27 5f 5f 70 72 6f 74 6f 5f 5f 27 it', '__proto__'
ef10: 5d 3b 0a 0a 20 20 20 20 20 20 6d 69 78 20 3d 20 ];.. mix =
ef20: 69 73 53 74 72 69 6e 67 28 6d 69 78 29 20 3f 20 isString(mix) ?
ef30: 6d 69 78 69 6e 28 6d 69 78 29 20 3a 20 6d 69 78 mixin(mix) : mix
ef40: 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 63 68 65 63 ;.. // chec
ef50: 6b 20 69 66 20 74 68 65 20 6d 69 78 69 6e 20 69 k if the mixin i
ef60: 73 20 61 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 s a function.
ef70: 20 20 20 69 66 20 28 69 73 46 75 6e 63 74 69 6f if (isFunctio
ef80: 6e 28 6d 69 78 29 29 20 7b 0a 20 20 20 20 20 20 n(mix)) {.
ef90: 20 20 2f 2f 20 63 72 65 61 74 65 20 74 68 65 20 // create the
efa0: 6e 65 77 20 6d 69 78 69 6e 20 69 6e 73 74 61 6e new mixin instan
efb0: 63 65 0a 20 20 20 20 20 20 20 20 69 6e 73 74 61 ce. insta
efc0: 6e 63 65 20 3d 20 6e 65 77 20 6d 69 78 28 29 3b nce = new mix();
efd0: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 . } else {
efe0: 69 6e 73 74 61 6e 63 65 20 3d 20 6d 69 78 3b 20 instance = mix;
eff0: 7d 0a 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f }.. var pro
f000: 74 6f 20 3d 20 4f 62 6a 65 63 74 2e 67 65 74 50 to = Object.getP
f010: 72 6f 74 6f 74 79 70 65 4f 66 28 69 6e 73 74 61 rototypeOf(insta
f020: 6e 63 65 29 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 nce);.. //
f030: 62 75 69 6c 64 20 6d 75 6c 74 69 6c 65 76 65 6c build multilevel
f040: 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 68 65 72 prototype inher
f050: 69 74 61 6e 63 65 20 63 68 61 69 6e 20 70 72 6f itance chain pro
f060: 70 65 72 74 79 20 6c 69 73 74 0a 20 20 20 20 20 perty list.
f070: 20 64 6f 20 7b 20 70 72 6f 70 73 20 3d 20 70 72 do { props = pr
f080: 6f 70 73 2e 63 6f 6e 63 61 74 28 4f 62 6a 65 63 ops.concat(Objec
f090: 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79 t.getOwnProperty
f0a0: 4e 61 6d 65 73 28 6f 62 6a 20 7c 7c 20 69 6e 73 Names(obj || ins
f0b0: 74 61 6e 63 65 29 29 3b 20 7d 0a 20 20 20 20 20 tance)); }.
f0c0: 20 77 68 69 6c 65 20 28 6f 62 6a 20 3d 20 4f 62 while (obj = Ob
f0d0: 6a 65 63 74 2e 67 65 74 50 72 6f 74 6f 74 79 70 ject.getPrototyp
f0e0: 65 4f 66 28 6f 62 6a 20 7c 7c 20 69 6e 73 74 61 eOf(obj || insta
f0f0: 6e 63 65 29 29 0a 0a 20 20 20 20 20 20 2f 2f 20 nce)).. //
f100: 6c 6f 6f 70 20 74 68 65 20 6b 65 79 73 20 69 6e loop the keys in
f110: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 72 the function pr
f120: 6f 74 6f 74 79 70 65 20 6f 72 20 74 68 65 20 61 ototype or the a
f130: 6c 6c 20 6f 62 6a 65 63 74 20 6b 65 79 73 0a 20 ll object keys.
f140: 20 20 20 20 20 65 61 63 68 28 70 72 6f 70 73 2c each(props,
f150: 20 66 75 6e 63 74 69 6f 6e 20 28 6b 65 79 29 20 function (key)
f160: 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 69 6e {. // bin
f170: 64 20 6d 65 74 68 6f 64 73 20 74 6f 20 74 61 67 d methods to tag
f180: 0a 20 20 20 20 20 20 20 20 2f 2f 20 61 6c 6c 6f . // allo
f190: 77 20 6d 69 78 69 6e 73 20 74 6f 20 6f 76 65 72 w mixins to over
f1a0: 72 69 64 65 20 6f 74 68 65 72 20 70 72 6f 70 65 ride other prope
f1b0: 72 74 69 65 73 2f 70 61 72 65 6e 74 20 6d 69 78 rties/parent mix
f1c0: 69 6e 73 0a 20 20 20 20 20 20 20 20 69 66 20 28 ins. if (
f1d0: 21 63 6f 6e 74 61 69 6e 73 28 70 72 6f 70 73 42 !contains(propsB
f1e0: 6c 61 63 6b 6c 69 73 74 2c 20 6b 65 79 29 29 20 lacklist, key))
f1f0: 7b 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 {. // c
f200: 68 65 63 6b 20 66 6f 72 20 67 65 74 74 65 72 73 heck for getters
f210: 2f 73 65 74 74 65 72 73 0a 20 20 20 20 20 20 20 /setters.
f220: 20 20 20 76 61 72 20 64 65 73 63 72 69 70 74 6f var descripto
f230: 72 20 3d 20 67 65 74 50 72 6f 70 44 65 73 63 72 r = getPropDescr
f240: 69 70 74 6f 72 28 69 6e 73 74 61 6e 63 65 2c 20 iptor(instance,
f250: 6b 65 79 29 20 7c 7c 20 67 65 74 50 72 6f 70 44 key) || getPropD
f260: 65 73 63 72 69 70 74 6f 72 28 70 72 6f 74 6f 2c escriptor(proto,
f270: 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20 20 key);.
f280: 20 76 61 72 20 68 61 73 47 65 74 74 65 72 53 65 var hasGetterSe
f290: 74 74 65 72 20 3d 20 64 65 73 63 72 69 70 74 6f tter = descripto
f2a0: 72 20 26 26 20 28 64 65 73 63 72 69 70 74 6f 72 r && (descriptor
f2b0: 2e 67 65 74 20 7c 7c 20 64 65 73 63 72 69 70 74 .get || descript
f2c0: 6f 72 2e 73 65 74 29 3b 0a 0a 20 20 20 20 20 20 or.set);..
f2d0: 20 20 20 20 2f 2f 20 61 70 70 6c 79 20 6d 65 74 // apply met
f2e0: 68 6f 64 20 6f 6e 6c 79 20 69 66 20 69 74 20 64 hod only if it d
f2f0: 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 oes not already
f300: 65 78 69 73 74 20 6f 6e 20 74 68 65 20 69 6e 73 exist on the ins
f310: 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 tance.
f320: 69 66 20 28 21 74 61 67 24 24 31 2e 68 61 73 4f if (!tag$$1.hasO
f330: 77 6e 50 72 6f 70 65 72 74 79 28 6b 65 79 29 20 wnProperty(key)
f340: 26 26 20 68 61 73 47 65 74 74 65 72 53 65 74 74 && hasGetterSett
f350: 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 er) {.
f360: 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
f370: 72 6f 70 65 72 74 79 28 74 61 67 24 24 31 2c 20 roperty(tag$$1,
f380: 6b 65 79 2c 20 64 65 73 63 72 69 70 74 6f 72 29 key, descriptor)
f390: 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c ;. } el
f3a0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 se {.
f3b0: 20 74 61 67 24 24 31 5b 6b 65 79 5d 20 3d 20 69 tag$$1[key] = i
f3c0: 73 46 75 6e 63 74 69 6f 6e 28 69 6e 73 74 61 6e sFunction(instan
f3d0: 63 65 5b 6b 65 79 5d 29 20 3f 0a 20 20 20 20 20 ce[key]) ?.
f3e0: 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 instanc
f3f0: 65 5b 6b 65 79 5d 2e 62 69 6e 64 28 74 61 67 24 e[key].bind(tag$
f400: 24 31 29 20 3a 0a 20 20 20 20 20 20 20 20 20 20 $1) :.
f410: 20 20 20 20 69 6e 73 74 61 6e 63 65 5b 6b 65 79 instance[key
f420: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 ];. }.
f430: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d }. }
f440: 29 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 69 6e 69 );.. // ini
f450: 74 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 t method will be
f460: 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 called automati
f470: 63 61 6c 6c 79 0a 20 20 20 20 20 20 69 66 20 28 cally. if (
f480: 69 6e 73 74 61 6e 63 65 2e 69 6e 69 74 29 0a 20 instance.init).
f490: 20 20 20 20 20 20 20 7b 20 69 6e 73 74 61 6e 63 { instanc
f4a0: 65 2e 69 6e 69 74 2e 62 69 6e 64 28 74 61 67 24 e.init.bind(tag$
f4b0: 24 31 29 28 74 61 67 24 24 31 2e 6f 70 74 73 29 $1)(tag$$1.opts)
f4c0: 3b 20 7d 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 20 ; }. });..
f4d0: 20 72 65 74 75 72 6e 20 74 61 67 24 24 31 0a 20 return tag$$1.
f4e0: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d }.. /**. * M
f4f0: 6f 76 65 20 74 68 65 20 70 6f 73 69 74 69 6f 6e ove the position
f500: 20 6f 66 20 61 20 63 75 73 74 6f 6d 20 74 61 67 of a custom tag
f510: 20 69 6e 20 69 74 73 20 70 61 72 65 6e 74 20 74 in its parent t
f520: 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 ag. * @this Ta
f530: 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 g. * @param
f540: 7b 20 53 74 72 69 6e 67 20 7d 20 74 61 67 4e 61 { String } tagNa
f550: 6d 65 20 2d 20 6b 65 79 20 77 68 65 72 65 20 74 me - key where t
f560: 68 65 20 74 61 67 20 77 61 73 20 73 74 6f 72 65 he tag was store
f570: 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 d. * @param
f580: 7b 20 4e 75 6d 62 65 72 20 7d 20 6e 65 77 50 6f { Number } newPo
f590: 73 20 2d 20 69 6e 64 65 78 20 77 68 65 72 65 20 s - index where
f5a0: 74 68 65 20 6e 65 77 20 74 61 67 20 77 69 6c 6c the new tag will
f5b0: 20 62 65 20 73 74 6f 72 65 64 0a 20 20 20 2a 2f be stored. */
f5c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 . function move
f5d0: 43 68 69 6c 64 28 74 61 67 4e 61 6d 65 2c 20 6e Child(tagName, n
f5e0: 65 77 50 6f 73 29 20 7b 0a 20 20 20 20 76 61 72 ewPos) {. var
f5f0: 20 70 61 72 65 6e 74 20 3d 20 74 68 69 73 2e 70 parent = this.p
f600: 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72 20 74 arent;. var t
f610: 61 67 73 3b 0a 20 20 20 20 2f 2f 20 6e 6f 20 70 ags;. // no p
f620: 61 72 65 6e 74 20 6e 6f 20 6d 6f 76 65 0a 20 20 arent no move.
f630: 20 20 69 66 20 28 21 70 61 72 65 6e 74 29 20 7b if (!parent) {
f640: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 74 return }.. t
f650: 61 67 73 20 3d 20 70 61 72 65 6e 74 2e 74 61 67 ags = parent.tag
f660: 73 5b 74 61 67 4e 61 6d 65 5d 3b 0a 0a 20 20 20 s[tagName];..
f670: 20 69 66 20 28 69 73 41 72 72 61 79 28 74 61 67 if (isArray(tag
f680: 73 29 29 0a 20 20 20 20 20 20 7b 20 74 61 67 73 s)). { tags
f690: 2e 73 70 6c 69 63 65 28 6e 65 77 50 6f 73 2c 20 .splice(newPos,
f6a0: 30 2c 20 74 61 67 73 2e 73 70 6c 69 63 65 28 74 0, tags.splice(t
f6b0: 61 67 73 2e 69 6e 64 65 78 4f 66 28 74 68 69 73 ags.indexOf(this
f6c0: 29 2c 20 31 29 5b 30 5d 29 3b 20 7d 0a 20 20 20 ), 1)[0]); }.
f6d0: 20 65 6c 73 65 20 7b 20 61 72 72 61 79 69 73 68 else { arrayish
f6e0: 41 64 64 28 70 61 72 65 6e 74 2e 74 61 67 73 2c Add(parent.tags,
f6f0: 20 74 61 67 4e 61 6d 65 2c 20 74 68 69 73 29 3b tagName, this);
f700: 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 }. }.. /**.
f710: 20 2a 20 4d 6f 76 65 20 76 69 72 74 75 61 6c 20 * Move virtual
f720: 74 61 67 20 61 6e 64 20 61 6c 6c 20 63 68 69 6c tag and all chil
f730: 64 20 6e 6f 64 65 73 0a 20 20 20 2a 20 40 74 68 d nodes. * @th
f740: 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 is Tag. * @par
f750: 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 73 72 63 20 am { Node } src
f760: 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 68 61 74 - the node that
f770: 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 69 6e 73 will do the ins
f780: 65 72 74 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 erting. * @par
f790: 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72 67 65 am { Tag } targe
f7a0: 74 20 2d 20 69 6e 73 65 72 74 20 62 65 66 6f 72 t - insert befor
f7b0: 65 20 74 68 69 73 20 74 61 67 27 73 20 66 69 72 e this tag's fir
f7c0: 73 74 20 63 68 69 6c 64 0a 20 20 20 2a 2f 0a 20 st child. */.
f7d0: 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 56 69 function moveVi
f7e0: 72 74 75 61 6c 28 73 72 63 2c 20 74 61 72 67 65 rtual(src, targe
f7f0: 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 68 69 t) {. var thi
f800: 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 s$1 = this;..
f810: 20 76 61 72 20 65 6c 20 3d 20 74 68 69 73 2e 5f var el = this._
f820: 5f 2e 68 65 61 64 3b 0a 20 20 20 20 76 61 72 20 _.head;. var
f830: 73 69 62 3b 0a 20 20 20 20 76 61 72 20 66 72 61 sib;. var fra
f840: 67 20 3d 20 63 72 65 61 74 65 46 72 61 67 6d 65 g = createFragme
f850: 6e 74 28 29 3b 0a 0a 20 20 20 20 77 68 69 6c 65 nt();.. while
f860: 20 28 65 6c 29 20 7b 0a 20 20 20 20 20 20 73 69 (el) {. si
f870: 62 20 3d 20 65 6c 2e 6e 65 78 74 53 69 62 6c 69 b = el.nextSibli
f880: 6e 67 3b 0a 20 20 20 20 20 20 66 72 61 67 2e 61 ng;. frag.a
f890: 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29 3b 0a ppendChild(el);.
f8a0: 20 20 20 20 20 20 65 6c 20 3d 20 73 69 62 3b 0a el = sib;.
f8b0: 20 20 20 20 20 20 69 66 20 28 65 6c 20 3d 3d 3d if (el ===
f8c0: 20 74 68 69 73 24 31 2e 5f 5f 2e 74 61 69 6c 29 this$1.__.tail)
f8d0: 20 7b 0a 20 20 20 20 20 20 20 20 66 72 61 67 2e {. frag.
f8e0: 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29 3b appendChild(el);
f8f0: 0a 20 20 20 20 20 20 20 20 73 72 63 2e 69 6e 73 . src.ins
f900: 65 72 74 42 65 66 6f 72 65 28 66 72 61 67 2c 20 ertBefore(frag,
f910: 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64 29 3b target.__.head);
f920: 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 . break.
f930: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d }. }. }
f940: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 6f 6e .. /**. * Con
f950: 76 65 72 74 20 74 68 65 20 69 74 65 6d 20 6c 6f vert the item lo
f960: 6f 70 65 64 20 69 6e 74 6f 20 61 6e 20 6f 62 6a oped into an obj
f970: 65 63 74 20 75 73 65 64 20 74 6f 20 65 78 74 65 ect used to exte
f980: 6e 64 20 74 68 65 20 63 68 69 6c 64 20 74 61 67 nd the child tag
f990: 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 2a properties. *
f9a0: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
f9b0: 63 74 20 7d 20 65 78 70 72 20 2d 20 6f 62 6a 65 ct } expr - obje
f9c0: 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 ct containing th
f9d0: 65 20 6b 65 79 73 20 75 73 65 64 20 74 6f 20 65 e keys used to e
f9e0: 78 74 65 6e 64 20 74 68 65 20 63 68 69 6c 64 72 xtend the childr
f9f0: 65 6e 20 74 61 67 73 0a 20 20 20 2a 20 40 70 61 en tags. * @pa
fa00: 72 61 6d 20 20 20 7b 20 2a 20 7d 20 6b 65 79 20 ram { * } key
fa10: 2d 20 76 61 6c 75 65 20 74 6f 20 61 73 73 69 67 - value to assig
fa20: 6e 20 74 6f 20 74 68 65 20 6e 65 77 20 6f 62 6a n to the new obj
fa30: 65 63 74 20 72 65 74 75 72 6e 65 64 0a 20 20 20 ect returned.
fa40: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d * @param { * }
fa50: 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 63 6f 6e val - value con
fa60: 74 61 69 6e 69 6e 67 20 74 68 65 20 70 6f 73 69 taining the posi
fa70: 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 74 65 6d tion of the item
fa80: 20 69 6e 20 74 68 65 20 61 72 72 61 79 0a 20 20 in the array.
fa90: 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 * @returns { Ob
faa0: 6a 65 63 74 20 7d 20 2d 20 6e 65 77 20 6f 62 6a ject } - new obj
fab0: 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 ect containing t
fac0: 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 he values of the
fad0: 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d 0a 20 original item.
fae0: 20 20 2a 0a 20 20 20 2a 20 54 68 65 20 76 61 72 *. * The var
faf0: 69 61 62 6c 65 73 20 27 6b 65 79 27 20 61 6e 64 iables 'key' and
fb00: 20 27 76 61 6c 27 20 61 72 65 20 61 72 62 69 74 'val' are arbit
fb10: 72 61 72 79 2e 0a 20 20 20 2a 20 54 68 65 79 20 rary.. * They
fb20: 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 6f depend on the co
fb30: 6c 6c 65 63 74 69 6f 6e 20 74 79 70 65 20 6c 6f llection type lo
fb40: 6f 70 65 64 20 28 41 72 72 61 79 2c 20 4f 62 6a oped (Array, Obj
fb50: 65 63 74 29 0a 20 20 20 2a 20 61 6e 64 20 6f 6e ect). * and on
fb60: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 the expression
fb70: 75 73 65 64 20 6f 6e 20 74 68 65 20 65 61 63 68 used on the each
fb80: 20 74 61 67 0a 20 20 20 2a 0a 20 20 20 2a 2f 0a tag. *. */.
fb90: 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6b 69 74 65 function mkite
fba0: 6d 28 65 78 70 72 2c 20 6b 65 79 2c 20 76 61 6c m(expr, key, val
fbb0: 29 20 7b 0a 20 20 20 20 76 61 72 20 69 74 65 6d ) {. var item
fbc0: 20 3d 20 7b 7d 3b 0a 20 20 20 20 69 74 65 6d 5b = {};. item[
fbd0: 65 78 70 72 2e 6b 65 79 5d 20 3d 20 6b 65 79 3b expr.key] = key;
fbe0: 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e 70 6f . if (expr.po
fbf0: 73 29 20 7b 20 69 74 65 6d 5b 65 78 70 72 2e 70 s) { item[expr.p
fc00: 6f 73 5d 20 3d 20 76 61 6c 3b 20 7d 0a 20 20 20 os] = val; }.
fc10: 20 72 65 74 75 72 6e 20 69 74 65 6d 0a 20 20 7d return item. }
fc20: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 6e 6d .. /**. * Unm
fc30: 6f 75 6e 74 20 74 68 65 20 72 65 64 75 6e 64 61 ount the redunda
fc40: 6e 74 20 74 61 67 73 0a 20 20 20 2a 20 40 70 61 nt tags. * @pa
fc50: 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 ram { Array }
fc60: 69 74 65 6d 73 20 2d 20 61 72 72 61 79 20 63 6f items - array co
fc70: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72 ntaining the cur
fc80: 72 65 6e 74 20 69 74 65 6d 73 20 74 6f 20 6c 6f rent items to lo
fc90: 6f 70 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 op. * @param
fca0: 20 7b 20 41 72 72 61 79 20 7d 20 74 61 67 73 20 { Array } tags
fcb0: 2d 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 - array containi
fcc0: 6e 67 20 61 6c 6c 20 74 68 65 20 63 68 69 6c 64 ng all the child
fcd0: 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 2f 0a 20 ren tags. */.
fce0: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d 6f 75 6e function unmoun
fcf0: 74 52 65 64 75 6e 64 61 6e 74 28 69 74 65 6d 73 tRedundant(items
fd00: 2c 20 74 61 67 73 2c 20 66 69 6c 74 65 72 65 64 , tags, filtered
fd10: 49 74 65 6d 73 43 6f 75 6e 74 29 20 7b 0a 20 20 ItemsCount) {.
fd20: 20 20 76 61 72 20 69 20 3d 20 74 61 67 73 2e 6c var i = tags.l
fd30: 65 6e 67 74 68 3b 0a 20 20 20 20 76 61 72 20 6a ength;. var j
fd40: 20 3d 20 69 74 65 6d 73 2e 6c 65 6e 67 74 68 20 = items.length
fd50: 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73 43 - filteredItemsC
fd60: 6f 75 6e 74 3b 0a 0a 20 20 20 20 77 68 69 6c 65 ount;.. while
fd70: 20 28 69 20 3e 20 6a 29 20 7b 0a 20 20 20 20 20 (i > j) {.
fd80: 20 69 2d 2d 3b 0a 20 20 20 20 20 20 72 65 6d 6f i--;. remo
fd90: 76 65 2e 61 70 70 6c 79 28 74 61 67 73 5b 69 5d ve.apply(tags[i]
fda0: 2c 20 5b 74 61 67 73 2c 20 69 5d 29 3b 0a 20 20 , [tags, i]);.
fdb0: 20 20 7d 0a 20 20 7d 0a 0a 0a 20 20 2f 2a 2a 0a }. }... /**.
fdc0: 20 20 20 2a 20 52 65 6d 6f 76 65 20 61 20 63 68 * Remove a ch
fdd0: 69 6c 64 20 74 61 67 0a 20 20 20 2a 20 40 74 68 ild tag. * @th
fde0: 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 is Tag. * @par
fdf0: 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 am { Array } t
fe00: 61 67 73 20 2d 20 74 61 67 73 20 63 6f 6c 6c 65 ags - tags colle
fe10: 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 ction. * @para
fe20: 6d 20 20 20 7b 20 4e 75 6d 62 65 72 20 7d 20 69 m { Number } i
fe30: 20 2d 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 - index of the
fe40: 74 61 67 20 74 6f 20 72 65 6d 6f 76 65 0a 20 20 tag to remove.
fe50: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 72 */. function r
fe60: 65 6d 6f 76 65 28 74 61 67 73 2c 20 69 29 20 7b emove(tags, i) {
fe70: 0a 20 20 20 20 74 61 67 73 2e 73 70 6c 69 63 65 . tags.splice
fe80: 28 69 2c 20 31 29 3b 0a 20 20 20 20 74 68 69 73 (i, 1);. this
fe90: 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 .unmount();.
fea0: 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 74 arrayishRemove(t
feb0: 68 69 73 2e 70 61 72 65 6e 74 2c 20 74 68 69 73 his.parent, this
fec0: 2c 20 74 68 69 73 2e 5f 5f 2e 74 61 67 4e 61 6d , this.__.tagNam
fed0: 65 2c 20 74 72 75 65 29 3b 0a 20 20 7d 0a 0a 20 e, true);. }..
fee0: 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f 76 65 20 74 /**. * Move t
fef0: 68 65 20 6e 65 73 74 65 64 20 63 75 73 74 6f 6d he nested custom
ff00: 20 74 61 67 73 20 69 6e 20 6e 6f 6e 20 63 75 73 tags in non cus
ff10: 74 6f 6d 20 6c 6f 6f 70 20 74 61 67 73 0a 20 20 tom loop tags.
ff20: 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 * @this Tag.
ff30: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4e 75 6d * @param { Num
ff40: 62 65 72 20 7d 20 69 20 2d 20 63 75 72 72 65 6e ber } i - curren
ff50: 74 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 t position of th
ff60: 65 20 6c 6f 6f 70 20 74 61 67 0a 20 20 20 2a 2f e loop tag. */
ff70: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 . function move
ff80: 4e 65 73 74 65 64 54 61 67 73 28 69 29 20 7b 0a NestedTags(i) {.
ff90: 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d var this$1 =
ffa0: 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 this;.. each
ffb0: 28 4f 62 6a 65 63 74 2e 6b 65 79 73 28 74 68 69 (Object.keys(thi
ffc0: 73 2e 74 61 67 73 29 2c 20 66 75 6e 63 74 69 6f s.tags), functio
ffd0: 6e 20 28 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 n (tagName) {.
ffe0: 20 20 20 20 6d 6f 76 65 43 68 69 6c 64 2e 61 70 moveChild.ap
fff0: 70 6c 79 28 74 68 69 73 24 31 2e 74 61 67 73 5b ply(this$1.tags[
10000 74 61 67 4e 61 6d 65 5d 2c 20 5b 74 61 67 4e 61 tagName], [tagNa
10010 6d 65 2c 20 69 5d 29 3b 0a 20 20 20 20 7d 29 3b me, i]);. });
10020 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
10030 20 4d 6f 76 65 20 61 20 63 68 69 6c 64 20 74 61 Move a child ta
10040 67 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 g. * @this Tag
10050 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
10060 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 72 HTMLElement } r
10070 6f 6f 74 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 63 oot - dom node c
10080 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 ontaining all th
10090 65 20 6c 6f 6f 70 20 63 68 69 6c 64 72 65 6e 0a e loop children.
100a0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
100b0 54 61 67 20 7d 20 6e 65 78 74 54 61 67 20 2d 20 Tag } nextTag -
100c0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 instance of the
100d0 6e 65 78 74 20 74 61 67 20 70 72 65 63 65 64 69 next tag precedi
100e0 6e 67 20 74 68 65 20 6f 6e 65 20 77 65 20 77 61 ng the one we wa
100f0 6e 74 20 74 6f 20 6d 6f 76 65 0a 20 20 20 2a 20 nt to move. *
10100 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 @param { Boole
10110 61 6e 20 7d 20 69 73 56 69 72 74 75 61 6c 20 2d an } isVirtual -
10120 20 69 73 20 69 74 20 61 20 76 69 72 74 75 61 6c is it a virtual
10130 20 74 61 67 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 tag?. */. fu
10140 6e 63 74 69 6f 6e 20 6d 6f 76 65 28 72 6f 6f 74 nction move(root
10150 2c 20 6e 65 78 74 54 61 67 2c 20 69 73 56 69 72 , nextTag, isVir
10160 74 75 61 6c 29 20 7b 0a 20 20 20 20 69 66 20 28 tual) {. if (
10170 69 73 56 69 72 74 75 61 6c 29 0a 20 20 20 20 20 isVirtual).
10180 20 7b 20 6d 6f 76 65 56 69 72 74 75 61 6c 2e 61 { moveVirtual.a
10190 70 70 6c 79 28 74 68 69 73 2c 20 5b 72 6f 6f 74 pply(this, [root
101a0 2c 20 6e 65 78 74 54 61 67 5d 29 3b 20 7d 0a 20 , nextTag]); }.
101b0 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 7b 20 else. {
101c0 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c safeInsert(root,
101d0 20 74 68 69 73 2e 72 6f 6f 74 2c 20 6e 65 78 74 this.root, next
101e0 54 61 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20 20 7d Tag.root); }. }
101f0 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 49 6e 73 .. /**. * Ins
10200 65 72 74 20 61 6e 64 20 6d 6f 75 6e 74 20 61 20 ert and mount a
10210 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a 20 40 child tag. * @
10220 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 this Tag. * @p
10230 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 aram { HTMLEle
10240 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 64 6f ment } root - do
10250 6d 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 69 6e m node containin
10260 67 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70 20 63 g all the loop c
10270 68 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40 70 61 hildren. * @pa
10280 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 6e 65 ram { Tag } ne
10290 78 74 54 61 67 20 2d 20 69 6e 73 74 61 6e 63 65 xtTag - instance
102a0 20 6f 66 20 74 68 65 20 6e 65 78 74 20 74 61 67 of the next tag
102b0 20 70 72 65 63 65 64 69 6e 67 20 74 68 65 20 6f preceding the o
102c0 6e 65 20 77 65 20 77 61 6e 74 20 74 6f 20 69 6e ne we want to in
102d0 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72 61 6d sert. * @param
102e0 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 69 { Boolean } i
102f0 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20 69 74 sVirtual - is it
10300 20 61 20 76 69 72 74 75 61 6c 20 74 61 67 3f 0a a virtual tag?.
10310 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
10320 20 69 6e 73 65 72 74 28 72 6f 6f 74 2c 20 6e 65 insert(root, ne
10330 78 74 54 61 67 2c 20 69 73 56 69 72 74 75 61 6c xtTag, isVirtual
10340 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 56 69 ) {. if (isVi
10350 72 74 75 61 6c 29 0a 20 20 20 20 20 20 7b 20 6d rtual). { m
10360 61 6b 65 56 69 72 74 75 61 6c 2e 61 70 70 6c 79 akeVirtual.apply
10370 28 74 68 69 73 2c 20 5b 72 6f 6f 74 2c 20 6e 65 (this, [root, ne
10380 78 74 54 61 67 5d 29 3b 20 7d 0a 20 20 20 20 65 xtTag]); }. e
10390 6c 73 65 0a 20 20 20 20 20 20 7b 20 73 61 66 65 lse. { safe
103a0 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 74 68 69 Insert(root, thi
103b0 73 2e 72 6f 6f 74 2c 20 6e 65 78 74 54 61 67 2e s.root, nextTag.
103c0 72 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 root); }. }..
103d0 2f 2a 2a 0a 20 20 20 2a 20 41 70 70 65 6e 64 20 /**. * Append
103e0 61 20 6e 65 77 20 74 61 67 20 69 6e 74 6f 20 74 a new tag into t
103f0 68 65 20 44 4f 4d 0a 20 20 20 2a 20 40 74 68 69 he DOM. * @thi
10400 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 s Tag. * @para
10410 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e m { HTMLElemen
10420 74 20 7d 20 72 6f 6f 74 20 2d 20 64 6f 6d 20 6e t } root - dom n
10430 6f 64 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 ode containing a
10440 6c 6c 20 74 68 65 20 6c 6f 6f 70 20 63 68 69 6c ll the loop chil
10450 64 72 65 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d dren. * @param
10460 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 69 { Boolean } i
10470 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20 69 74 sVirtual - is it
10480 20 61 20 76 69 72 74 75 61 6c 20 74 61 67 3f 0a a virtual tag?.
10490 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
104a0 20 61 70 70 65 6e 64 28 72 6f 6f 74 2c 20 69 73 append(root, is
104b0 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 69 Virtual) {. i
104c0 66 20 28 69 73 56 69 72 74 75 61 6c 29 0a 20 20 f (isVirtual).
104d0 20 20 20 20 7b 20 6d 61 6b 65 56 69 72 74 75 61 { makeVirtua
104e0 6c 2e 63 61 6c 6c 28 74 68 69 73 2c 20 72 6f 6f l.call(this, roo
104f0 74 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 t); }. else.
10500 20 20 20 20 20 7b 20 72 6f 6f 74 2e 61 70 70 65 { root.appe
10510 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 72 6f 6f ndChild(this.roo
10520 74 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a t); }. }.. /**
10530 0a 20 20 20 2a 20 52 65 74 75 72 6e 20 74 68 65 . * Return the
10540 20 76 61 6c 75 65 20 77 65 20 77 61 6e 74 20 74 value we want t
10550 6f 20 75 73 65 20 74 6f 20 6c 6f 6f 6b 75 70 20 o use to lookup
10560 74 68 65 20 70 6f 73 74 69 6f 6e 20 6f 66 20 6f the postion of o
10570 75 72 20 69 74 65 6d 73 20 69 6e 20 74 68 65 20 ur items in the
10580 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 20 2a 20 collection. *
10590 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
105a0 67 20 7d 20 20 6b 65 79 41 74 74 72 20 20 20 20 g } keyAttr
105b0 20 20 20 20 20 2d 20 6c 6f 6f 6b 75 70 20 73 74 - lookup st
105c0 72 69 6e 67 20 6f 72 20 65 78 70 72 65 73 73 69 ring or expressi
105d0 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 on. * @param
105e0 20 7b 20 2a 20 7d 20 20 20 20 20 20 20 6f 72 69 { * } ori
105f0 67 69 6e 61 6c 49 74 65 6d 20 20 20 20 2d 20 6f ginalItem - o
10600 72 69 67 69 6e 61 6c 20 69 74 65 6d 20 66 72 6f riginal item fro
10610 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e m the collection
10620 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
10630 20 4f 62 6a 65 63 74 20 7d 20 20 6b 65 79 65 64 Object } keyed
10640 49 74 65 6d 20 20 20 20 20 20 20 2d 20 6f 62 6a Item - obj
10650 65 63 74 20 63 72 65 61 74 65 64 20 62 79 20 72 ect created by r
10660 69 6f 74 20 76 69 61 20 7b 20 69 74 65 6d 2c 20 iot via { item,
10670 69 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 i in collection
10680 7d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 }. * @param
10690 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 68 61 73 4b { Boolean } hasK
106a0 65 79 41 74 74 72 45 78 70 72 20 20 2d 20 66 6c eyAttrExpr - fl
106b0 61 67 20 74 6f 20 63 68 65 63 6b 20 77 68 65 74 ag to check whet
106c0 68 65 72 20 74 68 65 20 6b 65 79 20 69 73 20 61 her the key is a
106d0 6e 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 n expression.
106e0 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 2a 20 7d * @returns { * }
106f0 20 76 61 6c 75 65 20 74 68 61 74 20 77 65 20 77 value that we w
10700 69 6c 6c 20 75 73 65 20 74 6f 20 66 69 67 75 72 ill use to figur
10710 65 20 6f 75 74 20 74 68 65 20 69 74 65 6d 20 70 e out the item p
10720 6f 73 69 74 69 6f 6e 20 76 69 61 20 63 6f 6c 6c osition via coll
10730 65 63 74 69 6f 6e 2e 69 6e 64 65 78 4f 66 0a 20 ection.indexOf.
10740 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
10750 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41 74 74 getItemId(keyAtt
10760 72 2c 20 6f 72 69 67 69 6e 61 6c 49 74 65 6d 2c r, originalItem,
10770 20 6b 65 79 65 64 49 74 65 6d 2c 20 68 61 73 4b keyedItem, hasK
10780 65 79 41 74 74 72 45 78 70 72 29 20 7b 0a 20 20 eyAttrExpr) {.
10790 20 20 69 66 20 28 6b 65 79 41 74 74 72 29 20 7b if (keyAttr) {
107a0 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 . return ha
107b0 73 4b 65 79 41 74 74 72 45 78 70 72 20 3f 20 20 sKeyAttrExpr ?
107c0 74 6d 70 6c 28 6b 65 79 41 74 74 72 2c 20 6b 65 tmpl(keyAttr, ke
107d0 79 65 64 49 74 65 6d 29 20 3a 20 20 6f 72 69 67 yedItem) : orig
107e0 69 6e 61 6c 49 74 65 6d 5b 6b 65 79 41 74 74 72 inalItem[keyAttr
107f0 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 ]. }.. ret
10800 75 72 6e 20 6f 72 69 67 69 6e 61 6c 49 74 65 6d urn originalItem
10810 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
10820 20 4d 61 6e 61 67 65 20 74 61 67 73 20 68 61 76 Manage tags hav
10830 69 6e 67 20 74 68 65 20 27 65 61 63 68 27 0a 20 ing the 'each'.
10840 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 48 * @param { H
10850 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d TMLElement } dom
10860 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 6e - DOM node we n
10870 65 65 64 20 74 6f 20 6c 6f 6f 70 0a 20 20 20 2a eed to loop. *
10880 20 40 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 @param { Tag
10890 7d 20 70 61 72 65 6e 74 20 2d 20 70 61 72 65 6e } parent - paren
108a0 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 20 77 t tag instance w
108b0 68 65 72 65 20 74 68 65 20 64 6f 6d 20 6e 6f 64 here the dom nod
108c0 65 20 69 73 20 63 6f 6e 74 61 69 6e 65 64 0a 20 e is contained.
108d0 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 * @param { S
108e0 74 72 69 6e 67 20 7d 20 65 78 70 72 20 2d 20 73 tring } expr - s
108f0 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 65 64 20 tring contained
10900 69 6e 20 74 68 65 20 27 65 61 63 68 27 20 61 74 in the 'each' at
10910 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 72 65 tribute. * @re
10920 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d turns { Object }
10930 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 62 6a 65 expression obje
10940 63 74 20 66 6f 72 20 74 68 69 73 20 65 61 63 68 ct for this each
10950 20 6c 6f 6f 70 0a 20 20 20 2a 2f 0a 20 20 66 75 loop. */. fu
10960 6e 63 74 69 6f 6e 20 5f 65 61 63 68 28 64 6f 6d nction _each(dom
10970 2c 20 70 61 72 65 6e 74 2c 20 65 78 70 72 29 20 , parent, expr)
10980 7b 0a 20 20 20 20 76 61 72 20 6d 75 73 74 52 65 {. var mustRe
10990 6f 72 64 65 72 20 3d 20 74 79 70 65 6f 66 20 67 order = typeof g
109a0 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c etAttribute(dom,
109b0 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 LOOP_NO_REORDER
109c0 5f 44 49 52 45 43 54 49 56 45 29 20 21 3d 3d 20 _DIRECTIVE) !==
109d0 54 5f 53 54 52 49 4e 47 20 7c 7c 20 72 65 6d 6f T_STRING || remo
109e0 76 65 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c veAttribute(dom,
109f0 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 LOOP_NO_REORDER
10a00 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 20 20 _DIRECTIVE);.
10a10 20 76 61 72 20 6b 65 79 41 74 74 72 20 3d 20 67 var keyAttr = g
10a20 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c etAttribute(dom,
10a30 20 4b 45 59 5f 44 49 52 45 43 54 49 56 45 29 3b KEY_DIRECTIVE);
10a40 0a 20 20 20 20 76 61 72 20 68 61 73 4b 65 79 41 . var hasKeyA
10a50 74 74 72 45 78 70 72 20 3d 20 6b 65 79 41 74 74 ttrExpr = keyAtt
10a60 72 20 3f 20 74 6d 70 6c 2e 68 61 73 45 78 70 72 r ? tmpl.hasExpr
10a70 28 6b 65 79 41 74 74 72 29 20 3a 20 66 61 6c 73 (keyAttr) : fals
10a80 65 3b 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61 e;. var tagNa
10a90 6d 65 20 3d 20 67 65 74 4e 61 6d 65 28 64 6f 6d me = getName(dom
10aa0 29 3b 0a 20 20 20 20 76 61 72 20 69 6d 70 6c 20 );. var impl
10ab0 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 = __TAG_IMPL[tag
10ac0 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61 72 20 70 Name];. var p
10ad0 61 72 65 6e 74 4e 6f 64 65 20 3d 20 64 6f 6d 2e arentNode = dom.
10ae0 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 20 20 20 parentNode;.
10af0 76 61 72 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 var placeholder
10b00 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 = createDOMPlace
10b10 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20 76 61 holder();. va
10b20 72 20 63 68 69 6c 64 20 3d 20 67 65 74 28 64 6f r child = get(do
10b30 6d 29 3b 0a 20 20 20 20 76 61 72 20 69 66 45 78 m);. var ifEx
10b40 70 72 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 pr = getAttribut
10b50 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f 4e e(dom, CONDITION
10b60 41 4c 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 AL_DIRECTIVE);.
10b70 20 20 20 76 61 72 20 74 61 67 73 20 3d 20 5b 5d var tags = []
10b80 3b 0a 20 20 20 20 76 61 72 20 69 73 4c 6f 6f 70 ;. var isLoop
10b90 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 76 61 72 = true;. var
10ba0 20 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 64 6f 6d innerHTML = dom
10bb0 2e 69 6e 6e 65 72 48 54 4d 4c 3b 0a 20 20 20 20 .innerHTML;.
10bc0 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 var isAnonymous
10bd0 3d 20 21 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 = !__TAG_IMPL[ta
10be0 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61 72 20 gName];. var
10bf0 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f 6d 2e isVirtual = dom.
10c00 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56 49 52 tagName === 'VIR
10c10 54 55 41 4c 27 3b 0a 20 20 20 20 76 61 72 20 6f TUAL';. var o
10c20 6c 64 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a 0a 20 ldItems = [];..
10c30 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 // remove the
10c40 20 65 61 63 68 20 70 72 6f 70 65 72 74 79 20 66 each property f
10c50 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c rom the original
10c60 20 74 61 67 0a 20 20 20 20 72 65 6d 6f 76 65 41 tag. removeA
10c70 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 4c 4f ttribute(dom, LO
10c80 4f 50 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 OP_DIRECTIVE);.
10c90 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 removeAttribu
10ca0 74 65 28 64 6f 6d 2c 20 4b 45 59 5f 44 49 52 45 te(dom, KEY_DIRE
10cb0 43 54 49 56 45 29 3b 0a 0a 20 20 20 20 2f 2f 20 CTIVE);.. //
10cc0 70 61 72 73 65 20 74 68 65 20 65 61 63 68 20 65 parse the each e
10cd0 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 65 78 xpression. ex
10ce0 70 72 20 3d 20 74 6d 70 6c 2e 6c 6f 6f 70 4b 65 pr = tmpl.loopKe
10cf0 79 73 28 65 78 70 72 29 3b 0a 20 20 20 20 65 78 ys(expr);. ex
10d00 70 72 2e 69 73 4c 6f 6f 70 20 3d 20 74 72 75 65 pr.isLoop = true
10d10 3b 0a 0a 20 20 20 20 69 66 20 28 69 66 45 78 70 ;.. if (ifExp
10d20 72 29 20 7b 20 72 65 6d 6f 76 65 41 74 74 72 69 r) { removeAttri
10d30 62 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 bute(dom, CONDIT
10d40 49 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56 45 29 IONAL_DIRECTIVE)
10d50 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e 73 65 ; }.. // inse
10d60 72 74 20 61 20 6d 61 72 6b 65 64 20 77 68 65 72 rt a marked wher
10d70 65 20 74 68 65 20 6c 6f 6f 70 20 74 61 67 73 20 e the loop tags
10d80 77 69 6c 6c 20 62 65 20 69 6e 6a 65 63 74 65 64 will be injected
10d90 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f 64 65 2e . parentNode.
10da0 69 6e 73 65 72 74 42 65 66 6f 72 65 28 70 6c 61 insertBefore(pla
10db0 63 65 68 6f 6c 64 65 72 2c 20 64 6f 6d 29 3b 0a ceholder, dom);.
10dc0 20 20 20 20 70 61 72 65 6e 74 4e 6f 64 65 2e 72 parentNode.r
10dd0 65 6d 6f 76 65 43 68 69 6c 64 28 64 6f 6d 29 3b emoveChild(dom);
10de0 0a 0a 20 20 20 20 65 78 70 72 2e 75 70 64 61 74 .. expr.updat
10df0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 e = function upd
10e00 61 74 65 45 61 63 68 28 29 20 7b 0a 20 20 20 20 ateEach() {.
10e10 20 20 2f 2f 20 67 65 74 20 74 68 65 20 6e 65 77 // get the new
10e20 20 69 74 65 6d 73 20 63 6f 6c 6c 65 63 74 69 6f items collectio
10e30 6e 0a 20 20 20 20 20 20 65 78 70 72 2e 76 61 6c n. expr.val
10e40 75 65 20 3d 20 74 6d 70 6c 28 65 78 70 72 2e 76 ue = tmpl(expr.v
10e50 61 6c 2c 20 70 61 72 65 6e 74 29 3b 0a 0a 20 20 al, parent);..
10e60 20 20 20 20 76 61 72 20 69 74 65 6d 73 20 3d 20 var items =
10e70 65 78 70 72 2e 76 61 6c 75 65 3b 0a 20 20 20 20 expr.value;.
10e80 20 20 76 61 72 20 66 72 61 67 20 3d 20 63 72 65 var frag = cre
10e90 61 74 65 46 72 61 67 6d 65 6e 74 28 29 3b 0a 20 ateFragment();.
10ea0 20 20 20 20 20 76 61 72 20 69 73 4f 62 6a 65 63 var isObjec
10eb0 74 20 3d 20 21 69 73 41 72 72 61 79 28 69 74 65 t = !isArray(ite
10ec0 6d 73 29 20 26 26 20 21 69 73 53 74 72 69 6e 67 ms) && !isString
10ed0 28 69 74 65 6d 73 29 3b 0a 20 20 20 20 20 20 76 (items);. v
10ee0 61 72 20 72 6f 6f 74 20 3d 20 70 6c 61 63 65 68 ar root = placeh
10ef0 6f 6c 64 65 72 2e 70 61 72 65 6e 74 4e 6f 64 65 older.parentNode
10f00 3b 0a 20 20 20 20 20 20 76 61 72 20 74 6d 70 49 ;. var tmpI
10f10 74 65 6d 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 tems = [];.
10f20 20 76 61 72 20 68 61 73 4b 65 79 73 20 3d 20 69 var hasKeys = i
10f30 73 4f 62 6a 65 63 74 20 26 26 20 21 21 69 74 65 sObject && !!ite
10f40 6d 73 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 69 66 ms;.. // if
10f50 20 74 68 69 73 20 44 4f 4d 20 77 61 73 20 72 65 this DOM was re
10f60 6d 6f 76 65 64 20 74 68 65 20 75 70 64 61 74 65 moved the update
10f70 20 68 65 72 65 20 69 73 20 75 73 65 6c 65 73 73 here is useless
10f80 0a 20 20 20 20 20 20 2f 2f 20 74 68 69 73 20 63 . // this c
10f90 6f 6e 64 69 74 69 6f 6e 20 66 69 78 65 73 20 61 ondition fixes a
10fa0 6c 73 6f 20 61 20 77 65 69 72 64 20 61 73 79 6e lso a weird asyn
10fb0 63 20 69 73 73 75 65 20 6f 6e 20 49 45 20 69 6e c issue on IE in
10fc0 20 6f 75 72 20 75 6e 69 74 20 74 65 73 74 0a 20 our unit test.
10fd0 20 20 20 20 20 69 66 20 28 21 72 6f 6f 74 29 20 if (!root)
10fe0 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 { return }..
10ff0 20 20 2f 2f 20 6f 62 6a 65 63 74 20 6c 6f 6f 70 // object loop
11000 2e 20 61 6e 79 20 63 68 61 6e 67 65 73 20 63 61 . any changes ca
11010 75 73 65 20 66 75 6c 6c 20 72 65 64 72 61 77 0a use full redraw.
11020 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65 if (isObje
11030 63 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 74 ct) {. it
11040 65 6d 73 20 3d 20 69 74 65 6d 73 20 3f 20 4f 62 ems = items ? Ob
11050 6a 65 63 74 2e 6b 65 79 73 28 69 74 65 6d 73 29 ject.keys(items)
11060 2e 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 6b .map(function (k
11070 65 79 29 20 7b 20 72 65 74 75 72 6e 20 6d 6b 69 ey) { return mki
11080 74 65 6d 28 65 78 70 72 2c 20 69 74 65 6d 73 5b tem(expr, items[
11090 6b 65 79 5d 2c 20 6b 65 79 29 3b 20 7d 29 20 3a key], key); }) :
110a0 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 [];. }..
110b0 20 20 20 20 2f 2f 20 73 74 6f 72 65 20 74 68 65 // store the
110c0 20 61 6d 6f 75 6e 74 20 6f 66 20 66 69 6c 74 65 amount of filte
110d0 72 65 64 20 69 74 65 6d 73 0a 20 20 20 20 20 20 red items.
110e0 76 61 72 20 66 69 6c 74 65 72 65 64 49 74 65 6d var filteredItem
110f0 73 43 6f 75 6e 74 20 3d 20 30 3b 0a 0a 20 20 20 sCount = 0;..
11100 20 20 20 2f 2f 20 6c 6f 6f 70 20 61 6c 6c 20 74 // loop all t
11110 68 65 20 6e 65 77 20 69 74 65 6d 73 0a 20 20 20 he new items.
11120 20 20 20 65 61 63 68 28 69 74 65 6d 73 2c 20 66 each(items, f
11130 75 6e 63 74 69 6f 6e 20 28 5f 69 74 65 6d 2c 20 unction (_item,
11140 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 20 20 index) {.
11150 20 76 61 72 20 69 20 3d 20 69 6e 64 65 78 20 2d var i = index -
11160 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73 43 6f filteredItemsCo
11170 75 6e 74 3b 0a 20 20 20 20 20 20 20 20 76 61 72 unt;. var
11180 20 69 74 65 6d 20 3d 20 21 68 61 73 4b 65 79 73 item = !hasKeys
11190 20 26 26 20 65 78 70 72 2e 6b 65 79 20 3f 20 6d && expr.key ? m
111a0 6b 69 74 65 6d 28 65 78 70 72 2c 20 5f 69 74 65 kitem(expr, _ite
111b0 6d 2c 20 69 6e 64 65 78 29 20 3a 20 5f 69 74 65 m, index) : _ite
111c0 6d 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 73 m;.. // s
111d0 6b 69 70 20 74 68 69 73 20 69 74 65 6d 20 62 65 kip this item be
111e0 63 61 75 73 65 20 69 74 20 6d 75 73 74 20 62 65 cause it must be
111f0 20 66 69 6c 74 65 72 65 64 0a 20 20 20 20 20 20 filtered.
11200 20 20 69 66 20 28 69 66 45 78 70 72 20 26 26 20 if (ifExpr &&
11210 21 74 6d 70 6c 28 69 66 45 78 70 72 2c 20 65 78 !tmpl(ifExpr, ex
11220 74 65 6e 64 28 63 72 65 61 74 65 28 70 61 72 65 tend(create(pare
11230 6e 74 29 2c 20 69 74 65 6d 29 29 29 20 7b 0a 20 nt), item))) {.
11240 20 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 65 filtere
11250 64 49 74 65 6d 73 43 6f 75 6e 74 20 2b 2b 3b 0a dItemsCount ++;.
11260 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
11270 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 . }..
11280 20 20 20 20 76 61 72 20 69 74 65 6d 49 64 20 3d var itemId =
11290 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41 74 getItemId(keyAt
112a0 74 72 2c 20 5f 69 74 65 6d 2c 20 69 74 65 6d 2c tr, _item, item,
112b0 20 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 29 hasKeyAttrExpr)
112c0 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6f ;. // reo
112d0 72 64 65 72 20 6f 6e 6c 79 20 69 66 20 74 68 65 rder only if the
112e0 20 69 74 65 6d 73 20 61 72 65 20 6e 6f 74 20 6f items are not o
112f0 62 6a 65 63 74 73 0a 20 20 20 20 20 20 20 20 2f bjects. /
11300 2f 20 6f 72 20 61 20 6b 65 79 20 61 74 74 72 69 / or a key attri
11310 62 75 74 65 20 68 61 73 20 62 65 65 6e 20 70 72 bute has been pr
11320 6f 76 69 64 65 64 0a 20 20 20 20 20 20 20 20 76 ovided. v
11330 61 72 20 64 6f 52 65 6f 72 64 65 72 20 3d 20 21 ar doReorder = !
11340 69 73 4f 62 6a 65 63 74 20 26 26 20 6d 75 73 74 isObject && must
11350 52 65 6f 72 64 65 72 20 26 26 20 74 79 70 65 6f Reorder && typeo
11360 66 20 5f 69 74 65 6d 20 3d 3d 3d 20 54 5f 4f 42 f _item === T_OB
11370 4a 45 43 54 20 7c 7c 20 6b 65 79 41 74 74 72 3b JECT || keyAttr;
11380 0a 20 20 20 20 20 20 20 20 76 61 72 20 6f 6c 64 . var old
11390 50 6f 73 20 3d 20 6f 6c 64 49 74 65 6d 73 2e 69 Pos = oldItems.i
113a0 6e 64 65 78 4f 66 28 69 74 65 6d 49 64 29 3b 0a ndexOf(itemId);.
113b0 20 20 20 20 20 20 20 20 76 61 72 20 69 73 4e 65 var isNe
113c0 77 20 3d 20 6f 6c 64 50 6f 73 20 3d 3d 3d 20 2d w = oldPos === -
113d0 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 70 1;. var p
113e0 6f 73 20 3d 20 21 69 73 4e 65 77 20 26 26 20 64 os = !isNew && d
113f0 6f 52 65 6f 72 64 65 72 20 3f 20 6f 6c 64 50 6f oReorder ? oldPo
11400 73 20 3a 20 69 3b 0a 20 20 20 20 20 20 20 20 2f s : i;. /
11410 2f 20 64 6f 65 73 20 61 20 74 61 67 20 65 78 69 / does a tag exi
11420 73 74 20 69 6e 20 74 68 69 73 20 70 6f 73 69 74 st in this posit
11430 69 6f 6e 3f 0a 20 20 20 20 20 20 20 20 76 61 72 ion?. var
11440 20 74 61 67 20 3d 20 74 61 67 73 5b 70 6f 73 5d tag = tags[pos]
11450 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 75 ;. var mu
11460 73 74 41 70 70 65 6e 64 20 3d 20 69 20 3e 3d 20 stAppend = i >=
11470 6f 6c 64 49 74 65 6d 73 2e 6c 65 6e 67 74 68 3b oldItems.length;
11480 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 75 73 . var mus
11490 74 43 72 65 61 74 65 20 3d 20 64 6f 52 65 6f 72 tCreate = doReor
114a0 64 65 72 20 26 26 20 69 73 4e 65 77 20 7c 7c 20 der && isNew ||
114b0 21 64 6f 52 65 6f 72 64 65 72 20 26 26 20 21 74 !doReorder && !t
114c0 61 67 20 7c 7c 20 21 74 61 67 73 5b 69 5d 3b 0a ag || !tags[i];.
114d0 0a 20 20 20 20 20 20 20 20 2f 2f 20 6e 65 77 20 . // new
114e0 74 61 67 0a 20 20 20 20 20 20 20 20 69 66 20 28 tag. if (
114f0 6d 75 73 74 43 72 65 61 74 65 29 20 7b 0a 20 20 mustCreate) {.
11500 20 20 20 20 20 20 20 20 74 61 67 20 3d 20 63 72 tag = cr
11510 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20 7b 0a eateTag(impl, {.
11520 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 pare
11530 6e 74 3a 20 70 61 72 65 6e 74 2c 0a 20 20 20 20 nt: parent,.
11540 20 20 20 20 20 20 20 20 69 73 4c 6f 6f 70 3a 20 isLoop:
11550 69 73 4c 6f 6f 70 2c 0a 20 20 20 20 20 20 20 20 isLoop,.
11560 20 20 20 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 3a isAnonymous:
11570 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20 isAnonymous,.
11580 20 20 20 20 20 20 20 20 20 20 74 61 67 4e 61 6d tagNam
11590 65 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 e: tagName,.
115a0 20 20 20 20 20 20 20 20 72 6f 6f 74 3a 20 64 6f root: do
115b0 6d 2e 63 6c 6f 6e 65 4e 6f 64 65 28 69 73 41 6e m.cloneNode(isAn
115c0 6f 6e 79 6d 6f 75 73 29 2c 0a 20 20 20 20 20 20 onymous),.
115d0 20 20 20 20 20 20 69 74 65 6d 3a 20 69 74 65 6d item: item
115e0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ,. in
115f0 64 65 78 3a 20 69 2c 0a 20 20 20 20 20 20 20 20 dex: i,.
11600 20 20 7d 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 3b }, innerHTML);
11610 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d .. // m
11620 6f 75 6e 74 20 74 68 65 20 74 61 67 0a 20 20 20 ount the tag.
11630 20 20 20 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74 tag.mount
11640 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 ();.. i
11650 66 20 28 6d 75 73 74 41 70 70 65 6e 64 29 0a 20 f (mustAppend).
11660 20 20 20 20 20 20 20 20 20 20 20 7b 20 61 70 70 { app
11670 65 6e 64 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b end.apply(tag, [
11680 66 72 61 67 20 7c 7c 20 72 6f 6f 74 2c 20 69 73 frag || root, is
11690 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 20 20 20 Virtual]); }.
116a0 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 else.
116b0 20 20 20 20 20 20 20 20 7b 20 69 6e 73 65 72 74 { insert
116c0 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b 72 6f 6f .apply(tag, [roo
116d0 74 2c 20 74 61 67 73 5b 69 5d 2c 20 69 73 56 69 t, tags[i], isVi
116e0 72 74 75 61 6c 5d 29 3b 20 7d 0a 0a 20 20 20 20 rtual]); }..
116f0 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 74 41 if (!mustA
11700 70 70 65 6e 64 29 20 7b 20 6f 6c 64 49 74 65 6d ppend) { oldItem
11710 73 2e 73 70 6c 69 63 65 28 69 2c 20 30 2c 20 69 s.splice(i, 0, i
11720 74 65 6d 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 tem); }.
11730 20 20 74 61 67 73 2e 73 70 6c 69 63 65 28 69 2c tags.splice(i,
11740 20 30 2c 20 74 61 67 29 3b 0a 20 20 20 20 20 20 0, tag);.
11750 20 20 20 20 69 66 20 28 63 68 69 6c 64 29 20 7b if (child) {
11760 20 61 72 72 61 79 69 73 68 41 64 64 28 70 61 72 arrayishAdd(par
11770 65 6e 74 2e 74 61 67 73 2c 20 74 61 67 4e 61 6d ent.tags, tagNam
11780 65 2c 20 74 61 67 2c 20 74 72 75 65 29 3b 20 7d e, tag, true); }
11790 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
117a0 69 66 20 28 70 6f 73 20 21 3d 3d 20 69 20 26 26 if (pos !== i &&
117b0 20 64 6f 52 65 6f 72 64 65 72 29 20 7b 0a 20 20 doReorder) {.
117c0 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76 65 0a // move.
117d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 if (ke
117e0 79 41 74 74 72 20 7c 7c 20 63 6f 6e 74 61 69 6e yAttr || contain
117f0 73 28 69 74 65 6d 73 2c 20 6f 6c 64 49 74 65 6d s(items, oldItem
11800 73 5b 70 6f 73 5d 29 29 20 7b 0a 20 20 20 20 20 s[pos])) {.
11810 20 20 20 20 20 20 20 6d 6f 76 65 2e 61 70 70 6c move.appl
11820 79 28 74 61 67 2c 20 5b 72 6f 6f 74 2c 20 74 61 y(tag, [root, ta
11830 67 73 5b 69 5d 2c 20 69 73 56 69 72 74 75 61 6c gs[i], isVirtual
11840 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ]);.
11850 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20 // move the old
11860 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 tag instance.
11870 20 20 20 20 20 20 20 20 20 74 61 67 73 2e 73 70 tags.sp
11880 6c 69 63 65 28 69 2c 20 30 2c 20 74 61 67 73 2e lice(i, 0, tags.
11890 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 5b 30 splice(pos, 1)[0
118a0 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ]);.
118b0 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20 // move the old
118c0 69 74 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 item.
118d0 20 6f 6c 64 49 74 65 6d 73 2e 73 70 6c 69 63 65 oldItems.splice
118e0 28 69 2c 20 30 2c 20 6f 6c 64 49 74 65 6d 73 2e (i, 0, oldItems.
118f0 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 5b 30 splice(pos, 1)[0
11900 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a ]);. }.
11910 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75 70 . // up
11920 64 61 74 65 20 74 68 65 20 70 6f 73 69 74 69 6f date the positio
11930 6e 20 61 74 74 72 69 62 75 74 65 20 69 66 20 69 n attribute if i
11940 74 20 65 78 69 73 74 73 0a 20 20 20 20 20 20 20 t exists.
11950 20 20 20 69 66 20 28 65 78 70 72 2e 70 6f 73 29 if (expr.pos)
11960 20 7b 20 74 61 67 5b 65 78 70 72 2e 70 6f 73 5d { tag[expr.pos]
11970 20 3d 20 69 3b 20 7d 0a 0a 20 20 20 20 20 20 20 = i; }..
11980 20 20 20 2f 2f 20 69 66 20 74 68 65 20 6c 6f 6f // if the loo
11990 70 20 74 61 67 73 20 61 72 65 20 6e 6f 74 20 63 p tags are not c
119a0 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 ustom.
119b0 2f 2f 20 77 65 20 6e 65 65 64 20 74 6f 20 6d 6f // we need to mo
119c0 76 65 20 61 6c 6c 20 74 68 65 69 72 20 63 75 73 ve all their cus
119d0 74 6f 6d 20 74 61 67 73 20 69 6e 74 6f 20 74 68 tom tags into th
119e0 65 20 72 69 67 68 74 20 70 6f 73 69 74 69 6f 6e e right position
119f0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 . if (!
11a00 63 68 69 6c 64 20 26 26 20 74 61 67 2e 74 61 67 child && tag.tag
11a10 73 29 20 7b 20 6d 6f 76 65 4e 65 73 74 65 64 54 s) { moveNestedT
11a20 61 67 73 2e 63 61 6c 6c 28 74 61 67 2c 20 69 29 ags.call(tag, i)
11a30 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 ; }. }..
11a40 20 20 20 20 20 20 20 2f 2f 20 63 61 63 68 65 20 // cache
11a50 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 the original ite
11a60 6d 20 74 6f 20 75 73 65 20 69 74 20 69 6e 20 74 m to use it in t
11a70 68 65 20 65 76 65 6e 74 73 20 62 6f 75 6e 64 20 he events bound
11a80 74 6f 20 74 68 69 73 20 6e 6f 64 65 0a 20 20 20 to this node.
11a90 20 20 20 20 20 2f 2f 20 61 6e 64 20 69 74 73 20 // and its
11aa0 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 20 20 20 children.
11ab0 20 65 78 74 65 6e 64 28 74 61 67 2e 5f 5f 2c 20 extend(tag.__,
11ac0 7b 0a 20 20 20 20 20 20 20 20 20 20 69 74 65 6d {. item
11ad0 3a 20 69 74 65 6d 2c 0a 20 20 20 20 20 20 20 20 : item,.
11ae0 20 20 69 6e 64 65 78 3a 20 69 2c 0a 20 20 20 20 index: i,.
11af0 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70 61 parent: pa
11b00 72 65 6e 74 0a 20 20 20 20 20 20 20 20 7d 29 3b rent. });
11b10 0a 0a 20 20 20 20 20 20 20 20 74 6d 70 49 74 65 .. tmpIte
11b20 6d 73 5b 69 5d 20 3d 20 69 74 65 6d 49 64 3b 0a ms[i] = itemId;.
11b30 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 75 . if (!mu
11b40 73 74 43 72 65 61 74 65 29 20 7b 20 74 61 67 2e stCreate) { tag.
11b50 75 70 64 61 74 65 28 69 74 65 6d 29 3b 20 7d 0a update(item); }.
11b60 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 });..
11b70 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 20 72 // remove the r
11b80 65 64 75 6e 64 61 6e 74 20 74 61 67 73 0a 20 20 edundant tags.
11b90 20 20 20 20 75 6e 6d 6f 75 6e 74 52 65 64 75 6e unmountRedun
11ba0 64 61 6e 74 28 69 74 65 6d 73 2c 20 74 61 67 73 dant(items, tags
11bb0 2c 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73 43 , filteredItemsC
11bc0 6f 75 6e 74 29 3b 0a 0a 20 20 20 20 20 20 2f 2f ount);.. //
11bd0 20 63 6c 6f 6e 65 20 74 68 65 20 69 74 65 6d 73 clone the items
11be0 20 61 72 72 61 79 0a 20 20 20 20 20 20 6f 6c 64 array. old
11bf0 49 74 65 6d 73 20 3d 20 74 6d 70 49 74 65 6d 73 Items = tmpItems
11c00 2e 73 6c 69 63 65 28 29 3b 0a 0a 20 20 20 20 20 .slice();..
11c10 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 6f root.insertBefo
11c20 72 65 28 66 72 61 67 2c 20 70 6c 61 63 65 68 6f re(frag, placeho
11c30 6c 64 65 72 29 3b 0a 20 20 20 20 7d 3b 0a 0a 20 lder);. };..
11c40 20 20 20 65 78 70 72 2e 75 6e 6d 6f 75 6e 74 20 expr.unmount
11c50 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
11c60 20 20 20 20 20 20 65 61 63 68 28 74 61 67 73 2c each(tags,
11c70 20 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20 function (t) {
11c80 74 2e 75 6e 6d 6f 75 6e 74 28 29 3b 20 7d 29 3b t.unmount(); });
11c90 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72 65 74 . };.. ret
11ca0 75 72 6e 20 65 78 70 72 0a 20 20 7d 0a 0a 20 20 urn expr. }..
11cb0 76 61 72 20 52 65 66 45 78 70 72 20 3d 20 7b 0a var RefExpr = {.
11cc0 20 20 20 20 69 6e 69 74 3a 20 66 75 6e 63 74 69 init: functi
11cd0 6f 6e 20 69 6e 69 74 28 64 6f 6d 2c 20 70 61 72 on init(dom, par
11ce0 65 6e 74 2c 20 61 74 74 72 4e 61 6d 65 2c 20 61 ent, attrName, a
11cf0 74 74 72 56 61 6c 75 65 29 20 7b 0a 20 20 20 20 ttrValue) {.
11d00 20 20 74 68 69 73 2e 64 6f 6d 20 3d 20 64 6f 6d this.dom = dom
11d10 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 61 74 74 ;. this.att
11d20 72 20 3d 20 61 74 74 72 4e 61 6d 65 3b 0a 20 20 r = attrName;.
11d30 20 20 20 20 74 68 69 73 2e 72 61 77 56 61 6c 75 this.rawValu
11d40 65 20 3d 20 61 74 74 72 56 61 6c 75 65 3b 0a 20 e = attrValue;.
11d50 20 20 20 20 20 74 68 69 73 2e 70 61 72 65 6e 74 this.parent
11d60 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 = parent;.
11d70 20 74 68 69 73 2e 68 61 73 45 78 70 20 3d 20 74 this.hasExp = t
11d80 6d 70 6c 2e 68 61 73 45 78 70 72 28 61 74 74 72 mpl.hasExpr(attr
11d90 56 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 72 65 Value);. re
11da0 74 75 72 6e 20 74 68 69 73 0a 20 20 20 20 7d 2c turn this. },
11db0 0a 20 20 20 20 75 70 64 61 74 65 3a 20 66 75 6e . update: fun
11dc0 63 74 69 6f 6e 20 75 70 64 61 74 65 28 29 20 7b ction update() {
11dd0 0a 20 20 20 20 20 20 76 61 72 20 6f 6c 64 20 3d . var old =
11de0 20 74 68 69 73 2e 76 61 6c 75 65 3b 0a 20 20 20 this.value;.
11df0 20 20 20 76 61 72 20 63 75 73 74 6f 6d 50 61 72 var customPar
11e00 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 65 6e ent = this.paren
11e10 74 20 26 26 20 67 65 74 49 6d 6d 65 64 69 61 74 t && getImmediat
11e20 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 68 eCustomParent(th
11e30 69 73 2e 70 61 72 65 6e 74 29 3b 0a 20 20 20 20 is.parent);.
11e40 20 20 2f 2f 20 69 66 20 74 68 65 20 72 65 66 65 // if the refe
11e50 72 65 6e 63 65 64 20 65 6c 65 6d 65 6e 74 20 69 renced element i
11e60 73 20 61 20 63 75 73 74 6f 6d 20 74 61 67 2c 20 s a custom tag,
11e70 74 68 65 6e 20 77 65 20 73 65 74 20 74 68 65 20 then we set the
11e80 74 61 67 20 69 74 73 65 6c 66 2c 20 72 61 74 68 tag itself, rath
11e90 65 72 20 74 68 61 6e 20 44 4f 4d 0a 20 20 20 20 er than DOM.
11ea0 20 20 76 61 72 20 74 61 67 4f 72 44 6f 6d 20 3d var tagOrDom =
11eb0 20 74 68 69 73 2e 64 6f 6d 2e 5f 5f 72 65 66 20 this.dom.__ref
11ec0 7c 7c 20 74 68 69 73 2e 74 61 67 20 7c 7c 20 74 || this.tag || t
11ed0 68 69 73 2e 64 6f 6d 3b 0a 0a 20 20 20 20 20 20 his.dom;..
11ee0 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74 68 69 this.value = thi
11ef0 73 2e 68 61 73 45 78 70 20 3f 20 74 6d 70 6c 28 s.hasExp ? tmpl(
11f00 74 68 69 73 2e 72 61 77 56 61 6c 75 65 2c 20 74 this.rawValue, t
11f10 68 69 73 2e 70 61 72 65 6e 74 29 20 3a 20 74 68 his.parent) : th
11f20 69 73 2e 72 61 77 56 61 6c 75 65 3b 0a 0a 20 20 is.rawValue;..
11f30 20 20 20 20 2f 2f 20 74 68 65 20 6e 61 6d 65 20 // the name
11f40 63 68 61 6e 67 65 64 2c 20 73 6f 20 77 65 20 6e changed, so we n
11f50 65 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 69 74 eed to remove it
11f60 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20 6b 65 from the old ke
11f70 79 20 28 69 66 20 70 72 65 73 65 6e 74 29 0a 20 y (if present).
11f80 20 20 20 20 20 69 66 20 28 21 69 73 42 6c 61 6e if (!isBlan
11f90 6b 28 6f 6c 64 29 20 26 26 20 63 75 73 74 6f 6d k(old) && custom
11fa0 50 61 72 65 6e 74 29 20 7b 20 61 72 72 61 79 69 Parent) { arrayi
11fb0 73 68 52 65 6d 6f 76 65 28 63 75 73 74 6f 6d 50 shRemove(customP
11fc0 61 72 65 6e 74 2e 72 65 66 73 2c 20 6f 6c 64 2c arent.refs, old,
11fd0 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d 0a 20 20 tagOrDom); }.
11fe0 20 20 20 20 69 66 20 28 21 69 73 42 6c 61 6e 6b if (!isBlank
11ff0 28 74 68 69 73 2e 76 61 6c 75 65 29 20 26 26 20 (this.value) &&
12000 69 73 53 74 72 69 6e 67 28 74 68 69 73 2e 76 61 isString(this.va
12010 6c 75 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 lue)) {.
12020 2f 2f 20 61 64 64 20 69 74 20 74 6f 20 74 68 65 // add it to the
12030 20 72 65 66 73 20 6f 66 20 70 61 72 65 6e 74 20 refs of parent
12040 74 61 67 20 28 74 68 69 73 20 62 65 68 61 76 69 tag (this behavi
12050 6f 72 20 77 61 73 20 63 68 61 6e 67 65 64 20 3e or was changed >
12060 3d 33 2e 30 29 0a 20 20 20 20 20 20 20 20 69 66 =3.0). if
12070 20 28 63 75 73 74 6f 6d 50 61 72 65 6e 74 29 20 (customParent)
12080 7b 20 61 72 72 61 79 69 73 68 41 64 64 28 0a 20 { arrayishAdd(.
12090 20 20 20 20 20 20 20 20 20 63 75 73 74 6f 6d 50 customP
120a0 61 72 65 6e 74 2e 72 65 66 73 2c 0a 20 20 20 20 arent.refs,.
120b0 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 this.value
120c0 2c 0a 20 20 20 20 20 20 20 20 20 20 74 61 67 4f ,. tagO
120d0 72 44 6f 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 rDom,.
120e0 2f 2f 20 75 73 65 20 61 6e 20 61 72 72 61 79 20 // use an array
120f0 69 66 20 69 74 27 73 20 61 20 6c 6f 6f 70 65 64 if it's a looped
12100 20 6e 6f 64 65 20 61 6e 64 20 74 68 65 20 72 65 node and the re
12110 66 20 69 73 20 6e 6f 74 20 61 6e 20 65 78 70 72 f is not an expr
12120 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 ession.
12130 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 20 null,.
12140 20 74 68 69 73 2e 70 61 72 65 6e 74 2e 5f 5f 2e this.parent.__.
12150 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 29 3b index. );
12160 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 }.. if (
12170 74 68 69 73 2e 76 61 6c 75 65 20 21 3d 3d 20 6f this.value !== o
12180 6c 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ld) {.
12190 73 65 74 41 74 74 72 69 62 75 74 65 28 74 68 69 setAttribute(thi
121a0 73 2e 64 6f 6d 2c 20 74 68 69 73 2e 61 74 74 72 s.dom, this.attr
121b0 2c 20 74 68 69 73 2e 76 61 6c 75 65 29 3b 0a 20 , this.value);.
121c0 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d }. }
121d0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
121e0 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65 28 removeAttribute(
121f0 74 68 69 73 2e 64 6f 6d 2c 20 74 68 69 73 2e 61 this.dom, this.a
12200 74 74 72 29 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 ttr);. }..
12210 20 20 20 20 20 2f 2f 20 63 61 63 68 65 20 74 68 // cache th
12220 65 20 72 65 66 20 62 6f 75 6e 64 20 74 6f 20 74 e ref bound to t
12230 68 69 73 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 his dom node.
12240 20 20 20 2f 2f 20 74 6f 20 72 65 75 73 65 20 69 // to reuse i
12250 74 20 69 6e 20 66 75 74 75 72 65 20 28 73 65 65 t in future (see
12260 20 61 6c 73 6f 20 23 32 33 32 39 29 0a 20 20 20 also #2329).
12270 20 20 20 69 66 20 28 21 74 68 69 73 2e 64 6f 6d if (!this.dom
12280 2e 5f 5f 72 65 66 29 20 7b 20 74 68 69 73 2e 64 .__ref) { this.d
12290 6f 6d 2e 5f 5f 72 65 66 20 3d 20 74 61 67 4f 72 om.__ref = tagOr
122a0 44 6f 6d 3b 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 Dom; }. },.
122b0 20 20 75 6e 6d 6f 75 6e 74 3a 20 66 75 6e 63 74 unmount: funct
122c0 69 6f 6e 20 75 6e 6d 6f 75 6e 74 28 29 20 7b 0a ion unmount() {.
122d0 20 20 20 20 20 20 76 61 72 20 74 61 67 4f 72 44 var tagOrD
122e0 6f 6d 20 3d 20 74 68 69 73 2e 74 61 67 20 7c 7c om = this.tag ||
122f0 20 74 68 69 73 2e 64 6f 6d 3b 0a 20 20 20 20 20 this.dom;.
12300 20 76 61 72 20 63 75 73 74 6f 6d 50 61 72 65 6e var customParen
12310 74 20 3d 20 74 68 69 73 2e 70 61 72 65 6e 74 20 t = this.parent
12320 26 26 20 67 65 74 49 6d 6d 65 64 69 61 74 65 43 && getImmediateC
12330 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 68 69 73 ustomParent(this
12340 2e 70 61 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 .parent);.
12350 69 66 20 28 21 69 73 42 6c 61 6e 6b 28 74 68 69 if (!isBlank(thi
12360 73 2e 76 61 6c 75 65 29 20 26 26 20 63 75 73 74 s.value) && cust
12370 6f 6d 50 61 72 65 6e 74 29 0a 20 20 20 20 20 20 omParent).
12380 20 20 7b 20 61 72 72 61 79 69 73 68 52 65 6d 6f { arrayishRemo
12390 76 65 28 63 75 73 74 6f 6d 50 61 72 65 6e 74 2e ve(customParent.
123a0 72 65 66 73 2c 20 74 68 69 73 2e 76 61 6c 75 65 refs, this.value
123b0 2c 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d 0a 20 , tagOrDom); }.
123c0 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a }. };.. /**
123d0 0a 20 20 20 2a 20 43 72 65 61 74 65 20 61 20 6e . * Create a n
123e0 65 77 20 72 65 66 20 64 69 72 65 63 74 69 76 65 ew ref directive
123f0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
12400 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 HTMLElement } d
12410 6f 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 68 61 om - dom node ha
12420 76 69 6e 67 20 74 68 65 20 72 65 66 20 61 74 74 ving the ref att
12430 72 69 62 75 74 65 0a 20 20 20 2a 20 40 70 61 72 ribute. * @par
12440 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 63 6f 6e am { Tag } con
12450 74 65 78 74 20 2d 20 74 61 67 20 69 6e 73 74 61 text - tag insta
12460 6e 63 65 20 77 68 65 72 65 20 74 68 65 20 44 4f nce where the DO
12470 4d 20 6e 6f 64 65 20 69 73 20 6c 6f 63 61 74 65 M node is locate
12480 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 d. * @param
12490 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 72 4e { String } attrN
124a0 61 6d 65 20 2d 20 65 69 74 68 65 72 20 27 72 65 ame - either 're
124b0 66 27 20 6f 72 20 27 64 61 74 61 2d 72 65 66 27 f' or 'data-ref'
124c0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
124d0 20 53 74 72 69 6e 67 20 7d 20 61 74 74 72 56 61 String } attrVa
124e0 6c 75 65 20 2d 20 76 61 6c 75 65 20 6f 66 20 74 lue - value of t
124f0 68 65 20 72 65 66 20 61 74 74 72 69 62 75 74 65 he ref attribute
12500 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
12510 20 52 65 66 45 78 70 72 20 7d 20 61 20 6e 65 77 RefExpr } a new
12520 20 52 65 66 45 78 70 72 20 6f 62 6a 65 63 74 0a RefExpr object.
12530 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
12540 20 63 72 65 61 74 65 52 65 66 44 69 72 65 63 74 createRefDirect
12550 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74 ive(dom, tag, at
12560 74 72 4e 61 6d 65 2c 20 61 74 74 72 56 61 6c 75 trName, attrValu
12570 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 e) {. return
12580 63 72 65 61 74 65 28 52 65 66 45 78 70 72 29 2e create(RefExpr).
12590 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c 20 61 init(dom, tag, a
125a0 74 74 72 4e 61 6d 65 2c 20 61 74 74 72 56 61 6c ttrName, attrVal
125b0 75 65 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 ue). }.. /**.
125c0 20 20 2a 20 54 72 69 67 67 65 72 20 74 68 65 20 * Trigger the
125d0 75 6e 6d 6f 75 6e 74 20 6d 65 74 68 6f 64 20 6f unmount method o
125e0 6e 20 61 6c 6c 20 74 68 65 20 65 78 70 72 65 73 n all the expres
125f0 73 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 sions. * @para
12600 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 65 78 m { Array } ex
12610 70 72 65 73 73 69 6f 6e 73 20 2d 20 44 4f 4d 20 pressions - DOM
12620 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 2a expressions. *
12630 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d /. function unm
12640 6f 75 6e 74 41 6c 6c 28 65 78 70 72 65 73 73 69 ountAll(expressi
12650 6f 6e 73 29 20 7b 0a 20 20 20 20 65 61 63 68 28 ons) {. each(
12660 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 66 75 6e expressions, fun
12670 63 74 69 6f 6e 20 28 65 78 70 72 29 20 7b 0a 20 ction (expr) {.
12680 20 20 20 20 20 69 66 20 28 65 78 70 72 2e 75 6e if (expr.un
12690 6d 6f 75 6e 74 29 20 7b 20 65 78 70 72 2e 75 6e mount) { expr.un
126a0 6d 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d 0a 20 mount(true); }.
126b0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 65 78 else if (ex
126c0 70 72 2e 74 61 67 4e 61 6d 65 29 20 7b 20 65 78 pr.tagName) { ex
126d0 70 72 2e 74 61 67 2e 75 6e 6d 6f 75 6e 74 28 74 pr.tag.unmount(t
126e0 72 75 65 29 3b 20 7d 0a 20 20 20 20 20 20 65 6c rue); }. el
126f0 73 65 20 69 66 20 28 65 78 70 72 2e 75 6e 6d 6f se if (expr.unmo
12700 75 6e 74 29 20 7b 20 65 78 70 72 2e 75 6e 6d 6f unt) { expr.unmo
12710 75 6e 74 28 29 3b 20 7d 0a 20 20 20 20 7d 29 3b unt(); }. });
12720 0a 20 20 7d 0a 0a 20 20 76 61 72 20 49 66 45 78 . }.. var IfEx
12730 70 72 20 3d 20 7b 0a 20 20 20 20 69 6e 69 74 3a pr = {. init:
12740 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 28 64 function init(d
12750 6f 6d 2c 20 74 61 67 2c 20 65 78 70 72 29 20 7b om, tag, expr) {
12760 0a 20 20 20 20 20 20 72 65 6d 6f 76 65 41 74 74 . removeAtt
12770 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 ribute(dom, COND
12780 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56 ITIONAL_DIRECTIV
12790 45 29 3b 0a 20 20 20 20 20 20 65 78 74 65 6e 64 E);. extend
127a0 28 74 68 69 73 2c 20 7b 20 74 61 67 3a 20 74 61 (this, { tag: ta
127b0 67 2c 20 65 78 70 72 3a 20 65 78 70 72 2c 20 73 g, expr: expr, s
127c0 74 75 62 3a 20 63 72 65 61 74 65 44 4f 4d 50 6c tub: createDOMPl
127d0 61 63 65 68 6f 6c 64 65 72 28 29 2c 20 70 72 69 aceholder(), pri
127e0 73 74 69 6e 65 3a 20 64 6f 6d 20 7d 29 3b 0a 20 stine: dom });.
127f0 20 20 20 20 20 76 61 72 20 70 20 3d 20 64 6f 6d var p = dom
12800 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 20 20 .parentNode;.
12810 20 20 20 70 2e 69 6e 73 65 72 74 42 65 66 6f 72 p.insertBefor
12820 65 28 74 68 69 73 2e 73 74 75 62 2c 20 64 6f 6d e(this.stub, dom
12830 29 3b 0a 20 20 20 20 20 20 70 2e 72 65 6d 6f 76 );. p.remov
12840 65 43 68 69 6c 64 28 64 6f 6d 29 3b 0a 0a 20 20 eChild(dom);..
12850 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 0a return this.
12860 20 20 20 20 7d 2c 0a 20 20 20 20 75 70 64 61 74 },. updat
12870 65 3a 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61 e: function upda
12880 74 65 24 24 31 28 29 20 7b 0a 20 20 20 20 20 20 te$$1() {.
12890 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74 6d 70 this.value = tmp
128a0 6c 28 74 68 69 73 2e 65 78 70 72 2c 20 74 68 69 l(this.expr, thi
128b0 73 2e 74 61 67 29 3b 0a 0a 20 20 20 20 20 20 69 s.tag);.. i
128c0 66 20 28 21 74 68 69 73 2e 73 74 75 62 2e 70 61 f (!this.stub.pa
128d0 72 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65 74 75 rentNode) { retu
128e0 72 6e 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 rn }.. if (
128f0 74 68 69 73 2e 76 61 6c 75 65 20 26 26 20 21 74 this.value && !t
12900 68 69 73 2e 63 75 72 72 65 6e 74 29 20 7b 20 2f his.current) { /
12910 2f 20 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 / insert.
12920 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20 3d 20 this.current =
12930 74 68 69 73 2e 70 72 69 73 74 69 6e 65 2e 63 6c this.pristine.cl
12940 6f 6e 65 4e 6f 64 65 28 74 72 75 65 29 3b 0a 20 oneNode(true);.
12950 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 75 62 this.stub
12960 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e 73 65 .parentNode.inse
12970 72 74 42 65 66 6f 72 65 28 74 68 69 73 2e 63 75 rtBefore(this.cu
12980 72 72 65 6e 74 2c 20 74 68 69 73 2e 73 74 75 62 rrent, this.stub
12990 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e );. this.
129a0 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 70 61 expressions = pa
129b0 72 73 65 45 78 70 72 65 73 73 69 6f 6e 73 2e 61 rseExpressions.a
129c0 70 70 6c 79 28 74 68 69 73 2e 74 61 67 2c 20 5b pply(this.tag, [
129d0 74 68 69 73 2e 63 75 72 72 65 6e 74 2c 20 74 72 this.current, tr
129e0 75 65 5d 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c ue]);. } el
129f0 73 65 20 69 66 20 28 21 74 68 69 73 2e 76 61 6c se if (!this.val
12a00 75 65 20 26 26 20 74 68 69 73 2e 63 75 72 72 65 ue && this.curre
12a10 6e 74 29 20 7b 20 2f 2f 20 72 65 6d 6f 76 65 0a nt) { // remove.
12a20 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 6e 6d this.unm
12a30 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 20 20 20 ount();.
12a40 74 68 69 73 2e 63 75 72 72 65 6e 74 20 3d 20 6e this.current = n
12a50 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74 68 69 ull;. thi
12a60 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 s.expressions =
12a70 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 [];. }..
12a80 20 20 20 69 66 20 28 74 68 69 73 2e 76 61 6c 75 if (this.valu
12a90 65 29 20 7b 20 75 70 64 61 74 65 2e 63 61 6c 6c e) { update.call
12aa0 28 74 68 69 73 2e 74 61 67 2c 20 74 68 69 73 2e (this.tag, this.
12ab0 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 20 7d 0a expressions); }.
12ac0 20 20 20 20 7d 2c 0a 20 20 20 20 75 6e 6d 6f 75 },. unmou
12ad0 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d nt: function unm
12ae0 6f 75 6e 74 28 29 20 7b 0a 20 20 20 20 20 20 69 ount() {. i
12af0 66 20 28 74 68 69 73 2e 63 75 72 72 65 6e 74 29 f (this.current)
12b00 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 {. if (t
12b10 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 61 67 his.current._tag
12b20 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 74 68 ) {. th
12b30 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 61 67 2e is.current._tag.
12b40 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 unmount();.
12b50 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 } else if (th
12b60 69 73 2e 63 75 72 72 65 6e 74 2e 70 61 72 65 6e is.current.paren
12b70 74 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 tNode) {.
12b80 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 2e this.current.
12b90 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d 6f 76 parentNode.remov
12ba0 65 43 68 69 6c 64 28 74 68 69 73 2e 63 75 72 72 eChild(this.curr
12bb0 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a ent);. }.
12bc0 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 75 }.. u
12bd0 6e 6d 6f 75 6e 74 41 6c 6c 28 74 68 69 73 2e 65 nmountAll(this.e
12be0 78 70 72 65 73 73 69 6f 6e 73 20 7c 7c 20 5b 5d xpressions || []
12bf0 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 );. }. };..
12c00 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 /**. * Create
12c10 20 61 20 6e 65 77 20 69 66 20 64 69 72 65 63 74 a new if direct
12c20 69 76 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ive. * @param
12c30 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 { HTMLElement
12c40 7d 20 64 6f 6d 20 2d 20 69 66 20 72 6f 6f 74 20 } dom - if root
12c50 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 dom node. * @p
12c60 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 63 aram { Tag } c
12c70 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69 6e 73 ontext - tag ins
12c80 74 61 6e 63 65 20 77 68 65 72 65 20 74 68 65 20 tance where the
12c90 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f 63 61 DOM node is loca
12ca0 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ted. * @param
12cb0 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 { String } att
12cc0 72 20 2d 20 69 66 20 65 78 70 72 65 73 73 69 6f r - if expressio
12cd0 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 n. * @returns
12ce0 7b 20 49 46 45 78 70 72 20 7d 20 61 20 6e 65 77 { IFExpr } a new
12cf0 20 49 66 45 78 70 72 20 6f 62 6a 65 63 74 0a 20 IfExpr object.
12d00 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
12d10 63 72 65 61 74 65 49 66 44 69 72 65 63 74 69 76 createIfDirectiv
12d20 65 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74 74 72 e(dom, tag, attr
12d30 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 ) {. return c
12d40 72 65 61 74 65 28 49 66 45 78 70 72 29 2e 69 6e reate(IfExpr).in
12d50 69 74 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74 74 it(dom, tag, att
12d60 72 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 r). }.. /**.
12d70 20 2a 20 57 61 6c 6b 20 74 68 65 20 74 61 67 20 * Walk the tag
12d80 44 4f 4d 20 74 6f 20 64 65 74 65 63 74 20 74 68 DOM to detect th
12d90 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f e expressions to
12da0 20 65 76 61 6c 75 61 74 65 0a 20 20 20 2a 20 40 evaluate. * @
12db0 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 this Tag. * @p
12dc0 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 aram { HTMLEle
12dd0 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 72 6f ment } root - ro
12de0 6f 74 20 74 61 67 20 77 68 65 72 65 20 77 65 20 ot tag where we
12df0 77 69 6c 6c 20 73 74 61 72 74 20 64 69 67 67 69 will start diggi
12e00 6e 67 20 74 68 65 20 65 78 70 72 65 73 73 69 6f ng the expressio
12e10 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ns. * @param
12e20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 6d 75 73 { Boolean } mus
12e30 74 49 6e 63 6c 75 64 65 52 6f 6f 74 20 2d 20 66 tIncludeRoot - f
12e40 6c 61 67 20 74 6f 20 64 65 63 69 64 65 20 77 68 lag to decide wh
12e50 65 74 68 65 72 20 74 68 65 20 72 6f 6f 74 20 6d ether the root m
12e60 75 73 74 20 62 65 20 70 61 72 73 65 64 20 61 73 ust be parsed as
12e70 20 77 65 6c 6c 0a 20 20 20 2a 20 40 72 65 74 75 well. * @retu
12e80 72 6e 73 20 7b 20 41 72 72 61 79 20 7d 20 61 6c rns { Array } al
12e90 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e l the expression
12ea0 73 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a 20 20 s found. */.
12eb0 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 45 78 function parseEx
12ec0 70 72 65 73 73 69 6f 6e 73 28 72 6f 6f 74 2c 20 pressions(root,
12ed0 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 29 mustIncludeRoot)
12ee0 20 7b 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 {. var this$
12ef0 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 76 1 = this;.. v
12f00 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 20 3d ar expressions =
12f10 20 5b 5d 3b 0a 0a 20 20 20 20 77 61 6c 6b 4e 6f [];.. walkNo
12f20 64 65 73 28 72 6f 6f 74 2c 20 66 75 6e 63 74 69 des(root, functi
12f30 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 20 20 20 on (dom) {.
12f40 20 76 61 72 20 74 79 70 65 20 3d 20 64 6f 6d 2e var type = dom.
12f50 6e 6f 64 65 54 79 70 65 3b 0a 20 20 20 20 20 20 nodeType;.
12f60 76 61 72 20 61 74 74 72 3b 0a 20 20 20 20 20 20 var attr;.
12f70 76 61 72 20 74 61 67 49 6d 70 6c 3b 0a 0a 20 20 var tagImpl;..
12f80 20 20 20 20 69 66 20 28 21 6d 75 73 74 49 6e 63 if (!mustInc
12f90 6c 75 64 65 52 6f 6f 74 20 26 26 20 64 6f 6d 20 ludeRoot && dom
12fa0 3d 3d 3d 20 72 6f 6f 74 29 20 7b 20 72 65 74 75 === root) { retu
12fb0 72 6e 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 74 rn }.. // t
12fc0 65 78 74 20 6e 6f 64 65 0a 20 20 20 20 20 20 69 ext node. i
12fd0 66 20 28 74 79 70 65 20 3d 3d 3d 20 33 20 26 26 f (type === 3 &&
12fe0 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 2e dom.parentNode.
12ff0 74 61 67 4e 61 6d 65 20 21 3d 3d 20 27 53 54 59 tagName !== 'STY
13000 4c 45 27 20 26 26 20 74 6d 70 6c 2e 68 61 73 45 LE' && tmpl.hasE
13010 78 70 72 28 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 xpr(dom.nodeValu
13020 65 29 29 0a 20 20 20 20 20 20 20 20 7b 20 65 78 e)). { ex
13030 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 7b pressions.push({
13040 64 6f 6d 3a 20 64 6f 6d 2c 20 65 78 70 72 3a 20 dom: dom, expr:
13050 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 7d 29 3b dom.nodeValue});
13060 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 74 79 }.. if (ty
13070 70 65 20 21 3d 3d 20 31 29 20 7b 20 72 65 74 75 pe !== 1) { retu
13080 72 6e 20 7d 0a 0a 20 20 20 20 20 20 76 61 72 20 rn }.. var
13090 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f 6d 2e isVirtual = dom.
130a0 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56 49 52 tagName === 'VIR
130b0 54 55 41 4c 27 3b 0a 0a 20 20 20 20 20 20 2f 2f TUAL';.. //
130c0 20 6c 6f 6f 70 2e 20 65 61 63 68 20 64 6f 65 73 loop. each does
130d0 20 69 74 27 73 20 6f 77 6e 20 74 68 69 6e 67 20 it's own thing
130e0 28 66 6f 72 20 6e 6f 77 29 0a 20 20 20 20 20 20 (for now).
130f0 69 66 20 28 61 74 74 72 20 3d 20 67 65 74 41 74 if (attr = getAt
13100 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 4c 4f 4f tribute(dom, LOO
13110 50 5f 44 49 52 45 43 54 49 56 45 29 29 20 7b 0a P_DIRECTIVE)) {.
13120 20 20 20 20 20 20 20 20 69 66 28 69 73 56 69 72 if(isVir
13130 74 75 61 6c 29 20 7b 20 73 65 74 41 74 74 72 69 tual) { setAttri
13140 62 75 74 65 28 64 6f 6d 2c 20 27 6c 6f 6f 70 56 bute(dom, 'loopV
13150 69 72 74 75 61 6c 27 2c 20 74 72 75 65 29 3b 20 irtual', true);
13160 7d 20 2f 2f 20 69 67 6e 6f 72 65 20 68 65 72 65 } // ignore here
13170 2c 20 68 61 6e 64 6c 65 64 20 69 6e 20 5f 65 61 , handled in _ea
13180 63 68 0a 20 20 20 20 20 20 20 20 65 78 70 72 65 ch. expre
13190 73 73 69 6f 6e 73 2e 70 75 73 68 28 5f 65 61 63 ssions.push(_eac
131a0 68 28 64 6f 6d 2c 20 74 68 69 73 24 31 2c 20 61 h(dom, this$1, a
131b0 74 74 72 29 29 3b 0a 20 20 20 20 20 20 20 20 72 ttr));. r
131c0 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 20 20 eturn false.
131d0 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 69 66 }.. // if
131e0 2d 61 74 74 72 73 20 62 65 63 6f 6d 65 20 74 68 -attrs become th
131f0 65 20 6e 65 77 20 70 61 72 65 6e 74 2e 20 41 6e e new parent. An
13200 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 78 70 72 y following expr
13210 65 73 73 69 6f 6e 73 20 28 65 69 74 68 65 72 20 essions (either
13220 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 20 on the current.
13230 20 20 20 20 20 2f 2f 20 65 6c 65 6d 65 6e 74 2c // element,
13240 20 6f 72 20 62 65 6c 6f 77 20 69 74 29 20 62 65 or below it) be
13250 63 6f 6d 65 20 63 68 69 6c 64 72 65 6e 20 6f 66 come children of
13260 20 74 68 69 73 20 65 78 70 72 65 73 73 69 6f 6e this expression
13270 2e 0a 20 20 20 20 20 20 69 66 20 28 61 74 74 72 .. if (attr
13280 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28 = getAttribute(
13290 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f 4e 41 4c dom, CONDITIONAL
132a0 5f 44 49 52 45 43 54 49 56 45 29 29 20 7b 0a 20 _DIRECTIVE)) {.
132b0 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f expressio
132c0 6e 73 2e 70 75 73 68 28 63 72 65 61 74 65 49 66 ns.push(createIf
132d0 44 69 72 65 63 74 69 76 65 28 64 6f 6d 2c 20 74 Directive(dom, t
132e0 68 69 73 24 31 2c 20 61 74 74 72 29 29 3b 0a 20 his$1, attr));.
132f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa
13300 6c 73 65 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 lse. }..
13310 20 20 20 69 66 20 28 61 74 74 72 20 3d 20 67 65 if (attr = ge
13320 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 tAttribute(dom,
13330 49 53 5f 44 49 52 45 43 54 49 56 45 29 29 20 7b IS_DIRECTIVE)) {
13340 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 6d 70 . if (tmp
13350 6c 2e 68 61 73 45 78 70 72 28 61 74 74 72 29 29 l.hasExpr(attr))
13360 20 7b 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 {. exp
13370 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 7b 0a ressions.push({.
13380 20 20 20 20 20 20 20 20 20 20 20 20 69 73 52 74 isRt
13390 61 67 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 ag: true,.
133a0 20 20 20 20 20 20 65 78 70 72 3a 20 61 74 74 72 expr: attr
133b0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f ,. do
133c0 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20 20 20 20 20 m: dom,.
133d0 20 20 20 20 61 74 74 72 73 3a 20 5b 5d 2e 73 6c attrs: [].sl
133e0 69 63 65 2e 63 61 6c 6c 28 64 6f 6d 2e 61 74 74 ice.call(dom.att
133f0 72 69 62 75 74 65 73 29 0a 20 20 20 20 20 20 20 ributes).
13400 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20 20 20 });..
13410 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 return false.
13420 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d }. }
13430 0a 0a 20 20 20 20 20 20 2f 2f 20 69 66 20 74 68 .. // if th
13440 69 73 20 69 73 20 61 20 74 61 67 2c 20 73 74 6f is is a tag, sto
13450 70 20 74 72 61 76 65 72 73 69 6e 67 20 68 65 72 p traversing her
13460 65 2e 0a 20 20 20 20 20 20 2f 2f 20 77 65 20 69 e.. // we i
13470 67 6e 6f 72 65 20 74 68 65 20 72 6f 6f 74 2c 20 gnore the root,
13480 73 69 6e 63 65 20 70 61 72 73 65 45 78 70 72 65 since parseExpre
13490 73 73 69 6f 6e 73 20 69 73 20 63 61 6c 6c 65 64 ssions is called
134a0 20 77 68 69 6c 65 20 77 65 27 72 65 20 6d 6f 75 while we're mou
134b0 6e 74 69 6e 67 20 74 68 61 74 20 72 6f 6f 74 0a nting that root.
134c0 20 20 20 20 20 20 74 61 67 49 6d 70 6c 20 3d 20 tagImpl =
134d0 67 65 74 28 64 6f 6d 29 3b 0a 0a 20 20 20 20 20 get(dom);..
134e0 20 69 66 28 69 73 56 69 72 74 75 61 6c 29 20 7b if(isVirtual) {
134f0 0a 20 20 20 20 20 20 20 20 69 66 28 67 65 74 41 . if(getA
13500 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 76 ttribute(dom, 'v
13510 69 72 74 75 61 6c 69 7a 65 64 27 29 29 20 7b 64 irtualized')) {d
13520 6f 6d 2e 70 61 72 65 6e 74 45 6c 65 6d 65 6e 74 om.parentElement
13530 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64 6f 6d .removeChild(dom
13540 29 3b 20 7d 20 2f 2f 20 74 61 67 20 63 72 65 61 ); } // tag crea
13550 74 65 64 2c 20 72 65 6d 6f 76 65 20 66 72 6f 6d ted, remove from
13560 20 64 6f 6d 0a 20 20 20 20 20 20 20 20 69 66 28 dom. if(
13570 21 74 61 67 49 6d 70 6c 20 26 26 20 21 67 65 74 !tagImpl && !get
13580 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 Attribute(dom, '
13590 76 69 72 74 75 61 6c 69 7a 65 64 27 29 20 26 26 virtualized') &&
135a0 20 21 67 65 74 41 74 74 72 69 62 75 74 65 28 64 !getAttribute(d
135b0 6f 6d 2c 20 27 6c 6f 6f 70 56 69 72 74 75 61 6c om, 'loopVirtual
135c0 27 29 29 20 20 2f 2f 20 6f 6b 20 74 6f 20 63 72 ')) // ok to cr
135d0 65 61 74 65 20 76 69 72 74 75 61 6c 20 74 61 67 eate virtual tag
135e0 0a 20 20 20 20 20 20 20 20 20 20 7b 20 74 61 67 . { tag
135f0 49 6d 70 6c 20 3d 20 7b 20 74 6d 70 6c 3a 20 64 Impl = { tmpl: d
13600 6f 6d 2e 6f 75 74 65 72 48 54 4d 4c 20 7d 3b 20 om.outerHTML };
13610 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }. }..
13620 20 69 66 20 28 74 61 67 49 6d 70 6c 20 26 26 20 if (tagImpl &&
13630 28 64 6f 6d 20 21 3d 3d 20 72 6f 6f 74 20 7c 7c (dom !== root ||
13640 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 mustIncludeRoot
13650 29 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 )) {. var
13660 20 68 61 73 49 73 44 69 72 65 63 74 69 76 65 20 hasIsDirective
13670 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 = getAttribute(d
13680 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 om, IS_DIRECTIVE
13690 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 69 73 );. if(is
136a0 56 69 72 74 75 61 6c 20 26 26 20 21 68 61 73 49 Virtual && !hasI
136b0 73 44 69 72 65 63 74 69 76 65 29 20 7b 20 2f 2f sDirective) { //
136c0 20 68 61 6e 64 6c 65 64 20 69 6e 20 75 70 64 61 handled in upda
136d0 74 65 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 te. //
136e0 63 61 6e 20 6e 6f 74 20 72 65 6d 6f 76 65 20 61 can not remove a
136f0 74 74 72 69 62 75 74 65 20 6c 69 6b 65 20 64 69 ttribute like di
13700 72 65 63 74 69 76 65 73 0a 20 20 20 20 20 20 20 rectives.
13710 20 20 20 2f 2f 20 73 6f 20 66 6c 61 67 20 66 6f // so flag fo
13720 72 20 72 65 6d 6f 76 61 6c 20 61 66 74 65 72 20 r removal after
13730 63 72 65 61 74 69 6f 6e 20 74 6f 20 70 72 65 76 creation to prev
13740 65 6e 74 20 6d 61 78 69 6d 75 6d 20 73 74 61 63 ent maximum stac
13750 6b 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 k error.
13760 20 20 73 65 74 41 74 74 72 69 62 75 74 65 28 64 setAttribute(d
13770 6f 6d 2c 20 27 76 69 72 74 75 61 6c 69 7a 65 64 om, 'virtualized
13780 27 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 ', true);.
13790 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 63 72 var tag = cr
137a0 65 61 74 65 54 61 67 28 0a 20 20 20 20 20 20 20 eateTag(.
137b0 20 20 20 20 20 7b 74 6d 70 6c 3a 20 64 6f 6d 2e {tmpl: dom.
137c0 6f 75 74 65 72 48 54 4d 4c 7d 2c 0a 20 20 20 20 outerHTML},.
137d0 20 20 20 20 20 20 20 20 7b 72 6f 6f 74 3a 20 64 {root: d
137e0 6f 6d 2c 20 70 61 72 65 6e 74 3a 20 74 68 69 73 om, parent: this
137f0 24 31 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 $1},.
13800 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 0a 20 dom.innerHTML.
13810 20 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 );..
13820 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f expressio
13830 6e 73 2e 70 75 73 68 28 74 61 67 29 3b 20 2f 2f ns.push(tag); //
13840 20 6e 6f 20 72 65 74 75 72 6e 2c 20 61 6e 6f 6e no return, anon
13850 79 6d 6f 75 73 20 74 61 67 2c 20 6b 65 65 70 20 ymous tag, keep
13860 70 61 72 73 69 6e 67 0a 20 20 20 20 20 20 20 20 parsing.
13870 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 } else {.
13880 20 20 20 69 66 20 28 68 61 73 49 73 44 69 72 65 if (hasIsDire
13890 63 74 69 76 65 20 26 26 20 69 73 56 69 72 74 75 ctive && isVirtu
138a0 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 al).
138b0 7b 20 77 61 72 6e 28 28 22 56 69 72 74 75 61 6c { warn(("Virtual
138c0 20 74 61 67 73 20 73 68 6f 75 6c 64 6e 27 74 20 tags shouldn't
138d0 62 65 20 75 73 65 64 20 74 6f 67 65 74 68 65 72 be used together
138e0 20 77 69 74 68 20 74 68 65 20 5c 22 22 20 2b 20 with the \"" +
138f0 49 53 5f 44 49 52 45 43 54 49 56 45 20 2b 20 22 IS_DIRECTIVE + "
13900 5c 22 20 61 74 74 72 69 62 75 74 65 20 2d 20 68 \" attribute - h
13910 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f ttps://github.co
13920 6d 2f 72 69 6f 74 2f 72 69 6f 74 2f 69 73 73 75 m/riot/riot/issu
13930 65 73 2f 32 35 31 31 22 29 29 3b 20 7d 0a 0a 20 es/2511")); }..
13940 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 express
13950 69 6f 6e 73 2e 70 75 73 68 28 0a 20 20 20 20 20 ions.push(.
13960 20 20 20 20 20 20 20 69 6e 69 74 43 68 69 6c 64 initChild
13970 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (.
13980 74 61 67 49 6d 70 6c 2c 0a 20 20 20 20 20 20 20 tagImpl,.
13990 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 {.
139a0 20 20 20 20 20 20 20 20 20 72 6f 6f 74 3a 20 64 root: d
139b0 6f 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 om,.
139c0 20 20 20 20 70 61 72 65 6e 74 3a 20 74 68 69 73 parent: this
139d0 24 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 $1.
139e0 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 },.
139f0 20 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 2c dom.innerHTML,
13a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 . t
13a10 68 69 73 24 31 0a 20 20 20 20 20 20 20 20 20 20 his$1.
13a20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20 29 3b ). );
13a30 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 . retur
13a40 6e 20 66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 n false.
13a50 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }. }..
13a60 20 2f 2f 20 61 74 74 72 69 62 75 74 65 20 65 78 // attribute ex
13a70 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 20 20 pressions.
13a80 70 61 72 73 65 41 74 74 72 69 62 75 74 65 73 2e parseAttributes.
13a90 61 70 70 6c 79 28 74 68 69 73 24 31 2c 20 5b 64 apply(this$1, [d
13aa0 6f 6d 2c 20 64 6f 6d 2e 61 74 74 72 69 62 75 74 om, dom.attribut
13ab0 65 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 74 es, function (at
13ac0 74 72 2c 20 65 78 70 72 29 20 7b 0a 20 20 20 20 tr, expr) {.
13ad0 20 20 20 20 69 66 20 28 21 65 78 70 72 29 20 7b if (!expr) {
13ae0 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 20 20 return }.
13af0 20 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 expressions.pu
13b00 73 68 28 65 78 70 72 29 3b 0a 20 20 20 20 20 20 sh(expr);.
13b10 7d 5d 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 }]);. });..
13b20 20 20 72 65 74 75 72 6e 20 65 78 70 72 65 73 73 return express
13b30 69 6f 6e 73 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a ions. }.. /**.
13b40 20 20 20 2a 20 43 61 6c 6c 73 20 60 66 6e 60 20 * Calls `fn`
13b50 66 6f 72 20 65 76 65 72 79 20 61 74 74 72 69 62 for every attrib
13b60 75 74 65 20 6f 6e 20 61 6e 20 65 6c 65 6d 65 6e ute on an elemen
13b70 74 2e 20 49 66 20 74 68 61 74 20 61 74 74 72 20 t. If that attr
13b80 68 61 73 20 61 6e 20 65 78 70 72 65 73 73 69 6f has an expressio
13b90 6e 2c 0a 20 20 20 2a 20 69 74 20 69 73 20 61 6c n,. * it is al
13ba0 73 6f 20 70 61 73 73 65 64 20 74 6f 20 66 6e 2e so passed to fn.
13bb0 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a . * @this Tag.
13bc0 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
13bd0 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 6f HTMLElement } do
13be0 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 74 6f 20 m - dom node to
13bf0 70 61 72 73 65 0a 20 20 20 2a 20 40 70 61 72 61 parse. * @para
13c00 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 61 74 m { Array } at
13c10 74 72 73 20 2d 20 61 72 72 61 79 20 6f 66 20 61 trs - array of a
13c20 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a 20 40 ttributes. * @
13c30 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 param { Functi
13c40 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 on } fn - callba
13c50 63 6b 20 74 6f 20 65 78 65 63 20 6f 6e 20 61 6e ck to exec on an
13c60 79 20 69 74 65 72 61 74 69 6f 6e 0a 20 20 20 2a y iteration. *
13c70 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 /. function par
13c80 73 65 41 74 74 72 69 62 75 74 65 73 28 64 6f 6d seAttributes(dom
13c90 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20 , attrs, fn) {.
13ca0 20 20 20 76 61 72 20 74 68 69 73 24 31 20 3d 20 var this$1 =
13cb0 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28 this;.. each(
13cc0 61 74 74 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 attrs, function
13cd0 28 61 74 74 72 29 20 7b 0a 20 20 20 20 20 20 69 (attr) {. i
13ce0 66 20 28 21 61 74 74 72 29 20 7b 20 72 65 74 75 f (!attr) { retu
13cf0 72 6e 20 66 61 6c 73 65 20 7d 0a 0a 20 20 20 20 rn false }..
13d00 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 61 74 74 var name = att
13d10 72 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 76 61 r.name;. va
13d20 72 20 62 6f 6f 6c 20 3d 20 69 73 42 6f 6f 6c 41 r bool = isBoolA
13d30 74 74 72 28 6e 61 6d 65 29 3b 0a 20 20 20 20 20 ttr(name);.
13d40 20 76 61 72 20 65 78 70 72 3b 0a 0a 20 20 20 20 var expr;..
13d50 20 20 69 66 20 28 63 6f 6e 74 61 69 6e 73 28 52 if (contains(R
13d60 45 46 5f 44 49 52 45 43 54 49 56 45 53 2c 20 6e EF_DIRECTIVES, n
13d70 61 6d 65 29 20 26 26 20 64 6f 6d 2e 74 61 67 4e ame) && dom.tagN
13d80 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 ame.toLowerCase(
13d90 29 20 21 3d 3d 20 59 49 45 4c 44 5f 54 41 47 29 ) !== YIELD_TAG)
13da0 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 {. expr
13db0 3d 20 20 63 72 65 61 74 65 52 65 66 44 69 72 65 = createRefDire
13dc0 63 74 69 76 65 28 64 6f 6d 2c 20 74 68 69 73 24 ctive(dom, this$
13dd0 31 2c 20 6e 61 6d 65 2c 20 61 74 74 72 2e 76 61 1, name, attr.va
13de0 6c 75 65 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c lue);. } el
13df0 73 65 20 69 66 20 28 74 6d 70 6c 2e 68 61 73 45 se if (tmpl.hasE
13e00 78 70 72 28 61 74 74 72 2e 76 61 6c 75 65 29 29 xpr(attr.value))
13e10 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 {. expr
13e20 3d 20 7b 64 6f 6d 3a 20 64 6f 6d 2c 20 65 78 70 = {dom: dom, exp
13e30 72 3a 20 61 74 74 72 2e 76 61 6c 75 65 2c 20 61 r: attr.value, a
13e40 74 74 72 3a 20 6e 61 6d 65 2c 20 62 6f 6f 6c 3a ttr: name, bool:
13e50 20 62 6f 6f 6c 7d 3b 0a 20 20 20 20 20 20 7d 0a bool};. }.
13e60 0a 20 20 20 20 20 20 66 6e 28 61 74 74 72 2c 20 . fn(attr,
13e70 65 78 70 72 29 3b 0a 20 20 20 20 7d 29 3b 0a 20 expr);. });.
13e80 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d }.. /**. * M
13e90 61 6e 61 67 65 20 74 68 65 20 6d 6f 75 6e 74 20 anage the mount
13ea0 73 74 61 74 65 20 6f 66 20 61 20 74 61 67 20 74 state of a tag t
13eb0 72 69 67 67 65 72 69 6e 67 20 61 6c 73 6f 20 74 riggering also t
13ec0 68 65 20 6f 62 73 65 72 76 61 62 6c 65 20 65 76 he observable ev
13ed0 65 6e 74 73 0a 20 20 20 2a 20 40 74 68 69 73 20 ents. * @this
13ee0 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 Tag. * @param
13ef0 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 76 61 6c 75 { Boolean } valu
13f00 65 20 2d 20 2e 2e 6f 66 20 74 68 65 20 69 73 4d e - ..of the isM
13f10 6f 75 6e 74 65 64 20 66 6c 61 67 0a 20 20 20 2a ounted flag. *
13f20 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 /. function set
13f30 4d 6f 75 6e 74 53 74 61 74 65 28 76 61 6c 75 65 MountState(value
13f40 29 20 7b 0a 20 20 20 20 76 61 72 20 72 65 66 20 ) {. var ref
13f50 3d 20 74 68 69 73 2e 5f 5f 3b 0a 20 20 20 20 76 = this.__;. v
13f60 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d ar isAnonymous =
13f70 20 72 65 66 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 ref.isAnonymous
13f80 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70 41 6e ;. var skipAn
13f90 6f 6e 79 6d 6f 75 73 20 3d 20 72 65 66 2e 73 6b onymous = ref.sk
13fa0 69 70 41 6e 6f 6e 79 6d 6f 75 73 3b 0a 0a 20 20 ipAnonymous;..
13fb0 20 20 64 65 66 69 6e 65 28 74 68 69 73 2c 20 27 define(this, '
13fc0 69 73 4d 6f 75 6e 74 65 64 27 2c 20 76 61 6c 75 isMounted', valu
13fd0 65 29 3b 0a 0a 20 20 20 20 69 66 20 28 21 69 73 e);.. if (!is
13fe0 41 6e 6f 6e 79 6d 6f 75 73 20 7c 7c 20 21 73 6b Anonymous || !sk
13ff0 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b 0a 20 ipAnonymous) {.
14000 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 29 20 if (value)
14010 7b 20 74 68 69 73 2e 74 72 69 67 67 65 72 28 27 { this.trigger('
14020 6d 6f 75 6e 74 27 29 3b 20 7d 0a 20 20 20 20 20 mount'); }.
14030 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
14040 74 68 69 73 2e 74 72 69 67 67 65 72 28 27 75 6e this.trigger('un
14050 6d 6f 75 6e 74 27 29 3b 0a 20 20 20 20 20 20 20 mount');.
14060 20 74 68 69 73 2e 6f 66 66 28 27 2a 27 29 3b 0a this.off('*');.
14070 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 5f 2e this.__.
14080 77 61 73 43 72 65 61 74 65 64 20 3d 20 66 61 6c wasCreated = fal
14090 73 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 se;. }.
140a0 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 }. }.. /**.
140b0 2a 20 4d 6f 75 6e 74 20 74 68 65 20 63 75 72 72 * Mount the curr
140c0 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 ent tag instance
140d0 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b . * @returns {
140e0 20 54 61 67 20 7d 20 74 68 65 20 63 75 72 72 65 Tag } the curre
140f0 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a nt tag instance.
14100 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
14110 20 63 6f 6d 70 6f 6e 65 6e 74 4d 6f 75 6e 74 28 componentMount(
14120 74 61 67 24 24 31 2c 20 64 6f 6d 2c 20 65 78 70 tag$$1, dom, exp
14130 72 65 73 73 69 6f 6e 73 2c 20 6f 70 74 73 29 20 ressions, opts)
14140 7b 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d 20 74 {. var __ = t
14150 61 67 24 24 31 2e 5f 5f 3b 0a 20 20 20 20 76 61 ag$$1.__;. va
14160 72 20 72 6f 6f 74 20 3d 20 5f 5f 2e 72 6f 6f 74 r root = __.root
14170 3b 0a 20 20 20 20 72 6f 6f 74 2e 5f 74 61 67 20 ;. root._tag
14180 3d 20 74 61 67 24 24 31 3b 20 2f 2f 20 6b 65 65 = tag$$1; // kee
14190 70 20 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f p a reference to
141a0 20 74 68 65 20 74 61 67 20 6a 75 73 74 20 63 72 the tag just cr
141b0 65 61 74 65 64 0a 0a 20 20 20 20 2f 2f 20 52 65 eated.. // Re
141c0 61 64 20 61 6c 6c 20 74 68 65 20 61 74 74 72 73 ad all the attrs
141d0 20 6f 6e 20 74 68 69 73 20 69 6e 73 74 61 6e 63 on this instanc
141e0 65 2e 20 54 68 69 73 20 67 69 76 65 20 75 73 20 e. This give us
141f0 74 68 65 20 69 6e 66 6f 20 77 65 20 6e 65 65 64 the info we need
14200 20 66 6f 72 20 75 70 64 61 74 65 4f 70 74 73 0a for updateOpts.
14210 20 20 20 20 70 61 72 73 65 41 74 74 72 69 62 75 parseAttribu
14220 74 65 73 2e 61 70 70 6c 79 28 5f 5f 2e 70 61 72 tes.apply(__.par
14230 65 6e 74 2c 20 5b 72 6f 6f 74 2c 20 72 6f 6f 74 ent, [root, root
14240 2e 61 74 74 72 69 62 75 74 65 73 2c 20 66 75 6e .attributes, fun
14250 63 74 69 6f 6e 20 28 61 74 74 72 2c 20 65 78 70 ction (attr, exp
14260 72 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 r) {. if (!
14270 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 __.isAnonymous &
14280 26 20 52 65 66 45 78 70 72 2e 69 73 50 72 6f 74 & RefExpr.isProt
14290 6f 74 79 70 65 4f 66 28 65 78 70 72 29 29 20 7b otypeOf(expr)) {
142a0 20 65 78 70 72 2e 74 61 67 20 3d 20 74 61 67 24 expr.tag = tag$
142b0 24 31 3b 20 7d 0a 20 20 20 20 20 20 61 74 74 72 $1; }. attr
142c0 2e 65 78 70 72 20 3d 20 65 78 70 72 3b 0a 20 20 .expr = expr;.
142d0 20 20 20 20 5f 5f 2e 69 6e 73 74 41 74 74 72 73 __.instAttrs
142e0 2e 70 75 73 68 28 61 74 74 72 29 3b 0a 20 20 20 .push(attr);.
142f0 20 7d 5d 29 3b 0a 0a 20 20 20 20 2f 2f 20 75 70 }]);.. // up
14300 64 61 74 65 20 74 68 65 20 72 6f 6f 74 20 61 64 date the root ad
14310 64 69 6e 67 20 63 75 73 74 6f 6d 20 61 74 74 72 ding custom attr
14320 69 62 75 74 65 73 20 63 6f 6d 69 6e 67 20 66 72 ibutes coming fr
14330 6f 6d 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a om the compiler.
14340 20 20 20 20 77 61 6c 6b 41 74 74 72 69 62 75 74 walkAttribut
14350 65 73 28 5f 5f 2e 69 6d 70 6c 2e 61 74 74 72 73 es(__.impl.attrs
14360 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 2c 20 76 , function (k, v
14370 29 20 7b 20 5f 5f 2e 69 6d 70 6c 41 74 74 72 73 ) { __.implAttrs
14380 2e 70 75 73 68 28 7b 6e 61 6d 65 3a 20 6b 2c 20 .push({name: k,
14390 76 61 6c 75 65 3a 20 76 7d 29 3b 20 7d 29 3b 0a value: v}); });.
143a0 20 20 20 20 70 61 72 73 65 41 74 74 72 69 62 75 parseAttribu
143b0 74 65 73 2e 61 70 70 6c 79 28 74 61 67 24 24 31 tes.apply(tag$$1
143c0 2c 20 5b 72 6f 6f 74 2c 20 5f 5f 2e 69 6d 70 6c , [root, __.impl
143d0 41 74 74 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 Attrs, function
143e0 28 61 74 74 72 2c 20 65 78 70 72 29 20 7b 0a 20 (attr, expr) {.
143f0 20 20 20 20 20 69 66 20 28 65 78 70 72 29 20 7b if (expr) {
14400 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 expressions.pus
14410 68 28 65 78 70 72 29 3b 20 7d 0a 20 20 20 20 20 h(expr); }.
14420 20 65 6c 73 65 20 7b 20 73 65 74 41 74 74 72 69 else { setAttri
14430 62 75 74 65 28 72 6f 6f 74 2c 20 61 74 74 72 2e bute(root, attr.
14440 6e 61 6d 65 2c 20 61 74 74 72 2e 76 61 6c 75 65 name, attr.value
14450 29 3b 20 7d 0a 20 20 20 20 7d 5d 29 3b 0a 0a 20 ); }. }]);..
14460 20 20 20 2f 2f 20 69 6e 69 74 69 61 6c 69 61 74 // initialiat
14470 69 6f 6e 0a 20 20 20 20 75 70 64 61 74 65 4f 70 ion. updateOp
14480 74 73 2e 61 70 70 6c 79 28 74 61 67 24 24 31 2c ts.apply(tag$$1,
14490 20 5b 5f 5f 2e 69 73 4c 6f 6f 70 2c 20 5f 5f 2e [__.isLoop, __.
144a0 70 61 72 65 6e 74 2c 20 5f 5f 2e 69 73 41 6e 6f parent, __.isAno
144b0 6e 79 6d 6f 75 73 2c 20 6f 70 74 73 2c 20 5f 5f nymous, opts, __
144c0 2e 69 6e 73 74 41 74 74 72 73 5d 29 3b 0a 0a 20 .instAttrs]);..
144d0 20 20 20 2f 2f 20 61 64 64 20 67 6c 6f 62 61 6c // add global
144e0 20 6d 69 78 69 6e 73 0a 20 20 20 20 76 61 72 20 mixins. var
144f0 67 6c 6f 62 61 6c 4d 69 78 69 6e 20 3d 20 6d 69 globalMixin = mi
14500 78 69 6e 28 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e xin(GLOBAL_MIXIN
14510 29 3b 0a 0a 20 20 20 20 69 66 20 28 67 6c 6f 62 );.. if (glob
14520 61 6c 4d 69 78 69 6e 20 26 26 20 21 5f 5f 2e 73 alMixin && !__.s
14530 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b 0a kipAnonymous) {.
14540 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
14550 20 69 6e 20 67 6c 6f 62 61 6c 4d 69 78 69 6e 29 in globalMixin)
14560 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 67 {. if (g
14570 6c 6f 62 61 6c 4d 69 78 69 6e 2e 68 61 73 4f 77 lobalMixin.hasOw
14580 6e 50 72 6f 70 65 72 74 79 28 69 29 29 20 7b 0a nProperty(i)) {.
14590 20 20 20 20 20 20 20 20 20 20 74 61 67 24 24 31 tag$$1
145a0 2e 6d 69 78 69 6e 28 67 6c 6f 62 61 6c 4d 69 78 .mixin(globalMix
145b0 69 6e 5b 69 5d 29 3b 0a 20 20 20 20 20 20 20 20 in[i]);.
145c0 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. }.
145d0 0a 20 20 20 20 69 66 20 28 5f 5f 2e 69 6d 70 6c . if (__.impl
145e0 2e 66 6e 29 20 7b 20 5f 5f 2e 69 6d 70 6c 2e 66 .fn) { __.impl.f
145f0 6e 2e 63 61 6c 6c 28 74 61 67 24 24 31 2c 20 6f n.call(tag$$1, o
14600 70 74 73 29 3b 20 7d 0a 0a 20 20 20 20 69 66 20 pts); }.. if
14610 28 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f (!__.skipAnonymo
14620 75 73 29 20 7b 20 74 61 67 24 24 31 2e 74 72 69 us) { tag$$1.tri
14630 67 67 65 72 28 27 62 65 66 6f 72 65 2d 6d 6f 75 gger('before-mou
14640 6e 74 27 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 nt'); }.. //
14650 70 61 72 73 65 20 6c 61 79 6f 75 74 20 61 66 74 parse layout aft
14660 65 72 20 69 6e 69 74 2e 20 66 6e 20 6d 61 79 20 er init. fn may
14670 63 61 6c 63 75 6c 61 74 65 20 61 72 67 73 20 66 calculate args f
14680 6f 72 20 6e 65 73 74 65 64 20 63 75 73 74 6f 6d or nested custom
14690 20 74 61 67 73 0a 20 20 20 20 65 61 63 68 28 70 tags. each(p
146a0 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 73 2e arseExpressions.
146b0 61 70 70 6c 79 28 74 61 67 24 24 31 2c 20 5b 64 apply(tag$$1, [d
146c0 6f 6d 2c 20 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f om, __.isAnonymo
146d0 75 73 5d 29 2c 20 66 75 6e 63 74 69 6f 6e 20 28 us]), function (
146e0 65 29 20 7b 20 72 65 74 75 72 6e 20 65 78 70 72 e) { return expr
146f0 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 65 29 3b essions.push(e);
14700 20 7d 29 3b 0a 0a 20 20 20 20 74 61 67 24 24 31 });.. tag$$1
14710 2e 75 70 64 61 74 65 28 5f 5f 2e 69 74 65 6d 29 .update(__.item)
14720 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e 69 ;.. if (!__.i
14730 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 21 5f sAnonymous && !_
14740 5f 2e 69 73 49 6e 6c 69 6e 65 29 20 7b 0a 20 20 _.isInline) {.
14750 20 20 20 20 77 68 69 6c 65 20 28 64 6f 6d 2e 66 while (dom.f
14760 69 72 73 74 43 68 69 6c 64 29 20 7b 20 72 6f 6f irstChild) { roo
14770 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 64 6f t.appendChild(do
14780 6d 2e 66 69 72 73 74 43 68 69 6c 64 29 3b 20 7d m.firstChild); }
14790 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64 65 66 69 . }.. defi
147a0 6e 65 28 74 61 67 24 24 31 2c 20 27 72 6f 6f 74 ne(tag$$1, 'root
147b0 27 2c 20 72 6f 6f 74 29 3b 0a 0a 20 20 20 20 2f ', root);.. /
147c0 2f 20 69 66 20 77 65 20 6e 65 65 64 20 74 6f 20 / if we need to
147d0 77 61 69 74 20 74 68 61 74 20 74 68 65 20 70 61 wait that the pa
147e0 72 65 6e 74 20 22 6d 6f 75 6e 74 22 20 6f 72 20 rent "mount" or
147f0 22 75 70 64 61 74 65 64 22 20 65 76 65 6e 74 20 "updated" event
14800 67 65 74 73 20 74 72 69 67 67 65 72 65 64 0a 20 gets triggered.
14810 20 20 20 69 66 20 28 21 5f 5f 2e 73 6b 69 70 41 if (!__.skipA
14820 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 74 61 67 24 nonymous && tag$
14830 24 31 2e 70 61 72 65 6e 74 29 20 7b 0a 20 20 20 $1.parent) {.
14840 20 20 20 76 61 72 20 70 20 3d 20 67 65 74 49 6d var p = getIm
14850 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50 61 72 mediateCustomPar
14860 65 6e 74 28 74 61 67 24 24 31 2e 70 61 72 65 6e ent(tag$$1.paren
14870 74 29 3b 0a 20 20 20 20 20 20 70 2e 6f 6e 65 28 t);. p.one(
14880 21 70 2e 69 73 4d 6f 75 6e 74 65 64 20 3f 20 27 !p.isMounted ? '
14890 6d 6f 75 6e 74 27 20 3a 20 27 75 70 64 61 74 65 mount' : 'update
148a0 64 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 d', function ()
148b0 7b 0a 20 20 20 20 20 20 20 20 73 65 74 4d 6f 75 {. setMou
148c0 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28 74 61 67 ntState.call(tag
148d0 24 24 31 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 $$1, true);.
148e0 20 20 7d 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 });. } else
148f0 20 7b 0a 20 20 20 20 20 20 2f 2f 20 6f 74 68 65 {. // othe
14900 72 77 69 73 65 20 69 74 27 73 20 6e 6f 74 20 61 rwise it's not a
14910 20 63 68 69 6c 64 20 74 61 67 20 77 65 20 63 61 child tag we ca
14920 6e 20 74 72 69 67 67 65 72 20 69 74 73 20 6d 6f n trigger its mo
14930 75 6e 74 20 65 76 65 6e 74 0a 20 20 20 20 20 20 unt event.
14940 73 65 74 4d 6f 75 6e 74 53 74 61 74 65 2e 63 61 setMountState.ca
14950 6c 6c 28 74 61 67 24 24 31 2c 20 74 72 75 65 29 ll(tag$$1, true)
14960 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 61 67 ;. }.. tag
14970 24 24 31 2e 5f 5f 2e 77 61 73 43 72 65 61 74 65 $$1.__.wasCreate
14980 64 20 3d 20 74 72 75 65 3b 0a 0a 20 20 20 20 72 d = true;.. r
14990 65 74 75 72 6e 20 74 61 67 24 24 31 0a 20 20 7d eturn tag$$1. }
149a0 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 6e 6d .. /**. * Unm
149b0 6f 75 6e 74 20 74 68 65 20 74 61 67 20 69 6e 73 ount the tag ins
149c0 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61 72 61 tance. * @para
149d0 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 6d 75 m { Boolean } mu
149e0 73 74 4b 65 65 70 52 6f 6f 74 20 2d 20 69 66 20 stKeepRoot - if
149f0 69 74 27 73 20 74 72 75 65 20 74 68 65 20 72 6f it's true the ro
14a00 6f 74 20 6e 6f 64 65 20 77 69 6c 6c 20 6e 6f 74 ot node will not
14a10 20 62 65 20 72 65 6d 6f 76 65 64 0a 20 20 20 2a be removed. *
14a20 20 40 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 @returns { Tag
14a30 7d 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 61 } the current ta
14a40 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 2a 2f g instance. */
14a50 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61 67 55 . function tagU
14a60 6e 6d 6f 75 6e 74 28 74 61 67 2c 20 6d 75 73 74 nmount(tag, must
14a70 4b 65 65 70 52 6f 6f 74 2c 20 65 78 70 72 65 73 KeepRoot, expres
14a80 73 69 6f 6e 73 29 20 7b 0a 20 20 20 20 76 61 72 sions) {. var
14a90 20 5f 5f 20 3d 20 74 61 67 2e 5f 5f 3b 0a 20 20 __ = tag.__;.
14aa0 20 20 76 61 72 20 72 6f 6f 74 20 3d 20 5f 5f 2e var root = __.
14ab0 72 6f 6f 74 3b 0a 20 20 20 20 76 61 72 20 74 61 root;. var ta
14ac0 67 49 6e 64 65 78 20 3d 20 5f 5f 54 41 47 53 5f gIndex = __TAGS_
14ad0 43 41 43 48 45 2e 69 6e 64 65 78 4f 66 28 74 61 CACHE.indexOf(ta
14ae0 67 29 3b 0a 20 20 20 20 76 61 72 20 70 20 3d 20 g);. var p =
14af0 72 6f 6f 74 2e 70 61 72 65 6e 74 4e 6f 64 65 3b root.parentNode;
14b00 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e 73 6b .. if (!__.sk
14b10 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b 20 74 ipAnonymous) { t
14b20 61 67 2e 74 72 69 67 67 65 72 28 27 62 65 66 6f ag.trigger('befo
14b30 72 65 2d 75 6e 6d 6f 75 6e 74 27 29 3b 20 7d 0a re-unmount'); }.
14b40 0a 20 20 20 20 2f 2f 20 63 6c 65 61 72 20 61 6c . // clear al
14b50 6c 20 61 74 74 72 69 62 75 74 65 73 20 63 6f 6d l attributes com
14b60 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6d 6f 75 ing from the mou
14b70 6e 74 65 64 20 74 61 67 0a 20 20 20 20 77 61 6c nted tag. wal
14b80 6b 41 74 74 72 69 62 75 74 65 73 28 5f 5f 2e 69 kAttributes(__.i
14b90 6d 70 6c 2e 61 74 74 72 73 2c 20 66 75 6e 63 74 mpl.attrs, funct
14ba0 69 6f 6e 20 28 6e 61 6d 65 29 20 7b 0a 20 20 20 ion (name) {.
14bb0 20 20 20 69 66 20 28 73 74 61 72 74 73 57 69 74 if (startsWit
14bc0 68 28 6e 61 6d 65 2c 20 41 54 54 52 53 5f 50 52 h(name, ATTRS_PR
14bd0 45 46 49 58 29 29 0a 20 20 20 20 20 20 20 20 7b EFIX)). {
14be0 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 73 6c 69 name = name.sli
14bf0 63 65 28 41 54 54 52 53 5f 50 52 45 46 49 58 2e ce(ATTRS_PREFIX.
14c00 6c 65 6e 67 74 68 29 3b 20 7d 0a 0a 20 20 20 20 length); }..
14c10 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 removeAttribut
14c20 65 28 72 6f 6f 74 2c 20 6e 61 6d 65 29 3b 0a 20 e(root, name);.
14c30 20 20 20 7d 29 3b 0a 0a 20 20 20 20 2f 2f 20 72 });.. // r
14c40 65 6d 6f 76 65 20 61 6c 6c 20 74 68 65 20 65 76 emove all the ev
14c50 65 6e 74 20 6c 69 73 74 65 6e 65 72 73 0a 20 20 ent listeners.
14c60 20 20 74 61 67 2e 5f 5f 2e 6c 69 73 74 65 6e 65 tag.__.listene
14c70 72 73 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74 rs.forEach(funct
14c80 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 20 20 ion (dom) {.
14c90 20 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 64 6f Object.keys(do
14ca0 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 m[RIOT_EVENTS_KE
14cb0 59 5d 29 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 Y]).forEach(func
14cc0 74 69 6f 6e 20 28 65 76 65 6e 74 4e 61 6d 65 29 tion (eventName)
14cd0 20 7b 0a 20 20 20 20 20 20 20 20 64 6f 6d 2e 72 {. dom.r
14ce0 65 6d 6f 76 65 45 76 65 6e 74 4c 69 73 74 65 6e emoveEventListen
14cf0 65 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20 64 6f er(eventName, do
14d00 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 m[RIOT_EVENTS_KE
14d10 59 5d 5b 65 76 65 6e 74 4e 61 6d 65 5d 29 3b 0a Y][eventName]);.
14d20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 29 });. })
14d30 3b 0a 0a 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 ;.. // remove
14d40 20 74 61 67 20 69 6e 73 74 61 6e 63 65 20 66 72 tag instance fr
14d50 6f 6d 20 74 68 65 20 67 6c 6f 62 61 6c 20 74 61 om the global ta
14d60 67 73 20 63 61 63 68 65 20 63 6f 6c 6c 65 63 74 gs cache collect
14d70 69 6f 6e 0a 20 20 20 20 69 66 20 28 74 61 67 49 ion. if (tagI
14d80 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 7b 20 5f ndex !== -1) { _
14d90 5f 54 41 47 53 5f 43 41 43 48 45 2e 73 70 6c 69 _TAGS_CACHE.spli
14da0 63 65 28 74 61 67 49 6e 64 65 78 2c 20 31 29 3b ce(tagIndex, 1);
14db0 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65 61 6e }.. // clean
14dc0 20 75 70 20 74 68 65 20 70 61 72 65 6e 74 20 74 up the parent t
14dd0 61 67 73 20 6f 62 6a 65 63 74 0a 20 20 20 20 69 ags object. i
14de0 66 20 28 5f 5f 2e 70 61 72 65 6e 74 20 26 26 20 f (__.parent &&
14df0 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 29 !__.isAnonymous)
14e00 20 7b 0a 20 20 20 20 20 20 76 61 72 20 70 74 61 {. var pta
14e10 67 20 3d 20 67 65 74 49 6d 6d 65 64 69 61 74 65 g = getImmediate
14e20 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 5f 5f 2e CustomParent(__.
14e30 70 61 72 65 6e 74 29 3b 0a 0a 20 20 20 20 20 20 parent);..
14e40 69 66 20 28 5f 5f 2e 69 73 56 69 72 74 75 61 6c if (__.isVirtual
14e50 29 20 7b 0a 20 20 20 20 20 20 20 20 4f 62 6a 65 ) {. Obje
14e60 63 74 0a 20 20 20 20 20 20 20 20 20 20 2e 6b 65 ct. .ke
14e70 79 73 28 74 61 67 2e 74 61 67 73 29 0a 20 20 20 ys(tag.tags).
14e80 20 20 20 20 20 20 20 2e 66 6f 72 45 61 63 68 28 .forEach(
14e90 66 75 6e 63 74 69 6f 6e 20 28 74 61 67 4e 61 6d function (tagNam
14ea0 65 29 20 7b 20 72 65 74 75 72 6e 20 61 72 72 61 e) { return arra
14eb0 79 69 73 68 52 65 6d 6f 76 65 28 70 74 61 67 2e yishRemove(ptag.
14ec0 74 61 67 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 tags, tagName, t
14ed0 61 67 2e 74 61 67 73 5b 74 61 67 4e 61 6d 65 5d ag.tags[tagName]
14ee0 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 7d 20 65 ); });. } e
14ef0 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 61 72 lse {. ar
14f00 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70 74 61 rayishRemove(pta
14f10 67 2e 74 61 67 73 2c 20 5f 5f 2e 74 61 67 4e 61 g.tags, __.tagNa
14f20 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20 20 20 20 me, tag);.
14f30 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 }. }.. //
14f40 75 6e 6d 6f 75 6e 74 20 61 6c 6c 20 74 68 65 20 unmount all the
14f50 76 69 72 74 75 61 6c 20 64 69 72 65 63 74 69 76 virtual directiv
14f60 65 73 0a 20 20 20 20 69 66 20 28 74 61 67 2e 5f es. if (tag._
14f70 5f 2e 76 69 72 74 73 29 20 7b 0a 20 20 20 20 20 _.virts) {.
14f80 20 65 61 63 68 28 74 61 67 2e 5f 5f 2e 76 69 72 each(tag.__.vir
14f90 74 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 76 29 ts, function (v)
14fa0 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 {. if (v
14fb0 2e 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b 20 76 .parentNode) { v
14fc0 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d 6f .parentNode.remo
14fd0 76 65 43 68 69 6c 64 28 76 29 3b 20 7d 0a 20 20 veChild(v); }.
14fe0 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 0a 20 });. }..
14ff0 20 20 20 2f 2f 20 61 6c 6c 6f 77 20 65 78 70 72 // allow expr
15000 65 73 73 69 6f 6e 73 20 74 6f 20 75 6e 6d 6f 75 essions to unmou
15010 6e 74 20 74 68 65 6d 73 65 6c 76 65 73 0a 20 20 nt themselves.
15020 20 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 65 78 70 unmountAll(exp
15030 72 65 73 73 69 6f 6e 73 29 3b 0a 20 20 20 20 65 ressions);. e
15040 61 63 68 28 5f 5f 2e 69 6e 73 74 41 74 74 72 73 ach(__.instAttrs
15050 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 29 20 7b , function (a) {
15060 20 72 65 74 75 72 6e 20 61 2e 65 78 70 72 20 26 return a.expr &
15070 26 20 61 2e 65 78 70 72 2e 75 6e 6d 6f 75 6e 74 & a.expr.unmount
15080 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d 6f 75 && a.expr.unmou
15090 6e 74 28 29 3b 20 7d 29 3b 0a 0a 20 20 20 20 2f nt(); });.. /
150a0 2f 20 63 6c 65 61 72 20 74 68 65 20 74 61 67 20 / clear the tag
150b0 68 74 6d 6c 20 69 66 20 69 74 27 73 20 6e 65 63 html if it's nec
150c0 65 73 73 61 72 79 0a 20 20 20 20 69 66 20 28 6d essary. if (m
150d0 75 73 74 4b 65 65 70 52 6f 6f 74 29 20 7b 20 73 ustKeepRoot) { s
150e0 65 74 49 6e 6e 65 72 48 54 4d 4c 28 72 6f 6f 74 etInnerHTML(root
150f0 2c 20 27 27 29 3b 20 7d 0a 20 20 20 20 2f 2f 20 , ''); }. //
15100 6f 74 68 65 72 77 69 73 65 20 64 65 74 61 63 68 otherwise detach
15110 20 74 68 65 20 72 6f 6f 74 20 74 61 67 20 66 72 the root tag fr
15120 6f 6d 20 74 68 65 20 44 4f 4d 0a 20 20 20 20 65 om the DOM. e
15130 6c 73 65 20 69 66 20 28 70 29 20 7b 20 70 2e 72 lse if (p) { p.r
15140 65 6d 6f 76 65 43 68 69 6c 64 28 72 6f 6f 74 29 emoveChild(root)
15150 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 75 73 74 ; }.. // cust
15160 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 75 6e 6d 6f om internal unmo
15170 75 6e 74 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 unt function to
15180 61 76 6f 69 64 20 72 65 6c 79 69 6e 67 20 6f 6e avoid relying on
15190 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c 65 0a the observable.
151a0 20 20 20 20 69 66 20 28 5f 5f 2e 6f 6e 55 6e 6d if (__.onUnm
151b0 6f 75 6e 74 29 20 7b 20 5f 5f 2e 6f 6e 55 6e 6d ount) { __.onUnm
151c0 6f 75 6e 74 28 29 3b 20 7d 0a 0a 20 20 20 20 2f ount(); }.. /
151d0 2f 20 77 65 69 72 64 20 66 69 78 20 66 6f 72 20 / weird fix for
151e0 61 20 77 65 69 72 64 20 65 64 67 65 20 63 61 73 a weird edge cas
151f0 65 20 23 32 34 30 39 20 61 6e 64 20 23 32 34 33 e #2409 and #243
15200 36 0a 20 20 20 20 2f 2f 20 73 6f 6d 65 20 75 73 6. // some us
15210 65 72 73 20 6d 69 67 68 74 20 75 73 65 20 79 6f ers might use yo
15220 75 72 20 73 6f 66 74 77 61 72 65 20 6e 6f 74 20 ur software not
15230 61 73 20 79 6f 75 27 76 65 20 65 78 70 65 63 74 as you've expect
15240 65 64 0a 20 20 20 20 2f 2f 20 73 6f 20 49 20 6e ed. // so I n
15250 65 65 64 20 74 6f 20 61 64 64 20 74 68 65 73 65 eed to add these
15260 20 64 69 72 74 79 20 68 61 63 6b 73 20 74 6f 20 dirty hacks to
15270 6d 69 74 69 67 61 74 65 20 75 6e 65 78 70 65 63 mitigate unexpec
15280 74 65 64 20 69 73 73 75 65 73 0a 20 20 20 20 69 ted issues. i
15290 66 20 28 21 74 61 67 2e 69 73 4d 6f 75 6e 74 65 f (!tag.isMounte
152a0 64 29 20 7b 20 73 65 74 4d 6f 75 6e 74 53 74 61 d) { setMountSta
152b0 74 65 2e 63 61 6c 6c 28 74 61 67 2c 20 74 72 75 te.call(tag, tru
152c0 65 29 3b 20 7d 0a 0a 20 20 20 20 73 65 74 4d 6f e); }.. setMo
152d0 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28 74 61 untState.call(ta
152e0 67 2c 20 66 61 6c 73 65 29 3b 0a 0a 20 20 20 20 g, false);..
152f0 64 65 6c 65 74 65 20 72 6f 6f 74 2e 5f 74 61 67 delete root._tag
15300 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 ;.. return ta
15310 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 g. }.. /**.
15320 2a 20 54 61 67 20 63 72 65 61 74 69 6f 6e 20 66 * Tag creation f
15330 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f 6e 0a actory function.
15340 20 20 20 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f * @constructo
15350 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 r. * @param {
15360 4f 62 6a 65 63 74 20 7d 20 69 6d 70 6c 20 2d 20 Object } impl -
15370 69 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 it contains the
15380 74 61 67 20 74 65 6d 70 6c 61 74 65 2c 20 61 6e tag template, an
15390 64 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 70 61 d logic. * @pa
153a0 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 ram { Object } c
153b0 6f 6e 66 20 2d 20 74 61 67 20 6f 70 74 69 6f 6e onf - tag option
153c0 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 s. * @param {
153d0 53 74 72 69 6e 67 20 7d 20 69 6e 6e 65 72 48 54 String } innerHT
153e0 4d 4c 20 2d 20 68 74 6d 6c 20 74 68 61 74 20 65 ML - html that e
153f0 76 65 6e 74 75 61 6c 6c 79 20 77 65 20 6e 65 65 ventually we nee
15400 64 20 74 6f 20 69 6e 6a 65 63 74 20 69 6e 20 74 d to inject in t
15410 68 65 20 74 61 67 0a 20 20 20 2a 2f 0a 20 20 66 he tag. */. f
15420 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 54 61 unction createTa
15430 67 28 69 6d 70 6c 2c 20 63 6f 6e 66 2c 20 69 6e g(impl, conf, in
15440 6e 65 72 48 54 4d 4c 29 20 7b 0a 20 20 20 20 69 nerHTML) {. i
15450 66 20 28 20 69 6d 70 6c 20 3d 3d 3d 20 76 6f 69 f ( impl === voi
15460 64 20 30 20 29 20 69 6d 70 6c 20 3d 20 7b 7d 3b d 0 ) impl = {};
15470 0a 20 20 20 20 69 66 20 28 20 63 6f 6e 66 20 3d . if ( conf =
15480 3d 3d 20 76 6f 69 64 20 30 20 29 20 63 6f 6e 66 == void 0 ) conf
15490 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20 76 61 72 20 = {};.. var
154a0 74 61 67 20 3d 20 63 6f 6e 66 2e 63 6f 6e 74 65 tag = conf.conte
154b0 78 74 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 76 61 xt || {};. va
154c0 72 20 6f 70 74 73 20 3d 20 63 6f 6e 66 2e 6f 70 r opts = conf.op
154d0 74 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 76 61 ts || {};. va
154e0 72 20 70 61 72 65 6e 74 20 3d 20 63 6f 6e 66 2e r parent = conf.
154f0 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72 20 parent;. var
15500 69 73 4c 6f 6f 70 20 3d 20 63 6f 6e 66 2e 69 73 isLoop = conf.is
15510 4c 6f 6f 70 3b 0a 20 20 20 20 76 61 72 20 69 73 Loop;. var is
15520 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 21 21 63 6f Anonymous = !!co
15530 6e 66 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 3b 0a nf.isAnonymous;.
15540 20 20 20 20 76 61 72 20 73 6b 69 70 41 6e 6f 6e var skipAnon
15550 79 6d 6f 75 73 20 3d 20 73 65 74 74 69 6e 67 73 ymous = settings
15560 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 54 61 .skipAnonymousTa
15570 67 73 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f 75 gs && isAnonymou
15580 73 3b 0a 20 20 20 20 76 61 72 20 69 74 65 6d 20 s;. var item
15590 3d 20 63 6f 6e 66 2e 69 74 65 6d 3b 0a 20 20 20 = conf.item;.
155a0 20 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e // available on
155b0 6c 79 20 66 6f 72 20 74 68 65 20 6c 6f 6f 70 65 ly for the loope
155c0 64 20 6e 6f 64 65 73 0a 20 20 20 20 76 61 72 20 d nodes. var
155d0 69 6e 64 65 78 20 3d 20 63 6f 6e 66 2e 69 6e 64 index = conf.ind
155e0 65 78 3b 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 61 ex;. // All a
155f0 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74 68 65 ttributes on the
15600 20 54 61 67 20 77 68 65 6e 20 69 74 27 73 20 66 Tag when it's f
15610 69 72 73 74 20 70 61 72 73 65 64 0a 20 20 20 20 irst parsed.
15620 76 61 72 20 69 6e 73 74 41 74 74 72 73 20 3d 20 var instAttrs =
15630 5b 5d 3b 0a 20 20 20 20 2f 2f 20 65 78 70 72 65 [];. // expre
15640 73 73 69 6f 6e 73 20 6f 6e 20 74 68 69 73 20 74 ssions on this t
15650 79 70 65 20 6f 66 20 54 61 67 0a 20 20 20 20 76 ype of Tag. v
15660 61 72 20 69 6d 70 6c 41 74 74 72 73 20 3d 20 5b ar implAttrs = [
15670 5d 3b 0a 20 20 20 20 76 61 72 20 74 6d 70 6c 20 ];. var tmpl
15680 3d 20 69 6d 70 6c 2e 74 6d 70 6c 3b 0a 20 20 20 = impl.tmpl;.
15690 20 76 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 var expressions
156a0 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61 72 20 72 = [];. var r
156b0 6f 6f 74 20 3d 20 63 6f 6e 66 2e 72 6f 6f 74 3b oot = conf.root;
156c0 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61 6d 65 . var tagName
156d0 20 3d 20 63 6f 6e 66 2e 74 61 67 4e 61 6d 65 20 = conf.tagName
156e0 7c 7c 20 67 65 74 4e 61 6d 65 28 72 6f 6f 74 29 || getName(root)
156f0 3b 0a 20 20 20 20 76 61 72 20 69 73 56 69 72 74 ;. var isVirt
15700 75 61 6c 20 3d 20 74 61 67 4e 61 6d 65 20 3d 3d ual = tagName ==
15710 3d 20 27 76 69 72 74 75 61 6c 27 3b 0a 20 20 20 = 'virtual';.
15720 20 76 61 72 20 69 73 49 6e 6c 69 6e 65 20 3d 20 var isInline =
15730 21 69 73 56 69 72 74 75 61 6c 20 26 26 20 21 74 !isVirtual && !t
15740 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 64 6f 6d mpl;. var dom
15750 3b 0a 0a 20 20 20 20 69 66 20 28 69 73 49 6e 6c ;.. if (isInl
15760 69 6e 65 20 7c 7c 20 69 73 4c 6f 6f 70 20 26 26 ine || isLoop &&
15770 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b 0a isAnonymous) {.
15780 20 20 20 20 20 20 64 6f 6d 20 3d 20 72 6f 6f 74 dom = root
15790 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 ;. } else {.
157a0 20 20 20 20 20 69 66 20 28 21 69 73 56 69 72 74 if (!isVirt
157b0 75 61 6c 29 20 7b 20 72 6f 6f 74 2e 69 6e 6e 65 ual) { root.inne
157c0 72 48 54 4d 4c 20 3d 20 27 27 3b 20 7d 0a 20 20 rHTML = ''; }.
157d0 20 20 20 20 64 6f 6d 20 3d 20 6d 6b 64 6f 6d 28 dom = mkdom(
157e0 74 6d 70 6c 2c 20 69 6e 6e 65 72 48 54 4d 4c 2c tmpl, innerHTML,
157f0 20 69 73 53 76 67 28 72 6f 6f 74 29 29 3b 0a 20 isSvg(root));.
15800 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d 61 6b }.. // mak
15810 65 20 74 68 69 73 20 74 61 67 20 6f 62 73 65 72 e this tag obser
15820 76 61 62 6c 65 0a 20 20 20 20 69 66 20 28 21 73 vable. if (!s
15830 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b 20 kipAnonymous) {
15840 6f 62 73 65 72 76 61 62 6c 65 28 74 61 67 29 3b observable(tag);
15850 20 7d 0a 0a 20 20 20 20 2f 2f 20 6f 6e 6c 79 20 }.. // only
15860 63 61 6c 6c 20 75 6e 6d 6f 75 6e 74 20 69 66 20 call unmount if
15870 77 65 20 68 61 76 65 20 61 20 76 61 6c 69 64 20 we have a valid
15880 5f 5f 54 41 47 5f 49 4d 50 4c 20 28 68 61 73 20 __TAG_IMPL (has
15890 6e 61 6d 65 20 70 72 6f 70 65 72 74 79 29 0a 20 name property).
158a0 20 20 20 69 66 20 28 69 6d 70 6c 2e 6e 61 6d 65 if (impl.name
158b0 20 26 26 20 72 6f 6f 74 2e 5f 74 61 67 29 20 7b && root._tag) {
158c0 20 72 6f 6f 74 2e 5f 74 61 67 2e 75 6e 6d 6f 75 root._tag.unmou
158d0 6e 74 28 74 72 75 65 29 3b 20 7d 0a 0a 20 20 20 nt(true); }..
158e0 20 64 65 66 69 6e 65 28 74 61 67 2c 20 27 5f 5f define(tag, '__
158f0 27 2c 20 7b 0a 20 20 20 20 20 20 69 6d 70 6c 3a ', {. impl:
15900 20 69 6d 70 6c 2c 0a 20 20 20 20 20 20 72 6f 6f impl,. roo
15910 74 3a 20 72 6f 6f 74 2c 0a 20 20 20 20 20 20 73 t: root,. s
15920 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3a 20 73 6b kipAnonymous: sk
15930 69 70 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20 20 ipAnonymous,.
15940 20 20 20 69 6d 70 6c 41 74 74 72 73 3a 20 69 6d implAttrs: im
15950 70 6c 41 74 74 72 73 2c 0a 20 20 20 20 20 20 69 plAttrs,. i
15960 73 41 6e 6f 6e 79 6d 6f 75 73 3a 20 69 73 41 6e sAnonymous: isAn
15970 6f 6e 79 6d 6f 75 73 2c 0a 20 20 20 20 20 20 69 onymous,. i
15980 6e 73 74 41 74 74 72 73 3a 20 69 6e 73 74 41 74 nstAttrs: instAt
15990 74 72 73 2c 0a 20 20 20 20 20 20 69 6e 6e 65 72 trs,. inner
159a0 48 54 4d 4c 3a 20 69 6e 6e 65 72 48 54 4d 4c 2c HTML: innerHTML,
159b0 0a 20 20 20 20 20 20 74 61 67 4e 61 6d 65 3a 20 . tagName:
159c0 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 20 69 tagName,. i
159d0 6e 64 65 78 3a 20 69 6e 64 65 78 2c 0a 20 20 20 ndex: index,.
159e0 20 20 20 69 73 4c 6f 6f 70 3a 20 69 73 4c 6f 6f isLoop: isLoo
159f0 70 2c 0a 20 20 20 20 20 20 69 73 49 6e 6c 69 6e p,. isInlin
15a00 65 3a 20 69 73 49 6e 6c 69 6e 65 2c 0a 20 20 20 e: isInline,.
15a10 20 20 20 69 74 65 6d 3a 20 69 74 65 6d 2c 0a 20 item: item,.
15a20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70 61 72 parent: par
15a30 65 6e 74 2c 0a 20 20 20 20 20 20 2f 2f 20 74 61 ent,. // ta
15a40 67 73 20 68 61 76 69 6e 67 20 65 76 65 6e 74 20 gs having event
15a50 6c 69 73 74 65 6e 65 72 73 0a 20 20 20 20 20 20 listeners.
15a60 2f 2f 20 69 74 20 77 6f 75 6c 64 20 62 65 20 62 // it would be b
15a70 65 74 74 65 72 20 74 6f 20 75 73 65 20 77 65 61 etter to use wea
15a80 6b 20 6d 61 70 73 20 68 65 72 65 20 62 75 74 20 k maps here but
15a90 77 65 20 63 61 6e 20 6e 6f 74 20 69 6e 74 72 6f we can not intro
15aa0 64 75 63 65 20 62 72 65 61 6b 69 6e 67 20 63 68 duce breaking ch
15ab0 61 6e 67 65 73 20 6e 6f 77 0a 20 20 20 20 20 20 anges now.
15ac0 6c 69 73 74 65 6e 65 72 73 3a 20 5b 5d 2c 0a 20 listeners: [],.
15ad0 20 20 20 20 20 2f 2f 20 74 68 65 73 65 20 76 61 // these va
15ae0 72 73 20 77 69 6c 6c 20 62 65 20 6e 65 65 64 65 rs will be neede
15af0 64 20 6f 6e 6c 79 20 66 6f 72 20 74 68 65 20 76 d only for the v
15b00 69 72 74 75 61 6c 20 74 61 67 73 0a 20 20 20 20 irtual tags.
15b10 20 20 76 69 72 74 73 3a 20 5b 5d 2c 0a 20 20 20 virts: [],.
15b20 20 20 20 77 61 73 43 72 65 61 74 65 64 3a 20 66 wasCreated: f
15b30 61 6c 73 65 2c 0a 20 20 20 20 20 20 74 61 69 6c alse,. tail
15b40 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 68 65 : null,. he
15b50 61 64 3a 20 6e 75 6c 6c 0a 20 20 20 20 7d 29 3b ad: null. });
15b60 0a 0a 20 20 20 20 2f 2f 20 74 61 67 20 70 72 6f .. // tag pro
15b70 74 65 63 74 65 64 20 70 72 6f 70 65 72 74 69 65 tected propertie
15b80 73 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 0a 20 s. return [.
15b90 20 20 20 20 20 5b 27 69 73 4d 6f 75 6e 74 65 64 ['isMounted
15ba0 27 2c 20 66 61 6c 73 65 5d 2c 0a 20 20 20 20 20 ', false],.
15bb0 20 2f 2f 20 63 72 65 61 74 65 20 61 20 75 6e 69 // create a uni
15bc0 71 75 65 20 69 64 20 74 6f 20 74 68 69 73 20 74 que id to this t
15bd0 61 67 0a 20 20 20 20 20 20 2f 2f 20 69 74 20 63 ag. // it c
15be0 6f 75 6c 64 20 62 65 20 68 61 6e 64 79 20 74 6f ould be handy to
15bf0 20 75 73 65 20 69 74 20 61 6c 73 6f 20 74 6f 20 use it also to
15c00 69 6d 70 72 6f 76 65 20 74 68 65 20 76 69 72 74 improve the virt
15c10 75 61 6c 20 64 6f 6d 20 72 65 6e 64 65 72 69 6e ual dom renderin
15c20 67 20 73 70 65 65 64 0a 20 20 20 20 20 20 5b 27 g speed. ['
15c30 5f 72 69 6f 74 5f 69 64 27 2c 20 75 69 64 28 29 _riot_id', uid()
15c40 5d 2c 0a 20 20 20 20 20 20 5b 27 72 6f 6f 74 27 ],. ['root'
15c50 2c 20 72 6f 6f 74 5d 2c 0a 20 20 20 20 20 20 5b , root],. [
15c60 27 6f 70 74 73 27 2c 20 6f 70 74 73 2c 20 7b 20 'opts', opts, {
15c70 77 72 69 74 61 62 6c 65 3a 20 74 72 75 65 2c 20 writable: true,
15c80 65 6e 75 6d 65 72 61 62 6c 65 3a 20 74 72 75 65 enumerable: true
15c90 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 70 61 72 }],. ['par
15ca0 65 6e 74 27 2c 20 70 61 72 65 6e 74 20 7c 7c 20 ent', parent ||
15cb0 6e 75 6c 6c 5d 2c 0a 20 20 20 20 20 20 2f 2f 20 null],. //
15cc0 70 72 6f 74 65 63 74 20 74 68 65 20 22 74 61 67 protect the "tag
15cd0 73 22 20 61 6e 64 20 22 72 65 66 73 22 20 70 72 s" and "refs" pr
15ce0 6f 70 65 72 74 79 20 66 72 6f 6d 20 62 65 69 6e operty from bein
15cf0 67 20 6f 76 65 72 72 69 64 64 65 6e 0a 20 20 20 g overridden.
15d00 20 20 20 5b 27 74 61 67 73 27 2c 20 7b 7d 5d 2c ['tags', {}],
15d10 0a 20 20 20 20 20 20 5b 27 72 65 66 73 27 2c 20 . ['refs',
15d20 7b 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 75 70 64 {}],. ['upd
15d30 61 74 65 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ate', function (
15d40 64 61 74 61 29 20 7b 20 72 65 74 75 72 6e 20 63 data) { return c
15d50 6f 6d 70 6f 6e 65 6e 74 55 70 64 61 74 65 28 74 omponentUpdate(t
15d60 61 67 2c 20 64 61 74 61 2c 20 65 78 70 72 65 73 ag, data, expres
15d70 73 69 6f 6e 73 29 3b 20 7d 5d 2c 0a 20 20 20 20 sions); }],.
15d80 20 20 5b 27 6d 69 78 69 6e 27 2c 20 66 75 6e 63 ['mixin', func
15d90 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 tion () {.
15da0 20 20 76 61 72 20 6d 69 78 69 6e 73 20 3d 20 5b var mixins = [
15db0 5d 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d 65 6e ], len = argumen
15dc0 74 73 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 20 ts.length;.
15dd0 20 20 20 77 68 69 6c 65 20 28 20 6c 65 6e 2d 2d while ( len--
15de0 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65 6e 20 5d ) mixins[ len ]
15df0 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20 6c 65 = arguments[ le
15e00 6e 20 5d 3b 0a 0a 20 20 20 20 20 20 20 20 72 65 n ];.. re
15e10 74 75 72 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 69 turn componentMi
15e20 78 69 6e 2e 61 70 70 6c 79 28 76 6f 69 64 20 30 xin.apply(void 0
15e30 2c 20 5b 20 74 61 67 20 5d 2e 63 6f 6e 63 61 74 , [ tag ].concat
15e40 28 20 6d 69 78 69 6e 73 20 29 29 3b 0a 20 20 20 ( mixins ));.
15e50 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 6d 6f 75 }],. ['mou
15e60 6e 74 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 nt', function ()
15e70 20 7b 20 72 65 74 75 72 6e 20 63 6f 6d 70 6f 6e { return compon
15e80 65 6e 74 4d 6f 75 6e 74 28 74 61 67 2c 20 64 6f entMount(tag, do
15e90 6d 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 m, expressions,
15ea0 6f 70 74 73 29 3b 20 7d 5d 2c 0a 20 20 20 20 20 opts); }],.
15eb0 20 5b 27 75 6e 6d 6f 75 6e 74 27 2c 20 66 75 6e ['unmount', fun
15ec0 63 74 69 6f 6e 20 28 6d 75 73 74 4b 65 65 70 52 ction (mustKeepR
15ed0 6f 6f 74 29 20 7b 20 72 65 74 75 72 6e 20 74 61 oot) { return ta
15ee0 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20 6d 75 gUnmount(tag, mu
15ef0 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78 70 72 stKeepRoot, expr
15f00 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 0a 20 20 20 essions); }].
15f10 20 5d 2e 72 65 64 75 63 65 28 66 75 6e 63 74 69 ].reduce(functi
15f20 6f 6e 20 28 61 63 63 2c 20 72 65 66 29 20 7b 0a on (acc, ref) {.
15f30 20 20 20 20 20 20 76 61 72 20 6b 65 79 20 3d 20 var key =
15f40 72 65 66 5b 30 5d 3b 0a 20 20 20 20 20 20 76 61 ref[0];. va
15f50 72 20 76 61 6c 75 65 20 3d 20 72 65 66 5b 31 5d r value = ref[1]
15f60 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 70 74 73 ;. var opts
15f70 20 3d 20 72 65 66 5b 32 5d 3b 0a 0a 20 20 20 20 = ref[2];..
15f80 20 20 64 65 66 69 6e 65 28 74 61 67 2c 20 6b 65 define(tag, ke
15f90 79 2c 20 76 61 6c 75 65 2c 20 6f 70 74 73 29 3b y, value, opts);
15fa0 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 63 . return ac
15fb0 63 0a 20 20 20 20 7d 2c 20 65 78 74 65 6e 64 28 c. }, extend(
15fc0 74 61 67 2c 20 69 74 65 6d 29 29 0a 20 20 7d 0a tag, item)). }.
15fd0 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f 75 6e . /**. * Moun
15fe0 74 20 61 20 74 61 67 20 63 72 65 61 74 69 6e 67 t a tag creating
15ff0 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61 6e 63 new Tag instanc
16000 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 e. * @param
16010 7b 20 4f 62 6a 65 63 74 20 7d 20 72 6f 6f 74 20 { Object } root
16020 2d 20 64 6f 6d 20 6e 6f 64 65 20 77 68 65 72 65 - dom node where
16030 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20 62 65 the tag will be
16040 20 6d 6f 75 6e 74 65 64 0a 20 20 20 2a 20 40 70 mounted. * @p
16050 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 aram { String
16060 7d 20 74 61 67 4e 61 6d 65 20 2d 20 6e 61 6d 65 } tagName - name
16070 20 6f 66 20 74 68 65 20 72 69 6f 74 20 74 61 67 of the riot tag
16080 20 77 65 20 77 61 6e 74 20 74 6f 20 6d 6f 75 6e we want to moun
16090 74 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 t. * @param
160a0 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 { Object } opts
160b0 2d 20 6f 70 74 69 6f 6e 73 20 74 6f 20 70 61 73 - options to pas
160c0 73 20 74 6f 20 74 68 65 20 54 61 67 20 69 6e 73 s to the Tag ins
160d0 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61 72 61 tance. * @para
160e0 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 m { Object } c
160f0 74 78 20 2d 20 6f 70 74 69 6f 6e 61 6c 20 63 6f tx - optional co
16100 6e 74 65 78 74 20 74 68 61 74 20 77 69 6c 6c 20 ntext that will
16110 62 65 20 75 73 65 64 20 74 6f 20 65 78 74 65 6e be used to exten
16120 64 20 61 6e 20 65 78 69 73 74 69 6e 67 20 63 6c d an existing cl
16130 61 73 73 20 28 20 75 73 65 64 20 69 6e 20 72 69 ass ( used in ri
16140 6f 74 2e 54 61 67 20 29 0a 20 20 20 2a 20 40 72 ot.Tag ). * @r
16150 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 61 eturns { Tag } a
16160 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61 6e 63 new Tag instanc
16170 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 e. */. functi
16180 6f 6e 20 6d 6f 75 6e 74 24 31 28 72 6f 6f 74 2c on mount$1(root,
16190 20 74 61 67 4e 61 6d 65 2c 20 6f 70 74 73 2c 20 tagName, opts,
161a0 63 74 78 29 20 7b 0a 20 20 20 20 76 61 72 20 69 ctx) {. var i
161b0 6d 70 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c mpl = __TAG_IMPL
161c0 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 [tagName];. v
161d0 61 72 20 69 6d 70 6c 43 6c 61 73 73 20 3d 20 5f ar implClass = _
161e0 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e 61 6d _TAG_IMPL[tagNam
161f0 65 5d 2e 63 6c 61 73 73 3b 0a 20 20 20 20 76 61 e].class;. va
16200 72 20 63 6f 6e 74 65 78 74 20 3d 20 63 74 78 20 r context = ctx
16210 7c 7c 20 28 69 6d 70 6c 43 6c 61 73 73 20 3f 20 || (implClass ?
16220 63 72 65 61 74 65 28 69 6d 70 6c 43 6c 61 73 73 create(implClass
16230 2e 70 72 6f 74 6f 74 79 70 65 29 20 3a 20 7b 7d .prototype) : {}
16240 29 3b 0a 20 20 20 20 2f 2f 20 63 61 63 68 65 20 );. // cache
16250 74 68 65 20 69 6e 6e 65 72 20 48 54 4d 4c 20 74 the inner HTML t
16260 6f 20 66 69 78 20 23 38 35 35 0a 20 20 20 20 76 o fix #855. v
16270 61 72 20 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 72 ar innerHTML = r
16280 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54 4d 4c 20 3d oot._innerHTML =
16290 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54 4d 4c root._innerHTML
162a0 20 7c 7c 20 72 6f 6f 74 2e 69 6e 6e 65 72 48 54 || root.innerHT
162b0 4d 4c 3b 0a 20 20 20 20 76 61 72 20 63 6f 6e 66 ML;. var conf
162c0 20 3d 20 65 78 74 65 6e 64 28 7b 20 72 6f 6f 74 = extend({ root
162d0 3a 20 72 6f 6f 74 2c 20 6f 70 74 73 3a 20 6f 70 : root, opts: op
162e0 74 73 2c 20 63 6f 6e 74 65 78 74 3a 20 63 6f 6e ts, context: con
162f0 74 65 78 74 20 7d 2c 20 7b 20 70 61 72 65 6e 74 text }, { parent
16300 3a 20 6f 70 74 73 20 3f 20 6f 70 74 73 2e 70 61 : opts ? opts.pa
16310 72 65 6e 74 20 3a 20 6e 75 6c 6c 20 7d 29 3b 0a rent : null });.
16320 20 20 20 20 76 61 72 20 74 61 67 3b 0a 0a 20 20 var tag;..
16330 20 20 69 66 20 28 69 6d 70 6c 20 26 26 20 72 6f if (impl && ro
16340 6f 74 29 20 7b 20 74 61 67 20 3d 20 63 72 65 61 ot) { tag = crea
16350 74 65 54 61 67 28 69 6d 70 6c 2c 20 63 6f 6e 66 teTag(impl, conf
16360 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 3b 20 7d 0a , innerHTML); }.
16370 0a 20 20 20 20 69 66 20 28 74 61 67 20 26 26 20 . if (tag &&
16380 74 61 67 2e 6d 6f 75 6e 74 29 20 7b 0a 20 20 20 tag.mount) {.
16390 20 20 20 74 61 67 2e 6d 6f 75 6e 74 28 74 72 75 tag.mount(tru
163a0 65 29 3b 0a 20 20 20 20 20 20 2f 2f 20 61 64 64 e);. // add
163b0 20 74 68 69 73 20 74 61 67 20 74 6f 20 74 68 65 this tag to the
163c0 20 76 69 72 74 75 61 6c 44 6f 6d 20 76 61 72 69 virtualDom vari
163d0 61 62 6c 65 0a 20 20 20 20 20 20 69 66 20 28 21 able. if (!
163e0 63 6f 6e 74 61 69 6e 73 28 5f 5f 54 41 47 53 5f contains(__TAGS_
163f0 43 41 43 48 45 2c 20 74 61 67 29 29 20 7b 20 5f CACHE, tag)) { _
16400 5f 54 41 47 53 5f 43 41 43 48 45 2e 70 75 73 68 _TAGS_CACHE.push
16410 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 7d 0a 0a (tag); }. }..
16420 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 return tag.
16430 20 7d 0a 0a 0a 0a 20 20 76 61 72 20 74 61 67 73 }.... var tags
16440 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f 5f 2a 2f = /*#__PURE__*/
16450 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 28 7b 0a Object.freeze({.
16460 20 20 20 20 61 72 72 61 79 69 73 68 41 64 64 3a arrayishAdd:
16470 20 61 72 72 61 79 69 73 68 41 64 64 2c 0a 20 20 arrayishAdd,.
16480 20 20 67 65 74 54 61 67 4e 61 6d 65 3a 20 67 65 getTagName: ge
16490 74 4e 61 6d 65 2c 0a 20 20 20 20 69 6e 68 65 72 tName,. inher
164a0 69 74 50 61 72 65 6e 74 50 72 6f 70 73 3a 20 69 itParentProps: i
164b0 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72 6f 70 nheritParentProp
164c0 73 2c 0a 20 20 20 20 6d 6f 75 6e 74 54 6f 3a 20 s,. mountTo:
164d0 6d 6f 75 6e 74 24 31 2c 0a 20 20 20 20 73 65 6c mount$1,. sel
164e0 65 63 74 54 61 67 73 3a 20 71 75 65 72 79 2c 0a ectTags: query,.
164f0 20 20 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f arrayishRemo
16500 76 65 3a 20 61 72 72 61 79 69 73 68 52 65 6d 6f ve: arrayishRemo
16510 76 65 2c 0a 20 20 20 20 67 65 74 54 61 67 3a 20 ve,. getTag:
16520 67 65 74 2c 0a 20 20 20 20 69 6e 69 74 43 68 69 get,. initChi
16530 6c 64 54 61 67 3a 20 69 6e 69 74 43 68 69 6c 64 ldTag: initChild
16540 2c 0a 20 20 20 20 6d 6f 76 65 43 68 69 6c 64 54 ,. moveChildT
16550 61 67 3a 20 6d 6f 76 65 43 68 69 6c 64 2c 0a 20 ag: moveChild,.
16560 20 20 20 6d 61 6b 65 52 65 70 6c 61 63 65 56 69 makeReplaceVi
16570 72 74 75 61 6c 3a 20 6d 61 6b 65 52 65 70 6c 61 rtual: makeRepla
16580 63 65 56 69 72 74 75 61 6c 2c 0a 20 20 20 20 67 ceVirtual,. g
16590 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f etImmediateCusto
165a0 6d 50 61 72 65 6e 74 54 61 67 3a 20 67 65 74 49 mParentTag: getI
165b0 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50 61 mmediateCustomPa
165c0 72 65 6e 74 2c 0a 20 20 20 20 6d 61 6b 65 56 69 rent,. makeVi
165d0 72 74 75 61 6c 3a 20 6d 61 6b 65 56 69 72 74 75 rtual: makeVirtu
165e0 61 6c 2c 0a 20 20 20 20 6d 6f 76 65 56 69 72 74 al,. moveVirt
165f0 75 61 6c 3a 20 6d 6f 76 65 56 69 72 74 75 61 6c ual: moveVirtual
16600 2c 0a 20 20 20 20 75 6e 6d 6f 75 6e 74 41 6c 6c ,. unmountAll
16610 3a 20 75 6e 6d 6f 75 6e 74 41 6c 6c 2c 0a 20 20 : unmountAll,.
16620 20 20 63 72 65 61 74 65 49 66 44 69 72 65 63 74 createIfDirect
16630 69 76 65 3a 20 63 72 65 61 74 65 49 66 44 69 72 ive: createIfDir
16640 65 63 74 69 76 65 2c 0a 20 20 20 20 63 72 65 61 ective,. crea
16650 74 65 52 65 66 44 69 72 65 63 74 69 76 65 3a 20 teRefDirective:
16660 63 72 65 61 74 65 52 65 66 44 69 72 65 63 74 69 createRefDirecti
16670 76 65 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a ve. });.. /**.
16680 20 20 20 2a 20 52 69 6f 74 20 70 75 62 6c 69 63 * Riot public
16690 20 61 70 69 0a 20 20 20 2a 2f 0a 20 20 76 61 72 api. */. var
166a0 20 73 65 74 74 69 6e 67 73 24 31 20 3d 20 73 65 settings$1 = se
166b0 74 74 69 6e 67 73 3b 0a 20 20 76 61 72 20 75 74 ttings;. var ut
166c0 69 6c 20 3d 20 7b 0a 20 20 20 20 74 6d 70 6c 3a il = {. tmpl:
166d0 20 74 6d 70 6c 2c 0a 20 20 20 20 62 72 61 63 6b tmpl,. brack
166e0 65 74 73 3a 20 62 72 61 63 6b 65 74 73 2c 0a 20 ets: brackets,.
166f0 20 20 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 3a styleManager:
16700 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2c 0a 20 styleManager,.
16710 20 20 20 76 64 6f 6d 3a 20 5f 5f 54 41 47 53 5f vdom: __TAGS_
16720 43 41 43 48 45 2c 0a 20 20 20 20 73 74 79 6c 65 CACHE,. style
16730 4e 6f 64 65 3a 20 73 74 79 6c 65 4d 61 6e 61 67 Node: styleManag
16740 65 72 2e 73 74 79 6c 65 4e 6f 64 65 2c 0a 20 20 er.styleNode,.
16750 20 20 2f 2f 20 65 78 70 6f 72 74 20 74 68 65 20 // export the
16760 72 69 6f 74 20 69 6e 74 65 72 6e 61 6c 20 75 74 riot internal ut
16770 69 6c 73 20 61 73 20 77 65 6c 6c 0a 20 20 20 20 ils as well.
16780 64 6f 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20 63 68 dom: dom,. ch
16790 65 63 6b 3a 20 63 68 65 63 6b 2c 0a 20 20 20 20 eck: check,.
167a0 6d 69 73 63 3a 20 6d 69 73 63 2c 0a 20 20 20 20 misc: misc,.
167b0 74 61 67 73 3a 20 74 61 67 73 0a 20 20 7d 3b 0a tags: tags. };.
167c0 0a 20 20 2f 2f 20 65 78 70 6f 72 74 20 74 68 65 . // export the
167d0 20 63 6f 72 65 20 70 72 6f 70 73 2f 6d 65 74 68 core props/meth
167e0 6f 64 73 0a 20 20 76 61 72 20 54 61 67 24 31 20 ods. var Tag$1
167f0 3d 20 54 61 67 3b 0a 20 20 76 61 72 20 74 61 67 = Tag;. var tag
16800 24 31 20 3d 20 74 61 67 3b 0a 20 20 76 61 72 20 $1 = tag;. var
16810 74 61 67 32 24 31 20 3d 20 74 61 67 32 3b 0a 20 tag2$1 = tag2;.
16820 20 76 61 72 20 6d 6f 75 6e 74 24 32 20 3d 20 6d var mount$2 = m
16830 6f 75 6e 74 3b 0a 20 20 76 61 72 20 6d 69 78 69 ount;. var mixi
16840 6e 24 31 20 3d 20 6d 69 78 69 6e 3b 0a 20 20 76 n$1 = mixin;. v
16850 61 72 20 75 70 64 61 74 65 24 32 20 3d 20 75 70 ar update$2 = up
16860 64 61 74 65 24 31 3b 0a 20 20 76 61 72 20 75 6e date$1;. var un
16870 72 65 67 69 73 74 65 72 24 31 20 3d 20 75 6e 72 register$1 = unr
16880 65 67 69 73 74 65 72 3b 0a 20 20 76 61 72 20 76 egister;. var v
16890 65 72 73 69 6f 6e 24 31 20 3d 20 76 65 72 73 69 ersion$1 = versi
168a0 6f 6e 3b 0a 20 20 76 61 72 20 6f 62 73 65 72 76 on;. var observ
168b0 61 62 6c 65 24 31 20 3d 20 6f 62 73 65 72 76 61 able$1 = observa
168c0 62 6c 65 3b 0a 0a 20 20 76 61 72 20 72 69 6f 74 ble;.. var riot
168d0 24 31 20 3d 20 65 78 74 65 6e 64 28 7b 7d 2c 20 $1 = extend({},
168e0 63 6f 72 65 2c 20 7b 0a 20 20 20 20 6f 62 73 65 core, {. obse
168f0 72 76 61 62 6c 65 3a 20 6f 62 73 65 72 76 61 62 rvable: observab
16900 6c 65 2c 0a 20 20 20 20 73 65 74 74 69 6e 67 73 le,. settings
16910 3a 20 73 65 74 74 69 6e 67 73 24 31 2c 0a 20 20 : settings$1,.
16920 20 20 75 74 69 6c 3a 20 75 74 69 6c 2c 0a 20 20 util: util,.
16930 7d 29 3b 0a 0a 20 20 65 78 70 6f 72 74 73 2e 73 });.. exports.s
16940 65 74 74 69 6e 67 73 20 3d 20 73 65 74 74 69 6e ettings = settin
16950 67 73 24 31 3b 0a 20 20 65 78 70 6f 72 74 73 2e gs$1;. exports.
16960 75 74 69 6c 20 3d 20 75 74 69 6c 3b 0a 20 20 65 util = util;. e
16970 78 70 6f 72 74 73 2e 54 61 67 20 3d 20 54 61 67 xports.Tag = Tag
16980 24 31 3b 0a 20 20 65 78 70 6f 72 74 73 2e 74 61 $1;. exports.ta
16990 67 20 3d 20 74 61 67 24 31 3b 0a 20 20 65 78 70 g = tag$1;. exp
169a0 6f 72 74 73 2e 74 61 67 32 20 3d 20 74 61 67 32 orts.tag2 = tag2
169b0 24 31 3b 0a 20 20 65 78 70 6f 72 74 73 2e 6d 6f $1;. exports.mo
169c0 75 6e 74 20 3d 20 6d 6f 75 6e 74 24 32 3b 0a 20 unt = mount$2;.
169d0 20 65 78 70 6f 72 74 73 2e 6d 69 78 69 6e 20 3d exports.mixin =
169e0 20 6d 69 78 69 6e 24 31 3b 0a 20 20 65 78 70 6f mixin$1;. expo
169f0 72 74 73 2e 75 70 64 61 74 65 20 3d 20 75 70 64 rts.update = upd
16a00 61 74 65 24 32 3b 0a 20 20 65 78 70 6f 72 74 73 ate$2;. exports
16a10 2e 75 6e 72 65 67 69 73 74 65 72 20 3d 20 75 6e .unregister = un
16a20 72 65 67 69 73 74 65 72 24 31 3b 0a 20 20 65 78 register$1;. ex
16a30 70 6f 72 74 73 2e 76 65 72 73 69 6f 6e 20 3d 20 ports.version =
16a40 76 65 72 73 69 6f 6e 24 31 3b 0a 20 20 65 78 70 version$1;. exp
16a50 6f 72 74 73 2e 6f 62 73 65 72 76 61 62 6c 65 20 orts.observable
16a60 3d 20 6f 62 73 65 72 76 61 62 6c 65 24 31 3b 0a = observable$1;.
16a70 20 20 65 78 70 6f 72 74 73 2e 64 65 66 61 75 6c exports.defaul
16a80 74 20 3d 20 72 69 6f 74 24 31 3b 0a 0a 20 20 4f t = riot$1;.. O
16a90 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
16aa0 65 72 74 79 28 65 78 70 6f 72 74 73 2c 20 27 5f erty(exports, '_
16ab0 5f 65 73 4d 6f 64 75 6c 65 27 2c 20 7b 20 76 61 _esModule', { va
16ac0 6c 75 65 3a 20 74 72 75 65 20 7d 29 3b 0a 0a 7d lue: true });..}
16ad0 29 29 29 3b 0a )));.