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: 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 74 73 20 3d module.exports =
0090: 20 66 61 63 74 6f 72 79 28 29 20 3a 0a 20 20 74 factory() :. t
00a0: 79 70 65 6f 66 20 64 65 66 69 6e 65 20 3d 3d 3d ypeof define ===
00b0: 20 27 66 75 6e 63 74 69 6f 6e 27 20 26 26 20 64 'function' && d
00c0: 65 66 69 6e 65 2e 61 6d 64 20 3f 20 64 65 66 69 efine.amd ? defi
00d0: 6e 65 28 66 61 63 74 6f 72 79 29 20 3a 0a 20 20 ne(factory) :.
00e0: 28 67 6c 6f 62 61 6c 2e 72 69 6f 74 20 3d 20 66 (global.riot = f
00f0: 61 63 74 6f 72 79 28 29 29 3b 0a 7d 28 74 68 69 actory());.}(thi
0100: 73 2c 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 s, (function ()
0110: 7b 20 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a { 'use strict';.
0120: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72 . /**. * Shor
0130: 74 65 72 20 61 6e 64 20 66 61 73 74 20 77 61 79 ter and fast way
0140: 20 74 6f 20 73 65 6c 65 63 74 20 61 20 73 69 6e to select a sin
0150: 67 6c 65 20 6e 6f 64 65 20 69 6e 20 74 68 65 20 gle node in the
0160: 44 4f 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 DOM. * @param
0170: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c { String } sel
0180: 65 63 74 6f 72 20 2d 20 75 6e 69 71 75 65 20 64 ector - unique d
0190: 6f 6d 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a om selector. *
01a0: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
01b0: 63 74 20 7d 20 63 74 78 20 2d 20 44 4f 4d 20 6e ct } ctx - DOM n
01c0: 6f 64 65 20 77 68 65 72 65 20 74 68 65 20 74 61 ode where the ta
01d0: 72 67 65 74 20 6f 66 20 6f 75 72 20 73 65 61 72 rget of our sear
01e0: 63 68 20 77 69 6c 6c 20 69 73 20 6c 6f 63 61 74 ch will is locat
01f0: 65 64 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 ed. * @returns
0200: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 { Object } dom
0210: 6e 6f 64 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f node found. */
0220: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 24 28 73 65 . function $(se
0230: 6c 65 63 74 6f 72 2c 20 63 74 78 29 20 7b 0a 20 lector, ctx) {.
0240: 20 20 20 72 65 74 75 72 6e 20 28 63 74 78 20 7c return (ctx |
0250: 7c 20 64 6f 63 75 6d 65 6e 74 29 2e 71 75 65 72 | document).quer
0260: 79 53 65 6c 65 63 74 6f 72 28 73 65 6c 65 63 74 ySelector(select
0270: 6f 72 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a 20 or). }.. var.
0280: 20 20 20 2f 2f 20 62 65 20 61 77 61 72 65 2c 20 // be aware,
0290: 69 6e 74 65 72 6e 61 6c 20 75 73 61 67 65 0a 20 internal usage.
02a0: 20 20 20 2f 2f 20 41 54 54 45 4e 54 49 4f 4e 3a // ATTENTION:
02b0: 20 70 72 65 66 69 78 20 74 68 65 20 67 6c 6f 62 prefix the glob
02c0: 61 6c 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61 al dynamic varia
02d0: 62 6c 65 73 20 77 69 74 68 20 60 5f 5f 60 0a 20 bles with `__`.
02e0: 20 20 20 2f 2f 20 74 61 67 73 20 69 6e 73 74 61 // tags insta
02f0: 6e 63 65 73 20 63 61 63 68 65 0a 20 20 20 20 5f nces cache. _
0300: 5f 54 41 47 53 5f 43 41 43 48 45 20 3d 20 5b 5d _TAGS_CACHE = []
0310: 2c 0a 20 20 20 20 2f 2f 20 74 61 67 73 20 69 6d ,. // tags im
0320: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 63 plementation cac
0330: 68 65 0a 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 he. __TAG_IMP
0340: 4c 20 3d 20 7b 7d 2c 0a 20 20 20 20 59 49 45 4c L = {},. YIEL
0350: 44 5f 54 41 47 20 3d 20 27 79 69 65 6c 64 27 2c D_TAG = 'yield',
0360: 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a .. /**. *
0370: 20 43 6f 6e 73 74 0a 20 20 20 20 20 2a 2f 0a 20 Const. */.
0380: 20 20 20 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e 20 GLOBAL_MIXIN
0390: 3d 20 27 5f 5f 67 6c 6f 62 61 6c 5f 6d 69 78 69 = '__global_mixi
03a0: 6e 27 2c 0a 0a 20 20 20 20 2f 2f 20 72 69 6f 74 n',.. // riot
03b0: 20 73 70 65 63 69 66 69 63 20 70 72 65 66 69 78 specific prefix
03c0: 65 73 20 6f 72 20 61 74 74 72 69 62 75 74 65 73 es or attributes
03d0: 0a 20 20 20 20 41 54 54 52 53 5f 50 52 45 46 49 . ATTRS_PREFI
03e0: 58 20 3d 20 27 72 69 6f 74 2d 27 2c 0a 0a 20 20 X = 'riot-',..
03f0: 20 20 2f 2f 20 52 69 6f 74 20 44 69 72 65 63 74 // Riot Direct
0400: 69 76 65 73 0a 20 20 20 20 52 45 46 5f 44 49 52 ives. REF_DIR
0410: 45 43 54 49 56 45 53 20 3d 20 5b 27 72 65 66 27 ECTIVES = ['ref'
0420: 2c 20 27 64 61 74 61 2d 72 65 66 27 5d 2c 0a 20 , 'data-ref'],.
0430: 20 20 20 49 53 5f 44 49 52 45 43 54 49 56 45 20 IS_DIRECTIVE
0440: 3d 20 27 64 61 74 61 2d 69 73 27 2c 0a 20 20 20 = 'data-is',.
0450: 20 43 4f 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 CONDITIONAL_DIR
0460: 45 43 54 49 56 45 20 3d 20 27 69 66 27 2c 0a 20 ECTIVE = 'if',.
0470: 20 20 20 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56 LOOP_DIRECTIV
0480: 45 20 3d 20 27 65 61 63 68 27 2c 0a 20 20 20 20 E = 'each',.
0490: 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 45 52 5f LOOP_NO_REORDER_
04a0: 44 49 52 45 43 54 49 56 45 20 3d 20 27 6e 6f 2d DIRECTIVE = 'no-
04b0: 72 65 6f 72 64 65 72 27 2c 0a 20 20 20 20 53 48 reorder',. SH
04c0: 4f 57 5f 44 49 52 45 43 54 49 56 45 20 3d 20 27 OW_DIRECTIVE = '
04d0: 73 68 6f 77 27 2c 0a 20 20 20 20 48 49 44 45 5f show',. HIDE_
04e0: 44 49 52 45 43 54 49 56 45 20 3d 20 27 68 69 64 DIRECTIVE = 'hid
04f0: 65 27 2c 0a 20 20 20 20 4b 45 59 5f 44 49 52 45 e',. KEY_DIRE
0500: 43 54 49 56 45 20 3d 20 27 6b 65 79 27 2c 0a 20 CTIVE = 'key',.
0510: 20 20 20 52 49 4f 54 5f 45 56 45 4e 54 53 5f 4b RIOT_EVENTS_K
0520: 45 59 20 3d 20 27 5f 5f 72 69 6f 74 2d 65 76 65 EY = '__riot-eve
0530: 6e 74 73 5f 5f 27 2c 0a 0a 20 20 20 20 2f 2f 20 nts__',.. //
0540: 66 6f 72 20 74 79 70 65 6f 66 20 3d 3d 20 27 27 for typeof == ''
0550: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 0a 20 20 20 comparisons.
0560: 20 54 5f 53 54 52 49 4e 47 20 3d 20 27 73 74 72 T_STRING = 'str
0570: 69 6e 67 27 2c 0a 20 20 20 20 54 5f 4f 42 4a 45 ing',. T_OBJE
0580: 43 54 20 3d 20 27 6f 62 6a 65 63 74 27 2c 0a 20 CT = 'object',.
0590: 20 20 20 54 5f 55 4e 44 45 46 20 20 3d 20 27 75 T_UNDEF = 'u
05a0: 6e 64 65 66 69 6e 65 64 27 2c 0a 20 20 20 20 54 ndefined',. T
05b0: 5f 46 55 4e 43 54 49 4f 4e 20 3d 20 27 66 75 6e _FUNCTION = 'fun
05c0: 63 74 69 6f 6e 27 2c 0a 0a 20 20 20 20 58 4c 49 ction',.. XLI
05d0: 4e 4b 5f 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f NK_NS = 'http://
05e0: 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f www.w3.org/1999/
05f0: 78 6c 69 6e 6b 27 2c 0a 20 20 20 20 53 56 47 5f xlink',. SVG_
0600: 4e 53 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 77 NS = 'http://www
0610: 2e 77 33 2e 6f 72 67 2f 32 30 30 30 2f 73 76 67 .w3.org/2000/svg
0620: 27 2c 0a 20 20 20 20 58 4c 49 4e 4b 5f 52 45 47 ',. XLINK_REG
0630: 45 58 20 3d 20 2f 5e 78 6c 69 6e 6b 3a 28 5c 77 EX = /^xlink:(\w
0640: 2b 29 2f 2c 0a 0a 20 20 20 20 57 49 4e 20 3d 20 +)/,.. WIN =
0650: 74 79 70 65 6f 66 20 77 69 6e 64 6f 77 20 3d 3d typeof window ==
0660: 3d 20 54 5f 55 4e 44 45 46 20 3f 20 2f 2a 20 69 = T_UNDEF ? /* i
0670: 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e stanbul ignore n
0680: 65 78 74 20 2a 2f 20 75 6e 64 65 66 69 6e 65 64 ext */ undefined
0690: 20 3a 20 77 69 6e 64 6f 77 2c 0a 0a 20 20 20 20 : window,..
06a0: 2f 2f 20 73 70 65 63 69 61 6c 20 6e 61 74 69 76 // special nativ
06b0: 65 20 74 61 67 73 20 74 68 61 74 20 63 61 6e 6e e tags that cann
06c0: 6f 74 20 62 65 20 74 72 65 61 74 65 64 20 6c 69 ot be treated li
06d0: 6b 65 20 74 68 65 20 6f 74 68 65 72 73 0a 20 20 ke the others.
06e0: 20 20 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 RE_SPECIAL_TAG
06f0: 53 20 3d 20 2f 5e 28 3f 3a 74 28 3f 3a 62 6f 64 S = /^(?:t(?:bod
0700: 79 7c 68 65 61 64 7c 66 6f 6f 74 7c 5b 72 68 64 y|head|foot|[rhd
0710: 5d 29 7c 63 61 70 74 69 6f 6e 7c 63 6f 6c 28 3f ])|caption|col(?
0720: 3a 67 72 6f 75 70 29 3f 7c 6f 70 74 28 3f 3a 69 :group)?|opt(?:i
0730: 6f 6e 7c 67 72 6f 75 70 29 29 24 2f 2c 0a 20 20 on|group))$/,.
0740: 20 20 52 45 5f 53 50 45 43 49 41 4c 5f 54 41 47 RE_SPECIAL_TAG
0750: 53 5f 4e 4f 5f 4f 50 54 49 4f 4e 20 3d 20 2f 5e S_NO_OPTION = /^
0760: 28 3f 3a 74 28 3f 3a 62 6f 64 79 7c 68 65 61 64 (?:t(?:body|head
0770: 7c 66 6f 6f 74 7c 5b 72 68 64 5d 29 7c 63 61 70 |foot|[rhd])|cap
0780: 74 69 6f 6e 7c 63 6f 6c 28 3f 3a 67 72 6f 75 70 tion|col(?:group
0790: 29 3f 29 24 2f 2c 0a 20 20 20 20 52 45 5f 45 56 )?)$/,. RE_EV
07a0: 45 4e 54 53 5f 50 52 45 46 49 58 20 3d 20 2f 5e ENTS_PREFIX = /^
07b0: 6f 6e 2f 2c 0a 20 20 20 20 52 45 5f 48 54 4d 4c on/,. RE_HTML
07c0: 5f 41 54 54 52 53 20 3d 20 2f 28 5b 2d 5c 77 5d _ATTRS = /([-\w]
07d0: 2b 29 20 3f 3d 20 3f 28 3f 3a 22 28 5b 5e 22 5d +) ?= ?(?:"([^"]
07e0: 2a 29 7c 27 28 5b 5e 27 5d 2a 29 7c 28 7b 5b 5e *)|'([^']*)|({[^
07f0: 7d 5d 2a 7d 29 29 2f 67 2c 0a 20 20 20 20 2f 2f }]*}))/g,. //
0800: 20 73 6f 6d 65 20 44 4f 4d 20 61 74 74 72 69 62 some DOM attrib
0810: 75 74 65 73 20 6d 75 73 74 20 62 65 20 6e 6f 72 utes must be nor
0820: 6d 61 6c 69 7a 65 64 0a 20 20 20 20 43 41 53 45 malized. CASE
0830: 5f 53 45 4e 53 49 54 49 56 45 5f 41 54 54 52 49 _SENSITIVE_ATTRI
0840: 42 55 54 45 53 20 3d 20 7b 0a 20 20 20 20 20 20 BUTES = {.
0850: 27 76 69 65 77 62 6f 78 27 3a 20 27 76 69 65 77 'viewbox': 'view
0860: 42 6f 78 27 2c 0a 20 20 20 20 20 20 27 70 72 65 Box',. 'pre
0870: 73 65 72 76 65 61 73 70 65 63 74 72 61 74 69 6f serveaspectratio
0880: 27 3a 20 27 70 72 65 73 65 72 76 65 41 73 70 65 ': 'preserveAspe
0890: 63 74 52 61 74 69 6f 27 0a 20 20 20 20 7d 2c 0a ctRatio'. },.
08a0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 4d /**. * M
08b0: 61 74 63 68 65 73 20 62 6f 6f 6c 65 61 6e 20 48 atches boolean H
08c0: 54 4d 4c 20 61 74 74 72 69 62 75 74 65 73 20 69 TML attributes i
08d0: 6e 20 74 68 65 20 72 69 6f 74 20 74 61 67 20 64 n the riot tag d
08e0: 65 66 69 6e 69 74 69 6f 6e 2e 0a 20 20 20 20 20 efinition..
08f0: 2a 20 57 69 74 68 20 61 20 6c 6f 6e 67 20 6c 69 * With a long li
0900: 73 74 20 6c 69 6b 65 20 74 68 69 73 2c 20 61 20 st like this, a
0910: 72 65 67 65 78 20 69 73 20 66 61 73 74 65 72 20 regex is faster
0920: 74 68 61 6e 20 60 5b 5d 2e 69 6e 64 65 78 4f 66 than `[].indexOf
0930: 60 20 69 6e 20 6d 6f 73 74 20 62 72 6f 77 73 65 ` in most browse
0940: 72 73 2e 0a 20 20 20 20 20 2a 20 40 63 6f 6e 73 rs.. * @cons
0950: 74 20 7b 52 65 67 45 78 70 7d 0a 20 20 20 20 20 t {RegExp}.
0960: 2a 20 40 73 65 65 20 5b 61 74 74 72 69 62 75 74 * @see [attribut
0970: 65 73 2e 6d 64 5d 28 68 74 74 70 73 3a 2f 2f 67 es.md](https://g
0980: 69 74 68 75 62 2e 63 6f 6d 2f 72 69 6f 74 2f 63 ithub.com/riot/c
0990: 6f 6d 70 69 6c 65 72 2f 62 6c 6f 62 2f 64 65 76 ompiler/blob/dev
09a0: 2f 64 6f 63 2f 61 74 74 72 69 62 75 74 65 73 2e /doc/attributes.
09b0: 6d 64 29 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 md). */.
09c0: 52 45 5f 42 4f 4f 4c 5f 41 54 54 52 53 20 3d 20 RE_BOOL_ATTRS =
09d0: 2f 5e 28 3f 3a 64 69 73 61 62 6c 65 64 7c 63 68 /^(?:disabled|ch
09e0: 65 63 6b 65 64 7c 72 65 61 64 6f 6e 6c 79 7c 72 ecked|readonly|r
09f0: 65 71 75 69 72 65 64 7c 61 6c 6c 6f 77 66 75 6c equired|allowful
0a00: 6c 73 63 72 65 65 6e 7c 61 75 74 6f 28 3f 3a 66 lscreen|auto(?:f
0a10: 6f 63 75 73 7c 70 6c 61 79 29 7c 63 6f 6d 70 61 ocus|play)|compa
0a20: 63 74 7c 63 6f 6e 74 72 6f 6c 73 7c 64 65 66 61 ct|controls|defa
0a30: 75 6c 74 7c 66 6f 72 6d 6e 6f 76 61 6c 69 64 61 ult|formnovalida
0a40: 74 65 7c 68 69 64 64 65 6e 7c 69 73 6d 61 70 7c te|hidden|ismap|
0a50: 69 74 65 6d 73 63 6f 70 65 7c 6c 6f 6f 70 7c 6d itemscope|loop|m
0a60: 75 6c 74 69 70 6c 65 7c 6d 75 74 65 64 7c 6e 6f ultiple|muted|no
0a70: 28 3f 3a 72 65 73 69 7a 65 7c 73 68 61 64 65 7c (?:resize|shade|
0a80: 76 61 6c 69 64 61 74 65 7c 77 72 61 70 29 3f 7c validate|wrap)?|
0a90: 6f 70 65 6e 7c 72 65 76 65 72 73 65 64 7c 73 65 open|reversed|se
0aa0: 61 6d 6c 65 73 73 7c 73 65 6c 65 63 74 65 64 7c amless|selected|
0ab0: 73 6f 72 74 61 62 6c 65 7c 74 72 75 65 73 70 65 sortable|truespe
0ac0: 65 64 7c 74 79 70 65 6d 75 73 74 6d 61 74 63 68 ed|typemustmatch
0ad0: 29 24 2f 2c 0a 20 20 20 20 2f 2f 20 76 65 72 73 )$/,. // vers
0ae0: 69 6f 6e 23 20 66 6f 72 20 49 45 20 38 2d 31 31 ion# for IE 8-11
0af0: 2c 20 30 20 66 6f 72 20 6f 74 68 65 72 73 0a 20 , 0 for others.
0b00: 20 20 20 49 45 5f 56 45 52 53 49 4f 4e 20 3d 20 IE_VERSION =
0b10: 28 57 49 4e 20 26 26 20 57 49 4e 2e 64 6f 63 75 (WIN && WIN.docu
0b20: 6d 65 6e 74 20 7c 7c 20 2f 2a 20 69 73 74 61 6e ment || /* istan
0b30: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 bul ignore next
0b40: 2a 2f 20 7b 7d 29 2e 64 6f 63 75 6d 65 6e 74 4d */ {}).documentM
0b50: 6f 64 65 20 7c 20 30 3b 0a 0a 20 20 2f 2a 2a 0a ode | 0;.. /**.
0b60: 20 20 20 2a 20 43 72 65 61 74 65 20 61 20 67 65 * Create a ge
0b70: 6e 65 72 69 63 20 44 4f 4d 20 6e 6f 64 65 0a 20 neric DOM node.
0b80: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 * @param { S
0b90: 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e tring } name - n
0ba0: 61 6d 65 20 6f 66 20 74 68 65 20 44 4f 4d 20 6e ame of the DOM n
0bb0: 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f 20 63 ode we want to c
0bc0: 72 65 61 74 65 0a 20 20 20 2a 20 40 72 65 74 75 reate. * @retu
0bd0: 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 44 rns { Object } D
0be0: 4f 4d 20 6e 6f 64 65 20 6a 75 73 74 20 63 72 65 OM node just cre
0bf0: 61 74 65 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ated. */. fun
0c00: 63 74 69 6f 6e 20 6d 61 6b 65 45 6c 65 6d 65 6e ction makeElemen
0c10: 74 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 72 65 t(name) {. re
0c20: 74 75 72 6e 20 6e 61 6d 65 20 3d 3d 3d 20 27 73 turn name === 's
0c30: 76 67 27 20 3f 20 64 6f 63 75 6d 65 6e 74 2e 63 vg' ? document.c
0c40: 72 65 61 74 65 45 6c 65 6d 65 6e 74 4e 53 28 53 reateElementNS(S
0c50: 56 47 5f 4e 53 2c 20 6e 61 6d 65 29 20 3a 20 64 VG_NS, name) : d
0c60: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c ocument.createEl
0c70: 65 6d 65 6e 74 28 6e 61 6d 65 29 0a 20 20 7d 0a ement(name). }.
0c80: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 53 65 74 20 . /**. * Set
0c90: 61 6e 79 20 44 4f 4d 20 61 74 74 72 69 62 75 74 any DOM attribut
0ca0: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 e. * @param {
0cb0: 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 44 Object } dom - D
0cc0: 4f 4d 20 6e 6f 64 65 20 77 65 20 77 61 6e 74 20 OM node we want
0cd0: 74 6f 20 75 70 64 61 74 65 0a 20 20 20 2a 20 40 to update. * @
0ce0: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d param { String }
0cf0: 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 20 6f 66 20 name - name of
0d00: 74 68 65 20 70 72 6f 70 65 72 74 79 20 77 65 20 the property we
0d10: 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20 20 2a want to set. *
0d20: 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 @param { String
0d30: 20 7d 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 6f } val - value o
0d40: 66 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 77 f the property w
0d50: 65 20 77 61 6e 74 20 74 6f 20 73 65 74 0a 20 20 e want to set.
0d60: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 */. function s
0d70: 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c etAttribute(dom,
0d80: 20 6e 61 6d 65 2c 20 76 61 6c 29 20 7b 0a 20 20 name, val) {.
0d90: 20 20 76 61 72 20 78 6c 69 6e 6b 20 3d 20 58 4c var xlink = XL
0da0: 49 4e 4b 5f 52 45 47 45 58 2e 65 78 65 63 28 6e INK_REGEX.exec(n
0db0: 61 6d 65 29 3b 0a 20 20 20 20 69 66 20 28 78 6c ame);. if (xl
0dc0: 69 6e 6b 20 26 26 20 78 6c 69 6e 6b 5b 31 5d 29 ink && xlink[1])
0dd0: 0a 20 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 . { dom.set
0de0: 41 74 74 72 69 62 75 74 65 4e 53 28 58 4c 49 4e AttributeNS(XLIN
0df0: 4b 5f 4e 53 2c 20 78 6c 69 6e 6b 5b 31 5d 2c 20 K_NS, xlink[1],
0e00: 76 61 6c 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 val); }. else
0e10: 0a 20 20 20 20 20 20 7b 20 64 6f 6d 2e 73 65 74 . { dom.set
0e20: 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 2c 20 Attribute(name,
0e30: 76 61 6c 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 76 val); }. }.. v
0e40: 61 72 20 73 74 79 6c 65 4e 6f 64 65 3b 0a 20 20 ar styleNode;.
0e50: 2f 2f 20 43 72 65 61 74 65 20 63 61 63 68 65 20 // Create cache
0e60: 61 6e 64 20 73 68 6f 72 74 63 75 74 20 74 6f 20 and shortcut to
0e70: 74 68 65 20 63 6f 72 72 65 63 74 20 70 72 6f 70 the correct prop
0e80: 65 72 74 79 0a 20 20 76 61 72 20 63 73 73 54 65 erty. var cssTe
0e90: 78 74 50 72 6f 70 3b 0a 20 20 76 61 72 20 62 79 xtProp;. var by
0ea0: 4e 61 6d 65 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 Name = {};. var
0eb0: 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d 20 66 needsInject = f
0ec0: 61 6c 73 65 3b 0a 0a 20 20 2f 2f 20 73 6b 69 70 alse;.. // skip
0ed0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 the following c
0ee0: 6f 64 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65 ode on the serve
0ef0: 72 0a 20 20 69 66 20 28 57 49 4e 29 20 7b 0a 20 r. if (WIN) {.
0f00: 20 20 20 73 74 79 6c 65 4e 6f 64 65 20 3d 20 28 styleNode = (
0f10: 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 (function () {.
0f20: 20 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61 // create a
0f30: 20 6e 65 77 20 73 74 79 6c 65 20 65 6c 65 6d 65 new style eleme
0f40: 6e 74 20 77 69 74 68 20 74 68 65 20 63 6f 72 72 nt with the corr
0f50: 65 63 74 20 74 79 70 65 0a 20 20 20 20 20 20 76 ect type. v
0f60: 61 72 20 6e 65 77 4e 6f 64 65 20 3d 20 6d 61 6b ar newNode = mak
0f70: 65 45 6c 65 6d 65 6e 74 28 27 73 74 79 6c 65 27 eElement('style'
0f80: 29 3b 0a 20 20 20 20 20 20 2f 2f 20 72 65 70 6c );. // repl
0f90: 61 63 65 20 61 6e 79 20 75 73 65 72 20 6e 6f 64 ace any user nod
0fa0: 65 20 6f 72 20 69 6e 73 65 72 74 20 74 68 65 20 e or insert the
0fb0: 6e 65 77 20 6f 6e 65 20 69 6e 74 6f 20 74 68 65 new one into the
0fc0: 20 68 65 61 64 0a 20 20 20 20 20 20 76 61 72 20 head. var
0fd0: 75 73 65 72 4e 6f 64 65 20 3d 20 24 28 27 73 74 userNode = $('st
0fe0: 79 6c 65 5b 74 79 70 65 3d 72 69 6f 74 5d 27 29 yle[type=riot]')
0ff0: 3b 0a 0a 20 20 20 20 20 20 73 65 74 41 74 74 72 ;.. setAttr
1000: 69 62 75 74 65 28 6e 65 77 4e 6f 64 65 2c 20 27 ibute(newNode, '
1010: 74 79 70 65 27 2c 20 27 74 65 78 74 2f 63 73 73 type', 'text/css
1020: 27 29 3b 0a 20 20 20 20 20 20 2f 2a 20 69 73 74 ');. /* ist
1030: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 anbul ignore nex
1040: 74 20 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 75 t */. if (u
1050: 73 65 72 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 serNode) {.
1060: 20 20 20 69 66 20 28 75 73 65 72 4e 6f 64 65 2e if (userNode.
1070: 69 64 29 20 7b 20 6e 65 77 4e 6f 64 65 2e 69 64 id) { newNode.id
1080: 20 3d 20 75 73 65 72 4e 6f 64 65 2e 69 64 3b 20 = userNode.id;
1090: 7d 0a 20 20 20 20 20 20 20 20 75 73 65 72 4e 6f }. userNo
10a0: 64 65 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 de.parentNode.re
10b0: 70 6c 61 63 65 43 68 69 6c 64 28 6e 65 77 4e 6f placeChild(newNo
10c0: 64 65 2c 20 75 73 65 72 4e 6f 64 65 29 3b 0a 20 de, userNode);.
10d0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 64 6f } else { do
10e0: 63 75 6d 65 6e 74 2e 68 65 61 64 2e 61 70 70 65 cument.head.appe
10f0: 6e 64 43 68 69 6c 64 28 6e 65 77 4e 6f 64 65 29 ndChild(newNode)
1100: 3b 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 ; }.. retur
1110: 6e 20 6e 65 77 4e 6f 64 65 0a 20 20 20 20 7d 29 n newNode. })
1120: 29 28 29 3b 0a 20 20 20 20 63 73 73 54 65 78 74 )();. cssText
1130: 50 72 6f 70 20 3d 20 73 74 79 6c 65 4e 6f 64 65 Prop = styleNode
1140: 2e 73 74 79 6c 65 53 68 65 65 74 3b 0a 20 20 7d .styleSheet;. }
1150: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4f 62 6a .. /**. * Obj
1160: 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 ect that will be
1170: 20 75 73 65 64 20 74 6f 20 69 6e 6a 65 63 74 20 used to inject
1180: 61 6e 64 20 6d 61 6e 61 67 65 20 74 68 65 20 63 and manage the c
1190: 73 73 20 6f 66 20 65 76 65 72 79 20 74 61 67 20 ss of every tag
11a0: 69 6e 73 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 instance. */.
11b0: 20 76 61 72 20 73 74 79 6c 65 4d 61 6e 61 67 65 var styleManage
11c0: 72 20 3d 20 7b 0a 20 20 20 20 73 74 79 6c 65 4e r = {. styleN
11d0: 6f 64 65 3a 20 73 74 79 6c 65 4e 6f 64 65 2c 0a ode: styleNode,.
11e0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 /**. * S
11f0: 61 76 65 20 61 20 74 61 67 20 73 74 79 6c 65 20 ave a tag style
1200: 74 6f 20 62 65 20 6c 61 74 65 72 20 69 6e 6a 65 to be later inje
1210: 63 74 65 64 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 cted into DOM.
1220: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 * @param { St
1230: 72 69 6e 67 20 7d 20 63 73 73 20 2d 20 63 73 73 ring } css - css
1240: 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 20 40 string. * @
1250: 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d param { String }
1260: 20 6e 61 6d 65 20 2d 20 69 66 20 69 74 27 73 20 name - if it's
1270: 70 61 73 73 65 64 20 77 65 20 77 69 6c 6c 20 6d passed we will m
1280: 61 70 20 74 68 65 20 63 73 73 20 74 6f 20 61 20 ap the css to a
1290: 74 61 67 6e 61 6d 65 0a 20 20 20 20 20 2a 2f 0a tagname. */.
12a0: 20 20 20 20 61 64 64 3a 20 66 75 6e 63 74 69 6f add: functio
12b0: 6e 20 61 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 n add(css, name)
12c0: 20 7b 0a 20 20 20 20 20 20 62 79 4e 61 6d 65 5b {. byName[
12d0: 6e 61 6d 65 5d 20 3d 20 63 73 73 3b 0a 20 20 20 name] = css;.
12e0: 20 20 20 6e 65 65 64 73 49 6e 6a 65 63 74 20 3d needsInject =
12f0: 20 74 72 75 65 3b 0a 20 20 20 20 7d 2c 0a 20 20 true;. },.
1300: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6e 6a /**. * Inj
1310: 65 63 74 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 ect all previous
1320: 6c 79 20 73 61 76 65 64 20 74 61 67 20 73 74 79 ly saved tag sty
1330: 6c 65 73 20 69 6e 74 6f 20 44 4f 4d 0a 20 20 20 les into DOM.
1340: 20 20 2a 20 69 6e 6e 65 72 48 54 4d 4c 20 73 65 * innerHTML se
1350: 65 6d 73 20 73 6c 6f 77 3a 20 68 74 74 70 3a 2f ems slow: http:/
1360: 2f 6a 73 70 65 72 66 2e 63 6f 6d 2f 72 69 6f 74 /jsperf.com/riot
1370: 2d 69 6e 73 65 72 74 2d 73 74 79 6c 65 0a 20 20 -insert-style.
1380: 20 20 20 2a 2f 0a 20 20 20 20 69 6e 6a 65 63 74 */. inject
1390: 3a 20 66 75 6e 63 74 69 6f 6e 20 69 6e 6a 65 63 : function injec
13a0: 74 28 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 t() {. if (
13b0: 21 57 49 4e 20 7c 7c 20 21 6e 65 65 64 73 49 6e !WIN || !needsIn
13c0: 6a 65 63 74 29 20 7b 20 72 65 74 75 72 6e 20 7d ject) { return }
13d0: 0a 20 20 20 20 20 20 6e 65 65 64 73 49 6e 6a 65 . needsInje
13e0: 63 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 ct = false;.
13f0: 20 20 76 61 72 20 73 74 79 6c 65 20 3d 20 4f 62 var style = Ob
1400: 6a 65 63 74 2e 6b 65 79 73 28 62 79 4e 61 6d 65 ject.keys(byName
1410: 29 0a 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66 ). .map(f
1420: 75 6e 63 74 69 6f 6e 20 28 6b 29 20 7b 20 72 65 unction (k) { re
1430: 74 75 72 6e 20 62 79 4e 61 6d 65 5b 6b 5d 3b 20 turn byName[k];
1440: 7d 29 0a 20 20 20 20 20 20 20 20 2e 6a 6f 69 6e }). .join
1450: 28 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 2f 2a ('\n');. /*
1460: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 istanbul ignore
1470: 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 69 next */. i
1480: 66 20 28 63 73 73 54 65 78 74 50 72 6f 70 29 20 f (cssTextProp)
1490: 7b 20 63 73 73 54 65 78 74 50 72 6f 70 2e 63 73 { cssTextProp.cs
14a0: 73 54 65 78 74 20 3d 20 73 74 79 6c 65 3b 20 7d sText = style; }
14b0: 0a 20 20 20 20 20 20 65 6c 73 65 20 7b 20 73 74 . else { st
14c0: 79 6c 65 4e 6f 64 65 2e 69 6e 6e 65 72 48 54 4d yleNode.innerHTM
14d0: 4c 20 3d 20 73 74 79 6c 65 3b 20 7d 0a 20 20 20 L = style; }.
14e0: 20 7d 2c 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 },.. /**.
14f0: 20 20 2a 20 52 65 6d 6f 76 65 20 61 20 74 61 67 * Remove a tag
1500: 20 73 74 79 6c 65 20 6f 66 20 69 6e 6a 65 63 74 style of inject
1510: 65 64 20 44 4f 4d 20 6c 61 74 65 72 2e 0a 20 20 ed DOM later..
1520: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 * @param {Str
1530: 69 6e 67 7d 20 6e 61 6d 65 20 61 20 72 65 67 69 ing} name a regi
1540: 73 74 65 72 65 64 20 74 61 67 6e 61 6d 65 0a 20 stered tagname.
1550: 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 6d 6f 76 */. remov
1560: 65 3a 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f e: function remo
1570: 76 65 28 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 ve(name) {.
1580: 20 64 65 6c 65 74 65 20 62 79 4e 61 6d 65 5b 6e delete byName[n
1590: 61 6d 65 5d 3b 0a 20 20 20 20 20 20 6e 65 65 64 ame];. need
15a0: 73 49 6e 6a 65 63 74 20 3d 20 74 72 75 65 3b 0a sInject = true;.
15b0: 20 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f 2a }. };.. /*
15c0: 2a 0a 20 20 20 2a 20 54 68 65 20 72 69 6f 74 20 *. * The riot
15d0: 74 65 6d 70 6c 61 74 65 20 65 6e 67 69 6e 65 0a template engine.
15e0: 20 20 20 2a 20 40 76 65 72 73 69 6f 6e 20 76 33 * @version v3
15f0: 2e 30 2e 38 0a 20 20 20 2a 2f 0a 0a 20 20 2f 2a .0.8. */.. /*
1600: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 istanbul ignore
1610: 20 6e 65 78 74 20 2a 2f 0a 20 20 76 61 72 20 73 next */. var s
1620: 6b 69 70 52 65 67 65 78 20 3d 20 28 66 75 6e 63 kipRegex = (func
1630: 74 69 6f 6e 20 28 29 20 7b 20 2f 2f 65 73 6c 69 tion () { //esli
1640: 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 20 nt-disable-line
1650: 6e 6f 2d 75 6e 75 73 65 64 2d 76 61 72 73 0a 0a no-unused-vars..
1660: 20 20 20 20 76 61 72 20 62 65 66 6f 72 65 52 65 var beforeRe
1670: 43 68 61 72 73 20 3d 20 27 5b 7b 28 2c 3b 3a 3f Chars = '[{(,;:?
1680: 3d 7c 26 21 5e 7e 3e 25 2a 2f 27 3b 0a 0a 20 20 =|&!^~>%*/';..
1690: 20 20 76 61 72 20 62 65 66 6f 72 65 52 65 57 6f var beforeReWo
16a0: 72 64 73 20 3d 20 5b 0a 20 20 20 20 20 20 27 63 rds = [. 'c
16b0: 61 73 65 27 2c 0a 20 20 20 20 20 20 27 64 65 66 ase',. 'def
16c0: 61 75 6c 74 27 2c 0a 20 20 20 20 20 20 27 64 6f ault',. 'do
16d0: 27 2c 0a 20 20 20 20 20 20 27 65 6c 73 65 27 2c ',. 'else',
16e0: 0a 20 20 20 20 20 20 27 69 6e 27 2c 0a 20 20 20 . 'in',.
16f0: 20 20 20 27 69 6e 73 74 61 6e 63 65 6f 66 27 2c 'instanceof',
1700: 0a 20 20 20 20 20 20 27 70 72 65 66 69 78 27 2c . 'prefix',
1710: 0a 20 20 20 20 20 20 27 72 65 74 75 72 6e 27 2c . 'return',
1720: 0a 20 20 20 20 20 20 27 74 79 70 65 6f 66 27 2c . 'typeof',
1730: 0a 20 20 20 20 20 20 27 76 6f 69 64 27 2c 0a 20 . 'void',.
1740: 20 20 20 20 20 27 79 69 65 6c 64 27 0a 20 20 20 'yield'.
1750: 20 5d 3b 0a 0a 20 20 20 20 76 61 72 20 77 6f 72 ];.. var wor
1760: 64 73 4c 61 73 74 43 68 61 72 20 3d 20 62 65 66 dsLastChar = bef
1770: 6f 72 65 52 65 57 6f 72 64 73 2e 72 65 64 75 63 oreReWords.reduc
1780: 65 28 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 77 e(function (s, w
1790: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e ) {. return
17a0: 20 73 20 2b 20 77 2e 73 6c 69 63 65 28 2d 31 29 s + w.slice(-1)
17b0: 0a 20 20 20 20 7d 2c 20 27 27 29 3b 0a 0a 20 20 . }, '');..
17c0: 20 20 76 61 72 20 52 45 5f 52 45 47 45 58 20 3d var RE_REGEX =
17d0: 20 2f 5e 5c 2f 28 3f 3d 5b 5e 2a 3e 2f 5d 29 5b /^\/(?=[^*>/])[
17e0: 5e 5b 2f 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5c 2e ^[/\\]*(?:(?:\\.
17f0: 7c 5c 5b 28 3f 3a 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c |\[(?:\\.|[^\]\\
1800: 5d 2a 29 2a 5c 5d 29 5b 5e 5b 5c 5c 2f 5d 2a 29 ]*)*\])[^[\\/]*)
1810: 2a 3f 5c 2f 5b 67 69 6d 75 79 5d 2a 2f 3b 0a 20 *?\/[gimuy]*/;.
1820: 20 20 20 76 61 72 20 52 45 5f 56 4e 5f 43 48 41 var RE_VN_CHA
1830: 52 20 3d 20 2f 5b 24 5c 77 5d 2f 3b 0a 0a 20 20 R = /[$\w]/;..
1840: 20 20 66 75 6e 63 74 69 6f 6e 20 70 72 65 76 20 function prev
1850: 28 63 6f 64 65 2c 20 70 6f 73 29 20 7b 0a 20 20 (code, pos) {.
1860: 20 20 20 20 77 68 69 6c 65 20 28 2d 2d 70 6f 73 while (--pos
1870: 20 3e 3d 20 30 20 26 26 20 2f 5c 73 2f 2e 74 65 >= 0 && /\s/.te
1880: 73 74 28 63 6f 64 65 5b 70 6f 73 5d 29 29 7b 20 st(code[pos])){
1890: 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 }. return p
18a0: 6f 73 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 os. }.. fu
18b0: 6e 63 74 69 6f 6e 20 5f 73 6b 69 70 52 65 67 65 nction _skipRege
18c0: 78 20 28 63 6f 64 65 2c 20 73 74 61 72 74 29 20 x (code, start)
18d0: 7b 0a 0a 20 20 20 20 20 20 76 61 72 20 72 65 20 {.. var re
18e0: 3d 20 2f 2e 2a 2f 67 3b 0a 20 20 20 20 20 20 76 = /.*/g;. v
18f0: 61 72 20 70 6f 73 20 3d 20 72 65 2e 6c 61 73 74 ar pos = re.last
1900: 49 6e 64 65 78 20 3d 20 73 74 61 72 74 2b 2b 3b Index = start++;
1910: 0a 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 . var match
1920: 20 3d 20 72 65 2e 65 78 65 63 28 63 6f 64 65 29 = re.exec(code)
1930: 5b 30 5d 2e 6d 61 74 63 68 28 52 45 5f 52 45 47 [0].match(RE_REG
1940: 45 58 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 EX);.. if (
1950: 6d 61 74 63 68 29 20 7b 0a 20 20 20 20 20 20 20 match) {.
1960: 20 76 61 72 20 6e 65 78 74 20 3d 20 70 6f 73 20 var next = pos
1970: 2b 20 6d 61 74 63 68 5b 30 5d 2e 6c 65 6e 67 74 + match[0].lengt
1980: 68 3b 0a 0a 20 20 20 20 20 20 20 20 70 6f 73 20 h;.. pos
1990: 3d 20 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73 = prev(code, pos
19a0: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 );. var c
19b0: 20 3d 20 63 6f 64 65 5b 70 6f 73 5d 3b 0a 0a 20 = code[pos];..
19c0: 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 20 3c if (pos <
19d0: 20 30 20 7c 7c 20 7e 62 65 66 6f 72 65 52 65 43 0 || ~beforeReC
19e0: 68 61 72 73 2e 69 6e 64 65 78 4f 66 28 63 29 29 hars.indexOf(c))
19f0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 {. ret
1a00: 75 72 6e 20 6e 65 78 74 0a 20 20 20 20 20 20 20 urn next.
1a10: 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 }.. if (
1a20: 63 20 3d 3d 3d 20 27 2e 27 29 20 7b 0a 0a 20 20 c === '.') {..
1a30: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 64 65 if (code
1a40: 5b 70 6f 73 20 2d 20 31 5d 20 3d 3d 3d 20 27 2e [pos - 1] === '.
1a50: 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ') {.
1a60: 20 73 74 61 72 74 20 3d 20 6e 65 78 74 3b 0a 20 start = next;.
1a70: 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 }..
1a80: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 } else if (c
1a90: 20 3d 3d 3d 20 27 2b 27 20 7c 7c 20 63 20 3d 3d === '+' || c ==
1aa0: 3d 20 27 2d 27 29 20 7b 0a 0a 20 20 20 20 20 20 = '-') {..
1ab0: 20 20 20 20 69 66 20 28 63 6f 64 65 5b 2d 2d 70 if (code[--p
1ac0: 6f 73 5d 20 21 3d 3d 20 63 20 7c 7c 0a 20 20 20 os] !== c ||.
1ad0: 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 73 20 (pos
1ae0: 3d 20 70 72 65 76 28 63 6f 64 65 2c 20 70 6f 73 = prev(code, pos
1af0: 29 29 20 3c 20 30 20 7c 7c 0a 20 20 20 20 20 20 )) < 0 ||.
1b00: 20 20 20 20 20 20 20 20 21 52 45 5f 56 4e 5f 43 !RE_VN_C
1b10: 48 41 52 2e 74 65 73 74 28 63 6f 64 65 5b 70 6f HAR.test(code[po
1b20: 73 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 s])) {.
1b30: 20 20 20 73 74 61 72 74 20 3d 20 6e 65 78 74 3b start = next;
1b40: 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 . }..
1b50: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
1b60: 28 7e 77 6f 72 64 73 4c 61 73 74 43 68 61 72 2e (~wordsLastChar.
1b70: 69 6e 64 65 78 4f 66 28 63 29 29 20 7b 0a 0a 20 indexOf(c)) {..
1b80: 20 20 20 20 20 20 20 20 20 76 61 72 20 65 6e 64 var end
1b90: 20 3d 20 70 6f 73 20 2b 20 31 3b 0a 0a 20 20 20 = pos + 1;..
1ba0: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 2d 2d while (--
1bb0: 70 6f 73 20 3e 3d 20 30 20 26 26 20 52 45 5f 56 pos >= 0 && RE_V
1bc0: 4e 5f 43 48 41 52 2e 74 65 73 74 28 63 6f 64 65 N_CHAR.test(code
1bd0: 5b 70 6f 73 5d 29 29 7b 20 7d 0a 20 20 20 20 20 [pos])){ }.
1be0: 20 20 20 20 20 69 66 20 28 7e 62 65 66 6f 72 65 if (~before
1bf0: 52 65 57 6f 72 64 73 2e 69 6e 64 65 78 4f 66 28 ReWords.indexOf(
1c00: 63 6f 64 65 2e 73 6c 69 63 65 28 70 6f 73 20 2b code.slice(pos +
1c10: 20 31 2c 20 65 6e 64 29 29 29 20 7b 0a 20 20 20 1, end))) {.
1c20: 20 20 20 20 20 20 20 20 20 73 74 61 72 74 20 3d start =
1c30: 20 6e 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 next;.
1c40: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }.
1c50: 20 20 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 }.. retu
1c60: 72 6e 20 73 74 61 72 74 0a 20 20 20 20 7d 0a 0a rn start. }..
1c70: 20 20 20 20 72 65 74 75 72 6e 20 5f 73 6b 69 70 return _skip
1c80: 52 65 67 65 78 0a 0a 20 20 7d 29 28 29 3b 0a 0a Regex.. })();..
1c90: 20 20 2f 2a 2a 0a 20 20 20 2a 20 72 69 6f 74 2e /**. * riot.
1ca0: 75 74 69 6c 2e 62 72 61 63 6b 65 74 73 0a 20 20 util.brackets.
1cb0: 20 2a 0a 20 20 20 2a 20 2d 20 60 62 72 61 63 6b *. * - `brack
1cc0: 65 74 73 20 20 20 20 60 20 2d 20 52 65 74 75 72 ets ` - Retur
1cd0: 6e 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 72 ns a string or r
1ce0: 65 67 65 78 20 62 61 73 65 64 20 6f 6e 20 69 74 egex based on it
1cf0: 73 20 70 61 72 61 6d 65 74 65 72 0a 20 20 20 2a s parameter. *
1d00: 20 2d 20 60 62 72 61 63 6b 65 74 73 2e 73 65 74 - `brackets.set
1d10: 60 20 2d 20 43 68 61 6e 67 65 20 74 68 65 20 63 ` - Change the c
1d20: 75 72 72 65 6e 74 20 72 69 6f 74 20 62 72 61 63 urrent riot brac
1d30: 6b 65 74 73 0a 20 20 20 2a 0a 20 20 20 2a 20 40 kets. *. * @
1d40: 6d 6f 64 75 6c 65 0a 20 20 20 2a 2f 0a 0a 20 20 module. */..
1d50: 2f 2a 20 67 6c 6f 62 61 6c 20 72 69 6f 74 20 2a /* global riot *
1d60: 2f 0a 0a 20 20 2f 2a 20 69 73 74 61 6e 62 75 6c /.. /* istanbul
1d70: 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a 2f 0a ignore next */.
1d80: 20 20 76 61 72 20 62 72 61 63 6b 65 74 73 20 3d var brackets =
1d90: 20 28 66 75 6e 63 74 69 6f 6e 20 28 55 4e 44 45 (function (UNDE
1da0: 46 29 20 7b 0a 0a 20 20 20 20 76 61 72 0a 20 20 F) {.. var.
1db0: 20 20 20 20 52 45 47 4c 4f 42 20 3d 20 27 67 27 REGLOB = 'g'
1dc0: 2c 0a 0a 20 20 20 20 20 20 52 5f 4d 4c 43 4f 4d ,.. R_MLCOM
1dd0: 4d 53 20 3d 20 2f 5c 2f 5c 2a 5b 5e 2a 5d 2a 5c MS = /\/\*[^*]*\
1de0: 2a 2b 28 3f 3a 5b 5e 2a 5c 2f 5d 5b 5e 2a 5d 2a *+(?:[^*\/][^*]*
1df0: 5c 2a 2b 29 2a 5c 2f 2f 67 2c 0a 0a 20 20 20 20 \*+)*\//g,..
1e00: 20 20 52 5f 53 54 52 49 4e 47 53 20 3d 20 2f 22 R_STRINGS = /"
1e10: 5b 5e 22 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c [^"\\]*(?:\\[\S\
1e20: 73 5d 5b 5e 22 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e s][^"\\]*)*"|'[^
1e30: 27 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d '\\]*(?:\\[\S\s]
1e40: 5b 5e 27 5c 5c 5d 2a 29 2a 27 7c 60 5b 5e 60 5c [^'\\]*)*'|`[^`\
1e50: 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e \]*(?:\\[\S\s][^
1e60: 60 5c 5c 5d 2a 29 2a 60 2f 67 2c 0a 0a 20 20 20 `\\]*)*`/g,..
1e70: 20 20 20 53 5f 51 42 4c 4f 43 4b 53 20 3d 20 52 S_QBLOCKS = R
1e80: 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 _STRINGS.source
1e90: 2b 20 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 + '|' +.
1ea0: 2f 28 3f 3a 5c 62 72 65 74 75 72 6e 5c 73 2b 7c /(?:\breturn\s+|
1eb0: 28 3f 3a 5b 24 5c 77 5c 29 5c 5d 5d 7c 5c 2b 5c (?:[$\w\)\]]|\+\
1ec0: 2b 7c 2d 2d 29 5c 73 2a 28 5c 2f 29 28 3f 21 5b +|--)\s*(\/)(?![
1ed0: 2a 5c 2f 5d 29 29 2f 2e 73 6f 75 72 63 65 20 2b *\/]))/.source +
1ee0: 20 27 7c 27 20 2b 0a 20 20 20 20 20 20 20 20 2f '|' +. /
1ef0: 5c 2f 28 3f 3d 5b 5e 2a 5c 2f 5d 29 5b 5e 5b 5c \/(?=[^*\/])[^[\
1f00: 2f 5c 5c 5d 2a 28 3f 3a 28 3f 3a 5c 5b 28 3f 3a /\\]*(?:(?:\[(?:
1f10: 5c 5c 2e 7c 5b 5e 5c 5d 5c 5c 5d 2a 29 2a 5c 5d \\.|[^\]\\]*)*\]
1f20: 7c 5c 5c 2e 29 5b 5e 5b 5c 2f 5c 5c 5d 2a 29 2a |\\.)[^[\/\\]*)*
1f30: 3f 28 5b 5e 3c 5d 5c 2f 29 5b 67 69 6d 5d 2a 2f ?([^<]\/)[gim]*/
1f40: 2e 73 6f 75 72 63 65 2c 0a 0a 20 20 20 20 20 20 .source,..
1f50: 55 4e 53 55 50 50 4f 52 54 45 44 20 3d 20 52 65 UNSUPPORTED = Re
1f60: 67 45 78 70 28 27 5b 5c 5c 27 20 2b 20 27 78 30 gExp('[\\' + 'x0
1f70: 30 2d 5c 5c 78 31 46 3c 3e 61 2d 7a 41 2d 5a 30 0-\\x1F<>a-zA-Z0
1f80: 2d 39 5c 27 22 2c 3b 5c 5c 5c 5c 5d 27 29 2c 0a -9\'",;\\\\]'),.
1f90: 0a 20 20 20 20 20 20 4e 45 45 44 5f 45 53 43 41 . NEED_ESCA
1fa0: 50 45 20 3d 20 2f 28 3f 3d 5b 5b 5c 5d 28 29 2a PE = /(?=[[\]()*
1fb0: 2b 3f 2e 5e 24 7c 5d 29 2f 67 2c 0a 0a 20 20 20 +?.^$|])/g,..
1fc0: 20 20 20 53 5f 51 42 4c 4f 43 4b 32 20 3d 20 52 S_QBLOCK2 = R
1fd0: 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 65 20 _STRINGS.source
1fe0: 2b 20 27 7c 27 20 2b 20 2f 28 5c 2f 29 28 3f 21 + '|' + /(\/)(?!
1ff0: 5b 2a 5c 2f 5d 29 2f 2e 73 6f 75 72 63 65 2c 0a [*\/])/.source,.
2000: 0a 20 20 20 20 20 20 46 49 4e 44 42 52 41 43 45 . FINDBRACE
2010: 53 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 27 28 S = {. '(
2020: 27 3a 20 52 65 67 45 78 70 28 27 28 5b 28 29 5d ': RegExp('([()]
2030: 29 7c 27 20 20 20 2b 20 53 5f 51 42 4c 4f 43 4b )|' + S_QBLOCK
2040: 32 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 2, REGLOB),.
2050: 20 20 20 20 27 5b 27 3a 20 52 65 67 45 78 70 28 '[': RegExp(
2060: 27 28 5b 5b 5c 5c 5d 5d 29 7c 27 20 2b 20 53 5f '([[\\]])|' + S_
2070: 51 42 4c 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29 QBLOCK2, REGLOB)
2080: 2c 0a 20 20 20 20 20 20 20 20 27 7b 27 3a 20 52 ,. '{': R
2090: 65 67 45 78 70 28 27 28 5b 7b 7d 5d 29 7c 27 20 egExp('([{}])|'
20a0: 20 20 2b 20 53 5f 51 42 4c 4f 43 4b 32 2c 20 52 + S_QBLOCK2, R
20b0: 45 47 4c 4f 42 29 0a 20 20 20 20 20 20 7d 2c 0a EGLOB). },.
20c0: 0a 20 20 20 20 20 20 44 45 46 41 55 4c 54 20 3d . DEFAULT =
20d0: 20 27 7b 20 7d 27 3b 0a 0a 20 20 20 20 76 61 72 '{ }';.. var
20e0: 20 5f 70 61 69 72 73 20 3d 20 5b 0a 20 20 20 20 _pairs = [.
20f0: 20 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 '{', '}',.
2100: 20 20 27 7b 27 2c 20 27 7d 27 2c 0a 20 20 20 20 '{', '}',.
2110: 20 20 2f 7b 5b 5e 7d 5d 2a 7d 2f 2c 0a 20 20 20 /{[^}]*}/,.
2120: 20 20 20 2f 5c 5c 28 5b 7b 7d 5d 29 2f 67 2c 0a /\\([{}])/g,.
2130: 20 20 20 20 20 20 2f 5c 5c 28 7b 29 7c 7b 2f 67 /\\({)|{/g
2140: 2c 0a 20 20 20 20 20 20 52 65 67 45 78 70 28 27 ,. RegExp('
2150: 5c 5c 5c 5c 28 7d 29 7c 28 5b 5b 28 7b 5d 29 7c \\\\(})|([[({])|
2160: 28 7d 29 7c 27 20 2b 20 53 5f 51 42 4c 4f 43 4b (})|' + S_QBLOCK
2170: 32 2c 20 52 45 47 4c 4f 42 29 2c 0a 20 20 20 20 2, REGLOB),.
2180: 20 20 44 45 46 41 55 4c 54 2c 0a 20 20 20 20 20 DEFAULT,.
2190: 20 2f 5e 5c 73 2a 7b 5c 5e 3f 5c 73 2a 28 5b 24 /^\s*{\^?\s*([$
21a0: 5c 77 5d 2b 29 28 3f 3a 5c 73 2a 2c 5c 73 2a 28 \w]+)(?:\s*,\s*(
21b0: 5c 53 2b 29 29 3f 5c 73 2b 69 6e 5c 73 2b 28 5c \S+))?\s+in\s+(\
21c0: 53 2e 2a 29 5c 73 2a 7d 2f 2c 0a 20 20 20 20 20 S.*)\s*}/,.
21d0: 20 2f 28 5e 7c 5b 5e 5c 5c 5d 29 7b 3d 5b 5c 53 /(^|[^\\]){=[\S
21e0: 5c 73 5d 2a 3f 7d 2f 0a 20 20 20 20 5d 3b 0a 0a \s]*?}/. ];..
21f0: 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 63 61 var. ca
2200: 63 68 65 64 42 72 61 63 6b 65 74 73 20 3d 20 55 chedBrackets = U
2210: 4e 44 45 46 2c 0a 20 20 20 20 20 20 5f 72 65 67 NDEF,. _reg
2220: 65 78 2c 0a 20 20 20 20 20 20 5f 63 61 63 68 65 ex,. _cache
2230: 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 5f 73 65 = [],. _se
2240: 74 74 69 6e 67 73 3b 0a 0a 20 20 20 20 66 75 6e ttings;.. fun
2250: 63 74 69 6f 6e 20 5f 6c 6f 6f 70 62 61 63 6b 20 ction _loopback
2260: 28 72 65 29 20 7b 20 72 65 74 75 72 6e 20 72 65 (re) { return re
2270: 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e }.. function
2280: 20 5f 72 65 77 72 69 74 65 20 28 72 65 2c 20 62 _rewrite (re, b
2290: 70 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 21 p) {. if (!
22a0: 62 70 29 20 7b 20 62 70 20 3d 20 5f 63 61 63 68 bp) { bp = _cach
22b0: 65 3b 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 e; }. retur
22c0: 6e 20 6e 65 77 20 52 65 67 45 78 70 28 0a 20 20 n new RegExp(.
22d0: 20 20 20 20 20 20 72 65 2e 73 6f 75 72 63 65 2e re.source.
22e0: 72 65 70 6c 61 63 65 28 2f 7b 2f 67 2c 20 62 70 replace(/{/g, bp
22f0: 5b 32 5d 29 2e 72 65 70 6c 61 63 65 28 2f 7d 2f [2]).replace(/}/
2300: 67 2c 20 62 70 5b 33 5d 29 2c 20 72 65 2e 67 6c g, bp[3]), re.gl
2310: 6f 62 61 6c 20 3f 20 52 45 47 4c 4f 42 20 3a 20 obal ? REGLOB :
2320: 27 27 0a 20 20 20 20 20 20 29 0a 20 20 20 20 7d ''. ). }
2330: 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f .. function _
2340: 63 72 65 61 74 65 20 28 70 61 69 72 29 20 7b 0a create (pair) {.
2350: 20 20 20 20 20 20 69 66 20 28 70 61 69 72 20 3d if (pair =
2360: 3d 3d 20 44 45 46 41 55 4c 54 29 20 7b 20 72 65 == DEFAULT) { re
2370: 74 75 72 6e 20 5f 70 61 69 72 73 20 7d 0a 0a 20 turn _pairs }..
2380: 20 20 20 20 20 76 61 72 20 61 72 72 20 3d 20 70 var arr = p
2390: 61 69 72 2e 73 70 6c 69 74 28 27 20 27 29 3b 0a air.split(' ');.
23a0: 0a 20 20 20 20 20 20 69 66 20 28 61 72 72 2e 6c . if (arr.l
23b0: 65 6e 67 74 68 20 21 3d 3d 20 32 20 7c 7c 20 55 ength !== 2 || U
23c0: 4e 53 55 50 50 4f 52 54 45 44 2e 74 65 73 74 28 NSUPPORTED.test(
23d0: 70 61 69 72 29 29 20 7b 0a 20 20 20 20 20 20 20 pair)) {.
23e0: 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error
23f0: 28 27 55 6e 73 75 70 70 6f 72 74 65 64 20 62 72 ('Unsupported br
2400: 61 63 6b 65 74 73 20 22 27 20 2b 20 70 61 69 72 ackets "' + pair
2410: 20 2b 20 27 22 27 29 0a 20 20 20 20 20 20 7d 0a + '"'). }.
2420: 20 20 20 20 20 20 61 72 72 20 3d 20 61 72 72 2e arr = arr.
2430: 63 6f 6e 63 61 74 28 70 61 69 72 2e 72 65 70 6c concat(pair.repl
2440: 61 63 65 28 4e 45 45 44 5f 45 53 43 41 50 45 2c ace(NEED_ESCAPE,
2450: 20 27 5c 5c 27 29 2e 73 70 6c 69 74 28 27 20 27 '\\').split(' '
2460: 29 29 3b 0a 0a 20 20 20 20 20 20 61 72 72 5b 34 ));.. arr[4
2470: 5d 20 3d 20 5f 72 65 77 72 69 74 65 28 61 72 72 ] = _rewrite(arr
2480: 5b 31 5d 2e 6c 65 6e 67 74 68 20 3e 20 31 20 3f [1].length > 1 ?
2490: 20 2f 7b 5b 5c 53 5c 73 5d 2a 3f 7d 2f 20 3a 20 /{[\S\s]*?}/ :
24a0: 5f 70 61 69 72 73 5b 34 5d 2c 20 61 72 72 29 3b _pairs[4], arr);
24b0: 0a 20 20 20 20 20 20 61 72 72 5b 35 5d 20 3d 20 . arr[5] =
24c0: 5f 72 65 77 72 69 74 65 28 70 61 69 72 2e 6c 65 _rewrite(pair.le
24d0: 6e 67 74 68 20 3e 20 33 20 3f 20 2f 5c 5c 28 7b ngth > 3 ? /\\({
24e0: 7c 7d 29 2f 67 20 3a 20 5f 70 61 69 72 73 5b 35 |})/g : _pairs[5
24f0: 5d 2c 20 61 72 72 29 3b 0a 20 20 20 20 20 20 61 ], arr);. a
2500: 72 72 5b 36 5d 20 3d 20 5f 72 65 77 72 69 74 65 rr[6] = _rewrite
2510: 28 5f 70 61 69 72 73 5b 36 5d 2c 20 61 72 72 29 (_pairs[6], arr)
2520: 3b 0a 20 20 20 20 20 20 61 72 72 5b 37 5d 20 3d ;. arr[7] =
2530: 20 52 65 67 45 78 70 28 27 5c 5c 5c 5c 28 27 20 RegExp('\\\\('
2540: 2b 20 61 72 72 5b 33 5d 20 2b 20 27 29 7c 28 5b + arr[3] + ')|([
2550: 5b 28 7b 5d 29 7c 28 27 20 2b 20 61 72 72 5b 33 [({])|(' + arr[3
2560: 5d 20 2b 20 27 29 7c 27 20 2b 20 53 5f 51 42 4c ] + ')|' + S_QBL
2570: 4f 43 4b 32 2c 20 52 45 47 4c 4f 42 29 3b 0a 20 OCK2, REGLOB);.
2580: 20 20 20 20 20 61 72 72 5b 38 5d 20 3d 20 70 61 arr[8] = pa
2590: 69 72 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e ir;. return
25a0: 20 61 72 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 arr. }..
25b0: 66 75 6e 63 74 69 6f 6e 20 5f 62 72 61 63 6b 65 function _bracke
25c0: 74 73 20 28 72 65 4f 72 49 64 78 29 20 7b 0a 20 ts (reOrIdx) {.
25d0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 4f 72 return reOr
25e0: 49 64 78 20 69 6e 73 74 61 6e 63 65 6f 66 20 52 Idx instanceof R
25f0: 65 67 45 78 70 20 3f 20 5f 72 65 67 65 78 28 72 egExp ? _regex(r
2600: 65 4f 72 49 64 78 29 20 3a 20 5f 63 61 63 68 65 eOrIdx) : _cache
2610: 5b 72 65 4f 72 49 64 78 5d 0a 20 20 20 20 7d 0a [reOrIdx]. }.
2620: 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 . _brackets.s
2630: 70 6c 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 plit = function
2640: 73 70 6c 69 74 20 28 73 74 72 2c 20 74 6d 70 6c split (str, tmpl
2650: 2c 20 5f 62 70 29 20 7b 0a 20 20 20 20 20 20 2f , _bp) {. /
2660: 2f 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 / istanbul ignor
2670: 65 20 6e 65 78 74 3a 20 5f 62 70 20 69 73 20 66 e next: _bp is f
2680: 6f 72 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a or the compiler.
2690: 20 20 20 20 20 20 69 66 20 28 21 5f 62 70 29 20 if (!_bp)
26a0: 7b 20 5f 62 70 20 3d 20 5f 63 61 63 68 65 3b 20 { _bp = _cache;
26b0: 7d 0a 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20 }.. var.
26c0: 20 20 20 20 20 70 61 72 74 73 20 3d 20 5b 5d 2c parts = [],
26d0: 0a 20 20 20 20 20 20 20 20 6d 61 74 63 68 2c 0a . match,.
26e0: 20 20 20 20 20 20 20 20 69 73 65 78 70 72 2c 0a isexpr,.
26f0: 20 20 20 20 20 20 20 20 73 74 61 72 74 2c 0a 20 start,.
2700: 20 20 20 20 20 20 20 70 6f 73 2c 0a 20 20 20 20 pos,.
2710: 20 20 20 20 72 65 20 3d 20 5f 62 70 5b 36 5d 3b re = _bp[6];
2720: 0a 0a 20 20 20 20 20 20 76 61 72 20 71 62 6c 6f .. var qblo
2730: 63 6b 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 cks = [];.
2740: 76 61 72 20 70 72 65 76 53 74 72 20 3d 20 27 27 var prevStr = ''
2750: 3b 0a 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b ;. var mark
2760: 2c 20 6c 61 73 74 49 6e 64 65 78 3b 0a 0a 20 20 , lastIndex;..
2770: 20 20 20 20 69 73 65 78 70 72 20 3d 20 73 74 61 isexpr = sta
2780: 72 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 rt = re.lastInde
2790: 78 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 77 68 x = 0;.. wh
27a0: 69 6c 65 20 28 28 6d 61 74 63 68 20 3d 20 72 65 ile ((match = re
27b0: 2e 65 78 65 63 28 73 74 72 29 29 29 20 7b 0a 0a .exec(str))) {..
27c0: 20 20 20 20 20 20 20 20 6c 61 73 74 49 6e 64 65 lastInde
27d0: 78 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 x = re.lastIndex
27e0: 3b 0a 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 ;. pos =
27f0: 6d 61 74 63 68 2e 69 6e 64 65 78 3b 0a 0a 20 20 match.index;..
2800: 20 20 20 20 20 20 69 66 20 28 69 73 65 78 70 72 if (isexpr
2810: 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 ) {.. i
2820: 66 20 28 6d 61 74 63 68 5b 32 5d 29 20 7b 0a 0a f (match[2]) {..
2830: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
2840: 63 68 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 20 ch = match[2];.
2850: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 var r
2860: 65 63 68 20 3d 20 46 49 4e 44 42 52 41 43 45 53 ech = FINDBRACES
2870: 5b 63 68 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 [ch];.
2880: 20 20 76 61 72 20 69 78 20 3d 20 31 3b 0a 0a 20 var ix = 1;..
2890: 20 20 20 20 20 20 20 20 20 20 20 72 65 63 68 2e rech.
28a0: 6c 61 73 74 49 6e 64 65 78 20 3d 20 6c 61 73 74 lastIndex = last
28b0: 49 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 Index;.
28c0: 20 20 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68 while ((match
28d0: 20 3d 20 72 65 63 68 2e 65 78 65 63 28 73 74 72 = rech.exec(str
28e0: 29 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ))) {.
28f0: 20 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d if (match[1]
2900: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
2910: 20 20 20 20 69 66 20 28 6d 61 74 63 68 5b 31 5d if (match[1]
2920: 20 3d 3d 3d 20 63 68 29 20 7b 20 2b 2b 69 78 3b === ch) { ++ix;
2930: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }.
2940: 20 20 20 65 6c 73 65 20 69 66 20 28 21 2d 2d 69 else if (!--i
2950: 78 29 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20 x) { break }.
2960: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
2970: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {.
2980: 20 20 20 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 rech.lastInd
2990: 65 78 20 3d 20 70 75 73 68 51 42 6c 6f 63 6b 28 ex = pushQBlock(
29a0: 6d 61 74 63 68 2e 69 6e 64 65 78 2c 20 72 65 63 match.index, rec
29b0: 68 2e 6c 61 73 74 49 6e 64 65 78 2c 20 6d 61 74 h.lastIndex, mat
29c0: 63 68 5b 32 5d 29 3b 0a 20 20 20 20 20 20 20 20 ch[2]);.
29d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
29e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
29f0: 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d re.lastIndex =
2a00: 20 69 78 20 3f 20 73 74 72 2e 6c 65 6e 67 74 68 ix ? str.length
2a10: 20 3a 20 72 65 63 68 2e 6c 61 73 74 49 6e 64 65 : rech.lastInde
2a20: 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 x;. c
2a30: 6f 6e 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 ontinue.
2a40: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69 }.. i
2a50: 66 20 28 21 6d 61 74 63 68 5b 33 5d 29 20 7b 0a f (!match[3]) {.
2a60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 2e 6c re.l
2a70: 61 73 74 49 6e 64 65 78 20 3d 20 70 75 73 68 51 astIndex = pushQ
2a80: 42 6c 6f 63 6b 28 70 6f 73 2c 20 6c 61 73 74 49 Block(pos, lastI
2a90: 6e 64 65 78 2c 20 6d 61 74 63 68 5b 34 5d 29 3b ndex, match[4]);
2aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e . con
2ab0: 74 69 6e 75 65 0a 20 20 20 20 20 20 20 20 20 20 tinue.
2ac0: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 }. }..
2ad0: 20 20 20 20 20 69 66 20 28 21 6d 61 74 63 68 5b if (!match[
2ae0: 31 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 1]) {.
2af0: 75 6e 65 73 63 61 70 65 53 74 72 28 73 74 72 2e unescapeStr(str.
2b00: 73 6c 69 63 65 28 73 74 61 72 74 2c 20 70 6f 73 slice(start, pos
2b10: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74 ));. st
2b20: 61 72 74 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 art = re.lastInd
2b30: 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 ex;. re
2b40: 20 3d 20 5f 62 70 5b 36 20 2b 20 28 69 73 65 78 = _bp[6 + (isex
2b50: 70 72 20 5e 3d 20 31 29 5d 3b 0a 20 20 20 20 20 pr ^= 1)];.
2b60: 20 20 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 re.lastInde
2b70: 78 20 3d 20 73 74 61 72 74 3b 0a 20 20 20 20 20 x = start;.
2b80: 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 }. }..
2b90: 20 20 20 20 69 66 20 28 73 74 72 20 26 26 20 73 if (str && s
2ba0: 74 61 72 74 20 3c 20 73 74 72 2e 6c 65 6e 67 74 tart < str.lengt
2bb0: 68 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 65 h) {. une
2bc0: 73 63 61 70 65 53 74 72 28 73 74 72 2e 73 6c 69 scapeStr(str.sli
2bd0: 63 65 28 73 74 61 72 74 29 29 3b 0a 20 20 20 20 ce(start));.
2be0: 20 20 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73 }.. parts
2bf0: 2e 71 62 6c 6f 63 6b 73 20 3d 20 71 62 6c 6f 63 .qblocks = qbloc
2c00: 6b 73 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72 ks;.. retur
2c10: 6e 20 70 61 72 74 73 0a 0a 20 20 20 20 20 20 66 n parts.. f
2c20: 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63 61 70 65 unction unescape
2c30: 53 74 72 20 28 73 29 20 7b 0a 20 20 20 20 20 20 Str (s) {.
2c40: 20 20 69 66 20 28 70 72 65 76 53 74 72 29 20 7b if (prevStr) {
2c50: 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 70 . s = p
2c60: 72 65 76 53 74 72 20 2b 20 73 3b 0a 20 20 20 20 revStr + s;.
2c70: 20 20 20 20 20 20 70 72 65 76 53 74 72 20 3d 20 prevStr =
2c80: 27 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 '';. }.
2c90: 20 20 20 20 20 20 69 66 20 28 74 6d 70 6c 20 7c if (tmpl |
2ca0: 7c 20 69 73 65 78 70 72 29 20 7b 0a 20 20 20 20 | isexpr) {.
2cb0: 20 20 20 20 20 20 70 61 72 74 73 2e 70 75 73 68 parts.push
2cc0: 28 73 20 26 26 20 73 2e 72 65 70 6c 61 63 65 28 (s && s.replace(
2cd0: 5f 62 70 5b 35 5d 2c 20 27 24 31 27 29 29 3b 0a _bp[5], '$1'));.
2ce0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
2cf0: 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 74 73 . parts
2d00: 2e 70 75 73 68 28 73 29 3b 0a 20 20 20 20 20 20 .push(s);.
2d10: 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 }. }..
2d20: 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 75 73 68 function push
2d30: 51 42 6c 6f 63 6b 28 5f 70 6f 73 2c 20 5f 6c 61 QBlock(_pos, _la
2d40: 73 74 49 6e 64 65 78 2c 20 73 6c 61 73 68 29 20 stIndex, slash)
2d50: 7b 20 2f 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 { //eslint-disab
2d60: 6c 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 le-line.
2d70: 69 66 20 28 73 6c 61 73 68 29 20 7b 0a 20 20 20 if (slash) {.
2d80: 20 20 20 20 20 20 20 5f 6c 61 73 74 49 6e 64 65 _lastInde
2d90: 78 20 3d 20 73 6b 69 70 52 65 67 65 78 28 73 74 x = skipRegex(st
2da0: 72 2c 20 5f 70 6f 73 29 3b 0a 20 20 20 20 20 20 r, _pos);.
2db0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 }.. if
2dc0: 28 74 6d 70 6c 20 26 26 20 5f 6c 61 73 74 49 6e (tmpl && _lastIn
2dd0: 64 65 78 20 3e 20 5f 70 6f 73 20 2b 20 32 29 20 dex > _pos + 2)
2de0: 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b {. mark
2df0: 20 3d 20 27 5c 75 32 30 35 37 27 20 2b 20 71 62 = '\u2057' + qb
2e00: 6c 6f 63 6b 73 2e 6c 65 6e 67 74 68 20 2b 20 27 locks.length + '
2e10: 7e 27 3b 0a 20 20 20 20 20 20 20 20 20 20 71 62 ~';. qb
2e20: 6c 6f 63 6b 73 2e 70 75 73 68 28 73 74 72 2e 73 locks.push(str.s
2e30: 6c 69 63 65 28 5f 70 6f 73 2c 20 5f 6c 61 73 74 lice(_pos, _last
2e40: 49 6e 64 65 78 29 29 3b 0a 20 20 20 20 20 20 20 Index));.
2e50: 20 20 20 70 72 65 76 53 74 72 20 2b 3d 20 73 74 prevStr += st
2e60: 72 2e 73 6c 69 63 65 28 73 74 61 72 74 2c 20 5f r.slice(start, _
2e70: 70 6f 73 29 20 2b 20 6d 61 72 6b 3b 0a 20 20 20 pos) + mark;.
2e80: 20 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 5f start = _
2e90: 6c 61 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20 lastIndex;.
2ea0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret
2eb0: 75 72 6e 20 5f 6c 61 73 74 49 6e 64 65 78 0a 20 urn _lastIndex.
2ec0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20 }. };..
2ed0: 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 68 61 73 _brackets.has
2ee0: 45 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Expr = function
2ef0: 68 61 73 45 78 70 72 20 28 73 74 72 29 20 7b 0a hasExpr (str) {.
2f00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 63 61 return _ca
2f10: 63 68 65 5b 34 5d 2e 74 65 73 74 28 73 74 72 29 che[4].test(str)
2f20: 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 . };.. _br
2f30: 61 63 6b 65 74 73 2e 6c 6f 6f 70 4b 65 79 73 20 ackets.loopKeys
2f40: 3d 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 6f 70 4b = function loopK
2f50: 65 79 73 20 28 65 78 70 72 29 20 7b 0a 20 20 20 eys (expr) {.
2f60: 20 20 20 76 61 72 20 6d 20 3d 20 65 78 70 72 2e var m = expr.
2f70: 6d 61 74 63 68 28 5f 63 61 63 68 65 5b 39 5d 29 match(_cache[9])
2f80: 3b 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 ;.. return
2f90: 6d 0a 20 20 20 20 20 20 20 20 3f 20 7b 20 6b 65 m. ? { ke
2fa0: 79 3a 20 6d 5b 31 5d 2c 20 70 6f 73 3a 20 6d 5b y: m[1], pos: m[
2fb0: 32 5d 2c 20 76 61 6c 3a 20 5f 63 61 63 68 65 5b 2], val: _cache[
2fc0: 30 5d 20 2b 20 6d 5b 33 5d 2e 74 72 69 6d 28 29 0] + m[3].trim()
2fd0: 20 2b 20 5f 63 61 63 68 65 5b 31 5d 20 7d 0a 20 + _cache[1] }.
2fe0: 20 20 20 20 20 20 20 3a 20 7b 20 76 61 6c 3a 20 : { val:
2ff0: 65 78 70 72 2e 74 72 69 6d 28 29 20 7d 0a 20 20 expr.trim() }.
3000: 20 20 7d 3b 0a 0a 20 20 20 20 5f 62 72 61 63 6b };.. _brack
3010: 65 74 73 2e 61 72 72 61 79 20 3d 20 66 75 6e 63 ets.array = func
3020: 74 69 6f 6e 20 61 72 72 61 79 20 28 70 61 69 72 tion array (pair
3030: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e ) {. return
3040: 20 70 61 69 72 20 3f 20 5f 63 72 65 61 74 65 28 pair ? _create(
3050: 70 61 69 72 29 20 3a 20 5f 63 61 63 68 65 0a 20 pair) : _cache.
3060: 20 20 20 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74 };.. funct
3070: 69 6f 6e 20 5f 72 65 73 65 74 20 28 70 61 69 72 ion _reset (pair
3080: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 28 70 ) {. if ((p
3090: 61 69 72 20 7c 7c 20 28 70 61 69 72 20 3d 20 44 air || (pair = D
30a0: 45 46 41 55 4c 54 29 29 20 21 3d 3d 20 5f 63 61 EFAULT)) !== _ca
30b0: 63 68 65 5b 38 5d 29 20 7b 0a 20 20 20 20 20 20 che[8]) {.
30c0: 20 20 5f 63 61 63 68 65 20 3d 20 5f 63 72 65 61 _cache = _crea
30d0: 74 65 28 70 61 69 72 29 3b 0a 20 20 20 20 20 20 te(pair);.
30e0: 20 20 5f 72 65 67 65 78 20 3d 20 70 61 69 72 20 _regex = pair
30f0: 3d 3d 3d 20 44 45 46 41 55 4c 54 20 3f 20 5f 6c === DEFAULT ? _l
3100: 6f 6f 70 62 61 63 6b 20 3a 20 5f 72 65 77 72 69 oopback : _rewri
3110: 74 65 3b 0a 20 20 20 20 20 20 20 20 5f 63 61 63 te;. _cac
3120: 68 65 5b 39 5d 20 3d 20 5f 72 65 67 65 78 28 5f he[9] = _regex(_
3130: 70 61 69 72 73 5b 39 5d 29 3b 0a 20 20 20 20 20 pairs[9]);.
3140: 20 7d 0a 20 20 20 20 20 20 63 61 63 68 65 64 42 }. cachedB
3150: 72 61 63 6b 65 74 73 20 3d 20 70 61 69 72 3b 0a rackets = pair;.
3160: 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 }.. funct
3170: 69 6f 6e 20 5f 73 65 74 53 65 74 74 69 6e 67 73 ion _setSettings
3180: 20 28 6f 29 20 7b 0a 20 20 20 20 20 20 76 61 72 (o) {. var
3190: 20 62 3b 0a 0a 20 20 20 20 20 20 6f 20 3d 20 6f b;.. o = o
31a0: 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 20 20 62 20 || {};. b
31b0: 3d 20 6f 2e 62 72 61 63 6b 65 74 73 3b 0a 20 20 = o.brackets;.
31c0: 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
31d0: 65 50 72 6f 70 65 72 74 79 28 6f 2c 20 27 62 72 eProperty(o, 'br
31e0: 61 63 6b 65 74 73 27 2c 20 7b 0a 20 20 20 20 20 ackets', {.
31f0: 20 20 20 73 65 74 3a 20 5f 72 65 73 65 74 2c 0a set: _reset,.
3200: 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
3210: 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 ction () { retur
3220: 6e 20 63 61 63 68 65 64 42 72 61 63 6b 65 74 73 n cachedBrackets
3230: 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d },. enum
3240: 65 72 61 62 6c 65 3a 20 74 72 75 65 0a 20 20 20 erable: true.
3250: 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 5f 73 65 });. _se
3260: 74 74 69 6e 67 73 20 3d 20 6f 3b 0a 20 20 20 20 ttings = o;.
3270: 20 20 5f 72 65 73 65 74 28 62 29 3b 0a 20 20 20 _reset(b);.
3280: 20 7d 0a 0a 20 20 20 20 4f 62 6a 65 63 74 2e 64 }.. Object.d
3290: 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 5f 62 efineProperty(_b
32a0: 72 61 63 6b 65 74 73 2c 20 27 73 65 74 74 69 6e rackets, 'settin
32b0: 67 73 27 2c 20 7b 0a 20 20 20 20 20 20 73 65 74 gs', {. set
32c0: 3a 20 5f 73 65 74 53 65 74 74 69 6e 67 73 2c 0a : _setSettings,.
32d0: 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
32e0: 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 ion () { return
32f0: 5f 73 65 74 74 69 6e 67 73 20 7d 0a 20 20 20 20 _settings }.
3300: 7d 29 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74 61 });.. /* ista
3310: 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 nbul ignore next
3320: 3a 20 69 6e 20 74 68 65 20 62 72 6f 77 73 65 72 : in the browser
3330: 20 72 69 6f 74 20 69 73 20 61 6c 77 61 79 73 20 riot is always
3340: 69 6e 20 74 68 65 20 73 63 6f 70 65 20 2a 2f 0a in the scope */.
3350: 20 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 73 65 _brackets.se
3360: 74 74 69 6e 67 73 20 3d 20 74 79 70 65 6f 66 20 ttings = typeof
3370: 72 69 6f 74 20 21 3d 3d 20 27 75 6e 64 65 66 69 riot !== 'undefi
3380: 6e 65 64 27 20 26 26 20 72 69 6f 74 2e 73 65 74 ned' && riot.set
3390: 74 69 6e 67 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 tings || {};.
33a0: 20 5f 62 72 61 63 6b 65 74 73 2e 73 65 74 20 3d _brackets.set =
33b0: 20 5f 72 65 73 65 74 3b 0a 20 20 20 20 5f 62 72 _reset;. _br
33c0: 61 63 6b 65 74 73 2e 73 6b 69 70 52 65 67 65 78 ackets.skipRegex
33d0: 20 3d 20 73 6b 69 70 52 65 67 65 78 3b 0a 0a 20 = skipRegex;..
33e0: 20 20 20 5f 62 72 61 63 6b 65 74 73 2e 52 5f 53 _brackets.R_S
33f0: 54 52 49 4e 47 53 20 3d 20 52 5f 53 54 52 49 4e TRINGS = R_STRIN
3400: 47 53 3b 0a 20 20 20 20 5f 62 72 61 63 6b 65 74 GS;. _bracket
3410: 73 2e 52 5f 4d 4c 43 4f 4d 4d 53 20 3d 20 52 5f s.R_MLCOMMS = R_
3420: 4d 4c 43 4f 4d 4d 53 3b 0a 20 20 20 20 5f 62 72 MLCOMMS;. _br
3430: 61 63 6b 65 74 73 2e 53 5f 51 42 4c 4f 43 4b 53 ackets.S_QBLOCKS
3440: 20 3d 20 53 5f 51 42 4c 4f 43 4b 53 3b 0a 20 20 = S_QBLOCKS;.
3450: 20 20 5f 62 72 61 63 6b 65 74 73 2e 53 5f 51 42 _brackets.S_QB
3460: 4c 4f 43 4b 32 20 3d 20 53 5f 51 42 4c 4f 43 4b LOCK2 = S_QBLOCK
3470: 32 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 2;.. return _
3480: 62 72 61 63 6b 65 74 73 0a 0a 20 20 7d 29 28 29 brackets.. })()
3490: 3b 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 6d ;.. /**. * @m
34a0: 6f 64 75 6c 65 20 74 6d 70 6c 0a 20 20 20 2a 0a odule tmpl. *.
34b0: 20 20 20 2a 20 74 6d 70 6c 20 20 20 20 20 20 20 * tmpl
34c0: 20 20 20 2d 20 52 6f 6f 74 20 66 75 6e 63 74 69 - Root functi
34d0: 6f 6e 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 on, returns the
34e0: 74 65 6d 70 6c 61 74 65 20 76 61 6c 75 65 2c 20 template value,
34f0: 72 65 6e 64 65 72 20 77 69 74 68 20 64 61 74 61 render with data
3500: 0a 20 20 20 2a 20 74 6d 70 6c 2e 68 61 73 45 78 . * tmpl.hasEx
3510: 70 72 20 20 2d 20 54 65 73 74 20 74 68 65 20 65 pr - Test the e
3520: 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 65 78 xistence of a ex
3530: 70 72 65 73 73 69 6f 6e 20 69 6e 73 69 64 65 20 pression inside
3540: 61 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 74 6d a string. * tm
3550: 70 6c 2e 6c 6f 6f 70 4b 65 79 73 20 2d 20 47 65 pl.loopKeys - Ge
3560: 74 20 74 68 65 20 6b 65 79 73 20 66 6f 72 20 61 t the keys for a
3570: 6e 20 27 65 61 63 68 27 20 6c 6f 6f 70 20 28 75 n 'each' loop (u
3580: 73 65 64 20 62 79 20 60 5f 65 61 63 68 60 29 0a sed by `_each`).
3590: 20 20 20 2a 2f 0a 0a 20 20 2f 2a 20 69 73 74 61 */.. /* ista
35a0: 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 nbul ignore next
35b0: 20 2a 2f 0a 20 20 76 61 72 20 74 6d 70 6c 20 3d */. var tmpl =
35c0: 20 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a (function () {.
35d0: 0a 20 20 20 20 76 61 72 20 5f 63 61 63 68 65 20 . var _cache
35e0: 3d 20 7b 7d 3b 0a 0a 20 20 20 20 66 75 6e 63 74 = {};.. funct
35f0: 69 6f 6e 20 5f 74 6d 70 6c 20 28 73 74 72 2c 20 ion _tmpl (str,
3600: 64 61 74 61 29 20 7b 0a 20 20 20 20 20 20 69 66 data) {. if
3610: 20 28 21 73 74 72 29 20 7b 20 72 65 74 75 72 6e (!str) { return
3620: 20 73 74 72 20 7d 0a 0a 20 20 20 20 20 20 72 65 str }.. re
3630: 74 75 72 6e 20 28 5f 63 61 63 68 65 5b 73 74 72 turn (_cache[str
3640: 5d 20 7c 7c 20 28 5f 63 61 63 68 65 5b 73 74 72 ] || (_cache[str
3650: 5d 20 3d 20 5f 63 72 65 61 74 65 28 73 74 72 29 ] = _create(str)
3660: 29 29 2e 63 61 6c 6c 28 0a 20 20 20 20 20 20 20 )).call(.
3670: 20 64 61 74 61 2c 20 5f 6c 6f 67 45 72 72 2e 62 data, _logErr.b
3680: 69 6e 64 28 7b 0a 20 20 20 20 20 20 20 20 20 20 ind({.
3690: 64 61 74 61 3a 20 64 61 74 61 2c 0a 20 20 20 20 data: data,.
36a0: 20 20 20 20 20 20 74 6d 70 6c 3a 20 73 74 72 0a tmpl: str.
36b0: 20 20 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20 }).
36c0: 20 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 74 ). }.. _t
36d0: 6d 70 6c 2e 68 61 73 45 78 70 72 20 3d 20 62 72 mpl.hasExpr = br
36e0: 61 63 6b 65 74 73 2e 68 61 73 45 78 70 72 3b 0a ackets.hasExpr;.
36f0: 0a 20 20 20 20 5f 74 6d 70 6c 2e 6c 6f 6f 70 4b . _tmpl.loopK
3700: 65 79 73 20 3d 20 62 72 61 63 6b 65 74 73 2e 6c eys = brackets.l
3710: 6f 6f 70 4b 65 79 73 3b 0a 0a 20 20 20 20 2f 2f oopKeys;.. //
3720: 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 istanbul ignore
3730: 20 6e 65 78 74 0a 20 20 20 20 5f 74 6d 70 6c 2e next. _tmpl.
3740: 63 6c 65 61 72 43 61 63 68 65 20 3d 20 66 75 6e clearCache = fun
3750: 63 74 69 6f 6e 20 28 29 20 7b 20 5f 63 61 63 68 ction () { _cach
3760: 65 20 3d 20 7b 7d 3b 20 7d 3b 0a 0a 20 20 20 20 e = {}; };..
3770: 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61 6e 64 6c _tmpl.errorHandl
3780: 65 72 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 er = null;..
3790: 66 75 6e 63 74 69 6f 6e 20 5f 6c 6f 67 45 72 72 function _logErr
37a0: 20 28 65 72 72 2c 20 63 74 78 29 20 7b 0a 0a 20 (err, ctx) {..
37b0: 20 20 20 20 20 65 72 72 2e 72 69 6f 74 44 61 74 err.riotDat
37c0: 61 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 74 61 a = {. ta
37d0: 67 4e 61 6d 65 3a 20 63 74 78 20 26 26 20 63 74 gName: ctx && ct
37e0: 78 2e 5f 5f 20 26 26 20 63 74 78 2e 5f 5f 2e 74 x.__ && ctx.__.t
37f0: 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 agName,.
3800: 5f 72 69 6f 74 5f 69 64 3a 20 63 74 78 20 26 26 _riot_id: ctx &&
3810: 20 63 74 78 2e 5f 72 69 6f 74 5f 69 64 20 20 2f ctx._riot_id /
3820: 2f 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d /eslint-disable-
3830: 6c 69 6e 65 20 63 61 6d 65 6c 63 61 73 65 0a 20 line camelcase.
3840: 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 69 };.. i
3850: 66 20 28 5f 74 6d 70 6c 2e 65 72 72 6f 72 48 61 f (_tmpl.errorHa
3860: 6e 64 6c 65 72 29 20 7b 20 5f 74 6d 70 6c 2e 65 ndler) { _tmpl.e
3870: 72 72 6f 72 48 61 6e 64 6c 65 72 28 65 72 72 29 rrorHandler(err)
3880: 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 ; }. else i
3890: 66 20 28 0a 20 20 20 20 20 20 20 20 74 79 70 65 f (. type
38a0: 6f 66 20 63 6f 6e 73 6f 6c 65 20 21 3d 3d 20 27 of console !== '
38b0: 75 6e 64 65 66 69 6e 65 64 27 20 26 26 0a 20 20 undefined' &&.
38c0: 20 20 20 20 20 20 74 79 70 65 6f 66 20 63 6f 6e typeof con
38d0: 73 6f 6c 65 2e 65 72 72 6f 72 20 3d 3d 3d 20 27 sole.error === '
38e0: 66 75 6e 63 74 69 6f 6e 27 0a 20 20 20 20 20 20 function'.
38f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 ) {. cons
3900: 6f 6c 65 2e 65 72 72 6f 72 28 65 72 72 2e 6d 65 ole.error(err.me
3910: 73 73 61 67 65 29 3b 0a 20 20 20 20 20 20 20 20 ssage);.
3920: 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 3c 25 73 console.log('<%s
3930: 3e 20 25 73 27 2c 20 65 72 72 2e 72 69 6f 74 44 > %s', err.riotD
3940: 61 74 61 2e 74 61 67 4e 61 6d 65 20 7c 7c 20 27 ata.tagName || '
3950: 55 6e 6b 6e 6f 77 6e 20 74 61 67 27 2c 20 74 68 Unknown tag', th
3960: 69 73 2e 74 6d 70 6c 29 3b 20 2f 2f 20 65 73 6c is.tmpl); // esl
3970: 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 int-disable-line
3980: 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 . console
3990: 2e 6c 6f 67 28 74 68 69 73 2e 64 61 74 61 29 3b .log(this.data);
39a0: 20 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 // eslint-disab
39b0: 6c 65 2d 6c 69 6e 65 0a 20 20 20 20 20 20 7d 0a le-line. }.
39c0: 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 6e 63 74 }.. funct
39d0: 69 6f 6e 20 5f 63 72 65 61 74 65 20 28 73 74 72 ion _create (str
39e0: 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 65 78 ) {. var ex
39f0: 70 72 20 3d 20 5f 67 65 74 54 6d 70 6c 28 73 74 pr = _getTmpl(st
3a00: 72 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 65 r);.. if (e
3a10: 78 70 72 2e 73 6c 69 63 65 28 30 2c 20 31 31 29 xpr.slice(0, 11)
3a20: 20 21 3d 3d 20 27 74 72 79 7b 72 65 74 75 72 6e !== 'try{return
3a30: 20 27 29 20 7b 20 65 78 70 72 20 3d 20 27 72 65 ') { expr = 're
3a40: 74 75 72 6e 20 27 20 2b 20 65 78 70 72 3b 20 7d turn ' + expr; }
3a50: 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e .. return n
3a60: 65 77 20 46 75 6e 63 74 69 6f 6e 28 27 45 27 2c ew Function('E',
3a70: 20 65 78 70 72 20 2b 20 27 3b 27 29 20 20 20 20 expr + ';')
3a80: 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c // eslint-disabl
3a90: 65 2d 6c 69 6e 65 20 6e 6f 2d 6e 65 77 2d 66 75 e-line no-new-fu
3aa0: 6e 63 0a 20 20 20 20 7d 0a 0a 20 20 20 20 76 61 nc. }.. va
3ab0: 72 20 52 45 5f 44 51 55 4f 54 45 20 3d 20 2f 5c r RE_DQUOTE = /\
3ac0: 75 32 30 35 37 2f 67 3b 0a 20 20 20 20 76 61 72 u2057/g;. var
3ad0: 20 52 45 5f 51 42 4d 41 52 4b 20 3d 20 2f 5c 75 RE_QBMARK = /\u
3ae0: 32 30 35 37 28 5c 64 2b 29 7e 2f 67 3b 0a 0a 20 2057(\d+)~/g;..
3af0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 67 65 74 function _get
3b00: 54 6d 70 6c 20 28 73 74 72 29 20 7b 0a 20 20 20 Tmpl (str) {.
3b10: 20 20 20 76 61 72 20 70 61 72 74 73 20 3d 20 62 var parts = b
3b20: 72 61 63 6b 65 74 73 2e 73 70 6c 69 74 28 73 74 rackets.split(st
3b30: 72 2e 72 65 70 6c 61 63 65 28 52 45 5f 44 51 55 r.replace(RE_DQU
3b40: 4f 54 45 2c 20 27 22 27 29 2c 20 31 29 3b 0a 20 OTE, '"'), 1);.
3b50: 20 20 20 20 20 76 61 72 20 71 73 74 72 20 3d 20 var qstr =
3b60: 70 61 72 74 73 2e 71 62 6c 6f 63 6b 73 3b 0a 20 parts.qblocks;.
3b70: 20 20 20 20 20 76 61 72 20 65 78 70 72 3b 0a 0a var expr;..
3b80: 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73 2e if (parts.
3b90: 6c 65 6e 67 74 68 20 3e 20 32 20 7c 7c 20 70 61 length > 2 || pa
3ba0: 72 74 73 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20 rts[0]) {.
3bb0: 20 20 76 61 72 20 69 2c 20 6a 2c 20 6c 69 73 74 var i, j, list
3bc0: 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 20 20 = [];..
3bd0: 66 6f 72 20 28 69 20 3d 20 6a 20 3d 20 30 3b 20 for (i = j = 0;
3be0: 69 20 3c 20 70 61 72 74 73 2e 6c 65 6e 67 74 68 i < parts.length
3bf0: 3b 20 2b 2b 69 29 20 7b 0a 0a 20 20 20 20 20 20 ; ++i) {..
3c00: 20 20 20 20 65 78 70 72 20 3d 20 70 61 72 74 73 expr = parts
3c10: 5b 69 5d 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 [i];..
3c20: 69 66 20 28 65 78 70 72 20 26 26 20 28 65 78 70 if (expr && (exp
3c30: 72 20 3d 20 69 20 26 20 31 0a 0a 20 20 20 20 20 r = i & 1..
3c40: 20 20 20 20 20 20 20 20 20 3f 20 5f 70 61 72 73 ? _pars
3c50: 65 45 78 70 72 28 65 78 70 72 2c 20 31 2c 20 71 eExpr(expr, 1, q
3c60: 73 74 72 29 0a 0a 20 20 20 20 20 20 20 20 20 20 str)..
3c70: 20 20 20 20 3a 20 27 22 27 20 2b 20 65 78 70 72 : '"' + expr
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3c90: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 5c 2f .replace(/\\/
3ca0: 67 2c 20 27 5c 5c 5c 5c 27 29 0a 20 20 20 20 20 g, '\\\\').
3cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65 .re
3cc0: 70 6c 61 63 65 28 2f 5c 72 5c 6e 3f 7c 5c 6e 2f place(/\r\n?|\n/
3cd0: 67 2c 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 g, '\\n').
3ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2e 72 65 70 .rep
3cf0: 6c 61 63 65 28 2f 22 2f 67 2c 20 27 5c 5c 22 27 lace(/"/g, '\\"'
3d00: 29 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) +.
3d10: 20 20 20 20 27 22 27 0a 0a 20 20 20 20 20 20 20 '"'..
3d20: 20 20 20 20 20 29 29 20 7b 20 6c 69 73 74 5b 6a )) { list[j
3d30: 2b 2b 5d 20 3d 20 65 78 70 72 3b 20 7d 0a 0a 20 ++] = expr; }..
3d40: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 }..
3d50: 20 20 65 78 70 72 20 3d 20 6a 20 3c 20 32 20 3f expr = j < 2 ?
3d60: 20 6c 69 73 74 5b 30 5d 0a 20 20 20 20 20 20 20 list[0].
3d70: 20 20 20 20 20 20 3a 20 27 5b 27 20 2b 20 6c 69 : '[' + li
3d80: 73 74 2e 6a 6f 69 6e 28 27 2c 27 29 20 2b 20 27 st.join(',') + '
3d90: 5d 2e 6a 6f 69 6e 28 22 22 29 27 3b 0a 0a 20 20 ].join("")';..
3da0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 } else {..
3db0: 20 20 20 20 20 20 65 78 70 72 20 3d 20 5f 70 61 expr = _pa
3dc0: 72 73 65 45 78 70 72 28 70 61 72 74 73 5b 31 5d rseExpr(parts[1]
3dd0: 2c 20 30 2c 20 71 73 74 72 29 3b 0a 20 20 20 20 , 0, qstr);.
3de0: 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 71 }.. if (q
3df0: 73 74 72 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 str.length) {.
3e00: 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 expr = exp
3e10: 72 2e 72 65 70 6c 61 63 65 28 52 45 5f 51 42 4d r.replace(RE_QBM
3e20: 41 52 4b 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f ARK, function (_
3e30: 2c 20 70 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 , pos) {.
3e40: 20 20 20 72 65 74 75 72 6e 20 71 73 74 72 5b 70 return qstr[p
3e50: 6f 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 os].
3e60: 2e 72 65 70 6c 61 63 65 28 2f 5c 72 2f 67 2c 20 .replace(/\r/g,
3e70: 27 5c 5c 72 27 29 0a 20 20 20 20 20 20 20 20 20 '\\r').
3e80: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 2f .replace(/\n/
3e90: 67 2c 20 27 5c 5c 6e 27 29 0a 20 20 20 20 20 20 g, '\\n').
3ea0: 20 20 7d 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 });. }.
3eb0: 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 0a return expr.
3ec0: 20 20 20 20 7d 0a 0a 20 20 20 20 76 61 72 20 52 }.. var R
3ed0: 45 5f 43 53 4e 41 4d 45 20 3d 20 2f 5e 28 3f 3a E_CSNAME = /^(?:
3ee0: 28 2d 3f 5b 5f 41 2d 5a 61 2d 7a 5c 78 41 30 2d (-?[_A-Za-z\xA0-
3ef0: 5c 78 46 46 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78 \xFF][-\w\xA0-\x
3f00: 46 46 5d 2a 29 7c 5c 75 32 30 35 37 28 5c 64 2b FF]*)|\u2057(\d+
3f10: 29 7e 29 3a 2f 3b 0a 20 20 20 20 76 61 72 0a 20 )~):/;. var.
3f20: 20 20 20 20 20 52 45 5f 42 52 45 4e 44 20 3d 20 RE_BREND =
3f30: 7b 0a 20 20 20 20 20 20 20 20 27 28 27 3a 20 2f {. '(': /
3f40: 5b 28 29 5d 2f 67 2c 0a 20 20 20 20 20 20 20 20 [()]/g,.
3f50: 27 5b 27 3a 20 2f 5b 5b 5c 5d 5d 2f 67 2c 0a 20 '[': /[[\]]/g,.
3f60: 20 20 20 20 20 20 20 27 7b 27 3a 20 2f 5b 7b 7d '{': /[{}
3f70: 5d 2f 67 0a 20 20 20 20 20 20 7d 3b 0a 0a 20 20 ]/g. };..
3f80: 20 20 66 75 6e 63 74 69 6f 6e 20 5f 70 61 72 73 function _pars
3f90: 65 45 78 70 72 20 28 65 78 70 72 2c 20 61 73 54 eExpr (expr, asT
3fa0: 65 78 74 2c 20 71 73 74 72 29 20 7b 0a 0a 20 20 ext, qstr) {..
3fb0: 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 0a expr = expr.
3fc0: 20 20 20 20 20 20 20 20 2e 72 65 70 6c 61 63 65 .replace
3fd0: 28 2f 5c 73 2b 2f 67 2c 20 27 20 27 29 2e 74 72 (/\s+/g, ' ').tr
3fe0: 69 6d 28 29 0a 20 20 20 20 20 20 20 20 2e 72 65 im(). .re
3ff0: 70 6c 61 63 65 28 2f 5c 20 3f 28 5b 5b 5c 28 7b place(/\ ?([[\({
4000: 7d 2c 3f 5c 2e 3a 5d 29 5c 20 3f 2f 67 2c 20 27 },?\.:])\ ?/g, '
4010: 24 31 27 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 $1');.. if
4020: 28 65 78 70 72 29 20 7b 0a 20 20 20 20 20 20 20 (expr) {.
4030: 20 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 6c var. l
4040: 69 73 74 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 ist = [],.
4050: 20 20 20 20 63 6e 74 20 3d 20 30 2c 0a 20 20 20 cnt = 0,.
4060: 20 20 20 20 20 20 20 6d 61 74 63 68 3b 0a 0a 20 match;..
4070: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 65 78 while (ex
4080: 70 72 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 pr &&.
4090: 20 20 20 20 28 6d 61 74 63 68 20 3d 20 65 78 70 (match = exp
40a0: 72 2e 6d 61 74 63 68 28 52 45 5f 43 53 4e 41 4d r.match(RE_CSNAM
40b0: 45 29 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 E)) &&.
40c0: 20 20 20 20 20 21 6d 61 74 63 68 2e 69 6e 64 65 !match.inde
40d0: 78 0a 20 20 20 20 20 20 20 20 20 20 29 20 7b 0a x. ) {.
40e0: 20 20 20 20 20 20 20 20 20 20 76 61 72 0a 20 20 var.
40f0: 20 20 20 20 20 20 20 20 20 20 6b 65 79 2c 0a 20 key,.
4100: 20 20 20 20 20 20 20 20 20 20 20 6a 73 62 2c 0a jsb,.
4110: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 20 3d re =
4120: 20 2f 2c 7c 28 5b 5b 7b 28 5d 29 7c 24 2f 67 3b /,|([[{(])|$/g;
4130: 0a 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 .. expr
4140: 20 3d 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 = RegExp.rightC
4150: 6f 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20 ontext;.
4160: 20 20 6b 65 79 20 20 3d 20 6d 61 74 63 68 5b 32 key = match[2
4170: 5d 20 3f 20 71 73 74 72 5b 6d 61 74 63 68 5b 32 ] ? qstr[match[2
4180: 5d 5d 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 2e ]].slice(1, -1).
4190: 74 72 69 6d 28 29 2e 72 65 70 6c 61 63 65 28 2f trim().replace(/
41a0: 5c 73 2b 2f 67 2c 20 27 20 27 29 20 3a 20 6d 61 \s+/g, ' ') : ma
41b0: 74 63 68 5b 31 5d 3b 0a 0a 20 20 20 20 20 20 20 tch[1];..
41c0: 20 20 20 77 68 69 6c 65 20 28 6a 73 62 20 3d 20 while (jsb =
41d0: 28 6d 61 74 63 68 20 3d 20 72 65 2e 65 78 65 63 (match = re.exec
41e0: 28 65 78 70 72 29 29 5b 31 5d 29 20 7b 20 73 6b (expr))[1]) { sk
41f0: 69 70 42 72 61 63 65 73 28 6a 73 62 2c 20 72 65 ipBraces(jsb, re
4200: 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 ); }..
4210: 6a 73 62 20 20 3d 20 65 78 70 72 2e 73 6c 69 63 jsb = expr.slic
4220: 65 28 30 2c 20 6d 61 74 63 68 2e 69 6e 64 65 78 e(0, match.index
4230: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 );. exp
4240: 72 20 3d 20 52 65 67 45 78 70 2e 72 69 67 68 74 r = RegExp.right
4250: 43 6f 6e 74 65 78 74 3b 0a 0a 20 20 20 20 20 20 Context;..
4260: 20 20 20 20 6c 69 73 74 5b 63 6e 74 2b 2b 5d 20 list[cnt++]
4270: 3d 20 5f 77 72 61 70 45 78 70 72 28 6a 73 62 2c = _wrapExpr(jsb,
4280: 20 31 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 1, key);.
4290: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 65 78 70 }.. exp
42a0: 72 20 3d 20 21 63 6e 74 20 3f 20 5f 77 72 61 70 r = !cnt ? _wrap
42b0: 45 78 70 72 28 65 78 70 72 2c 20 61 73 54 65 78 Expr(expr, asTex
42c0: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t).
42d0: 3a 20 63 6e 74 20 3e 20 31 20 3f 20 27 5b 27 20 : cnt > 1 ? '['
42e0: 2b 20 6c 69 73 74 2e 6a 6f 69 6e 28 27 2c 27 29 + list.join(',')
42f0: 20 2b 20 27 5d 2e 6a 6f 69 6e 28 22 20 22 29 2e + '].join(" ").
4300: 74 72 69 6d 28 29 27 20 3a 20 6c 69 73 74 5b 30 trim()' : list[0
4310: 5d 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 ];. }.
4320: 20 72 65 74 75 72 6e 20 65 78 70 72 0a 0a 20 20 return expr..
4330: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 6b 69 function ski
4340: 70 42 72 61 63 65 73 20 28 63 68 2c 20 72 65 29 pBraces (ch, re)
4350: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 0a 20 {. var.
4360: 20 20 20 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20 mm,.
4370: 20 20 20 20 20 20 20 6c 76 20 3d 20 31 2c 0a 20 lv = 1,.
4380: 20 20 20 20 20 20 20 20 20 69 72 20 3d 20 52 45 ir = RE
4390: 5f 42 52 45 4e 44 5b 63 68 5d 3b 0a 0a 20 20 20 _BREND[ch];..
43a0: 20 20 20 20 20 69 72 2e 6c 61 73 74 49 6e 64 65 ir.lastInde
43b0: 78 20 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 x = re.lastIndex
43c0: 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 ;. while
43d0: 28 6d 6d 20 3d 20 69 72 2e 65 78 65 63 28 65 78 (mm = ir.exec(ex
43e0: 70 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 pr)) {.
43f0: 20 69 66 20 28 6d 6d 5b 30 5d 20 3d 3d 3d 20 63 if (mm[0] === c
4400: 68 29 20 7b 20 2b 2b 6c 76 3b 20 7d 0a 20 20 20 h) { ++lv; }.
4410: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 else if (
4420: 21 2d 2d 6c 76 29 20 7b 20 62 72 65 61 6b 20 7d !--lv) { break }
4430: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
4440: 20 20 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 re.lastIndex
4450: 3d 20 6c 76 20 3f 20 65 78 70 72 2e 6c 65 6e 67 = lv ? expr.leng
4460: 74 68 20 3a 20 69 72 2e 6c 61 73 74 49 6e 64 65 th : ir.lastInde
4470: 78 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d x;. }. }
4480: 0a 0a 20 20 20 20 2f 2f 20 69 73 74 61 6e 62 75 .. // istanbu
4490: 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 3a 20 6e l ignore next: n
44a0: 6f 74 20 62 6f 74 68 0a 20 20 20 20 76 61 72 20 ot both. var
44b0: 2f 2f 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c // eslint-disabl
44c0: 65 2d 6e 65 78 74 2d 6c 69 6e 65 20 6d 61 78 2d e-next-line max-
44d0: 6c 65 6e 0a 20 20 20 20 20 20 4a 53 5f 43 4f 4e len. JS_CON
44e0: 54 45 58 54 20 3d 20 27 22 69 6e 20 74 68 69 73 TEXT = '"in this
44f0: 3f 74 68 69 73 3a 27 20 2b 20 28 74 79 70 65 6f ?this:' + (typeo
4500: 66 20 77 69 6e 64 6f 77 20 21 3d 3d 20 27 6f 62 f window !== 'ob
4510: 6a 65 63 74 27 20 3f 20 27 67 6c 6f 62 61 6c 27 ject' ? 'global'
4520: 20 3a 20 27 77 69 6e 64 6f 77 27 29 20 2b 20 27 : 'window') + '
4530: 29 2e 27 2c 0a 20 20 20 20 20 20 4a 53 5f 56 41 ).',. JS_VA
4540: 52 4e 41 4d 45 20 3d 20 2f 5b 2c 7b 5d 5b 5c 24 RNAME = /[,{][\$
4550: 5c 77 5d 2b 28 3f 3d 3a 29 7c 28 5e 20 2a 7c 5b \w]+(?=:)|(^ *|[
4560: 5e 24 5c 77 5c 2e 7b 5d 29 28 3f 21 28 3f 3a 74 ^$\w\.{])(?!(?:t
4570: 79 70 65 6f 66 7c 74 72 75 65 7c 66 61 6c 73 65 ypeof|true|false
4580: 7c 6e 75 6c 6c 7c 75 6e 64 65 66 69 6e 65 64 7c |null|undefined|
4590: 69 6e 7c 69 6e 73 74 61 6e 63 65 6f 66 7c 69 73 in|instanceof|is
45a0: 28 3f 3a 46 69 6e 69 74 65 7c 4e 61 4e 29 7c 76 (?:Finite|NaN)|v
45b0: 6f 69 64 7c 4e 61 4e 7c 6e 65 77 7c 44 61 74 65 oid|NaN|new|Date
45c0: 7c 52 65 67 45 78 70 7c 4d 61 74 68 29 28 3f 21 |RegExp|Math)(?!
45d0: 5b 24 5c 77 5d 29 29 28 5b 24 5f 41 2d 5a 61 2d [$\w]))([$_A-Za-
45e0: 7a 5d 5b 24 5c 77 5d 2a 29 2f 67 2c 0a 20 20 20 z][$\w]*)/g,.
45f0: 20 20 20 4a 53 5f 4e 4f 50 52 4f 50 53 20 3d 20 JS_NOPROPS =
4600: 2f 5e 28 3f 3d 28 5c 2e 5b 24 5c 77 5d 2b 29 29 /^(?=(\.[$\w]+))
4610: 5c 31 28 3f 3a 5b 5e 2e 5b 28 5d 7c 24 29 2f 3b \1(?:[^.[(]|$)/;
4620: 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f .. function _
4630: 77 72 61 70 45 78 70 72 20 28 65 78 70 72 2c 20 wrapExpr (expr,
4640: 61 73 54 65 78 74 2c 20 6b 65 79 29 20 7b 0a 20 asText, key) {.
4650: 20 20 20 20 20 76 61 72 20 74 62 3b 0a 0a 20 20 var tb;..
4660: 20 20 20 20 65 78 70 72 20 3d 20 65 78 70 72 2e expr = expr.
4670: 72 65 70 6c 61 63 65 28 4a 53 5f 56 41 52 4e 41 replace(JS_VARNA
4680: 4d 45 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6d 61 ME, function (ma
4690: 74 63 68 2c 20 70 2c 20 6d 76 61 72 2c 20 70 6f tch, p, mvar, po
46a0: 73 2c 20 73 29 20 7b 0a 20 20 20 20 20 20 20 20 s, s) {.
46b0: 69 66 20 28 6d 76 61 72 29 20 7b 0a 20 20 20 20 if (mvar) {.
46c0: 20 20 20 20 20 20 70 6f 73 20 3d 20 74 62 20 3f pos = tb ?
46d0: 20 30 20 3a 20 70 6f 73 20 2b 20 6d 61 74 63 68 0 : pos + match
46e0: 2e 6c 65 6e 67 74 68 3b 0a 0a 20 20 20 20 20 20 .length;..
46f0: 20 20 20 20 69 66 20 28 6d 76 61 72 20 21 3d 3d if (mvar !==
4700: 20 27 74 68 69 73 27 20 26 26 20 6d 76 61 72 20 'this' && mvar
4710: 21 3d 3d 20 27 67 6c 6f 62 61 6c 27 20 26 26 20 !== 'global' &&
4720: 6d 76 61 72 20 21 3d 3d 20 27 77 69 6e 64 6f 77 mvar !== 'window
4730: 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ') {.
4740: 20 6d 61 74 63 68 20 3d 20 70 20 2b 20 27 28 22 match = p + '("
4750: 27 20 2b 20 6d 76 61 72 20 2b 20 4a 53 5f 43 4f ' + mvar + JS_CO
4760: 4e 54 45 58 54 20 2b 20 6d 76 61 72 3b 0a 20 20 NTEXT + mvar;.
4770: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6f if (po
4780: 73 29 20 7b 20 74 62 20 3d 20 28 73 20 3d 20 73 s) { tb = (s = s
4790: 5b 70 6f 73 5d 29 20 3d 3d 3d 20 27 2e 27 20 7c [pos]) === '.' |
47a0: 7c 20 73 20 3d 3d 3d 20 27 28 27 20 7c 7c 20 73 | s === '(' || s
47b0: 20 3d 3d 3d 20 27 5b 27 3b 20 7d 0a 20 20 20 20 === '['; }.
47c0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
47d0: 28 70 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 (pos) {.
47e0: 20 20 20 20 74 62 20 3d 20 21 4a 53 5f 4e 4f 50 tb = !JS_NOP
47f0: 52 4f 50 53 2e 74 65 73 74 28 73 2e 73 6c 69 63 ROPS.test(s.slic
4800: 65 28 70 6f 73 29 29 3b 0a 20 20 20 20 20 20 20 e(pos));.
4810: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
4820: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 return ma
4830: 74 63 68 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 tch. });..
4840: 20 20 20 20 20 69 66 20 28 74 62 29 20 7b 0a 20 if (tb) {.
4850: 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 27 74 expr = 't
4860: 72 79 7b 72 65 74 75 72 6e 20 27 20 2b 20 65 78 ry{return ' + ex
4870: 70 72 20 2b 20 27 7d 63 61 74 63 68 28 65 29 7b pr + '}catch(e){
4880: 45 28 65 2c 74 68 69 73 29 7d 27 3b 0a 20 20 20 E(e,this)}';.
4890: 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 }.. if (
48a0: 6b 65 79 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 key) {..
48b0: 65 78 70 72 20 3d 20 28 74 62 0a 20 20 20 20 20 expr = (tb.
48c0: 20 20 20 20 20 20 20 3f 20 27 66 75 6e 63 74 69 ? 'functi
48d0: 6f 6e 28 29 7b 27 20 2b 20 65 78 70 72 20 2b 20 on(){' + expr +
48e0: 27 7d 2e 63 61 6c 6c 28 74 68 69 73 29 27 20 3a '}.call(this)' :
48f0: 20 27 28 27 20 2b 20 65 78 70 72 20 2b 20 27 29 '(' + expr + ')
4900: 27 0a 20 20 20 20 20 20 20 20 20 20 29 20 2b 20 '. ) +
4910: 27 3f 22 27 20 2b 20 6b 65 79 20 2b 20 27 22 3a '?"' + key + '":
4920: 22 22 27 3b 0a 0a 20 20 20 20 20 20 7d 20 65 6c ""';.. } el
4930: 73 65 20 69 66 20 28 61 73 54 65 78 74 29 20 7b se if (asText) {
4940: 0a 0a 20 20 20 20 20 20 20 20 65 78 70 72 20 3d .. expr =
4950: 20 27 66 75 6e 63 74 69 6f 6e 28 76 29 7b 27 20 'function(v){'
4960: 2b 20 28 74 62 0a 20 20 20 20 20 20 20 20 20 20 + (tb.
4970: 20 20 3f 20 65 78 70 72 2e 72 65 70 6c 61 63 65 ? expr.replace
4980: 28 27 72 65 74 75 72 6e 20 27 2c 20 27 76 3d 27 ('return ', 'v='
4990: 29 20 3a 20 27 76 3d 28 27 20 2b 20 65 78 70 72 ) : 'v=(' + expr
49a0: 20 2b 20 27 29 27 0a 20 20 20 20 20 20 20 20 20 + ')'.
49b0: 20 29 20 2b 20 27 3b 72 65 74 75 72 6e 20 76 7c ) + ';return v|
49c0: 7c 76 3d 3d 3d 30 3f 76 3a 22 22 7d 2e 63 61 6c |v===0?v:""}.cal
49d0: 6c 28 74 68 69 73 29 27 3b 0a 20 20 20 20 20 20 l(this)';.
49e0: 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 }.. return
49f0: 65 78 70 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 expr. }..
4a00: 5f 74 6d 70 6c 2e 76 65 72 73 69 6f 6e 20 3d 20 _tmpl.version =
4a10: 62 72 61 63 6b 65 74 73 2e 76 65 72 73 69 6f 6e brackets.version
4a20: 20 3d 20 27 76 33 2e 30 2e 38 27 3b 0a 0a 20 20 = 'v3.0.8';..
4a30: 20 20 72 65 74 75 72 6e 20 5f 74 6d 70 6c 0a 0a return _tmpl..
4a40: 20 20 7d 29 28 29 3b 0a 0a 20 20 2f 2a 20 69 73 })();.. /* is
4a50: 74 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 tanbul ignore ne
4a60: 78 74 20 2a 2f 0a 20 20 76 61 72 20 6f 62 73 65 xt */. var obse
4a70: 72 76 61 62 6c 65 20 3d 20 66 75 6e 63 74 69 6f rvable = functio
4a80: 6e 28 65 6c 29 20 7b 0a 0a 20 20 20 20 2f 2a 2a n(el) {.. /**
4a90: 0a 20 20 20 20 20 2a 20 45 78 74 65 6e 64 20 74 . * Extend t
4aa0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6f 62 6a 65 he original obje
4ab0: 63 74 20 6f 72 20 63 72 65 61 74 65 20 61 20 6e ct or create a n
4ac0: 65 77 20 65 6d 70 74 79 20 6f 6e 65 0a 20 20 20 ew empty one.
4ad0: 20 20 2a 20 40 74 79 70 65 20 7b 20 4f 62 6a 65 * @type { Obje
4ae0: 63 74 20 7d 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 ct }. */..
4af0: 20 20 65 6c 20 3d 20 65 6c 20 7c 7c 20 7b 7d 3b el = el || {};
4b00: 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a .. /**. *
4b10: 20 50 72 69 76 61 74 65 20 76 61 72 69 61 62 6c Private variabl
4b20: 65 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 es. */. v
4b30: 61 72 20 63 61 6c 6c 62 61 63 6b 73 20 3d 20 7b ar callbacks = {
4b40: 7d 2c 0a 20 20 20 20 20 20 73 6c 69 63 65 20 3d },. slice =
4b50: 20 41 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65 Array.prototype
4b60: 2e 73 6c 69 63 65 3b 0a 0a 20 20 20 20 2f 2a 2a .slice;.. /**
4b70: 0a 20 20 20 20 20 2a 20 50 75 62 6c 69 63 20 41 . * Public A
4b80: 70 69 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 pi. */..
4b90: 2f 2f 20 65 78 74 65 6e 64 20 74 68 65 20 65 6c // extend the el
4ba0: 20 6f 62 6a 65 63 74 20 61 64 64 69 6e 67 20 74 object adding t
4bb0: 68 65 20 6f 62 73 65 72 76 61 62 6c 65 20 6d 65 he observable me
4bc0: 74 68 6f 64 73 0a 20 20 20 20 4f 62 6a 65 63 74 thods. Object
4bd0: 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 69 65 .definePropertie
4be0: 73 28 65 6c 2c 20 7b 0a 20 20 20 20 20 20 2f 2a s(el, {. /*
4bf0: 2a 0a 20 20 20 20 20 20 20 2a 20 4c 69 73 74 65 *. * Liste
4c00: 6e 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 60 n to the given `
4c10: 65 76 65 6e 74 60 20 61 6e 64 73 0a 20 20 20 20 event` ands.
4c20: 20 20 20 2a 20 65 78 65 63 75 74 65 20 74 68 65 * execute the
4c30: 20 60 63 61 6c 6c 62 61 63 6b 60 20 65 61 63 68 `callback` each
4c40: 20 74 69 6d 65 20 61 6e 20 65 76 65 6e 74 20 69 time an event i
4c50: 73 20 74 72 69 67 67 65 72 65 64 2e 0a 20 20 20 s triggered..
4c60: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 7b 20 * @param {
4c70: 53 74 72 69 6e 67 20 7d 20 65 76 65 6e 74 20 2d String } event -
4c80: 20 65 76 65 6e 74 20 69 64 0a 20 20 20 20 20 20 event id.
4c90: 20 2a 20 40 70 61 72 61 6d 20 20 7b 20 46 75 6e * @param { Fun
4ca0: 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c ction } fn - cal
4cb0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 lback function.
4cc0: 20 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 73 * @returns
4cd0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65 6c 0a 20 { Object } el.
4ce0: 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 6f */. o
4cf0: 6e 3a 20 7b 0a 20 20 20 20 20 20 20 20 76 61 6c n: {. val
4d00: 75 65 3a 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 ue: function(eve
4d10: 6e 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 nt, fn) {.
4d20: 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 66 if (typeof f
4d30: 6e 20 3d 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29 n == 'function')
4d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 28 . { (
4d50: 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d callbacks[event]
4d60: 20 3d 20 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 = callbacks[eve
4d70: 6e 74 5d 20 7c 7c 20 5b 5d 29 2e 70 75 73 68 28 nt] || []).push(
4d80: 66 6e 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 fn); }.
4d90: 20 72 65 74 75 72 6e 20 65 6c 0a 20 20 20 20 20 return el.
4da0: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e },. en
4db0: 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c umerable: false,
4dc0: 0a 20 20 20 20 20 20 20 20 77 72 69 74 61 62 6c . writabl
4dd0: 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 e: false,.
4de0: 20 20 63 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 configurable:
4df0: 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 0a false. },..
4e00: 20 20 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 20 /**.
4e10: 20 2a 20 52 65 6d 6f 76 65 73 20 74 68 65 20 67 * Removes the g
4e20: 69 76 65 6e 20 60 65 76 65 6e 74 60 20 6c 69 73 iven `event` lis
4e30: 74 65 6e 65 72 73 0a 20 20 20 20 20 20 20 2a 20 teners. *
4e40: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
4e50: 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e g } event - even
4e60: 74 20 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70 t id. * @p
4e70: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f aram { Functio
4e80: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 n } fn - callbac
4e90: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 k function.
4ea0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f * @returns { O
4eb0: 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20 bject } el.
4ec0: 20 20 2a 2f 0a 20 20 20 20 20 20 6f 66 66 3a 20 */. off:
4ed0: 7b 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a {. value:
4ee0: 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c function(event,
4ef0: 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 fn) {.
4f00: 20 69 66 20 28 65 76 65 6e 74 20 3d 3d 20 27 2a if (event == '*
4f10: 27 20 26 26 20 21 66 6e 29 20 7b 20 63 61 6c 6c ' && !fn) { call
4f20: 62 61 63 6b 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 backs = {}; }.
4f30: 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 else {.
4f40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 if (f
4f50: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 n) {.
4f60: 20 20 20 76 61 72 20 61 72 72 20 3d 20 63 61 6c var arr = cal
4f70: 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 0a 20 lbacks[event];.
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 for
4f90: 20 28 76 61 72 20 69 20 3d 20 30 2c 20 63 62 3b (var i = 0, cb;
4fa0: 20 63 62 20 3d 20 61 72 72 20 26 26 20 61 72 72 cb = arr && arr
4fb0: 5b 69 5d 3b 20 2b 2b 69 29 20 7b 0a 20 20 20 20 [i]; ++i) {.
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
4fd0: 63 62 20 3d 3d 20 66 6e 29 20 7b 20 61 72 72 2e cb == fn) { arr.
4fe0: 73 70 6c 69 63 65 28 69 2d 2d 2c 20 31 29 3b 20 splice(i--, 1);
4ff0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }.
5000: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }. }
5010: 65 6c 73 65 20 7b 20 64 65 6c 65 74 65 20 63 61 else { delete ca
5020: 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d 3b 20 llbacks[event];
5030: 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }.
5040: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 return e
5050: 6c 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 l. },.
5060: 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a enumerable:
5070: 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 false,.
5080: 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 65 2c writable: false,
5090: 0a 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 . configu
50a0: 72 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20 20 rable: false.
50b0: 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a 2a },.. /**
50c0: 0a 20 20 20 20 20 20 20 2a 20 4c 69 73 74 65 6e . * Listen
50d0: 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 60 65 to the given `e
50e0: 76 65 6e 74 60 20 61 6e 64 0a 20 20 20 20 20 20 vent` and.
50f0: 20 2a 20 65 78 65 63 75 74 65 20 74 68 65 20 60 * execute the `
5100: 63 61 6c 6c 62 61 63 6b 60 20 61 74 20 6d 6f 73 callback` at mos
5110: 74 20 6f 6e 63 65 0a 20 20 20 20 20 20 20 2a 20 t once. *
5120: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
5130: 67 20 7d 20 65 76 65 6e 74 20 2d 20 65 76 65 6e g } event - even
5140: 74 20 69 64 0a 20 20 20 20 20 20 20 2a 20 40 70 t id. * @p
5150: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f aram { Functio
5160: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 n } fn - callbac
5170: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 k function.
5180: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 4f * @returns { O
5190: 62 6a 65 63 74 20 7d 20 65 6c 0a 20 20 20 20 20 bject } el.
51a0: 20 20 2a 2f 0a 20 20 20 20 20 20 6f 6e 65 3a 20 */. one:
51b0: 7b 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 3a {. value:
51c0: 20 66 75 6e 63 74 69 6f 6e 28 65 76 65 6e 74 2c function(event,
51d0: 20 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 fn) {.
51e0: 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 28 29 20 7b function on() {
51f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 2e . el.
5200: 6f 66 66 28 65 76 65 6e 74 2c 20 6f 6e 29 3b 0a off(event, on);.
5210: 20 20 20 20 20 20 20 20 20 20 20 20 66 6e 2e 61 fn.a
5220: 70 70 6c 79 28 65 6c 2c 20 61 72 67 75 6d 65 6e pply(el, argumen
5230: 74 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d ts);. }
5240: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 . retur
5250: 6e 20 65 6c 2e 6f 6e 28 65 76 65 6e 74 2c 20 6f n el.on(event, o
5260: 6e 29 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 n). },.
5270: 20 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 enumerable
5280: 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 : false,.
5290: 20 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 65 writable: false
52a0: 2c 0a 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 ,. config
52b0: 75 72 61 62 6c 65 3a 20 66 61 6c 73 65 0a 20 20 urable: false.
52c0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 2f 2a },.. /*
52d0: 2a 0a 20 20 20 20 20 20 20 2a 20 45 78 65 63 75 *. * Execu
52e0: 74 65 20 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 20 te all callback
52f0: 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 6c functions that l
5300: 69 73 74 65 6e 20 74 6f 0a 20 20 20 20 20 20 20 isten to.
5310: 2a 20 74 68 65 20 67 69 76 65 6e 20 60 65 76 65 * the given `eve
5320: 6e 74 60 0a 20 20 20 20 20 20 20 2a 20 40 70 61 nt`. * @pa
5330: 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d ram { String }
5340: 20 65 76 65 6e 74 20 2d 20 65 76 65 6e 74 20 69 event - event i
5350: 64 0a 20 20 20 20 20 20 20 2a 20 40 72 65 74 75 d. * @retu
5360: 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 65 rns { Object } e
5370: 6c 0a 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 l. */.
5380: 20 20 74 72 69 67 67 65 72 3a 20 7b 0a 20 20 20 trigger: {.
5390: 20 20 20 20 20 76 61 6c 75 65 3a 20 66 75 6e 63 value: func
53a0: 74 69 6f 6e 28 65 76 65 6e 74 29 20 7b 0a 20 20 tion(event) {.
53b0: 20 20 20 20 20 20 20 20 76 61 72 20 61 72 67 75 var argu
53c0: 6d 65 6e 74 73 24 31 20 3d 20 61 72 67 75 6d 65 ments$1 = argume
53d0: 6e 74 73 3b 0a 0a 0a 20 20 20 20 20 20 20 20 20 nts;...
53e0: 20 2f 2f 20 67 65 74 74 69 6e 67 20 74 68 65 20 // getting the
53f0: 61 72 67 75 6d 65 6e 74 73 0a 20 20 20 20 20 20 arguments.
5400: 20 20 20 20 76 61 72 20 61 72 67 6c 65 6e 20 3d var arglen =
5410: 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 arguments.lengt
5420: 68 20 2d 20 31 2c 0a 20 20 20 20 20 20 20 20 20 h - 1,.
5430: 20 20 20 61 72 67 73 20 3d 20 6e 65 77 20 41 72 args = new Ar
5440: 72 61 79 28 61 72 67 6c 65 6e 29 2c 0a 20 20 20 ray(arglen),.
5450: 20 20 20 20 20 20 20 20 20 66 6e 73 2c 0a 20 20 fns,.
5460: 20 20 20 20 20 20 20 20 20 20 66 6e 2c 0a 20 20 fn,.
5470: 20 20 20 20 20 20 20 20 20 20 69 3b 0a 0a 20 20 i;..
5480: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d for (i =
5490: 20 30 3b 20 69 20 3c 20 61 72 67 6c 65 6e 3b 20 0; i < arglen;
54a0: 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 i++) {.
54b0: 20 20 20 61 72 67 73 5b 69 5d 20 3d 20 61 72 67 args[i] = arg
54c0: 75 6d 65 6e 74 73 24 31 5b 69 20 2b 20 31 5d 3b uments$1[i + 1];
54d0: 20 2f 2f 20 73 6b 69 70 20 66 69 72 73 74 20 61 // skip first a
54e0: 72 67 75 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 rgument.
54f0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 66 }.. f
5500: 6e 73 20 3d 20 73 6c 69 63 65 2e 63 61 6c 6c 28 ns = slice.call(
5510: 63 61 6c 6c 62 61 63 6b 73 5b 65 76 65 6e 74 5d callbacks[event]
5520: 20 7c 7c 20 5b 5d 2c 20 30 29 3b 0a 0a 20 20 20 || [], 0);..
5530: 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 for (i =
5540: 30 3b 20 66 6e 20 3d 20 66 6e 73 5b 69 5d 3b 20 0; fn = fns[i];
5550: 2b 2b 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ++i) {.
5560: 20 20 20 66 6e 2e 61 70 70 6c 79 28 65 6c 2c 20 fn.apply(el,
5570: 61 72 67 73 29 3b 0a 20 20 20 20 20 20 20 20 20 args);.
5580: 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 }.. if
5590: 20 28 63 61 6c 6c 62 61 63 6b 73 5b 27 2a 27 5d (callbacks['*']
55a0: 20 26 26 20 65 76 65 6e 74 20 21 3d 20 27 2a 27 && event != '*'
55b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 ). {
55c0: 65 6c 2e 74 72 69 67 67 65 72 2e 61 70 70 6c 79 el.trigger.apply
55d0: 28 65 6c 2c 20 5b 27 2a 27 2c 20 65 76 65 6e 74 (el, ['*', event
55e0: 5d 2e 63 6f 6e 63 61 74 28 61 72 67 73 29 29 3b ].concat(args));
55f0: 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 72 65 }.. re
5600: 74 75 72 6e 20 65 6c 0a 20 20 20 20 20 20 20 20 turn el.
5610: 7d 2c 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 65 },. enume
5620: 72 61 62 6c 65 3a 20 66 61 6c 73 65 2c 0a 20 20 rable: false,.
5630: 20 20 20 20 20 20 77 72 69 74 61 62 6c 65 3a 20 writable:
5640: 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 63 false,. c
5650: 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 66 61 6c onfigurable: fal
5660: 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d se. }. }
5670: 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 65 );.. return e
5680: 6c 0a 0a 20 20 7d 3b 0a 0a 20 20 2f 2a 2a 0a 20 l.. };.. /**.
5690: 20 20 2a 20 53 68 6f 72 74 20 61 6c 69 61 73 20 * Short alias
56a0: 66 6f 72 20 4f 62 6a 65 63 74 2e 67 65 74 4f 77 for Object.getOw
56b0: 6e 50 72 6f 70 65 72 74 79 44 65 73 63 72 69 70 nPropertyDescrip
56c0: 74 6f 72 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 tor. */. func
56d0: 74 69 6f 6e 20 67 65 74 50 72 6f 70 44 65 73 63 tion getPropDesc
56e0: 72 69 70 74 6f 72 20 28 6f 2c 20 6b 29 20 7b 0a riptor (o, k) {.
56f0: 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 return Objec
5700: 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79 t.getOwnProperty
5710: 44 65 73 63 72 69 70 74 6f 72 28 6f 2c 20 6b 29 Descriptor(o, k)
5720: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
5730: 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 64 Check if passed
5740: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 64 argument is und
5750: 65 66 69 6e 65 64 0a 20 20 20 2a 20 40 70 61 72 efined. * @par
5760: 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 am { * } value
5770: 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 -. * @returns
5780: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 { Boolean } -.
5790: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
57a0: 69 73 55 6e 64 65 66 69 6e 65 64 28 76 61 6c 75 isUndefined(valu
57b0: 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 e) {. return
57c0: 74 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d typeof value ===
57d0: 20 54 5f 55 4e 44 45 46 0a 20 20 7d 0a 0a 20 20 T_UNDEF. }..
57e0: 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 77 /**. * Check w
57f0: 68 65 74 68 65 72 20 6f 62 6a 65 63 74 27 73 20 hether object's
5800: 70 72 6f 70 65 72 74 79 20 63 6f 75 6c 64 20 62 property could b
5810: 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 20 20 20 e overridden.
5820: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a * @param { Obj
5830: 65 63 74 20 7d 20 20 6f 62 6a 20 2d 20 73 6f 75 ect } obj - sou
5840: 72 63 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20 rce object. *
5850: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
5860: 67 20 7d 20 20 6b 65 79 20 2d 20 6f 62 6a 65 63 g } key - objec
5870: 74 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 t property. *
5880: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 @returns { Boole
5890: 61 6e 20 7d 20 74 72 75 65 20 69 66 20 77 72 69 an } true if wri
58a0: 74 61 62 6c 65 0a 20 20 20 2a 2f 0a 20 20 66 75 table. */. fu
58b0: 6e 63 74 69 6f 6e 20 69 73 57 72 69 74 61 62 6c nction isWritabl
58c0: 65 28 6f 62 6a 2c 20 6b 65 79 29 20 7b 0a 20 20 e(obj, key) {.
58d0: 20 20 76 61 72 20 64 65 73 63 72 69 70 74 6f 72 var descriptor
58e0: 20 3d 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 = getPropDescri
58f0: 70 74 6f 72 28 6f 62 6a 2c 20 6b 65 79 29 3b 0a ptor(obj, key);.
5900: 20 20 20 20 72 65 74 75 72 6e 20 69 73 55 6e 64 return isUnd
5910: 65 66 69 6e 65 64 28 6f 62 6a 5b 6b 65 79 5d 29 efined(obj[key])
5920: 20 7c 7c 20 64 65 73 63 72 69 70 74 6f 72 20 26 || descriptor &
5930: 26 20 64 65 73 63 72 69 70 74 6f 72 2e 77 72 69 & descriptor.wri
5940: 74 61 62 6c 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a table. }.. /**
5950: 0a 20 20 20 2a 20 45 78 74 65 6e 64 20 61 6e 79 . * Extend any
5960: 20 6f 62 6a 65 63 74 20 77 69 74 68 20 6f 74 68 object with oth
5970: 65 72 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 er properties.
5980: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
5990: 6a 65 63 74 20 7d 20 73 72 63 20 2d 20 73 6f 75 ject } src - sou
59a0: 72 63 65 20 6f 62 6a 65 63 74 0a 20 20 20 2a 20 rce object. *
59b0: 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 @returns { Objec
59c0: 74 20 7d 20 74 68 65 20 72 65 73 75 6c 74 69 6e t } the resultin
59d0: 67 20 65 78 74 65 6e 64 65 64 20 6f 62 6a 65 63 g extended objec
59e0: 74 0a 20 20 20 2a 0a 20 20 20 2a 20 76 61 72 20 t. *. * var
59f0: 6f 62 6a 20 3d 20 7b 20 66 6f 6f 3a 20 27 62 61 obj = { foo: 'ba
5a00: 7a 27 20 7d 0a 20 20 20 2a 20 65 78 74 65 6e 64 z' }. * extend
5a10: 28 6f 62 6a 2c 20 7b 62 61 72 3a 20 27 62 61 72 (obj, {bar: 'bar
5a20: 27 2c 20 66 6f 6f 3a 20 27 62 61 72 27 7d 29 0a ', foo: 'bar'}).
5a30: 20 20 20 2a 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 * console.log
5a40: 28 6f 62 6a 29 20 3d 3e 20 7b 62 61 72 3a 20 27 (obj) => {bar: '
5a50: 62 61 72 27 2c 20 66 6f 6f 3a 20 27 62 61 72 27 bar', foo: 'bar'
5a60: 7d 0a 20 20 20 2a 0a 20 20 20 2a 2f 0a 20 20 66 }. *. */. f
5a70: 75 6e 63 74 69 6f 6e 20 65 78 74 65 6e 64 28 73 unction extend(s
5a80: 72 63 29 20 7b 0a 20 20 20 20 76 61 72 20 6f 62 rc) {. var ob
5a90: 6a 3b 0a 20 20 20 20 76 61 72 20 69 20 3d 20 31 j;. var i = 1
5aa0: 3b 0a 20 20 20 20 76 61 72 20 61 72 67 73 20 3d ;. var args =
5ab0: 20 61 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 20 arguments;.
5ac0: 76 61 72 20 6c 20 3d 20 61 72 67 73 2e 6c 65 6e var l = args.len
5ad0: 67 74 68 3b 0a 0a 20 20 20 20 66 6f 72 20 28 3b gth;.. for (;
5ae0: 20 69 20 3c 20 6c 3b 20 69 2b 2b 29 20 7b 0a 20 i < l; i++) {.
5af0: 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 20 61 if (obj = a
5b00: 72 67 73 5b 69 5d 29 20 7b 0a 20 20 20 20 20 20 rgs[i]) {.
5b10: 20 20 66 6f 72 20 28 76 61 72 20 6b 65 79 20 69 for (var key i
5b20: 6e 20 6f 62 6a 29 20 7b 0a 20 20 20 20 20 20 20 n obj) {.
5b30: 20 20 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 74 // check if t
5b40: 68 69 73 20 70 72 6f 70 65 72 74 79 20 6f 66 20 his property of
5b50: 74 68 65 20 73 6f 75 72 63 65 20 6f 62 6a 65 63 the source objec
5b60: 74 20 63 6f 75 6c 64 20 62 65 20 6f 76 65 72 72 t could be overr
5b70: 69 64 64 65 6e 0a 20 20 20 20 20 20 20 20 20 20 idden.
5b80: 69 66 20 28 69 73 57 72 69 74 61 62 6c 65 28 73 if (isWritable(s
5b90: 72 63 2c 20 6b 65 79 29 29 0a 20 20 20 20 20 20 rc, key)).
5ba0: 20 20 20 20 20 20 7b 20 73 72 63 5b 6b 65 79 5d { src[key]
5bb0: 20 3d 20 6f 62 6a 5b 6b 65 79 5d 3b 20 7d 0a 20 = obj[key]; }.
5bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d }. }
5bd0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 . }. retur
5be0: 6e 20 73 72 63 0a 20 20 7d 0a 0a 20 20 2f 2a 2a n src. }.. /**
5bf0: 0a 20 20 20 2a 20 41 6c 69 61 73 20 66 6f 72 20 . * Alias for
5c00: 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 0a 20 20 Object.create.
5c10: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 */. function c
5c20: 72 65 61 74 65 28 73 72 63 29 20 7b 0a 20 20 20 reate(src) {.
5c30: 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 63 return Object.c
5c40: 72 65 61 74 65 28 73 72 63 29 0a 20 20 7d 0a 0a reate(src). }..
5c50: 20 20 76 61 72 20 73 65 74 74 69 6e 67 73 20 3d var settings =
5c60: 20 65 78 74 65 6e 64 28 63 72 65 61 74 65 28 62 extend(create(b
5c70: 72 61 63 6b 65 74 73 2e 73 65 74 74 69 6e 67 73 rackets.settings
5c80: 29 2c 20 7b 0a 20 20 20 20 73 6b 69 70 41 6e 6f ), {. skipAno
5c90: 6e 79 6d 6f 75 73 54 61 67 73 3a 20 74 72 75 65 nymousTags: true
5ca0: 2c 0a 20 20 20 20 2f 2f 20 74 68 65 20 22 76 61 ,. // the "va
5cb0: 6c 75 65 22 20 61 74 74 72 69 62 75 74 65 73 20 lue" attributes
5cc0: 77 69 6c 6c 20 62 65 20 70 72 65 73 65 72 76 65 will be preserve
5cd0: 64 0a 20 20 20 20 6b 65 65 70 56 61 6c 75 65 41 d. keepValueA
5ce0: 74 74 72 69 62 75 74 65 73 3a 20 66 61 6c 73 65 ttributes: false
5cf0: 2c 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 ,. // handle
5d00: 74 68 65 20 61 75 74 6f 20 75 70 64 61 74 65 73 the auto updates
5d10: 20 6f 6e 20 61 6e 79 20 44 4f 4d 20 65 76 65 6e on any DOM even
5d20: 74 0a 20 20 20 20 61 75 74 6f 55 70 64 61 74 65 t. autoUpdate
5d30: 3a 20 74 72 75 65 0a 20 20 7d 29 3b 0a 0a 20 20 : true. });..
5d40: 2f 2a 2a 0a 20 20 20 2a 20 53 68 6f 72 74 65 72 /**. * Shorter
5d50: 20 61 6e 64 20 66 61 73 74 20 77 61 79 20 74 6f and fast way to
5d60: 20 73 65 6c 65 63 74 20 6d 75 6c 74 69 70 6c 65 select multiple
5d70: 20 6e 6f 64 65 73 20 69 6e 20 74 68 65 20 44 4f nodes in the DO
5d80: 4d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 M. * @param
5d90: 7b 20 53 74 72 69 6e 67 20 7d 20 73 65 6c 65 63 { String } selec
5da0: 74 6f 72 20 2d 20 44 4f 4d 20 73 65 6c 65 63 74 tor - DOM select
5db0: 6f 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 or. * @param
5dc0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 74 78 20 { Object } ctx
5dd0: 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 68 65 72 65 - DOM node where
5de0: 20 74 68 65 20 74 61 72 67 65 74 73 20 6f 66 20 the targets of
5df0: 6f 75 72 20 73 65 61 72 63 68 20 77 69 6c 6c 20 our search will
5e00: 69 73 20 6c 6f 63 61 74 65 64 0a 20 20 20 2a 20 is located. *
5e10: 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 @returns { Objec
5e20: 74 20 7d 20 64 6f 6d 20 6e 6f 64 65 73 20 66 6f t } dom nodes fo
5e30: 75 6e 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 und. */. func
5e40: 74 69 6f 6e 20 24 24 28 73 65 6c 65 63 74 6f 72 tion $$(selector
5e50: 2c 20 63 74 78 29 20 7b 0a 20 20 20 20 72 65 74 , ctx) {. ret
5e60: 75 72 6e 20 5b 5d 2e 73 6c 69 63 65 2e 63 61 6c urn [].slice.cal
5e70: 6c 28 28 63 74 78 20 7c 7c 20 64 6f 63 75 6d 65 l((ctx || docume
5e80: 6e 74 29 2e 71 75 65 72 79 53 65 6c 65 63 74 6f nt).querySelecto
5e90: 72 41 6c 6c 28 73 65 6c 65 63 74 6f 72 29 29 0a rAll(selector)).
5ea0: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
5eb0: 43 72 65 61 74 65 20 61 20 64 6f 63 75 6d 65 6e Create a documen
5ec0: 74 20 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 2a t text node. *
5ed0: 20 40 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 @returns { Obje
5ee0: 63 74 20 7d 20 63 72 65 61 74 65 20 61 20 74 65 ct } create a te
5ef0: 78 74 20 6e 6f 64 65 20 74 6f 20 75 73 65 20 61 xt node to use a
5f00: 73 20 70 6c 61 63 65 68 6f 6c 64 65 72 0a 20 20 s placeholder.
5f10: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 63 */. function c
5f20: 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c reateDOMPlacehol
5f30: 64 65 72 28 29 20 7b 0a 20 20 20 20 72 65 74 75 der() {. retu
5f40: 72 6e 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 rn document.crea
5f50: 74 65 54 65 78 74 4e 6f 64 65 28 27 27 29 0a 20 teTextNode('').
5f60: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 }.. /**. * T
5f70: 6f 67 67 6c 65 20 74 68 65 20 76 69 73 69 62 69 oggle the visibi
5f80: 6c 69 74 79 20 6f 66 20 61 6e 79 20 44 4f 4d 20 lity of any DOM
5f90: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d node. * @param
5fa0: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 64 { Object } d
5fb0: 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 om - DOM node we
5fc0: 20 77 61 6e 74 20 74 6f 20 68 69 64 65 0a 20 20 want to hide.
5fd0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f * @param { Bo
5fe0: 6f 6c 65 61 6e 20 7d 20 73 68 6f 77 20 2d 20 64 olean } show - d
5ff0: 6f 20 77 65 20 77 61 6e 74 20 74 6f 20 73 68 6f o we want to sho
6000: 77 20 69 74 3f 0a 20 20 20 2a 2f 0a 0a 20 20 66 w it?. */.. f
6010: 75 6e 63 74 69 6f 6e 20 74 6f 67 67 6c 65 56 69 unction toggleVi
6020: 73 69 62 69 6c 69 74 79 28 64 6f 6d 2c 20 73 68 sibility(dom, sh
6030: 6f 77 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 73 74 ow) {. dom.st
6040: 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 73 68 yle.display = sh
6050: 6f 77 20 3f 20 27 27 20 3a 20 27 6e 6f 6e 65 27 ow ? '' : 'none'
6060: 3b 0a 20 20 20 20 64 6f 6d 2e 68 69 64 64 65 6e ;. dom.hidden
6070: 20 3d 20 73 68 6f 77 20 3f 20 66 61 6c 73 65 20 = show ? false
6080: 3a 20 74 72 75 65 3b 0a 20 20 7d 0a 0a 20 20 2f : true;. }.. /
6090: 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74 68 65 20 **. * Get the
60a0: 76 61 6c 75 65 20 6f 66 20 61 6e 79 20 44 4f 4d value of any DOM
60b0: 20 61 74 74 72 69 62 75 74 65 20 6f 6e 20 61 20 attribute on a
60c0: 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d node. * @param
60d0: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f { Object } do
60e0: 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 m - DOM node we
60f0: 77 61 6e 74 20 74 6f 20 70 61 72 73 65 0a 20 20 want to parse.
6100: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 * @param { St
6110: 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d 20 6e 61 ring } name - na
6120: 6d 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 me of the attrib
6130: 75 74 65 20 77 65 20 77 61 6e 74 20 74 6f 20 67 ute we want to g
6140: 65 74 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 et. * @returns
6150: 20 7b 20 53 74 72 69 6e 67 20 7c 20 75 6e 64 65 { String | unde
6160: 66 69 6e 65 64 20 7d 20 6e 61 6d 65 20 6f 66 20 fined } name of
6170: 74 68 65 20 6e 6f 64 65 20 61 74 74 72 69 62 75 the node attribu
6180: 74 65 20 77 68 65 74 68 65 72 20 69 74 20 65 78 te whether it ex
6190: 69 73 74 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ists. */. fun
61a0: 63 74 69 6f 6e 20 67 65 74 41 74 74 72 69 62 75 ction getAttribu
61b0: 74 65 28 64 6f 6d 2c 20 6e 61 6d 65 29 20 7b 0a te(dom, name) {.
61c0: 20 20 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 67 return dom.g
61d0: 65 74 41 74 74 72 69 62 75 74 65 28 6e 61 6d 65 etAttribute(name
61e0: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 ). }.. /**.
61f0: 2a 20 52 65 6d 6f 76 65 20 61 6e 79 20 44 4f 4d * Remove any DOM
6200: 20 61 74 74 72 69 62 75 74 65 20 66 72 6f 6d 20 attribute from
6210: 61 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 a node. * @par
6220: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 am { Object }
6230: 64 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 dom - DOM node w
6240: 65 20 77 61 6e 74 20 74 6f 20 75 70 64 61 74 65 e want to update
6250: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
6260: 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 20 2d String } name -
6270: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f name of the pro
6280: 70 65 72 74 79 20 77 65 20 77 61 6e 74 20 74 6f perty we want to
6290: 20 72 65 6d 6f 76 65 0a 20 20 20 2a 2f 0a 20 20 remove. */.
62a0: 66 75 6e 63 74 69 6f 6e 20 72 65 6d 6f 76 65 41 function removeA
62b0: 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 6e 61 ttribute(dom, na
62c0: 6d 65 29 20 7b 0a 20 20 20 20 64 6f 6d 2e 72 65 me) {. dom.re
62d0: 6d 6f 76 65 41 74 74 72 69 62 75 74 65 28 6e 61 moveAttribute(na
62e0: 6d 65 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a me);. }.. /**.
62f0: 20 20 20 2a 20 53 65 74 20 74 68 65 20 69 6e 6e * Set the inn
6300: 65 72 20 68 74 6d 6c 20 6f 66 20 61 6e 79 20 44 er html of any D
6310: 4f 4d 20 6e 6f 64 65 20 53 56 47 73 20 69 6e 63 OM node SVGs inc
6320: 6c 75 64 65 64 0a 20 20 20 2a 20 40 70 61 72 61 luded. * @para
6330: 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 63 6f 6e m { Object } con
6340: 74 61 69 6e 65 72 20 2d 20 44 4f 4d 20 6e 6f 64 tainer - DOM nod
6350: 65 20 77 68 65 72 65 20 77 65 27 6c 6c 20 69 6e e where we'll in
6360: 6a 65 63 74 20 6e 65 77 20 68 74 6d 6c 0a 20 20 ject new html.
6370: 20 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 * @param { Stri
6380: 6e 67 20 7d 20 68 74 6d 6c 20 2d 20 68 74 6d 6c ng } html - html
6390: 20 74 6f 20 69 6e 6a 65 63 74 0a 20 20 20 2a 20 to inject. *
63a0: 40 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e @param { Boolean
63b0: 20 7d 20 69 73 53 76 67 20 2d 20 73 76 67 20 74 } isSvg - svg t
63c0: 61 67 73 20 73 68 6f 75 6c 64 20 62 65 20 74 72 ags should be tr
63d0: 65 61 74 65 64 20 61 20 62 69 74 20 64 69 66 66 eated a bit diff
63e0: 65 72 65 6e 74 6c 79 0a 20 20 20 2a 2f 0a 20 20 erently. */.
63f0: 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e 6f /* istanbul igno
6400: 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 66 75 6e re next */. fun
6410: 63 74 69 6f 6e 20 73 65 74 49 6e 6e 65 72 48 54 ction setInnerHT
6420: 4d 4c 28 63 6f 6e 74 61 69 6e 65 72 2c 20 68 74 ML(container, ht
6430: 6d 6c 2c 20 69 73 53 76 67 29 20 7b 0a 20 20 20 ml, isSvg) {.
6440: 20 2f 2f 20 69 6e 6e 65 72 48 54 4d 4c 20 69 73 // innerHTML is
6450: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f not supported o
6460: 6e 20 73 76 67 20 74 61 67 73 20 73 6f 20 77 65 n svg tags so we
6470: 20 6e 65 65 74 20 74 6f 20 74 72 65 61 74 20 74 neet to treat t
6480: 68 65 6d 20 64 69 66 66 65 72 65 6e 74 6c 79 0a hem differently.
6490: 20 20 20 20 69 66 20 28 69 73 53 76 67 29 20 7b if (isSvg) {
64a0: 0a 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 . var node
64b0: 3d 20 63 6f 6e 74 61 69 6e 65 72 2e 6f 77 6e 65 = container.owne
64c0: 72 44 6f 63 75 6d 65 6e 74 2e 69 6d 70 6f 72 74 rDocument.import
64d0: 4e 6f 64 65 28 0a 20 20 20 20 20 20 20 20 6e 65 Node(. ne
64e0: 77 20 44 4f 4d 50 61 72 73 65 72 28 29 0a 20 20 w DOMParser().
64f0: 20 20 20 20 20 20 20 20 2e 70 61 72 73 65 46 72 .parseFr
6500: 6f 6d 53 74 72 69 6e 67 28 28 22 3c 73 76 67 20 omString(("<svg
6510: 78 6d 6c 6e 73 3d 5c 22 22 20 2b 20 53 56 47 5f xmlns=\"" + SVG_
6520: 4e 53 20 2b 20 22 5c 22 3e 22 20 2b 20 68 74 6d NS + "\">" + htm
6530: 6c 20 2b 20 22 3c 2f 73 76 67 3e 22 29 2c 20 27 l + "</svg>"), '
6540: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 6d 6c 27 application/xml'
6550: 29 0a 20 20 20 20 20 20 20 20 20 20 2e 64 6f 63 ). .doc
6560: 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 2c 0a 20 20 umentElement,.
6570: 20 20 20 20 20 20 74 72 75 65 0a 20 20 20 20 20 true.
6580: 20 29 3b 0a 0a 20 20 20 20 20 20 63 6f 6e 74 61 );.. conta
6590: 69 6e 65 72 2e 61 70 70 65 6e 64 43 68 69 6c 64 iner.appendChild
65a0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 20 65 6c (node);. } el
65b0: 73 65 20 7b 0a 20 20 20 20 20 20 63 6f 6e 74 61 se {. conta
65c0: 69 6e 65 72 2e 69 6e 6e 65 72 48 54 4d 4c 20 3d iner.innerHTML =
65d0: 20 68 74 6d 6c 3b 0a 20 20 20 20 7d 0a 20 20 7d html;. }. }
65e0: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 69 6e .. /**. * Min
65f0: 69 6d 69 7a 65 20 72 69 73 6b 3a 20 6f 6e 6c 79 imize risk: only
6600: 20 7a 65 72 6f 20 6f 72 20 6f 6e 65 20 5f 73 70 zero or one _sp
6610: 61 63 65 5f 20 62 65 74 77 65 65 6e 20 61 74 74 ace_ between att
6620: 72 20 26 20 76 61 6c 75 65 0a 20 20 20 2a 20 40 r & value. * @
6630: 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 param { String
6640: 20 7d 20 20 20 68 74 6d 6c 20 2d 20 68 74 6d 6c } html - html
6650: 20 73 74 72 69 6e 67 20 77 65 20 77 61 6e 74 20 string we want
6660: 74 6f 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70 to parse. * @p
6670: 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 69 6f aram { Functio
6680: 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c 62 61 63 n } fn - callbac
6690: 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 61 70 k function to ap
66a0: 70 6c 79 20 6f 6e 20 61 6e 79 20 61 74 74 72 69 ply on any attri
66b0: 62 75 74 65 20 66 6f 75 6e 64 0a 20 20 20 2a 2f bute found. */
66c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b . function walk
66d0: 41 74 74 72 69 62 75 74 65 73 28 68 74 6d 6c 2c Attributes(html,
66e0: 20 66 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 21 fn) {. if (!
66f0: 68 74 6d 6c 29 20 7b 20 72 65 74 75 72 6e 20 7d html) { return }
6700: 0a 20 20 20 20 76 61 72 20 6d 3b 0a 20 20 20 20 . var m;.
6710: 77 68 69 6c 65 20 28 6d 20 3d 20 52 45 5f 48 54 while (m = RE_HT
6720: 4d 4c 5f 41 54 54 52 53 2e 65 78 65 63 28 68 74 ML_ATTRS.exec(ht
6730: 6d 6c 29 29 0a 20 20 20 20 20 20 7b 20 66 6e 28 ml)). { fn(
6740: 6d 5b 31 5d 2e 74 6f 4c 6f 77 65 72 43 61 73 65 m[1].toLowerCase
6750: 28 29 2c 20 6d 5b 32 5d 20 7c 7c 20 6d 5b 33 5d (), m[2] || m[3]
6760: 20 7c 7c 20 6d 5b 34 5d 29 3b 20 7d 0a 20 20 7d || m[4]); }. }
6770: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 .. /**. * Cre
6780: 61 74 65 20 61 20 64 6f 63 75 6d 65 6e 74 20 66 ate a document f
6790: 72 61 67 6d 65 6e 74 0a 20 20 20 2a 20 40 72 65 ragment. * @re
67a0: 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d turns { Object }
67b0: 20 64 6f 63 75 6d 65 6e 74 20 66 72 61 67 6d 65 document fragme
67c0: 6e 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 nt. */. funct
67d0: 69 6f 6e 20 63 72 65 61 74 65 46 72 61 67 6d 65 ion createFragme
67e0: 6e 74 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 nt() {. retur
67f0: 6e 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 n document.creat
6800: 65 44 6f 63 75 6d 65 6e 74 46 72 61 67 6d 65 6e eDocumentFragmen
6810: 74 28 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 t(). }.. /**.
6820: 20 20 2a 20 49 6e 73 65 72 74 20 73 61 66 65 6c * Insert safel
6830: 79 20 61 20 74 61 67 20 74 6f 20 66 69 78 20 23 y a tag to fix #
6840: 31 39 36 32 20 23 31 36 34 39 0a 20 20 20 2a 20 1962 #1649. *
6850: 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 @param { HTMLE
6860: 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 lement } root -
6870: 63 68 69 6c 64 72 65 6e 20 63 6f 6e 74 61 69 6e children contain
6880: 65 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 er. * @param
6890: 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d { HTMLElement }
68a0: 20 63 75 72 72 20 2d 20 6e 6f 64 65 20 74 6f 20 curr - node to
68b0: 69 6e 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72 insert. * @par
68c0: 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 am { HTMLEleme
68d0: 6e 74 20 7d 20 6e 65 78 74 20 2d 20 6e 6f 64 65 nt } next - node
68e0: 20 74 68 61 74 20 73 68 6f 75 6c 64 20 70 72 65 that should pre
68f0: 63 65 65 64 20 74 68 65 20 63 75 72 72 65 6e 74 ceed the current
6900: 20 6e 6f 64 65 20 69 6e 73 65 72 74 65 64 0a 20 node inserted.
6910: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
6920: 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c safeInsert(root,
6930: 20 63 75 72 72 2c 20 6e 65 78 74 29 20 7b 0a 20 curr, next) {.
6940: 20 20 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 root.insertBe
6950: 66 6f 72 65 28 63 75 72 72 2c 20 6e 65 78 74 2e fore(curr, next.
6960: 70 61 72 65 6e 74 4e 6f 64 65 20 26 26 20 6e 65 parentNode && ne
6970: 78 74 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a xt);. }.. /**.
6980: 20 20 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73 * Convert a s
6990: 74 79 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 61 tyle object to a
69a0: 20 73 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 string. * @pa
69b0: 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d ram { Object }
69c0: 20 73 74 79 6c 65 20 2d 20 73 74 79 6c 65 20 6f style - style o
69d0: 62 6a 65 63 74 20 77 65 20 6e 65 65 64 20 74 6f bject we need to
69e0: 20 70 61 72 73 65 0a 20 20 20 2a 20 40 72 65 74 parse. * @ret
69f0: 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 urns { String }
6a00: 72 65 73 75 6c 74 69 6e 67 20 63 73 73 20 73 74 resulting css st
6a10: 72 69 6e 67 0a 20 20 20 2a 20 40 65 78 61 6d 70 ring. * @examp
6a20: 6c 65 0a 20 20 20 2a 20 73 74 79 6c 65 4f 62 6a le. * styleObj
6a30: 65 63 74 54 6f 53 74 72 69 6e 67 28 7b 20 63 6f ectToString({ co
6a40: 6c 6f 72 3a 20 27 72 65 64 27 2c 20 68 65 69 67 lor: 'red', heig
6a50: 68 74 3a 20 27 31 30 70 78 27 7d 29 20 2f 2f 20 ht: '10px'}) //
6a60: 3d 3e 20 27 63 6f 6c 6f 72 3a 20 72 65 64 3b 20 => 'color: red;
6a70: 68 65 69 67 68 74 3a 20 31 30 70 78 27 0a 20 20 height: 10px'.
6a80: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 */. function s
6a90: 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 72 69 tyleObjectToStri
6aa0: 6e 67 28 73 74 79 6c 65 29 20 7b 0a 20 20 20 20 ng(style) {.
6ab0: 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 6b 65 return Object.ke
6ac0: 79 73 28 73 74 79 6c 65 29 2e 72 65 64 75 63 65 ys(style).reduce
6ad0: 28 66 75 6e 63 74 69 6f 6e 20 28 61 63 63 2c 20 (function (acc,
6ae0: 70 72 6f 70 29 20 7b 0a 20 20 20 20 20 20 72 65 prop) {. re
6af0: 74 75 72 6e 20 28 61 63 63 20 2b 20 22 20 22 20 turn (acc + " "
6b00: 2b 20 70 72 6f 70 20 2b 20 22 3a 20 22 20 2b 20 + prop + ": " +
6b10: 28 73 74 79 6c 65 5b 70 72 6f 70 5d 29 20 2b 20 (style[prop]) +
6b20: 22 3b 22 29 0a 20 20 20 20 7d 2c 20 27 27 29 0a ";"). }, '').
6b30: 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 }.. /**. *
6b40: 57 61 6c 6b 20 64 6f 77 6e 20 72 65 63 75 72 73 Walk down recurs
6b50: 69 76 65 6c 79 20 61 6c 6c 20 74 68 65 20 63 68 ively all the ch
6b60: 69 6c 64 72 65 6e 20 74 61 67 73 20 73 74 61 72 ildren tags star
6b70: 74 69 6e 67 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 ting dom node.
6b80: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
6b90: 6a 65 63 74 20 7d 20 20 20 64 6f 6d 20 2d 20 73 ject } dom - s
6ba0: 74 61 72 74 69 6e 67 20 6e 6f 64 65 20 77 68 65 tarting node whe
6bb0: 72 65 20 77 65 20 77 69 6c 6c 20 73 74 61 72 74 re we will start
6bc0: 20 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a 20 the recursion.
6bd0: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46 * @param { F
6be0: 75 6e 63 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 unction } fn - c
6bf0: 61 6c 6c 62 61 63 6b 20 74 6f 20 74 72 61 6e 73 allback to trans
6c00: 66 6f 72 6d 20 74 68 65 20 63 68 69 6c 64 20 6e form the child n
6c10: 6f 64 65 20 6a 75 73 74 20 66 6f 75 6e 64 0a 20 ode just found.
6c20: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f * @param { O
6c30: 62 6a 65 63 74 20 7d 20 20 20 63 6f 6e 74 65 78 bject } contex
6c40: 74 20 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69 6f t - fn can optio
6c50: 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e 20 nally return an
6c60: 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 object, which is
6c70: 20 70 61 73 73 65 64 20 74 6f 20 63 68 69 6c 64 passed to child
6c80: 72 65 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 ren. */. func
6c90: 74 69 6f 6e 20 77 61 6c 6b 4e 6f 64 65 73 28 64 tion walkNodes(d
6ca0: 6f 6d 2c 20 66 6e 2c 20 63 6f 6e 74 65 78 74 29 om, fn, context)
6cb0: 20 7b 0a 20 20 20 20 69 66 20 28 64 6f 6d 29 20 {. if (dom)
6cc0: 7b 0a 20 20 20 20 20 20 76 61 72 20 72 65 73 20 {. var res
6cd0: 3d 20 66 6e 28 64 6f 6d 2c 20 63 6f 6e 74 65 78 = fn(dom, contex
6ce0: 74 29 3b 0a 20 20 20 20 20 20 76 61 72 20 6e 65 t);. var ne
6cf0: 78 74 3b 0a 20 20 20 20 20 20 2f 2f 20 73 74 6f xt;. // sto
6d00: 70 20 74 68 65 20 72 65 63 75 72 73 69 6f 6e 0a p the recursion.
6d10: 20 20 20 20 20 20 69 66 20 28 72 65 73 20 3d 3d if (res ==
6d20: 3d 20 66 61 6c 73 65 29 20 7b 20 72 65 74 75 72 = false) { retur
6d30: 6e 20 7d 0a 0a 20 20 20 20 20 20 64 6f 6d 20 3d n }.. dom =
6d40: 20 64 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 3b dom.firstChild;
6d50: 0a 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 .. while (d
6d60: 6f 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 65 om) {. ne
6d70: 78 74 20 3d 20 64 6f 6d 2e 6e 65 78 74 53 69 62 xt = dom.nextSib
6d80: 6c 69 6e 67 3b 0a 20 20 20 20 20 20 20 20 77 61 ling;. wa
6d90: 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c 20 66 6e 2c lkNodes(dom, fn,
6da0: 20 72 65 73 29 3b 0a 20 20 20 20 20 20 20 20 64 res);. d
6db0: 6f 6d 20 3d 20 6e 65 78 74 3b 0a 20 20 20 20 20 om = next;.
6dc0: 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 0a }. }. }....
6dd0: 20 20 76 61 72 20 64 6f 6d 20 3d 20 2f 2a 23 5f var dom = /*#_
6de0: 5f 50 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e _PURE__*/Object.
6df0: 66 72 65 65 7a 65 28 7b 0a 20 20 20 20 24 24 3a freeze({. $$:
6e00: 20 24 24 2c 0a 20 20 20 20 24 3a 20 24 2c 0a 20 $$,. $: $,.
6e10: 20 20 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 63 createDOMPlac
6e20: 65 68 6f 6c 64 65 72 3a 20 63 72 65 61 74 65 44 eholder: createD
6e30: 4f 4d 50 6c 61 63 65 68 6f 6c 64 65 72 2c 0a 20 OMPlaceholder,.
6e40: 20 20 20 6d 6b 45 6c 3a 20 6d 61 6b 65 45 6c 65 mkEl: makeEle
6e50: 6d 65 6e 74 2c 0a 20 20 20 20 73 65 74 41 74 74 ment,. setAtt
6e60: 72 3a 20 73 65 74 41 74 74 72 69 62 75 74 65 2c r: setAttribute,
6e70: 0a 20 20 20 20 74 6f 67 67 6c 65 56 69 73 69 62 . toggleVisib
6e80: 69 6c 69 74 79 3a 20 74 6f 67 67 6c 65 56 69 73 ility: toggleVis
6e90: 69 62 69 6c 69 74 79 2c 0a 20 20 20 20 67 65 74 ibility,. get
6ea0: 41 74 74 72 3a 20 67 65 74 41 74 74 72 69 62 75 Attr: getAttribu
6eb0: 74 65 2c 0a 20 20 20 20 72 65 6d 41 74 74 72 3a te,. remAttr:
6ec0: 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 65 removeAttribute
6ed0: 2c 0a 20 20 20 20 73 65 74 49 6e 6e 65 72 48 54 ,. setInnerHT
6ee0: 4d 4c 3a 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c ML: setInnerHTML
6ef0: 2c 0a 20 20 20 20 77 61 6c 6b 41 74 74 72 73 3a ,. walkAttrs:
6f00: 20 77 61 6c 6b 41 74 74 72 69 62 75 74 65 73 2c walkAttributes,
6f10: 0a 20 20 20 20 63 72 65 61 74 65 46 72 61 67 3a . createFrag:
6f20: 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e 74 2c createFragment,
6f30: 0a 20 20 20 20 73 61 66 65 49 6e 73 65 72 74 3a . safeInsert:
6f40: 20 73 61 66 65 49 6e 73 65 72 74 2c 0a 20 20 20 safeInsert,.
6f50: 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 styleObjectToSt
6f60: 72 69 6e 67 3a 20 73 74 79 6c 65 4f 62 6a 65 63 ring: styleObjec
6f70: 74 54 6f 53 74 72 69 6e 67 2c 0a 20 20 20 20 77 tToString,. w
6f80: 61 6c 6b 4e 6f 64 65 73 3a 20 77 61 6c 6b 4e 6f alkNodes: walkNo
6f90: 64 65 73 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a des. });.. /**
6fa0: 0a 20 20 20 2a 20 43 68 65 63 6b 20 61 67 61 69 . * Check agai
6fb0: 6e 73 74 20 74 68 65 20 6e 75 6c 6c 20 61 6e 64 nst the null and
6fc0: 20 75 6e 64 65 66 69 6e 65 64 20 76 61 6c 75 65 undefined value
6fd0: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 s. * @param
6fe0: 7b 20 2a 20 7d 20 20 76 61 6c 75 65 20 2d 0a 20 { * } value -.
6ff0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 6f * @returns {Bo
7000: 6f 6c 65 61 6e 7d 20 2d 0a 20 20 20 2a 2f 0a 20 olean} -. */.
7010: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 69 6c 28 function isNil(
7020: 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 value) {. ret
7030: 75 72 6e 20 69 73 55 6e 64 65 66 69 6e 65 64 28 urn isUndefined(
7040: 76 61 6c 75 65 29 20 7c 7c 20 76 61 6c 75 65 20 value) || value
7050: 3d 3d 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 === null. }..
7060: 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 /**. * Check i
7070: 66 20 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e f passed argumen
7080: 74 20 69 73 20 65 6d 70 74 79 2e 20 44 69 66 66 t is empty. Diff
7090: 65 72 65 6e 74 20 66 72 6f 6d 20 66 61 6c 73 79 erent from falsy
70a0: 2c 20 62 65 63 61 75 73 65 20 77 65 20 64 6f 6e , because we don
70b0: 74 20 63 6f 6e 73 69 64 65 72 20 30 20 6f 72 20 t consider 0 or
70c0: 66 61 6c 73 65 20 74 6f 20 62 65 20 62 6c 61 6e false to be blan
70d0: 6b 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 k. * @param {
70e0: 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a * } value -. *
70f0: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c @returns { Bool
7100: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 ean } -. */.
7110: 66 75 6e 63 74 69 6f 6e 20 69 73 42 6c 61 6e 6b function isBlank
7120: 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 (value) {. re
7130: 74 75 72 6e 20 69 73 4e 69 6c 28 76 61 6c 75 65 turn isNil(value
7140: 29 20 7c 7c 20 76 61 6c 75 65 20 3d 3d 3d 20 27 ) || value === '
7150: 27 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 '. }.. /**.
7160: 2a 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 * Check if passe
7170: 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 d argument is a
7180: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 function. * @p
7190: 61 72 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c aram { * } val
71a0: 75 65 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 ue -. * @retur
71b0: 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d ns { Boolean } -
71c0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
71d0: 6e 20 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c n isFunction(val
71e0: 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e ue) {. return
71f0: 20 74 79 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d typeof value ==
7200: 3d 20 54 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 7d = T_FUNCTION. }
7210: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 .. /**. * Che
7220: 63 6b 20 69 66 20 70 61 73 73 65 64 20 61 72 67 ck if passed arg
7230: 75 6d 65 6e 74 20 69 73 20 61 6e 20 6f 62 6a 65 ument is an obje
7240: 63 74 2c 20 65 78 63 6c 75 64 65 20 6e 75 6c 6c ct, exclude null
7250: 0a 20 20 20 2a 20 4e 4f 54 45 3a 20 75 73 65 20 . * NOTE: use
7260: 69 73 4f 62 6a 65 63 74 28 78 29 20 26 26 20 21 isObject(x) && !
7270: 69 73 41 72 72 61 79 28 78 29 20 74 6f 20 65 78 isArray(x) to ex
7280: 63 6c 75 64 65 73 20 61 72 72 61 79 73 2e 0a 20 cludes arrays..
7290: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a * @param { *
72a0: 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a 20 } value -. *
72b0: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 @returns { Boole
72c0: 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 an } -. */. f
72d0: 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 74 unction isObject
72e0: 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 (value) {. re
72f0: 74 75 72 6e 20 76 61 6c 75 65 20 26 26 20 74 79 turn value && ty
7300: 70 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 peof value === T
7310: 5f 4f 42 4a 45 43 54 20 2f 2f 20 74 79 70 65 6f _OBJECT // typeo
7320: 66 20 6e 75 6c 6c 20 69 73 20 27 6f 62 6a 65 63 f null is 'objec
7330: 74 27 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 t'. }.. /**.
7340: 20 2a 20 43 68 65 63 6b 20 69 66 20 61 20 44 4f * Check if a DO
7350: 4d 20 6e 6f 64 65 20 69 73 20 61 6e 20 73 76 67 M node is an svg
7360: 20 74 61 67 20 6f 72 20 70 61 72 74 20 6f 66 20 tag or part of
7370: 61 6e 20 73 76 67 0a 20 20 20 2a 20 40 70 61 72 an svg. * @par
7380: 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 am { HTMLEleme
7390: 6e 74 20 7d 20 20 65 6c 20 2d 20 6e 6f 64 65 20 nt } el - node
73a0: 77 65 20 77 61 6e 74 20 74 6f 20 74 65 73 74 0a we want to test.
73b0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 42 * @returns {B
73c0: 6f 6f 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 20 oolean} true if
73d0: 69 74 27 73 20 61 6e 20 73 76 67 20 6e 6f 64 65 it's an svg node
73e0: 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
73f0: 6e 20 69 73 53 76 67 28 65 6c 29 20 7b 0a 20 20 n isSvg(el) {.
7400: 20 20 76 61 72 20 6f 77 6e 65 72 20 3d 20 65 6c var owner = el
7410: 2e 6f 77 6e 65 72 53 56 47 45 6c 65 6d 65 6e 74 .ownerSVGElement
7420: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 21 21 6f ;. return !!o
7430: 77 6e 65 72 20 7c 7c 20 6f 77 6e 65 72 20 3d 3d wner || owner ==
7440: 3d 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 20 2f 2a = null. }.. /*
7450: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 *. * Check if
7460: 70 61 73 73 65 64 20 61 72 67 75 6d 65 6e 74 20 passed argument
7470: 69 73 20 61 20 6b 69 6e 64 20 6f 66 20 61 72 72 is a kind of arr
7480: 61 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ay. * @param
7490: 20 7b 20 2a 20 7d 20 76 61 6c 75 65 20 2d 0a 20 { * } value -.
74a0: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 42 * @returns { B
74b0: 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f oolean } -. */
74c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72 . function isAr
74d0: 72 61 79 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 ray(value) {.
74e0: 20 72 65 74 75 72 6e 20 41 72 72 61 79 2e 69 73 return Array.is
74f0: 41 72 72 61 79 28 76 61 6c 75 65 29 20 7c 7c 20 Array(value) ||
7500: 76 61 6c 75 65 20 69 6e 73 74 61 6e 63 65 6f 66 value instanceof
7510: 20 41 72 72 61 79 0a 20 20 7d 0a 0a 20 20 2f 2a Array. }.. /*
7520: 2a 0a 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 *. * Check if
7530: 74 68 65 20 70 61 73 73 65 64 20 61 72 67 75 6d the passed argum
7540: 65 6e 74 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e ent is a boolean
7550: 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 attribute. *
7560: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
7570: 67 20 7d 20 76 61 6c 75 65 20 2d 0a 20 20 20 2a g } value -. *
7580: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c @returns { Bool
7590: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 ean } -. */.
75a0: 66 75 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 41 function isBoolA
75b0: 74 74 72 28 76 61 6c 75 65 29 20 7b 0a 20 20 20 ttr(value) {.
75c0: 20 72 65 74 75 72 6e 20 52 45 5f 42 4f 4f 4c 5f return RE_BOOL_
75d0: 41 54 54 52 53 2e 74 65 73 74 28 76 61 6c 75 65 ATTRS.test(value
75e0: 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 ). }.. /**.
75f0: 2a 20 43 68 65 63 6b 20 69 66 20 70 61 73 73 65 * Check if passe
7600: 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 d argument is a
7610: 73 74 72 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 string. * @par
7620: 61 6d 20 20 20 7b 20 2a 20 7d 20 76 61 6c 75 65 am { * } value
7630: 20 2d 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 -. * @returns
7640: 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 2d 0a 20 { Boolean } -.
7650: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
7660: 69 73 53 74 72 69 6e 67 28 76 61 6c 75 65 29 20 isString(value)
7670: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 {. return typ
7680: 65 6f 66 20 76 61 6c 75 65 20 3d 3d 3d 20 54 5f eof value === T_
7690: 53 54 52 49 4e 47 0a 20 20 7d 0a 0a 0a 0a 20 20 STRING. }....
76a0: 76 61 72 20 63 68 65 63 6b 20 3d 20 2f 2a 23 5f var check = /*#_
76b0: 5f 50 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e _PURE__*/Object.
76c0: 66 72 65 65 7a 65 28 7b 0a 20 20 20 20 69 73 42 freeze({. isB
76d0: 6c 61 6e 6b 3a 20 69 73 42 6c 61 6e 6b 2c 0a 20 lank: isBlank,.
76e0: 20 20 20 69 73 46 75 6e 63 74 69 6f 6e 3a 20 69 isFunction: i
76f0: 73 46 75 6e 63 74 69 6f 6e 2c 0a 20 20 20 20 69 sFunction,. i
7700: 73 4f 62 6a 65 63 74 3a 20 69 73 4f 62 6a 65 63 sObject: isObjec
7710: 74 2c 0a 20 20 20 20 69 73 53 76 67 3a 20 69 73 t,. isSvg: is
7720: 53 76 67 2c 0a 20 20 20 20 69 73 57 72 69 74 61 Svg,. isWrita
7730: 62 6c 65 3a 20 69 73 57 72 69 74 61 62 6c 65 2c ble: isWritable,
7740: 0a 20 20 20 20 69 73 41 72 72 61 79 3a 20 69 73 . isArray: is
7750: 41 72 72 61 79 2c 0a 20 20 20 20 69 73 42 6f 6f Array,. isBoo
7760: 6c 41 74 74 72 3a 20 69 73 42 6f 6f 6c 41 74 74 lAttr: isBoolAtt
7770: 72 2c 0a 20 20 20 20 69 73 4e 69 6c 3a 20 69 73 r,. isNil: is
7780: 4e 69 6c 2c 0a 20 20 20 20 69 73 53 74 72 69 6e Nil,. isStrin
7790: 67 3a 20 69 73 53 74 72 69 6e 67 2c 0a 20 20 20 g: isString,.
77a0: 20 69 73 55 6e 64 65 66 69 6e 65 64 3a 20 69 73 isUndefined: is
77b0: 55 6e 64 65 66 69 6e 65 64 0a 20 20 7d 29 3b 0a Undefined. });.
77c0: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 68 65 63 . /**. * Chec
77d0: 6b 20 77 68 65 74 68 65 72 20 61 6e 20 61 72 72 k whether an arr
77e0: 61 79 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69 ay contains an i
77f0: 74 65 6d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 tem. * @param
7800: 20 20 7b 20 41 72 72 61 79 20 7d 20 61 72 72 61 { Array } arra
7810: 79 20 2d 20 74 61 72 67 65 74 20 61 72 72 61 79 y - target array
7820: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
7830: 20 2a 20 7d 20 69 74 65 6d 20 2d 20 69 74 65 6d * } item - item
7840: 20 74 6f 20 74 65 73 74 0a 20 20 20 2a 20 40 72 to test. * @r
7850: 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 61 6e eturns { Boolean
7860: 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e } -. */. fun
7870: 63 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 28 61 ction contains(a
7880: 72 72 61 79 2c 20 69 74 65 6d 29 20 7b 0a 20 20 rray, item) {.
7890: 20 20 72 65 74 75 72 6e 20 61 72 72 61 79 2e 69 return array.i
78a0: 6e 64 65 78 4f 66 28 69 74 65 6d 29 20 21 3d 3d ndexOf(item) !==
78b0: 20 2d 31 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 -1. }.. /**.
78c0: 20 20 2a 20 53 70 65 63 69 61 6c 69 7a 65 64 20 * Specialized
78d0: 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 6c 6f 6f function for loo
78e0: 70 69 6e 67 20 61 6e 20 61 72 72 61 79 2d 6c 69 ping an array-li
78f0: 6b 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 77 69 ke collection wi
7900: 74 68 20 60 65 61 63 68 3d 7b 7d 60 0a 20 20 20 th `each={}`.
7910: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 * @param { Arr
7920: 61 79 20 7d 20 6c 69 73 74 20 2d 20 63 6f 6c 6c ay } list - coll
7930: 65 63 74 69 6f 6e 20 6f 66 20 69 74 65 6d 73 0a ection of items.
7940: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 46 * @param {F
7950: 75 6e 63 74 69 6f 6e 7d 20 66 6e 20 2d 20 63 61 unction} fn - ca
7960: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a llback function.
7970: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
7980: 41 72 72 61 79 20 7d 20 74 68 65 20 61 72 72 61 Array } the arra
7990: 79 20 6c 6f 6f 70 65 64 0a 20 20 20 2a 2f 0a 20 y looped. */.
79a0: 20 66 75 6e 63 74 69 6f 6e 20 65 61 63 68 28 6c function each(l
79b0: 69 73 74 2c 20 66 6e 29 20 7b 0a 20 20 20 20 76 ist, fn) {. v
79c0: 61 72 20 6c 65 6e 20 3d 20 6c 69 73 74 20 3f 20 ar len = list ?
79d0: 6c 69 73 74 2e 6c 65 6e 67 74 68 20 3a 20 30 3b list.length : 0;
79e0: 0a 20 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a . var i = 0;.
79f0: 20 20 20 20 66 6f 72 20 28 3b 20 69 20 3c 20 6c for (; i < l
7a00: 65 6e 3b 20 69 2b 2b 29 20 7b 20 66 6e 28 6c 69 en; i++) { fn(li
7a10: 73 74 5b 69 5d 2c 20 69 29 3b 20 7d 0a 20 20 20 st[i], i); }.
7a20: 20 72 65 74 75 72 6e 20 6c 69 73 74 0a 20 20 7d return list. }
7a30: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 46 61 73 .. /**. * Fas
7a40: 74 65 72 20 53 74 72 69 6e 67 20 73 74 61 72 74 ter String start
7a50: 73 57 69 74 68 20 61 6c 74 65 72 6e 61 74 69 76 sWith alternativ
7a60: 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 e. * @param
7a70: 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72 20 2d { String } str -
7a80: 20 73 6f 75 72 63 65 20 73 74 72 69 6e 67 0a 20 source string.
7a90: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 * @param { S
7aa0: 74 72 69 6e 67 20 7d 20 76 61 6c 75 65 20 2d 20 tring } value -
7ab0: 74 65 73 74 20 73 74 72 69 6e 67 0a 20 20 20 2a test string. *
7ac0: 20 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c @returns { Bool
7ad0: 65 61 6e 20 7d 20 2d 0a 20 20 20 2a 2f 0a 20 20 ean } -. */.
7ae0: 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 57 function startsW
7af0: 69 74 68 28 73 74 72 2c 20 76 61 6c 75 65 29 20 ith(str, value)
7b00: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 {. return str
7b10: 2e 73 6c 69 63 65 28 30 2c 20 76 61 6c 75 65 2e .slice(0, value.
7b20: 6c 65 6e 67 74 68 29 20 3d 3d 3d 20 76 61 6c 75 length) === valu
7b30: 65 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 e. }.. /**.
7b40: 2a 20 46 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 * Function retur
7b50: 6e 69 6e 67 20 61 6c 77 61 79 73 20 61 20 75 6e ning always a un
7b60: 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 0a ique identifier.
7b70: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
7b80: 4e 75 6d 62 65 72 20 7d 20 2d 20 6e 75 6d 62 65 Number } - numbe
7b90: 72 20 66 72 6f 6d 20 30 2e 2e 2e 6e 0a 20 20 20 r from 0...n.
7ba0: 2a 2f 0a 20 20 76 61 72 20 75 69 64 20 3d 20 28 */. var uid = (
7bb0: 66 75 6e 63 74 69 6f 6e 20 75 69 64 28 29 20 7b function uid() {
7bc0: 0a 20 20 20 20 76 61 72 20 69 20 3d 20 2d 31 3b . var i = -1;
7bd0: 0a 20 20 20 20 72 65 74 75 72 6e 20 66 75 6e 63 . return func
7be0: 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e tion () { return
7bf0: 20 2b 2b 69 3b 20 7d 0a 20 20 7d 29 28 29 3b 0a ++i; }. })();.
7c00: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 48 65 6c 70 . /**. * Help
7c10: 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 er function to s
7c20: 65 74 20 61 6e 20 69 6d 6d 75 74 61 62 6c 65 20 et an immutable
7c30: 70 72 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70 property. * @p
7c40: 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 aram { Object
7c50: 7d 20 65 6c 20 2d 20 6f 62 6a 65 63 74 20 77 68 } el - object wh
7c60: 65 72 65 20 74 68 65 20 6e 65 77 20 70 72 6f 70 ere the new prop
7c70: 65 72 74 79 20 77 69 6c 6c 20 62 65 20 73 65 74 erty will be set
7c80: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
7c90: 20 53 74 72 69 6e 67 20 7d 20 6b 65 79 20 2d 20 String } key -
7ca0: 6f 62 6a 65 63 74 20 6b 65 79 20 77 68 65 72 65 object key where
7cb0: 20 74 68 65 20 6e 65 77 20 70 72 6f 70 65 72 74 the new propert
7cc0: 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 y will be stored
7cd0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
7ce0: 20 2a 20 7d 20 76 61 6c 75 65 20 2d 20 76 61 6c * } value - val
7cf0: 75 65 20 6f 66 20 74 68 65 20 6e 65 77 20 70 72 ue of the new pr
7d00: 6f 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 operty. * @par
7d10: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 am { Object }
7d20: 6f 70 74 69 6f 6e 73 20 2d 20 73 65 74 20 74 68 options - set th
7d30: 65 20 70 72 6f 70 65 72 79 20 6f 76 65 72 72 69 e propery overri
7d40: 64 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 ding the default
7d50: 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 72 options. * @r
7d60: 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 20 eturns { Object
7d70: 7d 20 2d 20 74 68 65 20 69 6e 69 74 69 61 6c 20 } - the initial
7d80: 6f 62 6a 65 63 74 0a 20 20 20 2a 2f 0a 20 20 66 object. */. f
7d90: 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 65 28 65 unction define(e
7da0: 6c 2c 20 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f l, key, value, o
7db0: 70 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 4f 62 ptions) {. Ob
7dc0: 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
7dd0: 72 74 79 28 65 6c 2c 20 6b 65 79 2c 20 65 78 74 rty(el, key, ext
7de0: 65 6e 64 28 7b 0a 20 20 20 20 20 20 76 61 6c 75 end({. valu
7df0: 65 3a 20 76 61 6c 75 65 2c 0a 20 20 20 20 20 20 e: value,.
7e00: 65 6e 75 6d 65 72 61 62 6c 65 3a 20 66 61 6c 73 enumerable: fals
7e10: 65 2c 0a 20 20 20 20 20 20 77 72 69 74 61 62 6c e,. writabl
7e20: 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 e: false,.
7e30: 63 6f 6e 66 69 67 75 72 61 62 6c 65 3a 20 74 72 configurable: tr
7e40: 75 65 0a 20 20 20 20 7d 2c 20 6f 70 74 69 6f 6e ue. }, option
7e50: 73 29 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 s));. return
7e60: 65 6c 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 el. }.. /**.
7e70: 20 2a 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 * Convert a str
7e80: 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 64 ing containing d
7e90: 61 73 68 65 73 20 74 6f 20 63 61 6d 65 6c 20 63 ashes to camel c
7ea0: 61 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ase. * @param
7eb0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 73 74 72 { String } str
7ec0: 20 2d 20 69 6e 70 75 74 20 73 74 72 69 6e 67 0a - input string.
7ed0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
7ee0: 53 74 72 69 6e 67 20 7d 20 6d 79 2d 73 74 72 69 String } my-stri
7ef0: 6e 67 20 2d 3e 20 6d 79 53 74 72 69 6e 67 0a 20 ng -> myString.
7f00: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
7f10: 74 6f 43 61 6d 65 6c 28 73 74 72 29 20 7b 0a 20 toCamel(str) {.
7f20: 20 20 20 72 65 74 75 72 6e 20 73 74 72 2e 72 65 return str.re
7f30: 70 6c 61 63 65 28 2f 2d 28 5c 77 29 2f 67 2c 20 place(/-(\w)/g,
7f40: 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 63 29 20 function (_, c)
7f50: 7b 20 72 65 74 75 72 6e 20 63 2e 74 6f 55 70 70 { return c.toUpp
7f60: 65 72 43 61 73 65 28 29 3b 20 7d 29 0a 20 20 7d erCase(); }). }
7f70: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 57 61 72 .. /**. * War
7f80: 6e 20 61 20 6d 65 73 73 61 67 65 20 76 69 61 20 n a message via
7f90: 63 6f 6e 73 6f 6c 65 0a 20 20 20 2a 20 40 70 61 console. * @pa
7fa0: 72 61 6d 20 20 20 7b 53 74 72 69 6e 67 7d 20 6d ram {String} m
7fb0: 65 73 73 61 67 65 20 2d 20 77 61 72 6e 69 6e 67 essage - warning
7fc0: 20 6d 65 73 73 61 67 65 0a 20 20 20 2a 2f 0a 20 message. */.
7fd0: 20 66 75 6e 63 74 69 6f 6e 20 77 61 72 6e 28 6d function warn(m
7fe0: 65 73 73 61 67 65 29 20 7b 0a 20 20 20 20 69 66 essage) {. if
7ff0: 20 28 63 6f 6e 73 6f 6c 65 20 26 26 20 63 6f 6e (console && con
8000: 73 6f 6c 65 2e 77 61 72 6e 29 20 7b 20 63 6f 6e sole.warn) { con
8010: 73 6f 6c 65 2e 77 61 72 6e 28 6d 65 73 73 61 67 sole.warn(messag
8020: 65 29 3b 20 7d 0a 20 20 7d 0a 0a 0a 0a 20 20 76 e); }. }.... v
8030: 61 72 20 6d 69 73 63 20 3d 20 2f 2a 23 5f 5f 50 ar misc = /*#__P
8040: 55 52 45 5f 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 URE__*/Object.fr
8050: 65 65 7a 65 28 7b 0a 20 20 20 20 63 6f 6e 74 61 eeze({. conta
8060: 69 6e 73 3a 20 63 6f 6e 74 61 69 6e 73 2c 0a 20 ins: contains,.
8070: 20 20 20 65 61 63 68 3a 20 65 61 63 68 2c 0a 20 each: each,.
8080: 20 20 20 67 65 74 50 72 6f 70 44 65 73 63 72 69 getPropDescri
8090: 70 74 6f 72 3a 20 67 65 74 50 72 6f 70 44 65 73 ptor: getPropDes
80a0: 63 72 69 70 74 6f 72 2c 0a 20 20 20 20 73 74 61 criptor,. sta
80b0: 72 74 73 57 69 74 68 3a 20 73 74 61 72 74 73 57 rtsWith: startsW
80c0: 69 74 68 2c 0a 20 20 20 20 75 69 64 3a 20 75 69 ith,. uid: ui
80d0: 64 2c 0a 20 20 20 20 64 65 66 69 6e 65 50 72 6f d,. definePro
80e0: 70 65 72 74 79 3a 20 64 65 66 69 6e 65 2c 0a 20 perty: define,.
80f0: 20 20 20 6f 62 6a 65 63 74 43 72 65 61 74 65 3a objectCreate:
8100: 20 63 72 65 61 74 65 2c 0a 20 20 20 20 65 78 74 create,. ext
8110: 65 6e 64 3a 20 65 78 74 65 6e 64 2c 0a 20 20 20 end: extend,.
8120: 20 74 6f 43 61 6d 65 6c 3a 20 74 6f 43 61 6d 65 toCamel: toCame
8130: 6c 2c 0a 20 20 20 20 77 61 72 6e 3a 20 77 61 72 l,. warn: war
8140: 6e 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a 2a 0a 20 n. });.. /**.
8150: 20 20 2a 20 53 65 74 20 74 68 65 20 70 72 6f 70 * Set the prop
8160: 65 72 74 79 20 6f 66 20 61 6e 20 6f 62 6a 65 63 erty of an objec
8170: 74 20 66 6f 72 20 61 20 67 69 76 65 6e 20 6b 65 t for a given ke
8180: 79 2e 20 49 66 20 73 6f 6d 65 74 68 69 6e 67 20 y. If something
8190: 61 6c 72 65 61 64 79 0a 20 20 20 2a 20 65 78 69 already. * exi
81a0: 73 74 73 20 74 68 65 72 65 2c 20 74 68 65 6e 20 sts there, then
81b0: 69 74 20 62 65 63 6f 6d 65 73 20 61 6e 20 61 72 it becomes an ar
81c0: 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 62 ray containing b
81d0: 6f 74 68 20 74 68 65 20 6f 6c 64 20 61 6e 64 20 oth the old and
81e0: 6e 65 77 20 76 61 6c 75 65 2e 0a 20 20 20 2a 20 new value.. *
81f0: 40 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 @param { Object
8200: 7d 20 6f 62 6a 20 2d 20 6f 62 6a 65 63 74 20 6f } obj - object o
8210: 6e 20 77 68 69 63 68 20 74 6f 20 73 65 74 20 74 n which to set t
8220: 68 65 20 70 72 6f 70 65 72 74 79 0a 20 20 20 2a he property. *
8230: 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e 67 @param { String
8240: 20 7d 20 6b 65 79 20 2d 20 70 72 6f 70 65 72 74 } key - propert
8250: 79 20 6e 61 6d 65 0a 20 20 20 2a 20 40 70 61 72 y name. * @par
8260: 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d 20 76 61 am { Object } va
8270: 6c 75 65 20 2d 20 74 68 65 20 76 61 6c 75 65 20 lue - the value
8280: 6f 66 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 of the property
8290: 74 6f 20 62 65 20 73 65 74 0a 20 20 20 2a 20 40 to be set. * @
82a0: 70 61 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 param { Boolean
82b0: 7d 20 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20 } ensureArray -
82c0: 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 ensure that the
82d0: 70 72 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73 property remains
82e0: 20 61 6e 20 61 72 72 61 79 0a 20 20 20 2a 20 40 an array. * @
82f0: 70 61 72 61 6d 20 7b 20 4e 75 6d 62 65 72 20 7d param { Number }
8300: 20 69 6e 64 65 78 20 2d 20 61 64 64 20 74 68 65 index - add the
8310: 20 6e 65 77 20 69 74 65 6d 20 69 6e 20 61 20 63 new item in a c
8320: 65 72 74 61 69 6e 20 61 72 72 61 79 20 70 6f 73 ertain array pos
8330: 69 74 69 6f 6e 0a 20 20 20 2a 2f 0a 20 20 66 75 ition. */. fu
8340: 6e 63 74 69 6f 6e 20 61 72 72 61 79 69 73 68 41 nction arrayishA
8350: 64 64 28 6f 62 6a 2c 20 6b 65 79 2c 20 76 61 6c dd(obj, key, val
8360: 75 65 2c 20 65 6e 73 75 72 65 41 72 72 61 79 2c ue, ensureArray,
8370: 20 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 76 61 index) {. va
8380: 72 20 64 65 73 74 20 3d 20 6f 62 6a 5b 6b 65 79 r dest = obj[key
8390: 5d 3b 0a 20 20 20 20 76 61 72 20 69 73 41 72 72 ];. var isArr
83a0: 20 3d 20 69 73 41 72 72 61 79 28 64 65 73 74 29 = isArray(dest)
83b0: 3b 0a 20 20 20 20 76 61 72 20 68 61 73 49 6e 64 ;. var hasInd
83c0: 65 78 20 3d 20 21 69 73 55 6e 64 65 66 69 6e 65 ex = !isUndefine
83d0: 64 28 69 6e 64 65 78 29 3b 0a 0a 20 20 20 20 69 d(index);.. i
83e0: 66 20 28 64 65 73 74 20 26 26 20 64 65 73 74 20 f (dest && dest
83f0: 3d 3d 3d 20 76 61 6c 75 65 29 20 7b 20 72 65 74 === value) { ret
8400: 75 72 6e 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 urn }.. // if
8410: 20 74 68 65 20 6b 65 79 20 77 61 73 20 6e 65 76 the key was nev
8420: 65 72 20 73 65 74 2c 20 73 65 74 20 69 74 20 6f er set, set it o
8430: 6e 63 65 0a 20 20 20 20 69 66 20 28 21 64 65 73 nce. if (!des
8440: 74 20 26 26 20 65 6e 73 75 72 65 41 72 72 61 79 t && ensureArray
8450: 29 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 5b ) { obj[key] = [
8460: 76 61 6c 75 65 5d 3b 20 7d 0a 20 20 20 20 65 6c value]; }. el
8470: 73 65 20 69 66 20 28 21 64 65 73 74 29 20 7b 20 se if (!dest) {
8480: 6f 62 6a 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 obj[key] = value
8490: 3b 20 7d 0a 20 20 20 20 2f 2f 20 69 66 20 69 74 ; }. // if it
84a0: 20 77 61 73 20 61 6e 20 61 72 72 61 79 20 61 6e was an array an
84b0: 64 20 6e 6f 74 20 79 65 74 20 73 65 74 0a 20 20 d not yet set.
84c0: 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 69 else {. i
84d0: 66 20 28 69 73 41 72 72 29 20 7b 0a 20 20 20 20 f (isArr) {.
84e0: 20 20 20 20 76 61 72 20 6f 6c 64 49 6e 64 65 78 var oldIndex
84f0: 20 3d 20 64 65 73 74 2e 69 6e 64 65 78 4f 66 28 = dest.indexOf(
8500: 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 value);.
8510: 2f 2f 20 74 68 69 73 20 69 74 65 6d 20 6e 65 76 // this item nev
8520: 65 72 20 63 68 61 6e 67 65 64 20 69 74 73 20 70 er changed its p
8530: 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 osition.
8540: 69 66 20 28 6f 6c 64 49 6e 64 65 78 20 3d 3d 3d if (oldIndex ===
8550: 20 69 6e 64 65 78 29 20 7b 20 72 65 74 75 72 6e index) { return
8560: 20 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65 }. // re
8570: 6d 6f 76 65 20 74 68 65 20 69 74 65 6d 20 66 72 move the item fr
8580: 6f 6d 20 69 74 73 20 6f 6c 64 20 70 6f 73 69 74 om its old posit
8590: 69 6f 6e 0a 20 20 20 20 20 20 20 20 69 66 20 28 ion. if (
85a0: 6f 6c 64 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29 oldIndex !== -1)
85b0: 20 7b 20 64 65 73 74 2e 73 70 6c 69 63 65 28 6f { dest.splice(o
85c0: 6c 64 49 6e 64 65 78 2c 20 31 29 3b 20 7d 0a 20 ldIndex, 1); }.
85d0: 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76 65 20 6f // move o
85e0: 72 20 61 64 64 20 74 68 65 20 69 74 65 6d 0a 20 r add the item.
85f0: 20 20 20 20 20 20 20 69 66 20 28 68 61 73 49 6e if (hasIn
8600: 64 65 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20 dex) {.
8610: 20 64 65 73 74 2e 73 70 6c 69 63 65 28 69 6e 64 dest.splice(ind
8620: 65 78 2c 20 30 2c 20 76 61 6c 75 65 29 3b 0a 20 ex, 0, value);.
8630: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
8640: 20 20 20 20 20 20 20 20 20 20 64 65 73 74 2e 70 dest.p
8650: 75 73 68 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 ush(value);.
8660: 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 20 65 6c }. } el
8670: 73 65 20 7b 20 6f 62 6a 5b 6b 65 79 5d 20 3d 20 se { obj[key] =
8680: 5b 64 65 73 74 2c 20 76 61 6c 75 65 5d 3b 20 7d [dest, value]; }
8690: 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a . }. }.. /*
86a0: 2a 0a 20 20 20 2a 20 44 65 74 65 63 74 20 74 68 *. * Detect th
86b0: 65 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 e tag implementa
86c0: 74 69 6f 6e 20 62 79 20 61 20 44 4f 4d 20 6e 6f tion by a DOM no
86d0: 64 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 de. * @param
86e0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 { Object } dom
86f0: 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 20 6e 65 - DOM node we ne
8700: 65 64 20 74 6f 20 70 61 72 73 65 20 74 6f 20 67 ed to parse to g
8710: 65 74 20 69 74 73 20 74 61 67 20 69 6d 70 6c 65 et its tag imple
8720: 6d 65 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 mentation. * @
8730: 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 returns { Object
8740: 20 7d 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e } it returns an
8750: 20 6f 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 object containi
8760: 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 ng the implement
8770: 61 74 69 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f ation of a custo
8780: 6d 20 74 61 67 20 28 74 65 6d 70 6c 61 74 65 20 m tag (template
8790: 61 6e 64 20 62 6f 6f 74 20 66 75 6e 63 74 69 6f and boot functio
87a0: 6e 29 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 n). */. funct
87b0: 69 6f 6e 20 67 65 74 28 64 6f 6d 29 20 7b 0a 20 ion get(dom) {.
87c0: 20 20 20 72 65 74 75 72 6e 20 64 6f 6d 2e 74 61 return dom.ta
87d0: 67 4e 61 6d 65 20 26 26 20 5f 5f 54 41 47 5f 49 gName && __TAG_I
87e0: 4d 50 4c 5b 67 65 74 41 74 74 72 69 62 75 74 65 MPL[getAttribute
87f0: 28 64 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 (dom, IS_DIRECTI
8800: 56 45 29 20 7c 7c 0a 20 20 20 20 20 20 67 65 74 VE) ||. get
8810: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 49 Attribute(dom, I
8820: 53 5f 44 49 52 45 43 54 49 56 45 29 20 7c 7c 20 S_DIRECTIVE) ||
8830: 64 6f 6d 2e 74 61 67 4e 61 6d 65 2e 74 6f 4c 6f dom.tagName.toLo
8840: 77 65 72 43 61 73 65 28 29 5d 0a 20 20 7d 0a 0a werCase()]. }..
8850: 20 20 2f 2a 2a 0a 20 20 20 2a 20 47 65 74 20 74 /**. * Get t
8860: 68 65 20 74 61 67 20 6e 61 6d 65 20 6f 66 20 61 he tag name of a
8870: 6e 79 20 44 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a ny DOM node. *
8880: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
8890: 63 74 20 7d 20 64 6f 6d 20 2d 20 44 4f 4d 20 6e ct } dom - DOM n
88a0: 6f 64 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70 ode we want to p
88b0: 61 72 73 65 0a 20 20 20 2a 20 40 70 61 72 61 6d arse. * @param
88c0: 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 73 { Boolean } s
88d0: 6b 69 70 44 61 74 61 49 73 20 2d 20 68 61 63 6b kipDataIs - hack
88e0: 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 64 to ignore the d
88f0: 61 74 61 2d 69 73 20 61 74 74 72 69 62 75 74 65 ata-is attribute
8900: 20 77 68 65 6e 20 61 74 74 61 63 68 69 6e 67 20 when attaching
8910: 74 6f 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 to parent. * @
8920: 72 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 returns { String
8930: 20 7d 20 6e 61 6d 65 20 74 6f 20 69 64 65 6e 74 } name to ident
8940: 69 66 79 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64 ify this dom nod
8950: 65 20 69 6e 20 72 69 6f 74 0a 20 20 20 2a 2f 0a e in riot. */.
8960: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 function getNa
8970: 6d 65 28 64 6f 6d 2c 20 73 6b 69 70 44 61 74 61 me(dom, skipData
8980: 49 73 29 20 7b 0a 20 20 20 20 76 61 72 20 63 68 Is) {. var ch
8990: 69 6c 64 20 3d 20 67 65 74 28 64 6f 6d 29 3b 0a ild = get(dom);.
89a0: 20 20 20 20 76 61 72 20 6e 61 6d 65 64 54 61 67 var namedTag
89b0: 20 3d 20 21 73 6b 69 70 44 61 74 61 49 73 20 26 = !skipDataIs &
89c0: 26 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 & getAttribute(d
89d0: 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 om, IS_DIRECTIVE
89e0: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 );. return na
89f0: 6d 65 64 54 61 67 20 26 26 20 21 74 6d 70 6c 2e medTag && !tmpl.
8a00: 68 61 73 45 78 70 72 28 6e 61 6d 65 64 54 61 67 hasExpr(namedTag
8a10: 29 20 3f 0a 20 20 20 20 20 20 6e 61 6d 65 64 54 ) ?. namedT
8a20: 61 67 20 3a 20 63 68 69 6c 64 20 3f 20 63 68 69 ag : child ? chi
8a30: 6c 64 2e 6e 61 6d 65 20 3a 20 64 6f 6d 2e 74 61 ld.name : dom.ta
8a40: 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 gName.toLowerCas
8a50: 65 28 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 e(). }.. /**.
8a60: 20 20 2a 20 52 65 74 75 72 6e 20 61 20 74 65 6d * Return a tem
8a70: 70 6f 72 61 72 79 20 63 6f 6e 74 65 78 74 20 63 porary context c
8a80: 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 73 6f 20 74 ontaining also t
8a90: 68 65 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72 he parent proper
8aa0: 74 69 65 73 0a 20 20 20 2a 20 40 74 68 69 73 20 ties. * @this
8ab0: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 Tag. * @param
8ac0: 7b 20 54 61 67 20 7d 20 2d 20 74 65 6d 70 6f 72 { Tag } - tempor
8ad0: 61 72 79 20 74 61 67 20 63 6f 6e 74 65 78 74 20 ary tag context
8ae0: 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 containing all t
8af0: 68 65 20 70 61 72 65 6e 74 20 70 72 6f 70 65 72 he parent proper
8b00: 74 69 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75 6e ties. */. fun
8b10: 63 74 69 6f 6e 20 69 6e 68 65 72 69 74 50 61 72 ction inheritPar
8b20: 65 6e 74 50 72 6f 70 73 28 29 20 7b 0a 20 20 20 entProps() {.
8b30: 20 69 66 20 28 74 68 69 73 2e 70 61 72 65 6e 74 if (this.parent
8b40: 29 20 7b 20 72 65 74 75 72 6e 20 65 78 74 65 6e ) { return exten
8b50: 64 28 63 72 65 61 74 65 28 74 68 69 73 29 2c 20 d(create(this),
8b60: 74 68 69 73 2e 70 61 72 65 6e 74 29 20 7d 0a 20 this.parent) }.
8b70: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 0a 20 return this.
8b80: 20 7d 0a 0a 20 20 2f 2a 0a 20 20 20 20 49 6e 63 }.. /*. Inc
8b90: 6c 75 64 65 73 20 68 61 63 6b 73 20 6e 65 65 64 ludes hacks need
8ba0: 65 64 20 66 6f 72 20 74 68 65 20 49 6e 74 65 72 ed for the Inter
8bb0: 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 76 65 72 net Explorer ver
8bc0: 73 69 6f 6e 20 39 20 61 6e 64 20 62 65 6c 6f 77 sion 9 and below
8bd0: 0a 20 20 20 20 53 65 65 3a 20 68 74 74 70 3a 2f . See: http:/
8be0: 2f 6b 61 6e 67 61 78 2e 67 69 74 68 75 62 2e 69 /kangax.github.i
8bf0: 6f 2f 63 6f 6d 70 61 74 2d 74 61 62 6c 65 2f 65 o/compat-table/e
8c00: 73 35 2f 23 69 65 38 0a 20 20 20 20 20 20 20 20 s5/#ie8.
8c10: 20 68 74 74 70 3a 2f 2f 63 6f 64 65 70 6c 61 6e http://codeplan
8c20: 65 74 2e 69 6f 2f 64 72 6f 70 70 69 6e 67 2d 69 et.io/dropping-i
8c30: 65 38 2f 0a 20 20 2a 2f 0a 0a 20 20 76 61 72 0a e8/. */.. var.
8c40: 20 20 20 20 72 65 48 61 73 59 69 65 6c 64 20 20 reHasYield
8c50: 3d 20 2f 3c 79 69 65 6c 64 5c 62 2f 69 2c 0a 20 = /<yield\b/i,.
8c60: 20 20 20 72 65 59 69 65 6c 64 41 6c 6c 20 20 3d reYieldAll =
8c70: 20 2f 3c 79 69 65 6c 64 5c 73 2a 28 3f 3a 5c 2f /<yield\s*(?:\/
8c80: 3e 7c 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f >|>([\S\s]*?)<\/
8c90: 79 69 65 6c 64 5c 73 2a 3e 7c 3e 29 2f 69 67 2c yield\s*>|>)/ig,
8ca0: 0a 20 20 20 20 72 65 59 69 65 6c 64 53 72 63 20 . reYieldSrc
8cb0: 20 3d 20 2f 3c 79 69 65 6c 64 5c 73 2b 74 6f 3d = /<yield\s+to=
8cc0: 5b 27 22 5d 28 5b 5e 27 22 3e 5d 2a 29 5b 27 22 ['"]([^'">]*)['"
8cd0: 5d 5c 73 2a 3e 28 5b 5c 53 5c 73 5d 2a 3f 29 3c ]\s*>([\S\s]*?)<
8ce0: 5c 2f 79 69 65 6c 64 5c 73 2a 3e 2f 69 67 2c 0a \/yield\s*>/ig,.
8cf0: 20 20 20 20 72 65 59 69 65 6c 64 44 65 73 74 20 reYieldDest
8d00: 3d 20 2f 3c 79 69 65 6c 64 5c 73 2b 66 72 6f 6d = /<yield\s+from
8d10: 3d 5b 27 22 5d 3f 28 5b 2d 5c 77 5d 2b 29 5b 27 =['"]?([-\w]+)['
8d20: 22 5d 3f 5c 73 2a 28 3f 3a 5c 2f 3e 7c 3e 28 5b "]?\s*(?:\/>|>([
8d30: 5c 53 5c 73 5d 2a 3f 29 3c 5c 2f 79 69 65 6c 64 \S\s]*?)<\/yield
8d40: 5c 73 2a 3e 29 2f 69 67 2c 0a 20 20 20 20 72 6f \s*>)/ig,. ro
8d50: 6f 74 45 6c 73 20 3d 20 7b 20 74 72 3a 20 27 74 otEls = { tr: 't
8d60: 62 6f 64 79 27 2c 20 74 68 3a 20 27 74 72 27 2c body', th: 'tr',
8d70: 20 74 64 3a 20 27 74 72 27 2c 20 63 6f 6c 3a 20 td: 'tr', col:
8d80: 27 63 6f 6c 67 72 6f 75 70 27 20 7d 2c 0a 20 20 'colgroup' },.
8d90: 20 20 74 62 6c 54 61 67 73 20 3d 20 49 45 5f 56 tblTags = IE_V
8da0: 45 52 53 49 4f 4e 20 26 26 20 49 45 5f 56 45 52 ERSION && IE_VER
8db0: 53 49 4f 4e 20 3c 20 31 30 20 3f 20 52 45 5f 53 SION < 10 ? RE_S
8dc0: 50 45 43 49 41 4c 5f 54 41 47 53 20 3a 20 52 45 PECIAL_TAGS : RE
8dd0: 5f 53 50 45 43 49 41 4c 5f 54 41 47 53 5f 4e 4f _SPECIAL_TAGS_NO
8de0: 5f 4f 50 54 49 4f 4e 2c 0a 20 20 20 20 47 45 4e _OPTION,. GEN
8df0: 45 52 49 43 20 3d 20 27 64 69 76 27 2c 0a 20 20 ERIC = 'div',.
8e00: 20 20 53 56 47 20 3d 20 27 73 76 67 27 3b 0a 0a SVG = 'svg';..
8e10: 0a 20 20 2f 2a 0a 20 20 20 20 43 72 65 61 74 65 . /*. Create
8e20: 73 20 74 68 65 20 72 6f 6f 74 20 65 6c 65 6d 65 s the root eleme
8e30: 6e 74 20 66 6f 72 20 74 61 62 6c 65 20 6f 72 20 nt for table or
8e40: 73 65 6c 65 63 74 20 63 68 69 6c 64 20 65 6c 65 select child ele
8e50: 6d 65 6e 74 73 3a 0a 20 20 20 20 74 72 2f 74 68 ments:. tr/th
8e60: 2f 74 64 2f 74 68 65 61 64 2f 74 66 6f 6f 74 2f /td/thead/tfoot/
8e70: 74 62 6f 64 79 2f 63 61 70 74 69 6f 6e 2f 63 6f tbody/caption/co
8e80: 6c 2f 63 6f 6c 67 72 6f 75 70 2f 6f 70 74 69 6f l/colgroup/optio
8e90: 6e 2f 6f 70 74 67 72 6f 75 70 0a 20 20 2a 2f 0a n/optgroup. */.
8ea0: 20 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 function speci
8eb0: 61 6c 54 61 67 73 28 65 6c 2c 20 74 6d 70 6c 2c alTags(el, tmpl,
8ec0: 20 74 61 67 4e 61 6d 65 29 20 7b 0a 0a 20 20 20 tagName) {..
8ed0: 20 76 61 72 0a 20 20 20 20 20 20 73 65 6c 65 63 var. selec
8ee0: 74 20 3d 20 74 61 67 4e 61 6d 65 5b 30 5d 20 3d t = tagName[0] =
8ef0: 3d 3d 20 27 6f 27 2c 0a 20 20 20 20 20 20 70 61 == 'o',. pa
8f00: 72 65 6e 74 20 3d 20 73 65 6c 65 63 74 20 3f 20 rent = select ?
8f10: 27 73 65 6c 65 63 74 3e 27 20 3a 20 27 74 61 62 'select>' : 'tab
8f20: 6c 65 3e 27 3b 0a 0a 20 20 20 20 2f 2f 20 74 72 le>';.. // tr
8f30: 69 6d 28 29 20 69 73 20 69 6d 70 6f 72 74 61 6e im() is importan
8f40: 74 20 68 65 72 65 2c 20 74 68 69 73 20 65 6e 73 t here, this ens
8f50: 75 72 65 73 20 77 65 20 64 6f 6e 27 74 20 68 61 ures we don't ha
8f60: 76 65 20 61 72 74 69 66 61 63 74 73 2c 0a 20 20 ve artifacts,.
8f70: 20 20 2f 2f 20 73 6f 20 77 65 20 63 61 6e 20 63 // so we can c
8f80: 68 65 63 6b 20 69 66 20 77 65 20 68 61 76 65 20 heck if we have
8f90: 6f 6e 6c 79 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 only one element
8fa0: 20 69 6e 73 69 64 65 20 74 68 65 20 70 61 72 65 inside the pare
8fb0: 6e 74 0a 20 20 20 20 65 6c 2e 69 6e 6e 65 72 48 nt. el.innerH
8fc0: 54 4d 4c 20 3d 20 27 3c 27 20 2b 20 70 61 72 65 TML = '<' + pare
8fd0: 6e 74 20 2b 20 74 6d 70 6c 2e 74 72 69 6d 28 29 nt + tmpl.trim()
8fe0: 20 2b 20 27 3c 2f 27 20 2b 20 70 61 72 65 6e 74 + '</' + parent
8ff0: 3b 0a 20 20 20 20 70 61 72 65 6e 74 20 3d 20 65 ;. parent = e
9000: 6c 2e 66 69 72 73 74 43 68 69 6c 64 3b 0a 0a 20 l.firstChild;..
9010: 20 20 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 // returns th
9020: 65 20 69 6d 6d 65 64 69 61 74 65 20 70 61 72 65 e immediate pare
9030: 6e 74 20 69 66 20 74 72 2f 74 68 2f 74 64 2f 63 nt if tr/th/td/c
9040: 6f 6c 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 65 ol is the only e
9050: 6c 65 6d 65 6e 74 2c 20 69 66 20 6e 6f 74 0a 20 lement, if not.
9060: 20 20 20 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 // returns th
9070: 65 20 77 68 6f 6c 65 20 74 72 65 65 2c 20 61 73 e whole tree, as
9080: 20 74 68 69 73 20 63 61 6e 20 69 6e 63 6c 75 64 this can includ
9090: 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 65 6c 65 e additional ele
90a0: 6d 65 6e 74 73 0a 20 20 20 20 2f 2a 20 69 73 74 ments. /* ist
90b0: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 anbul ignore nex
90c0: 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 73 65 6c t */. if (sel
90d0: 65 63 74 29 20 7b 0a 20 20 20 20 20 20 70 61 72 ect) {. par
90e0: 65 6e 74 2e 73 65 6c 65 63 74 65 64 49 6e 64 65 ent.selectedInde
90f0: 78 20 3d 20 2d 31 3b 20 20 2f 2f 20 66 6f 72 20 x = -1; // for
9100: 49 45 39 2c 20 63 6f 6d 70 61 74 69 62 6c 65 20 IE9, compatible
9110: 77 2f 63 75 72 72 65 6e 74 20 72 69 6f 74 20 62 w/current riot b
9120: 65 68 61 76 69 6f 72 0a 20 20 20 20 7d 20 65 6c ehavior. } el
9130: 73 65 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 76 se {. // av
9140: 6f 69 64 73 20 69 6e 73 65 72 74 69 6f 6e 20 6f oids insertion o
9150: 66 20 63 6f 69 6e 74 61 69 6e 65 72 20 69 6e 73 f cointainer ins
9160: 69 64 65 20 63 6f 6e 74 61 69 6e 65 72 20 28 65 ide container (e
9170: 78 3a 20 74 62 6f 64 79 20 69 6e 73 69 64 65 20 x: tbody inside
9180: 74 62 6f 64 79 29 0a 20 20 20 20 20 20 76 61 72 tbody). var
9190: 20 74 6e 61 6d 65 20 3d 20 72 6f 6f 74 45 6c 73 tname = rootEls
91a0: 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 20 [tagName];.
91b0: 20 69 66 20 28 74 6e 61 6d 65 20 26 26 20 70 61 if (tname && pa
91c0: 72 65 6e 74 2e 63 68 69 6c 64 45 6c 65 6d 65 6e rent.childElemen
91d0: 74 43 6f 75 6e 74 20 3d 3d 3d 20 31 29 20 7b 20 tCount === 1) {
91e0: 70 61 72 65 6e 74 20 3d 20 24 28 74 6e 61 6d 65 parent = $(tname
91f0: 2c 20 70 61 72 65 6e 74 29 3b 20 7d 0a 20 20 20 , parent); }.
9200: 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 }. return pa
9210: 72 65 6e 74 0a 20 20 7d 0a 0a 20 20 2f 2a 0a 20 rent. }.. /*.
9220: 20 20 20 52 65 70 6c 61 63 65 20 74 68 65 20 79 Replace the y
9230: 69 65 6c 64 20 74 61 67 20 66 72 6f 6d 20 61 6e ield tag from an
9240: 79 20 74 61 67 20 74 65 6d 70 6c 61 74 65 20 77 y tag template w
9250: 69 74 68 20 74 68 65 20 69 6e 6e 65 72 48 54 4d ith the innerHTM
9260: 4c 20 6f 66 20 74 68 65 0a 20 20 20 20 6f 72 69 L of the. ori
9270: 67 69 6e 61 6c 20 74 61 67 20 69 6e 20 74 68 65 ginal tag in the
9280: 20 70 61 67 65 0a 20 20 2a 2f 0a 20 20 66 75 6e page. */. fun
9290: 63 74 69 6f 6e 20 72 65 70 6c 61 63 65 59 69 65 ction replaceYie
92a0: 6c 64 28 74 6d 70 6c 2c 20 68 74 6d 6c 29 20 7b ld(tmpl, html) {
92b0: 0a 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 . // do nothi
92c0: 6e 67 20 69 66 20 6e 6f 20 79 69 65 6c 64 0a 20 ng if no yield.
92d0: 20 20 20 69 66 20 28 21 72 65 48 61 73 59 69 65 if (!reHasYie
92e0: 6c 64 2e 74 65 73 74 28 74 6d 70 6c 29 29 20 7b ld.test(tmpl)) {
92f0: 20 72 65 74 75 72 6e 20 74 6d 70 6c 20 7d 0a 0a return tmpl }..
9300: 20 20 20 20 2f 2f 20 62 65 20 63 61 72 65 66 75 // be carefu
9310: 6c 20 77 69 74 68 20 23 31 33 34 33 20 2d 20 73 l with #1343 - s
9320: 74 72 69 6e 67 20 6f 6e 20 74 68 65 20 73 6f 75 tring on the sou
9330: 72 63 65 20 68 61 76 69 6e 67 20 60 24 31 60 0a rce having `$1`.
9340: 20 20 20 20 76 61 72 20 73 72 63 20 3d 20 7b 7d var src = {}
9350: 3b 0a 0a 20 20 20 20 68 74 6d 6c 20 3d 20 68 74 ;.. html = ht
9360: 6d 6c 20 26 26 20 68 74 6d 6c 2e 72 65 70 6c 61 ml && html.repla
9370: 63 65 28 72 65 59 69 65 6c 64 53 72 63 2c 20 66 ce(reYieldSrc, f
9380: 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 72 65 66 2c unction (_, ref,
9390: 20 74 65 78 74 29 20 7b 0a 20 20 20 20 20 20 73 text) {. s
93a0: 72 63 5b 72 65 66 5d 20 3d 20 73 72 63 5b 72 65 rc[ref] = src[re
93b0: 66 5d 20 7c 7c 20 74 65 78 74 3b 20 20 20 2f 2f f] || text; //
93c0: 20 70 72 65 73 65 72 76 65 20 66 69 72 73 74 20 preserve first
93d0: 64 65 66 69 6e 69 74 69 6f 6e 0a 20 20 20 20 20 definition.
93e0: 20 72 65 74 75 72 6e 20 27 27 0a 20 20 20 20 7d return ''. }
93f0: 29 2e 74 72 69 6d 28 29 3b 0a 0a 20 20 20 20 72 ).trim();.. r
9400: 65 74 75 72 6e 20 74 6d 70 6c 0a 20 20 20 20 20 eturn tmpl.
9410: 20 2e 72 65 70 6c 61 63 65 28 72 65 59 69 65 6c .replace(reYiel
9420: 64 44 65 73 74 2c 20 66 75 6e 63 74 69 6f 6e 20 dDest, function
9430: 28 5f 2c 20 72 65 66 2c 20 64 65 66 29 20 7b 20 (_, ref, def) {
9440: 20 2f 2f 20 79 69 65 6c 64 20 77 69 74 68 20 66 // yield with f
9450: 72 6f 6d 20 2d 20 74 6f 20 61 74 74 72 73 0a 20 rom - to attrs.
9460: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 72 return sr
9470: 63 5b 72 65 66 5d 20 7c 7c 20 64 65 66 20 7c 7c c[ref] || def ||
9480: 20 27 27 0a 20 20 20 20 20 20 7d 29 0a 20 20 20 ''. }).
9490: 20 20 20 2e 72 65 70 6c 61 63 65 28 72 65 59 69 .replace(reYi
94a0: 65 6c 64 41 6c 6c 2c 20 66 75 6e 63 74 69 6f 6e eldAll, function
94b0: 20 28 5f 2c 20 64 65 66 29 20 7b 20 20 20 20 20 (_, def) {
94c0: 20 20 20 2f 2f 20 79 69 65 6c 64 20 77 69 74 68 // yield with
94d0: 6f 75 74 20 61 6e 79 20 22 66 72 6f 6d 22 0a 20 out any "from".
94e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 74 return ht
94f0: 6d 6c 20 7c 7c 20 64 65 66 20 7c 7c 20 27 27 0a ml || def || ''.
9500: 20 20 20 20 20 20 7d 29 0a 20 20 7d 0a 0a 20 20 }). }..
9510: 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 73 /**. * Creates
9520: 20 61 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20 74 a DOM element t
9530: 6f 20 77 72 61 70 20 74 68 65 20 67 69 76 65 6e o wrap the given
9540: 20 63 6f 6e 74 65 6e 74 2e 20 4e 6f 72 6d 61 6c content. Normal
9550: 6c 79 20 61 6e 20 60 44 49 56 60 2c 20 62 75 74 ly an `DIV`, but
9560: 20 63 61 6e 20 62 65 0a 20 20 20 2a 20 61 6c 73 can be. * als
9570: 6f 20 61 20 60 54 41 42 4c 45 60 2c 20 60 53 45 o a `TABLE`, `SE
9580: 4c 45 43 54 60 2c 20 60 54 42 4f 44 59 60 2c 20 LECT`, `TBODY`,
9590: 60 54 52 60 2c 20 6f 72 20 60 43 4f 4c 47 52 4f `TR`, or `COLGRO
95a0: 55 50 60 20 65 6c 65 6d 65 6e 74 2e 0a 20 20 20 UP` element..
95b0: 2a 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 *. * @param
95c0: 7b 20 53 74 72 69 6e 67 20 7d 20 74 6d 70 6c 20 { String } tmpl
95d0: 20 2d 20 54 68 65 20 74 65 6d 70 6c 61 74 65 20 - The template
95e0: 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 coming from the
95f0: 63 75 73 74 6f 6d 20 74 61 67 20 64 65 66 69 6e custom tag defin
9600: 69 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 ition. * @para
9610: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 68 m { String } h
9620: 74 6d 6c 20 2d 20 48 54 4d 4c 20 63 6f 6e 74 65 tml - HTML conte
9630: 6e 74 20 74 68 61 74 20 63 6f 6d 65 73 20 66 72 nt that comes fr
9640: 6f 6d 20 74 68 65 20 44 4f 4d 20 65 6c 65 6d 65 om the DOM eleme
9650: 6e 74 20 77 68 65 72 65 20 79 6f 75 0a 20 20 20 nt where you.
9660: 2a 20 20 20 20 20 20 20 20 20 20 20 77 69 6c 6c * will
9670: 20 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 2c 20 mount the tag,
9680: 6d 6f 73 74 6c 79 20 74 68 65 20 6f 72 69 67 69 mostly the origi
9690: 6e 61 6c 20 74 61 67 20 69 6e 20 74 68 65 20 70 nal tag in the p
96a0: 61 67 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 age. * @param
96b0: 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 69 73 { Boolean } is
96c0: 53 76 67 20 2d 20 74 72 75 65 20 69 66 20 74 68 Svg - true if th
96d0: 65 20 72 6f 6f 74 20 6e 6f 64 65 20 69 73 20 61 e root node is a
96e0: 6e 20 73 76 67 0a 20 20 20 2a 20 40 72 65 74 75 n svg. * @retu
96f0: 72 6e 73 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e rns { HTMLElemen
9700: 74 20 7d 20 44 4f 4d 20 65 6c 65 6d 65 6e 74 20 t } DOM element
9710: 77 69 74 68 20 5f 74 6d 70 6c 5f 20 6d 65 72 67 with _tmpl_ merg
9720: 65 64 20 74 68 72 6f 75 67 68 20 60 59 49 45 4c ed through `YIEL
9730: 44 60 20 77 69 74 68 20 74 68 65 20 5f 68 74 6d D` with the _htm
9740: 6c 5f 2e 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 l_.. */. func
9750: 74 69 6f 6e 20 6d 6b 64 6f 6d 28 74 6d 70 6c 2c tion mkdom(tmpl,
9760: 20 68 74 6d 6c 2c 20 69 73 53 76 67 29 20 7b 0a html, isSvg) {.
9770: 20 20 20 20 76 61 72 20 6d 61 74 63 68 20 20 20 var match
9780: 3d 20 74 6d 70 6c 20 26 26 20 74 6d 70 6c 2e 6d = tmpl && tmpl.m
9790: 61 74 63 68 28 2f 5e 5c 73 2a 3c 28 5b 2d 5c 77 atch(/^\s*<([-\w
97a0: 5d 2b 29 2f 29 3b 0a 20 20 20 20 76 61 72 20 20 ]+)/);. var
97b0: 74 61 67 4e 61 6d 65 20 3d 20 6d 61 74 63 68 20 tagName = match
97c0: 26 26 20 6d 61 74 63 68 5b 31 5d 2e 74 6f 4c 6f && match[1].toLo
97d0: 77 65 72 43 61 73 65 28 29 3b 0a 20 20 20 20 76 werCase();. v
97e0: 61 72 20 65 6c 20 3d 20 6d 61 6b 65 45 6c 65 6d ar el = makeElem
97f0: 65 6e 74 28 69 73 53 76 67 20 3f 20 53 56 47 20 ent(isSvg ? SVG
9800: 3a 20 47 45 4e 45 52 49 43 29 3b 0a 0a 20 20 20 : GENERIC);..
9810: 20 2f 2f 20 72 65 70 6c 61 63 65 20 61 6c 6c 20 // replace all
9820: 74 68 65 20 79 69 65 6c 64 20 74 61 67 73 20 77 the yield tags w
9830: 69 74 68 20 74 68 65 20 74 61 67 20 69 6e 6e 65 ith the tag inne
9840: 72 20 68 74 6d 6c 0a 20 20 20 20 74 6d 70 6c 20 r html. tmpl
9850: 3d 20 72 65 70 6c 61 63 65 59 69 65 6c 64 28 74 = replaceYield(t
9860: 6d 70 6c 2c 20 68 74 6d 6c 29 3b 0a 0a 20 20 20 mpl, html);..
9870: 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e /* istanbul ign
9880: 6f 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 ore next */.
9890: 69 66 20 28 74 62 6c 54 61 67 73 2e 74 65 73 74 if (tblTags.test
98a0: 28 74 61 67 4e 61 6d 65 29 29 0a 20 20 20 20 20 (tagName)).
98b0: 20 7b 20 65 6c 20 3d 20 73 70 65 63 69 61 6c 54 { el = specialT
98c0: 61 67 73 28 65 6c 2c 20 74 6d 70 6c 2c 20 74 61 ags(el, tmpl, ta
98d0: 67 4e 61 6d 65 29 3b 20 7d 0a 20 20 20 20 65 6c gName); }. el
98e0: 73 65 0a 20 20 20 20 20 20 7b 20 73 65 74 49 6e se. { setIn
98f0: 6e 65 72 48 54 4d 4c 28 65 6c 2c 20 74 6d 70 6c nerHTML(el, tmpl
9900: 2c 20 69 73 53 76 67 29 3b 20 7d 0a 0a 20 20 20 , isSvg); }..
9910: 20 72 65 74 75 72 6e 20 65 6c 0a 20 20 7d 0a 0a return el. }..
9920: 20 20 76 61 72 20 45 56 45 4e 54 5f 41 54 54 52 var EVENT_ATTR
9930: 5f 52 45 20 3d 20 2f 5e 6f 6e 2f 3b 0a 0a 20 20 _RE = /^on/;..
9940: 2f 2a 2a 0a 20 20 20 2a 20 54 72 75 65 20 69 66 /**. * True if
9950: 20 74 68 65 20 65 76 65 6e 74 20 61 74 74 72 69 the event attri
9960: 62 75 74 65 20 73 74 61 72 74 73 20 77 69 74 68 bute starts with
9970: 20 27 6f 6e 27 0a 20 20 20 2a 20 40 70 61 72 61 'on'. * @para
9980: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 m { String } a
9990: 74 74 72 69 62 75 74 65 20 2d 20 65 76 65 6e 74 ttribute - event
99a0: 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 attribute. *
99b0: 40 72 65 74 75 72 6e 73 20 7b 20 42 6f 6f 6c 65 @returns { Boole
99c0: 61 6e 20 7d 0a 20 20 20 2a 2f 0a 20 20 66 75 6e an }. */. fun
99d0: 63 74 69 6f 6e 20 69 73 45 76 65 6e 74 41 74 74 ction isEventAtt
99e0: 72 69 62 75 74 65 28 61 74 74 72 69 62 75 74 65 ribute(attribute
99f0: 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 45 ) {. return E
9a00: 56 45 4e 54 5f 41 54 54 52 5f 52 45 2e 74 65 73 VENT_ATTR_RE.tes
9a10: 74 28 61 74 74 72 69 62 75 74 65 29 0a 20 20 7d t(attribute). }
9a20: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4c 6f 6f .. /**. * Loo
9a30: 70 20 62 61 63 6b 77 61 72 64 20 61 6c 6c 20 74 p backward all t
9a40: 68 65 20 70 61 72 65 6e 74 73 20 74 72 65 65 20 he parents tree
9a50: 74 6f 20 64 65 74 65 63 74 20 74 68 65 20 66 69 to detect the fi
9a60: 72 73 74 20 63 75 73 74 6f 6d 20 70 61 72 65 6e rst custom paren
9a70: 74 20 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61 t tag. * @para
9a80: 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 74 m { Object } t
9a90: 61 67 20 2d 20 61 20 54 61 67 20 69 6e 73 74 61 ag - a Tag insta
9aa0: 6e 63 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e nce. * @return
9ab0: 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 74 68 65 s { Object } the
9ac0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 instance of the
9ad0: 20 66 69 72 73 74 20 63 75 73 74 6f 6d 20 70 61 first custom pa
9ae0: 72 65 6e 74 20 74 61 67 20 66 6f 75 6e 64 0a 20 rent tag found.
9af0: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
9b00: 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 getImmediateCust
9b10: 6f 6d 50 61 72 65 6e 74 28 74 61 67 29 20 7b 0a omParent(tag) {.
9b20: 20 20 20 20 76 61 72 20 70 74 61 67 20 3d 20 74 var ptag = t
9b30: 61 67 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 70 ag;. while (p
9b40: 74 61 67 2e 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f tag.__.isAnonymo
9b50: 75 73 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 us) {. if (
9b60: 21 70 74 61 67 2e 70 61 72 65 6e 74 29 20 7b 20 !ptag.parent) {
9b70: 62 72 65 61 6b 20 7d 0a 20 20 20 20 20 20 70 74 break }. pt
9b80: 61 67 20 3d 20 70 74 61 67 2e 70 61 72 65 6e 74 ag = ptag.parent
9b90: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 ;. }. retu
9ba0: 72 6e 20 70 74 61 67 0a 20 20 7d 0a 0a 20 20 2f rn ptag. }.. /
9bb0: 2a 2a 0a 20 20 20 2a 20 54 72 69 67 67 65 72 20 **. * Trigger
9bc0: 44 4f 4d 20 65 76 65 6e 74 73 0a 20 20 20 2a 20 DOM events. *
9bd0: 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 @param { HTMLE
9be0: 6c 65 6d 65 6e 74 20 7d 20 64 6f 6d 20 2d 20 64 lement } dom - d
9bf0: 6f 6d 20 65 6c 65 6d 65 6e 74 20 74 61 72 67 65 om element targe
9c00: 74 20 6f 66 20 74 68 65 20 65 76 65 6e 74 0a 20 t of the event.
9c10: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 46 * @param { F
9c20: 75 6e 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65 unction } handle
9c30: 72 20 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f r - user functio
9c40: 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 n. * @param
9c50: 7b 20 4f 62 6a 65 63 74 20 7d 20 65 20 2d 20 65 { Object } e - e
9c60: 76 65 6e 74 20 6f 62 6a 65 63 74 0a 20 20 20 2a vent object. *
9c70: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 6e /. function han
9c80: 64 6c 65 45 76 65 6e 74 28 64 6f 6d 2c 20 68 61 dleEvent(dom, ha
9c90: 6e 64 6c 65 72 2c 20 65 29 20 7b 0a 20 20 20 20 ndler, e) {.
9ca0: 76 61 72 20 70 74 61 67 20 3d 20 74 68 69 73 2e var ptag = this.
9cb0: 5f 5f 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 __.parent;. v
9cc0: 61 72 20 69 74 65 6d 20 3d 20 74 68 69 73 2e 5f ar item = this._
9cd0: 5f 2e 69 74 65 6d 3b 0a 0a 20 20 20 20 69 66 20 _.item;.. if
9ce0: 28 21 69 74 65 6d 29 0a 20 20 20 20 20 20 7b 20 (!item). {
9cf0: 77 68 69 6c 65 20 28 70 74 61 67 20 26 26 20 21 while (ptag && !
9d00: 69 74 65 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 item) {.
9d10: 69 74 65 6d 20 3d 20 70 74 61 67 2e 5f 5f 2e 69 item = ptag.__.i
9d20: 74 65 6d 3b 0a 20 20 20 20 20 20 20 20 70 74 61 tem;. pta
9d30: 67 20 3d 20 70 74 61 67 2e 5f 5f 2e 70 61 72 65 g = ptag.__.pare
9d40: 6e 74 3b 0a 20 20 20 20 20 20 7d 20 7d 0a 0a 20 nt;. } }..
9d50: 20 20 20 2f 2f 20 6f 76 65 72 72 69 64 65 20 74 // override t
9d60: 68 65 20 65 76 65 6e 74 20 70 72 6f 70 65 72 74 he event propert
9d70: 69 65 73 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e ies. /* istan
9d80: 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 bul ignore next
9d90: 2a 2f 0a 20 20 20 20 69 66 20 28 69 73 57 72 69 */. if (isWri
9da0: 74 61 62 6c 65 28 65 2c 20 27 63 75 72 72 65 6e table(e, 'curren
9db0: 74 54 61 72 67 65 74 27 29 29 20 7b 20 65 2e 63 tTarget')) { e.c
9dc0: 75 72 72 65 6e 74 54 61 72 67 65 74 20 3d 20 64 urrentTarget = d
9dd0: 6f 6d 3b 20 7d 0a 20 20 20 20 2f 2a 20 69 73 74 om; }. /* ist
9de0: 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 anbul ignore nex
9df0: 74 20 2a 2f 0a 20 20 20 20 69 66 20 28 69 73 57 t */. if (isW
9e00: 72 69 74 61 62 6c 65 28 65 2c 20 27 74 61 72 67 ritable(e, 'targ
9e10: 65 74 27 29 29 20 7b 20 65 2e 74 61 72 67 65 74 et')) { e.target
9e20: 20 3d 20 65 2e 73 72 63 45 6c 65 6d 65 6e 74 3b = e.srcElement;
9e30: 20 7d 0a 20 20 20 20 2f 2a 20 69 73 74 61 6e 62 }. /* istanb
9e40: 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 74 20 2a ul ignore next *
9e50: 2f 0a 20 20 20 20 69 66 20 28 69 73 57 72 69 74 /. if (isWrit
9e60: 61 62 6c 65 28 65 2c 20 27 77 68 69 63 68 27 29 able(e, 'which')
9e70: 29 20 7b 20 65 2e 77 68 69 63 68 20 3d 20 65 2e ) { e.which = e.
9e80: 63 68 61 72 43 6f 64 65 20 7c 7c 20 65 2e 6b 65 charCode || e.ke
9e90: 79 43 6f 64 65 3b 20 7d 0a 0a 20 20 20 20 65 2e yCode; }.. e.
9ea0: 69 74 65 6d 20 3d 20 69 74 65 6d 3b 0a 0a 20 20 item = item;..
9eb0: 20 20 68 61 6e 64 6c 65 72 2e 63 61 6c 6c 28 74 handler.call(t
9ec0: 68 69 73 2c 20 65 29 3b 0a 0a 20 20 20 20 2f 2f his, e);.. //
9ed0: 20 61 76 6f 69 64 20 61 75 74 6f 20 75 70 64 61 avoid auto upda
9ee0: 74 65 73 0a 20 20 20 20 69 66 20 28 21 73 65 74 tes. if (!set
9ef0: 74 69 6e 67 73 2e 61 75 74 6f 55 70 64 61 74 65 tings.autoUpdate
9f00: 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 ) { return }..
9f10: 20 20 69 66 20 28 21 65 2e 70 72 65 76 65 6e 74 if (!e.prevent
9f20: 55 70 64 61 74 65 29 20 7b 0a 20 20 20 20 20 20 Update) {.
9f30: 76 61 72 20 70 20 3d 20 67 65 74 49 6d 6d 65 64 var p = getImmed
9f40: 69 61 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 iateCustomParent
9f50: 28 74 68 69 73 29 3b 0a 20 20 20 20 20 20 2f 2f (this);. //
9f60: 20 66 69 78 65 73 20 23 32 30 38 33 0a 20 20 20 fixes #2083.
9f70: 20 20 20 69 66 20 28 70 2e 69 73 4d 6f 75 6e 74 if (p.isMount
9f80: 65 64 29 20 7b 20 70 2e 75 70 64 61 74 65 28 29 ed) { p.update()
9f90: 3b 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 ; }. }. }..
9fa0: 20 2f 2a 2a 0a 20 20 20 2a 20 41 74 74 61 63 68 /**. * Attach
9fb0: 20 61 6e 20 65 76 65 6e 74 20 74 6f 20 61 20 44 an event to a D
9fc0: 4f 4d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 OM node. * @pa
9fd0: 72 61 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6e ram { String } n
9fe0: 61 6d 65 20 2d 20 65 76 65 6e 74 20 6e 61 6d 65 ame - event name
9ff0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 46 . * @param { F
a000: 75 6e 63 74 69 6f 6e 20 7d 20 68 61 6e 64 6c 65 unction } handle
a010: 72 20 2d 20 65 76 65 6e 74 20 63 61 6c 6c 62 61 r - event callba
a020: 63 6b 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b ck. * @param {
a030: 20 4f 62 6a 65 63 74 20 7d 20 64 6f 6d 20 2d 20 Object } dom -
a040: 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 dom node. * @p
a050: 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 aram { Tag } tag
a060: 20 2d 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a - tag instance.
a070: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
a080: 20 73 65 74 45 76 65 6e 74 48 61 6e 64 6c 65 72 setEventHandler
a090: 28 6e 61 6d 65 2c 20 68 61 6e 64 6c 65 72 2c 20 (name, handler,
a0a0: 64 6f 6d 2c 20 74 61 67 29 20 7b 0a 20 20 20 20 dom, tag) {.
a0b0: 76 61 72 20 65 76 65 6e 74 4e 61 6d 65 3b 0a 20 var eventName;.
a0c0: 20 20 20 76 61 72 20 63 62 20 3d 20 68 61 6e 64 var cb = hand
a0d0: 6c 65 45 76 65 6e 74 2e 62 69 6e 64 28 74 61 67 leEvent.bind(tag
a0e0: 2c 20 64 6f 6d 2c 20 68 61 6e 64 6c 65 72 29 3b , dom, handler);
a0f0: 0a 0a 20 20 20 20 2f 2f 20 61 76 6f 69 64 20 74 .. // avoid t
a100: 6f 20 62 69 6e 64 20 74 77 69 63 65 20 74 68 65 o bind twice the
a110: 20 73 61 6d 65 20 65 76 65 6e 74 0a 20 20 20 20 same event.
a120: 2f 2f 20 70 6f 73 73 69 62 6c 65 20 66 69 78 20 // possible fix
a130: 66 6f 72 20 23 32 33 33 32 0a 20 20 20 20 64 6f for #2332. do
a140: 6d 5b 6e 61 6d 65 5d 20 3d 20 6e 75 6c 6c 3b 0a m[name] = null;.
a150: 0a 20 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a . // normaliz
a160: 65 20 65 76 65 6e 74 20 6e 61 6d 65 0a 20 20 20 e event name.
a170: 20 65 76 65 6e 74 4e 61 6d 65 20 3d 20 6e 61 6d eventName = nam
a180: 65 2e 72 65 70 6c 61 63 65 28 52 45 5f 45 56 45 e.replace(RE_EVE
a190: 4e 54 53 5f 50 52 45 46 49 58 2c 20 27 27 29 3b NTS_PREFIX, '');
a1a0: 0a 0a 20 20 20 20 2f 2f 20 63 61 63 68 65 20 74 .. // cache t
a1b0: 68 65 20 6c 69 73 74 65 6e 65 72 20 69 6e 74 6f he listener into
a1c0: 20 74 68 65 20 6c 69 73 74 65 6e 65 72 73 20 61 the listeners a
a1d0: 72 72 61 79 0a 20 20 20 20 69 66 20 28 21 63 6f rray. if (!co
a1e0: 6e 74 61 69 6e 73 28 74 61 67 2e 5f 5f 2e 6c 69 ntains(tag.__.li
a1f0: 73 74 65 6e 65 72 73 2c 20 64 6f 6d 29 29 20 7b steners, dom)) {
a200: 20 74 61 67 2e 5f 5f 2e 6c 69 73 74 65 6e 65 72 tag.__.listener
a210: 73 2e 70 75 73 68 28 64 6f 6d 29 3b 20 7d 0a 20 s.push(dom); }.
a220: 20 20 20 69 66 20 28 21 64 6f 6d 5b 52 49 4f 54 if (!dom[RIOT
a230: 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 29 20 7b 20 _EVENTS_KEY]) {
a240: 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f dom[RIOT_EVENTS_
a250: 4b 45 59 5d 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 KEY] = {}; }.
a260: 20 69 66 20 28 64 6f 6d 5b 52 49 4f 54 5f 45 56 if (dom[RIOT_EV
a270: 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d 29 ENTS_KEY][name])
a280: 20 7b 20 64 6f 6d 2e 72 65 6d 6f 76 65 45 76 65 { dom.removeEve
a290: 6e 74 4c 69 73 74 65 6e 65 72 28 65 76 65 6e 74 ntListener(event
a2a0: 4e 61 6d 65 2c 20 64 6f 6d 5b 52 49 4f 54 5f 45 Name, dom[RIOT_E
a2b0: 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e 61 6d 65 5d VENTS_KEY][name]
a2c0: 29 3b 20 7d 0a 0a 20 20 20 20 64 6f 6d 5b 52 49 ); }.. dom[RI
a2d0: 4f 54 5f 45 56 45 4e 54 53 5f 4b 45 59 5d 5b 6e OT_EVENTS_KEY][n
a2e0: 61 6d 65 5d 20 3d 20 63 62 3b 0a 20 20 20 20 64 ame] = cb;. d
a2f0: 6f 6d 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 om.addEventListe
a300: 6e 65 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20 63 ner(eventName, c
a310: 62 2c 20 66 61 6c 73 65 29 3b 0a 20 20 7d 0a 0a b, false);. }..
a320: 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 /**. * Creat
a330: 65 20 61 20 6e 65 77 20 63 68 69 6c 64 20 74 61 e a new child ta
a340: 67 20 69 6e 63 6c 75 64 69 6e 67 20 69 74 20 63 g including it c
a350: 6f 72 72 65 63 74 6c 79 20 69 6e 74 6f 20 69 74 orrectly into it
a360: 73 20 70 61 72 65 6e 74 0a 20 20 20 2a 20 40 70 s parent. * @p
a370: 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 aram { Object
a380: 7d 20 63 68 69 6c 64 20 2d 20 63 68 69 6c 64 20 } child - child
a390: 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 tag implementati
a3a0: 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 on. * @param
a3b0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 { Object } opts
a3c0: 20 2d 20 74 61 67 20 6f 70 74 69 6f 6e 73 20 63 - tag options c
a3d0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 44 4f ontaining the DO
a3e0: 4d 20 6e 6f 64 65 20 77 68 65 72 65 20 74 68 65 M node where the
a3f0: 20 74 61 67 20 77 69 6c 6c 20 62 65 20 6d 6f 75 tag will be mou
a400: 6e 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d nted. * @param
a410: 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e { String } in
a420: 6e 65 72 48 54 4d 4c 20 2d 20 69 6e 6e 65 72 20 nerHTML - inner
a430: 68 74 6d 6c 20 6f 66 20 74 68 65 20 63 68 69 6c html of the chil
a440: 64 20 6e 6f 64 65 0a 20 20 20 2a 20 40 70 61 72 d node. * @par
a450: 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 am { Object }
a460: 70 61 72 65 6e 74 20 2d 20 69 6e 73 74 61 6e 63 parent - instanc
a470: 65 20 6f 66 20 74 68 65 20 70 61 72 65 6e 74 20 e of the parent
a480: 74 61 67 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 tag including th
a490: 65 20 63 68 69 6c 64 20 63 75 73 74 6f 6d 20 74 e child custom t
a4a0: 61 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 ag. * @returns
a4b0: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 69 6e 73 74 { Object } inst
a4c0: 61 6e 63 65 20 6f 66 20 74 68 65 20 6e 65 77 20 ance of the new
a4d0: 63 68 69 6c 64 20 74 61 67 20 6a 75 73 74 20 63 child tag just c
a4e0: 72 65 61 74 65 64 0a 20 20 20 2a 2f 0a 20 20 66 reated. */. f
a4f0: 75 6e 63 74 69 6f 6e 20 69 6e 69 74 43 68 69 6c unction initChil
a500: 64 28 63 68 69 6c 64 2c 20 6f 70 74 73 2c 20 69 d(child, opts, i
a510: 6e 6e 65 72 48 54 4d 4c 2c 20 70 61 72 65 6e 74 nnerHTML, parent
a520: 29 20 7b 0a 20 20 20 20 76 61 72 20 74 61 67 20 ) {. var tag
a530: 3d 20 63 72 65 61 74 65 54 61 67 28 63 68 69 6c = createTag(chil
a540: 64 2c 20 6f 70 74 73 2c 20 69 6e 6e 65 72 48 54 d, opts, innerHT
a550: 4d 4c 29 3b 0a 20 20 20 20 76 61 72 20 74 61 67 ML);. var tag
a560: 4e 61 6d 65 20 3d 20 6f 70 74 73 2e 74 61 67 4e Name = opts.tagN
a570: 61 6d 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 6f ame || getName(o
a580: 70 74 73 2e 72 6f 6f 74 2c 20 74 72 75 65 29 3b pts.root, true);
a590: 0a 20 20 20 20 76 61 72 20 70 74 61 67 20 3d 20 . var ptag =
a5a0: 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 getImmediateCust
a5b0: 6f 6d 50 61 72 65 6e 74 28 70 61 72 65 6e 74 29 omParent(parent)
a5c0: 3b 0a 20 20 20 20 2f 2f 20 66 69 78 20 66 6f 72 ;. // fix for
a5d0: 20 74 68 65 20 70 61 72 65 6e 74 20 61 74 74 72 the parent attr
a5e0: 69 62 75 74 65 20 69 6e 20 74 68 65 20 6c 6f 6f ibute in the loo
a5f0: 70 65 64 20 65 6c 65 6d 65 6e 74 73 0a 20 20 20 ped elements.
a600: 20 64 65 66 69 6e 65 28 74 61 67 2c 20 27 70 61 define(tag, 'pa
a610: 72 65 6e 74 27 2c 20 70 74 61 67 29 3b 0a 20 20 rent', ptag);.
a620: 20 20 2f 2f 20 73 74 6f 72 65 20 74 68 65 20 72 // store the r
a630: 65 61 6c 20 70 61 72 65 6e 74 20 74 61 67 0a 20 eal parent tag.
a640: 20 20 20 2f 2f 20 69 6e 20 73 6f 6d 65 20 63 61 // in some ca
a650: 73 65 73 20 74 68 69 73 20 63 6f 75 6c 64 20 62 ses this could b
a660: 65 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d e different from
a670: 20 74 68 65 20 63 75 73 74 6f 6d 20 70 61 72 65 the custom pare
a680: 6e 74 20 74 61 67 0a 20 20 20 20 2f 2f 20 66 6f nt tag. // fo
a690: 72 20 65 78 61 6d 70 6c 65 20 69 6e 20 6e 65 73 r example in nes
a6a0: 74 65 64 20 6c 6f 6f 70 73 0a 20 20 20 20 74 61 ted loops. ta
a6b0: 67 2e 5f 5f 2e 70 61 72 65 6e 74 20 3d 20 70 61 g.__.parent = pa
a6c0: 72 65 6e 74 3b 0a 0a 20 20 20 20 2f 2f 20 61 64 rent;.. // ad
a6d0: 64 20 74 68 69 73 20 74 61 67 20 74 6f 20 74 68 d this tag to th
a6e0: 65 20 63 75 73 74 6f 6d 20 70 61 72 65 6e 74 20 e custom parent
a6f0: 74 61 67 0a 20 20 20 20 61 72 72 61 79 69 73 68 tag. arrayish
a700: 41 64 64 28 70 74 61 67 2e 74 61 67 73 2c 20 74 Add(ptag.tags, t
a710: 61 67 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 0a 20 agName, tag);..
a720: 20 20 20 2f 2f 20 61 6e 64 20 61 6c 73 6f 20 74 // and also t
a730: 6f 20 74 68 65 20 72 65 61 6c 20 70 61 72 65 6e o the real paren
a740: 74 20 74 61 67 0a 20 20 20 20 69 66 20 28 70 74 t tag. if (pt
a750: 61 67 20 21 3d 3d 20 70 61 72 65 6e 74 29 0a 20 ag !== parent).
a760: 20 20 20 20 20 7b 20 61 72 72 61 79 69 73 68 41 { arrayishA
a770: 64 64 28 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 dd(parent.tags,
a780: 74 61 67 4e 61 6d 65 2c 20 74 61 67 29 3b 20 7d tagName, tag); }
a790: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 .. return tag
a7a0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
a7b0: 20 52 65 6d 6f 76 65 73 20 61 6e 20 69 74 65 6d Removes an item
a7c0: 20 66 72 6f 6d 20 61 6e 20 6f 62 6a 65 63 74 20 from an object
a7d0: 61 74 20 61 20 67 69 76 65 6e 20 6b 65 79 2e 20 at a given key.
a7e0: 49 66 20 74 68 65 20 6b 65 79 20 70 6f 69 6e 74 If the key point
a7f0: 73 20 74 6f 20 61 6e 20 61 72 72 61 79 2c 0a 20 s to an array,.
a800: 20 20 2a 20 74 68 65 6e 20 74 68 65 20 69 74 65 * then the ite
a810: 6d 20 69 73 20 6a 75 73 74 20 72 65 6d 6f 76 65 m is just remove
a820: 64 20 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79 d from the array
a830: 2e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 .. * @param {
a840: 4f 62 6a 65 63 74 20 7d 20 6f 62 6a 20 2d 20 6f Object } obj - o
a850: 62 6a 65 63 74 20 6f 6e 20 77 68 69 63 68 20 74 bject on which t
a860: 6f 20 72 65 6d 6f 76 65 20 74 68 65 20 70 72 6f o remove the pro
a870: 70 65 72 74 79 0a 20 20 20 2a 20 40 70 61 72 61 perty. * @para
a880: 6d 20 7b 20 53 74 72 69 6e 67 20 7d 20 6b 65 79 m { String } key
a890: 20 2d 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 - property name
a8a0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 4f . * @param { O
a8b0: 62 6a 65 63 74 20 7d 20 76 61 6c 75 65 20 2d 20 bject } value -
a8c0: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 the value of the
a8d0: 20 70 72 6f 70 65 72 74 79 20 74 6f 20 62 65 20 property to be
a8e0: 72 65 6d 6f 76 65 64 0a 20 20 20 2a 20 40 70 61 removed. * @pa
a8f0: 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 ram { Boolean }
a900: 65 6e 73 75 72 65 41 72 72 61 79 20 2d 20 65 6e ensureArray - en
a910: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 70 72 sure that the pr
a920: 6f 70 65 72 74 79 20 72 65 6d 61 69 6e 73 20 61 operty remains a
a930: 6e 20 61 72 72 61 79 0a 20 20 2a 2f 0a 20 20 66 n array. */. f
a940: 75 6e 63 74 69 6f 6e 20 61 72 72 61 79 69 73 68 unction arrayish
a950: 52 65 6d 6f 76 65 28 6f 62 6a 2c 20 6b 65 79 2c Remove(obj, key,
a960: 20 76 61 6c 75 65 2c 20 65 6e 73 75 72 65 41 72 value, ensureAr
a970: 72 61 79 29 20 7b 0a 20 20 20 20 69 66 20 28 69 ray) {. if (i
a980: 73 41 72 72 61 79 28 6f 62 6a 5b 6b 65 79 5d 29 sArray(obj[key])
a990: 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 69 6e ) {. var in
a9a0: 64 65 78 20 3d 20 6f 62 6a 5b 6b 65 79 5d 2e 69 dex = obj[key].i
a9b0: 6e 64 65 78 4f 66 28 76 61 6c 75 65 29 3b 0a 20 ndexOf(value);.
a9c0: 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 21 if (index !
a9d0: 3d 3d 20 2d 31 29 20 7b 20 6f 62 6a 5b 6b 65 79 == -1) { obj[key
a9e0: 5d 2e 73 70 6c 69 63 65 28 69 6e 64 65 78 2c 20 ].splice(index,
a9f0: 31 29 3b 20 7d 0a 20 20 20 20 20 20 69 66 20 28 1); }. if (
aa00: 21 6f 62 6a 5b 6b 65 79 5d 2e 6c 65 6e 67 74 68 !obj[key].length
aa10: 29 20 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b ) { delete obj[k
aa20: 65 79 5d 3b 20 7d 0a 20 20 20 20 20 20 65 6c 73 ey]; }. els
aa30: 65 20 69 66 20 28 6f 62 6a 5b 6b 65 79 5d 2e 6c e if (obj[key].l
aa40: 65 6e 67 74 68 20 3d 3d 3d 20 31 20 26 26 20 21 ength === 1 && !
aa50: 65 6e 73 75 72 65 41 72 72 61 79 29 20 7b 20 6f ensureArray) { o
aa60: 62 6a 5b 6b 65 79 5d 20 3d 20 6f 62 6a 5b 6b 65 bj[key] = obj[ke
aa70: 79 5d 5b 30 5d 3b 20 7d 0a 20 20 20 20 7d 20 65 y][0]; }. } e
aa80: 6c 73 65 20 69 66 20 28 6f 62 6a 5b 6b 65 79 5d lse if (obj[key]
aa90: 20 3d 3d 3d 20 76 61 6c 75 65 29 0a 20 20 20 20 === value).
aaa0: 20 20 7b 20 64 65 6c 65 74 65 20 6f 62 6a 5b 6b { delete obj[k
aab0: 65 79 5d 3b 20 7d 20 2f 2f 20 6f 74 68 65 72 77 ey]; } // otherw
aac0: 69 73 65 20 6a 75 73 74 20 64 65 6c 65 74 65 20 ise just delete
aad0: 74 68 65 20 6b 65 79 0a 20 20 7d 0a 0a 20 20 2f the key. }.. /
aae0: 2a 2a 0a 20 20 20 2a 20 41 64 64 73 20 74 68 65 **. * Adds the
aaf0: 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 20 61 20 elements for a
ab00: 76 69 72 74 75 61 6c 20 74 61 67 0a 20 20 20 2a virtual tag. *
ab10: 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 @this Tag. *
ab20: 40 70 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 @param { Node }
ab30: 73 72 63 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 src - the node t
ab40: 68 61 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 hat will do the
ab50: 69 6e 73 65 72 74 69 6e 67 20 6f 72 20 61 70 70 inserting or app
ab60: 65 6e 64 69 6e 67 0a 20 20 20 2a 20 40 70 61 72 ending. * @par
ab70: 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72 67 65 am { Tag } targe
ab80: 74 20 2d 20 6f 6e 6c 79 20 69 66 20 69 6e 73 65 t - only if inse
ab90: 72 74 69 6e 67 2c 20 69 6e 73 65 72 74 20 62 65 rting, insert be
aba0: 66 6f 72 65 20 74 68 69 73 20 74 61 67 27 73 20 fore this tag's
abb0: 66 69 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a first child. *
abc0: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 6b /. function mak
abd0: 65 56 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61 eVirtual(src, ta
abe0: 72 67 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20 rget) {. var
abf0: 74 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a this$1 = this;..
ac00: 20 20 20 20 76 61 72 20 68 65 61 64 20 3d 20 63 var head = c
ac10: 72 65 61 74 65 44 4f 4d 50 6c 61 63 65 68 6f 6c reateDOMPlacehol
ac20: 64 65 72 28 29 3b 0a 20 20 20 20 76 61 72 20 74 der();. var t
ac30: 61 69 6c 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 ail = createDOMP
ac40: 6c 61 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 laceholder();.
ac50: 20 20 76 61 72 20 66 72 61 67 20 3d 20 63 72 65 var frag = cre
ac60: 61 74 65 46 72 61 67 6d 65 6e 74 28 29 3b 0a 20 ateFragment();.
ac70: 20 20 20 76 61 72 20 73 69 62 3b 0a 20 20 20 20 var sib;.
ac80: 76 61 72 20 65 6c 3b 0a 0a 20 20 20 20 74 68 69 var el;.. thi
ac90: 73 2e 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 66 s.root.insertBef
aca0: 6f 72 65 28 68 65 61 64 2c 20 74 68 69 73 2e 72 ore(head, this.r
acb0: 6f 6f 74 2e 66 69 72 73 74 43 68 69 6c 64 29 3b oot.firstChild);
acc0: 0a 20 20 20 20 74 68 69 73 2e 72 6f 6f 74 2e 61 . this.root.a
acd0: 70 70 65 6e 64 43 68 69 6c 64 28 74 61 69 6c 29 ppendChild(tail)
ace0: 3b 0a 0a 20 20 20 20 74 68 69 73 2e 5f 5f 2e 68 ;.. this.__.h
acf0: 65 61 64 20 3d 20 65 6c 20 3d 20 68 65 61 64 3b ead = el = head;
ad00: 0a 20 20 20 20 74 68 69 73 2e 5f 5f 2e 74 61 69 . this.__.tai
ad10: 6c 20 3d 20 74 61 69 6c 3b 0a 0a 20 20 20 20 77 l = tail;.. w
ad20: 68 69 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20 hile (el) {.
ad30: 20 20 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53 sib = el.nextS
ad40: 69 62 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72 ibling;. fr
ad50: 61 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 ag.appendChild(e
ad60: 6c 29 3b 0a 20 20 20 20 20 20 74 68 69 73 24 31 l);. this$1
ad70: 2e 5f 5f 2e 76 69 72 74 73 2e 70 75 73 68 28 65 .__.virts.push(e
ad80: 6c 29 3b 20 2f 2f 20 68 6f 6c 64 20 66 6f 72 20 l); // hold for
ad90: 75 6e 6d 6f 75 6e 74 69 6e 67 0a 20 20 20 20 20 unmounting.
ada0: 20 65 6c 20 3d 20 73 69 62 3b 0a 20 20 20 20 7d el = sib;. }
adb0: 0a 0a 20 20 20 20 69 66 20 28 74 61 72 67 65 74 .. if (target
adc0: 29 0a 20 20 20 20 20 20 7b 20 73 72 63 2e 69 6e ). { src.in
add0: 73 65 72 74 42 65 66 6f 72 65 28 66 72 61 67 2c sertBefore(frag,
ade0: 20 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64 29 target.__.head)
adf0: 3b 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 ; }. else.
ae00: 20 20 20 7b 20 73 72 63 2e 61 70 70 65 6e 64 43 { src.appendC
ae10: 68 69 6c 64 28 66 72 61 67 29 3b 20 7d 0a 20 20 hild(frag); }.
ae20: 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 6d 61 }.. /**. * ma
ae30: 6b 65 73 20 61 20 74 61 67 20 76 69 72 74 75 61 kes a tag virtua
ae40: 6c 20 61 6e 64 20 72 65 70 6c 61 63 65 73 20 61 l and replaces a
ae50: 20 72 65 66 65 72 65 6e 63 65 20 69 6e 20 74 68 reference in th
ae60: 65 20 64 6f 6d 0a 20 20 20 2a 20 40 74 68 69 73 e dom. * @this
ae70: 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d Tag. * @param
ae80: 20 7b 20 74 61 67 20 7d 20 74 68 65 20 74 61 67 { tag } the tag
ae90: 20 74 6f 20 6d 61 6b 65 20 76 69 72 74 75 61 6c to make virtual
aea0: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 72 . * @param { r
aeb0: 65 66 20 7d 20 74 68 65 20 64 6f 6d 20 72 65 66 ef } the dom ref
aec0: 65 72 65 6e 63 65 20 6c 6f 63 61 74 69 6f 6e 0a erence location.
aed0: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
aee0: 20 6d 61 6b 65 52 65 70 6c 61 63 65 56 69 72 74 makeReplaceVirt
aef0: 75 61 6c 28 74 61 67 2c 20 72 65 66 29 20 7b 0a ual(tag, ref) {.
af00: 20 20 20 20 69 66 20 28 21 72 65 66 2e 70 61 72 if (!ref.par
af10: 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65 74 75 72 entNode) { retur
af20: 6e 20 7d 0a 20 20 20 20 76 61 72 20 66 72 61 67 n }. var frag
af30: 20 3d 20 63 72 65 61 74 65 46 72 61 67 6d 65 6e = createFragmen
af40: 74 28 29 3b 0a 20 20 20 20 6d 61 6b 65 56 69 72 t();. makeVir
af50: 74 75 61 6c 2e 63 61 6c 6c 28 74 61 67 2c 20 66 tual.call(tag, f
af60: 72 61 67 29 3b 0a 20 20 20 20 72 65 66 2e 70 61 rag);. ref.pa
af70: 72 65 6e 74 4e 6f 64 65 2e 72 65 70 6c 61 63 65 rentNode.replace
af80: 43 68 69 6c 64 28 66 72 61 67 2c 20 72 65 66 29 Child(frag, ref)
af90: 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 ;. }.. /**.
afa0: 2a 20 55 70 64 61 74 65 20 64 79 6e 61 6d 69 63 * Update dynamic
afb0: 61 6c 6c 79 20 63 72 65 61 74 65 64 20 64 61 74 ally created dat
afc0: 61 2d 69 73 20 74 61 67 73 20 77 69 74 68 20 63 a-is tags with c
afd0: 68 61 6e 67 69 6e 67 20 65 78 70 72 65 73 73 69 hanging expressi
afe0: 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ons. * @param
aff0: 7b 20 4f 62 6a 65 63 74 20 7d 20 65 78 70 72 20 { Object } expr
b000: 2d 20 65 78 70 72 65 73 73 69 6f 6e 20 74 61 67 - expression tag
b010: 20 61 6e 64 20 65 78 70 72 65 73 73 69 6f 6e 20 and expression
b020: 69 6e 66 6f 0a 20 20 20 2a 20 40 70 61 72 61 6d info. * @param
b030: 20 7b 20 54 61 67 20 7d 20 20 20 20 70 61 72 65 { Tag } pare
b040: 6e 74 20 2d 20 70 61 72 65 6e 74 20 66 6f 72 20 nt - parent for
b050: 74 61 67 20 63 72 65 61 74 69 6f 6e 0a 20 20 20 tag creation.
b060: 2a 20 40 70 61 72 61 6d 20 7b 20 53 74 72 69 6e * @param { Strin
b070: 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20 74 61 g } tagName - ta
b080: 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e g implementation
b090: 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 0a we want to use.
b0a0: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
b0b0: 20 75 70 64 61 74 65 44 61 74 61 49 73 28 65 78 updateDataIs(ex
b0c0: 70 72 2c 20 70 61 72 65 6e 74 2c 20 74 61 67 4e pr, parent, tagN
b0d0: 61 6d 65 29 20 7b 0a 20 20 20 20 76 61 72 20 74 ame) {. var t
b0e0: 61 67 20 3d 20 65 78 70 72 2e 74 61 67 20 7c 7c ag = expr.tag ||
b0f0: 20 65 78 70 72 2e 64 6f 6d 2e 5f 74 61 67 3b 0a expr.dom._tag;.
b100: 20 20 20 20 76 61 72 20 72 65 66 3b 0a 0a 20 20 var ref;..
b110: 20 20 76 61 72 20 72 65 66 24 31 20 3d 20 74 61 var ref$1 = ta
b120: 67 20 3f 20 74 61 67 2e 5f 5f 20 3a 20 7b 7d 3b g ? tag.__ : {};
b130: 0a 20 20 20 20 76 61 72 20 68 65 61 64 20 3d 20 . var head =
b140: 72 65 66 24 31 2e 68 65 61 64 3b 0a 20 20 20 20 ref$1.head;.
b150: 76 61 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 var isVirtual =
b160: 65 78 70 72 2e 64 6f 6d 2e 74 61 67 4e 61 6d 65 expr.dom.tagName
b170: 20 3d 3d 3d 20 27 56 49 52 54 55 41 4c 27 3b 0a === 'VIRTUAL';.
b180: 0a 20 20 20 20 69 66 20 28 74 61 67 20 26 26 20 . if (tag &&
b190: 65 78 70 72 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d expr.tagName ===
b1a0: 20 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 20 tagName) {.
b1b0: 20 20 74 61 67 2e 75 70 64 61 74 65 28 29 3b 0a tag.update();.
b1c0: 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 return.
b1d0: 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 79 6e 63 20 }.. // sync
b1e0: 5f 70 61 72 65 6e 74 20 74 6f 20 61 63 63 6f 6d _parent to accom
b1f0: 6d 6f 64 61 74 65 20 63 68 61 6e 67 69 6e 67 20 modate changing
b200: 74 61 67 6e 61 6d 65 73 0a 20 20 20 20 69 66 20 tagnames. if
b210: 28 74 61 67 29 20 7b 0a 20 20 20 20 20 20 2f 2f (tag) {. //
b220: 20 6e 65 65 64 20 70 6c 61 63 65 68 6f 6c 64 65 need placeholde
b230: 72 20 62 65 66 6f 72 65 20 75 6e 6d 6f 75 6e 74 r before unmount
b240: 0a 20 20 20 20 20 20 69 66 28 69 73 56 69 72 74 . if(isVirt
b250: 75 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ual) {. r
b260: 65 66 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c ef = createDOMPl
b270: 61 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 aceholder();.
b280: 20 20 20 20 20 68 65 61 64 2e 70 61 72 65 6e 74 head.parent
b290: 4e 6f 64 65 2e 69 6e 73 65 72 74 42 65 66 6f 72 Node.insertBefor
b2a0: 65 28 72 65 66 2c 20 68 65 61 64 29 3b 0a 20 20 e(ref, head);.
b2b0: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 74 61 67 }.. tag
b2c0: 2e 75 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 0a .unmount(true);.
b2d0: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 75 6e }.. // un
b2e0: 61 62 6c 65 20 74 6f 20 67 65 74 20 74 68 65 20 able to get the
b2f0: 74 61 67 20 6e 61 6d 65 0a 20 20 20 20 69 66 20 tag name. if
b300: 28 21 69 73 53 74 72 69 6e 67 28 74 61 67 4e 61 (!isString(tagNa
b310: 6d 65 29 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a me)) { return }.
b320: 0a 20 20 20 20 65 78 70 72 2e 69 6d 70 6c 20 3d . expr.impl =
b330: 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e __TAG_IMPL[tagN
b340: 61 6d 65 5d 3b 0a 0a 20 20 20 20 2f 2f 20 75 6e ame];.. // un
b350: 6b 6e 6f 77 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 known implementa
b360: 74 69 6f 6e 0a 20 20 20 20 69 66 20 28 21 65 78 tion. if (!ex
b370: 70 72 2e 69 6d 70 6c 29 20 7b 20 72 65 74 75 72 pr.impl) { retur
b380: 6e 20 7d 0a 0a 20 20 20 20 65 78 70 72 2e 74 61 n }.. expr.ta
b390: 67 20 3d 20 74 61 67 20 3d 20 69 6e 69 74 43 68 g = tag = initCh
b3a0: 69 6c 64 28 0a 20 20 20 20 20 20 65 78 70 72 2e ild(. expr.
b3b0: 69 6d 70 6c 2c 20 7b 0a 20 20 20 20 20 20 20 20 impl, {.
b3c0: 72 6f 6f 74 3a 20 65 78 70 72 2e 64 6f 6d 2c 0a root: expr.dom,.
b3d0: 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 parent:
b3e0: 70 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 parent,.
b3f0: 74 61 67 4e 61 6d 65 3a 20 74 61 67 4e 61 6d 65 tagName: tagName
b400: 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 . },.
b410: 65 78 70 72 2e 64 6f 6d 2e 69 6e 6e 65 72 48 54 expr.dom.innerHT
b420: 4d 4c 2c 0a 20 20 20 20 20 20 70 61 72 65 6e 74 ML,. parent
b430: 0a 20 20 20 20 29 3b 0a 0a 20 20 20 20 65 61 63 . );.. eac
b440: 68 28 65 78 70 72 2e 61 74 74 72 73 2c 20 66 75 h(expr.attrs, fu
b450: 6e 63 74 69 6f 6e 20 28 61 29 20 7b 20 72 65 74 nction (a) { ret
b460: 75 72 6e 20 73 65 74 41 74 74 72 69 62 75 74 65 urn setAttribute
b470: 28 74 61 67 2e 72 6f 6f 74 2c 20 61 2e 6e 61 6d (tag.root, a.nam
b480: 65 2c 20 61 2e 76 61 6c 75 65 29 3b 20 7d 29 3b e, a.value); });
b490: 0a 20 20 20 20 65 78 70 72 2e 74 61 67 4e 61 6d . expr.tagNam
b4a0: 65 20 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 e = tagName;.
b4b0: 20 74 61 67 2e 6d 6f 75 6e 74 28 29 3b 0a 0a 20 tag.mount();..
b4c0: 20 20 20 2f 2f 20 72 6f 6f 74 20 65 78 69 73 74 // root exist
b4d0: 20 66 69 72 73 74 20 74 69 6d 65 2c 20 61 66 74 first time, aft
b4e0: 65 72 20 75 73 65 20 70 6c 61 63 65 68 6f 6c 64 er use placehold
b4f0: 65 72 0a 20 20 20 20 69 66 20 28 69 73 56 69 72 er. if (isVir
b500: 74 75 61 6c 29 20 7b 20 6d 61 6b 65 52 65 70 6c tual) { makeRepl
b510: 61 63 65 56 69 72 74 75 61 6c 28 74 61 67 2c 20 aceVirtual(tag,
b520: 72 65 66 20 7c 7c 20 74 61 67 2e 72 6f 6f 74 29 ref || tag.root)
b530: 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 70 61 72 65 ; }.. // pare
b540: 6e 74 20 69 73 20 74 68 65 20 70 6c 61 63 65 68 nt is the placeh
b550: 6f 6c 64 65 72 20 74 61 67 2c 20 6e 6f 74 20 74 older tag, not t
b560: 68 65 20 64 79 6e 61 6d 69 63 20 74 61 67 20 73 he dynamic tag s
b570: 6f 20 63 6c 65 61 6e 20 75 70 0a 20 20 20 20 70 o clean up. p
b580: 61 72 65 6e 74 2e 5f 5f 2e 6f 6e 55 6e 6d 6f 75 arent.__.onUnmou
b590: 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 nt = function ()
b5a0: 20 7b 0a 20 20 20 20 20 20 76 61 72 20 64 65 6c {. var del
b5b0: 4e 61 6d 65 20 3d 20 74 61 67 2e 6f 70 74 73 2e Name = tag.opts.
b5c0: 64 61 74 61 49 73 3b 0a 20 20 20 20 20 20 61 72 dataIs;. ar
b5d0: 72 61 79 69 73 68 52 65 6d 6f 76 65 28 74 61 67 rayishRemove(tag
b5e0: 2e 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 64 65 .parent.tags, de
b5f0: 6c 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20 lName, tag);.
b600: 20 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 arrayishRemov
b610: 65 28 74 61 67 2e 5f 5f 2e 70 61 72 65 6e 74 2e e(tag.__.parent.
b620: 74 61 67 73 2c 20 64 65 6c 4e 61 6d 65 2c 20 74 tags, delName, t
b630: 61 67 29 3b 0a 20 20 20 20 20 20 74 61 67 2e 75 ag);. tag.u
b640: 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 7d 3b nmount();. };
b650: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
b660: 20 4e 6f 6d 61 6c 69 7a 65 20 61 6e 79 20 61 74 Nomalize any at
b670: 74 72 69 62 75 74 65 20 72 65 6d 6f 76 69 6e 67 tribute removing
b680: 20 74 68 65 20 22 72 69 6f 74 2d 22 20 70 72 65 the "riot-" pre
b690: 66 69 78 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 fix. * @param
b6a0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 { String } att
b6b0: 72 4e 61 6d 65 20 2d 20 6f 72 69 67 69 6e 61 6c rName - original
b6c0: 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a attribute name.
b6d0: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
b6e0: 53 74 72 69 6e 67 20 7d 20 76 61 6c 69 64 20 68 String } valid h
b6f0: 74 6d 6c 20 61 74 74 72 69 62 75 74 65 20 6e 61 tml attribute na
b700: 6d 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 me. */. funct
b710: 69 6f 6e 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74 ion normalizeAtt
b720: 72 4e 61 6d 65 28 61 74 74 72 4e 61 6d 65 29 20 rName(attrName)
b730: 7b 0a 20 20 20 20 69 66 20 28 21 61 74 74 72 4e {. if (!attrN
b740: 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 6e 75 ame) { return nu
b750: 6c 6c 20 7d 0a 20 20 20 20 61 74 74 72 4e 61 6d ll }. attrNam
b760: 65 20 3d 20 61 74 74 72 4e 61 6d 65 2e 72 65 70 e = attrName.rep
b770: 6c 61 63 65 28 41 54 54 52 53 5f 50 52 45 46 49 lace(ATTRS_PREFI
b780: 58 2c 20 27 27 29 3b 0a 20 20 20 20 69 66 20 28 X, '');. if (
b790: 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 41 CASE_SENSITIVE_A
b7a0: 54 54 52 49 42 55 54 45 53 5b 61 74 74 72 4e 61 TTRIBUTES[attrNa
b7b0: 6d 65 5d 29 20 7b 20 61 74 74 72 4e 61 6d 65 20 me]) { attrName
b7c0: 3d 20 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 = CASE_SENSITIVE
b7d0: 5f 41 54 54 52 49 42 55 54 45 53 5b 61 74 74 72 _ATTRIBUTES[attr
b7e0: 4e 61 6d 65 5d 3b 20 7d 0a 20 20 20 20 72 65 74 Name]; }. ret
b7f0: 75 72 6e 20 61 74 74 72 4e 61 6d 65 0a 20 20 7d urn attrName. }
b800: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 .. /**. * Upd
b810: 61 74 65 20 6f 6e 20 73 69 6e 67 6c 65 20 74 61 ate on single ta
b820: 67 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 g expression.
b830: 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a * @this Tag. *
b840: 20 40 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 @param { Object
b850: 20 7d 20 65 78 70 72 20 2d 20 65 78 70 72 65 73 } expr - expres
b860: 73 69 6f 6e 20 6c 6f 67 69 63 0a 20 20 20 2a 20 sion logic. *
b870: 40 72 65 74 75 72 6e 73 20 7b 20 75 6e 64 65 66 @returns { undef
b880: 69 6e 65 64 20 7d 0a 20 20 20 2a 2f 0a 20 20 66 ined }. */. f
b890: 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 65 45 78 unction updateEx
b8a0: 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 20 7b pression(expr) {
b8b0: 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e 72 6f . if (this.ro
b8c0: 6f 74 20 26 26 20 67 65 74 41 74 74 72 69 62 75 ot && getAttribu
b8d0: 74 65 28 74 68 69 73 2e 72 6f 6f 74 2c 27 76 69 te(this.root,'vi
b8e0: 72 74 75 61 6c 69 7a 65 64 27 29 29 20 7b 20 72 rtualized')) { r
b8f0: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 76 61 72 eturn }.. var
b900: 20 64 6f 6d 20 3d 20 65 78 70 72 2e 64 6f 6d 3b dom = expr.dom;
b910: 0a 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 . // remove t
b920: 68 65 20 72 69 6f 74 2d 20 70 72 65 66 69 78 0a he riot- prefix.
b930: 20 20 20 20 76 61 72 20 61 74 74 72 4e 61 6d 65 var attrName
b940: 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 41 74 74 72 = normalizeAttr
b950: 4e 61 6d 65 28 65 78 70 72 2e 61 74 74 72 29 3b Name(expr.attr);
b960: 0a 20 20 20 20 76 61 72 20 69 73 54 6f 67 67 6c . var isToggl
b970: 65 20 3d 20 63 6f 6e 74 61 69 6e 73 28 5b 53 48 e = contains([SH
b980: 4f 57 5f 44 49 52 45 43 54 49 56 45 2c 20 48 49 OW_DIRECTIVE, HI
b990: 44 45 5f 44 49 52 45 43 54 49 56 45 5d 2c 20 61 DE_DIRECTIVE], a
b9a0: 74 74 72 4e 61 6d 65 29 3b 0a 20 20 20 20 76 61 ttrName);. va
b9b0: 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 65 78 r isVirtual = ex
b9c0: 70 72 2e 72 6f 6f 74 20 26 26 20 65 78 70 72 2e pr.root && expr.
b9d0: 72 6f 6f 74 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d root.tagName ===
b9e0: 20 27 56 49 52 54 55 41 4c 27 3b 0a 20 20 20 20 'VIRTUAL';.
b9f0: 76 61 72 20 72 65 66 20 3d 20 74 68 69 73 2e 5f var ref = this._
ba00: 5f 3b 0a 20 20 20 20 76 61 72 20 69 73 41 6e 6f _;. var isAno
ba10: 6e 79 6d 6f 75 73 20 3d 20 72 65 66 2e 69 73 41 nymous = ref.isA
ba20: 6e 6f 6e 79 6d 6f 75 73 3b 0a 20 20 20 20 76 61 nonymous;. va
ba30: 72 20 70 61 72 65 6e 74 20 3d 20 64 6f 6d 20 26 r parent = dom &
ba40: 26 20 28 65 78 70 72 2e 70 61 72 65 6e 74 20 7c & (expr.parent |
ba50: 7c 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 | dom.parentNode
ba60: 29 3b 0a 20 20 20 20 76 61 72 20 6b 65 65 70 56 );. var keepV
ba70: 61 6c 75 65 41 74 74 72 69 62 75 74 65 73 20 3d alueAttributes =
ba80: 20 73 65 74 74 69 6e 67 73 2e 6b 65 65 70 56 61 settings.keepVa
ba90: 6c 75 65 41 74 74 72 69 62 75 74 65 73 3b 0a 20 lueAttributes;.
baa0: 20 20 20 2f 2f 20 64 65 74 65 63 74 20 74 68 65 // detect the
bab0: 20 73 74 79 6c 65 20 61 74 74 72 69 62 75 74 65 style attribute
bac0: 73 0a 20 20 20 20 76 61 72 20 69 73 53 74 79 6c s. var isStyl
bad0: 65 41 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65 eAttr = attrName
bae0: 20 3d 3d 3d 20 27 73 74 79 6c 65 27 3b 0a 20 20 === 'style';.
baf0: 20 20 76 61 72 20 69 73 43 6c 61 73 73 41 74 74 var isClassAtt
bb00: 72 20 3d 20 61 74 74 72 4e 61 6d 65 20 3d 3d 3d r = attrName ===
bb10: 20 27 63 6c 61 73 73 27 3b 0a 20 20 20 20 76 61 'class';. va
bb20: 72 20 69 73 56 61 6c 75 65 41 74 74 72 20 3d 20 r isValueAttr =
bb30: 61 74 74 72 4e 61 6d 65 20 3d 3d 3d 20 27 76 61 attrName === 'va
bb40: 6c 75 65 27 3b 0a 0a 20 20 20 20 76 61 72 20 76 lue';.. var v
bb50: 61 6c 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 alue;.. // if
bb60: 20 69 74 27 73 20 61 20 74 61 67 20 77 65 20 63 it's a tag we c
bb70: 6f 75 6c 64 20 74 6f 74 61 6c 6c 79 20 73 6b 69 ould totally ski
bb80: 70 20 74 68 65 20 72 65 73 74 0a 20 20 20 20 69 p the rest. i
bb90: 66 20 28 65 78 70 72 2e 5f 72 69 6f 74 5f 69 64 f (expr._riot_id
bba0: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 65 78 ) {. if (ex
bbb0: 70 72 2e 5f 5f 2e 77 61 73 43 72 65 61 74 65 64 pr.__.wasCreated
bbc0: 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 72 ) {. expr
bbd0: 2e 75 70 64 61 74 65 28 29 3b 0a 20 20 20 20 20 .update();.
bbe0: 20 2f 2f 20 69 66 20 69 74 20 68 61 73 6e 27 74 // if it hasn't
bbf0: 20 62 65 65 6e 20 6d 6f 75 6e 74 65 64 20 79 65 been mounted ye
bc00: 74 2c 20 64 6f 20 74 68 61 74 20 6e 6f 77 2e 0a t, do that now..
bc10: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 } else {.
bc20: 20 20 20 20 20 20 20 65 78 70 72 2e 6d 6f 75 6e expr.moun
bc30: 74 28 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 t();. if
bc40: 28 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 (isVirtual) {.
bc50: 20 20 20 20 20 20 20 20 6d 61 6b 65 52 65 70 6c makeRepl
bc60: 61 63 65 56 69 72 74 75 61 6c 28 65 78 70 72 2c aceVirtual(expr,
bc70: 20 65 78 70 72 2e 72 6f 6f 74 29 3b 0a 20 20 20 expr.root);.
bc80: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 }. }.
bc90: 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 return.
bca0: 7d 0a 0a 20 20 20 20 2f 2f 20 69 66 20 74 68 69 }.. // if thi
bcb0: 73 20 65 78 70 72 65 73 73 69 6f 6e 20 68 61 73 s expression has
bcc0: 20 74 68 65 20 75 70 64 61 74 65 20 6d 65 74 68 the update meth
bcd0: 6f 64 20 69 74 20 6d 65 61 6e 73 20 69 74 20 63 od it means it c
bce0: 61 6e 20 68 61 6e 64 6c 65 20 74 68 65 20 44 4f an handle the DO
bcf0: 4d 20 63 68 61 6e 67 65 73 20 62 79 20 69 74 73 M changes by its
bd00: 65 6c 66 0a 20 20 20 20 69 66 20 28 65 78 70 72 elf. if (expr
bd10: 2e 75 70 64 61 74 65 29 20 7b 20 72 65 74 75 72 .update) { retur
bd20: 6e 20 65 78 70 72 2e 75 70 64 61 74 65 28 29 20 n expr.update()
bd30: 7d 0a 0a 20 20 20 20 76 61 72 20 63 6f 6e 74 65 }.. var conte
bd40: 78 74 20 3d 20 69 73 54 6f 67 67 6c 65 20 26 26 xt = isToggle &&
bd50: 20 21 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3f 20 !isAnonymous ?
bd60: 69 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72 6f inheritParentPro
bd70: 70 73 2e 63 61 6c 6c 28 74 68 69 73 29 20 3a 20 ps.call(this) :
bd80: 74 68 69 73 3b 0a 0a 20 20 20 20 2f 2f 20 2e 2e this;.. // ..
bd90: 2e 69 74 20 73 65 65 6d 73 20 74 6f 20 62 65 20 .it seems to be
bda0: 61 20 73 69 6d 70 6c 65 20 65 78 70 72 65 73 73 a simple express
bdb0: 69 6f 6e 20 73 6f 20 77 65 20 74 72 79 20 74 6f ion so we try to
bdc0: 20 63 61 6c 63 75 6c 61 74 65 20 69 74 73 20 76 calculate its v
bdd0: 61 6c 75 65 0a 20 20 20 20 76 61 6c 75 65 20 3d alue. value =
bde0: 20 74 6d 70 6c 28 65 78 70 72 2e 65 78 70 72 2c tmpl(expr.expr,
bdf0: 20 63 6f 6e 74 65 78 74 29 3b 0a 0a 20 20 20 20 context);..
be00: 76 61 72 20 68 61 73 56 61 6c 75 65 20 3d 20 21 var hasValue = !
be10: 69 73 42 6c 61 6e 6b 28 76 61 6c 75 65 29 3b 0a isBlank(value);.
be20: 20 20 20 20 76 61 72 20 69 73 4f 62 6a 20 3d 20 var isObj =
be30: 69 73 4f 62 6a 65 63 74 28 76 61 6c 75 65 29 3b isObject(value);
be40: 0a 0a 20 20 20 20 2f 2f 20 63 6f 6e 76 65 72 74 .. // convert
be50: 20 74 68 65 20 73 74 79 6c 65 2f 63 6c 61 73 73 the style/class
be60: 20 6f 62 6a 65 63 74 73 20 74 6f 20 73 74 72 69 objects to stri
be70: 6e 67 73 0a 20 20 20 20 69 66 20 28 69 73 4f 62 ngs. if (isOb
be80: 6a 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 69 j) {. if (i
be90: 73 43 6c 61 73 73 41 74 74 72 29 20 7b 0a 20 20 sClassAttr) {.
bea0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 6d value = tm
beb0: 70 6c 28 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 pl(JSON.stringif
bec0: 79 28 76 61 6c 75 65 29 2c 20 74 68 69 73 29 3b y(value), this);
bed0: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 . } else if
bee0: 20 28 69 73 53 74 79 6c 65 41 74 74 72 29 20 7b (isStyleAttr) {
bef0: 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d . value =
bf00: 20 73 74 79 6c 65 4f 62 6a 65 63 74 54 6f 53 74 styleObjectToSt
bf10: 72 69 6e 67 28 76 61 6c 75 65 29 3b 0a 20 20 20 ring(value);.
bf20: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 }. }..
bf30: 2f 2f 20 72 65 6d 6f 76 65 20 6f 72 69 67 69 6e // remove origin
bf40: 61 6c 20 61 74 74 72 69 62 75 74 65 0a 20 20 20 al attribute.
bf50: 20 69 66 20 28 65 78 70 72 2e 61 74 74 72 20 26 if (expr.attr &
bf60: 26 0a 20 20 20 20 20 20 20 20 28 0a 20 20 20 20 &. (.
bf70: 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6f 72 69 // the ori
bf80: 67 69 6e 61 6c 20 61 74 74 72 69 62 75 74 65 20 ginal attribute
bf90: 63 61 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 6f can be removed o
bfa0: 6e 6c 79 20 69 66 20 77 65 20 61 72 65 20 70 61 nly if we are pa
bfb0: 72 73 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e rsing the origin
bfc0: 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 al expression.
bfd0: 20 20 20 20 20 20 20 20 21 65 78 70 72 2e 77 61 !expr.wa
bfe0: 73 50 61 72 73 65 64 4f 6e 63 65 20 7c 7c 0a 20 sParsedOnce ||.
bff0: 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69 // or i
c000: 74 73 20 76 61 6c 75 65 20 69 73 20 66 61 6c 73 ts value is fals
c010: 65 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 e. valu
c020: 65 20 3d 3d 3d 20 66 61 6c 73 65 20 7c 7c 0a 20 e === false ||.
c030: 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 20 69 // or i
c040: 66 20 69 74 73 20 76 61 6c 75 65 20 69 73 20 63 f its value is c
c050: 75 72 72 65 6e 74 6c 79 20 66 61 6c 73 79 2e 2e urrently falsy..
c060: 2e 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 .. // W
c070: 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 e will keep the
c080: 22 76 61 6c 75 65 22 20 61 74 74 72 69 62 75 74 "value" attribut
c090: 65 73 20 69 66 20 74 68 65 20 22 6b 65 65 70 56 es if the "keepV
c0a0: 61 6c 75 65 41 74 74 72 69 62 75 74 65 73 22 0a alueAttributes".
c0b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 // is
c0c0: 65 6e 61 62 6c 65 64 20 74 68 6f 75 67 68 0a 20 enabled though.
c0d0: 20 20 20 20 20 20 20 20 20 28 21 68 61 73 56 61 (!hasVa
c0e0: 6c 75 65 20 26 26 20 28 21 69 73 56 61 6c 75 65 lue && (!isValue
c0f0: 41 74 74 72 20 7c 7c 20 69 73 56 61 6c 75 65 41 Attr || isValueA
c100: 74 74 72 20 26 26 20 21 6b 65 65 70 56 61 6c 75 ttr && !keepValu
c110: 65 41 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 eAttributes)).
c120: 20 20 20 20 20 20 29 0a 20 20 20 20 29 20 7b 0a ). ) {.
c130: 20 20 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 // remove
c140: 65 69 74 68 65 72 20 72 69 6f 74 2d 2a 20 61 74 either riot-* at
c150: 74 72 69 62 75 74 65 73 20 6f 72 20 6a 75 73 74 tributes or just
c160: 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e the attribute n
c170: 61 6d 65 0a 20 20 20 20 20 20 72 65 6d 6f 76 65 ame. remove
c180: 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 67 Attribute(dom, g
c190: 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c etAttribute(dom,
c1a0: 20 65 78 70 72 2e 61 74 74 72 29 20 3f 20 65 78 expr.attr) ? ex
c1b0: 70 72 2e 61 74 74 72 20 3a 20 61 74 74 72 4e 61 pr.attr : attrNa
c1c0: 6d 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 me);. }..
c1d0: 2f 2f 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 65 // for the boole
c1e0: 61 6e 20 61 74 74 72 69 62 75 74 65 73 20 77 65 an attributes we
c1f0: 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 68 65 20 don't need the
c200: 76 61 6c 75 65 0a 20 20 20 20 2f 2f 20 77 65 20 value. // we
c210: 63 61 6e 20 63 6f 6e 76 65 72 74 20 69 74 20 74 can convert it t
c220: 6f 20 63 68 65 63 6b 65 64 3d 74 72 75 65 20 74 o checked=true t
c230: 6f 20 63 68 65 63 6b 65 64 3d 63 68 65 63 6b 65 o checked=checke
c240: 64 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e 62 d. if (expr.b
c250: 6f 6f 6c 29 20 7b 20 76 61 6c 75 65 20 3d 20 76 ool) { value = v
c260: 61 6c 75 65 20 3f 20 61 74 74 72 4e 61 6d 65 20 alue ? attrName
c270: 3a 20 66 61 6c 73 65 3b 20 7d 0a 20 20 20 20 69 : false; }. i
c280: 66 20 28 65 78 70 72 2e 69 73 52 74 61 67 29 20 f (expr.isRtag)
c290: 7b 20 72 65 74 75 72 6e 20 75 70 64 61 74 65 44 { return updateD
c2a0: 61 74 61 49 73 28 65 78 70 72 2c 20 74 68 69 73 ataIs(expr, this
c2b0: 2c 20 76 61 6c 75 65 29 20 7d 0a 20 20 20 20 69 , value) }. i
c2c0: 66 20 28 65 78 70 72 2e 77 61 73 50 61 72 73 65 f (expr.wasParse
c2d0: 64 4f 6e 63 65 20 26 26 20 65 78 70 72 2e 76 61 dOnce && expr.va
c2e0: 6c 75 65 20 3d 3d 3d 20 76 61 6c 75 65 29 20 7b lue === value) {
c2f0: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 2f return }.. /
c300: 2f 20 75 70 64 61 74 65 20 74 68 65 20 65 78 70 / update the exp
c310: 72 65 73 73 69 6f 6e 20 76 61 6c 75 65 0a 20 20 ression value.
c320: 20 20 65 78 70 72 2e 76 61 6c 75 65 20 3d 20 76 expr.value = v
c330: 61 6c 75 65 3b 0a 20 20 20 20 65 78 70 72 2e 77 alue;. expr.w
c340: 61 73 50 61 72 73 65 64 4f 6e 63 65 20 3d 20 74 asParsedOnce = t
c350: 72 75 65 3b 0a 0a 20 20 20 20 2f 2f 20 69 66 20 rue;.. // if
c360: 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 6e 20 the value is an
c370: 6f 62 6a 65 63 74 20 28 61 6e 64 20 69 74 27 73 object (and it's
c380: 20 6e 6f 74 20 61 20 73 74 79 6c 65 20 6f 72 20 not a style or
c390: 63 6c 61 73 73 20 61 74 74 72 69 62 75 74 65 29 class attribute)
c3a0: 20 77 65 20 63 61 6e 20 6e 6f 74 20 64 6f 20 6d we can not do m
c3b0: 75 63 68 20 6d 6f 72 65 20 77 69 74 68 20 69 74 uch more with it
c3c0: 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 20 26 . if (isObj &
c3d0: 26 20 21 69 73 43 6c 61 73 73 41 74 74 72 20 26 & !isClassAttr &
c3e0: 26 20 21 69 73 53 74 79 6c 65 41 74 74 72 20 26 & !isStyleAttr &
c3f0: 26 20 21 69 73 54 6f 67 67 6c 65 29 20 7b 20 72 & !isToggle) { r
c400: 65 74 75 72 6e 20 7d 0a 20 20 20 20 2f 2f 20 61 eturn }. // a
c410: 76 6f 69 64 20 74 6f 20 72 65 6e 64 65 72 20 75 void to render u
c420: 6e 64 65 66 69 6e 65 64 2f 6e 75 6c 6c 20 76 61 ndefined/null va
c430: 6c 75 65 73 0a 20 20 20 20 69 66 20 28 21 68 61 lues. if (!ha
c440: 73 56 61 6c 75 65 29 20 7b 20 76 61 6c 75 65 20 sValue) { value
c450: 3d 20 27 27 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 = ''; }.. //
c460: 74 65 78 74 61 72 65 61 20 61 6e 64 20 74 65 78 textarea and tex
c470: 74 20 6e 6f 64 65 73 20 68 61 76 65 20 6e 6f 20 t nodes have no
c480: 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 0a 20 attribute name.
c490: 20 20 20 69 66 20 28 21 61 74 74 72 4e 61 6d 65 if (!attrName
c4a0: 29 20 7b 0a 20 20 20 20 20 20 2f 2f 20 61 62 6f ) {. // abo
c4b0: 75 74 20 23 38 31 35 20 77 2f 6f 20 72 65 70 6c ut #815 w/o repl
c4c0: 61 63 65 3a 20 74 68 65 20 62 72 6f 77 73 65 72 ace: the browser
c4d0: 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20 76 61 converts the va
c4e0: 6c 75 65 20 74 6f 20 61 20 73 74 72 69 6e 67 2c lue to a string,
c4f0: 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 20 63 6f . // the co
c500: 6d 70 61 72 69 73 6f 6e 20 62 79 20 22 3d 3d 22 mparison by "=="
c510: 20 64 6f 65 73 20 74 6f 6f 2c 20 62 75 74 20 6e does too, but n
c520: 6f 74 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 ot in the server
c530: 0a 20 20 20 20 20 20 76 61 6c 75 65 20 2b 3d 20 . value +=
c540: 27 27 3b 0a 20 20 20 20 20 20 2f 2f 20 74 65 73 '';. // tes
c550: 74 20 66 6f 72 20 70 61 72 65 6e 74 20 61 76 6f t for parent avo
c560: 69 64 73 20 65 72 72 6f 72 20 77 69 74 68 20 69 ids error with i
c570: 6e 76 61 6c 69 64 20 61 73 73 69 67 6e 6d 65 6e nvalid assignmen
c580: 74 20 74 6f 20 6e 6f 64 65 56 61 6c 75 65 0a 20 t to nodeValue.
c590: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 29 if (parent)
c5a0: 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61 {. // ca
c5b0: 63 68 65 20 74 68 65 20 70 61 72 65 6e 74 20 6e che the parent n
c5c0: 6f 64 65 20 62 65 63 61 75 73 65 20 73 6f 6d 65 ode because some
c5d0: 68 6f 77 20 69 74 20 77 69 6c 6c 20 62 65 63 6f how it will beco
c5e0: 6d 65 20 6e 75 6c 6c 20 6f 6e 20 49 45 0a 20 20 me null on IE.
c5f0: 20 20 20 20 20 20 2f 2f 20 6f 6e 20 74 68 65 20 // on the
c600: 6e 65 78 74 20 69 74 65 72 61 74 69 6f 6e 0a 20 next iteration.
c610: 20 20 20 20 20 20 20 65 78 70 72 2e 70 61 72 65 expr.pare
c620: 6e 74 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 nt = parent;.
c630: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e if (parent.
c640: 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 54 45 58 tagName === 'TEX
c650: 54 41 52 45 41 27 29 20 7b 0a 20 20 20 20 20 20 TAREA') {.
c660: 20 20 20 20 70 61 72 65 6e 74 2e 76 61 6c 75 65 parent.value
c670: 20 3d 20 76 61 6c 75 65 3b 20 20 20 20 20 20 20 = value;
c680: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 //
c690: 23 31 31 31 33 0a 20 20 20 20 20 20 20 20 20 20 #1113.
c6a0: 69 66 20 28 21 49 45 5f 56 45 52 53 49 4f 4e 29 if (!IE_VERSION)
c6b0: 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 { dom.nodeValue
c6c0: 20 3d 20 76 61 6c 75 65 3b 20 7d 20 20 2f 2f 20 = value; } //
c6d0: 23 31 36 32 35 20 49 45 20 74 68 72 6f 77 73 20 #1625 IE throws
c6e0: 68 65 72 65 2c 20 6e 6f 64 65 56 61 6c 75 65 0a here, nodeValue.
c6f0: 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20 }
c700: 20 20 20 20 20 20 20 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 2f 2f 20 77 69 6c 6c 20 62 65 20 61 76 61 // will be ava
c730: 69 6c 61 62 6c 65 20 6f 6e 20 27 75 70 64 61 74 ilable on 'updat
c740: 65 64 27 0a 20 20 20 20 20 20 20 20 65 6c 73 65 ed'. else
c750: 20 7b 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 { dom.nodeValue
c760: 20 3d 20 76 61 6c 75 65 3b 20 7d 0a 20 20 20 20 = value; }.
c770: 20 20 7d 0a 20 20 20 20 20 20 72 65 74 75 72 6e }. return
c780: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 . }.. swit
c790: 63 68 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 ch (true) {.
c7a0: 2f 2f 20 68 61 6e 64 6c 65 20 65 76 65 6e 74 73 // handle events
c7b0: 20 62 69 6e 64 69 6e 67 0a 20 20 20 20 63 61 73 binding. cas
c7c0: 65 20 69 73 46 75 6e 63 74 69 6f 6e 28 76 61 6c e isFunction(val
c7d0: 75 65 29 3a 0a 20 20 20 20 20 20 69 66 20 28 69 ue):. if (i
c7e0: 73 45 76 65 6e 74 41 74 74 72 69 62 75 74 65 28 sEventAttribute(
c7f0: 61 74 74 72 4e 61 6d 65 29 29 20 7b 0a 20 20 20 attrName)) {.
c800: 20 20 20 20 20 73 65 74 45 76 65 6e 74 48 61 6e setEventHan
c810: 64 6c 65 72 28 61 74 74 72 4e 61 6d 65 2c 20 76 dler(attrName, v
c820: 61 6c 75 65 2c 20 64 6f 6d 2c 20 74 68 69 73 29 alue, dom, this)
c830: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 ;. }.
c840: 62 72 65 61 6b 0a 20 20 20 20 2f 2f 20 73 68 6f break. // sho
c850: 77 20 2f 20 68 69 64 65 0a 20 20 20 20 63 61 73 w / hide. cas
c860: 65 20 69 73 54 6f 67 67 6c 65 3a 0a 20 20 20 20 e isToggle:.
c870: 20 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69 toggleVisibili
c880: 74 79 28 64 6f 6d 2c 20 61 74 74 72 4e 61 6d 65 ty(dom, attrName
c890: 20 3d 3d 3d 20 48 49 44 45 5f 44 49 52 45 43 54 === HIDE_DIRECT
c8a0: 49 56 45 20 3f 20 21 76 61 6c 75 65 20 3a 20 76 IVE ? !value : v
c8b0: 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 62 72 65 alue);. bre
c8c0: 61 6b 0a 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 ak. // handle
c8d0: 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20 attributes.
c8e0: 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 69 default:. i
c8f0: 66 20 28 65 78 70 72 2e 62 6f 6f 6c 29 20 7b 0a f (expr.bool) {.
c900: 20 20 20 20 20 20 20 20 64 6f 6d 5b 61 74 74 72 dom[attr
c910: 4e 61 6d 65 5d 20 3d 20 76 61 6c 75 65 3b 0a 20 Name] = value;.
c920: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 }.. if
c930: 20 28 69 73 56 61 6c 75 65 41 74 74 72 20 26 26 (isValueAttr &&
c940: 20 64 6f 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 76 dom.value !== v
c950: 61 6c 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 alue) {.
c960: 64 6f 6d 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 dom.value = valu
c970: 65 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 e;. } else
c980: 69 66 20 28 68 61 73 56 61 6c 75 65 20 26 26 20 if (hasValue &&
c990: 76 61 6c 75 65 20 21 3d 3d 20 66 61 6c 73 65 29 value !== false)
c9a0: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 41 74 {. setAt
c9b0: 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 61 74 74 tribute(dom, att
c9c0: 72 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0a 20 rName, value);.
c9d0: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f }.. //
c9e0: 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 make sure that
c9f0: 69 6e 20 63 61 73 65 20 6f 66 20 73 74 79 6c 65 in case of style
ca00: 20 63 68 61 6e 67 65 73 0a 20 20 20 20 20 20 2f changes. /
ca10: 2f 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 73 74 / the element st
ca20: 61 79 73 20 68 69 64 64 65 6e 0a 20 20 20 20 20 ays hidden.
ca30: 20 69 66 20 28 69 73 53 74 79 6c 65 41 74 74 72 if (isStyleAttr
ca40: 20 26 26 20 64 6f 6d 2e 68 69 64 64 65 6e 29 20 && dom.hidden)
ca50: 7b 20 74 6f 67 67 6c 65 56 69 73 69 62 69 6c 69 { toggleVisibili
ca60: 74 79 28 64 6f 6d 2c 20 66 61 6c 73 65 29 3b 20 ty(dom, false);
ca70: 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f }. }. }.. /
ca80: 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20 61 **. * Update a
ca90: 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f ll the expressio
caa0: 6e 73 20 69 6e 20 61 20 54 61 67 20 69 6e 73 74 ns in a Tag inst
cab0: 61 6e 63 65 0a 20 20 20 2a 20 40 74 68 69 73 20 ance. * @this
cac0: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 Tag. * @param
cad0: 7b 20 41 72 72 61 79 20 7d 20 65 78 70 72 65 73 { Array } expres
cae0: 73 69 6f 6e 73 20 2d 20 65 78 70 72 65 73 73 69 sions - expressi
caf0: 6f 6e 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 on that must be
cb00: 72 65 20 65 76 61 6c 75 61 74 65 64 0a 20 20 20 re evaluated.
cb10: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 */. function up
cb20: 64 61 74 65 28 65 78 70 72 65 73 73 69 6f 6e 73 date(expressions
cb30: 29 20 7b 0a 20 20 20 20 65 61 63 68 28 65 78 70 ) {. each(exp
cb40: 72 65 73 73 69 6f 6e 73 2c 20 75 70 64 61 74 65 ressions, update
cb50: 45 78 70 72 65 73 73 69 6f 6e 2e 62 69 6e 64 28 Expression.bind(
cb60: 74 68 69 73 29 29 3b 0a 20 20 7d 0a 0a 20 20 2f this));. }.. /
cb70: 2a 2a 0a 20 20 20 2a 20 57 65 20 6e 65 65 64 20 **. * We need
cb80: 74 6f 20 75 70 64 61 74 65 20 6f 70 74 73 20 66 to update opts f
cb90: 6f 72 20 74 68 69 73 20 74 61 67 2e 20 54 68 61 or this tag. Tha
cba0: 74 20 72 65 71 75 69 72 65 73 20 75 70 64 61 74 t requires updat
cbb0: 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73 69 ing the expressi
cbc0: 6f 6e 73 0a 20 20 20 2a 20 69 6e 20 61 6e 79 20 ons. * in any
cbd0: 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74 68 attributes on th
cbe0: 65 20 74 61 67 2c 20 61 6e 64 20 74 68 65 6e 20 e tag, and then
cbf0: 63 6f 70 79 69 6e 67 20 74 68 65 20 72 65 73 75 copying the resu
cc00: 6c 74 20 6f 6e 74 6f 20 6f 70 74 73 2e 0a 20 20 lt onto opts..
cc10: 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 * @this Tag.
cc20: 2a 20 40 70 61 72 61 6d 20 20 20 7b 42 6f 6f 6c * @param {Bool
cc30: 65 61 6e 7d 20 69 73 4c 6f 6f 70 20 2d 20 69 73 ean} isLoop - is
cc40: 20 69 74 20 61 20 6c 6f 6f 70 20 74 61 67 3f 0a it a loop tag?.
cc50: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
cc60: 54 61 67 20 7d 20 20 70 61 72 65 6e 74 20 2d 20 Tag } parent -
cc70: 70 61 72 65 6e 74 20 74 61 67 20 6e 6f 64 65 0a parent tag node.
cc80: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
cc90: 42 6f 6f 6c 65 61 6e 20 7d 20 20 69 73 41 6e 6f Boolean } isAno
cca0: 6e 79 6d 6f 75 73 20 2d 20 69 73 20 69 74 20 61 nymous - is it a
ccb0: 20 74 61 67 20 77 69 74 68 6f 75 74 20 61 6e 79 tag without any
ccc0: 20 69 6d 70 6c 3f 20 28 61 20 74 61 67 20 6e 6f impl? (a tag no
ccd0: 74 20 72 65 67 69 73 74 65 72 65 64 29 0a 20 20 t registered).
cce0: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
ccf0: 6a 65 63 74 20 7d 20 20 6f 70 74 73 20 2d 20 74 ject } opts - t
cd00: 61 67 20 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 ag options. *
cd10: 40 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 @param { Array
cd20: 20 7d 20 20 69 6e 73 74 41 74 74 72 73 20 2d 20 } instAttrs -
cd30: 74 61 67 20 61 74 74 72 69 62 75 74 65 73 20 61 tag attributes a
cd40: 72 72 61 79 0a 20 20 20 2a 2f 0a 20 20 66 75 6e rray. */. fun
cd50: 63 74 69 6f 6e 20 75 70 64 61 74 65 4f 70 74 73 ction updateOpts
cd60: 28 69 73 4c 6f 6f 70 2c 20 70 61 72 65 6e 74 2c (isLoop, parent,
cd70: 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70 isAnonymous, op
cd80: 74 73 2c 20 69 6e 73 74 41 74 74 72 73 29 20 7b ts, instAttrs) {
cd90: 0a 20 20 20 20 2f 2f 20 69 73 41 6e 6f 6e 79 6d . // isAnonym
cda0: 6f 75 73 20 60 65 61 63 68 60 20 74 61 67 73 20 ous `each` tags
cdb0: 74 72 65 61 74 20 60 64 6f 6d 60 20 61 6e 64 20 treat `dom` and
cdc0: 60 72 6f 6f 74 60 20 64 69 66 66 65 72 65 6e 74 `root` different
cdd0: 6c 79 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 ly. In this case
cde0: 0a 20 20 20 20 2f 2f 20 28 61 6e 64 20 6f 6e 6c . // (and onl
cdf0: 79 20 74 68 69 73 20 63 61 73 65 29 20 77 65 20 y this case) we
ce00: 64 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f don't need to do
ce10: 20 75 70 64 61 74 65 4f 70 74 73 2c 20 62 65 63 updateOpts, bec
ce20: 61 75 73 65 20 74 68 65 20 72 65 67 75 6c 61 72 ause the regular
ce30: 20 70 61 72 73 65 0a 20 20 20 20 2f 2f 20 77 69 parse. // wi
ce40: 6c 6c 20 75 70 64 61 74 65 20 74 68 6f 73 65 20 ll update those
ce50: 61 74 74 72 73 2e 20 50 6c 75 73 2c 20 69 73 41 attrs. Plus, isA
ce60: 6e 6f 6e 79 6d 6f 75 73 20 74 61 67 73 20 64 6f nonymous tags do
ce70: 6e 27 74 20 6e 65 65 64 20 6f 70 74 73 20 61 6e n't need opts an
ce80: 79 77 61 79 0a 20 20 20 20 69 66 20 28 69 73 4c yway. if (isL
ce90: 6f 6f 70 20 26 26 20 69 73 41 6e 6f 6e 79 6d 6f oop && isAnonymo
cea0: 75 73 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 us) { return }.
ceb0: 20 20 20 76 61 72 20 63 74 78 20 3d 20 69 73 4c var ctx = isL
cec0: 6f 6f 70 20 3f 20 69 6e 68 65 72 69 74 50 61 72 oop ? inheritPar
ced0: 65 6e 74 50 72 6f 70 73 2e 63 61 6c 6c 28 74 68 entProps.call(th
cee0: 69 73 29 20 3a 20 70 61 72 65 6e 74 20 7c 7c 20 is) : parent ||
cef0: 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 68 28 this;.. each(
cf00: 69 6e 73 74 41 74 74 72 73 2c 20 66 75 6e 63 74 instAttrs, funct
cf10: 69 6f 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20 ion (attr) {.
cf20: 20 20 20 69 66 20 28 61 74 74 72 2e 65 78 70 72 if (attr.expr
cf30: 29 20 7b 20 75 70 64 61 74 65 45 78 70 72 65 73 ) { updateExpres
cf40: 73 69 6f 6e 2e 63 61 6c 6c 28 63 74 78 2c 20 61 sion.call(ctx, a
cf50: 74 74 72 2e 65 78 70 72 29 3b 20 7d 0a 20 20 20 ttr.expr); }.
cf60: 20 20 20 2f 2f 20 6e 6f 72 6d 61 6c 69 7a 65 20 // normalize
cf70: 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6e 61 the attribute na
cf80: 6d 65 73 0a 20 20 20 20 20 20 6f 70 74 73 5b 74 mes. opts[t
cf90: 6f 43 61 6d 65 6c 28 61 74 74 72 2e 6e 61 6d 65 oCamel(attr.name
cfa0: 29 2e 72 65 70 6c 61 63 65 28 41 54 54 52 53 5f ).replace(ATTRS_
cfb0: 50 52 45 46 49 58 2c 20 27 27 29 5d 20 3d 20 61 PREFIX, '')] = a
cfc0: 74 74 72 2e 65 78 70 72 20 3f 20 61 74 74 72 2e ttr.expr ? attr.
cfd0: 65 78 70 72 2e 76 61 6c 75 65 20 3a 20 61 74 74 expr.value : att
cfe0: 72 2e 76 61 6c 75 65 3b 0a 20 20 20 20 7d 29 3b r.value;. });
cff0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
d000: 20 55 70 64 61 74 65 20 74 68 65 20 74 61 67 20 Update the tag
d010: 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 expressions and
d020: 6f 70 74 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 options. * @pa
d030: 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 67 20 ram { Tag } tag
d040: 2d 20 74 61 67 20 6f 62 6a 65 63 74 0a 20 20 20 - tag object.
d050: 2a 20 40 70 61 72 61 6d 20 7b 20 2a 20 7d 20 64 * @param { * } d
d060: 61 74 61 20 2d 20 64 61 74 61 20 77 65 20 77 61 ata - data we wa
d070: 6e 74 20 74 6f 20 75 73 65 20 74 6f 20 65 78 74 nt to use to ext
d080: 65 6e 64 20 74 68 65 20 74 61 67 20 70 72 6f 70 end the tag prop
d090: 65 72 74 69 65 73 0a 20 20 20 2a 20 40 70 61 72 erties. * @par
d0a0: 61 6d 20 7b 20 41 72 72 61 79 20 7d 20 65 78 70 am { Array } exp
d0b0: 72 65 73 73 69 6f 6e 73 20 2d 20 63 6f 6d 70 6f ressions - compo
d0c0: 6e 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 73 nent expressions
d0d0: 20 61 72 72 61 79 0a 20 20 20 2a 20 40 72 65 74 array. * @ret
d0e0: 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 74 68 65 urns { Tag } the
d0f0: 20 63 75 72 72 65 6e 74 20 74 61 67 20 69 6e 73 current tag ins
d100: 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 tance. */. fu
d110: 6e 63 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 nction component
d120: 55 70 64 61 74 65 28 74 61 67 2c 20 64 61 74 61 Update(tag, data
d130: 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 29 20 7b , expressions) {
d140: 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d 20 74 61 . var __ = ta
d150: 67 2e 5f 5f 3b 0a 20 20 20 20 76 61 72 20 6e 65 g.__;. var ne
d160: 78 74 4f 70 74 73 20 3d 20 7b 7d 3b 0a 20 20 20 xtOpts = {};.
d170: 20 76 61 72 20 63 61 6e 54 72 69 67 67 65 72 20 var canTrigger
d180: 3d 20 74 61 67 2e 69 73 4d 6f 75 6e 74 65 64 20 = tag.isMounted
d190: 26 26 20 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 && !__.skipAnony
d1a0: 6d 6f 75 73 3b 0a 0a 20 20 20 20 2f 2f 20 69 6e mous;.. // in
d1b0: 68 65 72 69 74 20 70 72 6f 70 65 72 74 69 65 73 herit properties
d1c0: 20 66 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74 from the parent
d1d0: 20 74 61 67 0a 20 20 20 20 69 66 20 28 5f 5f 2e tag. if (__.
d1e0: 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 5f isAnonymous && _
d1f0: 5f 2e 70 61 72 65 6e 74 29 20 7b 20 65 78 74 65 _.parent) { exte
d200: 6e 64 28 74 61 67 2c 20 5f 5f 2e 70 61 72 65 6e nd(tag, __.paren
d210: 74 29 3b 20 7d 0a 20 20 20 20 65 78 74 65 6e 64 t); }. extend
d220: 28 74 61 67 2c 20 64 61 74 61 29 3b 0a 0a 20 20 (tag, data);..
d230: 20 20 75 70 64 61 74 65 4f 70 74 73 2e 61 70 70 updateOpts.app
d240: 6c 79 28 74 61 67 2c 20 5b 5f 5f 2e 69 73 4c 6f ly(tag, [__.isLo
d250: 6f 70 2c 20 5f 5f 2e 70 61 72 65 6e 74 2c 20 5f op, __.parent, _
d260: 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 20 6e _.isAnonymous, n
d270: 65 78 74 4f 70 74 73 2c 20 5f 5f 2e 69 6e 73 74 extOpts, __.inst
d280: 41 74 74 72 73 5d 29 3b 0a 0a 20 20 20 20 69 66 Attrs]);.. if
d290: 20 28 0a 20 20 20 20 20 20 63 61 6e 54 72 69 67 (. canTrig
d2a0: 67 65 72 20 26 26 0a 20 20 20 20 20 20 74 61 67 ger &&. tag
d2b0: 2e 69 73 4d 6f 75 6e 74 65 64 20 26 26 0a 20 20 .isMounted &&.
d2c0: 20 20 20 20 69 73 46 75 6e 63 74 69 6f 6e 28 74 isFunction(t
d2d0: 61 67 2e 73 68 6f 75 6c 64 55 70 64 61 74 65 29 ag.shouldUpdate)
d2e0: 20 26 26 20 21 74 61 67 2e 73 68 6f 75 6c 64 55 && !tag.shouldU
d2f0: 70 64 61 74 65 28 64 61 74 61 2c 20 6e 65 78 74 pdate(data, next
d300: 4f 70 74 73 29 0a 20 20 20 20 29 20 7b 0a 20 20 Opts). ) {.
d310: 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 return tag.
d320: 20 20 20 7d 0a 0a 20 20 20 20 65 78 74 65 6e 64 }.. extend
d330: 28 74 61 67 2e 6f 70 74 73 2c 20 6e 65 78 74 4f (tag.opts, nextO
d340: 70 74 73 29 3b 0a 0a 20 20 20 20 69 66 20 28 63 pts);.. if (c
d350: 61 6e 54 72 69 67 67 65 72 29 20 7b 20 74 61 67 anTrigger) { tag
d360: 2e 74 72 69 67 67 65 72 28 27 75 70 64 61 74 65 .trigger('update
d370: 27 2c 20 64 61 74 61 29 3b 20 7d 0a 20 20 20 20 ', data); }.
d380: 75 70 64 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c update.call(tag,
d390: 20 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20 expressions);.
d3a0: 20 20 20 69 66 20 28 63 61 6e 54 72 69 67 67 65 if (canTrigge
d3b0: 72 29 20 7b 20 74 61 67 2e 74 72 69 67 67 65 72 r) { tag.trigger
d3c0: 28 27 75 70 64 61 74 65 64 27 29 3b 20 7d 0a 0a ('updated'); }..
d3d0: 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 0a 20 return tag.
d3e0: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 47 }.. /**. * G
d3f0: 65 74 20 73 65 6c 65 63 74 6f 72 73 20 66 6f 72 et selectors for
d400: 20 74 61 67 73 0a 20 20 20 2a 20 40 70 61 72 61 tags. * @para
d410: 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61 m { Array } ta
d420: 67 73 20 2d 20 74 61 67 20 6e 61 6d 65 73 20 74 gs - tag names t
d430: 6f 20 73 65 6c 65 63 74 0a 20 20 20 2a 20 40 72 o select. * @r
d440: 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 eturns { String
d450: 7d 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 2a 2f } selector. */
d460: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 71 75 65 72 . function quer
d470: 79 28 74 61 67 73 29 20 7b 0a 20 20 20 20 2f 2f y(tags) {. //
d480: 20 73 65 6c 65 63 74 20 61 6c 6c 20 74 61 67 73 select all tags
d490: 0a 20 20 20 20 69 66 20 28 21 74 61 67 73 29 20 . if (!tags)
d4a0: 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65 79 73 {. var keys
d4b0: 20 3d 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 5f = Object.keys(_
d4c0: 5f 54 41 47 5f 49 4d 50 4c 29 3b 0a 20 20 20 20 _TAG_IMPL);.
d4d0: 20 20 72 65 74 75 72 6e 20 6b 65 79 73 20 2b 20 return keys +
d4e0: 71 75 65 72 79 28 6b 65 79 73 29 0a 20 20 20 20 query(keys).
d4f0: 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 }.. return ta
d500: 67 73 0a 20 20 20 20 20 20 2e 66 69 6c 74 65 72 gs. .filter
d510: 28 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 20 (function (t) {
d520: 72 65 74 75 72 6e 20 21 2f 5b 5e 2d 5c 77 5d 2f return !/[^-\w]/
d530: 2e 74 65 73 74 28 74 29 3b 20 7d 29 0a 20 20 20 .test(t); }).
d540: 20 20 20 2e 72 65 64 75 63 65 28 66 75 6e 63 74 .reduce(funct
d550: 69 6f 6e 20 28 6c 69 73 74 2c 20 74 29 20 7b 0a ion (list, t) {.
d560: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 var name
d570: 20 3d 20 74 2e 74 72 69 6d 28 29 2e 74 6f 4c 6f = t.trim().toLo
d580: 77 65 72 43 61 73 65 28 29 3b 0a 20 20 20 20 20 werCase();.
d590: 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 20 2b return list +
d5a0: 20 22 2c 5b 22 20 2b 20 49 53 5f 44 49 52 45 43 ",[" + IS_DIREC
d5b0: 54 49 56 45 20 2b 20 22 3d 5c 22 22 20 2b 20 6e TIVE + "=\"" + n
d5c0: 61 6d 65 20 2b 20 22 5c 22 5d 22 0a 20 20 20 20 ame + "\"]".
d5d0: 20 20 7d 2c 20 27 27 29 0a 20 20 7d 0a 0a 20 20 }, ''). }..
d5e0: 2f 2a 2a 0a 20 20 20 2a 20 41 6e 6f 74 68 65 72 /**. * Another
d5f0: 20 77 61 79 20 74 6f 20 63 72 65 61 74 65 20 61 way to create a
d600: 20 72 69 6f 74 20 74 61 67 20 61 20 62 69 74 20 riot tag a bit
d610: 6d 6f 72 65 20 65 73 36 20 66 72 69 65 6e 64 6c more es6 friendl
d620: 79 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 y. * @param {
d630: 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 65 6c HTMLElement } el
d640: 20 2d 20 74 61 67 20 44 4f 4d 20 73 65 6c 65 63 - tag DOM selec
d650: 74 6f 72 20 6f 72 20 44 4f 4d 20 6e 6f 64 65 2f tor or DOM node/
d660: 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 20 s. * @param {
d670: 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d 20 Object } opts -
d680: 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 tag logic. * @
d690: 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d 20 returns { Tag }
d6a0: 6e 65 77 20 72 69 6f 74 20 74 61 67 20 69 6e 73 new riot tag ins
d6b0: 74 61 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 tance. */. fu
d6c0: 6e 63 74 69 6f 6e 20 54 61 67 28 65 6c 2c 20 6f nction Tag(el, o
d6d0: 70 74 73 29 20 7b 0a 20 20 20 20 2f 2f 20 67 65 pts) {. // ge
d6e0: 74 20 74 68 65 20 74 61 67 20 70 72 6f 70 65 72 t the tag proper
d6f0: 74 69 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6c ties from the cl
d700: 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a ass constructor.
d710: 20 20 20 20 76 61 72 20 72 65 66 20 3d 20 74 68 var ref = th
d720: 69 73 3b 0a 20 20 20 20 76 61 72 20 6e 61 6d 65 is;. var name
d730: 20 3d 20 72 65 66 2e 6e 61 6d 65 3b 0a 20 20 20 = ref.name;.
d740: 20 76 61 72 20 74 6d 70 6c 20 3d 20 72 65 66 2e var tmpl = ref.
d750: 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 63 73 tmpl;. var cs
d760: 73 20 3d 20 72 65 66 2e 63 73 73 3b 0a 20 20 20 s = ref.css;.
d770: 20 76 61 72 20 61 74 74 72 73 20 3d 20 72 65 66 var attrs = ref
d780: 2e 61 74 74 72 73 3b 0a 20 20 20 20 76 61 72 20 .attrs;. var
d790: 6f 6e 43 72 65 61 74 65 20 3d 20 72 65 66 2e 6f onCreate = ref.o
d7a0: 6e 43 72 65 61 74 65 3b 0a 20 20 20 20 2f 2f 20 nCreate;. //
d7b0: 72 65 67 69 73 74 65 72 20 61 20 6e 65 77 20 74 register a new t
d7c0: 61 67 20 61 6e 64 20 63 61 63 68 65 20 74 68 65 ag and cache the
d7d0: 20 63 6c 61 73 73 20 70 72 6f 74 6f 74 79 70 65 class prototype
d7e0: 0a 20 20 20 20 69 66 20 28 21 5f 5f 54 41 47 5f . if (!__TAG_
d7f0: 49 4d 50 4c 5b 6e 61 6d 65 5d 29 20 7b 0a 20 20 IMPL[name]) {.
d800: 20 20 20 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d tag(name, tm
d810: 70 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20 pl, css, attrs,
d820: 6f 6e 43 72 65 61 74 65 29 3b 0a 20 20 20 20 20 onCreate);.
d830: 20 2f 2f 20 63 61 63 68 65 20 74 68 65 20 63 6c // cache the cl
d840: 61 73 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a ass constructor.
d850: 20 20 20 20 20 20 5f 5f 54 41 47 5f 49 4d 50 4c __TAG_IMPL
d860: 5b 6e 61 6d 65 5d 2e 63 6c 61 73 73 20 3d 20 74 [name].class = t
d870: 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3b his.constructor;
d880: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d . }.. // m
d890: 6f 75 6e 74 20 74 68 65 20 74 61 67 20 75 73 69 ount the tag usi
d8a0: 6e 67 20 74 68 65 20 63 6c 61 73 73 20 69 6e 73 ng the class ins
d8b0: 74 61 6e 63 65 0a 20 20 20 20 6d 6f 75 6e 74 24 tance. mount$
d8c0: 31 28 65 6c 2c 20 6e 61 6d 65 2c 20 6f 70 74 73 1(el, name, opts
d8d0: 2c 20 74 68 69 73 29 3b 0a 20 20 20 20 2f 2f 20 , this);. //
d8e0: 69 6e 6a 65 63 74 20 74 68 65 20 63 6f 6d 70 6f inject the compo
d8f0: 6e 65 6e 74 20 63 73 73 0a 20 20 20 20 69 66 20 nent css. if
d900: 28 63 73 73 29 20 7b 20 73 74 79 6c 65 4d 61 6e (css) { styleMan
d910: 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 20 7d ager.inject(); }
d920: 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 .. return thi
d930: 73 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 s. }.. /**.
d940: 2a 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72 * Create a new r
d950: 69 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e iot tag implemen
d960: 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 tation. * @par
d970: 61 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 am { String }
d980: 20 20 6e 61 6d 65 20 2d 20 6e 61 6d 65 2f 69 64 name - name/id
d990: 20 6f 66 20 74 68 65 20 6e 65 77 20 72 69 6f 74 of the new riot
d9a0: 20 74 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d tag. * @param
d9b0: 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 { String }
d9c0: 74 6d 70 6c 20 2d 20 74 61 67 20 74 65 6d 70 6c tmpl - tag templ
d9d0: 61 74 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ate. * @param
d9e0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 63 { String } c
d9f0: 73 73 20 2d 20 63 75 73 74 6f 6d 20 74 61 67 20 ss - custom tag
da00: 63 73 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 css. * @param
da10: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 20 20 61 { String } a
da20: 74 74 72 73 20 2d 20 72 6f 6f 74 20 74 61 67 20 ttrs - root tag
da30: 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a 20 attributes. *
da40: 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 74 @param { Funct
da50: 69 6f 6e 20 7d 20 66 6e 20 2d 20 75 73 65 72 20 ion } fn - user
da60: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 2a 20 40 72 function. * @r
da70: 65 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 eturns { String
da80: 7d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65 } name/id of the
da90: 20 74 61 67 20 6a 75 73 74 20 63 72 65 61 74 65 tag just create
daa0: 64 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 d. */. functi
dab0: 6f 6e 20 74 61 67 28 6e 61 6d 65 2c 20 74 6d 70 on tag(name, tmp
dac0: 6c 2c 20 63 73 73 2c 20 61 74 74 72 73 2c 20 66 l, css, attrs, f
dad0: 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 46 n) {. if (isF
dae0: 75 6e 63 74 69 6f 6e 28 61 74 74 72 73 29 29 20 unction(attrs))
daf0: 7b 0a 20 20 20 20 20 20 66 6e 20 3d 20 61 74 74 {. fn = att
db00: 72 73 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 2f rs;.. if (/
db10: 5e 5b 5c 77 2d 5d 2b 5c 73 3f 3d 2f 2e 74 65 73 ^[\w-]+\s?=/.tes
db20: 74 28 63 73 73 29 29 20 7b 0a 20 20 20 20 20 20 t(css)) {.
db30: 20 20 61 74 74 72 73 20 3d 20 63 73 73 3b 0a 20 attrs = css;.
db40: 20 20 20 20 20 20 20 63 73 73 20 3d 20 27 27 3b css = '';
db50: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 0a 20 20 . } else.
db60: 20 20 20 20 20 20 7b 20 61 74 74 72 73 20 3d 20 { attrs =
db70: 27 27 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 ''; }. }..
db80: 20 69 66 20 28 63 73 73 29 20 7b 0a 20 20 20 20 if (css) {.
db90: 20 20 69 66 20 28 69 73 46 75 6e 63 74 69 6f 6e if (isFunction
dba0: 28 63 73 73 29 29 0a 20 20 20 20 20 20 20 20 7b (css)). {
dbb0: 20 66 6e 20 3d 20 63 73 73 3b 20 7d 0a 20 20 20 fn = css; }.
dbc0: 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 else.
dbd0: 7b 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2e 61 { styleManager.a
dbe0: 64 64 28 63 73 73 2c 20 6e 61 6d 65 29 3b 20 7d dd(css, name); }
dbf0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6e 61 6d 65 . }.. name
dc00: 20 3d 20 6e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 = name.toLowerC
dc10: 61 73 65 28 29 3b 0a 20 20 20 20 5f 5f 54 41 47 ase();. __TAG
dc20: 5f 49 4d 50 4c 5b 6e 61 6d 65 5d 20 3d 20 7b 20 _IMPL[name] = {
dc30: 6e 61 6d 65 3a 20 6e 61 6d 65 2c 20 74 6d 70 6c name: name, tmpl
dc40: 3a 20 74 6d 70 6c 2c 20 61 74 74 72 73 3a 20 61 : tmpl, attrs: a
dc50: 74 74 72 73 2c 20 66 6e 3a 20 66 6e 20 7d 3b 0a ttrs, fn: fn };.
dc60: 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 . return name
dc70: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
dc80: 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 72 69 Create a new ri
dc90: 6f 74 20 74 61 67 20 69 6d 70 6c 65 6d 65 6e 74 ot tag implement
dca0: 61 74 69 6f 6e 20 28 66 6f 72 20 75 73 65 20 62 ation (for use b
dcb0: 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 29 0a y the compiler).
dcc0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
dcd0: 53 74 72 69 6e 67 20 7d 20 20 20 6e 61 6d 65 20 String } name
dce0: 2d 20 6e 61 6d 65 2f 69 64 20 6f 66 20 74 68 65 - name/id of the
dcf0: 20 6e 65 77 20 72 69 6f 74 20 74 61 67 0a 20 20 new riot tag.
dd00: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 * @param { St
dd10: 72 69 6e 67 20 7d 20 20 20 74 6d 70 6c 20 2d 20 ring } tmpl -
dd20: 74 61 67 20 74 65 6d 70 6c 61 74 65 0a 20 20 20 tag template.
dd30: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 * @param { Str
dd40: 69 6e 67 20 7d 20 20 20 63 73 73 20 2d 20 63 75 ing } css - cu
dd50: 73 74 6f 6d 20 74 61 67 20 63 73 73 0a 20 20 20 stom tag css.
dd60: 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 * @param { Str
dd70: 69 6e 67 20 7d 20 20 20 61 74 74 72 73 20 2d 20 ing } attrs -
dd80: 72 6f 6f 74 20 74 61 67 20 61 74 74 72 69 62 75 root tag attribu
dd90: 74 65 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 tes. * @param
dda0: 20 20 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66 { Function } f
ddb0: 6e 20 2d 20 75 73 65 72 20 66 75 6e 63 74 69 6f n - user functio
ddc0: 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 n. * @returns
ddd0: 7b 20 53 74 72 69 6e 67 20 7d 20 6e 61 6d 65 2f { String } name/
dde0: 69 64 20 6f 66 20 74 68 65 20 74 61 67 20 6a 75 id of the tag ju
ddf0: 73 74 20 63 72 65 61 74 65 64 0a 20 20 20 2a 2f st created. */
de00: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61 67 32 . function tag2
de10: 28 6e 61 6d 65 2c 20 74 6d 70 6c 2c 20 63 73 73 (name, tmpl, css
de20: 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b 0a 20 , attrs, fn) {.
de30: 20 20 20 69 66 20 28 63 73 73 29 20 7b 20 73 74 if (css) { st
de40: 79 6c 65 4d 61 6e 61 67 65 72 2e 61 64 64 28 63 yleManager.add(c
de50: 73 73 2c 20 6e 61 6d 65 29 3b 20 7d 0a 0a 20 20 ss, name); }..
de60: 20 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 6e 61 6d __TAG_IMPL[nam
de70: 65 5d 20 3d 20 7b 20 6e 61 6d 65 3a 20 6e 61 6d e] = { name: nam
de80: 65 2c 20 74 6d 70 6c 3a 20 74 6d 70 6c 2c 20 61 e, tmpl: tmpl, a
de90: 74 74 72 73 3a 20 61 74 74 72 73 2c 20 66 6e 3a ttrs: attrs, fn:
dea0: 20 66 6e 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75 fn };.. retu
deb0: 72 6e 20 6e 61 6d 65 0a 20 20 7d 0a 0a 20 20 2f rn name. }.. /
dec0: 2a 2a 0a 20 20 20 2a 20 4d 6f 75 6e 74 20 61 20 **. * Mount a
ded0: 74 61 67 20 75 73 69 6e 67 20 61 20 73 70 65 63 tag using a spec
dee0: 69 66 69 63 20 74 61 67 20 69 6d 70 6c 65 6d 65 ific tag impleme
def0: 6e 74 61 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 ntation. * @pa
df00: 72 61 6d 20 20 20 7b 20 2a 20 7d 20 73 65 6c 65 ram { * } sele
df10: 63 74 6f 72 20 2d 20 74 61 67 20 44 4f 4d 20 73 ctor - tag DOM s
df20: 65 6c 65 63 74 6f 72 20 6f 72 20 44 4f 4d 20 6e elector or DOM n
df30: 6f 64 65 2f 73 0a 20 20 20 2a 20 40 70 61 72 61 ode/s. * @para
df40: 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74 m { String } t
df50: 61 67 4e 61 6d 65 20 2d 20 74 61 67 20 69 6d 70 agName - tag imp
df60: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 61 6d 65 lementation name
df70: 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
df80: 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 2d Object } opts -
df90: 20 74 61 67 20 6c 6f 67 69 63 0a 20 20 20 2a 20 tag logic. *
dfa0: 40 72 65 74 75 72 6e 73 20 7b 20 41 72 72 61 79 @returns { Array
dfb0: 20 7d 20 6e 65 77 20 74 61 67 73 20 69 6e 73 74 } new tags inst
dfc0: 61 6e 63 65 73 0a 20 20 20 2a 2f 0a 20 20 66 75 ances. */. fu
dfd0: 6e 63 74 69 6f 6e 20 6d 6f 75 6e 74 28 73 65 6c nction mount(sel
dfe0: 65 63 74 6f 72 2c 20 74 61 67 4e 61 6d 65 2c 20 ector, tagName,
dff0: 6f 70 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20 opts) {. var
e000: 74 61 67 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 tags = [];. v
e010: 61 72 20 65 6c 65 6d 2c 20 61 6c 6c 54 61 67 73 ar elem, allTags
e020: 3b 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 ;.. function
e030: 70 75 73 68 54 61 67 73 54 6f 28 72 6f 6f 74 29 pushTagsTo(root)
e040: 20 7b 0a 20 20 20 20 20 20 69 66 20 28 72 6f 6f {. if (roo
e050: 74 2e 74 61 67 4e 61 6d 65 29 20 7b 0a 20 20 20 t.tagName) {.
e060: 20 20 20 20 20 76 61 72 20 72 69 6f 74 54 61 67 var riotTag
e070: 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 28 = getAttribute(
e080: 72 6f 6f 74 2c 20 49 53 5f 44 49 52 45 43 54 49 root, IS_DIRECTI
e090: 56 45 29 2c 20 74 61 67 3b 0a 0a 20 20 20 20 20 VE), tag;..
e0a0: 20 20 20 2f 2f 20 68 61 76 65 20 74 61 67 4e 61 // have tagNa
e0b0: 6d 65 3f 20 66 6f 72 63 65 20 72 69 6f 74 2d 74 me? force riot-t
e0c0: 61 67 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d ag to be the sam
e0d0: 65 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 61 e. if (ta
e0e0: 67 4e 61 6d 65 20 26 26 20 72 69 6f 74 54 61 67 gName && riotTag
e0f0: 20 21 3d 3d 20 74 61 67 4e 61 6d 65 29 20 7b 0a !== tagName) {.
e100: 20 20 20 20 20 20 20 20 20 20 72 69 6f 74 54 61 riotTa
e110: 67 20 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 g = tagName;.
e120: 20 20 20 20 20 20 20 73 65 74 41 74 74 72 69 62 setAttrib
e130: 75 74 65 28 72 6f 6f 74 2c 20 49 53 5f 44 49 52 ute(root, IS_DIR
e140: 45 43 54 49 56 45 2c 20 74 61 67 4e 61 6d 65 29 ECTIVE, tagName)
e150: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 ;. }..
e160: 20 20 20 20 20 74 61 67 20 3d 20 6d 6f 75 6e 74 tag = mount
e170: 24 31 28 0a 20 20 20 20 20 20 20 20 20 20 72 6f $1(. ro
e180: 6f 74 2c 0a 20 20 20 20 20 20 20 20 20 20 72 69 ot,. ri
e190: 6f 74 54 61 67 20 7c 7c 20 72 6f 6f 74 2e 74 61 otTag || root.ta
e1a0: 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 gName.toLowerCas
e1b0: 65 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 69 e(),. i
e1c0: 73 46 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29 20 sFunction(opts)
e1d0: 3f 20 6f 70 74 73 28 29 20 3a 20 6f 70 74 73 0a ? opts() : opts.
e1e0: 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 20 20 20 );..
e1f0: 20 20 20 20 69 66 20 28 74 61 67 29 0a 20 20 20 if (tag).
e200: 20 20 20 20 20 20 20 7b 20 74 61 67 73 2e 70 75 { tags.pu
e210: 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 20 sh(tag); }.
e220: 20 7d 20 65 6c 73 65 20 69 66 20 28 72 6f 6f 74 } else if (root
e230: 2e 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 .length).
e240: 20 7b 20 65 61 63 68 28 72 6f 6f 74 2c 20 70 75 { each(root, pu
e250: 73 68 54 61 67 73 54 6f 29 3b 20 7d 20 2f 2f 20 shTagsTo); } //
e260: 61 73 73 75 6d 65 20 6e 6f 64 65 4c 69 73 74 0a assume nodeList.
e270: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e }.. // in
e280: 6a 65 63 74 20 73 74 79 6c 65 73 20 69 6e 74 6f ject styles into
e290: 20 44 4f 4d 0a 20 20 20 20 73 74 79 6c 65 4d 61 DOM. styleMa
e2a0: 6e 61 67 65 72 2e 69 6e 6a 65 63 74 28 29 3b 0a nager.inject();.
e2b0: 0a 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65 63 . if (isObjec
e2c0: 74 28 74 61 67 4e 61 6d 65 29 20 7c 7c 20 69 73 t(tagName) || is
e2d0: 46 75 6e 63 74 69 6f 6e 28 74 61 67 4e 61 6d 65 Function(tagName
e2e0: 29 29 20 7b 0a 20 20 20 20 20 20 6f 70 74 73 20 )) {. opts
e2f0: 3d 20 74 61 67 4e 61 6d 65 3b 0a 20 20 20 20 20 = tagName;.
e300: 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b 0a 20 20 tagName = 0;.
e310: 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 72 61 77 }.. // craw
e320: 6c 20 74 68 65 20 44 4f 4d 20 74 6f 20 66 69 6e l the DOM to fin
e330: 64 20 74 68 65 20 74 61 67 0a 20 20 20 20 69 66 d the tag. if
e340: 20 28 69 73 53 74 72 69 6e 67 28 73 65 6c 65 63 (isString(selec
e350: 74 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 73 65 tor)) {. se
e360: 6c 65 63 74 6f 72 20 3d 20 73 65 6c 65 63 74 6f lector = selecto
e370: 72 20 3d 3d 3d 20 27 2a 27 20 3f 0a 20 20 20 20 r === '*' ?.
e380: 20 20 20 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c // select al
e390: 6c 20 72 65 67 69 73 74 65 72 65 64 20 74 61 67 l registered tag
e3a0: 73 0a 20 20 20 20 20 20 20 20 2f 2f 20 26 20 74 s. // & t
e3b0: 61 67 73 20 66 6f 75 6e 64 20 77 69 74 68 20 74 ags found with t
e3c0: 68 65 20 72 69 6f 74 2d 74 61 67 20 61 74 74 72 he riot-tag attr
e3d0: 69 62 75 74 65 20 73 65 74 0a 20 20 20 20 20 20 ibute set.
e3e0: 20 20 61 6c 6c 54 61 67 73 20 3d 20 71 75 65 72 allTags = quer
e3f0: 79 28 29 20 3a 0a 20 20 20 20 20 20 20 20 2f 2f y() :. //
e400: 20 6f 72 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 or just the one
e410: 73 20 6e 61 6d 65 64 20 6c 69 6b 65 20 74 68 65 s named like the
e420: 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 selector.
e430: 20 20 73 65 6c 65 63 74 6f 72 20 2b 20 71 75 65 selector + que
e440: 72 79 28 73 65 6c 65 63 74 6f 72 2e 73 70 6c 69 ry(selector.spli
e450: 74 28 2f 2c 20 2a 2f 29 29 3b 0a 0a 20 20 20 20 t(/, */));..
e460: 20 20 2f 2f 20 6d 61 6b 65 20 73 75 72 65 20 74 // make sure t
e470: 6f 20 70 61 73 73 20 61 6c 77 61 79 73 20 61 20 o pass always a
e480: 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 2f selector. /
e490: 2f 20 74 6f 20 74 68 65 20 71 75 65 72 79 53 65 / to the querySe
e4a0: 6c 65 63 74 6f 72 41 6c 6c 20 66 75 6e 63 74 69 lectorAll functi
e4b0: 6f 6e 0a 20 20 20 20 20 20 65 6c 65 6d 20 3d 20 on. elem =
e4c0: 73 65 6c 65 63 74 6f 72 20 3f 20 24 24 28 73 65 selector ? $$(se
e4d0: 6c 65 63 74 6f 72 29 20 3a 20 5b 5d 3b 0a 20 20 lector) : [];.
e4e0: 20 20 7d 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 }. else.
e4f0: 20 20 20 2f 2f 20 70 72 6f 62 61 62 6c 79 20 79 // probably y
e500: 6f 75 20 68 61 76 65 20 70 61 73 73 65 64 20 61 ou have passed a
e510: 6c 72 65 61 64 79 20 61 20 74 61 67 20 6f 72 20 lready a tag or
e520: 61 20 4e 6f 64 65 4c 69 73 74 0a 20 20 20 20 20 a NodeList.
e530: 20 7b 20 65 6c 65 6d 20 3d 20 73 65 6c 65 63 74 { elem = select
e540: 6f 72 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 73 65 or; }.. // se
e550: 6c 65 63 74 20 61 6c 6c 20 74 68 65 20 72 65 67 lect all the reg
e560: 69 73 74 65 72 65 64 20 61 6e 64 20 6d 6f 75 6e istered and moun
e570: 74 20 74 68 65 6d 20 69 6e 73 69 64 65 20 74 68 t them inside th
e580: 65 69 72 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 eir root element
e590: 73 0a 20 20 20 20 69 66 20 28 74 61 67 4e 61 6d s. if (tagNam
e5a0: 65 20 3d 3d 3d 20 27 2a 27 29 20 7b 0a 20 20 20 e === '*') {.
e5b0: 20 20 20 2f 2f 20 67 65 74 20 61 6c 6c 20 63 75 // get all cu
e5c0: 73 74 6f 6d 20 74 61 67 73 0a 20 20 20 20 20 20 stom tags.
e5d0: 74 61 67 4e 61 6d 65 20 3d 20 61 6c 6c 54 61 67 tagName = allTag
e5e0: 73 20 7c 7c 20 71 75 65 72 79 28 29 3b 0a 20 20 s || query();.
e5f0: 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 72 6f // if the ro
e600: 6f 74 20 65 6c 73 20 69 74 27 73 20 6a 75 73 74 ot els it's just
e610: 20 61 20 73 69 6e 67 6c 65 20 74 61 67 0a 20 20 a single tag.
e620: 20 20 20 20 69 66 20 28 65 6c 65 6d 2e 74 61 67 if (elem.tag
e630: 4e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 7b 20 Name). {
e640: 65 6c 65 6d 20 3d 20 24 24 28 74 61 67 4e 61 6d elem = $$(tagNam
e650: 65 2c 20 65 6c 65 6d 29 3b 20 7d 0a 20 20 20 20 e, elem); }.
e660: 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 else {.
e670: 20 2f 2f 20 73 65 6c 65 63 74 20 61 6c 6c 20 74 // select all t
e680: 68 65 20 63 68 69 6c 64 72 65 6e 20 66 6f 72 20 he children for
e690: 61 6c 6c 20 74 68 65 20 64 69 66 66 65 72 65 6e all the differen
e6a0: 74 20 72 6f 6f 74 20 65 6c 65 6d 65 6e 74 73 0a t root elements.
e6b0: 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 64 65 var node
e6c0: 4c 69 73 74 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 List = [];..
e6d0: 20 20 20 20 65 61 63 68 28 65 6c 65 6d 2c 20 66 each(elem, f
e6e0: 75 6e 63 74 69 6f 6e 20 28 5f 65 6c 29 20 7b 20 unction (_el) {
e6f0: 72 65 74 75 72 6e 20 6e 6f 64 65 4c 69 73 74 2e return nodeList.
e700: 70 75 73 68 28 24 24 28 74 61 67 4e 61 6d 65 2c push($$(tagName,
e710: 20 5f 65 6c 29 29 3b 20 7d 29 3b 0a 0a 20 20 20 _el)); });..
e720: 20 20 20 20 20 65 6c 65 6d 20 3d 20 6e 6f 64 65 elem = node
e730: 4c 69 73 74 3b 0a 20 20 20 20 20 20 7d 0a 20 20 List;. }.
e740: 20 20 20 20 2f 2f 20 67 65 74 20 72 69 64 20 6f // get rid o
e750: 66 20 74 68 65 20 74 61 67 4e 61 6d 65 0a 20 20 f the tagName.
e760: 20 20 20 20 74 61 67 4e 61 6d 65 20 3d 20 30 3b tagName = 0;
e770: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 73 68 . }.. push
e780: 54 61 67 73 54 6f 28 65 6c 65 6d 29 3b 0a 0a 20 TagsTo(elem);..
e790: 20 20 20 72 65 74 75 72 6e 20 74 61 67 73 0a 20 return tags.
e7a0: 20 7d 0a 0a 20 20 2f 2f 20 43 72 65 61 74 65 20 }.. // Create
e7b0: 61 20 6d 69 78 69 6e 20 74 68 61 74 20 63 6f 75 a mixin that cou
e7c0: 6c 64 20 62 65 20 67 6c 6f 62 61 6c 6c 79 20 73 ld be globally s
e7d0: 68 61 72 65 64 20 61 63 72 6f 73 73 20 61 6c 6c hared across all
e7e0: 20 74 68 65 20 74 61 67 73 0a 20 20 76 61 72 20 the tags. var
e7f0: 6d 69 78 69 6e 73 20 3d 20 7b 7d 3b 0a 20 20 76 mixins = {};. v
e800: 61 72 20 67 6c 6f 62 61 6c 73 20 3d 20 6d 69 78 ar globals = mix
e810: 69 6e 73 5b 47 4c 4f 42 41 4c 5f 4d 49 58 49 4e ins[GLOBAL_MIXIN
e820: 5d 20 3d 20 7b 7d 3b 0a 20 20 76 61 72 20 6d 69 ] = {};. var mi
e830: 78 69 6e 73 5f 69 64 20 3d 20 30 3b 0a 0a 20 20 xins_id = 0;..
e840: 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 2f /**. * Create/
e850: 52 65 74 75 72 6e 20 61 20 6d 69 78 69 6e 20 62 Return a mixin b
e860: 79 20 69 74 73 20 6e 61 6d 65 0a 20 20 20 2a 20 y its name. *
e870: 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
e880: 67 20 7d 20 20 6e 61 6d 65 20 2d 20 6d 69 78 69 g } name - mixi
e890: 6e 20 6e 61 6d 65 20 28 67 6c 6f 62 61 6c 20 6d n name (global m
e8a0: 69 78 69 6e 20 69 66 20 6f 62 6a 65 63 74 29 0a ixin if object).
e8b0: 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 * @param {
e8c0: 4f 62 6a 65 63 74 20 7d 20 20 6d 69 78 20 2d 20 Object } mix -
e8d0: 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20 20 20 2a mixin logic. *
e8e0: 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f 6c @param { Bool
e8f0: 65 61 6e 20 7d 20 67 20 2d 20 69 73 20 67 6c 6f ean } g - is glo
e900: 62 61 6c 3f 0a 20 20 20 2a 20 40 72 65 74 75 72 bal?. * @retur
e910: 6e 73 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 74 ns { Object } t
e920: 68 65 20 6d 69 78 69 6e 20 6c 6f 67 69 63 0a 20 he mixin logic.
e930: 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 */. function
e940: 6d 69 78 69 6e 28 6e 61 6d 65 2c 20 6d 69 78 2c mixin(name, mix,
e950: 20 67 29 20 7b 0a 20 20 20 20 2f 2f 20 55 6e 6e g) {. // Unn
e960: 61 6d 65 64 20 67 6c 6f 62 61 6c 0a 20 20 20 20 amed global.
e970: 69 66 20 28 69 73 4f 62 6a 65 63 74 28 6e 61 6d if (isObject(nam
e980: 65 29 29 20 7b 0a 20 20 20 20 20 20 6d 69 78 69 e)) {. mixi
e990: 6e 28 28 22 5f 5f 22 20 2b 20 28 6d 69 78 69 6e n(("__" + (mixin
e9a0: 73 5f 69 64 2b 2b 29 20 2b 20 22 5f 5f 22 29 2c s_id++) + "__"),
e9b0: 20 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20 name, true);.
e9c0: 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 7d return. }
e9d0: 0a 0a 20 20 20 20 76 61 72 20 73 74 6f 72 65 20 .. var store
e9e0: 3d 20 67 20 3f 20 67 6c 6f 62 61 6c 73 20 3a 20 = g ? globals :
e9f0: 6d 69 78 69 6e 73 3b 0a 0a 20 20 20 20 2f 2f 20 mixins;.. //
ea00: 47 65 74 74 65 72 0a 20 20 20 20 69 66 20 28 21 Getter. if (!
ea10: 6d 69 78 29 20 7b 0a 20 20 20 20 20 20 69 66 20 mix) {. if
ea20: 28 69 73 55 6e 64 65 66 69 6e 65 64 28 73 74 6f (isUndefined(sto
ea30: 72 65 5b 6e 61 6d 65 5d 29 29 0a 20 20 20 20 20 re[name])).
ea40: 20 20 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 45 { throw new E
ea50: 72 72 6f 72 28 28 22 55 6e 72 65 67 69 73 74 65 rror(("Unregiste
ea60: 72 65 64 20 6d 69 78 69 6e 3a 20 22 20 2b 20 6e red mixin: " + n
ea70: 61 6d 65 29 29 20 7d 0a 0a 20 20 20 20 20 20 72 ame)) }.. r
ea80: 65 74 75 72 6e 20 73 74 6f 72 65 5b 6e 61 6d 65 eturn store[name
ea90: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 ]. }.. //
eaa0: 53 65 74 74 65 72 0a 20 20 20 20 73 74 6f 72 65 Setter. store
eab0: 5b 6e 61 6d 65 5d 20 3d 20 69 73 46 75 6e 63 74 [name] = isFunct
eac0: 69 6f 6e 28 6d 69 78 29 20 3f 0a 20 20 20 20 20 ion(mix) ?.
ead0: 20 65 78 74 65 6e 64 28 6d 69 78 2e 70 72 6f 74 extend(mix.prot
eae0: 6f 74 79 70 65 2c 20 73 74 6f 72 65 5b 6e 61 6d otype, store[nam
eaf0: 65 5d 20 7c 7c 20 7b 7d 29 20 26 26 20 6d 69 78 e] || {}) && mix
eb00: 20 3a 0a 20 20 20 20 20 20 65 78 74 65 6e 64 28 :. extend(
eb10: 73 74 6f 72 65 5b 6e 61 6d 65 5d 20 7c 7c 20 7b store[name] || {
eb20: 7d 2c 20 6d 69 78 29 3b 0a 20 20 7d 0a 0a 20 20 }, mix);. }..
eb30: 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 61 74 65 20 /**. * Update
eb40: 61 6c 6c 20 74 68 65 20 74 61 67 73 20 69 6e 73 all the tags ins
eb50: 74 61 6e 63 65 73 20 63 72 65 61 74 65 64 0a 20 tances created.
eb60: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 41 * @returns { A
eb70: 72 72 61 79 20 7d 20 61 6c 6c 20 74 68 65 20 74 rray } all the t
eb80: 61 67 73 20 69 6e 73 74 61 6e 63 65 73 0a 20 20 ags instances.
eb90: 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 */. function u
eba0: 70 64 61 74 65 24 31 28 29 20 7b 0a 20 20 20 20 pdate$1() {.
ebb0: 72 65 74 75 72 6e 20 65 61 63 68 28 5f 5f 54 41 return each(__TA
ebc0: 47 53 5f 43 41 43 48 45 2c 20 66 75 6e 63 74 69 GS_CACHE, functi
ebd0: 6f 6e 20 28 74 61 67 29 20 7b 20 72 65 74 75 72 on (tag) { retur
ebe0: 6e 20 74 61 67 2e 75 70 64 61 74 65 28 29 3b 20 n tag.update();
ebf0: 7d 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 }). }.. functi
ec00: 6f 6e 20 75 6e 72 65 67 69 73 74 65 72 28 6e 61 on unregister(na
ec10: 6d 65 29 20 7b 0a 20 20 20 20 73 74 79 6c 65 4d me) {. styleM
ec20: 61 6e 61 67 65 72 2e 72 65 6d 6f 76 65 28 6e 61 anager.remove(na
ec30: 6d 65 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 me);. return
ec40: 64 65 6c 65 74 65 20 5f 5f 54 41 47 5f 49 4d 50 delete __TAG_IMP
ec50: 4c 5b 6e 61 6d 65 5d 0a 20 20 7d 0a 0a 20 20 76 L[name]. }.. v
ec60: 61 72 20 76 65 72 73 69 6f 6e 20 3d 20 27 76 33 ar version = 'v3
ec70: 2e 31 33 2e 32 27 3b 0a 0a 20 20 76 61 72 20 63 .13.2';.. var c
ec80: 6f 72 65 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f ore = /*#__PURE_
ec90: 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 _*/Object.freeze
eca0: 28 7b 0a 20 20 20 20 54 61 67 3a 20 54 61 67 2c ({. Tag: Tag,
ecb0: 0a 20 20 20 20 74 61 67 3a 20 74 61 67 2c 0a 20 . tag: tag,.
ecc0: 20 20 20 74 61 67 32 3a 20 74 61 67 32 2c 0a 20 tag2: tag2,.
ecd0: 20 20 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 2c mount: mount,
ece0: 0a 20 20 20 20 6d 69 78 69 6e 3a 20 6d 69 78 69 . mixin: mixi
ecf0: 6e 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 75 n,. update: u
ed00: 70 64 61 74 65 24 31 2c 0a 20 20 20 20 75 6e 72 pdate$1,. unr
ed10: 65 67 69 73 74 65 72 3a 20 75 6e 72 65 67 69 73 egister: unregis
ed20: 74 65 72 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e ter,. version
ed30: 3a 20 76 65 72 73 69 6f 6e 0a 20 20 7d 29 3b 0a : version. });.
ed40: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 64 64 20 . /**. * Add
ed50: 61 20 6d 69 78 69 6e 20 74 6f 20 74 68 69 73 20 a mixin to this
ed60: 74 61 67 0a 20 20 20 2a 20 40 72 65 74 75 72 6e tag. * @return
ed70: 73 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75 s { Tag } the cu
ed80: 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e rrent tag instan
ed90: 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 ce. */. funct
eda0: 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 69 78 ion componentMix
edb0: 69 6e 28 74 61 67 24 24 31 29 20 7b 0a 20 20 20 in(tag$$1) {.
edc0: 20 76 61 72 20 6d 69 78 69 6e 73 20 3d 20 5b 5d var mixins = []
edd0: 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d 65 6e 74 , len = argument
ede0: 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 20 s.length - 1;.
edf0: 20 20 77 68 69 6c 65 20 28 20 6c 65 6e 2d 2d 20 while ( len--
ee00: 3e 20 30 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65 > 0 ) mixins[ le
ee10: 6e 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b n ] = arguments[
ee20: 20 6c 65 6e 20 2b 20 31 20 5d 3b 0a 0a 20 20 20 len + 1 ];..
ee30: 20 65 61 63 68 28 6d 69 78 69 6e 73 2c 20 66 75 each(mixins, fu
ee40: 6e 63 74 69 6f 6e 20 28 6d 69 78 29 20 7b 0a 20 nction (mix) {.
ee50: 20 20 20 20 20 76 61 72 20 69 6e 73 74 61 6e 63 var instanc
ee60: 65 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 62 6a e;. var obj
ee70: 3b 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f 70 ;. var prop
ee80: 73 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 2f s = [];.. /
ee90: 2f 20 70 72 6f 70 65 72 74 69 65 73 20 62 6c 61 / properties bla
eea0: 63 6b 6c 69 73 74 65 64 20 61 6e 64 20 77 69 6c cklisted and wil
eeb0: 6c 20 6e 6f 74 20 62 65 20 62 6f 75 6e 64 20 74 l not be bound t
eec0: 6f 20 74 68 65 20 74 61 67 20 69 6e 73 74 61 6e o the tag instan
eed0: 63 65 0a 20 20 20 20 20 20 76 61 72 20 70 72 6f ce. var pro
eee0: 70 73 42 6c 61 63 6b 6c 69 73 74 20 3d 20 5b 27 psBlacklist = ['
eef0: 69 6e 69 74 27 2c 20 27 5f 5f 70 72 6f 74 6f 5f init', '__proto_
ef00: 5f 27 5d 3b 0a 0a 20 20 20 20 20 20 6d 69 78 20 _'];.. mix
ef10: 3d 20 69 73 53 74 72 69 6e 67 28 6d 69 78 29 20 = isString(mix)
ef20: 3f 20 6d 69 78 69 6e 28 6d 69 78 29 20 3a 20 6d ? mixin(mix) : m
ef30: 69 78 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 63 68 ix;.. // ch
ef40: 65 63 6b 20 69 66 20 74 68 65 20 6d 69 78 69 6e eck if the mixin
ef50: 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 0a 20 is a function.
ef60: 20 20 20 20 20 69 66 20 28 69 73 46 75 6e 63 74 if (isFunct
ef70: 69 6f 6e 28 6d 69 78 29 29 20 7b 0a 20 20 20 20 ion(mix)) {.
ef80: 20 20 20 20 2f 2f 20 63 72 65 61 74 65 20 74 68 // create th
ef90: 65 20 6e 65 77 20 6d 69 78 69 6e 20 69 6e 73 74 e new mixin inst
efa0: 61 6e 63 65 0a 20 20 20 20 20 20 20 20 69 6e 73 ance. ins
efb0: 74 61 6e 63 65 20 3d 20 6e 65 77 20 6d 69 78 28 tance = new mix(
efc0: 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 );. } else
efd0: 7b 20 69 6e 73 74 61 6e 63 65 20 3d 20 6d 69 78 { instance = mix
efe0: 3b 20 7d 0a 0a 20 20 20 20 20 20 76 61 72 20 70 ; }.. var p
eff0: 72 6f 74 6f 20 3d 20 4f 62 6a 65 63 74 2e 67 65 roto = Object.ge
f000: 74 50 72 6f 74 6f 74 79 70 65 4f 66 28 69 6e 73 tPrototypeOf(ins
f010: 74 61 6e 63 65 29 3b 0a 0a 20 20 20 20 20 20 2f tance);.. /
f020: 2f 20 62 75 69 6c 64 20 6d 75 6c 74 69 6c 65 76 / build multilev
f030: 65 6c 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 68 el prototype inh
f040: 65 72 69 74 61 6e 63 65 20 63 68 61 69 6e 20 70 eritance chain p
f050: 72 6f 70 65 72 74 79 20 6c 69 73 74 0a 20 20 20 roperty list.
f060: 20 20 20 64 6f 20 7b 20 70 72 6f 70 73 20 3d 20 do { props =
f070: 70 72 6f 70 73 2e 63 6f 6e 63 61 74 28 4f 62 6a props.concat(Obj
f080: 65 63 74 2e 67 65 74 4f 77 6e 50 72 6f 70 65 72 ect.getOwnProper
f090: 74 79 4e 61 6d 65 73 28 6f 62 6a 20 7c 7c 20 69 tyNames(obj || i
f0a0: 6e 73 74 61 6e 63 65 29 29 3b 20 7d 0a 20 20 20 nstance)); }.
f0b0: 20 20 20 77 68 69 6c 65 20 28 6f 62 6a 20 3d 20 while (obj =
f0c0: 4f 62 6a 65 63 74 2e 67 65 74 50 72 6f 74 6f 74 Object.getProtot
f0d0: 79 70 65 4f 66 28 6f 62 6a 20 7c 7c 20 69 6e 73 ypeOf(obj || ins
f0e0: 74 61 6e 63 65 29 29 0a 0a 20 20 20 20 20 20 2f tance)).. /
f0f0: 2f 20 6c 6f 6f 70 20 74 68 65 20 6b 65 79 73 20 / loop the keys
f100: 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 in the function
f110: 70 72 6f 74 6f 74 79 70 65 20 6f 72 20 74 68 65 prototype or the
f120: 20 61 6c 6c 20 6f 62 6a 65 63 74 20 6b 65 79 73 all object keys
f130: 0a 20 20 20 20 20 20 65 61 63 68 28 70 72 6f 70 . each(prop
f140: 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 65 79 s, function (key
f150: 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 ) {. // b
f160: 69 6e 64 20 6d 65 74 68 6f 64 73 20 74 6f 20 74 ind methods to t
f170: 61 67 0a 20 20 20 20 20 20 20 20 2f 2f 20 61 6c ag. // al
f180: 6c 6f 77 20 6d 69 78 69 6e 73 20 74 6f 20 6f 76 low mixins to ov
f190: 65 72 72 69 64 65 20 6f 74 68 65 72 20 70 72 6f erride other pro
f1a0: 70 65 72 74 69 65 73 2f 70 61 72 65 6e 74 20 6d perties/parent m
f1b0: 69 78 69 6e 73 0a 20 20 20 20 20 20 20 20 69 66 ixins. if
f1c0: 20 28 21 63 6f 6e 74 61 69 6e 73 28 70 72 6f 70 (!contains(prop
f1d0: 73 42 6c 61 63 6b 6c 69 73 74 2c 20 6b 65 79 29 sBlacklist, key)
f1e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 2f 2f ) {. //
f1f0: 20 63 68 65 63 6b 20 66 6f 72 20 67 65 74 74 65 check for gette
f200: 72 73 2f 73 65 74 74 65 72 73 0a 20 20 20 20 20 rs/setters.
f210: 20 20 20 20 20 76 61 72 20 64 65 73 63 72 69 70 var descrip
f220: 74 6f 72 20 3d 20 67 65 74 50 72 6f 70 44 65 73 tor = getPropDes
f230: 63 72 69 70 74 6f 72 28 69 6e 73 74 61 6e 63 65 criptor(instance
f240: 2c 20 6b 65 79 29 20 7c 7c 20 67 65 74 50 72 6f , key) || getPro
f250: 70 44 65 73 63 72 69 70 74 6f 72 28 70 72 6f 74 pDescriptor(prot
f260: 6f 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 o, key);.
f270: 20 20 20 76 61 72 20 68 61 73 47 65 74 74 65 72 var hasGetter
f280: 53 65 74 74 65 72 20 3d 20 64 65 73 63 72 69 70 Setter = descrip
f290: 74 6f 72 20 26 26 20 28 64 65 73 63 72 69 70 74 tor && (descript
f2a0: 6f 72 2e 67 65 74 20 7c 7c 20 64 65 73 63 72 69 or.get || descri
f2b0: 70 74 6f 72 2e 73 65 74 29 3b 0a 0a 20 20 20 20 ptor.set);..
f2c0: 20 20 20 20 20 20 2f 2f 20 61 70 70 6c 79 20 6d // apply m
f2d0: 65 74 68 6f 64 20 6f 6e 6c 79 20 69 66 20 69 74 ethod only if it
f2e0: 20 64 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61 64 does not alread
f2f0: 79 20 65 78 69 73 74 20 6f 6e 20 74 68 65 20 69 y exist on the i
f300: 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 nstance.
f310: 20 20 69 66 20 28 21 74 61 67 24 24 31 2e 68 61 if (!tag$$1.ha
f320: 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 6b 65 79 sOwnProperty(key
f330: 29 20 26 26 20 68 61 73 47 65 74 74 65 72 53 65 ) && hasGetterSe
f340: 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20 tter) {.
f350: 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
f360: 65 50 72 6f 70 65 72 74 79 28 74 61 67 24 24 31 eProperty(tag$$1
f370: 2c 20 6b 65 79 2c 20 64 65 73 63 72 69 70 74 6f , key, descripto
f380: 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 20 r);. }
f390: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {.
f3a0: 20 20 20 74 61 67 24 24 31 5b 6b 65 79 5d 20 3d tag$$1[key] =
f3b0: 20 69 73 46 75 6e 63 74 69 6f 6e 28 69 6e 73 74 isFunction(inst
f3c0: 61 6e 63 65 5b 6b 65 79 5d 29 20 3f 0a 20 20 20 ance[key]) ?.
f3d0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 insta
f3e0: 6e 63 65 5b 6b 65 79 5d 2e 62 69 6e 64 28 74 61 nce[key].bind(ta
f3f0: 67 24 24 31 29 20 3a 0a 20 20 20 20 20 20 20 20 g$$1) :.
f400: 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 5b 6b instance[k
f410: 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 7d ey];. }
f420: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
f430: 20 7d 29 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 69 });.. // i
f440: 6e 69 74 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 nit method will
f450: 62 65 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 be called automa
f460: 74 69 63 61 6c 6c 79 0a 20 20 20 20 20 20 69 66 tically. if
f470: 20 28 69 6e 73 74 61 6e 63 65 2e 69 6e 69 74 29 (instance.init)
f480: 0a 20 20 20 20 20 20 20 20 7b 20 69 6e 73 74 61 . { insta
f490: 6e 63 65 2e 69 6e 69 74 2e 62 69 6e 64 28 74 61 nce.init.bind(ta
f4a0: 67 24 24 31 29 28 74 61 67 24 24 31 2e 6f 70 74 g$$1)(tag$$1.opt
f4b0: 73 29 3b 20 7d 0a 20 20 20 20 7d 29 3b 0a 0a 20 s); }. });..
f4c0: 20 20 20 72 65 74 75 72 6e 20 74 61 67 24 24 31 return tag$$1
f4d0: 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
f4e0: 20 4d 6f 76 65 20 74 68 65 20 70 6f 73 69 74 69 Move the positi
f4f0: 6f 6e 20 6f 66 20 61 20 63 75 73 74 6f 6d 20 74 on of a custom t
f500: 61 67 20 69 6e 20 69 74 73 20 70 61 72 65 6e 74 ag in its parent
f510: 20 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20 tag. * @this
f520: 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 Tag. * @param
f530: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 74 61 67 { String } tag
f540: 4e 61 6d 65 20 2d 20 6b 65 79 20 77 68 65 72 65 Name - key where
f550: 20 74 68 65 20 74 61 67 20 77 61 73 20 73 74 6f the tag was sto
f560: 72 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 red. * @param
f570: 20 20 7b 20 4e 75 6d 62 65 72 20 7d 20 6e 65 77 { Number } new
f580: 50 6f 73 20 2d 20 69 6e 64 65 78 20 77 68 65 72 Pos - index wher
f590: 65 20 74 68 65 20 6e 65 77 20 74 61 67 20 77 69 e the new tag wi
f5a0: 6c 6c 20 62 65 20 73 74 6f 72 65 64 0a 20 20 20 ll be stored.
f5b0: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f */. function mo
f5c0: 76 65 43 68 69 6c 64 28 74 61 67 4e 61 6d 65 2c veChild(tagName,
f5d0: 20 6e 65 77 50 6f 73 29 20 7b 0a 20 20 20 20 76 newPos) {. v
f5e0: 61 72 20 70 61 72 65 6e 74 20 3d 20 74 68 69 73 ar parent = this
f5f0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 72 .parent;. var
f600: 20 74 61 67 73 3b 0a 20 20 20 20 2f 2f 20 6e 6f tags;. // no
f610: 20 70 61 72 65 6e 74 20 6e 6f 20 6d 6f 76 65 0a parent no move.
f620: 20 20 20 20 69 66 20 28 21 70 61 72 65 6e 74 29 if (!parent)
f630: 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
f640: 20 74 61 67 73 20 3d 20 70 61 72 65 6e 74 2e 74 tags = parent.t
f650: 61 67 73 5b 74 61 67 4e 61 6d 65 5d 3b 0a 0a 20 ags[tagName];..
f660: 20 20 20 69 66 20 28 69 73 41 72 72 61 79 28 74 if (isArray(t
f670: 61 67 73 29 29 0a 20 20 20 20 20 20 7b 20 74 61 ags)). { ta
f680: 67 73 2e 73 70 6c 69 63 65 28 6e 65 77 50 6f 73 gs.splice(newPos
f690: 2c 20 30 2c 20 74 61 67 73 2e 73 70 6c 69 63 65 , 0, tags.splice
f6a0: 28 74 61 67 73 2e 69 6e 64 65 78 4f 66 28 74 68 (tags.indexOf(th
f6b0: 69 73 29 2c 20 31 29 5b 30 5d 29 3b 20 7d 0a 20 is), 1)[0]); }.
f6c0: 20 20 20 65 6c 73 65 20 7b 20 61 72 72 61 79 69 else { arrayi
f6d0: 73 68 41 64 64 28 70 61 72 65 6e 74 2e 74 61 67 shAdd(parent.tag
f6e0: 73 2c 20 74 61 67 4e 61 6d 65 2c 20 74 68 69 73 s, tagName, this
f6f0: 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a ); }. }.. /**.
f700: 20 20 20 2a 20 4d 6f 76 65 20 76 69 72 74 75 61 * Move virtua
f710: 6c 20 74 61 67 20 61 6e 64 20 61 6c 6c 20 63 68 l tag and all ch
f720: 69 6c 64 20 6e 6f 64 65 73 0a 20 20 20 2a 20 40 ild nodes. * @
f730: 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 this Tag. * @p
f740: 61 72 61 6d 20 7b 20 4e 6f 64 65 20 7d 20 73 72 aram { Node } sr
f750: 63 20 20 2d 20 74 68 65 20 6e 6f 64 65 20 74 68 c - the node th
f760: 61 74 20 77 69 6c 6c 20 64 6f 20 74 68 65 20 69 at will do the i
f770: 6e 73 65 72 74 69 6e 67 0a 20 20 20 2a 20 40 70 nserting. * @p
f780: 61 72 61 6d 20 7b 20 54 61 67 20 7d 20 74 61 72 aram { Tag } tar
f790: 67 65 74 20 2d 20 69 6e 73 65 72 74 20 62 65 66 get - insert bef
f7a0: 6f 72 65 20 74 68 69 73 20 74 61 67 27 73 20 66 ore this tag's f
f7b0: 69 72 73 74 20 63 68 69 6c 64 0a 20 20 20 2a 2f irst child. */
f7c0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 . function move
f7d0: 56 69 72 74 75 61 6c 28 73 72 63 2c 20 74 61 72 Virtual(src, tar
f7e0: 67 65 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 get) {. var t
f7f0: 68 69 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 his$1 = this;..
f800: 20 20 20 76 61 72 20 65 6c 20 3d 20 74 68 69 73 var el = this
f810: 2e 5f 5f 2e 68 65 61 64 3b 0a 20 20 20 20 76 61 .__.head;. va
f820: 72 20 73 69 62 3b 0a 20 20 20 20 76 61 72 20 66 r sib;. var f
f830: 72 61 67 20 3d 20 63 72 65 61 74 65 46 72 61 67 rag = createFrag
f840: 6d 65 6e 74 28 29 3b 0a 0a 20 20 20 20 77 68 69 ment();.. whi
f850: 6c 65 20 28 65 6c 29 20 7b 0a 20 20 20 20 20 20 le (el) {.
f860: 73 69 62 20 3d 20 65 6c 2e 6e 65 78 74 53 69 62 sib = el.nextSib
f870: 6c 69 6e 67 3b 0a 20 20 20 20 20 20 66 72 61 67 ling;. frag
f880: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c 29 .appendChild(el)
f890: 3b 0a 20 20 20 20 20 20 65 6c 20 3d 20 73 69 62 ;. el = sib
f8a0: 3b 0a 20 20 20 20 20 20 69 66 20 28 65 6c 20 3d ;. if (el =
f8b0: 3d 3d 20 74 68 69 73 24 31 2e 5f 5f 2e 74 61 69 == this$1.__.tai
f8c0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 66 72 61 l) {. fra
f8d0: 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 65 6c g.appendChild(el
f8e0: 29 3b 0a 20 20 20 20 20 20 20 20 73 72 63 2e 69 );. src.i
f8f0: 6e 73 65 72 74 42 65 66 6f 72 65 28 66 72 61 67 nsertBefore(frag
f900: 2c 20 74 61 72 67 65 74 2e 5f 5f 2e 68 65 61 64 , target.__.head
f910: 29 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b );. break
f920: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 . }. }.
f930: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 }.. /**. * C
f940: 6f 6e 76 65 72 74 20 74 68 65 20 69 74 65 6d 20 onvert the item
f950: 6c 6f 6f 70 65 64 20 69 6e 74 6f 20 61 6e 20 6f looped into an o
f960: 62 6a 65 63 74 20 75 73 65 64 20 74 6f 20 65 78 bject used to ex
f970: 74 65 6e 64 20 74 68 65 20 63 68 69 6c 64 20 74 tend the child t
f980: 61 67 20 70 72 6f 70 65 72 74 69 65 73 0a 20 20 ag properties.
f990: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
f9a0: 6a 65 63 74 20 7d 20 65 78 70 72 20 2d 20 6f 62 ject } expr - ob
f9b0: 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 ject containing
f9c0: 74 68 65 20 6b 65 79 73 20 75 73 65 64 20 74 6f the keys used to
f9d0: 20 65 78 74 65 6e 64 20 74 68 65 20 63 68 69 6c extend the chil
f9e0: 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 20 40 dren tags. * @
f9f0: 70 61 72 61 6d 20 20 20 7b 20 2a 20 7d 20 6b 65 param { * } ke
fa00: 79 20 2d 20 76 61 6c 75 65 20 74 6f 20 61 73 73 y - value to ass
fa10: 69 67 6e 20 74 6f 20 74 68 65 20 6e 65 77 20 6f ign to the new o
fa20: 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 0a 20 bject returned.
fa30: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 2a * @param { *
fa40: 20 7d 20 76 61 6c 20 2d 20 76 61 6c 75 65 20 63 } val - value c
fa50: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 6f ontaining the po
fa60: 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 74 sition of the it
fa70: 65 6d 20 69 6e 20 74 68 65 20 61 72 72 61 79 0a em in the array.
fa80: 20 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 * @returns {
fa90: 4f 62 6a 65 63 74 20 7d 20 2d 20 6e 65 77 20 6f Object } - new o
faa0: 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67 bject containing
fab0: 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 the values of t
fac0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d he original item
fad0: 0a 20 20 20 2a 0a 20 20 20 2a 20 54 68 65 20 76 . *. * The v
fae0: 61 72 69 61 62 6c 65 73 20 27 6b 65 79 27 20 61 ariables 'key' a
faf0: 6e 64 20 27 76 61 6c 27 20 61 72 65 20 61 72 62 nd 'val' are arb
fb00: 69 74 72 61 72 79 2e 0a 20 20 20 2a 20 54 68 65 itrary.. * The
fb10: 79 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 y depend on the
fb20: 63 6f 6c 6c 65 63 74 69 6f 6e 20 74 79 70 65 20 collection type
fb30: 6c 6f 6f 70 65 64 20 28 41 72 72 61 79 2c 20 4f looped (Array, O
fb40: 62 6a 65 63 74 29 0a 20 20 20 2a 20 61 6e 64 20 bject). * and
fb50: 6f 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f on the expressio
fb60: 6e 20 75 73 65 64 20 6f 6e 20 74 68 65 20 65 61 n used on the ea
fb70: 63 68 20 74 61 67 0a 20 20 20 2a 0a 20 20 20 2a ch tag. *. *
fb80: 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6b 69 /. function mki
fb90: 74 65 6d 28 65 78 70 72 2c 20 6b 65 79 2c 20 76 tem(expr, key, v
fba0: 61 6c 29 20 7b 0a 20 20 20 20 76 61 72 20 69 74 al) {. var it
fbb0: 65 6d 20 3d 20 7b 7d 3b 0a 20 20 20 20 69 74 65 em = {};. ite
fbc0: 6d 5b 65 78 70 72 2e 6b 65 79 5d 20 3d 20 6b 65 m[expr.key] = ke
fbd0: 79 3b 0a 20 20 20 20 69 66 20 28 65 78 70 72 2e y;. if (expr.
fbe0: 70 6f 73 29 20 7b 20 69 74 65 6d 5b 65 78 70 72 pos) { item[expr
fbf0: 2e 70 6f 73 5d 20 3d 20 76 61 6c 3b 20 7d 0a 20 .pos] = val; }.
fc00: 20 20 20 72 65 74 75 72 6e 20 69 74 65 6d 0a 20 return item.
fc10: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 }.. /**. * U
fc20: 6e 6d 6f 75 6e 74 20 74 68 65 20 72 65 64 75 6e nmount the redun
fc30: 64 61 6e 74 20 74 61 67 73 0a 20 20 20 2a 20 40 dant tags. * @
fc40: 70 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 param { Array
fc50: 7d 20 69 74 65 6d 73 20 2d 20 61 72 72 61 79 20 } items - array
fc60: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 containing the c
fc70: 75 72 72 65 6e 74 20 69 74 65 6d 73 20 74 6f 20 urrent items to
fc80: 6c 6f 6f 70 0a 20 20 20 2a 20 40 70 61 72 61 6d loop. * @param
fc90: 20 20 20 7b 20 41 72 72 61 79 20 7d 20 74 61 67 { Array } tag
fca0: 73 20 2d 20 61 72 72 61 79 20 63 6f 6e 74 61 69 s - array contai
fcb0: 6e 69 6e 67 20 61 6c 6c 20 74 68 65 20 63 68 69 ning all the chi
fcc0: 6c 64 72 65 6e 20 74 61 67 73 0a 20 20 20 2a 2f ldren tags. */
fcd0: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 6d 6f . function unmo
fce0: 75 6e 74 52 65 64 75 6e 64 61 6e 74 28 69 74 65 untRedundant(ite
fcf0: 6d 73 2c 20 74 61 67 73 2c 20 66 69 6c 74 65 72 ms, tags, filter
fd00: 65 64 49 74 65 6d 73 43 6f 75 6e 74 29 20 7b 0a edItemsCount) {.
fd10: 20 20 20 20 76 61 72 20 69 20 3d 20 74 61 67 73 var i = tags
fd20: 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 76 61 72 .length;. var
fd30: 20 6a 20 3d 20 69 74 65 6d 73 2e 6c 65 6e 67 74 j = items.lengt
fd40: 68 20 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d h - filteredItem
fd50: 73 43 6f 75 6e 74 3b 0a 0a 20 20 20 20 77 68 69 sCount;.. whi
fd60: 6c 65 20 28 69 20 3e 20 6a 29 20 7b 0a 20 20 20 le (i > j) {.
fd70: 20 20 20 69 2d 2d 3b 0a 20 20 20 20 20 20 72 65 i--;. re
fd80: 6d 6f 76 65 2e 61 70 70 6c 79 28 74 61 67 73 5b move.apply(tags[
fd90: 69 5d 2c 20 5b 74 61 67 73 2c 20 69 5d 29 3b 0a i], [tags, i]);.
fda0: 20 20 20 20 7d 0a 20 20 7d 0a 0a 0a 20 20 2f 2a }. }... /*
fdb0: 2a 0a 20 20 20 2a 20 52 65 6d 6f 76 65 20 61 20 *. * Remove a
fdc0: 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a 20 40 child tag. * @
fdd0: 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 this Tag. * @p
fde0: 61 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d aram { Array }
fdf0: 20 74 61 67 73 20 2d 20 74 61 67 73 20 63 6f 6c tags - tags col
fe00: 6c 65 63 74 69 6f 6e 0a 20 20 20 2a 20 40 70 61 lection. * @pa
fe10: 72 61 6d 20 20 20 7b 20 4e 75 6d 62 65 72 20 7d ram { Number }
fe20: 20 69 20 2d 20 69 6e 64 65 78 20 6f 66 20 74 68 i - index of th
fe30: 65 20 74 61 67 20 74 6f 20 72 65 6d 6f 76 65 0a e tag to remove.
fe40: 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e */. function
fe50: 20 72 65 6d 6f 76 65 28 74 61 67 73 2c 20 69 29 remove(tags, i)
fe60: 20 7b 0a 20 20 20 20 74 61 67 73 2e 73 70 6c 69 {. tags.spli
fe70: 63 65 28 69 2c 20 31 29 3b 0a 20 20 20 20 74 68 ce(i, 1);. th
fe80: 69 73 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 is.unmount();.
fe90: 20 20 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 arrayishRemove
fea0: 28 74 68 69 73 2e 70 61 72 65 6e 74 2c 20 74 68 (this.parent, th
feb0: 69 73 2c 20 74 68 69 73 2e 5f 5f 2e 74 61 67 4e is, this.__.tagN
fec0: 61 6d 65 2c 20 74 72 75 65 29 3b 0a 20 20 7d 0a ame, true);. }.
fed0: 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f 76 65 . /**. * Move
fee0: 20 74 68 65 20 6e 65 73 74 65 64 20 63 75 73 74 the nested cust
fef0: 6f 6d 20 74 61 67 73 20 69 6e 20 6e 6f 6e 20 63 om tags in non c
ff00: 75 73 74 6f 6d 20 6c 6f 6f 70 20 74 61 67 73 0a ustom loop tags.
ff10: 20 20 20 2a 20 40 74 68 69 73 20 54 61 67 0a 20 * @this Tag.
ff20: 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4e * @param { N
ff30: 75 6d 62 65 72 20 7d 20 69 20 2d 20 63 75 72 72 umber } i - curr
ff40: 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 ent position of
ff50: 74 68 65 20 6c 6f 6f 70 20 74 61 67 0a 20 20 20 the loop tag.
ff60: 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f */. function mo
ff70: 76 65 4e 65 73 74 65 64 54 61 67 73 28 69 29 20 veNestedTags(i)
ff80: 7b 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 31 {. var this$1
ff90: 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 = this;.. ea
ffa0: 63 68 28 4f 62 6a 65 63 74 2e 6b 65 79 73 28 74 ch(Object.keys(t
ffb0: 68 69 73 2e 74 61 67 73 29 2c 20 66 75 6e 63 74 his.tags), funct
ffc0: 69 6f 6e 20 28 74 61 67 4e 61 6d 65 29 20 7b 0a ion (tagName) {.
ffd0: 20 20 20 20 20 20 6d 6f 76 65 43 68 69 6c 64 2e moveChild.
ffe0: 61 70 70 6c 79 28 74 68 69 73 24 31 2e 74 61 67 apply(this$1.tag
fff0: 73 5b 74 61 67 4e 61 6d 65 5d 2c 20 5b 74 61 67 s[tagName], [tag
10000 4e 61 6d 65 2c 20 69 5d 29 3b 0a 20 20 20 20 7d Name, i]);. }
10010 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 );. }.. /**.
10020 20 2a 20 4d 6f 76 65 20 61 20 63 68 69 6c 64 20 * Move a child
10030 74 61 67 0a 20 20 20 2a 20 40 74 68 69 73 20 54 tag. * @this T
10040 61 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ag. * @param
10050 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d { HTMLElement }
10060 20 72 6f 6f 74 20 2d 20 64 6f 6d 20 6e 6f 64 65 root - dom node
10070 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 containing all
10080 74 68 65 20 6c 6f 6f 70 20 63 68 69 6c 64 72 65 the loop childre
10090 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 n. * @param
100a0 7b 20 54 61 67 20 7d 20 6e 65 78 74 54 61 67 20 { Tag } nextTag
100b0 2d 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 - instance of th
100c0 65 20 6e 65 78 74 20 74 61 67 20 70 72 65 63 65 e next tag prece
100d0 64 69 6e 67 20 74 68 65 20 6f 6e 65 20 77 65 20 ding the one we
100e0 77 61 6e 74 20 74 6f 20 6d 6f 76 65 0a 20 20 20 want to move.
100f0 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 42 6f 6f * @param { Boo
10100 6c 65 61 6e 20 7d 20 69 73 56 69 72 74 75 61 6c lean } isVirtual
10110 20 2d 20 69 73 20 69 74 20 61 20 76 69 72 74 75 - is it a virtu
10120 61 6c 20 74 61 67 3f 0a 20 20 20 2a 2f 0a 20 20 al tag?. */.
10130 66 75 6e 63 74 69 6f 6e 20 6d 6f 76 65 28 72 6f function move(ro
10140 6f 74 2c 20 6e 65 78 74 54 61 67 2c 20 69 73 56 ot, nextTag, isV
10150 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 20 69 66 irtual) {. if
10160 20 28 69 73 56 69 72 74 75 61 6c 29 0a 20 20 20 (isVirtual).
10170 20 20 20 7b 20 6d 6f 76 65 56 69 72 74 75 61 6c { moveVirtual
10180 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 5b 72 6f .apply(this, [ro
10190 6f 74 2c 20 6e 65 78 74 54 61 67 5d 29 3b 20 7d ot, nextTag]); }
101a0 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 . else.
101b0 7b 20 73 61 66 65 49 6e 73 65 72 74 28 72 6f 6f { safeInsert(roo
101c0 74 2c 20 74 68 69 73 2e 72 6f 6f 74 2c 20 6e 65 t, this.root, ne
101d0 78 74 54 61 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20 xtTag.root); }.
101e0 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 49 }.. /**. * I
101f0 6e 73 65 72 74 20 61 6e 64 20 6d 6f 75 6e 74 20 nsert and mount
10200 61 20 63 68 69 6c 64 20 74 61 67 0a 20 20 20 2a a child tag. *
10210 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 @this Tag. *
10220 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 @param { HTMLE
10230 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 lement } root -
10240 64 6f 6d 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e dom node contain
10250 69 6e 67 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70 ing all the loop
10260 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40 children. * @
10270 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 param { Tag }
10280 6e 65 78 74 54 61 67 20 2d 20 69 6e 73 74 61 6e nextTag - instan
10290 63 65 20 6f 66 20 74 68 65 20 6e 65 78 74 20 74 ce of the next t
102a0 61 67 20 70 72 65 63 65 64 69 6e 67 20 74 68 65 ag preceding the
102b0 20 6f 6e 65 20 77 65 20 77 61 6e 74 20 74 6f 20 one we want to
102c0 69 6e 73 65 72 74 0a 20 20 20 2a 20 40 70 61 72 insert. * @par
102d0 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d am { Boolean }
102e0 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20 isVirtual - is
102f0 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67 it a virtual tag
10300 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 ?. */. functi
10310 6f 6e 20 69 6e 73 65 72 74 28 72 6f 6f 74 2c 20 on insert(root,
10320 6e 65 78 74 54 61 67 2c 20 69 73 56 69 72 74 75 nextTag, isVirtu
10330 61 6c 29 20 7b 0a 20 20 20 20 69 66 20 28 69 73 al) {. if (is
10340 56 69 72 74 75 61 6c 29 0a 20 20 20 20 20 20 7b Virtual). {
10350 20 6d 61 6b 65 56 69 72 74 75 61 6c 2e 61 70 70 makeVirtual.app
10360 6c 79 28 74 68 69 73 2c 20 5b 72 6f 6f 74 2c 20 ly(this, [root,
10370 6e 65 78 74 54 61 67 5d 29 3b 20 7d 0a 20 20 20 nextTag]); }.
10380 20 65 6c 73 65 0a 20 20 20 20 20 20 7b 20 73 61 else. { sa
10390 66 65 49 6e 73 65 72 74 28 72 6f 6f 74 2c 20 74 feInsert(root, t
103a0 68 69 73 2e 72 6f 6f 74 2c 20 6e 65 78 74 54 61 his.root, nextTa
103b0 67 2e 72 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a g.root); }. }..
103c0 20 20 2f 2a 2a 0a 20 20 20 2a 20 41 70 70 65 6e /**. * Appen
103d0 64 20 61 20 6e 65 77 20 74 61 67 20 69 6e 74 6f d a new tag into
103e0 20 74 68 65 20 44 4f 4d 0a 20 20 20 2a 20 40 74 the DOM. * @t
103f0 68 69 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 his Tag. * @pa
10400 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d ram { HTMLElem
10410 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 64 6f 6d ent } root - dom
10420 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 69 6e 67 node containing
10430 20 61 6c 6c 20 74 68 65 20 6c 6f 6f 70 20 63 68 all the loop ch
10440 69 6c 64 72 65 6e 0a 20 20 20 2a 20 40 70 61 72 ildren. * @par
10450 61 6d 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d am { Boolean }
10460 20 69 73 56 69 72 74 75 61 6c 20 2d 20 69 73 20 isVirtual - is
10470 69 74 20 61 20 76 69 72 74 75 61 6c 20 74 61 67 it a virtual tag
10480 3f 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 ?. */. functi
10490 6f 6e 20 61 70 70 65 6e 64 28 72 6f 6f 74 2c 20 on append(root,
104a0 69 73 56 69 72 74 75 61 6c 29 20 7b 0a 20 20 20 isVirtual) {.
104b0 20 69 66 20 28 69 73 56 69 72 74 75 61 6c 29 0a if (isVirtual).
104c0 20 20 20 20 20 20 7b 20 6d 61 6b 65 56 69 72 74 { makeVirt
104d0 75 61 6c 2e 63 61 6c 6c 28 74 68 69 73 2c 20 72 ual.call(this, r
104e0 6f 6f 74 29 3b 20 7d 0a 20 20 20 20 65 6c 73 65 oot); }. else
104f0 0a 20 20 20 20 20 20 7b 20 72 6f 6f 74 2e 61 70 . { root.ap
10500 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 72 pendChild(this.r
10510 6f 6f 74 29 3b 20 7d 0a 20 20 7d 0a 0a 20 20 2f oot); }. }.. /
10520 2a 2a 0a 20 20 20 2a 20 52 65 74 75 72 6e 20 74 **. * Return t
10530 68 65 20 76 61 6c 75 65 20 77 65 20 77 61 6e 74 he value we want
10540 20 74 6f 20 75 73 65 20 74 6f 20 6c 6f 6f 6b 75 to use to looku
10550 70 20 74 68 65 20 70 6f 73 74 69 6f 6e 20 6f 66 p the postion of
10560 20 6f 75 72 20 69 74 65 6d 73 20 69 6e 20 74 68 our items in th
10570 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 20 20 20 e collection.
10580 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 * @param { Str
10590 69 6e 67 20 7d 20 20 6b 65 79 41 74 74 72 20 20 ing } keyAttr
105a0 20 20 20 20 20 20 20 2d 20 6c 6f 6f 6b 75 70 20 - lookup
105b0 73 74 72 69 6e 67 20 6f 72 20 65 78 70 72 65 73 string or expres
105c0 73 69 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d sion. * @param
105d0 20 20 20 7b 20 2a 20 7d 20 20 20 20 20 20 20 6f { * } o
105e0 72 69 67 69 6e 61 6c 49 74 65 6d 20 20 20 20 2d riginalItem -
105f0 20 6f 72 69 67 69 6e 61 6c 20 69 74 65 6d 20 66 original item f
10600 72 6f 6d 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 rom the collecti
10610 6f 6e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 on. * @param
10620 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 6b 65 79 { Object } key
10630 65 64 49 74 65 6d 20 20 20 20 20 20 20 2d 20 6f edItem - o
10640 62 6a 65 63 74 20 63 72 65 61 74 65 64 20 62 79 bject created by
10650 20 72 69 6f 74 20 76 69 61 20 7b 20 69 74 65 6d riot via { item
10660 2c 20 69 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f , i in collectio
10670 6e 20 7d 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 n }. * @param
10680 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 68 61 { Boolean } ha
10690 73 4b 65 79 41 74 74 72 45 78 70 72 20 20 2d 20 sKeyAttrExpr -
106a0 66 6c 61 67 20 74 6f 20 63 68 65 63 6b 20 77 68 flag to check wh
106b0 65 74 68 65 72 20 74 68 65 20 6b 65 79 20 69 73 ether the key is
106c0 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 an expression.
106d0 20 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 2a * @returns { *
106e0 20 7d 20 76 61 6c 75 65 20 74 68 61 74 20 77 65 } value that we
106f0 20 77 69 6c 6c 20 75 73 65 20 74 6f 20 66 69 67 will use to fig
10700 75 72 65 20 6f 75 74 20 74 68 65 20 69 74 65 6d ure out the item
10710 20 70 6f 73 69 74 69 6f 6e 20 76 69 61 20 63 6f position via co
10720 6c 6c 65 63 74 69 6f 6e 2e 69 6e 64 65 78 4f 66 llection.indexOf
10730 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
10740 6e 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 41 n getItemId(keyA
10750 74 74 72 2c 20 6f 72 69 67 69 6e 61 6c 49 74 65 ttr, originalIte
10760 6d 2c 20 6b 65 79 65 64 49 74 65 6d 2c 20 68 61 m, keyedItem, ha
10770 73 4b 65 79 41 74 74 72 45 78 70 72 29 20 7b 0a sKeyAttrExpr) {.
10780 20 20 20 20 69 66 20 28 6b 65 79 41 74 74 72 29 if (keyAttr)
10790 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 {. return
107a0 68 61 73 4b 65 79 41 74 74 72 45 78 70 72 20 3f hasKeyAttrExpr ?
107b0 20 20 74 6d 70 6c 28 6b 65 79 41 74 74 72 2c 20 tmpl(keyAttr,
107c0 6b 65 79 65 64 49 74 65 6d 29 20 3a 20 20 6f 72 keyedItem) : or
107d0 69 67 69 6e 61 6c 49 74 65 6d 5b 6b 65 79 41 74 iginalItem[keyAt
107e0 74 72 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 tr]. }.. r
107f0 65 74 75 72 6e 20 6f 72 69 67 69 6e 61 6c 49 74 eturn originalIt
10800 65 6d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 em. }.. /**.
10810 20 2a 20 4d 61 6e 61 67 65 20 74 61 67 73 20 68 * Manage tags h
10820 61 76 69 6e 67 20 74 68 65 20 27 65 61 63 68 27 aving the 'each'
10830 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
10840 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 64 HTMLElement } d
10850 6f 6d 20 2d 20 44 4f 4d 20 6e 6f 64 65 20 77 65 om - DOM node we
10860 20 6e 65 65 64 20 74 6f 20 6c 6f 6f 70 0a 20 20 need to loop.
10870 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 54 61 * @param { Ta
10880 67 20 7d 20 70 61 72 65 6e 74 20 2d 20 70 61 72 g } parent - par
10890 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 65 ent tag instance
108a0 20 77 68 65 72 65 20 74 68 65 20 64 6f 6d 20 6e where the dom n
108b0 6f 64 65 20 69 73 20 63 6f 6e 74 61 69 6e 65 64 ode is contained
108c0 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 7b . * @param {
108d0 20 53 74 72 69 6e 67 20 7d 20 65 78 70 72 20 2d String } expr -
108e0 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 65 string containe
108f0 64 20 69 6e 20 74 68 65 20 27 65 61 63 68 27 20 d in the 'each'
10900 61 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 attribute. * @
10910 72 65 74 75 72 6e 73 20 7b 20 4f 62 6a 65 63 74 returns { Object
10920 20 7d 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 62 } expression ob
10930 6a 65 63 74 20 66 6f 72 20 74 68 69 73 20 65 61 ject for this ea
10940 63 68 20 6c 6f 6f 70 0a 20 20 20 2a 2f 0a 20 20 ch loop. */.
10950 66 75 6e 63 74 69 6f 6e 20 5f 65 61 63 68 28 64 function _each(d
10960 6f 6d 2c 20 70 61 72 65 6e 74 2c 20 65 78 70 72 om, parent, expr
10970 29 20 7b 0a 20 20 20 20 76 61 72 20 6d 75 73 74 ) {. var must
10980 52 65 6f 72 64 65 72 20 3d 20 74 79 70 65 6f 66 Reorder = typeof
10990 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f getAttribute(do
109a0 6d 2c 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 m, LOOP_NO_REORD
109b0 45 52 5f 44 49 52 45 43 54 49 56 45 29 20 21 3d ER_DIRECTIVE) !=
109c0 3d 20 54 5f 53 54 52 49 4e 47 20 7c 7c 20 72 65 = T_STRING || re
109d0 6d 6f 76 65 41 74 74 72 69 62 75 74 65 28 64 6f moveAttribute(do
109e0 6d 2c 20 4c 4f 4f 50 5f 4e 4f 5f 52 45 4f 52 44 m, LOOP_NO_REORD
109f0 45 52 5f 44 49 52 45 43 54 49 56 45 29 3b 0a 20 ER_DIRECTIVE);.
10a00 20 20 20 76 61 72 20 6b 65 79 41 74 74 72 20 3d var keyAttr =
10a10 20 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f getAttribute(do
10a20 6d 2c 20 4b 45 59 5f 44 49 52 45 43 54 49 56 45 m, KEY_DIRECTIVE
10a30 29 3b 0a 20 20 20 20 76 61 72 20 68 61 73 4b 65 );. var hasKe
10a40 79 41 74 74 72 45 78 70 72 20 3d 20 6b 65 79 41 yAttrExpr = keyA
10a50 74 74 72 20 3f 20 74 6d 70 6c 2e 68 61 73 45 78 ttr ? tmpl.hasEx
10a60 70 72 28 6b 65 79 41 74 74 72 29 20 3a 20 66 61 pr(keyAttr) : fa
10a70 6c 73 65 3b 0a 20 20 20 20 76 61 72 20 74 61 67 lse;. var tag
10a80 4e 61 6d 65 20 3d 20 67 65 74 4e 61 6d 65 28 64 Name = getName(d
10a90 6f 6d 29 3b 0a 20 20 20 20 76 61 72 20 69 6d 70 om);. var imp
10aa0 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 l = __TAG_IMPL[t
10ab0 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61 72 agName];. var
10ac0 20 70 61 72 65 6e 74 4e 6f 64 65 20 3d 20 64 6f parentNode = do
10ad0 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 20 m.parentNode;.
10ae0 20 20 76 61 72 20 70 6c 61 63 65 68 6f 6c 64 65 var placeholde
10af0 72 20 3d 20 63 72 65 61 74 65 44 4f 4d 50 6c 61 r = createDOMPla
10b00 63 65 68 6f 6c 64 65 72 28 29 3b 0a 20 20 20 20 ceholder();.
10b10 76 61 72 20 63 68 69 6c 64 20 3d 20 67 65 74 28 var child = get(
10b20 64 6f 6d 29 3b 0a 20 20 20 20 76 61 72 20 69 66 dom);. var if
10b30 45 78 70 72 20 3d 20 67 65 74 41 74 74 72 69 62 Expr = getAttrib
10b40 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 ute(dom, CONDITI
10b50 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56 45 29 3b ONAL_DIRECTIVE);
10b60 0a 20 20 20 20 76 61 72 20 74 61 67 73 20 3d 20 . var tags =
10b70 5b 5d 3b 0a 20 20 20 20 76 61 72 20 69 73 4c 6f [];. var isLo
10b80 6f 70 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 76 op = true;. v
10b90 61 72 20 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 64 ar innerHTML = d
10ba0 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c 3b 0a 20 20 om.innerHTML;.
10bb0 20 20 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 var isAnonymou
10bc0 73 20 3d 20 21 5f 5f 54 41 47 5f 49 4d 50 4c 5b s = !__TAG_IMPL[
10bd0 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 20 76 61 tagName];. va
10be0 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f r isVirtual = do
10bf0 6d 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56 m.tagName === 'V
10c00 49 52 54 55 41 4c 27 3b 0a 20 20 20 20 76 61 72 IRTUAL';. var
10c10 20 6f 6c 64 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a oldItems = [];.
10c20 0a 20 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 . // remove t
10c30 68 65 20 65 61 63 68 20 70 72 6f 70 65 72 74 79 he each property
10c40 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e from the origin
10c50 61 6c 20 74 61 67 0a 20 20 20 20 72 65 6d 6f 76 al tag. remov
10c60 65 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 eAttribute(dom,
10c70 4c 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 29 3b LOOP_DIRECTIVE);
10c80 0a 20 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69 . removeAttri
10c90 62 75 74 65 28 64 6f 6d 2c 20 4b 45 59 5f 44 49 bute(dom, KEY_DI
10ca0 52 45 43 54 49 56 45 29 3b 0a 0a 20 20 20 20 2f RECTIVE);.. /
10cb0 2f 20 70 61 72 73 65 20 74 68 65 20 65 61 63 68 / parse the each
10cc0 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 expression.
10cd0 65 78 70 72 20 3d 20 74 6d 70 6c 2e 6c 6f 6f 70 expr = tmpl.loop
10ce0 4b 65 79 73 28 65 78 70 72 29 3b 0a 20 20 20 20 Keys(expr);.
10cf0 65 78 70 72 2e 69 73 4c 6f 6f 70 20 3d 20 74 72 expr.isLoop = tr
10d00 75 65 3b 0a 0a 20 20 20 20 69 66 20 28 69 66 45 ue;.. if (ifE
10d10 78 70 72 29 20 7b 20 72 65 6d 6f 76 65 41 74 74 xpr) { removeAtt
10d20 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f 4e 44 ribute(dom, COND
10d30 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54 49 56 ITIONAL_DIRECTIV
10d40 45 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 69 6e E); }.. // in
10d50 73 65 72 74 20 61 20 6d 61 72 6b 65 64 20 77 68 sert a marked wh
10d60 65 72 65 20 74 68 65 20 6c 6f 6f 70 20 74 61 67 ere the loop tag
10d70 73 20 77 69 6c 6c 20 62 65 20 69 6e 6a 65 63 74 s will be inject
10d80 65 64 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f 64 ed. parentNod
10d90 65 2e 69 6e 73 65 72 74 42 65 66 6f 72 65 28 70 e.insertBefore(p
10da0 6c 61 63 65 68 6f 6c 64 65 72 2c 20 64 6f 6d 29 laceholder, dom)
10db0 3b 0a 20 20 20 20 70 61 72 65 6e 74 4e 6f 64 65 ;. parentNode
10dc0 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64 6f 6d .removeChild(dom
10dd0 29 3b 0a 0a 20 20 20 20 65 78 70 72 2e 75 70 64 );.. expr.upd
10de0 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 75 ate = function u
10df0 70 64 61 74 65 45 61 63 68 28 29 20 7b 0a 20 20 pdateEach() {.
10e00 20 20 20 20 2f 2f 20 67 65 74 20 74 68 65 20 6e // get the n
10e10 65 77 20 69 74 65 6d 73 20 63 6f 6c 6c 65 63 74 ew items collect
10e20 69 6f 6e 0a 20 20 20 20 20 20 65 78 70 72 2e 76 ion. expr.v
10e30 61 6c 75 65 20 3d 20 74 6d 70 6c 28 65 78 70 72 alue = tmpl(expr
10e40 2e 76 61 6c 2c 20 70 61 72 65 6e 74 29 3b 0a 0a .val, parent);..
10e50 20 20 20 20 20 20 76 61 72 20 69 74 65 6d 73 20 var items
10e60 3d 20 65 78 70 72 2e 76 61 6c 75 65 3b 0a 20 20 = expr.value;.
10e70 20 20 20 20 76 61 72 20 66 72 61 67 20 3d 20 63 var frag = c
10e80 72 65 61 74 65 46 72 61 67 6d 65 6e 74 28 29 3b reateFragment();
10e90 0a 20 20 20 20 20 20 76 61 72 20 69 73 4f 62 6a . var isObj
10ea0 65 63 74 20 3d 20 21 69 73 41 72 72 61 79 28 69 ect = !isArray(i
10eb0 74 65 6d 73 29 20 26 26 20 21 69 73 53 74 72 69 tems) && !isStri
10ec0 6e 67 28 69 74 65 6d 73 29 3b 0a 20 20 20 20 20 ng(items);.
10ed0 20 76 61 72 20 72 6f 6f 74 20 3d 20 70 6c 61 63 var root = plac
10ee0 65 68 6f 6c 64 65 72 2e 70 61 72 65 6e 74 4e 6f eholder.parentNo
10ef0 64 65 3b 0a 20 20 20 20 20 20 76 61 72 20 74 6d de;. var tm
10f00 70 49 74 65 6d 73 20 3d 20 5b 5d 3b 0a 20 20 20 pItems = [];.
10f10 20 20 20 76 61 72 20 68 61 73 4b 65 79 73 20 3d var hasKeys =
10f20 20 69 73 4f 62 6a 65 63 74 20 26 26 20 21 21 69 isObject && !!i
10f30 74 65 6d 73 3b 0a 0a 20 20 20 20 20 20 2f 2f 20 tems;.. //
10f40 69 66 20 74 68 69 73 20 44 4f 4d 20 77 61 73 20 if this DOM was
10f50 72 65 6d 6f 76 65 64 20 74 68 65 20 75 70 64 61 removed the upda
10f60 74 65 20 68 65 72 65 20 69 73 20 75 73 65 6c 65 te here is usele
10f70 73 73 0a 20 20 20 20 20 20 2f 2f 20 74 68 69 73 ss. // this
10f80 20 63 6f 6e 64 69 74 69 6f 6e 20 66 69 78 65 73 condition fixes
10f90 20 61 6c 73 6f 20 61 20 77 65 69 72 64 20 61 73 also a weird as
10fa0 79 6e 63 20 69 73 73 75 65 20 6f 6e 20 49 45 20 ync issue on IE
10fb0 69 6e 20 6f 75 72 20 75 6e 69 74 20 74 65 73 74 in our unit test
10fc0 0a 20 20 20 20 20 20 69 66 20 28 21 72 6f 6f 74 . if (!root
10fd0 29 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 ) { return }..
10fe0 20 20 20 20 2f 2f 20 6f 62 6a 65 63 74 20 6c 6f // object lo
10ff0 6f 70 2e 20 61 6e 79 20 63 68 61 6e 67 65 73 20 op. any changes
11000 63 61 75 73 65 20 66 75 6c 6c 20 72 65 64 72 61 cause full redra
11010 77 0a 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 w. if (isOb
11020 6a 65 63 74 29 20 7b 0a 20 20 20 20 20 20 20 20 ject) {.
11030 69 74 65 6d 73 20 3d 20 69 74 65 6d 73 20 3f 20 items = items ?
11040 4f 62 6a 65 63 74 2e 6b 65 79 73 28 69 74 65 6d Object.keys(item
11050 73 29 2e 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 s).map(function
11060 28 6b 65 79 29 20 7b 20 72 65 74 75 72 6e 20 6d (key) { return m
11070 6b 69 74 65 6d 28 65 78 70 72 2c 20 69 74 65 6d kitem(expr, item
11080 73 5b 6b 65 79 5d 2c 20 6b 65 79 29 3b 20 7d 29 s[key], key); })
11090 20 3a 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a : [];. }..
110a0 20 20 20 20 20 20 2f 2f 20 73 74 6f 72 65 20 74 // store t
110b0 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 66 69 6c he amount of fil
110c0 74 65 72 65 64 20 69 74 65 6d 73 0a 20 20 20 20 tered items.
110d0 20 20 76 61 72 20 66 69 6c 74 65 72 65 64 49 74 var filteredIt
110e0 65 6d 73 43 6f 75 6e 74 20 3d 20 30 3b 0a 0a 20 emsCount = 0;..
110f0 20 20 20 20 20 2f 2f 20 6c 6f 6f 70 20 61 6c 6c // loop all
11100 20 74 68 65 20 6e 65 77 20 69 74 65 6d 73 0a 20 the new items.
11110 20 20 20 20 20 65 61 63 68 28 69 74 65 6d 73 2c each(items,
11120 20 66 75 6e 63 74 69 6f 6e 20 28 5f 69 74 65 6d function (_item
11130 2c 20 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 , index) {.
11140 20 20 20 76 61 72 20 69 20 3d 20 69 6e 64 65 78 var i = index
11150 20 2d 20 66 69 6c 74 65 72 65 64 49 74 65 6d 73 - filteredItems
11160 43 6f 75 6e 74 3b 0a 20 20 20 20 20 20 20 20 76 Count;. v
11170 61 72 20 69 74 65 6d 20 3d 20 21 68 61 73 4b 65 ar item = !hasKe
11180 79 73 20 26 26 20 65 78 70 72 2e 6b 65 79 20 3f ys && expr.key ?
11190 20 6d 6b 69 74 65 6d 28 65 78 70 72 2c 20 5f 69 mkitem(expr, _i
111a0 74 65 6d 2c 20 69 6e 64 65 78 29 20 3a 20 5f 69 tem, index) : _i
111b0 74 65 6d 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f tem;.. //
111c0 20 73 6b 69 70 20 74 68 69 73 20 69 74 65 6d 20 skip this item
111d0 62 65 63 61 75 73 65 20 69 74 20 6d 75 73 74 20 because it must
111e0 62 65 20 66 69 6c 74 65 72 65 64 0a 20 20 20 20 be filtered.
111f0 20 20 20 20 69 66 20 28 69 66 45 78 70 72 20 26 if (ifExpr &
11200 26 20 21 74 6d 70 6c 28 69 66 45 78 70 72 2c 20 & !tmpl(ifExpr,
11210 65 78 74 65 6e 64 28 63 72 65 61 74 65 28 70 61 extend(create(pa
11220 72 65 6e 74 29 2c 20 69 74 65 6d 29 29 29 20 7b rent), item))) {
11230 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 74 65 . filte
11240 72 65 64 49 74 65 6d 73 43 6f 75 6e 74 20 2b 2b redItemsCount ++
11250 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ;. retu
11260 72 6e 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 rn. }..
11270 20 20 20 20 20 20 76 61 72 20 69 74 65 6d 49 64 var itemId
11280 20 3d 20 67 65 74 49 74 65 6d 49 64 28 6b 65 79 = getItemId(key
11290 41 74 74 72 2c 20 5f 69 74 65 6d 2c 20 69 74 65 Attr, _item, ite
112a0 6d 2c 20 68 61 73 4b 65 79 41 74 74 72 45 78 70 m, hasKeyAttrExp
112b0 72 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 r);. // r
112c0 65 6f 72 64 65 72 20 6f 6e 6c 79 20 69 66 20 74 eorder only if t
112d0 68 65 20 69 74 65 6d 73 20 61 72 65 20 6e 6f 74 he items are not
112e0 20 6f 62 6a 65 63 74 73 0a 20 20 20 20 20 20 20 objects.
112f0 20 2f 2f 20 6f 72 20 61 20 6b 65 79 20 61 74 74 // or a key att
11300 72 69 62 75 74 65 20 68 61 73 20 62 65 65 6e 20 ribute has been
11310 70 72 6f 76 69 64 65 64 0a 20 20 20 20 20 20 20 provided.
11320 20 76 61 72 20 64 6f 52 65 6f 72 64 65 72 20 3d var doReorder =
11330 20 21 69 73 4f 62 6a 65 63 74 20 26 26 20 6d 75 !isObject && mu
11340 73 74 52 65 6f 72 64 65 72 20 26 26 20 74 79 70 stReorder && typ
11350 65 6f 66 20 5f 69 74 65 6d 20 3d 3d 3d 20 54 5f eof _item === T_
11360 4f 42 4a 45 43 54 20 7c 7c 20 6b 65 79 41 74 74 OBJECT || keyAtt
11370 72 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6f r;. var o
11380 6c 64 50 6f 73 20 3d 20 6f 6c 64 49 74 65 6d 73 ldPos = oldItems
11390 2e 69 6e 64 65 78 4f 66 28 69 74 65 6d 49 64 29 .indexOf(itemId)
113a0 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 73 ;. var is
113b0 4e 65 77 20 3d 20 6f 6c 64 50 6f 73 20 3d 3d 3d New = oldPos ===
113c0 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72 -1;. var
113d0 20 70 6f 73 20 3d 20 21 69 73 4e 65 77 20 26 26 pos = !isNew &&
113e0 20 64 6f 52 65 6f 72 64 65 72 20 3f 20 6f 6c 64 doReorder ? old
113f0 50 6f 73 20 3a 20 69 3b 0a 20 20 20 20 20 20 20 Pos : i;.
11400 20 2f 2f 20 64 6f 65 73 20 61 20 74 61 67 20 65 // does a tag e
11410 78 69 73 74 20 69 6e 20 74 68 69 73 20 70 6f 73 xist in this pos
11420 69 74 69 6f 6e 3f 0a 20 20 20 20 20 20 20 20 76 ition?. v
11430 61 72 20 74 61 67 20 3d 20 74 61 67 73 5b 70 6f ar tag = tags[po
11440 73 5d 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 s];. var
11450 6d 75 73 74 41 70 70 65 6e 64 20 3d 20 69 20 3e mustAppend = i >
11460 3d 20 6f 6c 64 49 74 65 6d 73 2e 6c 65 6e 67 74 = oldItems.lengt
11470 68 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d h;. var m
11480 75 73 74 43 72 65 61 74 65 20 3d 20 64 6f 52 65 ustCreate = doRe
11490 6f 72 64 65 72 20 26 26 20 69 73 4e 65 77 20 7c order && isNew |
114a0 7c 20 21 64 6f 52 65 6f 72 64 65 72 20 26 26 20 | !doReorder &&
114b0 21 74 61 67 20 7c 7c 20 21 74 61 67 73 5b 69 5d !tag || !tags[i]
114c0 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 6e 65 ;.. // ne
114d0 77 20 74 61 67 0a 20 20 20 20 20 20 20 20 69 66 w tag. if
114e0 20 28 6d 75 73 74 43 72 65 61 74 65 29 20 7b 0a (mustCreate) {.
114f0 20 20 20 20 20 20 20 20 20 20 74 61 67 20 3d 20 tag =
11500 63 72 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20 createTag(impl,
11510 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 {. pa
11520 72 65 6e 74 3a 20 70 61 72 65 6e 74 2c 0a 20 20 rent: parent,.
11530 20 20 20 20 20 20 20 20 20 20 69 73 4c 6f 6f 70 isLoop
11540 3a 20 69 73 4c 6f 6f 70 2c 0a 20 20 20 20 20 20 : isLoop,.
11550 20 20 20 20 20 20 69 73 41 6e 6f 6e 79 6d 6f 75 isAnonymou
11560 73 3a 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 2c 0a s: isAnonymous,.
11570 20 20 20 20 20 20 20 20 20 20 20 20 74 61 67 4e tagN
11580 61 6d 65 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 ame: tagName,.
11590 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 3a 20 root:
115a0 64 6f 6d 2e 63 6c 6f 6e 65 4e 6f 64 65 28 69 73 dom.cloneNode(is
115b0 41 6e 6f 6e 79 6d 6f 75 73 29 2c 0a 20 20 20 20 Anonymous),.
115c0 20 20 20 20 20 20 20 20 69 74 65 6d 3a 20 69 74 item: it
115d0 65 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 em,.
115e0 69 6e 64 65 78 3a 20 69 2c 0a 20 20 20 20 20 20 index: i,.
115f0 20 20 20 20 7d 2c 20 69 6e 6e 65 72 48 54 4d 4c }, innerHTML
11600 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f );.. //
11610 20 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 0a 20 mount the tag.
11620 20 20 20 20 20 20 20 20 20 74 61 67 2e 6d 6f 75 tag.mou
11630 6e 74 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 nt();..
11640 20 69 66 20 28 6d 75 73 74 41 70 70 65 6e 64 29 if (mustAppend)
11650 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 61 . { a
11660 70 70 65 6e 64 2e 61 70 70 6c 79 28 74 61 67 2c ppend.apply(tag,
11670 20 5b 66 72 61 67 20 7c 7c 20 72 6f 6f 74 2c 20 [frag || root,
11680 69 73 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 20 isVirtual]); }.
11690 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 else.
116a0 20 20 20 20 20 20 20 20 20 20 7b 20 69 6e 73 65 { inse
116b0 72 74 2e 61 70 70 6c 79 28 74 61 67 2c 20 5b 72 rt.apply(tag, [r
116c0 6f 6f 74 2c 20 74 61 67 73 5b 69 5d 2c 20 69 73 oot, tags[i], is
116d0 56 69 72 74 75 61 6c 5d 29 3b 20 7d 0a 0a 20 20 Virtual]); }..
116e0 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 if (!mus
116f0 74 41 70 70 65 6e 64 29 20 7b 20 6f 6c 64 49 74 tAppend) { oldIt
11700 65 6d 73 2e 73 70 6c 69 63 65 28 69 2c 20 30 2c ems.splice(i, 0,
11710 20 69 74 65 6d 29 3b 20 7d 0a 20 20 20 20 20 20 item); }.
11720 20 20 20 20 74 61 67 73 2e 73 70 6c 69 63 65 28 tags.splice(
11730 69 2c 20 30 2c 20 74 61 67 29 3b 0a 20 20 20 20 i, 0, tag);.
11740 20 20 20 20 20 20 69 66 20 28 63 68 69 6c 64 29 if (child)
11750 20 7b 20 61 72 72 61 79 69 73 68 41 64 64 28 70 { arrayishAdd(p
11760 61 72 65 6e 74 2e 74 61 67 73 2c 20 74 61 67 4e arent.tags, tagN
11770 61 6d 65 2c 20 74 61 67 2c 20 74 72 75 65 29 3b ame, tag, true);
11780 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 }. } els
11790 65 20 69 66 20 28 70 6f 73 20 21 3d 3d 20 69 20 e if (pos !== i
117a0 26 26 20 64 6f 52 65 6f 72 64 65 72 29 20 7b 0a && doReorder) {.
117b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 76 // mov
117c0 65 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 e. if (
117d0 6b 65 79 41 74 74 72 20 7c 7c 20 63 6f 6e 74 61 keyAttr || conta
117e0 69 6e 73 28 69 74 65 6d 73 2c 20 6f 6c 64 49 74 ins(items, oldIt
117f0 65 6d 73 5b 70 6f 73 5d 29 29 20 7b 0a 20 20 20 ems[pos])) {.
11800 20 20 20 20 20 20 20 20 20 6d 6f 76 65 2e 61 70 move.ap
11810 70 6c 79 28 74 61 67 2c 20 5b 72 6f 6f 74 2c 20 ply(tag, [root,
11820 74 61 67 73 5b 69 5d 2c 20 69 73 56 69 72 74 75 tags[i], isVirtu
11830 61 6c 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 al]);.
11840 20 20 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c // move the ol
11850 64 20 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 d tag instance.
11860 20 20 20 20 20 20 20 20 20 20 20 74 61 67 73 2e tags.
11870 73 70 6c 69 63 65 28 69 2c 20 30 2c 20 74 61 67 splice(i, 0, tag
11880 73 2e 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 s.splice(pos, 1)
11890 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 [0]);.
118a0 20 20 2f 2f 20 6d 6f 76 65 20 74 68 65 20 6f 6c // move the ol
118b0 64 20 69 74 65 6d 0a 20 20 20 20 20 20 20 20 20 d item.
118c0 20 20 20 6f 6c 64 49 74 65 6d 73 2e 73 70 6c 69 oldItems.spli
118d0 63 65 28 69 2c 20 30 2c 20 6f 6c 64 49 74 65 6d ce(i, 0, oldItem
118e0 73 2e 73 70 6c 69 63 65 28 70 6f 73 2c 20 31 29 s.splice(pos, 1)
118f0 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 [0]);.
11900 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 }.. //
11910 75 70 64 61 74 65 20 74 68 65 20 70 6f 73 69 74 update the posit
11920 69 6f 6e 20 61 74 74 72 69 62 75 74 65 20 69 66 ion attribute if
11930 20 69 74 20 65 78 69 73 74 73 0a 20 20 20 20 20 it exists.
11940 20 20 20 20 20 69 66 20 28 65 78 70 72 2e 70 6f if (expr.po
11950 73 29 20 7b 20 74 61 67 5b 65 78 70 72 2e 70 6f s) { tag[expr.po
11960 73 5d 20 3d 20 69 3b 20 7d 0a 0a 20 20 20 20 20 s] = i; }..
11970 20 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 6c // if the l
11980 6f 6f 70 20 74 61 67 73 20 61 72 65 20 6e 6f 74 oop tags are not
11990 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 custom.
119a0 20 20 2f 2f 20 77 65 20 6e 65 65 64 20 74 6f 20 // we need to
119b0 6d 6f 76 65 20 61 6c 6c 20 74 68 65 69 72 20 63 move all their c
119c0 75 73 74 6f 6d 20 74 61 67 73 20 69 6e 74 6f 20 ustom tags into
119d0 74 68 65 20 72 69 67 68 74 20 70 6f 73 69 74 69 the right positi
119e0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 on. if
119f0 28 21 63 68 69 6c 64 20 26 26 20 74 61 67 2e 74 (!child && tag.t
11a00 61 67 73 29 20 7b 20 6d 6f 76 65 4e 65 73 74 65 ags) { moveNeste
11a10 64 54 61 67 73 2e 63 61 6c 6c 28 74 61 67 2c 20 dTags.call(tag,
11a20 69 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a i); }. }.
11a30 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 61 63 68 . // cach
11a40 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 e the original i
11a50 74 65 6d 20 74 6f 20 75 73 65 20 69 74 20 69 6e tem to use it in
11a60 20 74 68 65 20 65 76 65 6e 74 73 20 62 6f 75 6e the events boun
11a70 64 20 74 6f 20 74 68 69 73 20 6e 6f 64 65 0a 20 d to this node.
11a80 20 20 20 20 20 20 20 2f 2f 20 61 6e 64 20 69 74 // and it
11a90 73 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 20 s children.
11aa0 20 20 20 65 78 74 65 6e 64 28 74 61 67 2e 5f 5f extend(tag.__
11ab0 2c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 74 , {. it
11ac0 65 6d 3a 20 69 74 65 6d 2c 0a 20 20 20 20 20 20 em: item,.
11ad0 20 20 20 20 69 6e 64 65 78 3a 20 69 2c 0a 20 20 index: i,.
11ae0 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 parent:
11af0 70 61 72 65 6e 74 0a 20 20 20 20 20 20 20 20 7d parent. }
11b00 29 3b 0a 0a 20 20 20 20 20 20 20 20 74 6d 70 49 );.. tmpI
11b10 74 65 6d 73 5b 69 5d 20 3d 20 69 74 65 6d 49 64 tems[i] = itemId
11b20 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 ;.. if (!
11b30 6d 75 73 74 43 72 65 61 74 65 29 20 7b 20 74 61 mustCreate) { ta
11b40 67 2e 75 70 64 61 74 65 28 69 74 65 6d 29 3b 20 g.update(item);
11b50 7d 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 }. });..
11b60 20 20 20 2f 2f 20 72 65 6d 6f 76 65 20 74 68 65 // remove the
11b70 20 72 65 64 75 6e 64 61 6e 74 20 74 61 67 73 0a redundant tags.
11b80 20 20 20 20 20 20 75 6e 6d 6f 75 6e 74 52 65 64 unmountRed
11b90 75 6e 64 61 6e 74 28 69 74 65 6d 73 2c 20 74 61 undant(items, ta
11ba0 67 73 2c 20 66 69 6c 74 65 72 65 64 49 74 65 6d gs, filteredItem
11bb0 73 43 6f 75 6e 74 29 3b 0a 0a 20 20 20 20 20 20 sCount);..
11bc0 2f 2f 20 63 6c 6f 6e 65 20 74 68 65 20 69 74 65 // clone the ite
11bd0 6d 73 20 61 72 72 61 79 0a 20 20 20 20 20 20 6f ms array. o
11be0 6c 64 49 74 65 6d 73 20 3d 20 74 6d 70 49 74 65 ldItems = tmpIte
11bf0 6d 73 2e 73 6c 69 63 65 28 29 3b 0a 0a 20 20 20 ms.slice();..
11c00 20 20 20 72 6f 6f 74 2e 69 6e 73 65 72 74 42 65 root.insertBe
11c10 66 6f 72 65 28 66 72 61 67 2c 20 70 6c 61 63 65 fore(frag, place
11c20 68 6f 6c 64 65 72 29 3b 0a 20 20 20 20 7d 3b 0a holder);. };.
11c30 0a 20 20 20 20 65 78 70 72 2e 75 6e 6d 6f 75 6e . expr.unmoun
11c40 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 t = function ()
11c50 7b 0a 20 20 20 20 20 20 65 61 63 68 28 74 61 67 {. each(tag
11c60 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 s, function (t)
11c70 7b 20 74 2e 75 6e 6d 6f 75 6e 74 28 29 3b 20 7d { t.unmount(); }
11c80 29 3b 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72 );. };.. r
11c90 65 74 75 72 6e 20 65 78 70 72 0a 20 20 7d 0a 0a eturn expr. }..
11ca0 20 20 76 61 72 20 52 65 66 45 78 70 72 20 3d 20 var RefExpr =
11cb0 7b 0a 20 20 20 20 69 6e 69 74 3a 20 66 75 6e 63 {. init: func
11cc0 74 69 6f 6e 20 69 6e 69 74 28 64 6f 6d 2c 20 70 tion init(dom, p
11cd0 61 72 65 6e 74 2c 20 61 74 74 72 4e 61 6d 65 2c arent, attrName,
11ce0 20 61 74 74 72 56 61 6c 75 65 29 20 7b 0a 20 20 attrValue) {.
11cf0 20 20 20 20 74 68 69 73 2e 64 6f 6d 20 3d 20 64 this.dom = d
11d00 6f 6d 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 61 om;. this.a
11d10 74 74 72 20 3d 20 61 74 74 72 4e 61 6d 65 3b 0a ttr = attrName;.
11d20 20 20 20 20 20 20 74 68 69 73 2e 72 61 77 56 61 this.rawVa
11d30 6c 75 65 20 3d 20 61 74 74 72 56 61 6c 75 65 3b lue = attrValue;
11d40 0a 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 65 . this.pare
11d50 6e 74 20 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 nt = parent;.
11d60 20 20 20 74 68 69 73 2e 68 61 73 45 78 70 20 3d this.hasExp =
11d70 20 74 6d 70 6c 2e 68 61 73 45 78 70 72 28 61 74 tmpl.hasExpr(at
11d80 74 72 56 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 trValue);.
11d90 72 65 74 75 72 6e 20 74 68 69 73 0a 20 20 20 20 return this.
11da0 7d 2c 0a 20 20 20 20 75 70 64 61 74 65 3a 20 66 },. update: f
11db0 75 6e 63 74 69 6f 6e 20 75 70 64 61 74 65 28 29 unction update()
11dc0 20 7b 0a 20 20 20 20 20 20 76 61 72 20 6f 6c 64 {. var old
11dd0 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 3b 0a 20 = this.value;.
11de0 20 20 20 20 20 76 61 72 20 63 75 73 74 6f 6d 50 var customP
11df0 61 72 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 arent = this.par
11e00 65 6e 74 20 26 26 20 67 65 74 49 6d 6d 65 64 69 ent && getImmedi
11e10 61 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 ateCustomParent(
11e20 74 68 69 73 2e 70 61 72 65 6e 74 29 3b 0a 20 20 this.parent);.
11e30 20 20 20 20 2f 2f 20 69 66 20 74 68 65 20 72 65 // if the re
11e40 66 65 72 65 6e 63 65 64 20 65 6c 65 6d 65 6e 74 ferenced element
11e50 20 69 73 20 61 20 63 75 73 74 6f 6d 20 74 61 67 is a custom tag
11e60 2c 20 74 68 65 6e 20 77 65 20 73 65 74 20 74 68 , then we set th
11e70 65 20 74 61 67 20 69 74 73 65 6c 66 2c 20 72 61 e tag itself, ra
11e80 74 68 65 72 20 74 68 61 6e 20 44 4f 4d 0a 20 20 ther than DOM.
11e90 20 20 20 20 76 61 72 20 74 61 67 4f 72 44 6f 6d var tagOrDom
11ea0 20 3d 20 74 68 69 73 2e 64 6f 6d 2e 5f 5f 72 65 = this.dom.__re
11eb0 66 20 7c 7c 20 74 68 69 73 2e 74 61 67 20 7c 7c f || this.tag ||
11ec0 20 74 68 69 73 2e 64 6f 6d 3b 0a 0a 20 20 20 20 this.dom;..
11ed0 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74 this.value = t
11ee0 68 69 73 2e 68 61 73 45 78 70 20 3f 20 74 6d 70 his.hasExp ? tmp
11ef0 6c 28 74 68 69 73 2e 72 61 77 56 61 6c 75 65 2c l(this.rawValue,
11f00 20 74 68 69 73 2e 70 61 72 65 6e 74 29 20 3a 20 this.parent) :
11f10 74 68 69 73 2e 72 61 77 56 61 6c 75 65 3b 0a 0a this.rawValue;..
11f20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6e 61 6d // the nam
11f30 65 20 63 68 61 6e 67 65 64 2c 20 73 6f 20 77 65 e changed, so we
11f40 20 6e 65 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 need to remove
11f50 69 74 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20 it from the old
11f60 6b 65 79 20 28 69 66 20 70 72 65 73 65 6e 74 29 key (if present)
11f70 0a 20 20 20 20 20 20 69 66 20 28 21 69 73 42 6c . if (!isBl
11f80 61 6e 6b 28 6f 6c 64 29 20 26 26 20 63 75 73 74 ank(old) && cust
11f90 6f 6d 50 61 72 65 6e 74 29 20 7b 20 61 72 72 61 omParent) { arra
11fa0 79 69 73 68 52 65 6d 6f 76 65 28 63 75 73 74 6f yishRemove(custo
11fb0 6d 50 61 72 65 6e 74 2e 72 65 66 73 2c 20 6f 6c mParent.refs, ol
11fc0 64 2c 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d 0a d, tagOrDom); }.
11fd0 20 20 20 20 20 20 69 66 20 28 21 69 73 42 6c 61 if (!isBla
11fe0 6e 6b 28 74 68 69 73 2e 76 61 6c 75 65 29 20 26 nk(this.value) &
11ff0 26 20 69 73 53 74 72 69 6e 67 28 74 68 69 73 2e & isString(this.
12000 76 61 6c 75 65 29 29 20 7b 0a 20 20 20 20 20 20 value)) {.
12010 20 20 2f 2f 20 61 64 64 20 69 74 20 74 6f 20 74 // add it to t
12020 68 65 20 72 65 66 73 20 6f 66 20 70 61 72 65 6e he refs of paren
12030 74 20 74 61 67 20 28 74 68 69 73 20 62 65 68 61 t tag (this beha
12040 76 69 6f 72 20 77 61 73 20 63 68 61 6e 67 65 64 vior was changed
12050 20 3e 3d 33 2e 30 29 0a 20 20 20 20 20 20 20 20 >=3.0).
12060 69 66 20 28 63 75 73 74 6f 6d 50 61 72 65 6e 74 if (customParent
12070 29 20 7b 20 61 72 72 61 79 69 73 68 41 64 64 28 ) { arrayishAdd(
12080 0a 20 20 20 20 20 20 20 20 20 20 63 75 73 74 6f . custo
12090 6d 50 61 72 65 6e 74 2e 72 65 66 73 2c 0a 20 20 mParent.refs,.
120a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c this.val
120b0 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 74 61 ue,. ta
120c0 67 4f 72 44 6f 6d 2c 0a 20 20 20 20 20 20 20 20 gOrDom,.
120d0 20 20 2f 2f 20 75 73 65 20 61 6e 20 61 72 72 61 // use an arra
120e0 79 20 69 66 20 69 74 27 73 20 61 20 6c 6f 6f 70 y if it's a loop
120f0 65 64 20 6e 6f 64 65 20 61 6e 64 20 74 68 65 20 ed node and the
12100 72 65 66 20 69 73 20 6e 6f 74 20 61 6e 20 65 78 ref is not an ex
12110 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 pression.
12120 20 20 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 null,.
12130 20 20 20 74 68 69 73 2e 70 61 72 65 6e 74 2e 5f this.parent._
12140 5f 2e 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 _.index.
12150 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 ); }.. if
12160 20 28 74 68 69 73 2e 76 61 6c 75 65 20 21 3d 3d (this.value !==
12170 20 6f 6c 64 29 20 7b 0a 20 20 20 20 20 20 20 20 old) {.
12180 20 20 73 65 74 41 74 74 72 69 62 75 74 65 28 74 setAttribute(t
12190 68 69 73 2e 64 6f 6d 2c 20 74 68 69 73 2e 61 74 his.dom, this.at
121a0 74 72 2c 20 74 68 69 73 2e 76 61 6c 75 65 29 3b tr, this.value);
121b0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
121c0 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
121d0 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 75 74 removeAttribut
121e0 65 28 74 68 69 73 2e 64 6f 6d 2c 20 74 68 69 73 e(this.dom, this
121f0 2e 61 74 74 72 29 3b 0a 20 20 20 20 20 20 7d 0a .attr);. }.
12200 0a 20 20 20 20 20 20 2f 2f 20 63 61 63 68 65 20 . // cache
12210 74 68 65 20 72 65 66 20 62 6f 75 6e 64 20 74 6f the ref bound to
12220 20 74 68 69 73 20 64 6f 6d 20 6e 6f 64 65 0a 20 this dom node.
12230 20 20 20 20 20 2f 2f 20 74 6f 20 72 65 75 73 65 // to reuse
12240 20 69 74 20 69 6e 20 66 75 74 75 72 65 20 28 73 it in future (s
12250 65 65 20 61 6c 73 6f 20 23 32 33 32 39 29 0a 20 ee also #2329).
12260 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 64 if (!this.d
12270 6f 6d 2e 5f 5f 72 65 66 29 20 7b 20 74 68 69 73 om.__ref) { this
12280 2e 64 6f 6d 2e 5f 5f 72 65 66 20 3d 20 74 61 67 .dom.__ref = tag
12290 4f 72 44 6f 6d 3b 20 7d 0a 20 20 20 20 7d 2c 0a OrDom; }. },.
122a0 20 20 20 20 75 6e 6d 6f 75 6e 74 3a 20 66 75 6e unmount: fun
122b0 63 74 69 6f 6e 20 75 6e 6d 6f 75 6e 74 28 29 20 ction unmount()
122c0 7b 0a 20 20 20 20 20 20 76 61 72 20 74 61 67 4f {. var tagO
122d0 72 44 6f 6d 20 3d 20 74 68 69 73 2e 74 61 67 20 rDom = this.tag
122e0 7c 7c 20 74 68 69 73 2e 64 6f 6d 3b 0a 20 20 20 || this.dom;.
122f0 20 20 20 76 61 72 20 63 75 73 74 6f 6d 50 61 72 var customPar
12300 65 6e 74 20 3d 20 74 68 69 73 2e 70 61 72 65 6e ent = this.paren
12310 74 20 26 26 20 67 65 74 49 6d 6d 65 64 69 61 74 t && getImmediat
12320 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 74 68 eCustomParent(th
12330 69 73 2e 70 61 72 65 6e 74 29 3b 0a 20 20 20 20 is.parent);.
12340 20 20 69 66 20 28 21 69 73 42 6c 61 6e 6b 28 74 if (!isBlank(t
12350 68 69 73 2e 76 61 6c 75 65 29 20 26 26 20 63 75 his.value) && cu
12360 73 74 6f 6d 50 61 72 65 6e 74 29 0a 20 20 20 20 stomParent).
12370 20 20 20 20 7b 20 61 72 72 61 79 69 73 68 52 65 { arrayishRe
12380 6d 6f 76 65 28 63 75 73 74 6f 6d 50 61 72 65 6e move(customParen
12390 74 2e 72 65 66 73 2c 20 74 68 69 73 2e 76 61 6c t.refs, this.val
123a0 75 65 2c 20 74 61 67 4f 72 44 6f 6d 29 3b 20 7d ue, tagOrDom); }
123b0 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a 0a 20 20 2f . }. };.. /
123c0 2a 2a 0a 20 20 20 2a 20 43 72 65 61 74 65 20 61 **. * Create a
123d0 20 6e 65 77 20 72 65 66 20 64 69 72 65 63 74 69 new ref directi
123e0 76 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 ve. * @param
123f0 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d { HTMLElement }
12400 20 64 6f 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 dom - dom node
12410 68 61 76 69 6e 67 20 74 68 65 20 72 65 66 20 61 having the ref a
12420 74 74 72 69 62 75 74 65 0a 20 20 20 2a 20 40 70 ttribute. * @p
12430 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d 20 63 aram { Tag } c
12440 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69 6e 73 ontext - tag ins
12450 74 61 6e 63 65 20 77 68 65 72 65 20 74 68 65 20 tance where the
12460 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f 63 61 DOM node is loca
12470 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ted. * @param
12480 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 { String } att
12490 72 4e 61 6d 65 20 2d 20 65 69 74 68 65 72 20 27 rName - either '
124a0 72 65 66 27 20 6f 72 20 27 64 61 74 61 2d 72 65 ref' or 'data-re
124b0 66 27 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 f'. * @param
124c0 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 74 74 72 { String } attr
124d0 56 61 6c 75 65 20 2d 20 76 61 6c 75 65 20 6f 66 Value - value of
124e0 20 74 68 65 20 72 65 66 20 61 74 74 72 69 62 75 the ref attribu
124f0 74 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 te. * @returns
12500 20 7b 20 52 65 66 45 78 70 72 20 7d 20 61 20 6e { RefExpr } a n
12510 65 77 20 52 65 66 45 78 70 72 20 6f 62 6a 65 63 ew RefExpr objec
12520 74 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 t. */. functi
12530 6f 6e 20 63 72 65 61 74 65 52 65 66 44 69 72 65 on createRefDire
12540 63 74 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20 ctive(dom, tag,
12550 61 74 74 72 4e 61 6d 65 2c 20 61 74 74 72 56 61 attrName, attrVa
12560 6c 75 65 29 20 7b 0a 20 20 20 20 72 65 74 75 72 lue) {. retur
12570 6e 20 63 72 65 61 74 65 28 52 65 66 45 78 70 72 n create(RefExpr
12580 29 2e 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c ).init(dom, tag,
12590 20 61 74 74 72 4e 61 6d 65 2c 20 61 74 74 72 56 attrName, attrV
125a0 61 6c 75 65 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a alue). }.. /**
125b0 0a 20 20 20 2a 20 54 72 69 67 67 65 72 20 74 68 . * Trigger th
125c0 65 20 75 6e 6d 6f 75 6e 74 20 6d 65 74 68 6f 64 e unmount method
125d0 20 6f 6e 20 61 6c 6c 20 74 68 65 20 65 78 70 72 on all the expr
125e0 65 73 73 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 essions. * @pa
125f0 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 ram { Array }
12600 65 78 70 72 65 73 73 69 6f 6e 73 20 2d 20 44 4f expressions - DO
12610 4d 20 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 M expressions.
12620 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 75 */. function u
12630 6e 6d 6f 75 6e 74 41 6c 6c 28 65 78 70 72 65 73 nmountAll(expres
12640 73 69 6f 6e 73 29 20 7b 0a 20 20 20 20 65 61 63 sions) {. eac
12650 68 28 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 66 h(expressions, f
12660 75 6e 63 74 69 6f 6e 20 28 65 78 70 72 29 20 7b unction (expr) {
12670 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 72 2e . if (expr.
12680 75 6e 6d 6f 75 6e 74 29 20 7b 20 65 78 70 72 2e unmount) { expr.
12690 75 6e 6d 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d unmount(true); }
126a0 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 . else if (
126b0 65 78 70 72 2e 74 61 67 4e 61 6d 65 29 20 7b 20 expr.tagName) {
126c0 65 78 70 72 2e 74 61 67 2e 75 6e 6d 6f 75 6e 74 expr.tag.unmount
126d0 28 74 72 75 65 29 3b 20 7d 0a 20 20 20 20 20 20 (true); }.
126e0 65 6c 73 65 20 69 66 20 28 65 78 70 72 2e 75 6e else if (expr.un
126f0 6d 6f 75 6e 74 29 20 7b 20 65 78 70 72 2e 75 6e mount) { expr.un
12700 6d 6f 75 6e 74 28 29 3b 20 7d 0a 20 20 20 20 7d mount(); }. }
12710 29 3b 0a 20 20 7d 0a 0a 20 20 76 61 72 20 49 66 );. }.. var If
12720 45 78 70 72 20 3d 20 7b 0a 20 20 20 20 69 6e 69 Expr = {. ini
12730 74 3a 20 66 75 6e 63 74 69 6f 6e 20 69 6e 69 74 t: function init
12740 28 64 6f 6d 2c 20 74 61 67 2c 20 65 78 70 72 29 (dom, tag, expr)
12750 20 7b 0a 20 20 20 20 20 20 72 65 6d 6f 76 65 41 {. removeA
12760 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 43 4f ttribute(dom, CO
12770 4e 44 49 54 49 4f 4e 41 4c 5f 44 49 52 45 43 54 NDITIONAL_DIRECT
12780 49 56 45 29 3b 0a 20 20 20 20 20 20 65 78 74 65 IVE);. exte
12790 6e 64 28 74 68 69 73 2c 20 7b 20 74 61 67 3a 20 nd(this, { tag:
127a0 74 61 67 2c 20 65 78 70 72 3a 20 65 78 70 72 2c tag, expr: expr,
127b0 20 73 74 75 62 3a 20 63 72 65 61 74 65 44 4f 4d stub: createDOM
127c0 50 6c 61 63 65 68 6f 6c 64 65 72 28 29 2c 20 70 Placeholder(), p
127d0 72 69 73 74 69 6e 65 3a 20 64 6f 6d 20 7d 29 3b ristine: dom });
127e0 0a 20 20 20 20 20 20 76 61 72 20 70 20 3d 20 64 . var p = d
127f0 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 0a 20 om.parentNode;.
12800 20 20 20 20 20 70 2e 69 6e 73 65 72 74 42 65 66 p.insertBef
12810 6f 72 65 28 74 68 69 73 2e 73 74 75 62 2c 20 64 ore(this.stub, d
12820 6f 6d 29 3b 0a 20 20 20 20 20 20 70 2e 72 65 6d om);. p.rem
12830 6f 76 65 43 68 69 6c 64 28 64 6f 6d 29 3b 0a 0a oveChild(dom);..
12840 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
12850 73 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 70 64 s. },. upd
12860 61 74 65 3a 20 66 75 6e 63 74 69 6f 6e 20 75 70 ate: function up
12870 64 61 74 65 24 24 31 28 29 20 7b 0a 20 20 20 20 date$$1() {.
12880 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 74 this.value = t
12890 6d 70 6c 28 74 68 69 73 2e 65 78 70 72 2c 20 74 mpl(this.expr, t
128a0 68 69 73 2e 74 61 67 29 3b 0a 0a 20 20 20 20 20 his.tag);..
128b0 20 69 66 20 28 21 74 68 69 73 2e 73 74 75 62 2e if (!this.stub.
128c0 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b 20 72 65 parentNode) { re
128d0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 69 66 turn }.. if
128e0 20 28 74 68 69 73 2e 76 61 6c 75 65 20 26 26 20 (this.value &&
128f0 21 74 68 69 73 2e 63 75 72 72 65 6e 74 29 20 7b !this.current) {
12900 20 2f 2f 20 69 6e 73 65 72 74 0a 20 20 20 20 20 // insert.
12910 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20 this.current
12920 3d 20 74 68 69 73 2e 70 72 69 73 74 69 6e 65 2e = this.pristine.
12930 63 6c 6f 6e 65 4e 6f 64 65 28 74 72 75 65 29 3b cloneNode(true);
12940 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 . this.st
12950 75 62 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e ub.parentNode.in
12960 73 65 72 74 42 65 66 6f 72 65 28 74 68 69 73 2e sertBefore(this.
12970 63 75 72 72 65 6e 74 2c 20 74 68 69 73 2e 73 74 current, this.st
12980 75 62 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 ub);. thi
12990 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 s.expressions =
129a0 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 73 parseExpressions
129b0 2e 61 70 70 6c 79 28 74 68 69 73 2e 74 61 67 2c .apply(this.tag,
129c0 20 5b 74 68 69 73 2e 63 75 72 72 65 6e 74 2c 20 [this.current,
129d0 74 72 75 65 5d 29 3b 0a 20 20 20 20 20 20 7d 20 true]);. }
129e0 65 6c 73 65 20 69 66 20 28 21 74 68 69 73 2e 76 else if (!this.v
129f0 61 6c 75 65 20 26 26 20 74 68 69 73 2e 63 75 72 alue && this.cur
12a00 72 65 6e 74 29 20 7b 20 2f 2f 20 72 65 6d 6f 76 rent) { // remov
12a10 65 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 e. this.u
12a20 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 20 20 20 nmount();.
12a30 20 20 74 68 69 73 2e 63 75 72 72 65 6e 74 20 3d this.current =
12a40 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 74 null;. t
12a50 68 69 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 his.expressions
12a60 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 = [];. }..
12a70 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 76 61 if (this.va
12a80 6c 75 65 29 20 7b 20 75 70 64 61 74 65 2e 63 61 lue) { update.ca
12a90 6c 6c 28 74 68 69 73 2e 74 61 67 2c 20 74 68 69 ll(this.tag, thi
12aa0 73 2e 65 78 70 72 65 73 73 69 6f 6e 73 29 3b 20 s.expressions);
12ab0 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 75 6e 6d }. },. unm
12ac0 6f 75 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 75 ount: function u
12ad0 6e 6d 6f 75 6e 74 28 29 20 7b 0a 20 20 20 20 20 nmount() {.
12ae0 20 69 66 20 28 74 68 69 73 2e 63 75 72 72 65 6e if (this.curren
12af0 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 t) {. if
12b00 28 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 (this.current._t
12b10 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ag) {.
12b20 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 5f 74 61 this.current._ta
12b30 67 2e 75 6e 6d 6f 75 6e 74 28 29 3b 0a 20 20 20 g.unmount();.
12b40 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
12b50 74 68 69 73 2e 63 75 72 72 65 6e 74 2e 70 61 72 this.current.par
12b60 65 6e 74 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 entNode) {.
12b70 20 20 20 20 20 74 68 69 73 2e 63 75 72 72 65 6e this.curren
12b80 74 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 6d t.parentNode.rem
12b90 6f 76 65 43 68 69 6c 64 28 74 68 69 73 2e 63 75 oveChild(this.cu
12ba0 72 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 rrent);.
12bb0 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }. }..
12bc0 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 74 68 69 73 unmountAll(this
12bd0 2e 65 78 70 72 65 73 73 69 6f 6e 73 20 7c 7c 20 .expressions ||
12be0 5b 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a []);. }. };.
12bf0 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 72 65 61 . /**. * Crea
12c00 74 65 20 61 20 6e 65 77 20 69 66 20 64 69 72 65 te a new if dire
12c10 63 74 69 76 65 0a 20 20 20 2a 20 40 70 61 72 61 ctive. * @para
12c20 6d 20 20 20 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e m { HTMLElemen
12c30 74 20 7d 20 64 6f 6d 20 2d 20 69 66 20 72 6f 6f t } dom - if roo
12c40 74 20 64 6f 6d 20 6e 6f 64 65 0a 20 20 20 2a 20 t dom node. *
12c50 40 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d @param { Tag }
12c60 20 63 6f 6e 74 65 78 74 20 2d 20 74 61 67 20 69 context - tag i
12c70 6e 73 74 61 6e 63 65 20 77 68 65 72 65 20 74 68 nstance where th
12c80 65 20 44 4f 4d 20 6e 6f 64 65 20 69 73 20 6c 6f e DOM node is lo
12c90 63 61 74 65 64 0a 20 20 20 2a 20 40 70 61 72 61 cated. * @para
12ca0 6d 20 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 61 m { String } a
12cb0 74 74 72 20 2d 20 69 66 20 65 78 70 72 65 73 73 ttr - if express
12cc0 69 6f 6e 0a 20 20 20 2a 20 40 72 65 74 75 72 6e ion. * @return
12cd0 73 20 7b 20 49 46 45 78 70 72 20 7d 20 61 20 6e s { IFExpr } a n
12ce0 65 77 20 49 66 45 78 70 72 20 6f 62 6a 65 63 74 ew IfExpr object
12cf0 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f . */. functio
12d00 6e 20 63 72 65 61 74 65 49 66 44 69 72 65 63 74 n createIfDirect
12d10 69 76 65 28 64 6f 6d 2c 20 74 61 67 2c 20 61 74 ive(dom, tag, at
12d20 74 72 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e tr) {. return
12d30 20 63 72 65 61 74 65 28 49 66 45 78 70 72 29 2e create(IfExpr).
12d40 69 6e 69 74 28 64 6f 6d 2c 20 74 61 67 2c 20 61 init(dom, tag, a
12d50 74 74 72 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a ttr). }.. /**.
12d60 20 20 20 2a 20 57 61 6c 6b 20 74 68 65 20 74 61 * Walk the ta
12d70 67 20 44 4f 4d 20 74 6f 20 64 65 74 65 63 74 20 g DOM to detect
12d80 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 the expressions
12d90 74 6f 20 65 76 61 6c 75 61 74 65 0a 20 20 20 2a to evaluate. *
12da0 20 40 74 68 69 73 20 54 61 67 0a 20 20 20 2a 20 @this Tag. *
12db0 40 70 61 72 61 6d 20 20 20 7b 20 48 54 4d 4c 45 @param { HTMLE
12dc0 6c 65 6d 65 6e 74 20 7d 20 72 6f 6f 74 20 2d 20 lement } root -
12dd0 72 6f 6f 74 20 74 61 67 20 77 68 65 72 65 20 77 root tag where w
12de0 65 20 77 69 6c 6c 20 73 74 61 72 74 20 64 69 67 e will start dig
12df0 67 69 6e 67 20 74 68 65 20 65 78 70 72 65 73 73 ging the express
12e00 69 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d ions. * @param
12e10 20 20 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 6d { Boolean } m
12e20 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f 74 20 2d ustIncludeRoot -
12e30 20 66 6c 61 67 20 74 6f 20 64 65 63 69 64 65 20 flag to decide
12e40 77 68 65 74 68 65 72 20 74 68 65 20 72 6f 6f 74 whether the root
12e50 20 6d 75 73 74 20 62 65 20 70 61 72 73 65 64 20 must be parsed
12e60 61 73 20 77 65 6c 6c 0a 20 20 20 2a 20 40 72 65 as well. * @re
12e70 74 75 72 6e 73 20 7b 20 41 72 72 61 79 20 7d 20 turns { Array }
12e80 61 6c 6c 20 74 68 65 20 65 78 70 72 65 73 73 69 all the expressi
12e90 6f 6e 73 20 66 6f 75 6e 64 0a 20 20 20 2a 2f 0a ons found. */.
12ea0 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 function parse
12eb0 45 78 70 72 65 73 73 69 6f 6e 73 28 72 6f 6f 74 Expressions(root
12ec0 2c 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f 6f , mustIncludeRoo
12ed0 74 29 20 7b 0a 20 20 20 20 76 61 72 20 74 68 69 t) {. var thi
12ee0 73 24 31 20 3d 20 74 68 69 73 3b 0a 0a 20 20 20 s$1 = this;..
12ef0 20 76 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 var expressions
12f00 20 3d 20 5b 5d 3b 0a 0a 20 20 20 20 77 61 6c 6b = [];.. walk
12f10 4e 6f 64 65 73 28 72 6f 6f 74 2c 20 66 75 6e 63 Nodes(root, func
12f20 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 20 tion (dom) {.
12f30 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 64 6f var type = do
12f40 6d 2e 6e 6f 64 65 54 79 70 65 3b 0a 20 20 20 20 m.nodeType;.
12f50 20 20 76 61 72 20 61 74 74 72 3b 0a 20 20 20 20 var attr;.
12f60 20 20 76 61 72 20 74 61 67 49 6d 70 6c 3b 0a 0a var tagImpl;..
12f70 20 20 20 20 20 20 69 66 20 28 21 6d 75 73 74 49 if (!mustI
12f80 6e 63 6c 75 64 65 52 6f 6f 74 20 26 26 20 64 6f ncludeRoot && do
12f90 6d 20 3d 3d 3d 20 72 6f 6f 74 29 20 7b 20 72 65 m === root) { re
12fa0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 2f 2f turn }.. //
12fb0 20 74 65 78 74 20 6e 6f 64 65 0a 20 20 20 20 20 text node.
12fc0 20 69 66 20 28 74 79 70 65 20 3d 3d 3d 20 33 20 if (type === 3
12fd0 26 26 20 64 6f 6d 2e 70 61 72 65 6e 74 4e 6f 64 && dom.parentNod
12fe0 65 2e 74 61 67 4e 61 6d 65 20 21 3d 3d 20 27 53 e.tagName !== 'S
12ff0 54 59 4c 45 27 20 26 26 20 74 6d 70 6c 2e 68 61 TYLE' && tmpl.ha
13000 73 45 78 70 72 28 64 6f 6d 2e 6e 6f 64 65 56 61 sExpr(dom.nodeVa
13010 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 7b 20 lue)). {
13020 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 expressions.push
13030 28 7b 64 6f 6d 3a 20 64 6f 6d 2c 20 65 78 70 72 ({dom: dom, expr
13040 3a 20 64 6f 6d 2e 6e 6f 64 65 56 61 6c 75 65 7d : dom.nodeValue}
13050 29 3b 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 ); }.. if (
13060 74 79 70 65 20 21 3d 3d 20 31 29 20 7b 20 72 65 type !== 1) { re
13070 74 75 72 6e 20 7d 0a 0a 20 20 20 20 20 20 76 61 turn }.. va
13080 72 20 69 73 56 69 72 74 75 61 6c 20 3d 20 64 6f r isVirtual = do
13090 6d 2e 74 61 67 4e 61 6d 65 20 3d 3d 3d 20 27 56 m.tagName === 'V
130a0 49 52 54 55 41 4c 27 3b 0a 0a 20 20 20 20 20 20 IRTUAL';..
130b0 2f 2f 20 6c 6f 6f 70 2e 20 65 61 63 68 20 64 6f // loop. each do
130c0 65 73 20 69 74 27 73 20 6f 77 6e 20 74 68 69 6e es it's own thin
130d0 67 20 28 66 6f 72 20 6e 6f 77 29 0a 20 20 20 20 g (for now).
130e0 20 20 69 66 20 28 61 74 74 72 20 3d 20 67 65 74 if (attr = get
130f0 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 4c Attribute(dom, L
13100 4f 4f 50 5f 44 49 52 45 43 54 49 56 45 29 29 20 OOP_DIRECTIVE))
13110 7b 0a 20 20 20 20 20 20 20 20 69 66 28 69 73 56 {. if(isV
13120 69 72 74 75 61 6c 29 20 7b 20 73 65 74 41 74 74 irtual) { setAtt
13130 72 69 62 75 74 65 28 64 6f 6d 2c 20 27 6c 6f 6f ribute(dom, 'loo
13140 70 56 69 72 74 75 61 6c 27 2c 20 74 72 75 65 29 pVirtual', true)
13150 3b 20 7d 20 2f 2f 20 69 67 6e 6f 72 65 20 68 65 ; } // ignore he
13160 72 65 2c 20 68 61 6e 64 6c 65 64 20 69 6e 20 5f re, handled in _
13170 65 61 63 68 0a 20 20 20 20 20 20 20 20 65 78 70 each. exp
13180 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 5f 65 ressions.push(_e
13190 61 63 68 28 64 6f 6d 2c 20 74 68 69 73 24 31 2c ach(dom, this$1,
131a0 20 61 74 74 72 29 29 3b 0a 20 20 20 20 20 20 20 attr));.
131b0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0a 20 20 return false.
131c0 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 }.. //
131d0 69 66 2d 61 74 74 72 73 20 62 65 63 6f 6d 65 20 if-attrs become
131e0 74 68 65 20 6e 65 77 20 70 61 72 65 6e 74 2e 20 the new parent.
131f0 41 6e 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 78 Any following ex
13200 70 72 65 73 73 69 6f 6e 73 20 28 65 69 74 68 65 pressions (eithe
13210 72 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 r on the current
13220 0a 20 20 20 20 20 20 2f 2f 20 65 6c 65 6d 65 6e . // elemen
13230 74 2c 20 6f 72 20 62 65 6c 6f 77 20 69 74 29 20 t, or below it)
13240 62 65 63 6f 6d 65 20 63 68 69 6c 64 72 65 6e 20 become children
13250 6f 66 20 74 68 69 73 20 65 78 70 72 65 73 73 69 of this expressi
13260 6f 6e 2e 0a 20 20 20 20 20 20 69 66 20 28 61 74 on.. if (at
13270 74 72 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 tr = getAttribut
13280 65 28 64 6f 6d 2c 20 43 4f 4e 44 49 54 49 4f 4e e(dom, CONDITION
13290 41 4c 5f 44 49 52 45 43 54 49 56 45 29 29 20 7b AL_DIRECTIVE)) {
132a0 0a 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 . express
132b0 69 6f 6e 73 2e 70 75 73 68 28 63 72 65 61 74 65 ions.push(create
132c0 49 66 44 69 72 65 63 74 69 76 65 28 64 6f 6d 2c IfDirective(dom,
132d0 20 74 68 69 73 24 31 2c 20 61 74 74 72 29 29 3b this$1, attr));
132e0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
132f0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 0a 20 false. }..
13300 20 20 20 20 20 69 66 20 28 61 74 74 72 20 3d 20 if (attr =
13310 67 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d getAttribute(dom
13320 2c 20 49 53 5f 44 49 52 45 43 54 49 56 45 29 29 , IS_DIRECTIVE))
13330 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 {. if (t
13340 6d 70 6c 2e 68 61 73 45 78 70 72 28 61 74 74 72 mpl.hasExpr(attr
13350 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 65 )) {. e
13360 78 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 xpressions.push(
13370 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 73 {. is
13380 52 74 61 67 3a 20 74 72 75 65 2c 0a 20 20 20 20 Rtag: true,.
13390 20 20 20 20 20 20 20 20 65 78 70 72 3a 20 61 74 expr: at
133a0 74 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 tr,.
133b0 64 6f 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20 20 20 dom: dom,.
133c0 20 20 20 20 20 20 61 74 74 72 73 3a 20 5b 5d 2e attrs: [].
133d0 73 6c 69 63 65 2e 63 61 6c 6c 28 64 6f 6d 2e 61 slice.call(dom.a
133e0 74 74 72 69 62 75 74 65 73 29 0a 20 20 20 20 20 ttributes).
133f0 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20 });..
13400 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false
13410 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
13420 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 69 66 20 }.. // if
13430 74 68 69 73 20 69 73 20 61 20 74 61 67 2c 20 73 this is a tag, s
13440 74 6f 70 20 74 72 61 76 65 72 73 69 6e 67 20 68 top traversing h
13450 65 72 65 2e 0a 20 20 20 20 20 20 2f 2f 20 77 65 ere.. // we
13460 20 69 67 6e 6f 72 65 20 74 68 65 20 72 6f 6f 74 ignore the root
13470 2c 20 73 69 6e 63 65 20 70 61 72 73 65 45 78 70 , since parseExp
13480 72 65 73 73 69 6f 6e 73 20 69 73 20 63 61 6c 6c ressions is call
13490 65 64 20 77 68 69 6c 65 20 77 65 27 72 65 20 6d ed while we're m
134a0 6f 75 6e 74 69 6e 67 20 74 68 61 74 20 72 6f 6f ounting that roo
134b0 74 0a 20 20 20 20 20 20 74 61 67 49 6d 70 6c 20 t. tagImpl
134c0 3d 20 67 65 74 28 64 6f 6d 29 3b 0a 0a 20 20 20 = get(dom);..
134d0 20 20 20 69 66 28 69 73 56 69 72 74 75 61 6c 29 if(isVirtual)
134e0 20 7b 0a 20 20 20 20 20 20 20 20 69 66 28 67 65 {. if(ge
134f0 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c 20 tAttribute(dom,
13500 27 76 69 72 74 75 61 6c 69 7a 65 64 27 29 29 20 'virtualized'))
13510 7b 64 6f 6d 2e 70 61 72 65 6e 74 45 6c 65 6d 65 {dom.parentEleme
13520 6e 74 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 64 nt.removeChild(d
13530 6f 6d 29 3b 20 7d 20 2f 2f 20 74 61 67 20 63 72 om); } // tag cr
13540 65 61 74 65 64 2c 20 72 65 6d 6f 76 65 20 66 72 eated, remove fr
13550 6f 6d 20 64 6f 6d 0a 20 20 20 20 20 20 20 20 69 om dom. i
13560 66 28 21 74 61 67 49 6d 70 6c 20 26 26 20 21 67 f(!tagImpl && !g
13570 65 74 41 74 74 72 69 62 75 74 65 28 64 6f 6d 2c etAttribute(dom,
13580 20 27 76 69 72 74 75 61 6c 69 7a 65 64 27 29 20 'virtualized')
13590 26 26 20 21 67 65 74 41 74 74 72 69 62 75 74 65 && !getAttribute
135a0 28 64 6f 6d 2c 20 27 6c 6f 6f 70 56 69 72 74 75 (dom, 'loopVirtu
135b0 61 6c 27 29 29 20 20 2f 2f 20 6f 6b 20 74 6f 20 al')) // ok to
135c0 63 72 65 61 74 65 20 76 69 72 74 75 61 6c 20 74 create virtual t
135d0 61 67 0a 20 20 20 20 20 20 20 20 20 20 7b 20 74 ag. { t
135e0 61 67 49 6d 70 6c 20 3d 20 7b 20 74 6d 70 6c 3a agImpl = { tmpl:
135f0 20 64 6f 6d 2e 6f 75 74 65 72 48 54 4d 4c 20 7d dom.outerHTML }
13600 3b 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 ; }. }..
13610 20 20 20 69 66 20 28 74 61 67 49 6d 70 6c 20 26 if (tagImpl &
13620 26 20 28 64 6f 6d 20 21 3d 3d 20 72 6f 6f 74 20 & (dom !== root
13630 7c 7c 20 6d 75 73 74 49 6e 63 6c 75 64 65 52 6f || mustIncludeRo
13640 6f 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ot)) {. v
13650 61 72 20 68 61 73 49 73 44 69 72 65 63 74 69 76 ar hasIsDirectiv
13660 65 20 3d 20 67 65 74 41 74 74 72 69 62 75 74 65 e = getAttribute
13670 28 64 6f 6d 2c 20 49 53 5f 44 49 52 45 43 54 49 (dom, IS_DIRECTI
13680 56 45 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 VE);. if(
13690 69 73 56 69 72 74 75 61 6c 20 26 26 20 21 68 61 isVirtual && !ha
136a0 73 49 73 44 69 72 65 63 74 69 76 65 29 20 7b 20 sIsDirective) {
136b0 2f 2f 20 68 61 6e 64 6c 65 64 20 69 6e 20 75 70 // handled in up
136c0 64 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 2f date. /
136d0 2f 20 63 61 6e 20 6e 6f 74 20 72 65 6d 6f 76 65 / can not remove
136e0 20 61 74 74 72 69 62 75 74 65 20 6c 69 6b 65 20 attribute like
136f0 64 69 72 65 63 74 69 76 65 73 0a 20 20 20 20 20 directives.
13700 20 20 20 20 20 2f 2f 20 73 6f 20 66 6c 61 67 20 // so flag
13710 66 6f 72 20 72 65 6d 6f 76 61 6c 20 61 66 74 65 for removal afte
13720 72 20 63 72 65 61 74 69 6f 6e 20 74 6f 20 70 72 r creation to pr
13730 65 76 65 6e 74 20 6d 61 78 69 6d 75 6d 20 73 74 event maximum st
13740 61 63 6b 20 65 72 72 6f 72 0a 20 20 20 20 20 20 ack error.
13750 20 20 20 20 73 65 74 41 74 74 72 69 62 75 74 65 setAttribute
13760 28 64 6f 6d 2c 20 27 76 69 72 74 75 61 6c 69 7a (dom, 'virtualiz
13770 65 64 27 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 ed', true);.
13780 20 20 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 var tag =
13790 63 72 65 61 74 65 54 61 67 28 0a 20 20 20 20 20 createTag(.
137a0 20 20 20 20 20 20 20 7b 74 6d 70 6c 3a 20 64 6f {tmpl: do
137b0 6d 2e 6f 75 74 65 72 48 54 4d 4c 7d 2c 0a 20 20 m.outerHTML},.
137c0 20 20 20 20 20 20 20 20 20 20 7b 72 6f 6f 74 3a {root:
137d0 20 64 6f 6d 2c 20 70 61 72 65 6e 74 3a 20 74 68 dom, parent: th
137e0 69 73 24 31 7d 2c 0a 20 20 20 20 20 20 20 20 20 is$1},.
137f0 20 20 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d 4c dom.innerHTML
13800 0a 20 20 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 . );..
13810 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 express
13820 69 6f 6e 73 2e 70 75 73 68 28 74 61 67 29 3b 20 ions.push(tag);
13830 2f 2f 20 6e 6f 20 72 65 74 75 72 6e 2c 20 61 6e // no return, an
13840 6f 6e 79 6d 6f 75 73 20 74 61 67 2c 20 6b 65 65 onymous tag, kee
13850 70 20 70 61 72 73 69 6e 67 0a 20 20 20 20 20 20 p parsing.
13860 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 } else {.
13870 20 20 20 20 20 69 66 20 28 68 61 73 49 73 44 69 if (hasIsDi
13880 72 65 63 74 69 76 65 20 26 26 20 69 73 56 69 72 rective && isVir
13890 74 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 tual).
138a0 20 20 7b 20 77 61 72 6e 28 28 22 56 69 72 74 75 { warn(("Virtu
138b0 61 6c 20 74 61 67 73 20 73 68 6f 75 6c 64 6e 27 al tags shouldn'
138c0 74 20 62 65 20 75 73 65 64 20 74 6f 67 65 74 68 t be used togeth
138d0 65 72 20 77 69 74 68 20 74 68 65 20 5c 22 22 20 er with the \""
138e0 2b 20 49 53 5f 44 49 52 45 43 54 49 56 45 20 2b + IS_DIRECTIVE +
138f0 20 22 5c 22 20 61 74 74 72 69 62 75 74 65 20 2d "\" attribute -
13900 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e https://github.
13910 63 6f 6d 2f 72 69 6f 74 2f 72 69 6f 74 2f 69 73 com/riot/riot/is
13920 73 75 65 73 2f 32 35 31 31 22 29 29 3b 20 7d 0a sues/2511")); }.
13930 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 65 . expre
13940 73 73 69 6f 6e 73 2e 70 75 73 68 28 0a 20 20 20 ssions.push(.
13950 20 20 20 20 20 20 20 20 20 69 6e 69 74 43 68 69 initChi
13960 6c 64 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 ld(.
13970 20 20 74 61 67 49 6d 70 6c 2c 0a 20 20 20 20 20 tagImpl,.
13980 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20 {.
13990 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 3a root:
139a0 20 64 6f 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 dom,.
139b0 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 74 68 parent: th
139c0 69 73 24 31 0a 20 20 20 20 20 20 20 20 20 20 20 is$1.
139d0 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 },.
139e0 20 20 20 20 64 6f 6d 2e 69 6e 6e 65 72 48 54 4d dom.innerHTM
139f0 4c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 L,.
13a00 20 74 68 69 73 24 31 0a 20 20 20 20 20 20 20 20 this$1.
13a10 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20 ).
13a20 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 );. ret
13a30 75 72 6e 20 66 61 6c 73 65 0a 20 20 20 20 20 20 urn false.
13a40 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 }. }..
13a50 20 20 20 2f 2f 20 61 74 74 72 69 62 75 74 65 20 // attribute
13a60 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 expressions.
13a70 20 20 70 61 72 73 65 41 74 74 72 69 62 75 74 65 parseAttribute
13a80 73 2e 61 70 70 6c 79 28 74 68 69 73 24 31 2c 20 s.apply(this$1,
13a90 5b 64 6f 6d 2c 20 64 6f 6d 2e 61 74 74 72 69 62 [dom, dom.attrib
13aa0 75 74 65 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 utes, function (
13ab0 61 74 74 72 2c 20 65 78 70 72 29 20 7b 0a 20 20 attr, expr) {.
13ac0 20 20 20 20 20 20 69 66 20 28 21 65 78 70 72 29 if (!expr)
13ad0 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 { return }.
13ae0 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 73 2e expressions.
13af0 70 75 73 68 28 65 78 70 72 29 3b 0a 20 20 20 20 push(expr);.
13b00 20 20 7d 5d 29 3b 0a 20 20 20 20 7d 29 3b 0a 0a }]);. });..
13b10 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 65 return expre
13b20 73 73 69 6f 6e 73 0a 20 20 7d 0a 0a 20 20 2f 2a ssions. }.. /*
13b30 2a 0a 20 20 20 2a 20 43 61 6c 6c 73 20 60 66 6e *. * Calls `fn
13b40 60 20 66 6f 72 20 65 76 65 72 79 20 61 74 74 72 ` for every attr
13b50 69 62 75 74 65 20 6f 6e 20 61 6e 20 65 6c 65 6d ibute on an elem
13b60 65 6e 74 2e 20 49 66 20 74 68 61 74 20 61 74 74 ent. If that att
13b70 72 20 68 61 73 20 61 6e 20 65 78 70 72 65 73 73 r has an express
13b80 69 6f 6e 2c 0a 20 20 20 2a 20 69 74 20 69 73 20 ion,. * it is
13b90 61 6c 73 6f 20 70 61 73 73 65 64 20 74 6f 20 66 also passed to f
13ba0 6e 2e 0a 20 20 20 2a 20 40 74 68 69 73 20 54 61 n.. * @this Ta
13bb0 67 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 20 20 g. * @param
13bc0 7b 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 7d 20 { HTMLElement }
13bd0 64 6f 6d 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 74 dom - dom node t
13be0 6f 20 70 61 72 73 65 0a 20 20 20 2a 20 40 70 61 o parse. * @pa
13bf0 72 61 6d 20 20 20 7b 20 41 72 72 61 79 20 7d 20 ram { Array }
13c00 61 74 74 72 73 20 2d 20 61 72 72 61 79 20 6f 66 attrs - array of
13c10 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 2a attributes. *
13c20 20 40 70 61 72 61 6d 20 20 20 7b 20 46 75 6e 63 @param { Func
13c30 74 69 6f 6e 20 7d 20 66 6e 20 2d 20 63 61 6c 6c tion } fn - call
13c40 62 61 63 6b 20 74 6f 20 65 78 65 63 20 6f 6e 20 back to exec on
13c50 61 6e 79 20 69 74 65 72 61 74 69 6f 6e 0a 20 20 any iteration.
13c60 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 70 */. function p
13c70 61 72 73 65 41 74 74 72 69 62 75 74 65 73 28 64 arseAttributes(d
13c80 6f 6d 2c 20 61 74 74 72 73 2c 20 66 6e 29 20 7b om, attrs, fn) {
13c90 0a 20 20 20 20 76 61 72 20 74 68 69 73 24 31 20 . var this$1
13ca0 3d 20 74 68 69 73 3b 0a 0a 20 20 20 20 65 61 63 = this;.. eac
13cb0 68 28 61 74 74 72 73 2c 20 66 75 6e 63 74 69 6f h(attrs, functio
13cc0 6e 20 28 61 74 74 72 29 20 7b 0a 20 20 20 20 20 n (attr) {.
13cd0 20 69 66 20 28 21 61 74 74 72 29 20 7b 20 72 65 if (!attr) { re
13ce0 74 75 72 6e 20 66 61 6c 73 65 20 7d 0a 0a 20 20 turn false }..
13cf0 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 61 var name = a
13d00 74 74 72 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 ttr.name;.
13d10 76 61 72 20 62 6f 6f 6c 20 3d 20 69 73 42 6f 6f var bool = isBoo
13d20 6c 41 74 74 72 28 6e 61 6d 65 29 3b 0a 20 20 20 lAttr(name);.
13d30 20 20 20 76 61 72 20 65 78 70 72 3b 0a 0a 20 20 var expr;..
13d40 20 20 20 20 69 66 20 28 63 6f 6e 74 61 69 6e 73 if (contains
13d50 28 52 45 46 5f 44 49 52 45 43 54 49 56 45 53 2c (REF_DIRECTIVES,
13d60 20 6e 61 6d 65 29 20 26 26 20 64 6f 6d 2e 74 61 name) && dom.ta
13d70 67 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 gName.toLowerCas
13d80 65 28 29 20 21 3d 3d 20 59 49 45 4c 44 5f 54 41 e() !== YIELD_TA
13d90 47 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 G) {. exp
13da0 72 20 3d 20 20 63 72 65 61 74 65 52 65 66 44 69 r = createRefDi
13db0 72 65 63 74 69 76 65 28 64 6f 6d 2c 20 74 68 69 rective(dom, thi
13dc0 73 24 31 2c 20 6e 61 6d 65 2c 20 61 74 74 72 2e s$1, name, attr.
13dd0 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 7d 20 value);. }
13de0 65 6c 73 65 20 69 66 20 28 74 6d 70 6c 2e 68 61 else if (tmpl.ha
13df0 73 45 78 70 72 28 61 74 74 72 2e 76 61 6c 75 65 sExpr(attr.value
13e00 29 29 20 7b 0a 20 20 20 20 20 20 20 20 65 78 70 )) {. exp
13e10 72 20 3d 20 7b 64 6f 6d 3a 20 64 6f 6d 2c 20 65 r = {dom: dom, e
13e20 78 70 72 3a 20 61 74 74 72 2e 76 61 6c 75 65 2c xpr: attr.value,
13e30 20 61 74 74 72 3a 20 6e 61 6d 65 2c 20 62 6f 6f attr: name, boo
13e40 6c 3a 20 62 6f 6f 6c 7d 3b 0a 20 20 20 20 20 20 l: bool};.
13e50 7d 0a 0a 20 20 20 20 20 20 66 6e 28 61 74 74 72 }.. fn(attr
13e60 2c 20 65 78 70 72 29 3b 0a 20 20 20 20 7d 29 3b , expr);. });
13e70 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a . }.. /**. *
13e80 20 4d 61 6e 61 67 65 20 74 68 65 20 6d 6f 75 6e Manage the moun
13e90 74 20 73 74 61 74 65 20 6f 66 20 61 20 74 61 67 t state of a tag
13ea0 20 74 72 69 67 67 65 72 69 6e 67 20 61 6c 73 6f triggering also
13eb0 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c 65 20 the observable
13ec0 65 76 65 6e 74 73 0a 20 20 20 2a 20 40 74 68 69 events. * @thi
13ed0 73 20 54 61 67 0a 20 20 20 2a 20 40 70 61 72 61 s Tag. * @para
13ee0 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 76 61 m { Boolean } va
13ef0 6c 75 65 20 2d 20 2e 2e 6f 66 20 74 68 65 20 69 lue - ..of the i
13f00 73 4d 6f 75 6e 74 65 64 20 66 6c 61 67 0a 20 20 sMounted flag.
13f10 20 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 */. function s
13f20 65 74 4d 6f 75 6e 74 53 74 61 74 65 28 76 61 6c etMountState(val
13f30 75 65 29 20 7b 0a 20 20 20 20 76 61 72 20 72 65 ue) {. var re
13f40 66 20 3d 20 74 68 69 73 2e 5f 5f 3b 0a 20 20 20 f = this.__;.
13f50 20 76 61 72 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 var isAnonymous
13f60 20 3d 20 72 65 66 2e 69 73 41 6e 6f 6e 79 6d 6f = ref.isAnonymo
13f70 75 73 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70 us;. var skip
13f80 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 72 65 66 2e Anonymous = ref.
13f90 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3b 0a 0a skipAnonymous;..
13fa0 20 20 20 20 64 65 66 69 6e 65 28 74 68 69 73 2c define(this,
13fb0 20 27 69 73 4d 6f 75 6e 74 65 64 27 2c 20 76 61 'isMounted', va
13fc0 6c 75 65 29 3b 0a 0a 20 20 20 20 69 66 20 28 21 lue);.. if (!
13fd0 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 7c 7c 20 21 isAnonymous || !
13fe0 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b skipAnonymous) {
13ff0 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 . if (value
14000 29 20 7b 20 74 68 69 73 2e 74 72 69 67 67 65 72 ) { this.trigger
14010 28 27 6d 6f 75 6e 74 27 29 3b 20 7d 0a 20 20 20 ('mount'); }.
14020 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 else {.
14030 20 20 74 68 69 73 2e 74 72 69 67 67 65 72 28 27 this.trigger('
14040 75 6e 6d 6f 75 6e 74 27 29 3b 0a 20 20 20 20 20 unmount');.
14050 20 20 20 74 68 69 73 2e 6f 66 66 28 27 2a 27 29 this.off('*')
14060 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f ;. this._
14070 5f 2e 77 61 73 43 72 65 61 74 65 64 20 3d 20 66 _.wasCreated = f
14080 61 6c 73 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20 alse;. }.
14090 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 }. }.. /**.
140a0 20 20 2a 20 4d 6f 75 6e 74 20 74 68 65 20 63 75 * Mount the cu
140b0 72 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e rrent tag instan
140c0 63 65 0a 20 20 20 2a 20 40 72 65 74 75 72 6e 73 ce. * @returns
140d0 20 7b 20 54 61 67 20 7d 20 74 68 65 20 63 75 72 { Tag } the cur
140e0 72 65 6e 74 20 74 61 67 20 69 6e 73 74 61 6e 63 rent tag instanc
140f0 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 74 69 e. */. functi
14100 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 4d 6f 75 6e on componentMoun
14110 74 28 74 61 67 24 24 31 2c 20 64 6f 6d 2c 20 65 t(tag$$1, dom, e
14120 78 70 72 65 73 73 69 6f 6e 73 2c 20 6f 70 74 73 xpressions, opts
14130 29 20 7b 0a 20 20 20 20 76 61 72 20 5f 5f 20 3d ) {. var __ =
14140 20 74 61 67 24 24 31 2e 5f 5f 3b 0a 20 20 20 20 tag$$1.__;.
14150 76 61 72 20 72 6f 6f 74 20 3d 20 5f 5f 2e 72 6f var root = __.ro
14160 6f 74 3b 0a 20 20 20 20 72 6f 6f 74 2e 5f 74 61 ot;. root._ta
14170 67 20 3d 20 74 61 67 24 24 31 3b 20 2f 2f 20 6b g = tag$$1; // k
14180 65 65 70 20 61 20 72 65 66 65 72 65 6e 63 65 20 eep a reference
14190 74 6f 20 74 68 65 20 74 61 67 20 6a 75 73 74 20 to the tag just
141a0 63 72 65 61 74 65 64 0a 0a 20 20 20 20 2f 2f 20 created.. //
141b0 52 65 61 64 20 61 6c 6c 20 74 68 65 20 61 74 74 Read all the att
141c0 72 73 20 6f 6e 20 74 68 69 73 20 69 6e 73 74 61 rs on this insta
141d0 6e 63 65 2e 20 54 68 69 73 20 67 69 76 65 20 75 nce. This give u
141e0 73 20 74 68 65 20 69 6e 66 6f 20 77 65 20 6e 65 s the info we ne
141f0 65 64 20 66 6f 72 20 75 70 64 61 74 65 4f 70 74 ed for updateOpt
14200 73 0a 20 20 20 20 70 61 72 73 65 41 74 74 72 69 s. parseAttri
14210 62 75 74 65 73 2e 61 70 70 6c 79 28 5f 5f 2e 70 butes.apply(__.p
14220 61 72 65 6e 74 2c 20 5b 72 6f 6f 74 2c 20 72 6f arent, [root, ro
14230 6f 74 2e 61 74 74 72 69 62 75 74 65 73 2c 20 66 ot.attributes, f
14240 75 6e 63 74 69 6f 6e 20 28 61 74 74 72 2c 20 65 unction (attr, e
14250 78 70 72 29 20 7b 0a 20 20 20 20 20 20 69 66 20 xpr) {. if
14260 28 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 (!__.isAnonymous
14270 20 26 26 20 52 65 66 45 78 70 72 2e 69 73 50 72 && RefExpr.isPr
14280 6f 74 6f 74 79 70 65 4f 66 28 65 78 70 72 29 29 ototypeOf(expr))
14290 20 7b 20 65 78 70 72 2e 74 61 67 20 3d 20 74 61 { expr.tag = ta
142a0 67 24 24 31 3b 20 7d 0a 20 20 20 20 20 20 61 74 g$$1; }. at
142b0 74 72 2e 65 78 70 72 20 3d 20 65 78 70 72 3b 0a tr.expr = expr;.
142c0 20 20 20 20 20 20 5f 5f 2e 69 6e 73 74 41 74 74 __.instAtt
142d0 72 73 2e 70 75 73 68 28 61 74 74 72 29 3b 0a 20 rs.push(attr);.
142e0 20 20 20 7d 5d 29 3b 0a 0a 20 20 20 20 2f 2f 20 }]);.. //
142f0 75 70 64 61 74 65 20 74 68 65 20 72 6f 6f 74 20 update the root
14300 61 64 64 69 6e 67 20 63 75 73 74 6f 6d 20 61 74 adding custom at
14310 74 72 69 62 75 74 65 73 20 63 6f 6d 69 6e 67 20 tributes coming
14320 66 72 6f 6d 20 74 68 65 20 63 6f 6d 70 69 6c 65 from the compile
14330 72 0a 20 20 20 20 77 61 6c 6b 41 74 74 72 69 62 r. walkAttrib
14340 75 74 65 73 28 5f 5f 2e 69 6d 70 6c 2e 61 74 74 utes(__.impl.att
14350 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6b 2c rs, function (k,
14360 20 76 29 20 7b 20 5f 5f 2e 69 6d 70 6c 41 74 74 v) { __.implAtt
14370 72 73 2e 70 75 73 68 28 7b 6e 61 6d 65 3a 20 6b rs.push({name: k
14380 2c 20 76 61 6c 75 65 3a 20 76 7d 29 3b 20 7d 29 , value: v}); })
14390 3b 0a 20 20 20 20 70 61 72 73 65 41 74 74 72 69 ;. parseAttri
143a0 62 75 74 65 73 2e 61 70 70 6c 79 28 74 61 67 24 butes.apply(tag$
143b0 24 31 2c 20 5b 72 6f 6f 74 2c 20 5f 5f 2e 69 6d $1, [root, __.im
143c0 70 6c 41 74 74 72 73 2c 20 66 75 6e 63 74 69 6f plAttrs, functio
143d0 6e 20 28 61 74 74 72 2c 20 65 78 70 72 29 20 7b n (attr, expr) {
143e0 0a 20 20 20 20 20 20 69 66 20 28 65 78 70 72 29 . if (expr)
143f0 20 7b 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 70 { expressions.p
14400 75 73 68 28 65 78 70 72 29 3b 20 7d 0a 20 20 20 ush(expr); }.
14410 20 20 20 65 6c 73 65 20 7b 20 73 65 74 41 74 74 else { setAtt
14420 72 69 62 75 74 65 28 72 6f 6f 74 2c 20 61 74 74 ribute(root, att
14430 72 2e 6e 61 6d 65 2c 20 61 74 74 72 2e 76 61 6c r.name, attr.val
14440 75 65 29 3b 20 7d 0a 20 20 20 20 7d 5d 29 3b 0a ue); }. }]);.
14450 0a 20 20 20 20 2f 2f 20 69 6e 69 74 69 61 6c 69 . // initiali
14460 61 74 69 6f 6e 0a 20 20 20 20 75 70 64 61 74 65 ation. update
14470 4f 70 74 73 2e 61 70 70 6c 79 28 74 61 67 24 24 Opts.apply(tag$$
14480 31 2c 20 5b 5f 5f 2e 69 73 4c 6f 6f 70 2c 20 5f 1, [__.isLoop, _
14490 5f 2e 70 61 72 65 6e 74 2c 20 5f 5f 2e 69 73 41 _.parent, __.isA
144a0 6e 6f 6e 79 6d 6f 75 73 2c 20 6f 70 74 73 2c 20 nonymous, opts,
144b0 5f 5f 2e 69 6e 73 74 41 74 74 72 73 5d 29 3b 0a __.instAttrs]);.
144c0 0a 20 20 20 20 2f 2f 20 61 64 64 20 67 6c 6f 62 . // add glob
144d0 61 6c 20 6d 69 78 69 6e 73 0a 20 20 20 20 76 61 al mixins. va
144e0 72 20 67 6c 6f 62 61 6c 4d 69 78 69 6e 20 3d 20 r globalMixin =
144f0 6d 69 78 69 6e 28 47 4c 4f 42 41 4c 5f 4d 49 58 mixin(GLOBAL_MIX
14500 49 4e 29 3b 0a 0a 20 20 20 20 69 66 20 28 67 6c IN);.. if (gl
14510 6f 62 61 6c 4d 69 78 69 6e 20 26 26 20 21 5f 5f obalMixin && !__
14520 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 .skipAnonymous)
14530 7b 0a 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 {. for (var
14540 20 69 20 69 6e 20 67 6c 6f 62 61 6c 4d 69 78 69 i in globalMixi
14550 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 n) {. if
14560 28 67 6c 6f 62 61 6c 4d 69 78 69 6e 2e 68 61 73 (globalMixin.has
14570 4f 77 6e 50 72 6f 70 65 72 74 79 28 69 29 29 20 OwnProperty(i))
14580 7b 0a 20 20 20 20 20 20 20 20 20 20 74 61 67 24 {. tag$
14590 24 31 2e 6d 69 78 69 6e 28 67 6c 6f 62 61 6c 4d $1.mixin(globalM
145a0 69 78 69 6e 5b 69 5d 29 3b 0a 20 20 20 20 20 20 ixin[i]);.
145b0 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }.
145c0 7d 0a 0a 20 20 20 20 69 66 20 28 5f 5f 2e 69 6d }.. if (__.im
145d0 70 6c 2e 66 6e 29 20 7b 20 5f 5f 2e 69 6d 70 6c pl.fn) { __.impl
145e0 2e 66 6e 2e 63 61 6c 6c 28 74 61 67 24 24 31 2c .fn.call(tag$$1,
145f0 20 6f 70 74 73 29 3b 20 7d 0a 0a 20 20 20 20 69 opts); }.. i
14600 66 20 28 21 5f 5f 2e 73 6b 69 70 41 6e 6f 6e 79 f (!__.skipAnony
14610 6d 6f 75 73 29 20 7b 20 74 61 67 24 24 31 2e 74 mous) { tag$$1.t
14620 72 69 67 67 65 72 28 27 62 65 66 6f 72 65 2d 6d rigger('before-m
14630 6f 75 6e 74 27 29 3b 20 7d 0a 0a 20 20 20 20 2f ount'); }.. /
14640 2f 20 70 61 72 73 65 20 6c 61 79 6f 75 74 20 61 / parse layout a
14650 66 74 65 72 20 69 6e 69 74 2e 20 66 6e 20 6d 61 fter init. fn ma
14660 79 20 63 61 6c 63 75 6c 61 74 65 20 61 72 67 73 y calculate args
14670 20 66 6f 72 20 6e 65 73 74 65 64 20 63 75 73 74 for nested cust
14680 6f 6d 20 74 61 67 73 0a 20 20 20 20 65 61 63 68 om tags. each
14690 28 70 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e (parseExpression
146a0 73 2e 61 70 70 6c 79 28 74 61 67 24 24 31 2c 20 s.apply(tag$$1,
146b0 5b 64 6f 6d 2c 20 5f 5f 2e 69 73 41 6e 6f 6e 79 [dom, __.isAnony
146c0 6d 6f 75 73 5d 29 2c 20 66 75 6e 63 74 69 6f 6e mous]), function
146d0 20 28 65 29 20 7b 20 72 65 74 75 72 6e 20 65 78 (e) { return ex
146e0 70 72 65 73 73 69 6f 6e 73 2e 70 75 73 68 28 65 pressions.push(e
146f0 29 3b 20 7d 29 3b 0a 0a 20 20 20 20 74 61 67 24 ); });.. tag$
14700 24 31 2e 75 70 64 61 74 65 28 5f 5f 2e 69 74 65 $1.update(__.ite
14710 6d 29 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f m);.. if (!__
14720 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 .isAnonymous &&
14730 21 5f 5f 2e 69 73 49 6e 6c 69 6e 65 29 20 7b 0a !__.isInline) {.
14740 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 6f 6d while (dom
14750 2e 66 69 72 73 74 43 68 69 6c 64 29 20 7b 20 72 .firstChild) { r
14760 6f 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 oot.appendChild(
14770 64 6f 6d 2e 66 69 72 73 74 43 68 69 6c 64 29 3b dom.firstChild);
14780 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64 65 }. }.. de
14790 66 69 6e 65 28 74 61 67 24 24 31 2c 20 27 72 6f fine(tag$$1, 'ro
147a0 6f 74 27 2c 20 72 6f 6f 74 29 3b 0a 0a 20 20 20 ot', root);..
147b0 20 2f 2f 20 69 66 20 77 65 20 6e 65 65 64 20 74 // if we need t
147c0 6f 20 77 61 69 74 20 74 68 61 74 20 74 68 65 20 o wait that the
147d0 70 61 72 65 6e 74 20 22 6d 6f 75 6e 74 22 20 6f parent "mount" o
147e0 72 20 22 75 70 64 61 74 65 64 22 20 65 76 65 6e r "updated" even
147f0 74 20 67 65 74 73 20 74 72 69 67 67 65 72 65 64 t gets triggered
14800 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e 73 6b 69 . if (!__.ski
14810 70 41 6e 6f 6e 79 6d 6f 75 73 20 26 26 20 74 61 pAnonymous && ta
14820 67 24 24 31 2e 70 61 72 65 6e 74 29 20 7b 0a 20 g$$1.parent) {.
14830 20 20 20 20 20 76 61 72 20 70 20 3d 20 67 65 74 var p = get
14840 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d 50 ImmediateCustomP
14850 61 72 65 6e 74 28 74 61 67 24 24 31 2e 70 61 72 arent(tag$$1.par
14860 65 6e 74 29 3b 0a 20 20 20 20 20 20 70 2e 6f 6e ent);. p.on
14870 65 28 21 70 2e 69 73 4d 6f 75 6e 74 65 64 20 3f e(!p.isMounted ?
14880 20 27 6d 6f 75 6e 74 27 20 3a 20 27 75 70 64 61 'mount' : 'upda
14890 74 65 64 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ted', function (
148a0 29 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 4d ) {. setM
148b0 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28 74 ountState.call(t
148c0 61 67 24 24 31 2c 20 74 72 75 65 29 3b 0a 20 20 ag$$1, true);.
148d0 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 20 65 6c });. } el
148e0 73 65 20 7b 0a 20 20 20 20 20 20 2f 2f 20 6f 74 se {. // ot
148f0 68 65 72 77 69 73 65 20 69 74 27 73 20 6e 6f 74 herwise it's not
14900 20 61 20 63 68 69 6c 64 20 74 61 67 20 77 65 20 a child tag we
14910 63 61 6e 20 74 72 69 67 67 65 72 20 69 74 73 20 can trigger its
14920 6d 6f 75 6e 74 20 65 76 65 6e 74 0a 20 20 20 20 mount event.
14930 20 20 73 65 74 4d 6f 75 6e 74 53 74 61 74 65 2e setMountState.
14940 63 61 6c 6c 28 74 61 67 24 24 31 2c 20 74 72 75 call(tag$$1, tru
14950 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 e);. }.. t
14960 61 67 24 24 31 2e 5f 5f 2e 77 61 73 43 72 65 61 ag$$1.__.wasCrea
14970 74 65 64 20 3d 20 74 72 75 65 3b 0a 0a 20 20 20 ted = true;..
14980 20 72 65 74 75 72 6e 20 74 61 67 24 24 31 0a 20 return tag$$1.
14990 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 }.. /**. * U
149a0 6e 6d 6f 75 6e 74 20 74 68 65 20 74 61 67 20 69 nmount the tag i
149b0 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61 nstance. * @pa
149c0 72 61 6d 20 7b 20 42 6f 6f 6c 65 61 6e 20 7d 20 ram { Boolean }
149d0 6d 75 73 74 4b 65 65 70 52 6f 6f 74 20 2d 20 69 mustKeepRoot - i
149e0 66 20 69 74 27 73 20 74 72 75 65 20 74 68 65 20 f it's true the
149f0 72 6f 6f 74 20 6e 6f 64 65 20 77 69 6c 6c 20 6e root node will n
14a00 6f 74 20 62 65 20 72 65 6d 6f 76 65 64 0a 20 20 ot be removed.
14a10 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 20 54 61 * @returns { Ta
14a20 67 20 7d 20 74 68 65 20 63 75 72 72 65 6e 74 20 g } the current
14a30 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 tag instance.
14a40 2a 2f 0a 20 20 66 75 6e 63 74 69 6f 6e 20 74 61 */. function ta
14a50 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20 6d 75 gUnmount(tag, mu
14a60 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78 70 72 stKeepRoot, expr
14a70 65 73 73 69 6f 6e 73 29 20 7b 0a 20 20 20 20 76 essions) {. v
14a80 61 72 20 5f 5f 20 3d 20 74 61 67 2e 5f 5f 3b 0a ar __ = tag.__;.
14a90 20 20 20 20 76 61 72 20 72 6f 6f 74 20 3d 20 5f var root = _
14aa0 5f 2e 72 6f 6f 74 3b 0a 20 20 20 20 76 61 72 20 _.root;. var
14ab0 74 61 67 49 6e 64 65 78 20 3d 20 5f 5f 54 41 47 tagIndex = __TAG
14ac0 53 5f 43 41 43 48 45 2e 69 6e 64 65 78 4f 66 28 S_CACHE.indexOf(
14ad0 74 61 67 29 3b 0a 20 20 20 20 76 61 72 20 70 20 tag);. var p
14ae0 3d 20 72 6f 6f 74 2e 70 61 72 65 6e 74 4e 6f 64 = root.parentNod
14af0 65 3b 0a 0a 20 20 20 20 69 66 20 28 21 5f 5f 2e e;.. if (!__.
14b00 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 7b skipAnonymous) {
14b10 20 74 61 67 2e 74 72 69 67 67 65 72 28 27 62 65 tag.trigger('be
14b20 66 6f 72 65 2d 75 6e 6d 6f 75 6e 74 27 29 3b 20 fore-unmount');
14b30 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65 61 72 20 }.. // clear
14b40 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73 20 63 all attributes c
14b50 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6d oming from the m
14b60 6f 75 6e 74 65 64 20 74 61 67 0a 20 20 20 20 77 ounted tag. w
14b70 61 6c 6b 41 74 74 72 69 62 75 74 65 73 28 5f 5f alkAttributes(__
14b80 2e 69 6d 70 6c 2e 61 74 74 72 73 2c 20 66 75 6e .impl.attrs, fun
14b90 63 74 69 6f 6e 20 28 6e 61 6d 65 29 20 7b 0a 20 ction (name) {.
14ba0 20 20 20 20 20 69 66 20 28 73 74 61 72 74 73 57 if (startsW
14bb0 69 74 68 28 6e 61 6d 65 2c 20 41 54 54 52 53 5f ith(name, ATTRS_
14bc0 50 52 45 46 49 58 29 29 0a 20 20 20 20 20 20 20 PREFIX)).
14bd0 20 7b 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 2e 73 { name = name.s
14be0 6c 69 63 65 28 41 54 54 52 53 5f 50 52 45 46 49 lice(ATTRS_PREFI
14bf0 58 2e 6c 65 6e 67 74 68 29 3b 20 7d 0a 0a 20 20 X.length); }..
14c00 20 20 20 20 72 65 6d 6f 76 65 41 74 74 72 69 62 removeAttrib
14c10 75 74 65 28 72 6f 6f 74 2c 20 6e 61 6d 65 29 3b ute(root, name);
14c20 0a 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 2f 2f . });.. //
14c30 20 72 65 6d 6f 76 65 20 61 6c 6c 20 74 68 65 20 remove all the
14c40 65 76 65 6e 74 20 6c 69 73 74 65 6e 65 72 73 0a event listeners.
14c50 20 20 20 20 74 61 67 2e 5f 5f 2e 6c 69 73 74 65 tag.__.liste
14c60 6e 65 72 73 2e 66 6f 72 45 61 63 68 28 66 75 6e ners.forEach(fun
14c70 63 74 69 6f 6e 20 28 64 6f 6d 29 20 7b 0a 20 20 ction (dom) {.
14c80 20 20 20 20 4f 62 6a 65 63 74 2e 6b 65 79 73 28 Object.keys(
14c90 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f dom[RIOT_EVENTS_
14ca0 4b 45 59 5d 29 2e 66 6f 72 45 61 63 68 28 66 75 KEY]).forEach(fu
14cb0 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 4e 61 6d nction (eventNam
14cc0 65 29 20 7b 0a 20 20 20 20 20 20 20 20 64 6f 6d e) {. dom
14cd0 2e 72 65 6d 6f 76 65 45 76 65 6e 74 4c 69 73 74 .removeEventList
14ce0 65 6e 65 72 28 65 76 65 6e 74 4e 61 6d 65 2c 20 ener(eventName,
14cf0 64 6f 6d 5b 52 49 4f 54 5f 45 56 45 4e 54 53 5f dom[RIOT_EVENTS_
14d00 4b 45 59 5d 5b 65 76 65 6e 74 4e 61 6d 65 5d 29 KEY][eventName])
14d10 3b 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 ;. });.
14d20 7d 29 3b 0a 0a 20 20 20 20 2f 2f 20 72 65 6d 6f });.. // remo
14d30 76 65 20 74 61 67 20 69 6e 73 74 61 6e 63 65 20 ve tag instance
14d40 66 72 6f 6d 20 74 68 65 20 67 6c 6f 62 61 6c 20 from the global
14d50 74 61 67 73 20 63 61 63 68 65 20 63 6f 6c 6c 65 tags cache colle
14d60 63 74 69 6f 6e 0a 20 20 20 20 69 66 20 28 74 61 ction. if (ta
14d70 67 49 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 7b gIndex !== -1) {
14d80 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e 73 70 __TAGS_CACHE.sp
14d90 6c 69 63 65 28 74 61 67 49 6e 64 65 78 2c 20 31 lice(tagIndex, 1
14da0 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 6c 65 ); }.. // cle
14db0 61 6e 20 75 70 20 74 68 65 20 70 61 72 65 6e 74 an up the parent
14dc0 20 74 61 67 73 20 6f 62 6a 65 63 74 0a 20 20 20 tags object.
14dd0 20 69 66 20 28 5f 5f 2e 70 61 72 65 6e 74 20 26 if (__.parent &
14de0 26 20 21 5f 5f 2e 69 73 41 6e 6f 6e 79 6d 6f 75 & !__.isAnonymou
14df0 73 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 70 s) {. var p
14e00 74 61 67 20 3d 20 67 65 74 49 6d 6d 65 64 69 61 tag = getImmedia
14e10 74 65 43 75 73 74 6f 6d 50 61 72 65 6e 74 28 5f teCustomParent(_
14e20 5f 2e 70 61 72 65 6e 74 29 3b 0a 0a 20 20 20 20 _.parent);..
14e30 20 20 69 66 20 28 5f 5f 2e 69 73 56 69 72 74 75 if (__.isVirtu
14e40 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 4f 62 al) {. Ob
14e50 6a 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 2e ject. .
14e60 6b 65 79 73 28 74 61 67 2e 74 61 67 73 29 0a 20 keys(tag.tags).
14e70 20 20 20 20 20 20 20 20 20 2e 66 6f 72 45 61 63 .forEac
14e80 68 28 66 75 6e 63 74 69 6f 6e 20 28 74 61 67 4e h(function (tagN
14e90 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 61 72 ame) { return ar
14ea0 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70 74 61 rayishRemove(pta
14eb0 67 2e 74 61 67 73 2c 20 74 61 67 4e 61 6d 65 2c g.tags, tagName,
14ec0 20 74 61 67 2e 74 61 67 73 5b 74 61 67 4e 61 6d tag.tags[tagNam
14ed0 65 5d 29 3b 20 7d 29 3b 0a 20 20 20 20 20 20 7d e]); });. }
14ee0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
14ef0 61 72 72 61 79 69 73 68 52 65 6d 6f 76 65 28 70 arrayishRemove(p
14f00 74 61 67 2e 74 61 67 73 2c 20 5f 5f 2e 74 61 67 tag.tags, __.tag
14f10 4e 61 6d 65 2c 20 74 61 67 29 3b 0a 20 20 20 20 Name, tag);.
14f20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f }. }.. /
14f30 2f 20 75 6e 6d 6f 75 6e 74 20 61 6c 6c 20 74 68 / unmount all th
14f40 65 20 76 69 72 74 75 61 6c 20 64 69 72 65 63 74 e virtual direct
14f50 69 76 65 73 0a 20 20 20 20 69 66 20 28 74 61 67 ives. if (tag
14f60 2e 5f 5f 2e 76 69 72 74 73 29 20 7b 0a 20 20 20 .__.virts) {.
14f70 20 20 20 65 61 63 68 28 74 61 67 2e 5f 5f 2e 76 each(tag.__.v
14f80 69 72 74 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 irts, function (
14f90 76 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 v) {. if
14fa0 28 76 2e 70 61 72 65 6e 74 4e 6f 64 65 29 20 7b (v.parentNode) {
14fb0 20 76 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 72 65 v.parentNode.re
14fc0 6d 6f 76 65 43 68 69 6c 64 28 76 29 3b 20 7d 0a moveChild(v); }.
14fd0 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a });. }.
14fe0 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 20 65 78 . // allow ex
14ff0 70 72 65 73 73 69 6f 6e 73 20 74 6f 20 75 6e 6d pressions to unm
15000 6f 75 6e 74 20 74 68 65 6d 73 65 6c 76 65 73 0a ount themselves.
15010 20 20 20 20 75 6e 6d 6f 75 6e 74 41 6c 6c 28 65 unmountAll(e
15020 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 20 20 20 xpressions);.
15030 20 65 61 63 68 28 5f 5f 2e 69 6e 73 74 41 74 74 each(__.instAtt
15040 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 29 rs, function (a)
15050 20 7b 20 72 65 74 75 72 6e 20 61 2e 65 78 70 72 { return a.expr
15060 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d 6f 75 && a.expr.unmou
15070 6e 74 20 26 26 20 61 2e 65 78 70 72 2e 75 6e 6d nt && a.expr.unm
15080 6f 75 6e 74 28 29 3b 20 7d 29 3b 0a 0a 20 20 20 ount(); });..
15090 20 2f 2f 20 63 6c 65 61 72 20 74 68 65 20 74 61 // clear the ta
150a0 67 20 68 74 6d 6c 20 69 66 20 69 74 27 73 20 6e g html if it's n
150b0 65 63 65 73 73 61 72 79 0a 20 20 20 20 69 66 20 ecessary. if
150c0 28 6d 75 73 74 4b 65 65 70 52 6f 6f 74 29 20 7b (mustKeepRoot) {
150d0 20 73 65 74 49 6e 6e 65 72 48 54 4d 4c 28 72 6f setInnerHTML(ro
150e0 6f 74 2c 20 27 27 29 3b 20 7d 0a 20 20 20 20 2f ot, ''); }. /
150f0 2f 20 6f 74 68 65 72 77 69 73 65 20 64 65 74 61 / otherwise deta
15100 63 68 20 74 68 65 20 72 6f 6f 74 20 74 61 67 20 ch the root tag
15110 66 72 6f 6d 20 74 68 65 20 44 4f 4d 0a 20 20 20 from the DOM.
15120 20 65 6c 73 65 20 69 66 20 28 70 29 20 7b 20 70 else if (p) { p
15130 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 72 6f 6f .removeChild(roo
15140 74 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 63 75 t); }.. // cu
15150 73 74 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 75 6e stom internal un
15160 6d 6f 75 6e 74 20 66 75 6e 63 74 69 6f 6e 20 74 mount function t
15170 6f 20 61 76 6f 69 64 20 72 65 6c 79 69 6e 67 20 o avoid relying
15180 6f 6e 20 74 68 65 20 6f 62 73 65 72 76 61 62 6c on the observabl
15190 65 0a 20 20 20 20 69 66 20 28 5f 5f 2e 6f 6e 55 e. if (__.onU
151a0 6e 6d 6f 75 6e 74 29 20 7b 20 5f 5f 2e 6f 6e 55 nmount) { __.onU
151b0 6e 6d 6f 75 6e 74 28 29 3b 20 7d 0a 0a 20 20 20 nmount(); }..
151c0 20 2f 2f 20 77 65 69 72 64 20 66 69 78 20 66 6f // weird fix fo
151d0 72 20 61 20 77 65 69 72 64 20 65 64 67 65 20 63 r a weird edge c
151e0 61 73 65 20 23 32 34 30 39 20 61 6e 64 20 23 32 ase #2409 and #2
151f0 34 33 36 0a 20 20 20 20 2f 2f 20 73 6f 6d 65 20 436. // some
15200 75 73 65 72 73 20 6d 69 67 68 74 20 75 73 65 20 users might use
15210 79 6f 75 72 20 73 6f 66 74 77 61 72 65 20 6e 6f your software no
15220 74 20 61 73 20 79 6f 75 27 76 65 20 65 78 70 65 t as you've expe
15230 63 74 65 64 0a 20 20 20 20 2f 2f 20 73 6f 20 49 cted. // so I
15240 20 6e 65 65 64 20 74 6f 20 61 64 64 20 74 68 65 need to add the
15250 73 65 20 64 69 72 74 79 20 68 61 63 6b 73 20 74 se dirty hacks t
15260 6f 20 6d 69 74 69 67 61 74 65 20 75 6e 65 78 70 o mitigate unexp
15270 65 63 74 65 64 20 69 73 73 75 65 73 0a 20 20 20 ected issues.
15280 20 69 66 20 28 21 74 61 67 2e 69 73 4d 6f 75 6e if (!tag.isMoun
15290 74 65 64 29 20 7b 20 73 65 74 4d 6f 75 6e 74 53 ted) { setMountS
152a0 74 61 74 65 2e 63 61 6c 6c 28 74 61 67 2c 20 74 tate.call(tag, t
152b0 72 75 65 29 3b 20 7d 0a 0a 20 20 20 20 73 65 74 rue); }.. set
152c0 4d 6f 75 6e 74 53 74 61 74 65 2e 63 61 6c 6c 28 MountState.call(
152d0 74 61 67 2c 20 66 61 6c 73 65 29 3b 0a 0a 20 20 tag, false);..
152e0 20 20 64 65 6c 65 74 65 20 72 6f 6f 74 2e 5f 74 delete root._t
152f0 61 67 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 ag;.. return
15300 74 61 67 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 tag. }.. /**.
15310 20 20 2a 20 54 61 67 20 63 72 65 61 74 69 6f 6e * Tag creation
15320 20 66 61 63 74 6f 72 79 20 66 75 6e 63 74 69 6f factory functio
15330 6e 0a 20 20 20 2a 20 40 63 6f 6e 73 74 72 75 63 n. * @construc
15340 74 6f 72 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 tor. * @param
15350 7b 20 4f 62 6a 65 63 74 20 7d 20 69 6d 70 6c 20 { Object } impl
15360 2d 20 69 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 - it contains th
15370 65 20 74 61 67 20 74 65 6d 70 6c 61 74 65 2c 20 e tag template,
15380 61 6e 64 20 6c 6f 67 69 63 0a 20 20 20 2a 20 40 and logic. * @
15390 70 61 72 61 6d 20 7b 20 4f 62 6a 65 63 74 20 7d param { Object }
153a0 20 63 6f 6e 66 20 2d 20 74 61 67 20 6f 70 74 69 conf - tag opti
153b0 6f 6e 73 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 ons. * @param
153c0 7b 20 53 74 72 69 6e 67 20 7d 20 69 6e 6e 65 72 { String } inner
153d0 48 54 4d 4c 20 2d 20 68 74 6d 6c 20 74 68 61 74 HTML - html that
153e0 20 65 76 65 6e 74 75 61 6c 6c 79 20 77 65 20 6e eventually we n
153f0 65 65 64 20 74 6f 20 69 6e 6a 65 63 74 20 69 6e eed to inject in
15400 20 74 68 65 20 74 61 67 0a 20 20 20 2a 2f 0a 20 the tag. */.
15410 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 function create
15420 54 61 67 28 69 6d 70 6c 2c 20 63 6f 6e 66 2c 20 Tag(impl, conf,
15430 69 6e 6e 65 72 48 54 4d 4c 29 20 7b 0a 20 20 20 innerHTML) {.
15440 20 69 66 20 28 20 69 6d 70 6c 20 3d 3d 3d 20 76 if ( impl === v
15450 6f 69 64 20 30 20 29 20 69 6d 70 6c 20 3d 20 7b oid 0 ) impl = {
15460 7d 3b 0a 20 20 20 20 69 66 20 28 20 63 6f 6e 66 };. if ( conf
15470 20 3d 3d 3d 20 76 6f 69 64 20 30 20 29 20 63 6f === void 0 ) co
15480 6e 66 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20 76 61 nf = {};.. va
15490 72 20 74 61 67 20 3d 20 63 6f 6e 66 2e 63 6f 6e r tag = conf.con
154a0 74 65 78 74 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 text || {};.
154b0 76 61 72 20 6f 70 74 73 20 3d 20 63 6f 6e 66 2e var opts = conf.
154c0 6f 70 74 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 opts || {};.
154d0 76 61 72 20 70 61 72 65 6e 74 20 3d 20 63 6f 6e var parent = con
154e0 66 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 76 61 f.parent;. va
154f0 72 20 69 73 4c 6f 6f 70 20 3d 20 63 6f 6e 66 2e r isLoop = conf.
15500 69 73 4c 6f 6f 70 3b 0a 20 20 20 20 76 61 72 20 isLoop;. var
15510 69 73 41 6e 6f 6e 79 6d 6f 75 73 20 3d 20 21 21 isAnonymous = !!
15520 63 6f 6e 66 2e 69 73 41 6e 6f 6e 79 6d 6f 75 73 conf.isAnonymous
15530 3b 0a 20 20 20 20 76 61 72 20 73 6b 69 70 41 6e ;. var skipAn
15540 6f 6e 79 6d 6f 75 73 20 3d 20 73 65 74 74 69 6e onymous = settin
15550 67 73 2e 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 gs.skipAnonymous
15560 54 61 67 73 20 26 26 20 69 73 41 6e 6f 6e 79 6d Tags && isAnonym
15570 6f 75 73 3b 0a 20 20 20 20 76 61 72 20 69 74 65 ous;. var ite
15580 6d 20 3d 20 63 6f 6e 66 2e 69 74 65 6d 3b 0a 20 m = conf.item;.
15590 20 20 20 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20 // available
155a0 6f 6e 6c 79 20 66 6f 72 20 74 68 65 20 6c 6f 6f only for the loo
155b0 70 65 64 20 6e 6f 64 65 73 0a 20 20 20 20 76 61 ped nodes. va
155c0 72 20 69 6e 64 65 78 20 3d 20 63 6f 6e 66 2e 69 r index = conf.i
155d0 6e 64 65 78 3b 0a 20 20 20 20 2f 2f 20 41 6c 6c ndex;. // All
155e0 20 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 74 attributes on t
155f0 68 65 20 54 61 67 20 77 68 65 6e 20 69 74 27 73 he Tag when it's
15600 20 66 69 72 73 74 20 70 61 72 73 65 64 0a 20 20 first parsed.
15610 20 20 76 61 72 20 69 6e 73 74 41 74 74 72 73 20 var instAttrs
15620 3d 20 5b 5d 3b 0a 20 20 20 20 2f 2f 20 65 78 70 = [];. // exp
15630 72 65 73 73 69 6f 6e 73 20 6f 6e 20 74 68 69 73 ressions on this
15640 20 74 79 70 65 20 6f 66 20 54 61 67 0a 20 20 20 type of Tag.
15650 20 76 61 72 20 69 6d 70 6c 41 74 74 72 73 20 3d var implAttrs =
15660 20 5b 5d 3b 0a 20 20 20 20 76 61 72 20 74 6d 70 [];. var tmp
15670 6c 20 3d 20 69 6d 70 6c 2e 74 6d 70 6c 3b 0a 20 l = impl.tmpl;.
15680 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69 6f var expressio
15690 6e 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61 72 ns = [];. var
156a0 20 72 6f 6f 74 20 3d 20 63 6f 6e 66 2e 72 6f 6f root = conf.roo
156b0 74 3b 0a 20 20 20 20 76 61 72 20 74 61 67 4e 61 t;. var tagNa
156c0 6d 65 20 3d 20 63 6f 6e 66 2e 74 61 67 4e 61 6d me = conf.tagNam
156d0 65 20 7c 7c 20 67 65 74 4e 61 6d 65 28 72 6f 6f e || getName(roo
156e0 74 29 3b 0a 20 20 20 20 76 61 72 20 69 73 56 69 t);. var isVi
156f0 72 74 75 61 6c 20 3d 20 74 61 67 4e 61 6d 65 20 rtual = tagName
15700 3d 3d 3d 20 27 76 69 72 74 75 61 6c 27 3b 0a 20 === 'virtual';.
15710 20 20 20 76 61 72 20 69 73 49 6e 6c 69 6e 65 20 var isInline
15720 3d 20 21 69 73 56 69 72 74 75 61 6c 20 26 26 20 = !isVirtual &&
15730 21 74 6d 70 6c 3b 0a 20 20 20 20 76 61 72 20 64 !tmpl;. var d
15740 6f 6d 3b 0a 0a 20 20 20 20 69 66 20 28 69 73 49 om;.. if (isI
15750 6e 6c 69 6e 65 20 7c 7c 20 69 73 4c 6f 6f 70 20 nline || isLoop
15760 26 26 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 29 20 && isAnonymous)
15770 7b 0a 20 20 20 20 20 20 64 6f 6d 20 3d 20 72 6f {. dom = ro
15780 6f 74 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b ot;. } else {
15790 0a 20 20 20 20 20 20 69 66 20 28 21 69 73 56 69 . if (!isVi
157a0 72 74 75 61 6c 29 20 7b 20 72 6f 6f 74 2e 69 6e rtual) { root.in
157b0 6e 65 72 48 54 4d 4c 20 3d 20 27 27 3b 20 7d 0a nerHTML = ''; }.
157c0 20 20 20 20 20 20 64 6f 6d 20 3d 20 6d 6b 64 6f dom = mkdo
157d0 6d 28 74 6d 70 6c 2c 20 69 6e 6e 65 72 48 54 4d m(tmpl, innerHTM
157e0 4c 2c 20 69 73 53 76 67 28 72 6f 6f 74 29 29 3b L, isSvg(root));
157f0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 6d . }.. // m
15800 61 6b 65 20 74 68 69 73 20 74 61 67 20 6f 62 73 ake this tag obs
15810 65 72 76 61 62 6c 65 0a 20 20 20 20 69 66 20 28 ervable. if (
15820 21 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 29 20 !skipAnonymous)
15830 7b 20 6f 62 73 65 72 76 61 62 6c 65 28 74 61 67 { observable(tag
15840 29 3b 20 7d 0a 0a 20 20 20 20 2f 2f 20 6f 6e 6c ); }.. // onl
15850 79 20 63 61 6c 6c 20 75 6e 6d 6f 75 6e 74 20 69 y call unmount i
15860 66 20 77 65 20 68 61 76 65 20 61 20 76 61 6c 69 f we have a vali
15870 64 20 5f 5f 54 41 47 5f 49 4d 50 4c 20 28 68 61 d __TAG_IMPL (ha
15880 73 20 6e 61 6d 65 20 70 72 6f 70 65 72 74 79 29 s name property)
15890 0a 20 20 20 20 69 66 20 28 69 6d 70 6c 2e 6e 61 . if (impl.na
158a0 6d 65 20 26 26 20 72 6f 6f 74 2e 5f 74 61 67 29 me && root._tag)
158b0 20 7b 20 72 6f 6f 74 2e 5f 74 61 67 2e 75 6e 6d { root._tag.unm
158c0 6f 75 6e 74 28 74 72 75 65 29 3b 20 7d 0a 0a 20 ount(true); }..
158d0 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c 20 27 define(tag, '
158e0 5f 5f 27 2c 20 7b 0a 20 20 20 20 20 20 69 6d 70 __', {. imp
158f0 6c 3a 20 69 6d 70 6c 2c 0a 20 20 20 20 20 20 72 l: impl,. r
15900 6f 6f 74 3a 20 72 6f 6f 74 2c 0a 20 20 20 20 20 oot: root,.
15910 20 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 3a 20 skipAnonymous:
15920 73 6b 69 70 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 skipAnonymous,.
15930 20 20 20 20 20 69 6d 70 6c 41 74 74 72 73 3a 20 implAttrs:
15940 69 6d 70 6c 41 74 74 72 73 2c 0a 20 20 20 20 20 implAttrs,.
15950 20 69 73 41 6e 6f 6e 79 6d 6f 75 73 3a 20 69 73 isAnonymous: is
15960 41 6e 6f 6e 79 6d 6f 75 73 2c 0a 20 20 20 20 20 Anonymous,.
15970 20 69 6e 73 74 41 74 74 72 73 3a 20 69 6e 73 74 instAttrs: inst
15980 41 74 74 72 73 2c 0a 20 20 20 20 20 20 69 6e 6e Attrs,. inn
15990 65 72 48 54 4d 4c 3a 20 69 6e 6e 65 72 48 54 4d erHTML: innerHTM
159a0 4c 2c 0a 20 20 20 20 20 20 74 61 67 4e 61 6d 65 L,. tagName
159b0 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 : tagName,.
159c0 20 69 6e 64 65 78 3a 20 69 6e 64 65 78 2c 0a 20 index: index,.
159d0 20 20 20 20 20 69 73 4c 6f 6f 70 3a 20 69 73 4c isLoop: isL
159e0 6f 6f 70 2c 0a 20 20 20 20 20 20 69 73 49 6e 6c oop,. isInl
159f0 69 6e 65 3a 20 69 73 49 6e 6c 69 6e 65 2c 0a 20 ine: isInline,.
15a00 20 20 20 20 20 69 74 65 6d 3a 20 69 74 65 6d 2c item: item,
15a10 0a 20 20 20 20 20 20 70 61 72 65 6e 74 3a 20 70 . parent: p
15a20 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 2f 2f 20 arent,. //
15a30 74 61 67 73 20 68 61 76 69 6e 67 20 65 76 65 6e tags having even
15a40 74 20 6c 69 73 74 65 6e 65 72 73 0a 20 20 20 20 t listeners.
15a50 20 20 2f 2f 20 69 74 20 77 6f 75 6c 64 20 62 65 // it would be
15a60 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 20 77 better to use w
15a70 65 61 6b 20 6d 61 70 73 20 68 65 72 65 20 62 75 eak maps here bu
15a80 74 20 77 65 20 63 61 6e 20 6e 6f 74 20 69 6e 74 t we can not int
15a90 72 6f 64 75 63 65 20 62 72 65 61 6b 69 6e 67 20 roduce breaking
15aa0 63 68 61 6e 67 65 73 20 6e 6f 77 0a 20 20 20 20 changes now.
15ab0 20 20 6c 69 73 74 65 6e 65 72 73 3a 20 5b 5d 2c listeners: [],
15ac0 0a 20 20 20 20 20 20 2f 2f 20 74 68 65 73 65 20 . // these
15ad0 76 61 72 73 20 77 69 6c 6c 20 62 65 20 6e 65 65 vars will be nee
15ae0 64 65 64 20 6f 6e 6c 79 20 66 6f 72 20 74 68 65 ded only for the
15af0 20 76 69 72 74 75 61 6c 20 74 61 67 73 0a 20 20 virtual tags.
15b00 20 20 20 20 76 69 72 74 73 3a 20 5b 5d 2c 0a 20 virts: [],.
15b10 20 20 20 20 20 77 61 73 43 72 65 61 74 65 64 3a wasCreated:
15b20 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 74 61 false,. ta
15b30 69 6c 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 il: null,.
15b40 68 65 61 64 3a 20 6e 75 6c 6c 0a 20 20 20 20 7d head: null. }
15b50 29 3b 0a 0a 20 20 20 20 2f 2f 20 74 61 67 20 70 );.. // tag p
15b60 72 6f 74 65 63 74 65 64 20 70 72 6f 70 65 72 74 rotected propert
15b70 69 65 73 0a 20 20 20 20 72 65 74 75 72 6e 20 5b ies. return [
15b80 0a 20 20 20 20 20 20 5b 27 69 73 4d 6f 75 6e 74 . ['isMount
15b90 65 64 27 2c 20 66 61 6c 73 65 5d 2c 0a 20 20 20 ed', false],.
15ba0 20 20 20 2f 2f 20 63 72 65 61 74 65 20 61 20 75 // create a u
15bb0 6e 69 71 75 65 20 69 64 20 74 6f 20 74 68 69 73 nique id to this
15bc0 20 74 61 67 0a 20 20 20 20 20 20 2f 2f 20 69 74 tag. // it
15bd0 20 63 6f 75 6c 64 20 62 65 20 68 61 6e 64 79 20 could be handy
15be0 74 6f 20 75 73 65 20 69 74 20 61 6c 73 6f 20 74 to use it also t
15bf0 6f 20 69 6d 70 72 6f 76 65 20 74 68 65 20 76 69 o improve the vi
15c00 72 74 75 61 6c 20 64 6f 6d 20 72 65 6e 64 65 72 rtual dom render
15c10 69 6e 67 20 73 70 65 65 64 0a 20 20 20 20 20 20 ing speed.
15c20 5b 27 5f 72 69 6f 74 5f 69 64 27 2c 20 75 69 64 ['_riot_id', uid
15c30 28 29 5d 2c 0a 20 20 20 20 20 20 5b 27 72 6f 6f ()],. ['roo
15c40 74 27 2c 20 72 6f 6f 74 5d 2c 0a 20 20 20 20 20 t', root],.
15c50 20 5b 27 6f 70 74 73 27 2c 20 6f 70 74 73 2c 20 ['opts', opts,
15c60 7b 20 77 72 69 74 61 62 6c 65 3a 20 74 72 75 65 { writable: true
15c70 2c 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 74 72 , enumerable: tr
15c80 75 65 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 70 ue }],. ['p
15c90 61 72 65 6e 74 27 2c 20 70 61 72 65 6e 74 20 7c arent', parent |
15ca0 7c 20 6e 75 6c 6c 5d 2c 0a 20 20 20 20 20 20 2f | null],. /
15cb0 2f 20 70 72 6f 74 65 63 74 20 74 68 65 20 22 74 / protect the "t
15cc0 61 67 73 22 20 61 6e 64 20 22 72 65 66 73 22 20 ags" and "refs"
15cd0 70 72 6f 70 65 72 74 79 20 66 72 6f 6d 20 62 65 property from be
15ce0 69 6e 67 20 6f 76 65 72 72 69 64 64 65 6e 0a 20 ing overridden.
15cf0 20 20 20 20 20 5b 27 74 61 67 73 27 2c 20 7b 7d ['tags', {}
15d00 5d 2c 0a 20 20 20 20 20 20 5b 27 72 65 66 73 27 ],. ['refs'
15d10 2c 20 7b 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 75 , {}],. ['u
15d20 70 64 61 74 65 27 2c 20 66 75 6e 63 74 69 6f 6e pdate', function
15d30 20 28 64 61 74 61 29 20 7b 20 72 65 74 75 72 6e (data) { return
15d40 20 63 6f 6d 70 6f 6e 65 6e 74 55 70 64 61 74 65 componentUpdate
15d50 28 74 61 67 2c 20 64 61 74 61 2c 20 65 78 70 72 (tag, data, expr
15d60 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 2c 0a 20 20 essions); }],.
15d70 20 20 20 20 5b 27 6d 69 78 69 6e 27 2c 20 66 75 ['mixin', fu
15d80 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 nction () {.
15d90 20 20 20 20 76 61 72 20 6d 69 78 69 6e 73 20 3d var mixins =
15da0 20 5b 5d 2c 20 6c 65 6e 20 3d 20 61 72 67 75 6d [], len = argum
15db0 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 ents.length;.
15dc0 20 20 20 20 20 77 68 69 6c 65 20 28 20 6c 65 6e while ( len
15dd0 2d 2d 20 29 20 6d 69 78 69 6e 73 5b 20 6c 65 6e -- ) mixins[ len
15de0 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20 ] = arguments[
15df0 6c 65 6e 20 5d 3b 0a 0a 20 20 20 20 20 20 20 20 len ];..
15e00 72 65 74 75 72 6e 20 63 6f 6d 70 6f 6e 65 6e 74 return component
15e10 4d 69 78 69 6e 2e 61 70 70 6c 79 28 76 6f 69 64 Mixin.apply(void
15e20 20 30 2c 20 5b 20 74 61 67 20 5d 2e 63 6f 6e 63 0, [ tag ].conc
15e30 61 74 28 20 6d 69 78 69 6e 73 20 29 29 3b 0a 20 at( mixins ));.
15e40 20 20 20 7d 5d 2c 0a 20 20 20 20 20 20 5b 27 6d }],. ['m
15e50 6f 75 6e 74 27 2c 20 66 75 6e 63 74 69 6f 6e 20 ount', function
15e60 28 29 20 7b 20 72 65 74 75 72 6e 20 63 6f 6d 70 () { return comp
15e70 6f 6e 65 6e 74 4d 6f 75 6e 74 28 74 61 67 2c 20 onentMount(tag,
15e80 64 6f 6d 2c 20 65 78 70 72 65 73 73 69 6f 6e 73 dom, expressions
15e90 2c 20 6f 70 74 73 29 3b 20 7d 5d 2c 0a 20 20 20 , opts); }],.
15ea0 20 20 20 5b 27 75 6e 6d 6f 75 6e 74 27 2c 20 66 ['unmount', f
15eb0 75 6e 63 74 69 6f 6e 20 28 6d 75 73 74 4b 65 65 unction (mustKee
15ec0 70 52 6f 6f 74 29 20 7b 20 72 65 74 75 72 6e 20 pRoot) { return
15ed0 74 61 67 55 6e 6d 6f 75 6e 74 28 74 61 67 2c 20 tagUnmount(tag,
15ee0 6d 75 73 74 4b 65 65 70 52 6f 6f 74 2c 20 65 78 mustKeepRoot, ex
15ef0 70 72 65 73 73 69 6f 6e 73 29 3b 20 7d 5d 0a 20 pressions); }].
15f00 20 20 20 5d 2e 72 65 64 75 63 65 28 66 75 6e 63 ].reduce(func
15f10 74 69 6f 6e 20 28 61 63 63 2c 20 72 65 66 29 20 tion (acc, ref)
15f20 7b 0a 20 20 20 20 20 20 76 61 72 20 6b 65 79 20 {. var key
15f30 3d 20 72 65 66 5b 30 5d 3b 0a 20 20 20 20 20 20 = ref[0];.
15f40 76 61 72 20 76 61 6c 75 65 20 3d 20 72 65 66 5b var value = ref[
15f50 31 5d 3b 0a 20 20 20 20 20 20 76 61 72 20 6f 70 1];. var op
15f60 74 73 20 3d 20 72 65 66 5b 32 5d 3b 0a 0a 20 20 ts = ref[2];..
15f70 20 20 20 20 64 65 66 69 6e 65 28 74 61 67 2c 20 define(tag,
15f80 6b 65 79 2c 20 76 61 6c 75 65 2c 20 6f 70 74 73 key, value, opts
15f90 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 );. return
15fa0 61 63 63 0a 20 20 20 20 7d 2c 20 65 78 74 65 6e acc. }, exten
15fb0 64 28 74 61 67 2c 20 69 74 65 6d 29 29 0a 20 20 d(tag, item)).
15fc0 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 4d 6f }.. /**. * Mo
15fd0 75 6e 74 20 61 20 74 61 67 20 63 72 65 61 74 69 unt a tag creati
15fe0 6e 67 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61 ng new Tag insta
15ff0 6e 63 65 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 nce. * @param
16000 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 72 6f 6f { Object } roo
16010 74 20 2d 20 64 6f 6d 20 6e 6f 64 65 20 77 68 65 t - dom node whe
16020 72 65 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20 re the tag will
16030 62 65 20 6d 6f 75 6e 74 65 64 0a 20 20 20 2a 20 be mounted. *
16040 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 6e @param { Strin
16050 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20 6e 61 g } tagName - na
16060 6d 65 20 6f 66 20 74 68 65 20 72 69 6f 74 20 74 me of the riot t
16070 61 67 20 77 65 20 77 61 6e 74 20 74 6f 20 6d 6f ag we want to mo
16080 75 6e 74 0a 20 20 20 2a 20 40 70 61 72 61 6d 20 unt. * @param
16090 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 74 { Object } opt
160a0 73 20 2d 20 6f 70 74 69 6f 6e 73 20 74 6f 20 70 s - options to p
160b0 61 73 73 20 74 6f 20 74 68 65 20 54 61 67 20 69 ass to the Tag i
160c0 6e 73 74 61 6e 63 65 0a 20 20 20 2a 20 40 70 61 nstance. * @pa
160d0 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d ram { Object }
160e0 20 63 74 78 20 2d 20 6f 70 74 69 6f 6e 61 6c 20 ctx - optional
160f0 63 6f 6e 74 65 78 74 20 74 68 61 74 20 77 69 6c context that wil
16100 6c 20 62 65 20 75 73 65 64 20 74 6f 20 65 78 74 l be used to ext
16110 65 6e 64 20 61 6e 20 65 78 69 73 74 69 6e 67 20 end an existing
16120 63 6c 61 73 73 20 28 20 75 73 65 64 20 69 6e 20 class ( used in
16130 72 69 6f 74 2e 54 61 67 20 29 0a 20 20 20 2a 20 riot.Tag ). *
16140 40 72 65 74 75 72 6e 73 20 7b 20 54 61 67 20 7d @returns { Tag }
16150 20 61 20 6e 65 77 20 54 61 67 20 69 6e 73 74 61 a new Tag insta
16160 6e 63 65 0a 20 20 20 2a 2f 0a 20 20 66 75 6e 63 nce. */. func
16170 74 69 6f 6e 20 6d 6f 75 6e 74 24 31 28 72 6f 6f tion mount$1(roo
16180 74 2c 20 74 61 67 4e 61 6d 65 2c 20 6f 70 74 73 t, tagName, opts
16190 2c 20 63 74 78 29 20 7b 0a 20 20 20 20 76 61 72 , ctx) {. var
161a0 20 69 6d 70 6c 20 3d 20 5f 5f 54 41 47 5f 49 4d impl = __TAG_IM
161b0 50 4c 5b 74 61 67 4e 61 6d 65 5d 3b 0a 20 20 20 PL[tagName];.
161c0 20 76 61 72 20 69 6d 70 6c 43 6c 61 73 73 20 3d var implClass =
161d0 20 5f 5f 54 41 47 5f 49 4d 50 4c 5b 74 61 67 4e __TAG_IMPL[tagN
161e0 61 6d 65 5d 2e 63 6c 61 73 73 3b 0a 20 20 20 20 ame].class;.
161f0 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20 63 74 var context = ct
16200 78 20 7c 7c 20 28 69 6d 70 6c 43 6c 61 73 73 20 x || (implClass
16210 3f 20 63 72 65 61 74 65 28 69 6d 70 6c 43 6c 61 ? create(implCla
16220 73 73 2e 70 72 6f 74 6f 74 79 70 65 29 20 3a 20 ss.prototype) :
16230 7b 7d 29 3b 0a 20 20 20 20 2f 2f 20 63 61 63 68 {});. // cach
16240 65 20 74 68 65 20 69 6e 6e 65 72 20 48 54 4d 4c e the inner HTML
16250 20 74 6f 20 66 69 78 20 23 38 35 35 0a 20 20 20 to fix #855.
16260 20 76 61 72 20 69 6e 6e 65 72 48 54 4d 4c 20 3d var innerHTML =
16270 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54 4d 4c root._innerHTML
16280 20 3d 20 72 6f 6f 74 2e 5f 69 6e 6e 65 72 48 54 = root._innerHT
16290 4d 4c 20 7c 7c 20 72 6f 6f 74 2e 69 6e 6e 65 72 ML || root.inner
162a0 48 54 4d 4c 3b 0a 20 20 20 20 76 61 72 20 63 6f HTML;. var co
162b0 6e 66 20 3d 20 65 78 74 65 6e 64 28 7b 20 72 6f nf = extend({ ro
162c0 6f 74 3a 20 72 6f 6f 74 2c 20 6f 70 74 73 3a 20 ot: root, opts:
162d0 6f 70 74 73 2c 20 63 6f 6e 74 65 78 74 3a 20 63 opts, context: c
162e0 6f 6e 74 65 78 74 20 7d 2c 20 7b 20 70 61 72 65 ontext }, { pare
162f0 6e 74 3a 20 6f 70 74 73 20 3f 20 6f 70 74 73 2e nt: opts ? opts.
16300 70 61 72 65 6e 74 20 3a 20 6e 75 6c 6c 20 7d 29 parent : null })
16310 3b 0a 20 20 20 20 76 61 72 20 74 61 67 3b 0a 0a ;. var tag;..
16320 20 20 20 20 69 66 20 28 69 6d 70 6c 20 26 26 20 if (impl &&
16330 72 6f 6f 74 29 20 7b 20 74 61 67 20 3d 20 63 72 root) { tag = cr
16340 65 61 74 65 54 61 67 28 69 6d 70 6c 2c 20 63 6f eateTag(impl, co
16350 6e 66 2c 20 69 6e 6e 65 72 48 54 4d 4c 29 3b 20 nf, innerHTML);
16360 7d 0a 0a 20 20 20 20 69 66 20 28 74 61 67 20 26 }.. if (tag &
16370 26 20 74 61 67 2e 6d 6f 75 6e 74 29 20 7b 0a 20 & tag.mount) {.
16380 20 20 20 20 20 74 61 67 2e 6d 6f 75 6e 74 28 74 tag.mount(t
16390 72 75 65 29 3b 0a 20 20 20 20 20 20 2f 2f 20 61 rue);. // a
163a0 64 64 20 74 68 69 73 20 74 61 67 20 74 6f 20 74 dd this tag to t
163b0 68 65 20 76 69 72 74 75 61 6c 44 6f 6d 20 76 61 he virtualDom va
163c0 72 69 61 62 6c 65 0a 20 20 20 20 20 20 69 66 20 riable. if
163d0 28 21 63 6f 6e 74 61 69 6e 73 28 5f 5f 54 41 47 (!contains(__TAG
163e0 53 5f 43 41 43 48 45 2c 20 74 61 67 29 29 20 7b S_CACHE, tag)) {
163f0 20 5f 5f 54 41 47 53 5f 43 41 43 48 45 2e 70 75 __TAGS_CACHE.pu
16400 73 68 28 74 61 67 29 3b 20 7d 0a 20 20 20 20 7d sh(tag); }. }
16410 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 .. return tag
16420 0a 20 20 7d 0a 0a 0a 0a 20 20 76 61 72 20 74 61 . }.... var ta
16430 67 73 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f 5f gs = /*#__PURE__
16440 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 28 */Object.freeze(
16450 7b 0a 20 20 20 20 61 72 72 61 79 69 73 68 41 64 {. arrayishAd
16460 64 3a 20 61 72 72 61 79 69 73 68 41 64 64 2c 0a d: arrayishAdd,.
16470 20 20 20 20 67 65 74 54 61 67 4e 61 6d 65 3a 20 getTagName:
16480 67 65 74 4e 61 6d 65 2c 0a 20 20 20 20 69 6e 68 getName,. inh
16490 65 72 69 74 50 61 72 65 6e 74 50 72 6f 70 73 3a eritParentProps:
164a0 20 69 6e 68 65 72 69 74 50 61 72 65 6e 74 50 72 inheritParentPr
164b0 6f 70 73 2c 0a 20 20 20 20 6d 6f 75 6e 74 54 6f ops,. mountTo
164c0 3a 20 6d 6f 75 6e 74 24 31 2c 0a 20 20 20 20 73 : mount$1,. s
164d0 65 6c 65 63 74 54 61 67 73 3a 20 71 75 65 72 79 electTags: query
164e0 2c 0a 20 20 20 20 61 72 72 61 79 69 73 68 52 65 ,. arrayishRe
164f0 6d 6f 76 65 3a 20 61 72 72 61 79 69 73 68 52 65 move: arrayishRe
16500 6d 6f 76 65 2c 0a 20 20 20 20 67 65 74 54 61 67 move,. getTag
16510 3a 20 67 65 74 2c 0a 20 20 20 20 69 6e 69 74 43 : get,. initC
16520 68 69 6c 64 54 61 67 3a 20 69 6e 69 74 43 68 69 hildTag: initChi
16530 6c 64 2c 0a 20 20 20 20 6d 6f 76 65 43 68 69 6c ld,. moveChil
16540 64 54 61 67 3a 20 6d 6f 76 65 43 68 69 6c 64 2c dTag: moveChild,
16550 0a 20 20 20 20 6d 61 6b 65 52 65 70 6c 61 63 65 . makeReplace
16560 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 52 65 70 Virtual: makeRep
16570 6c 61 63 65 56 69 72 74 75 61 6c 2c 0a 20 20 20 laceVirtual,.
16580 20 67 65 74 49 6d 6d 65 64 69 61 74 65 43 75 73 getImmediateCus
16590 74 6f 6d 50 61 72 65 6e 74 54 61 67 3a 20 67 65 tomParentTag: ge
165a0 74 49 6d 6d 65 64 69 61 74 65 43 75 73 74 6f 6d tImmediateCustom
165b0 50 61 72 65 6e 74 2c 0a 20 20 20 20 6d 61 6b 65 Parent,. make
165c0 56 69 72 74 75 61 6c 3a 20 6d 61 6b 65 56 69 72 Virtual: makeVir
165d0 74 75 61 6c 2c 0a 20 20 20 20 6d 6f 76 65 56 69 tual,. moveVi
165e0 72 74 75 61 6c 3a 20 6d 6f 76 65 56 69 72 74 75 rtual: moveVirtu
165f0 61 6c 2c 0a 20 20 20 20 75 6e 6d 6f 75 6e 74 41 al,. unmountA
16600 6c 6c 3a 20 75 6e 6d 6f 75 6e 74 41 6c 6c 2c 0a ll: unmountAll,.
16610 20 20 20 20 63 72 65 61 74 65 49 66 44 69 72 65 createIfDire
16620 63 74 69 76 65 3a 20 63 72 65 61 74 65 49 66 44 ctive: createIfD
16630 69 72 65 63 74 69 76 65 2c 0a 20 20 20 20 63 72 irective,. cr
16640 65 61 74 65 52 65 66 44 69 72 65 63 74 69 76 65 eateRefDirective
16650 3a 20 63 72 65 61 74 65 52 65 66 44 69 72 65 63 : createRefDirec
16660 74 69 76 65 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a tive. });.. /*
16670 2a 0a 20 20 20 2a 20 52 69 6f 74 20 70 75 62 6c *. * Riot publ
16680 69 63 20 61 70 69 0a 20 20 20 2a 2f 0a 20 20 76 ic api. */. v
16690 61 72 20 73 65 74 74 69 6e 67 73 24 31 20 3d 20 ar settings$1 =
166a0 73 65 74 74 69 6e 67 73 3b 0a 20 20 76 61 72 20 settings;. var
166b0 75 74 69 6c 20 3d 20 7b 0a 20 20 20 20 74 6d 70 util = {. tmp
166c0 6c 3a 20 74 6d 70 6c 2c 0a 20 20 20 20 62 72 61 l: tmpl,. bra
166d0 63 6b 65 74 73 3a 20 62 72 61 63 6b 65 74 73 2c ckets: brackets,
166e0 0a 20 20 20 20 73 74 79 6c 65 4d 61 6e 61 67 65 . styleManage
166f0 72 3a 20 73 74 79 6c 65 4d 61 6e 61 67 65 72 2c r: styleManager,
16700 0a 20 20 20 20 76 64 6f 6d 3a 20 5f 5f 54 41 47 . vdom: __TAG
16710 53 5f 43 41 43 48 45 2c 0a 20 20 20 20 73 74 79 S_CACHE,. sty
16720 6c 65 4e 6f 64 65 3a 20 73 74 79 6c 65 4d 61 6e leNode: styleMan
16730 61 67 65 72 2e 73 74 79 6c 65 4e 6f 64 65 2c 0a ager.styleNode,.
16740 20 20 20 20 2f 2f 20 65 78 70 6f 72 74 20 74 68 // export th
16750 65 20 72 69 6f 74 20 69 6e 74 65 72 6e 61 6c 20 e riot internal
16760 75 74 69 6c 73 20 61 73 20 77 65 6c 6c 0a 20 20 utils as well.
16770 20 20 64 6f 6d 3a 20 64 6f 6d 2c 0a 20 20 20 20 dom: dom,.
16780 63 68 65 63 6b 3a 20 63 68 65 63 6b 2c 0a 20 20 check: check,.
16790 20 20 6d 69 73 63 3a 20 6d 69 73 63 2c 0a 20 20 misc: misc,.
167a0 20 20 74 61 67 73 3a 20 74 61 67 73 0a 20 20 7d tags: tags. }
167b0 3b 0a 0a 20 20 2f 2f 20 65 78 70 6f 72 74 20 74 ;.. // export t
167c0 68 65 20 63 6f 72 65 20 70 72 6f 70 73 2f 6d 65 he core props/me
167d0 74 68 6f 64 73 0a 20 20 76 61 72 20 54 61 67 24 thods. var Tag$
167e0 31 20 3d 20 54 61 67 3b 0a 20 20 76 61 72 20 74 1 = Tag;. var t
167f0 61 67 24 31 20 3d 20 74 61 67 3b 0a 20 20 76 61 ag$1 = tag;. va
16800 72 20 74 61 67 32 24 31 20 3d 20 74 61 67 32 3b r tag2$1 = tag2;
16810 0a 20 20 76 61 72 20 6d 6f 75 6e 74 24 32 20 3d . var mount$2 =
16820 20 6d 6f 75 6e 74 3b 0a 20 20 76 61 72 20 6d 69 mount;. var mi
16830 78 69 6e 24 31 20 3d 20 6d 69 78 69 6e 3b 0a 20 xin$1 = mixin;.
16840 20 76 61 72 20 75 70 64 61 74 65 24 32 20 3d 20 var update$2 =
16850 75 70 64 61 74 65 24 31 3b 0a 20 20 76 61 72 20 update$1;. var
16860 75 6e 72 65 67 69 73 74 65 72 24 31 20 3d 20 75 unregister$1 = u
16870 6e 72 65 67 69 73 74 65 72 3b 0a 20 20 76 61 72 nregister;. var
16880 20 76 65 72 73 69 6f 6e 24 31 20 3d 20 76 65 72 version$1 = ver
16890 73 69 6f 6e 3b 0a 20 20 76 61 72 20 6f 62 73 65 sion;. var obse
168a0 72 76 61 62 6c 65 24 31 20 3d 20 6f 62 73 65 72 rvable$1 = obser
168b0 76 61 62 6c 65 3b 0a 0a 20 20 76 61 72 20 72 69 vable;.. var ri
168c0 6f 74 24 31 20 3d 20 65 78 74 65 6e 64 28 7b 7d ot$1 = extend({}
168d0 2c 20 63 6f 72 65 2c 20 7b 0a 20 20 20 20 6f 62 , core, {. ob
168e0 73 65 72 76 61 62 6c 65 3a 20 6f 62 73 65 72 76 servable: observ
168f0 61 62 6c 65 2c 0a 20 20 20 20 73 65 74 74 69 6e able,. settin
16900 67 73 3a 20 73 65 74 74 69 6e 67 73 24 31 2c 0a gs: settings$1,.
16910 20 20 20 20 75 74 69 6c 3a 20 75 74 69 6c 2c 0a util: util,.
16920 20 20 7d 29 3b 0a 0a 20 20 76 61 72 20 72 69 6f });.. var rio
16930 74 24 32 20 3d 20 2f 2a 23 5f 5f 50 55 52 45 5f t$2 = /*#__PURE_
16940 5f 2a 2f 4f 62 6a 65 63 74 2e 66 72 65 65 7a 65 _*/Object.freeze
16950 28 7b 0a 20 20 20 20 73 65 74 74 69 6e 67 73 3a ({. settings:
16960 20 73 65 74 74 69 6e 67 73 24 31 2c 0a 20 20 20 settings$1,.
16970 20 75 74 69 6c 3a 20 75 74 69 6c 2c 0a 20 20 20 util: util,.
16980 20 54 61 67 3a 20 54 61 67 24 31 2c 0a 20 20 20 Tag: Tag$1,.
16990 20 74 61 67 3a 20 74 61 67 24 31 2c 0a 20 20 20 tag: tag$1,.
169a0 20 74 61 67 32 3a 20 74 61 67 32 24 31 2c 0a 20 tag2: tag2$1,.
169b0 20 20 20 6d 6f 75 6e 74 3a 20 6d 6f 75 6e 74 24 mount: mount$
169c0 32 2c 0a 20 20 20 20 6d 69 78 69 6e 3a 20 6d 69 2,. mixin: mi
169d0 78 69 6e 24 31 2c 0a 20 20 20 20 75 70 64 61 74 xin$1,. updat
169e0 65 3a 20 75 70 64 61 74 65 24 32 2c 0a 20 20 20 e: update$2,.
169f0 20 75 6e 72 65 67 69 73 74 65 72 3a 20 75 6e 72 unregister: unr
16a00 65 67 69 73 74 65 72 24 31 2c 0a 20 20 20 20 76 egister$1,. v
16a10 65 72 73 69 6f 6e 3a 20 76 65 72 73 69 6f 6e 24 ersion: version$
16a20 31 2c 0a 20 20 20 20 6f 62 73 65 72 76 61 62 6c 1,. observabl
16a30 65 3a 20 6f 62 73 65 72 76 61 62 6c 65 24 31 2c e: observable$1,
16a40 0a 20 20 20 20 64 65 66 61 75 6c 74 3a 20 72 69 . default: ri
16a50 6f 74 24 31 0a 20 20 7d 29 3b 0a 0a 20 20 2f 2a ot$1. });.. /*
16a60 2a 0a 20 20 20 2a 20 43 6f 6d 70 69 6c 65 72 20 *. * Compiler
16a70 66 6f 72 20 72 69 6f 74 20 63 75 73 74 6f 6d 20 for riot custom
16a80 74 61 67 73 0a 20 20 20 2a 20 40 76 65 72 73 69 tags. * @versi
16a90 6f 6e 20 76 33 2e 35 2e 32 0a 20 20 20 2a 2f 0a on v3.5.2. */.
16aa0 0a 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69 . // istanbul i
16ab0 67 6e 6f 72 65 20 6e 65 78 74 0a 20 20 66 75 6e gnore next. fun
16ac0 63 74 69 6f 6e 20 73 61 66 65 52 65 67 65 78 20 ction safeRegex
16ad0 28 72 65 29 20 7b 0a 20 20 20 20 76 61 72 20 61 (re) {. var a
16ae0 72 67 75 6d 65 6e 74 73 24 31 20 3d 20 61 72 67 rguments$1 = arg
16af0 75 6d 65 6e 74 73 3b 0a 0a 20 20 20 20 76 61 72 uments;.. var
16b00 20 73 72 63 20 3d 20 72 65 2e 73 6f 75 72 63 65 src = re.source
16b10 3b 0a 20 20 20 20 76 61 72 20 6f 70 74 20 3d 20 ;. var opt =
16b20 72 65 2e 67 6c 6f 62 61 6c 20 3f 20 27 67 27 20 re.global ? 'g'
16b30 3a 20 27 27 3b 0a 0a 20 20 20 20 69 66 20 28 72 : '';.. if (r
16b40 65 2e 69 67 6e 6f 72 65 43 61 73 65 29 20 7b 20 e.ignoreCase) {
16b50 6f 70 74 20 2b 3d 20 27 69 27 3b 20 7d 0a 20 20 opt += 'i'; }.
16b60 20 20 69 66 20 28 72 65 2e 6d 75 6c 74 69 6c 69 if (re.multili
16b70 6e 65 29 20 20 7b 20 6f 70 74 20 2b 3d 20 27 6d ne) { opt += 'm
16b80 27 3b 20 7d 0a 0a 20 20 20 20 66 6f 72 20 28 76 '; }.. for (v
16b90 61 72 20 69 20 3d 20 31 3b 20 69 20 3c 20 61 72 ar i = 1; i < ar
16ba0 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 guments.length;
16bb0 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 73 72 63 i++) {. src
16bc0 20 3d 20 73 72 63 2e 72 65 70 6c 61 63 65 28 27 = src.replace('
16bd0 40 27 2c 20 27 5c 5c 27 20 2b 20 61 72 67 75 6d @', '\\' + argum
16be0 65 6e 74 73 24 31 5b 69 5d 29 3b 0a 20 20 20 20 ents$1[i]);.
16bf0 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 65 }.. return ne
16c00 77 20 52 65 67 45 78 70 28 73 72 63 2c 20 6f 70 w RegExp(src, op
16c10 74 29 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 t). }.. /**.
16c20 20 2a 20 40 6d 6f 64 75 6c 65 20 70 61 72 73 65 * @module parse
16c30 72 73 0a 20 20 20 2a 2f 0a 20 20 76 61 72 20 70 rs. */. var p
16c40 61 72 73 65 72 73 20 3d 20 28 66 75 6e 63 74 69 arsers = (functi
16c50 6f 6e 20 28 77 69 6e 29 20 7b 0a 0a 20 20 20 20 on (win) {..
16c60 76 61 72 20 5f 70 20 3d 20 7b 7d 3b 0a 0a 20 20 var _p = {};..
16c70 20 20 66 75 6e 63 74 69 6f 6e 20 5f 72 20 28 6e function _r (n
16c80 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 76 61 72 ame) {. var
16c90 20 70 61 72 73 65 72 20 3d 20 77 69 6e 5b 6e 61 parser = win[na
16ca0 6d 65 5d 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 me];.. if (
16cb0 70 61 72 73 65 72 29 20 7b 20 72 65 74 75 72 6e parser) { return
16cc0 20 70 61 72 73 65 72 20 7d 0a 0a 20 20 20 20 20 parser }..
16cd0 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error
16ce0 28 27 50 61 72 73 65 72 20 22 27 20 2b 20 6e 61 ('Parser "' + na
16cf0 6d 65 20 2b 20 27 22 20 6e 6f 74 20 6c 6f 61 64 me + '" not load
16d00 65 64 2e 27 29 0a 20 20 20 20 7d 0a 0a 20 20 20 ed.'). }..
16d10 20 66 75 6e 63 74 69 6f 6e 20 5f 72 65 71 20 28 function _req (
16d20 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 76 61 name) {. va
16d30 72 20 70 61 72 74 73 20 3d 20 6e 61 6d 65 2e 73 r parts = name.s
16d40 70 6c 69 74 28 27 2e 27 29 3b 0a 0a 20 20 20 20 plit('.');..
16d50 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 6e 67 if (parts.leng
16d60 74 68 20 21 3d 3d 20 32 29 20 7b 20 74 68 72 6f th !== 2) { thro
16d70 77 20 6e 65 77 20 45 72 72 6f 72 28 27 42 61 64 w new Error('Bad
16d80 20 66 6f 72 6d 61 74 20 66 6f 72 20 70 61 72 73 format for pars
16d90 65 72 73 2e 5f 72 65 71 27 29 20 7d 0a 0a 20 20 ers._req') }..
16da0 20 20 20 20 76 61 72 20 70 61 72 73 65 72 20 3d var parser =
16db0 20 5f 70 5b 70 61 72 74 73 5b 30 5d 5d 5b 70 61 _p[parts[0]][pa
16dc0 72 74 73 5b 31 5d 5d 3b 0a 20 20 20 20 20 20 69 rts[1]];. i
16dd0 66 20 28 70 61 72 73 65 72 29 20 7b 20 72 65 74 f (parser) { ret
16de0 75 72 6e 20 70 61 72 73 65 72 20 7d 0a 0a 20 20 urn parser }..
16df0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 throw new Er
16e00 72 6f 72 28 27 50 61 72 73 65 72 20 22 27 20 2b ror('Parser "' +
16e10 20 6e 61 6d 65 20 2b 20 27 22 20 6e 6f 74 20 66 name + '" not f
16e20 6f 75 6e 64 2e 27 29 0a 20 20 20 20 7d 0a 0a 20 ound.'). }..
16e30 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 78 74 65 function exte
16e40 6e 64 20 28 6f 62 6a 2c 20 70 72 6f 70 73 29 20 nd (obj, props)
16e50 7b 0a 20 20 20 20 20 20 69 66 20 28 70 72 6f 70 {. if (prop
16e60 73 29 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 72 s) {. for
16e70 20 28 76 61 72 20 70 72 6f 70 20 69 6e 20 70 72 (var prop in pr
16e80 6f 70 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ops) {.
16e90 20 2f 2a 20 69 73 74 61 6e 62 75 6c 20 69 67 6e /* istanbul ign
16ea0 6f 72 65 20 6e 65 78 74 20 2a 2f 0a 20 20 20 20 ore next */.
16eb0 20 20 20 20 20 20 69 66 20 28 70 72 6f 70 73 2e if (props.
16ec0 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 70 hasOwnProperty(p
16ed0 72 6f 70 29 29 20 7b 0a 20 20 20 20 20 20 20 20 rop)) {.
16ee0 20 20 20 20 6f 62 6a 5b 70 72 6f 70 5d 20 3d 20 obj[prop] =
16ef0 70 72 6f 70 73 5b 70 72 6f 70 5d 3b 0a 20 20 20 props[prop];.
16f00 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
16f10 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. }.
16f20 20 72 65 74 75 72 6e 20 6f 62 6a 0a 20 20 20 20 return obj.
16f30 7d 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 }.. function
16f40 72 65 6e 64 65 72 50 75 67 20 28 63 6f 6d 70 69 renderPug (compi
16f50 6c 65 72 4e 61 6d 65 2c 20 68 74 6d 6c 2c 20 6f lerName, html, o
16f60 70 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 pts, url) {.
16f70 20 20 6f 70 74 73 20 3d 20 65 78 74 65 6e 64 28 opts = extend(
16f80 7b 0a 20 20 20 20 20 20 20 20 70 72 65 74 74 79 {. pretty
16f90 3a 20 74 72 75 65 2c 0a 20 20 20 20 20 20 20 20 : true,.
16fa0 66 69 6c 65 6e 61 6d 65 3a 20 75 72 6c 2c 0a 20 filename: url,.
16fb0 20 20 20 20 20 20 20 64 6f 63 74 79 70 65 3a 20 doctype:
16fc0 27 68 74 6d 6c 27 0a 20 20 20 20 20 20 7d 2c 20 'html'. },
16fd0 6f 70 74 73 29 3b 0a 20 20 20 20 20 20 72 65 74 opts);. ret
16fe0 75 72 6e 20 5f 72 28 63 6f 6d 70 69 6c 65 72 4e urn _r(compilerN
16ff0 61 6d 65 29 2e 72 65 6e 64 65 72 28 68 74 6d 6c ame).render(html
17000 2c 20 6f 70 74 73 29 0a 20 20 20 20 7d 0a 0a 20 , opts). }..
17010 20 20 20 5f 70 2e 68 74 6d 6c 20 3d 20 7b 0a 20 _p.html = {.
17020 20 20 20 20 20 6a 61 64 65 3a 20 66 75 6e 63 74 jade: funct
17030 69 6f 6e 20 28 68 74 6d 6c 2c 20 6f 70 74 73 2c ion (html, opts,
17040 20 75 72 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 url) {.
17050 2f 2a 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c /* eslint-disabl
17060 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 63 6f 6e e */. con
17070 73 6f 6c 65 2e 6c 6f 67 28 27 44 45 50 52 45 43 sole.log('DEPREC
17080 41 54 49 4f 4e 20 57 41 52 4e 49 4e 47 3a 20 6a ATION WARNING: j
17090 61 64 65 20 77 61 73 20 72 65 6e 61 6d 65 64 20 ade was renamed
170a0 22 70 75 67 22 20 2d 20 54 68 65 20 6a 61 64 65 "pug" - The jade
170b0 20 70 61 72 73 65 72 20 77 69 6c 6c 20 62 65 20 parser will be
170c0 72 65 6d 6f 76 65 64 20 69 6e 20 72 69 6f 74 40 removed in riot@
170d0 33 2e 30 2e 30 21 27 29 3b 0a 20 20 20 20 20 20 3.0.0!');.
170e0 20 20 2f 2a 20 65 73 6c 69 6e 74 2d 65 6e 61 62 /* eslint-enab
170f0 6c 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 le */. re
17100 74 75 72 6e 20 72 65 6e 64 65 72 50 75 67 28 27 turn renderPug('
17110 6a 61 64 65 27 2c 20 68 74 6d 6c 2c 20 6f 70 74 jade', html, opt
17120 73 2c 20 75 72 6c 29 0a 20 20 20 20 20 20 7d 2c s, url). },
17130 0a 20 20 20 20 20 20 70 75 67 3a 20 66 75 6e 63 . pug: func
17140 74 69 6f 6e 20 28 68 74 6d 6c 2c 20 6f 70 74 73 tion (html, opts
17150 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 20 20 20 , url) {.
17160 20 72 65 74 75 72 6e 20 72 65 6e 64 65 72 50 75 return renderPu
17170 67 28 27 70 75 67 27 2c 20 68 74 6d 6c 2c 20 6f g('pug', html, o
17180 70 74 73 2c 20 75 72 6c 29 0a 20 20 20 20 20 20 pts, url).
17190 7d 0a 20 20 20 20 7d 3b 0a 20 20 20 20 5f 70 2e }. };. _p.
171a0 63 73 73 20 3d 20 7b 0a 20 20 20 20 20 20 6c 65 css = {. le
171b0 73 73 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 61 ss: function (ta
171c0 67 2c 20 63 73 73 2c 20 6f 70 74 73 2c 20 75 72 g, css, opts, ur
171d0 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 l) {. var
171e0 20 72 65 74 3b 0a 0a 20 20 20 20 20 20 20 20 6f ret;.. o
171f0 70 74 73 20 3d 20 65 78 74 65 6e 64 28 7b 0a 20 pts = extend({.
17200 20 20 20 20 20 20 20 20 20 73 79 6e 63 3a 20 74 sync: t
17210 72 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 73 rue,. s
17220 79 6e 63 49 6d 70 6f 72 74 3a 20 74 72 75 65 2c yncImport: true,
17230 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 6e . filen
17240 61 6d 65 3a 20 75 72 6c 0a 20 20 20 20 20 20 20 ame: url.
17250 20 7d 2c 20 6f 70 74 73 29 3b 0a 20 20 20 20 20 }, opts);.
17260 20 20 20 5f 72 28 27 6c 65 73 73 27 29 2e 72 65 _r('less').re
17270 6e 64 65 72 28 63 73 73 2c 20 6f 70 74 73 2c 20 nder(css, opts,
17280 66 75 6e 63 74 69 6f 6e 20 28 65 72 72 2c 20 72 function (err, r
17290 65 73 75 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 esult) {.
172a0 20 20 20 2f 2f 20 69 73 74 61 6e 62 75 6c 20 69 // istanbul i
172b0 67 6e 6f 72 65 20 6e 65 78 74 0a 20 20 20 20 20 gnore next.
172c0 20 20 20 20 20 69 66 20 28 65 72 72 29 20 7b 20 if (err) {
172d0 74 68 72 6f 77 20 65 72 72 20 7d 0a 20 20 20 20 throw err }.
172e0 20 20 20 20 20 20 72 65 74 20 3d 20 72 65 73 75 ret = resu
172f0 6c 74 2e 63 73 73 3b 0a 20 20 20 20 20 20 20 20 lt.css;.
17300 7d 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 });. retu
17310 72 6e 20 72 65 74 0a 20 20 20 20 20 20 7d 0a 20 rn ret. }.
17320 20 20 20 7d 3b 0a 20 20 20 20 5f 70 2e 6a 73 20 };. _p.js
17330 3d 20 7b 0a 0a 20 20 20 20 20 20 65 73 36 3a 20 = {.. es6:
17340 66 75 6e 63 74 69 6f 6e 20 28 6a 73 2c 20 6f 70 function (js, op
17350 74 73 2c 20 75 72 6c 29 20 7b 20 20 20 2f 2f 20 ts, url) { //
17360 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d 6c eslint-disable-l
17370 69 6e 65 20 6e 6f 2d 75 6e 75 73 65 64 2d 76 61 ine no-unused-va
17380 72 73 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 rs. retur
17390 6e 20 5f 72 28 27 42 61 62 65 6c 27 29 2e 74 72 n _r('Babel').tr
173a0 61 6e 73 66 6f 72 6d 28 20 2f 2f 20 65 73 6c 69 ansform( // esli
173b0 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 0a nt-disable-line.
173c0 20 20 20 20 20 20 20 20 20 20 6a 73 2c 0a 20 20 js,.
173d0 20 20 20 20 20 20 20 20 65 78 74 65 6e 64 28 7b extend({
173e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 75 . plu
173f0 67 69 6e 73 3a 20 5b 0a 20 20 20 20 20 20 20 20 gins: [.
17400 20 20 20 20 20 20 5b 27 74 72 61 6e 73 66 6f 72 ['transfor
17410 6d 2d 65 73 32 30 31 35 2d 74 65 6d 70 6c 61 74 m-es2015-templat
17420 65 2d 6c 69 74 65 72 61 6c 73 27 2c 20 7b 20 6c e-literals', { l
17430 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c 0a 20 oose: true }],.
17440 20 20 20 20 20 20 20 20 20 20 20 20 20 27 74 72 'tr
17450 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 6c ansform-es2015-l
17460 69 74 65 72 61 6c 73 27 2c 0a 20 20 20 20 20 20 iterals',.
17470 20 20 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f 'transfo
17480 72 6d 2d 65 73 32 30 31 35 2d 66 75 6e 63 74 69 rm-es2015-functi
17490 6f 6e 2d 6e 61 6d 65 27 2c 0a 20 20 20 20 20 20 on-name',.
174a0 20 20 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f 'transfo
174b0 72 6d 2d 65 73 32 30 31 35 2d 61 72 72 6f 77 2d rm-es2015-arrow-
174c0 66 75 6e 63 74 69 6f 6e 73 27 2c 0a 20 20 20 20 functions',.
174d0 20 20 20 20 20 20 20 20 20 20 27 74 72 61 6e 73 'trans
174e0 66 6f 72 6d 2d 65 73 32 30 31 35 2d 62 6c 6f 63 form-es2015-bloc
174f0 6b 2d 73 63 6f 70 65 64 2d 66 75 6e 63 74 69 6f k-scoped-functio
17500 6e 73 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ns',.
17510 20 20 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65 ['transform-e
17520 73 32 30 31 35 2d 63 6c 61 73 73 65 73 27 2c 20 s2015-classes',
17530 7b 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d { loose: true }]
17540 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.
17550 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 'transform-es201
17560 35 2d 6f 62 6a 65 63 74 2d 73 75 70 65 72 27 2c 5-object-super',
17570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 . '
17580 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 transform-es2015
17590 2d 73 68 6f 72 74 68 61 6e 64 2d 70 72 6f 70 65 -shorthand-prope
175a0 72 74 69 65 73 27 2c 0a 20 20 20 20 20 20 20 20 rties',.
175b0 20 20 20 20 20 20 27 74 72 61 6e 73 66 6f 72 6d 'transform
175c0 2d 65 73 32 30 31 35 2d 64 75 70 6c 69 63 61 74 -es2015-duplicat
175d0 65 2d 6b 65 79 73 27 2c 0a 20 20 20 20 20 20 20 e-keys',.
175e0 20 20 20 20 20 20 20 5b 27 74 72 61 6e 73 66 6f ['transfo
175f0 72 6d 2d 65 73 32 30 31 35 2d 63 6f 6d 70 75 74 rm-es2015-comput
17600 65 64 2d 70 72 6f 70 65 72 74 69 65 73 27 2c 20 ed-properties',
17610 7b 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d { loose: true }]
17620 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.
17630 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 ['transform-es20
17640 31 35 2d 66 6f 72 2d 6f 66 27 2c 20 7b 20 6c 6f 15-for-of', { lo
17650 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c 0a 20 20 ose: true }],.
17660 20 20 20 20 20 20 20 20 20 20 20 20 27 74 72 61 'tra
17670 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 73 74 nsform-es2015-st
17680 69 63 6b 79 2d 72 65 67 65 78 27 2c 0a 20 20 20 icky-regex',.
17690 20 20 20 20 20 20 20 20 20 20 20 27 74 72 61 6e 'tran
176a0 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 75 6e 69 sform-es2015-uni
176b0 63 6f 64 65 2d 72 65 67 65 78 27 2c 0a 20 20 20 code-regex',.
176c0 20 20 20 20 20 20 20 20 20 20 20 27 63 68 65 63 'chec
176d0 6b 2d 65 73 32 30 31 35 2d 63 6f 6e 73 74 61 6e k-es2015-constan
176e0 74 73 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ts',.
176f0 20 20 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 65 ['transform-e
17700 73 32 30 31 35 2d 73 70 72 65 61 64 27 2c 20 7b s2015-spread', {
17710 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c loose: true }],
17720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 . '
17730 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 transform-es2015
17740 2d 70 61 72 61 6d 65 74 65 72 73 27 2c 0a 20 20 -parameters',.
17750 20 20 20 20 20 20 20 20 20 20 20 20 5b 27 74 72 ['tr
17760 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 2d 64 ansform-es2015-d
17770 65 73 74 72 75 63 74 75 72 69 6e 67 27 2c 20 7b estructuring', {
17780 20 6c 6f 6f 73 65 3a 20 74 72 75 65 20 7d 5d 2c loose: true }],
17790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 . '
177a0 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 transform-es2015
177b0 2d 62 6c 6f 63 6b 2d 73 63 6f 70 69 6e 67 27 2c -block-scoping',
177c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 . '
177d0 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 35 transform-es2015
177e0 2d 74 79 70 65 6f 66 2d 73 79 6d 62 6f 6c 27 2c -typeof-symbol',
177f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b . [
17800 27 74 72 61 6e 73 66 6f 72 6d 2d 65 73 32 30 31 'transform-es201
17810 35 2d 6d 6f 64 75 6c 65 73 2d 63 6f 6d 6d 6f 6e 5-modules-common
17820 6a 73 27 2c 20 7b 20 61 6c 6c 6f 77 54 6f 70 4c js', { allowTopL
17830 65 76 65 6c 54 68 69 73 3a 20 74 72 75 65 20 7d evelThis: true }
17840 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],.
17850 20 5b 27 74 72 61 6e 73 66 6f 72 6d 2d 72 65 67 ['transform-reg
17860 65 6e 65 72 61 74 6f 72 27 2c 20 7b 20 61 73 79 enerator', { asy
17870 6e 63 3a 20 66 61 6c 73 65 2c 20 61 73 79 6e 63 nc: false, async
17880 47 65 6e 65 72 61 74 6f 72 73 3a 20 66 61 6c 73 Generators: fals
17890 65 20 7d 5d 0a 20 20 20 20 20 20 20 20 20 20 20 e }].
178a0 20 5d 0a 20 20 20 20 20 20 20 20 20 20 7d 2c 0a ]. },.
178b0 20 20 20 20 20 20 20 20 20 20 6f 70 74 73 0a 20 opts.
178c0 20 20 20 20 20 20 20 20 20 29 29 2e 63 6f 64 65 )).code
178d0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 . },.
178e0 62 75 62 6c 65 3a 20 66 75 6e 63 74 69 6f 6e 20 buble: function
178f0 28 6a 73 2c 20 6f 70 74 73 2c 20 75 72 6c 29 20 (js, opts, url)
17900 7b 0a 20 20 20 20 20 20 20 20 6f 70 74 73 20 3d {. opts =
17910 20 65 78 74 65 6e 64 28 7b 0a 20 20 20 20 20 20 extend({.
17920 20 20 20 20 73 6f 75 72 63 65 3a 20 75 72 6c 2c source: url,
17930 0a 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c . modul
17940 65 73 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 es: false.
17950 20 20 7d 2c 20 6f 70 74 73 29 3b 0a 20 20 20 20 }, opts);.
17960 20 20 20 20 72 65 74 75 72 6e 20 5f 72 28 27 62 return _r('b
17970 75 62 6c 65 27 29 2e 74 72 61 6e 73 66 6f 72 6d uble').transform
17980 28 6a 73 2c 20 6f 70 74 73 29 2e 63 6f 64 65 0a (js, opts).code.
17990 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 63 },. c
179a0 6f 66 66 65 65 3a 20 66 75 6e 63 74 69 6f 6e 20 offee: function
179b0 28 6a 73 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20 (js, opts) {.
179c0 20 20 20 20 20 72 65 74 75 72 6e 20 5f 72 28 27 return _r('
179d0 43 6f 66 66 65 65 53 63 72 69 70 74 27 29 2e 63 CoffeeScript').c
179e0 6f 6d 70 69 6c 65 28 6a 73 2c 20 65 78 74 65 6e ompile(js, exten
179f0 64 28 7b 20 62 61 72 65 3a 20 74 72 75 65 20 7d d({ bare: true }
17a00 2c 20 6f 70 74 73 29 29 0a 20 20 20 20 20 20 7d , opts)). }
17a10 2c 0a 20 20 20 20 20 20 6c 69 76 65 73 63 72 69 ,. livescri
17a20 70 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6a 73 pt: function (js
17a30 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20 20 20 20 , opts) {.
17a40 20 20 72 65 74 75 72 6e 20 5f 72 28 27 6c 69 76 return _r('liv
17a50 65 73 63 72 69 70 74 27 29 2e 63 6f 6d 70 69 6c escript').compil
17a60 65 28 6a 73 2c 20 65 78 74 65 6e 64 28 7b 20 62 e(js, extend({ b
17a70 61 72 65 3a 20 74 72 75 65 2c 20 68 65 61 64 65 are: true, heade
17a80 72 3a 20 66 61 6c 73 65 20 7d 2c 20 6f 70 74 73 r: false }, opts
17a90 29 29 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 )). },.
17aa0 20 20 74 79 70 65 73 63 72 69 70 74 3a 20 66 75 typescript: fu
17ab0 6e 63 74 69 6f 6e 20 28 6a 73 2c 20 6f 70 74 73 nction (js, opts
17ac0 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu
17ad0 72 6e 20 5f 72 28 27 74 79 70 65 73 63 72 69 70 rn _r('typescrip
17ae0 74 27 29 28 6a 73 2c 20 6f 70 74 73 29 0a 20 20 t')(js, opts).
17af0 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 6e 6f 6e },. non
17b00 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6a 73 29 e: function (js)
17b10 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur
17b20 6e 20 6a 73 0a 20 20 20 20 20 20 7d 0a 20 20 20 n js. }.
17b30 20 7d 3b 0a 20 20 20 20 5f 70 2e 6a 73 2e 6a 61 };. _p.js.ja
17b40 76 61 73 63 72 69 70 74 20 20 20 3d 20 5f 70 2e vascript = _p.
17b50 6a 73 2e 6e 6f 6e 65 3b 0a 20 20 20 20 5f 70 2e js.none;. _p.
17b60 6a 73 2e 63 6f 66 66 65 65 73 63 72 69 70 74 20 js.coffeescript
17b70 3d 20 5f 70 2e 6a 73 2e 63 6f 66 66 65 65 3b 0a = _p.js.coffee;.
17b80 20 20 20 20 5f 70 2e 5f 72 65 71 20 20 3d 20 5f _p._req = _
17b90 72 65 71 3b 0a 20 20 20 20 5f 70 2e 75 74 69 6c req;. _p.util
17ba0 73 20 3d 20 7b 0a 20 20 20 20 20 20 65 78 74 65 s = {. exte
17bb0 6e 64 3a 20 65 78 74 65 6e 64 0a 20 20 20 20 7d nd: extend. }
17bc0 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 70 ;.. return _p
17bd0 0a 0a 20 20 7d 29 28 77 69 6e 64 6f 77 20 7c 7c .. })(window ||
17be0 20 67 6c 6f 62 61 6c 29 3b 0a 0a 20 20 76 61 72 global);.. var
17bf0 20 53 5f 53 51 5f 53 54 52 20 3d 20 2f 27 5b 5e S_SQ_STR = /'[^
17c00 27 5c 6e 5c 72 5c 5c 5d 2a 28 3f 3a 5c 5c 28 3f '\n\r\\]*(?:\\(?
17c10 3a 5c 72 5c 6e 3f 7c 5b 5c 53 5c 73 5d 29 5b 5e :\r\n?|[\S\s])[^
17c20 27 5c 6e 5c 72 5c 5c 5d 2a 29 2a 27 2f 2e 73 6f '\n\r\\]*)*'/.so
17c30 75 72 63 65 3b 0a 0a 20 20 76 61 72 20 53 5f 52 urce;.. var S_R
17c40 5f 53 52 43 31 20 3d 20 5b 0a 20 20 20 20 2f 5c _SRC1 = [. /\
17c50 2f 5c 2a 5b 5e 2a 5d 2a 5c 2a 2b 28 3f 3a 5b 5e /\*[^*]*\*+(?:[^
17c60 2a 2f 5d 5b 5e 2a 5d 2a 5c 2a 2b 29 2a 5c 2f 2f */][^*]*\*+)*\//
17c70 2e 73 6f 75 72 63 65 2c 0a 20 20 20 20 27 2f 2f .source,. '//
17c80 2e 2a 27 2c 0a 20 20 20 20 53 5f 53 51 5f 53 54 .*',. S_SQ_ST
17c90 52 2c 0a 20 20 20 20 53 5f 53 51 5f 53 54 52 2e R,. S_SQ_STR.
17ca0 72 65 70 6c 61 63 65 28 2f 27 2f 67 2c 20 27 22 replace(/'/g, '"
17cb0 27 29 2c 0a 20 20 20 20 27 28 5b 2f 60 5d 29 27 '),. '([/`])'
17cc0 0a 20 20 5d 2e 6a 6f 69 6e 28 27 7c 27 29 3b 0a . ].join('|');.
17cd0 0a 20 20 76 61 72 20 53 5f 52 5f 53 52 43 32 20 . var S_R_SRC2
17ce0 3d 20 28 53 5f 52 5f 53 52 43 31 2e 73 6c 69 63 = (S_R_SRC1.slic
17cf0 65 28 30 2c 20 2d 32 29 29 20 2b 20 22 7b 7d 5d e(0, -2)) + "{}]
17d00 29 22 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 )";.. function
17d10 73 6b 69 70 45 53 36 73 74 72 20 28 63 6f 64 65 skipES6str (code
17d20 2c 20 73 74 61 72 74 2c 20 73 74 61 63 6b 29 20 , start, stack)
17d30 7b 0a 0a 20 20 20 20 76 61 72 20 72 65 20 3d 20 {.. var re =
17d40 2f 5b 60 24 5c 5c 5d 2f 67 3b 0a 0a 20 20 20 20 /[`$\\]/g;..
17d50 72 65 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 73 re.lastIndex = s
17d60 74 61 72 74 3b 0a 20 20 20 20 77 68 69 6c 65 20 tart;. while
17d70 28 72 65 2e 65 78 65 63 28 63 6f 64 65 29 29 20 (re.exec(code))
17d80 7b 0a 20 20 20 20 20 20 76 61 72 20 65 6e 64 20 {. var end
17d90 3d 20 72 65 2e 6c 61 73 74 49 6e 64 65 78 3b 0a = re.lastIndex;.
17da0 20 20 20 20 20 20 76 61 72 20 63 20 3d 20 63 6f var c = co
17db0 64 65 5b 65 6e 64 20 2d 20 31 5d 3b 0a 0a 20 20 de[end - 1];..
17dc0 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 27 60 if (c === '`
17dd0 27 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 ') {. ret
17de0 75 72 6e 20 65 6e 64 0a 20 20 20 20 20 20 7d 0a urn end. }.
17df0 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 if (c ===
17e00 27 24 27 20 26 26 20 63 6f 64 65 5b 65 6e 64 5d '$' && code[end]
17e10 20 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20 20 20 === '{') {.
17e20 20 20 20 20 73 74 61 63 6b 2e 70 75 73 68 28 27 stack.push('
17e30 60 27 2c 20 27 7d 27 29 3b 0a 20 20 20 20 20 20 `', '}');.
17e40 20 20 72 65 74 75 72 6e 20 65 6e 64 20 2b 20 31 return end + 1
17e50 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 . }. r
17e60 65 2e 6c 61 73 74 49 6e 64 65 78 2b 2b 3b 0a 20 e.lastIndex++;.
17e70 20 20 20 7d 0a 0a 20 20 20 20 74 68 72 6f 77 20 }.. throw
17e80 6e 65 77 20 45 72 72 6f 72 28 27 55 6e 63 6c 6f new Error('Unclo
17e90 73 65 64 20 45 53 36 20 74 65 6d 70 6c 61 74 65 sed ES6 template
17ea0 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 '). }.. functi
17eb0 6f 6e 20 6a 73 53 70 6c 69 74 74 65 72 20 28 63 on jsSplitter (c
17ec0 6f 64 65 2c 20 73 74 61 72 74 29 20 7b 0a 0a 20 ode, start) {..
17ed0 20 20 20 76 61 72 20 72 65 31 20 3d 20 6e 65 77 var re1 = new
17ee0 20 52 65 67 45 78 70 28 53 5f 52 5f 53 52 43 31 RegExp(S_R_SRC1
17ef0 2c 20 27 67 27 29 3b 0a 20 20 20 20 76 61 72 20 , 'g');. var
17f00 72 65 32 3b 0a 0a 20 20 20 20 2f 2a 20 69 73 74 re2;.. /* ist
17f10 61 6e 62 75 6c 20 69 67 6e 6f 72 65 20 6e 65 78 anbul ignore nex
17f20 74 20 2a 2f 0a 20 20 76 61 72 20 73 6b 69 70 52 t */. var skipR
17f30 65 67 65 78 20 3d 20 62 72 61 63 6b 65 74 73 2e egex = brackets.
17f40 73 6b 69 70 52 65 67 65 78 3b 0a 20 20 20 20 76 skipRegex;. v
17f50 61 72 20 6f 66 66 73 65 74 20 3d 20 73 74 61 72 ar offset = star
17f60 74 20 7c 20 30 3b 0a 20 20 20 20 76 61 72 20 72 t | 0;. var r
17f70 65 73 75 6c 74 20 3d 20 5b 5b 5d 5d 3b 0a 20 20 esult = [[]];.
17f80 20 20 76 61 72 20 73 74 61 63 6b 20 3d 20 5b 5d var stack = []
17f90 3b 0a 20 20 20 20 76 61 72 20 72 65 20 3d 20 72 ;. var re = r
17fa0 65 31 3b 0a 0a 20 20 20 20 76 61 72 20 6c 61 73 e1;.. var las
17fb0 74 50 6f 73 20 3d 20 72 65 2e 6c 61 73 74 49 6e tPos = re.lastIn
17fc0 64 65 78 20 3d 20 6f 66 66 73 65 74 3b 0a 20 20 dex = offset;.
17fd0 20 20 76 61 72 20 73 74 72 2c 20 63 68 2c 20 69 var str, ch, i
17fe0 64 78 2c 20 65 6e 64 2c 20 6d 61 74 63 68 3b 0a dx, end, match;.
17ff0 0a 20 20 20 20 77 68 69 6c 65 20 28 28 6d 61 74 . while ((mat
18000 63 68 20 3d 20 72 65 2e 65 78 65 63 28 63 6f 64 ch = re.exec(cod
18010 65 29 29 29 20 7b 0a 20 20 20 20 20 20 69 64 78 e))) {. idx
18020 20 3d 20 6d 61 74 63 68 2e 69 6e 64 65 78 3b 0a = match.index;.
18030 20 20 20 20 20 20 65 6e 64 20 3d 20 72 65 2e 6c end = re.l
18040 61 73 74 49 6e 64 65 78 3b 0a 20 20 20 20 20 20 astIndex;.
18050 73 74 72 20 3d 20 27 27 3b 0a 20 20 20 20 20 20 str = '';.
18060 63 68 20 3d 20 6d 61 74 63 68 5b 31 5d 3b 0a 0a ch = match[1];..
18070 20 20 20 20 20 20 69 66 20 28 63 68 29 20 7b 0a if (ch) {.
18080 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 68 20 . if (ch
18090 3d 3d 3d 20 27 7b 27 29 20 7b 0a 20 20 20 20 20 === '{') {.
180a0 20 20 20 20 20 73 74 61 63 6b 2e 70 75 73 68 28 stack.push(
180b0 27 7d 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 7d '}');.. }
180c0 20 65 6c 73 65 20 69 66 20 28 63 68 20 3d 3d 3d else if (ch ===
180d0 20 27 7d 27 29 20 7b 0a 20 20 20 20 20 20 20 20 '}') {.
180e0 20 20 69 66 20 28 73 74 61 63 6b 2e 70 6f 70 28 if (stack.pop(
180f0 29 20 21 3d 3d 20 63 68 29 20 7b 0a 20 20 20 20 ) !== ch) {.
18100 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 throw ne
18110 77 20 45 72 72 6f 72 28 22 55 6e 65 78 70 65 63 w Error("Unexpec
18120 74 65 64 20 27 7d 27 22 29 0a 0a 20 20 20 20 20 ted '}'")..
18130 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
18140 73 74 61 63 6b 5b 73 74 61 63 6b 2e 6c 65 6e 67 stack[stack.leng
18150 74 68 20 2d 20 31 5d 20 3d 3d 3d 20 27 60 27 29 th - 1] === '`')
18160 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c
18170 68 20 3d 20 73 74 61 63 6b 2e 70 6f 70 28 29 3b h = stack.pop();
18180 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 . }..
18190 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
181a0 28 63 68 20 3d 3d 3d 20 27 2f 27 29 20 7b 0a 20 (ch === '/') {.
181b0 20 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 73 end = s
181c0 6b 69 70 52 65 67 65 78 28 63 6f 64 65 2c 20 69 kipRegex(code, i
181d0 64 78 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 dx);..
181e0 69 66 20 28 65 6e 64 20 3e 20 69 64 78 20 2b 20 if (end > idx +
181f0 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 1) {.
18200 20 73 74 72 20 3d 20 63 6f 64 65 2e 73 6c 69 63 str = code.slic
18210 65 28 69 64 78 2c 20 65 6e 64 29 3b 0a 20 20 20 e(idx, end);.
18220 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
18230 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 }.. if (
18240 63 68 20 3d 3d 3d 20 27 60 27 29 20 7b 0a 20 20 ch === '`') {.
18250 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 73 6b end = sk
18260 69 70 45 53 36 73 74 72 28 63 6f 64 65 2c 20 65 ipES6str(code, e
18270 6e 64 2c 20 73 74 61 63 6b 29 3b 0a 20 20 20 20 nd, stack);.
18280 20 20 20 20 20 20 73 74 72 20 3d 20 63 6f 64 65 str = code
18290 2e 73 6c 69 63 65 28 69 64 78 2c 20 65 6e 64 29 .slice(idx, end)
182a0 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 ;.. if
182b0 28 73 74 61 63 6b 2e 6c 65 6e 67 74 68 29 20 7b (stack.length) {
182c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 20 . re
182d0 3d 20 72 65 32 20 7c 7c 20 28 72 65 32 20 3d 20 = re2 || (re2 =
182e0 6e 65 77 20 52 65 67 45 78 70 28 53 5f 52 5f 53 new RegExp(S_R_S
182f0 52 43 32 2c 20 27 67 27 29 29 3b 0a 20 20 20 20 RC2, 'g'));.
18300 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 } else {.
18310 20 20 20 20 20 20 20 20 20 20 20 72 65 20 3d 20 re =
18320 72 65 31 3b 0a 20 20 20 20 20 20 20 20 20 20 7d re1;. }
18330 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 . }..
18340 20 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20 } else {..
18350 20 20 20 20 73 74 72 20 3d 20 6d 61 74 63 68 5b str = match[
18360 30 5d 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 0];.. if
18370 28 73 74 72 5b 30 5d 20 3d 3d 3d 20 27 2f 27 29 (str[0] === '/')
18380 20 7b 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 {. str
18390 20 3d 20 73 74 72 5b 31 5d 20 3d 3d 3d 20 27 2a = str[1] === '*
183a0 27 20 3f 20 27 20 27 20 3a 20 27 27 3b 0a 20 20 ' ? ' ' : '';.
183b0 20 20 20 20 20 20 20 20 63 6f 64 65 20 3d 20 63 code = c
183c0 6f 64 65 2e 73 6c 69 63 65 28 6f 66 66 73 65 74 ode.slice(offset
183d0 2c 20 69 64 78 29 20 2b 20 73 74 72 20 2b 20 63 , idx) + str + c
183e0 6f 64 65 2e 73 6c 69 63 65 28 65 6e 64 29 3b 0a ode.slice(end);.
183f0 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 end =
18400 69 64 78 20 2b 20 73 74 72 2e 6c 65 6e 67 74 68 idx + str.length
18410 3b 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 20 ;. str
18420 3d 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 7d = '';.. }
18430 20 65 6c 73 65 20 69 66 20 28 73 74 72 2e 6c 65 else if (str.le
18440 6e 67 74 68 20 3d 3d 3d 20 32 29 20 7b 0a 20 20 ngth === 2) {.
18450 20 20 20 20 20 20 20 20 73 74 72 20 3d 20 27 27 str = ''
18460 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
18470 20 20 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 73 }.. if (s
18480 74 72 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 tr) {. re
18490 73 75 6c 74 5b 30 5d 2e 70 75 73 68 28 63 6f 64 sult[0].push(cod
184a0 65 2e 73 6c 69 63 65 28 6c 61 73 74 50 6f 73 2c e.slice(lastPos,
184b0 20 69 64 78 29 29 3b 0a 20 20 20 20 20 20 20 20 idx));.
184c0 72 65 73 75 6c 74 2e 70 75 73 68 28 73 74 72 29 result.push(str)
184d0 3b 0a 20 20 20 20 20 20 20 20 6c 61 73 74 50 6f ;. lastPo
184e0 73 20 3d 20 65 6e 64 3b 0a 20 20 20 20 20 20 7d s = end;. }
184f0 0a 0a 20 20 20 20 20 20 72 65 2e 6c 61 73 74 49 .. re.lastI
18500 6e 64 65 78 20 3d 20 65 6e 64 3b 0a 20 20 20 20 ndex = end;.
18510 7d 0a 0a 20 20 20 20 72 65 73 75 6c 74 5b 30 5d }.. result[0]
18520 2e 70 75 73 68 28 63 6f 64 65 2e 73 6c 69 63 65 .push(code.slice
18530 28 6c 61 73 74 50 6f 73 29 29 3b 0a 0a 20 20 20 (lastPos));..
18540 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 20 return result.
18550 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 40 }.. /**. * @
18560 6d 6f 64 75 6c 65 20 63 6f 6d 70 69 6c 65 72 0a module compiler.
18570 20 20 20 2a 2f 0a 0a 20 20 76 61 72 20 65 78 74 */.. var ext
18580 65 6e 64 24 31 20 3d 20 70 61 72 73 65 72 73 2e end$1 = parsers.
18590 75 74 69 6c 73 2e 65 78 74 65 6e 64 3b 0a 20 20 utils.extend;.
185a0 2f 2a 20 65 73 6c 69 6e 74 2d 65 6e 61 62 6c 65 /* eslint-enable
185b0 20 2a 2f 0a 0a 20 20 76 61 72 20 53 5f 4c 49 4e */.. var S_LIN
185c0 45 53 54 52 20 3d 20 2f 22 5b 5e 22 5c 6e 5c 5c ESTR = /"[^"\n\\
185d0 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b 5e 22 ]*(?:\\[\S\s][^"
185e0 5c 6e 5c 5c 5d 2a 29 2a 22 7c 27 5b 5e 27 5c 6e \n\\]*)*"|'[^'\n
185f0 5c 5c 5d 2a 28 3f 3a 5c 5c 5b 5c 53 5c 73 5d 5b \\]*(?:\\[\S\s][
18600 5e 27 5c 6e 5c 5c 5d 2a 29 2a 27 2f 2e 73 6f 75 ^'\n\\]*)*'/.sou
18610 72 63 65 3b 0a 0a 20 20 76 61 72 20 53 5f 53 54 rce;.. var S_ST
18620 52 49 4e 47 53 20 3d 20 62 72 61 63 6b 65 74 73 RINGS = brackets
18630 2e 52 5f 53 54 52 49 4e 47 53 2e 73 6f 75 72 63 .R_STRINGS.sourc
18640 65 3b 0a 0a 20 20 76 61 72 20 48 54 4d 4c 5f 41 e;.. var HTML_A
18650 54 54 52 53 20 3d 20 2f 20 2a 28 5b 2d 5c 77 3a TTRS = / *([-\w:
18660 5c 78 41 30 2d 5c 78 46 46 5d 2b 29 20 3f 28 3f \xA0-\xFF]+) ?(?
18670 3a 3d 20 3f 28 27 5b 5e 27 5d 2a 27 7c 22 5b 5e := ?('[^']*'|"[^
18680 22 5d 2a 22 7c 5c 53 2b 29 29 3f 2f 67 3b 0a 0a "]*"|\S+))?/g;..
18690 20 20 76 61 72 20 48 54 4d 4c 5f 43 4f 4d 4d 53 var HTML_COMMS
186a0 20 3d 20 52 65 67 45 78 70 28 2f 3c 21 2d 2d 28 = RegExp(/<!--(
186b0 3f 21 3e 29 5b 5c 53 5c 73 5d 2a 3f 2d 2d 3e 2f ?!>)[\S\s]*?-->/
186c0 2e 73 6f 75 72 63 65 20 2b 20 27 7c 27 20 2b 20 .source + '|' +
186d0 53 5f 4c 49 4e 45 53 54 52 2c 20 27 67 27 29 3b S_LINESTR, 'g');
186e0 0a 0a 20 20 76 61 72 20 48 54 4d 4c 5f 54 41 47 .. var HTML_TAG
186f0 53 20 3d 20 2f 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a S = /<(-?[A-Za-z
18700 5d 5b 2d 5c 77 5c 78 41 30 2d 5c 78 46 46 5d 2a ][-\w\xA0-\xFF]*
18710 29 28 3f 3a 5c 73 2b 28 5b 5e 22 27 2f 3e 5d 2a )(?:\s+([^"'/>]*
18720 28 3f 3a 28 3f 3a 22 5b 5e 22 5d 2a 22 7c 27 5b (?:(?:"[^"]*"|'[
18730 5e 27 5d 2a 27 7c 5c 2f 5b 5e 3e 5d 29 5b 5e 27 ^']*'|\/[^>])[^'
18740 22 2f 3e 5d 2a 29 2a 29 7c 5c 73 2a 29 28 5c 2f "/>]*)*)|\s*)(\/
18750 3f 29 3e 2f 67 3b 0a 0a 20 20 76 61 72 20 48 54 ?)>/g;.. var HT
18760 4d 4c 5f 50 41 43 4b 20 3d 20 2f 3e 5b 20 5c 74 ML_PACK = />[ \t
18770 5d 2b 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a 5d 7c 5c ]+<(-?[A-Za-z]|\
18780 2f 5b 2d 41 2d 5a 61 2d 7a 5d 29 2f 67 3b 0a 0a /[-A-Za-z])/g;..
18790 20 20 76 61 72 20 52 49 4f 54 5f 41 54 54 52 53 var RIOT_ATTRS
187a0 20 3d 20 5b 27 73 74 79 6c 65 27 2c 20 27 73 72 = ['style', 'sr
187b0 63 27 2c 20 27 64 27 2c 20 27 76 61 6c 75 65 27 c', 'd', 'value'
187c0 5d 3b 0a 0a 20 20 76 61 72 20 56 4f 49 44 5f 54 ];.. var VOID_T
187d0 41 47 53 20 3d 20 2f 5e 28 3f 3a 69 6e 70 75 74 AGS = /^(?:input
187e0 7c 69 6d 67 7c 62 72 7c 77 62 72 7c 68 72 7c 61 |img|br|wbr|hr|a
187f0 72 65 61 7c 62 61 73 65 7c 63 6f 6c 7c 65 6d 62 rea|base|col|emb
18800 65 64 7c 6b 65 79 67 65 6e 7c 6c 69 6e 6b 7c 6d ed|keygen|link|m
18810 65 74 61 7c 70 61 72 61 6d 7c 73 6f 75 72 63 65 eta|param|source
18820 7c 74 72 61 63 6b 29 24 2f 3b 0a 0a 20 20 76 61 |track)$/;.. va
18830 72 20 50 52 45 5f 54 41 47 53 20 3d 20 2f 3c 70 r PRE_TAGS = /<p
18840 72 65 28 3f 3a 5c 73 2b 28 3f 3a 5b 5e 22 3e 5d re(?:\s+(?:[^">]
18850 2a 7c 22 5b 5e 22 5d 2a 22 29 2a 29 3f 3e 28 5b *|"[^"]*")*)?>([
18860 5c 53 5c 73 5d 2b 3f 29 3c 5c 2f 70 72 65 5c 73 \S\s]+?)<\/pre\s
18870 2a 3e 2f 67 69 3b 0a 0a 20 20 76 61 72 20 53 50 *>/gi;.. var SP
18880 45 43 5f 54 59 50 45 53 20 3d 20 2f 5e 22 28 3f EC_TYPES = /^"(?
18890 3a 6e 75 6d 62 65 72 7c 64 61 74 65 28 3f 3a 74 :number|date(?:t
188a0 69 6d 65 29 3f 7c 74 69 6d 65 7c 6d 6f 6e 74 68 ime)?|time|month
188b0 7c 65 6d 61 69 6c 7c 63 6f 6c 6f 72 29 5c 62 2f |email|color)\b/
188c0 69 3b 0a 0a 20 20 76 61 72 20 49 4d 50 4f 52 54 i;.. var IMPORT
188d0 5f 53 54 41 54 45 4d 45 4e 54 20 3d 20 2f 5e 5c _STATEMENT = /^\
188e0 73 2a 69 6d 70 6f 72 74 28 3f 21 5c 77 7c 28 5c s*import(?!\w|(\
188f0 73 29 3f 5c 28 29 28 3f 3a 28 3f 3a 5c 73 7c 5b s)?\()(?:(?:\s|[
18900 5e 5c 73 27 22 5d 29 2a 29 5b 27 7c 22 5d 2e 2a ^\s'"])*)['|"].*
18910 5c 6e 3f 2f 67 6d 3b 0a 0a 20 20 76 61 72 20 54 \n?/gm;.. var T
18920 52 49 4d 5f 54 52 41 49 4c 20 3d 20 2f 5b 20 5c RIM_TRAIL = /[ \
18930 74 5d 2b 24 2f 67 6d 3b 0a 0a 20 20 76 61 72 0a t]+$/gm;.. var.
18940 20 20 20 20 52 45 5f 48 41 53 45 58 50 52 20 3d RE_HASEXPR =
18950 20 73 61 66 65 52 65 67 65 78 28 2f 40 23 5c 64 safeRegex(/@#\d
18960 2f 2c 20 27 78 30 31 27 29 2c 0a 20 20 20 20 52 /, 'x01'),. R
18970 45 5f 52 45 50 45 58 50 52 20 3d 20 73 61 66 65 E_REPEXPR = safe
18980 52 65 67 65 78 28 2f 40 23 28 5c 64 2b 29 2f 67 Regex(/@#(\d+)/g
18990 2c 20 27 78 30 31 27 29 2c 0a 20 20 20 20 43 48 , 'x01'),. CH
189a0 5f 49 44 45 58 50 52 20 20 3d 20 27 5c 78 30 31 _IDEXPR = '\x01
189b0 23 27 2c 0a 20 20 20 20 43 48 5f 44 51 43 4f 44 #',. CH_DQCOD
189c0 45 20 20 3d 20 27 5c 75 32 30 35 37 27 2c 0a 20 E = '\u2057',.
189d0 20 20 20 44 51 20 3d 20 27 22 27 2c 0a 20 20 20 DQ = '"',.
189e0 20 53 51 20 3d 20 22 27 22 3b 0a 0a 20 20 66 75 SQ = "'";.. fu
189f0 6e 63 74 69 6f 6e 20 63 6c 65 61 6e 53 6f 75 72 nction cleanSour
18a00 63 65 20 28 73 72 63 29 20 7b 0a 20 20 20 20 76 ce (src) {. v
18a10 61 72 0a 20 20 20 20 20 20 6d 6d 2c 0a 20 20 20 ar. mm,.
18a20 20 20 20 72 65 20 3d 20 48 54 4d 4c 5f 43 4f 4d re = HTML_COM
18a30 4d 53 3b 0a 0a 20 20 20 20 69 66 20 28 73 72 63 MS;.. if (src
18a40 2e 69 6e 64 65 78 4f 66 28 27 5c 72 27 29 20 21 .indexOf('\r') !
18a50 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 73 72 == 1) {. sr
18a60 63 20 3d 20 73 72 63 2e 72 65 70 6c 61 63 65 28 c = src.replace(
18a70 2f 5c 72 5c 6e 3f 2f 67 2c 20 27 5c 6e 27 29 3b /\r\n?/g, '\n');
18a80 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 2e 6c . }.. re.l
18a90 61 73 74 49 6e 64 65 78 20 3d 20 30 3b 0a 20 20 astIndex = 0;.
18aa0 20 20 77 68 69 6c 65 20 28 28 6d 6d 20 3d 20 72 while ((mm = r
18ab0 65 2e 65 78 65 63 28 73 72 63 29 29 29 20 7b 0a e.exec(src))) {.
18ac0 20 20 20 20 20 20 69 66 20 28 6d 6d 5b 30 5d 5b if (mm[0][
18ad0 30 5d 20 3d 3d 3d 20 27 3c 27 29 20 7b 0a 20 20 0] === '<') {.
18ae0 20 20 20 20 20 20 73 72 63 20 3d 20 52 65 67 45 src = RegE
18af0 78 70 2e 6c 65 66 74 43 6f 6e 74 65 78 74 20 2b xp.leftContext +
18b00 20 52 65 67 45 78 70 2e 72 69 67 68 74 43 6f 6e RegExp.rightCon
18b10 74 65 78 74 3b 0a 20 20 20 20 20 20 20 20 72 65 text;. re
18b20 2e 6c 61 73 74 49 6e 64 65 78 20 3d 20 6d 6d 5b .lastIndex = mm[
18b30 33 5d 20 2b 20 31 3b 0a 20 20 20 20 20 20 7d 0a 3] + 1;. }.
18b40 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e }. return
18b50 20 73 72 63 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 src. }.. func
18b60 74 69 6f 6e 20 70 61 72 73 65 41 74 74 72 69 62 tion parseAttrib
18b70 73 20 28 73 74 72 2c 20 70 63 65 78 29 20 7b 0a s (str, pcex) {.
18b80 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 6c 69 var. li
18b90 73 74 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 6d st = [],. m
18ba0 61 74 63 68 2c 0a 20 20 20 20 20 20 74 79 70 65 atch,. type
18bb0 2c 20 76 65 78 70 3b 0a 0a 20 20 20 20 48 54 4d , vexp;.. HTM
18bc0 4c 5f 41 54 54 52 53 2e 6c 61 73 74 49 6e 64 65 L_ATTRS.lastInde
18bd0 78 20 3d 20 30 3b 0a 0a 20 20 20 20 73 74 72 20 x = 0;.. str
18be0 3d 20 73 74 72 2e 72 65 70 6c 61 63 65 28 2f 5c = str.replace(/\
18bf0 73 2b 2f 67 2c 20 27 20 27 29 3b 0a 0a 20 20 20 s+/g, ' ');..
18c00 20 77 68 69 6c 65 20 28 28 6d 61 74 63 68 20 3d while ((match =
18c10 20 48 54 4d 4c 5f 41 54 54 52 53 2e 65 78 65 63 HTML_ATTRS.exec
18c20 28 73 74 72 29 29 29 20 7b 0a 20 20 20 20 20 20 (str))) {.
18c30 76 61 72 0a 20 20 20 20 20 20 20 20 6b 20 3d 20 var. k =
18c40 6d 61 74 63 68 5b 31 5d 2e 74 6f 4c 6f 77 65 72 match[1].toLower
18c50 43 61 73 65 28 29 2c 0a 20 20 20 20 20 20 20 20 Case(),.
18c60 76 20 3d 20 6d 61 74 63 68 5b 32 5d 3b 0a 0a 20 v = match[2];..
18c70 20 20 20 20 20 69 66 20 28 21 76 29 20 7b 0a 20 if (!v) {.
18c80 20 20 20 20 20 20 20 6c 69 73 74 2e 70 75 73 68 list.push
18c90 28 6b 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 (k);. } els
18ca0 65 20 7b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 e {.. if
18cb0 28 76 5b 30 5d 20 21 3d 3d 20 44 51 29 20 7b 0a (v[0] !== DQ) {.
18cc0 20 20 20 20 20 20 20 20 20 20 76 20 3d 20 44 51 v = DQ
18cd0 20 2b 20 28 76 5b 30 5d 20 3d 3d 3d 20 53 51 20 + (v[0] === SQ
18ce0 3f 20 76 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 ? v.slice(1, -1)
18cf0 20 3a 20 76 29 20 2b 20 44 51 3b 0a 20 20 20 20 : v) + DQ;.
18d00 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 }.. i
18d10 66 20 28 6b 20 3d 3d 3d 20 27 74 79 70 65 27 20 f (k === 'type'
18d20 26 26 20 53 50 45 43 5f 54 59 50 45 53 2e 74 65 && SPEC_TYPES.te
18d30 73 74 28 76 29 29 20 7b 0a 20 20 20 20 20 20 20 st(v)) {.
18d40 20 20 20 74 79 70 65 20 3d 20 76 3b 0a 20 20 20 type = v;.
18d50 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 } else {.
18d60 20 20 20 20 20 20 20 20 69 66 20 28 52 45 5f 48 if (RE_H
18d70 41 53 45 58 50 52 2e 74 65 73 74 28 76 29 29 20 ASEXPR.test(v))
18d80 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
18d90 66 20 28 6b 20 3d 3d 3d 20 27 76 61 6c 75 65 27 f (k === 'value'
18da0 29 20 7b 20 76 65 78 70 20 3d 20 31 3b 20 7d 0a ) { vexp = 1; }.
18db0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
18dc0 52 49 4f 54 5f 41 54 54 52 53 2e 69 6e 64 65 78 RIOT_ATTRS.index
18dd0 4f 66 28 6b 29 20 21 3d 3d 20 2d 31 29 20 7b 20 Of(k) !== -1) {
18de0 6b 20 3d 20 27 72 69 6f 74 2d 27 20 2b 20 6b 3b k = 'riot-' + k;
18df0 20 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 0a }. }..
18e00 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 70 list.p
18e10 75 73 68 28 6b 20 2b 20 27 3d 27 20 2b 20 76 29 ush(k + '=' + v)
18e20 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
18e30 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 }. }.. i
18e40 66 20 28 74 79 70 65 29 20 7b 0a 20 20 20 20 20 f (type) {.
18e50 20 69 66 20 28 76 65 78 70 29 20 7b 20 74 79 70 if (vexp) { typ
18e60 65 20 3d 20 44 51 20 2b 20 70 63 65 78 2e 5f 62 e = DQ + pcex._b
18e70 70 5b 30 5d 20 2b 20 53 51 20 2b 20 74 79 70 65 p[0] + SQ + type
18e80 2e 73 6c 69 63 65 28 31 2c 20 2d 31 29 20 2b 20 .slice(1, -1) +
18e90 53 51 20 2b 20 70 63 65 78 2e 5f 62 70 5b 31 5d SQ + pcex._bp[1]
18ea0 20 2b 20 44 51 3b 20 7d 0a 20 20 20 20 20 20 6c + DQ; }. l
18eb0 69 73 74 2e 70 75 73 68 28 27 74 79 70 65 3d 27 ist.push('type='
18ec0 20 2b 20 74 79 70 65 29 3b 0a 20 20 20 20 7d 0a + type);. }.
18ed0 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e return list.
18ee0 6a 6f 69 6e 28 27 20 27 29 0a 20 20 7d 0a 0a 20 join(' '). }..
18ef0 20 66 75 6e 63 74 69 6f 6e 20 73 70 6c 69 74 48 function splitH
18f00 74 6d 6c 20 28 68 74 6d 6c 2c 20 6f 70 74 73 2c tml (html, opts,
18f10 20 70 63 65 78 29 20 7b 0a 20 20 20 20 76 61 72 pcex) {. var
18f20 20 5f 62 70 20 3d 20 70 63 65 78 2e 5f 62 70 3b _bp = pcex._bp;
18f30 0a 0a 20 20 20 20 69 66 20 28 68 74 6d 6c 20 26 .. if (html &
18f40 26 20 5f 62 70 5b 34 5d 2e 74 65 73 74 28 68 74 & _bp[4].test(ht
18f50 6d 6c 29 29 20 7b 0a 20 20 20 20 20 20 76 61 72 ml)) {. var
18f60 0a 20 20 20 20 20 20 20 20 6a 73 66 6e 20 3d 20 . jsfn =
18f70 6f 70 74 73 2e 65 78 70 72 20 26 26 20 28 6f 70 opts.expr && (op
18f80 74 73 2e 70 61 72 73 65 72 20 7c 7c 20 6f 70 74 ts.parser || opt
18f90 73 2e 74 79 70 65 29 20 3f 20 5f 63 6f 6d 70 69 s.type) ? _compi
18fa0 6c 65 4a 53 20 3a 20 30 2c 0a 20 20 20 20 20 20 leJS : 0,.
18fb0 20 20 6c 69 73 74 20 3d 20 62 72 61 63 6b 65 74 list = bracket
18fc0 73 2e 73 70 6c 69 74 28 68 74 6d 6c 2c 20 30 2c s.split(html, 0,
18fd0 20 5f 62 70 29 2c 0a 20 20 20 20 20 20 20 20 65 _bp),. e
18fe0 78 70 72 3b 0a 0a 20 20 20 20 20 20 66 6f 72 20 xpr;.. for
18ff0 28 76 61 72 20 69 20 3d 20 31 3b 20 69 20 3c 20 (var i = 1; i <
19000 6c 69 73 74 2e 6c 65 6e 67 74 68 3b 20 69 20 2b list.length; i +
19010 3d 20 32 29 20 7b 0a 20 20 20 20 20 20 20 20 65 = 2) {. e
19020 78 70 72 20 3d 20 6c 69 73 74 5b 69 5d 3b 0a 20 xpr = list[i];.
19030 20 20 20 20 20 20 20 69 66 20 28 65 78 70 72 5b if (expr[
19040 30 5d 20 3d 3d 3d 20 27 5e 27 29 20 7b 0a 20 20 0] === '^') {.
19050 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 expr = e
19060 78 70 72 2e 73 6c 69 63 65 28 31 29 3b 0a 20 20 xpr.slice(1);.
19070 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
19080 28 6a 73 66 6e 29 20 7b 0a 20 20 20 20 20 20 20 (jsfn) {.
19090 20 20 20 65 78 70 72 20 3d 20 6a 73 66 6e 28 65 expr = jsfn(e
190a0 78 70 72 2c 20 6f 70 74 73 29 2e 74 72 69 6d 28 xpr, opts).trim(
190b0 29 3b 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 );. if
190c0 28 65 78 70 72 2e 73 6c 69 63 65 28 2d 31 29 20 (expr.slice(-1)
190d0 3d 3d 3d 20 27 3b 27 29 20 7b 20 65 78 70 72 20 === ';') { expr
190e0 3d 20 65 78 70 72 2e 73 6c 69 63 65 28 30 2c 20 = expr.slice(0,
190f0 2d 31 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d -1); }. }
19100 0a 20 20 20 20 20 20 20 20 6c 69 73 74 5b 69 5d . list[i]
19110 20 3d 20 43 48 5f 49 44 45 58 50 52 20 2b 20 28 = CH_IDEXPR + (
19120 70 63 65 78 2e 70 75 73 68 28 65 78 70 72 29 20 pcex.push(expr)
19130 2d 20 31 29 20 2b 20 5f 62 70 5b 31 5d 3b 0a 20 - 1) + _bp[1];.
19140 20 20 20 20 20 7d 0a 20 20 20 20 20 20 68 74 6d }. htm
19150 6c 20 3d 20 6c 69 73 74 2e 6a 6f 69 6e 28 27 27 l = list.join(''
19160 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 );. }. ret
19170 75 72 6e 20 68 74 6d 6c 0a 20 20 7d 0a 0a 20 20 urn html. }..
19180 66 75 6e 63 74 69 6f 6e 20 72 65 73 74 6f 72 65 function restore
19190 45 78 70 72 20 28 68 74 6d 6c 2c 20 70 63 65 78 Expr (html, pcex
191a0 29 20 7b 0a 20 20 20 20 69 66 20 28 70 63 65 78 ) {. if (pcex
191b0 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 .length) {.
191c0 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e 72 65 70 html = html.rep
191d0 6c 61 63 65 28 52 45 5f 52 45 50 45 58 50 52 2c lace(RE_REPEXPR,
191e0 20 66 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 64 29 function (_, d)
191f0 20 7b 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 {.. retu
19200 72 6e 20 70 63 65 78 2e 5f 62 70 5b 30 5d 20 2b rn pcex._bp[0] +
19210 20 70 63 65 78 5b 64 5d 2e 74 72 69 6d 28 29 2e pcex[d].trim().
19220 72 65 70 6c 61 63 65 28 2f 5b 5c 72 5c 6e 5d 2b replace(/[\r\n]+
19230 2f 67 2c 20 27 20 27 29 2e 72 65 70 6c 61 63 65 /g, ' ').replace
19240 28 2f 22 2f 67 2c 20 43 48 5f 44 51 43 4f 44 45 (/"/g, CH_DQCODE
19250 29 0a 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 ). });.
19260 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 68 74 6d }. return htm
19270 6c 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f l. }.. functio
19280 6e 20 5f 63 6f 6d 70 69 6c 65 48 54 4d 4c 20 28 n _compileHTML (
19290 68 74 6d 6c 2c 20 6f 70 74 73 2c 20 70 63 65 78 html, opts, pcex
192a0 29 20 7b 0a 20 20 20 20 69 66 20 28 21 2f 5c 53 ) {. if (!/\S
192b0 2f 2e 74 65 73 74 28 68 74 6d 6c 29 29 20 7b 20 /.test(html)) {
192c0 72 65 74 75 72 6e 20 27 27 20 7d 0a 0a 20 20 20 return '' }..
192d0 20 68 74 6d 6c 20 3d 20 73 70 6c 69 74 48 74 6d html = splitHtm
192e0 6c 28 68 74 6d 6c 2c 20 6f 70 74 73 2c 20 70 63 l(html, opts, pc
192f0 65 78 29 0a 20 20 20 20 20 20 2e 72 65 70 6c 61 ex). .repla
19300 63 65 28 48 54 4d 4c 5f 54 41 47 53 2c 20 66 75 ce(HTML_TAGS, fu
19310 6e 63 74 69 6f 6e 20 28 5f 2c 20 6e 61 6d 65 2c nction (_, name,
19320 20 61 74 74 72 2c 20 65 6e 64 73 29 20 7b 0a 0a attr, ends) {..
19330 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e name = n
19340 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 ame.toLowerCase(
19350 29 3b 0a 0a 20 20 20 20 20 20 20 20 65 6e 64 73 );.. ends
19360 20 3d 20 65 6e 64 73 20 26 26 20 21 56 4f 49 44 = ends && !VOID
19370 5f 54 41 47 53 2e 74 65 73 74 28 6e 61 6d 65 29 _TAGS.test(name)
19380 20 3f 20 27 3e 3c 2f 27 20 2b 20 6e 61 6d 65 20 ? '></' + name
19390 3a 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 69 : '';.. i
193a0 66 20 28 61 74 74 72 29 20 7b 20 6e 61 6d 65 20 f (attr) { name
193b0 2b 3d 20 27 20 27 20 2b 20 70 61 72 73 65 41 74 += ' ' + parseAt
193c0 74 72 69 62 73 28 61 74 74 72 2c 20 70 63 65 78 tribs(attr, pcex
193d0 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 ); }.. re
193e0 74 75 72 6e 20 27 3c 27 20 2b 20 6e 61 6d 65 20 turn '<' + name
193f0 2b 20 65 6e 64 73 20 2b 20 27 3e 27 0a 20 20 20 + ends + '>'.
19400 20 20 20 7d 29 3b 0a 0a 20 20 20 20 69 66 20 28 });.. if (
19410 21 6f 70 74 73 2e 77 68 69 74 65 73 70 61 63 65 !opts.whitespace
19420 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 70 20 ) {. var p
19430 3d 20 5b 5d 3b 0a 0a 20 20 20 20 20 20 69 66 20 = [];.. if
19440 28 2f 3c 70 72 65 5b 5c 73 3e 5d 2f 2e 74 65 73 (/<pre[\s>]/.tes
19450 74 28 68 74 6d 6c 29 29 20 7b 0a 20 20 20 20 20 t(html)) {.
19460 20 20 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e 72 html = html.r
19470 65 70 6c 61 63 65 28 50 52 45 5f 54 41 47 53 2c eplace(PRE_TAGS,
19480 20 66 75 6e 63 74 69 6f 6e 20 28 71 29 20 7b 0a function (q) {.
19490 20 20 20 20 20 20 20 20 20 20 70 2e 70 75 73 68 p.push
194a0 28 71 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 (q);. r
194b0 65 74 75 72 6e 20 27 5c 75 30 30 30 32 27 0a 20 eturn '\u0002'.
194c0 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 });.
194d0 20 7d 0a 0a 20 20 20 20 20 20 68 74 6d 6c 20 3d }.. html =
194e0 20 68 74 6d 6c 2e 74 72 69 6d 28 29 2e 72 65 70 html.trim().rep
194f0 6c 61 63 65 28 2f 5c 73 2b 2f 67 2c 20 27 20 27 lace(/\s+/g, ' '
19500 29 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 70 2e );.. if (p.
19510 6c 65 6e 67 74 68 29 20 7b 20 68 74 6d 6c 20 3d length) { html =
19520 20 68 74 6d 6c 2e 72 65 70 6c 61 63 65 28 2f 5c html.replace(/\
19530 75 30 30 30 32 2f 67 2c 20 66 75 6e 63 74 69 6f u0002/g, functio
19540 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 70 2e n () { return p.
19550 73 68 69 66 74 28 29 20 7d 29 3b 20 7d 20 2f 2f shift() }); } //
19560 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 2d eslint-disable-
19570 6c 69 6e 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20 line. }..
19580 69 66 20 28 6f 70 74 73 2e 63 6f 6d 70 61 63 74 if (opts.compact
19590 29 20 7b 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e ) { html = html.
195a0 72 65 70 6c 61 63 65 28 48 54 4d 4c 5f 50 41 43 replace(HTML_PAC
195b0 4b 2c 20 27 3e 3c 24 31 27 29 3b 20 7d 0a 0a 20 K, '><$1'); }..
195c0 20 20 20 72 65 74 75 72 6e 20 72 65 73 74 6f 72 return restor
195d0 65 45 78 70 72 28 68 74 6d 6c 2c 20 70 63 65 78 eExpr(html, pcex
195e0 29 2e 72 65 70 6c 61 63 65 28 54 52 49 4d 5f 54 ).replace(TRIM_T
195f0 52 41 49 4c 2c 20 27 27 29 0a 20 20 7d 0a 0a 20 RAIL, ''). }..
19600 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c function compil
19610 65 48 54 4d 4c 20 28 68 74 6d 6c 2c 20 6f 70 74 eHTML (html, opt
19620 73 2c 20 70 63 65 78 29 20 7b 0a 0a 20 20 20 20 s, pcex) {..
19630 69 66 20 28 41 72 72 61 79 2e 69 73 41 72 72 61 if (Array.isArra
19640 79 28 6f 70 74 73 29 29 20 7b 0a 20 20 20 20 20 y(opts)) {.
19650 20 70 63 65 78 20 3d 20 6f 70 74 73 3b 0a 20 20 pcex = opts;.
19660 20 20 20 20 6f 70 74 73 20 3d 20 7b 7d 3b 0a 20 opts = {};.
19670 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
19680 20 20 69 66 20 28 21 70 63 65 78 29 20 7b 20 70 if (!pcex) { p
19690 63 65 78 20 3d 20 5b 5d 3b 20 7d 0a 20 20 20 20 cex = []; }.
196a0 20 20 69 66 20 28 21 6f 70 74 73 29 20 7b 20 6f if (!opts) { o
196b0 70 74 73 20 3d 20 7b 7d 3b 20 7d 0a 20 20 20 20 pts = {}; }.
196c0 7d 0a 0a 20 20 20 20 70 63 65 78 2e 5f 62 70 20 }.. pcex._bp
196d0 3d 20 62 72 61 63 6b 65 74 73 2e 61 72 72 61 79 = brackets.array
196e0 28 6f 70 74 73 2e 62 72 61 63 6b 65 74 73 29 3b (opts.brackets);
196f0 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 63 6f .. return _co
19700 6d 70 69 6c 65 48 54 4d 4c 28 63 6c 65 61 6e 53 mpileHTML(cleanS
19710 6f 75 72 63 65 28 68 74 6d 6c 29 2c 20 6f 70 74 ource(html), opt
19720 73 2c 20 70 63 65 78 29 0a 20 20 7d 0a 0a 20 20 s, pcex). }..
19730 76 61 72 20 4a 53 5f 45 53 36 53 49 47 4e 20 3d var JS_ES6SIGN =
19740 20 2f 5e 5b 20 5c 74 5d 2a 28 28 28 3f 3a 61 73 /^[ \t]*(((?:as
19750 79 6e 63 7c 5c 2a 29 5c 73 2a 29 3f 28 5b 24 5f ync|\*)\s*)?([$_
19760 41 2d 5a 61 2d 7a 5d 5b 24 5c 77 5d 2a 29 29 5c A-Za-z][$\w]*))\
19770 73 2a 5c 28 5b 5e 28 29 5d 2a 5c 29 5c 73 2a 7b s*\([^()]*\)\s*{
19780 2f 6d 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 /m;.. function
19790 72 69 6f 74 6a 73 20 28 6a 73 29 20 7b 0a 20 20 riotjs (js) {.
197a0 20 20 76 61 72 0a 20 20 20 20 20 20 70 61 72 74 var. part
197b0 73 20 3d 20 5b 5d 2c 0a 20 20 20 20 20 20 6d 61 s = [],. ma
197c0 74 63 68 2c 0a 20 20 20 20 20 20 74 6f 65 73 35 tch,. toes5
197d0 2c 0a 20 20 20 20 20 20 70 6f 73 2c 0a 20 20 20 ,. pos,.
197e0 20 20 20 6d 65 74 68 6f 64 2c 0a 20 20 20 20 20 method,.
197f0 20 70 72 65 66 69 78 2c 0a 20 20 20 20 20 20 6e prefix,. n
19800 61 6d 65 2c 0a 20 20 20 20 20 20 52 45 20 3d 20 ame,. RE =
19810 52 65 67 45 78 70 3b 0a 0a 20 20 20 20 76 61 72 RegExp;.. var
19820 20 73 72 63 20 3d 20 6a 73 53 70 6c 69 74 74 65 src = jsSplitte
19830 72 28 6a 73 29 3b 0a 20 20 20 20 6a 73 20 3d 20 r(js);. js =
19840 73 72 63 2e 73 68 69 66 74 28 29 2e 6a 6f 69 6e src.shift().join
19850 28 27 3c 25 3e 27 29 3b 0a 0a 20 20 20 20 77 68 ('<%>');.. wh
19860 69 6c 65 20 28 28 6d 61 74 63 68 20 3d 20 6a 73 ile ((match = js
19870 2e 6d 61 74 63 68 28 4a 53 5f 45 53 36 53 49 47 .match(JS_ES6SIG
19880 4e 29 29 29 20 7b 0a 0a 20 20 20 20 20 20 70 61 N))) {.. pa
19890 72 74 73 2e 70 75 73 68 28 52 45 2e 6c 65 66 74 rts.push(RE.left
198a0 43 6f 6e 74 65 78 74 29 3b 0a 20 20 20 20 20 20 Context);.
198b0 6a 73 20 20 3d 20 52 45 2e 72 69 67 68 74 43 6f js = RE.rightCo
198c0 6e 74 65 78 74 3b 0a 20 20 20 20 20 20 70 6f 73 ntext;. pos
198d0 20 3d 20 73 6b 69 70 42 6f 64 79 28 6a 73 29 3b = skipBody(js);
198e0 0a 0a 20 20 20 20 20 20 6d 65 74 68 6f 64 20 3d .. method =
198f0 20 6d 61 74 63 68 5b 31 5d 3b 0a 20 20 20 20 20 match[1];.
19900 20 70 72 65 66 69 78 20 3d 20 6d 61 74 63 68 5b prefix = match[
19910 32 5d 20 7c 7c 20 27 27 3b 0a 20 20 20 20 20 20 2] || '';.
19920 6e 61 6d 65 20 20 3d 20 6d 61 74 63 68 5b 33 5d name = match[3]
19930 3b 0a 0a 20 20 20 20 20 20 74 6f 65 73 35 20 3d ;.. toes5 =
19940 20 21 2f 5e 28 3f 3a 69 66 7c 77 68 69 6c 65 7c !/^(?:if|while|
19950 66 6f 72 7c 73 77 69 74 63 68 7c 63 61 74 63 68 for|switch|catch
19960 7c 66 75 6e 63 74 69 6f 6e 29 24 2f 2e 74 65 73 |function)$/.tes
19970 74 28 6e 61 6d 65 29 3b 0a 0a 20 20 20 20 20 20 t(name);..
19980 69 66 20 28 74 6f 65 73 35 29 20 7b 0a 20 20 20 if (toes5) {.
19990 20 20 20 20 20 6e 61 6d 65 20 3d 20 6d 61 74 63 name = matc
199a0 68 5b 30 5d 2e 72 65 70 6c 61 63 65 28 6d 65 74 h[0].replace(met
199b0 68 6f 64 2c 20 27 74 68 69 73 2e 27 20 2b 20 6e hod, 'this.' + n
199c0 61 6d 65 20 2b 20 27 20 3d 27 20 2b 20 70 72 65 ame + ' =' + pre
199d0 66 69 78 20 2b 20 27 20 66 75 6e 63 74 69 6f 6e fix + ' function
199e0 27 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 ');. } else
199f0 20 7b 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 {. name
19a00 3d 20 6d 61 74 63 68 5b 30 5d 3b 0a 20 20 20 20 = match[0];.
19a10 20 20 7d 0a 0a 20 20 20 20 20 20 70 61 72 74 73 }.. parts
19a20 2e 70 75 73 68 28 6e 61 6d 65 2c 20 6a 73 2e 73 .push(name, js.s
19a30 6c 69 63 65 28 30 2c 20 70 6f 73 29 29 3b 0a 20 lice(0, pos));.
19a40 20 20 20 20 20 6a 73 20 3d 20 6a 73 2e 73 6c 69 js = js.sli
19a50 63 65 28 70 6f 73 29 3b 0a 0a 20 20 20 20 20 20 ce(pos);..
19a60 69 66 20 28 74 6f 65 73 35 20 26 26 20 21 2f 5e if (toes5 && !/^
19a70 5c 73 2a 2e 5c 73 2a 62 69 6e 64 5c 62 2f 2e 74 \s*.\s*bind\b/.t
19a80 65 73 74 28 6a 73 29 29 20 7b 20 70 61 72 74 73 est(js)) { parts
19a90 2e 70 75 73 68 28 27 2e 62 69 6e 64 28 74 68 69 .push('.bind(thi
19aa0 73 29 27 29 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 s)'); }. }..
19ab0 20 20 20 69 66 20 28 70 61 72 74 73 2e 6c 65 6e if (parts.len
19ac0 67 74 68 29 20 7b 0a 20 20 20 20 20 20 6a 73 20 gth) {. js
19ad0 3d 20 70 61 72 74 73 2e 6a 6f 69 6e 28 27 27 29 = parts.join('')
19ae0 20 2b 20 6a 73 3b 0a 20 20 20 20 7d 0a 0a 20 20 + js;. }..
19af0 20 20 69 66 20 28 73 72 63 2e 6c 65 6e 67 74 68 if (src.length
19b00 29 20 7b 0a 20 20 20 20 20 20 6a 73 20 3d 20 6a ) {. js = j
19b10 73 2e 72 65 70 6c 61 63 65 28 2f 3c 25 3e 2f 67 s.replace(/<%>/g
19b20 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a , function () {.
19b30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 return s
19b40 72 63 2e 73 68 69 66 74 28 29 0a 20 20 20 20 20 rc.shift().
19b50 20 7d 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 });. }..
19b60 72 65 74 75 72 6e 20 6a 73 0a 0a 20 20 20 20 66 return js.. f
19b70 75 6e 63 74 69 6f 6e 20 73 6b 69 70 42 6f 64 79 unction skipBody
19b80 20 28 73 29 20 7b 0a 20 20 20 20 20 20 76 61 72 (s) {. var
19b90 20 72 20 3d 20 2f 5b 7b 7d 5d 2f 67 3b 0a 20 20 r = /[{}]/g;.
19ba0 20 20 20 20 76 61 72 20 69 20 3d 20 31 3b 0a 0a var i = 1;..
19bb0 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 while (i &
19bc0 26 20 72 2e 65 78 65 63 28 73 29 29 20 7b 0a 20 & r.exec(s)) {.
19bd0 20 20 20 20 20 20 20 69 66 20 28 73 5b 72 2e 6c if (s[r.l
19be0 61 73 74 49 6e 64 65 78 20 2d 20 31 5d 20 3d 3d astIndex - 1] ==
19bf0 3d 20 27 7b 27 29 20 7b 20 2b 2b 69 3b 20 7d 0a = '{') { ++i; }.
19c00 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 20 2d else { -
19c10 2d 69 3b 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 -i; }. }.
19c20 20 20 20 20 72 65 74 75 72 6e 20 69 20 3f 20 73 return i ? s
19c30 2e 6c 65 6e 67 74 68 20 3a 20 72 2e 6c 61 73 74 .length : r.last
19c40 49 6e 64 65 78 0a 20 20 20 20 7d 0a 20 20 7d 0a Index. }. }.
19c50 0a 20 20 66 75 6e 63 74 69 6f 6e 20 5f 63 6f 6d . function _com
19c60 70 69 6c 65 4a 53 20 28 6a 73 2c 20 6f 70 74 73 pileJS (js, opts
19c70 2c 20 74 79 70 65 2c 20 70 61 72 73 65 72 4f 70 , type, parserOp
19c80 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 69 ts, url) {. i
19c90 66 20 28 21 2f 5c 53 2f 2e 74 65 73 74 28 6a 73 f (!/\S/.test(js
19ca0 29 29 20 7b 20 72 65 74 75 72 6e 20 27 27 20 7d )) { return '' }
19cb0 0a 20 20 20 20 69 66 20 28 21 74 79 70 65 29 20 . if (!type)
19cc0 7b 20 74 79 70 65 20 3d 20 6f 70 74 73 2e 74 79 { type = opts.ty
19cd0 70 65 3b 20 7d 0a 0a 20 20 20 20 76 61 72 20 70 pe; }.. var p
19ce0 61 72 73 65 72 20 3d 20 6f 70 74 73 2e 70 61 72 arser = opts.par
19cf0 73 65 72 20 7c 7c 20 74 79 70 65 20 26 26 20 70 ser || type && p
19d00 61 72 73 65 72 73 2e 5f 72 65 71 28 27 6a 73 2e arsers._req('js.
19d10 27 20 2b 20 74 79 70 65 2c 20 74 72 75 65 29 20 ' + type, true)
19d20 7c 7c 20 72 69 6f 74 6a 73 3b 0a 0a 20 20 20 20 || riotjs;..
19d30 72 65 74 75 72 6e 20 70 61 72 73 65 72 28 6a 73 return parser(js
19d40 2c 20 70 61 72 73 65 72 4f 70 74 73 2c 20 75 72 , parserOpts, ur
19d50 6c 29 2e 72 65 70 6c 61 63 65 28 2f 5c 72 5c 6e l).replace(/\r\n
19d60 3f 2f 67 2c 20 27 5c 6e 27 29 2e 72 65 70 6c 61 ?/g, '\n').repla
19d70 63 65 28 54 52 49 4d 5f 54 52 41 49 4c 2c 20 27 ce(TRIM_TRAIL, '
19d80 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 '). }.. functi
19d90 6f 6e 20 63 6f 6d 70 69 6c 65 4a 53 20 28 6a 73 on compileJS (js
19da0 2c 20 6f 70 74 73 2c 20 74 79 70 65 2c 20 75 73 , opts, type, us
19db0 65 72 4f 70 74 73 29 20 7b 0a 20 20 20 20 69 66 erOpts) {. if
19dc0 20 28 74 79 70 65 6f 66 20 6f 70 74 73 20 3d 3d (typeof opts ==
19dd0 3d 20 27 73 74 72 69 6e 67 27 29 20 7b 0a 20 20 = 'string') {.
19de0 20 20 20 20 75 73 65 72 4f 70 74 73 20 3d 20 74 userOpts = t
19df0 79 70 65 3b 0a 20 20 20 20 20 20 74 79 70 65 20 ype;. type
19e00 3d 20 6f 70 74 73 3b 0a 20 20 20 20 20 20 6f 70 = opts;. op
19e10 74 73 20 3d 20 7b 7d 3b 0a 20 20 20 20 7d 0a 20 ts = {};. }.
19e20 20 20 20 69 66 20 28 74 79 70 65 20 26 26 20 74 if (type && t
19e30 79 70 65 6f 66 20 74 79 70 65 20 3d 3d 3d 20 27 ypeof type === '
19e40 6f 62 6a 65 63 74 27 29 20 7b 0a 20 20 20 20 20 object') {.
19e50 20 75 73 65 72 4f 70 74 73 20 3d 20 74 79 70 65 userOpts = type
19e60 3b 0a 20 20 20 20 20 20 74 79 70 65 20 3d 20 27 ;. type = '
19e70 27 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 ';. }. if
19e80 28 21 75 73 65 72 4f 70 74 73 29 20 7b 20 75 73 (!userOpts) { us
19e90 65 72 4f 70 74 73 20 3d 20 7b 7d 3b 20 7d 0a 0a erOpts = {}; }..
19ea0 20 20 20 20 72 65 74 75 72 6e 20 5f 63 6f 6d 70 return _comp
19eb0 69 6c 65 4a 53 28 6a 73 2c 20 6f 70 74 73 20 7c ileJS(js, opts |
19ec0 7c 20 7b 7d 2c 20 74 79 70 65 2c 20 75 73 65 72 | {}, type, user
19ed0 4f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f Opts.parserOptio
19ee0 6e 73 2c 20 75 73 65 72 4f 70 74 73 2e 75 72 6c ns, userOpts.url
19ef0 29 0a 20 20 7d 0a 0a 20 20 76 61 72 20 43 53 53 ). }.. var CSS
19f00 5f 53 45 4c 45 43 54 4f 52 20 3d 20 52 65 67 45 _SELECTOR = RegE
19f10 78 70 28 27 28 5b 7b 7d 5d 7c 5e 29 5b 3b 20 5d xp('([{}]|^)[; ]
19f20 2a 28 28 3f 3a 5b 5e 40 20 3b 7b 7d 5d 5b 5e 7b *((?:[^@ ;{}][^{
19f30 7d 5d 2a 29 3f 5b 5e 40 20 3b 7b 7d 3a 5d 20 3f }]*)?[^@ ;{}:] ?
19f40 29 28 3f 3d 7b 29 7c 27 20 2b 20 53 5f 4c 49 4e )(?={)|' + S_LIN
19f50 45 53 54 52 2c 20 27 67 27 29 3b 0a 0a 20 20 66 ESTR, 'g');.. f
19f60 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 64 43 53 unction scopedCS
19f70 53 20 28 74 61 67 2c 20 63 73 73 29 20 7b 0a 20 S (tag, css) {.
19f80 20 20 20 76 61 72 20 73 63 6f 70 65 20 3d 20 27 var scope = '
19f90 3a 73 63 6f 70 65 27 3b 0a 0a 20 20 20 20 72 65 :scope';.. re
19fa0 74 75 72 6e 20 63 73 73 2e 72 65 70 6c 61 63 65 turn css.replace
19fb0 28 43 53 53 5f 53 45 4c 45 43 54 4f 52 2c 20 66 (CSS_SELECTOR, f
19fc0 75 6e 63 74 69 6f 6e 20 28 6d 2c 20 70 31 2c 20 unction (m, p1,
19fd0 70 32 29 20 7b 0a 0a 20 20 20 20 20 20 69 66 20 p2) {.. if
19fe0 28 21 70 32 29 20 7b 20 72 65 74 75 72 6e 20 6d (!p2) { return m
19ff0 20 7d 0a 0a 20 20 20 20 20 20 70 32 20 3d 20 70 }.. p2 = p
1a000 32 2e 72 65 70 6c 61 63 65 28 2f 5b 5e 2c 5d 2b 2.replace(/[^,]+
1a010 2f 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 /g, function (se
1a020 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 l) {. var
1a030 20 73 20 3d 20 73 65 6c 2e 74 72 69 6d 28 29 3b s = sel.trim();
1a040 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e .. if (s.
1a050 69 6e 64 65 78 4f 66 28 74 61 67 29 20 3d 3d 3d indexOf(tag) ===
1a060 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 0) {.
1a070 72 65 74 75 72 6e 20 73 65 6c 0a 20 20 20 20 20 return sel.
1a080 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 }.. if
1a090 20 28 21 73 20 7c 7c 20 73 20 3d 3d 3d 20 27 66 (!s || s === 'f
1a0a0 72 6f 6d 27 20 7c 7c 20 73 20 3d 3d 3d 20 27 74 rom' || s === 't
1a0b0 6f 27 20 7c 7c 20 73 2e 73 6c 69 63 65 28 2d 31 o' || s.slice(-1
1a0c0 29 20 3d 3d 3d 20 27 25 27 29 20 7b 0a 20 20 20 ) === '%') {.
1a0d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 return se
1a0e0 6c 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 l. }..
1a0f0 20 20 20 20 20 69 66 20 28 73 2e 69 6e 64 65 78 if (s.index
1a100 4f 66 28 73 63 6f 70 65 29 20 3c 20 30 29 20 7b Of(scope) < 0) {
1a110 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 74 . s = t
1a120 61 67 20 2b 20 27 20 27 20 2b 20 73 20 2b 20 27 ag + ' ' + s + '
1a130 2c 5b 64 61 74 61 2d 69 73 3d 22 27 20 2b 20 74 ,[data-is="' + t
1a140 61 67 20 2b 20 27 22 5d 20 27 20 2b 20 73 3b 0a ag + '"] ' + s;.
1a150 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
1a160 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 . s = s
1a170 2e 72 65 70 6c 61 63 65 28 73 63 6f 70 65 2c 20 .replace(scope,
1a180 74 61 67 29 20 2b 20 27 2c 27 20 2b 0a 20 20 20 tag) + ',' +.
1a190 20 20 20 20 20 20 20 20 20 20 20 73 2e 72 65 70 s.rep
1a1a0 6c 61 63 65 28 73 63 6f 70 65 2c 20 27 5b 64 61 lace(scope, '[da
1a1b0 74 61 2d 69 73 3d 22 27 20 2b 20 74 61 67 20 2b ta-is="' + tag +
1a1c0 20 27 22 5d 27 29 3b 0a 20 20 20 20 20 20 20 20 '"]');.
1a1d0 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return
1a1e0 20 73 0a 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 s. });..
1a1f0 20 20 20 20 72 65 74 75 72 6e 20 70 31 20 3f 20 return p1 ?
1a200 70 31 20 2b 20 27 20 27 20 2b 20 70 32 20 3a 20 p1 + ' ' + p2 :
1a210 70 32 0a 20 20 20 20 7d 29 0a 20 20 7d 0a 0a 20 p2. }). }..
1a220 20 66 75 6e 63 74 69 6f 6e 20 5f 63 6f 6d 70 69 function _compi
1a230 6c 65 43 53 53 20 28 63 73 73 2c 20 74 61 67 2c leCSS (css, tag,
1a240 20 74 79 70 65 2c 20 6f 70 74 73 29 20 7b 0a 20 type, opts) {.
1a250 20 20 20 6f 70 74 73 20 3d 20 6f 70 74 73 20 7c opts = opts |
1a260 7c 20 7b 7d 3b 0a 0a 20 20 20 20 69 66 20 28 74 | {};.. if (t
1a270 79 70 65 29 20 7b 0a 20 20 20 20 20 20 69 66 20 ype) {. if
1a280 28 74 79 70 65 20 21 3d 3d 20 27 63 73 73 27 29 (type !== 'css')
1a290 20 7b 0a 0a 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
1a2a0 70 61 72 73 65 72 20 3d 20 70 61 72 73 65 72 73 parser = parsers
1a2b0 2e 5f 72 65 71 28 27 63 73 73 2e 27 20 2b 20 74 ._req('css.' + t
1a2c0 79 70 65 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 ype, true);.
1a2d0 20 20 20 20 63 73 73 20 3d 20 70 61 72 73 65 72 css = parser
1a2e0 28 74 61 67 2c 20 63 73 73 2c 20 6f 70 74 73 2e (tag, css, opts.
1a2f0 70 61 72 73 65 72 4f 70 74 73 20 7c 7c 20 7b 7d parserOpts || {}
1a300 2c 20 6f 70 74 73 2e 75 72 6c 29 3b 0a 20 20 20 , opts.url);.
1a310 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 }. }..
1a320 63 73 73 20 3d 20 63 73 73 2e 72 65 70 6c 61 63 css = css.replac
1a330 65 28 62 72 61 63 6b 65 74 73 2e 52 5f 4d 4c 43 e(brackets.R_MLC
1a340 4f 4d 4d 53 2c 20 27 27 29 2e 72 65 70 6c 61 63 OMMS, '').replac
1a350 65 28 2f 5c 73 2b 2f 67 2c 20 27 20 27 29 2e 74 e(/\s+/g, ' ').t
1a360 72 69 6d 28 29 3b 0a 20 20 20 20 69 66 20 28 74 rim();. if (t
1a370 61 67 29 20 7b 20 63 73 73 20 3d 20 73 63 6f 70 ag) { css = scop
1a380 65 64 43 53 53 28 74 61 67 2c 20 63 73 73 29 3b edCSS(tag, css);
1a390 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 63 }.. return c
1a3a0 73 73 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 ss. }.. functi
1a3b0 6f 6e 20 63 6f 6d 70 69 6c 65 43 53 53 20 28 63 on compileCSS (c
1a3c0 73 73 2c 20 74 79 70 65 2c 20 6f 70 74 73 29 20 ss, type, opts)
1a3d0 7b 0a 20 20 20 20 69 66 20 28 74 79 70 65 20 26 {. if (type &
1a3e0 26 20 74 79 70 65 6f 66 20 74 79 70 65 20 3d 3d & typeof type ==
1a3f0 3d 20 27 6f 62 6a 65 63 74 27 29 20 7b 0a 20 20 = 'object') {.
1a400 20 20 20 20 6f 70 74 73 20 3d 20 74 79 70 65 3b opts = type;
1a410 0a 20 20 20 20 20 20 74 79 70 65 20 3d 20 27 27 . type = ''
1a420 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 ;. } else if
1a430 28 21 6f 70 74 73 29 20 7b 20 6f 70 74 73 20 3d (!opts) { opts =
1a440 20 7b 7d 3b 20 7d 0a 0a 20 20 20 20 72 65 74 75 {}; }.. retu
1a450 72 6e 20 5f 63 6f 6d 70 69 6c 65 43 53 53 28 63 rn _compileCSS(c
1a460 73 73 2c 20 6f 70 74 73 2e 74 61 67 4e 61 6d 65 ss, opts.tagName
1a470 2c 20 74 79 70 65 2c 20 6f 70 74 73 29 0a 20 20 , type, opts).
1a480 7d 0a 0a 20 20 76 61 72 20 54 59 50 45 5f 41 54 }.. var TYPE_AT
1a490 54 52 20 3d 20 2f 5c 73 74 79 70 65 5c 73 2a 3d TR = /\stype\s*=
1a4a0 5c 73 2a 28 3f 3a 28 5b 27 22 5d 29 28 2e 2b 3f \s*(?:(['"])(.+?
1a4b0 29 5c 31 7c 28 5c 53 2b 29 29 2f 69 3b 0a 0a 20 )\1|(\S+))/i;..
1a4c0 20 76 61 72 20 4d 49 53 43 5f 41 54 54 52 20 3d var MISC_ATTR =
1a4d0 20 27 5c 5c 73 2a 3d 5c 5c 73 2a 28 27 20 2b 20 '\\s*=\\s*(' +
1a4e0 53 5f 53 54 52 49 4e 47 53 20 2b 20 27 7c 7b 5b S_STRINGS + '|{[
1a4f0 5e 7d 5d 2b 7d 7c 5c 5c 53 2b 29 27 3b 0a 0a 20 ^}]+}|\\S+)';..
1a500 20 76 61 72 20 45 4e 44 5f 54 41 47 53 20 3d 20 var END_TAGS =
1a510 2f 5c 2f 3e 5c 6e 7c 5e 3c 28 3f 3a 5c 2f 3f 2d /\/>\n|^<(?:\/?-
1a520 3f 5b 41 2d 5a 61 2d 7a 5d 5b 2d 5c 77 5c 78 41 ?[A-Za-z][-\w\xA
1a530 30 2d 5c 78 46 46 5d 2a 5c 73 2a 7c 2d 3f 5b 41 0-\xFF]*\s*|-?[A
1a540 2d 5a 61 2d 7a 5d 5b 2d 5c 77 5c 78 41 30 2d 5c -Za-z][-\w\xA0-\
1a550 78 46 46 5d 2a 5c 73 2b 5b 2d 5c 77 3a 5c 78 41 xFF]*\s+[-\w:\xA
1a560 30 2d 5c 78 46 46 5d 5b 5c 53 5c 73 5d 2a 3f 29 0-\xFF][\S\s]*?)
1a570 3e 5c 6e 2f 3b 0a 0a 20 20 66 75 6e 63 74 69 6f >\n/;.. functio
1a580 6e 20 5f 71 20 28 73 2c 20 72 29 20 7b 0a 20 20 n _q (s, r) {.
1a590 20 20 69 66 20 28 21 73 29 20 7b 20 72 65 74 75 if (!s) { retu
1a5a0 72 6e 20 22 27 27 22 20 7d 0a 20 20 20 20 73 20 rn "''" }. s
1a5b0 3d 20 53 51 20 2b 20 73 2e 72 65 70 6c 61 63 65 = SQ + s.replace
1a5c0 28 2f 5c 5c 2f 67 2c 20 27 5c 5c 5c 5c 27 29 2e (/\\/g, '\\\\').
1a5d0 72 65 70 6c 61 63 65 28 2f 27 2f 67 2c 20 22 5c replace(/'/g, "\
1a5e0 5c 27 22 29 20 2b 20 53 51 3b 0a 20 20 20 20 72 \'") + SQ;. r
1a5f0 65 74 75 72 6e 20 72 20 26 26 20 73 2e 69 6e 64 eturn r && s.ind
1a600 65 78 4f 66 28 27 5c 6e 27 29 20 21 3d 3d 20 2d exOf('\n') !== -
1a610 31 20 3f 20 73 2e 72 65 70 6c 61 63 65 28 2f 5c 1 ? s.replace(/\
1a620 6e 2f 67 2c 20 27 5c 5c 6e 27 29 20 3a 20 73 0a n/g, '\\n') : s.
1a630 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 }.. function
1a640 6d 6b 74 61 67 20 28 6e 61 6d 65 2c 20 68 74 6d mktag (name, htm
1a650 6c 2c 20 63 73 73 2c 20 61 74 74 72 2c 20 6a 73 l, css, attr, js
1a660 2c 20 69 6d 70 6f 72 74 73 2c 20 6f 70 74 73 29 , imports, opts)
1a670 20 7b 0a 20 20 20 20 76 61 72 0a 20 20 20 20 20 {. var.
1a680 20 63 20 3d 20 6f 70 74 73 2e 64 65 62 75 67 20 c = opts.debug
1a690 3f 20 27 2c 5c 6e 20 20 27 20 3a 20 27 2c 20 27 ? ',\n ' : ', '
1a6a0 2c 0a 20 20 20 20 20 20 73 20 3d 20 27 7d 29 3b ,. s = '});
1a6b0 27 3b 0a 0a 20 20 20 20 69 66 20 28 6a 73 20 26 ';.. if (js &
1a6c0 26 20 6a 73 2e 73 6c 69 63 65 28 2d 31 29 20 21 & js.slice(-1) !
1a6d0 3d 3d 20 27 5c 6e 27 29 20 7b 20 73 20 3d 20 27 == '\n') { s = '
1a6e0 5c 6e 27 20 2b 20 73 3b 20 7d 0a 0a 20 20 20 20 \n' + s; }..
1a6f0 72 65 74 75 72 6e 20 69 6d 70 6f 72 74 73 20 2b return imports +
1a700 20 27 72 69 6f 74 2e 74 61 67 32 28 5c 27 27 20 'riot.tag2(\''
1a710 2b 20 6e 61 6d 65 20 2b 20 53 51 20 2b 0a 20 20 + name + SQ +.
1a720 20 20 20 20 63 20 2b 20 5f 71 28 68 74 6d 6c 2c c + _q(html,
1a730 20 31 29 20 2b 0a 20 20 20 20 20 20 63 20 2b 20 1) +. c +
1a740 5f 71 28 63 73 73 29 20 2b 0a 20 20 20 20 20 20 _q(css) +.
1a750 63 20 2b 20 5f 71 28 61 74 74 72 29 20 2b 20 27 c + _q(attr) + '
1a760 2c 20 66 75 6e 63 74 69 6f 6e 28 6f 70 74 73 29 , function(opts)
1a770 20 7b 5c 6e 27 20 2b 20 6a 73 20 2b 20 73 0a 20 {\n' + js + s.
1a780 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 73 }.. function s
1a790 70 6c 69 74 42 6c 6f 63 6b 73 20 28 73 74 72 29 plitBlocks (str)
1a7a0 20 7b 0a 20 20 20 20 69 66 20 28 2f 3c 5b 2d 5c {. if (/<[-\
1a7b0 77 5d 2f 2e 74 65 73 74 28 73 74 72 29 29 20 7b w]/.test(str)) {
1a7c0 0a 20 20 20 20 20 20 76 61 72 0a 20 20 20 20 20 . var.
1a7d0 20 20 20 6d 2c 0a 20 20 20 20 20 20 20 20 6b 20 m,. k
1a7e0 3d 20 73 74 72 2e 6c 61 73 74 49 6e 64 65 78 4f = str.lastIndexO
1a7f0 66 28 27 3c 27 29 2c 0a 20 20 20 20 20 20 20 20 f('<'),.
1a800 6e 20 3d 20 73 74 72 2e 6c 65 6e 67 74 68 3b 0a n = str.length;.
1a810 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 6b 20 . while (k
1a820 21 3d 3d 20 2d 31 29 20 7b 0a 20 20 20 20 20 20 !== -1) {.
1a830 20 20 6d 20 3d 20 73 74 72 2e 73 6c 69 63 65 28 m = str.slice(
1a840 6b 2c 20 6e 29 2e 6d 61 74 63 68 28 45 4e 44 5f k, n).match(END_
1a850 54 41 47 53 29 3b 0a 20 20 20 20 20 20 20 20 69 TAGS);. i
1a860 66 20 28 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 f (m) {.
1a870 20 20 6b 20 2b 3d 20 6d 2e 69 6e 64 65 78 20 2b k += m.index +
1a880 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0a 20 20 m[0].length;.
1a890 20 20 20 20 20 20 20 20 6d 20 3d 20 73 74 72 2e m = str.
1a8a0 73 6c 69 63 65 28 30 2c 20 6b 29 3b 0a 20 20 20 slice(0, k);.
1a8b0 20 20 20 20 20 20 20 69 66 20 28 6d 2e 73 6c 69 if (m.sli
1a8c0 63 65 28 2d 35 29 20 3d 3d 3d 20 27 3c 2d 2f 3e ce(-5) === '<-/>
1a8d0 5c 6e 27 29 20 7b 20 6d 20 3d 20 6d 2e 73 6c 69 \n') { m = m.sli
1a8e0 63 65 28 30 2c 20 2d 35 29 3b 20 7d 0a 20 20 20 ce(0, -5); }.
1a8f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 6d return [m
1a900 2c 20 73 74 72 2e 73 6c 69 63 65 28 6b 29 5d 0a , str.slice(k)].
1a910 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
1a920 20 20 6e 20 3d 20 6b 3b 0a 20 20 20 20 20 20 20 n = k;.
1a930 20 6b 20 3d 20 73 74 72 2e 6c 61 73 74 49 6e 64 k = str.lastInd
1a940 65 78 4f 66 28 27 3c 27 2c 20 6b 20 2d 20 31 29 exOf('<', k - 1)
1a950 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a ;. }. }.
1a960 20 20 20 20 72 65 74 75 72 6e 20 5b 27 27 2c 20 return ['',
1a970 73 74 72 5d 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 str]. }.. func
1a980 74 69 6f 6e 20 67 65 74 54 79 70 65 20 28 61 74 tion getType (at
1a990 74 72 69 62 73 29 20 7b 0a 20 20 20 20 69 66 20 tribs) {. if
1a9a0 28 61 74 74 72 69 62 73 29 20 7b 0a 20 20 20 20 (attribs) {.
1a9b0 20 20 76 61 72 20 6d 61 74 63 68 20 3d 20 61 74 var match = at
1a9c0 74 72 69 62 73 2e 6d 61 74 63 68 28 54 59 50 45 tribs.match(TYPE
1a9d0 5f 41 54 54 52 29 3b 0a 0a 20 20 20 20 20 20 6d _ATTR);.. m
1a9e0 61 74 63 68 20 3d 20 6d 61 74 63 68 20 26 26 20 atch = match &&
1a9f0 28 6d 61 74 63 68 5b 32 5d 20 7c 7c 20 6d 61 74 (match[2] || mat
1aa00 63 68 5b 33 5d 29 3b 0a 20 20 20 20 20 20 69 66 ch[3]);. if
1aa10 20 28 6d 61 74 63 68 29 20 7b 0a 20 20 20 20 20 (match) {.
1aa20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 63 68 2e return match.
1aa30 72 65 70 6c 61 63 65 28 27 74 65 78 74 2f 27 2c replace('text/',
1aa40 20 27 27 29 0a 20 20 20 20 20 20 7d 0a 20 20 20 ''). }.
1aa50 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 27 27 }. return ''
1aa60 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f 6e . }.. function
1aa70 20 67 65 74 41 74 74 72 69 62 20 28 61 74 74 72 getAttrib (attr
1aa80 69 62 73 2c 20 6e 61 6d 65 29 20 7b 0a 20 20 20 ibs, name) {.
1aa90 20 69 66 20 28 61 74 74 72 69 62 73 29 20 7b 0a if (attribs) {.
1aaa0 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 20 var match
1aab0 3d 20 61 74 74 72 69 62 73 2e 6d 61 74 63 68 28 = attribs.match(
1aac0 52 65 67 45 78 70 28 27 5c 5c 73 27 20 2b 20 6e RegExp('\\s' + n
1aad0 61 6d 65 20 2b 20 4d 49 53 43 5f 41 54 54 52 2c ame + MISC_ATTR,
1aae0 20 27 69 27 29 29 3b 0a 0a 20 20 20 20 20 20 6d 'i'));.. m
1aaf0 61 74 63 68 20 3d 20 6d 61 74 63 68 20 26 26 20 atch = match &&
1ab00 6d 61 74 63 68 5b 31 5d 3b 0a 20 20 20 20 20 20 match[1];.
1ab10 69 66 20 28 6d 61 74 63 68 29 20 7b 0a 20 20 20 if (match) {.
1ab20 20 20 20 20 20 72 65 74 75 72 6e 20 28 2f 5e 5b return (/^[
1ab30 27 22 5d 2f 29 2e 74 65 73 74 28 6d 61 74 63 68 '"]/).test(match
1ab40 29 20 3f 20 6d 61 74 63 68 2e 73 6c 69 63 65 28 ) ? match.slice(
1ab50 31 2c 20 2d 31 29 20 3a 20 6d 61 74 63 68 0a 20 1, -1) : match.
1ab60 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
1ab70 20 72 65 74 75 72 6e 20 27 27 0a 20 20 7d 0a 0a return ''. }..
1ab80 20 20 66 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63 function unesc
1ab90 61 70 65 48 54 4d 4c 20 28 73 74 72 29 20 7b 0a apeHTML (str) {.
1aba0 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 0a 20 return str.
1abb0 20 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 26 .replace(/&
1abc0 61 6d 70 3b 2f 67 2c 20 27 26 27 29 0a 20 20 20 amp;/g, '&').
1abd0 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 26 6c 74 .replace(/<
1abe0 3b 2f 67 2c 20 27 3c 27 29 0a 20 20 20 20 20 20 ;/g, '<').
1abf0 2e 72 65 70 6c 61 63 65 28 2f 26 67 74 3b 2f 67 .replace(/>/g
1ac00 2c 20 27 3e 27 29 0a 20 20 20 20 20 20 2e 72 65 , '>'). .re
1ac10 70 6c 61 63 65 28 2f 26 71 75 6f 74 3b 2f 67 2c place(/"/g,
1ac20 20 27 22 27 29 0a 20 20 20 20 20 20 2e 72 65 70 '"'). .rep
1ac30 6c 61 63 65 28 2f 26 23 30 33 39 3b 2f 67 2c 20 lace(/'/g,
1ac40 27 5c 27 27 29 0a 20 20 7d 0a 0a 20 20 66 75 6e '\''). }.. fun
1ac50 63 74 69 6f 6e 20 67 65 74 50 61 72 73 65 72 4f ction getParserO
1ac60 70 74 69 6f 6e 73 20 28 61 74 74 72 69 62 73 29 ptions (attribs)
1ac70 20 7b 0a 20 20 20 20 76 61 72 20 6f 70 74 73 20 {. var opts
1ac80 3d 20 75 6e 65 73 63 61 70 65 48 54 4d 4c 28 67 = unescapeHTML(g
1ac90 65 74 41 74 74 72 69 62 28 61 74 74 72 69 62 73 etAttrib(attribs
1aca0 2c 20 27 6f 70 74 69 6f 6e 73 27 29 29 3b 0a 0a , 'options'));..
1acb0 20 20 20 20 72 65 74 75 72 6e 20 6f 70 74 73 20 return opts
1acc0 3f 20 4a 53 4f 4e 2e 70 61 72 73 65 28 6f 70 74 ? JSON.parse(opt
1acd0 73 29 20 3a 20 6e 75 6c 6c 0a 20 20 7d 0a 0a 20 s) : null. }..
1ace0 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 64 function getCod
1acf0 65 20 28 63 6f 64 65 2c 20 6f 70 74 73 2c 20 61 e (code, opts, a
1ad00 74 74 72 69 62 73 2c 20 62 61 73 65 29 20 7b 0a ttribs, base) {.
1ad10 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 74 79 var. ty
1ad20 70 65 20 3d 20 67 65 74 54 79 70 65 28 61 74 74 pe = getType(att
1ad30 72 69 62 73 29 2c 0a 20 20 20 20 20 20 73 72 63 ribs),. src
1ad40 20 20 3d 20 67 65 74 41 74 74 72 69 62 28 61 74 = getAttrib(at
1ad50 74 72 69 62 73 2c 20 27 73 72 63 27 29 2c 0a 20 tribs, 'src'),.
1ad60 20 20 20 20 20 6a 73 50 61 72 73 65 72 4f 70 74 jsParserOpt
1ad70 69 6f 6e 73 20 3d 20 65 78 74 65 6e 64 24 31 28 ions = extend$1(
1ad80 7b 7d 2c 20 6f 70 74 73 2e 70 61 72 73 65 72 4f {}, opts.parserO
1ad90 70 74 69 6f 6e 73 2e 6a 73 29 3b 0a 0a 20 20 20 ptions.js);..
1ada0 20 69 66 20 28 73 72 63 29 20 7b 20 72 65 74 75 if (src) { retu
1adb0 72 6e 20 66 61 6c 73 65 20 7d 0a 0a 20 20 20 20 rn false }..
1adc0 72 65 74 75 72 6e 20 5f 63 6f 6d 70 69 6c 65 4a return _compileJ
1add0 53 28 0a 20 20 20 20 20 20 63 6f 64 65 2c 0a 20 S(. code,.
1ade0 20 20 20 20 20 6f 70 74 73 2c 0a 20 20 20 20 20 opts,.
1adf0 20 74 79 70 65 2c 0a 20 20 20 20 20 20 65 78 74 type,. ext
1ae00 65 6e 64 24 31 28 6a 73 50 61 72 73 65 72 4f 70 end$1(jsParserOp
1ae10 74 69 6f 6e 73 2c 20 67 65 74 50 61 72 73 65 72 tions, getParser
1ae20 4f 70 74 69 6f 6e 73 28 61 74 74 72 69 62 73 29 Options(attribs)
1ae30 29 2c 0a 20 20 20 20 20 20 62 61 73 65 0a 20 20 ),. base.
1ae40 20 20 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 ). }.. funct
1ae50 69 6f 6e 20 63 73 73 43 6f 64 65 20 28 63 6f 64 ion cssCode (cod
1ae60 65 2c 20 6f 70 74 73 2c 20 61 74 74 72 69 62 73 e, opts, attribs
1ae70 2c 20 75 72 6c 2c 20 74 61 67 29 20 7b 0a 20 20 , url, tag) {.
1ae80 20 20 76 61 72 0a 20 20 20 20 20 20 70 61 72 73 var. pars
1ae90 65 72 53 74 79 6c 65 4f 70 74 69 6f 6e 73 20 3d erStyleOptions =
1aea0 20 65 78 74 65 6e 64 24 31 28 7b 7d 2c 20 6f 70 extend$1({}, op
1aeb0 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f 6e 73 ts.parserOptions
1aec0 2e 73 74 79 6c 65 29 2c 0a 20 20 20 20 20 20 65 .style),. e
1aed0 78 74 72 61 4f 70 74 73 20 3d 20 7b 0a 20 20 20 xtraOpts = {.
1aee0 20 20 20 20 20 70 61 72 73 65 72 4f 70 74 73 3a parserOpts:
1aef0 20 65 78 74 65 6e 64 24 31 28 70 61 72 73 65 72 extend$1(parser
1af00 53 74 79 6c 65 4f 70 74 69 6f 6e 73 2c 20 67 65 StyleOptions, ge
1af10 74 50 61 72 73 65 72 4f 70 74 69 6f 6e 73 28 61 tParserOptions(a
1af20 74 74 72 69 62 73 29 29 2c 0a 20 20 20 20 20 20 ttribs)),.
1af30 20 20 75 72 6c 3a 20 75 72 6c 0a 20 20 20 20 20 url: url.
1af40 20 7d 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 };.. return
1af50 5f 63 6f 6d 70 69 6c 65 43 53 53 28 63 6f 64 65 _compileCSS(code
1af60 2c 20 74 61 67 2c 20 67 65 74 54 79 70 65 28 61 , tag, getType(a
1af70 74 74 72 69 62 73 29 20 7c 7c 20 6f 70 74 73 2e ttribs) || opts.
1af80 73 74 79 6c 65 2c 20 65 78 74 72 61 4f 70 74 73 style, extraOpts
1af90 29 0a 20 20 7d 0a 0a 20 20 66 75 6e 63 74 69 6f ). }.. functio
1afa0 6e 20 63 6f 6d 70 69 6c 65 54 65 6d 70 6c 61 74 n compileTemplat
1afb0 65 20 28 68 74 6d 6c 2c 20 75 72 6c 2c 20 6c 61 e (html, url, la
1afc0 6e 67 2c 20 6f 70 74 73 29 20 7b 0a 0a 20 20 20 ng, opts) {..
1afd0 20 76 61 72 20 70 61 72 73 65 72 20 3d 20 70 61 var parser = pa
1afe0 72 73 65 72 73 2e 5f 72 65 71 28 27 68 74 6d 6c rsers._req('html
1aff0 2e 27 20 2b 20 6c 61 6e 67 2c 20 74 72 75 65 29 .' + lang, true)
1b000 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 ;. return par
1b010 73 65 72 28 68 74 6d 6c 2c 20 6f 70 74 73 2c 20 ser(html, opts,
1b020 75 72 6c 29 0a 20 20 7d 0a 0a 20 20 76 61 72 0a url). }.. var.
1b030 0a 20 20 20 20 43 55 53 54 5f 54 41 47 20 3d 20 . CUST_TAG =
1b040 52 65 67 45 78 70 28 2f 5e 28 5b 20 5c 74 5d 2a RegExp(/^([ \t]*
1b050 29 3c 28 2d 3f 5b 41 2d 5a 61 2d 7a 5d 5b 2d 5c )<(-?[A-Za-z][-\
1b060 77 5c 78 41 30 2d 5c 78 46 46 5d 2a 29 28 3f 3a w\xA0-\xFF]*)(?:
1b070 5c 73 2b 28 5b 5e 27 22 2f 3e 5d 2b 28 3f 3a 28 \s+([^'"/>]+(?:(
1b080 3f 3a 40 7c 5c 2f 5b 5e 3e 5d 29 5b 5e 27 22 2f ?:@|\/[^>])[^'"/
1b090 3e 5d 2a 29 2a 29 7c 5c 73 2a 29 3f 28 3f 3a 5c >]*)*)|\s*)?(?:\
1b0a0 2f 3e 7c 3e 5b 20 5c 74 5d 2a 5c 6e 3f 28 5b 5c />|>[ \t]*\n?([\
1b0b0 53 5c 73 5d 2a 29 5e 5c 31 3c 5c 2f 5c 32 5c 73 S\s]*)^\1<\/\2\s
1b0c0 2a 3e 7c 3e 28 2e 2a 29 3c 5c 2f 5c 32 5c 73 2a *>|>(.*)<\/\2\s*
1b0d0 3e 29 2f 0a 20 20 20 20 20 20 2e 73 6f 75 72 63 >)/. .sourc
1b0e0 65 2e 72 65 70 6c 61 63 65 28 27 40 27 2c 20 53 e.replace('@', S
1b0f0 5f 53 54 52 49 4e 47 53 29 2c 20 27 67 69 6d 27 _STRINGS), 'gim'
1b100 29 2c 0a 0a 20 20 20 20 53 43 52 49 50 54 53 20 ),.. SCRIPTS
1b110 3d 20 2f 3c 73 63 72 69 70 74 28 5c 73 2b 5b 5e = /<script(\s+[^
1b120 3e 5d 2a 29 3f 3e 5c 6e 3f 28 5b 5c 53 5c 73 5d >]*)?>\n?([\S\s]
1b130 2a 3f 29 3c 5c 2f 73 63 72 69 70 74 5c 73 2a 3e *?)<\/script\s*>
1b140 2f 67 69 2c 0a 0a 20 20 20 20 53 54 59 4c 45 53 /gi,.. STYLES
1b150 20 3d 20 2f 3c 73 74 79 6c 65 28 5c 73 2b 5b 5e = /<style(\s+[^
1b160 3e 5d 2a 29 3f 3e 5c 6e 3f 28 5b 5c 53 5c 73 5d >]*)?>\n?([\S\s]
1b170 2a 3f 29 3c 5c 2f 73 74 79 6c 65 5c 73 2a 3e 2f *?)<\/style\s*>/
1b180 67 69 3b 0a 0a 20 20 66 75 6e 63 74 69 6f 6e 20 gi;.. function
1b190 63 6f 6d 70 69 6c 65 20 28 73 72 63 2c 20 6f 70 compile (src, op
1b1a0 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 76 ts, url) {. v
1b1b0 61 72 0a 20 20 20 20 20 20 70 61 72 74 73 20 3d ar. parts =
1b1c0 20 5b 5d 2c 0a 20 20 20 20 20 20 69 6e 63 6c 75 [],. inclu
1b1d0 64 65 64 2c 0a 20 20 20 20 20 20 6f 75 74 70 75 ded,. outpu
1b1e0 74 20 3d 20 73 72 63 2c 0a 20 20 20 20 20 20 64 t = src,. d
1b1f0 65 66 61 75 6c 74 50 61 72 73 65 72 70 74 69 6f efaultParserptio
1b200 6e 73 20 3d 20 7b 0a 0a 20 20 20 20 20 20 20 20 ns = {..
1b210 74 65 6d 70 6c 61 74 65 3a 20 7b 7d 2c 0a 20 20 template: {},.
1b220 20 20 20 20 20 20 6a 73 3a 20 7b 7d 2c 0a 20 20 js: {},.
1b230 20 20 20 20 20 20 73 74 79 6c 65 3a 20 7b 7d 0a style: {}.
1b240 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 69 66 };.. if
1b250 20 28 21 6f 70 74 73 29 20 7b 20 6f 70 74 73 20 (!opts) { opts
1b260 3d 20 7b 7d 3b 20 7d 0a 0a 20 20 20 20 6f 70 74 = {}; }.. opt
1b270 73 2e 70 61 72 73 65 72 4f 70 74 69 6f 6e 73 20 s.parserOptions
1b280 3d 20 65 78 74 65 6e 64 24 31 28 64 65 66 61 75 = extend$1(defau
1b290 6c 74 50 61 72 73 65 72 70 74 69 6f 6e 73 2c 20 ltParserptions,
1b2a0 6f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f opts.parserOptio
1b2b0 6e 73 20 7c 7c 20 7b 7d 29 3b 0a 0a 20 20 20 20 ns || {});..
1b2c0 69 6e 63 6c 75 64 65 64 20 3d 20 6f 70 74 73 2e included = opts.
1b2d0 65 78 63 6c 75 64 65 0a 20 20 20 20 20 20 3f 20 exclude. ?
1b2e0 66 75 6e 63 74 69 6f 6e 20 28 73 29 20 7b 20 72 function (s) { r
1b2f0 65 74 75 72 6e 20 6f 70 74 73 2e 65 78 63 6c 75 eturn opts.exclu
1b300 64 65 2e 69 6e 64 65 78 4f 66 28 73 29 20 3c 20 de.indexOf(s) <
1b310 30 20 7d 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28 0 } : function (
1b320 29 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 3b 0a ) { return 1 };.
1b330 0a 20 20 20 20 69 66 20 28 21 75 72 6c 29 20 7b . if (!url) {
1b340 20 75 72 6c 20 3d 20 27 27 3b 20 7d 0a 0a 20 20 url = ''; }..
1b350 20 20 76 61 72 20 5f 62 70 20 3d 20 62 72 61 63 var _bp = brac
1b360 6b 65 74 73 2e 61 72 72 61 79 28 6f 70 74 73 2e kets.array(opts.
1b370 62 72 61 63 6b 65 74 73 29 3b 0a 0a 20 20 20 20 brackets);..
1b380 69 66 20 28 6f 70 74 73 2e 74 65 6d 70 6c 61 74 if (opts.templat
1b390 65 29 20 7b 0a 20 20 20 20 20 20 6f 75 74 70 75 e) {. outpu
1b3a0 74 20 3d 20 63 6f 6d 70 69 6c 65 54 65 6d 70 6c t = compileTempl
1b3b0 61 74 65 28 6f 75 74 70 75 74 2c 20 75 72 6c 2c ate(output, url,
1b3c0 20 6f 70 74 73 2e 74 65 6d 70 6c 61 74 65 2c 20 opts.template,
1b3d0 6f 70 74 73 2e 70 61 72 73 65 72 4f 70 74 69 6f opts.parserOptio
1b3e0 6e 73 2e 74 65 6d 70 6c 61 74 65 29 3b 0a 20 20 ns.template);.
1b3f0 20 20 7d 0a 0a 20 20 20 20 6f 75 74 70 75 74 20 }.. output
1b400 3d 20 63 6c 65 61 6e 53 6f 75 72 63 65 28 6f 75 = cleanSource(ou
1b410 74 70 75 74 29 0a 20 20 20 20 20 20 2e 72 65 70 tput). .rep
1b420 6c 61 63 65 28 43 55 53 54 5f 54 41 47 2c 20 66 lace(CUST_TAG, f
1b430 75 6e 63 74 69 6f 6e 20 28 5f 2c 20 69 6e 64 65 unction (_, inde
1b440 6e 74 2c 20 74 61 67 4e 61 6d 65 2c 20 61 74 74 nt, tagName, att
1b450 72 69 62 73 2c 20 62 6f 64 79 2c 20 62 6f 64 79 ribs, body, body
1b460 32 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 2) {. var
1b470 0a 20 20 20 20 20 20 20 20 20 20 6a 73 63 6f 64 . jscod
1b480 65 20 3d 20 27 27 2c 0a 20 20 20 20 20 20 20 20 e = '',.
1b490 20 20 73 74 79 6c 65 73 20 3d 20 27 27 2c 0a 20 styles = '',.
1b4a0 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 3d 20 html =
1b4b0 27 27 2c 0a 20 20 20 20 20 20 20 20 20 20 69 6d '',. im
1b4c0 70 6f 72 74 73 20 3d 20 27 27 2c 0a 20 20 20 20 ports = '',.
1b4d0 20 20 20 20 20 20 70 63 65 78 20 3d 20 5b 5d 3b pcex = [];
1b4e0 0a 0a 20 20 20 20 20 20 20 20 70 63 65 78 2e 5f .. pcex._
1b4f0 62 70 20 3d 20 5f 62 70 3b 0a 0a 20 20 20 20 20 bp = _bp;..
1b500 20 20 20 74 61 67 4e 61 6d 65 20 3d 20 74 61 67 tagName = tag
1b510 4e 61 6d 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 Name.toLowerCase
1b520 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 61 74 74 ();.. att
1b530 72 69 62 73 20 3d 20 61 74 74 72 69 62 73 20 26 ribs = attribs &
1b540 26 20 69 6e 63 6c 75 64 65 64 28 27 61 74 74 72 & included('attr
1b550 69 62 73 27 29 0a 20 20 20 20 20 20 20 20 20 20 ibs').
1b560 3f 20 72 65 73 74 6f 72 65 45 78 70 72 28 0a 20 ? restoreExpr(.
1b570 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65 parse
1b580 41 74 74 72 69 62 73 28 0a 20 20 20 20 20 20 20 Attribs(.
1b590 20 20 20 20 20 20 20 73 70 6c 69 74 48 74 6d 6c splitHtml
1b5a0 28 61 74 74 72 69 62 73 2c 20 6f 70 74 73 2c 20 (attribs, opts,
1b5b0 70 63 65 78 29 2c 0a 20 20 20 20 20 20 20 20 20 pcex),.
1b5c0 20 20 20 20 20 70 63 65 78 29 2c 0a 20 20 20 20 pcex),.
1b5d0 20 20 20 20 20 20 20 20 70 63 65 78 29 20 3a 20 pcex) :
1b5e0 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 '';.. if
1b5f0 28 28 62 6f 64 79 20 7c 7c 20 28 62 6f 64 79 20 ((body || (body
1b600 3d 20 62 6f 64 79 32 29 29 20 26 26 20 2f 5c 53 = body2)) && /\S
1b610 2f 2e 74 65 73 74 28 62 6f 64 79 29 29 20 7b 0a /.test(body)) {.
1b620 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 . if (b
1b630 6f 64 79 32 29 20 7b 0a 0a 20 20 20 20 20 20 20 ody2) {..
1b640 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 if (include
1b650 64 28 27 68 74 6d 6c 27 29 29 20 7b 20 68 74 6d d('html')) { htm
1b660 6c 20 3d 20 5f 63 6f 6d 70 69 6c 65 48 54 4d 4c l = _compileHTML
1b670 28 62 6f 64 79 32 2c 20 6f 70 74 73 2c 20 70 63 (body2, opts, pc
1b680 65 78 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 ex); }.
1b690 20 7d 20 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20 } else {..
1b6a0 20 20 20 20 20 20 20 62 6f 64 79 20 3d 20 62 6f body = bo
1b6b0 64 79 2e 72 65 70 6c 61 63 65 28 52 65 67 45 78 dy.replace(RegEx
1b6c0 70 28 27 5e 27 20 2b 20 69 6e 64 65 6e 74 2c 20 p('^' + indent,
1b6d0 27 67 6d 27 29 2c 20 27 27 29 3b 0a 0a 20 20 20 'gm'), '');..
1b6e0 20 20 20 20 20 20 20 20 20 62 6f 64 79 20 3d 20 body =
1b6f0 62 6f 64 79 2e 72 65 70 6c 61 63 65 28 53 43 52 body.replace(SCR
1b700 49 50 54 53 2c 20 66 75 6e 63 74 69 6f 6e 20 28 IPTS, function (
1b710 5f 6d 2c 20 5f 61 74 74 72 73 2c 20 5f 73 63 72 _m, _attrs, _scr
1b720 69 70 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ipt) {.
1b730 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 if (include
1b740 64 28 27 6a 73 27 29 29 20 7b 0a 20 20 20 20 20 d('js')) {.
1b750 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 var c
1b760 6f 64 65 20 3d 20 67 65 74 43 6f 64 65 28 5f 73 ode = getCode(_s
1b770 63 72 69 70 74 2c 20 6f 70 74 73 2c 20 5f 61 74 cript, opts, _at
1b780 74 72 73 2c 20 75 72 6c 29 3b 0a 0a 20 20 20 20 trs, url);..
1b790 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
1b7a0 63 6f 64 65 29 20 7b 20 6a 73 63 6f 64 65 20 2b code) { jscode +
1b7b0 3d 20 28 6a 73 63 6f 64 65 20 3f 20 27 5c 6e 27 = (jscode ? '\n'
1b7c0 20 3a 20 27 27 29 20 2b 20 63 6f 64 65 3b 20 7d : '') + code; }
1b7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d . }
1b7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 . r
1b7f0 65 74 75 72 6e 20 27 27 0a 20 20 20 20 20 20 20 eturn ''.
1b800 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 20 20 20 });..
1b810 20 20 20 20 20 20 62 6f 64 79 20 3d 20 62 6f 64 body = bod
1b820 79 2e 72 65 70 6c 61 63 65 28 53 54 59 4c 45 53 y.replace(STYLES
1b830 2c 20 66 75 6e 63 74 69 6f 6e 20 28 5f 6d 2c 20 , function (_m,
1b840 5f 61 74 74 72 73 2c 20 5f 73 74 79 6c 65 29 20 _attrs, _style)
1b850 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
1b860 69 66 20 28 69 6e 63 6c 75 64 65 64 28 27 63 73 if (included('cs
1b870 73 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 s')) {.
1b880 20 20 20 20 20 20 20 73 74 79 6c 65 73 20 2b 3d styles +=
1b890 20 28 73 74 79 6c 65 73 20 3f 20 27 20 27 20 3a (styles ? ' ' :
1b8a0 20 27 27 29 20 2b 20 63 73 73 43 6f 64 65 28 5f '') + cssCode(_
1b8b0 73 74 79 6c 65 2c 20 6f 70 74 73 2c 20 5f 61 74 style, opts, _at
1b8c0 74 72 73 2c 20 75 72 6c 2c 20 74 61 67 4e 61 6d trs, url, tagNam
1b8d0 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);.
1b8e0 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }.
1b8f0 20 20 72 65 74 75 72 6e 20 27 27 0a 20 20 20 20 return ''.
1b900 20 20 20 20 20 20 20 20 7d 29 3b 0a 0a 20 20 20 });..
1b910 20 20 20 20 20 20 20 20 20 76 61 72 20 62 6c 6f var blo
1b920 63 6b 73 20 3d 20 73 70 6c 69 74 42 6c 6f 63 6b cks = splitBlock
1b930 73 28 62 6f 64 79 2e 72 65 70 6c 61 63 65 28 54 s(body.replace(T
1b940 52 49 4d 5f 54 52 41 49 4c 2c 20 27 27 29 29 3b RIM_TRAIL, ''));
1b950 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1b960 20 28 69 6e 63 6c 75 64 65 64 28 27 68 74 6d 6c (included('html
1b970 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ')) {.
1b980 20 20 20 20 68 74 6d 6c 20 3d 20 5f 63 6f 6d 70 html = _comp
1b990 69 6c 65 48 54 4d 4c 28 62 6c 6f 63 6b 73 5b 30 ileHTML(blocks[0
1b9a0 5d 2c 20 6f 70 74 73 2c 20 70 63 65 78 29 3b 0a ], opts, pcex);.
1b9b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 }..
1b9c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 if (i
1b9d0 6e 63 6c 75 64 65 64 28 27 6a 73 27 29 29 20 7b ncluded('js')) {
1b9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 . b
1b9f0 6f 64 79 20 3d 20 5f 63 6f 6d 70 69 6c 65 4a 53 ody = _compileJS
1ba00 28 62 6c 6f 63 6b 73 5b 31 5d 2c 20 6f 70 74 73 (blocks[1], opts
1ba10 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 75 72 , null, null, ur
1ba20 6c 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 l);.
1ba30 20 20 69 66 20 28 62 6f 64 79 29 20 7b 20 6a 73 if (body) { js
1ba40 63 6f 64 65 20 2b 3d 20 28 6a 73 63 6f 64 65 20 code += (jscode
1ba50 3f 20 27 5c 6e 27 20 3a 20 27 27 29 20 2b 20 62 ? '\n' : '') + b
1ba60 6f 64 79 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 ody; }.
1ba70 20 20 20 20 20 6a 73 63 6f 64 65 20 3d 20 6a 73 jscode = js
1ba80 63 6f 64 65 2e 72 65 70 6c 61 63 65 28 49 4d 50 code.replace(IMP
1ba90 4f 52 54 5f 53 54 41 54 45 4d 45 4e 54 2c 20 66 ORT_STATEMENT, f
1baa0 75 6e 63 74 69 6f 6e 20 28 73 29 20 7b 0a 20 20 unction (s) {.
1bab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d im
1bac0 70 6f 72 74 73 20 2b 3d 20 73 2e 74 72 69 6d 28 ports += s.trim(
1bad0 29 20 2b 20 27 5c 6e 27 3b 0a 20 20 20 20 20 20 ) + '\n';.
1bae0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
1baf0 20 27 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 ''.
1bb00 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 });.
1bb10 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 7d 0a }. }.
1bb20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 }..
1bb30 20 20 20 6a 73 63 6f 64 65 20 3d 20 2f 5c 53 2f jscode = /\S/
1bb40 2e 74 65 73 74 28 6a 73 63 6f 64 65 29 20 3f 20 .test(jscode) ?
1bb50 6a 73 63 6f 64 65 2e 72 65 70 6c 61 63 65 28 2f jscode.replace(/
1bb60 5c 6e 7b 33 2c 7d 2f 67 2c 20 27 5c 6e 5c 6e 27 \n{3,}/g, '\n\n'
1bb70 29 20 3a 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 ) : '';..
1bb80 20 69 66 20 28 6f 70 74 73 2e 65 6e 74 69 74 69 if (opts.entiti
1bb90 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 es) {.
1bba0 70 61 72 74 73 2e 70 75 73 68 28 7b 0a 20 20 20 parts.push({.
1bbb0 20 20 20 20 20 20 20 20 20 74 61 67 4e 61 6d 65 tagName
1bbc0 3a 20 74 61 67 4e 61 6d 65 2c 0a 20 20 20 20 20 : tagName,.
1bbd0 20 20 20 20 20 20 20 68 74 6d 6c 3a 20 68 74 6d html: htm
1bbe0 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 l,. c
1bbf0 73 73 3a 20 73 74 79 6c 65 73 2c 0a 20 20 20 20 ss: styles,.
1bc00 20 20 20 20 20 20 20 20 61 74 74 72 69 62 73 3a attribs:
1bc10 20 61 74 74 72 69 62 73 2c 0a 20 20 20 20 20 20 attribs,.
1bc20 20 20 20 20 20 20 6a 73 3a 20 6a 73 63 6f 64 65 js: jscode
1bc30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d ,. im
1bc40 70 6f 72 74 73 3a 20 69 6d 70 6f 72 74 73 0a 20 ports: imports.
1bc50 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 });.
1bc60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 return ''
1bc70 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 . }..
1bc80 20 20 20 20 72 65 74 75 72 6e 20 6d 6b 74 61 67 return mktag
1bc90 28 74 61 67 4e 61 6d 65 2c 20 68 74 6d 6c 2c 20 (tagName, html,
1bca0 73 74 79 6c 65 73 2c 20 61 74 74 72 69 62 73 2c styles, attribs,
1bcb0 20 6a 73 63 6f 64 65 2c 20 69 6d 70 6f 72 74 73 jscode, imports
1bcc0 2c 20 6f 70 74 73 29 0a 20 20 20 20 20 20 7d 29 , opts). })
1bcd0 3b 0a 0a 20 20 20 20 69 66 20 28 6f 70 74 73 2e ;.. if (opts.
1bce0 65 6e 74 69 74 69 65 73 29 20 7b 20 72 65 74 75 entities) { retu
1bcf0 72 6e 20 70 61 72 74 73 20 7d 0a 0a 20 20 20 20 rn parts }..
1bd00 72 65 74 75 72 6e 20 6f 75 74 70 75 74 0a 20 20 return output.
1bd10 7d 0a 0a 20 20 76 61 72 20 76 65 72 73 69 6f 6e }.. var version
1bd20 24 32 20 3d 20 27 76 33 2e 35 2e 32 27 3b 0a 0a $2 = 'v3.5.2';..
1bd30 20 20 76 61 72 20 63 6f 6d 70 69 6c 65 72 20 3d var compiler =
1bd40 20 7b 0a 20 20 20 20 63 6f 6d 70 69 6c 65 3a 20 {. compile:
1bd50 63 6f 6d 70 69 6c 65 2c 0a 20 20 20 20 63 6f 6d compile,. com
1bd60 70 69 6c 65 48 54 4d 4c 3a 20 63 6f 6d 70 69 6c pileHTML: compil
1bd70 65 48 54 4d 4c 2c 0a 20 20 20 20 63 6f 6d 70 69 eHTML,. compi
1bd80 6c 65 43 53 53 3a 20 63 6f 6d 70 69 6c 65 43 53 leCSS: compileCS
1bd90 53 2c 0a 20 20 20 20 63 6f 6d 70 69 6c 65 4a 53 S,. compileJS
1bda0 3a 20 63 6f 6d 70 69 6c 65 4a 53 2c 0a 20 20 20 : compileJS,.
1bdb0 20 70 61 72 73 65 72 73 3a 20 70 61 72 73 65 72 parsers: parser
1bdc0 73 2c 0a 20 20 20 20 76 65 72 73 69 6f 6e 3a 20 s,. version:
1bdd0 76 65 72 73 69 6f 6e 24 32 0a 20 20 7d 3b 0a 0a version$2. };..
1bde0 20 20 76 61 72 0a 20 20 20 20 70 72 6f 6d 69 73 var. promis
1bdf0 65 2c 20 20 20 20 2f 2f 20 65 6d 69 74 73 20 74 e, // emits t
1be00 68 65 20 27 72 65 61 64 79 27 20 65 76 65 6e 74 he 'ready' event
1be10 20 61 6e 64 20 72 75 6e 73 20 74 68 65 20 66 69 and runs the fi
1be20 72 73 74 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 rst callback.
1be30 20 72 65 61 64 79 3b 20 20 20 20 20 20 20 2f 2f ready; //
1be40 20 61 6c 6c 20 74 68 65 20 73 63 72 69 70 74 73 all the scripts
1be50 20 77 65 72 65 20 63 6f 6d 70 69 6c 65 64 3f 0a were compiled?.
1be60 0a 20 20 2f 2f 20 67 65 74 73 20 74 68 65 20 73 . // gets the s
1be70 6f 75 72 63 65 20 6f 66 20 61 6e 20 65 78 74 65 ource of an exte
1be80 72 6e 61 6c 20 74 61 67 20 77 69 74 68 20 61 6e rnal tag with an
1be90 20 61 73 79 6e 63 20 63 61 6c 6c 0a 20 20 66 75 async call. fu
1bea0 6e 63 74 69 6f 6e 20 47 45 54 20 28 75 72 6c 2c nction GET (url,
1beb0 20 66 6e 2c 20 6f 70 74 73 29 20 7b 0a 20 20 20 fn, opts) {.
1bec0 20 76 61 72 20 72 65 71 20 3d 20 6e 65 77 20 58 var req = new X
1bed0 4d 4c 48 74 74 70 52 65 71 75 65 73 74 28 29 3b MLHttpRequest();
1bee0 0a 0a 20 20 20 20 72 65 71 2e 6f 6e 72 65 61 64 .. req.onread
1bef0 79 73 74 61 74 65 63 68 61 6e 67 65 20 3d 20 66 ystatechange = f
1bf00 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 unction () {.
1bf10 20 20 20 69 66 20 28 72 65 71 2e 72 65 61 64 79 if (req.ready
1bf20 53 74 61 74 65 20 3d 3d 3d 20 34 29 20 7b 0a 20 State === 4) {.
1bf30 20 20 20 20 20 20 20 69 66 20 28 72 65 71 2e 73 if (req.s
1bf40 74 61 74 75 73 20 3d 3d 3d 20 32 30 30 20 7c 7c tatus === 200 ||
1bf50 20 21 72 65 71 2e 73 74 61 74 75 73 20 26 26 20 !req.status &&
1bf60 72 65 71 2e 72 65 73 70 6f 6e 73 65 54 65 78 74 req.responseText
1bf70 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 .length) {.
1bf80 20 20 20 20 20 66 6e 28 72 65 71 2e 72 65 73 70 fn(req.resp
1bf90 6f 6e 73 65 54 65 78 74 2c 20 6f 70 74 73 2c 20 onseText, opts,
1bfa0 75 72 6c 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 url);. }
1bfb0 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {.
1bfc0 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72 6f 72 compile$1.error
1bfd0 28 28 22 5c 22 22 20 2b 20 75 72 6c 20 2b 20 22 (("\"" + url + "
1bfe0 5c 22 20 6e 6f 74 20 66 6f 75 6e 64 22 29 29 3b \" not found"));
1bff0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
1c000 20 7d 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 72 }. };.. r
1c010 65 71 2e 6f 6e 65 72 72 6f 72 20 3d 20 66 75 6e eq.onerror = fun
1c020 63 74 69 6f 6e 20 28 65 29 20 7b 20 72 65 74 75 ction (e) { retu
1c030 72 6e 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72 rn compile$1.err
1c040 6f 72 28 65 29 3b 20 7d 3b 0a 0a 20 20 20 20 72 or(e); };.. r
1c050 65 71 2e 6f 70 65 6e 28 27 47 45 54 27 2c 20 75 eq.open('GET', u
1c060 72 6c 2c 20 74 72 75 65 29 3b 0a 20 20 20 20 72 rl, true);. r
1c070 65 71 2e 73 65 6e 64 28 27 27 29 3b 0a 20 20 7d eq.send('');. }
1c080 0a 0a 20 20 2f 2f 20 65 76 61 6c 75 61 74 65 73 .. // evaluates
1c090 20 61 20 63 6f 6d 70 69 6c 65 64 20 74 61 67 20 a compiled tag
1c0a0 77 69 74 68 69 6e 20 74 68 65 20 67 6c 6f 62 61 within the globa
1c0b0 6c 20 63 6f 6e 74 65 78 74 0a 20 20 66 75 6e 63 l context. func
1c0c0 74 69 6f 6e 20 67 6c 6f 62 61 6c 45 76 61 6c 20 tion globalEval
1c0d0 28 6a 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 (js, url) {.
1c0e0 69 66 20 28 74 79 70 65 6f 66 20 6a 73 20 3d 3d if (typeof js ==
1c0f0 3d 20 54 5f 53 54 52 49 4e 47 29 20 7b 0a 20 20 = T_STRING) {.
1c100 20 20 20 20 76 61 72 0a 20 20 20 20 20 20 20 20 var.
1c110 6e 6f 64 65 20 3d 20 6d 61 6b 65 45 6c 65 6d 65 node = makeEleme
1c120 6e 74 28 27 73 63 72 69 70 74 27 29 2c 0a 20 20 nt('script'),.
1c130 20 20 20 20 20 20 72 6f 6f 74 20 3d 20 64 6f 63 root = doc
1c140 75 6d 65 6e 74 2e 64 6f 63 75 6d 65 6e 74 45 6c ument.documentEl
1c150 65 6d 65 6e 74 3b 0a 0a 20 20 20 20 20 20 2f 2f ement;.. //
1c160 20 6d 61 6b 65 20 74 68 65 20 73 6f 75 72 63 65 make the source
1c170 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 available in th
1c180 65 20 22 28 6e 6f 20 64 6f 6d 61 69 6e 29 22 20 e "(no domain)"
1c190 74 61 62 0a 20 20 20 20 20 20 2f 2f 20 6f 66 20 tab. // of
1c1a0 43 68 72 6f 6d 65 20 44 65 76 54 6f 6f 6c 73 2c Chrome DevTools,
1c1b0 20 77 69 74 68 20 61 20 2e 6a 73 20 65 78 74 65 with a .js exte
1c1c0 6e 73 69 6f 6e 0a 20 20 20 20 20 20 69 66 20 28 nsion. if (
1c1d0 75 72 6c 29 20 7b 20 6a 73 20 2b 3d 20 27 5c 6e url) { js += '\n
1c1e0 2f 2f 23 20 73 6f 75 72 63 65 55 52 4c 3d 27 20 //# sourceURL='
1c1f0 2b 20 75 72 6c 20 2b 20 27 2e 6a 73 27 3b 20 7d + url + '.js'; }
1c200 0a 0a 20 20 20 20 20 20 6e 6f 64 65 2e 74 65 78 .. node.tex
1c210 74 20 3d 20 6a 73 3b 0a 20 20 20 20 20 20 72 6f t = js;. ro
1c220 6f 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6e ot.appendChild(n
1c230 6f 64 65 29 3b 0a 20 20 20 20 20 20 72 6f 6f 74 ode);. root
1c240 2e 72 65 6d 6f 76 65 43 68 69 6c 64 28 6e 6f 64 .removeChild(nod
1c250 65 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 e);. }. }..
1c260 20 2f 2f 20 63 6f 6d 70 69 6c 65 73 20 61 6c 6c // compiles all
1c270 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 61 6e the internal an
1c280 64 20 65 78 74 65 72 6e 61 6c 20 74 61 67 73 20 d external tags
1c290 6f 6e 20 74 68 65 20 70 61 67 65 0a 20 20 66 75 on the page. fu
1c2a0 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c 65 53 63 nction compileSc
1c2b0 72 69 70 74 73 20 28 66 6e 2c 20 78 6f 70 74 29 ripts (fn, xopt)
1c2c0 20 7b 0a 20 20 20 20 76 61 72 0a 20 20 20 20 20 {. var.
1c2d0 20 73 63 72 69 70 74 73 20 3d 20 24 24 28 27 73 scripts = $$('s
1c2e0 63 72 69 70 74 5b 74 79 70 65 3d 22 72 69 6f 74 cript[type="riot
1c2f0 2f 74 61 67 22 5d 27 29 2c 0a 20 20 20 20 20 20 /tag"]'),.
1c300 73 63 72 69 70 74 73 41 6d 6f 75 6e 74 20 3d 20 scriptsAmount =
1c310 73 63 72 69 70 74 73 2e 6c 65 6e 67 74 68 3b 0a scripts.length;.
1c320 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 64 6f . function do
1c330 6e 65 28 29 20 7b 0a 20 20 20 20 20 20 70 72 6f ne() {. pro
1c340 6d 69 73 65 2e 74 72 69 67 67 65 72 28 27 72 65 mise.trigger('re
1c350 61 64 79 27 29 3b 0a 20 20 20 20 20 20 72 65 61 ady');. rea
1c360 64 79 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 dy = true;.
1c370 20 69 66 20 28 66 6e 29 20 7b 20 66 6e 28 29 3b if (fn) { fn();
1c380 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 75 }. }.. fu
1c390 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 6c 65 54 61 nction compileTa
1c3a0 67 20 28 73 72 63 2c 20 6f 70 74 73 2c 20 75 72 g (src, opts, ur
1c3b0 6c 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 63 l) {. var c
1c3c0 6f 64 65 20 3d 20 63 6f 6d 70 69 6c 65 72 2e 63 ode = compiler.c
1c3d0 6f 6d 70 69 6c 65 28 73 72 63 2c 20 6f 70 74 73 ompile(src, opts
1c3e0 2c 20 75 72 6c 29 3b 0a 0a 20 20 20 20 20 20 67 , url);.. g
1c3f0 6c 6f 62 61 6c 45 76 61 6c 28 63 6f 64 65 2c 20 lobalEval(code,
1c400 75 72 6c 29 3b 0a 20 20 20 20 20 20 69 66 20 28 url);. if (
1c410 21 2d 2d 73 63 72 69 70 74 73 41 6d 6f 75 6e 74 !--scriptsAmount
1c420 29 20 7b 20 64 6f 6e 65 28 29 3b 20 7d 0a 20 20 ) { done(); }.
1c430 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 21 73 63 }.. if (!sc
1c440 72 69 70 74 73 41 6d 6f 75 6e 74 29 20 7b 20 64 riptsAmount) { d
1c450 6f 6e 65 28 29 3b 20 7d 0a 20 20 20 20 65 6c 73 one(); }. els
1c460 65 20 7b 0a 20 20 20 20 20 20 66 6f 72 20 28 76 e {. for (v
1c470 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 73 63 ar i = 0; i < sc
1c480 72 69 70 74 73 2e 6c 65 6e 67 74 68 3b 20 2b 2b ripts.length; ++
1c490 69 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 i) {. var
1c4a0 0a 20 20 20 20 20 20 20 20 20 20 73 63 72 69 70 . scrip
1c4b0 74 20 3d 20 73 63 72 69 70 74 73 5b 69 5d 2c 0a t = scripts[i],.
1c4c0 20 20 20 20 20 20 20 20 20 20 6f 70 74 73 20 3d opts =
1c4d0 20 65 78 74 65 6e 64 28 7b 74 65 6d 70 6c 61 74 extend({templat
1c4e0 65 3a 20 67 65 74 41 74 74 72 69 62 75 74 65 28 e: getAttribute(
1c4f0 73 63 72 69 70 74 2c 20 27 74 65 6d 70 6c 61 74 script, 'templat
1c500 65 27 29 7d 2c 20 78 6f 70 74 29 2c 0a 20 20 20 e')}, xopt),.
1c510 20 20 20 20 20 20 20 75 72 6c 20 3d 20 67 65 74 url = get
1c520 41 74 74 72 69 62 75 74 65 28 73 63 72 69 70 74 Attribute(script
1c530 2c 20 27 73 72 63 27 29 20 7c 7c 20 67 65 74 41 , 'src') || getA
1c540 74 74 72 69 62 75 74 65 28 73 63 72 69 70 74 2c ttribute(script,
1c550 20 27 64 61 74 61 2d 73 72 63 27 29 3b 0a 0a 20 'data-src');..
1c560 20 20 20 20 20 20 20 75 72 6c 20 3f 20 47 45 54 url ? GET
1c570 28 75 72 6c 2c 20 63 6f 6d 70 69 6c 65 54 61 67 (url, compileTag
1c580 2c 20 6f 70 74 73 29 20 3a 20 63 6f 6d 70 69 6c , opts) : compil
1c590 65 54 61 67 28 73 63 72 69 70 74 2e 69 6e 6e 65 eTag(script.inne
1c5a0 72 48 54 4d 4c 2c 20 6f 70 74 73 29 3b 0a 20 20 rHTML, opts);.
1c5b0 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a }. }. }.
1c5c0 0a 20 20 76 61 72 20 70 61 72 73 65 72 73 24 31 . var parsers$1
1c5d0 20 3d 20 63 6f 6d 70 69 6c 65 72 2e 70 61 72 73 = compiler.pars
1c5e0 65 72 73 3b 0a 0a 20 20 2f 2a 0a 20 20 20 20 43 ers;.. /*. C
1c5f0 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 6f 72 20 74 ompilation for t
1c600 68 65 20 62 72 6f 77 73 65 72 0a 20 20 2a 2f 0a he browser. */.
1c610 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 70 69 function compi
1c620 6c 65 24 31 20 28 61 72 67 2c 20 66 6e 2c 20 6f le$1 (arg, fn, o
1c630 70 74 73 29 20 7b 0a 0a 20 20 20 20 69 66 20 28 pts) {.. if (
1c640 74 79 70 65 6f 66 20 61 72 67 20 3d 3d 3d 20 54 typeof arg === T
1c650 5f 53 54 52 49 4e 47 29 20 7b 0a 0a 20 20 20 20 _STRING) {..
1c660 20 20 2f 2f 20 32 6e 64 20 70 61 72 61 6d 65 74 // 2nd paramet
1c670 65 72 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2c 20 er is optional,
1c680 62 75 74 20 63 61 6e 20 62 65 20 6e 75 6c 6c 0a but can be null.
1c690 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 6a 65 if (isObje
1c6a0 63 74 28 66 6e 29 29 20 7b 0a 20 20 20 20 20 20 ct(fn)) {.
1c6b0 20 20 6f 70 74 73 20 3d 20 66 6e 3b 0a 20 20 20 opts = fn;.
1c6c0 20 20 20 20 20 66 6e 20 3d 20 66 61 6c 73 65 3b fn = false;
1c6d0 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 . }..
1c6e0 2f 2f 20 60 72 69 6f 74 2e 63 6f 6d 70 69 6c 65 // `riot.compile
1c6f0 28 74 61 67 20 5b 2c 20 63 61 6c 6c 62 61 63 6b (tag [, callback
1c700 20 7c 20 74 72 75 65 5d 5b 2c 20 6f 70 74 69 6f | true][, optio
1c710 6e 73 5d 29 60 0a 20 20 20 20 20 20 69 66 20 28 ns])`. if (
1c720 2f 5e 5c 73 2a 3c 2f 6d 2e 74 65 73 74 28 61 72 /^\s*</m.test(ar
1c730 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 g)) {. va
1c740 72 20 6a 73 20 3d 20 63 6f 6d 70 69 6c 65 72 2e r js = compiler.
1c750 63 6f 6d 70 69 6c 65 28 61 72 67 2c 20 6f 70 74 compile(arg, opt
1c760 73 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 s);. if (
1c770 66 6e 20 21 3d 3d 20 74 72 75 65 29 20 7b 20 67 fn !== true) { g
1c780 6c 6f 62 61 6c 45 76 61 6c 28 6a 73 29 3b 20 7d lobalEval(js); }
1c790 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 46 . if (isF
1c7a0 75 6e 63 74 69 6f 6e 28 66 6e 29 29 20 7b 20 66 unction(fn)) { f
1c7b0 6e 28 6a 73 2c 20 61 72 67 2c 20 6f 70 74 73 29 n(js, arg, opts)
1c7c0 3b 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 ; }. retu
1c7d0 72 6e 20 6a 73 0a 20 20 20 20 20 20 7d 0a 0a 20 rn js. }..
1c7e0 20 20 20 20 20 2f 2f 20 60 72 69 6f 74 2e 63 6f // `riot.co
1c7f0 6d 70 69 6c 65 28 75 72 6c 20 5b 2c 20 63 61 6c mpile(url [, cal
1c800 6c 62 61 63 6b 5d 5b 2c 20 6f 70 74 69 6f 6e 73 lback][, options
1c810 5d 29 60 0a 20 20 20 20 20 20 47 45 54 28 61 72 ])`. GET(ar
1c820 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 73 74 72 g, function (str
1c830 2c 20 6f 70 74 73 2c 20 75 72 6c 29 20 7b 0a 20 , opts, url) {.
1c840 20 20 20 20 20 20 20 76 61 72 20 6a 73 20 3d 20 var js =
1c850 63 6f 6d 70 69 6c 65 72 2e 63 6f 6d 70 69 6c 65 compiler.compile
1c860 28 73 74 72 2c 20 6f 70 74 73 2c 20 75 72 6c 29 (str, opts, url)
1c870 3b 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c ;. global
1c880 45 76 61 6c 28 6a 73 2c 20 75 72 6c 29 3b 0a 20 Eval(js, url);.
1c890 20 20 20 20 20 20 20 69 66 20 28 66 6e 29 20 7b if (fn) {
1c8a0 20 66 6e 28 6a 73 2c 20 73 74 72 2c 20 6f 70 74 fn(js, str, opt
1c8b0 73 29 3b 20 7d 0a 20 20 20 20 20 20 7d 2c 20 6f s); }. }, o
1c8c0 70 74 73 29 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 pts);.. } els
1c8d0 65 20 69 66 20 28 69 73 41 72 72 61 79 28 61 72 e if (isArray(ar
1c8e0 67 29 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 g)) {. var
1c8f0 69 20 3d 20 61 72 67 2e 6c 65 6e 67 74 68 3b 0a i = arg.length;.
1c900 20 20 20 20 20 20 2f 2f 20 60 72 69 6f 74 2e 63 // `riot.c
1c910 6f 6d 70 69 6c 65 28 5b 75 72 6c 73 4c 69 73 74 ompile([urlsList
1c920 5d 20 5b 2c 20 63 61 6c 6c 62 61 63 6b 5d 5b 2c ] [, callback][,
1c930 20 6f 70 74 69 6f 6e 73 5d 29 60 0a 20 20 20 20 options])`.
1c940 20 20 61 72 67 2e 66 6f 72 45 61 63 68 28 66 75 arg.forEach(fu
1c950 6e 63 74 69 6f 6e 28 73 74 72 29 20 7b 0a 20 20 nction(str) {.
1c960 20 20 20 20 20 20 47 45 54 28 73 74 72 2c 20 66 GET(str, f
1c970 75 6e 63 74 69 6f 6e 20 28 73 74 72 2c 20 6f 70 unction (str, op
1c980 74 73 2c 20 75 72 6c 29 20 7b 0a 20 20 20 20 20 ts, url) {.
1c990 20 20 20 20 20 76 61 72 20 6a 73 20 3d 20 63 6f var js = co
1c9a0 6d 70 69 6c 65 72 2e 63 6f 6d 70 69 6c 65 28 73 mpiler.compile(s
1c9b0 74 72 2c 20 6f 70 74 73 2c 20 75 72 6c 29 3b 0a tr, opts, url);.
1c9c0 20 20 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c global
1c9d0 45 76 61 6c 28 6a 73 2c 20 75 72 6c 29 3b 0a 20 Eval(js, url);.
1c9e0 20 20 20 20 20 20 20 20 20 69 20 2d 2d 3b 0a 20 i --;.
1c9f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 69 20 if (!i
1ca00 26 26 20 66 6e 29 20 7b 20 66 6e 28 6a 73 2c 20 && fn) { fn(js,
1ca10 73 74 72 2c 20 6f 70 74 73 29 3b 20 7d 0a 20 20 str, opts); }.
1ca20 20 20 20 20 20 20 7d 2c 20 6f 70 74 73 29 3b 0a }, opts);.
1ca30 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 20 });. }
1ca40 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20 20 2f 2f else {.. //
1ca50 20 60 72 69 6f 74 2e 63 6f 6d 70 69 6c 65 28 5b `riot.compile([
1ca60 63 61 6c 6c 62 61 63 6b 5d 5b 2c 20 6f 70 74 69 callback][, opti
1ca70 6f 6e 73 5d 29 60 0a 20 20 20 20 20 20 69 66 20 ons])`. if
1ca80 28 69 73 46 75 6e 63 74 69 6f 6e 28 61 72 67 29 (isFunction(arg)
1ca90 29 20 7b 0a 20 20 20 20 20 20 20 20 6f 70 74 73 ) {. opts
1caa0 20 3d 20 66 6e 3b 0a 20 20 20 20 20 20 20 20 66 = fn;. f
1cab0 6e 20 3d 20 61 72 67 3b 0a 20 20 20 20 20 20 7d n = arg;. }
1cac0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
1cad0 6f 70 74 73 20 3d 20 61 72 67 3b 0a 20 20 20 20 opts = arg;.
1cae0 20 20 20 20 66 6e 20 3d 20 75 6e 64 65 66 69 6e fn = undefin
1caf0 65 64 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 ed;. }..
1cb00 20 20 20 69 66 20 28 72 65 61 64 79 29 20 7b 0a if (ready) {.
1cb10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 return f
1cb20 6e 20 26 26 20 66 6e 28 29 0a 20 20 20 20 20 20 n && fn().
1cb30 7d 0a 0a 20 20 20 20 20 20 69 66 20 28 70 72 6f }.. if (pro
1cb40 6d 69 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 mise) {.
1cb50 69 66 20 28 66 6e 29 20 7b 20 70 72 6f 6d 69 73 if (fn) { promis
1cb60 65 2e 6f 6e 28 27 72 65 61 64 79 27 2c 20 66 6e e.on('ready', fn
1cb70 29 3b 20 7d 0a 0a 20 20 20 20 20 20 7d 20 65 6c ); }.. } el
1cb80 73 65 20 7b 0a 20 20 20 20 20 20 20 20 70 72 6f se {. pro
1cb90 6d 69 73 65 20 3d 20 6f 62 73 65 72 76 61 62 6c mise = observabl
1cba0 65 28 29 3b 0a 20 20 20 20 20 20 20 20 63 6f 6d e();. com
1cbb0 70 69 6c 65 53 63 72 69 70 74 73 28 66 6e 2c 20 pileScripts(fn,
1cbc0 6f 70 74 73 29 3b 0a 20 20 20 20 20 20 7d 0a 20 opts);. }.
1cbd0 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2f 20 69 }. }.. // i
1cbe0 74 20 63 61 6e 20 62 65 20 72 65 77 72 69 74 74 t can be rewritt
1cbf0 65 6e 20 62 79 20 74 68 65 20 75 73 65 72 20 74 en by the user t
1cc00 6f 20 68 61 6e 64 6c 65 20 61 6c 6c 20 74 68 65 o handle all the
1cc10 20 63 6f 6d 70 69 6c 65 72 20 65 72 72 6f 72 73 compiler errors
1cc20 0a 20 20 63 6f 6d 70 69 6c 65 24 31 2e 65 72 72 . compile$1.err
1cc30 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 or = function (e
1cc40 29 20 7b 0a 20 20 20 20 74 68 72 6f 77 20 6e 65 ) {. throw ne
1cc50 77 20 45 72 72 6f 72 28 65 29 0a 20 20 7d 3b 0a w Error(e). };.
1cc60 0a 20 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 75 6e . function moun
1cc70 74 24 33 28 29 20 7b 0a 20 20 20 20 76 61 72 20 t$3() {. var
1cc80 61 72 67 73 20 3d 20 5b 5d 2c 20 6c 65 6e 20 3d args = [], len =
1cc90 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 arguments.lengt
1cca0 68 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 20 6c h;. while ( l
1ccb0 65 6e 2d 2d 20 29 20 61 72 67 73 5b 20 6c 65 6e en-- ) args[ len
1ccc0 20 5d 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 20 ] = arguments[
1ccd0 6c 65 6e 20 5d 3b 0a 0a 20 20 20 20 76 61 72 20 len ];.. var
1cce0 72 65 74 3b 0a 20 20 20 20 63 6f 6d 70 69 6c 65 ret;. compile
1ccf0 24 31 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b $1(function () {
1cd00 20 72 65 74 20 3d 20 6d 6f 75 6e 74 24 32 2e 61 ret = mount$2.a
1cd10 70 70 6c 79 28 72 69 6f 74 24 32 2c 20 61 72 67 pply(riot$2, arg
1cd20 73 29 3b 20 7d 29 3b 0a 20 20 20 20 72 65 74 75 s); });. retu
1cd30 72 6e 20 72 65 74 0a 20 20 7d 0a 0a 20 20 76 61 rn ret. }.. va
1cd40 72 20 72 69 6f 74 5f 63 6f 6d 70 69 6c 65 72 20 r riot_compiler
1cd50 3d 20 65 78 74 65 6e 64 28 7b 7d 2c 20 72 69 6f = extend({}, rio
1cd60 74 24 32 2c 20 7b 0a 20 20 20 20 6d 6f 75 6e 74 t$2, {. mount
1cd70 3a 20 6d 6f 75 6e 74 24 33 2c 0a 20 20 20 20 63 : mount$3,. c
1cd80 6f 6d 70 69 6c 65 3a 20 63 6f 6d 70 69 6c 65 24 ompile: compile$
1cd90 31 2c 0a 20 20 20 20 70 61 72 73 65 72 73 3a 20 1,. parsers:
1cda0 70 61 72 73 65 72 73 24 31 0a 20 20 7d 29 3b 0a parsers$1. });.
1cdb0 0a 20 20 72 65 74 75 72 6e 20 72 69 6f 74 5f 63 . return riot_c
1cdc0 6f 6d 70 69 6c 65 72 3b 0a 0a 7d 29 29 29 3b 0a ompiler;..})));.