UNPKG

55.8 kBPlain TextView Raw
1{"code":"function defineName$__(cls,name){\n\tObject.defineProperty(cls,\"name\",{value:name,configurable:true});\n};;\nfunction extend$__(target,ext){\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(ext);\n\tdelete descriptors.constructor;\n\tif(target.extend__ instanceof Function){\n\t\ttarget.extend__(descriptors,ext);\n\t} else {\n\t\t// @ts-ignore\n\t\tObject.defineProperties(target,descriptors);\n\t}\n\treturn target;\n};\nconst $capture$ = Symbol.for('#capture'), $step$ = Symbol.for('#step'), $cancel$ = Symbol.for('#cancel'), $reframe$ = Symbol.for('#reframe'), $__initor__$ = Symbol.for('#__initor__'), $__inited__$ = Symbol.for('#__inited__'), $__hooks__$ = Symbol.for('#__hooks__'), $mods$ = Symbol.for('#mods'), $dx$ = Symbol.for('#dx'), $dy$ = Symbol.for('#dy'), $context$ = Symbol.for('#context'), $locked$ = Symbol.for('#locked'), $teardown$ = Symbol.for('#teardown'), $x$ = Symbol.for('#x'), $y$ = Symbol.for('#y'), $pinTarget$ = Symbol.for('#pinTarget');\n\n/*body*/\n// imba$imbaPath=global\n\nimport {Event,Element} from '../dom/core';\nimport {listen,once,emit,unlisten} from '../utils';\n\nimport * as helpers from './helpers';\n\nexport function use_events_touch(){\n\t\n\tglobalThis.imba.uses_events_touch = true;\n\treturn true;\n};\n\nlet iosMoveIframeFix = null;\n\nclass Touch {\n\t\n\tconstructor(e,handler,el){\n\t\t\n\t\tthis.phase = 'init';\n\t\tthis.events = [];\n\t\tthis.originalEvent = e;\n\t\tthis.handler = handler;\n\t\tthis.target = this.currentTarget = el;\n\t\tthis[$mods$] = {};\n\t}\n\t\n\tset event(value){\n\t\t\n\t\tthis.events.push(value);\n\t}\n\t\n\tget ctrlKey(){\n\t\treturn this.originalEvent.ctrlKey;\n\t}\n\tget altKey(){\n\t\treturn this.originalEvent.altKey;\n\t}\n\tget shiftKey(){\n\t\treturn this.originalEvent.shiftKey;\n\t}\n\tget metaKey(){\n\t\treturn this.originalEvent.metaKey;\n\t}\n\tget isPrimary(){\n\t\treturn this.originalEvent.isPrimary;\n\t}\n\tget pointerType(){\n\t\treturn this.originalEvent.pointerType;\n\t}\n\t\n\tget start(){\n\t\t\n\t\treturn this.originalEvent;\n\t}\n\t\n\tget originalTarget(){\n\t\t\n\t\treturn this.originalEvent.target;\n\t}\n\t\n\tget event(){\n\t\t\n\t\treturn this.events[this.events.length - 1];\n\t}\n\t\n\tget elapsed(){\n\t\t\n\t\treturn this.event.timeStamp - this.events[0].timeStamp;\n\t}\n\t\n\tget type(){\n\t\treturn this.event.type;\n\t}\n\tget pointerId(){\n\t\treturn this.originalEvent.pointerId;\n\t}\n\tget pressure(){\n\t\treturn this.event.pressure;\n\t}\n\tget clientX(){\n\t\treturn this.event.clientX;\n\t}\n\tget clientY(){\n\t\treturn this.event.clientY;\n\t}\n\tget offsetX(){\n\t\treturn this.event.offsetX;\n\t}\n\tget offsetY(){\n\t\treturn this.event.offsetY;\n\t}\n\tget activeΦ(){\n\t\treturn this.phase != 'ended';\n\t}\n\tget endedΦ(){\n\t\treturn this.phase == 'ended';\n\t}\n\t\n\tget dx(){\n\t\t\n\t\treturn (this[$dx$] == undefined) ? (this.event.x - this.start.x) : this[$dx$];\n\t}\n\t\n\tget dy(){\n\t\t\n\t\treturn (this[$dy$] == undefined) ? (this.event.y - this.start.y) : this[$dy$];\n\t}\n\t\n\tstopImmediatePropagation(){\n\t\t\n\t\tthis.cancelBubble = true;\n\t\tthis.event.stopImmediatePropagation();\n\t\treturn this;\n\t}\n\t\n\tstopPropagation(){\n\t\t\n\t\tthis.cancelBubble = true;\n\t\tthis.event.stopPropagation();\n\t\treturn this;\n\t}\n\t\n\tpreventDefault(){\n\t\t\n\t\tthis.defaultPrevented = true;\n\t\treturn this.event.preventDefault();\n\t}\n\t\n\temit(name,...params){\n\t\treturn emit(this,name,params);\n\t}\n\ton(name,...params){\n\t\treturn listen(this,name,...params);\n\t}\n\tonce(name,...params){\n\t\treturn once(this,name,...params);\n\t}\n\tun(name,...params){\n\t\treturn unlisten(this,name,...params);\n\t}\n\t\n\tαflag(name,sel){\n\t\t\n\t\tconst {element: element} = this[$context$];\n\t\tconst ts = Date.now();\n\t\tlet el = (sel instanceof Element) ? sel : ((sel ? element.closest(sel) : element));\n\t\t\n\t\tif ((this[$step$].setup != true) ? ((this[$step$].setup = true,true)) : false) {\n\t\t\t\n\t\t\tel.flags.incr(name);\n\t\t\tonce(this,'end',function() {\n\t\t\t\t\n\t\t\t\treturn el.flags.decr(name);\n\t\t\t});\n\t\t};\n\t\t\n\t\treturn true;\n\t}\n\t\n\tαlock(){\n\t\t\n\t\tthis[$capture$]();\n\t\treturn true;\n\t}\n\t\n\t[$capture$](){\n\t\t\n\t\tif ((this[$locked$] != true) ? ((this[$locked$] = true,true)) : false) {\n\t\t\t\n\t\t\treturn this[$context$].element.setPointerCapture(this.pointerId);\n\t\t};\n\t}\n\t\n\tget [$step$](){\n\t\t\n\t\treturn this[$mods$][this[$context$].step] ||= {};\n\t}\n\t\n\t[$cancel$](){\n\t\t\n\t\treturn this[$teardown$]();\n\t}\n\t\n\tαmoved(a,b){\n\t\t\n\t\tlet o = this[$step$];\n\t\tconst {element: element,state: state,event: event} = this[$context$];\n\t\t\n\t\tif (!(o.setup)) {\n\t\t\t\n\t\t\tlet th = a || 4;\n\t\t\tif (typeof a == 'string' && a.match(/^(up|down|left|right|x|y)$/)) {\n\t\t\t\t\n\t\t\t\to.dir = a;\n\t\t\t\tth = b || 4;\n\t\t\t};\n\t\t\t\n\t\t\tif (typeof b == 'string' && b.match(/^(up|down|left|right|x|y)$/)) {\n\t\t\t\t\n\t\t\t\to.dir = b;\n\t\t\t};\n\t\t\t\n\t\t\to.setup = true;\n\t\t\tlet [tv,tu] = helpers.parseDimension(th);\n\t\t\to.threshold = tv;\n\t\t\to.sy = tv;\n\t\t\to.x0 = this.x;\n\t\t\to.y0 = this.y;\n\t\t\to.dir ||= 'dist';\n\t\t\to.x = o.left = o.right = o.y = o.up = o.down = o.dist = 0;\n\t\t\tif ((tu && tu != 'px')) {\n\t\t\t\t\n\t\t\t\tconsole.warn('only px threshold allowed in @touch.moved');\n\t\t\t};\n\t\t};\n\t\t\n\t\tif (o.active) {\n\t\t\t\n\t\t\treturn true;\n\t\t};\n\t\t\n\t\tif (o.cancelled) {\n\t\t\t\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\tlet th = o.threshold;\n\t\tlet dx = this.x - o.x0;\n\t\tlet dy = this.y - o.y0;\n\t\t\n\t\to.x = Math.max(o.x,Math.abs(dx));\n\t\to.y = Math.max(o.y,Math.abs(dy));\n\t\to.left = Math.max(o.left,-dx);\n\t\to.right = Math.max(o.right,dx);\n\t\to.up = Math.max(o.up,-dy);\n\t\to.down = Math.max(o.down,dy);\n\t\to.dist = Math.max(o.dist,Math.sqrt(dx * dx + dy * dy));\n\t\t\n\t\tlet val = o[o.dir];\n\t\t\n\t\tif (val > th && val >= o.x && val >= o.y) {\n\t\t\t\n\t\t\to.active = true;\n\t\t\tlet pinned = state.pinTarget;\n\t\t\telement.flags.incr('@move');\n\t\t\tif (pinned) { pinned.flags.incr('@move') };\n\t\t\tthis.preventDefault();\n\t\t\t\n\t\t\tonce(this,'end',function() {\n\t\t\t\t\n\t\t\t\tif (pinned) { pinned.flags.decr('@move') };\n\t\t\t\treturn element.flags.decr('@move');\n\t\t\t});\n\t\t\treturn true;\n\t\t} else if (o.x > th || o.y > th) {\n\t\t\t\n\t\t\to.cancelled = true;\n\t\t\t// #cancel!\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\treturn false;\n\t}\n\t\n\tαhold(time = 250){\n\t\tvar self = this;\n\t\t\n\t\tlet o = this[$step$];\n\t\tlet el = this[$context$].element;\n\t\t\n\t\tif (o.cancelled) { return false };\n\t\t\n\t\tif (o.setup && !(o.active)) {\n\t\t\t\n\t\t\tlet x = this.clientX;\n\t\t\tlet y = this.clientY;\n\t\t\t\n\t\t\tlet dx = x - o.x;\n\t\t\tlet dy = y - o.y;\n\t\t\tlet dr = Math.sqrt(dx * dx + dy * dy);\n\t\t\t// cancel\n\t\t\tif (dr > 5 && !(o.cancelled)) {\n\t\t\t\t\n\t\t\t\tclearTimeout(o.timeout);\n\t\t\t\to.cancelled = true;\n\t\t\t\t// #cancel!\n\t\t\t};\n\t\t};\n\t\t\n\t\tif ((o.setup != true) ? ((o.setup = true,true)) : false) {\n\t\t\t\n\t\t\to.active = false;\n\t\t\to.x = this.clientX;\n\t\t\to.y = this.clientY;\n\t\t\t\n\t\t\tlet resolve;\n\t\t\t\n\t\t\to.timeout = setTimeout(function() {\n\t\t\t\t\n\t\t\t\to.active = true;\n\t\t\t\tself.preventDefault();\n\t\t\t\tel.flags.incr(\"@hold\");\n\t\t\t\tif (resolve) { resolve(true) };\n\t\t\t\treturn resolve = null;\n\t\t\t},time);\n\t\t\t\n\t\t\tonce(this,'end',function() {\n\t\t\t\t\n\t\t\t\tif (o.active) {\n\t\t\t\t\t\n\t\t\t\t\tel.flags.decr(\"@hold\");\n\t\t\t\t};\n\t\t\t\tclearTimeout(o.timeout);\n\t\t\t\tif (resolve) { resolve(false) };\n\t\t\t\treturn resolve = null;\n\t\t\t});\n\t\t\t\n\t\t\treturn new Promise(function(_0) { return resolve = _0; });\n\t\t};\n\t\t\n\t\treturn o.active;\n\t}\n\t\n\tαsync(item,xalias = 'x',yalias = 'y'){\n\t\t\n\t\tlet o = this[$step$];\n\t\t\n\t\tif ((o.setup != true) ? ((o.setup = true,true)) : false) {\n\t\t\t\n\t\t\to.x = item[xalias] || 0;\n\t\t\to.y = item[yalias] || 0;\n\t\t\to.tx = this.x;\n\t\t\to.ty = this.y;\n\t\t} else {\n\t\t\t\n\t\t\tif (xalias) { item[xalias] = o.x + (this.x - o.tx) };\n\t\t\tif (yalias) { item[yalias] = o.y + (this.y - o.ty) };\n\t\t};\n\t\t\n\t\tthis[$context$].commit = true;\n\t\treturn true;\n\t}\n\t\n\tαapply(item,xalias = 'x',yalias = 'y'){\n\t\t\n\t\tif (xalias) { item[xalias] = this.x };\n\t\tif (yalias) { item[yalias] = this.y };\n\t\tthis[$context$].commit = true;\n\t\treturn true;\n\t}\n\t\n\tαcss(xalias = 'x',yalias = 'y'){\n\t\t\n\t\t\n\t\tlet o = this[$step$];\n\t\tif ((o.setup != true) ? ((o.setup = true,true)) : false) {\n\t\t\t\n\t\t\to.el = this[$context$].element;\n\t\t\to.x = o.el[$x$] || 0;\n\t\t\to.y = o.el[$y$] || 0;\n\t\t\to.tx = this.x;\n\t\t\to.ty = this.y;\n\t\t} else {\n\t\t\t\n\t\t\tlet x = o.el[$x$] = o.x + (this.x - o.tx);\n\t\t\tlet y = o.el[$y$] = o.y + (this.y - o.ty);\n\t\t\t\n\t\t\tif (xalias) { o.el.style.setProperty(\"--x\",x + 'px') };\n\t\t\tif (yalias) { o.el.style.setProperty(\"--y\",y + 'px') };\n\t\t};\n\t\treturn true;\n\t}\n\t\n\tαend(){\n\t\t\n\t\treturn this.phase == 'ended';\n\t}\n\t\n\tαshift(){\n\t\t\n\t\treturn !(!(this.shiftKey));\n\t}\n\t\n\tαalt(){\n\t\t\n\t\treturn !(!(this.altKey));\n\t}\n\t\n\tαctrl(){\n\t\t\n\t\treturn !(!(this.ctrlKey));\n\t}\n\t\n\tαmeta(){\n\t\t\n\t\treturn !(!(this.metaKey));\n\t}\n\t\n\tαprimary(){\n\t\t\n\t\treturn !(!(this.isPrimary)) && (this.pointerType != 'mouse' || this.originalEvent.button == 0);\n\t}\n\t\n\tαmouse(){\n\t\t\n\t\treturn this.pointerType == 'mouse';\n\t}\n\t\n\tαpen(){\n\t\t\n\t\treturn this.pointerType == 'pen';\n\t}\n\t\n\tαtouch(){\n\t\t\n\t\treturn this.pointerType == 'touch';\n\t}\n\t\n\tαpressure(threshold = 0.5){\n\t\t\n\t\treturn this.pressure >= threshold;\n\t}\n\t\n\tαlog(...params){\n\t\t\n\t\tconsole.info(...params);\n\t\treturn true;\n\t}\n\t\n\tαleft(){\n\t\treturn this.originalEvent.button == 0;\n\t}\n\t\n\tαmiddle(){\n\t\treturn this.originalEvent.button == 1;\n\t}\n\t\n\tαright(){\n\t\treturn this.originalEvent.button == 2;\n\t}\n\t\n\tαround(sx = 1,sy = sx){\n\t\t\n\t\tthis.x = helpers.round(this.x,sx);\n\t\tthis.y = helpers.round(this.y,sy);\n\t\treturn true;\n\t}\n\t\n\t[$reframe$](...params){\n\t\t\n\t\tlet o = this[$step$];\n\t\t\n\t\tif ((o.setup != true) ? ((o.setup = true,true)) : false) {\n\t\t\t\n\t\t\tlet el = this.target;\n\t\t\tlet len = params.length;\n\t\t\tlet box = params[0];\n\t\t\tlet min = 0;\n\t\t\tlet max = '100%';\n\t\t\tlet snap = 0;\n\t\t\tlet typ = typeof box;\n\t\t\t\n\t\t\tif (typ == 'number' || (typ == 'string' && (/^([-+]?\\d[\\d\\.]*)(%|\\w+)$/).test(box)) || (box instanceof Array)) {\n\t\t\t\t\n\t\t\t\tbox = null;\n\t\t\t} else if (typ == 'string') {\n\t\t\t\t\n\t\t\t\tif (box == 'this' || box == '') {\n\t\t\t\t\t\n\t\t\t\t\tbox = el;\n\t\t\t\t} else if (box == 'up') {\n\t\t\t\t\t\n\t\t\t\t\tbox = el.parentNode;\n\t\t\t\t} else if (box == 'op') {\n\t\t\t\t\t\n\t\t\t\t\tbox = el.offsetParent;\n\t\t\t\t} else {\n\t\t\t\t\t\n\t\t\t\t\tbox = el.closest(box) || el.querySelector(box);\n\t\t\t\t};\n\t\t\t};\n\t\t\t\n\t\t\tif (box == null) {\n\t\t\t\t\n\t\t\t\tlen++;\n\t\t\t\tparams.unshift(box = el);\n\t\t\t};\n\t\t\t\n\t\t\tif (len == 2) {\n\t\t\t\t\n\t\t\t\tsnap = params[1];\n\t\t\t} else if (len > 2) {\n\t\t\t\t\n\t\t\t\t[min,max,snap = 0] = params.slice(1);\n\t\t\t};\n\t\t\t\n\t\t\tlet rect = box.getBoundingClientRect();\n\t\t\tif (!((min instanceof Array))) { min = [min,min] };\n\t\t\tif (!((max instanceof Array))) { max = [max,max] };\n\t\t\tif (!((snap instanceof Array))) { snap = [snap,snap] };\n\t\t\t\n\t\t\to.rect = rect;\n\t\t\to.x = helpers.createScale(rect.left,rect.right,min[0],max[0],snap[0]);\n\t\t\to.y = helpers.createScale(rect.top,rect.bottom,min[1],max[1],snap[1]);\n\t\t\tthis.x0 = this.x = o.x(this.x,o.clamp);\n\t\t\tthis.y0 = this.y = o.y(this.y,o.clamp);\n\t\t} else {\n\t\t\t\n\t\t\tlet x = this.x = o.x(this.x,o.clamp);\n\t\t\tlet y = this.y = o.y(this.y,o.clamp);\n\t\t\tthis[$dx$] = x - this.x0;\n\t\t\tthis[$dy$] = y - this.y0;\n\t\t};\n\t\t\n\t\treturn true;\n\t}\n\t\n\tαfit(...params){\n\t\t\n\t\tthis[$step$].clamp = true;\n\t\treturn this[$reframe$](...params);\n\t}\n\t\n\tαreframe(...params){\n\t\t\n\t\treturn this[$reframe$](...params);\n\t}\n\t\n\t/**\n\t\n\t\tAllow pinning the touch to a certain point in an element, so that\n\t\tall future x,y values are relative to this pinned point.\n\t\tYou can include relative anchors for x and y\n\t\n\t\tMake x,y relative to the center of the parent:\n\t\t\t<box.target> <div.handle @touch.pin('.target',0.5,0.5)>\n\t\n\t\t(targetElement,anchorX?, anchorY?)\n\t\t\n\t*/\n\tαpin(...params){\n\t\t\n\t\tlet o = this[$step$];\n\t\t\n\t\t// TODO warn if pin comes after reframe\n\t\t\n\t\tif ((o.setup != true) ? ((o.setup = true,true)) : false) {\n\t\t\t\n\t\t\tlet box = helpers.toElement(params[0],this.target);\n\t\t\t\n\t\t\tif (!((box instanceof Element))) {\n\t\t\t\t\n\t\t\t\tparams.unshift(box = this.target);\n\t\t\t};\n\t\t\t\n\t\t\tlet ax = params[1] || 0;\n\t\t\tlet ay = params[2] ??= ax;\n\t\t\tlet rect = box.getBoundingClientRect();\n\t\t\t\n\t\t\to.x = this.clientX - (rect.left + rect.width * ax);\n\t\t\to.y = this.clientY - (rect.top + rect.height * ay);\n\t\t\t\n\t\t\tif (box) {\n\t\t\t\t\n\t\t\t\tthis[$pinTarget$] = box;\n\t\t\t\tbox.flags.incr('_touch_');\n\t\t\t\tonce(this,'end',function() { return box.flags.decr('_touch_'); });\n\t\t\t};\n\t\t\t// console.log 'pinning',o,box\n\t\t};\n\t\t\n\t\tthis.x -= o.x;\n\t\tthis.y -= o.y;\n\t\treturn true;\n\t}\n\tstatic {\n\t\tdefineName$__(this,'Touch');}\n};\n\nclass ΩElement {\n\t\n\ton$touch(mods,context,handler,o){\n\t\t\n\t\thandler.type = 'touch';\n\t\tthis.addEventListener('pointerdown',handler,{passive: false});\n\t\tif (helpers.navigator.iosΦ && globalThis.parent != globalThis) {\n\t\t\t\n\t\t\tif ((iosMoveIframeFix != true) ? ((iosMoveIframeFix = true,true)) : false) {\n\t\t\t\t\n\t\t\t\tglobalThis.parent.postMessage('setupTouchFix');\n\t\t\t};\n\t\t};\n\t\t\n\t\treturn handler;\n\t}\n\tstatic {\n\t\tdefineName$__(this,'Element');}\n};\nextend$__(Element.prototype,ΩElement.prototype);\n;\n\nif (false && globalThis.parent == globalThis && helpers.navigator.iosΦ) {\n\t\n\tlet fix = function(e) {\n\t\t\n\t\tif (e.data == 'setupTouchFix') {\n\t\t\t\n\t\t\tglobalThis.addEventListener('touchmove',function() { return false; },{passive: false});\n\t\t\treturn globalThis.removeEventListener('message',fix);\n\t\t};\n\t};\n\tglobalThis.addEventListener('message',fix);\n};\n\nEvent.touch$handle = function (){\n\t\n\tlet e = this.event;\n\tlet el = this.element;\n\tlet id = this.state.pointerId;\n\tlet m = this.modifiers;\n\tlet handler = this.handler;\n\tlet ios = helpers.navigator.iosΦ;\n\t\n\tthis.current = this.state;\n\t\n\tif (id != undefined) {\n\t\t\n\t\treturn id == e.pointerId;\n\t};\n\t\n\t// reject the touch before creation for certain modifiers\n\t// TODO should allow specifying pen OR mouse etc\n\t// FIXME these will not work with negated modifiers\n\tif (m.ctrl && !(e.ctrlKey)) { return };\n\tif (m.alt && !(e.altKey)) { return };\n\tif (m.meta && !(e.metaKey)) { return };\n\tif (m.shift && !(e.shiftKey)) { return };\n\tif (m.if && !(!(m.if[0])) == false) { return };\n\tif (m.self && e.target != el) { return };\n\tif (m.primary && !(e.isPrimary)) { return };\n\tif (m.pen && e.pointerType != 'pen') { return };\n\tif (m.mouse && e.pointerType != 'mouse') { return };\n\tif (m.touch && e.pointerType != 'touch') { return };\n\tif (m.sel && !(e.target.matches(String(m.sel[0])))) { return };\n\t\n\tlet t = this.state = handler.state = this.current = new Touch(e,handler,el);\n\tid = t.pointerId;\n\t\n\tlet canceller = function(e) {\n\t\t\n\t\te.preventDefault();\n\t\treturn false;\n\t};\n\t\n\tlet teardown = null;\n\tlet sym = Symbol();\n\t\n\tlet onclick = function(e) {\n\t\t\n\t\t// console.debug \"ONCLICK!\",e,e.pointerId,t.clientX,t.clientY,e.clientX,e.clientY\n\t\tlet tx = t.clientX;\n\t\tlet ty = t.clientY;\n\t\tlet ex = e.clientX;\n\t\tlet ey = e.clientY;\n\t\t\n\t\tif ((t[$locked$] || t.defaultPrevented) && ((e.pointerId == t.pointerId) || (tx == ex && ty == ey))) {\n\t\t\t\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t};\n\t\t\n\t\tif (onclick) {\n\t\t\t\n\t\t\tglobalThis.removeEventListener('click',onclick,{capture: true});\n\t\t\tonclick = null;\n\t\t};\n\t\treturn;\n\t};\n\t\n\tlet ontouch = function(e) {\n\t\t\n\t\tif (t.type == 'touchmove' && e.changedTouches[0].identifier != id) {\n\t\t\t\n\t\t\treturn;\n\t\t};\n\t\t// console.debug 'ontouch',e.type,t.defaultPrevented,e.changedTouches\n\t\tif (t.defaultPrevented || t[$locked$]) {\n\t\t\t\n\t\t\treturn e.preventDefault();\n\t\t};\n\t};\n\t\n\tlet listener = function(e) {\n\t\t\n\t\tlet typ = e.type;\n\t\tlet ph = t.phase;\n\t\t// console.debug \"listen\",e.type,e.pointerId\n\t\tif (e.pointerId && t.pointerId != e.pointerId) { return };\n\t\t\n\t\tif (e[sym]) {\n\t\t\t\n\t\t\treturn;\n\t\t};\n\t\t\n\t\te[sym] = true;\n\t\t\n\t\tlet end = typ == 'pointerup' || typ == 'pointercancel';\n\t\t\n\t\t// if the pressure is suddenly 0 it indicates there has been a\n\t\t// pointerup event not captured by the browser\n\t\tif (e.pressure == 0 && e.pointerType == 'mouse' && typ == 'pointermove' && t.originalEvent.pressure > 0) {\n\t\t\t\n\t\t\treturn teardown(e);\n\t\t};\n\t\t\n\t\tif (typ == 'pointercancel') {\n\t\t\t\n\t\t\tt.x = t.clientX;\n\t\t\tt.y = t.clientY;\n\t\t} else {\n\t\t\t\n\t\t\tt.x = e.clientX;\n\t\t\tt.y = e.clientY;\n\t\t};\n\t\t\n\t\tt.event = e;\n\t\t\n\t\tif (end) {\n\t\t\t\n\t\t\tt.phase = 'ended';\n\t\t};\n\t\t\n\t\ttry {\n\t\t\thandler.handleEvent(t);\n\t\t} catch (e) { };\n\t\t\n\t\tif (ph == 'init' && !(end)) {\n\t\t\t\n\t\t\tt.phase = 'active';\n\t\t};\n\t\t\n\t\tif (end && teardown) {\n\t\t\t\n\t\t\treturn teardown(e);\n\t\t};\n\t};\n\t\n\tlet disposed = false;\n\t\n\tteardown = function(e) {\n\t\t\n\t\tif (disposed) { return };\n\t\tdisposed = true;\n\t\tel.flags.decr('_touch_');\n\t\t\n\t\tif (t.phase != 'ended') {\n\t\t\t\n\t\t\tt.phase = 'ended';\n\t\t\tt.x = t.clientX;\n\t\t\tt.y = t.clientY;\n\t\t\thandler.handleEvent(t);\n\t\t};\n\t\t\n\t\tt.emit('end');\n\t\t\n\t\tif (!(m.passive)) {\n\t\t\t\n\t\t\tif ((--handler.prevents) == 0) {\n\t\t\t\t\n\t\t\t\tel.style.removeProperty('touch-action');\n\t\t\t};\n\t\t};\n\t\t\n\t\thandler.state = {};\n\t\t\n\t\tglobalThis.removeEventListener('pointermove',listener,{passive: !(!(m.passive))});\n\t\tglobalThis.removeEventListener('pointerup',listener);\n\t\tglobalThis.removeEventListener('pointercancel',listener);\n\t\t\n\t\tsetTimeout(function() {\n\t\t\t\n\t\t\tif (onclick) {\n\t\t\t\t\n\t\t\t\tglobalThis.removeEventListener('click',onclick,{capture: true});\n\t\t\t\tonclick = null;\n\t\t\t};\n\t\t\t\n\t\t\tif (ios && ontouch) {\n\t\t\t\t\n\t\t\t\tglobalThis.removeEventListener('touchend',ontouch);\n\t\t\t\tglobalThis.removeEventListener('touchmove',ontouch,{passive: false});\n\t\t\t\treturn ontouch = null;\n\t\t\t};\n\t\t},100);\n\t\t\n\t\tif (!(m.passive)) {\n\t\t\t\n\t\t\treturn globalThis.document.removeEventListener('selectstart',canceller,{capture: true});\n\t\t};\n\t};\n\t\n\tt[$teardown$] = teardown;\n\t\n\tif (!(m.passive)) {\n\t\t\n\t\thandler.prevents ||= 0;\n\t\thandler.prevents++;\n\t\tel.style.setProperty('touch-action','none');\n\t\tel.offsetWidth;\n\t};\n\t\n\tel.flags.incr('_touch_');\n\tglobalThis.addEventListener('pointermove',listener,{passive: !(!(m.passive))});\n\tglobalThis.addEventListener('pointerup',listener);\n\tglobalThis.addEventListener('pointercancel',listener);\n\tglobalThis.addEventListener('click',onclick,{capture: true});\n\t\n\tif (ios && !(m.passive)) {\n\t\t\n\t\tglobalThis.addEventListener('touchend',ontouch);\n\t\tglobalThis.addEventListener('touchmove',ontouch,{passive: false});\n\t};\n\t\n\tif (!(m.passive)) {\n\t\t\n\t\tglobalThis.document.addEventListener('selectstart',canceller,{capture: true});\n\t};\n\t\n\tlistener(e);\n\treturn false;\n};\n","map":{"version":3,"file":"touch.js","sourceRoot":"","sources":["/Users/abdellah/workspace/scrimba/imba/packages/imba/src/imba/events/touch.imba"],"sourcesContent":["# imba$imbaPath=global\n\nimport {Event,Element} from '../dom/core'\nimport {listen,once,emit,unlisten} from '../utils'\n\nimport * as helpers from './helpers'\n\nexport def use_events_touch\n\tglobal.imba.uses_events_touch = yes\n\tyes\n\nlet iosMoveIframeFix = null\n\nclass Touch\n\tdef constructor e,handler,el\n\t\tphase = 'init'\n\t\tevents = []\n\t\toriginalEvent = e\n\t\thandler = handler\n\t\ttarget = currentTarget = el\n\t\t#mods = {}\n\n\tset event value\n\t\tevents.push(value)\n\n\tget ctrlKey do originalEvent.ctrlKey\n\tget altKey do originalEvent.altKey\n\tget shiftKey do originalEvent.shiftKey\n\tget metaKey do originalEvent.metaKey\n\tget isPrimary do originalEvent.isPrimary\n\tget pointerType do originalEvent.pointerType\n\n\tget start\n\t\toriginalEvent\n\n\tget originalTarget\n\t\toriginalEvent.target\n\n\tget event\n\t\tevents[events.length - 1]\n\n\tget elapsed\n\t\tevent.timeStamp - events[0].timeStamp\n\n\tget type do event.type\n\tget pointerId do originalEvent.pointerId\n\tget pressure do event.pressure\n\tget clientX do event.clientX\n\tget clientY do event.clientY\n\tget offsetX do event.offsetX\n\tget offsetY do event.offsetY\n\tget active? do phase != 'ended'\n\tget ended? do phase == 'ended'\n\n\tget dx\n\t\t#dx == undefined ? event.x - start.x : #dx\n\n\tget dy\n\t\t#dy == undefined ? event.y - start.y : #dy\n\n\tdef stopImmediatePropagation\n\t\tcancelBubble = yes\n\t\tevent.stopImmediatePropagation!\n\t\tself\n\n\tdef stopPropagation\n\t\tcancelBubble = yes\n\t\tevent.stopPropagation!\n\t\tself\n\n\tdef preventDefault\n\t\tdefaultPrevented = yes\n\t\tevent.preventDefault!\n\n\tdef emit name, ...params do emit(self,name,params)\n\tdef on name, ...params do listen(self,name,...params)\n\tdef once name, ...params do once(self,name,...params)\n\tdef un name, ...params do unlisten(self,name,...params)\n\n\tdef @flag name, sel\n\t\tconst {element} = #context\n\t\tconst ts = Date.now!\n\t\tlet el = sel isa Element ? sel : (sel ? element.closest(sel) : element)\n\n\t\tif #step.setup =? yes\n\t\t\tel.flags.incr(name)\n\t\t\tonce(self,'end') do\n\t\t\t\tel.flags.decr(name)\n\n\t\treturn yes\n\n\tdef @lock\n\t\t#capture!\n\t\tyes\n\n\tdef #capture\n\t\tif #locked =? yes\n\t\t\t#context.element.setPointerCapture(pointerId)\n\n\tget #step\n\t\t#mods[#context.step] ||= {}\n\n\tdef #cancel\n\t\t#teardown!\n\n\tdef @moved a,b\n\t\tlet o = #step\n\t\tconst {element,state,event} = #context\n\n\t\tunless o.setup\n\t\t\tlet th = a or 4\n\t\t\tif typeof a == 'string' and a.match(/^(up|down|left|right|x|y)$/)\n\t\t\t\to.dir = a\n\t\t\t\tth = b or 4\n\n\t\t\tif typeof b == 'string' and b.match(/^(up|down|left|right|x|y)$/)\n\t\t\t\to.dir = b\n\n\t\t\to.setup = yes\n\t\t\tlet [tv,tu] = helpers.parseDimension(th)\n\t\t\to.threshold = tv\n\t\t\to.sy = tv\n\t\t\to.x0 = x\n\t\t\to.y0 = y\n\t\t\to.dir ||= 'dist'\n\t\t\to.x = o.left = o.right = o.y = o.up = o.down = o.dist = 0\n\t\t\tif (tu and tu != 'px')\n\t\t\t\tconsole.warn 'only px threshold allowed in @touch.moved'\n\n\t\tif o.active\n\t\t\treturn yes\n\n\t\tif o.cancelled\n\t\t\treturn no\n\n\t\tlet th = o.threshold\n\t\tlet dx = x - o.x0\n\t\tlet dy = y - o.y0\n\n\t\to.x = Math.max(o.x,Math.abs(dx))\n\t\to.y = Math.max(o.y,Math.abs(dy))\n\t\to.left = Math.max(o.left,-dx)\n\t\to.right = Math.max(o.right,dx)\n\t\to.up = Math.max(o.up,-dy)\n\t\to.down = Math.max(o.down,dy)\n\t\to.dist = Math.max(o.dist,Math.sqrt(dx*dx + dy*dy))\n\n\t\tlet val = o[o.dir]\n\n\t\tif val > th and val >= o.x and val >= o.y\n\t\t\to.active = yes\n\t\t\tlet pinned = state.pinTarget\n\t\t\telement.flags.incr('@move')\n\t\t\tpinned.flags.incr('@move') if pinned\n\t\t\tpreventDefault!\n\n\t\t\tonce(self,'end') do\n\t\t\t\tpinned.flags.decr('@move') if pinned\n\t\t\t\telement.flags.decr('@move')\n\t\t\treturn true\n\n\t\telif o.x > th or o.y > th\n\t\t\to.cancelled = yes\n\t\t\t# #cancel!\n\t\t\treturn no\n\n\t\treturn no\n\n\tdef @hold time = 250\n\t\tlet o = #step\n\t\tlet el = #context.element\n\n\t\treturn no if o.cancelled\n\n\t\tif o.setup and !o.active\n\t\t\tlet x = clientX\n\t\t\tlet y = clientY\n\n\t\t\tlet dx = x - o.x\n\t\t\tlet dy = y - o.y\n\t\t\tlet dr = Math.sqrt(dx*dx + dy*dy)\n\t\t\t# cancel\n\t\t\tif dr > 5 and !o.cancelled\n\t\t\t\tclearTimeout(o.timeout)\n\t\t\t\to.cancelled = yes\n\t\t\t\t# #cancel!\n\n\t\tif o.setup =? yes\n\t\t\to.active = no\n\t\t\to.x = clientX\n\t\t\to.y = clientY\n\n\t\t\tlet resolve\n\n\t\t\to.timeout = setTimeout(&,time) do\n\t\t\t\to.active = yes\n\t\t\t\tpreventDefault!\n\t\t\t\tel.flags.incr(\"@hold\")\n\t\t\t\tresolve(yes) if resolve\n\t\t\t\tresolve = null\n\n\t\t\tonce(self,'end') do\n\t\t\t\tif o.active\n\t\t\t\t\tel.flags.decr(\"@hold\")\n\t\t\t\tclearTimeout(o.timeout)\n\t\t\t\tresolve(no) if resolve\n\t\t\t\tresolve = null\n\n\t\t\treturn new Promise do resolve = $1\n\n\t\treturn o.active\n\n\tdef @sync item,xalias='x',yalias='y'\n\t\tlet o = #step\n\n\t\tif o.setup =? yes\n\t\t\to.x = item[xalias] or 0\n\t\t\to.y = item[yalias] or 0\n\t\t\to.tx = x\n\t\t\to.ty = y\n\t\telse\n\t\t\titem[xalias] = o.x + (x - o.tx) if xalias\n\t\t\titem[yalias] = o.y + (y - o.ty) if yalias\n\n\t\t#context.commit = yes\n\t\treturn yes\n\n\tdef @apply item,xalias='x',yalias='y'\n\t\titem[xalias] = x if xalias\n\t\titem[yalias] = y if yalias\n\t\t#context.commit = yes\n\t\treturn yes\n\n\tdef @css xalias='x',yalias='y'\n\n\t\tlet o = #step\n\t\tif o.setup =? yes\n\t\t\to.el = #context.element\n\t\t\to.x = o.el.#x or 0\n\t\t\to.y = o.el.#y or 0\n\t\t\to.tx = x\n\t\t\to.ty = y\n\t\telse\n\t\t\tlet x = o.el.#x = o.x + (x - o.tx)\n\t\t\tlet y = o.el.#y = o.y + (y - o.ty)\n\n\t\t\to.el.style.setProperty(\"--x\",x + 'px') if xalias\n\t\t\to.el.style.setProperty(\"--y\",y + 'px') if yalias\t\t\t\n\t\treturn yes\n\n\tdef @end\n\t\treturn phase == 'ended'\n\n\tdef @shift\n\t\treturn !!shiftKey\n\n\tdef @alt\n\t\treturn !!altKey\n\n\tdef @ctrl\n\t\treturn !!ctrlKey\n\n\tdef @meta\n\t\treturn !!metaKey\n\n\tdef @primary\n\t\treturn !!isPrimary and (pointerType != 'mouse' or originalEvent.button == 0)\n\n\tdef @mouse\n\t\treturn pointerType == 'mouse'\n\n\tdef @pen\n\t\treturn pointerType == 'pen'\n\n\tdef @touch\n\t\treturn pointerType == 'touch'\n\n\tdef @pressure threshold = 0.5\n\t\treturn pressure >= threshold\n\n\tdef @log ...params\n\t\tconsole.info(...params)\n\t\treturn true\n\n\tdef @left do originalEvent.button == 0\n\n\tdef @middle do originalEvent.button == 1\n\n\tdef @right do originalEvent.button == 2\n\n\tdef @round sx=1,sy=sx\n\t\tx = helpers.round(x,sx)\n\t\ty = helpers.round(y,sy)\n\t\treturn yes\n\n\tdef #reframe ...params\n\t\tlet o = #step\n\n\t\tif o.setup =? yes\n\t\t\tlet el = target\n\t\t\tlet len = params.length\n\t\t\tlet box = params[0]\n\t\t\tlet min = 0\n\t\t\tlet max = 100%\n\t\t\tlet snap = 0\n\t\t\tlet typ = typeof box\n\n\t\t\tif typ == 'number' or (typ == 'string' and (/^([-+]?\\d[\\d\\.]*)(%|\\w+)$/).test(box)) or box isa Array\n\t\t\t\tbox = null\n\n\t\t\telif typ == 'string'\n\t\t\t\tif box == 'this' or box == ''\n\t\t\t\t\tbox = el\n\t\t\t\telif box == 'up'\n\t\t\t\t\tbox = el.parentNode\n\t\t\t\telif box == 'op'\n\t\t\t\t\tbox = el.offsetParent\n\t\t\t\telse\n\t\t\t\t\tbox = el.closest(box) or el.querySelector(box)\n\n\t\t\tif box == null\n\t\t\t\tlen++\n\t\t\t\tparams.unshift(box = el)\n\n\t\t\tif len == 2\n\t\t\t\tsnap = params[1]\n\t\t\telif len > 2\n\t\t\t\t[min,max,snap=0] = params.slice(1)\n\n\t\t\tlet rect = box.getBoundingClientRect!\n\t\t\tmin = [min,min] unless min isa Array\n\t\t\tmax = [max,max] unless max isa Array\n\t\t\tsnap = [snap,snap] unless snap isa Array\n\n\t\t\to.rect = rect\n\t\t\to.x = helpers.createScale(rect.left,rect.right,min[0],max[0],snap[0])\n\t\t\to.y = helpers.createScale(rect.top,rect.bottom,min[1],max[1],snap[1])\n\t\t\tx0 = x = o.x(x,o.clamp)\n\t\t\ty0 = y = o.y(y,o.clamp)\n\t\telse\n\t\t\tlet x = x = o.x(x,o.clamp)\n\t\t\tlet y = y = o.y(y,o.clamp)\n\t\t\t#dx = x - x0\n\t\t\t#dy = y - y0\n\n\t\treturn yes\n\n\tdef @fit ...params\n\t\t#step.clamp = yes\n\t\t#reframe(...params)\n\n\tdef @reframe ...params\n\t\t#reframe(...params)\n\n\t###\n\tAllow pinning the touch to a certain point in an element, so that\n\tall future x,y values are relative to this pinned point.\n\tYou can include relative anchors for x and y\n\n\tMake x,y relative to the center of the parent:\n\t\t<box.target> <div.handle @touch.pin('.target',0.5,0.5)>\n\n\t(targetElement,anchorX?, anchorY?)\n\t###\n\tdef @pin ...params\n\t\tlet o = #step\n\n\t\t# TODO warn if pin comes after reframe\n\n\t\tif o.setup =? yes\n\t\t\tlet box = helpers.toElement(params[0],target)\n\n\t\t\tunless box isa Element\n\t\t\t\tparams.unshift(box = target)\n\n\t\t\tlet ax = params[1] or 0\n\t\t\tlet ay = params[2] ??= ax\n\t\t\tlet rect = box.getBoundingClientRect!\n\n\t\t\to.x = clientX - (rect.left + rect.width * ax)\n\t\t\to.y = clientY - (rect.top + rect.height * ay)\n\n\t\t\tif box\n\t\t\t\t#pinTarget = box\n\t\t\t\tbox.flags.incr('_touch_')\n\t\t\t\tonce(self,'end') do box.flags.decr('_touch_')\n\t\t\t# console.log 'pinning',o,box\n\n\t\tx -= o.x\n\t\ty -= o.y\n\t\treturn yes\n\nextend class Element\n\tdef on$touch(mods,context,handler,o)\n\t\thandler.type = 'touch'\n\t\tself.addEventListener('pointerdown',handler,{passive: false})\n\t\tif helpers.navigator.ios? and global.parent != global\n\t\t\tif iosMoveIframeFix =? true\n\t\t\t\tglobal.parent.postMessage('setupTouchFix')\n\n\t\treturn handler\n\nif $web$ and global.parent == global and helpers.navigator.ios?\n\tlet fix = do(e)\n\t\tif e.data == 'setupTouchFix'\n\t\t\tglobal.addEventListener('touchmove',&,{passive: false}) do false\n\t\t\tglobal.removeEventListener('message',fix)\n\tglobal.addEventListener('message',fix)\n\ndef Event.touch$handle\n\tlet e = event\n\tlet el = element\n\tlet id = state.pointerId\n\tlet m = modifiers\n\tlet handler = self.handler\n\tlet ios = helpers.navigator.ios?\n\n\tcurrent = state\n\n\tif id != undefined\n\t\treturn id == e.pointerId\n\n\t# reject the touch before creation for certain modifiers\n\t# TODO should allow specifying pen OR mouse etc\n\t# FIXME these will not work with negated modifiers\n\treturn if m.ctrl and !e.ctrlKey\n\treturn if m.alt and !e.altKey\n\treturn if m.meta and !e.metaKey\n\treturn if m.shift and !e.shiftKey\n\treturn if m.if and !!m.if[0] == false\n\treturn if m.self and e.target != el\n\treturn if m.primary and !e.isPrimary\n\treturn if m.pen and e.pointerType != 'pen'\n\treturn if m.mouse and e.pointerType != 'mouse'\n\treturn if m.touch and e.pointerType != 'touch'\n\treturn if m.sel and !e.target.matches(String(m.sel[0]))\n\n\tlet t = state = handler.state = current = new Touch(e,handler,el)\n\tid = t.pointerId\n\n\tlet canceller = do(e)\n\t\te.preventDefault!\n\t\treturn false\n\n\tlet teardown = null\n\tlet sym = Symbol!\n\n\tlet onclick = do(e)\n\t\t# console.debug \"ONCLICK!\",e,e.pointerId,t.clientX,t.clientY,e.clientX,e.clientY\n\t\tlet tx = t.clientX\n\t\tlet ty = t.clientY\n\t\tlet ex = e.clientX\n\t\tlet ey = e.clientY\n\n\t\tif (t.#locked or t.defaultPrevented) and ((e.pointerId == t.pointerId) or (tx == ex and ty == ey))\n\t\t\te.preventDefault!\n\t\t\te.stopPropagation!\n\n\t\tif onclick\n\t\t\tglobal.removeEventListener('click',onclick,capture:true)\n\t\t\tonclick = null\n\t\treturn\n\n\tlet ontouch = do(e)\n\t\tif t.type == 'touchmove' and e.changedTouches[0].identifier != id\n\t\t\treturn \t\n\t\t# console.debug 'ontouch',e.type,t.defaultPrevented,e.changedTouches\n\t\tif t.defaultPrevented or t.#locked\n\t\t\te.preventDefault!\n\n\tlet listener = do(e)\n\t\tlet typ = e.type\n\t\tlet ph = t.phase\n\t\t# console.debug \"listen\",e.type,e.pointerId\n\t\treturn if e.pointerId and t.pointerId != e.pointerId\n\n\t\tif e[sym]\n\t\t\treturn\n\n\t\te[sym] = yes\n\n\t\tlet end = typ == 'pointerup' or typ == 'pointercancel'\n\n\t\t# if the pressure is suddenly 0 it indicates there has been a\n\t\t# pointerup event not captured by the browser\n\t\tif e.pressure == 0 and e.pointerType == 'mouse' and typ == 'pointermove' and t.originalEvent.pressure > 0\n\t\t\treturn teardown(e)\n\n\t\tif typ == 'pointercancel'\n\t\t\tt.x = t.clientX\n\t\t\tt.y = t.clientY\n\t\telse\n\t\t\tt.x = e.clientX\n\t\t\tt.y = e.clientY\n\n\t\tt.event = e\n\n\t\tif end\n\t\t\tt.phase = 'ended'\n\n\t\ttry handler.handleEvent(t)\n\n\t\tif ph == 'init' and !end\n\t\t\tt.phase = 'active'\n\n\t\tif end and teardown\n\t\t\tteardown(e)\n\n\tlet disposed = no\n\n\tteardown = do(e)\n\t\treturn if disposed\n\t\tdisposed = yes\n\t\tel.flags.decr('_touch_')\n\n\t\tif t.phase != 'ended'\n\t\t\tt.phase = 'ended'\n\t\t\tt.x = t.clientX\n\t\t\tt.y = t.clientY\n\t\t\thandler.handleEvent(t)\n\n\t\tt.emit('end')\n\n\t\tunless m.passive\n\t\t\tif (--handler.prevents) == 0\n\t\t\t\tel.style.removeProperty('touch-action')\n\n\t\thandler.state = {}\n\n\t\tglobal.removeEventListener('pointermove',listener,passive:!!m.passive)\n\t\tglobal.removeEventListener('pointerup',listener)\n\t\tglobal.removeEventListener('pointercancel',listener)\n\n\t\tsetTimeout(&,100) do\n\t\t\tif onclick\n\t\t\t\tglobal.removeEventListener('click',onclick,capture:true)\n\t\t\t\tonclick = null\n\n\t\t\tif ios and ontouch\n\t\t\t\tglobal.removeEventListener('touchend',ontouch)\n\t\t\t\tglobal.removeEventListener('touchmove',ontouch,{passive: false})\n\t\t\t\tontouch = null\n\n\t\tif !m.passive\n\t\t\tglobal.document.removeEventListener('selectstart',canceller,capture:true)\n\n\tt.#teardown = teardown\n\n\tif !m.passive\n\t\thandler.prevents ||= 0\n\t\thandler.prevents++\n\t\tel.style.setProperty('touch-action','none')\n\t\tel.offsetWidth\n\n\tel.flags.incr('_touch_')\n\tglobal.addEventListener('pointermove',listener,passive:!!m.passive)\n\tglobal.addEventListener('pointerup',listener)\n\tglobal.addEventListener('pointercancel',listener)\n\tglobal.addEventListener('click',onclick,capture:true)\n\n\tif ios and !m.passive\n\t\tglobal.addEventListener('touchend',ontouch)\n\t\tglobal.addEventListener('touchmove',ontouch,{passive: false})\n\n\tif !m.passive\n\t\tglobal.document.addEventListener('selectstart',canceller,capture:true)\n\n\tlistener(e)\n\treturn false"],"names":[],"mappings":"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"},"dependencies":[],"meta":{"vite":{"lang":"js"}}}
\No newline at end of file