diff --git a/apps/tutorial/application.js b/apps/tutorial/application.js
index fe0771f70..38e852b2c 100644
--- a/apps/tutorial/application.js
+++ b/apps/tutorial/application.js
@@ -1456,7 +1456,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
u2(Ot, "X"), Object.defineProperty(Dt, "__esModule", { value: true }), Dt.default = void 0, Ot.prefixedPropREs = { webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/, moz: /(Pressure)$/ };
var Cr = Ot;
Dt.default = Cr;
- var K = {};
+ var J = {};
function xt(n) {
return n instanceof S.default.Event || n instanceof S.default.Touch;
}
@@ -1494,39 +1494,39 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return o2;
}
__name(ur, "ur");
- u2(ur, "q"), Object.defineProperty(K, "__esModule", { value: true }), K.copyCoords = function(n, o2) {
+ u2(ur, "q"), Object.defineProperty(J, "__esModule", { value: true }), J.copyCoords = function(n, o2) {
n.page = n.page || {}, n.page.x = o2.page.x, n.page.y = o2.page.y, n.client = n.client || {}, n.client.x = o2.client.x, n.client.y = o2.client.y, n.timeStamp = o2.timeStamp;
- }, K.setCoordDeltas = function(n, o2, a) {
+ }, J.setCoordDeltas = function(n, o2, a) {
n.page.x = a.page.x - o2.page.x, n.page.y = a.page.y - o2.page.y, n.client.x = a.client.x - o2.client.x, n.client.y = a.client.y - o2.client.y, n.timeStamp = a.timeStamp - o2.timeStamp;
- }, K.setCoordVelocity = function(n, o2) {
+ }, J.setCoordVelocity = function(n, o2) {
var a = Math.max(o2.timeStamp / 1e3, 1e-3);
n.page.x = o2.page.x / a, n.page.y = o2.page.y / a, n.client.x = o2.client.x / a, n.client.y = o2.client.y / a, n.timeStamp = a;
- }, K.setZeroCoords = function(n) {
+ }, J.setZeroCoords = function(n) {
n.page.x = 0, n.page.y = 0, n.client.x = 0, n.client.y = 0;
- }, K.isNativePointer = xt, K.getXY = wt, K.getPageXY = _r, K.getClientXY = $t, K.getPointerId = function(n) {
+ }, J.isNativePointer = xt, J.getXY = wt, J.getPageXY = _r, J.getClientXY = $t, J.getPointerId = function(n) {
return c2.default.number(n.pointerId) ? n.pointerId : n.identifier;
- }, K.setCoords = function(n, o2, a) {
+ }, J.setCoords = function(n, o2, a) {
var s = o2.length > 1 ? ur(o2) : o2[0];
_r(s, n.page), $t(s, n.client), n.timeStamp = a;
- }, K.getTouchPair = lr, K.pointerAverage = ur, K.touchBBox = function(n) {
+ }, J.getTouchPair = lr, J.pointerAverage = ur, J.touchBBox = function(n) {
if (!n.length)
return null;
var o2 = lr(n), a = Math.min(o2[0].pageX, o2[1].pageX), s = Math.min(o2[0].pageY, o2[1].pageY), p2 = Math.max(o2[0].pageX, o2[1].pageX), f2 = Math.max(o2[0].pageY, o2[1].pageY);
return { x: a, y: s, left: a, top: s, right: p2, bottom: f2, width: p2 - a, height: f2 - s };
- }, K.touchDistance = function(n, o2) {
+ }, J.touchDistance = function(n, o2) {
var a = o2 + "X", s = o2 + "Y", p2 = lr(n), f2 = p2[0][a] - p2[1][a], m2 = p2[0][s] - p2[1][s];
return (0, et.default)(f2, m2);
- }, K.touchAngle = function(n, o2) {
+ }, J.touchAngle = function(n, o2) {
var a = o2 + "X", s = o2 + "Y", p2 = lr(n), f2 = p2[1][a] - p2[0][a], m2 = p2[1][s] - p2[0][s];
return 180 * Math.atan2(m2, f2) / Math.PI;
- }, K.getPointerType = function(n) {
+ }, J.getPointerType = function(n) {
return c2.default.string(n.pointerType) ? n.pointerType : c2.default.number(n.pointerType) ? [void 0, void 0, "touch", "pen", "mouse"][n.pointerType] : /touch/.test(n.type || "") || n instanceof S.default.Touch ? "touch" : "mouse";
- }, K.getEventTargets = function(n) {
+ }, J.getEventTargets = function(n) {
var o2 = c2.default.func(n.composedPath) ? n.composedPath() : n.path;
return [z2.getActualElement(o2 ? o2[0] : n.target), z2.getActualElement(n.currentTarget)];
- }, K.newCoords = function() {
+ }, J.newCoords = function() {
return { page: { x: 0, y: 0 }, client: { x: 0, y: 0 }, timeStamp: 0 };
- }, K.coordsToEvent = function(n) {
+ }, J.coordsToEvent = function(n) {
return { coords: n, get page() {
return this.coords.page;
}, get client() {
@@ -1553,7 +1553,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return this.coords.buttons;
}, preventDefault: function() {
} };
- }, Object.defineProperty(K, "pointerExtend", { enumerable: true, get: function() {
+ }, Object.defineProperty(J, "pointerExtend", { enumerable: true, get: function() {
return Dt.default;
} });
var Rt = {};
@@ -1808,7 +1808,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return !!C.options.drop.checker && C.options.drop.checker(N2, G2, ee, C, Z, D2, H);
var se = C.options.drop.overlap;
if (se === "pointer") {
- var pe = (0, Ge.default)(D2, H, "drag"), we = K.getPageXY(N2);
+ var pe = (0, Ge.default)(D2, H, "drag"), we = J.getPageXY(N2);
we.x += pe.x, we.y += pe.y;
var qe = we.x > F2.left && we.x < F2.right, be = we.y > F2.top && we.y < F2.bottom;
ee = qe && be;
@@ -1856,12 +1856,12 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return x.pointer;
}), f2 = s === "start", m2 = s === "end", h2 = o2.interactable.options.deltaSource;
if (a.touches = [p2[0], p2[1]], f2)
- a.distance = K.touchDistance(p2, h2), a.box = K.touchBBox(p2), a.scale = 1, a.ds = 0, a.angle = K.touchAngle(p2, h2), a.da = 0, o2.gesture.startDistance = a.distance, o2.gesture.startAngle = a.angle;
+ a.distance = J.touchDistance(p2, h2), a.box = J.touchBBox(p2), a.scale = 1, a.ds = 0, a.angle = J.touchAngle(p2, h2), a.da = 0, o2.gesture.startDistance = a.distance, o2.gesture.startAngle = a.angle;
else if (m2) {
var g = o2.prevEvent;
a.distance = g.distance, a.box = g.box, a.scale = g.scale, a.ds = 0, a.angle = g.angle, a.da = 0;
} else
- a.distance = K.touchDistance(p2, h2), a.box = K.touchBBox(p2), a.scale = a.distance / o2.gesture.startDistance, a.angle = K.touchAngle(p2, h2), a.ds = a.scale - o2.gesture.scale, a.da = a.angle - o2.gesture.angle;
+ a.distance = J.touchDistance(p2, h2), a.box = J.touchBBox(p2), a.scale = a.distance / o2.gesture.startDistance, a.angle = J.touchAngle(p2, h2), a.ds = a.scale - o2.gesture.scale, a.da = a.angle - o2.gesture.angle;
o2.gesture.distance = a.distance, o2.gesture.angle = a.angle, c2.default.number(a.scale) && a.scale !== 1 / 0 && !isNaN(a.scale) && (o2.gesture.scale = a.scale);
}
}
@@ -1999,7 +1999,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
Pr.default = Vr;
var kt = {};
Object.defineProperty(kt, "__esModule", { value: true }), kt.default = void 0;
- var Nt, Ht, Sl = 0, Kp = { request: function(n) {
+ var Nt, Ht, Sl = 0, Jp = { request: function(n) {
return Nt(n);
}, cancel: function(n) {
return Ht(n);
@@ -2018,7 +2018,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return clearTimeout(p2);
}, "It"));
} };
- kt.default = Kp;
+ kt.default = Jp;
var Xr = {};
Object.defineProperty(Xr, "__esModule", { value: true }), Xr.getContainer = Eo, Xr.getScroll = Si, Xr.getScrollSize = function(n) {
return c2.default.window(n) && (n = window.document.body), { x: n.scrollWidth, y: n.scrollHeight };
@@ -2756,7 +2756,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
throw new TypeError("Cannot call a class as a function");
})(this, n), $e(this, "interactable", null), $e(this, "element", null), $e(this, "rect", void 0), $e(this, "_rects", void 0), $e(this, "edges", void 0), $e(this, "_scopeFire", void 0), $e(this, "prepared", { name: null, axis: null, edges: null }), $e(this, "pointerType", void 0), $e(this, "pointers", []), $e(this, "downEvent", null), $e(this, "downPointer", {}), $e(this, "_latestPointer", { pointer: null, event: null, eventTarget: null }), $e(this, "prevEvent", null), $e(this, "pointerIsDown", false), $e(this, "pointerWasMoved", false), $e(this, "_interacting", false), $e(this, "_ending", false), $e(this, "_stopped", true), $e(this, "_proxy", null), $e(this, "simulation", null), $e(this, "doMove", (0, Gt.warnOnce)(function(N2) {
this.move(N2);
- }, "The interaction.doMove() method has been renamed to interaction.move()")), $e(this, "coords", { start: K.newCoords(), prev: K.newCoords(), cur: K.newCoords(), delta: K.newCoords(), velocity: K.newCoords() }), $e(this, "_id", bd++), this._scopeFire = m2, this.pointerType = f2;
+ }, "The interaction.doMove() method has been renamed to interaction.move()")), $e(this, "coords", { start: J.newCoords(), prev: J.newCoords(), cur: J.newCoords(), delta: J.newCoords(), velocity: J.newCoords() }), $e(this, "_id", bd++), this._scopeFire = m2, this.pointerType = f2;
var h2 = this;
this._proxy = {};
var g = u2(function(N2) {
@@ -2790,9 +2790,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
var m2, h2, g = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;
this.pointerIsDown && !this.pointerWasMoved && (m2 = this.coords.cur.client.x - this.coords.start.client.x, h2 = this.coords.cur.client.y - this.coords.start.client.y, this.pointerWasMoved = (0, et.default)(m2, h2) > this.pointerMoveTolerance);
var x = this.getPointerIndex(s), T = { pointer: s, pointerIndex: x, pointerInfo: this.pointers[x], event: p2, type: "move", eventTarget: f2, dx: m2, dy: h2, duplicate: g, interaction: this };
- g || K.setCoordVelocity(this.coords.velocity, this.coords.delta), this._scopeFire("interactions:move", T), g || this.simulation || (this.interacting() && (T.type = null, this.move(T)), this.pointerWasMoved && K.copyCoords(this.coords.prev, this.coords.cur));
+ g || J.setCoordVelocity(this.coords.velocity, this.coords.delta), this._scopeFire("interactions:move", T), g || this.simulation || (this.interacting() && (T.type = null, this.move(T)), this.pointerWasMoved && J.copyCoords(this.coords.prev, this.coords.cur));
} }, { key: "move", value: function(s) {
- s && s.event || K.setZeroCoords(this.coords.delta), (s = (0, W.default)({ pointer: this._latestPointer.pointer, event: this._latestPointer.event, eventTarget: this._latestPointer.eventTarget, interaction: this }, s || {})).phase = "move", this._doPhase(s);
+ s && s.event || J.setZeroCoords(this.coords.delta), (s = (0, W.default)({ pointer: this._latestPointer.pointer, event: this._latestPointer.event, eventTarget: this._latestPointer.eventTarget, interaction: this }, s || {})).phase = "move", this._doPhase(s);
} }, { key: "pointerUp", value: function(s, p2, f2, m2) {
var h2 = this.getPointerIndex(s);
h2 === -1 && (h2 = this.updatePointer(s, p2, f2, false));
@@ -2810,17 +2810,17 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
} }, { key: "stop", value: function() {
this._scopeFire("interactions:stop", { interaction: this }), this.interactable = this.element = null, this._interacting = false, this._stopped = true, this.prepared.name = this.prevEvent = null;
} }, { key: "getPointerIndex", value: function(s) {
- var p2 = K.getPointerId(s);
+ var p2 = J.getPointerId(s);
return this.pointerType === "mouse" || this.pointerType === "pen" ? this.pointers.length - 1 : xe.findIndex(this.pointers, function(f2) {
return f2.id === p2;
});
} }, { key: "getPointerInfo", value: function(s) {
return this.pointers[this.getPointerIndex(s)];
} }, { key: "updatePointer", value: function(s, p2, f2, m2) {
- var h2 = K.getPointerId(s), g = this.getPointerIndex(s), x = this.pointers[g];
- return m2 = m2 !== false && (m2 || /(down|start)$/i.test(p2.type)), x ? x.pointer = s : (x = new _i.PointerInfo(h2, s, p2, null, null), g = this.pointers.length, this.pointers.push(x)), K.setCoords(this.coords.cur, this.pointers.map(function(T) {
+ var h2 = J.getPointerId(s), g = this.getPointerIndex(s), x = this.pointers[g];
+ return m2 = m2 !== false && (m2 || /(down|start)$/i.test(p2.type)), x ? x.pointer = s : (x = new _i.PointerInfo(h2, s, p2, null, null), g = this.pointers.length, this.pointers.push(x)), J.setCoords(this.coords.cur, this.pointers.map(function(T) {
return T.pointer;
- }), this._now()), K.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur), m2 && (this.pointerIsDown = true, x.downTime = this.coords.cur.timeStamp, x.downTarget = f2, K.pointerExtend(this.downPointer, s), this.interacting() || (K.copyCoords(this.coords.start, this.coords.cur), K.copyCoords(this.coords.prev, this.coords.cur), this.downEvent = p2, this.pointerWasMoved = false)), this._updateLatestPointer(s, p2, f2), this._scopeFire("interactions:update-pointer", { pointer: s, event: p2, eventTarget: f2, down: m2, pointerInfo: x, pointerIndex: g, interaction: this }), g;
+ }), this._now()), J.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur), m2 && (this.pointerIsDown = true, x.downTime = this.coords.cur.timeStamp, x.downTarget = f2, J.pointerExtend(this.downPointer, s), this.interacting() || (J.copyCoords(this.coords.start, this.coords.cur), J.copyCoords(this.coords.prev, this.coords.cur), this.downEvent = p2, this.pointerWasMoved = false)), this._updateLatestPointer(s, p2, f2), this._scopeFire("interactions:update-pointer", { pointer: s, event: p2, eventTarget: f2, down: m2, pointerInfo: x, pointerIndex: g, interaction: this }), g;
} }, { key: "removePointer", value: function(s, p2) {
var f2 = this.getPointerIndex(s);
if (f2 !== -1) {
@@ -2850,7 +2850,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
Mt.default = yd;
var vn = {};
function Gl(n) {
- n.pointerIsDown && (Ja(n.coords.cur, n.offset.total), n.offset.pending.x = 0, n.offset.pending.y = 0);
+ n.pointerIsDown && (Ka(n.coords.cur, n.offset.total), n.offset.pending.x = 0, n.offset.pending.y = 0);
}
__name(Gl, "Gl");
u2(Gl, "He");
@@ -2865,7 +2865,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
}(n))
return false;
var o2 = n.offset.pending;
- return Ja(n.coords.cur, o2), Ja(n.coords.delta, o2), ce.addEdges(n.edges, n.rect, o2), o2.x = 0, o2.y = 0, true;
+ return Ka(n.coords.cur, o2), Ka(n.coords.delta, o2), ce.addEdges(n.edges, n.rect, o2), o2.x = 0, o2.y = 0, true;
}
__name(Za, "Za");
u2(Za, "Ze");
@@ -2875,12 +2875,12 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
}
__name(xd, "xd");
u2(xd, "Je");
- function Ja(n, o2) {
+ function Ka(n, o2) {
var a = n.page, s = n.client, p2 = o2.x, f2 = o2.y;
a.x += p2, a.y += f2, s.x += p2, s.y += f2;
}
- __name(Ja, "Ja");
- u2(Ja, "Qe"), Object.defineProperty(vn, "__esModule", { value: true }), vn.addTotal = Gl, vn.applyPending = Za, vn.default = void 0, Mt._ProxyMethods.offsetBy = "";
+ __name(Ka, "Ka");
+ u2(Ka, "Qe"), Object.defineProperty(vn, "__esModule", { value: true }), vn.addTotal = Gl, vn.applyPending = Za, vn.default = void 0, Mt._ProxyMethods.offsetBy = "";
var wd = { id: "offset", before: ["modifiers", "pointer-events", "actions", "inertia"], install: function(n) {
n.Interaction.prototype.offsetBy = xd;
}, listeners: { "interactions:new": function(n) {
@@ -2972,7 +2972,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
p2.offsetBy({ x: this.targetOffset.x - this.currentOffset.x, y: this.targetOffset.y - this.currentOffset.y }), this.end();
} }, { key: "resume", value: function(s) {
var p2 = s.pointer, f2 = s.event, m2 = s.eventTarget, h2 = this.interaction;
- h2.offsetBy({ x: -this.currentOffset.x, y: -this.currentOffset.y }), h2.updatePointer(p2, f2, m2, true), h2._doPhase({ interaction: h2, event: f2, phase: "resume" }), (0, K.copyCoords)(h2.coords.prev, h2.coords.cur), this.stop();
+ h2.offsetBy({ x: -this.currentOffset.x, y: -this.currentOffset.y }), h2.updatePointer(p2, f2, m2, true), h2._doPhase({ interaction: h2, event: f2, phase: "resume" }), (0, J.copyCoords)(h2.coords.prev, h2.coords.cur), this.stop();
} }, { key: "end", value: function() {
this.interaction.move(), this.interaction.end(), this.stop();
} }, { key: "stop", value: function() {
@@ -3094,13 +3094,13 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
return true;
return false;
};
- var Ka = {};
- Object.defineProperty(Ka, "__esModule", { value: true }), Ka.createInteractStatic = function(n) {
+ var Ja = {};
+ Object.defineProperty(Ja, "__esModule", { value: true }), Ja.createInteractStatic = function(n) {
var o2 = u2(/* @__PURE__ */ __name(function a(s, p2) {
var f2 = n.interactables.get(s, p2);
return f2 || ((f2 = n.interactables.new(s, p2)).events.global = a.globalEvents), f2;
}, "a"), "e");
- return o2.getPointerAverage = K.pointerAverage, o2.getTouchBBox = K.touchBBox, o2.getTouchDistance = K.touchDistance, o2.getTouchAngle = K.touchAngle, o2.getElementRect = z2.getElementRect, o2.getElementClientRect = z2.getElementClientRect, o2.matchesSelector = z2.matchesSelector, o2.closest = z2.closest, o2.globalEvents = {}, o2.version = "1.10.11", o2.scope = n, o2.use = function(a, s) {
+ return o2.getPointerAverage = J.pointerAverage, o2.getTouchBBox = J.touchBBox, o2.getTouchDistance = J.touchDistance, o2.getTouchAngle = J.touchAngle, o2.getElementRect = z2.getElementRect, o2.getElementClientRect = z2.getElementClientRect, o2.matchesSelector = z2.matchesSelector, o2.closest = z2.closest, o2.globalEvents = {}, o2.version = "1.10.11", o2.scope = n, o2.use = function(a, s) {
return this.scope.usePlugin(a, s), this;
}, o2.isSet = function(a, s) {
return !!this.scope.interactables.get(a, s && s.context);
@@ -3458,7 +3458,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
__name(h2, "h");
u2(h2, "l");
function g(T, C) {
- for (var N2 = Di(C), G2 = new Id(T), D2 = s[T.type], H = ts(K.getEventTargets(T), 1)[0], Z = H; c2.default.element(Z); ) {
+ for (var N2 = Di(C), G2 = new Id(T), D2 = s[T.type], H = ts(J.getEventTargets(T), 1)[0], Z = H; c2.default.element(Z); ) {
for (var F2 = 0; F2 < D2.length; F2++) {
var ee = D2[F2], se = ee.selector, pe = ee.context;
if (z2.matchesSelector(Z, se) && z2.nodeContains(pe, H) && z2.nodeContains(pe, Z)) {
@@ -3657,11 +3657,11 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
var ns = ["pointerDown", "pointerMove", "pointerUp", "updatePointer", "removePointer", "windowBlur"];
function Yl(n, o2) {
return function(a) {
- var s = o2.interactions.list, p2 = K.getPointerType(a), f2 = Wl(K.getEventTargets(a), 2), m2 = f2[0], h2 = f2[1], g = [];
+ var s = o2.interactions.list, p2 = J.getPointerType(a), f2 = Wl(J.getEventTargets(a), 2), m2 = f2[0], h2 = f2[1], g = [];
if (/^touch/.test(a.type)) {
o2.prevTouchTime = o2.now();
for (var x = 0; x < a.changedTouches.length; x++) {
- var T = a.changedTouches[x], C = { pointer: T, pointerId: K.getPointerId(T), pointerType: p2, eventType: a.type, eventTarget: m2, curEventTarget: h2, scope: o2 }, N2 = Zl(C);
+ var T = a.changedTouches[x], C = { pointer: T, pointerId: J.getPointerId(T), pointerType: p2, eventType: a.type, eventTarget: m2, curEventTarget: h2, scope: o2 }, N2 = Zl(C);
g.push([C.pointer, C.eventTarget, C.curEventTarget, N2]);
}
} else {
@@ -3672,7 +3672,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
G2 = G2 || o2.now() - o2.prevTouchTime < 500 || a.timeStamp === 0;
}
if (!G2) {
- var H = { pointer: a, pointerId: K.getPointerId(a), pointerType: p2, eventType: a.type, curEventTarget: h2, eventTarget: m2, scope: o2 }, Z = Zl(H);
+ var H = { pointer: a, pointerId: J.getPointerId(a), pointerType: p2, eventType: a.type, curEventTarget: h2, eventTarget: m2, scope: o2 }, Z = Zl(H);
g.push([H.pointer, H.eventTarget, H.curEventTarget, Z]);
}
}
@@ -3781,15 +3781,15 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
} }, onDocSignal: is, doOnInteractions: Yl, methodNames: ns };
Lo.default = Gd;
var Ri = {};
- function Jl(n) {
- return (Jl = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o2) {
+ function Kl(n) {
+ return (Kl = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o2) {
return typeof o2;
} : function(o2) {
return o2 && typeof Symbol == "function" && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
})(n);
}
- __name(Jl, "Jl");
- u2(Jl, "Jn");
+ __name(Kl, "Kl");
+ u2(Kl, "Jn");
function os(n, o2, a) {
return (os = typeof Reflect != "undefined" && Reflect.get ? Reflect.get : function(s, p2, f2) {
var m2 = function(g, x) {
@@ -3805,15 +3805,15 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
}
__name(os, "os");
u2(os, "Qn");
- function Kl(n, o2) {
- return (Kl = Object.setPrototypeOf || function(a, s) {
+ function Jl(n, o2) {
+ return (Jl = Object.setPrototypeOf || function(a, s) {
return a.__proto__ = s, a;
})(n, o2);
}
- __name(Kl, "Kl");
- u2(Kl, "tr");
+ __name(Jl, "Jl");
+ u2(Jl, "tr");
function Ld(n, o2) {
- return !o2 || Jl(o2) !== "object" && typeof o2 != "function" ? function(a) {
+ return !o2 || Kl(o2) !== "object" && typeof o2 != "function" ? function(a) {
if (a === void 0)
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return a;
@@ -3855,7 +3855,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
var qd = function() {
function n() {
var o2 = this;
- Ql(this, n), vt(this, "id", "__interact_scope_".concat(Math.floor(100 * Math.random()))), vt(this, "isInitialized", false), vt(this, "listenerMaps", []), vt(this, "browser", L.default), vt(this, "defaults", (0, dn.default)(Oi.defaults)), vt(this, "Eventable", Ai.Eventable), vt(this, "actions", { map: {}, phases: { start: true, move: true, end: true }, methodDict: {}, phaselessTypes: {} }), vt(this, "interactStatic", (0, Ka.createInteractStatic)(this)), vt(this, "InteractEvent", Ci.InteractEvent), vt(this, "Interactable", void 0), vt(this, "interactables", new zo.InteractableSet(this)), vt(this, "_win", void 0), vt(this, "document", void 0), vt(this, "window", void 0), vt(this, "documents", []), vt(this, "_plugins", { list: [], map: {} }), vt(this, "onWindowUnload", function(s) {
+ Ql(this, n), vt(this, "id", "__interact_scope_".concat(Math.floor(100 * Math.random()))), vt(this, "isInitialized", false), vt(this, "listenerMaps", []), vt(this, "browser", L.default), vt(this, "defaults", (0, dn.default)(Oi.defaults)), vt(this, "Eventable", Ai.Eventable), vt(this, "actions", { map: {}, phases: { start: true, move: true, end: true }, methodDict: {}, phaselessTypes: {} }), vt(this, "interactStatic", (0, Ja.createInteractStatic)(this)), vt(this, "InteractEvent", Ci.InteractEvent), vt(this, "Interactable", void 0), vt(this, "interactables", new zo.InteractableSet(this)), vt(this, "_win", void 0), vt(this, "document", void 0), vt(this, "window", void 0), vt(this, "documents", []), vt(this, "_plugins", { list: [], map: {} }), vt(this, "onWindowUnload", function(s) {
return o2.removeDocument(s.target);
});
var a = this;
@@ -3863,7 +3863,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
(function(g, x) {
if (typeof x != "function" && x !== null)
throw new TypeError("Super expression must either be null or a function");
- g.prototype = Object.create(x && x.prototype, { constructor: { value: g, writable: true, configurable: true } }), x && Kl(g, x);
+ g.prototype = Object.create(x && x.prototype, { constructor: { value: g, writable: true, configurable: true } }), x && Jl(g, x);
})(h2, s);
var p2, f2, m2 = (p2 = h2, f2 = function() {
if (typeof Reflect == "undefined" || !Reflect.construct || Reflect.construct.sham)
@@ -4190,22 +4190,22 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
}, set elementRect(n) {
} }, Et.restrict.defaults), vu = { start: Et.restrict.start, set: Et.restrict.set, defaults: Zd };
Zn.restrictRect = vu;
- var Jd = (0, ht.makeModifier)(vu, "restrictRect");
- Zn.default = Jd;
- var Jn = {};
- Object.defineProperty(Jn, "__esModule", { value: true }), Jn.restrictSize = Jn.default = void 0;
- var Kd = { width: -1 / 0, height: -1 / 0 }, Qd = { width: 1 / 0, height: 1 / 0 }, mu = { start: function(n) {
+ var Kd = (0, ht.makeModifier)(vu, "restrictRect");
+ Zn.default = Kd;
+ var Kn = {};
+ Object.defineProperty(Kn, "__esModule", { value: true }), Kn.restrictSize = Kn.default = void 0;
+ var Jd = { width: -1 / 0, height: -1 / 0 }, Qd = { width: 1 / 0, height: 1 / 0 }, mu = { start: function(n) {
return yr.restrictEdges.start(n);
}, set: function(n) {
var o2 = n.interaction, a = n.state, s = n.rect, p2 = n.edges, f2 = a.options;
if (p2) {
- var m2 = ce.tlbrToXywh((0, Et.getRestrictionRect)(f2.min, o2, n.coords)) || Kd, h2 = ce.tlbrToXywh((0, Et.getRestrictionRect)(f2.max, o2, n.coords)) || Qd;
+ var m2 = ce.tlbrToXywh((0, Et.getRestrictionRect)(f2.min, o2, n.coords)) || Jd, h2 = ce.tlbrToXywh((0, Et.getRestrictionRect)(f2.max, o2, n.coords)) || Qd;
a.options = { endOnly: f2.endOnly, inner: (0, W.default)({}, yr.restrictEdges.noInner), outer: (0, W.default)({}, yr.restrictEdges.noOuter) }, p2.top ? (a.options.inner.top = s.bottom - m2.height, a.options.outer.top = s.bottom - h2.height) : p2.bottom && (a.options.inner.bottom = s.top + m2.height, a.options.outer.bottom = s.top + h2.height), p2.left ? (a.options.inner.left = s.right - m2.width, a.options.outer.left = s.right - h2.width) : p2.right && (a.options.inner.right = s.left + m2.width, a.options.outer.right = s.left + h2.width), yr.restrictEdges.set(n), a.options = f2;
}
}, defaults: { min: null, max: null, endOnly: false, enabled: false } };
- Jn.restrictSize = mu;
+ Kn.restrictSize = mu;
var ef = (0, ht.makeModifier)(mu, "restrictSize");
- Jn.default = ef;
+ Kn.default = ef;
var us = {};
Object.defineProperty(us, "__esModule", { value: true }), Object.defineProperty(us, "default", { enumerable: true, get: function() {
return mn.default;
@@ -4311,15 +4311,15 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
Dr.snapSize = yu;
var rf = (0, ht.makeModifier)(yu, "snapSize");
Dr.default = rf;
- var Kn = {};
- Object.defineProperty(Kn, "__esModule", { value: true }), Kn.snapEdges = Kn.default = void 0;
+ var Jn = {};
+ Object.defineProperty(Jn, "__esModule", { value: true }), Jn.snapEdges = Jn.default = void 0;
var xu = { start: function(n) {
var o2 = n.edges;
return o2 ? (n.state.targetFields = n.state.targetFields || [[o2.left ? "left" : "right", o2.top ? "top" : "bottom"]], Dr.snapSize.start(n)) : null;
}, set: Dr.snapSize.set, defaults: (0, W.default)((0, dn.default)(Dr.snapSize.defaults), { targets: null, range: null, offset: { x: 0, y: 0 } }) };
- Kn.snapEdges = xu;
+ Jn.snapEdges = xu;
var nf = (0, ht.makeModifier)(xu, "snapEdges");
- Kn.default = nf;
+ Jn.default = nf;
var cs = {};
Object.defineProperty(cs, "__esModule", { value: true }), Object.defineProperty(cs, "default", { enumerable: true, get: function() {
return mn.default;
@@ -4330,7 +4330,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
} });
var Qn = {};
Object.defineProperty(Qn, "__esModule", { value: true }), Qn.default = void 0;
- var of = { aspectRatio: Yn.default, restrictEdges: yr.default, restrict: Et.default, restrictRect: Zn.default, restrictSize: Jn.default, snapEdges: Kn.default, snap: Yr.default, snapSize: Dr.default, spring: cs.default, avoid: ss.default, transform: ps.default, rubberband: us.default };
+ var of = { aspectRatio: Yn.default, restrictEdges: yr.default, restrict: Et.default, restrictRect: Zn.default, restrictSize: Kn.default, snapEdges: Jn.default, snap: Yr.default, snapSize: Dr.default, spring: cs.default, avoid: ss.default, transform: ps.default, rubberband: us.default };
Qn.default = of;
var Ho = {};
Object.defineProperty(Ho, "__esModule", { value: true }), Ho.default = void 0;
@@ -4422,7 +4422,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
if (function(Z, F2) {
if (!(Z instanceof F2))
throw new TypeError("Cannot call a class as a function");
- }(this, m2), dr(At(G2 = f2.call(this, C)), "type", void 0), dr(At(G2), "originalEvent", void 0), dr(At(G2), "pointerId", void 0), dr(At(G2), "pointerType", void 0), dr(At(G2), "double", void 0), dr(At(G2), "pageX", void 0), dr(At(G2), "pageY", void 0), dr(At(G2), "clientX", void 0), dr(At(G2), "clientY", void 0), dr(At(G2), "dt", void 0), dr(At(G2), "eventable", void 0), K.pointerExtend(At(G2), x), x !== g && K.pointerExtend(At(G2), g), G2.timeStamp = N2, G2.originalEvent = x, G2.type = h2, G2.pointerId = K.getPointerId(g), G2.pointerType = K.getPointerType(g), G2.target = T, G2.currentTarget = null, h2 === "tap") {
+ }(this, m2), dr(At(G2 = f2.call(this, C)), "type", void 0), dr(At(G2), "originalEvent", void 0), dr(At(G2), "pointerId", void 0), dr(At(G2), "pointerType", void 0), dr(At(G2), "double", void 0), dr(At(G2), "pageX", void 0), dr(At(G2), "pageY", void 0), dr(At(G2), "clientX", void 0), dr(At(G2), "clientY", void 0), dr(At(G2), "dt", void 0), dr(At(G2), "eventable", void 0), J.pointerExtend(At(G2), x), x !== g && J.pointerExtend(At(G2), g), G2.timeStamp = N2, G2.originalEvent = x, G2.type = h2, G2.pointerId = J.getPointerId(g), G2.pointerType = J.getPointerType(g), G2.target = T, G2.currentTarget = null, h2 === "tap") {
var D2 = C.getPointerIndex(g);
G2.dt = G2.timeStamp - C.pointers[D2].downTime;
var H = G2.timeStamp - C.tapTime;
@@ -4601,10 +4601,10 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
G2._reflowResolve = ee;
}));
else {
- var H = (0, ce.tlbrToXywh)(N2), Z = { page: { x: H.x, y: H.y }, client: { x: H.x, y: H.y }, timeStamp: f2.now() }, F2 = K.coordsToEvent(Z);
+ var H = (0, ce.tlbrToXywh)(N2), Z = { page: { x: H.x, y: H.y }, client: { x: H.x, y: H.y }, timeStamp: f2.now() }, F2 = J.coordsToEvent(Z);
D2 = function(ee, se, pe, we, qe) {
var be = ee.interactions.new({ pointerType: "reflow" }), De = { interaction: be, event: qe, pointer: qe, eventTarget: pe, phase: "reflow" };
- be.interactable = se, be.element = pe, be.prevEvent = qe, be.updatePointer(qe, qe, pe, true), K.setZeroCoords(be.coords.delta), (0, Gt.copyAction)(be.prepared, we), be._doPhase(De);
+ be.interactable = se, be.element = pe, be.prevEvent = qe, be.updatePointer(qe, qe, pe, true), J.setZeroCoords(be.coords.delta), (0, Gt.copyAction)(be.prepared, we), be._doPhase(De);
var Ut = ee.window.Promise, Rr = Ut ? new Ut(function(hs) {
be._reflowResolve = hs;
}) : void 0;
@@ -4809,7 +4809,7 @@ function j(r, e) {
__name(j, "j");
u2(j, "attr");
var Pu = /* @__PURE__ */ new WeakSet();
-function Jo(r, e) {
+function Ko(r, e) {
if (!Pu.has(r)) {
Pu.add(r), e || (e = Iu(Object.getPrototypeOf(r)));
for (let t of e) {
@@ -4830,8 +4830,8 @@ function Jo(r, e) {
}
}
}
-__name(Jo, "Jo");
-u2(Jo, "initializeAttrs");
+__name(Ko, "Ko");
+u2(Ko, "initializeAttrs");
function Iu(r) {
let e = /* @__PURE__ */ new Set(), t = r;
for (; t && t !== HTMLElement; ) {
@@ -4861,12 +4861,12 @@ __name(Os, "Os");
u2(Os, "defineObservedAttributes");
var Cf = /* @__PURE__ */ new WeakSet();
function Ru(r, e) {
- r.toggleAttribute("data-catalyst", true), customElements.upgrade(r), Cf.add(r), Ts(r), Jo(r), gs(r), e && e.call(r), r.shadowRoot && bs(r.shadowRoot);
+ r.toggleAttribute("data-catalyst", true), customElements.upgrade(r), Cf.add(r), Ts(r), Ko(r), gs(r), e && e.call(r), r.shadowRoot && bs(r.shadowRoot);
}
__name(Ru, "Ru");
u2(Ru, "initializeInstance");
function zu(r, e, t, i, l) {
- Jo(r), e !== "data-catalyst" && l && l.call(r, e, t, i);
+ Ko(r), e !== "data-catalyst" && l && l.call(r, e, t, i);
}
__name(zu, "zu");
u2(zu, "initializeAttributeChanged");
@@ -4888,7 +4888,7 @@ function ne(r) {
__name(ne, "ne");
u2(ne, "controller");
var yn = u2((r) => typeof r == "object" && r !== null && typeof r.angle == "string" && typeof r.reducedAngle == "string", "isAngleable");
-function Jr(r) {
+function Kr(r) {
class e extends r {
constructor() {
super(...arguments);
@@ -4899,8 +4899,8 @@ function Jr(r) {
__name(e, "e");
return u2(e, "AngleableMixinClass"), k([j], e.prototype, "angle", 2), k([j], e.prototype, "reducedAngle", 2), e;
}
-__name(Jr, "Jr");
-u2(Jr, "AngleableMixin");
+__name(Kr, "Kr");
+u2(Kr, "AngleableMixin");
var xn = u2((r) => typeof r == "object" && r !== null && typeof r.controls == "object", "isControllable");
function He(r) {
class e extends r {
@@ -5008,15 +5008,15 @@ var Ee;
(function(r) {
r.Start = "xstate.start", r.Stop = "xstate.stop", r.Raise = "xstate.raise", r.Send = "xstate.send", r.Cancel = "xstate.cancel", r.NullEvent = "", r.Assign = "xstate.assign", r.After = "xstate.after", r.DoneState = "done.state", r.DoneInvoke = "done.invoke", r.Log = "xstate.log", r.Init = "xstate.init", r.Invoke = "xstate.invoke", r.ErrorExecution = "error.execution", r.ErrorCommunication = "error.communication", r.ErrorPlatform = "error.platform", r.ErrorCustom = "xstate.error", r.Update = "xstate.update", r.Pure = "xstate.pure", r.Choose = "xstate.choose";
})(Ee || (Ee = {}));
-var Kr;
+var Jr;
(function(r) {
r.Parent = "#_parent", r.Internal = "#_internal";
-})(Kr || (Kr = {}));
+})(Jr || (Jr = {}));
var Li = Ee.Start;
var ti = Ee.Stop;
var ri = Ee.Raise;
var wn = Ee.Send;
-var Ko = Ee.Cancel;
+var Jo = Ee.Cancel;
var Nu = Ee.NullEvent;
var Cs = Ee.Assign;
var am = Ee.After;
@@ -5382,7 +5382,7 @@ function Zu(r) {
}
__name(Zu, "Zu");
u2(Zu, "normalizeTarget");
-function Ju(r, e, t) {
+function Ku(r, e, t) {
if (!Le) {
var i = r.stack ? " Stacktrace was '".concat(r.stack, "'") : "";
if (r === e)
@@ -5393,8 +5393,8 @@ function Ju(r, e, t) {
}
}
}
-__name(Ju, "Ju");
-u2(Ju, "reportUnhandledExceptionOnInvocation");
+__name(Ku, "Ku");
+u2(Ku, "reportUnhandledExceptionOnInvocation");
function sa(r, e, t, i, l) {
var c2 = r.options.guards, d2 = { state: l, cond: e, _event: i };
if (e.type === ta)
@@ -5466,11 +5466,11 @@ function pa(r) {
}
__name(pa, "pa");
u2(pa, "toActivityDefinition");
-function Ku(r) {
- return ge(r) ? { type: ri, event: r } : Rs(r, { to: Kr.Internal });
+function Ju(r) {
+ return ge(r) ? { type: ri, event: r } : Rs(r, { to: Jr.Internal });
}
-__name(Ku, "Ku");
-u2(Ku, "raise");
+__name(Ju, "Ju");
+u2(Ju, "raise");
function Mf(r) {
return { type: ri, _event: tt(r.event) };
}
@@ -5497,7 +5497,7 @@ var Pf = u2(function(r, e, t) {
return Y(Y({}, r), { value: ge(r.expr) ? r.expr : r.expr(e, t.data, { _event: t }) });
}, "resolveLog");
var Qu = u2(function(r) {
- return { type: Ko, sendId: r };
+ return { type: Jo, sendId: r };
}, "cancel");
function ec(r) {
var e = pa(r);
@@ -5965,7 +5965,7 @@ var Ls = function() {
}();
var qs = /* @__PURE__ */ new Map();
var zf = 0;
-var Ji = { bookId: function() {
+var Ki = { bookId: function() {
return "x:".concat(zf++);
}, register: function(r, e) {
return qs.set(r, e), r;
@@ -6052,7 +6052,7 @@ Event: `).concat(JSON.stringify(O2.data)));
i.update(M2, O2);
}), i._state;
}, this.sendTo = function(w2, A2) {
- var O2 = i.parent && (A2 === Kr.Parent || i.parent.id === A2), M2 = O2 ? i.parent : ge(A2) ? i.children.get(A2) || Ji.get(A2) : Yu(A2) ? A2 : void 0;
+ var O2 = i.parent && (A2 === Jr.Parent || i.parent.id === A2), M2 = O2 ? i.parent : ge(A2) ? i.children.get(A2) || Ki.get(A2) : Yu(A2) ? A2 : void 0;
if (!M2) {
if (!O2)
throw new Error("Unable to send event to child '".concat(A2, "' from service '").concat(i.id, "'."));
@@ -6062,7 +6062,7 @@ Event: `).concat(JSON.stringify(O2.data)));
"machine" in M2 ? M2.send(Y(Y({}, w2), { name: w2.name === Ms ? "".concat(On(i.id)) : w2.name, origin: i.sessionId })) : M2.send(w2.data);
};
var l = Y(Y({}, r.defaultOptions), t), c2 = l.clock, d2 = l.logger, v = l.parent, b = l.id, y = b !== void 0 ? b : e.id;
- this.id = y, this.logger = d2, this.clock = c2, this.parent = v, this.options = l, this.scheduler = new Ls({ deferEvents: this.options.deferEvents }), this.sessionId = Ji.bookId();
+ this.id = y, this.logger = d2, this.clock = c2, this.parent = v, this.options = l, this.scheduler = new Ls({ deferEvents: this.options.deferEvents }), this.sessionId = Ki.bookId();
}
__name(r, "r");
return u2(r, "Interpreter"), Object.defineProperty(r.prototype, "initialState", { get: function() {
@@ -6188,7 +6188,7 @@ Event: `).concat(JSON.stringify(O2.data)));
var t = this;
if (this.status === bt.Running)
return this;
- this.machine._init(), Ji.register(this.sessionId, this), this.initialized = true, this.status = bt.Running;
+ this.machine._init(), Ki.register(this.sessionId, this), this.initialized = true, this.status = bt.Running;
var i = e === void 0 ? this.initialState : Cn(this, function() {
return fc(e) ? t.machine.resolveState(e) : t.machine.resolveState(hr.from(e, t.machine.context));
});
@@ -6296,7 +6296,7 @@ Event: `).concat(JSON.stringify(O2.data)));
throw y.error;
}
}
- return this.scheduler.clear(), this.initialized = false, this.status = bt.Stopped, Ji.free(this.sessionId), this;
+ return this.scheduler.clear(), this.initialized = false, this.status = bt.Stopped, Ki.free(this.sessionId), this;
}, r.prototype.batch = function(e) {
var t = this;
if (this.status === bt.NotStarted && this.options.deferEvents)
@@ -6386,7 +6386,7 @@ Event: `).concat(JSON.stringify(event)));
} else
b.to ? this.sendTo(b._event, b.to) : this.send(b._event);
break;
- case Ko:
+ case Jo:
this.cancel(e.sendId);
break;
case Li: {
@@ -6472,7 +6472,7 @@ Event: `).concat(JSON.stringify(event)));
try {
l.send(tt(y, { origin: t }));
} catch (w2) {
- Ju(b, w2, t), l.devTools && l.devTools.send(y, l.state), l.machine.strict && l.stop();
+ Ku(b, w2, t), l.devTools && l.devTools.send(y, l.state), l.machine.strict && l.stop();
}
}
});
@@ -6593,14 +6593,14 @@ Event: `).concat(JSON.stringify(event)));
return setTimeout(e, t);
}, clearTimeout: function(e) {
return clearTimeout(e);
- } }, logger: console.log.bind(console), devTools: false }, r.interpret = Je, r;
+ } }, logger: console.log.bind(console), devTools: false }, r.interpret = Ke, r;
}();
-function Je(r, e) {
+function Ke(r, e) {
var t = new gc(r, e);
return t;
}
-__name(Je, "Je");
-u2(Je, "interpret");
+__name(Ke, "Ke");
+u2(Ke, "interpret");
function Gf(r) {
if (typeof r == "string") {
var e = { type: r };
@@ -6612,15 +6612,15 @@ function Gf(r) {
}
__name(Gf, "Gf");
u2(Gf, "toInvokeSource");
-function Ki(r) {
+function Ji(r) {
return Y(Y({ type: qi }, r), { toJSON: function() {
r.onDone, r.onError;
var e = ei(r, ["onDone", "onError"]);
return Y(Y({}, e), { type: qi, src: Gf(r.src) });
} });
}
-__name(Ki, "Ki");
-u2(Ki, "toInvokeDefinition");
+__name(Ji, "Ji");
+u2(Ji, "toInvokeDefinition");
var ui = "";
var js = "#";
var Qi = "*";
@@ -6678,16 +6678,16 @@ var bc = function() {
var A2, O2;
if (wr(y)) {
var M2 = Wi(c2.id, w2);
- return c2.machine.options.services = Y((A2 = {}, A2[M2] = y, A2), c2.machine.options.services), Ki({ src: M2, id: M2 });
+ return c2.machine.options.services = Y((A2 = {}, A2[M2] = y, A2), c2.machine.options.services), Ji({ src: M2, id: M2 });
} else if (ge(y.src)) {
var M2 = y.id || Wi(c2.id, w2);
- return Ki(Y(Y({}, y), { id: M2, src: y.src }));
+ return Ji(Y(Y({}, y), { id: M2, src: y.src }));
} else if (wr(y.src) || Se(y.src)) {
var M2 = y.id || Wi(c2.id, w2);
- return c2.machine.options.services = Y((O2 = {}, O2[M2] = y.src, O2), c2.machine.options.services), Ki(Y(Y({ id: M2 }, y), { src: M2 }));
+ return c2.machine.options.services = Y((O2 = {}, O2[M2] = y.src, O2), c2.machine.options.services), Ji(Y(Y({ id: M2 }, y), { src: M2 }));
} else {
var R2 = y.src;
- return Ki(Y(Y({ id: Wi(c2.id, w2) }, y), { src: R2 }));
+ return Ji(Y(Y({ id: Wi(c2.id, w2) }, y), { src: R2 }));
}
}), this.activities = Lt(this.config.activities).concat(this.invoke).map(function(y) {
return pa(y);
@@ -6923,7 +6923,7 @@ var bc = function() {
return Re(Re([], me(X.activities.map(function(V) {
return ec(V);
})), false), me(X.onEntry), false);
- })).concat(_.map(Ku)), ke(Array.from(I2).map(function(X) {
+ })).concat(_.map(Ju)), ke(Array.from(I2).map(function(X) {
return Re(Re([], me(X.onExit), false), me(X.activities.map(function(V) {
return tc(V);
})), false);
@@ -6967,7 +6967,7 @@ var bc = function() {
}
}
var P = me(ca(this, t, i, l, O2, this.machine.config.preserveActionOrder), 2), I2 = P[0], L = P[1], E = me(oa(I2, function(fe) {
- return fe.type === ri || fe.type === wn && fe.to === Kr.Internal;
+ return fe.type === ri || fe.type === wn && fe.to === Jr.Internal;
}), 2), B = E[0], z2 = E[1], X = I2.filter(function(fe) {
var Ze;
return fe.type === Li && ((Ze = fe.activity) === null || Ze === void 0 ? void 0 : Ze.type) === qi;
@@ -7691,7 +7691,7 @@ function Ce(r) {
return ue.notNull(i), !Vs(i) && !Oa(i) ? null : i;
}
maybeInitStateMachine() {
- this.draggableService === void 0 && (this.draggableService = Je(this.draggableMachine).onTransition((i) => {
+ this.draggableService === void 0 && (this.draggableService = Ke(this.draggableMachine).onTransition((i) => {
this.debugDraggable && console.log(`draggable: ${nt(i.value)}`);
}).start());
}
@@ -7756,10 +7756,10 @@ __name(Ac, "Ac");
u2(Ac, "FlaggableMixin");
var Fe = "top";
var it = "bottom";
-var Ke = "right";
+var Je = "right";
var Ve = "left";
var Ca = "auto";
-var tn = [Fe, it, Ke, Ve];
+var tn = [Fe, it, Je, Ve];
var Gr = "start";
var In = "end";
var Pc = "clippingParents";
@@ -7772,8 +7772,8 @@ var Xs = tn.reduce(function(r, e) {
var Ma = [].concat(tn, [Ca]).reduce(function(r, e) {
return r.concat([e, e + "-" + Gr, e + "-" + In]);
}, []);
-var Jf = "beforeRead";
-var Kf = "read";
+var Kf = "beforeRead";
+var Jf = "read";
var Qf = "afterRead";
var eh = "beforeMain";
var th = "main";
@@ -7781,7 +7781,7 @@ var rh = "afterMain";
var nh = "beforeWrite";
var ih = "write";
var oh = "afterWrite";
-var Dc = [Jf, Kf, Qf, eh, th, rh, nh, ih, oh];
+var Dc = [Kf, Jf, Qf, eh, th, rh, nh, ih, oh];
function lt(r) {
return r ? (r.nodeName || "").toLowerCase() : null;
}
@@ -7973,9 +7973,9 @@ var uh = u2(function(e, t) {
return e = typeof e == "function" ? e(Object.assign({}, t.rects, { placement: t.placement })) : e, ao(typeof e != "number" ? e : so(e, tn));
}, "toPaddingObject");
function ch(r) {
- var e, t = r.state, i = r.name, l = r.options, c2 = t.elements.arrow, d2 = t.modifiersData.popperOffsets, v = ut(t.placement), b = zn(v), y = [Ve, Ke].indexOf(v) >= 0, w2 = y ? "height" : "width";
+ var e, t = r.state, i = r.name, l = r.options, c2 = t.elements.arrow, d2 = t.modifiersData.popperOffsets, v = ut(t.placement), b = zn(v), y = [Ve, Je].indexOf(v) >= 0, w2 = y ? "height" : "width";
if (!(!c2 || !d2)) {
- var A2 = uh(l.padding, t), O2 = Rn(c2), M2 = b === "y" ? Fe : Ve, R2 = b === "y" ? it : Ke, S = t.rects.reference[w2] + t.rects.reference[b] - d2[b] - t.rects.popper[w2], _ = d2[b] - t.rects.reference[b], P = mr(c2), I2 = P ? b === "y" ? P.clientHeight || 0 : P.clientWidth || 0 : 0, L = S / 2 - _ / 2, E = A2[M2], B = I2 - O2[w2] - A2[R2], z2 = I2 / 2 - O2[w2] / 2 + L, X = kn(E, z2, B), V = b;
+ var A2 = uh(l.padding, t), O2 = Rn(c2), M2 = b === "y" ? Fe : Ve, R2 = b === "y" ? it : Je, S = t.rects.reference[w2] + t.rects.reference[b] - d2[b] - t.rects.popper[w2], _ = d2[b] - t.rects.reference[b], P = mr(c2), I2 = P ? b === "y" ? P.clientHeight || 0 : P.clientWidth || 0 : 0, L = S / 2 - _ / 2, E = A2[M2], B = I2 - O2[w2] - A2[R2], z2 = I2 / 2 - O2[w2] / 2 + L, X = kn(E, z2, B), V = b;
t.modifiersData[i] = (e = {}, e[V] = X, e.centerOffset = X - z2, e);
}
}
@@ -8006,13 +8006,13 @@ function Nc(r) {
var P = d2.hasOwnProperty("x"), I2 = d2.hasOwnProperty("y"), L = Ve, E = Fe, B = window;
if (y) {
var z2 = mr(t), X = "clientHeight", V = "clientWidth";
- if (z2 === Xe(t) && (z2 = mt(t), St(z2).position !== "static" && v === "absolute" && (X = "scrollHeight", V = "scrollWidth")), z2 = z2, l === Fe || (l === Ve || l === Ke) && c2 === In) {
+ if (z2 === Xe(t) && (z2 = mt(t), St(z2).position !== "static" && v === "absolute" && (X = "scrollHeight", V = "scrollWidth")), z2 = z2, l === Fe || (l === Ve || l === Je) && c2 === In) {
E = it;
var $ = A2 && B.visualViewport ? B.visualViewport.height : z2[X];
S -= $ - i.height, S *= b ? 1 : -1;
}
if (l === Ve || (l === Fe || l === it) && c2 === In) {
- L = Ke;
+ L = Je;
var U = A2 && B.visualViewport ? B.visualViewport.width : z2[V];
M2 -= U - i.width, M2 *= b ? 1 : -1;
}
@@ -8084,12 +8084,12 @@ function Zs(r) {
}
__name(Zs, "Zs");
u2(Zs, "getViewportRect");
-function Js(r) {
+function Ks(r) {
var e, t = mt(r), i = Nn(r), l = (e = r.ownerDocument) == null ? void 0 : e.body, c2 = vr(t.scrollWidth, t.clientWidth, l ? l.scrollWidth : 0, l ? l.clientWidth : 0), d2 = vr(t.scrollHeight, t.clientHeight, l ? l.scrollHeight : 0, l ? l.clientHeight : 0), v = -i.scrollLeft + Gn(r), b = -i.scrollTop;
return St(l || t).direction === "rtl" && (v += vr(t.clientWidth, l ? l.clientWidth : 0) - c2), { width: c2, height: d2, x: v, y: b };
}
-__name(Js, "Js");
-u2(Js, "getDocumentRect");
+__name(Ks, "Ks");
+u2(Ks, "getDocumentRect");
function Ln(r) {
var e = St(r), t = e.overflow, i = e.overflowX, l = e.overflowY;
return /auto|scroll|overlay|hidden/.test(t + l + i);
@@ -8121,7 +8121,7 @@ function bh(r) {
__name(bh, "bh");
u2(bh, "getInnerBoundingClientRect");
function qc(r, e) {
- return e === _a ? di(Zs(r)) : Er(e) ? bh(e) : di(Js(mt(r)));
+ return e === _a ? di(Zs(r)) : Er(e) ? bh(e) : di(Ks(mt(r)));
}
__name(qc, "qc");
u2(qc, "getClientRectFromMixedType");
@@ -8133,15 +8133,15 @@ function yh(r) {
}
__name(yh, "yh");
u2(yh, "getClippingParents");
-function Ks(r, e, t) {
+function Js(r, e, t) {
var i = e === "clippingParents" ? yh(r) : [].concat(e), l = [].concat(i, [t]), c2 = l[0], d2 = l.reduce(function(v, b) {
var y = qc(r, b);
return v.top = vr(y.top, v.top), v.right = Dn(y.right, v.right), v.bottom = Dn(y.bottom, v.bottom), v.left = vr(y.left, v.left), v;
}, qc(r, c2));
return d2.width = d2.right - d2.left, d2.height = d2.bottom - d2.top, d2.x = d2.left, d2.y = d2.top, d2;
}
-__name(Ks, "Ks");
-u2(Ks, "getClippingRect");
+__name(Js, "Js");
+u2(Js, "getClippingRect");
function lo(r) {
var e = r.reference, t = r.element, i = r.placement, l = i ? ut(i) : null, c2 = i ? Vt(i) : null, d2 = e.x + e.width / 2 - t.width / 2, v = e.y + e.height / 2 - t.height / 2, b;
switch (l) {
@@ -8151,7 +8151,7 @@ function lo(r) {
case it:
b = { x: d2, y: e.y + e.height };
break;
- case Ke:
+ case Je:
b = { x: e.x + e.width, y: v };
break;
case Ve:
@@ -8179,11 +8179,11 @@ __name(lo, "lo");
u2(lo, "computeOffsets");
function gr(r, e) {
e === void 0 && (e = {});
- var t = e, i = t.placement, l = i === void 0 ? r.placement : i, c2 = t.boundary, d2 = c2 === void 0 ? Pc : c2, v = t.rootBoundary, b = v === void 0 ? _a : v, y = t.elementContext, w2 = y === void 0 ? ci : y, A2 = t.altBoundary, O2 = A2 === void 0 ? false : A2, M2 = t.padding, R2 = M2 === void 0 ? 0 : M2, S = ao(typeof R2 != "number" ? R2 : so(R2, tn)), _ = w2 === ci ? Ic : ci, P = r.rects.popper, I2 = r.elements[O2 ? _ : w2], L = Ks(Er(I2) ? I2 : I2.contextElement || mt(r.elements.popper), d2, b), E = Wt(r.elements.reference), B = lo({ reference: E, element: P, strategy: "absolute", placement: l }), z2 = di(Object.assign({}, P, B)), X = w2 === ci ? z2 : E, V = { top: L.top - X.top + S.top, bottom: X.bottom - L.bottom + S.bottom, left: L.left - X.left + S.left, right: X.right - L.right + S.right }, $ = r.modifiersData.offset;
+ var t = e, i = t.placement, l = i === void 0 ? r.placement : i, c2 = t.boundary, d2 = c2 === void 0 ? Pc : c2, v = t.rootBoundary, b = v === void 0 ? _a : v, y = t.elementContext, w2 = y === void 0 ? ci : y, A2 = t.altBoundary, O2 = A2 === void 0 ? false : A2, M2 = t.padding, R2 = M2 === void 0 ? 0 : M2, S = ao(typeof R2 != "number" ? R2 : so(R2, tn)), _ = w2 === ci ? Ic : ci, P = r.rects.popper, I2 = r.elements[O2 ? _ : w2], L = Js(Er(I2) ? I2 : I2.contextElement || mt(r.elements.popper), d2, b), E = Wt(r.elements.reference), B = lo({ reference: E, element: P, strategy: "absolute", placement: l }), z2 = di(Object.assign({}, P, B)), X = w2 === ci ? z2 : E, V = { top: L.top - X.top + S.top, bottom: X.bottom - L.bottom + S.bottom, left: L.left - X.left + S.left, right: X.right - L.right + S.right }, $ = r.modifiersData.offset;
if (w2 === ci && $) {
var U = $[l];
Object.keys(V).forEach(function(re) {
- var ie = [Ke, it].indexOf(re) >= 0 ? 1 : -1, W = [Fe, it].indexOf(re) >= 0 ? "y" : "x";
+ var ie = [Je, it].indexOf(re) >= 0 ? 1 : -1, W = [Fe, it].indexOf(re) >= 0 ? "y" : "x";
V[re] += U[W] * ie;
});
}
@@ -8219,14 +8219,14 @@ u2(xh, "getExpandedFallbackPlacements");
function wh(r) {
var e = r.state, t = r.options, i = r.name;
if (!e.modifiersData[i]._skip) {
- for (var l = t.mainAxis, c2 = l === void 0 ? true : l, d2 = t.altAxis, v = d2 === void 0 ? true : d2, b = t.fallbackPlacements, y = t.padding, w2 = t.boundary, A2 = t.rootBoundary, O2 = t.altBoundary, M2 = t.flipVariations, R2 = M2 === void 0 ? true : M2, S = t.allowedAutoPlacements, _ = e.options.placement, P = ut(_), I2 = P === _, L = b || (I2 || !R2 ? [pi(_)] : xh(_)), E = [_].concat(L).reduce(function(K, xt) {
- return K.concat(ut(xt) === Ca ? Qs(e, { placement: xt, boundary: w2, rootBoundary: A2, padding: y, flipVariations: R2, allowedAutoPlacements: S }) : xt);
+ for (var l = t.mainAxis, c2 = l === void 0 ? true : l, d2 = t.altAxis, v = d2 === void 0 ? true : d2, b = t.fallbackPlacements, y = t.padding, w2 = t.boundary, A2 = t.rootBoundary, O2 = t.altBoundary, M2 = t.flipVariations, R2 = M2 === void 0 ? true : M2, S = t.allowedAutoPlacements, _ = e.options.placement, P = ut(_), I2 = P === _, L = b || (I2 || !R2 ? [pi(_)] : xh(_)), E = [_].concat(L).reduce(function(J, xt) {
+ return J.concat(ut(xt) === Ca ? Qs(e, { placement: xt, boundary: w2, rootBoundary: A2, padding: y, flipVariations: R2, allowedAutoPlacements: S }) : xt);
}, []), B = e.rects.reference, z2 = e.rects.popper, X = /* @__PURE__ */ new Map(), V = true, $ = E[0], U = 0; U < E.length; U++) {
- var re = E[U], ie = ut(re), W = Vt(re) === Gr, ce = [Fe, it].indexOf(ie) >= 0, Pe = ce ? "width" : "height", Ue = gr(e, { placement: re, boundary: w2, rootBoundary: A2, altBoundary: O2, padding: y }), Ge = ce ? W ? Ke : Ve : W ? it : Fe;
+ var re = E[U], ie = ut(re), W = Vt(re) === Gr, ce = [Fe, it].indexOf(ie) >= 0, Pe = ce ? "width" : "height", Ue = gr(e, { placement: re, boundary: w2, rootBoundary: A2, altBoundary: O2, padding: y }), Ge = ce ? W ? Je : Ve : W ? it : Fe;
B[Pe] > z2[Pe] && (Ge = pi(Ge));
var fe = pi(Ge), Ze = [];
- if (c2 && Ze.push(Ue[ie] <= 0), v && Ze.push(Ue[Ge] <= 0, Ue[fe] <= 0), Ze.every(function(K) {
- return K;
+ if (c2 && Ze.push(Ue[ie] <= 0), v && Ze.push(Ue[Ge] <= 0, Ue[fe] <= 0), Ze.every(function(J) {
+ return J;
})) {
$ = re, V = false;
break;
@@ -8261,7 +8261,7 @@ function Bc(r, e, t) {
__name(Bc, "Bc");
u2(Bc, "getSideOffsets");
function $c(r) {
- return [Fe, Ke, it, Ve].some(function(e) {
+ return [Fe, Je, it, Ve].some(function(e) {
return r[e] >= 0;
});
}
@@ -8276,7 +8276,7 @@ u2(Eh, "hide");
var Hc = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: Eh };
function Sh(r, e, t) {
var i = ut(r), l = [Ve, Fe].indexOf(i) >= 0 ? -1 : 1, c2 = typeof t == "function" ? t(Object.assign({}, e, { placement: r })) : t, d2 = c2[0], v = c2[1];
- return d2 = d2 || 0, v = (v || 0) * l, [Ve, Ke].indexOf(i) >= 0 ? { x: v, y: d2 } : { x: d2, y: v };
+ return d2 = d2 || 0, v = (v || 0) * l, [Ve, Je].indexOf(i) >= 0 ? { x: v, y: d2 } : { x: d2, y: v };
}
__name(Sh, "Sh");
u2(Sh, "distanceAndSkiddingToXY");
@@ -8305,11 +8305,11 @@ function Ch(r) {
var e = r.state, t = r.options, i = r.name, l = t.mainAxis, c2 = l === void 0 ? true : l, d2 = t.altAxis, v = d2 === void 0 ? false : d2, b = t.boundary, y = t.rootBoundary, w2 = t.altBoundary, A2 = t.padding, O2 = t.tether, M2 = O2 === void 0 ? true : O2, R2 = t.tetherOffset, S = R2 === void 0 ? 0 : R2, _ = gr(e, { boundary: b, rootBoundary: y, padding: A2, altBoundary: w2 }), P = ut(e.placement), I2 = Vt(e.placement), L = !I2, E = zn(P), B = el(E), z2 = e.modifiersData.popperOffsets, X = e.rects.reference, V = e.rects.popper, $ = typeof S == "function" ? S(Object.assign({}, e.rects, { placement: e.placement })) : S, U = typeof $ == "number" ? { mainAxis: $, altAxis: $ } : Object.assign({ mainAxis: 0, altAxis: 0 }, $), re = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, ie = { x: 0, y: 0 };
if (!!z2) {
if (c2) {
- var W, ce = E === "y" ? Fe : Ve, Pe = E === "y" ? it : Ke, Ue = E === "y" ? "height" : "width", Ge = z2[E], fe = Ge + _[ce], Ze = Ge - _[Pe], et = M2 ? -V[Ue] / 2 : 0, Dt = I2 === Gr ? X[Ue] : V[Ue], Ot = I2 === Gr ? -V[Ue] : -X[Ue], Cr = e.elements.arrow, K = M2 && Cr ? Rn(Cr) : { width: 0, height: 0 }, xt = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : oo(), wt = xt[ce], _r = xt[Pe], $t = kn(0, X[Ue], K[Ue]), lr = L ? X[Ue] / 2 - et - $t - wt - U.mainAxis : Dt - $t - wt - U.mainAxis, ur = L ? -X[Ue] / 2 + et + $t + _r + U.mainAxis : Ot + $t + _r + U.mainAxis, Rt = e.elements.arrow && mr(e.elements.arrow), Hn = Rt ? E === "y" ? Rt.clientTop || 0 : Rt.clientLeft || 0 : 0, Ct = (W = re == null ? void 0 : re[E]) != null ? W : 0, ln = Ge + lr - Ct - Hn, xe = Ge + ur - Ct, Fr = kn(M2 ? Dn(fe, ln) : fe, Ge, M2 ? vr(Ze, xe) : Ze);
+ var W, ce = E === "y" ? Fe : Ve, Pe = E === "y" ? it : Je, Ue = E === "y" ? "height" : "width", Ge = z2[E], fe = Ge + _[ce], Ze = Ge - _[Pe], et = M2 ? -V[Ue] / 2 : 0, Dt = I2 === Gr ? X[Ue] : V[Ue], Ot = I2 === Gr ? -V[Ue] : -X[Ue], Cr = e.elements.arrow, J = M2 && Cr ? Rn(Cr) : { width: 0, height: 0 }, xt = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : oo(), wt = xt[ce], _r = xt[Pe], $t = kn(0, X[Ue], J[Ue]), lr = L ? X[Ue] / 2 - et - $t - wt - U.mainAxis : Dt - $t - wt - U.mainAxis, ur = L ? -X[Ue] / 2 + et + $t + _r + U.mainAxis : Ot + $t + _r + U.mainAxis, Rt = e.elements.arrow && mr(e.elements.arrow), Hn = Rt ? E === "y" ? Rt.clientTop || 0 : Rt.clientLeft || 0 : 0, Ct = (W = re == null ? void 0 : re[E]) != null ? W : 0, ln = Ge + lr - Ct - Hn, xe = Ge + ur - Ct, Fr = kn(M2 ? Dn(fe, ln) : fe, Ge, M2 ? vr(Ze, xe) : Ze);
z2[E] = Fr, ie[E] = Fr - Ge;
}
if (v) {
- var Ur, _t = E === "x" ? Fe : Ve, un = E === "x" ? it : Ke, cr = z2[B], pr = B === "y" ? "height" : "width", cn = cr + _[_t], ct = cr - _[un], Mr = [Fe, Ve].indexOf(P) !== -1, zt = (Ur = re == null ? void 0 : re[B]) != null ? Ur : 0, Fn = Mr ? cn : cr - X[pr] - V[pr] - zt + U.altAxis, Ar = Mr ? cr + X[pr] + V[pr] - zt - U.altAxis : ct, pn = M2 && Mr ? zc(Fn, cr, Ar) : kn(M2 ? Fn : cn, cr, M2 ? Ar : ct);
+ var Ur, _t = E === "x" ? Fe : Ve, un = E === "x" ? it : Je, cr = z2[B], pr = B === "y" ? "height" : "width", cn = cr + _[_t], ct = cr - _[un], Mr = [Fe, Ve].indexOf(P) !== -1, zt = (Ur = re == null ? void 0 : re[B]) != null ? Ur : 0, Fn = Mr ? cn : cr - X[pr] - V[pr] - zt + U.altAxis, Ar = Mr ? cr + X[pr] + V[pr] - zt - U.altAxis : ct, pn = M2 && Mr ? zc(Fn, cr, Ar) : kn(M2 ? Fn : cn, cr, M2 ? Ar : ct);
z2[B] = pn, ie[B] = pn - cr;
}
e.modifiersData[i] = ie;
@@ -8538,11 +8538,11 @@ function jn(r) {
}
__name(jn, "jn");
u2(jn, "normalizeToArray");
-function Jc(r, e) {
+function Kc(r, e) {
r.indexOf(e) === -1 && r.push(e);
}
-__name(Jc, "Jc");
-u2(Jc, "pushIfUnique");
+__name(Kc, "Kc");
+u2(Kc, "pushIfUnique");
function zh(r) {
return r.filter(function(e, t) {
return r.indexOf(e) === t;
@@ -8560,13 +8560,13 @@ function za(r) {
}
__name(za, "za");
u2(za, "arrayFrom");
-function Kc(r) {
+function Jc(r) {
return Object.keys(r).reduce(function(e, t) {
return r[t] !== void 0 && (e[t] = r[t]), e;
}, {});
}
-__name(Kc, "Kc");
-u2(Kc, "removeUndefinedProps");
+__name(Jc, "Jc");
+u2(Jc, "removeUndefinedProps");
function fi() {
return document.createElement("div");
}
@@ -8714,7 +8714,7 @@ function pp(r) {
}
__name(pp, "pp");
u2(pp, "getExtendedPassedProps");
-function Jh(r, e) {
+function Kh(r, e) {
var t = e ? Object.keys(pp(Object.assign({}, br, { plugins: e }))) : Yh, i = t.reduce(function(l, c2) {
var d2 = (r.getAttribute("data-tippy-" + c2) || "").trim();
if (!d2)
@@ -8731,19 +8731,19 @@ function Jh(r, e) {
}, {});
return i;
}
-__name(Jh, "Jh");
-u2(Jh, "getDataAttributeProps");
+__name(Kh, "Kh");
+u2(Kh, "getDataAttributeProps");
function rp(r, e) {
- var t = Object.assign({}, e, { content: up(e.content, [r]) }, e.ignoreAttributes ? {} : Jh(r, e.plugins));
+ var t = Object.assign({}, e, { content: up(e.content, [r]) }, e.ignoreAttributes ? {} : Kh(r, e.plugins));
return t.aria = Object.assign({}, br.aria, t.aria), t.aria = { expanded: t.aria.expanded === "auto" ? e.interactive : t.aria.expanded, content: t.aria.content === "auto" ? e.interactive ? null : "describedby" : t.aria.content }, t;
}
__name(rp, "rp");
u2(rp, "evaluateProps");
-var Kh = u2(function() {
+var Jh = u2(function() {
return "innerHTML";
}, "innerHTML");
function dl(r, e) {
- r[Kh()] = e;
+ r[Jh()] = e;
}
__name(dl, "dl");
u2(dl, "dangerouslySetInnerHTML");
@@ -8789,7 +8789,7 @@ var Qh = 1;
var Ra = [];
var pl = [];
function ev(r, e) {
- var t = rp(r, Object.assign({}, br, pp(Kc(e)))), i, l, c2, d2 = false, v = false, b = false, y = false, w2, A2, O2, M2 = [], R2 = Zc(ln, t.interactiveDebounce), S, _ = Qh++, P = null, I2 = zh(t.plugins), L = { isEnabled: true, isVisible: false, isDestroyed: false, isMounted: false, isShown: false }, E = { id: _, reference: r, popper: fi(), popperInstance: P, props: t, state: L, plugins: I2, clearDelayTimeouts: Fn, setProps: Ar, setContent: pn, show: bi, hide: xo, hideWithInteractivity: yi, enable: Mr, disable: zt, unmount: xi, destroy: wo };
+ var t = rp(r, Object.assign({}, br, pp(Jc(e)))), i, l, c2, d2 = false, v = false, b = false, y = false, w2, A2, O2, M2 = [], R2 = Zc(ln, t.interactiveDebounce), S, _ = Qh++, P = null, I2 = zh(t.plugins), L = { isEnabled: true, isVisible: false, isDestroyed: false, isMounted: false, isShown: false }, E = { id: _, reference: r, popper: fi(), popperInstance: P, props: t, state: L, plugins: I2, clearDelayTimeouts: Fn, setProps: Ar, setContent: pn, show: bi, hide: xo, hideWithInteractivity: yi, enable: Mr, disable: zt, unmount: xi, destroy: wo };
if (!t.render)
return E;
var B = t.render(E), z2 = B.popper, X = B.onUpdate;
@@ -8913,20 +8913,20 @@ function ev(r, e) {
}
__name(Cr, "Cr");
u2(Cr, "onTouchMove");
- function K() {
+ function J() {
b = false;
}
- __name(K, "K");
- u2(K, "onTouchStart");
+ __name(J, "J");
+ u2(J, "onTouchStart");
function xt() {
var q2 = ce();
- q2.addEventListener("mousedown", Ot, true), q2.addEventListener("touchend", Ot, qn), q2.addEventListener("touchstart", K, qn), q2.addEventListener("touchmove", Cr, qn);
+ q2.addEventListener("mousedown", Ot, true), q2.addEventListener("touchend", Ot, qn), q2.addEventListener("touchstart", J, qn), q2.addEventListener("touchmove", Cr, qn);
}
__name(xt, "xt");
u2(xt, "addDocumentPress");
function wt() {
var q2 = ce();
- q2.removeEventListener("mousedown", Ot, true), q2.removeEventListener("touchend", Ot, qn), q2.removeEventListener("touchstart", K, qn), q2.removeEventListener("touchmove", Cr, qn);
+ q2.removeEventListener("mousedown", Ot, true), q2.removeEventListener("touchend", Ot, qn), q2.removeEventListener("touchstart", J, qn), q2.removeEventListener("touchmove", Cr, qn);
}
__name(wt, "wt");
u2(wt, "removeDocumentPress");
@@ -9108,7 +9108,7 @@ function ev(r, e) {
function Ar(q2) {
if (!E.state.isDestroyed) {
fe("onBeforeUpdate", [E, q2]), Hn();
- var Q = E.props, oe = rp(r, Object.assign({}, Q, Kc(q2), { ignoreAttributes: true }));
+ var Q = E.props, oe = rp(r, Object.assign({}, Q, Jc(q2), { ignoreAttributes: true }));
E.props = oe, Rt(), Q.interactiveDebounce !== oe.interactiveDebounce && (Dt(), R2 = Zc(ln, oe.interactiveDebounce)), Q.triggerTarget && !oe.triggerTarget ? jn(Q.triggerTarget).forEach(function(ye) {
ye.removeAttribute("aria-expanded");
}) : oe.triggerTarget && r.removeAttribute("aria-expanded"), et(), Ge(), X && X(Q, oe), E.popperInstance && (_t(), pr().forEach(function(ye) {
@@ -9137,7 +9137,7 @@ function ev(r, e) {
var Ei = Pe(), Pr = Ei.box, Vr = Ei.content;
ul([Pr, Vr], he), Qc([Pr, Vr], "visible");
}
- Ze(), et(), Jc(pl, E), (ft = E.popperInstance) == null || ft.forceUpdate(), fe("onMount", [E]), E.props.animation && ie() && $t(he, function() {
+ Ze(), et(), Kc(pl, E), (ft = E.popperInstance) == null || ft.forceUpdate(), fe("onMount", [E]), E.props.animation && ie() && $t(he, function() {
E.state.isShown = true, fe("onShown", [E]);
});
}
@@ -9159,7 +9159,7 @@ function ev(r, e) {
__name(xo, "xo");
u2(xo, "hide");
function yi(q2) {
- ce().addEventListener("mousemove", R2), Jc(Ra, R2), R2(q2);
+ ce().addEventListener("mousemove", R2), Kc(Ra, R2), R2(q2);
}
__name(yi, "yi");
u2(yi, "hideWithInteractivity");
@@ -9332,7 +9332,7 @@ function _e(r) {
} } });
}
initHelp() {
- this.helpableService = Je(this.helpableMachine).onTransition((i) => {
+ this.helpableService = Ke(this.helpableMachine).onTransition((i) => {
this.debugHelpable && console.log(`helpable: ${nt(i.value)}`);
}).start(), this.helpableService.send("INIT");
}
@@ -9679,11 +9679,11 @@ var mi = /* @__PURE__ */ __name(class {
}, "mi");
u2(mi, "TemplateResult");
var lv = co(ja);
-function J(r, ...e) {
+function K(r, ...e) {
return new mi(r, e, lv);
}
-__name(J, "J");
-u2(J, "html");
+__name(K, "K");
+u2(K, "html");
function te(r, e) {
r.renderInto(e);
}
@@ -9713,17 +9713,17 @@ function ze(r) {
this.icon = "";
}
iconHtml(i) {
- return J`${this.iconStyle}
+ return K`${this.iconStyle}
${this.iconSvg(i)}
`;
}
iconSvg(i) {
if (this.icon === "")
- return J([i]);
+ return K([i]);
let l = document.getElementById(this.icon);
return l === null ? null : l.content.cloneNode(true);
}
get iconStyle() {
- return J``\n }\n }\n\n return IconableMixinClass as Constructor & TBase\n}\n", "import {Constructor} from './constructor'\nimport {attr} from '@github/catalyst'\n\nexport declare class Ifable {\n get if(): string\n set if(value: string)\n}\n\nexport const isIfable = (arg: unknown): arg is Ifable =>\n typeof arg === 'object' && arg !== null && typeof (arg as Ifable).if === 'string'\n\nexport function IfableMixin>(Base: TBase): Constructor & TBase {\n class IfableMixinClass extends Base {\n @attr if = ''\n }\n\n return IfableMixinClass as Constructor & TBase\n}\n", "import {html, render} from '@github/jtml'\nimport tippy, {Instance as TippyInstance, ReferenceElement as TippyReferenceElement} from 'tippy.js'\nimport {Constructor} from './constructor'\nimport {Util} from '@qni/common'\nimport {isAngleable} from './angleable'\nimport {isFlaggable} from './flaggable'\nimport {isIfable} from './ifable'\n\nexport declare class Menuable {\n initMenu(): void\n showMenu(): void\n hideMenu(): void\n}\n\nexport const isMenuable = (arg: unknown): arg is Menuable =>\n typeof arg === 'object' && arg !== null && typeof (arg as Menuable).initMenu === 'function'\n\nexport function MenuableMixin>(Base: TBase): Constructor & TBase {\n class MenuableMixinClass extends Base {\n public menu!: TippyInstance\n private ifTooltip!: TippyInstance | undefined\n private angleTooltip!: TippyInstance | undefined\n private flagTooltip!: TippyInstance | undefined\n private deleteTooltip!: TippyInstance | undefined\n\n initMenu(): void {\n const popupInstance = (this as TippyReferenceElement)._tippy\n if (popupInstance) return\n\n this.addEventListener('click', this.dispatchShowMenuEvent)\n\n this.menu = tippy(this, {\n allowHTML: true,\n animation: false,\n arrow: false,\n content: this.menuContent,\n interactive: true,\n appendTo: document.body,\n offset: [0, 16],\n placement: 'top',\n theme: 'operation-menu',\n trigger: 'manual',\n onShow: this.initMenuItems.bind(this),\n onHide: () => {\n this.ifTooltip?.hide()\n this.angleTooltip?.hide()\n this.flagTooltip?.hide()\n this.deleteTooltip?.hide()\n }\n })\n }\n\n showMenu(): void {\n this.menu.show()\n }\n\n hideMenu(): void {\n this.menu.hide()\n }\n\n private destroyMenu(): void {\n const popupInstance = (this as TippyReferenceElement)._tippy\n popupInstance?.destroy()\n }\n\n private dispatchShowMenuEvent(): void {\n this.dispatchEvent(new Event('operation-show-menu', {bubbles: true}))\n }\n\n private get menuContent(): DocumentFragment {\n const template = document.getElementById('operation-menu') as HTMLTemplateElement\n Util.notNull(template)\n\n const node = template.content.cloneNode(true)\n const content = document.createDocumentFragment()\n\n render(html`${node}`, content)\n\n return content\n }\n\n private initMenuItems(instance: TippyInstance): void {\n if (isIfable(instance.reference)) {\n const ifButton = instance.popper.querySelector('button[data-operation-menu-if]') as HTMLButtonElement\n Util.notNull(ifButton)\n ifButton.disabled = false\n\n this.ifTooltip = (ifButton as TippyReferenceElement)._tippy\n if (this.ifTooltip === undefined) {\n this.ifTooltip = tippy(ifButton, {\n animation: false,\n content: \"Set `if' Conditional\"\n })\n ifButton.addEventListener('mousedown', this.showIfInspector.bind(this))\n }\n }\n\n if (isAngleable(instance.reference)) {\n const angleButton = instance.popper.querySelector('button[data-operation-menu-angle]') as HTMLButtonElement\n Util.notNull(angleButton)\n angleButton.disabled = false\n\n this.angleTooltip = (angleButton as TippyReferenceElement)._tippy\n if (this.angleTooltip === undefined) {\n this.angleTooltip = tippy(angleButton, {\n animation: false,\n content: 'Change Angle'\n })\n angleButton.addEventListener('mousedown', this.showAngleInspector.bind(this))\n }\n }\n\n if (isFlaggable(instance.reference)) {\n const flagButton = instance.popper.querySelector('button[data-operation-menu-flag]') as HTMLButtonElement\n Util.notNull(flagButton)\n flagButton.disabled = false\n\n this.flagTooltip = (flagButton as TippyReferenceElement)._tippy\n if (this.flagTooltip === undefined) {\n this.flagTooltip = tippy(flagButton, {\n animation: false,\n content: 'Set Condifitonal Flag'\n })\n flagButton.addEventListener('mousedown', this.showFlagInspector.bind(this))\n }\n }\n\n const deleteMenuItem = instance.popper.querySelector('[data-operation-menu-delete]')\n Util.notNull(deleteMenuItem)\n\n this.deleteTooltip = (deleteMenuItem as TippyReferenceElement)._tippy\n if (this.deleteTooltip === undefined) {\n this.deleteTooltip = tippy(deleteMenuItem, {\n animation: false,\n content: 'Delete'\n })\n }\n deleteMenuItem.addEventListener('mousedown', this.destroyMenu.bind(this))\n deleteMenuItem.addEventListener('mousedown', this.dispatchOperationDeleteEvent.bind(this))\n }\n\n private showIfInspector(): void {\n this.hideMenu()\n this.dispatchEvent(new Event('operation-menu-if', {bubbles: true}))\n }\n\n private showAngleInspector(): void {\n this.hideMenu()\n this.dispatchEvent(new Event('operation-menu-angle', {bubbles: true}))\n }\n\n private showFlagInspector(): void {\n this.hideMenu()\n this.dispatchEvent(new Event('operation-menu-flag', {bubbles: true}))\n }\n\n private dispatchOperationDeleteEvent(): void {\n this.dispatchEvent(new Event('operation-delete', {bubbles: true}))\n }\n }\n\n return MenuableMixinClass as Constructor & TBase\n}\n", "import {ActivateableMixin, DraggableMixin, HelpableMixin, HoverableMixin, MenuableMixin} from './mixin/'\nimport {SerializedBlochDisplayType, Util} from '@qni/common'\nimport {attr, controller, target, targets} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport tippy, {Instance as TippyInstance, ReferenceElement as TippyReferenceElement, roundArrow} from 'tippy.js'\n\nexport class BlochDisplayElement extends MenuableMixin(\n HelpableMixin(DraggableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))\n) {\n @target body!: HTMLElement\n @target vectorLine!: HTMLElement\n @target vectorEnd!: HTMLElement\n @target vector!: HTMLElement\n @targets vectorEndCircles!: HTMLElement[]\n\n @attr x = 0\n @attr y = 0\n @attr z = 0\n\n get operationType(): typeof SerializedBlochDisplayType {\n return SerializedBlochDisplayType\n }\n\n showPopup(): void {\n this.showInspector()\n }\n\n private showInspector(): void {\n Util.notNull(this.parentElement)\n\n if (this.parentElement.tagName === 'PALETTE-DROPZONE') return\n\n const popupInstance = (this as TippyReferenceElement)._tippy\n if (popupInstance) popupInstance.destroy()\n\n const content = this.blochInspectorPopupContent()\n const popup = tippy(this as Element, {\n allowHTML: true,\n animation: false,\n arrow: roundArrow + roundArrow,\n delay: 0,\n placement: 'auto',\n theme: 'qni',\n onShow(instance: TippyInstance) {\n instance.setContent(content)\n }\n })\n popup.show()\n }\n\n private blochInspectorPopupContent() {\n const content = document.createDocumentFragment()\n\n render(\n html`\n \n \n\n \n r:\n ${this.forceSigned(this.d)}, \u03D5:\n ${this.forceSigned(this.phi, 2)}, \u03B8:\n ${this.forceSigned(this.theta, 2)}\n \n \n x:\n ${this.forceSigned(this.x)}, y:\n ${this.forceSigned(this.y)}, z:\n ${this.forceSigned(this.z)}\n \n
\n `,\n content\n )\n\n return content\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n this.updateBlochVector()\n this.addEventListener('mouseenter', this.showInspector)\n }\n\n disconnectedCallback(): void {\n const instance = (this as TippyReferenceElement)._tippy\n instance?.destroy()\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (!this.body) return\n if (oldValue === newValue) return\n\n if (newValue === null) return\n if (name === 'data-x') this.x = parseFloat(newValue)\n if (name === 'data-y') this.y = parseFloat(newValue)\n if (name === 'data-z') this.z = parseFloat(newValue)\n this.d = this.vectorLength()\n this.phi = this.phiRadian()\n this.theta = this.thetaRadian()\n\n this.updateBlochVector()\n }\n\n update(): void {\n this.d = this.vectorLength()\n this.phi = this.phiRadian()\n this.theta = this.thetaRadian()\n\n const vectorLineRect = (degree: number) => {\n return html``\n }\n\n const vectorEndCircle = (degree: number, axis: 'X' | 'Y') => {\n return html``\n }\n\n render(\n html`\n\n \n
\n
\n
\n
\n
\n
\n ${vectorLineRect(0)} ${vectorLineRect(20)} ${vectorLineRect(40)} ${vectorLineRect(60)}\n ${vectorLineRect(80)} ${vectorLineRect(100)} ${vectorLineRect(120)} ${vectorLineRect(140)}\n ${vectorLineRect(160)}\n
\n\n
\n ${vectorEndCircle(0, 'Y')} ${vectorEndCircle(20, 'Y')} ${vectorEndCircle(40, 'Y')}\n ${vectorEndCircle(60, 'Y')} ${vectorEndCircle(80, 'Y')} ${vectorEndCircle(100, 'Y')}\n ${vectorEndCircle(120, 'Y')} ${vectorEndCircle(140, 'Y')} ${vectorEndCircle(160, 'Y')}\n ${vectorEndCircle(90, 'X')}\n
\n
\n
\n
\n
`,\n this.shadowRoot!\n )\n }\n\n toJson(): string {\n return `\"${SerializedBlochDisplayType}\"`\n }\n\n private updateBlochVector(): void {\n const vectorEndCircleWidth = this.vectorEndCircles[0].offsetWidth\n\n this.vectorLine.style.height = `calc(${(100 * this.d) / 2}% - ${vectorEndCircleWidth / 2}px)`\n this.vectorEnd.style.bottom = `calc(50% + ${(100 * this.d) / 2}% + ${vectorEndCircleWidth / 2}px)`\n\n if (this.d !== 0) {\n this.vector.style.transform = `rotateY(${this.phi}deg) rotateX(${-this.theta}deg)`\n }\n\n const popupInstance = (this as TippyReferenceElement)._tippy\n popupInstance?.setContent(this.blochInspectorPopupContent())\n }\n\n private get d(): number {\n const dataD = this.getAttribute('data-d')\n Util.notNull(dataD)\n\n return parseFloat(dataD)\n }\n\n private set d(value: number) {\n this.setAttribute('data-d', value.toString())\n }\n\n private vectorLength(): number {\n return parseFloat(Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z).toFixed(4))\n }\n\n private set phi(value: number) {\n this.setAttribute('data-phi', value.toString())\n }\n\n private get phi(): number {\n const dataPhi = this.getAttribute('data-phi')\n Util.notNull(dataPhi)\n\n return parseFloat(dataPhi)\n }\n\n private phiRadian(): number {\n return (Math.atan2(this.y, this.x) * 180) / Math.PI\n }\n\n private set theta(value: number) {\n this.setAttribute('data-theta', value.toString())\n }\n\n private get theta(): number {\n const dataTheta = this.getAttribute('data-theta')\n Util.notNull(dataTheta)\n\n return parseFloat(dataTheta)\n }\n\n private thetaRadian(): number {\n const \u03B8 = Math.max(0, Math.PI / 2 - Math.atan2(this.z, Math.sqrt(this.y * this.y + this.x * this.x)))\n return (180 * \u03B8) / Math.PI\n }\n\n private forceSigned(value: number, digits = 4): string {\n return (value >= 0 ? '+' : '') + value.toFixed(digits)\n }\n}\n\ncontroller(BlochDisplayElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {SerializedControlGateType} from '@qni/common'\nimport controlGateIcon from '../icon/control-gate.svg'\nimport {controller} from '@github/catalyst'\n\nexport class ControlGateElement extends MenuableMixin(\n HelpableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n) {\n get operationType(): typeof SerializedControlGateType {\n return SerializedControlGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(controlGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n return `\"${SerializedControlGateType}\"`\n }\n}\n\ncontroller(ControlGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedHGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport hGateIcon from '../icon/h-gate.svg'\n\nexport type HGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class HGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedHGateType {\n return SerializedHGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(hGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedHGateType}<${this.if}\"`\n } else {\n return `\"${SerializedHGateType}\"`\n }\n }\n}\n\ncontroller(HGateElement)\n", "import {ActivateableMixin, DraggableMixin, HelpableMixin, HoverableMixin, IconableMixin, MenuableMixin} from './mixin/'\nimport {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {FlaggableMixin} from './mixin/flaggable'\nimport {SerializedMeasurementGateType} from '@qni/common'\nimport measurementGateIcon from '../icon/measurement-gate.svg'\n\nexport class MeasurementGateElement extends MenuableMixin(\n HelpableMixin(FlaggableMixin(DraggableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n) {\n @attr value = ''\n\n get operationType(): typeof SerializedMeasurementGateType {\n return SerializedMeasurementGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(\n html`\n ${this.iconHtml(measurementGateIcon)}\n
\n
`,\n this.shadowRoot!\n )\n }\n\n toJson(): string {\n if (this.flag === '') {\n return `\"${SerializedMeasurementGateType}\"`\n } else {\n return `\"${SerializedMeasurementGateType}>${this.flag}\"`\n }\n }\n}\n\ncontroller(MeasurementGateElement)\n", "import {\n ActivateableMixin,\n AngleableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedPhaseGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport phaseGateIcon from '../icon/phase-gate.svg'\n\nexport type PhaseGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class PhaseGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(\n AngleableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n )\n) {\n get operationType(): typeof SerializedPhaseGateType {\n return SerializedPhaseGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(phaseGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.angle === '') {\n return `\"${SerializedPhaseGateType}\"`\n } else {\n return `\"${SerializedPhaseGateType}(${this.angle.replace('/', '_')})\"`\n }\n }\n}\n\ncontroller(PhaseGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedRnotGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport rnotGateIcon from '../icon/rnot-gate.svg'\n\nexport type RnotGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class RnotGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedRnotGateType {\n return SerializedRnotGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(rnotGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedRnotGateType}<${this.if}\"`\n } else {\n return `\"${SerializedRnotGateType}\"`\n }\n }\n}\n\ncontroller(RnotGateElement)\n", "import {\n ActivateableMixin,\n AngleableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedRxGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport rxGateIcon from '../icon/rx-gate.svg'\n\nexport type RxGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class RxGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(\n AngleableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n )\n) {\n get operationType(): typeof SerializedRxGateType {\n return SerializedRxGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(rxGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.angle === '') {\n return `\"${SerializedRxGateType}\"`\n } else {\n return `\"${SerializedRxGateType}(${this.angle.replace('/', '_')})\"`\n }\n }\n}\n\ncontroller(RxGateElement)\n", "import {\n ActivateableMixin,\n AngleableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedRyGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport ryGateIcon from '../icon/ry-gate.svg'\n\nexport type RyGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class RyGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(\n AngleableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n )\n) {\n get operationType(): typeof SerializedRyGateType {\n return SerializedRyGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(ryGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.angle === '') {\n return `\"${SerializedRyGateType}\"`\n } else {\n return `\"${SerializedRyGateType}(${this.angle.replace('/', '_')})\"`\n }\n }\n}\n\ncontroller(RyGateElement)\n", "import {\n ActivateableMixin,\n AngleableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedRzGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport rzGateIcon from '../icon/rz-gate.svg'\n\nexport type RzGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class RzGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(\n AngleableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n )\n) {\n get operationType(): typeof SerializedRzGateType {\n return SerializedRzGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(rzGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.angle === '') {\n return `\"${SerializedRzGateType}\"`\n } else {\n return `\"${SerializedRzGateType}(${this.angle.replace('/', '_')})\"`\n }\n }\n}\n\ncontroller(RzGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedSwapGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport swapGateIcon from '../icon/swap-gate.svg'\n\nexport class SwapGateElement extends MenuableMixin(\n HelpableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n) {\n get operationType(): typeof SerializedSwapGateType {\n return SerializedSwapGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(swapGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n return `\"${SerializedSwapGateType}\"`\n }\n}\n\ncontroller(SwapGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedTGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport tGateIcon from '../icon/t-gate.svg'\n\nexport type TGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class TGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedTGateType {\n return SerializedTGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(tGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedTGateType}<${this.if}\"`\n } else {\n return `\"${SerializedTGateType}\"`\n }\n }\n}\n\ncontroller(TGateElement)\n", "import {ActivateableMixin, DraggableMixin, HelpableMixin, HoverableMixin, IconableMixin, MenuableMixin} from './mixin/'\nimport {SerializedWrite0GateType, SerializedWrite1GateType} from '@qni/common'\nimport {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport writeGateIcon from '../icon/write-gate.svg'\n\nexport class WriteGateElement extends MenuableMixin(\n HelpableMixin(DraggableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement)))))\n) {\n @attr value = ''\n\n get operationType(): typeof SerializedWrite0GateType | typeof SerializedWrite1GateType {\n switch (this.value) {\n case '0':\n return SerializedWrite0GateType\n case '1':\n return SerializedWrite1GateType\n default:\n throw new Error(`Invalid write value: ${this.value}`)\n }\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(\n html`\n ${this.iconHtml(writeGateIcon)}\n
\n
`,\n this.shadowRoot!\n )\n }\n\n toJson(): string {\n return `\"|${this.value}>\"`\n }\n}\n\ncontroller(WriteGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedXGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport xGateIcon from '../icon/x-gate.svg'\n\nexport type XGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class XGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedXGateType {\n return SerializedXGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(xGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedXGateType}<${this.if}\"`\n } else {\n return `\"${SerializedXGateType}\"`\n }\n }\n}\n\ncontroller(XGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedYGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport yGateIcon from '../icon/y-gate.svg'\n\nexport type YGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class YGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedYGateType {\n return SerializedYGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(yGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedYGateType}<${this.if}\"`\n } else {\n return `\"${SerializedYGateType}\"`\n }\n }\n}\n\ncontroller(YGateElement)\n", "import {\n ActivateableMixin,\n DisableableMixin,\n DraggableMixin,\n HelpableMixin,\n HoverableMixin,\n IconableMixin,\n IfableMixin,\n MenuableMixin\n} from './mixin/'\nimport {html, render} from '@github/jtml'\nimport {ControllableMixin} from './mixin/controllable'\nimport {SerializedZGateType} from '@qni/common'\nimport {controller} from '@github/catalyst'\nimport zGateIcon from '../icon/z-gate.svg'\n\nexport type ZGateElementProps = {\n targets: number[]\n disabled?: boolean\n}\n\nexport class ZGateElement extends MenuableMixin(\n HelpableMixin(\n IfableMixin(\n ControllableMixin(DraggableMixin(DisableableMixin(IconableMixin(ActivateableMixin(HoverableMixin(HTMLElement))))))\n )\n )\n) {\n get operationType(): typeof SerializedZGateType {\n return SerializedZGateType\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(html`${this.iconHtml(zGateIcon)}
`, this.shadowRoot!)\n }\n\n toJson(): string {\n if (this.if !== '') {\n return `\"${SerializedZGateType}<${this.if}\"`\n } else {\n return `\"${SerializedZGateType}\"`\n }\n }\n}\n\ncontroller(ZGateElement)\n", "import {BlochDisplayElement} from './bloch-display-element'\nimport {ControlGateElement} from './control-gate-element'\nimport {HGateElement} from './h-gate-element'\nimport {MeasurementGateElement} from './measurement-gate-element'\nimport {PhaseGateElement} from './phase-gate-element'\nimport {RnotGateElement} from './rnot-gate-element'\nimport {RxGateElement} from './rx-gate-element'\nimport {RyGateElement} from './ry-gate-element'\nimport {RzGateElement} from './rz-gate-element'\nimport {SwapGateElement} from './swap-gate-element'\nimport {TGateElement} from './t-gate-element'\nimport {WriteGateElement} from './write-gate-element'\nimport {XGateElement} from './x-gate-element'\nimport {YGateElement} from './y-gate-element'\nimport {ZGateElement} from './z-gate-element'\n\nexport type Operation =\n | HGateElement\n | XGateElement\n | YGateElement\n | ZGateElement\n | PhaseGateElement\n | TGateElement\n | RnotGateElement\n | RxGateElement\n | RyGateElement\n | RzGateElement\n | SwapGateElement\n | ControlGateElement\n | BlochDisplayElement\n | WriteGateElement\n | MeasurementGateElement\n\nexport const isOperation = (arg: unknown): arg is Operation =>\n arg instanceof HGateElement ||\n arg instanceof XGateElement ||\n arg instanceof YGateElement ||\n arg instanceof ZGateElement ||\n arg instanceof PhaseGateElement ||\n arg instanceof TGateElement ||\n arg instanceof RnotGateElement ||\n arg instanceof RxGateElement ||\n arg instanceof RyGateElement ||\n arg instanceof RzGateElement ||\n arg instanceof SwapGateElement ||\n arg instanceof ControlGateElement ||\n arg instanceof BlochDisplayElement ||\n arg instanceof WriteGateElement ||\n arg instanceof MeasurementGateElement\n\nexport const isHGateElement = (arg: unknown): arg is HGateElement =>\n arg !== undefined && arg !== null && arg instanceof HGateElement\n\nexport const isXGateElement = (arg: unknown): arg is XGateElement =>\n arg !== undefined && arg !== null && arg instanceof XGateElement\n\nexport const isYGateElement = (arg: unknown): arg is YGateElement =>\n arg !== undefined && arg !== null && arg instanceof YGateElement\n\nexport const isZGateElement = (arg: unknown): arg is ZGateElement =>\n arg !== undefined && arg !== null && arg instanceof ZGateElement\n\nexport const isPhaseGateElement = (arg: unknown): arg is PhaseGateElement =>\n arg !== undefined && arg !== null && arg instanceof PhaseGateElement\n\nexport const isTGateElement = (arg: unknown): arg is TGateElement =>\n arg !== undefined && arg !== null && arg instanceof TGateElement\n\nexport const isRnotGateElement = (arg: unknown): arg is RnotGateElement =>\n arg !== undefined && arg !== null && arg instanceof RnotGateElement\n\nexport const isRxGateElement = (arg: unknown): arg is RxGateElement =>\n arg !== undefined && arg !== null && arg instanceof RxGateElement\n\nexport const isRyGateElement = (arg: unknown): arg is RyGateElement =>\n arg !== undefined && arg !== null && arg instanceof RyGateElement\n\nexport const isRzGateElement = (arg: unknown): arg is RzGateElement =>\n arg !== undefined && arg !== null && arg instanceof RzGateElement\n\nexport const isSwapGateElement = (arg: unknown): arg is SwapGateElement =>\n arg !== undefined && arg !== null && arg instanceof SwapGateElement\n\nexport const isControlGateElement = (arg: unknown): arg is ControlGateElement =>\n arg !== undefined && arg !== null && arg instanceof ControlGateElement\n\nexport const isBlochDisplayElement = (arg: unknown): arg is BlochDisplayElement =>\n arg !== undefined && arg !== null && arg instanceof BlochDisplayElement\n\nexport const isWriteGateElement = (arg: unknown): arg is WriteGateElement =>\n arg !== undefined && arg !== null && arg instanceof WriteGateElement\n\nexport const isMeasurementGateElement = (arg: unknown): arg is MeasurementGateElement =>\n arg !== undefined && arg !== null && arg instanceof MeasurementGateElement\n", "export function isNumeric(value: string) {\n return /^-?\\d+$/.test(value)\n}\n", "import {Angleable, Ifable} from './mixin'\nimport {Operation, isOperation} from './operation'\nimport {html, render} from '@github/jtml'\nimport tippy, {Instance as TippyInstance} from 'tippy.js'\nimport {Flaggable} from './mixin/flaggable'\nimport {OperationInspectorElement} from './operation-inspector-element'\nimport {Util} from '@qni/common'\nimport {controller} from '@github/catalyst'\n\nexport class InspectorButtonElement extends HTMLElement {\n public popup!: TippyInstance\n\n get isInspectorShown(): boolean {\n return this.popup.state.isVisible\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n this.initPopup()\n this.addEventListener('mousedown', this.showPopup)\n document.addEventListener('click', this.maybeHidePopup.bind(this))\n }\n\n update(): void {\n render(html``, this.shadowRoot!)\n }\n\n showInspector(operation: Operation): void {\n this.showPopup()\n this.inspector.operation = operation\n }\n\n showIfInspector(operation: Ifable): void {\n this.showPopup()\n this.inspector.operation = operation\n window.setTimeout(() => {\n this.inspector.ifInput.focus()\n }, 0)\n }\n\n showAngleInspector(operation: Angleable): void {\n this.showPopup()\n this.inspector.operation = operation\n window.setTimeout(() => {\n this.inspector.angleInput.focus()\n }, 0)\n }\n\n showFlagInspector(operation: Flaggable): void {\n this.showPopup()\n this.inspector.operation = operation\n window.setTimeout(() => {\n this.inspector.flagInput.focus()\n }, 0)\n }\n\n get inspector(): OperationInspectorElement {\n const el = this.popup.popper.querySelector('operation-inspector')\n Util.notNull(el)\n\n return el as OperationInspectorElement\n }\n\n private initPopup() {\n this.popup = tippy(this, {\n allowHTML: true,\n animation: false,\n arrow: false,\n content: this.popupContent,\n interactive: true,\n offset: [0, 4],\n placement: 'bottom',\n theme: 'operation-inspector',\n trigger: 'manual',\n hideOnClick: false\n })\n }\n\n private showPopup(): void {\n this.popup.show()\n this.inspector.disableAllPanes()\n }\n\n private maybeHidePopup(event: Event): void {\n const clickedEl = event.target as HTMLElement\n\n if (\n !this.popup.popper.contains(clickedEl) &&\n !this.popup.reference.contains(clickedEl) &&\n !isOperation(clickedEl)\n ) {\n this.popup.hide()\n }\n }\n\n private get popupContent(): DocumentFragment {\n const template = document.querySelector('#operation-inspector-template') as HTMLTemplateElement\n Util.notNull(template)\n\n const node = template.content.cloneNode(true)\n const content = document.createDocumentFragment()\n\n render(html`${node}`, content)\n\n return content\n }\n}\n\ncontroller(InspectorButtonElement)\n", "import {DetailedError, Util, angleDenominator, describe, radian as radianOf} from '@qni/common'\nimport {Interpreter, createMachine, interpret} from 'xstate'\nimport {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {InteractEvent} from '@interactjs/types'\nimport interact from 'interactjs'\n\nexport const isAngleSliderElement = (arg: unknown): arg is AngleSliderElement =>\n arg !== null && arg instanceof AngleSliderElement\n\ntype AngleSliderContext = Record\ntype AngleSliderEvent = {type: 'SET_ANGLE'} | {type: 'SET_DENOMINATOR'} | {type: 'START_MOVE'} | {type: 'END_MOVE'}\n\nexport class AngleSliderElement extends HTMLElement {\n @attr angle = ''\n @attr radian = 0\n @attr denominator = 0\n @attr disabled = false\n @attr debug = false\n\n private snapAngles: {[radian: number]: string} = {}\n private angleSliderMachine = createMachine(\n {\n id: 'angle-slider',\n initial: 'idle',\n states: {\n idle: {\n on: {\n START_MOVE: {\n target: 'moving'\n },\n SET_ANGLE: {\n target: 'idle',\n actions: [\n 'setDenominatorByAngle',\n 'updateSnapAngles',\n 'setRadianInAngle',\n 'updateHandlePosition',\n 'dispatchUpdateEvent'\n ]\n },\n SET_DENOMINATOR: {\n target: 'idle',\n actions: ['validateDenominator', 'updateSnapAngles', 'setAngleInRadian']\n }\n }\n },\n moving: {\n on: {\n SET_ANGLE: {\n target: 'moving',\n actions: ['dispatchChangeEvent']\n },\n END_MOVE: {\n target: 'idle',\n actions: ['dispatchUpdateEvent']\n }\n }\n }\n }\n },\n {\n actions: {\n validateDenominator: () => {\n if (!Number.isInteger(this.denominator) || this.denominator <= 0) {\n throw new DetailedError('Bad denominator', this.denominator)\n }\n },\n setDenominatorByAngle: (_context, event) => {\n if (event.type !== 'SET_ANGLE') return\n\n this.denominator = angleDenominator(this.angle)\n },\n setAngleInRadian: (_context, event) => {\n if (event.type !== 'SET_DENOMINATOR') return\n\n const [, angle] = this.findSnapAngle(this.radian)\n this.angle = angle\n },\n setRadianInAngle: (_context, event) => {\n if (event.type !== 'SET_ANGLE') return\n\n const [radian] = this.findSnapAngle(radianOf(this.angle))\n this.radian = radian\n },\n updateSnapAngles: () => {\n this.updateSnapAngles()\n },\n updateHandlePosition: () => {\n this.left = (this.radian + 2 * Math.PI) / (4 * Math.PI)\n },\n dispatchChangeEvent: () => {\n this.dispatchEvent(new Event('angle-slider-change', {bubbles: true}))\n },\n dispatchUpdateEvent: () => {\n this.dispatchEvent(new Event('angle-slider-update', {bubbles: true}))\n }\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private angleSliderService!: Interpreter\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return\n if (newValue === null) return\n\n if (name === 'data-angle' && newValue !== '') {\n this.angleSliderService.send({type: 'SET_ANGLE'})\n }\n if (name === 'data-denominator' && this.angleSliderService !== undefined) {\n this.angleSliderService.send({type: 'SET_DENOMINATOR'})\n }\n }\n\n connectedCallback(): void {\n this.angleSliderService = interpret(this.angleSliderMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`circuit-step: ${describe(state.value)}`)\n }\n })\n .start()\n\n if (this.shadowRoot === null) {\n this.attachShadow({mode: 'open'})\n }\n this.update()\n this.updateSnapAngles()\n this.initInteraction()\n }\n\n disconnectedCallback(): void {\n interact(this).unset()\n }\n\n update(): void {\n render(\n html``,\n this.shadowRoot!\n )\n }\n\n private initInteraction(): void {\n interact(this).draggable({\n origin: 'self',\n modifiers: [\n interact.modifiers.restrict({\n restriction: 'self'\n })\n ],\n listeners: {\n start: this.startMove.bind(this),\n move: this.move.bind(this),\n end: this.endMove.bind(this)\n }\n })\n }\n\n private startMove(): void {\n this.angleSliderService.send({type: 'START_MOVE'})\n }\n\n private move(event: InteractEvent) {\n const sliderWidth = interact.getElementRect(event.target).width\n const proportion = event.pageX / sliderWidth\n\n this.left = proportion\n\n const radian = this.proportionToRadian(proportion)\n this.setAttribute('data-radian', radian.toString())\n\n const [, angle] = this.findSnapAngle(radian)\n\n if (this.angle !== angle) this.angle = angle\n }\n\n private endMove(): void {\n this.angleSliderService.send({type: 'END_MOVE'})\n }\n\n private updateSnapAngles(): void {\n if (this.denominator === 0) return\n\n const start = -2 * this.denominator\n const end = 2 * this.denominator\n const numerators = new Array(end - start + 1).fill(null).map((_, i) => i + start)\n\n this.snapAngles = {}\n for (const each of numerators) {\n if (this.denominator === 1) {\n if (each === 0) {\n this.snapAngles[0] = '0'\n } else if (each === 1) {\n this.snapAngles[Math.PI] = '\u03C0'\n } else if (each === -1) {\n this.snapAngles[-1 * Math.PI] = '-\u03C0'\n } else {\n this.snapAngles[each * Math.PI] = `${each}\u03C0`\n }\n } else {\n if (each === 0) {\n this.snapAngles[0] = '0'\n } else if (each === 1) {\n this.snapAngles[Math.PI / this.denominator] = `\u03C0/${this.denominator}`\n } else if (each === -1) {\n this.snapAngles[(-1 * Math.PI) / this.denominator] = `-\u03C0/${this.denominator}`\n } else {\n this.snapAngles[(each * Math.PI) / this.denominator] = `${each}\u03C0/${this.denominator}`\n }\n }\n }\n }\n\n private findSnapAngle(rad: number): [number, string] {\n let minDelta = null\n let snapRadian = null\n let snapAngle = null\n\n for (const each in this.snapAngles) {\n const delta = Math.abs(parseFloat(each) - rad)\n if (minDelta === null || delta < minDelta) {\n minDelta = delta\n snapRadian = parseFloat(each)\n snapAngle = this.snapAngles[each]\n }\n }\n Util.notNull(snapRadian)\n Util.notNull(snapAngle)\n\n return [snapRadian, snapAngle]\n }\n\n private proportionToRadian(proportion: number) {\n return (proportion - 0.5) * Math.PI * 4\n }\n\n private set left(proportion: number) {\n this.style.paddingLeft = `${proportion * 100}%`\n }\n}\n\ncontroller(AngleSliderElement)\n", "import {AngleSliderElement, isAngleSliderElement} from './angle-slider-element'\nimport {Angleable, Ifable, isAngleable, isIfable} from './mixin'\nimport {Flaggable, isFlaggable} from './mixin/flaggable'\nimport {Operation, isPhaseGateElement, isRxGateElement, isRyGateElement, isRzGateElement} from './operation'\nimport {Util, angleDenominator, isAngleGreaterThan, isAngleLessThan, isValidAngle, reduceAngle} from '@qni/common'\nimport {attr, controller, target} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {isNumeric} from './util'\n\nexport class OperationInspectorElement extends HTMLElement {\n @target ifInput!: HTMLInputElement\n @target angleInputLabel!: HTMLLabelElement\n @target angleInput!: HTMLInputElement\n @target angleSlider!: AngleSliderElement\n @target denominatorInput!: HTMLInputElement\n @target denominatorVariableLabel!: HTMLSpanElement\n @target denominatorLabel!: HTMLSpanElement\n @target reduceAngleFractionCheckbox!: HTMLInputElement\n @target flagInput!: HTMLInputElement\n\n @attr conditionalGatePaneDisabled = true\n @attr anglePaneDisabled = true\n @attr conditionalFlagPaneDisabled = true\n\n get if(): string {\n return this.ifInput.value\n }\n\n get angle(): string {\n return this.angleInput.value\n }\n\n get reducedAngle(): string {\n return reduceAngle(this.angleInput.value)\n }\n\n get reduceAngleFraction(): boolean {\n return this.reduceAngleFractionCheckbox.checked\n }\n\n get flag(): string {\n return this.flagInput.value\n }\n\n set operation(operation: Ifable | Angleable | Flaggable | Operation) {\n this.clear()\n this.disableAllPanes()\n\n if (isIfable(operation)) {\n this.conditionalGatePaneDisabled = false\n this.ifInput.value = operation.if\n }\n\n if (isAngleable(operation)) {\n const denominator = angleDenominator(operation.angle)\n\n if (isPhaseGateElement(operation)) {\n this.angleInputLabel.textContent = '\uD835\uDF11'\n this.denominatorVariableLabel.textContent = '\uD835\uDF11'\n } else if (isRxGateElement(operation) || isRyGateElement(operation) || isRzGateElement(operation)) {\n this.angleInputLabel.textContent = '\uD835\uDEF3'\n this.denominatorVariableLabel.textContent = '\uD835\uDEF3'\n }\n\n this.anglePaneDisabled = false\n this.angleInput.value = operation.angle\n this.backupCurrentPhi()\n this.angleSlider.angle = operation.angle\n this.denominatorInput.value = denominator.toString()\n this.denominatorLabel.textContent = denominator.toString()\n this.backupCurrentDenominator()\n this.reduceAngleFractionCheckbox.checked = operation.reducedAngle !== ''\n }\n\n if (isFlaggable(operation)) {\n this.conditionalFlagPaneDisabled = false\n this.flagInput.value = operation.flag\n }\n }\n\n private clear(): void {\n this.ifInput.value = ''\n this.angleInput.value = ''\n this.angleSlider.angle = ''\n this.denominatorInput.value = ''\n this.reduceAngleFractionCheckbox.checked = false\n this.flagInput.value = ''\n }\n\n disableAllPanes(): void {\n this.conditionalGatePaneDisabled = true\n this.anglePaneDisabled = true\n this.conditionalFlagPaneDisabled = true\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n\n this.addEventListener('angle-slider-change', this.changeAngle)\n this.addEventListener('angle-slider-update', this.updateAngle)\n this.ifInput.addEventListener('change', this.changeIf.bind(this))\n this.angleInput.addEventListener('change', this.updateAngleInput.bind(this))\n this.denominatorInput.addEventListener('change', this.changeDenominator.bind(this))\n this.reduceAngleFractionCheckbox.addEventListener('change', this.changeReduceSetting.bind(this))\n this.flagInput.addEventListener('change', this.changeFlag.bind(this))\n }\n\n update(): void {\n render(html``, this.shadowRoot!)\n }\n\n private changeAngle(event: Event): void {\n const angleSlider = event.target\n if (!isAngleSliderElement(angleSlider)) throw new Error(`${angleSlider} isn't an angle-slider`)\n\n this.angleInput.value = angleSlider.angle\n this.dispatchEvent(new Event('operation-inspector-angle-change', {bubbles: true}))\n }\n\n private updateAngle(event: Event): void {\n const angleSlider = event.target\n if (!isAngleSliderElement(angleSlider)) throw new Error(`${angleSlider} isn't an angle-slider`)\n\n this.angleInput.value = angleSlider.angle\n this.dispatchEvent(new Event('operation-inspector-angle-update', {bubbles: true}))\n }\n\n private backupCurrentPhi(): void {\n this.angleInput.setAttribute('data-original-value', this.angleInput.value)\n }\n\n private restoreOriginalPhi(): void {\n const value = this.angleInput.getAttribute('data-original-value')\n Util.notNull(value)\n\n this.angleInput.value = value\n }\n\n private changeIf(): void {\n this.dispatchEvent(new Event('operation-inspector-if-change', {bubbles: true}))\n }\n\n private updateAngleInput(): void {\n const angle = this.angleInput.value\n\n if (isValidAngle(angle)) {\n let newAngle: string\n const denominator = angleDenominator(angle)\n this.denominatorInput.value = denominator.toString()\n this.denominatorLabel.textContent = denominator.toString()\n this.backupCurrentDenominator()\n\n if (isAngleLessThan(angle, '-2\u03C0')) {\n const numerator = denominator * 2\n newAngle = `-${numerator}\u03C0/${denominator}`\n this.angleInput.value = newAngle\n } else if (isAngleGreaterThan(angle, '2\u03C0')) {\n const numerator = denominator * 2\n newAngle = `${numerator}\u03C0/${denominator}`\n this.angleInput.value = newAngle\n } else {\n newAngle = angle\n }\n this.backupCurrentPhi()\n this.angleSlider.angle = newAngle\n this.dispatchEvent(new Event('operation-inspector-angle-update', {bubbles: true}))\n } else {\n this.restoreOriginalPhi()\n }\n }\n\n private changeFlag(): void {\n this.dispatchEvent(new Event('operation-inspector-flag-change', {bubbles: true}))\n }\n\n private backupCurrentDenominator(): void {\n this.denominatorInput.setAttribute('data-original-value', this.denominatorInput.value)\n }\n\n private restoreOriginalDenominator(): void {\n const value = this.denominatorInput.getAttribute('data-original-value')\n Util.notNull(value)\n\n this.denominatorInput.value = value\n this.denominatorLabel.textContent = value\n }\n\n private changeDenominator(): void {\n const denominator = this.denominatorInput.value\n\n if (isNumeric(denominator) && parseInt(denominator) > 1) {\n this.denominatorLabel.textContent = denominator\n this.angleSlider.denominator = parseInt(denominator)\n this.angleInput.value = this.angleSlider.angle\n } else {\n this.restoreOriginalDenominator()\n }\n }\n\n private changeReduceSetting(): void {\n this.dispatchEvent(new Event('operation-inspector-angle-update', {bubbles: true}))\n }\n}\n\ncontroller(OperationInspectorElement)\n", "import {Complex, Util} from '@qni/common'\nimport {TemplateResult, html, render} from '@github/jtml'\nimport {attr, controller, targets} from '@github/catalyst'\nimport tippy, {Instance, ReferenceElement, createSingleton, roundArrow} from 'tippy.js'\n\nexport class CircleNotationElement extends HTMLElement {\n @attr qubitCount = 1\n @attr size = ''\n @attr magnitudes = '1.0'\n @attr phases = ''\n @attr multiQubits = false\n @attr showKets = false\n\n @targets qubitCircles!: HTMLElement[]\n @targets qubitCircleGroups!: HTMLElement[]\n @targets visibleQubitCircleGroups!: HTMLElement[]\n\n setAmplitudes(amplitudes: {[ket: number]: number | Complex}): void {\n const qubitCircles = this.qubitCircles\n\n for (const [i, each] of Object.entries(amplitudes)) {\n const qubitCircle = qubitCircles[parseInt(i)]\n Util.notNull(qubitCircle)\n\n const amplitude = Complex.from(each)\n\n qubitCircle.setAttribute('data-amplitude-real', amplitude.real.toString())\n qubitCircle.setAttribute('data-amplitude-imag', amplitude.imag.toString())\n\n const magnitude = amplitude.abs()\n this.setRoundedMagnitude(qubitCircle, magnitude)\n if (magnitude === 0) continue\n\n const phaseDeg = (amplitude.phase() / Math.PI) * 180\n this.setRoundedPhase(qubitCircle, phaseDeg)\n }\n }\n\n connectedCallback(): void {\n if (this.shadowRoot !== null) return\n this.attachShadow({mode: 'open'})\n this.update()\n this.initQubitCirclePopup(this.qubitCircles)\n\n if (this.hasAttribute('data-multi-qubits')) {\n this.startQubitCircleVisibilityObserver()\n this.dispatchLoadEvent()\n }\n }\n\n private dispatchLoadEvent(): void {\n this.dispatchEvent(\n new Event('circle-notation.load', {\n bubbles: true\n })\n )\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (this.shadowRoot === null) return\n if (oldValue === newValue) return\n\n if (name === 'data-qubit-count') {\n this.dispatchVisibilityChangedEvent()\n }\n }\n\n private startQubitCircleVisibilityObserver(): void {\n const options = {\n root: this,\n threshold: [0, 0.2]\n }\n const callback = (entries: IntersectionObserverEntry[]) => {\n for (const each of entries) {\n const group = each.target\n if (each.intersectionRatio >= 0.2) {\n group.setAttribute(\n 'data-targets',\n 'circle-notation.qubitCircleGroups circle-notation.visibleQubitCircleGroups'\n )\n this.dispatchVisibilityChangedEvent()\n } else if (each.intersectionRatio === 0) {\n group.setAttribute('data-targets', 'circle-notation.qubitCircleGroups')\n }\n }\n }\n const observer = new IntersectionObserver(callback, options)\n for (const each of this.qubitCircleGroups) {\n observer.observe(each)\n }\n }\n\n private dispatchVisibilityChangedEvent(): void {\n this.dispatchEvent(\n new CustomEvent('circle-notation-visibility-change', {\n detail: this.visibleQubitCircleKets,\n bubbles: true\n })\n )\n }\n\n private get visibleQubitCircleKets(): number[] {\n const maxKet = 2 ** this.qubitCount\n\n return this.visibleQubitCircles.map(each => parseInt(each.getAttribute('data-ket')!)).filter(each => each < maxKet)\n }\n\n get visibleQubitCircles(): HTMLElement[] {\n const groups = this.visibleQubitCircleGroups.map(\n each => Array.from(each.querySelectorAll('.qubit-circle')) as HTMLElement[]\n )\n return ([] as HTMLElement[]).concat(...groups)\n }\n\n update(): void {\n render(\n html`\n\n ${this.qubitCirclesHtml}
`,\n this.shadowRoot!\n )\n\n for (const [i, each] of (this.getAttribute('data-magnitudes') || '1.0').split(',').entries()) {\n this.setRoundedMagnitude(this.qubitCircles[i], parseFloat(each))\n }\n for (const [i, each] of (this.getAttribute('data-phases') || '').split(',').entries()) {\n const qubitCircle = this.qubitCircles[i]\n const phase = each ? parseFloat(each) : 0\n this.setRoundedPhase(qubitCircle, phase)\n const qubitCirclePhaseEl = qubitCircle!.querySelector('.qubit-circle__phase') as HTMLElement\n qubitCirclePhaseEl!.style.transform = `rotate(${-phase}deg)`\n }\n }\n\n private setRoundedMagnitude(qubitCircle: HTMLElement | null | undefined, magnitude: number): void {\n if (qubitCircle === null) return\n if (qubitCircle === undefined) return\n\n let roundedMag = Math.round(magnitude * 100)\n roundedMag = roundedMag < 10 ? (roundedMag === 0 ? 0 : 10) : Math.round(roundedMag / 10) * 10\n roundedMag = roundedMag / 100\n\n qubitCircle.setAttribute('data-magnitude', magnitude.toString())\n qubitCircle.setAttribute('data-rounded-magnitude', roundedMag.toString())\n }\n\n private setRoundedPhase(qubitCircle: HTMLElement | null | undefined, phase: number): void {\n if (qubitCircle === null) return\n if (qubitCircle === undefined) return\n\n let roundedPhase = Math.round(phase / 10) * 10\n if (roundedPhase < 0) roundedPhase = 360 + roundedPhase\n\n qubitCircle.setAttribute('data-phase', phase.toString())\n qubitCircle.setAttribute('data-rounded-phase', roundedPhase.toString())\n }\n\n private get qubitCirclesHtml(): TemplateResult {\n if (this.hasAttribute('data-multi-qubits')) return this.stateVectorHtml(10)\n\n return html`${this.qubitCircleHtml(0)} ${this.qubitCircleHtml(1)}`\n }\n\n private qubitCircleHtml(ket: number): TemplateResult {\n return html``\n }\n\n private stateVectorHtml(maxNqubit: number): TemplateResult {\n let stateVector = html``\n\n const groups = this.qubitCircleGroup(\n [...Array(2 ** maxNqubit).keys()],\n (qc256: number[]) => {\n return this.qubitCircleGroup(qc256, (qc128: number[]) => {\n return this.qubitCircleGroup(qc128, (qc64: number[]) => {\n return this.qubitCircleGroup(qc64, (qc32: number[]) => {\n return this.qubitCircleGroup(qc32, (qc16: number[]) => {\n return this.qubitCircleGroup(qc16, (qc8: number[]) => {\n return this.qubitCircleGroup(qc8)\n })\n })\n })\n })\n })\n },\n 256\n )\n\n for (const each of groups) {\n stateVector = html`${stateVector} ${each}`\n }\n\n return stateVector\n }\n\n private qubitCircleGroup(\n kets: number[],\n block?: (kets: number[]) => TemplateResult[],\n size: number = kets.length / 2\n ): TemplateResult[] {\n const arrayChunk = (numbers: number[], chunkSize = 1): number[][] => {\n return numbers.reduce(\n (acc: number[][], _value: number, index: number) =>\n index % chunkSize ? acc : [...acc, numbers.slice(index, index + chunkSize)],\n []\n )\n }\n\n return arrayChunk(kets, size).map(each => {\n let group = html``\n\n if (block) {\n for (const subGroup of block(each)) {\n group = html`${group} ${subGroup}`\n }\n } else {\n for (const ket of each) {\n group = html`${group} ${this.qubitCircleHtml(ket)}`\n }\n }\n\n if (size === 64) {\n return html`\n ${group}\n
`\n } else {\n return html`${group}
`\n }\n })\n }\n\n private initQubitCirclePopup(qubitCircles: HTMLElement[]): void {\n const tippyInstances = tippy(qubitCircles)\n\n createSingleton(tippyInstances, {\n allowHTML: true,\n animation: false,\n arrow: roundArrow + roundArrow,\n delay: 0,\n theme: 'qni'\n })\n }\n\n setPopupContent(event: MouseEvent): void {\n if (this.popupEl === null) return\n\n const qubitCircleEl = event.target as HTMLElement\n const ket = this.ketDecimal(qubitCircleEl)\n const dataAmpReal = qubitCircleEl.getAttribute('data-amplitude-real')\n const dataAmpImag = qubitCircleEl.getAttribute('data-amplitude-imag')\n const dataMagnitude = qubitCircleEl.getAttribute('data-magnitude')\n const dataPhase = qubitCircleEl.getAttribute('data-phase')\n\n let amplitude: Complex\n\n if (dataAmpReal === null || dataAmpImag === null) {\n amplitude = Complex.ZERO\n } else {\n amplitude = new Complex(parseFloat(dataAmpReal), parseFloat(dataAmpImag))\n }\n\n let phase\n\n if (dataMagnitude && parseFloat(dataMagnitude) === 0) {\n phase = 0\n } else {\n phase = dataPhase ? parseFloat(dataPhase) : 0\n }\n\n this.setQubitCirclePopupContent(\n this.popupEl!.content,\n qubitCircleEl,\n ket,\n amplitude,\n dataMagnitude ? parseFloat(dataMagnitude) : 0,\n phase,\n this.qubitCount\n )\n }\n\n private setQubitCirclePopupContent(\n popupFrag: DocumentFragment,\n qubitCircleEl: HTMLElement,\n ket: number,\n amplitude: Complex,\n magnitude: number,\n phase: number,\n nqubit: number\n ): void {\n const popup = (qubitCircleEl as ReferenceElement)._tippy as Instance\n popup.setContent(this.popupContent(popupFrag, ket, amplitude, magnitude, phase, nqubit))\n }\n\n private popupContent(\n popupFrag: DocumentFragment,\n ket: number,\n amplitude: Complex,\n magnitude: number,\n phase: number,\n nqubit: number\n ): string {\n const ketBinaryEl = popupFrag.querySelector('.circle-notation-popup__ket-binary')\n const ketDecimalEl = popupFrag.querySelector('.circle-notation-popup__ket-decimal')\n const amplitudeRealEl = popupFrag.querySelector('.circle-notation-popup__amplitude-real')\n const amplitudeImagEl = popupFrag.querySelector('.circle-notation-popup__amplitude-imag')\n const probabilityEl = popupFrag.querySelector('.circle-notation-popup__probability')\n const phaseEl = popupFrag.querySelector('.circle-notation-popup__phase')\n\n if (ketBinaryEl) {\n ketBinaryEl.textContent = ket.toString(2).padStart(nqubit, '0')\n }\n\n if (ketDecimalEl) {\n ketDecimalEl.textContent = ket.toString()\n }\n\n if (amplitudeRealEl) {\n amplitudeRealEl.textContent = this.forceSigned(amplitude.real, 5)\n }\n\n if (amplitudeImagEl) {\n amplitudeImagEl.textContent = `${this.forceSigned(amplitude.imag, 5)}i`\n }\n\n if (probabilityEl) {\n probabilityEl.textContent = `${this.forceSigned(magnitude * magnitude * 100, 4)}%`\n }\n\n if (phaseEl) {\n phaseEl.textContent = `${this.forceSigned(phase, 2)}\u00B0`\n }\n\n const div = document.createElement('div')\n div.appendChild(popupFrag.cloneNode(true))\n\n // eslint-disable-next-line github/no-inner-html\n return div.innerHTML\n }\n\n private get popupEl(): HTMLTemplateElement | null {\n return document.getElementById('circle-notation-popup') as HTMLTemplateElement\n }\n\n private forceSigned(value: number, d: number): string {\n return (value >= 0 ? '+' : '') + value.toFixed(d)\n }\n\n private ketDecimal(el: HTMLElement): number {\n const dataKet = el.getAttribute('data-ket')\n\n return parseInt(dataKet!)\n }\n}\n\ncontroller(CircleNotationElement)\n", "import {Interpreter, createMachine, interpret} from 'xstate'\nimport {TemplateResult, html, render} from '@github/jtml'\nimport {attr, controller, target} from '@github/catalyst'\nimport {describe} from '@qni/common'\nimport reloadIcon from '../icon/reload.svg'\nimport tailSpinIcon from '../icon/tail-spin.svg'\n\ntype RunCircuitButtonContext = Record\ntype RunCircuitButtonEvent = {type: 'FINISH'} | {type: 'CLICK'; clientX: number; clientY: number}\n\nexport class RunCircuitButtonElement extends HTMLElement {\n @attr running = false\n @attr debug = false\n\n @target body!: HTMLElement\n @target ripple: HTMLElement | undefined\n\n private runCircuitButtonMachine = createMachine(\n {\n id: 'run-circuit-button',\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n {target: 'idle', cond: 'isIdle'},\n {target: 'running', cond: 'isRunning'}\n ]\n },\n idle: {\n on: {\n CLICK: {\n target: 'running',\n actions: ['ripple', 'setRunningTrue', 'dispatchClickEvent']\n }\n }\n },\n running: {\n on: {\n FINISH: {\n target: 'idle',\n actions: ['setRunningFalse']\n }\n }\n }\n }\n },\n {\n actions: {\n setRunningFalse: () => {\n this.running = false\n },\n setRunningTrue: () => {\n this.running = true\n },\n ripple: (_context, event) => {\n if (event.type !== 'CLICK') return\n if (this.ripple) this.ripple.remove()\n\n const newRipple = document.createElement('span')\n newRipple.id = 'ripple'\n\n const diameter = Math.max(this.clientWidth, this.clientHeight)\n const radius = diameter / 2\n const rect = this.getBoundingClientRect()\n const left = rect.left + window.pageXOffset\n const top = rect.top + window.pageYOffset\n\n newRipple.setAttribute('part', 'ripple')\n newRipple.setAttribute('data-target', 'run-circuit-button.ripple')\n newRipple.style.width = newRipple.style.height = `${diameter}px`\n newRipple.style.left = `${event.clientX - (left + radius)}px`\n newRipple.style.top = `${event.clientY - (top + radius)}px`\n\n this.body.appendChild(newRipple)\n },\n dispatchClickEvent: () => {\n this.dispatchEvent(new Event('run-circuit-button-click', {bubbles: true}))\n }\n },\n guards: {\n isIdle: () => !this.running,\n isRunning: () => this.running\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private runCircuitButtonService!: Interpreter\n\n connectedCallback(): void {\n this.attachShadow({mode: 'open'})\n this.update()\n\n this.runCircuitButtonService = interpret(this.runCircuitButtonMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`run-circuit-button: ${describe(state.value)}`)\n }\n })\n .start()\n\n this.addEventListener('click', this.handleClickEvent)\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return\n\n if (name === 'data-running' && newValue !== null) {\n this.runCircuitButtonService.send({type: 'FINISH'})\n }\n }\n\n update(): void {\n render(\n html`\n\n ${this.reloadIcon} ${this.tailSpinIcon}
`,\n this.shadowRoot!\n )\n }\n\n private handleClickEvent(event: MouseEvent): void {\n this.runCircuitButtonService.send({type: 'CLICK', clientX: event.clientX, clientY: event.clientY})\n }\n\n private get reloadIcon(): TemplateResult {\n return html(([reloadIcon] as unknown) as TemplateStringsArray)\n }\n\n private get tailSpinIcon(): TemplateResult {\n return html(([tailSpinIcon] as unknown) as TemplateStringsArray)\n }\n}\n\ncontroller(RunCircuitButtonElement)\n", "import {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\n\n@controller\nexport class CircuitBlockElement extends HTMLElement {\n @attr comment = ''\n @attr finalized = false\n\n finalize(): void {\n this.finalized = true\n }\n\n connectedCallback(): void {\n this.attachShadow({mode: 'open'})\n this.update()\n }\n\n update(): void {\n render(\n html`\n \n \n
`,\n this.shadowRoot!\n )\n }\n}\n", "import {Interpreter, createMachine, interpret} from 'xstate'\nimport {Operation, isOperation} from './operation'\nimport {TemplateResult, html, render} from '@github/jtml'\nimport {attr, controller} from '@github/catalyst'\nimport {Util} from '@qni/common'\nimport interact from 'interactjs'\nimport wiresIcon from '../icon/wires.svg'\n\nexport const isCircuitDropzoneElement = (arg: unknown): arg is CircuitDropzoneElement =>\n arg !== undefined && arg !== null && arg instanceof CircuitDropzoneElement\n\ntype CircuitDropzoneContext = Record\ntype CircuitDropzoneEvent =\n | {type: 'INIT_OPERATION'; operation: Operation}\n | {type: 'SNAP_OPERATION'}\n | {type: 'UNSNAP_OPERATION'}\n | {type: 'DROP_OPERATION'}\n | {type: 'PUT_OPERATION'; operation: Operation}\n | {type: 'DELETE_OPERATION'; operation: Operation}\n\nexport class CircuitDropzoneElement extends HTMLElement {\n @attr operationName = ''\n @attr inputWireQuantum = false\n @attr outputWireQuantum = false\n @attr connectTop = false\n @attr connectBottom = false\n @attr shadow = false\n @attr debug = false\n\n private circuitDropzoneMachine = createMachine(\n {\n id: 'circuit-dropzone',\n initial: 'empty',\n states: {\n empty: {\n on: {\n INIT_OPERATION: {\n target: 'occupied',\n actions: ['initOperation']\n },\n SNAP_OPERATION: {\n target: 'snapped',\n actions: ['snapOperation']\n },\n PUT_OPERATION: {\n target: 'occupied',\n actions: ['putOperation']\n },\n DELETE_OPERATION: {\n target: 'empty',\n actions: ['deleteOperation', 'dispatchDeleteOperationEvent']\n }\n }\n },\n snapped: {\n on: {\n UNSNAP_OPERATION: {\n target: 'empty',\n actions: ['unsnapOperation']\n },\n DROP_OPERATION: {\n target: 'occupied',\n actions: ['dropOperation']\n }\n }\n },\n occupied: {\n entry: 'dispatchOccupiedEvent',\n on: {\n UNSNAP_OPERATION: {\n target: 'empty',\n actions: ['unsnapOperation']\n },\n DELETE_OPERATION: {\n target: 'empty',\n actions: ['deleteOperation', 'dispatchDeleteOperationEvent']\n }\n }\n }\n }\n },\n {\n actions: {\n snapOperation: () => {\n Util.notNull(this.operation)\n\n this.operationName = this.operation.tagName.toLocaleLowerCase()\n this.dispatchEvent(new Event('circuit-dropzone-snap', {bubbles: true}))\n },\n unsnapOperation: () => {\n this.operationName = ''\n this.dispatchEvent(new Event('circuit-dropzone-unsnap', {bubbles: true}))\n },\n dropOperation: () => {\n this.dispatchEvent(new Event('circuit-dropzone-drop', {bubbles: true}))\n },\n putOperation: (_context, event) => {\n if (event.type !== 'PUT_OPERATION') return\n\n this.append(event.operation)\n this.operationName = event.operation.tagName.toLocaleLowerCase()\n event.operation.snapped = true\n },\n initOperation: (_context, event) => {\n if (event.type !== 'INIT_OPERATION') return\n\n event.operation.snapped = true\n },\n deleteOperation: (_context, event) => {\n if (event.type !== 'DELETE_OPERATION') return\n\n this.operationName = ''\n this.removeChild(event.operation as Node)\n },\n dispatchOccupiedEvent: () => {\n this.dispatchEvent(new Event('circuit-dropzone-occupy', {bubbles: true}))\n },\n dispatchDeleteOperationEvent: () => {\n this.dispatchEvent(new Event('circuit-dropzone-operation-delete', {bubbles: true}))\n }\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private circuitDropzoneService!: Interpreter\n\n get noConnections(): boolean {\n return !this.connectTop && !this.connectBottom\n }\n\n get occupied(): boolean {\n return this.operationName !== ''\n }\n\n get operation(): Operation | null {\n const children = Array.from(this.children)\n const operations = children.filter((each): each is Operation => isOperation(each))\n\n switch (operations.length) {\n case 0:\n return null\n case 1:\n return operations[0]\n default:\n throw new Error('circuit-dropzone cannot hold multiple operations.')\n }\n }\n\n get snapTarget(): {x: number; y: number} {\n const rect = this.getBoundingClientRect()\n\n return {\n x: window.pageXOffset + rect.left + this.clientWidth / 2,\n y: window.pageYOffset + rect.top + this.clientHeight / 2\n }\n }\n\n toJson(): string | number {\n const operation = this.operation\n\n if (operation === null) {\n return '1'\n } else {\n return operation.toJson()\n }\n }\n\n connectedCallback(): void {\n this.circuitDropzoneService = interpret(this.circuitDropzoneMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`circuit-dropzone: ${state.value}`)\n }\n })\n .start()\n\n this.attachShadow({mode: 'open'})\n this.update()\n if (this.operation !== null) this.initOperation(this.operation)\n this.initDropzone()\n\n this.addEventListener('operation-snap', this.snapOperation)\n this.addEventListener('operation-unsnap', this.unsnapOperation)\n this.addEventListener('operation-end-dragging', this.dropOperation)\n this.addEventListener('operation-delete', this.deleteOperation)\n }\n\n update(): void {\n render(\n html`\n\n ${this.wireSvg}
`,\n this.shadowRoot!\n )\n }\n\n put(operation: Operation): void {\n this.circuitDropzoneService.send({type: 'PUT_OPERATION', operation})\n }\n\n private initOperation(operation: Operation): void {\n this.circuitDropzoneService.send({type: 'INIT_OPERATION', operation})\n }\n\n private initDropzone(): void {\n if (this.operation !== null) {\n this.operationName = this.operation.tagName.toLocaleLowerCase()\n }\n\n interact(this).dropzone({\n accept: '[data-draggable]',\n overlap: 'center'\n })\n }\n\n private snapOperation(): void {\n this.circuitDropzoneService.send({type: 'SNAP_OPERATION'})\n }\n\n private unsnapOperation(): void {\n this.circuitDropzoneService.send({type: 'UNSNAP_OPERATION'})\n }\n\n private dropOperation(): void {\n this.circuitDropzoneService.send({type: 'DROP_OPERATION'})\n }\n\n private deleteOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} isn't an Operation.`)\n this.circuitDropzoneService.send({type: 'DELETE_OPERATION', operation})\n }\n\n private get wireSvg(): TemplateResult {\n return html(([wiresIcon] as unknown) as TemplateStringsArray)\n }\n}\n\ncontroller(CircuitDropzoneElement)\n", "import {\n DetailedError,\n SerializedCircuitStep,\n SerializedHGate,\n SerializedMeasurementGate,\n SerializedPhaseGate,\n SerializedRnotGate,\n SerializedRxGate,\n SerializedRyGate,\n SerializedRzGate,\n SerializedSwapGate,\n SerializedTGate,\n SerializedXGate,\n SerializedYGate,\n SerializedZGate,\n Util,\n describe\n} from '@qni/common'\nimport {Interpreter, createMachine, interpret} from 'xstate'\nimport {\n Operation,\n isControlGateElement,\n isHGateElement,\n isOperation,\n isPhaseGateElement,\n isRnotGateElement,\n isRxGateElement,\n isRyGateElement,\n isRzGateElement,\n isSwapGateElement,\n isTGateElement,\n isXGateElement,\n isYGateElement,\n isZGateElement\n} from './operation'\nimport {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {BlochDisplayElement} from './bloch-display-element'\nimport {CircuitBlockElement} from './circuit-block-element'\nimport {CircuitDropzoneElement} from './circuit-dropzone-element'\nimport {ControlGateElement} from './control-gate-element'\nimport {HGateElement} from './h-gate-element'\nimport {MeasurementGateElement} from './measurement-gate-element'\nimport {PhaseGateElement} from './phase-gate-element'\nimport {RnotGateElement} from './rnot-gate-element'\nimport {RxGateElement} from './rx-gate-element'\nimport {RyGateElement} from './ry-gate-element'\nimport {RzGateElement} from './rz-gate-element'\nimport {SwapGateElement} from './swap-gate-element'\nimport {TGateElement} from './t-gate-element'\nimport {WriteGateElement} from './write-gate-element'\nimport {XGateElement} from './x-gate-element'\nimport {YGateElement} from './y-gate-element'\nimport {ZGateElement} from './z-gate-element'\nimport {isControllable} from './mixin/controllable'\n\nexport const isCircuitStepElement = (arg: unknown): arg is CircuitStepElement =>\n arg !== undefined && arg !== null && arg instanceof CircuitStepElement\n\ntype ConnectionProps = {\n // Controlled-H\n disableCh: boolean\n maxChControlGates: number\n maxChTargetGates: number\n // Controlled-NOT\n disableCnot: boolean\n maxCnotControlGates: number\n maxCnotTargetGates: number\n // Controlled-Y\n disableCy: boolean\n maxCyControlGates: number\n maxCyTargetGates: number\n // Controlled-Z\n disableCz: boolean\n maxCzControlGates: number\n maxCzTargetGates: number\n // Controlled-Phase\n disableCphase: boolean\n maxCphaseControlGates: number\n maxCphaseTargetGates: number\n // Controlled-T\n disableCt: boolean\n maxCtControlGates: number\n maxCtTargetGates: number\n // Controlled-\u221AX\n disableCrnot: boolean\n maxCrnotControlGates: number\n maxCrnotTargetGates: number\n // Controlled-Rx\n disableCrx: boolean\n maxCrxControlGates: number\n maxCrxTargetGates: number\n // Controlled-Ry\n disableCry: boolean\n maxCryControlGates: number\n maxCryTargetGates: number\n // Controlled-Rz\n disableCrz: boolean\n maxCrzControlGates: number\n maxCrzTargetGates: number\n // Controlled-Swap\n disableCswap: boolean\n maxCswapControlGates: number\n // Swap\n disableSwap: boolean\n // CZ\n disableControlControl: boolean\n maxControlControlTargetGates: number\n // CPHASE\n disablePhasePhase: boolean\n maxPhasePhaseTargetGates: number\n}\n\nconst groupBy = (\n array: readonly V[],\n getKey: (current: V, index: number, orig: readonly V[]) => K\n): Array<[K, V[]]> =>\n Array.from(\n array.reduce((map, current, index, orig) => {\n const key = getKey(current, index, orig)\n const list = map.get(key)\n if (list) {\n list.push(current)\n } else {\n map.set(key, [current])\n }\n return map\n }, new Map())\n )\n\ntype CircuitStepContext = Record\ntype CircuitStepEvent =\n | {type: 'ACTIVATE'}\n | {type: 'DEACTIVATE'}\n | {type: 'SET_BREAKPOINT'}\n | {type: 'UNSET_BREAKPOINT'}\n | {type: 'SNAP_DROPZONE'; dropzone: CircuitDropzoneElement}\n | {type: 'UNSNAP_DROPZONE'; dropzone: CircuitDropzoneElement}\n | {type: 'DELETE_OPERATION'; dropzone: CircuitDropzoneElement}\n | {type: 'OCCUPY_DROPZONE'; dropzone: CircuitDropzoneElement}\n | {type: 'UNSHADOW'}\n\nexport class CircuitStepElement extends HTMLElement {\n @attr active = false\n @attr breakpoint = false\n @attr shadow = false\n @attr keep = false\n @attr debug = false\n\n private circuitStepMachine = createMachine(\n {\n id: 'circuit-step',\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n {target: 'shadow', cond: 'isShadow'},\n {target: 'visible', cond: 'isVisible'}\n ]\n },\n shadow: {\n type: 'compound',\n initial: 'unknown',\n on: {\n SNAP_DROPZONE: {\n target: 'shadow',\n actions: ['setOperationBit', 'dispatchSnapEvent']\n },\n UNSNAP_DROPZONE: {\n target: 'shadow',\n actions: ['dispatchUnsnapEvent']\n },\n UNSHADOW: {\n target: 'visible',\n actions: ['unshadow']\n }\n },\n states: {\n unknown: {\n always: [\n {target: 'inactive', cond: 'isInactive'},\n {target: 'active', cond: 'isActive'}\n ]\n },\n inactive: {\n on: {\n ACTIVATE: {\n target: 'active'\n }\n }\n },\n active: {\n on: {\n DEACTIVATE: {\n target: 'inactive'\n }\n }\n }\n }\n },\n visible: {\n type: 'parallel',\n on: {\n SNAP_DROPZONE: {\n target: 'visible',\n actions: ['setOperationBit', 'dispatchSnapEvent']\n },\n UNSNAP_DROPZONE: {\n target: 'visible',\n actions: ['dispatchUnsnapEvent']\n },\n OCCUPY_DROPZONE: {\n target: 'visible',\n actions: ['setOperationBit']\n },\n DELETE_OPERATION: {\n target: 'visible',\n actions: ['dispatchDeleteOperationEvent']\n }\n },\n states: {\n activatable: {\n type: 'compound',\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n {target: 'inactive', cond: 'isInactive'},\n {target: 'active', cond: 'isActive'}\n ]\n },\n inactive: {\n on: {\n ACTIVATE: {\n target: 'active'\n }\n }\n },\n active: {\n on: {\n DEACTIVATE: {\n target: 'inactive'\n }\n }\n }\n }\n },\n breakpointable: {\n type: 'compound',\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n {target: 'breakpointOn', cond: 'isBreakpointOn'},\n {target: 'breakpointOff', cond: 'isBreakpointOff'}\n ]\n },\n breakpointOn: {\n on: {\n UNSET_BREAKPOINT: {\n target: 'breakpointOff'\n }\n }\n },\n breakpointOff: {\n on: {\n SET_BREAKPOINT: {\n target: 'breakpointOn'\n }\n }\n }\n }\n }\n }\n }\n }\n },\n {\n actions: {\n setOperationBit: (_context, event) => {\n if (event.type !== 'SNAP_DROPZONE' && event.type !== 'OCCUPY_DROPZONE') return\n\n const dropzone = event.dropzone\n const bit = this.bit(dropzone)\n Util.notNull(dropzone.operation)\n\n dropzone.operation.bit = bit\n },\n dispatchSnapEvent: (_context, event) => {\n if (event.type !== 'SNAP_DROPZONE') return\n\n this.dispatchEvent(\n new CustomEvent('circuit-step-snap', {\n detail: {dropzone: event.dropzone},\n bubbles: true\n })\n )\n },\n dispatchUnsnapEvent: (_context, event) => {\n if (event.type !== 'UNSNAP_DROPZONE') return\n\n this.dispatchEvent(\n new CustomEvent('circuit-step-unsnap', {\n detail: {dropzone: event.dropzone},\n bubbles: true\n })\n )\n },\n dispatchDeleteOperationEvent: (_context, event) => {\n if (event.type !== 'DELETE_OPERATION') return\n\n this.dispatchEvent(\n new CustomEvent('circuit-step-delete-operation', {\n detail: {dropzone: event.dropzone},\n bubbles: true\n })\n )\n },\n unshadow: () => {\n this.shadow = false\n }\n },\n guards: {\n isShadow: () => {\n return this.shadow\n },\n isVisible: () => {\n return !this.shadow\n },\n isActive: () => {\n return this.active\n },\n isInactive: () => {\n return !this.active\n },\n isBreakpointOn: () => {\n return this.breakpoint\n },\n isBreakpointOff: () => {\n return !this.breakpoint\n }\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private circuitStepService!: Interpreter\n\n get wireCount(): number {\n return this.dropzones.length\n }\n\n get isInBlock(): boolean {\n if (this.closest('circuit-block') === null) {\n return false\n }\n return true\n }\n\n get block(): CircuitBlockElement {\n const block = this.closest('circuit-block') as CircuitBlockElement\n\n return block!\n }\n\n connectedCallback(): void {\n this.circuitStepService = interpret(this.circuitStepMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`circuit-step: ${describe(state.value)}`)\n }\n })\n .start()\n\n this.addEventListener('mouseenter', this.dispatchMouseenterEvent)\n this.addEventListener('mouseleave', this.dispatchMouseleaveEvent)\n this.addEventListener('click', this.maybeDispatchClickEvent)\n this.addEventListener('circuit-dropzone-snap', this.snapDropzone)\n this.addEventListener('circuit-dropzone-unsnap', this.unsnapDropzone)\n this.addEventListener('circuit-dropzone-operation-delete', this.deleteOperation)\n this.addEventListener('circuit-dropzone-drop', this.unshadow)\n this.addEventListener('circuit-dropzone-occupy', this.occupyDropzone)\n\n this.attachShadow({mode: 'open'})\n this.updateOperationAttributes()\n this.update()\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return\n\n if (name === 'data-active') {\n if (newValue !== null) {\n this.circuitStepService.send({type: 'ACTIVATE'})\n } else {\n this.circuitStepService.send({type: 'DEACTIVATE'})\n }\n }\n\n if (name === 'data-breakpoint') {\n if (newValue !== null) {\n this.circuitStepService.send({type: 'SET_BREAKPOINT'})\n } else {\n this.circuitStepService.send({type: 'UNSET_BREAKPOINT'})\n }\n }\n\n if (name === 'data-shadow') {\n for (const each of this.dropzones) {\n if (newValue !== null) {\n each.shadow = true\n } else {\n each.shadow = false\n }\n }\n }\n }\n\n update(): void {\n render(html``, this.shadowRoot!)\n this.dispatchUpdateEvent()\n }\n\n updateOperationAttributes(connectionProps?: ConnectionProps): void {\n for (const each of this.dropzones) {\n each.connectTop = false\n each.connectBottom = false\n }\n\n const controlDropzones = this.controlGateDropzones\n const controllableDropzones = this.controllableDropzones(connectionProps)\n for (const each of controllableDropzones) {\n if (isControllable(each.operation)) each.operation.controls = []\n }\n\n this.updateSwapConnections(connectionProps)\n this.updatePhasePhaseConnections(connectionProps)\n\n if (controlDropzones.length === 0) return\n if (controlDropzones.length === 1 && controllableDropzones.length === 0) {\n const controlGate = controlDropzones[0].operation as ControlGateElement\n controlGate.disable()\n return\n }\n\n if (controllableDropzones.length === 0) {\n this.updateControlControlConnections(connectionProps)\n } else {\n this.updateControlledUConnections(connectionProps)\n }\n\n this.updateFreeDropzoneConnections(connectionProps)\n }\n\n private updateSwapConnections(connectionProps?: ConnectionProps): void {\n const disableSwap = connectionProps?.disableSwap\n const swapDropzones = this.swapGateDropzones\n\n if (swapDropzones.length !== 2 || disableSwap) {\n for (const each of swapDropzones) {\n const swapGate = each.operation as SwapGateElement\n swapGate.disable()\n }\n } else {\n for (const swap of swapDropzones) {\n const swapGate = swap.operation as SwapGateElement\n swapGate.enable()\n swap.connectTop = swapDropzones.some(each => this.bit(each) < this.bit(swap))\n swap.connectBottom = swapDropzones.some(each => this.bit(each) > this.bit(swap))\n }\n\n const swapBits = swapDropzones.map(each => this.bit(each))\n for (const dropzone of this.freeDropzones) {\n const minBit = Math.min(...swapBits)\n const maxBit = Math.max(...swapBits)\n if (minBit < this.bit(dropzone) && this.bit(dropzone) < maxBit) {\n dropzone.connectTop = true\n dropzone.connectBottom = true\n }\n }\n }\n }\n\n private updatePhasePhaseConnections(connectionProps?: ConnectionProps): void {\n if (connectionProps?.disablePhasePhase) return\n\n const phaseDropzones = this.phaseGateDropzones\n\n for (const phaseDropzone of phaseDropzones) {\n const phaseGate = phaseDropzone.operation as PhaseGateElement\n if (phaseGate.angle === '') continue\n if (connectionProps !== undefined && connectionProps.maxPhasePhaseTargetGates === 1) continue\n\n let sameAnglePhaseBits = phaseDropzones\n .filter(each => {\n if (!isPhaseGateElement(each.operation)) throw new Error(`${each.operation} isn't a phase-gate element.`)\n return phaseGate.angle === each.operation.angle\n })\n .map(each => this.bit(each))\n if (connectionProps !== undefined && connectionProps.maxPhasePhaseTargetGates > 1) {\n sameAnglePhaseBits = sameAnglePhaseBits.slice(0, connectionProps.maxPhasePhaseTargetGates)\n }\n\n if (!sameAnglePhaseBits.includes(this.bit(phaseDropzone))) continue\n\n phaseDropzone.connectTop = sameAnglePhaseBits.some(each => each < this.bit(phaseDropzone))\n phaseDropzone.connectBottom = sameAnglePhaseBits.some(each => each > this.bit(phaseDropzone))\n }\n\n for (const dropzone of this.freeDropzones) {\n const controlledPhaseDropzones = this.phaseGateDropzones.filter(each => each.connectTop || each.connectBottom)\n const controlledBits = controlledPhaseDropzones.map(each => this.bit(each))\n const minBit = Math.min(...controlledBits)\n const maxBit = Math.max(...controlledBits)\n\n if (minBit < this.bit(dropzone) && this.bit(dropzone) < maxBit) {\n dropzone.connectTop = true\n dropzone.connectBottom = true\n }\n }\n }\n\n private updateControlControlConnections(connectionProps?: ConnectionProps): void {\n const controlGateDropzones = this.controlGateDropzones\n let controlBits = controlGateDropzones.map(each => this.bit(each))\n let numControl = 0\n\n if (connectionProps !== undefined) {\n if (connectionProps.maxControlControlTargetGates === 1) {\n controlBits = []\n } else if (connectionProps.maxControlControlTargetGates > 1) {\n controlBits = controlBits.slice(0, connectionProps.maxControlControlTargetGates)\n }\n }\n\n for (const each of controlGateDropzones) {\n numControl += 1\n\n const controlGate = each.operation as ControlGateElement\n\n if (connectionProps?.disableControlControl) {\n controlGate.disable()\n } else if (\n connectionProps !== undefined &&\n (connectionProps.maxControlControlTargetGates === 1 ||\n (connectionProps.maxControlControlTargetGates > 0 &&\n numControl > connectionProps.maxControlControlTargetGates))\n ) {\n controlGate.disable()\n } else {\n controlGate.enable()\n each.connectTop = controlBits.some(other => {\n return this.bit(each) > other\n })\n each.connectBottom = controlBits.some(other => {\n return this.bit(each) < other\n })\n }\n }\n }\n\n private updateControlledUConnections(connectionProps?: ConnectionProps): void {\n const controllableDropzones = this.controllableDropzones(connectionProps)\n const controlDropzones = this.controlGateDropzones\n const controllableOperationNames = [...new Set(controllableDropzones.map(each => each.operationName))]\n const numControlDropzones = this.numControlGateDropzones(connectionProps, controllableOperationNames)\n const allControlBits = controlDropzones.map(dz => this.bit(dz))\n const activeControlBits =\n numControlDropzones === null ? allControlBits : allControlBits.slice(0, numControlDropzones)\n const controllableBits = controllableDropzones.map(dz => this.bit(dz))\n const activeperationBits = activeControlBits.concat(controllableBits)\n\n for (const [i, each] of Object.entries(controlDropzones)) {\n const controlGate = each.operation as ControlGateElement\n\n each.connectBottom = activeperationBits.some(other => {\n return this.bit(each) < other\n })\n each.connectTop = activeperationBits.some(other => {\n return this.bit(each) > other\n })\n\n if (numControlDropzones === null || (numControlDropzones !== null && parseInt(i) < numControlDropzones)) {\n controlGate.enable()\n } else {\n each.connectTop = Math.max(...activeperationBits) > this.bit(each)\n controlGate.disable()\n }\n }\n\n for (const each of controllableDropzones) {\n if (!isControllable(each.operation)) throw new Error(`${each.operation} isn't controllable.`)\n\n each.operation.controls = this.controlBits(each, allControlBits, connectionProps)\n each.connectTop = activeperationBits.some(other => {\n return other < this.bit(each)\n })\n each.connectBottom = activeperationBits.some(other => {\n return other > this.bit(each)\n })\n }\n }\n\n private updateFreeDropzoneConnections(connectionProps?: ConnectionProps): void {\n const controllableDropzones = this.controllableDropzones(connectionProps)\n const activeControlBits = this.controlGateDropzones\n .filter(each => isControlGateElement(each.operation) && !each.operation.disabled)\n .map(each => this.bit(each))\n const controllableBits = controllableDropzones.map(dz => this.bit(dz))\n const activeOperationBits = activeControlBits.concat(controllableBits)\n\n const minBit = Math.min(...activeOperationBits)\n const maxBit = Math.max(...activeOperationBits)\n\n for (const each of this.freeDropzones) {\n if (minBit < this.bit(each) && this.bit(each) < maxBit) {\n each.connectTop = true\n each.connectBottom = true\n }\n }\n }\n\n private controlBits(\n dropzone: CircuitDropzoneElement,\n allControlBits: number[],\n connectionProps?: ConnectionProps\n ): number[] {\n let bits = allControlBits\n\n if (connectionProps) {\n if (connectionProps.maxChControlGates > 0 && dropzone.operationName === 'h-gate') {\n bits = allControlBits.slice(0, connectionProps.maxChControlGates)\n } else if (connectionProps.maxCnotControlGates > 0 && dropzone.operationName === 'x-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCnotControlGates)\n } else if (connectionProps.maxCyControlGates > 0 && dropzone.operationName === 'y-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCyControlGates)\n } else if (connectionProps.maxCzControlGates > 0 && dropzone.operationName === 'z-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCzControlGates)\n } else if (connectionProps.maxCphaseControlGates > 0 && dropzone.operationName === 'phase-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCphaseControlGates)\n } else if (connectionProps.maxCtControlGates > 0 && dropzone.operationName === 't-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCtControlGates)\n } else if (connectionProps.maxCrnotControlGates > 0 && dropzone.operationName === 'rnot-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCrnotControlGates)\n } else if (connectionProps.maxCrxControlGates > 0 && dropzone.operationName === 'rx-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCrxControlGates)\n } else if (connectionProps.maxCryControlGates > 0 && dropzone.operationName === 'ry-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCryControlGates)\n } else if (connectionProps.maxCrzControlGates > 0 && dropzone.operationName === 'rz-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCrzControlGates)\n } else if (connectionProps.maxCswapControlGates > 0 && dropzone.operationName === 'swap-gate') {\n bits = allControlBits.slice(0, connectionProps.maxCswapControlGates)\n }\n }\n\n return bits\n }\n\n bit(dropzone: CircuitDropzoneElement): number {\n const bit = this.dropzones.indexOf(dropzone)\n Util.need(bit !== -1, 'circuit-dropzone not found.')\n\n return bit\n }\n\n get isEmpty(): boolean {\n if (this.keep) return false\n return this.dropzones.every(each => !each.occupied)\n }\n\n dropzoneAt(dropzoneIndex: number): CircuitDropzoneElement {\n const dropzone = this.dropzones[dropzoneIndex]\n Util.notNull(dropzone)\n\n return dropzone\n }\n\n get dropzones(): CircuitDropzoneElement[] {\n return Array.from(this.querySelectorAll('circuit-dropzone')) as CircuitDropzoneElement[]\n }\n\n get freeDropzones(): CircuitDropzoneElement[] {\n return this.dropzones.filter(each => !each.occupied)\n }\n\n get lastDropzone(): CircuitDropzoneElement {\n return this.dropzones[this.wireCount - 1]\n }\n\n appendDropzone(): CircuitDropzoneElement {\n const dropzone = new CircuitDropzoneElement()\n dropzone.shadow = this.shadow\n this.append(dropzone)\n return dropzone\n }\n\n appendOperation(operation: Operation): void {\n const dropzone = new CircuitDropzoneElement()\n this.append(dropzone)\n dropzone.put(operation)\n }\n\n private get swapGateDropzones(): CircuitDropzoneElement[] {\n return this.dropzones.filter(each => each.occupied).filter(each => each.operationName === 'swap-gate')\n }\n\n private get phaseGateDropzones(): CircuitDropzoneElement[] {\n return this.dropzones.filter(each => each.occupied).filter(each => each.operationName === 'phase-gate')\n }\n\n private get controlGateDropzones(): CircuitDropzoneElement[] {\n return this.dropzones.filter(each => each.occupied && isControlGateElement(each.operation))\n }\n\n private numControlGateDropzones(\n props: ConnectionProps | undefined,\n controllableOperationNames: string[]\n ): number | null {\n if (props === undefined) return null\n\n let ndropzones = 0\n if (controllableOperationNames.includes('h-gate') && !props.disableCh && props.maxChControlGates > ndropzones) {\n ndropzones = props.maxChControlGates\n }\n if (controllableOperationNames.includes('x-gate') && !props.disableCnot && props.maxCnotControlGates > ndropzones) {\n ndropzones = props.maxCnotControlGates\n }\n if (controllableOperationNames.includes('y-gate') && !props.disableCy && props.maxCyControlGates > ndropzones) {\n ndropzones = props.maxCyControlGates\n }\n if (controllableOperationNames.includes('z-gate') && !props.disableCz && props.maxCzControlGates > ndropzones) {\n ndropzones = props.maxCzControlGates\n }\n if (\n controllableOperationNames.includes('phase-gate') &&\n !props.disableCphase &&\n props.maxCphaseControlGates > ndropzones\n ) {\n ndropzones = props.maxCphaseControlGates\n }\n if (controllableOperationNames.includes('t-gate') && !props.disableCt && props.maxCtControlGates > ndropzones) {\n ndropzones = props.maxCtControlGates\n }\n if (\n controllableOperationNames.includes('rnot-gate') &&\n !props.disableCrnot &&\n props.maxCrnotControlGates > ndropzones\n ) {\n ndropzones = props.maxCrnotControlGates\n }\n if (controllableOperationNames.includes('rx-gate') && !props.disableCrx && props.maxCrxControlGates > ndropzones) {\n ndropzones = props.maxCrxControlGates\n }\n if (controllableOperationNames.includes('ry-gate') && !props.disableCry && props.maxCryControlGates > ndropzones) {\n ndropzones = props.maxCryControlGates\n }\n if (controllableOperationNames.includes('rz-gate') && !props.disableCrz && props.maxCrzControlGates > ndropzones) {\n ndropzones = props.maxCrzControlGates\n }\n if (\n controllableOperationNames.includes('swap-gate') &&\n !props.disableCswap &&\n props.maxCswapControlGates > ndropzones\n ) {\n ndropzones = props.maxCswapControlGates\n }\n\n if (ndropzones === 0) return null\n return ndropzones\n }\n\n private controllableDropzones(connectionProps: ConnectionProps | undefined): CircuitDropzoneElement[] {\n let numH = 0\n let numX = 0\n let numY = 0\n let numZ = 0\n let numPhase = 0\n let numT = 0\n let numRnot = 0\n let numRx = 0\n let numRy = 0\n let numRz = 0\n\n return this.dropzones\n .filter(each => each.occupied)\n .filter(each => isControllable(each.operation))\n .filter(each => {\n if (connectionProps === undefined) return true\n\n if (isHGateElement(each.operation)) {\n numH += 1\n if (connectionProps.maxChTargetGates !== 0 && numH > connectionProps.maxChTargetGates) {\n return false\n }\n return !connectionProps.disableCh\n }\n if (isXGateElement(each.operation)) {\n numX += 1\n if (connectionProps.maxCnotTargetGates !== 0 && numX > connectionProps.maxCnotTargetGates) {\n return false\n }\n return !connectionProps.disableCnot\n }\n if (isYGateElement(each.operation)) {\n numY += 1\n if (connectionProps.maxCyTargetGates !== 0 && numY > connectionProps.maxCyTargetGates) {\n return false\n }\n return !connectionProps.disableCy\n }\n if (isZGateElement(each.operation)) {\n numZ += 1\n if (connectionProps.maxCzTargetGates !== 0 && numZ > connectionProps.maxCzTargetGates) {\n return false\n }\n return !connectionProps.disableCz\n }\n if (isPhaseGateElement(each.operation)) {\n numPhase += 1\n if (connectionProps.maxCphaseTargetGates !== 0 && numPhase > connectionProps.maxCphaseTargetGates) {\n return false\n }\n return !connectionProps.disableCphase\n }\n if (isTGateElement(each.operation)) {\n numT += 1\n if (connectionProps.maxCtTargetGates !== 0 && numT > connectionProps.maxCtTargetGates) {\n return false\n }\n return !connectionProps.disableCt\n }\n if (isRnotGateElement(each.operation)) {\n numRnot += 1\n if (connectionProps.maxCrnotTargetGates !== 0 && numRnot > connectionProps.maxCrnotTargetGates) {\n return false\n }\n return !connectionProps.disableCrnot\n }\n if (isRxGateElement(each.operation)) {\n numRx += 1\n if (connectionProps.maxCrxTargetGates !== 0 && numRx > connectionProps.maxCrxTargetGates) {\n return false\n }\n return !connectionProps.disableCrx\n }\n if (isRyGateElement(each.operation)) {\n numRy += 1\n if (connectionProps.maxCryTargetGates !== 0 && numRy > connectionProps.maxCryTargetGates) {\n return false\n }\n return !connectionProps.disableCry\n }\n if (isRzGateElement(each.operation)) {\n numRz += 1\n if (connectionProps.maxCrzTargetGates !== 0 && numRz > connectionProps.maxCrzTargetGates) {\n return false\n }\n return !connectionProps.disableCrz\n }\n if (isSwapGateElement(each.operation)) return !connectionProps.disableCswap\n\n return true\n })\n }\n\n private dispatchUpdateEvent(): void {\n this.dispatchEvent(new Event('circuit-step-update', {bubbles: true}))\n }\n\n private deleteOperation(event: Event): void {\n const dropzone = event.target as CircuitDropzoneElement\n this.circuitStepService.send({type: 'DELETE_OPERATION', dropzone})\n }\n\n private dispatchMouseenterEvent(): void {\n this.dispatchEvent(new Event('circuit-step-mouseenter', {bubbles: true}))\n }\n\n private dispatchMouseleaveEvent(): void {\n this.dispatchEvent(new Event('circuit-step-mouseleave', {bubbles: true}))\n }\n\n private maybeDispatchClickEvent(event: MouseEvent): void {\n if (isOperation(event.target)) return\n\n this.dispatchEvent(new Event('circuit-step-click', {bubbles: true}))\n }\n\n private snapDropzone(event: Event): void {\n const dropzone = event.target as CircuitDropzoneElement\n this.circuitStepService.send({type: 'SNAP_DROPZONE', dropzone})\n }\n\n private unsnapDropzone(event: Event): void {\n const dropzone = event.target as CircuitDropzoneElement\n this.circuitStepService.send({type: 'UNSNAP_DROPZONE', dropzone})\n }\n\n private unshadow(): void {\n this.circuitStepService.send({type: 'UNSHADOW'})\n }\n\n private occupyDropzone(event: Event): void {\n const dropzone = event.target as CircuitDropzoneElement\n this.circuitStepService.send({type: 'OCCUPY_DROPZONE', dropzone})\n }\n\n serialize(): SerializedCircuitStep {\n const serializedStep: SerializedCircuitStep = []\n\n for (const [klass, sameOps] of groupBy(this.operations, op => op.constructor)) {\n switch (klass) {\n case HGateElement: {\n const hGates = sameOps as HGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(hGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedHGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case XGateElement: {\n const xGates = sameOps as XGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(xGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedXGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case YGateElement: {\n const yGates = sameOps as YGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(yGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedYGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case ZGateElement: {\n const zGates = sameOps as ZGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(zGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedZGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case PhaseGateElement: {\n const phaseGates = sameOps as PhaseGateElement[]\n for (const [angle, sameAngleGates] of groupBy(phaseGates, gate => gate.angle)) {\n for (const [ifStr, sameIfGates] of groupBy(sameAngleGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedPhaseGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (angle !== '') serializedGate.angle = angle\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n }\n break\n }\n case TGateElement: {\n const tGates = sameOps as TGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(tGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedTGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case RnotGateElement: {\n const rnotGates = sameOps as RnotGateElement[]\n for (const [ifStr, sameIfGates] of groupBy(rnotGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedRnotGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n break\n }\n case RxGateElement: {\n const rxGates = sameOps as RxGateElement[]\n for (const [angle, sameAngleGates] of groupBy(rxGates, gate => gate.angle)) {\n for (const [ifStr, sameIfGates] of groupBy(sameAngleGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedRxGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (angle !== '') serializedGate.angle = angle\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n }\n break\n }\n case RyGateElement: {\n const ryGates = sameOps as RyGateElement[]\n for (const [angle, sameAngleGates] of groupBy(ryGates, gate => gate.angle)) {\n for (const [ifStr, sameIfGates] of groupBy(sameAngleGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedRyGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (angle !== '') serializedGate.angle = angle\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n }\n break\n }\n case RzGateElement: {\n const rzGates = sameOps as RzGateElement[]\n for (const [angle, sameAngleGates] of groupBy(rzGates, gate => gate.angle)) {\n for (const [ifStr, sameIfGates] of groupBy(sameAngleGates, gate => gate.if)) {\n for (const [controlsStr, sameControlGates] of groupBy(sameIfGates, gate => gate.controls.toString())) {\n const gate0 = sameControlGates[0]\n const opType = gate0.operationType\n const targets = sameControlGates.map(each => each.bit)\n const serializedGate: SerializedRzGate = {type: opType, targets}\n if (ifStr !== '') serializedGate.if = ifStr\n if (angle !== '') serializedGate.angle = angle\n if (controlsStr !== '') serializedGate.controls = gate0.controls\n serializedStep.push(serializedGate)\n }\n }\n }\n break\n }\n case SwapGateElement: {\n const swapGates = (sameOps as SwapGateElement[]).filter(each => !each.disabled)\n if (swapGates.length !== 2) break\n\n const opType = swapGates[0].operationType\n const controls = swapGates[0].controls\n const serializedGate: SerializedSwapGate = {type: opType, targets: [swapGates[0].bit, swapGates[1].bit]}\n if (controls !== undefined && controls.length > 0) serializedGate.controls = controls\n serializedStep.push(serializedGate)\n break\n }\n case ControlGateElement: {\n const controlGates = (sameOps as ControlGateElement[]).filter(each => !each.disabled)\n if (controlGates.length < 2) break\n if (this.operations.some(each => isControllable(each) && each.controls.length > 0)) break\n\n const targets = controlGates.map(each => each.bit)\n serializedStep.push({type: controlGates[0].operationType, targets})\n break\n }\n case BlochDisplayElement: {\n const blochDisplays = sameOps as BlochDisplayElement[]\n const targets = sameOps.map(each => each.bit)\n serializedStep.push({type: blochDisplays[0].operationType, targets})\n break\n }\n case WriteGateElement: {\n const writeGates = sameOps as WriteGateElement[]\n for (const [, sameValueGates] of groupBy(writeGates, gate => gate.value)) {\n const targets = sameValueGates.map(each => each.bit)\n serializedStep.push({type: sameValueGates[0].operationType, targets})\n }\n break\n }\n case MeasurementGateElement: {\n const measurementGates = sameOps as MeasurementGateElement[]\n for (const [flag, sameFlagGates] of groupBy(measurementGates, gate => gate.flag)) {\n const targets = sameFlagGates.map(each => each.bit)\n const opType = sameFlagGates[0].operationType\n const serializedGate: SerializedMeasurementGate = {type: opType, targets}\n if (flag !== '') serializedGate.flag = flag\n serializedStep.push(serializedGate)\n }\n break\n }\n default:\n throw new DetailedError('Unrecognized operation', {klass})\n }\n }\n return serializedStep\n }\n\n private get operations(): Operation[] {\n return this.dropzones\n .filter(each => each.occupied)\n .map(each => each.operation)\n .filter((each): each is NonNullable => each !== null)\n }\n\n toJson(): string {\n const jsons = this.dropzones.map(each => each.toJson())\n while (jsons.length > 0 && jsons[jsons.length - 1] === '1') {\n jsons.pop()\n }\n if (jsons.length === 0) {\n return '[1]'\n }\n return `[${jsons.join(',')}]`\n }\n}\n\ncontroller(CircuitStepElement)\n", "import {Angleable, Flaggable, Ifable, isAngleable, isIfable, isMenuable} from './mixin'\nimport {CircuitStepElement, isCircuitStepElement} from './circuit-step-element'\nimport {Interpreter, createMachine, interpret} from 'xstate'\nimport {Operation, isOperation} from './operation'\nimport {Util, describe} from '@qni/common'\nimport {attr, controller, target} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {InspectorButtonElement} from './inspector-button-element'\nimport {OperationInspectorElement} from './operation-inspector-element'\nimport {QuantumCircuitElement} from './quantum-circuit-element'\nimport {isFlaggable} from './mixin/flaggable'\n\ntype CircuitEditorContext = Record\ntype CircuitEditorEvent =\n | {type: 'ACTIVATE_OPERATION'; operation: Operation}\n | {type: 'SHOW_OPERATION_MENU'; operation: Operation}\n | {type: 'SHOW_OPERATION_INSPECTOR_IF'; operation: Ifable}\n | {type: 'SHOW_OPERATION_INSPECTOR_ANGLE'; operation: Angleable}\n | {type: 'SHOW_OPERATION_INSPECTOR_FLAG'; operation: Flaggable}\n | {type: 'SET_OPERATION_IF'; operation: Ifable; if: string}\n | {type: 'SET_OPERATION_ANGLE'; operation: Angleable; angle: string; reducedAngle: string}\n | {type: 'SET_OPERATION_FLAG'; operation: Flaggable; flag: string}\n | {type: 'GRAB_OPERATION'; operation: Operation}\n | {type: 'UNGRAB_OPERATION'; operation: Operation}\n | {type: 'END_DRAGGING_OPERATION'; operation: Operation}\n | {type: 'DROP_OPERATION'; operation: Operation}\n | {type: 'DELETE_OPERATION'}\n | {type: 'OPERATION_IN_SNAP_RANGE'; operation: Operation; x: number; y: number}\n | {type: 'MOUSE_ENTER_STEP'; step: CircuitStepElement}\n | {type: 'MOUSE_LEAVE_STEP'; step: CircuitStepElement}\n | {type: 'MOUSE_LEAVE_CIRCUIT'}\n | {type: 'CLICK_STEP'; step: CircuitStepElement}\n | {type: 'SNAP_STEP'; step: CircuitStepElement}\n | {type: 'UNSNAP_STEP'; step: CircuitStepElement}\n\nexport class CircuitEditorElement extends HTMLElement {\n @attr debug = false\n\n @target circuit!: QuantumCircuitElement\n @target inspectorButton!: InspectorButtonElement\n\n private circuitEditorMachine = createMachine(\n {\n id: 'circuit-editor',\n initial: 'inspectable',\n states: {\n inspectable: {\n type: 'compound',\n initial: 'unknown',\n on: {\n DROP_OPERATION: {\n target: 'inspectable',\n actions: ['initOperationMenu', 'resizeCircuit']\n },\n ACTIVATE_OPERATION: {\n target: 'inspectable',\n actions: ['maybeUpdateOperationInspector']\n },\n DELETE_OPERATION: {\n target: 'inspectable',\n actions: ['resizeCircuit']\n }\n },\n states: {\n unknown: {\n always: [\n {target: 'idle', cond: 'isIdle'},\n {target: 'editing', cond: 'isEditing'}\n ]\n },\n idle: {\n entry: 'enableDragging',\n on: {\n GRAB_OPERATION: {\n target: 'editing',\n actions: [\n 'startCircuitEdit',\n 'setOperationActive',\n 'addDocumentCursorGrabbingStyle',\n 'maybeAppendCircuitWire',\n 'setSnapTargets'\n ]\n },\n CLICK_STEP: {\n target: 'idle',\n actions: ['setBreakpoint']\n },\n MOUSE_ENTER_STEP: {\n target: 'idle',\n actions: ['activateStep']\n },\n MOUSE_LEAVE_STEP: {\n target: 'idle',\n actions: ['deactivateStep']\n },\n MOUSE_LEAVE_CIRCUIT: {\n target: 'idle',\n actions: ['deactivateAllSteps']\n },\n SHOW_OPERATION_MENU: {\n target: 'idle',\n actions: ['showOperationMenu']\n },\n SHOW_OPERATION_INSPECTOR_IF: {\n target: 'idle',\n actions: ['showOperationInspectorIf']\n },\n SHOW_OPERATION_INSPECTOR_ANGLE: {\n target: 'idle',\n actions: ['showOperationInspectorAngle']\n },\n SHOW_OPERATION_INSPECTOR_FLAG: {\n target: 'idle',\n actions: ['showOperationInspectorFlag']\n },\n SET_OPERATION_IF: {\n target: 'idle',\n actions: ['setOperationIf']\n },\n SET_OPERATION_ANGLE: {\n target: 'idle',\n actions: ['setOperationAngle']\n },\n SET_OPERATION_FLAG: {\n target: 'idle',\n actions: ['setOperationFlag']\n }\n }\n },\n editing: {\n on: {\n OPERATION_IN_SNAP_RANGE: {\n target: 'editing',\n actions: ['snapOperationIntoDropzone']\n },\n SNAP_STEP: {\n target: 'editing',\n actions: ['activateStep']\n },\n UNSNAP_STEP: {\n target: 'editing',\n actions: ['deactivateStep']\n },\n UNGRAB_OPERATION: {\n target: 'idle',\n actions: ['maybeRemoveLastEmptyWires', 'removeDocumentCursorGrabbingStyle', 'endCircuitEdit']\n },\n END_DRAGGING_OPERATION: {\n target: 'idle',\n actions: [\n 'maybeRemoveLastEmptyWires',\n 'removeDocumentCursorGrabbingStyle',\n 'endCircuitEdit',\n 'maybeDisableAllInspectorPanes'\n ]\n }\n }\n }\n }\n }\n }\n },\n {\n guards: {\n isIdle: () => {\n return !this.circuit.editing\n },\n isEditing: () => {\n return this.circuit.editing\n }\n },\n actions: {\n enableDragging: () => {\n this.circuit.draggable = true\n },\n startCircuitEdit: () => {\n this.circuit.editing = true\n },\n endCircuitEdit: () => {\n this.circuit.editing = false\n },\n setOperationActive: (_context, event) => {\n if (event.type !== 'GRAB_OPERATION') return\n\n this.circuit.activateOperation(event.operation)\n },\n snapOperationIntoDropzone: (_context, event) => {\n if (event.type !== 'OPERATION_IN_SNAP_RANGE') return\n\n const operation = event.operation\n const snapTarget = this.circuit.snapTargetAt(event.x, event.y)\n\n operation.snapped = true\n\n if (snapTarget.dropzone === null) {\n const stepIndex = snapTarget.stepIndex\n Util.notNull(stepIndex)\n\n const newStep = this.circuit.addShadowStepAfter(stepIndex)\n const newDropzone = newStep.dropzones[snapTarget.wireIndex]\n Util.notNull(newDropzone)\n\n // TODO: dropzone.operationName = ... etc. \u3092 dropzone \u5074\u3067\u3084\u308B\n newDropzone.append(operation)\n newDropzone.operationName = operation.tagName.toLocaleLowerCase()\n\n // TODO: addShadowStepAfter \u306E\u5F8C\u3067\u81EA\u52D5\u7684\u306B\u547C\u3076\n this.circuit.updateSnapTargets(newStep.dropzones)\n } else {\n snapTarget.dropzone.append(operation)\n }\n },\n addDocumentCursorGrabbingStyle: () => {\n document.documentElement.setAttribute('data-grabbing', '')\n },\n removeDocumentCursorGrabbingStyle: () => {\n document.documentElement.removeAttribute('data-grabbing')\n },\n maybeAppendCircuitWire: () => {\n if (this.circuit.wireCount < this.circuit.maxWireCount) {\n this.circuit.appendWire()\n }\n },\n maybeRemoveLastEmptyWires: () => {\n this.circuit.removeLastEmptyWires()\n },\n resizeCircuit: () => {\n this.circuit.resize()\n },\n setSnapTargets: (_context, event) => {\n if (event.type !== 'GRAB_OPERATION') return\n\n this.circuit.setSnapTargets(event.operation)\n },\n setBreakpoint: (_context, event) => {\n if (event.type !== 'CLICK_STEP') return\n\n this.circuit.setBreakpoint(event.step)\n },\n activateStep: (_context, event) => {\n if (event.type !== 'MOUSE_ENTER_STEP' && event.type !== 'SNAP_STEP') return\n\n event.step.active = true\n },\n deactivateStep: (_context, event) => {\n if (event.type !== 'MOUSE_LEAVE_STEP' && event.type !== 'UNSNAP_STEP') return\n\n event.step.active = false\n },\n deactivateAllSteps: () => {\n this.circuit.deactivateAllSteps()\n },\n maybeDisableAllInspectorPanes: (_context, event) => {\n if (event.type !== 'END_DRAGGING_OPERATION') return\n\n const operation = event.operation\n if (operation.snapped) return\n if (!this.inspectorButton.isInspectorShown) return\n\n this.inspectorButton.inspector.disableAllPanes()\n },\n initOperationMenu: (_context, event) => {\n if (event.type !== 'DROP_OPERATION') return\n\n const operation = event.operation\n if (isMenuable(operation)) operation.initMenu()\n },\n showOperationMenu: (_context, event) => {\n if (event.type !== 'SHOW_OPERATION_MENU') return\n if (this.inspectorButton.isInspectorShown) return\n\n event.operation.showMenu()\n },\n showOperationInspectorIf: (_context, event) => {\n if (event.type !== 'SHOW_OPERATION_INSPECTOR_IF') return\n\n this.inspectorButton.showIfInspector(event.operation)\n },\n showOperationInspectorAngle: (_context, event) => {\n if (event.type !== 'SHOW_OPERATION_INSPECTOR_ANGLE') return\n\n this.inspectorButton.showAngleInspector(event.operation)\n },\n showOperationInspectorFlag: (_context, event) => {\n if (event.type !== 'SHOW_OPERATION_INSPECTOR_FLAG') return\n\n this.inspectorButton.showFlagInspector(event.operation)\n },\n setOperationIf: (_context, event) => {\n if (event.type !== 'SET_OPERATION_IF') return\n\n event.operation.if = event.if\n },\n setOperationAngle: (_context, event) => {\n if (event.type !== 'SET_OPERATION_ANGLE') return\n\n event.operation.angle = event.angle\n event.operation.reducedAngle = event.reducedAngle\n },\n setOperationFlag: (_context, event) => {\n if (event.type !== 'SET_OPERATION_FLAG') return\n\n event.operation.flag = event.flag\n },\n maybeUpdateOperationInspector: (_context, event) => {\n if (event.type !== 'ACTIVATE_OPERATION') return\n\n const operation = event.operation\n if (this.inspectorButton.isInspectorShown) {\n this.inspectorButton.showInspector(operation)\n }\n }\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private circuitEditorService!: Interpreter\n\n connectedCallback(): void {\n this.circuitEditorService = interpret(this.circuitEditorMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`circuit-editor: ${describe(state.value)}`)\n }\n })\n .start()\n\n this.attachShadow({mode: 'open'})\n this.update()\n\n document.addEventListener('click', this.maybeDeactivateOperation.bind(this))\n this.addEventListener('operation-active', this.activateOperation)\n this.addEventListener('operation-show-menu', this.showOperationMenu)\n this.addEventListener('operation-menu-if', this.showOperationInspectorIf)\n this.addEventListener('operation-menu-angle', this.showOperationInspectorAngle)\n this.addEventListener('operation-menu-flag', this.showOperationInspectorFlag)\n this.addEventListener('operation-inspector-if-change', this.setOperationIf)\n this.addEventListener('operation-inspector-angle-change', this.setOperationAngle)\n this.addEventListener('operation-inspector-angle-update', this.setOperationAngle)\n this.addEventListener('operation-inspector-flag-change', this.setOperationFlag)\n this.addEventListener('operation-grab', this.grabOperation)\n this.addEventListener('operation-ungrab', this.ungrabOperation)\n this.addEventListener('operation-end-dragging', this.endDraggingOperation)\n this.addEventListener('operation-drop', this.dropOperation)\n this.addEventListener('operation-delete', this.deleteOperation)\n this.addEventListener('circuit-step-click', this.clickStep)\n this.addEventListener('circuit-step-snap', this.snapStep)\n this.addEventListener('circuit-step-unsnap', this.unsnapStep)\n this.addEventListener('operation-in-snap-range', this.operationInSnapRange)\n this.addEventListener('circuit-step-mouseenter', this.mouseEnterStep)\n this.addEventListener('circuit-step-mouseleave', this.mouseLeaveStep)\n this.addEventListener('quantum-circuit-mouseleave', this.mouseLeaveCircuit)\n\n this.addEventListener('quantum-circuit-init', () => {\n for (const each of this.circuit.operations) {\n each.initMenu()\n }\n })\n }\n\n update(): void {\n render(html``, this.shadowRoot!)\n }\n\n private get activeOperation(): Operation | null {\n return this.circuit.querySelector('circuit-dropzone > [data-active]')\n }\n\n private maybeDeactivateOperation(event: Event): void {\n const clickedEl = event.target as HTMLElement\n\n if (\n !isOperation(clickedEl) &&\n !this.inspectorButton.popup.popper.contains(clickedEl) &&\n !this.inspectorButton.popup.reference.contains(clickedEl) &&\n this.activeOperation !== null\n ) {\n this.activeOperation.active = false\n }\n }\n\n private activateOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'ACTIVATE_OPERATION', operation})\n }\n\n private showOperationMenu(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'SHOW_OPERATION_MENU', operation})\n }\n\n private showOperationInspectorIf(event: Event): void {\n const operation = event.target\n if (!isIfable(operation)) throw new Error(`${operation} isn't an Ifable Operation.`)\n\n this.circuitEditorService.send({type: 'SHOW_OPERATION_INSPECTOR_IF', operation})\n }\n\n private showOperationInspectorAngle(event: Event): void {\n const operation = event.target\n if (!isAngleable(operation)) throw new Error(`${operation} isn't an Angleable Operation.`)\n\n this.circuitEditorService.send({type: 'SHOW_OPERATION_INSPECTOR_ANGLE', operation})\n }\n\n private showOperationInspectorFlag(event: Event): void {\n const operation = event.target\n if (!isFlaggable(operation)) throw new Error(`${operation} isn't a Flaggable Operation.`)\n\n this.circuitEditorService.send({type: 'SHOW_OPERATION_INSPECTOR_FLAG', operation})\n }\n\n private setOperationIf(event: Event): void {\n const inspector = event.target as OperationInspectorElement\n const operation = this.activeOperation\n if (!isIfable(operation)) throw new Error('[data-if] not found.')\n\n this.circuitEditorService.send({type: 'SET_OPERATION_IF', operation, if: inspector.if})\n }\n\n private setOperationAngle(event: Event): void {\n const inspector = event.target as OperationInspectorElement\n const operation = this.activeOperation\n Util.notNull(operation)\n if (!isAngleable(operation)) throw new Error(`${operation.outerHTML}: [data-angle] not found.`)\n\n this.circuitEditorService.send({\n type: 'SET_OPERATION_ANGLE',\n operation,\n angle: inspector.angle,\n reducedAngle: inspector.reduceAngleFraction ? inspector.reducedAngle : ''\n })\n }\n\n private setOperationFlag(event: Event): void {\n const inspector = event.target as OperationInspectorElement\n const operation = this.activeOperation\n if (!isFlaggable(operation)) throw new Error('[data-flag] not found.')\n\n this.circuitEditorService.send({type: 'SET_OPERATION_FLAG', operation, flag: inspector.flag})\n }\n\n private grabOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'GRAB_OPERATION', operation})\n }\n\n private ungrabOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'UNGRAB_OPERATION', operation})\n }\n\n private endDraggingOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'END_DRAGGING_OPERATION', operation})\n }\n\n private dropOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n this.circuitEditorService.send({type: 'DROP_OPERATION', operation})\n }\n\n private deleteOperation(): void {\n this.circuitEditorService.send({type: 'DELETE_OPERATION'})\n }\n\n private clickStep(event: Event): void {\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n this.circuitEditorService.send({type: 'CLICK_STEP', step})\n }\n\n private snapStep(event: Event): void {\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n this.circuitEditorService.send({type: 'SNAP_STEP', step})\n }\n\n private unsnapStep(event: Event): void {\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n this.circuitEditorService.send({type: 'UNSNAP_STEP', step})\n }\n\n private operationInSnapRange(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new Error(`${operation} must be an Operation.`)\n\n const customEvent = event as CustomEvent\n const snapTargetInfo = customEvent.detail.snapTargetInfo\n const x = snapTargetInfo.x\n const y = snapTargetInfo.y\n this.circuitEditorService.send({type: 'OPERATION_IN_SNAP_RANGE', operation, x, y})\n }\n\n private mouseEnterStep(event: Event): void {\n if (this.circuit.editing) return\n\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n this.circuitEditorService.send({type: 'MOUSE_ENTER_STEP', step})\n }\n\n private mouseLeaveStep(event: Event): void {\n if (this.circuit.editing) return\n\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n this.circuitEditorService.send({type: 'MOUSE_LEAVE_STEP', step})\n }\n\n private mouseLeaveCircuit(): void {\n this.circuitEditorService.send({type: 'MOUSE_LEAVE_CIRCUIT'})\n }\n}\n\ncontroller(CircuitEditorElement)\n", "import {Interpreter, createMachine, interpret} from 'xstate'\nimport {Operation, isOperation} from './operation'\nimport {attr, controller} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {isHelpable} from './mixin'\n\ntype PaletteDropzoneContext = Record\ntype PaletteDropzoneEvent =\n | {type: 'GRAB_OPERATION'; operation: Operation}\n | {type: 'DELETE_OPERATION'; operation: Operation}\n\nexport class PaletteDropzoneElement extends HTMLElement {\n @attr debug = false\n\n private paletteDropzoneMachine = createMachine(\n {\n id: 'palette-dropzone',\n initial: 'idle',\n states: {\n idle: {\n on: {\n GRAB_OPERATION: {\n target: 'idle',\n actions: ['newOperation']\n },\n DELETE_OPERATION: {\n target: 'idle',\n actions: ['deleteOperation']\n }\n }\n }\n }\n },\n {\n actions: {\n newOperation: (_context, event) => {\n if (event.type !== 'GRAB_OPERATION') return\n\n const operation = event.operation\n const newOperation = operation.cloneNode(false)\n if (!isOperation(newOperation)) throw new TypeError(`${newOperation} isn't an operation.`)\n\n if (isHelpable(operation)) operation.disableHelp()\n this.prepend(newOperation)\n this.initOperation(newOperation)\n },\n deleteOperation: (_context, event) => {\n if (event.type !== 'DELETE_OPERATION') return\n\n this.removeChild(event.operation)\n }\n }\n }\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private paletteDropzoneService!: Interpreter\n\n connectedCallback(): void {\n this.paletteDropzoneService = interpret(this.paletteDropzoneMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`palette-dropzone: ${state.value}`)\n }\n })\n .start()\n\n this.attachShadow({mode: 'open'})\n this.update()\n\n this.initOperation(this.operation)\n this.addEventListener('operation-grab', this.grabOperation)\n this.addEventListener('operation-delete', this.deleteOperation)\n }\n\n update(): void {\n render(\n html`\n\n `,\n this.shadowRoot!\n )\n }\n\n private initOperation(operation: Operation): void {\n operation.draggable = true\n operation.snapped = true\n operation.grabbed = false\n if (isHelpable(operation)) operation.initHelp()\n }\n\n private get operation(): Operation {\n const children = Array.from(this.children)\n const operations = children.filter((each): each is Operation => isOperation(each))\n\n if (operations.length === 0) {\n throw new Error('palette-dropzone must have an operation.')\n } else if (operations.length === 1) {\n return operations[0]\n } else {\n throw new Error('palette-dropzone cannot hold multiple operations.')\n }\n }\n\n private grabOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new TypeError(`${operation} isn't an operation.`)\n\n this.paletteDropzoneService.send({type: 'GRAB_OPERATION', operation})\n }\n\n private deleteOperation(event: Event): void {\n const operation = event.target\n if (!isOperation(operation)) throw new TypeError(`${operation} isn't an operation.`)\n\n this.paletteDropzoneService.send({type: 'DELETE_OPERATION', operation})\n }\n}\n\ncontroller(PaletteDropzoneElement)\n", "import {CircuitDropzoneElement, isCircuitDropzoneElement} from './circuit-dropzone-element'\nimport {CircuitStepElement, isCircuitStepElement} from './circuit-step-element'\nimport {HGateElement, HGateElementProps} from './h-gate-element'\nimport {Interpreter, createMachine, interpret} from 'xstate'\nimport {PhaseGateElement, PhaseGateElementProps} from './phase-gate-element'\nimport {RnotGateElement, RnotGateElementProps} from './rnot-gate-element'\nimport {RxGateElement, RxGateElementProps} from './rx-gate-element'\nimport {RyGateElement, RyGateElementProps} from './ry-gate-element'\nimport {RzGateElement, RzGateElementProps} from './rz-gate-element'\nimport {SerializedCircuitStep, Util} from '@qni/common'\nimport {TGateElement, TGateElementProps} from './t-gate-element'\nimport {XGateElement, XGateElementProps} from './x-gate-element'\nimport {YGateElement, YGateElementProps} from './y-gate-element'\nimport {ZGateElement, ZGateElementProps} from './z-gate-element'\nimport {attr, controller, targets} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {BlochDisplayElement} from './bloch-display-element'\nimport {CircuitBlockElement} from './circuit-block-element'\nimport {ControlGateElement} from './control-gate-element'\nimport {MeasurementGateElement} from './measurement-gate-element'\nimport {Operation} from './operation'\nimport {SwapGateElement} from './swap-gate-element'\nimport {WriteGateElement} from './write-gate-element'\n\nexport type SnapTarget = {\n dropzone: CircuitDropzoneElement | null\n stepIndex: number | null\n wireIndex: number\n}\n\ntype QuantumCircuitContext = Record\ntype QuantumCircuitEvent = {type: 'EDIT'} | {type: 'EDIT_DONE'}\n\nexport class QuantumCircuitElement extends HTMLElement {\n @attr minStepCount = 1\n @attr minWireCount = 1\n @attr maxWireCount = 10\n @attr editing = false\n @attr updateUrl = false\n @attr json = ''\n @attr circuitTitle = ''\n @attr debug = false\n\n // Controlled-H\n @attr chDisabled = false\n @attr chMaxControlGates = 0\n @attr chMaxTargetGates = 0\n // Controlled-NOT\n @attr cnotDisabled = false\n @attr cnotMaxControlGates = 0\n @attr cnotMaxTargetGates = 0\n // Controlled-Y\n @attr cyDisabled = false\n @attr cyMaxControlGates = 0\n @attr cyMaxTargetGates = 0\n // Controlled-Z\n @attr czDisabled = false\n @attr czMaxControlGates = 0\n @attr czMaxTargetGates = 0\n // Controlled-Phase\n @attr cphaseDisabled = false\n @attr cphaseMaxControlGates = 0\n @attr cphaseMaxTargetGates = 0\n // Controlled-T\n @attr ctDisabled = false\n @attr ctMaxControlGates = 0\n @attr ctMaxTargetGates = 0\n // Controlled-\u221AX\n @attr crnotDisabled = false\n @attr crnotMaxControlGates = 0\n @attr crnotMaxTargetGates = 0\n // Controlled-Rx\n @attr crxDisabled = false\n @attr crxMaxControlGates = 0\n @attr crxMaxTargetGates = 0\n // Controlled-Ry\n @attr cryDisabled = false\n @attr cryMaxControlGates = 0\n @attr cryMaxTargetGates = 0\n // Controlled-Rz\n @attr crzDisabled = false\n @attr crzMaxControlGates = 0\n @attr crzMaxTargetGates = 0\n // Controlled-Swap\n @attr cswapDisabled = false\n @attr cswapMaxControlGates = 0\n // Swap\n @attr swapDisabled = false\n // CZ\n @attr controlControlDisabled = false\n @attr controlControlMaxTargetGates = 0\n // CPHASE\n @attr phasePhaseDisabled = false\n @attr phasePhaseMaxTargetGates = 0\n\n @targets blocks!: CircuitBlockElement[]\n\n private quantumCircuitMachine = createMachine({\n id: 'quantum-circuit',\n initial: 'idle',\n states: {\n idle: {\n on: {\n EDIT: {target: 'editing'}\n }\n },\n editing: {\n on: {\n EDIT_DONE: {target: 'idle'}\n }\n }\n }\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private quantumCircuitService!: Interpreter\n\n private snapTargets!: {\n [i: number]: {\n [j: number]: SnapTarget\n }\n }\n\n get wireCount(): number {\n return this.stepAt(0).wireCount\n }\n\n get activeStepIndex(): number | null {\n const step = this.activeStep\n if (step === null) return null\n\n return this.fetchStepIndex(step)\n }\n\n get activeStep(): CircuitStepElement | null {\n const step = this.steps.find(each => each.active)\n\n return step || null\n }\n\n fetchStepIndex(step: CircuitStepElement): number {\n const index = this.steps.indexOf(step)\n Util.need(index !== -1, `circuit-step index of ${step} not found.`)\n\n return index\n }\n\n get steps(): CircuitStepElement[] {\n return Array.from(this.querySelectorAll('circuit-step'))\n }\n\n private get emptySteps(): CircuitStepElement[] {\n return this.steps.filter(each => each.isEmpty)\n }\n\n private get nonEmptySteps(): CircuitStepElement[] {\n return this.steps.filter(each => !each.isEmpty)\n }\n\n private get largestStep(): CircuitStepElement | null {\n let step = null\n let max = 0\n\n for (const each of this.steps) {\n if (each.wireCount > 0 && each.wireCount > max) {\n step = each\n max = each.wireCount\n }\n }\n\n return step\n }\n\n private appendMinimumSteps(): void {\n const nsteps = this.minStepCount - this.steps.length\n\n for (let i = 0; i < nsteps; i++) {\n this.append(new CircuitStepElement())\n }\n }\n\n /**\n * @category Circuit Step\n */\n stepAt(stepIndex: number): CircuitStepElement {\n const step = this.steps[stepIndex]\n Util.notNull(step)\n\n return step\n }\n\n /**\n * @category Circuit Step\n */\n addShadowStepAfter(stepIndex: number): CircuitStepElement {\n const newStep = new CircuitStepElement()\n newStep.shadow = true\n for (let i = 0; i < this.wireCount; i++) {\n newStep.appendDropzone()\n }\n\n if (stepIndex === -1) {\n this.prepend(newStep)\n } else {\n const step = this.steps[stepIndex]\n Util.notNull(step.parentElement)\n\n step.parentElement.insertBefore(newStep, step.nextSibling)\n }\n\n return newStep\n }\n\n /**\n * @category Circuit Step\n */\n activateStep(step: CircuitStepElement): void {\n step.active = true\n }\n\n /**\n * @category Circuit Step\n */\n deactivateAllSteps(): void {\n for (const each of this.steps) {\n each.active = false\n }\n }\n\n /**\n * @category Circuit Step\n */\n setBreakpoint(step: CircuitStepElement): void {\n for (const each of this.steps) {\n each.breakpoint = false\n }\n step.breakpoint = true\n }\n\n get breakpoint(): CircuitStepElement | null {\n const step = this.steps.find(each => each.breakpoint)\n\n return step || null\n }\n\n private get dropzones(): CircuitDropzoneElement[] {\n return Array.from(this.querySelectorAll('circuit-dropzone')) as CircuitDropzoneElement[]\n }\n\n get operations(): Operation[] {\n return this.dropzones\n .map(each => each.operation)\n .filter((each: Operation | null) => each !== null) as Operation[]\n }\n\n private get isVertical(): boolean {\n return window.getComputedStyle(this).flexDirection === 'column'\n }\n\n connectedCallback(): void {\n this.quantumCircuitService = interpret(this.quantumCircuitMachine)\n .onTransition(state => {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(`quantum-circuit: ${state.value}`)\n }\n })\n .start()\n\n this.attachShadow({mode: 'open'})\n this.update()\n\n if (this.hasAttribute('data-update-url')) {\n const json = this.urlJson\n this.loadFromJson(json)\n }\n\n this.appendMinimumSteps()\n this.appendMinimumWires()\n this.updateAllWires()\n\n this.addEventListener('mouseleave', this.dispatchMouseleaveEvent)\n this.addEventListener('circuit-step-update', this.updateStep)\n this.addEventListener('circuit-step-snap', this.updateStep)\n this.addEventListener('circuit-step-snap', this.updateChangedWire)\n this.addEventListener('circuit-step-unsnap', this.updateStep)\n this.addEventListener('circuit-step-unsnap', this.updateChangedWire)\n this.addEventListener('circuit-step-delete-operation', this.updateStep)\n this.addEventListener('circuit-step-delete-operation', this.updateChangedWire)\n\n this.dispatchEvent(new Event('quantum-circuit-init', {bubbles: true}))\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return\n\n if (name === 'data-editing') {\n if (newValue !== null) {\n this.quantumCircuitService.send({type: 'EDIT'})\n } else {\n this.quantumCircuitService.send({type: 'EDIT_DONE'})\n }\n }\n\n if (name === 'data-json' && newValue !== '') {\n this.loadFromJson(newValue)\n }\n }\n\n private update(): void {\n render(html``, this.shadowRoot!)\n }\n\n private updateStep(event: Event): void {\n const step = event.target as CircuitStepElement\n this.updateStepOperationAttributes(step)\n }\n\n private updateStepOperationAttributes(step: CircuitStepElement): void {\n step.updateOperationAttributes({\n // Controlled-H\n disableCh: this.chDisabled,\n maxChControlGates: this.chMaxControlGates,\n maxChTargetGates: this.chMaxTargetGates,\n // Controlled-NOT\n disableCnot: this.cnotDisabled,\n maxCnotControlGates: this.cnotMaxControlGates,\n maxCnotTargetGates: this.cnotMaxTargetGates,\n // Controlled-Y\n disableCy: this.cyDisabled,\n maxCyControlGates: this.cyMaxControlGates,\n maxCyTargetGates: this.cyMaxTargetGates,\n // Controlled-Z\n disableCz: this.czDisabled,\n maxCzControlGates: this.czMaxControlGates,\n maxCzTargetGates: this.czMaxTargetGates,\n // Controlled-Phase\n disableCphase: this.cphaseDisabled,\n maxCphaseControlGates: this.cphaseMaxControlGates,\n maxCphaseTargetGates: this.cphaseMaxTargetGates,\n // Controlled-T\n disableCt: this.ctDisabled,\n maxCtControlGates: this.ctMaxControlGates,\n maxCtTargetGates: this.ctMaxTargetGates,\n // Controlled-\u221AX\n disableCrnot: this.crnotDisabled,\n maxCrnotControlGates: this.crnotMaxControlGates,\n maxCrnotTargetGates: this.crnotMaxTargetGates,\n // Controlled-Rx\n disableCrx: this.crxDisabled,\n maxCrxControlGates: this.crxMaxControlGates,\n maxCrxTargetGates: this.crxMaxTargetGates,\n // Controlled-Rx\n disableCry: this.cryDisabled,\n maxCryControlGates: this.cryMaxControlGates,\n maxCryTargetGates: this.cryMaxTargetGates,\n // Controlled-Rx\n disableCrz: this.crzDisabled,\n maxCrzControlGates: this.crzMaxControlGates,\n maxCrzTargetGates: this.crzMaxTargetGates,\n // Controlled-Swap\n disableCswap: this.cswapDisabled,\n maxCswapControlGates: this.cswapMaxControlGates,\n // Swap\n disableSwap: this.swapDisabled,\n // CZ\n disableControlControl: this.controlControlDisabled,\n maxControlControlTargetGates: this.controlControlMaxTargetGates,\n // CPHASE\n disablePhasePhase: this.phasePhaseDisabled,\n maxPhasePhaseTargetGates: this.phasePhaseMaxTargetGates\n })\n }\n\n private dispatchMouseleaveEvent(): void {\n this.dispatchEvent(new Event('quantum-circuit-mouseleave', {bubbles: true}))\n }\n\n resize(): void {\n this.removeEmptySteps()\n this.appendMinimumSteps()\n this.appendMinimumWires()\n this.removeLastEmptyWires()\n this.updateAllWires()\n }\n\n /**\n * @category Circuit Operation\n */\n h(...args: number[] | [HGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const h = new HGateElement()\n if (disabled) h.disable()\n return h\n }, ...targetBits)\n\n this.resize()\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n x(...args: number[] | [XGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const x = new XGateElement()\n if (disabled) x.disable()\n return x\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n y(...args: number[] | [YGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const y = new YGateElement()\n if (disabled) y.disable()\n return y\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n z(...args: number[] | [ZGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const z = new ZGateElement()\n if (disabled) z.disable()\n return z\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n phase(...args: number[] | [string, ...number[]] | [PhaseGateElementProps]): QuantumCircuitElement {\n let angle = ''\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else if (typeof args[0] === 'string') {\n angle = args[0]\n targetBits = args.slice(1) as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n const step = this.applyOperationToTargets(() => {\n const phase = new PhaseGateElement()\n phase.angle = angle\n if (disabled) phase.disable()\n return phase\n }, ...targetBits)\n if (targetBits.length > 1) this.updateStepOperationAttributes(step)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n t(...args: number[] | [TGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const t = new TGateElement()\n if (disabled) t.disable()\n return t\n }, ...targetBits)\n\n this.resize()\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n rnot(...args: number[] | [RnotGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const rnot = new RnotGateElement()\n if (disabled) rnot.disable()\n return rnot\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n rx(...args: number[] | [RxGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const rx = new RxGateElement()\n if (disabled) rx.disable()\n return rx\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n ry(...args: number[] | [RyGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const ry = new RyGateElement()\n if (disabled) ry.disable()\n return ry\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n rz(...args: number[] | [RzGateElementProps]): QuantumCircuitElement {\n let targetBits: number[]\n let disabled: boolean | undefined\n\n if (typeof args[0] === 'number') {\n targetBits = args as number[]\n } else {\n const props = args[0]\n targetBits = props.targets\n disabled = props.disabled\n }\n\n this.applyOperationToTargets(() => {\n const rz = new RzGateElement()\n if (disabled) rz.disable()\n return rz\n }, ...targetBits)\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n swap(...targetBits: number[]): QuantumCircuitElement {\n const step = this.applyOperationToTargets(() => new SwapGateElement(), ...targetBits)\n this.updateStepOperationAttributes(step)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n control(...targetBits: number[]): QuantumCircuitElement {\n const step = this.applyOperationToTargets(() => new ControlGateElement(), ...targetBits)\n this.updateStepOperationAttributes(step)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n bloch(...targetBits: number[]): QuantumCircuitElement {\n this.applyOperationToTargets(() => new BlochDisplayElement(), ...targetBits)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n write(value: '0' | '1', ...targetBits: number[]): QuantumCircuitElement {\n this.applyOperationToTargets(() => {\n const writeGate = new WriteGateElement()\n writeGate.value = value\n return writeGate\n }, ...targetBits)\n\n this.resize()\n\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n measure(...targetBits: number[]): QuantumCircuitElement {\n this.applyOperationToTargets(() => new MeasurementGateElement(), ...targetBits)\n this.resize()\n return this\n }\n\n private applyOperationToTargets(constructor: () => Operation, ...targetBits: number[]): CircuitStepElement {\n const nbit = Math.max(...targetBits) + 1\n const step = this.appendStepWithDropzones(nbit)\n\n for (const each of targetBits) {\n const operation = constructor()\n step.dropzoneAt(each).put(operation)\n }\n\n return step\n }\n\n /**\n * @category Circuit Operation\n */\n ch(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(HGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cnot(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(XGateElement, control, target)\n this.resize()\n return this\n }\n cx = this.cnot\n\n /**\n * @category Circuit Operation\n */\n cy(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(YGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cz(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(ZGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cphase(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(PhaseGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n ct(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(TGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n crnot(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(RnotGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n crx(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(RxGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cry(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(RyGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n crz(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(RzGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cswap(control: number | number[], target: number | number[]): QuantumCircuitElement {\n this.controlledU(SwapGateElement, control, target)\n return this\n }\n\n /**\n * @category Circuit Operation\n */\n cc(...targetBits: number[]): QuantumCircuitElement {\n const nbit = Math.max(...targetBits) + 1\n const step = this.appendStepWithDropzones(nbit)\n\n for (const each of targetBits) {\n step.dropzoneAt(each).put(new ControlGateElement())\n }\n\n this.appendMinimumWires()\n this.updateStepOperationAttributes(step)\n\n return this\n }\n\n private controlledU(\n constructor:\n | typeof HGateElement\n | typeof XGateElement\n | typeof YGateElement\n | typeof ZGateElement\n | typeof PhaseGateElement\n | typeof TGateElement\n | typeof RnotGateElement\n | typeof RxGateElement\n | typeof RyGateElement\n | typeof RzGateElement\n | typeof SwapGateElement,\n control: number | number[],\n target: number | number[]\n ): void {\n const controlBits = ([] as number[]).concat(...[control])\n const targetBits = ([] as number[]).concat(...[target])\n\n const bits = controlBits.concat(targetBits)\n const nbit = Math.max(...bits) + 1\n const step = this.appendStepWithDropzones(nbit)\n\n for (const each of controlBits) {\n step.dropzoneAt(each).put(new ControlGateElement())\n }\n for (const each of targetBits) {\n step.dropzoneAt(each).put(new constructor())\n }\n\n this.appendMinimumWires()\n this.updateStepOperationAttributes(step)\n }\n\n private appendStep(): CircuitStepElement {\n // const step = new CircuitStepElement()\n\n // this.append(step)\n // return step\n\n const el = new CircuitStepElement()\n\n const lastBlock = this.blocks.slice(-1)[0] || null\n if (lastBlock === null || lastBlock.finalized) {\n this.append(el)\n } else {\n lastBlock.append(el)\n }\n\n return el\n }\n\n private appendStepWithDropzones(nbit: number): CircuitStepElement {\n const step = new CircuitStepElement()\n this.append(step)\n\n for (let i = 0; i < nbit; i++) {\n const dropzone = new CircuitDropzoneElement()\n step.append(dropzone)\n }\n\n return step\n }\n\n private updateAllWires(): void {\n const firstStep = this.steps[0]\n if (firstStep === undefined) return\n\n const wireCount = firstStep.dropzones.length\n for (let i = 0; i < wireCount; i++) {\n this.updateWire(i)\n }\n }\n\n activateOperation(operation: Operation): void {\n for (const each of this.operations) {\n each.active = false\n }\n operation.active = true\n }\n\n appendWire(): void {\n for (const each of this.steps) {\n each.appendDropzone()\n }\n }\n\n removeLastEmptyWires(): void {\n while (this.steps.every(each => each.wireCount > this.minWireCount && !each.lastDropzone.occupied)) {\n for (const each of this.steps) {\n each.lastDropzone.remove()\n }\n }\n }\n\n private removeEmptySteps(): void {\n for (const each of this.emptySteps) {\n each.remove()\n }\n }\n\n private loadFromJson(json: string): void {\n console.log('loadFromJson')\n\n this.innerHTML = ''\n // for (const each of this.steps) {\n // each.remove()\n // }\n\n // let json\n let circuitBlock = null\n\n // if (this.hasAttribute('data-update-url')) {\n // json = this.urlJson\n // } else {\n // json = this.json\n // }\n\n if (json === '') {\n if (this.hasAttribute('data-update-url')) {\n this.resize()\n }\n return\n }\n\n const circuit = JSON.parse(json)\n this.circuitTitle = (circuit.title || '').trim()\n\n for (const step of circuit.cols) {\n const newStep = this.appendStep()\n for (const operation of step) {\n switch (true) {\n case /^\\|0>$/.test(operation): {\n const writeGate = new WriteGateElement()\n writeGate.hoverable = true\n writeGate.value = '0'\n newStep.appendOperation(writeGate)\n break\n }\n case /^\\|1>$/.test(operation): {\n const writeGate = new WriteGateElement()\n writeGate.hoverable = true\n writeGate.value = '1'\n newStep.appendOperation(writeGate)\n break\n }\n case /^H/.test(operation): {\n const hGate = new HGateElement()\n hGate.hoverable = true\n hGate.if = this.ifVariable(operation.slice(1))\n newStep.appendOperation(hGate)\n break\n }\n case /^X$/.test(operation) || /^X<(.+)$/.test(operation): {\n const xGate = new XGateElement()\n xGate.hoverable = true\n xGate.if = operation.slice(2).trim()\n newStep.appendOperation(xGate)\n break\n }\n case /^Y/.test(operation): {\n const yGate = new YGateElement()\n yGate.hoverable = true\n yGate.if = this.ifVariable(operation.slice(1))\n newStep.appendOperation(yGate)\n break\n }\n case /^Z/.test(operation): {\n const zGate = new ZGateElement()\n zGate.hoverable = true\n zGate.if = this.ifVariable(operation.slice(1))\n newStep.appendOperation(zGate)\n break\n }\n case /^P/.test(operation): {\n const phaseGate = new PhaseGateElement()\n phaseGate.hoverable = true\n phaseGate.angle = this.angleParameter(operation.slice(1))\n newStep.appendOperation(phaseGate)\n break\n }\n case /^T/.test(operation): {\n const tGate = new TGateElement()\n tGate.hoverable = true\n tGate.if = this.ifVariable(operation.slice(1))\n newStep.appendOperation(tGate)\n break\n }\n case /^X\\^\u00BD/.test(operation): {\n const rnotGate = new RnotGateElement()\n rnotGate.hoverable = true\n rnotGate.if = this.ifVariable(operation.slice(3))\n newStep.appendOperation(rnotGate)\n break\n }\n case /^Rx/.test(operation): {\n const rxGate = new RxGateElement()\n rxGate.hoverable = true\n rxGate.angle = this.angleParameter(operation.slice(2))\n newStep.appendOperation(rxGate)\n break\n }\n case /^Ry/.test(operation): {\n const ryGate = new RyGateElement()\n ryGate.hoverable = true\n ryGate.angle = this.angleParameter(operation.slice(2))\n newStep.appendOperation(ryGate)\n break\n }\n case /^Rz/.test(operation): {\n const rzGate = new RzGateElement()\n rzGate.hoverable = true\n rzGate.angle = this.angleParameter(operation.slice(2))\n newStep.appendOperation(rzGate)\n break\n }\n case /^Swap$/.test(operation): {\n const swapGate = new SwapGateElement()\n swapGate.hoverable = true\n newStep.appendOperation(swapGate)\n break\n }\n case /^\u2022$/.test(operation): {\n const controlGate = new ControlGateElement()\n controlGate.hoverable = true\n newStep.appendOperation(controlGate)\n break\n }\n case /^Bloch$/.test(operation): {\n const blochDisplay = new BlochDisplayElement()\n blochDisplay.hoverable = true\n newStep.appendOperation(blochDisplay)\n break\n }\n case /^Measure/.test(operation): {\n const measurementGate = new MeasurementGateElement()\n const flag = ((/^>(.+)$/.exec(operation.slice(7)) || [])[1] || '').trim()\n measurementGate.hoverable = true\n measurementGate.flag = flag\n newStep.appendOperation(measurementGate)\n break\n }\n case /^[[{](.+)$/.test(operation): {\n const comment = operation.slice(1)\n newStep.remove()\n circuitBlock = new CircuitBlockElement()\n circuitBlock.comment = comment\n circuitBlock.setAttribute('data-targets', 'quantum-circuit.blocks')\n this.append(circuitBlock)\n break\n }\n case /^[\\]}]$/.test(operation): {\n newStep.remove()\n circuitBlock!.finalize()\n break\n }\n default: {\n if (operation === 1) {\n if (newStep.dropzones.length === newStep.freeDropzones.length) {\n newStep.keep = true\n } else {\n newStep.keep = false\n }\n } else {\n throw new Error(`Unknown operation: ${operation}`)\n }\n newStep.appendDropzone()\n }\n }\n // circuitStep.updateConnections()\n newStep.updateOperationAttributes()\n }\n }\n\n this.resize()\n }\n\n private ifVariable(operation: string): string {\n return ((/^<(.+)$/.exec(operation) || [])[1] || '').trim()\n }\n\n private angleParameter(operation: string): string {\n return ((/^\\((.+)\\)$/.exec(operation) || [])[1] || '').trim().replace('_', '/')\n }\n\n private appendMinimumWires(): void {\n const largestStep = this.largestStep\n const largestWireCount =\n largestStep && largestStep.wireCount > this.minWireCount ? largestStep.wireCount : this.minWireCount\n\n for (const each of this.steps) {\n const nDropzone = largestWireCount - each.wireCount\n for (let i = 0; i < nDropzone; i++) {\n each.appendDropzone()\n }\n }\n }\n\n private updateWire(wireIndex: number): void {\n let wireQuantum = false\n\n for (const step of this.steps) {\n const dropzone = step.dropzoneAt(wireIndex)\n\n dropzone.inputWireQuantum = wireQuantum\n if (dropzone.operationName === 'write-gate') {\n dropzone.inputWireQuantum = wireQuantum\n dropzone.outputWireQuantum = true\n wireQuantum = true\n } else if (dropzone.operationName === 'measurement-gate') {\n dropzone.inputWireQuantum = wireQuantum\n dropzone.outputWireQuantum = false\n wireQuantum = false\n } else if (dropzone.operationName === 'swap-gate') {\n const swapDropzones = step.dropzones.filter(each => each.operationName === 'swap-gate')\n if (swapDropzones.length === 2) {\n const dropzoneBits = swapDropzones.map(each => step.bit(each))\n const bit = step.bit(dropzone)\n const otherDropzoneBit = dropzoneBits[0] === bit ? dropzoneBits[1] : dropzoneBits[0]\n const otherDropzone = step.dropzoneAt(otherDropzoneBit)\n dropzone.inputWireQuantum = wireQuantum\n dropzone.outputWireQuantum = otherDropzone.inputWireQuantum\n wireQuantum = otherDropzone.inputWireQuantum\n } else {\n dropzone.inputWireQuantum = wireQuantum\n dropzone.outputWireQuantum = wireQuantum\n }\n } else {\n dropzone.inputWireQuantum = wireQuantum\n dropzone.outputWireQuantum = wireQuantum\n }\n }\n }\n\n private updateChangedWire(event: Event): void {\n const step = event.target\n if (!isCircuitStepElement(step)) throw new Error(`${step} isn't a circuit-step.`)\n\n const dropzone = (event as CustomEvent).detail.dropzone\n if (!isCircuitDropzoneElement(dropzone)) throw new Error(`${dropzone} isn't a circuit-dropzone.`)\n\n const wireIndex = step.dropzones.indexOf(dropzone)\n Util.need(wireIndex !== -1, 'circuit-dropzone not found.')\n\n this.updateWire(wireIndex)\n }\n\n /**\n * @category Drag and Drop\n */\n set draggable(value: boolean) {\n for (const each of this.operations) {\n each.draggable = value\n }\n }\n\n /**\n * @category Drag and Drop\n */\n snapTargetAt(x: number, y: number): SnapTarget {\n if (this.isVertical) {\n return this.snapTargets[y][x]\n } else {\n return this.snapTargets[x][y]\n }\n }\n\n /**\n * @category Drag and Drop\n */\n setSnapTargets(operation: Operation): void {\n const freeDropzones = this.dropzones.filter(each => !each.occupied)\n const snapTargets = []\n this.snapTargets = {}\n\n const myDropzone = operation.dropzone\n if (isCircuitDropzoneElement(myDropzone)) freeDropzones.push(myDropzone)\n\n for (const [dropzoneIndex, each] of Object.entries(this.dropzones)) {\n const snapTarget = each.snapTarget\n const i = this.isVertical ? snapTarget.y : snapTarget.x\n const j = this.isVertical ? snapTarget.x : snapTarget.y\n const wireIndex = parseInt(dropzoneIndex) % this.wireCount\n\n const prevI = i - operation.snapRange * 0.75\n const nextI = i + operation.snapRange * 0.75\n\n if (parseInt(dropzoneIndex) < this.wireCount) {\n if (this.isVertical) {\n snapTargets.push({x: j, y: prevI})\n } else {\n snapTargets.push({x: prevI, y: j})\n }\n if (this.snapTargets[prevI] === undefined) this.snapTargets[prevI] = {}\n if (this.snapTargets[prevI][j] === undefined)\n this.snapTargets[prevI][j] = {\n dropzone: null,\n stepIndex: -1,\n wireIndex\n }\n }\n\n if (this.isVertical) {\n snapTargets.push({x: j, y: nextI})\n } else {\n snapTargets.push({x: nextI, y: j})\n }\n if (this.snapTargets[nextI] === undefined) this.snapTargets[nextI] = {}\n if (this.snapTargets[nextI][j] === undefined)\n this.snapTargets[nextI][j] = {\n dropzone: null,\n stepIndex: Math.floor(parseInt(dropzoneIndex) / this.wireCount),\n wireIndex\n }\n\n if (!each.occupied || each === myDropzone) {\n snapTargets.push(snapTarget)\n }\n\n if (this.snapTargets[i] === undefined) this.snapTargets[i] = {}\n if (this.snapTargets[i][j] === undefined)\n this.snapTargets[i][j] = {\n dropzone: each,\n stepIndex: null,\n wireIndex\n }\n }\n\n operation.snapTargets = snapTargets\n }\n\n /**\n * @category Drag and Drop\n */\n updateSnapTargets(newDropzones: CircuitDropzoneElement[]): void {\n const firstDropzone = newDropzones[0]\n Util.notNull(firstDropzone)\n\n const baseI = this.isVertical ? firstDropzone.snapTarget.y : firstDropzone.snapTarget.x\n\n for (const [i, jv] of Object.entries(this.snapTargets)) {\n if (parseInt(i) <= baseI) continue\n\n for (const j in jv) {\n const snapTarget = jv[j]\n if (snapTarget.stepIndex === null) continue\n snapTarget.stepIndex += 1\n }\n }\n\n for (const [wireIndex, each] of Object.entries(newDropzones)) {\n const snapTarget = each.snapTarget\n const i = this.isVertical ? snapTarget.y : snapTarget.x\n const j = this.isVertical ? snapTarget.x : snapTarget.y\n\n Util.notNull(this.snapTargets[i])\n\n this.snapTargets[i][j] = {\n dropzone: each,\n stepIndex: null,\n wireIndex: parseInt(wireIndex)\n }\n }\n }\n\n serialize(): SerializedCircuitStep[] {\n return this.steps.map(each => each.serialize())\n }\n\n private get urlJson(): string {\n const json = window.location.href.toString().split(window.location.host)[1].slice(1)\n return decodeURIComponent(json)\n }\n\n clear(): void {\n history.pushState('', '', encodeURIComponent('{\"cols\":[]}'))\n location.reload()\n }\n\n toJson(): string {\n let isInBlock = false\n const cols = []\n\n for (const each of this.nonEmptySteps) {\n if (each.isInBlock) {\n if (!isInBlock) {\n const block = each.block\n cols.push(`[\"[${block.comment}\"]`)\n isInBlock = true\n }\n } else {\n if (isInBlock) {\n cols.push('[\"]\"]')\n isInBlock = false\n }\n }\n cols.push(each.toJson())\n }\n\n if (isInBlock) {\n cols.push('[\"]\"]')\n }\n\n if (this.circuitTitle !== '') {\n return `{\"cols\":[${cols.join(',')}],\"title\":\"${this.circuitTitle}\"}`\n } else {\n return `{\"cols\":[${cols.join(',')}]}`\n }\n }\n}\n\ncontroller(QuantumCircuitElement)\n", "import {Complex, DetailedError, Util} from '@qni/common'\nimport {attr, controller, target, targets} from '@github/catalyst'\nimport {html, render} from '@github/jtml'\nimport {isBlochDisplayElement, isMeasurementGateElement} from './operation'\nimport {isControllable, isIfable} from './mixin'\nimport {CircleNotationElement} from './circle-notation-element'\nimport {QuantumCircuitElement} from './quantum-circuit-element'\nimport {RunCircuitButtonElement} from './run-circuit-button-element'\n\ntype MessageEventData = {\n type: 'step' | 'finish'\n blochVectors: {[bit: number]: [number, number, number]}\n measuredBits: {[bit: number]: number}\n step: number\n amplitudes: Array<[number, number]>\n flags: {[key: string]: boolean}\n}\n\nexport class QuantumSimulatorElement extends HTMLElement {\n @attr updateUrl = false\n\n @target circuit!: QuantumCircuitElement\n @target circleNotation!: CircleNotationElement\n @targets runCircuitButtons!: RunCircuitButtonElement[]\n\n private visibleQubitCircleKets!: number[]\n\n declare worker: Worker\n\n connectedCallback(): void {\n this.worker = new Worker('./serviceworker.js')\n this.visibleQubitCircleKets = []\n\n this.worker.addEventListener('message', this.handleServiceWorkerMessage.bind(this))\n this.addEventListener('operation-inspector-if-change', this.run)\n this.addEventListener('operation-inspector-angle-change', this.run)\n this.addEventListener('operation-inspector-angle-update', this.maybeUpdateUrl)\n this.addEventListener('operation-inspector-flag-change', this.run)\n this.addEventListener('circuit-step-mouseenter', this.runUnlessEditing)\n this.addEventListener('circuit-step-mouseleave', this.runUnlessEditing)\n this.addEventListener('circuit-step-snap', this.run)\n this.addEventListener('circuit-step-unsnap', this.run)\n this.addEventListener('circuit-step-update', this.run)\n this.addEventListener('circle-notation-visibility-change', this.updateVisibleQubitCircleKets)\n this.addEventListener('circle-notation-visibility-change', this.run)\n this.addEventListener('run-circuit-button-click', this.run)\n\n this.addEventListener('circuit-step-snap', this.maybeUpdateUrl)\n this.addEventListener('circuit-step-unsnap', this.maybeUpdateUrl)\n\n this.attachShadow({mode: 'open'})\n this.update()\n this.maybeUpdateUrl()\n\n this.circuit.setBreakpoint(this.circuit.stepAt(0))\n this.run()\n }\n\n update(): void {\n render(html``, this.shadowRoot!)\n }\n\n clearCircuit(): void {\n this.circuit.clear()\n }\n\n private handleServiceWorkerMessage(event: MessageEvent): void {\n const data = event.data as MessageEventData\n const stepIndex = this.activeStepIndex\n\n switch (data.type) {\n case 'step': {\n const step = this.circuit.stepAt(data.step)\n\n for (const bitStr in data.blochVectors) {\n const bit = parseInt(bitStr)\n const blochDisplay = step.dropzoneAt(bit).operation\n if (isBlochDisplayElement(blochDisplay)) {\n const blochVector = data.blochVectors[bit]\n blochDisplay.x = blochVector[0]\n blochDisplay.y = blochVector[1]\n blochDisplay.z = blochVector[2]\n }\n }\n\n if (data.measuredBits) {\n const measuredBits = data.measuredBits\n for (const bitStr in measuredBits) {\n const bit = parseInt(bitStr)\n const measurementGate = step.dropzoneAt(bit).operation\n if (isMeasurementGateElement(measurementGate)) {\n measurementGate.value = measuredBits[bit].toString()\n }\n }\n }\n\n for (const each of step.dropzones) {\n const operation = each.operation\n if (!isIfable(operation)) continue\n if (operation.if === '') continue\n\n operation.disabled = !data.flags[operation.if]\n }\n\n if (stepIndex === data.step) {\n const complexAmplitudes: {[ket: number]: Complex} = {}\n for (const ket in data.amplitudes) {\n const c = data.amplitudes[ket]\n complexAmplitudes[ket] = new Complex(c[0], c[1])\n }\n this.circleNotation?.setAmplitudes(complexAmplitudes)\n }\n break\n }\n case 'finish': {\n for (const each of this.runCircuitButtons) {\n each.running = false\n }\n break\n }\n default:\n throw new DetailedError('Unknown service worker message', {data})\n }\n }\n\n private run(): void {\n if (this.circleNotation === null) return\n\n const stepIndex = this.activeStepIndex\n const serializedSteps = this.circuit.serialize()\n Util.need(serializedSteps.length > 0, 'non-zero step length')\n\n const maxControlTargetBit = Math.max(\n ...serializedSteps.map(serializedStep =>\n Math.max(\n ...serializedStep.map(operation => {\n let controls: number[] = []\n if (isControllable(operation)) controls = operation.controls\n\n return Math.max(...operation.targets.concat(controls))\n })\n )\n )\n )\n const qubitCount = maxControlTargetBit >= 0 ? maxControlTargetBit + 1 : 1\n\n this.circleNotation.qubitCount = qubitCount\n this.worker.postMessage({\n qubitCount,\n stepIndex,\n steps: serializedSteps,\n targets: this.visibleQubitCircleKets\n })\n }\n\n private runUnlessEditing(): void {\n if (this.circuit.editing) return\n this.run()\n }\n\n private get activeStepIndex(): number {\n const activeStep = this.circuit.activeStep\n const breakpoint = this.circuit.breakpoint\n let step = activeStep || breakpoint\n\n if (step === null) {\n step = this.circuit.stepAt(0)\n this.circuit.setBreakpoint(step)\n }\n\n return this.circuit.fetchStepIndex(step)\n }\n\n private updateVisibleQubitCircleKets(event: Event): void {\n const ketNumbers = (event as CustomEvent).detail as number[]\n Util.notNull(ketNumbers)\n\n this.visibleQubitCircleKets = ketNumbers\n }\n\n private maybeUpdateUrl(): void {\n if (!this.updateUrl) return\n Util.notNull(this.circuit)\n\n const json = this.circuit.toJson()\n history.pushState('', '', encodeURIComponent(json))\n }\n}\n\ncontroller(QuantumSimulatorElement)\n", "if (navigator.serviceWorker) {\n if (location.hostname === 'localhost') {\n navigator.serviceWorker.register('/serviceworker.js', { scope: './' }).catch(function (error) {\n console.log('[Companion]', 'Service worker registration failed: ' + error)\n })\n } else {\n navigator.serviceWorker\n .register('/qni/serviceworker.js', { scope: '/qni/' })\n .catch(function (error) {\n console.log('[Companion]', 'Service worker registration failed: ' + error)\n })\n }\n}\n"],
- "mappings": "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",
+ "sourcesContent": ["/**\n * @license Fraction.js v4.1.2 23/05/2021\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function createError(name) {\n\n function errorConstructor() {\n var temp = Error.apply(this, arguments);\n temp['name'] = this['name'] = name;\n this['stack'] = temp['stack'];\n this['message'] = temp['message'];\n }\n\n /**\n * Error constructor\n *\n * @constructor\n */\n function IntermediateInheritor() { }\n IntermediateInheritor.prototype = Error.prototype;\n errorConstructor.prototype = new IntermediateInheritor();\n\n return errorConstructor;\n }\n\n var DivisionByZero = Fraction['DivisionByZero'] = createError('DivisionByZero');\n var InvalidParameter = Fraction['InvalidParameter'] = createError('InvalidParameter');\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throwInvalidParam();\n }\n return n * s;\n }\n\n function throwInvalidParam() {\n throw new InvalidParameter();\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n /= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s += 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n *= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throwInvalidParam();\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1 /= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A += C;\n B += D;\n } else {\n C += A;\n D += B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n *= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throwInvalidParam();\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A += 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A += 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A += 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throwInvalidParam();\n }\n\n if (d === 0) {\n throw new DivisionByZero();\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d /= 2) {\n }\n\n for (; d % 5 === 0;\n d /= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a %= b;\n if (!a)\n return b;\n b %= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n if (!(this instanceof Fraction)) {\n return new Fraction(a, b);\n }\n\n parse(a, b);\n\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n }\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return new Fraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return new Fraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return new Fraction(this);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return new Fraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n Fraction(0, 0); // Throw DivisionByZero\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return new Fraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return new Fraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return new Fraction;\n }\n return new Fraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return new Fraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return new Fraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return new Fraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return new Fraction(d, n);\n }\n return new Fraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n // First naive implementation, needs improvement\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n var cont = this['abs']()['toContinued']();\n\n eps = eps || 0.001;\n\n function rec(a) {\n if (a.length === 1)\n return new Fraction(a[0]);\n return rec(a.slice(1))['inverse']()['add'](a[0]);\n }\n\n for (var i = 0; i < cont.length; i++) {\n var tmp = rec(cont.slice(0, i + 1));\n if (tmp['sub'](this['abs']())['abs']().valueOf() < eps) {\n return tmp['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction() => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n str += \" \";\n n %= d;\n }\n\n str += n;\n str += '/';\n str += d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n n %= d;\n }\n\n str += \"\\\\frac{\";\n str += n;\n str += '}{';\n str += d;\n str += '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var g;\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] === -1 ? \"-\" : \"\";\n\n str += N / D | 0;\n\n N %= D;\n N *= 10;\n\n if (N)\n str += \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \"(\";\n for (var i = cycLen; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \")\";\n } else {\n for (var i = dec; N && i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst COLLECTION_CUTOFF = 1000\nconst BAD_TO_STRING_RESULT = Object.prototype.toString.call({})\nconst RECURSE_LIMIT_DESCRIPTION = '!recursion-limit!'\nconst DEFAULT_RECURSION_LIMIT = 10\n\n// Attempts to give a useful and unambiguous description of the given value.\nexport function describe(value: unknown, recursionLimit = DEFAULT_RECURSION_LIMIT): string {\n return (\n tryDescribeAtomic(value) || tryDescribeCollection(value, recursionLimit) || describeFallback(value, recursionLimit)\n )\n}\n\nfunction tryDescribeAtomic(value: unknown) {\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n if (typeof value === 'string') return `\"${value}\"`\n if (typeof value === 'number') return String(value)\n\n return undefined\n}\n\nfunction tryDescribeCollection(value: unknown, recursionLimit: number) {\n if (recursionLimit === 0) return RECURSE_LIMIT_DESCRIPTION\n if (value instanceof Map) return describeMap(value, recursionLimit)\n if (value instanceof Set) return describeSet(value, recursionLimit)\n const isIterable = (v: unknown): v is Iterable => {\n if ((v as Iterable)[Symbol.iterator] !== undefined) {\n return true\n }\n return false\n }\n if (isIterable(value)) return describeIterable(value, recursionLimit)\n\n return undefined\n}\n\nfunction describeFallback(value: unknown, recursionLimit: number) {\n const defaultString = String(value)\n if (defaultString !== BAD_TO_STRING_RESULT) return defaultString\n\n return describeObject(value, recursionLimit)\n}\n\nfunction describeMap(map: Map, limit: number) {\n const entries = []\n for (const [k, v] of map.entries()) {\n if (entries.length > COLLECTION_CUTOFF) {\n entries.push('[...]')\n break\n }\n const keyDesc = describe(k, limit - 1)\n const valDesc = describe(v, limit - 1)\n entries.push(`${keyDesc}: ${valDesc}`)\n }\n return `Map{${entries.join(', ')}}`\n}\n\nfunction describeSet(set: Set, limit: number) {\n const entries = []\n for (const e of set) {\n if (entries.length > COLLECTION_CUTOFF) {\n entries.push('[...]')\n break\n }\n entries.push(describe(e, limit - 1))\n }\n return `Set{${entries.join(', ')}}`\n}\n\nfunction describeIterable(seq: Iterable, limit: number): string {\n const entries = []\n for (const e of seq) {\n if (entries.length > COLLECTION_CUTOFF) {\n entries.push('[...]')\n break\n }\n entries.push(describe(e, limit - 1))\n }\n const prefix = Array.isArray(seq) ? '' : seq.constructor.name\n return `${prefix}[${entries.join(', ')}]`\n}\n\nfunction describeObject(value: unknown, limit: number) {\n const entries = []\n for (const k in value as Record) {\n if (!Object.prototype.hasOwnProperty.call(value, k)) {\n continue\n }\n if (entries.length > COLLECTION_CUTOFF) {\n entries.push('[...]')\n break\n }\n const v = (value as Record)[k]\n const keyDesc = describe(k, limit - 1)\n const valDesc = describe(v, limit - 1)\n entries.push(`${keyDesc}: ${valDesc}`)\n }\n\n const typeName = (value as Record).constructor.name\n const prefix = typeName === {}.constructor.name ? '' : `(Type: ${typeName})`\n return `${prefix}{${entries.join(', ')}}`\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {describe} from './describe'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? describe(this.detailsObj)\n : '(failed to describe detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to describe detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10}\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Util {\n static need(expression: boolean | unknown, message: string, args?: unknown[]): void {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n static snappedCosSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0],\n [s, s],\n [0, 1],\n [-s, s],\n [-1, 0],\n [-s, -s],\n [0, -1],\n [s, -s]\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DetailedError} from './detailed-error'\nimport {Format} from './format'\nimport {Util} from './util'\n\nexport class Complex {\n static readonly ZERO = new Complex(0, 0)\n static readonly ONE = new Complex(1, 0)\n static readonly I = new Complex(0, 1)\n\n public real: number\n public imag: number\n\n static from(v: number | Complex): Complex {\n if (v instanceof Complex) {\n return v\n }\n if (typeof v === 'number') {\n return new Complex(v, 0)\n }\n throw new DetailedError('Unrecognized value type.', {v})\n }\n\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = Util.snappedCosSin(phase)\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n static realPartOf(v: number | Complex): number {\n if (v instanceof Complex) {\n return v.real\n }\n if (typeof v === 'number') {\n return v\n }\n throw new DetailedError('Unrecognized value type.', {v})\n }\n\n static imagPartOf(v: number | Complex): number {\n if (v instanceof Complex) {\n return v.imag\n }\n if (typeof v === 'number') {\n return 0\n }\n throw new DetailedError('Unrecognized value type.', {v})\n }\n\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n }\n\n static rootsOfQuadratic(a: number | Complex, b: number | Complex, c: number | Complex): Complex[] {\n a = Complex.from(a)\n b = Complex.from(b)\n c = Complex.from(c)\n\n if (a.isEqualTo(0)) {\n if (!b.isEqualTo(0)) {\n return [c.times(-1).dividedBy(b)]\n }\n if (!c.isEqualTo(0)) {\n return []\n }\n throw Error('Degenerate')\n }\n\n const difs = b.times(b).minus(a.times(c).times(4)).sqrts()\n const mid = b.times(-1)\n const denom = a.times(2)\n return difs.map(d => mid.minus(d).dividedBy(denom))\n }\n\n isEqualTo(other: unknown): boolean {\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n return false\n }\n\n isApproximatelyEqualTo(other: number | Complex | unknown, epsilon: number): boolean {\n if (other instanceof Complex || typeof other === 'number') {\n const d = this.minus(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n norm2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n abs(): number {\n return Math.sqrt(this.norm2())\n }\n\n unit(): Complex {\n const m = this.norm2()\n if (m < 0.00001) {\n return Complex.polar(1, this.phase())\n }\n return this.dividedBy(Math.sqrt(m))\n }\n\n plus(v: number | Complex): Complex {\n const c = Complex.from(v)\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n minus(v: number | Complex): Complex {\n const c = Complex.from(v)\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n times(v: number | Complex): Complex {\n const c = Complex.from(v)\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n dividedBy(v: number | Complex): Complex {\n const c = Complex.from(v)\n const d = c.norm2()\n if (d === 0) {\n throw new Error('Division by Zero')\n }\n\n const n = this.times(c.conjugate())\n return new Complex(n.real / d, n.imag / d)\n }\n\n sqrts(): [Complex] | [Complex, Complex] {\n const [r, i] = [this.real, this.imag]\n const m = Math.sqrt(Math.sqrt(r * r + i * i))\n if (m === 0) {\n return [Complex.ZERO]\n }\n if (i === 0 && r < 0) {\n return [new Complex(0, m), new Complex(0, -m)]\n }\n\n const a = this.phase() / 2\n const c = Complex.polar(m, a)\n return [c, c.times(-1)]\n }\n\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n toString(format?: Format): string {\n format = format || Format.EXACT\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n raisedTo(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (Complex.ZERO.isEqualTo(exponent)) {\n return Complex.ONE\n }\n if (this.isEqualTo(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().times(Complex.from(exponent)).exp()\n }\n\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n cos(): Complex {\n const z = this.times(Complex.I)\n return z.exp().plus(z.neg().exp()).times(0.5)\n }\n\n sin(): Complex {\n const z = this.times(Complex.I)\n return z.exp().minus(z.neg().exp()).dividedBy(new Complex(0, 2))\n }\n\n tan(): Complex {\n return this.sin().dividedBy(this.cos())\n }\n\n ln(): Complex {\n return new Complex(Math.log(this.abs()), this.phase())\n }\n\n phase(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n private toStringAllowSingleValue(format: Format): string {\n if (Math.abs(this.imag) <= format.maxAbbreviationError) {\n return format.formatFloat(this.real)\n }\n if (Math.abs(this.real) <= format.maxAbbreviationError) {\n if (Math.abs(this.imag - 1) <= format.maxAbbreviationError) {\n return 'i'\n }\n if (Math.abs(this.imag + 1) <= format.maxAbbreviationError) {\n return '-i'\n }\n return `${format.formatFloat(this.imag)}i`\n }\n\n return this.toStringBothValues(format)\n }\n\n private toStringBothValues(format: Format): string {\n const separator = this.imag >= 0 ? '+' : '-'\n const imagFactor =\n format.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= format.maxAbbreviationError\n ? ''\n : format.formatFloat(Math.abs(this.imag))\n const prefix = format.allowAbbreviation || format.fixedDigits === undefined || this.real < 0 ? '' : '+'\n return `${prefix + format.formatFloat(this.real) + separator + imagFactor}i`\n }\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n if?: string\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "/**\n * @license Fraction.js v4.1.2 23/05/2021\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function createError(name) {\n\n function errorConstructor() {\n var temp = Error.apply(this, arguments);\n temp['name'] = this['name'] = name;\n this['stack'] = temp['stack'];\n this['message'] = temp['message'];\n }\n\n /**\n * Error constructor\n *\n * @constructor\n */\n function IntermediateInheritor() { }\n IntermediateInheritor.prototype = Error.prototype;\n errorConstructor.prototype = new IntermediateInheritor();\n\n return errorConstructor;\n }\n\n var DivisionByZero = Fraction['DivisionByZero'] = createError('DivisionByZero');\n var InvalidParameter = Fraction['InvalidParameter'] = createError('InvalidParameter');\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throwInvalidParam();\n }\n return n * s;\n }\n\n function throwInvalidParam() {\n throw new InvalidParameter();\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n /= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s += 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n *= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throwInvalidParam();\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1 /= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A += C;\n B += D;\n } else {\n C += A;\n D += B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n *= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throwInvalidParam();\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A += 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A += 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A += 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throwInvalidParam();\n }\n\n if (d === 0) {\n throw new DivisionByZero();\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d /= 2) {\n }\n\n for (; d % 5 === 0;\n d /= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a %= b;\n if (!a)\n return b;\n b %= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n if (!(this instanceof Fraction)) {\n return new Fraction(a, b);\n }\n\n parse(a, b);\n\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n }\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return new Fraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return new Fraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return new Fraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return new Fraction(this);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return new Fraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n Fraction(0, 0); // Throw DivisionByZero\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return new Fraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return new Fraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return new Fraction;\n }\n return new Fraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return new Fraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return new Fraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return new Fraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return new Fraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return new Fraction(d, n);\n }\n return new Fraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n // First naive implementation, needs improvement\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n var cont = this['abs']()['toContinued']();\n\n eps = eps || 0.001;\n\n function rec(a) {\n if (a.length === 1)\n return new Fraction(a[0]);\n return rec(a.slice(1))['inverse']()['add'](a[0]);\n }\n\n for (var i = 0; i < cont.length; i++) {\n var tmp = rec(cont.slice(0, i + 1));\n if (tmp['sub'](this['abs']())['abs']().valueOf() < eps) {\n return tmp['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction() => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n str += \" \";\n n %= d;\n }\n\n str += n;\n str += '/';\n str += d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str += '-';\n }\n\n if (d === 1) {\n str += n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str += whole;\n n %= d;\n }\n\n str += \"\\\\frac{\";\n str += n;\n str += '}{';\n str += d;\n str += '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var g;\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] === -1 ? \"-\" : \"\";\n\n str += N / D | 0;\n\n N %= D;\n N *= 10;\n\n if (N)\n str += \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \"(\";\n for (var i = cycLen; i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n str += \")\";\n } else {\n for (var i = dec; N && i--;) {\n str += N / D | 0;\n N %= D;\n N *= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "/* interact.js 1.10.11 | https://interactjs.io/license */\n", "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\n", "export default (thing: any) => !!(thing && thing.Window) && thing instanceof thing.Window\n", "import isWindow from './isWindow'\n\nexport let realWindow = undefined as Window\n\nlet win = undefined as Window\nexport { win as window }\n\nexport function init (window: Window & { wrap?: (...args: any[]) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win = window\n}\n\nif (typeof window !== 'undefined' && !!window) {\n init(window)\n}\n\nexport function getWindow (node: any) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = node.ownerDocument || node\n\n return rootNode.defaultView || win.window\n}\n", "import type { Element } from '@interactjs/types/index'\n\nimport isWindow from './isWindow'\nimport * as win from './window'\n\nconst window = (thing: any): thing is Window => thing === win.window || isWindow(thing)\n\nconst docFrag = (thing: any): thing is DocumentFragment => object(thing) && thing.nodeType === 11\n\nconst object = (thing: any): thing is { [index: string]: any } => !!thing && typeof thing === 'object'\n\nconst func = (thing: any): thing is (...args: any[]) => any => typeof thing === 'function'\n\nconst number = (thing: any): thing is number => typeof thing === 'number'\n\nconst bool = (thing: any): thing is boolean => typeof thing === 'boolean'\n\nconst string = (thing: any): thing is string => typeof thing === 'string'\n\nconst element = (thing: any): thing is Element => {\n if (!thing || typeof thing !== 'object') {\n return false\n }\n\n // eslint-disable-next-line import/no-named-as-default-member\n const _window = win.getWindow(thing) || win.window\n\n return /object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string'\n}\n\nconst plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString())\n\nconst array = (thing: any): thing is T[] =>\n object(thing) && typeof thing.length !== 'undefined' && func(thing.splice)\n\nexport default {\n window,\n docFrag,\n object,\n func,\n number,\n bool,\n string,\n element,\n plainObject,\n array,\n}\n", "import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionMethod, DraggableOptions, DropzoneOptions } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drag: DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drag?: typeof drag\n }\n}\n\nexport type DragEvent = InteractEvent<'drag'>\n\nexport type DraggableMethod = ActionMethod\n\nfunction install (scope: Scope) {\n const { actions, Interactable, defaults } = scope\n\n Interactable.prototype.draggable = drag.draggable\n\n actions.map.drag = drag\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') return\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n } else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') return\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (\n this: Interactable,\n options?: DraggableOptions | boolean,\n): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('drag', options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Plugin = {\n id: 'actions/drag',\n install,\n listeners: {\n 'interactions:before-action-move': beforeMove,\n 'interactions:action-resume': beforeMove,\n\n // dragmove\n 'interactions:action-move': move,\n 'auto-start:check': (arg) => {\n const { interaction, interactable, buttons } = arg\n const dragOptions = interactable.options.drag\n\n if (\n !(dragOptions && dragOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options.drag.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n arg.action = {\n name: 'drag',\n axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis,\n }\n\n return false\n },\n },\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis: 'xy',\n lockAxis: 'xy',\n } as DropzoneOptions,\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n", "const domObjects: {\n init: any\n document: Document\n DocumentFragment: typeof DocumentFragment\n SVGElement: typeof SVGElement\n SVGSVGElement: typeof SVGSVGElement\n SVGElementInstance: any\n Element: typeof Element\n HTMLElement: typeof HTMLElement\n Event: typeof Event\n Touch: typeof Touch\n PointerEvent: typeof PointerEvent\n} = {\n init,\n document: null,\n DocumentFragment: null,\n SVGElement: null,\n SVGSVGElement: null,\n SVGElementInstance: null,\n Element: null,\n HTMLElement: null,\n Event: null,\n Touch: null,\n PointerEvent: null,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent\n}\n", "import domObjects from './domObjects'\nimport is from './is'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as 'matches',\n pEventTypes: null as {\n up: string\n down: string\n over: string\n out: string\n move: string\n cancel: string\n },\n wheelEvent: null as string,\n}\n\nfunction init (window: any) {\n const Element = domObjects.Element\n const navigator: Partial = window.navigator || {}\n\n // Does the browser support touch input?\n browser.supportsTouch =\n 'ontouchstart' in window ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform)\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion)\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile =\n navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent)\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = ('matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector') as 'matches'\n\n browser.pEventTypes = browser.supportsPointerEvent\n ? domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n }\n : null\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = domObjects.document && 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n", "import type { Rect, Target, Element } from '@interactjs/types/index'\n\nimport browser from './browser'\nimport domObjects from './domObjects'\nimport is from './is'\nimport * as win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n if (parent.contains) {\n return parent.contains(child as Node)\n }\n\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = (child as Node).parentNode\n }\n\n return false\n}\n\nexport function closest (element: Node, selector: string) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return element\n }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node: Node | Document) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element: Element, selector: string) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el: Node | Document | ShadowRoot) => el.parentNode || (el as ShadowRoot).host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements: Element[] | NodeListOf) {\n let deepestNodeParents: Node[] = []\n let deepestNodeIndex: number\n\n for (let i = 0; i < elements.length; i++) {\n const currentNode = elements[i]\n const deepestNode: Node = elements[deepestNodeIndex]\n\n // node may appear in elements array multiple times\n if (!currentNode || i === deepestNodeIndex) {\n continue\n }\n\n if (!deepestNode) {\n deepestNodeIndex = i\n continue\n }\n\n const currentNodeParent = getParent(currentNode)\n const deepestNodeParent = getParent(deepestNode)\n\n // check if the deepest or current are document.documentElement/rootElement\n // - if the current node is, do nothing and continue\n if (currentNodeParent === currentNode.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current node and continue to next\n else if (deepestNodeParent === currentNode.ownerDocument) {\n deepestNodeIndex = i\n continue\n }\n\n // compare zIndex of siblings\n if (currentNodeParent === deepestNodeParent) {\n if (zIndexIsHigherThan(currentNode, deepestNode)) {\n deepestNodeIndex = i\n }\n\n continue\n }\n\n // populate the ancestry array for the latest deepest node\n deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode)\n\n let ancestryStart: Node\n\n // if the deepest node is an HTMLElement and the current node is a non root svg element\n if (\n deepestNode instanceof domObjects.HTMLElement &&\n currentNode instanceof domObjects.SVGElement &&\n !(currentNode instanceof domObjects.SVGSVGElement)\n ) {\n // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n if (currentNode === deepestNodeParent) {\n continue\n }\n\n ancestryStart = currentNode.ownerSVGElement\n } else {\n ancestryStart = currentNode\n }\n\n const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument)\n let commonIndex = 0\n\n // get (position of closest common ancestor) + 1\n while (\n currentNodeParents[commonIndex] &&\n currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]\n ) {\n commonIndex++\n }\n\n const parents = [\n currentNodeParents[commonIndex - 1],\n currentNodeParents[commonIndex],\n deepestNodeParents[commonIndex],\n ]\n\n if (parents[0]) {\n let child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestNodeIndex = i\n deepestNodeParents = currentNodeParents\n\n break\n } else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n }\n\n return deepestNodeIndex\n}\n\nfunction getNodeParents (node: Node, limit?: Node) {\n const parents: Node[] = []\n let parent: Node = node\n let parentParent: Node\n\n while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n parents.unshift(parent)\n parent = parentParent\n }\n\n return parents\n}\n\nfunction zIndexIsHigherThan (higherNode: Node, lowerNode: Node) {\n const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0\n const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0\n\n return higherIndex >= lowerIndex\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element) as Element\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element: Element) {\n return (element as SVGElement).correspondingUseElement || element\n}\n\nexport function getScrollXY (relevantWindow?: Window) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element: Element): Required {\n const clientRect =\n element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0]\n\n return (\n clientRect && {\n left: clientRect.left,\n right: clientRect.right,\n top: clientRect.top,\n bottom: clientRect.bottom,\n width: clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n )\n}\n\nexport function getElementRect (element: Element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node: Node | Document) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value: Target) {\n if (!is.string(value)) {\n return false\n }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n", "export default function extend (dest: U & Partial, source: T): T & U {\n for (const prop in source) {\n ;((dest as unknown) as T)[prop] = source[prop]\n }\n\n const ret = dest as T & U\n\n return ret\n}\n", "import type {\n HasGetRect,\n RectResolvable,\n Rect,\n Element,\n Point,\n FullRect,\n EdgeOptions,\n} from '@interactjs/types'\n\nimport { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport is from './is'\n\nexport function getStringOptionResult (value: any, target: HasGetRect, element: Node) {\n if (value === 'parent') {\n return parentNode(element)\n }\n\n if (value === 'self') {\n return target.getRect(element as Element)\n }\n\n return closest(element, value)\n}\n\nexport function resolveRectLike (\n value: RectResolvable,\n target?: HasGetRect,\n element?: Node,\n functionArgs?: T,\n) {\n let returnValue: any = value\n if (is.string(returnValue)) {\n returnValue = getStringOptionResult(returnValue, target, element)\n } else if (is.func(returnValue)) {\n returnValue = returnValue(...functionArgs)\n }\n\n if (is.element(returnValue)) {\n returnValue = getElementRect(returnValue)\n }\n\n return returnValue as Rect\n}\n\nexport function rectToXY (rect: Rect | Point) {\n return (\n rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n )\n}\n\nexport function xywhToTlbr> (rect: T) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || rect.left + rect.width\n rect.bottom = rect.bottom || rect.top + rect.height\n }\n\n return rect as Rect & T\n}\n\nexport function tlbrToXywh (rect: Rect & Partial) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right || 0) - rect.x\n rect.height = rect.height || (rect.bottom || 0) - rect.y\n }\n\n return rect as FullRect & Point\n}\n\nexport function addEdges (edges: EdgeOptions, rect: Rect, delta: Point) {\n if (edges.left) {\n rect.left += delta.x\n }\n if (edges.right) {\n rect.right += delta.x\n }\n if (edges.top) {\n rect.top += delta.y\n }\n if (edges.bottom) {\n rect.bottom += delta.y\n }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n", "import type { PerActionDefaults } from '@interactjs/core/options'\nimport type { ActionName } from '@interactjs/core/scope'\nimport type { HasGetRect } from '@interactjs/types/index'\n\nimport { rectToXY, resolveRectLike } from './rect'\n\nexport default function (\n target: HasGetRect & { options: PerActionDefaults },\n element: Node,\n actionName?: ActionName,\n) {\n const actionOptions = (target.options as any)[actionName]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n", "import type { EventTypes, Listener, ListenersArg } from '@interactjs/types/index'\n\nimport extend from './extend'\nimport is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Listener[]\n}\n\nexport default function normalize (\n type: EventTypes,\n listeners?: ListenersArg | ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result)\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n } else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n } else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n", "export default (x: number, y: number) => Math.sqrt(x * x + y * y)\n", "function pointerExtend (dest: Partial, source: T) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n moz: /(Pressure)$/,\n} as { [prefix: string]: RegExp }\n\nexport default pointerExtend\n", "import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { CoordsSetMember, PointerType, Point, PointerEventType, Element } from '@interactjs/types/index'\n\nimport browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport is from './is'\nimport pointerExtend from './pointerExtend'\n\nexport function copyCoords (dest: CoordsSetMember, src: CoordsSetMember) {\n dest.page = dest.page || ({} as any)\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || ({} as any)\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n}\n\nexport function setCoordDeltas (targetObj: CoordsSetMember, prev: CoordsSetMember, cur: CoordsSetMember) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n}\n\nexport function setCoordVelocity (targetObj: CoordsSetMember, delta: CoordsSetMember) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n}\n\nexport function setZeroCoords (targetObj: CoordsSetMember) {\n targetObj.page.x = 0\n targetObj.page.y = 0\n targetObj.client.x = 0\n targetObj.client.y = 0\n}\n\nexport function isNativePointer (pointer: any) {\n return pointer instanceof dom.Event || pointer instanceof dom.Touch\n}\n\n// Get specified X/Y coords for mouse or event.touches[0]\nexport function getXY (type: string, pointer: PointerType | InteractEvent, xy: Point) {\n xy = xy || ({} as Point)\n type = type || 'page'\n\n xy.x = pointer[(type + 'X') as keyof PointerType]\n xy.y = pointer[(type + 'Y') as keyof PointerType]\n\n return xy\n}\n\nexport function getPageXY (pointer: PointerType | InteractEvent, page?: Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n } else {\n getXY('page', pointer, page)\n }\n\n return page\n}\n\nexport function getClientXY (pointer: PointerType, client: Point) {\n client = client || ({} as any)\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n getXY('screen', pointer, client)\n } else {\n getXY('client', pointer, client)\n }\n\n return client\n}\n\nexport function getPointerId (pointer: { pointerId?: number, identifier?: number, type?: string }) {\n return is.number(pointer.pointerId) ? pointer.pointerId! : pointer.identifier!\n}\n\nexport function setCoords (dest: CoordsSetMember, pointers: any[], timeStamp: number) {\n const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0]\n\n getPageXY(pointer, dest.page)\n getClientXY(pointer, dest.client)\n\n dest.timeStamp = timeStamp\n}\n\nexport function getTouchPair (event: TouchEvent | PointerType[]) {\n const touches: PointerType[] = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n } else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n } else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n}\n\nexport function pointerAverage (pointers: PointerType[]) {\n const average = {\n pageX: 0,\n pageY: 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n type CoordKeys = keyof typeof average\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop as CoordKeys] += pointer[prop as CoordKeys]\n }\n }\n for (const prop in average) {\n average[prop as CoordKeys] /= pointers.length\n }\n\n return average\n}\n\nexport function touchBBox (event: PointerType[]) {\n if (!event.length) {\n return null\n }\n\n const touches = getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n}\n\nexport function touchDistance (event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n}\n\nexport function touchAngle (event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = (180 * Math.atan2(dy, dx)) / Math.PI\n\n return angle\n}\n\nexport function getPointerType (pointer: { pointerType?: string, identifier?: number, type?: string }) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]!\n : // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n /touch/.test(pointer.type || '') || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n}\n\n// [ event.target, event.currentTarget ]\nexport function getEventTargets (event: Event) {\n const path = is.func(event.composedPath)\n ? (event.composedPath() as Element[])\n : ((event as unknown) as { path: Element[] }).path\n\n return [\n domUtils.getActualElement(path ? path[0] : (event.target as Element)),\n domUtils.getActualElement(event.currentTarget as Element),\n ]\n}\n\nexport function newCoords (): CoordsSetMember {\n return {\n page: { x: 0, y: 0 },\n client: { x: 0, y: 0 },\n timeStamp: 0,\n }\n}\n\nexport function coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () {\n return this.coords.page\n },\n get client () {\n return this.coords.client\n },\n get timeStamp () {\n return this.coords.timeStamp\n },\n get pageX () {\n return this.coords.page.x\n },\n get pageY () {\n return this.coords.page.y\n },\n get clientX () {\n return this.coords.client.x\n },\n get clientY () {\n return this.coords.client.y\n },\n get pointerId () {\n return this.coords.pointerId\n },\n get target () {\n return this.coords.target\n },\n get type () {\n return this.coords.type\n },\n get pointerType () {\n return this.coords.pointerType\n },\n get buttons () {\n return this.coords.buttons\n },\n preventDefault () {},\n }\n\n return event as typeof event & PointerType & PointerEventType\n}\n\nexport interface MockCoords {\n page: Point\n client: Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n buttons?: number\n}\n\nexport { pointerExtend }\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\n\nexport class BaseEvent {\n type: string\n target: EventTarget\n currentTarget: Node\n interactable: Interactable\n _interaction: Interaction\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n constructor (interaction: Interaction) {\n this._interaction = interaction\n }\n\n preventDefault () {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface BaseEvent {\n interaction: InteractionProxy\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n get (this: BaseEvent) {\n return this._interaction._proxy\n },\n set (this: BaseEvent) {},\n})\n", "type Filter = (element: T, index: number, array: T[]) => boolean\n\nexport const contains = (array: T[], target: T) => array.indexOf(target) !== -1\n\nexport const remove = (array: T[], target: T) => array.splice(array.indexOf(target), 1)\n\nexport const merge = (target: Array, source: U[]) => {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport const from = (source: ArrayLike) => merge([] as T[], source as T[])\n\nexport const findIndex = (array: T[], func: Filter) => {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport const find = (array: T[], func: Filter) => array[findIndex(array, func)]\n", "import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\n\nimport type { DropState } from './plugin'\n\nexport class DropEvent extends BaseEvent<'drag'> {\n target: Element\n dropzone: Interactable\n dragEvent: InteractEvent<'drag'>\n relatedTarget: Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: DropState, dragEvent: InteractEvent<'drag'>, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave' ? dropState.prev : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject () {\n const { dropState } = this._interaction\n\n if (\n this.type !== 'dropactivate' &&\n (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)\n ) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(\n activeDrops,\n ({ dropzone, element }) => dropzone === this.dropzone && element === this.target,\n )\n\n dropState.activeDrops.splice(index, 1)\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n } else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault () {}\n\n stopPropagation () {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n", "import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { DropzoneOptions, Element, PointerEventType, Rect } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { DragEvent } from '../drag/plugin'\nimport drag from '../drag/plugin'\n\nimport { DropEvent } from './DropEvent'\n\nexport interface DropzoneMethod {\n (this: Interactable, options: DropzoneOptions | boolean): Interactable\n (): DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any,\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: DropState\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n prevDropzone?: Interactable\n dropzone?: Interactable\n dragEnter?: Element\n dragLeave?: Element\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drop: DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drop?: typeof drop\n }\n\n interface Scope {\n dynamicDrop?: boolean\n }\n\n interface SignalArgs {\n 'actions/drop:start': DropSignalArg\n 'actions/drop:move': DropSignalArg\n 'actions/drop:end': DropSignalArg\n }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n interface InteractStatic {\n dynamicDrop: (this: InteractStatic, newValue?: boolean) => boolean | this\n }\n}\n\ninterface DropSignalArg {\n interaction: Interaction<'drag'>\n dragEvent: DragEvent\n}\n\nexport interface ActiveDrop {\n dropzone: Interactable\n element: Element\n rect: Rect\n}\n\nexport interface DropState {\n cur: {\n // the dropzone a drag target might be dropped into\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n prev: {\n // the dropzone that was recently dragged away from\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n // wheather the potential drop was rejected from a listener\n rejected: boolean\n // the drop events related to the current drag event\n events: FiredDropEvents\n activeDrops: ActiveDrop[]\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interactStatic: interact,\n /** @lends Interactable */\n Interactable,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {object | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interactable, options?: DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n } as Interactable['dropzone']\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (\n this: Interactable,\n dragEvent,\n event,\n draggable,\n draggableElement,\n dropElement,\n rect,\n ) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n extend(actions.phaselessTypes, {\n dragenter: true,\n dragleave: true,\n dropactivate: true,\n dropdeactivate: true,\n dropmove: true,\n drop: true,\n })\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }: Scope, draggableElement: Element) {\n const drops: ActiveDrop[] = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) {\n continue\n }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if (\n (is.element(accept) && accept !== draggableElement) ||\n (is.string(accept) && !domUtils.matchesSelector(draggableElement, accept)) ||\n (is.func(accept) && !accept({ dropzone, draggableElement }))\n ) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = (is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : is.array(dropzone.target)\n ? dropzone.target\n : [dropzone.target]) as Element[]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n rect: dropzone.getRect(dropzoneElement),\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops: ActiveDrop[], event: DropEvent) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops.slice()) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop (\n { dropState, interactable: draggable, element: dragElement }: Partial,\n dragEvent,\n pointerEvent,\n) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(\n dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null,\n )\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = domUtils.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interaction, _pointerEvent, dragEvent: DragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter: null,\n leave: null,\n activate: null,\n deactivate: null,\n move: null,\n drop: null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\ntype FiredDropEvents = Partial<\nRecord<'leave' | 'enter' | 'move' | 'drop' | 'activate' | 'deactivate', DropEvent>\n>\n\nfunction fireDropEvents (interaction: Interaction, events: FiredDropEvents) {\n const { dropState } = interaction\n const { activeDrops, cur, prev } = dropState\n\n if (events.leave) {\n prev.dropzone.fire(events.leave)\n }\n if (events.enter) {\n cur.dropzone.fire(events.enter)\n }\n if (events.move) {\n cur.dropzone.fire(events.move)\n }\n if (events.drop) {\n cur.dropzone.fire(events.drop)\n }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: DoPhaseArg<'drag', EventPhase>, scope: Scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') {\n return\n }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected =\n dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod(interactable: Interactable): DropzoneOptions\nfunction dropzoneMethod(interactable: Interactable, options: DropzoneOptions | boolean): Interactable\nfunction dropzoneMethod (interactable: Interactable, options?: DropzoneOptions | boolean) {\n if (is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (is.func(options.ondrop)) {\n interactable.on('drop', options.ondrop)\n }\n if (is.func(options.ondropactivate)) {\n interactable.on('dropactivate', options.ondropactivate)\n }\n if (is.func(options.ondropdeactivate)) {\n interactable.on('dropdeactivate', options.ondropdeactivate)\n }\n if (is.func(options.ondragenter)) {\n interactable.on('dragenter', options.ondragenter)\n }\n if (is.func(options.ondragleave)) {\n interactable.on('dragleave', options.ondragleave)\n }\n if (is.func(options.ondropmove)) {\n interactable.on('dropmove', options.ondropmove)\n }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n } else if (is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interactable,\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any,\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return interactable.options.drop.checker\n ? interactable.options.drop.checker(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\n : false\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = getOriginXY(draggable, draggableElement, 'drag')\n const page = pointerUtils.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = page.x > rect.left && page.x < rect.right\n const vertical = page.y > rect.top && page.y < rect.bottom\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && is.number(dropOverlap)) {\n const overlapArea =\n Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\n }\n\n return dropped\n}\n\nconst drop: Plugin = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: [],\n }\n },\n\n 'interactions:after-action-start': (\n { interaction, event, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n scope.fire('actions/drop:start', { interaction, dragEvent })\n }\n },\n\n 'interactions:action-move': onEventCreated,\n\n 'interactions:after-action-move': (\n { interaction, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n fireDropEvents(interaction, interaction.dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n interaction.dropState.events = {}\n },\n\n 'interactions:action-end': (arg: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (arg.interaction.prepared.name !== 'drag') {\n return\n }\n\n const { interaction, iEvent: dragEvent } = arg\n\n onEventCreated(arg, scope)\n fireDropEvents(interaction, interaction.dropState.events)\n scope.fire('actions/drop:end', { interaction, dragEvent })\n },\n\n 'interactions:stop': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept: null,\n overlap: 'pointer',\n } as DropzoneOptions,\n}\n\nexport default drop\n", "import type { InteractEvent, EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { Options } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionMethod, GesturableOptions, Rect, PointerType } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport type GesturableMethod = ActionMethod\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number // angle from first to second touch\n distance: number\n scale: number // gesture.distance / gesture.startDistance\n startAngle: number // angle of line joining two touches\n startDistance: number // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable: GesturableMethod\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n gesture: GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n gesture?: typeof gesture\n }\n}\n\nexport interface GestureEvent extends InteractEvent<'gesture'> {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Rect // enclosing box of all points\n touches: PointerType[]\n}\n\nexport interface GestureSignalArg extends DoPhaseArg<'gesture', EventPhase> {\n iEvent: GestureEvent\n interaction: Interaction<'gesture'>\n}\n\nfunction install (scope: Scope) {\n const { actions, Interactable, defaults } = scope\n\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n Interactable.prototype.gesturable = function (\n this: InstanceType,\n options: GesturableOptions | boolean,\n ) {\n if (is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Options\n } as GesturableMethod\n\n actions.map.gesture = gesture\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nfunction updateGestureProps ({ interaction, iEvent, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') return\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n } else if (ending) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n } else {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nconst gesture: Plugin = {\n id: 'actions/gesture',\n before: ['actions/drag', 'actions/resize'],\n install,\n listeners: {\n 'interactions:action-start': updateGestureProps,\n 'interactions:action-move': updateGestureProps,\n 'interactions:action-end': updateGestureProps,\n\n 'interactions:new': ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n },\n\n 'auto-start:check': (arg) => {\n if (arg.interaction.pointers.length < 2) {\n return undefined\n }\n\n const gestureOptions = arg.interactable.options.gesture\n\n if (!(gestureOptions && gestureOptions.enabled)) {\n return undefined\n }\n\n arg.action = { name: 'gesture' }\n\n return false\n },\n },\n\n defaults: {},\n\n getCursor () {\n return ''\n },\n}\n\nexport default gesture\n", "import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type {\n ActionMethod,\n ResizableOptions,\n FullRect,\n OrBoolean,\n Point,\n Rect,\n} from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = ActionMethod\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n resizeStartAspectRatio: number\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n resize: ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n resize?: typeof resize\n }\n}\n\nexport interface ResizeEvent extends InteractEvent<'resize', P> {\n deltaRect?: FullRect\n edges?: ActionProps['edges']\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interactable, options: ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions.map.resize = resize\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nfunction resizeChecker (arg) {\n const { interaction, interactable, element, rect, buttons } = arg\n\n if (!rect) {\n return undefined\n }\n\n const page = extend({}, interaction.coords.cur.page)\n const resizeOptions = interactable.options.resize\n\n if (\n !(resizeOptions && resizeOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & resizeOptions.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n const resizeEdges = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n }\n\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(\n edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || resize.defaultMargin,\n )\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n arg.action = {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n } else {\n const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin\n const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin\n\n if (right || bottom) {\n arg.action = {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n\n return arg.action ? false : undefined\n}\n\nfunction resizable (interactable: Interactable, options: OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n } else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n } else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (\n name: string,\n value: any,\n page: Point,\n element: Node,\n interactableElement: Element,\n rect: Rect,\n margin: number,\n) {\n // false, '', undefined, null\n if (!value) {\n return false\n }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2))\n\n if (width < 0) {\n if (name === 'left') {\n name = 'right'\n } else if (name === 'right') {\n name = 'left'\n }\n }\n if (height < 0) {\n if (name === 'top') {\n name = 'bottom'\n } else if (name === 'bottom') {\n name = 'top'\n }\n }\n\n if (name === 'left') {\n return page.x < (width >= 0 ? rect.left : rect.right) + margin\n }\n if (name === 'top') {\n return page.y < (height >= 0 ? rect.top : rect.bottom) + margin\n }\n\n if (name === 'right') {\n return page.x > (width >= 0 ? rect.right : rect.left) - margin\n }\n if (name === 'bottom') {\n return page.y > (height >= 0 ? rect.bottom : rect.top) - margin\n }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) {\n return false\n }\n\n return is.element(value)\n ? // the value is an element to use as a resize handle\n value === element\n : // otherwise check if element matches value as selector\n dom.matchesUpTo(element, value, interactableElement)\n}\n\n/* eslint-disable multiline-ternary */\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nfunction initCursors (browser: typeof import('@interactjs/utils/browser').default) {\n return browser.isIe9\n ? {\n x: 'e-resize',\n y: 's-resize',\n xy: 'se-resize',\n\n top: 'n-resize',\n left: 'w-resize',\n bottom: 's-resize',\n right: 'e-resize',\n topleft: 'se-resize',\n bottomright: 'se-resize',\n topright: 'ne-resize',\n bottomleft: 'ne-resize',\n }\n : {\n x: 'ew-resize',\n y: 'ns-resize',\n xy: 'nwse-resize',\n\n top: 'ns-resize',\n left: 'ew-resize',\n bottom: 'ns-resize',\n right: 'ew-resize',\n topleft: 'nwse-resize',\n bottomright: 'nwse-resize',\n topright: 'nesw-resize',\n bottomleft: 'nesw-resize',\n }\n}\n/* eslint-enable multiline-ternary */\n\nfunction start ({ iEvent, interaction }: { iEvent: InteractEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const resizeEvent = iEvent as ResizeEvent\n const rect = interaction.rect\n\n interaction._rects = {\n start: extend({}, rect),\n corrected: extend({}, rect),\n previous: extend({}, rect),\n delta: {\n left: 0,\n right: 0,\n width: 0,\n top: 0,\n bottom: 0,\n height: 0,\n },\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction move ({ iEvent, interaction }: { iEvent: InteractEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n const current = interaction.rect\n const { start: startRect, corrected, delta: deltaRect, previous } = interaction._rects\n\n extend(previous, corrected)\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(corrected, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n if (corrected.top > corrected.bottom) {\n const swap = corrected.top\n\n corrected.top = corrected.bottom\n corrected.bottom = swap\n }\n if (corrected.left > corrected.right) {\n const swap = corrected.left\n\n corrected.left = corrected.right\n corrected.right = swap\n }\n }\n } else {\n // if not invertible, restrict to minimum of 0x0 rect\n corrected.top = Math.min(current.top, startRect.bottom)\n corrected.bottom = Math.max(current.bottom, startRect.top)\n corrected.left = Math.min(current.left, startRect.right)\n corrected.right = Math.max(current.right, startRect.left)\n }\n\n corrected.width = corrected.right - corrected.left\n corrected.height = corrected.bottom - corrected.top\n\n for (const edge in corrected) {\n deltaRect[edge] = corrected[edge] - previous[edge]\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = corrected\n resizeEvent.deltaRect = deltaRect\n}\n\nfunction end ({ iEvent, interaction }: { iEvent: InteractEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction updateEventAxes ({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent\n interaction: Interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) return\n\n const options = interaction.interactable.options\n const resizeEvent = iEvent as ResizeEvent\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = resizeEvent.delta.y\n } else {\n resizeEvent.delta.y = resizeEvent.delta.x\n }\n resizeEvent.axes = 'xy'\n } else {\n resizeEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n resizeEvent.delta.y = 0\n } else if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = 0\n }\n }\n}\n\nconst resize: Plugin = {\n id: 'actions/resize',\n before: ['actions/drag'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.resizeAxes = 'xy'\n },\n\n 'interactions:action-start': (arg) => {\n start(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-move': (arg) => {\n move(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-end': end,\n 'auto-start:check': resizeChecker,\n },\n\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as ResizableOptions,\n\n cursors: null as ReturnType,\n\n getCursor ({ edges, axis, name }: ActionProps) {\n const cursors = resize.cursors\n let result: string = null\n\n if (axis) {\n result = cursors[name + axis]\n } else if (edges) {\n let cursorKey = ''\n\n for (const edge of ['top', 'bottom', 'left', 'right']) {\n if (edges[edge]) {\n cursorKey += edge\n }\n }\n\n result = cursors[cursorKey]\n }\n\n return result\n },\n\n defaultMargin: null as number,\n}\n\nexport default resize\n", "import type { Scope } from '@interactjs/core/scope'\n\nimport drag from './drag/plugin'\nimport drop from './drop/plugin'\nimport gesture from './gesture/plugin'\nimport resize from './resize/plugin'\n\nexport default {\n id: 'actions',\n install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n },\n}\n", "let lastTime = 0\nlet request: typeof requestAnimationFrame\nlet cancel: typeof cancelAnimationFrame\n\nfunction init (global: Window | typeof globalThis) {\n request = global.requestAnimationFrame\n cancel = global.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = global[`${vendor}RequestAnimationFrame` as 'requestAnimationFrame']\n cancel =\n global[`${vendor}CancelAnimationFrame` as 'cancelAnimationFrame'] ||\n global[`${vendor}CancelRequestAnimationFrame` as 'cancelAnimationFrame']\n }\n }\n\n request = request && request.bind(global)\n cancel = cancel && cancel.bind(global)\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n const token = global.setTimeout(() => {\n // eslint-disable-next-line node/no-callback-literal\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return token as any\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback: FrameRequestCallback) => request(callback),\n cancel: (token: number) => cancel(token),\n init,\n}\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { ActionName, Scope, Plugin } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n autoScroll?: AutoScrollOptions\n }\n}\n\nexport interface AutoScrollOptions {\n container?: Window | HTMLElement\n margin?: number\n distance?: number\n interval?: number\n speed?: number\n enabled?: boolean\n}\n\nfunction install (scope: Scope) {\n const { defaults, actions } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n actions.phaselessTypes.autoscroll = true\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled: false,\n margin: 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as AutoScrollOptions['container'],\n\n // the scroll speed in pixels per second\n speed: 300,\n } as AutoScrollOptions,\n\n now: Date.now,\n\n interaction: null as Interaction,\n i: 0, // the handle returned by window.setInterval\n\n // Direction each pulse is to scroll in\n x: 0,\n y: 0,\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop () {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll () {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n } else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check (interactable: Interactable, actionName: ActionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll?.enabled\n },\n onInteractionMove ({\n interaction,\n pointer,\n }: {\n interaction: Interaction\n pointer: PointerType\n }) {\n if (\n !(interaction.interacting() && autoScroll.check(interaction.interactable, interaction.prepared.name))\n ) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top: boolean\n let right: boolean\n let bottom: boolean\n let left: boolean\n\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n } else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = right ? 1 : left ? -1 : 0\n autoScroll.y = bottom ? 1 : top ? -1 : 0\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer (value: any, interactable: Interactable, element: Element) {\n return (\n (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n )\n}\n\nexport function getScroll (container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta (\n {\n interaction,\n element,\n }: {\n interaction: Partial>\n element: Element\n },\n func: any,\n) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(scrollOptions.container, interaction.interactable, element)\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nconst autoScrollPlugin: Plugin = {\n id: 'auto-scroll',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoScroll = null\n },\n\n 'interactions:destroy': ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n },\n\n 'interactions:stop': autoScroll.stop,\n\n 'interactions:action-move': (arg: any) => autoScroll.onInteractionMove(arg),\n },\n}\n\nexport default autoScrollPlugin\n", "import type { ActionProps } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\n\nimport { window } from './window'\n\nexport function warnOnce (this: T, method: (...args: any[]) => any, message: string) {\n let warned = false\n\n return function (this: T) {\n if (!warned) {\n ;(window as any).console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\nexport function copyAction (dest: ActionProps, src: ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport const sign = (n: number) => (n >= 0 ? 1 : -1)\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, ActionProps } from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType, PointerEventType, Element } from '@interactjs/types/index'\nimport is from '@interactjs/utils/is'\nimport { warnOnce } from '@interactjs/utils/misc'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: (\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ) => ActionProps | null\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n allowFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n } = scope\n\n Interactable.prototype.getAction = function getAction (\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ): ActionProps {\n const action = defaultActionChecker(this, event, interaction, element, scope)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n }\n\n /**\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * @deprecated\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * @deprecated\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.styleCursor = styleCursor\n}\n\nfunction defaultActionChecker (\n interactable: Interactable,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n scope: Scope,\n) {\n const rect = interactable.getRect(element)\n const buttons =\n (event as MouseEvent).buttons ||\n {\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n }[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n const arg = {\n action: null,\n interactable,\n interaction,\n element,\n rect,\n buttons,\n }\n\n scope.fire('auto-start:check', arg)\n\n return arg.action\n}\n\nfunction styleCursor(this: Interactable): boolean\nfunction styleCursor(this: Interactable, newValue: boolean): typeof this\nfunction styleCursor (this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interactable, checker: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, ActionProps } from '@interactjs/core/Interaction'\nimport type { Scope, SignalArgs, ActionName, Plugin } from '@interactjs/core/scope'\nimport type { CursorChecker, PointerType, PointerEventType, Element } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport { copyAction } from '@interactjs/utils/misc'\n\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n }\n\n interface SignalArgs {\n 'autoStart:before-start': Omit & {\n interaction: Interaction\n }\n 'autoStart:prepared': { interaction: Interaction }\n 'auto-start:check': CheckSignalArg\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n actionChecker?: any\n cursorChecker?: any\n styleCursor?: any\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n cursorChecker?: CursorChecker\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n // TODO: docst\n mouseButtons?: 0 | 1 | 2 | 4 | 8 | 16\n }\n}\n\ninterface CheckSignalArg {\n interactable: Interactable\n interaction: Interaction\n element: Element\n action: ActionProps\n buttons: number\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: Element\n}\n\nfunction install (scope: Scope) {\n const { interactStatic: interact, defaults } = scope\n\n scope.usePlugin(InteractableMethods)\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n interact.maxInteractions = (newValue: number) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n }\n}\n\nfunction prepareOnDown (\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:down'],\n scope: Scope,\n) {\n if (interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove (\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:move'],\n scope: Scope,\n) {\n if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Element, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove (arg: SignalArgs['interactions:move'], scope: Scope) {\n const { interaction } = arg\n\n if (\n !interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name\n ) {\n return\n }\n\n scope.fire('autoStart:before-start', arg)\n\n const { interactable } = interaction\n const actionName = (interaction as Interaction).prepared.name\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (\n interactable.options[actionName].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)\n ) {\n interaction.stop()\n } else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n setInteractionCursor(interaction, scope)\n }\n }\n}\n\nfunction clearCursorOnStop ({ interaction }: { interaction: Interaction }, scope: Scope) {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope)\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (\n action: ActionProps,\n interactable: Interactable,\n element: Element,\n eventTarget: Node,\n scope: Scope,\n) {\n if (\n interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)\n ) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n matches: Interactable[],\n matchElements: Element[],\n eventTarget: Node,\n scope: Scope,\n) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) {\n continue\n }\n\n const action = validateAction(matchAction, match, matchElement, eventTarget, scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n eventTarget: Node,\n scope: Scope,\n) {\n let matches: Interactable[] = []\n let matchElements: Element[] = []\n\n let element = eventTarget as Element\n\n function pushMatches (interactable: Interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(\n interaction,\n pointer,\n event,\n matches,\n matchElements,\n eventTarget,\n scope,\n )\n\n if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = domUtils.parentNode(element) as Element\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (\n interaction: Interaction,\n {\n action,\n interactable,\n element,\n }: {\n action: ActionProps\n interactable: Interactable\n element: Element\n },\n scope: Scope,\n) {\n action = action || { name: null }\n\n interaction.interactable = interactable\n interaction.element = element\n copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name ? interactable.getRect(element) : null\n\n setInteractionCursor(interaction, scope)\n\n scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit (\n interactable: Interactable,\n element: Element,\n action: ActionProps,\n scope: Scope,\n) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) {\n return false\n }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) {\n continue\n }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue: any, scope: Scope) {\n if (is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: Element, cursor: string, scope: Scope) {\n const { cursorElement: prevCursorElement } = scope.autoStart\n\n if (prevCursorElement && prevCursorElement !== element) {\n prevCursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nfunction setInteractionCursor (interaction: Interaction, scope: Scope) {\n const { interactable, element, prepared } = interaction\n\n if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n // clear previous target element cursor\n if (scope.autoStart.cursorElement) {\n setCursor(scope.autoStart.cursorElement, '', scope)\n }\n\n return\n }\n\n let cursor = ''\n\n if (prepared.name) {\n const cursorChecker = interactable.options[prepared.name].cursorChecker\n\n if (is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n } else {\n cursor = scope.actions.map[prepared.name].getCursor(prepared)\n }\n }\n\n setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Plugin = {\n id: 'auto-start/base',\n before: ['actions'],\n install,\n listeners: {\n 'interactions:down': prepareOnDown,\n 'interactions:move': (arg, scope) => {\n prepareOnMove(arg, scope)\n startOnMove(arg, scope)\n },\n 'interactions:stop': clearCursorOnStop,\n },\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n}\n\nexport default autoStart\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { SignalArgs, Scope, ActionName } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\n\nimport autoStart from './base'\n\nfunction beforeStart ({ interaction, eventTarget, dx, dy }: SignalArgs['interactions:move'], scope: Scope) {\n if (interaction.prepared.name !== 'drag') return\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy'\n\n interaction.prepared.axis =\n targetOptions.lockAxis === 'start'\n ? (currentAxis[0] as 'x' | 'y') // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n ;(interaction as Interaction).prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget as Element\n\n const getDraggable = function (interactable: Interactable): Interactable | void {\n if (interactable === interaction.interactable) return\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer,\n interaction.downEvent,\n interaction,\n element,\n )\n\n if (\n action &&\n action.name === 'drag' &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)\n ) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n ;(interaction as Interaction).prepared.name = 'drag'\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element) as Element\n }\n }\n}\n\nfunction checkStartAxis (startAxis: string, interactable: Interactable) {\n if (!interactable) {\n return false\n }\n\n const thisAxis = interactable.options.drag.startAxis\n\n return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n listeners: { 'autoStart:before-start': beforeStart },\n}\n", "import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\n\nimport basePlugin from './base'\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install (scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n}\n\nfunction getHoldDuration (interaction: Interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) {\n return null\n }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nconst hold: Plugin = {\n id: 'auto-start/hold',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoStartHoldTimer = null\n },\n\n 'autoStart:prepared': ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n },\n\n 'interactions:move': ({ interaction, duplicate }) => {\n if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n interaction.autoStartHoldTimer = null\n }\n },\n\n // prevent regular down->move autoStart\n 'autoStart:before-start': ({ interaction }) => {\n const holdDuration = getHoldDuration(interaction)\n\n if (holdDuration > 0) {\n interaction.prepared.name = null\n }\n },\n },\n getHoldDuration,\n}\nexport default hold\n", "import type { Scope } from '@interactjs/core/scope'\n\nimport autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nexport default {\n id: 'auto-start',\n install (scope: Scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n },\n}\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerEventType } from '@interactjs/types/index'\nimport { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\ntype PreventDefaultValue = 'always' | 'never' | 'auto'\nfunction preventDefault(this: Interactable): PreventDefaultValue\nfunction preventDefault(this: Interactable, newValue: PreventDefaultValue): typeof this\nfunction preventDefault (this: Interactable, newValue?: PreventDefaultValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interactable, scope: Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') return\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (\n is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')\n ) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: { interaction: Interaction, event: PointerEventType }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Scope) {\n /** @lends Interactable */\n const { Interactable } = scope\n\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n if (\n interaction.element &&\n (interaction.element === event.target || nodeContains(interaction.element, event.target))\n ) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n acc[`interactions:${eventType}`] = onInteractionEvent\n return acc\n }, {} as any),\n}\n", "export default {}\n", "import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport visualizer from '@interactjs/dev-tools/visualizer/plugin'\nimport type { Element, OptionMethod } from '@interactjs/types/index'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport * as win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n visializer: typeof visualizer\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools: OptionMethod\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: CheckName\n text: string\n perform: (interaction: Interaction) => boolean\n getInfo: (interaction: Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = 'touchAction',\n boxSizing = 'boxSizing',\n noListeners = 'noListeners',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\n// eslint-disable-next-line no-undef\nconst isProduction = process.env.NODE_ENV === 'production'\n\nfunction install (scope: Scope, { logger }: { logger?: Logger } = {}) {\n const { Interactable, defaults } = scope\n\n scope.logger = logger || console\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?: object) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n\n scope.usePlugin(visualizer)\n}\n\nconst checks: Check[] = [\n {\n name: CheckName.touchAction,\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [element, links.touchAction]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: CheckName.boxSizing,\n perform (interaction) {\n const { element } = interaction\n\n return (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n )\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [element, links.boxSizing]\n },\n },\n\n {\n name: CheckName.noListeners,\n perform (interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo (interaction) {\n return [interaction.prepared.name, interaction.interactable]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n const value = element.style[prop] || win.window.getComputedStyle(element)[prop]\n return styleRe.test((value || '').toString())\n}\n\nfunction parentHasStyle (element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent) as HTMLElement\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport: Plugin = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n listeners: {\n 'interactions:action-start': ({ interaction }, scope) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n scope.logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n },\n },\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n", "import * as arr from './arr'\nimport is from './is'\n\n// tslint:disable-next-line ban-types\nexport default function clone (source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n } else if (is.array(value)) {\n dest[prop] = arr.from(value) as typeof value\n } else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n", "import type { EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoAnyPhaseArg } from '@interactjs/core/Interaction'\nimport type { EdgeOptions, FullRect, Point, Rect } from '@interactjs/types/index'\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { Modifier, ModifierArg, ModifierState } from './base'\n\nexport interface ModificationResult {\n delta: Point\n rectDelta: Rect\n coords: Point\n rect: FullRect\n eventProps: any[]\n changed: boolean\n}\n\ninterface MethodArg {\n phase: EventPhase\n pageCoords: Point\n rect: FullRect\n coords: Point\n preEnd?: boolean\n skipModifiers?: number\n}\n\nexport default class Modification {\n states: ModifierState[] = []\n startOffset: Rect = { left: 0, right: 0, top: 0, bottom: 0 }\n startDelta!: Point\n result!: ModificationResult\n endResult!: Point\n edges!: EdgeOptions\n readonly interaction: Readonly\n\n constructor (interaction: Interaction) {\n this.interaction = interaction\n this.result = createResult()\n }\n\n start ({ phase }: { phase: EventPhase }, pageCoords: Point) {\n const { interaction } = this\n const modifierList = getModifierList(interaction)\n this.prepareStates(modifierList)\n\n this.edges = extend({}, interaction.edges)\n this.startOffset = getRectOffset(interaction.rect, pageCoords)\n this.startDelta = { x: 0, y: 0 }\n\n const arg = this.fillArg({\n phase,\n pageCoords,\n preEnd: false,\n })\n\n this.result = createResult()\n this.startAll(arg)\n\n const result = (this.result = this.setAll(arg))\n\n return result\n }\n\n fillArg (arg: Partial) {\n const { interaction } = this\n\n arg.interaction = interaction\n arg.interactable = interaction.interactable\n arg.element = interaction.element\n arg.rect = arg.rect || interaction.rect\n arg.edges = this.edges\n arg.startOffset = this.startOffset\n\n return arg as ModifierArg\n }\n\n startAll (arg: MethodArg & Partial) {\n for (const state of this.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg as ModifierArg)\n }\n }\n }\n\n setAll (arg: MethodArg & Partial): ModificationResult {\n const { phase, preEnd, skipModifiers, rect: unmodifiedRect } = arg\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, unmodifiedRect)\n\n const states = skipModifiers ? this.states.slice(skipModifiers) : this.states\n\n const newResult = createResult(arg.coords, arg.rect)\n\n for (const state of states) {\n const { options } = state\n const lastModifierCoords = extend({}, arg.coords)\n let returnValue = null\n\n if (state.methods?.set && this.shouldDo(options, preEnd, phase)) {\n arg.state = state\n returnValue = state.methods.set(arg as ModifierArg)\n\n rectUtils.addEdges(this.interaction.edges, arg.rect, {\n x: arg.coords.x - lastModifierCoords.x,\n y: arg.coords.y - lastModifierCoords.y,\n })\n }\n\n newResult.eventProps.push(returnValue)\n }\n\n newResult.delta.x = arg.coords.x - arg.pageCoords.x\n newResult.delta.y = arg.coords.y - arg.pageCoords.y\n\n newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left\n newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right\n newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top\n newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom\n\n const prevCoords = this.result.coords\n const prevRect = this.result.rect\n\n if (prevCoords && prevRect) {\n const rectChanged =\n newResult.rect.left !== prevRect.left ||\n newResult.rect.right !== prevRect.right ||\n newResult.rect.top !== prevRect.top ||\n newResult.rect.bottom !== prevRect.bottom\n\n newResult.changed =\n rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y\n }\n\n return newResult\n }\n\n applyToInteraction (arg: { phase: EventPhase, rect?: Rect }) {\n const { interaction } = this\n const { phase } = arg\n const curCoords = interaction.coords.cur\n const startCoords = interaction.coords.start\n const { result, startDelta } = this\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(this.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [\n [startCoords, startDelta],\n [curCoords, curDelta],\n ] as const) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = this.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n setAndApply (\n arg: Partial & {\n phase: EventPhase\n preEnd?: boolean\n skipModifiers?: number\n modifiedCoords?: Point\n },\n ): void | false {\n const { interaction } = this\n const { phase, preEnd, skipModifiers } = arg\n\n const result = this.setAll(\n this.fillArg({\n preEnd,\n phase,\n pageCoords: arg.modifiedCoords || interaction.coords.cur.page,\n }),\n )\n\n this.result = result\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (\n !result.changed &&\n (!skipModifiers || skipModifiers < this.states.length) &&\n interaction.interacting()\n ) {\n return false\n }\n\n if (arg.modifiedCoords) {\n const { page } = interaction.coords.cur\n const adjustment = {\n x: arg.modifiedCoords.x - page.x,\n y: arg.modifiedCoords.y - page.y,\n }\n\n result.coords.x += adjustment.x\n result.coords.y += adjustment.y\n result.delta.x += adjustment.x\n result.delta.y += adjustment.y\n }\n\n this.applyToInteraction(arg)\n }\n\n beforeEnd (arg: Omit & { state?: ModifierState }): void | false {\n const { interaction, event } = arg\n const states = this.states\n\n if (!states || !states.length) {\n return\n }\n\n let doPreend = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endPosition = methods.beforeEnd && methods.beforeEnd((arg as unknown) as ModifierArg)\n\n if (endPosition) {\n this.endResult = endPosition\n return false\n }\n\n doPreend = doPreend || (!doPreend && this.shouldDo(options, true, arg.phase, true))\n }\n\n if (doPreend) {\n // trigger a final modified move before ending\n interaction.move({ event, preEnd: true })\n }\n }\n\n stop (arg: { interaction: Interaction }) {\n const { interaction } = arg\n\n if (!this.states || !this.states.length) {\n return\n }\n\n const modifierArg: Partial = extend(\n {\n states: this.states,\n interactable: interaction.interactable,\n element: interaction.element,\n rect: null,\n },\n arg,\n )\n\n this.fillArg(modifierArg)\n\n for (const state of this.states) {\n modifierArg.state = state\n\n if (state.methods.stop) {\n state.methods.stop(modifierArg as ModifierArg)\n }\n }\n\n this.states = null\n this.endResult = null\n }\n\n prepareStates (modifierList: Modifier[]) {\n this.states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n this.states.push({\n options,\n methods,\n index,\n name,\n })\n }\n\n return this.states\n }\n\n restoreInteractionCoords ({ interaction: { coords, rect, modification } }: { interaction: Interaction }) {\n if (!modification.result) return\n\n const { startDelta } = modification\n const { delta: curDelta, rectDelta } = modification.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n }\n\n shouldDo (options, preEnd?: boolean, phase?: string, requireEndOnly?: boolean) {\n if (\n // ignore disabled modifiers\n !options ||\n options.enabled === false ||\n // check if we require endOnly option to fire move before end\n (requireEndOnly && !options.endOnly) ||\n // don't apply endOnly modifiers when not ending\n (options.endOnly && !preEnd) ||\n // check if modifier should run be applied on start\n (phase === 'start' && !options.setStart)\n ) {\n return false\n }\n\n return true\n }\n\n copyFrom (other: Modification) {\n this.startOffset = other.startOffset\n this.startDelta = other.startDelta\n this.edges = other.edges\n this.states = other.states.map((s) => clone(s) as ModifierState)\n this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect))\n }\n\n destroy () {\n for (const prop in this) {\n this[prop] = null\n }\n }\n}\n\nfunction createResult (coords?: Point, rect?: FullRect): ModificationResult {\n return {\n rect,\n coords,\n delta: { x: 0, y: 0 },\n rectDelta: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n eventProps: [],\n changed: true,\n }\n}\n\nfunction getModifierList (interaction) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return (\n options &&\n options.enabled && {\n options,\n methods: options._methods,\n }\n )\n })\n .filter((m) => !!m)\n}\n\nexport function getRectOffset (rect, coords) {\n return rect\n ? {\n left: coords.x - rect.left,\n top: coords.y - rect.top,\n right: rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n }\n}\n", "import type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\nimport type { EdgeOptions, FullRect, Point, Rect } from '@interactjs/types/index'\n\nimport Modification from './Modification'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modification?: Modification\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n modifiers?: Array<{\n name: string\n [key: string]: any\n }>\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n modifiers?: Modifier[]\n }\n}\n\nexport interface Modifier<\n Defaults = any,\n State extends ModifierState = any,\n Name extends string = any,\n Result = any\n> {\n options: Defaults\n methods: {\n start?: (arg: ModifierArg) => void\n set?: (arg: ModifierArg) => Result\n beforeEnd?: (arg: ModifierArg) => Point | void\n stop?: (arg: ModifierArg) => void\n }\n name?: Name\n enable: () => Modifier\n disable: () => Modifier\n}\n\nexport type ModifierState = {\n options: Defaults\n methods?: Modifier['methods']\n index?: number\n name?: Name\n} & StateProps\n\nexport interface ModifierArg {\n interaction: Interaction\n interactable: Interactable\n phase: EventPhase\n rect: FullRect\n edges: EdgeOptions\n state: State\n element: Element\n pageCoords: Point\n prevCoords: Point\n prevRect?: FullRect\n coords: Point\n startOffset: Rect\n preEnd?: boolean\n}\n\nexport interface ModifierModule<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Result = unknown\n> {\n defaults?: Defaults\n start?(arg: ModifierArg): void\n set?(arg: ModifierArg): Result\n beforeEnd?(arg: ModifierArg): Point | void\n stop?(arg: ModifierArg): void\n}\n\nexport interface ModifierFunction<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string\n> {\n (_options?: Partial): Modifier\n _defaults: Defaults\n _methods: ModifierModule\n}\n\nexport function makeModifier<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string,\n Result\n> (module: ModifierModule, name?: Name) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (_options?: Partial) => {\n const options = (_options || {}) as Defaults\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n ;(options as any)[prop] = defaults[prop]\n }\n }\n\n const m: Modifier = {\n options,\n methods,\n name,\n enable: () => {\n options.enabled = true\n return m\n },\n disable: () => {\n options.enabled = false\n return m\n },\n }\n\n return m\n }\n\n if (name && typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport function addEventModifiers ({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent\n interaction: Interaction\n}) {\n const result = interaction.modification!.result\n\n if (result) {\n iEvent.modifiers = result.eventProps\n }\n}\n\nconst modifiersBase: Plugin = {\n id: 'modifiers/base',\n before: ['actions'],\n install: (scope) => {\n scope.defaults.perAction.modifiers = []\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.modification = new Modification(interaction)\n },\n\n 'interactions:before-action-start': (arg) => {\n const modification = arg.interaction.modification!\n\n modification.start(arg, arg.interaction.coords.start.page)\n arg.interaction.edges = modification.edges\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-move': (arg) => arg.interaction.modification.setAndApply(arg),\n\n 'interactions:before-action-end': (arg) => arg.interaction.modification.beforeEnd(arg),\n\n 'interactions:action-start': addEventModifiers,\n 'interactions:action-move': addEventModifiers,\n 'interactions:action-end': addEventModifiers,\n\n 'interactions:after-action-start': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-move': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n\n 'interactions:stop': (arg) => arg.interaction.modification.stop(arg),\n },\n}\n\nexport default modifiersBase\n", "import type { Point, Listeners, OrBoolean, Element } from '@interactjs/types/index'\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Node\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Point | string | Element\n listeners?: Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial &\nPartial &\n{\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, OrBoolean> {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n", "import type { ActionName } from '@interactjs/core/scope'\nimport type { Point, FullRect, PointerEventType, Element } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\n\nimport { BaseEvent } from './BaseEvent'\nimport type { Interaction } from './Interaction'\nimport { defaults } from './options'\n\nexport type EventPhase = keyof PhaseMap\n\nexport interface PhaseMap {\n start: true\n move: true\n end: true\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface InteractEvent {\n pageX: number\n pageY: number\n\n clientX: number\n clientY: number\n\n dx: number\n dy: number\n\n velocityX: number\n velocityY: number\n}\n\nexport class InteractEvent<\n T extends ActionName = never,\n P extends EventPhase = EventPhase\n> extends BaseEvent {\n target: Element\n currentTarget: Element\n relatedTarget: Element | null = null\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Point\n client: Point\n delta: Point\n rect: FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // resize\n axes?: 'x' | 'y' | 'xy'\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction,\n event: PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.preEnd = preEnd\n this.type = type || actionName + (phase || '')\n this.interactable = target\n\n this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n } else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null\n }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = (180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX)) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault () {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperties(InteractEvent.prototype, {\n pageX: {\n get () {\n return this.page.x\n },\n set (value) {\n this.page.x = value\n },\n },\n pageY: {\n get () {\n return this.page.y\n },\n set (value) {\n this.page.y = value\n },\n },\n\n clientX: {\n get () {\n return this.client.x\n },\n set (value) {\n this.client.x = value\n },\n },\n clientY: {\n get () {\n return this.client.y\n },\n set (value) {\n this.client.y = value\n },\n },\n\n dx: {\n get () {\n return this.delta.x\n },\n set (value) {\n this.delta.x = value\n },\n },\n dy: {\n get () {\n return this.delta.y\n },\n set (value) {\n this.delta.y = value\n },\n },\n\n velocityX: {\n get () {\n return this.velocity.x\n },\n set (value) {\n this.velocity.x = value\n },\n },\n velocityY: {\n get () {\n return this.velocity.y\n },\n set (value) {\n this.velocity.y = value\n },\n },\n})\n", "import type { PointerEventType, PointerType } from '@interactjs/types/index'\n\nexport class PointerInfo {\n id: number\n pointer: PointerType\n event: PointerEventType\n downTime: number\n downTarget: Node\n\n constructor (id: number, pointer: PointerType, event: PointerEventType, downTime: number, downTarget: Node) {\n this.id = id\n this.pointer = pointer\n this.event = event\n this.downTime = downTime\n this.downTarget = downTarget\n }\n}\n", "import type { ActionDefaults } from '@interactjs/core/options'\nimport type {\n Element,\n EdgeOptions,\n PointerEventType,\n PointerType,\n FullRect,\n CoordsSet,\n} from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport hypot from '@interactjs/utils/hypot'\nimport { warnOnce, copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { EventPhase } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport type { Interactable } from './Interactable'\nimport { PointerInfo } from './PointerInfo'\nimport type { ActionName, Scope } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy' | null\n edges?: EdgeOptions | null\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = '',\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = '',\n}\n\nexport type PointerArgProps = {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n pointerIndex: number\n pointerInfo: PointerInfo\n interaction: Interaction\n} & T\n\nexport interface DoPhaseArg {\n event: PointerEventType\n phase: EventPhase\n interaction: Interaction\n iEvent: InteractEvent\n preEnd?: boolean\n type?: string\n}\n\nexport type DoAnyPhaseArg = DoPhaseArg\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:new': { interaction: Interaction }\n 'interactions:down': PointerArgProps<{\n type: 'down'\n }>\n 'interactions:move': PointerArgProps<{\n type: 'move'\n dx: number\n dy: number\n duplicate: boolean\n }>\n 'interactions:up': PointerArgProps<{\n type: 'up'\n curEventTarget: EventTarget\n }>\n 'interactions:cancel': SignalArgs['interactions:up'] & {\n type: 'cancel'\n curEventTarget: EventTarget\n }\n 'interactions:update-pointer': PointerArgProps<{\n down: boolean\n }>\n 'interactions:remove-pointer': PointerArgProps\n 'interactions:blur': { interaction: Interaction, event: Event, type: 'blur' }\n 'interactions:before-action-start': Omit\n 'interactions:action-start': DoAnyPhaseArg\n 'interactions:after-action-start': DoAnyPhaseArg\n 'interactions:before-action-move': Omit\n 'interactions:action-move': DoAnyPhaseArg\n 'interactions:after-action-move': DoAnyPhaseArg\n 'interactions:before-action-end': Omit\n 'interactions:action-end': DoAnyPhaseArg\n 'interactions:after-action-end': DoAnyPhaseArg\n 'interactions:stop': { interaction: Interaction }\n }\n}\n\nexport type InteractionProxy = Pick<\nInteraction,\nkeyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nlet idCounter = 0\n\nexport class Interaction {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: FullRect\n _rects?: {\n start: FullRect\n corrected: FullRect\n previous: FullRect\n delta: FullRect\n }\n edges: EdgeOptions\n\n _scopeFire: Scope['fire']\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name: null,\n axis: null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: PointerEventType = null\n\n downPointer: PointerType = {} as PointerType\n\n _latestPointer: {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: InteractionProxy = null\n\n simulation = null\n\n /** @internal */ get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = warnOnce(function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n }, 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords: CoordsSet = {\n // Starting InteractEvent pointer coordinates\n start: pointerUtils.newCoords(),\n // Previous native pointer move event coordinates\n prev: pointerUtils.newCoords(),\n // current native pointer move event coordinates\n cur: pointerUtils.newCoords(),\n // Change in coordinates and time of the pointer\n delta: pointerUtils.newCoords(),\n // pointer velocity\n velocity: pointerUtils.newCoords(),\n }\n\n readonly _id: number = idCounter++\n\n /** */\n constructor ({ pointerType, scopeFire }: { pointerType?: string, scopeFire: Scope['fire'] }) {\n this._scopeFire = scopeFire\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () {\n return that[key]\n },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args: any[]) => that[key](...args),\n })\n }\n\n this._scopeFire('interactions:new', { interaction: this })\n }\n\n pointerDown (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n pointerInfo,\n type: 'down',\n interaction: (this as unknown) as Interaction,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {Boolean} Whether the interaction was successfully started\n */\n start (action: ActionProps, interactable: Interactable, element: Element): boolean {\n if (\n this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === 'gesture' ? 2 : 1) ||\n !interactable.options[action.name as keyof ActionDefaults].enabled\n ) {\n return false\n }\n\n copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n ? extend({}, this.prepared.edges)\n : { left: true, right: true, top: true, bottom: true }\n this._stopped = false\n this._interacting =\n this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: 'start',\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modification && this.modification.endResult)) {\n this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const duplicateMove =\n this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y\n\n let dx: number\n let dy: number\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const pointerIndex = this.getPointerIndex(pointer)\n const signalArg = {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n type: 'move' as const,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: (this as unknown) as Interaction,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._scopeFire('interactions:move', signalArg)\n\n if (!duplicateMove && !this.simulation) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n signalArg.type = null\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?: any) {\n if (!signalArg || !signalArg.event) {\n pointerUtils.setZeroCoords(this.coords.delta)\n }\n\n signalArg = extend(\n {\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n },\n signalArg || {},\n )\n\n signalArg.phase = 'move'\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: PointerType, event: PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const type = /cancel$/i.test(event.type) ? 'cancel' : 'up'\n\n this._scopeFire(`interactions:${type}` as 'interactions:up' | 'interactions:cancel', {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n eventTarget,\n type: type as any,\n curEventTarget,\n interaction: (this as unknown) as Interaction,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.removePointer(pointer, event)\n }\n\n documentBlur (event: Event) {\n this.end(event as any)\n this._scopeFire('interactions:blur', {\n event,\n type: 'blur',\n interaction: (this as unknown) as Interaction,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult: boolean\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: 'end',\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._scopeFire('interactions:stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer: PointerType) {\n const pointerId = pointerUtils.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return this.pointerType === 'mouse' || this.pointerType === 'pen'\n ? this.pointers.length - 1\n : arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer: any) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: PointerType, event: PointerEventType, eventTarget: Node, down?: boolean) {\n const id = pointerUtils.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false ? false : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(id, pointer, event, null, null)\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n } else {\n pointerInfo.pointer = pointer\n }\n\n pointerUtils.setCoords(\n this.coords.cur,\n this.pointers.map((p) => p.pointer),\n this._now(),\n )\n pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n\n if (down) {\n this.pointerIsDown = true\n\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n pointerUtils.pointerExtend(this.downPointer, pointer)\n\n if (!this.interacting()) {\n pointerUtils.copyCoords(this.coords.start, this.coords.cur)\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n\n this.downEvent = event\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._scopeFire('interactions:update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: (this as unknown) as Interaction,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: PointerType, event: PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) return\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:remove-pointer', {\n pointer,\n event,\n eventTarget: null,\n pointerIndex,\n pointerInfo,\n interaction: (this as unknown) as Interaction,\n })\n\n this.pointers.splice(pointerIndex, 1)\n this.pointerIsDown = false\n }\n\n _updateLatestPointer (pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent (\n event: PointerEventType,\n phase: P,\n preEnd?: boolean,\n type?: string,\n ) {\n return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type)\n }\n\n _fireEvent (iEvent: InteractEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (\n signalArg: Omit, 'iEvent'> & { iEvent?: InteractEvent },\n ) {\n const { event, phase, preEnd, type } = signalArg\n const { rect } = this\n\n if (rect && phase === 'move') {\n // update the rect changes due to pointer move\n rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource])\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n const beforeResult = this._scopeFire(`interactions:before-action-${phase}` as any, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = (signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type))\n\n this._scopeFire(`interactions:action-${phase}` as any, signalArg)\n\n if (phase === 'start') {\n this.prevEvent = iEvent\n }\n\n this._fireEvent(iEvent)\n\n this._scopeFire(`interactions:after-action-${phase}` as any, signalArg)\n\n return true\n }\n\n _now () {\n return Date.now()\n }\n}\n\nexport default Interaction\nexport { PointerInfo }\n", "import type Interaction from '@interactjs/core/Interaction'\nimport { _ProxyMethods } from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\nimport type { Point } from '@interactjs/types/index'\nimport * as rectUtils from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n offsetBy?: typeof offsetBy\n offset: {\n total: Point\n pending: Point\n }\n }\n\n enum _ProxyMethods {\n offsetBy = '',\n }\n}\n\n;(_ProxyMethods as any).offsetBy = ''\n\nexport function addTotal (interaction: Interaction) {\n if (!interaction.pointerIsDown) {\n return\n }\n\n addToCoords(interaction.coords.cur, interaction.offset.total)\n\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nfunction beforeAction ({ interaction }: { interaction: Interaction }) {\n applyPending(interaction)\n}\n\nfunction beforeEnd ({ interaction }: { interaction: Interaction }): boolean | void {\n const hadPending = applyPending(interaction)\n\n if (!hadPending) return\n\n interaction.move({ offset: true })\n interaction.end()\n\n return false\n}\n\nfunction end ({ interaction }: { interaction: Interaction }) {\n interaction.offset.total.x = 0\n interaction.offset.total.y = 0\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nexport function applyPending (interaction: Interaction) {\n if (!hasPending(interaction)) {\n return false\n }\n\n const { pending } = interaction.offset\n\n addToCoords(interaction.coords.cur, pending)\n addToCoords(interaction.coords.delta, pending)\n rectUtils.addEdges(interaction.edges, interaction.rect, pending)\n\n pending.x = 0\n pending.y = 0\n\n return true\n}\n\nfunction offsetBy (this: Interaction, { x, y }: Point) {\n this.offset.pending.x += x\n this.offset.pending.y += y\n\n this.offset.total.x += x\n this.offset.total.y += y\n}\n\nfunction addToCoords ({ page, client }, { x, y }: Point) {\n page.x += x\n page.y += y\n client.x += x\n client.y += y\n}\n\nfunction hasPending (interaction: Interaction) {\n return !!(interaction.offset.pending.x || interaction.offset.pending.y)\n}\n\nconst offset: Plugin = {\n id: 'offset',\n before: ['modifiers', 'pointer-events', 'actions', 'inertia'],\n install (scope) {\n scope.Interaction.prototype.offsetBy = offsetBy\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.offset = {\n total: { x: 0, y: 0 },\n pending: { x: 0, y: 0 },\n }\n },\n 'interactions:update-pointer': ({ interaction }) => addTotal(interaction),\n 'interactions:before-action-start': beforeAction,\n 'interactions:before-action-move': beforeAction,\n 'interactions:before-action-end': beforeEnd,\n 'interactions:stop': end,\n },\n}\n\nexport default offset\n", "import type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { ActionName, Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport Modification from '@interactjs/modifiers/Modification'\nimport * as modifiers from '@interactjs/modifiers/base'\nimport offset from '@interactjs/offset/plugin'\nimport type { Point, PointerEventType } from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { copyCoords } from '@interactjs/utils/pointerUtils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n resume?: true\n inertiastart?: true\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: InertiaState\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean\n resistance?: number // the lambda in exponential decay\n minSpeed?: number // target speed must be above this for inertia to start\n endSpeed?: number // the speed at which inertia is slow enough to stop\n allowResume?: true // allow resuming an action in inertia phase\n smoothEndDuration?: number // animate to snap/restrict endOnly if there's no inertia\n }\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-inertiastart': Omit, 'iEvent'>\n 'interactions:action-inertiastart': DoPhaseArg\n 'interactions:after-action-inertiastart': DoPhaseArg\n 'interactions:before-action-resume': Omit, 'iEvent'>\n 'interactions:action-resume': DoPhaseArg\n 'interactions:after-action-resume': DoPhaseArg\n }\n}\n\nfunction install (scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(offset)\n scope.usePlugin(modifiers.default)\n scope.actions.phases.inertiastart = true\n scope.actions.phases.resume = true\n\n defaults.perAction.inertia = {\n enabled: false,\n resistance: 10, // the lambda in exponential decay\n minSpeed: 100, // target speed must be above this for inertia to start\n endSpeed: 10, // the speed at which inertia is slow enough to stop\n allowResume: true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n}\n\nexport class InertiaState {\n active = false\n isModified = false\n smoothEnd = false\n allowResume = false\n\n modification!: Modification\n modifierCount = 0\n modifierArg!: modifiers.ModifierArg\n\n startCoords!: Point\n t0 = 0\n v0 = 0\n\n te = 0\n targetOffset!: Point\n modifiedOffset!: Point\n currentOffset!: Point\n\n lambda_v0? = 0 // eslint-disable-line camelcase\n one_ve_v0? = 0 // eslint-disable-line camelcase\n timeout!: number\n readonly interaction: Interaction\n\n constructor (interaction: Interaction) {\n this.interaction = interaction\n }\n\n start (event: PointerEventType) {\n const { interaction } = this\n const options = getOptions(interaction)\n\n if (!options || !options.enabled) {\n return false\n }\n\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = hypot(velocityClient.x, velocityClient.y)\n const modification = this.modification || (this.modification = new Modification(interaction))\n\n modification.copyFrom(interaction.modification)\n\n this.t0 = interaction._now()\n this.allowResume = options.allowResume\n this.v0 = pointerSpeed\n this.currentOffset = { x: 0, y: 0 }\n this.startCoords = interaction.coords.cur.page\n\n this.modifierArg = modification.fillArg({\n pageCoords: this.startCoords,\n preEnd: true,\n phase: 'inertiastart',\n })\n\n const thrown =\n this.t0 - interaction.coords.cur.timeStamp < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed\n\n if (thrown) {\n this.startInertia()\n } else {\n modification.result = modification.setAll(this.modifierArg)\n\n if (!modification.result.changed) {\n return false\n }\n\n this.startSmoothEnd()\n }\n\n // force modification change\n interaction.modification.result.rect = null\n\n // bring inertiastart event to the target coords\n interaction.offsetBy(this.targetOffset)\n interaction._doPhase({\n interaction,\n event,\n phase: 'inertiastart',\n })\n interaction.offsetBy({ x: -this.targetOffset.x, y: -this.targetOffset.y })\n // force modification change\n interaction.modification.result.rect = null\n\n this.active = true\n interaction.simulation = this\n\n return true\n }\n\n startInertia () {\n const startVelocity = this.interaction.coords.velocity.client\n const options = getOptions(this.interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / this.v0) / lambda\n\n this.targetOffset = {\n x: (startVelocity.x - inertiaDur) / lambda,\n y: (startVelocity.y - inertiaDur) / lambda,\n }\n\n this.te = inertiaDur\n this.lambda_v0 = lambda / this.v0\n this.one_ve_v0 = 1 - options.endSpeed / this.v0\n\n const { modification, modifierArg } = this\n\n modifierArg.pageCoords = {\n x: this.startCoords.x + this.targetOffset.x,\n y: this.startCoords.y + this.targetOffset.y,\n }\n\n modification.result = modification.setAll(modifierArg)\n\n if (modification.result.changed) {\n this.isModified = true\n this.modifiedOffset = {\n x: this.targetOffset.x + modification.result.delta.x,\n y: this.targetOffset.y + modification.result.delta.y,\n }\n }\n\n this.onNextFrame(() => this.inertiaTick())\n }\n\n startSmoothEnd () {\n this.smoothEnd = true\n this.isModified = true\n this.targetOffset = {\n x: this.modification.result.delta.x,\n y: this.modification.result.delta.y,\n }\n\n this.onNextFrame(() => this.smoothEndTick())\n }\n\n onNextFrame (tickFn: () => void) {\n this.timeout = raf.request(() => {\n if (this.active) {\n tickFn()\n }\n })\n }\n\n inertiaTick () {\n const { interaction } = this\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = (interaction._now() - this.t0) / 1000\n\n if (t < this.te) {\n const progress = 1 - (Math.exp(-lambda * t) - this.lambda_v0) / this.one_ve_v0\n let newOffset: Point\n\n if (this.isModified) {\n newOffset = getQuadraticCurvePoint(\n 0,\n 0,\n this.targetOffset.x,\n this.targetOffset.y,\n this.modifiedOffset.x,\n this.modifiedOffset.y,\n progress,\n )\n } else {\n newOffset = {\n x: this.targetOffset.x * progress,\n y: this.targetOffset.y * progress,\n }\n }\n\n const delta = { x: newOffset.x - this.currentOffset.x, y: newOffset.y - this.currentOffset.y }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move()\n\n this.onNextFrame(() => this.inertiaTick())\n } else {\n interaction.offsetBy({\n x: this.modifiedOffset.x - this.currentOffset.x,\n y: this.modifiedOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n smoothEndTick () {\n const { interaction } = this\n const t = interaction._now() - this.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n const newOffset = {\n x: easeOutQuad(t, 0, this.targetOffset.x, duration),\n y: easeOutQuad(t, 0, this.targetOffset.y, duration),\n }\n const delta = {\n x: newOffset.x - this.currentOffset.x,\n y: newOffset.y - this.currentOffset.y,\n }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move({ skipModifiers: this.modifierCount })\n\n this.onNextFrame(() => this.smoothEndTick())\n } else {\n interaction.offsetBy({\n x: this.targetOffset.x - this.currentOffset.x,\n y: this.targetOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n resume ({ pointer, event, eventTarget }: SignalArgs['interactions:down']) {\n const { interaction } = this\n\n // undo inertia changes to interaction coords\n interaction.offsetBy({\n x: -this.currentOffset.x,\n y: -this.currentOffset.y,\n })\n\n // update pointer at pointer down position\n interaction.updatePointer(pointer, event, eventTarget, true)\n\n // fire resume signals and event\n interaction._doPhase({\n interaction,\n event,\n phase: 'resume',\n })\n copyCoords(interaction.coords.prev, interaction.coords.cur)\n\n this.stop()\n }\n\n end () {\n this.interaction.move()\n this.interaction.end()\n this.stop()\n }\n\n stop () {\n this.active = this.smoothEnd = false\n this.interaction.simulation = null\n raf.cancel(this.timeout)\n }\n}\n\nfunction start ({ interaction, event }: DoPhaseArg) {\n if (!interaction._interacting || interaction.simulation) {\n return null\n }\n\n const started = interaction.inertia.start(event)\n\n // prevent action end if inertia or smoothEnd\n return started ? false : null\n}\n\n// Check if the down event hits the current inertia target\n// control should be return to the user\nfunction resume (arg: SignalArgs['interactions:down']) {\n const { interaction, eventTarget } = arg\n const state = interaction.inertia\n\n if (!state.active) return\n\n let element = eventTarget as Node\n\n // climb up the DOM tree from the event target\n while (is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n state.resume(arg)\n break\n }\n\n element = dom.parentNode(element)\n }\n}\n\nfunction stop ({ interaction }: { interaction: Interaction }) {\n const state = interaction.inertia\n\n if (state.active) {\n state.stop()\n }\n}\n\nfunction getOptions ({ interactable, prepared }: Interaction) {\n return interactable && interactable.options && prepared.name && interactable.options[prepared.name].inertia\n}\n\nconst inertia: Plugin = {\n id: 'inertia',\n before: ['modifiers', 'actions'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.inertia = new InertiaState(interaction)\n },\n\n 'interactions:before-action-end': start,\n 'interactions:down': resume,\n 'interactions:stop': stop,\n\n 'interactions:before-action-resume': (arg) => {\n const { modification } = arg.interaction\n\n modification.stop(arg)\n modification.start(arg, arg.interaction.coords.cur.page)\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-inertiastart': (arg) => arg.interaction.modification.setAndApply(arg),\n 'interactions:action-resume': modifiers.addEventModifiers,\n 'interactions:action-inertiastart': modifiers.addEventModifiers,\n 'interactions:after-action-inertiastart': (arg) =>\n arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-resume': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n },\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nfunction _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nfunction getQuadraticCurvePoint (\n startX: number,\n startY: number,\n cpX: number,\n cpY: number,\n endX: number,\n endY: number,\n position: number,\n) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nfunction easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport default inertia\n", "import type { Listener, ListenersArg, Rect } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport type { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport normalize from '@interactjs/utils/normalizeListeners'\n\nfunction fireUntilImmediateStopped (event: any, listeners: Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) {\n break\n }\n\n listener(event)\n }\n}\n\nexport class Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor (options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire (event: T) {\n let listeners: Listener[]\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on (type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off (type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) {\n continue\n }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n\n getRect (_element: Element): Rect {\n return null\n }\n}\n", "import type { Actions } from '@interactjs/core/scope'\n\nexport default function isNonNativeEvent (type: string, actions: Actions) {\n if (actions.phaselessTypes[type]) {\n return true\n }\n\n for (const name in actions.map) {\n if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n return true\n }\n }\n\n return false\n}\n", "/** @module interact */\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Context, EventTypes, Listener, ListenersArg, Target, Element } from '@interactjs/types/index'\nimport browser from '@interactjs/utils/browser'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { warnOnce } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { Interactable } from './Interactable'\nimport isNonNativeEvent from './isNonNativeEvent'\nimport type { Options } from './options'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n (target: Target, options?: Options): Interactable\n getPointerAverage: typeof pointerUtils.pointerAverage\n getTouchBBox: typeof pointerUtils.touchBBox\n getTouchDistance: typeof pointerUtils.touchDistance\n getTouchAngle: typeof pointerUtils.touchAngle\n getElementRect: typeof domUtils.getElementRect\n getElementClientRect: typeof domUtils.getElementClientRect\n matchesSelector: typeof domUtils.matchesSelector\n closest: typeof domUtils.closest\n /** @internal */ globalEvents: any\n version: string\n /** @internal */ scope: Scope\n use(\n plugin: Plugin,\n options?: {\n [key: string]: any\n },\n ): any\n isSet(target: Element, options?: any): boolean\n on(type: string | EventTypes, listener: ListenersArg, options?: object): any\n off(type: EventTypes, listener: any, options?: object): any\n debug(): any\n supportsTouch(): boolean\n supportsPointerEvent(): boolean\n stop(): any\n pointerMoveTolerance(newValue?: number): any\n addDocument(doc: Document, options?: object): void\n removeDocument(doc: Document): void\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\ntype _InteractStatic = import('@interactjs/core/InteractStatic').InteractStatic\n\nexport function createInteractStatic (scope: Scope): _InteractStatic {\n /**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\n const interact = ((target: Target, options: Options) => {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = interact.globalEvents\n }\n\n return interactable\n }) as _InteractStatic\n\n // expose the functions used to calculate multi-touch properties\n interact.getPointerAverage = pointerUtils.pointerAverage\n interact.getTouchBBox = pointerUtils.touchBBox\n interact.getTouchDistance = pointerUtils.touchDistance\n interact.getTouchAngle = pointerUtils.touchAngle\n\n interact.getElementRect = domUtils.getElementRect\n interact.getElementClientRect = domUtils.getElementClientRect\n interact.matchesSelector = domUtils.matchesSelector\n interact.closest = domUtils.closest\n\n interact.globalEvents = {} as any\n\n // eslint-disable-next-line no-undef\n interact.version = process.env.npm_package_version\n interact.scope = scope\n /**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n */\n interact.use = function (plugin, options) {\n this.scope.usePlugin(plugin, options)\n\n return this\n }\n\n /**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Target} target The Element or string being searched for\n * @param {object} options\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n interact.isSet = function (target: Target, options?: { context?: Context }): boolean {\n return !!this.scope.interactables.get(target, options && options.context)\n }\n\n /**\n * @deprecated\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\n interact.on = warnOnce(function on (type: string | EventTypes, listener: ListenersArg, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type as any[]) {\n this.on(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.on(prop, (type as any)[prop], listener)\n }\n\n return this\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (isNonNativeEvent(type, this.scope.actions)) {\n // if this type of event was never bound\n if (!this.globalEvents[type]) {\n this.globalEvents[type] = [listener]\n } else {\n this.globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n this.scope.events.add(this.scope.document, type, listener as Listener, { options })\n }\n\n return this\n }, 'The interact.on() method is being deprecated')\n\n /**\n * @deprecated\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\n interact.off = warnOnce(function off (type: EventTypes, listener: any, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type) {\n this.off(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.off(prop, type[prop], listener)\n }\n\n return this\n }\n\n if (isNonNativeEvent(type, this.scope.actions)) {\n let index: number\n\n if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n this.globalEvents[type].splice(index, 1)\n }\n } else {\n this.scope.events.remove(this.scope.document, type, listener, options)\n }\n\n return this\n }, 'The interact.off() method is being deprecated')\n\n interact.debug = function () {\n return this.scope\n }\n\n /**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\n interact.supportsTouch = function () {\n return browser.supportsTouch\n }\n\n /**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\n interact.supportsPointerEvent = function () {\n return browser.supportsPointerEvent\n }\n\n /**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\n interact.stop = function () {\n for (const interaction of this.scope.interactions.list) {\n interaction.stop()\n }\n\n return this\n }\n\n /**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\n interact.pointerMoveTolerance = function (newValue?: number) {\n if (is.number(newValue)) {\n this.scope.interactions.pointerMoveTolerance = newValue\n\n return this\n }\n\n return this.scope.interactions.pointerMoveTolerance\n }\n\n interact.addDocument = function (doc: Document, options?: object) {\n this.scope.addDocument(doc, options)\n }\n\n interact.removeDocument = function (doc: Document) {\n this.scope.removeDocument(doc)\n }\n\n return interact\n}\n", "/* eslint-disable no-dupe-class-members */\nimport type { ActionMap, ActionName, Actions, Scope } from '@interactjs/core/scope'\nimport type {\n Context,\n Element,\n Target,\n Listeners,\n OrBoolean,\n EventTypes,\n ListenersArg,\n ActionMethod,\n} from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\n\nimport { Eventable } from './Eventable'\nimport isNonNativeEvent from './isNonNativeEvent'\nimport type { ActionDefaults, Defaults, OptionsArg, PerActionDefaults } from './options'\nimport { Options } from './options'\n\ntype IgnoreValue = string | Element | boolean\ntype DeltaSource = 'page' | 'client'\n\n/** */\nexport class Interactable implements Partial {\n /** @internal */ get _defaults (): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly options!: Required\n readonly _actions: Actions\n readonly target: Target\n readonly events = new Eventable()\n readonly _context: Context\n readonly _win: Window\n readonly _doc: Document\n readonly _scopeEvents: Scope['events']\n\n /** @internal */ _rectChecker?: typeof Interactable.prototype.getRect\n\n /** */\n constructor (\n target: Target,\n options: any,\n defaultContext: Document | Element,\n scopeEvents: Scope['events'],\n ) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n this._scopeEvents = scopeEvents\n\n this.set(options)\n }\n\n setOnEvents (actionName: ActionName, phases: NonNullable) {\n if (is.func(phases.onstart)) {\n this.on(`${actionName}start`, phases.onstart)\n }\n if (is.func(phases.onmove)) {\n this.on(`${actionName}move`, phases.onmove)\n }\n if (is.func(phases.onend)) {\n this.on(`${actionName}end`, phases.onend)\n }\n if (is.func(phases.oninertiastart)) {\n this.on(`${actionName}inertiastart`, phases.oninertiastart)\n }\n\n return this\n }\n\n updatePerActionListeners (actionName: ActionName, prev: Listeners, cur: Listeners) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName: ActionName, options: OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName_ in options) {\n const optionName = optionName_ as keyof PerActionDefaults\n const actionOptions = this.options[actionName]\n const optionValue: any = options[optionName]\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue as Listeners)\n }\n\n // if the option value is an array\n if (is.array(optionValue)) {\n ;(actionOptions[optionName] as any) = arr.from(optionValue)\n }\n // if the option value is an object\n else if (is.plainObject(optionValue)) {\n // copy the object\n ;(actionOptions[optionName] as any) = extend(\n actionOptions[optionName] || ({} as any),\n clone(optionValue),\n )\n\n // set anabled field to true if it exists in the defaults\n if (\n is.object(defaults.perAction[optionName]) &&\n 'enabled' in (defaults.perAction[optionName] as any)\n ) {\n ;(actionOptions[optionName] as any).enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n ;(actionOptions[optionName] as any).enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n ;(actionOptions[optionName] as any) = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {Rect} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target) ? this.target : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker(): (element: Element) => any | null\n rectChecker(checker: (element: Element) => any): this\n rectChecker (checker?: (element: Element) => any) {\n if (is.func(checker)) {\n this._rectChecker = checker\n\n this.getRect = (element) => {\n const rect = extend({}, this._rectChecker(element))\n\n if (!(('width' in rect) as unknown)) {\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n return rect\n }\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n delete this._rectChecker\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName: keyof Options, newValue: any) {\n if (trySelector(newValue) || is.object(newValue)) {\n ;(this.options[optionName] as any) = newValue\n\n for (const action in this._actions.map) {\n ;(this.options[action as keyof ActionMap] as any)[optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue: any) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource(): DeltaSource\n deltaSource(newValue: DeltaSource): this\n deltaSource (newValue?: DeltaSource) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context\n }\n\n inContext (element: Document | Node) {\n return this._context === element.ownerDocument || nodeContains(this._context, element)\n }\n\n testIgnoreAllow (\n this: Interactable,\n options: { ignoreFrom?: IgnoreValue, allowFrom?: IgnoreValue },\n targetNode: Node,\n eventTarget: Node,\n ) {\n return (\n !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget)\n )\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, targetNode: Node, element: Node) {\n if (!allowFrom) {\n return true\n }\n\n if (!is.element(element)) {\n return false\n }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n } else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, targetNode: Node, element: Node) {\n if (!ignoreFrom || !is.element(element)) {\n return false\n }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n } else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire (iEvent: E) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: EventTypes, listenerArg?: ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') {\n type = browser.wheelEvent\n }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (isNonNativeEvent(type, this._actions)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n this._scopeEvents[`${addRemove}Delegate` as 'addDelegate' | 'removeDelegate'](\n this.target,\n this._context,\n type,\n listener,\n options,\n )\n }\n // remove listener from this Interactable's element\n else {\n this._scopeEvents[addRemove](this.target, type, listener, options)\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on (types: EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff('on', types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off (types: string | string[] | EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff('off', types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options: OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n ;(this.options as Required) = clone(defaults.base) as Required\n\n for (const actionName_ in this._actions.methodDict) {\n const actionName = actionName_ as ActionName\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n ;(this[methodName] as ActionMethod)(options[actionName])\n }\n\n for (const setting in options) {\n if (is.func((this as any)[setting])) {\n ;(this as any)[setting](options[setting as keyof typeof options])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n */\n unset () {\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in this._scopeEvents.delegatedEvents) {\n const delegated = this._scopeEvents.delegatedEvents[type]\n\n for (let i = delegated.length - 1; i >= 0; i--) {\n const { selector, context, listeners } = delegated[i]\n\n if (selector === this.target && context === this._context) {\n delegated.splice(i, 1)\n }\n\n for (let l = listeners.length - 1; l >= 0; l--) {\n this._scopeEvents.removeDelegate(\n this.target,\n this._context,\n type,\n listeners[l][0],\n listeners[l][1],\n )\n }\n }\n }\n } else {\n this._scopeEvents.remove(this.target as Node, 'all')\n }\n }\n}\n", "import type { Interactable } from '@interactjs/core/Interactable'\nimport type { OptionsArg, Options } from '@interactjs/core/options'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { Target, Context } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactable:new': {\n interactable: Interactable\n target: Target\n options: OptionsArg\n win: Window\n }\n }\n}\n\ninterface InteractableScopeProp {\n context: Context\n interactable: Interactable\n}\n\nexport class InteractableSet {\n // all set interactables\n list: Interactable[] = []\n\n selectorMap: {\n [selector: string]: InteractableScopeProp[]\n } = {}\n\n scope: Scope\n\n constructor (scope: Scope) {\n this.scope = scope\n scope.addListeners({\n 'interactable:unset': ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings: InteractableScopeProp[] = is.string(target)\n ? this.selectorMap[target]\n : (target as any)[this.scope.id]\n\n const targetIndex = arr.findIndex(targetMappings, (m) => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n },\n })\n }\n\n new (target: Target, options?: any): Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) {\n this.selectorMap[target] = []\n }\n this.selectorMap[target].push(mappingInfo)\n } else {\n if (!(interactable.target as any)[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n ;(target as any)[this.scope.id].push(mappingInfo)\n }\n\n this.scope.fire('interactable:new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n get (target: Target, options?: Options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings: InteractableScopeProp[] = isSelector\n ? this.selectorMap[target as string]\n : (target as any)[this.scope.id]\n\n if (!targetMappings) {\n return null\n }\n\n const found = arr.find(\n targetMappings,\n (m) => m.context === context && (isSelector || m.interactable.inContext(target as any)),\n )\n\n return found && found.interactable\n }\n\n forEachMatch (node: Node, callback: (interactable: Interactable) => T) {\n for (const interactable of this.list) {\n let ret: void | T\n\n if (\n (is.string(interactable.target)\n ? // target is a selector and the element matches\n is.element(node) && domUtils.matchesSelector(node, interactable.target)\n : // target is the element\n node === interactable.target) &&\n // the element is in context\n interactable.inContext(node)\n ) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n", "import type { Scope } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport pExtend from '@interactjs/utils/pointerExtend'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n events: ReturnType\n }\n}\n\ntype Listener = (event: Event | FakeEvent) => any\n\nfunction install (scope: Scope) {\n const targets: Array<{\n eventTarget: EventTarget\n events: { [type: string]: Listener[] }\n }> = []\n\n const delegatedEvents: {\n [type: string]: Array<{\n selector: string\n context: Node\n listeners: Array<[Listener, { capture: boolean, passive: boolean }]>\n }>\n } = {}\n const documents: Document[] = []\n\n const eventsMethods = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n targets,\n\n supportsOptions: false,\n supportsPassive: false,\n }\n\n // check if browser supports passive events and options arg\n scope.document?.createElement('div').addEventListener('test', null, {\n get capture () {\n return (eventsMethods.supportsOptions = true)\n },\n get passive () {\n return (eventsMethods.supportsPassive = true)\n },\n })\n\n scope.events = eventsMethods\n\n function add (eventTarget: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let target = arr.find(targets, (t) => t.eventTarget === eventTarget)\n\n if (!target) {\n target = {\n eventTarget,\n events: {},\n }\n\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n }\n\n if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n eventTarget.addEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n target.events[type].push(listener)\n }\n }\n\n function remove (\n eventTarget: EventTarget,\n type: string,\n listener?: 'all' | Listener,\n optionalArg?: boolean | any,\n ) {\n const options = getOptions(optionalArg)\n const targetIndex = arr.findIndex(targets, (t) => t.eventTarget === eventTarget)\n const target = targets[targetIndex]\n\n if (!target || !target.events) {\n return\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(eventTarget, type, 'all')\n }\n }\n return\n }\n\n let typeIsEmpty = false\n const typeListeners = target.events[type]\n\n if (typeListeners) {\n if (listener === 'all') {\n for (let i = typeListeners.length - 1; i >= 0; i--) {\n remove(eventTarget, type, typeListeners[i], options)\n }\n return\n } else {\n for (let i = 0; i < typeListeners.length; i++) {\n if (typeListeners[i] === listener) {\n eventTarget.removeEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n typeListeners.splice(i, 1)\n\n if (typeListeners.length === 0) {\n delete target.events[type]\n typeIsEmpty = true\n }\n\n break\n }\n }\n }\n }\n\n if (typeIsEmpty && !Object.keys(target.events).length) {\n targets.splice(targetIndex, 1)\n }\n }\n\n function addDelegate (selector: string, context: Node, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = []\n\n // add delegate listener functions\n for (const doc of documents) {\n add(doc, type, delegateListener)\n add(doc, type, delegateUseCapture, true)\n }\n }\n\n const delegates = delegatedEvents[type]\n let delegate = arr.find(delegates, (d) => d.selector === selector && d.context === context)\n\n if (!delegate) {\n delegate = { selector, context, listeners: [] }\n delegates.push(delegate)\n }\n\n delegate.listeners.push([listener, options])\n }\n\n function removeDelegate (\n selector: string,\n context: Document | Element,\n type: string,\n listener?: Listener,\n optionalArg?: any,\n ) {\n const options = getOptions(optionalArg)\n const delegates = delegatedEvents[type]\n let matchFound = false\n let index: number\n\n if (!delegates) return\n\n // count from last index of delegated to 0\n for (index = delegates.length - 1; index >= 0; index--) {\n const cur = delegates[index]\n // look for matching selector and context Node\n if (cur.selector === selector && cur.context === context) {\n const { listeners } = cur\n\n // each item of the listeners array is an array: [function, capture, passive]\n for (let i = listeners.length - 1; i >= 0; i--) {\n const [fn, { capture, passive }] = listeners[i]\n\n // check if the listener functions and capture and passive flags match\n if (fn === listener && capture === options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1)\n\n // if all listeners for this target have been removed\n // remove the target from the delegates array\n if (!listeners.length) {\n delegates.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) {\n break\n }\n }\n }\n }\n\n // bound to the interactable context when a DOM event\n // listener is added to a selector interactable\n function delegateListener (event: Event | FakeEvent, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event as Event)\n const delegates = delegatedEvents[event.type]\n const [eventTarget] = pointerUtils.getEventTargets(event as Event)\n let element: Node = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegates.length; i++) {\n const cur = delegates[i]\n const { selector, context } = cur\n\n if (\n domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)\n ) {\n const { listeners } = cur\n\n fakeEvent.currentTarget = element\n\n for (const [fn, { capture, passive }] of listeners) {\n if (capture === options.capture && passive === options.passive) {\n fn(fakeEvent)\n }\n }\n }\n }\n\n element = domUtils.parentNode(element)\n }\n }\n\n function delegateUseCapture (this: Element, event: Event | FakeEvent) {\n return delegateListener.call(this, event, true)\n }\n\n // for type inferrence\n return eventsMethods\n}\n\nclass FakeEvent implements Partial {\n currentTarget: Node\n originalEvent: Event\n type: string\n\n constructor (originalEvent: Event) {\n this.originalEvent = originalEvent\n // duplicate the event so that currentTarget can be changed\n pExtend(this, originalEvent)\n }\n\n preventOriginalDefault () {\n this.originalEvent.preventDefault()\n }\n\n stopPropagation () {\n this.originalEvent.stopPropagation()\n }\n\n stopImmediatePropagation () {\n this.originalEvent.stopImmediatePropagation()\n }\n}\n\nfunction getOptions (param: { [index: string]: any } | boolean): { capture: boolean, passive: boolean } {\n if (!is.object(param)) {\n return { capture: !!param, passive: false }\n }\n\n const options = extend({}, param) as any\n\n options.capture = !!param.capture\n options.passive = !!param.passive\n\n return options\n}\n\nexport default {\n id: 'events',\n install,\n}\n", "import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/types/index'\nimport * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: EventTarget\n curEventTarget: EventTarget\n scope: Scope\n}\n\nconst finder = {\n methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'] as const,\n\n search (details: SearchDetails) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n\n return null\n },\n\n // try to resume simulation with a new pointer\n simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget as Node\n\n if (\n interaction.simulation &&\n interaction.simulation.allowResume &&\n interaction.pointerType === pointerType\n ) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n continue\n }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer ({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle ({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && pointerType === interaction.pointerType) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId (interaction: Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n", "import type { Scope, ActionName, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { Listener } from '@interactjs/types/index'\nimport browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport InteractionBase from './Interaction'\nimport interactablePreventDefault from './interactablePreventDefault'\nimport type { SearchDetails } from './interactionFinder'\nimport finder from './interactionFinder'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n new: (options: any) => InteractionBase\n list: Array>\n listeners: { [type: string]: Listener }\n docEvents: Array<{ type: string, listener: Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:find': {\n interaction: InteractionBase\n searchDetails: SearchDetails\n }\n }\n}\n\nconst methodNames = [\n 'pointerDown',\n 'pointerMove',\n 'pointerUp',\n 'updatePointer',\n 'removePointer',\n 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n } else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class extends InteractionBase {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () {\n return scope.now()\n }\n }\n\n scope.interactions = {\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, scopeFire?: Scope['fire'] }) {\n options.scopeFire = (name, arg) => scope.fire(name, arg)\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n\n scope.usePlugin(interactablePreventDefault)\n}\n\nfunction doOnInteractions (method: string, scope: Scope) {\n return function (event: Event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches: any[] = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n // @ts-expect-error\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n } else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer =\n invalidPointer ||\n scope.now() - scope.prevTouchTime < 500 ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event as PointerEvent,\n pointerId: pointerUtils.getPointerId(event as PointerEvent),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.fire('interactions:find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal (\n { doc, scope, options }: SignalArgs[T],\n eventMethodName: 'add' | 'remove',\n) {\n const {\n interactions: { docEvents },\n events,\n } = scope\n const eventMethod = events[eventMethodName]\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nconst interactions: Plugin = {\n id: 'core/interactions',\n install,\n listeners: {\n 'scope:add-document': (arg) => onDocSignal(arg, 'add'),\n 'scope:remove-document': (arg) => onDocSignal(arg, 'remove'),\n 'interactable:unset': ({ interactable }, scope) => {\n // Stop and destroy related interactions when an Interactable is unset\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interaction.stop()\n scope.fire('interactions:destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n },\n },\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n\nexport default interactions\n", "import type Interaction from '@interactjs/core/Interaction'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport domObjects from '@interactjs/utils/domObjects'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport * as win from '@interactjs/utils/window'\n\nimport { Eventable } from './Eventable'\nimport type { PhaseMap } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport { createInteractStatic } from './InteractStatic'\nimport type { Interactable } from './Interactable'\nimport { Interactable as InteractableBase } from './Interactable'\nimport { InteractableSet } from './InteractableSet'\nimport events from './events'\nimport interactions from './interactions'\nimport type { OptionsArg } from './options'\nimport { defaults } from './options'\n\nexport interface SignalArgs {\n 'scope:add-document': DocSignalArg\n 'scope:remove-document': DocSignalArg\n 'interactable:unset': { interactable: InteractableBase }\n 'interactable:set': { interactable: InteractableBase, options: OptionsArg }\n 'interactions:destroy': { interaction: Interaction }\n}\n\nexport type ListenerName = keyof SignalArgs\n\nexport type ListenerMap = {\n [P in ListenerName]?: (arg: SignalArgs[P], scope: Scope, signalName: P) => void | boolean\n}\n\ninterface DocSignalArg {\n doc: Document\n window: Window\n scope: Scope\n options: Record\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionMap {}\nexport type ActionName = keyof ActionMap\n\nexport interface Actions {\n map: ActionMap\n phases: PhaseMap\n methodDict: { [P in ActionName]?: keyof Interactable }\n phaselessTypes: { [type: string]: true }\n}\n\nexport interface Plugin {\n [key: string]: any\n id?: string\n listeners?: ListenerMap\n before?: string[]\n install?(scope: Scope, options?: any): void\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n isInitialized = false\n listenerMaps: Array<{\n map: ListenerMap\n id: string\n }> = []\n\n browser = browser\n defaults = clone(defaults) as typeof defaults\n Eventable = Eventable\n actions: Actions = {\n map: {},\n phases: {\n start: true,\n move: true,\n end: true,\n },\n methodDict: {},\n phaselessTypes: {},\n }\n\n interactStatic = createInteractStatic(this)\n InteractEvent = InteractEvent\n Interactable: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: {\n list: Plugin[]\n map: { [id: string]: Plugin }\n } = {\n list: [],\n map: {},\n }\n\n constructor () {\n const scope = this\n\n this.Interactable = class extends InteractableBase {\n get _defaults () {\n return scope.defaults\n }\n\n set (this: T, options: OptionsArg) {\n super.set(options)\n\n scope.fire('interactable:set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset (this: InteractableBase) {\n super.unset()\n scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1)\n\n scope.fire('interactable:unset', { interactable: this })\n }\n }\n }\n\n addListeners (map: ListenerMap, id?: string) {\n this.listenerMaps.push({ id, map })\n }\n\n fire (name: T, arg: SignalArgs[T]): void | false {\n for (const {\n map: { [name]: listener },\n } of this.listenerMaps) {\n if (!!listener && listener(arg as any, this, name as never) === false) {\n return false\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window | typeof globalThis) {\n return this.isInitialized ? this : initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (!this.isInitialized) {\n return this\n }\n\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) {\n this._plugins.map[plugin.id] = plugin\n }\n this._plugins.list.push(plugin)\n\n if (plugin.install) {\n plugin.install(this, options)\n }\n\n if (plugin.listeners && plugin.before) {\n let index = 0\n const len = this.listenerMaps.length\n const before = plugin.before.reduce((acc, id) => {\n acc[id] = true\n acc[pluginIdRoot(id)] = true\n return acc\n }, {})\n\n for (; index < len; index++) {\n const otherId = this.listenerMaps[index].id\n\n if (before[otherId] || before[pluginIdRoot(otherId)]) {\n break\n }\n }\n\n this.listenerMaps.splice(index, 0, { id: plugin.id, map: plugin.listeners })\n } else if (plugin.listeners) {\n this.listenerMaps.push({ id: plugin.id, map: plugin.listeners })\n }\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) {\n return false\n }\n\n const window = win.getWindow(doc)\n\n options = options ? extend({}, options) : {}\n\n this.documents.push({ doc, options })\n this.events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n this.events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.fire('scope:add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n this.events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n this.events.documents.splice(index, 1)\n\n this.fire('scope:remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return (((this.window as any).Date as typeof Date) || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window | typeof globalThis) {\n scope.isInitialized = true\n\n if (is.window(window)) {\n win.init(window)\n }\n\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n\n // @ts-expect-error\n scope.window = window\n scope.document = window.document\n\n scope.usePlugin(interactions)\n scope.usePlugin(events)\n\n return scope\n}\n\nfunction pluginIdRoot (id: string) {\n return id && id.replace(/\\/.*$/, '')\n}\n", "import { Scope } from '@interactjs/core/scope'\n\nconst scope = new Scope()\n\nconst interact = scope.interactStatic\n\nexport default interact\n\nconst _global = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this\nscope.init(_global)\n", "export default () => {}\n", "export default () => {}\n", "import type { SnapFunction, SnapTarget } from '@interactjs/modifiers/snap/pointer'\nimport type { Rect, Point } from '@interactjs/types/index'\n\nexport type GridOptions = (Partial | Point) & {\n range?: number\n limits?: Rect\n offset?: Point\n}\n\nexport default (grid: GridOptions) => {\n const coordFields = ([\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ] as const).filter(([xField, yField]) => xField in grid || yField in grid)\n\n const gridFunc: SnapFunction & {\n grid: typeof grid\n coordFields: typeof coordFields\n } = (x, y) => {\n const {\n range,\n limits = {\n left: -Infinity,\n right: Infinity,\n top: -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result: SnapTarget & {\n grid: typeof grid\n } = { range, grid, x: null as number, y: null as number }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / (grid as any)[xField])\n const gridy = Math.round((y - offset.y) / (grid as any)[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * (grid as any)[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * (grid as any)[yField] + offset.y))\n }\n\n return result\n }\n\n gridFunc.grid = grid\n gridFunc.coordFields = coordFields\n\n return gridFunc\n}\n", "import type { Plugin } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\nimport * as allSnappers from './all'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n snappers: typeof allSnappers\n createSnapGrid: typeof allSnappers.grid\n }\n}\n\nconst snappersPlugin: Plugin = {\n id: 'snappers',\n install (scope) {\n const { interactStatic: interact } = scope\n\n interact.snappers = extend(interact.snappers || {}, allSnappers)\n interact.createSnapGrid = interact.snappers.grid\n },\n}\n\nexport default snappersPlugin\n", "/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n * modifiers: [\n * interact.modifiers.snapSize({\n * targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n * }),\n * interact.aspectRatio({ ratio: 'preserve' }),\n * ],\n * });\n * ```\n */\n\nimport type { Point, Rect, EdgeOptions } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\n\nimport Modification from './Modification'\nimport type { Modifier, ModifierModule, ModifierState } from './base'\nimport { makeModifier } from './base'\n\nexport interface AspectRatioOptions {\n ratio?: number | 'preserve'\n equalDelta?: boolean\n modifiers?: Modifier[]\n enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState<\nAspectRatioOptions,\n{\n startCoords: Point\n startRect: Rect\n linkedEdges: EdgeOptions\n ratio: number\n equalDelta: boolean\n xIsPrimaryAxis: boolean\n edgeSign: 1 | -1\n subModification: Modification\n}\n>\n\nconst aspectRatio: ModifierModule = {\n start (arg) {\n const { state, rect, edges: originalEdges, pageCoords: coords } = arg\n let { ratio } = state.options\n const { equalDelta, modifiers } = state.options\n\n if (ratio === 'preserve') {\n ratio = rect.width / rect.height\n }\n\n state.startCoords = extend({}, coords)\n state.startRect = extend({}, rect)\n state.ratio = ratio\n state.equalDelta = equalDelta\n\n const linkedEdges = (state.linkedEdges = {\n top: originalEdges.top || (originalEdges.left && !originalEdges.bottom),\n left: originalEdges.left || (originalEdges.top && !originalEdges.right),\n bottom: originalEdges.bottom || (originalEdges.right && !originalEdges.top),\n right: originalEdges.right || (originalEdges.bottom && !originalEdges.left),\n })\n\n state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right)\n\n if (state.equalDelta) {\n state.edgeSign = ((linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1)) as 1 | -1\n } else {\n const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left\n state.edgeSign = negativeSecondaryEdge ? -1 : 1\n }\n\n extend(arg.edges, linkedEdges)\n\n if (!modifiers || !modifiers.length) return\n\n const subModification = new Modification(arg.interaction)\n\n subModification.copyFrom(arg.interaction.modification)\n subModification.prepareStates(modifiers)\n\n state.subModification = subModification\n subModification.startAll({ ...arg })\n },\n\n set (arg) {\n const { state, rect, coords } = arg\n const initialCoords = extend({}, coords)\n const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n if (!state.subModification) {\n return null\n }\n\n const correctedRect = extend({}, rect)\n\n addEdges(state.linkedEdges, correctedRect, {\n x: coords.x - initialCoords.x,\n y: coords.y - initialCoords.y,\n })\n\n const result = state.subModification.setAll({\n ...arg,\n rect: correctedRect,\n edges: state.linkedEdges,\n pageCoords: coords,\n prevCoords: coords,\n prevRect: correctedRect,\n })\n\n const { delta } = result\n\n if (result.changed) {\n const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y)\n\n // do aspect modification again with critical edge axis as primary\n aspectMethod(state, xIsCriticalAxis, result.coords, result.rect)\n extend(coords, result.coords)\n }\n\n return result.eventProps\n },\n\n defaults: {\n ratio: 'preserve',\n equalDelta: false,\n modifiers: [],\n enabled: false,\n },\n}\n\nfunction setEqualDelta ({ startCoords, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Point) {\n if (xIsPrimaryAxis) {\n coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign\n } else {\n coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign\n }\n}\n\nfunction setRatio (\n { startRect, startCoords, ratio, edgeSign }: AspectRatioState,\n xIsPrimaryAxis: boolean,\n coords: Point,\n rect: Rect,\n) {\n if (xIsPrimaryAxis) {\n const newHeight = rect.width / ratio\n\n coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign\n } else {\n const newWidth = rect.height * ratio\n\n coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign\n }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio')\nexport { aspectRatio }\n", "import type { ModifierFunction } from '@interactjs/modifiers/base'\n\nconst noop = ((() => {}) as unknown) as ModifierFunction\n\nnoop._defaults = {}\n\nexport default noop\n", "import type Interaction from '@interactjs/core/Interaction'\nimport type { RectResolvable, Rect, Point } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierModule, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nexport interface RestrictOptions {\n // where to drag over\n restriction: RectResolvable<[number, number, Interaction]>\n // what part of self is allowed to drag over\n elementRect: Rect\n offset: Rect\n // restrict just before the end drag\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictState = ModifierState<\nRestrictOptions,\n{\n offset: Rect\n}\n>\n\nfunction start ({ rect, startOffset, state, interaction, pageCoords }: ModifierArg) {\n const { options } = state\n const { elementRect } = options\n const offset: Rect = extend(\n {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n options.offset || {},\n )\n\n if (rect && elementRect) {\n const restriction = getRestrictionRect(options.restriction, interaction, pageCoords)\n\n if (restriction) {\n const widthDiff = restriction.right - restriction.left - rect.width\n const heightDiff = restriction.bottom - restriction.top - rect.height\n\n if (widthDiff < 0) {\n offset.left += widthDiff\n offset.right += widthDiff\n }\n if (heightDiff < 0) {\n offset.top += heightDiff\n offset.bottom += heightDiff\n }\n }\n\n offset.left += startOffset.left - rect.width * elementRect.left\n offset.top += startOffset.top - rect.height * elementRect.top\n\n offset.right += startOffset.right - rect.width * (1 - elementRect.right)\n offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom)\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }: ModifierArg) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) return\n\n const rect = rectUtils.xywhToTlbr(restriction)\n\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n}\n\nexport function getRestrictionRect (\n value: RectResolvable<[number, number, Interaction]>,\n interaction: Interaction,\n coords?: Point,\n) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [\n coords.x,\n coords.y,\n interaction,\n ])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst defaults: RestrictOptions = {\n restriction: null,\n elementRect: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrict: ModifierModule = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrict, 'restrict')\nexport { restrict }\n", "// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport type { Point, Rect } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nexport interface RestrictEdgesOptions {\n inner: RestrictOptions['restriction']\n outer: RestrictOptions['restriction']\n offset?: RestrictOptions['offset']\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictEdgesState = ModifierState<\nRestrictEdgesOptions,\n{\n inner: Rect\n outer: Rect\n offset: RestrictEdgesOptions['offset']\n}\n>\n\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, startOffset, state }: ModifierArg) {\n const { options } = state\n let offset: Point\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set ({ coords, edges, interaction, state }: ModifierArg) {\n const { offset, options } = state\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || ({} as Rect)\n const outer = getRestrictionRect(options.outer, interaction, page) || ({} as Rect)\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n } else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n } else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect (rect: Rect, defaults: Rect) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst defaults: RestrictEdgesOptions = {\n inner: null,\n outer: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictEdges, 'restrictEdges')\nexport { restrictEdges }\n", "import extend from '@interactjs/utils/extend'\n\nimport { makeModifier } from '../base'\n\nimport { restrict } from './pointer'\n\nconst defaults = extend(\n {\n get elementRect () {\n return { top: 0, left: 0, bottom: 1, right: 1 }\n },\n set elementRect (_) {},\n },\n restrict.defaults,\n)\n\nconst restrictRect = {\n start: restrict.start,\n set: restrict.set,\n defaults,\n}\n\nexport default makeModifier(restrictRect, 'restrictRect')\nexport { restrictRect }\n", "import type { Point, Rect, Size } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { RestrictEdgesState } from './edges'\nimport { restrictEdges } from './edges'\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nexport interface RestrictSizeOptions {\n min?: Size | Point | RestrictOptions['restriction']\n max?: Size | Point | RestrictOptions['restriction']\n endOnly: boolean\n enabled?: boolean\n}\n\nfunction start (arg: ModifierArg) {\n return restrictEdges.start(arg)\n}\n\nexport type RestrictSizeState = RestrictEdgesState &\nModifierState<\nRestrictSizeOptions & { inner: Rect, outer: Rect },\n{\n min: Rect\n max: Rect\n}\n>\n\nfunction set (arg: ModifierArg) {\n const { interaction, state, rect, edges } = arg\n const { options } = state\n\n if (!edges) {\n return\n }\n\n const minSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.min as any, interaction, arg.coords)) || noMin\n const maxSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.max as any, interaction, arg.coords)) || noMax\n\n state.options = {\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n } else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n } else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst defaults: RestrictSizeOptions = {\n min: null,\n max: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictSize, 'restrictSize')\nexport { restrictSize }\n", "import type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/scope'\nimport type { Point, RectResolvable, Element } from '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { resolveRectLike, rectToXY } from '@interactjs/utils/rect'\n\nimport type { ModifierArg, ModifierState } from '../base'\nimport { makeModifier } from '../base'\n\nexport interface Offset {\n x: number\n y: number\n index: number\n relativePoint?: Point | null\n}\n\nexport interface SnapPosition {\n x?: number\n y?: number\n range?: number\n offset?: Offset\n [index: string]: any\n}\n\nexport type SnapFunction = (\n x: number,\n y: number,\n interaction: InteractionProxy,\n offset: Offset,\n index: number,\n) => SnapPosition\nexport type SnapTarget = SnapPosition | SnapFunction\nexport interface SnapOptions {\n targets: SnapTarget[] | null\n // target range\n range: number\n // self points for snapping. [0,0] = top left, [1,1] = bottom right\n relativePoints: Point[] | null\n // startCoords = offset snapping from drag start page position\n offset: Point | RectResolvable<[Interaction]> | 'startCoords' | null\n offsetWithOrigin?: boolean\n origin: RectResolvable<[Element]> | Point | null\n endOnly?: boolean\n enabled?: boolean\n}\n\nexport type SnapState = ModifierState<\nSnapOptions,\n{\n offsets?: Offset[]\n closest?: any\n targetFields?: string[][]\n}\n>\n\nfunction start (arg: ModifierArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const origin = options.offsetWithOrigin ? getOrigin(arg) : { x: 0, y: 0 }\n\n let snapOffset: Point\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n } else {\n const offsetRect = resolveRectLike(options.offset as any, interactable, element, [interaction])\n\n snapOffset = rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const { relativePoints } = options\n\n state.offsets =\n rect && relativePoints && relativePoints.length\n ? relativePoints.map((relativePoint, index) => ({\n index,\n relativePoint,\n x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n y: startOffset.top - rect.height * relativePoint.y + snapOffset.y,\n }))\n : [\n {\n index: 0,\n relativePoint: null,\n x: snapOffset.x,\n y: snapOffset.y,\n },\n ]\n}\n\nfunction set (arg: ModifierArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = extend({}, coords)\n const targets = []\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n for (const offset of offsets) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets.length; index < len; index++) {\n const snapTarget = options.targets[index]\n let target: SnapPosition\n\n if (is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n targets.push({\n x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: is.number(target.range) ? target.range : options.range,\n source: snapTarget,\n index,\n offset,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n delta: { x: 0, y: 0 },\n }\n\n for (const target of targets) {\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (\n !closest.target ||\n (inRange\n ? // is the closest target in range?\n closest.inRange && range !== Infinity\n ? // the pointer is relatively deeper in this target\n distance / range < closest.distance / closest.range\n : // this target has Infinite range and the closest doesn't\n (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance\n : // The other is not in range and the pointer is closer to this target\n !closest.inRange && distance < closest.distance)\n ) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.delta.x = dx\n closest.delta.y = dy\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n return closest\n}\n\nfunction getOrigin (arg: Partial>) {\n const { element } = arg.interaction\n const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin as any, null, null, [element]))\n const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name)\n\n return origin\n}\n\nconst defaults: SnapOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n origin: null,\n relativePoints: null,\n endOnly: false,\n enabled: false,\n}\nconst snap = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snap, 'snap')\nexport { snap }\n", "// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nimport type { ModifierArg } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snap } from './pointer'\n\nexport type SnapSizeOptions = Pick\n\nfunction start (arg: ModifierArg) {\n const { state, edges } = arg\n const { options } = state\n\n if (!edges) {\n return null\n }\n\n arg.state = {\n options: {\n targets: null,\n relativePoints: [\n {\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n },\n ],\n offset: options.offset || 'self',\n origin: { x: 0, y: 0 },\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set (arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of options.targets || []) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n const returnValue = snap.set(arg)\n\n state.options = options\n\n return returnValue\n}\n\nconst defaults: SnapSizeOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst snapSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snapSize, 'snapSize')\nexport { snapSize }\n", "/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n * ```\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\n\nimport type { ModifierArg, ModifierModule } from '../base'\nimport { makeModifier } from '../base'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snapSize } from './size'\n\nexport type SnapEdgesOptions = Pick\n\nfunction start (arg: ModifierArg) {\n const { edges } = arg\n\n if (!edges) {\n return null\n }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nconst snapEdges: ModifierModule> = {\n start,\n set: snapSize.set,\n defaults: extend(clone(snapSize.defaults), {\n targets: null,\n range: null,\n offset: { x: 0, y: 0 },\n } as const),\n}\n\nexport default makeModifier(snapEdges, 'snapEdges')\nexport { snapEdges }\n", "/* eslint-disable node/no-extraneous-import, import/no-unresolved */\nimport aspectRatio from './aspectRatio'\nimport avoid from './avoid/avoid'\nimport restrictEdges from './restrict/edges'\nimport restrict from './restrict/pointer'\nimport restrictRect from './restrict/rect'\nimport restrictSize from './restrict/size'\nimport rubberband from './rubberband/rubberband'\nimport snapEdges from './snap/edges'\nimport snap from './snap/pointer'\nimport snapSize from './snap/size'\nimport spring from './spring/spring'\nimport transform from './transform/transform'\n\nexport default {\n aspectRatio,\n restrictEdges,\n restrict,\n restrictRect,\n restrictSize,\n snapEdges,\n snap,\n snapSize,\n\n spring,\n avoid,\n transform,\n rubberband,\n}\n", "import type { Plugin } from '@interactjs/core/scope'\nimport snappers from '@interactjs/snappers/plugin'\n\nimport all from './all'\nimport base from './base'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n modifiers: typeof all\n }\n}\n\nconst modifiers: Plugin = {\n id: 'modifiers',\n install (scope) {\n const { interactStatic: interact } = scope\n\n scope.usePlugin(base)\n scope.usePlugin(snappers)\n\n interact.modifiers = all\n\n // for backwrads compatibility\n for (const type in all) {\n const { _defaults, _methods } = all[type as keyof typeof all]\n\n ;(_defaults as any)._methods = _methods\n ;(scope.defaults.perAction as any)[type] = _defaults\n }\n },\n}\n\nexport default modifiers\n", "import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { PointerEventType, PointerType, Point } from '@interactjs/types/index'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport default class PointerEvent