Artifact
98ece64304d55b4052e70d9e2c2ad778748755fcef795a3ce3f8637b68572aac:
0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 65 'use strict';..e
0010: 78 70 6f 72 74 73 2e 66 69 6e 64 50 6f 73 69 74 xports.findPosit
0020: 69 6f 6e 20 3d 20 28 65 6c 29 20 3d 3e 20 7b 0a ion = (el) => {.
0030: 20 20 6c 65 74 20 76 69 65 77 70 6f 72 74 4f 66 let viewportOf
0040: 66 73 65 74 20 3d 20 65 6c 2e 67 65 74 42 6f 75 fset = el.getBou
0050: 6e 64 69 6e 67 43 6c 69 65 6e 74 52 65 63 74 28 ndingClientRect(
0060: 29 3b 0a 20 20 6c 65 74 20 74 6f 70 20 3d 20 76 );. let top = v
0070: 69 65 77 70 6f 72 74 4f 66 66 73 65 74 2e 74 6f iewportOffset.to
0080: 70 20 2b 20 77 69 6e 64 6f 77 2e 73 63 72 6f 6c p + window.scrol
0090: 6c 59 3b 0a 20 20 6c 65 74 20 6c 65 66 74 20 3d lY;. let left =
00a0: 20 76 69 65 77 70 6f 72 74 4f 66 66 73 65 74 2e viewportOffset.
00b0: 6c 65 66 74 20 2b 20 77 69 6e 64 6f 77 2e 73 63 left + window.sc
00c0: 72 6f 6c 6c 58 3b 0a 20 20 72 65 74 75 72 6e 20 rollX;. return
00d0: 7b 74 6f 70 2c 6c 65 66 74 7d 3b 0a 7d 3b 0a 0a {top,left};.};..
00e0: 65 78 70 6f 72 74 73 2e 70 61 72 73 65 45 6c 65 exports.parseEle
00f0: 6d 65 6e 74 20 3d 20 28 70 61 72 65 6e 74 29 20 ment = (parent)
0100: 3d 3e 20 7b 0a 20 20 69 66 20 28 74 79 70 65 6f => {. if (typeo
0110: 66 20 70 61 72 65 6e 74 20 3d 3d 3d 20 27 73 74 f parent === 'st
0120: 72 69 6e 67 27 29 20 7b 0a 20 20 20 20 70 61 72 ring') {. par
0130: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 ent = document.g
0140: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 70 61 etElementById(pa
0150: 72 65 6e 74 2e 72 65 70 6c 61 63 65 28 27 23 27 rent.replace('#'
0160: 2c 27 27 29 29 3b 0a 20 20 7d 0a 0a 20 20 69 66 ,''));. }.. if
0170: 20 28 70 61 72 65 6e 74 20 69 6e 73 74 61 6e 63 (parent instanc
0180: 65 6f 66 20 48 54 4d 4c 45 6c 65 6d 65 6e 74 20 eof HTMLElement
0190: 7c 7c 20 70 61 72 65 6e 74 20 69 6e 73 74 61 6e || parent instan
01a0: 63 65 6f 66 20 53 56 47 45 6c 65 6d 65 6e 74 29 ceof SVGElement)
01b0: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 {. return par
01c0: 65 6e 74 3b 0a 20 20 7d 20 65 6c 73 65 20 7b 0a ent;. } else {.
01d0: 20 20 20 20 72 65 74 75 72 6e 20 27 4e 6f 20 76 return 'No v
01e0: 61 6c 69 64 20 70 61 72 65 6e 74 20 61 72 67 75 alid parent argu
01f0: 6d 65 6e 74 27 3b 0a 20 20 7d 0a 7d 3b 0a 0a 65 ment';. }.};..e
0200: 78 70 6f 72 74 73 2e 6c 6f 63 61 74 65 4d 6f 75 xports.locateMou
0210: 73 65 20 3d 20 28 65 2c 6f 66 66 73 65 74 29 20 se = (e,offset)
0220: 3d 3e 20 7b 0a 20 20 72 65 74 75 72 6e 20 7b 0a => {. return {.
0230: 20 20 20 20 78 3a 20 65 2e 70 61 67 65 58 20 2d x: e.pageX -
0240: 20 6f 66 66 73 65 74 2e 6c 65 66 74 2c 0a 20 20 offset.left,.
0250: 20 20 79 3a 20 65 2e 70 61 67 65 59 20 2d 20 6f y: e.pageY - o
0260: 66 66 73 65 74 2e 74 6f 70 0a 20 20 7d 3b 0a 7d ffset.top. };.}
0270: 3b 0a 0a 65 78 70 6f 72 74 73 2e 6c 6f 63 61 74 ;..exports.locat
0280: 65 54 6f 75 63 68 20 3d 20 28 65 2c 6f 66 66 73 eTouch = (e,offs
0290: 65 74 29 20 3d 3e 20 7b 0a 20 20 72 65 74 75 72 et) => {. retur
02a0: 6e 20 7b 0a 20 20 20 20 78 3a 20 65 2e 74 61 72 n {. x: e.tar
02b0: 67 65 74 54 6f 75 63 68 65 73 2e 6c 65 6e 67 74 getTouches.lengt
02c0: 68 20 3f 20 65 2e 74 61 72 67 65 74 54 6f 75 63 h ? e.targetTouc
02d0: 68 65 73 5b 30 5d 2e 70 61 67 65 58 20 2d 20 6f hes[0].pageX - o
02e0: 66 66 73 65 74 2e 6c 65 66 74 20 3a 20 66 61 6c ffset.left : fal
02f0: 73 65 2c 0a 20 20 20 20 79 3a 20 65 2e 74 61 72 se,. y: e.tar
0300: 67 65 74 54 6f 75 63 68 65 73 2e 6c 65 6e 67 74 getTouches.lengt
0310: 68 20 3f 20 65 2e 74 61 72 67 65 74 54 6f 75 63 h ? e.targetTouc
0320: 68 65 73 5b 30 5d 2e 70 61 67 65 59 20 2d 20 6f hes[0].pageY - o
0330: 66 66 73 65 74 2e 74 6f 70 20 3a 20 66 61 6c 73 ffset.top : fals
0340: 65 0a 20 20 7d 3b 0a 7d 3b 0a 0a 65 78 70 6f 72 e. };.};..expor
0350: 74 73 2e 53 6d 61 72 74 43 61 6e 76 61 73 20 3d ts.SmartCanvas =
0360: 20 66 75 6e 63 74 69 6f 6e 28 70 61 72 65 6e 74 function(parent
0370: 29 20 7b 0a 0a 20 20 74 68 69 73 2e 65 6c 65 6d ) {.. this.elem
0380: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 ent = document.c
0390: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 63 61 reateElement('ca
03a0: 6e 76 61 73 27 29 3b 0a 20 20 74 68 69 73 2e 63 nvas');. this.c
03b0: 6f 6e 74 65 78 74 20 3d 20 74 68 69 73 2e 65 6c ontext = this.el
03c0: 65 6d 65 6e 74 2e 67 65 74 43 6f 6e 74 65 78 74 ement.getContext
03d0: 28 27 32 64 27 29 3b 0a 20 20 70 61 72 65 6e 74 ('2d');. parent
03e0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 .appendChild(thi
03f0: 73 2e 65 6c 65 6d 65 6e 74 29 3b 0a 0a 20 20 74 s.element);.. t
0400: 68 69 73 2e 72 65 73 69 7a 65 20 3d 20 28 77 2c his.resize = (w,
0410: 68 29 20 3d 3e 20 7b 0a 20 20 20 20 74 68 69 73 h) => {. this
0420: 2e 65 6c 65 6d 65 6e 74 2e 77 69 64 74 68 20 3d .element.width =
0430: 20 77 2a 32 3b 0a 20 20 20 20 74 68 69 73 2e 65 w*2;. this.e
0440: 6c 65 6d 65 6e 74 2e 68 65 69 67 68 74 20 3d 20 lement.height =
0450: 68 2a 32 3b 0a 20 20 20 20 74 68 69 73 2e 65 6c h*2;. this.el
0460: 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 77 69 64 74 ement.style.widt
0470: 68 20 3d 20 77 2b 27 70 78 27 3b 0a 20 20 20 20 h = w+'px';.
0480: 74 68 69 73 2e 65 6c 65 6d 65 6e 74 2e 73 74 79 this.element.sty
0490: 6c 65 2e 68 65 69 67 68 74 20 3d 20 68 2b 27 70 le.height = h+'p
04a0: 78 27 3b 0a 20 20 7d 3b 0a 0a 7d 3b 0a x';. };..};.