Artifact
f66e4a37c38e89aec1f6f95951be968bf39c867b55acdfb138907300741707b1:
0000: 2f 2a 2a 0a 20 2a 20 57 61 6c 6b 20 64 6f 77 6e /**. * Walk down
0010: 20 72 65 63 75 72 73 69 76 65 6c 79 20 61 6c 6c recursively all
0020: 20 74 68 65 20 63 68 69 6c 64 72 65 6e 20 74 61 the children ta
0030: 67 73 20 73 74 61 72 74 69 6e 67 20 64 6f 6d 20 gs starting dom
0040: 6e 6f 64 65 0a 20 2a 20 40 70 61 72 61 6d 20 20 node. * @param
0050: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 20 64 6f { Object } do
0060: 6d 20 2d 20 73 74 61 72 74 69 6e 67 20 6e 6f 64 m - starting nod
0070: 65 20 77 68 65 72 65 20 77 65 20 77 69 6c 6c 20 e where we will
0080: 73 74 61 72 74 20 74 68 65 20 72 65 63 75 72 73 start the recurs
0090: 69 6f 6e 0a 20 2a 20 40 70 61 72 61 6d 20 20 20 ion. * @param
00a0: 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66 6e 20 { Function } fn
00b0: 2d 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 74 72 - callback to tr
00c0: 61 6e 73 66 6f 72 6d 20 74 68 65 20 63 68 69 6c ansform the chil
00d0: 64 20 6e 6f 64 65 20 6a 75 73 74 20 66 6f 75 6e d node just foun
00e0: 64 0a 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 d. * @param {
00f0: 4f 62 6a 65 63 74 20 7d 20 20 20 63 6f 6e 74 65 Object } conte
0100: 78 74 20 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69 xt - fn can opti
0110: 6f 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e onally return an
0120: 20 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 object, which i
0130: 73 20 70 61 73 73 65 64 20 74 6f 20 63 68 69 6c s passed to chil
0140: 64 72 65 6e 0a 20 2a 2f 0a 65 78 70 6f 72 74 20 dren. */.export
0150: 64 65 66 61 75 6c 74 20 66 75 6e 63 74 69 6f 6e default function
0160: 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c 20 walkNodes(dom,
0170: 66 6e 2c 20 63 6f 6e 74 65 78 74 29 20 7b 0a 20 fn, context) {.
0180: 20 69 66 20 28 64 6f 6d 29 20 7b 0a 20 20 20 20 if (dom) {.
0190: 63 6f 6e 73 74 20 72 65 73 20 3d 20 66 6e 28 64 const res = fn(d
01a0: 6f 6d 2c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20 om, context).
01b0: 20 6c 65 74 20 6e 65 78 74 0a 20 20 20 20 2f 2f let next. //
01c0: 20 73 74 6f 70 20 74 68 65 20 72 65 63 75 72 73 stop the recurs
01d0: 69 6f 6e 0a 20 20 20 20 69 66 20 28 72 65 73 20 ion. if (res
01e0: 3d 3d 3d 20 66 61 6c 73 65 29 20 72 65 74 75 72 === false) retur
01f0: 6e 0a 0a 20 20 20 20 64 6f 6d 20 3d 20 64 6f 6d n.. dom = dom
0200: 2e 66 69 72 73 74 43 68 69 6c 64 0a 0a 20 20 20 .firstChild..
0210: 20 77 68 69 6c 65 20 28 64 6f 6d 29 20 7b 0a 20 while (dom) {.
0220: 20 20 20 20 20 6e 65 78 74 20 3d 20 64 6f 6d 2e next = dom.
0230: 6e 65 78 74 53 69 62 6c 69 6e 67 0a 20 20 20 20 nextSibling.
0240: 20 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c walkNodes(dom,
0250: 20 66 6e 2c 20 72 65 73 29 0a 20 20 20 20 20 20 fn, res).
0260: 64 6f 6d 20 3d 20 6e 65 78 74 0a 20 20 20 20 7d dom = next. }
0270: 0a 20 20 7d 0a 7d . }.}