From 7e0365b9d27359c6897f9f17a63254640b15e6b2 Mon Sep 17 00:00:00 2001 From: Taye Adeyemi Date: Fri, 5 Apr 2019 14:00:19 +0200 Subject: [PATCH] v1.4.0-rc.6 --- packages/actions/yarn.lock | 4 + packages/auto-scroll/yarn.lock | 4 + packages/auto-start/yarn.lock | 4 + packages/core/tests/_helpers.js | 2 +- packages/core/yarn.lock | 4 + packages/inertia/yarn.lock | 4 + packages/interact/yarn.lock | 4 + packages/interactjs/dist/interact.js | 780 +++++++++---------- packages/interactjs/dist/interact.js.map | 2 +- packages/interactjs/dist/interact.min.js | 4 +- packages/interactjs/dist/interact.min.js.map | 2 +- 11 files changed, 419 insertions(+), 395 deletions(-) create mode 100644 packages/actions/yarn.lock create mode 100644 packages/auto-scroll/yarn.lock create mode 100644 packages/auto-start/yarn.lock create mode 100644 packages/core/yarn.lock create mode 100644 packages/inertia/yarn.lock create mode 100644 packages/interact/yarn.lock diff --git a/packages/actions/yarn.lock b/packages/actions/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/actions/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/auto-scroll/yarn.lock b/packages/auto-scroll/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/auto-scroll/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/auto-start/yarn.lock b/packages/auto-start/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/auto-start/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/core/tests/_helpers.js b/packages/core/tests/_helpers.js index 4e55e8c9b..833f21d72 100644 --- a/packages/core/tests/_helpers.js +++ b/packages/core/tests/_helpers.js @@ -122,4 +122,4 @@ export function testEnv({ plugins = [], target, rect = { top: 0, left: 0, bottom event, }; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUE7QUFDMUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUUsR0FBRztJQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVE7U0FBRTtRQUUzQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUN2QjthQUNJO1lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUN4QjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUUsQ0FBQyxHQUFHLENBQUM7SUFDakMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLElBQUksRUFBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxFQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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LEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUV4QyxNQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUVqRCxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUU3QyxPQUFPO1FBQ0wsS0FBSztRQUNMLFdBQVc7UUFDWCxNQUFNO1FBQ04sWUFBWTtRQUNaLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHsgZG9jIH0gZnJvbSAnQGludGVyYWN0anMvX2Rldi90ZXN0L2RvbWF0b3InXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscydcbmltcG9ydCBTaWduYWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL1NpZ25hbHMnXG5pbXBvcnQgRXZlbnRhYmxlIGZyb20gJy4uL0V2ZW50YWJsZSdcbmltcG9ydCB7IGNyZWF0ZVNjb3BlIH0gZnJvbSAnLi4vc2NvcGUnXG5cbmxldCBjb3VudGVyID0gMFxuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlICgpIHtcbiAgcmV0dXJuIChjb3VudGVyKyspXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVQcm9wcyAob2JqKSB7XG4gIGZvciAoY29uc3QgcHJvcCBpbiBvYmopIHtcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeyBjb250aW51ZSB9XG5cbiAgICBpZiAodXRpbHMuaXMub2JqZWN0KG9iaikpIHtcbiAgICAgIHVuaXF1ZVByb3BzKG9ialtwcm9wXSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBvYmpbcHJvcF0gPSAoY291bnRlcisrKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3Q29vcmRzU2V0IChuID0gMCkge1xuICByZXR1cm4ge1xuICAgIHN0YXJ0OiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBjdXI6IHtcbiAgICAgIHBhZ2UgICAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgY2xpZW50ICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICB0aW1lU3RhbXA6IG4rKyxcbiAgICB9LFxuICAgIHByZXY6IHtcbiAgICAgIHBhZ2UgICAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgY2xpZW50ICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICB0aW1lU3RhbXA6IG4rKyxcbiAgICB9LFxuICAgIGRlbHRhOiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICB2ZWxvY2l0eToge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld1BvaW50ZXIgKG4gPSA1MCkge1xuICByZXR1cm4ge1xuICAgIHBvaW50ZXJJZDogbisrLFxuICAgIHBhZ2VYOiBuKyssXG4gICAgcGFnZVk6IG4rKyxcbiAgICBjbGllbnRYOiBuKyssXG4gICAgY2xpZW50WTogbisrLFxuICB9IGFzIEludGVyYWN0LlBvaW50ZXJUeXBlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrU2NvcGUgKG9wdGlvbnMgPSB7fSBhcyBhbnkpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBvcHRpb25zLmRvY3VtZW50IHx8IGRvY1xuICBjb25zdCB3aW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0Vmlld1xuXG4gIGNvbnN0IHNjb3BlOiBhbnkgPSBjcmVhdGVTY29wZSgpLmluaXQod2luZG93KVxuXG4gIHNjb3BlLmludGVyYWN0ID0gT2JqZWN0LmFzc2lnbigoKSA9PiB7fSwgeyB1c2UgKCkge30gfSkgYXMgYW55XG5cbiAgcmV0dXJuIHNjb3BlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrU2lnbmFscyAoKSB7XG4gIHJldHVybiB7XG4gICAgb24gKCkge30sXG4gICAgb2ZmICgpIHt9LFxuICAgIGZpcmUgKCkge30sXG4gIH0gYXMgdW5rbm93biBhcyBhbnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tJbnRlcmFjdGFibGUgKHByb3BzID0ge30pIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAge1xuICAgICAgX3NpZ25hbHM6IG5ldyBTaWduYWxzKCksXG4gICAgICBfYWN0aW9uczoge1xuICAgICAgICBuYW1lczogW10sXG4gICAgICAgIG1ldGhvZERpY3Q6IHt9LFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGVsdGFTb3VyY2U6ICdwYWdlJyxcbiAgICAgIH0sXG4gICAgICB0YXJnZXQ6IHt9LFxuICAgICAgZXZlbnRzOiBuZXcgRXZlbnRhYmxlKCksXG4gICAgICBnZXRSZWN0ICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFxuICAgICAgICAgID8gdXRpbHMuZG9tLmdldEVsZW1lbnRDbGllbnRSZWN0KHRoaXMuZWxlbWVudClcbiAgICAgICAgICA6IHsgbGVmdDogMCwgdG9wOiAwLCByaWdodDogMCwgYm90dG9tOiAwIH1cbiAgICAgIH0sXG4gICAgICBmaXJlIChldmVudCkge1xuICAgICAgICB0aGlzLmV2ZW50cy5maXJlKGV2ZW50KVxuICAgICAgfSxcbiAgICB9LFxuICAgIHByb3BzKSBhcyBhbnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BzPFQgZXh0ZW5kcyB7fSwgSyBleHRlbmRzIGtleW9mIFQ+IChzcmM6IFQsIHByb3BzOiBLW10pIHtcbiAgcmV0dXJuIHByb3BzLnJlZHVjZSgoYWNjLCBwcm9wKSA9PiB7XG4gICAgYWNjW3Byb3BdID0gc3JjW3Byb3BdXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSBhcyBQaWNrPFQsIEs+KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdEVudiAoe1xuICBwbHVnaW5zID0gW10sXG4gIHRhcmdldCxcbiAgcmVjdCA9IHsgIHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCAgfSxcbn06IHtcbiAgcGx1Z2lucz86IEludGVyYWN0LlBsdWdpbltdLFxuICB0YXJnZXQ/OiBJbnRlcmFjdC5UYXJnZXQsXG4gIHJlY3Q/OiBJbnRlcmFjdC5SZWN0LFxufSA9IHt9KSB7XG4gIGNvbnN0IHNjb3BlOiBJbnRlcmFjdC5TY29wZSA9IG1vY2tTY29wZSgpXG5cbiAgZm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2lucykge1xuICAgIHNjb3BlLnVzZVBsdWdpbihwbHVnaW4pXG4gIH1cblxuICB0YXJnZXQgPSB0YXJnZXQgfHwgc2NvcGUuZG9jdW1lbnQuYm9keVxuXG4gIGNvbnN0IGludGVyYWN0aW9uID0gc2NvcGUuaW50ZXJhY3Rpb25zLm5ldyh7fSlcbiAgY29uc3QgaW50ZXJhY3RhYmxlID0gc2NvcGUuaW50ZXJhY3RhYmxlcy5uZXcodGFyZ2V0KVxuICBjb25zdCBjb29yZHMgPSB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpO1xuXG4gIChjb29yZHMgYXMgYW55KS50YXJnZXQgPSB0YXJnZXRcbiAgY29uc3QgZXZlbnQgPSB1dGlscy5wb2ludGVyLmNvb3Jkc1RvRXZlbnQoY29vcmRzKVxuXG4gIGludGVyYWN0YWJsZS5yZWN0Q2hlY2tlcigoKSA9PiAoeyAuLi5yZWN0IH0pKVxuXG4gIHJldHVybiB7XG4gICAgc2NvcGUsXG4gICAgaW50ZXJhY3Rpb24sXG4gICAgdGFyZ2V0LFxuICAgIGludGVyYWN0YWJsZSxcbiAgICBjb29yZHMsXG4gICAgZXZlbnQsXG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUE7QUFDMUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUUsR0FBRztJQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVE7U0FBRTtRQUUzQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUN2QjthQUNJO1lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUN4QjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUUsQ0FBQyxHQUFHLENBQUM7SUFDakMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLElBQUksRUFBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxFQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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LEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFeEMsTUFBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDL0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFakQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFN0MsT0FBTztRQUNMLEtBQUs7UUFDTCxXQUFXO1FBQ1gsTUFBTTtRQUNOLFlBQVk7UUFDWixNQUFNO1FBQ04sS0FBSztLQUNOLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbmltcG9ydCB7IGRvYyB9IGZyb20gJ0BpbnRlcmFjdGpzL19kZXYvdGVzdC9kb21hdG9yJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgU2lnbmFscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9TaWduYWxzJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICcuLi9FdmVudGFibGUnXG5pbXBvcnQgeyBjcmVhdGVTY29wZSB9IGZyb20gJy4uL3Njb3BlJ1xuXG5sZXQgY291bnRlciA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSAoKSB7XG4gIHJldHVybiAoY291bnRlcisrKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlUHJvcHMgKG9iaikge1xuICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHsgY29udGludWUgfVxuXG4gICAgaWYgKHV0aWxzLmlzLm9iamVjdChvYmopKSB7XG4gICAgICB1bmlxdWVQcm9wcyhvYmpbcHJvcF0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgb2JqW3Byb3BdID0gKGNvdW50ZXIrKylcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0Nvb3Jkc1NldCAobiA9IDApIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDoge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgY3VyOiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBwcmV2OiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBkZWx0YToge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgdmVsb2NpdHk6IHtcbiAgICAgIHBhZ2UgICAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgY2xpZW50ICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICB0aW1lU3RhbXA6IG4rKyxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdQb2ludGVyIChuID0gNTApIHtcbiAgcmV0dXJuIHtcbiAgICBwb2ludGVySWQ6IG4rKyxcbiAgICBwYWdlWDogbisrLFxuICAgIHBhZ2VZOiBuKyssXG4gICAgY2xpZW50WDogbisrLFxuICAgIGNsaWVudFk6IG4rKyxcbiAgfSBhcyBJbnRlcmFjdC5Qb2ludGVyVHlwZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Njb3BlIChvcHRpb25zID0ge30gYXMgYW55KSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gb3B0aW9ucy5kb2N1bWVudCB8fCBkb2NcbiAgY29uc3Qgd2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXdcblxuICBjb25zdCBzY29wZTogYW55ID0gY3JlYXRlU2NvcGUoKS5pbml0KHdpbmRvdylcblxuICBzY29wZS5pbnRlcmFjdCA9IE9iamVjdC5hc3NpZ24oKCkgPT4ge30sIHsgdXNlICgpIHt9IH0pIGFzIGFueVxuXG4gIHJldHVybiBzY29wZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1NpZ25hbHMgKCkge1xuICByZXR1cm4ge1xuICAgIG9uICgpIHt9LFxuICAgIG9mZiAoKSB7fSxcbiAgICBmaXJlICgpIHt9LFxuICB9IGFzIHVua25vd24gYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50ZXJhY3RhYmxlIChwcm9wcyA9IHt9KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIF9zaWduYWxzOiBuZXcgU2lnbmFscygpLFxuICAgICAgX2FjdGlvbnM6IHtcbiAgICAgICAgbmFtZXM6IFtdLFxuICAgICAgICBtZXRob2REaWN0OiB7fSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbHRhU291cmNlOiAncGFnZScsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiB7fSxcbiAgICAgIGV2ZW50czogbmV3IEV2ZW50YWJsZSgpLFxuICAgICAgZ2V0UmVjdCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRcbiAgICAgICAgICA/IHV0aWxzLmRvbS5nZXRFbGVtZW50Q2xpZW50UmVjdCh0aGlzLmVsZW1lbnQpXG4gICAgICAgICAgOiB7IGxlZnQ6IDAsIHRvcDogMCwgcmlnaHQ6IDAsIGJvdHRvbTogMCB9XG4gICAgICB9LFxuICAgICAgZmlyZSAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZmlyZShldmVudClcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9wcykgYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wczxUIGV4dGVuZHMge30sIEsgZXh0ZW5kcyBrZXlvZiBUPiAoc3JjOiBULCBwcm9wczogS1tdKSB7XG4gIHJldHVybiBwcm9wcy5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgIGFjY1twcm9wXSA9IHNyY1twcm9wXVxuICAgIHJldHVybiBhY2NcbiAgfSwge30gYXMgUGljazxULCBLPilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RFbnYgKHtcbiAgcGx1Z2lucyA9IFtdLFxuICB0YXJnZXQsXG4gIHJlY3QgPSB7ICB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAgIH0sXG59OiB7XG4gIHBsdWdpbnM/OiBJbnRlcmFjdC5QbHVnaW5bXSxcbiAgdGFyZ2V0PzogSW50ZXJhY3QuVGFyZ2V0LFxuICByZWN0PzogSW50ZXJhY3QuUmVjdCxcbn0gPSB7fSkge1xuICBjb25zdCBzY29wZTogSW50ZXJhY3QuU2NvcGUgPSBtb2NrU2NvcGUoKVxuXG4gIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICBzY29wZS51c2VQbHVnaW4ocGx1Z2luKVxuICB9XG5cbiAgdGFyZ2V0ID0gdGFyZ2V0IHx8IHNjb3BlLmRvY3VtZW50LmJvZHlcblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IHNjb3BlLmludGVyYWN0aW9ucy5uZXcoe30pXG4gIGNvbnN0IGludGVyYWN0YWJsZSA9IHNjb3BlLmludGVyYWN0YWJsZXMubmV3KHRhcmdldClcbiAgY29uc3QgY29vcmRzID0gdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKTtcblxuICAoY29vcmRzIGFzIGFueSkudGFyZ2V0ID0gdGFyZ2V0XG4gIGNvbnN0IGV2ZW50ID0gdXRpbHMucG9pbnRlci5jb29yZHNUb0V2ZW50KGNvb3JkcylcblxuICBpbnRlcmFjdGFibGUucmVjdENoZWNrZXIoKCkgPT4gKHsgLi4ucmVjdCB9KSlcblxuICByZXR1cm4ge1xuICAgIHNjb3BlLFxuICAgIGludGVyYWN0aW9uLFxuICAgIHRhcmdldCxcbiAgICBpbnRlcmFjdGFibGUsXG4gICAgY29vcmRzLFxuICAgIGV2ZW50LFxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/core/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/inertia/yarn.lock b/packages/inertia/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/inertia/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/interact/yarn.lock b/packages/interact/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/packages/interact/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/interactjs/dist/interact.js b/packages/interactjs/dist/interact.js index a39bed7ab..b32efd91e 100644 --- a/packages/interactjs/dist/interact.js +++ b/packages/interactjs/dist/interact.js @@ -1,5 +1,5 @@ /** - * interact.js 1.4.0-rc.5 + * interact.js 1.4.0-rc.6 * * Copyright (c) 2012-2019 Taye Adeyemi * Released under the MIT License. @@ -31,9 +31,9 @@ var _InteractEvent = _interopRequireDefault(_$InteractEvent_14); var _interactions = _interopRequireDefault(_$interactions_20({})); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } @@ -84,14 +84,14 @@ function () { this.browser = browser; this.events = events; this.utils = utils; - this.defaults = utils.clone(_defaultOptions.default); - this.Eventable = _Eventable.default; + this.defaults = utils.clone(_defaultOptions["default"]); + this.Eventable = _Eventable["default"]; this.actions = { names: [], methodDict: {}, eventTypes: [] }; - this.InteractEvent = _InteractEvent.default; + this.InteractEvent = _InteractEvent["default"]; this.interactables = new InteractableSet(this); // all documents being listened to this.documents = []; @@ -143,7 +143,7 @@ function () { }]); return Interactable; - }(_Interactable.default); + }(_Interactable["default"]); } _createClass(Scope, [{ @@ -329,13 +329,13 @@ function () { function initScope(scope, window) { win.init(window); - _domObjects.default.init(window); + _domObjects["default"].init(window); browser.init(window); raf.init(window); events.init(window); - _interactions.default.install(scope); + _interactions["default"].install(scope); scope.document = window.document; scope.window = window; @@ -350,7 +350,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.newInteraction = newInteraction; -exports.default = void 0; +exports["default"] = void 0; var _browser = _interopRequireDefault(_$browser_44); @@ -366,7 +366,7 @@ var _Signals = _interopRequireDefault(_$Signals_42); var _Interaction = _interopRequireDefault(_$Interaction_16({})); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } @@ -397,7 +397,7 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func var methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur']; function install(scope) { - var signals = new _Signals.default(); + var signals = new _Signals["default"](); var listeners = {}; for (var _i = 0; _i < methodNames.length; _i++) { @@ -405,10 +405,10 @@ function install(scope) { listeners[method] = doOnInteractions(method, scope); } - var pEventTypes = _browser.default.pEventTypes; + var pEventTypes = _browser["default"].pEventTypes; var eventMap = {}; - if (_domObjects.default.PointerEvent) { + if (_domObjects["default"].PointerEvent) { eventMap[pEventTypes.down] = listeners.pointerDown; eventMap[pEventTypes.move] = listeners.pointerMove; eventMap[pEventTypes.up] = listeners.pointerUp; @@ -465,13 +465,13 @@ function install(scope) { }]); return Interaction; - }(_Interaction.default); + }(_Interaction["default"]); scope.interactions = { signals: signals, // all active and idle interactions list: [], - new: function _new(options) { + "new": function _new(options) { options.signals = signals; return new scope.Interaction(options); }, @@ -485,16 +485,16 @@ function doOnInteractions(method, scope) { return function (event) { var interactions = scope.interactions.list; - var pointerType = _pointerUtils.default.getPointerType(event); + var pointerType = _pointerUtils["default"].getPointerType(event); - var _pointerUtils$getEven = _pointerUtils.default.getEventTargets(event), + var _pointerUtils$getEven = _pointerUtils["default"].getEventTargets(event), _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 2), eventTarget = _pointerUtils$getEven2[0], curEventTarget = _pointerUtils$getEven2[1]; var matches = []; // [ [pointer, interaction], ...] - if (_browser.default.supportsTouch && /touch/.test(event.type)) { + if (_browser["default"].supportsTouch && /touch/.test(event.type)) { scope.prevTouchTime = scope.now(); for (var _i3 = 0; _i3 < event.changedTouches.length; _i3++) { @@ -504,7 +504,7 @@ function doOnInteractions(method, scope) { var changedTouch = _ref2; var pointer = changedTouch; - var pointerId = _pointerUtils.default.getPointerId(pointer); + var pointerId = _pointerUtils["default"].getPointerId(pointer); var searchDetails = { pointer: pointer, @@ -521,7 +521,7 @@ function doOnInteractions(method, scope) { } else { var invalidPointer = false; - if (!_browser.default.supportsPointerEvent && /mouse/.test(event.type)) { + if (!_browser["default"].supportsPointerEvent && /mouse/.test(event.type)) { // ignore mouse events while touch interactions are active for (var i = 0; i < interactions.length && !invalidPointer; i++) { invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown; @@ -536,7 +536,7 @@ function doOnInteractions(method, scope) { if (!invalidPointer) { var _searchDetails = { pointer: event, - pointerId: _pointerUtils.default.getPointerId(event), + pointerId: _pointerUtils["default"].getPointerId(event), pointerType: pointerType, eventType: event.type, curEventTarget: curEventTarget, @@ -567,7 +567,7 @@ function getInteraction(searchDetails) { var pointerType = searchDetails.pointerType, scope = searchDetails.scope; - var foundInteraction = _interactionFinder.default.search(searchDetails); + var foundInteraction = _interactionFinder["default"].search(searchDetails); var signalArg = { interaction: foundInteraction, @@ -580,7 +580,7 @@ function getInteraction(searchDetails) { } function newInteraction(options, scope) { - var interaction = scope.interactions.new(options); + var interaction = scope.interactions["new"](options); scope.interactions.list.push(interaction); return interaction; } @@ -590,7 +590,7 @@ function onDocSignal(_ref3, signalName) { scope = _ref3.scope, options = _ref3.options; var eventMap = scope.interactions.eventMap; - var eventMethod = signalName.indexOf('add') === 0 ? _events.default.add : _events.default.remove; + var eventMethod = signalName.indexOf('add') === 0 ? _events["default"].add : _events["default"].remove; if (scope.browser.isIOS && !options.events) { options.events = { @@ -599,9 +599,9 @@ function onDocSignal(_ref3, signalName) { } // delegate event listener - for (var eventType in _events.default.delegatedEvents) { - eventMethod(doc, eventType, _events.default.delegateListener); - eventMethod(doc, eventType, _events.default.delegateUseCapture, true); + for (var eventType in _events["default"].delegatedEvents) { + eventMethod(doc, eventType, _events["default"].delegateListener); + eventMethod(doc, eventType, _events["default"].delegateUseCapture, true); } var eventOptions = options && options.events; @@ -619,7 +619,7 @@ var _default = { newInteraction: newInteraction, methodNames: methodNames }; -exports.default = _default; +exports["default"] = _default; }); var _$Interaction_16 = createModuleFactory(function (module, exports) { @@ -631,10 +631,10 @@ Object.defineProperty(exports, "__esModule", { Object.defineProperty(exports, "PointerInfo", { enumerable: true, get: function get() { - return _PointerInfo.default; + return _PointerInfo["default"]; } }); -exports.default = exports.Interaction = void 0; +exports["default"] = exports.Interaction = void 0; var utils = _interopRequireWildcard(_$utils_52); @@ -644,9 +644,9 @@ var _PointerInfo = _interopRequireDefault(_$PointerInfo_17); var _scope = _$scope_21({}); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -985,7 +985,7 @@ function () { down = down === false ? false : down || /(down|start)$/i.test(event.type); if (!pointerInfo) { - pointerInfo = new _PointerInfo.default(id, pointer, event, null, null); + pointerInfo = new _PointerInfo["default"](id, pointer, event, null, null); pointerIndex = this.pointers.length; this.pointers.push(pointerInfo); } else { @@ -1055,7 +1055,7 @@ function () { key: "_createPreparedEvent", value: function _createPreparedEvent(event, phase, preEnd, type) { var actionName = this.prepared.name; - return new _InteractEvent.default(this, event, actionName, phase, this.element, null, preEnd, type); + return new _InteractEvent["default"](this, event, actionName, phase, this.element, null, preEnd, type); } }, { key: "_fireEvent", @@ -1137,7 +1137,7 @@ function () { exports.Interaction = Interaction; var _default = Interaction; -exports.default = _default; +exports["default"] = _default; }); var _$arr_43 = {}; @@ -1202,7 +1202,7 @@ var _$extend_49 = {}; Object.defineProperty(_$extend_49, "__esModule", { value: true }); -_$extend_49.default = extend; +_$extend_49["default"] = extend; function extend(dest, source) { for (var prop in source) { @@ -1218,13 +1218,13 @@ var _$isWindow_55 = {}; Object.defineProperty(_$isWindow_55, "__esModule", { value: true }); -_$isWindow_55.default = void 0; +_$isWindow_55["default"] = void 0; var _default = function _default(thing) { return !!(thing && thing.Window) && thing instanceof thing.Window; }; -_$isWindow_55.default = _default; +_$isWindow_55["default"] = _default; var _$window_63 = {}; "use strict"; @@ -1234,11 +1234,11 @@ Object.defineProperty(_$window_63, "__esModule", { }); _$window_63.init = init; _$window_63.getWindow = getWindow; -_$window_63.default = void 0; +_$window_63["default"] = void 0; var _isWindow = _interopRequireDefault(_$isWindow_55); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var win = { realWindow: undefined, @@ -1269,7 +1269,7 @@ if (typeof window === 'undefined') { } function getWindow(node) { - if ((0, _isWindow.default)(node)) { + if ((0, _isWindow["default"])(node)) { return node; } @@ -1279,7 +1279,7 @@ function getWindow(node) { win.init = init; var ___default_63 = win; -_$window_63.default = ___default_63; +_$window_63["default"] = ___default_63; var _$is_54 = {}; "use strict"; @@ -1293,12 +1293,12 @@ var ___isWindow_54 = ___interopRequireDefault_54(_$isWindow_55); var _window2 = ___interopRequireDefault_54(_$window_63); -function ___interopRequireDefault_54(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_54(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var __window_54 = function window(thing) { - return thing === _window2.default.window || (0, ___isWindow_54.default)(thing); + return thing === _window2["default"].window || (0, ___isWindow_54["default"])(thing); }; _$is_54.window = __window_54; @@ -1344,7 +1344,7 @@ var element = function element(thing) { return false; } - var _window = _window2.default.getWindow(thing) || _window2.default.window; + var _window = _window2["default"].getWindow(thing) || _window2["default"].window; return /object|function/.test(_typeof(_window.Element)) ? thing instanceof _window.Element // DOM2 : thing.nodeType === 1 && typeof thing.nodeName === 'string'; @@ -1370,15 +1370,15 @@ var _$normalizeListeners_56 = {}; Object.defineProperty(_$normalizeListeners_56, "__esModule", { value: true }); -_$normalizeListeners_56.default = normalize; +_$normalizeListeners_56["default"] = normalize; var _extend = ___interopRequireDefault_56(_$extend_49); var is = _interopRequireWildcard(_$is_54); -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_56(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_56(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function normalize(type, listeners, result) { result = result || {}; @@ -1389,7 +1389,7 @@ function normalize(type, listeners, result) { if (is.array(type)) { return type.reduce(function (acc, t) { - return (0, _extend.default)(acc, normalize(t, listeners, result)); + return (0, _extend["default"])(acc, normalize(t, listeners, result)); }, result); } // ({ type: fn }) -> ('', { type: fn }) @@ -1432,7 +1432,7 @@ var _$Eventable_13 = {}; Object.defineProperty(_$Eventable_13, "__esModule", { value: true }); -_$Eventable_13.default = void 0; +_$Eventable_13["default"] = void 0; var arr = ___interopRequireWildcard_13(_$arr_43); @@ -1440,9 +1440,9 @@ var ___extend_13 = ___interopRequireDefault_13(_$extend_49); var _normalizeListeners = ___interopRequireDefault_13(_$normalizeListeners_56); -function ___interopRequireDefault_13(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_13(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_13(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_13(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -1474,7 +1474,7 @@ function () { this.types = {}; this.propagationStopped = false; this.immediatePropagationStopped = false; - this.options = (0, ___extend_13.default)({}, options || {}); + this.options = (0, ___extend_13["default"])({}, options || {}); } _createClass(Eventable, [{ @@ -1496,7 +1496,7 @@ function () { }, { key: "on", value: function on(type, listener) { - var listeners = (0, _normalizeListeners.default)(type, listener); + var listeners = (0, _normalizeListeners["default"])(type, listener); for (type in listeners) { this.types[type] = arr.merge(this.types[type] || [], listeners[type]); @@ -1505,7 +1505,7 @@ function () { }, { key: "off", value: function off(type, listener) { - var listeners = (0, _normalizeListeners.default)(type, listener); + var listeners = (0, _normalizeListeners["default"])(type, listener); for (type in listeners) { var eventList = this.types[type]; @@ -1533,7 +1533,7 @@ function () { }(); var ___default_13 = Eventable; -_$Eventable_13.default = ___default_13; +_$Eventable_13["default"] = ___default_13; var _$defaultOptions_18 = {}; "use strict"; @@ -1541,7 +1541,7 @@ var _$defaultOptions_18 = {}; Object.defineProperty(_$defaultOptions_18, "__esModule", { value: true }); -_$defaultOptions_18.default = _$defaultOptions_18.defaults = void 0; +_$defaultOptions_18["default"] = _$defaultOptions_18.defaults = void 0; // tslint:disable no-empty-interface var defaults = { base: { @@ -1559,7 +1559,7 @@ var defaults = { }; _$defaultOptions_18.defaults = defaults; var ___default_18 = defaults; -_$defaultOptions_18.default = ___default_18; +_$defaultOptions_18["default"] = ___default_18; var _$domObjects_46 = {}; "use strict"; @@ -1567,7 +1567,7 @@ var _$domObjects_46 = {}; Object.defineProperty(_$domObjects_46, "__esModule", { value: true }); -_$domObjects_46.default = void 0; +_$domObjects_46["default"] = void 0; var domObjects = { init: __init_46, document: null, @@ -1586,7 +1586,7 @@ var domObjects = { function blank() {} var ___default_46 = domObjects; -_$domObjects_46.default = ___default_46; +_$domObjects_46["default"] = ___default_46; function __init_46(window) { var win = window; @@ -1608,7 +1608,7 @@ var _$browser_44 = {}; Object.defineProperty(_$browser_44, "__esModule", { value: true }); -_$browser_44.default = void 0; +_$browser_44["default"] = void 0; var _domObjects = ___interopRequireDefault_44(_$domObjects_46); @@ -1616,9 +1616,9 @@ var __is_44 = ___interopRequireWildcard_44(_$is_54); var _window = ___interopRequireDefault_44(_$window_63); -function ___interopRequireWildcard_44(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_44(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_44(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_44(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var browser = { init: __init_44, @@ -1634,12 +1634,12 @@ var browser = { }; function __init_44(window) { - var Element = _domObjects.default.Element; - var navigator = _window.default.window.navigator; // Does the browser support touch input? + var Element = _domObjects["default"].Element; + var navigator = _window["default"].window.navigator; // Does the browser support touch input? - browser.supportsTouch = 'ontouchstart' in window || __is_44.func(window.DocumentTouch) && _domObjects.default.document instanceof window.DocumentTouch; // Does the browser support PointerEvents + browser.supportsTouch = 'ontouchstart' in window || __is_44.func(window.DocumentTouch) && _domObjects["default"].document instanceof window.DocumentTouch; // Does the browser support PointerEvents - browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!_domObjects.default.PointerEvent; + browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!_domObjects["default"].PointerEvent; browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7 browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\d]/.test(navigator.appVersion); @@ -1648,7 +1648,7 @@ function __init_44(window) { browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector'; - browser.pEventTypes = browser.supportsPointerEvent ? _domObjects.default.PointerEvent === window.MSPointerEvent ? { + browser.pEventTypes = browser.supportsPointerEvent ? _domObjects["default"].PointerEvent === window.MSPointerEvent ? { up: 'MSPointerUp', down: 'MSPointerDown', over: 'mouseover', @@ -1664,11 +1664,11 @@ function __init_44(window) { cancel: 'pointercancel' } : null; // because Webkit and Opera still use 'mousewheel' event type - browser.wheelEvent = 'onmousewheel' in _domObjects.default.document ? 'mousewheel' : 'wheel'; + browser.wheelEvent = 'onmousewheel' in _domObjects["default"].document ? 'mousewheel' : 'wheel'; } var ___default_44 = browser; -_$browser_44.default = ___default_44; +_$browser_44["default"] = ___default_44; var _$domUtils_47 = {}; "use strict"; @@ -1697,9 +1697,9 @@ var __is_47 = ___interopRequireWildcard_47(_$is_54); var ___window_47 = ___interopRequireDefault_47(_$window_63); -function ___interopRequireWildcard_47(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_47(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_47(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_47(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function nodeContains(parent, child) { while (child) { @@ -1743,11 +1743,11 @@ function parentNode(node) { function matchesSelector(element, selector) { // remove /deep/ from selectors if shadowDOM polyfill is used - if (___window_47.default.window !== ___window_47.default.realWindow) { + if (___window_47["default"].window !== ___window_47["default"].realWindow) { selector = selector.replace(/\/deep\//g, ' '); } - return element[_browser.default.prefixedMatchesSelector](selector); + return element[_browser["default"].prefixedMatchesSelector](selector); } // Test for the element that's "above" all other qualifiers @@ -1797,7 +1797,7 @@ function indexOfDeepestElement(elements) { // an HTMLElement - if (deepestZone instanceof ___domObjects_47.default.HTMLElement && dropzone instanceof ___domObjects_47.default.SVGElement && !(dropzone instanceof ___domObjects_47.default.SVGSVGElement)) { + if (deepestZone instanceof ___domObjects_47["default"].HTMLElement && dropzone instanceof ___domObjects_47["default"].SVGElement && !(dropzone instanceof ___domObjects_47["default"].SVGSVGElement)) { if (dropzone === deepestZone.parentNode) { continue; } @@ -1857,11 +1857,11 @@ function matchesUpTo(element, selector, limit) { } function getActualElement(element) { - return element instanceof ___domObjects_47.default.SVGElementInstance ? element.correspondingUseElement : element; + return element instanceof ___domObjects_47["default"].SVGElementInstance ? element.correspondingUseElement : element; } function getScrollXY(relevantWindow) { - relevantWindow = relevantWindow || ___window_47.default.window; + relevantWindow = relevantWindow || ___window_47["default"].window; return { x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft, y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop @@ -1869,7 +1869,7 @@ function getScrollXY(relevantWindow) { } function getElementClientRect(element) { - var clientRect = element instanceof ___domObjects_47.default.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0]; + var clientRect = element instanceof ___domObjects_47["default"].SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0]; return clientRect && { left: clientRect.left, right: clientRect.right, @@ -1883,8 +1883,8 @@ function getElementClientRect(element) { function getElementRect(element) { var clientRect = getElementClientRect(element); - if (!_browser.default.isIOS7 && clientRect) { - var scroll = getScrollXY(___window_47.default.getWindow(element)); + if (!_browser["default"].isIOS7 && clientRect) { + var scroll = getScrollXY(___window_47["default"].getWindow(element)); clientRect.left += scroll.x; clientRect.right += scroll.x; clientRect.top += scroll.y; @@ -1911,7 +1911,7 @@ function trySelector(value) { } // an exception will be raised if it is invalid - ___domObjects_47.default.document.querySelector(value); + ___domObjects_47["default"].document.querySelector(value); return true; } @@ -1927,7 +1927,7 @@ _$rect_60.resolveRectLike = resolveRectLike; _$rect_60.rectToXY = rectToXY; _$rect_60.xywhToTlbr = xywhToTlbr; _$rect_60.tlbrToXywh = tlbrToXywh; -_$rect_60.default = void 0; +_$rect_60["default"] = void 0; /* removed: var _$domUtils_47 = require("./domUtils"); */; @@ -1935,9 +1935,9 @@ var ___extend_60 = ___interopRequireDefault_60(_$extend_49); var __is_60 = ___interopRequireWildcard_60(_$is_54); -function ___interopRequireWildcard_60(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_60(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_60(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_60(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function getStringOptionResult(value, interactable, element) { if (!__is_60.string(value)) { @@ -1978,7 +1978,7 @@ function rectToXY(rect) { function xywhToTlbr(rect) { if (rect && !('left' in rect && 'top' in rect)) { - rect = (0, ___extend_60.default)({}, rect); + rect = (0, ___extend_60["default"])({}, rect); rect.left = rect.x || 0; rect.top = rect.y || 0; rect.right = rect.right || rect.left + rect.width; @@ -1990,7 +1990,7 @@ function xywhToTlbr(rect) { function tlbrToXywh(rect) { if (rect && !('x' in rect && 'y' in rect)) { - rect = (0, ___extend_60.default)({}, rect); + rect = (0, ___extend_60["default"])({}, rect); rect.x = rect.left || 0; rect.y = rect.top || 0; rect.width = rect.width || rect.right - rect.x; @@ -2007,7 +2007,7 @@ var ___default_60 = { xywhToTlbr: xywhToTlbr, tlbrToXywh: tlbrToXywh }; -_$rect_60.default = ___default_60; +_$rect_60["default"] = ___default_60; var _$getOriginXY_50 = {}; "use strict"; @@ -2015,7 +2015,7 @@ var _$getOriginXY_50 = {}; Object.defineProperty(_$getOriginXY_50, "__esModule", { value: true }); -_$getOriginXY_50.default = ___default_50; +_$getOriginXY_50["default"] = ___default_50; /* removed: var _$rect_60 = require("./rect"); */; @@ -2036,13 +2036,13 @@ var _$hypot_51 = {}; Object.defineProperty(_$hypot_51, "__esModule", { value: true }); -_$hypot_51.default = void 0; +_$hypot_51["default"] = void 0; var ___default_51 = function _default(x, y) { return Math.sqrt(x * x + y * y); }; -_$hypot_51.default = ___default_51; +_$hypot_51["default"] = ___default_51; var _$InteractEvent_14 = {}; "use strict"; @@ -2050,7 +2050,7 @@ var _$InteractEvent_14 = {}; Object.defineProperty(_$InteractEvent_14, "__esModule", { value: true }); -_$InteractEvent_14.default = _$InteractEvent_14.InteractEvent = _$InteractEvent_14.EventPhase = void 0; +_$InteractEvent_14["default"] = _$InteractEvent_14.InteractEvent = _$InteractEvent_14.EventPhase = void 0; var ___extend_14 = ___interopRequireDefault_14(_$extend_49); @@ -2060,7 +2060,7 @@ var _hypot = ___interopRequireDefault_14(_$hypot_51); var _defaultOptions = ___interopRequireDefault_14(_$defaultOptions_18); -function ___interopRequireDefault_14(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_14(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ___classCallCheck_14(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -2090,8 +2090,8 @@ function () { element = element || interaction.element; var target = interaction.interactable; // FIXME: add deltaSource to defaults - var deltaSource = (target && target.options || _defaultOptions.default).deltaSource; - var origin = (0, _getOriginXY.default)(target, element, actionName); + var deltaSource = (target && target.options || _defaultOptions["default"]).deltaSource; + var origin = (0, _getOriginXY["default"])(target, element, actionName); var starting = phase === 'start'; var ending = phase === 'end'; var prevEvent = starting ? this : interaction.prevEvent; @@ -2100,8 +2100,8 @@ function () { client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp } : interaction.coords.cur; - this.page = (0, ___extend_14.default)({}, coords.page); - this.client = (0, ___extend_14.default)({}, coords.client); + this.page = (0, ___extend_14["default"])({}, coords.page); + this.client = (0, ___extend_14["default"])({}, coords.client); this.timeStamp = coords.timeStamp; if (!ending) { @@ -2145,8 +2145,8 @@ function () { this.dt = interaction.coords.delta.timeStamp; this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second - this.velocity = (0, ___extend_14.default)({}, interaction.coords.velocity[deltaSource]); - this.speed = (0, _hypot.default)(this.velocity.x, this.velocity.y); + this.velocity = (0, ___extend_14["default"])({}, interaction.coords.velocity[deltaSource]); + this.speed = (0, _hypot["default"])(this.velocity.x, this.velocity.y); this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null; } @@ -2275,7 +2275,7 @@ function () { _$InteractEvent_14.InteractEvent = InteractEvent; var ___default_14 = InteractEvent; -_$InteractEvent_14.default = ___default_14; +_$InteractEvent_14["default"] = ___default_14; var _$clone_45 = {}; "use strict"; @@ -2283,13 +2283,13 @@ var _$clone_45 = {}; Object.defineProperty(_$clone_45, "__esModule", { value: true }); -_$clone_45.default = clone; +_$clone_45["default"] = clone; var __arr_45 = ___interopRequireWildcard_45(_$arr_43); var __is_45 = ___interopRequireWildcard_45(_$is_54); -function ___interopRequireWildcard_45(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_45(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function clone(source) { var dest = {}; @@ -2316,7 +2316,7 @@ Object.defineProperty(_$pointerExtend_57, "__esModule", { value: true }); _$pointerExtend_57.pointerExtend = pointerExtend; -_$pointerExtend_57.default = void 0; +_$pointerExtend_57["default"] = void 0; function pointerExtend(dest, source) { for (var prop in source) { @@ -2342,7 +2342,7 @@ pointerExtend.prefixedPropREs = { webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/ }; var ___default_57 = pointerExtend; -_$pointerExtend_57.default = ___default_57; +_$pointerExtend_57["default"] = ___default_57; var _$pointerUtils_58 = {}; "use strict"; @@ -2350,7 +2350,7 @@ var _$pointerUtils_58 = {}; Object.defineProperty(_$pointerUtils_58, "__esModule", { value: true }); -_$pointerUtils_58.default = void 0; +_$pointerUtils_58["default"] = void 0; var ___browser_58 = ___interopRequireDefault_58(_$browser_44); @@ -2364,9 +2364,9 @@ var __is_58 = ___interopRequireWildcard_58(_$is_54); var _pointerExtend = ___interopRequireDefault_58(_$pointerExtend_57); -function ___interopRequireWildcard_58(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_58(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_58(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_58(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var pointerUtils = { copyCoords: function copyCoords(dest, src) { @@ -2394,7 +2394,7 @@ var pointerUtils = { targetObj.timeStamp = dt; }, isNativePointer: function isNativePointer(pointer) { - return pointer instanceof ___domObjects_58.default.Event || pointer instanceof ___domObjects_58.default.Touch; + return pointer instanceof ___domObjects_58["default"].Event || pointer instanceof ___domObjects_58["default"].Touch; }, // Get specified X/Y coords for mouse or event.touches[0] getXY: function getXY(type, pointer, xy) { @@ -2410,7 +2410,7 @@ var pointerUtils = { y: 0 }; // Opera Mobile handles the viewport and scrolling oddly - if (___browser_58.default.isOperaMobile && pointerUtils.isNativePointer(pointer)) { + if (___browser_58["default"].isOperaMobile && pointerUtils.isNativePointer(pointer)) { pointerUtils.getXY('screen', pointer, page); page.x += window.scrollX; page.y += window.scrollY; @@ -2423,7 +2423,7 @@ var pointerUtils = { getClientXY: function getClientXY(pointer, client) { client = client || {}; - if (___browser_58.default.isOperaMobile && pointerUtils.isNativePointer(pointer)) { + if (___browser_58["default"].isOperaMobile && pointerUtils.isNativePointer(pointer)) { // Opera Mobile handles the viewport and scrolling oddly pointerUtils.getXY('screen', pointer, client); } else { @@ -2446,7 +2446,7 @@ var pointerUtils = { targetObj.client.y = tmpXY.y; targetObj.timeStamp = timeStamp; }, - pointerExtend: _pointerExtend.default, + pointerExtend: _pointerExtend["default"], getTouchPair: function getTouchPair(event) { var touches = []; // array of touches is supplied @@ -2525,7 +2525,7 @@ var pointerUtils = { var touches = pointerUtils.getTouchPair(event); var dx = touches[0][sourceX] - touches[1][sourceX]; var dy = touches[0][sourceY] - touches[1][sourceY]; - return (0, ___hypot_58.default)(dx, dy); + return (0, ___hypot_58["default"])(dx, dy); }, touchAngle: function touchAngle(event, deltaSource) { var sourceX = deltaSource + 'X'; @@ -2539,7 +2539,7 @@ var pointerUtils = { getPointerType: function getPointerType(pointer) { return __is_58.string(pointer.pointerType) ? pointer.pointerType : __is_58.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the "pointer" must // be either a MouseEvent, TouchEvent, or Touch object - : /touch/.test(pointer.type) || pointer instanceof ___domObjects_58.default.Touch ? 'touch' : 'mouse'; + : /touch/.test(pointer.type) || pointer instanceof ___domObjects_58["default"].Touch ? 'touch' : 'mouse'; }, // [ event.target, event.currentTarget ] getEventTargets: function getEventTargets(event) { @@ -2604,7 +2604,7 @@ var pointerUtils = { } }; var ___default_58 = pointerUtils; -_$pointerUtils_58.default = ___default_58; +_$pointerUtils_58["default"] = ___default_58; var _$events_48 = {}; "use strict"; @@ -2612,7 +2612,7 @@ var _$events_48 = {}; Object.defineProperty(_$events_48, "__esModule", { value: true }); -_$events_48.default = _$events_48.FakeEvent = void 0; +_$events_48["default"] = _$events_48.FakeEvent = void 0; /* removed: var _$arr_43 = require("./arr"); */; @@ -2624,9 +2624,9 @@ var ___pointerExtend_48 = ___interopRequireDefault_48(_$pointerExtend_57); var _pointerUtils = ___interopRequireDefault_48(_$pointerUtils_58); -function ___interopRequireDefault_48(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_48(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_48(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_48(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function ___classCallCheck_48(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -2820,7 +2820,7 @@ function delegateListener(event, optionalArg) { var fakeEvent = new FakeEvent(event); var delegated = delegatedEvents[event.type]; - var _pointerUtils$getEven = _pointerUtils.default.getEventTargets(event), + var _pointerUtils$getEven = _pointerUtils["default"].getEventTargets(event), _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 1), eventTarget = _pointerUtils$getEven2[0]; @@ -2875,7 +2875,7 @@ function () { this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed - (0, ___pointerExtend_48.default)(this, originalEvent); + (0, ___pointerExtend_48["default"])(this, originalEvent); } ___createClass_48(FakeEvent, [{ @@ -2926,7 +2926,7 @@ var events = { } }; var ___default_48 = events; -_$events_48.default = ___default_48; +_$events_48["default"] = ___default_48; var _$Interactable_15 = {}; "use strict"; @@ -2934,7 +2934,7 @@ var _$Interactable_15 = {}; Object.defineProperty(_$Interactable_15, "__esModule", { value: true }); -_$Interactable_15.default = _$Interactable_15.Interactable = void 0; +_$Interactable_15["default"] = _$Interactable_15.Interactable = void 0; var __arr_15 = ___interopRequireWildcard_15(_$arr_43); @@ -2956,9 +2956,9 @@ var ___normalizeListeners_15 = ___interopRequireDefault_15(_$normalizeListeners_ var _Eventable = ___interopRequireDefault_15(_$Eventable_13); -function ___interopRequireDefault_15(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_15(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_15(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_15(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function ___classCallCheck_15(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -2974,7 +2974,7 @@ function () { function Interactable(target, options, defaultContext) { ___classCallCheck_15(this, Interactable); - this.events = new _Eventable.default(); + this.events = new _Eventable["default"](); this._actions = options.actions; this.target = target; this._context = options.context || defaultContext; @@ -3035,7 +3035,7 @@ function () { } // if the option value is an object else if (!isArray && __is_15.plainObject(optionValue)) { // copy the object - actionOptions[optionName] = (0, ___extend_15.default)(actionOptions[optionName] || {}, (0, _clone.default)(optionValue)); // set anabled field to true if it exists in the defaults + actionOptions[optionName] = (0, ___extend_15["default"])(actionOptions[optionName] || {}, (0, _clone["default"])(optionValue)); // set anabled field to true if it exists in the defaults if (__is_15.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) { actionOptions[optionName].enabled = optionValue.enabled !== false; @@ -3226,11 +3226,11 @@ function () { } var addRemove = method === 'on' ? 'add' : 'remove'; - var listeners = (0, ___normalizeListeners_15.default)(typeArg, listenerArg); + var listeners = (0, ___normalizeListeners_15["default"])(typeArg, listenerArg); for (var type in listeners) { if (type === 'wheel') { - type = ___browser_15.default.wheelEvent; + type = ___browser_15["default"].wheelEvent; } for (var _i2 = 0; _i2 < listeners[type].length; _i2++) { @@ -3244,10 +3244,10 @@ function () { this.events[method](type, listener); } // delegated event else if (__is_15.string(this.target)) { - _events.default["".concat(addRemove, "Delegate")](this.target, this._context, type, listener, options); + _events["default"]["".concat(addRemove, "Delegate")](this.target, this._context, type, listener, options); } // remove listener from this Interatable's element else { - _events.default[addRemove](this.target, type, listener, options); + _events["default"][addRemove](this.target, type, listener, options); } } } @@ -3302,12 +3302,12 @@ function () { options = {}; } - this.options = (0, _clone.default)(defaults.base); + this.options = (0, _clone["default"])(defaults.base); for (var actionName in this._actions.methodDict) { var methodName = this._actions.methodDict[actionName]; this.options[actionName] = {}; - this.setPerAction(actionName, (0, ___extend_15.default)((0, ___extend_15.default)({}, defaults.perAction), defaults.actions[actionName])); + this.setPerAction(actionName, (0, ___extend_15["default"])((0, ___extend_15["default"])({}, defaults.perAction), defaults.actions[actionName])); this[methodName](options[actionName]); } @@ -3329,12 +3329,12 @@ function () { }, { key: "unset", value: function unset() { - _events.default.remove(this.target, 'all'); + _events["default"].remove(this.target, 'all'); if (__is_15.string(this.target)) { // remove delegated events - for (var type in _events.default.delegatedEvents) { - var delegated = _events.default.delegatedEvents[type]; + for (var type in _events["default"].delegatedEvents) { + var delegated = _events["default"].delegatedEvents[type]; if (delegated.selectors[0] === this.target && delegated.contexts[0] === this._context) { delegated.selectors.splice(0, 1); @@ -3346,12 +3346,12 @@ function () { } } - _events.default.remove(this._context, type, _events.default.delegateListener); + _events["default"].remove(this._context, type, _events["default"].delegateListener); - _events.default.remove(this._context, type, _events.default.delegateUseCapture, true); + _events["default"].remove(this._context, type, _events["default"].delegateUseCapture, true); } } else { - _events.default.remove(this.target, 'all'); + _events["default"].remove(this.target, 'all'); } } }, { @@ -3370,7 +3370,7 @@ function () { _$Interactable_15.Interactable = Interactable; var ___default_15 = Interactable; -_$Interactable_15.default = ___default_15; +_$Interactable_15["default"] = ___default_15; var _$PointerInfo_17 = {}; "use strict"; @@ -3378,7 +3378,7 @@ var _$PointerInfo_17 = {}; Object.defineProperty(_$PointerInfo_17, "__esModule", { value: true }); -_$PointerInfo_17.default = _$PointerInfo_17.PointerInfo = void 0; +_$PointerInfo_17["default"] = _$PointerInfo_17.PointerInfo = void 0; function ___classCallCheck_17(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3394,7 +3394,7 @@ var PointerInfo = function PointerInfo(id, pointer, event, downTime, downTarget) _$PointerInfo_17.PointerInfo = PointerInfo; var ___default_17 = PointerInfo; -_$PointerInfo_17.default = ___default_17; +_$PointerInfo_17["default"] = ___default_17; var _$Signals_42 = {}; "use strict"; @@ -3402,7 +3402,7 @@ var _$Signals_42 = {}; Object.defineProperty(_$Signals_42, "__esModule", { value: true }); -_$Signals_42.default = void 0; +_$Signals_42["default"] = void 0; function ___classCallCheck_42(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3468,7 +3468,7 @@ function () { }(); var ___default_42 = Signals; -_$Signals_42.default = ___default_42; +_$Signals_42["default"] = ___default_42; var _$raf_59 = {}; "use strict"; @@ -3476,7 +3476,7 @@ var _$raf_59 = {}; Object.defineProperty(_$raf_59, "__esModule", { value: true }); -_$raf_59.default = void 0; +_$raf_59["default"] = void 0; var lastTime = 0; var _request; @@ -3524,7 +3524,7 @@ var ___default_59 = { }, init: __init_59 }; -_$raf_59.default = ___default_59; +_$raf_59["default"] = ___default_59; var _$utils_52 = {}; "use strict"; @@ -3540,73 +3540,73 @@ _$utils_52.copyAction = copyAction; Object.defineProperty(_$utils_52, "win", { enumerable: true, get: function get() { - return ___window_52.default; + return ___window_52["default"]; } }); Object.defineProperty(_$utils_52, "browser", { enumerable: true, get: function get() { - return ___browser_52.default; + return ___browser_52["default"]; } }); Object.defineProperty(_$utils_52, "clone", { enumerable: true, get: function get() { - return ___clone_52.default; + return ___clone_52["default"]; } }); Object.defineProperty(_$utils_52, "events", { enumerable: true, get: function get() { - return ___events_52.default; + return ___events_52["default"]; } }); Object.defineProperty(_$utils_52, "extend", { enumerable: true, get: function get() { - return ___extend_52.default; + return ___extend_52["default"]; } }); Object.defineProperty(_$utils_52, "getOriginXY", { enumerable: true, get: function get() { - return ___getOriginXY_52.default; + return ___getOriginXY_52["default"]; } }); Object.defineProperty(_$utils_52, "hypot", { enumerable: true, get: function get() { - return ___hypot_52.default; + return ___hypot_52["default"]; } }); Object.defineProperty(_$utils_52, "normalizeListeners", { enumerable: true, get: function get() { - return ___normalizeListeners_52.default; + return ___normalizeListeners_52["default"]; } }); Object.defineProperty(_$utils_52, "pointer", { enumerable: true, get: function get() { - return ___pointerUtils_52.default; + return ___pointerUtils_52["default"]; } }); Object.defineProperty(_$utils_52, "raf", { enumerable: true, get: function get() { - return _raf.default; + return _raf["default"]; } }); Object.defineProperty(_$utils_52, "rect", { enumerable: true, get: function get() { - return ___rect_52.default; + return ___rect_52["default"]; } }); Object.defineProperty(_$utils_52, "Signals", { enumerable: true, get: function get() { - return _Signals.default; + return _Signals["default"]; } }); _$utils_52.is = _$utils_52.dom = _$utils_52.arr = void 0; @@ -3647,16 +3647,16 @@ var ___rect_52 = ___interopRequireDefault_52(_$rect_60); var _Signals = ___interopRequireDefault_52(_$Signals_42); -function ___interopRequireDefault_52(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_52(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_52(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_52(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function warnOnce(method, message) { var warned = false; // eslint-disable-next-line no-shadow return function () { if (!warned) { - ___window_52.default.window.console.warn(message); + ___window_52["default"].window.console.warn(message); warned = true; } @@ -3697,11 +3697,11 @@ var _$interactionFinder_53 = {}; Object.defineProperty(_$interactionFinder_53, "__esModule", { value: true }); -_$interactionFinder_53.default = void 0; +_$interactionFinder_53["default"] = void 0; var __utils_53 = ___interopRequireWildcard_53(_$utils_52); -function ___interopRequireWildcard_53(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_53(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } var finder = { methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'], @@ -3866,7 +3866,7 @@ function hasPointerId(interaction, pointerId) { } var ___default_53 = finder; -_$interactionFinder_53.default = ___default_53; +_$interactionFinder_53["default"] = ___default_53; var _$drag_1 = {}; "use strict"; @@ -3874,7 +3874,7 @@ var _$drag_1 = {}; Object.defineProperty(_$drag_1, "__esModule", { value: true }); -_$drag_1.default = void 0; +_$drag_1["default"] = void 0; var ___scope_1 = _$scope_21({}); @@ -3882,7 +3882,7 @@ var __arr_1 = ___interopRequireWildcard_1(_$arr_43); var __is_1 = ___interopRequireWildcard_1(_$is_54); -function ___interopRequireWildcard_1(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_1(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } ___scope_1.ActionName.Drag = 'drag'; @@ -4030,7 +4030,7 @@ var drag = { } }; var ___default_1 = drag; -_$drag_1.default = ___default_1; +_$drag_1["default"] = ___default_1; var _$DropEvent_2 = {}; "use strict"; @@ -4038,11 +4038,11 @@ var _$DropEvent_2 = {}; Object.defineProperty(_$DropEvent_2, "__esModule", { value: true }); -_$DropEvent_2.default = void 0; +_$DropEvent_2["default"] = void 0; var __arr_2 = ___interopRequireWildcard_2(_$arr_43); -function ___interopRequireWildcard_2(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_2(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } @@ -4145,7 +4145,7 @@ function () { }(); var ___default_2 = DropEvent; -_$DropEvent_2.default = ___default_2; +_$DropEvent_2["default"] = ___default_2; var _$drop_3 = {}; "use strict"; @@ -4153,7 +4153,7 @@ var _$drop_3 = {}; Object.defineProperty(_$drop_3, "__esModule", { value: true }); -_$drop_3.default = void 0; +_$drop_3["default"] = void 0; var __utils_3 = ___interopRequireWildcard_3(_$utils_52); @@ -4161,9 +4161,9 @@ var _drag = ___interopRequireDefault_3(_$drag_1); var _DropEvent = ___interopRequireDefault_3(_$DropEvent_2); -function ___interopRequireDefault_3(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_3(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_3(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_3(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __install_3(scope) { var actions = scope.actions, @@ -4171,7 +4171,7 @@ function __install_3(scope) { Interactable = scope.Interactable, interactions = scope.interactions, defaults = scope.defaults; - scope.usePlugin(_drag.default); + scope.usePlugin(_drag["default"]); interactions.signals.on('before-action-start', function (_ref) { var interaction = _ref.interaction; @@ -4460,13 +4460,13 @@ function getDropEvents(interaction, _pointerEvent, dragEvent) { }; if (dragEvent.type === 'dragstart') { - dropEvents.activate = new _DropEvent.default(dropState, dragEvent, 'dropactivate'); + dropEvents.activate = new _DropEvent["default"](dropState, dragEvent, 'dropactivate'); dropEvents.activate.target = null; dropEvents.activate.dropzone = null; } if (dragEvent.type === 'dragend') { - dropEvents.deactivate = new _DropEvent.default(dropState, dragEvent, 'dropdeactivate'); + dropEvents.deactivate = new _DropEvent["default"](dropState, dragEvent, 'dropdeactivate'); dropEvents.deactivate.target = null; dropEvents.deactivate.dropzone = null; } @@ -4478,27 +4478,27 @@ function getDropEvents(interaction, _pointerEvent, dragEvent) { if (dropState.cur.element !== dropState.prev.element) { // if there was a previous dropzone, create a dragleave event if (dropState.prev.dropzone) { - dropEvents.leave = new _DropEvent.default(dropState, dragEvent, 'dragleave'); + dropEvents.leave = new _DropEvent["default"](dropState, dragEvent, 'dragleave'); dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element; dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone; } // if dropzone is not null, create a dragenter event if (dropState.cur.dropzone) { - dropEvents.enter = new _DropEvent.default(dropState, dragEvent, 'dragenter'); + dropEvents.enter = new _DropEvent["default"](dropState, dragEvent, 'dragenter'); dragEvent.dragEnter = dropState.cur.element; dragEvent.dropzone = dropState.cur.dropzone; } } if (dragEvent.type === 'dragend' && dropState.cur.dropzone) { - dropEvents.drop = new _DropEvent.default(dropState, dragEvent, 'drop'); + dropEvents.drop = new _DropEvent["default"](dropState, dragEvent, 'drop'); dragEvent.dropzone = dropState.cur.dropzone; dragEvent.relatedTarget = dropState.cur.element; } if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) { - dropEvents.move = new _DropEvent.default(dropState, dragEvent, 'dropmove'); + dropEvents.move = new _DropEvent["default"](dropState, dragEvent, 'dropmove'); dropEvents.move.dragmove = dragEvent; dragEvent.dropzone = dropState.cur.dropzone; } @@ -4681,7 +4681,7 @@ var drop = { } }; var ___default_3 = drop; -_$drop_3.default = ___default_3; +_$drop_3["default"] = ___default_3; var _$gesture_4 = {}; "use strict"; @@ -4689,7 +4689,7 @@ var _$gesture_4 = {}; Object.defineProperty(_$gesture_4, "__esModule", { value: true }); -_$gesture_4.default = void 0; +_$gesture_4["default"] = void 0; var ___InteractEvent_4 = ___interopRequireDefault_4(_$InteractEvent_14); @@ -4697,9 +4697,9 @@ var ___scope_4 = _$scope_21({}); var __utils_4 = ___interopRequireWildcard_4(_$utils_52); -function ___interopRequireWildcard_4(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_4(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_4(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_4(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } ___scope_4.ActionName.Gesture = 'gesture'; @@ -4813,7 +4813,7 @@ function updateGestureProps(_ref2) { iEvent.da = 0; interaction.gesture.startDistance = iEvent.distance; interaction.gesture.startAngle = iEvent.angle; - } else if (ending || event instanceof ___InteractEvent_4.default) { + } else if (ending || event instanceof ___InteractEvent_4["default"]) { var prevEvent = interaction.prevEvent; iEvent.distance = prevEvent.distance; iEvent.box = prevEvent.box; @@ -4839,7 +4839,7 @@ function updateGestureProps(_ref2) { } var ___default_4 = gesture; -_$gesture_4.default = ___default_4; +_$gesture_4["default"] = ___default_4; var _$resize_6 = {}; "use strict"; @@ -4847,13 +4847,13 @@ var _$resize_6 = {}; Object.defineProperty(_$resize_6, "__esModule", { value: true }); -_$resize_6.default = void 0; +_$resize_6["default"] = void 0; var ___scope_6 = _$scope_21({}); var __utils_6 = ___interopRequireWildcard_6(_$utils_52); -function ___interopRequireWildcard_6(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_6(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } ___scope_6.ActionName.Resize = 'resize'; @@ -5308,7 +5308,7 @@ function updateEventAxes(_ref3) { } var ___default_6 = resize; -_$resize_6.default = ___default_6; +_$resize_6["default"] = ___default_6; var _$actions_5 = {}; "use strict"; @@ -5320,25 +5320,25 @@ _$actions_5.install = __install_5; Object.defineProperty(_$actions_5, "drag", { enumerable: true, get: function get() { - return ___drag_5.default; + return ___drag_5["default"]; } }); Object.defineProperty(_$actions_5, "drop", { enumerable: true, get: function get() { - return _drop.default; + return _drop["default"]; } }); Object.defineProperty(_$actions_5, "gesture", { enumerable: true, get: function get() { - return _gesture.default; + return _gesture["default"]; } }); Object.defineProperty(_$actions_5, "resize", { enumerable: true, get: function get() { - return _resize.default; + return _resize["default"]; } }); _$actions_5.id = void 0; @@ -5351,16 +5351,16 @@ var _gesture = ___interopRequireDefault_5(_$gesture_4); var _resize = ___interopRequireDefault_5(_$resize_6); -function ___interopRequireDefault_5(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_5(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_5(scope) { - _gesture.default.install(scope); + _gesture["default"].install(scope); - _resize.default.install(scope); + _resize["default"].install(scope); - ___drag_5.default.install(scope); + ___drag_5["default"].install(scope); - _drop.default.install(scope); + _drop["default"].install(scope); } var id = 'actions'; @@ -5376,7 +5376,7 @@ _$autoScroll_7.getContainer = getContainer; _$autoScroll_7.getScroll = getScroll; _$autoScroll_7.getScrollSize = getScrollSize; _$autoScroll_7.getScrollSizeDelta = getScrollSizeDelta; -_$autoScroll_7.default = void 0; +_$autoScroll_7["default"] = void 0; var __domUtils_7 = ___interopRequireWildcard_7(_$domUtils_47); @@ -5388,9 +5388,9 @@ var ___raf_7 = ___interopRequireDefault_7(_$raf_59); /* removed: var _$window_63 = require("@interactjs/utils/window"); */; -function ___interopRequireDefault_7(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_7(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_7(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_7(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __install_7(scope) { var interactions = scope.interactions, @@ -5435,12 +5435,12 @@ var autoScroll = { start: function start(interaction, scope) { autoScroll.isScrolling = true; - ___raf_7.default.cancel(autoScroll.i); + ___raf_7["default"].cancel(autoScroll.i); interaction.autoScroll = autoScroll; autoScroll.interaction = interaction; autoScroll.prevTime = scope.now(); - autoScroll.i = ___raf_7.default.request(autoScroll.scroll); + autoScroll.i = ___raf_7["default"].request(autoScroll.scroll); }, stop: function stop() { autoScroll.isScrolling = false; @@ -5449,7 +5449,7 @@ var autoScroll = { autoScroll.interaction.autoScroll = null; } - ___raf_7.default.cancel(autoScroll.i); + ___raf_7["default"].cancel(autoScroll.i); }, // scroll the window by the values in scroll.x/y scroll: function scroll() { @@ -5502,9 +5502,9 @@ var autoScroll = { } if (autoScroll.isScrolling) { - ___raf_7.default.cancel(autoScroll.i); + ___raf_7["default"].cancel(autoScroll.i); - autoScroll.i = ___raf_7.default.request(autoScroll.scroll); + autoScroll.i = ___raf_7["default"].request(autoScroll.scroll); } }, check: function check(interactable, actionName) { @@ -5611,7 +5611,7 @@ var ___default_7 = { id: 'auto-scroll', install: __install_7 }; -_$autoScroll_7.default = ___default_7; +_$autoScroll_7["default"] = ___default_7; var _$InteractableMethods_8 = {}; "use strict"; @@ -5619,13 +5619,13 @@ var _$InteractableMethods_8 = {}; Object.defineProperty(_$InteractableMethods_8, "__esModule", { value: true }); -_$InteractableMethods_8.default = void 0; +_$InteractableMethods_8["default"] = void 0; /* removed: var _$utils_52 = require("@interactjs/utils"); */; var __is_8 = ___interopRequireWildcard_8(_$is_54); -function ___interopRequireWildcard_8(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_8(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __install_8(scope) { var Interactable = scope.Interactable, @@ -5809,7 +5809,7 @@ var ___default_8 = { id: 'auto-start/interactableMethods', install: __install_8 }; -_$InteractableMethods_8.default = ___default_8; +_$InteractableMethods_8["default"] = ___default_8; var _$base_9 = {}; "use strict"; @@ -5817,22 +5817,22 @@ var _$base_9 = {}; Object.defineProperty(_$base_9, "__esModule", { value: true }); -_$base_9.default = void 0; +_$base_9["default"] = void 0; var __utils_9 = ___interopRequireWildcard_9(_$utils_52); var _InteractableMethods = ___interopRequireDefault_9(_$InteractableMethods_8); -function ___interopRequireDefault_9(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_9(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_9(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_9(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __install_9(scope) { var interact = scope.interact, interactions = scope.interactions, defaults = scope.defaults; - _InteractableMethods.default.install(scope); // set cursor style on mousedown + _InteractableMethods["default"].install(scope); // set cursor style on mousedown interactions.signals.on('down', function (_ref) { @@ -6097,7 +6097,7 @@ var ___default_9 = { withinInteractionLimit: withinInteractionLimit, validateAction: validateAction }; -_$base_9.default = ___default_9; +_$base_9["default"] = ___default_9; var _$dragAxis_10 = {}; "use strict"; @@ -6105,7 +6105,7 @@ var _$dragAxis_10 = {}; Object.defineProperty(_$dragAxis_10, "__esModule", { value: true }); -_$dragAxis_10.default = void 0; +_$dragAxis_10["default"] = void 0; var ___scope_10 = _$scope_21({}); @@ -6115,9 +6115,9 @@ var __is_10 = ___interopRequireWildcard_10(_$is_54); var _base = ___interopRequireDefault_10(_$base_9); -function ___interopRequireDefault_10(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_10(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_10(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_10(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __install_10(scope) { scope.autoStart.signals.on('before-start', function (_ref) { @@ -6155,7 +6155,7 @@ function __install_10(scope) { if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) { var action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element); - if (action && action.name === ___scope_10.ActionName.Drag && checkStartAxis(currentAxis, interactable) && _base.default.validateAction(action, interactable, element, eventTarget, scope)) { + if (action && action.name === ___scope_10.ActionName.Drag && checkStartAxis(currentAxis, interactable) && _base["default"].validateAction(action, interactable, element, eventTarget, scope)) { return interactable; } } @@ -6191,7 +6191,7 @@ var ___default_10 = { id: 'auto-start/dragAxis', install: __install_10 }; -_$dragAxis_10.default = ___default_10; +_$dragAxis_10["default"] = ___default_10; var _$hold_11 = {}; "use strict"; @@ -6199,17 +6199,17 @@ var _$hold_11 = {}; Object.defineProperty(_$hold_11, "__esModule", { value: true }); -_$hold_11.default = void 0; +_$hold_11["default"] = void 0; var ___base_11 = ___interopRequireDefault_11(_$base_9); -function ___interopRequireDefault_11(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_11(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_11(scope) { var autoStart = scope.autoStart, interactions = scope.interactions, defaults = scope.defaults; - scope.usePlugin(___base_11.default); + scope.usePlugin(___base_11["default"]); defaults.perAction.hold = 0; defaults.perAction.delay = 0; interactions.signals.on('new', function (interaction) { @@ -6260,7 +6260,7 @@ var ___default_11 = { install: __install_11, getHoldDuration: getHoldDuration }; -_$hold_11.default = ___default_11; +_$hold_11["default"] = ___default_11; var _$autoStart_12 = {}; "use strict"; @@ -6272,19 +6272,19 @@ _$autoStart_12.install = __install_12; Object.defineProperty(_$autoStart_12, "autoStart", { enumerable: true, get: function get() { - return ___base_12.default; + return ___base_12["default"]; } }); Object.defineProperty(_$autoStart_12, "dragAxis", { enumerable: true, get: function get() { - return _dragAxis.default; + return _dragAxis["default"]; } }); Object.defineProperty(_$autoStart_12, "hold", { enumerable: true, get: function get() { - return _hold.default; + return _hold["default"]; } }); _$autoStart_12.id = void 0; @@ -6295,14 +6295,14 @@ var _dragAxis = ___interopRequireDefault_12(_$dragAxis_10); var _hold = ___interopRequireDefault_12(_$hold_11); -function ___interopRequireDefault_12(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_12(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_12(scope) { - ___base_12.default.install(scope); + ___base_12["default"].install(scope); - _hold.default.install(scope); + _hold["default"].install(scope); - _dragAxis.default.install(scope); + _dragAxis["default"].install(scope); } var __id_12 = 'auto-start'; @@ -6315,7 +6315,7 @@ Object.defineProperty(_$interactablePreventDefault_19, "__esModule", { value: true }); _$interactablePreventDefault_19.install = __install_19; -_$interactablePreventDefault_19.default = void 0; +_$interactablePreventDefault_19["default"] = void 0; /* removed: var _$domUtils_47 = require("@interactjs/utils/domUtils"); */; @@ -6325,9 +6325,9 @@ var __is_19 = ___interopRequireWildcard_19(_$is_54); /* removed: var _$window_63 = require("@interactjs/utils/window"); */; -function ___interopRequireWildcard_19(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_19(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_19(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_19(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function preventDefault(interactable, newValue) { if (/^(always|never|auto)$/.test(newValue)) { @@ -6359,7 +6359,7 @@ function checkAndPreventDefault(interactable, scope, event) { // user-select should be used instead of calling event.preventDefault(). - if (___events_19.default.supportsPassive && /^touch(start|move)$/.test(event.type)) { + if (___events_19["default"].supportsPassive && /^touch(start|move)$/.test(event.type)) { var doc = (0, _$window_63.getWindow)(event.target).document; var docOptions = scope.getDocOptions(doc); @@ -6439,7 +6439,7 @@ var ___default_19 = { id: 'core/interactablePreventDefault', install: __install_19 }; -_$interactablePreventDefault_19.default = ___default_19; +_$interactablePreventDefault_19["default"] = ___default_19; var _$devTools_22 = {}; "use strict"; @@ -6450,7 +6450,7 @@ Object.defineProperty(_$devTools_22, "__esModule", { _$devTools_22.touchAction = touchAction; _$devTools_22.boxSizing = boxSizing; _$devTools_22.noListeners = noListeners; -_$devTools_22.default = _$devTools_22.noListenersMessage = _$devTools_22.boxSizingMessage = _$devTools_22.touchActionMessage = _$devTools_22.install = _$devTools_22.links = void 0; +_$devTools_22["default"] = _$devTools_22.noListenersMessage = _$devTools_22.boxSizingMessage = _$devTools_22.touchActionMessage = _$devTools_22.install = _$devTools_22.links = void 0; var ___domObjects_22 = ___interopRequireDefault_22(_$domObjects_46); @@ -6460,9 +6460,9 @@ var __is_22 = ___interopRequireWildcard_22(_$is_54); var ___window_22 = ___interopRequireDefault_22(_$window_63); -function ___interopRequireWildcard_22(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_22(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_22(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_22(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /* eslint-disable no-console */ @@ -6508,7 +6508,7 @@ function touchAction(_ref3, logger) { function boxSizing(interaction, logger) { var element = interaction.element; - if (interaction.prepared.name === 'resize' && element instanceof ___domObjects_22.default.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/)) { + if (interaction.prepared.name === 'resize' && element instanceof ___domObjects_22["default"].HTMLElement && !hasStyle(element, 'boxSizing', /border-box/)) { logger.warn(boxSizingMessage, element, links.boxSizing); } } @@ -6523,7 +6523,7 @@ function noListeners(interaction, logger) { } function hasStyle(element, prop, styleRe) { - return styleRe.test(element.style[prop] || ___window_22.default.window.getComputedStyle(element)[prop]); + return styleRe.test(element.style[prop] || ___window_22["default"].window.getComputedStyle(element)[prop]); } function parentHasStyle(element, prop, styleRe) { @@ -6544,7 +6544,7 @@ var ___default_22 = { id: 'dev-tools', install: __install_22 }; -_$devTools_22.default = ___default_22; +_$devTools_22["default"] = ___default_22; var _$base_27 = {}; "use strict"; @@ -6552,11 +6552,11 @@ var _$base_27 = {}; Object.defineProperty(_$base_27, "__esModule", { value: true }); -_$base_27.default = void 0; +_$base_27["default"] = void 0; var ___extend_27 = ___interopRequireDefault_27(_$extend_49); -function ___interopRequireDefault_27(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_27(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ___slicedToArray_27(arr, i) { return ___arrayWithHoles_27(arr) || ___iterableToArrayLimit_27(arr, i) || ___nonIterableRest_27(); } @@ -6635,7 +6635,7 @@ function __start_27(_ref3, pageCoords, registeredModifiers) { element = interaction.element; var modifierList = getModifierList(interaction, registeredModifiers); var states = prepareStates(modifierList); - var rect = (0, ___extend_27.default)({}, interaction.rect); + var rect = (0, ___extend_27["default"])({}, interaction.rect); if (!('width' in rect)) { rect.width = rect.right - rect.left; @@ -6666,7 +6666,7 @@ function __start_27(_ref3, pageCoords, registeredModifiers) { interaction.modifiers.states = states; interaction.modifiers.result = null; startAll(arg); - arg.pageCoords = (0, ___extend_27.default)({}, interaction.coords.start.page); + arg.pageCoords = (0, ___extend_27["default"])({}, interaction.coords.start.page); var result = interaction.modifiers.result = setAll(arg); return result; } @@ -6681,8 +6681,8 @@ function setAll(arg) { rect = arg.rect, skipModifiers = arg.skipModifiers; var states = skipModifiers ? arg.states.slice(interaction.modifiers.skip) : arg.states; - arg.coords = (0, ___extend_27.default)({}, arg.pageCoords); - arg.rect = (0, ___extend_27.default)({}, rect); + arg.coords = (0, ___extend_27["default"])({}, arg.pageCoords); + arg.rect = (0, ___extend_27["default"])({}, rect); var result = { delta: { x: 0, @@ -6811,7 +6811,7 @@ function stop(arg) { return; } - var modifierArg = (0, ___extend_27.default)({ + var modifierArg = (0, ___extend_27["default"])({ states: states, interactable: interaction.interactable, element: interaction.element @@ -6844,7 +6844,7 @@ function setCoords(arg) { var curDelta = result.delta; if (phase === 'start') { - (0, ___extend_27.default)(interaction.modifiers.startDelta, result.delta); + (0, ___extend_27["default"])(interaction.modifiers.startDelta, result.delta); } var _arr = [[startCoords, startDelta], [curCoords, curDelta]]; @@ -6969,7 +6969,7 @@ var ___default_27 = { getRectOffset: getRectOffset, makeModifier: makeModifier }; -_$base_27.default = ___default_27; +_$base_27["default"] = ___default_27; var _$inertia_23 = {}; "use strict"; @@ -6977,7 +6977,7 @@ var _$inertia_23 = {}; Object.defineProperty(_$inertia_23, "__esModule", { value: true }); -_$inertia_23.default = void 0; +_$inertia_23["default"] = void 0; /* removed: var _$InteractEvent_14 = require("@interactjs/core/InteractEvent"); */; @@ -6987,9 +6987,9 @@ var __utils_23 = ___interopRequireWildcard_23(_$utils_52); var ___raf_23 = ___interopRequireDefault_23(_$raf_59); -function ___interopRequireWildcard_23(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_23(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_23(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_23(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } _$InteractEvent_14.EventPhase.Resume = 'resume'; _$InteractEvent_14.EventPhase.InertiaStart = 'inertiastart'; @@ -7025,7 +7025,7 @@ function __install_23(scope) { allowResume: true, smoothEndDuration: 300 }; - scope.usePlugin(___base_23.default); + scope.usePlugin(___base_23["default"]); } function resume(_ref2, scope) { @@ -7042,7 +7042,7 @@ function resume(_ref2, scope) { // if interaction element is the current inertia target element if (element === interaction.element) { // stop inertia - ___raf_23.default.cancel(state.timeout); + ___raf_23["default"].cancel(state.timeout); state.active = false; interaction.simulation = null; // update pointers to the down event's coordinates @@ -7105,7 +7105,7 @@ function release(_ref3, scope) { if (inertiaPossible && !inertia) { modifierArg.prevCoords = interaction.prevEvent.page; modifierArg.requireEndOnly = false; - modifierResult = ___base_23.default.setAll(modifierArg); + modifierResult = ___base_23["default"].setAll(modifierArg); if (modifierResult.changed) { smoothEnd = true; @@ -7135,10 +7135,10 @@ function release(_ref3, scope) { modifierArg.pageCoords.y += state.ye; modifierArg.prevCoords = undefined; modifierArg.requireEndOnly = true; - modifierResult = ___base_23.default.setAll(modifierArg); + modifierResult = ___base_23["default"].setAll(modifierArg); state.modifiedXe += modifierResult.delta.x; state.modifiedYe += modifierResult.delta.y; - state.timeout = ___raf_23.default.request(function () { + state.timeout = ___raf_23["default"].request(function () { return inertiaTick(interaction); }); } else { @@ -7146,7 +7146,7 @@ function release(_ref3, scope) { state.xe = modifierResult.delta.x; state.ye = modifierResult.delta.y; state.sx = state.sy = 0; - state.timeout = ___raf_23.default.request(function () { + state.timeout = ___raf_23["default"].request(function () { return smothEndTick(interaction); }); } @@ -7159,7 +7159,7 @@ function __stop_23(_ref4) { var state = interaction.inertia; if (state.active) { - ___raf_23.default.cancel(state.timeout); + ___raf_23["default"].cancel(state.timeout); state.active = false; interaction.simulation = null; @@ -7203,7 +7203,7 @@ function inertiaTick(interaction) { } interaction.move(); - state.timeout = ___raf_23.default.request(function () { + state.timeout = ___raf_23["default"].request(function () { return inertiaTick(interaction); }); } else { @@ -7230,7 +7230,7 @@ function smothEndTick(interaction) { state.sx = __utils_23.easeOutQuad(t, 0, state.xe, duration); state.sy = __utils_23.easeOutQuad(t, 0, state.ye, duration); interaction.move(); - state.timeout = ___raf_23.default.request(function () { + state.timeout = ___raf_23["default"].request(function () { return smothEndTick(interaction); }); } else { @@ -7274,7 +7274,7 @@ var ___default_23 = { smothEndTick: smothEndTick, updateInertiaCoords: updateInertiaCoords }; -_$inertia_23.default = ___default_23; +_$inertia_23["default"] = ___default_23; var _$interact_25 = {}; "use strict"; @@ -7282,7 +7282,7 @@ var _$interact_25 = {}; Object.defineProperty(_$interact_25, "__esModule", { value: true }); -_$interact_25.default = _$interact_25.scope = _$interact_25.interact = void 0; +_$interact_25["default"] = _$interact_25.scope = _$interact_25.interact = void 0; var ___scope_25 = _$scope_21({}); @@ -7292,9 +7292,9 @@ var ___browser_25 = ___interopRequireDefault_25(_$browser_44); var ___events_25 = ___interopRequireDefault_25(_$events_48); -function ___interopRequireDefault_25(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_25(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_25(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_25(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } /** @module interact */ var globalEvents = {}; @@ -7331,7 +7331,7 @@ var interact = function interact(target, options) { var interactable = scope.interactables.get(target, options); if (!interactable) { - interactable = scope.interactables.new(target, options); + interactable = scope.interactables["new"](target, options); interactable.events.global = globalEvents; } @@ -7422,7 +7422,7 @@ function on(type, listener, options) { } } // If non InteractEvent type, addEventListener to document else { - ___events_25.default.add(scope.document, type, listener, { + ___events_25["default"].add(scope.document, type, listener, { options: options }); } @@ -7471,7 +7471,7 @@ function off(type, listener, options) { } if (!__utils_25.arr.contains(scope.actions.eventTypes, type)) { - ___events_25.default.remove(scope.document, type, listener, options); + ___events_25["default"].remove(scope.document, type, listener, options); } else { var index; @@ -7515,7 +7515,7 @@ interact.closest = __utils_25.dom.closest; interact.supportsTouch = supportsTouch; function supportsTouch() { - return ___browser_25.default.supportsTouch; + return ___browser_25["default"].supportsTouch; } /** * @alias module:interact.supportsPointerEvent @@ -7527,7 +7527,7 @@ function supportsTouch() { interact.supportsPointerEvent = supportsPointerEvent; function supportsPointerEvent() { - return ___browser_25.default.supportsPointerEvent; + return ___browser_25["default"].supportsPointerEvent; } /** * Cancels all interactions (end events are not fired) @@ -7599,7 +7599,7 @@ interact.removeDocument = function (doc) { scope.interact = interact; var ___default_25 = interact; -_$interact_25.default = ___default_25; +_$interact_25["default"] = ___default_25; var _$pointer_30 = {}; "use strict"; @@ -7607,15 +7607,15 @@ var _$pointer_30 = {}; Object.defineProperty(_$pointer_30, "__esModule", { value: true }); -_$pointer_30.default = void 0; +_$pointer_30["default"] = void 0; var __is_30 = ___interopRequireWildcard_30(_$is_54); var ___rect_30 = ___interopRequireDefault_30(_$rect_60); -function ___interopRequireDefault_30(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_30(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_30(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_30(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __start_30(_ref) { var rect = _ref.rect, @@ -7664,9 +7664,9 @@ function set(_ref2) { function getRestrictionRect(value, interaction, coords) { if (__is_30.func(value)) { - return ___rect_30.default.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]); + return ___rect_30["default"].resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]); } else { - return ___rect_30.default.resolveRectLike(value, interaction.interactable, interaction.element); + return ___rect_30["default"].resolveRectLike(value, interaction.interactable, interaction.element); } } @@ -7681,7 +7681,7 @@ var restrict = { } }; var ___default_30 = restrict; -_$pointer_30.default = ___default_30; +_$pointer_30["default"] = ___default_30; var _$edges_29 = {}; "use strict"; @@ -7689,7 +7689,7 @@ var _$edges_29 = {}; Object.defineProperty(_$edges_29, "__esModule", { value: true }); -_$edges_29.default = void 0; +_$edges_29["default"] = void 0; var ___extend_29 = ___interopRequireDefault_29(_$extend_49); @@ -7697,7 +7697,7 @@ var ___rect_29 = ___interopRequireDefault_29(_$rect_60); var _pointer = ___interopRequireDefault_29(_$pointer_30); -function ___interopRequireDefault_29(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_29(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // This module adds the options.resize.restrictEdges setting which sets min and // max for the top, left, bottom and right edges of the target being resized. @@ -7709,7 +7709,7 @@ function ___interopRequireDefault_29(obj) { return obj && obj.__esModule ? obj : // outer: { top: 0, left: 0, right: 600, bottom: 600 }, // }, // }); -var __getRestrictionRect_29 = _pointer.default.getRestrictionRect; +var __getRestrictionRect_29 = _pointer["default"].getRestrictionRect; var noInner = { top: +Infinity, left: +Infinity, @@ -7732,7 +7732,7 @@ function __start_29(_ref) { if (options) { var offsetRect = __getRestrictionRect_29(options.offset, interaction, interaction.coords.start.page); - offset = ___rect_29.default.rectToXY(offsetRect); + offset = ___rect_29["default"].rectToXY(offsetRect); } offset = offset || { @@ -7759,7 +7759,7 @@ function __set_29(_ref2) { return; } - var page = (0, ___extend_29.default)({}, coords); + var page = (0, ___extend_29["default"])({}, coords); var inner = __getRestrictionRect_29(options.inner, interaction, page) || {}; var outer = __getRestrictionRect_29(options.outer, interaction, page) || {}; fixRect(inner, noInner); @@ -7806,7 +7806,7 @@ var restrictEdges = { } }; var ___default_29 = restrictEdges; -_$edges_29.default = ___default_29; +_$edges_29["default"] = ___default_29; var _$size_31 = {}; "use strict"; @@ -7814,7 +7814,7 @@ var _$size_31 = {}; Object.defineProperty(_$size_31, "__esModule", { value: true }); -_$size_31.default = void 0; +_$size_31["default"] = void 0; var ___extend_31 = ___interopRequireDefault_31(_$extend_49); @@ -7822,7 +7822,7 @@ var ___rect_31 = ___interopRequireDefault_31(_$rect_60); var _edges = ___interopRequireDefault_31(_$edges_29); -function ___interopRequireDefault_31(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_31(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // This module adds the options.resize.restrictSize setting which sets min and // max width and height for the target being resized. @@ -7844,7 +7844,7 @@ var noMax = { }; function __start_31(arg) { - return _edges.default.start(arg); + return _edges["default"].start(arg); } function __set_31(arg) { @@ -7857,15 +7857,15 @@ function __set_31(arg) { return; } - var rect = ___rect_31.default.xywhToTlbr(interaction.resizeRects.inverted); + var rect = ___rect_31["default"].xywhToTlbr(interaction.resizeRects.inverted); - var minSize = ___rect_31.default.tlbrToXywh(_edges.default.getRestrictionRect(options.min, interaction)) || noMin; - var maxSize = ___rect_31.default.tlbrToXywh(_edges.default.getRestrictionRect(options.max, interaction)) || noMax; + var minSize = ___rect_31["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.min, interaction)) || noMin; + var maxSize = ___rect_31["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.max, interaction)) || noMax; state.options = { enabled: options.enabled, endOnly: options.endOnly, - inner: (0, ___extend_31.default)({}, _edges.default.noInner), - outer: (0, ___extend_31.default)({}, _edges.default.noOuter) + inner: (0, ___extend_31["default"])({}, _edges["default"].noInner), + outer: (0, ___extend_31["default"])({}, _edges["default"].noOuter) }; if (edges.top) { @@ -7884,7 +7884,7 @@ function __set_31(arg) { state.options.outer.right = rect.left + maxSize.width; } - _edges.default.set(arg); + _edges["default"].set(arg); state.options = options; } @@ -7899,7 +7899,7 @@ var restrictSize = { } }; var ___default_31 = restrictSize; -_$size_31.default = ___default_31; +_$size_31["default"] = ___default_31; var _$pointer_33 = {}; "use strict"; @@ -7907,11 +7907,11 @@ var _$pointer_33 = {}; Object.defineProperty(_$pointer_33, "__esModule", { value: true }); -_$pointer_33.default = void 0; +_$pointer_33["default"] = void 0; var __utils_33 = ___interopRequireWildcard_33(_$utils_52); -function ___interopRequireWildcard_33(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_33(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __start_33(_ref) { var interaction = _ref.interaction, @@ -8065,7 +8065,7 @@ var snap = { } }; var ___default_33 = snap; -_$pointer_33.default = ___default_33; +_$pointer_33["default"] = ___default_33; var _$size_34 = {}; "use strict"; @@ -8073,7 +8073,7 @@ var _$size_34 = {}; Object.defineProperty(_$size_34, "__esModule", { value: true }); -_$size_34.default = void 0; +_$size_34["default"] = void 0; var ___extend_34 = ___interopRequireDefault_34(_$extend_49); @@ -8081,9 +8081,9 @@ var __is_34 = ___interopRequireWildcard_34(_$is_54); var ___pointer_34 = ___interopRequireDefault_34(_$pointer_33); -function ___interopRequireWildcard_34(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_34(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_34(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_34(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ___slicedToArray_34(arr, i) { return ___arrayWithHoles_34(arr) || ___iterableToArrayLimit_34(arr, i) || ___nonIterableRest_34(); } @@ -8119,7 +8119,7 @@ function __start_34(arg) { }; state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']]; - ___pointer_34.default.start(arg); + ___pointer_34["default"].start(arg); state.offsets = arg.state.offsets; arg.state = state; @@ -8135,7 +8135,7 @@ function __set_34(arg) { x: coords.x - offsets[0].x, y: coords.y - offsets[0].y }; - state.options = (0, ___extend_34.default)({}, options); + state.options = (0, ___extend_34["default"])({}, options); state.options.targets = []; for (var _i = 0; _i < (options.targets || []).length; _i++) { @@ -8175,7 +8175,7 @@ function __set_34(arg) { state.options.targets.push(target); } - ___pointer_34.default.set(arg); + ___pointer_34["default"].set(arg); state.options = options; } @@ -8191,7 +8191,7 @@ var snapSize = { } }; var ___default_34 = snapSize; -_$size_34.default = ___default_34; +_$size_34["default"] = ___default_34; var _$edges_32 = {}; "use strict"; @@ -8199,7 +8199,7 @@ var _$edges_32 = {}; Object.defineProperty(_$edges_32, "__esModule", { value: true }); -_$edges_32.default = void 0; +_$edges_32["default"] = void 0; var ___clone_32 = ___interopRequireDefault_32(_$clone_45); @@ -8207,7 +8207,7 @@ var ___extend_32 = ___interopRequireDefault_32(_$extend_49); var _size = ___interopRequireDefault_32(_$size_34); -function ___interopRequireDefault_32(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_32(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * @module modifiers/snapEdges @@ -8244,17 +8244,17 @@ function __start_32(arg) { } arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']]; - return _size.default.start(arg); + return _size["default"].start(arg); } function __set_32(arg) { - return _size.default.set(arg); + return _size["default"].set(arg); } var snapEdges = { start: __start_32, set: __set_32, - defaults: (0, ___extend_32.default)((0, ___clone_32.default)(_size.default.defaults), { + defaults: (0, ___extend_32["default"])((0, ___clone_32["default"])(_size["default"].defaults), { offset: { x: 0, y: 0 @@ -8262,7 +8262,7 @@ var snapEdges = { }) }; var ___default_32 = snapEdges; -_$edges_32.default = ___default_32; +_$edges_32["default"] = ___default_32; var _$modifiers_28 = {}; "use strict"; @@ -8286,20 +8286,20 @@ var _pointer2 = ___interopRequireDefault_28(_$pointer_33); var _size2 = ___interopRequireDefault_28(_$size_34); -function ___interopRequireDefault_28(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_28(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -var __makeModifier_28 = ___base_28.default.makeModifier; -var __snap_28 = __makeModifier_28(_pointer2.default, 'snap'); +var __makeModifier_28 = ___base_28["default"].makeModifier; +var __snap_28 = __makeModifier_28(_pointer2["default"], 'snap'); _$modifiers_28.snap = __snap_28; -var __snapSize_28 = __makeModifier_28(_size2.default, 'snapSize'); +var __snapSize_28 = __makeModifier_28(_size2["default"], 'snapSize'); _$modifiers_28.snapSize = __snapSize_28; -var __snapEdges_28 = __makeModifier_28(_edges2.default, 'snapEdges'); +var __snapEdges_28 = __makeModifier_28(_edges2["default"], 'snapEdges'); _$modifiers_28.snapEdges = __snapEdges_28; -var __restrict_28 = __makeModifier_28(___pointer_28.default, 'restrict'); +var __restrict_28 = __makeModifier_28(___pointer_28["default"], 'restrict'); _$modifiers_28.restrict = __restrict_28; -var __restrictEdges_28 = __makeModifier_28(___edges_28.default, 'restrictEdges'); +var __restrictEdges_28 = __makeModifier_28(___edges_28["default"], 'restrictEdges'); _$modifiers_28.restrictEdges = __restrictEdges_28; -var __restrictSize_28 = __makeModifier_28(___size_28.default, 'restrictSize'); +var __restrictSize_28 = __makeModifier_28(___size_28["default"], 'restrictSize'); _$modifiers_28.restrictSize = __restrictSize_28; var _$PointerEvent_35 = {}; @@ -8308,11 +8308,11 @@ var _$PointerEvent_35 = {}; Object.defineProperty(_$PointerEvent_35, "__esModule", { value: true }); -_$PointerEvent_35.default = void 0; +_$PointerEvent_35["default"] = void 0; var ___pointerUtils_35 = ___interopRequireDefault_35(_$pointerUtils_58); -function ___interopRequireDefault_35(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_35(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ___classCallCheck_35(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -8331,18 +8331,18 @@ function () { this.propagationStopped = false; this.immediatePropagationStopped = false; - ___pointerUtils_35.default.pointerExtend(this, event); + ___pointerUtils_35["default"].pointerExtend(this, event); if (event !== pointer) { - ___pointerUtils_35.default.pointerExtend(this, pointer); + ___pointerUtils_35["default"].pointerExtend(this, pointer); } this.interaction = interaction; this.timeStamp = timeStamp; this.originalEvent = event; this.type = type; - this.pointerId = ___pointerUtils_35.default.getPointerId(pointer); - this.pointerType = ___pointerUtils_35.default.getPointerType(pointer); + this.pointerId = ___pointerUtils_35["default"].getPointerId(pointer); + this.pointerType = ___pointerUtils_35["default"].getPointerType(pointer); this.target = eventTarget; this.currentTarget = null; @@ -8350,7 +8350,7 @@ function () { var pointerIndex = interaction.getPointerIndex(pointer); this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime; var interval = this.timeStamp - interaction.tapTime; - this.double = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === this.target && interval < 500); + this["double"] = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === this.target && interval < 500); } else if (type === 'doubletap') { this.dt = pointer.timeStamp - interaction.tapTime; } @@ -8410,7 +8410,7 @@ function () { return PointerEvent; }(); -_$PointerEvent_35.default = PointerEvent; +_$PointerEvent_35["default"] = PointerEvent; var _$base_36 = {}; "use strict"; @@ -8418,15 +8418,15 @@ var _$base_36 = {}; Object.defineProperty(_$base_36, "__esModule", { value: true }); -_$base_36.default = void 0; +_$base_36["default"] = void 0; var __utils_36 = ___interopRequireWildcard_36(_$utils_52); var _PointerEvent = ___interopRequireDefault_36(_$PointerEvent_35); -function ___interopRequireDefault_36(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_36(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_36(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_36(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } var signals = new __utils_36.Signals(); var simpleSignals = ['down', 'up', 'cancel']; @@ -8444,7 +8444,7 @@ var pointerEvents = { id: 'pointer-events/base', install: __install_36, signals: signals, - PointerEvent: _PointerEvent.default, + PointerEvent: _PointerEvent["default"], fire: fire, collectEventTargets: collectEventTargets, createSignalListener: createSignalListener, @@ -8462,7 +8462,7 @@ function fire(arg, scope) { _arg$targets = arg.targets, targets = _arg$targets === void 0 ? collectEventTargets(arg) : _arg$targets; var _arg$pointerEvent = arg.pointerEvent, - pointerEvent = _arg$pointerEvent === void 0 ? new _PointerEvent.default(type, pointer, event, eventTarget, interaction, scope.now()) : _arg$pointerEvent; + pointerEvent = _arg$pointerEvent === void 0 ? new _PointerEvent["default"](type, pointer, event, eventTarget, interaction, scope.now()) : _arg$pointerEvent; var signalArg = { interaction: interaction, pointer: pointer, @@ -8497,7 +8497,7 @@ function fire(arg, scope) { if (type === 'tap') { // if pointerEvent should make a double tap, create and fire a doubletap // PointerEvent and use that as the prevTap - var prevTap = pointerEvent.double ? fire({ + var prevTap = pointerEvent["double"] ? fire({ interaction: interaction, pointer: pointer, event: event, @@ -8710,7 +8710,7 @@ function createSignalListener(type, scope) { } var ___default_36 = pointerEvents; -_$base_36.default = ___default_36; +_$base_36["default"] = ___default_36; var _$holdRepeat_37 = {}; "use strict"; @@ -8718,16 +8718,16 @@ var _$holdRepeat_37 = {}; Object.defineProperty(_$holdRepeat_37, "__esModule", { value: true }); -_$holdRepeat_37.default = void 0; +_$holdRepeat_37["default"] = void 0; var ___base_37 = ___interopRequireDefault_37(_$base_36); -function ___interopRequireDefault_37(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_37(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_37(scope) { var pointerEvents = scope.pointerEvents, interactions = scope.interactions; - scope.usePlugin(___base_37.default); + scope.usePlugin(___base_37["default"]); pointerEvents.signals.on('new', onNew); pointerEvents.signals.on('fired', function (arg) { return onFired(arg, scope); @@ -8798,7 +8798,7 @@ var ___default_37 = { id: 'pointer-events/holdRepeat', install: __install_37 }; -_$holdRepeat_37.default = ___default_37; +_$holdRepeat_37["default"] = ___default_37; var _$interactableTargets_39 = {}; "use strict"; @@ -8806,7 +8806,7 @@ var _$interactableTargets_39 = {}; Object.defineProperty(_$interactableTargets_39, "__esModule", { value: true }); -_$interactableTargets_39.default = void 0; +_$interactableTargets_39["default"] = void 0; /* removed: var _$arr_43 = require("@interactjs/utils/arr"); */; @@ -8814,9 +8814,9 @@ var ___extend_39 = ___interopRequireDefault_39(_$extend_49); var __is_39 = ___interopRequireWildcard_39(_$is_54); -function ___interopRequireWildcard_39(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_39(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } -function ___interopRequireDefault_39(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_39(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_39(scope) { var pointerEvents = scope.pointerEvents, @@ -8853,8 +8853,8 @@ function __install_39(scope) { interactables.signals.on('set', function (_ref3) { var interactable = _ref3.interactable, options = _ref3.options; - (0, ___extend_39.default)(interactable.events.options, pointerEvents.defaults); - (0, ___extend_39.default)(interactable.events.options, options.pointerEvents || {}); + (0, ___extend_39["default"])(interactable.events.options, pointerEvents.defaults); + (0, ___extend_39["default"])(interactable.events.options, options.pointerEvents || {}); }); (0, _$arr_43.merge)(actions.eventTypes, pointerEvents.types); Interactable.prototype.pointerEvents = pointerEventsMethod; @@ -8872,7 +8872,7 @@ function __install_39(scope) { } function pointerEventsMethod(options) { - (0, ___extend_39.default)(this.events.options, options); + (0, ___extend_39["default"])(this.events.options, options); return this; } @@ -8880,7 +8880,7 @@ var ___default_39 = { id: 'pointer-events/interactableTargets', install: __install_39 }; -_$interactableTargets_39.default = ___default_39; +_$interactableTargets_39["default"] = ___default_39; var _$pointerEvents_38 = {}; "use strict"; @@ -8892,19 +8892,19 @@ _$pointerEvents_38.install = __install_38; Object.defineProperty(_$pointerEvents_38, "pointerEvents", { enumerable: true, get: function get() { - return ___base_38.default; + return ___base_38["default"]; } }); Object.defineProperty(_$pointerEvents_38, "holdRepeat", { enumerable: true, get: function get() { - return _holdRepeat.default; + return _holdRepeat["default"]; } }); Object.defineProperty(_$pointerEvents_38, "interactableTargets", { enumerable: true, get: function get() { - return _interactableTargets.default; + return _interactableTargets["default"]; } }); _$pointerEvents_38.id = void 0; @@ -8915,14 +8915,14 @@ var _holdRepeat = ___interopRequireDefault_38(_$holdRepeat_37); var _interactableTargets = ___interopRequireDefault_38(_$interactableTargets_39); -function ___interopRequireDefault_38(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_38(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function __install_38(scope) { - ___base_38.default.install(scope); + ___base_38["default"].install(scope); - _holdRepeat.default.install(scope); + _holdRepeat["default"].install(scope); - _interactableTargets.default.install(scope); + _interactableTargets["default"].install(scope); } var __id_38 = 'pointer-events'; @@ -8935,7 +8935,7 @@ Object.defineProperty(_$reflow_40, "__esModule", { value: true }); _$reflow_40.install = __install_40; -_$reflow_40.default = void 0; +_$reflow_40["default"] = void 0; var ___interactions_40 = _$interactions_20({}); @@ -9096,7 +9096,7 @@ var ___default_40 = { id: 'reflow', install: __install_40 }; -_$reflow_40.default = ___default_40; +_$reflow_40["default"] = ___default_40; var _$interact_24 = {}; "use strict"; @@ -9108,40 +9108,40 @@ _$interact_24.init = __init_24; Object.defineProperty(_$interact_24, "autoScroll", { enumerable: true, get: function get() { - return _autoScroll.default; + return _autoScroll["default"]; } }); Object.defineProperty(_$interact_24, "interactablePreventDefault", { enumerable: true, get: function get() { - return _interactablePreventDefault.default; + return _interactablePreventDefault["default"]; } }); Object.defineProperty(_$interact_24, "inertia", { enumerable: true, get: function get() { - return _inertia.default; + return _inertia["default"]; } }); Object.defineProperty(_$interact_24, "modifiers", { enumerable: true, get: function get() { - return ___base_24.default; + return ___base_24["default"]; } }); Object.defineProperty(_$interact_24, "reflow", { enumerable: true, get: function get() { - return _reflow.default; + return _reflow["default"]; } }); Object.defineProperty(_$interact_24, "interact", { enumerable: true, get: function get() { - return _interact.default; + return _interact["default"]; } }); -_$interact_24.pointerEvents = _$interact_24.actions = _$interact_24.default = void 0; +_$interact_24.pointerEvents = _$interact_24.actions = _$interact_24["default"] = void 0; var actions = ___interopRequireWildcard_24(_$actions_5); @@ -9169,29 +9169,29 @@ var _reflow = ___interopRequireDefault_24(_$reflow_40); var _interact = ___interopRequireWildcard_24(_$interact_25); -function ___interopRequireDefault_24(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_24(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_24(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_24(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function __init_24(window) { _interact.scope.init(window); - _interact.default.use(_interactablePreventDefault.default); // inertia + _interact["default"].use(_interactablePreventDefault["default"]); // inertia - _interact.default.use(_inertia.default); // pointerEvents + _interact["default"].use(_inertia["default"]); // pointerEvents - _interact.default.use(__pointerEvents_24); // autoStart, hold + _interact["default"].use(__pointerEvents_24); // autoStart, hold - _interact.default.use(autoStart); // drag and drop, resize, gesture + _interact["default"].use(autoStart); // drag and drop, resize, gesture - _interact.default.use(actions); // snap, resize, etc. + _interact["default"].use(actions); // snap, resize, etc. - _interact.default.use(___base_24.default); // for backwrads compatibility + _interact["default"].use(___base_24["default"]); // for backwrads compatibility for (var type in modifiers) { @@ -9203,23 +9203,23 @@ function __init_24(window) { } // autoScroll - _interact.default.use(_autoScroll.default); // reflow + _interact["default"].use(_autoScroll["default"]); // reflow - _interact.default.use(_reflow.default); // eslint-disable-next-line no-undef + _interact["default"].use(_reflow["default"]); // eslint-disable-next-line no-undef if (undefined !== 'production') { - _interact.default.use(_devTools.default); + _interact["default"].use(_devTools["default"]); } - return _interact.default; + return _interact["default"]; } // eslint-disable-next-line no-undef -_interact.default.version = __init_24.version = "1.4.0-rc.5"; -var ___default_24 = _interact.default; -_$interact_24.default = ___default_24; +_interact["default"].version = __init_24.version = "1.4.0-rc.6"; +var ___default_24 = _interact["default"]; +_$interact_24["default"] = ___default_24; var _$types_41 = {}; /// @@ -9231,7 +9231,7 @@ var _$grid_61 = {}; Object.defineProperty(_$grid_61, "__esModule", { value: true }); -_$grid_61.default = void 0; +_$grid_61["default"] = void 0; function ___slicedToArray_61(arr, i) { return ___arrayWithHoles_61(arr) || ___iterableToArrayLimit_61(arr, i) || ___nonIterableRest_61(); } @@ -9288,7 +9288,7 @@ function createGrid(grid) { } var ___default_61 = createGrid; -_$grid_61.default = ___default_61; +_$grid_61["default"] = ___default_61; var _$snappers_62 = {}; "use strict"; @@ -9299,13 +9299,13 @@ Object.defineProperty(_$snappers_62, "__esModule", { Object.defineProperty(_$snappers_62, "grid", { enumerable: true, get: function get() { - return _grid.default; + return _grid["default"]; } }); var _grid = ___interopRequireDefault_62(_$grid_61); -function ___interopRequireDefault_62(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_62(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var _$index_26 = { exports: {} }; "use strict"; @@ -9314,7 +9314,7 @@ Object.defineProperty(_$index_26.exports, "__esModule", { value: true }); _$index_26.exports.init = __init_26; -_$index_26.exports.default = void 0; +_$index_26.exports["default"] = void 0; var ___interact_26 = ___interopRequireWildcard_26(_$interact_24); @@ -9326,9 +9326,9 @@ var ___extend_26 = ___interopRequireDefault_26(_$extend_49); var snappers = ___interopRequireWildcard_26(_$snappers_62); -function ___interopRequireDefault_26(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function ___interopRequireDefault_26(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function ___interopRequireWildcard_26(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } +function ___interopRequireWildcard_26(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function ___typeof_26(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ___typeof_26 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_26 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ___typeof_26(obj); } @@ -9338,24 +9338,24 @@ if ((typeof window === "undefined" ? "undefined" : ___typeof_26(window)) === 'ob function __init_26(win) { (0, ___interact_26.init)(win); - return ___interact_26.default.use({ + return ___interact_26["default"].use({ id: 'interactjs', install: function install(scope) { - ___interact_26.default.modifiers = (0, ___extend_26.default)(scope.modifiers, __modifiers_26); - ___interact_26.default.snappers = snappers; - ___interact_26.default.createSnapGrid = ___interact_26.default.snappers.grid; + ___interact_26["default"].modifiers = (0, ___extend_26["default"])(scope.modifiers, __modifiers_26); + ___interact_26["default"].snappers = snappers; + ___interact_26["default"].createSnapGrid = ___interact_26["default"].snappers.grid; } }); } -var ___default_26 = ___interact_26.default; -_$index_26.exports.default = ___default_26; -___interact_26.default['default'] = ___interact_26.default; // tslint:disable-line no-string-literal +var ___default_26 = ___interact_26["default"]; +_$index_26.exports["default"] = ___default_26; +___interact_26["default"]['default'] = ___interact_26["default"]; // tslint:disable-line no-string-literal -___interact_26.default['init'] = __init_26; // tslint:disable-line no-string-literal +___interact_26["default"]['init'] = __init_26; // tslint:disable-line no-string-literal if (("object" === "undefined" ? "undefined" : ___typeof_26(_$index_26)) === 'object' && !!_$index_26) { - _$index_26.exports = ___interact_26.default; + _$index_26.exports = ___interact_26["default"]; } _$index_26 = _$index_26.exports diff --git a/packages/interactjs/dist/interact.js.map b/packages/interactjs/dist/interact.js.map index 566a2daac..4643f2911 100644 --- a/packages/interactjs/dist/interact.js.map +++ b/packages/interactjs/dist/interact.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/extend.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/normalizeListeners.ts","../core/Eventable.ts","../core/defaultOptions.ts","../utils/domObjects.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/hypot.ts","../core/InteractEvent.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/pointerUtils.ts","../utils/events.ts","../core/Interactable.ts","../core/PointerInfo.ts","../utils/Signals.ts","../utils/raf.ts","../utils/index.ts","../utils/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../interact/interact.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/index.ts","../types/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":"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","file":"interact.js","sourceRoot":"","sourcesContent":["/**\n * interact.js 1.4.0-rc.5\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\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;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n // FIXME Signals\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\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: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope;\n\n (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\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) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n 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 events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('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 events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('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 class InteractableSet {\n signals = new utils.Signals()\n\n // all set interactables\n list: InteractableBase[] = []\n\n constructor (protected scope: Scope) {}\n\n new (target: Interact.Target, options?: any): InteractableBase {\n options = utils.extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n indexOfElement (target: Interact.Target, context: Document | Element) {\n context = context || this.scope.document\n\n const list = this.list\n\n for (let i = 0; i < list.length; i++) {\n const interactable = list[i]\n\n if (interactable.target === target && interactable._context === context) {\n return i\n }\n }\n\n return -1\n }\n\n get (element: Interact.Target, options, dontCheckInContext?: boolean) {\n const ret = this.list[this.indexOfElement(element, options && options.context)]\n\n return ret && (utils.is.string(element) || dontCheckInContext || ret.inContext(element)) ? ret : null\n }\n\n forEachMatch (element: Document | Element, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((utils.is.string(interactable.target)\n // target is a selector and the element matches\n ? (utils.is.element(element) && utils.dom.matchesSelector(element, interactable.target))\n // target is the element\n : element === interactable.target) &&\n // the element is in context\n (interactable.inContext(element))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n interactions.install(scope)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport events from '@interactjs/utils/events'\nimport finder, { SearchDetails } from '@interactjs/utils/interactionFinder'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n eventMap: any\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\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 const eventMap = {} as { [key: string]: Interact.Listener }\n\n if (domObjects.PointerEvent) {\n eventMap[pEventTypes.down ] = listeners.pointerDown\n eventMap[pEventTypes.move ] = listeners.pointerMove\n eventMap[pEventTypes.up ] = listeners.pointerUp\n eventMap[pEventTypes.cancel] = listeners.pointerUp\n }\n else {\n eventMap.mousedown = listeners.pointerDown\n eventMap.mousemove = listeners.pointerMove\n eventMap.mouseup = listeners.pointerUp\n\n eventMap.touchstart = listeners.pointerDown\n eventMap.touchmove = listeners.pointerMove\n eventMap.touchend = listeners.pointerUp\n eventMap.touchcancel = listeners.pointerUp\n }\n\n eventMap.blur = (event) => {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n }\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction 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 () { return scope.now() }\n }\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n return new scope.Interaction(options as Required)\n },\n listeners,\n eventMap,\n pointerMoveTolerance: 1,\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (browser.supportsTouch && /touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\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 }\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 = 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,\n pointerId: pointerUtils.getPointerId(event),\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.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || newInteraction({ pointerType }, scope)\n}\n\nexport function newInteraction (options, scope) {\n const interaction = scope.interactions.new(options)\n\n scope.interactions.list.push(interaction)\n return interaction\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { eventMap } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\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 eventType in eventMap) {\n eventMethod(doc, eventType, eventMap[eventType], eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n newInteraction,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\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: Interact.Rect & Interact.Rect3\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\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: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.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\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\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 {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.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 this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n })\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n if (!this.simulation) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (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\n let dy\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 = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.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?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n noBefore: false,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\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?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.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._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.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 : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer, event) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n\n if (!signalArg.noBefore) {\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\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 function find (array, func) {\n return array[findIndex(array, func)]\n}\n\nexport function some (array, func) {\n return findIndex(array, func) !== -1\n}\n","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.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 &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\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\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.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(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\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 }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\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","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass 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: any) {\n let listeners\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: Interact.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: Interact.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) { continue }\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\nexport default Eventable\n","// tslint:disable no-empty-interface\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}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.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\nexport default defaults\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{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\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 * as is from './is'\nimport win from './window'\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 string,\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) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('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) &&\n /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 = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /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'\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 = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent, child) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\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, selector) {\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\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (parent.parentNode && parent.parentNode !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = parent.parentNode\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = parent.parentNode\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element, selector, limit) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\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) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return 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\nexport function getElementRect (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 (element) {\n const path = []\n\n while (element) {\n path.push(element)\n element = parentNode(element)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\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\n}\n\nexport function tlbrToXywh (rect) {\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 - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\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","export default (x, y) => Math.sqrt(x * x + y * y)\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport defaults from './defaultOptions'\nimport Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> {\n type: string\n target: Element\n relatedTarget: Element | null\n currentTarget: Element\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 // added by interact.js\n interactable: Interactable\n interaction: Interaction\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n immediatePropagationStopped = false\n propagationStopped = false\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\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.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.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interaction = interaction\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : 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 }\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 get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this.interaction\n\n if (interaction.prevEvent.speed < 600 ||\n 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\nexport default InteractEvent\n","import * as arr from './arr'\nimport * as is from './is'\n\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 }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nexport function pointerExtend (dest, source) {\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}\n\nexport default pointerExtend\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\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\n setCoordVelocity (targetObj, delta) {\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\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\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 }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.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\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n getPointerType (pointer) {\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 ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: {\n page: Interact.Point,\n client: Interact.Point,\n timeStamp?: number,\n pointerId?: any,\n target?: any,\n }) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] },\n typeCount: number,\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[],\n contexts: EventTarget[],\n listeners: Array>,\n },\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (!contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\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(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: EventTarget, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\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 delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (selector, context, type, listener?, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\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 interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(event))\n let element = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\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\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public 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\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n","import * 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 events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected 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: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\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\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].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].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = 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 {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : 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 (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][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) {\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 (newValue) {\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) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, interactableElement: Element, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, interactableElement, eventTarget) &&\n this.testAllow(options.allowFrom, interactableElement, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, interactableElement)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, interactableElement)\n }\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) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.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') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(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: Interact.EventTypes, listener?: Interact.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[] | Interact.EventTypes, listener?: Interact.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: Interact.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 methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\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 * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: EventTarget,\n ) {}\n}\n\nexport default PointerInfo\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _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\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","import * as utils from './index'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\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\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = utils.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)) { continue }\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.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, pointerId) {\n return utils.arr.some(interaction.pointers, ({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\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 }\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 (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): 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: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent {\n type: string\n target: Element\n currentTarget: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n interaction: Interaction\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: Interaction['dropState'], dragEvent, type) {\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : 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.interaction = dragEvent.interaction\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 ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\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(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\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 }\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\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.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?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\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: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\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 }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\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 *\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 {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\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 (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\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 (utils.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 utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\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) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\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 ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\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(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, 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\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\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 }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\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 = 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: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.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 (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.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 (utils.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: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.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 && utils.is.number(dropOverlap)) {\n const overlapArea = (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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\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: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = 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 (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.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 (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, 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 = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\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 }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.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 (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.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 resizeRects: {\n start: Interact.Rect\n current: Interact.Rect\n inverted: Interact.Rect\n previous: Interact.Rect\n delta: Interact.Rect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.Rect\n rect?: Interact.Rect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\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: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n utils.arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\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 Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = utils.extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (utils.is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\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 return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (utils.is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (utils.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (utils.is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (utils.is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (utils.is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = utils.is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = utils.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, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!utils.is.element(element)) { return false }\n\n return utils.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 : utils.dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\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 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\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.interactable.getRect(interaction.element)\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = utils.extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : utils.extend({}, startRect),\n inverted : utils.extend({}, startRect),\n previous : utils.extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n };\n\n (iEvent as ResizeEvent).rect = interaction.resizeRects.inverted;\n (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = utils.extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = utils.extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n utils.extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n gesture.install(scope)\n resize.install(scope)\n drag.install(scope)\n drop.install(scope)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\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/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg, scope))\n\n actions.eventTypes.push('autoscroll')\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 Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction, scope: Interact.Scope) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = scope.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 options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = this.scope.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 }\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, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }, scope: Interact.Scope) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].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 }\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, scope)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\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(\n scrollOptions.container,\n interaction.interactable,\n element\n )\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\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') });\n * // or\n * interact(element).ignoreFrom('input, textarea, a');\n * ```\n * @deprecated\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 * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\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 * @deprecated\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 * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\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 * Gets 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 Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\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 * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\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?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n InteractableMethods.install(scope)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.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) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\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) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n 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 (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\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)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\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, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.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\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\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 = 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.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\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.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\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: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('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.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n autoStart.install(scope)\n hold.install(scope)\n dragAxis.install(scope)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\nfunction preventDefault (interactable, newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n interactable.options.preventDefault = newValue\n return interactable\n }\n\n if (is.bool(newValue)) {\n interactable.options.preventDefault = newValue ? 'always' : 'never'\n return interactable\n }\n\n return interactable.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable, scope, 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 (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 (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event)\n }\n}\n\nexport function install (scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\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 = function (newValue) {\n return preventDefault(this, newValue)\n }\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.eventMap.dragstart = function preventNativeDrag (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n }\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport const 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\nexport const install = process.env.NODE_ENV === 'production'\n ? () => {}\n // eslint-disable-next-line no-restricted-syntax\n : function install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n logger = logger || console\n if (process.env.NODE_ENV !== 'production') {\n scope.logger = logger\n scope.interactions.signals.on('action-start', ({ interaction }) => {\n touchAction(interaction, scope.logger)\n boxSizing(interaction, scope.logger)\n noListeners(interaction, scope.logger)\n })\n }\n }\n\nexport const touchActionMessage = '[interact.js] Consider adding CSS \"touch-action: none\" to this element\\n'\nexport const boxSizingMessage = '[interact.js] Consider adding CSS \"box-sizing: border-box\" to this resizable element'\nexport const noListenersMessage = '[interact.js] There are no listeners set for this action'\n\nexport function touchAction ({ element }: Interact.Interaction, logger: Logger) {\n if (!parentHasStyle(element, 'touchAction', /pan-|pinch|none/)) {\n logger.warn(\n touchActionMessage,\n element,\n links.touchAction)\n }\n}\n\nexport function boxSizing (interaction: Interact.Interaction, logger: Logger) {\n const { element } = interaction\n\n if (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n ) {\n logger.warn(\n boxSizingMessage,\n element,\n links.boxSizing)\n }\n}\n\nexport function noListeners (interaction: Interact.Interaction, logger: Logger) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n if (!moveListeners.length) {\n logger.warn(\n noListenersMessage,\n actionName,\n interaction.interactable)\n }\n}\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\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)\n }\n\n return false\n}\n\nexport default {\n id: 'dev-tools',\n install,\n}\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: any[]\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets : {},\n states : null,\n result : null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n beforeMove(arg as any)\n start(arg as any, arg.interaction.coords.cur.page, scope.modifiers)\n })\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('before-action-end', beforeEnd)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('before-action-move', setCoords)\n\n interactions.signals.on('after-action-start', restoreCoords as any)\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('stop', stop)\n}\n\nfunction startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nfunction 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\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nfunction setAll (arg: Partial) {\n const {\n interaction,\n prevCoords = interaction.modifiers.result\n ? interaction.modifiers.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(interaction.modifiers.skip)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n result.changed = prevCoords.x !== result.coords.x || prevCoords.y !== result.coords.y\n\n return result\n}\n\nfunction prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction beforeMove ({ interaction, phase, preEnd, skipModifiers }): void | false {\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interactable.getRect(element),\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\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\nfunction restoreCoords ({ interaction: { coords, modifiers } }) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta } = modifiers.result\n\n for (const [coordsSet, delta] of [[coords.start, startDelta], [coords.cur, curDelta]]) {\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\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers.map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction makeModifier (module, name?: string) {\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) => {\n options = options || {}\n\n // add missing defaults to options\n options.enabled = options.enabled !== false\n\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n Object.defineProperty(\n modifier,\n 'name',\n { value: name })\n\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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 } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume';\n(EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\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 scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\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 */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\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 {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (element: Element, options?: any) {\n return scope.interactables.indexOfElement(element, options && options.context) !== -1\n}\n\n/**\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 */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\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 */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\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 */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\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 */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\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 else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\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}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default 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 Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\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, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\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 }\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 }\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, defaults) {\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 restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// });\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\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 }\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 }\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 restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start ({ interaction, interactable, element, rect, state, startOffset }) {\n const { options } = state\n const offsets = []\n const optionsOrigin = utils.rect.rectToXY(utils.rect.resolveRectLike(options.origin))\n const origin = optionsOrigin || utils.getOriginXY(interactable, element, interaction.prepared.name)\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x - origin.x,\n y: interaction.coords.start.page.y - origin.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\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 else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set ({ interaction, coords, state }) {\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n let i\n\n page.x -= origin.x\n page.y -= origin.y\n\n state.realX = page.x\n state.realY = page.y\n\n let len = options.targets ? options.targets.length : 0\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; index < options.targets.length; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: utils.is.number(target.x) ? (target.x + offset.x) : relativeX,\n y: utils.is.number(target.y) ? (target.y + offset.y) : relativeY,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.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 (!closest.target || (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 closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\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}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\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 }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\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 snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\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\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\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\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import Interaction from '@interactjs/core/Interaction'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent {\n interaction: Interaction\n timeStamp: number\n originalEvent: Interact.PointerEventType\n type: T\n pointerId: number\n pointerType: string\n target: Node | Window\n currentTarget: Node | Window\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n propagationStopped = false\n immediatePropagationStopped = false\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.interaction = interaction\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\ntype EventTargetList = Array<{\n eventable: Eventable,\n element: Interact.EventTarget,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.element)\n\n pointerEvent.subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.element\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent.addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({ targets, element, type, eventTarget }: any) => {\n scope.interactables.forEachMatch(element, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n is.element(element) &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n targets.push({\n element,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n pointerEvents.install(scope)\n holdRepeat.install(scope)\n interactableTargets.install(scope)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { newInteraction } from '@interactjs/core/interactions'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowResolve: () => void\n }\n}\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target);\n * const drag = { name: drag, axis: 'x' };\n * const resize = { name: resize, edges: { left: true, bottom: true };\n *\n * interactable.reflow(drag);\n * interactable.reflow(resize);\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = newInteraction({ pointerType: 'reflow' }, scope)\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window): typeof interact {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = init.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","/// \n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (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 = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_26;\n\n});\n"]} \ No newline at end of file +{"version":3,"sources":["../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/extend.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/normalizeListeners.ts","../core/Eventable.ts","../core/defaultOptions.ts","../utils/domObjects.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/hypot.ts","../core/InteractEvent.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/pointerUtils.ts","../utils/events.ts","../core/Interactable.ts","../core/PointerInfo.ts","../utils/Signals.ts","../utils/raf.ts","../utils/index.ts","../utils/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../interact/interact.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/index.ts","../types/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;ACLA,ADMA;ACLA,ADMA;ACLA;;;;;;;;;;ACFA,IAAA,KAAA,GAAA,uBAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,sBAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,eAAA,GAAA,sBAAA,CAAA,mBAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,sBAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,sBAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,qBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGE,GAAA,GAKE,KAAA,CALF,GAAA;IACA,OAAA,GAIE,KAAA,CAJF,OAAA;IACA,GAAA,GAGE,KAAA,CAHF,GAAA;IACA,OAAA,GAEE,KAAA,CAFF,OAAA;IACA,MAAA,GACE,KAAA,CADF,MAAA,CAAA;AAGF,IAAY,UAAZ,CAAA;;;AAAA,CAAA,UAAY,UAAZ,EAAsB,EAAtB,EAAY,UAAU,KAAA,OAAA,CAAA,UAAA,GAAV,UAAU,GAAA,EAAA,CAAtB,CAAA,CAAA;;AASM,SAAU,WAAV,GAAqB;EACzB,OAAO,IAAI,KAAJ,EAAP,CAAA;CACD;;IAUY,KAAA;;;EAiCX,SAAA,KAAA,GAAA;IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;IAAA,eAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;;IA/BA,IAAA,CAAA,OAAA,GAAU,IAAI,OAAJ,EAAV,CAAA;IACA,IAAA,CAAA,OAAA,GAAU,OAAV,CAAA;IACA,IAAA,CAAA,MAAA,GAAS,MAAT,CAAA;IACA,IAAA,CAAA,KAAA,GAAQ,KAAR,CAAA;IACA,IAAA,CAAA,QAAA,GAAqB,KAAK,CAAC,KAAN,CAAY,eAAA,CAAA,SAAA,CAAZ,CAArB,CAAA;IACA,IAAA,CAAA,SAAA,GAAY,UAAA,CAAA,SAAA,CAAZ,CAAA;IACA,IAAA,CAAA,OAAA,GAAmB;MACjB,KAAK,EAAE,EADU;MAEjB,UAAU,EAAE,EAFK;MAGjB,UAAU,EAAE,EAAA;KAHd,CAAA;IAMA,IAAA,CAAA,aAAA,GAAgB,cAAA,CAAA,SAAA,CAAhB,CAAA;IAEA,IAAA,CAAA,aAAA,GAAgB,IAAI,eAAJ,CAAoB,IAApB,CAAhB,CAiBA;;IALA,IAAA,CAAA,SAAA,GAAoD,EAApD,CAAA;IAEA,IAAA,CAAA,QAAA,GAAqB,EAArB,CAAA;IACA,IAAA,CAAA,UAAA,GAAuC,EAAvC,CAAA;;IA0BA,IAAA,CAAA,cAAA,GAAiB,UAAC,KAAD,EAAA;MAAA,OAA8B,KAAI,CAAC,cAAL,CAAoB,KAAK,CAAC,MAA1B,CAA9B,CAAA;KAAjB,CAAA;;IAvBE,IAAM,KAAK,GAAG,IAAd,CAAA;;IAEC,IAAA,CAAmD,YAAnD;;IAAA,UAAA,iBAAA,EAAA;MAAA,SAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,CAAA;;MAAA,SAAA,YAAA,GAAA;QAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;QAAA,OAAA,0BAAA,CAAA,IAAA,EAAA,eAAA,CAAA,YAAA,CAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA;OAAA;;MAAA,YAAA,CAAA,YAAA,EAAA,CAAA;QAAA,GAAA,EAAA,KAAA;QAAA,KAAA,EAAA,SAAA,GAAA,CAGM,OAHN,EAGkB;UACf,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,KAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAU,OAAV,CAAA,CAAA;;UAEA,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,IAA5B,CAAiC,KAAjC,EAAwC;YACtC,OAAO,EAAP,OADsC;YAEtC,YAAY,EAAE,IAAA;WAFhB,CAAA,CAAA;UAKA,OAAO,IAAP,CAAA;SACD;OAZF,EAAA;QAAA,GAAA,EAAA,OAAA;QAAA,KAAA,EAAA,SAAA,KAAA,GAcM;UACH,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;UACA,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,IAA5B,CAAiC,OAAjC,EAA0C;YAAE,YAAY,EAAE,IAAA;WAA1D,CAAA,CAAA;SACD;OAjBF,EAAA;QAAA,GAAA,EAAA,WAAA;QAAA,GAAA,EAAA,SAAA,GAAA,GACc;UAAM,OAAO,KAAK,CAAC,QAAb,CAAA;SAAuB;OAD3C,CAAA,CAAA,CAAA;;MAAA,OAAA,YAAA,CAAA;KAAA,CAA6F,aAAA,CAAA,SAAA,CAA7F,CAAA,CAAA;GAmBF;;;;yBAIK,MAAA,EAAc;MAClB,OAAO,SAAS,CAAC,IAAD,EAAO,MAAP,CAAhB,CAAA;KACD;;;sCAEkB,MAAA,EAAc;MAC/B,OAAO,IAAA,CAAK,UAAL,CAAgB,MAAM,CAAC,EAAvB,CAAA,IAA8B,IAAA,CAAK,QAAL,CAAc,OAAd,CAAsB,MAAtB,CAAA,KAAkC,CAAC,CAAxE,CAAA;KACD;;;8BAEU,MAAA,EAAgB,OAAA,EAAgC;MACzD,IAAI,IAAA,CAAK,iBAAL,CAAuB,MAAvB,CAAJ,EAAoC;QAClC,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,MAAM,CAAC,EAAX,EAAe;QAAE,IAAA,CAAK,UAAL,CAAgB,MAAM,CAAC,EAAvB,CAAA,GAA6B,MAA7B,CAAA;OAAqC;;MAEtD,MAAM,CAAC,OAAP,CAAe,IAAf,EAAqB,OAArB,CAAA,CAAA;;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,CAAA,CAAA;;MAEA,OAAO,IAAP,CAAA;KACD;;;gCAEY,GAAA,EAAe,OAAA,EAAa;;MAEvC,IAAI,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAA,KAA0B,CAAC,CAA/B,EAAkC;QAAE,OAAO,KAAP,CAAA;OAAc;;MAElD,IAAM,MAAM,GAAG,GAAG,CAAC,SAAJ,CAAc,GAAd,CAAf,CAAA;MAEA,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,OAAjB,CAAH,GAA+B,EAAhD,CAAA;MAEA,IAAA,CAAK,SAAL,CAAe,IAAf,CAAoB;QAAE,GAAG,EAAH,GAAF;QAAO,OAAO,EAAP,OAAA;OAA3B,CAAA,CAAA;MACA,MAAM,CAAC,SAAP,CAAiB,IAAjB,CAAsB,GAAtB,CAAA,CATuC;;;MAavC,IAAI,GAAG,KAAK,IAAA,CAAK,QAAjB,EAA2B;QACzB,MAAM,CAAC,GAAP,CAAW,MAAX,EAAmB,QAAnB,EAA6B,IAAA,CAAK,cAAlC,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,cAAlB,EAAkC;QAAE,GAAG,EAAH,GAAF;QAAO,MAAM,EAAN,MAAP;QAAe,KAAK,EAAE,IAAtB;QAA4B,OAAO,EAAP,OAAA;OAA9D,CAAA,CAAA;KACD;;;mCAEe,GAAA,EAAa;MAC3B,IAAM,KAAK,GAAG,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAd,CAAA;MAEA,IAAM,MAAM,GAAG,GAAG,CAAC,SAAJ,CAAc,GAAd,CAAf,CAAA;MACA,IAAM,OAAO,GAAG,IAAA,CAAK,SAAL,CAAe,KAAf,CAAA,CAAsB,OAAtC,CAAA;MAEA,MAAM,CAAC,MAAP,CAAc,MAAd,EAAsB,QAAtB,EAAgC,IAAA,CAAK,cAArC,CAAA,CAAA;MAEA,IAAA,CAAK,SAAL,CAAe,MAAf,CAAsB,KAAtB,EAA6B,CAA7B,CAAA,CAAA;MACA,MAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,KAAxB,EAA+B,CAA/B,CAAA,CAAA;MAEA,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,iBAAlB,EAAqC;QAAE,GAAG,EAAH,GAAF;QAAO,MAAM,EAAN,MAAP;QAAe,KAAK,EAAE,IAAtB;QAA4B,OAAO,EAAP,OAAA;OAAjE,CAAA,CAAA;KACD;;;gCAEY,GAAA,EAAa;MACxB,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAA,CAAK,SAAL,CAAe,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;QAC9C,IAAI,IAAA,CAAK,SAAL,CAAe,CAAf,CAAA,CAAkB,GAAlB,KAA0B,GAA9B,EAAmC;UACjC,OAAO,CAAP,CAAA;SACD;OACF;;MAED,OAAO,CAAC,CAAR,CAAA;KACD;;;kCAEc,GAAA,EAAa;MAC1B,IAAM,QAAQ,GAAG,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAjB,CAAA;MAEA,OAAO,QAAQ,KAAK,CAAC,CAAd,GAAkB,IAAlB,GAAyB,IAAA,CAAK,SAAL,CAAe,QAAf,CAAA,CAAyB,OAAzD,CAAA;KACD;;;0BAEE;MACD,OAAO,CAAE,IAAA,CAAK,MAAL,CAAoB,IAApB,IAA2C,IAA7C,EAAmD,GAAnD,EAAP,CAAA;KACD;;;;;;;;IAGU,eAAA;;;EAMX,SAAA,eAAA,CAAuB,KAAvB,EAAmC;IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;;IAAZ,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;IALvB,IAAA,CAAA,OAAA,GAAU,IAAI,KAAK,CAAC,OAAV,EAAV,CAKmC;;IAFnC,IAAA,CAAA,IAAA,GAA2B,EAA3B,CAAA;GAEuC;;;;yBAElC,MAAA,EAAyB,OAAA,EAAa;MACzC,OAAO,GAAG,KAAK,CAAC,MAAN,CAAa,OAAO,IAAI,EAAxB,EAA4B;QACpC,OAAO,EAAE,IAAA,CAAK,KAAL,CAAW,OAAA;OADZ,CAAV,CAAA;MAGA,IAAM,YAAY,GAAG,IAAI,IAAA,CAAK,KAAL,CAAW,YAAf,CAA4B,MAA5B,EAAoC,OAApC,EAA6C,IAAA,CAAK,KAAL,CAAW,QAAxD,CAArB,CAAA;MAEA,IAAA,CAAK,KAAL,CAAW,WAAX,CAAuB,YAAY,CAAC,IAApC,CAAA,CAAA;MACA,IAAA,CAAK,IAAL,CAAU,IAAV,CAAe,YAAf,CAAA,CAAA;MAEA,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,KAAlB,EAAyB;QACvB,MAAM,EAAN,MADuB;QAEvB,OAAO,EAAP,OAFuB;QAGvB,YAAY,EAAZ,YAHuB;QAIvB,GAAG,EAAE,IAAA,CAAK,KAAL,CAAW,IAAA;OAJlB,CAAA,CAAA;MAOA,OAAO,YAAP,CAAA;KACD;;;mCAEe,MAAA,EAAyB,OAAA,EAA2B;MAClE,OAAO,GAAG,OAAO,IAAI,IAAA,CAAK,KAAL,CAAW,QAAhC,CAAA;MAEA,IAAM,IAAI,GAAG,IAAA,CAAK,IAAlB,CAAA;;MAEA,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;QACpC,IAAM,YAAY,GAAG,IAAI,CAAC,CAAD,CAAzB,CAAA;;QAEA,IAAI,YAAY,CAAC,MAAb,KAAwB,MAAxB,IAAkC,YAAY,CAAC,QAAb,KAA0B,OAAhE,EAAyE;UACvE,OAAO,CAAP,CAAA;SACD;OACF;;MAED,OAAO,CAAC,CAAR,CAAA;KACD;;;wBAEI,OAAA,EAA0B,OAAA,EAAS,kBAAA,EAA4B;MAClE,IAAM,GAAG,GAAG,IAAA,CAAK,IAAL,CAAU,IAAA,CAAK,cAAL,CAAoB,OAApB,EAA6B,OAAO,IAAI,OAAO,CAAC,OAAhD,CAAV,CAAZ,CAAA;MAEA,OAAO,GAAG,KAAK,KAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAA,IAA4B,kBAA5B,IAAkD,GAAG,CAAC,SAAJ,CAAc,OAAd,CAAvD,CAAH,GAAoF,GAApF,GAA0F,IAAjG,CAAA;KACD;;;iCAEa,OAAA,EAA6B,QAAA,EAAoC;MAC7E,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA2B,IAAA,CAAK,IAAhC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAsC;QAAA,IAAA,IAAA,CAAA;;QAAA,IAAA,GAAX,IAAA,CAAK,IAAM,CAAA,EAAA,CAAA,CAAA;QAAA,IAA3B,YAA2B,GAAA,IAAA,CAAA;QACpC,IAAI,GAAG,GAAA,KAAA,CAAP,CAAA;;QAEA,IAAI,CAAC,KAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,YAAY,CAAC,MAA7B,CAAA;UAEA,KAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAA,IAA6B,KAAK,CAAC,GAAN,CAAU,eAAV,CAA0B,OAA1B,EAAmC,YAAY,CAAC,MAAhD,CAF7B;QAID,OAAO,KAAK,YAAY,CAAC,MAJzB;QAMD,YAAY,CAAC,SAAb,CAAuB,OAAvB,CANH,EAMqC;UACnC,GAAG,GAAG,QAAQ,CAAC,YAAD,CAAd,CAAA;SACD;;QAED,IAAI,GAAG,KAAK,SAAZ,EAAuB;UACrB,OAAO,GAAP,CAAA;SACD;OACF;KACF;;;;;;;;AAGG,SAAU,SAAV,CAAqB,KAArB,EAAmC,MAAnC,EAAiD;EACrD,GAAG,CAAC,IAAJ,CAAS,MAAT,CAAA,CAAA;;EACA,WAAA,CAAA,SAAA,CAAA,CAAW,IAAX,CAAgB,MAAhB,CAAA,CAAA;;EACA,OAAO,CAAC,IAAR,CAAa,MAAb,CAAA,CAAA;EACA,GAAG,CAAC,IAAJ,CAAS,MAAT,CAAA,CAAA;EACA,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAA,CAAA;;EAEA,aAAA,CAAA,SAAA,CAAA,CAAa,OAAb,CAAqB,KAArB,CAAA,CAAA;;EACA,KAAK,CAAC,QAAN,GAAiB,MAAM,CAAC,QAAxB,CAAA;EACA,KAAK,CAAC,MAAN,GAAe,MAAf,CAAA;EAEA,OAAO,KAAP,CAAA;CACD;;;;;;;;;;;;AC9PD,IAAA,QAAA,GAAA,sBAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,sBAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,sBAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,sBAAA,CAAA,sBAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,sBAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,sBAAA,CAAA,oBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,WAAW,GAAG,CAClB,aADkB,EACH,aADG,EACY,WADZ,EAElB,eAFkB,EAED,eAFC,EAEgB,YAFhB,CAApB,CAAA;;AAKA,SAAS,OAAT,CAAkB,KAAlB,EAA8B;EAC5B,IAAM,OAAO,GAAG,IAAI,QAAA,CAAA,SAAA,CAAJ,EAAhB,CAAA;EAEA,IAAM,SAAS,GAAG,EAAlB,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,WAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;IAA7B,IAAM,MAAM,GAAI,WAAJ,CAAA,EAAA,CAAZ,CAAA;IACH,SAAS,CAAC,MAAD,CAAT,GAAoB,gBAAgB,CAAC,MAAD,EAAS,KAAT,CAApC,CAAA;GACD;;EAED,IAAM,WAAW,GAAG,QAAA,CAAA,SAAA,CAAA,CAAQ,WAA5B,CAAA;EACA,IAAM,QAAQ,GAAG,EAAjB,CAAA;;EAEA,IAAI,WAAA,CAAA,SAAA,CAAA,CAAW,YAAf,EAA6B;IAC3B,QAAQ,CAAC,WAAW,CAAC,IAAb,CAAR,GAA+B,SAAS,CAAC,WAAzC,CAAA;IACA,QAAQ,CAAC,WAAW,CAAC,IAAb,CAAR,GAA+B,SAAS,CAAC,WAAzC,CAAA;IACA,QAAQ,CAAC,WAAW,CAAC,EAAb,CAAR,GAA+B,SAAS,CAAC,SAAzC,CAAA;IACA,QAAQ,CAAC,WAAW,CAAC,MAAb,CAAR,GAA+B,SAAS,CAAC,SAAzC,CAAA;GAJF,MAMK;IACH,QAAQ,CAAC,SAAT,GAAuB,SAAS,CAAC,WAAjC,CAAA;IACA,QAAQ,CAAC,SAAT,GAAuB,SAAS,CAAC,WAAjC,CAAA;IACA,QAAQ,CAAC,OAAT,GAAuB,SAAS,CAAC,SAAjC,CAAA;IAEA,QAAQ,CAAC,UAAT,GAAuB,SAAS,CAAC,WAAjC,CAAA;IACA,QAAQ,CAAC,SAAT,GAAuB,SAAS,CAAC,WAAjC,CAAA;IACA,QAAQ,CAAC,QAAT,GAAuB,SAAS,CAAC,SAAjC,CAAA;IACA,QAAQ,CAAC,WAAT,GAAuB,SAAS,CAAC,SAAjC,CAAA;GACD;;EAED,QAAQ,CAAC,IAAT,GAAgB,UAAC,KAAD,EAAU;IACxB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,IAAA,CAAA;MACjD,WAAW,CAAC,YAAZ,CAAyB,KAAzB,CAAA,CAAA;KACD;GAHH,CAAA;;EAMA,KAAK,CAAC,OAAN,CAAc,EAAd,CAAiB,cAAjB,EAAiC,WAAjC,CAAA,CAAA;EACA,KAAK,CAAC,OAAN,CAAc,EAAd,CAAiB,iBAAjB,EAAoC,WAApC,CAAA,CApC4B;;EAuC5B,KAAK,CAAC,aAAN,GAAsB,CAAtB,CAAA;;EAEA,KAAK,CAAC,WAAN;;EAAA,UAAA,gBAAA,EAAA;IAAA,SAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,CAAA;;IAAA,SAAA,WAAA,GAAA;MAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;MAAA,OAAA,0BAAA,CAAA,IAAA,EAAA,eAAA,CAAA,WAAA,CAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA;KAAA;;IAAA,YAAA,CAAA,WAAA,EAAA,CAAA;MAAA,GAAA,EAAA,MAAA;MAAA,KAAA,EAAA,SAAA,IAAA,GASM;QAAM,OAAO,KAAK,CAAC,GAAN,EAAP,CAAA;OAAoB;KAThC,EAAA;MAAA,GAAA,EAAA,sBAAA;MAAA,GAAA,EAAA,SAAA,GAAA,GAC0B;QACtB,OAAO,KAAK,CAAC,YAAN,CAAmB,oBAA1B,CAAA;OAFJ;MAAA,GAAA,EAAA,SAAA,GAAA,CAK4B,KAL5B,EAKiC;QAC7B,KAAK,CAAC,YAAN,CAAmB,oBAAnB,GAA0C,KAA1C,CAAA;OACD;KAPH,CAAA,CAAA,CAAA;;IAAA,OAAA,WAAA,CAAA;GAAA,CAA8C,YAAA,CAAA,SAAA,CAA9C,CAAA,CAAA;;EAWA,KAAK,CAAC,YAAN,GAAqB;IACnB,OAAO,EAAP,OADmB;;IAGnB,IAAI,EAAE,EAHa;IAAA,KAAA,EAAA,SAAA,IAAA,CAId,OAJc,EAIsC;MACvD,OAAO,CAAC,OAAR,GAAkB,OAAlB,CAAA;MAEA,OAAO,IAAI,KAAK,CAAC,WAAV,CAAsB,OAAtB,CAAP,CAAA;KAPiB;IASnB,SAAS,EAAT,SATmB;IAUnB,QAAQ,EAAR,QAVmB;IAWnB,oBAAoB,EAAE,CAAA;GAXxB,CAAA;CAaD;;AAED,SAAS,gBAAT,CAA2B,MAA3B,EAAmC,KAAnC,EAAwC;EACtC,OAAO,UAAU,KAAV,EAAe;IACpB,IAAM,YAAY,GAAG,KAAK,CAAC,YAAN,CAAmB,IAAxC,CAAA;;IAEA,IAAM,WAAW,GAAG,aAAA,CAAA,SAAA,CAAA,CAAa,cAAb,CAA4B,KAA5B,CAApB,CAAA;;IAHoB,IAAA,qBAAA,GAIkB,aAAA,CAAA,SAAA,CAAA,CAAa,eAAb,CAA6B,KAA7B,CAJlB;QAAA,sBAAA,GAAA,cAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;QAIb,WAJa,GAAA,sBAAA,CAAA,CAAA,CAAA;QAIA,cAJA,GAAA,sBAAA,CAAA,CAAA,CAAA,CAAA;;IAKpB,IAAM,OAAO,GAAG,EAAhB,CALoB;;IAOpB,IAAI,QAAA,CAAA,SAAA,CAAA,CAAQ,aAAR,IAAyB,OAAA,CAAQ,IAAR,CAAa,KAAK,CAAC,IAAnB,CAA7B,EAAuD;MACrD,KAAK,CAAC,aAAN,GAAsB,KAAK,CAAC,GAAN,EAAtB,CAAA;;MAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2B,KAAK,CAAC,cAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAiD;QAAA,IAAA,KAAA,CAAA;;QAAA,KAAA,GAAtB,KAAK,CAAC,cAAgB,CAAA,GAAA,CAAA,CAAA;QAAA,IAAtC,YAAsC,GAAA,KAAA,CAAA;QAC/C,IAAM,OAAO,GAAG,YAAhB,CAAA;;QACA,IAAM,SAAS,GAAG,aAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,OAA1B,CAAlB,CAAA;;QACA,IAAM,aAAa,GAAkB;UACnC,OAAO,EAAP,OADmC;UAEnC,SAAS,EAAT,SAFmC;UAGnC,WAAW,EAAX,WAHmC;UAInC,SAAS,EAAE,KAAK,CAAC,IAJkB;UAKnC,WAAW,EAAX,WALmC;UAMnC,cAAc,EAAd,cANmC;UAOnC,KAAK,EAAL,KAAA;SAPF,CAAA;QASA,IAAM,WAAW,GAAG,cAAc,CAAC,aAAD,CAAlC,CAAA;QAEA,OAAO,CAAC,IAAR,CAAa,CACX,aAAa,CAAC,OADH,EAEX,aAAa,CAAC,WAFH,EAGX,aAAa,CAAC,cAHH,EAIX,WAJW,CAAb,CAAA,CAAA;OAMD;KAvBH,MAyBK;MACH,IAAI,cAAc,GAAG,KAArB,CAAA;;MAEA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,oBAAT,IAAiC,OAAA,CAAQ,IAAR,CAAa,KAAK,CAAC,IAAnB,CAArC,EAA+D;;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,YAAY,CAAC,MAAjB,IAA2B,CAAC,cAA5C,EAA4D,CAAC,EAA7D,EAAiE;UAC/D,cAAc,GAAG,YAAY,CAAC,CAAD,CAAZ,CAAgB,WAAhB,KAAgC,OAAhC,IAA2C,YAAY,CAAC,CAAD,CAAZ,CAAgB,aAA5E,CAAA;SAH2D;;;;QAQ7D,cAAc,GAAG,cAAc,IAC5B,KAAK,CAAC,GAAN,EAAA,GAAc,KAAK,CAAC,aAApB,GAAoC,GADtB;QAGf,KAAK,CAAC,SAAN,KAAoB,CAHtB,CAAA;OAID;;MAED,IAAI,CAAC,cAAL,EAAqB;QACnB,IAAM,cAAa,GAAG;UACpB,OAAO,EAAE,KADW;UAEpB,SAAS,EAAE,aAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,KAA1B,CAFS;UAGpB,WAAW,EAAX,WAHoB;UAIpB,SAAS,EAAE,KAAK,CAAC,IAJG;UAKpB,cAAc,EAAd,cALoB;UAMpB,WAAW,EAAX,WANoB;UAOpB,KAAK,EAAL,KAAA;SAPF,CAAA;;QAUA,IAAM,YAAW,GAAG,cAAc,CAAC,cAAD,CAAlC,CAAA;;QAEA,OAAO,CAAC,IAAR,CAAa,CACX,cAAa,CAAC,OADH,EAEX,cAAa,CAAC,WAFH,EAGX,cAAa,CAAC,cAHH,EAIX,YAJW,CAAb,CAAA,CAAA;OAMD;KApEiB;;;IAwEpB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkE,OAAlE,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2E;MAAA,IAAA,WAAA,GAAA,cAAA,CAAT,OAAS,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;UAA/D,QAA+D,GAAA,WAAA,CAAA,CAAA,CAAA;UAAtD,YAAsD,GAAA,WAAA,CAAA,CAAA,CAAA;UAAzC,eAAyC,GAAA,WAAA,CAAA,CAAA,CAAA;UAAzB,aAAyB,GAAA,WAAA,CAAA,CAAA,CAAA,CAAA;;MACzE,aAAW,CAAC,MAAD,CAAX,CAAoB,QAApB,EAA6B,KAA7B,EAAoC,YAApC,EAAiD,eAAjD,CAAA,CAAA;KACD;GA1EH,CAAA;CA4ED;;AAED,SAAS,cAAT,CAAyB,aAAzB,EAAqD;EAAA,IAC3C,WAD2C,GACpB,aADoB,CAC3C,WAD2C;MAC9B,KAD8B,GACpB,aADoB,CAC9B,KAD8B,CAAA;;EAGnD,IAAM,gBAAgB,GAAG,kBAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,aAAd,CAAzB,CAAA;;EACA,IAAM,SAAS,GAAG;IAAE,WAAW,EAAE,gBAAf;IAAiC,aAAa,EAAb,aAAA;GAAnD,CAAA;EAEA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,MAAhC,EAAwC,SAAxC,CAAA,CAAA;EAEA,OAAO,SAAS,CAAC,WAAV,IAAyB,cAAc,CAAC;IAAE,WAAW,EAAX,WAAA;GAAH,EAAkB,KAAlB,CAA9C,CAAA;CACD;;AAEK,SAAU,cAAV,CAA0B,OAA1B,EAAmC,KAAnC,EAAwC;EAC5C,IAAM,WAAW,GAAG,KAAK,CAAC,YAAN,CAAA,KAAA,CAAA,CAAuB,OAAvB,CAApB,CAAA;EAEA,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,IAAxB,CAA6B,WAA7B,CAAA,CAAA;EACA,OAAO,WAAP,CAAA;CACD;;AAED,SAAS,WAAT,CAAA,KAAA,EAA+C,UAA/C,EAAyD;EAAA,IAAjC,GAAiC,GAAA,KAAA,CAAjC,GAAiC;MAA5B,KAA4B,GAAA,KAAA,CAA5B,KAA4B;MAArB,OAAqB,GAAA,KAAA,CAArB,OAAqB,CAAA;EAAA,IAC/C,QAD+C,GAClC,KAAK,CAAC,YAD4B,CAC/C,QAD+C,CAAA;EAEvD,IAAM,WAAW,GAAG,UAAU,CAAC,OAAX,CAAmB,KAAnB,CAAA,KAA8B,CAA9B,GAChB,OAAA,CAAA,SAAA,CAAA,CAAO,GADS,GACH,OAAA,CAAA,SAAA,CAAA,CAAO,MADxB,CAAA;;EAGA,IAAI,KAAK,CAAC,OAAN,CAAc,KAAd,IAAuB,CAAC,OAAO,CAAC,MAApC,EAA4C;IAC1C,OAAO,CAAC,MAAR,GAAiB;MAAE,OAAO,EAAE,KAAA;KAA5B,CAAA;GANqD;;;EAUvD,KAAK,IAAM,SAAX,IAAwB,OAAA,CAAA,SAAA,CAAA,CAAO,eAA/B,EAAgD;IAC9C,WAAW,CAAC,GAAD,EAAM,SAAN,EAAiB,OAAA,CAAA,SAAA,CAAA,CAAO,gBAAxB,CAAX,CAAA;IACA,WAAW,CAAC,GAAD,EAAM,SAAN,EAAiB,OAAA,CAAA,SAAA,CAAA,CAAO,kBAAxB,EAA4C,IAA5C,CAAX,CAAA;GACD;;EAED,IAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,MAAxC,CAAA;;EAEA,KAAK,IAAM,UAAX,IAAwB,QAAxB,EAAkC;IAChC,WAAW,CAAC,GAAD,EAAM,UAAN,EAAiB,QAAQ,CAAC,UAAD,CAAzB,EAAsC,YAAtC,CAAX,CAAA;GACD;CACF;;eAEc;EACb,EAAE,EAAE,mBADS;EAEb,OAAO,EAAP,OAFa;EAGb,WAAW,EAAX,WAHa;EAIb,gBAAgB,EAAhB,gBAJa;EAKb,cAAc,EAAd,cALa;EAMb,WAAW,EAAX,WAAA;;;;;;;;;;;;;;;;;;;AC7NF,IAAA,KAAA,GAAA,uBAAA,CAAA,UAAA,CAAA,CAAA;;AAEA,IAAA,cAAA,GAAA,uBAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,cAAA,CAAA;;;;;;;;;;;;IAca;;;;EA6EX,SAAA,WAAA,CAAA,IAAA,EAAuF;IAAA,IAAxE,WAAwE,GAAA,IAAA,CAAxE,WAAwE;QAA3D,OAA2D,GAAA,IAAA,CAA3D,OAA2D,CAAA;;IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;;IA3EvF,IAAA,CAAA,YAAA,GAA6B,IAA7B,CA2EuF;;IAxEvF,IAAA,CAAA,OAAA,GAAmB,IAAnB,CAwEuF;;IA/DvF,IAAA,CAAA,QAAA,GAA2B;MACzB,IAAI,EAAG,IADkB;MAEzB,IAAI,EAAG,IAFkB;MAGzB,KAAK,EAAE,IAAA;KAHT,CA+DuF;;IAtDvF,IAAA,CAAA,QAAA,GAA0B,EAA1B,CAsDuF;;IAnDvF,IAAA,CAAA,SAAA,GAAuC,IAAvC,CAAA;IAEA,IAAA,CAAA,WAAA,GAAoC,EAApC,CAAA;IAEA,IAAA,CAAA,cAAA,GAII;MACF,OAAO,EAAE,IADP;MAEF,KAAK,EAAE,IAFL;MAGF,WAAW,EAAE,IAAA;KAPf,CA+CuF;;IApCvF,IAAA,CAAA,SAAA,GAA8B,IAA9B,CAAA;IAEA,IAAA,CAAA,aAAA,GAAgB,KAAhB,CAAA;IACA,IAAA,CAAA,eAAA,GAAkB,KAAlB,CAAA;IACA,IAAA,CAAA,YAAA,GAAe,KAAf,CAAA;IACA,IAAA,CAAA,OAAA,GAAU,KAAV,CAAA;IAEA,IAAA,CAAA,UAAA,GAAa,IAAb,CAAA;;;;;IASA,IAAA,CAAA,MAAA,GAAS,KAAK,CAAC,QAAN,CACP,UAA6B,SAA7B,EAA2C;MACzC,IAAA,CAAK,IAAL,CAAU,SAAV,CAAA,CAAA;KAFK,EAIP,wEAJO,CAAT,CAAA;IAMA,IAAA,CAAA,MAAA,GAAS;;MAEP,KAAK,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAFA;;MAIP,IAAI,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAJC;;MAMP,GAAG,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EANE;;MAQP,KAAK,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EARA;;MAUP,QAAQ,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAAA;KAVZ,CAAA;IAeE,IAAA,CAAK,QAAL,GAAgB,OAAhB,CAAA;IACA,IAAA,CAAK,WAAL,GAAmB,WAAnB,CAAA;;IAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,KAAnB,EAA0B;MAAE,WAAW,EAAE,IAAA;KAAzC,CAAA,CAAA;GACD;;;;gCAEY,SAA+B,OAAkC,aAAwB;MACpG,IAAM,YAAY,GAAG,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,IAAhD,CAArB,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QACzB,OAAO,EAAP,OADyB;QAEzB,KAAK,EAAL,KAFyB;QAGzB,WAAW,EAAX,WAHyB;QAIzB,YAAY,EAAZ,YAJyB;QAKzB,WAAW,EAAE,IAAA;OALf,CAAA,CAAA;KAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiCM,QAAqB,cAA4B,SAAgB;MACtE,IAAI,IAAA,CAAK,WAAL,EAAA,IACA,CAAC,IAAA,CAAK,aADN,IAEA,IAAA,CAAK,QAAL,CAAc,MAAd,IAAwB,MAAM,CAAC,IAAP,KAAgB,MAAA,CAAA,UAAA,CAAW,OAA3B,GAAqC,CAArC,GAAyC,CAAjE,CAFA,IAGA,CAAC,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAAA,CAAkC,OAHvC,EAGgD;QAC9C,OAAO,KAAP,CAAA;OACD;;MAED,KAAK,CAAC,UAAN,CAAiB,IAAA,CAAK,QAAtB,EAAgC,MAAhC,CAAA,CAAA;MAEA,IAAA,CAAK,YAAL,GAAoB,YAApB,CAAA;MACA,IAAA,CAAK,OAAL,GAAoB,OAApB,CAAA;MACA,IAAA,CAAK,IAAL,GAAoB,YAAY,CAAC,OAAb,CAAqB,OAArB,CAApB,CAAA;MACA,IAAA,CAAK,KAAL,GAAoB,IAAA,CAAK,QAAL,CAAc,KAAlC,CAAA;MACA,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,QAAL,CAAc;QAChC,WAAW,EAAE,IADmB;QAEhC,KAAK,EAAE,IAAA,CAAK,SAFoB;QAGhC,KAAK,EAAE,cAAA,CAAA,UAAA,CAAW,KAAA;OAHA,CAApB,CAAA;MAMA,OAAO,IAAA,CAAK,YAAZ,CAAA;KACD;;;gCAEY,SAA+B,OAAkC,aAAwB;MACpG,IAAI,CAAC,IAAA,CAAK,UAAV,EAAsB;QACpB,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,KAAhD,CAAA,CAAA;QACA,KAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,IAAA,CAAK,MAAL,CAAY,GAApC,EAAyC,IAAA,CAAK,QAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;UAAA,OAAO,CAAC,CAAC,OAAT,CAAA;SAAlB,CAAzC,EAA8E,IAAA,CAAK,IAAL,EAA9E,CAAA,CAAA;OACD;;MAED,IAAM,aAAa,GAAI,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,IAAhB,CAAqB,CAArB,KAA2B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,CAAjD,IACA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,IAAhB,CAAqB,CAArB,KAA2B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,CADjD,IAEA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,KAA6B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAwB,CAFrD,IAGA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,KAA6B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAwB,CAH5E,CAAA;MAKA,IAAI,EAAJ,CAAA;MACA,IAAI,EAAJ,CAZoG;;MAepG,IAAI,IAAA,CAAK,aAAL,IAAsB,CAAC,IAAA,CAAK,eAAhC,EAAiD;QAC/C,EAAE,GAAG,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,GAA2B,IAAA,CAAK,MAAL,CAAY,KAAZ,CAAkB,MAAlB,CAAyB,CAAzD,CAAA;QACA,EAAE,GAAG,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,GAA2B,IAAA,CAAK,MAAL,CAAY,KAAZ,CAAkB,MAAlB,CAAyB,CAAzD,CAAA;QAEA,IAAA,CAAK,eAAL,GAAuB,KAAK,CAAC,KAAN,CAAY,EAAZ,EAAgB,EAAhB,CAAA,GAAsB,IAAA,CAAK,oBAAlD,CAAA;OACD;;MAED,IAAM,SAAS,GAAG;QAChB,OAAO,EAAP,OADgB;QAEhB,YAAY,EAAE,IAAA,CAAK,eAAL,CAAqB,OAArB,CAFE;QAGhB,KAAK,EAAL,KAHgB;QAIhB,WAAW,EAAX,WAJgB;QAKhB,EAAE,EAAF,EALgB;QAMhB,EAAE,EAAF,EANgB;QAOhB,SAAS,EAAE,aAPK;QAQhB,WAAW,EAAE,IAAA;OARf,CAAA;;MAWA,IAAI,CAAC,aAAL,EAAoB;;QAElB,KAAK,CAAC,OAAN,CAAc,cAAd,CAA6B,IAAA,CAAK,MAAL,CAAY,KAAzC,EAAgD,IAAA,CAAK,MAAL,CAAY,IAA5D,EAAkE,IAAA,CAAK,MAAL,CAAY,GAA9E,CAAA,CAAA;QACA,KAAK,CAAC,OAAN,CAAc,gBAAd,CAA+B,IAAA,CAAK,MAAL,CAAY,QAA3C,EAAqD,IAAA,CAAK,MAAL,CAAY,KAAjE,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B,SAA3B,CAAA,CAAA;;MAEA,IAAI,CAAC,aAAL,EAAoB;;QAElB,IAAI,IAAA,CAAK,WAAL,EAAJ,EAAwB;UACtB,IAAA,CAAK,IAAL,CAAU,SAAV,CAAA,CAAA;SACD;;QAED,IAAI,IAAA,CAAK,eAAT,EAA0B;UACxB,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,IAArC,EAA2C,IAAA,CAAK,MAAL,CAAY,GAAvD,CAAA,CAAA;SACD;OACF;KACF;;;;;;;;;;;;;;;;;;;;;;yBAoBK,WAAU;MACd,SAAS,GAAG,KAAK,CAAC,MAAN,CAAa;QACvB,OAAO,EAAE,IAAA,CAAK,cAAL,CAAoB,OADN;QAEvB,KAAK,EAAE,IAAA,CAAK,cAAL,CAAoB,KAFJ;QAGvB,WAAW,EAAE,IAAA,CAAK,cAAL,CAAoB,WAHV;QAIvB,WAAW,EAAE,IAJU;QAKvB,QAAQ,EAAE,KAAA;OALA,EAMT,SAAS,IAAI,EANJ,CAAZ,CAAA;MAQA,SAAS,CAAC,KAAV,GAAkB,cAAA,CAAA,UAAA,CAAW,IAA7B,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,SAAd,CAAA,CAAA;;;;;8BAIS,SAA+B,OAAkC,aAA0B,gBAA2B;MAC/H,IAAI,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAnB,CAAA;;MAEA,IAAI,YAAY,KAAK,CAAC,CAAtB,EAAyB;QACvB,YAAY,GAAG,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,KAAhD,CAAf,CAAA;OACD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,UAAA,CAAW,IAAX,CAAgB,KAAK,CAAC,IAAtB,CAAA,GAA8B,QAA9B,GAAyC,IAA5D,EAAkE;QAChE,OAAO,EAAP,OADgE;QAEhE,YAAY,EAAZ,YAFgE;QAGhE,KAAK,EAAL,KAHgE;QAIhE,WAAW,EAAX,WAJgE;QAKhE,cAAc,EAAd,cALgE;QAMhE,WAAW,EAAE,IAAA;OANf,CAAA,CAAA;;MASA,IAAI,CAAC,IAAA,CAAK,UAAV,EAAsB;QACpB,IAAA,CAAK,GAAL,CAAS,KAAT,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,aAAL,GAAqB,KAArB,CAAA;MACA,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,CAAA,CAAA;KACD;;;iCAEa,OAAK;MACjB,IAAA,CAAK,GAAL,CAAS,KAAT,CAAA,CAAA;;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QAAE,KAAK,EAAL,KAAF;QAAS,WAAW,EAAE,IAAA;OAAjD,CAAA,CAAA;KACD;;;;;;;;;;;;;;;;;;;;wBAkBI,OAAiC;MACpC,IAAA,CAAK,OAAL,GAAe,IAAf,CAAA;MACA,KAAK,GAAG,KAAK,IAAI,IAAA,CAAK,cAAL,CAAoB,KAArC,CAAA;MACA,IAAI,cAAJ,CAAA;;MAEA,IAAI,IAAA,CAAK,WAAL,EAAJ,EAAwB;QACtB,cAAc,GAAG,IAAA,CAAK,QAAL,CAAc;UAC7B,KAAK,EAAL,KAD6B;UAE7B,WAAW,EAAE,IAFgB;UAG7B,KAAK,EAAE,cAAA,CAAA,UAAA,CAAW,GAAA;SAHH,CAAjB,CAAA;OAKD;;MAED,IAAA,CAAK,OAAL,GAAe,KAAf,CAAA;;MAEA,IAAI,cAAc,KAAK,IAAvB,EAA6B;QAC3B,IAAA,CAAK,IAAL,EAAA,CAAA;OACD;KACF;;;oCAEY;MACX,OAAO,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,QAAL,CAAc,IAAlC,GAAyC,IAAhD,CAAA;KACD;;;kCAEU;MACT,OAAO,IAAA,CAAK,YAAZ,CAAA;KACD;;;;;2BAGG;MACF,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QAAE,WAAW,EAAE,IAAA;OAA1C,CAAA,CAAA;;MAEA,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,OAAL,GAAe,IAAnC,CAAA;MAEA,IAAA,CAAK,YAAL,GAAoB,KAApB,CAAA;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,GAAqB,IAAA,CAAK,SAAL,GAAiB,IAAtC,CAAA;KACD;;;oCAEgB,SAAO;MACtB,IAAM,SAAS,GAAG,KAAK,CAAC,OAAN,CAAc,YAAd,CAA2B,OAA3B,CAAlB,CADsB;;MAItB,OAAQ,IAAA,CAAK,WAAL,KAAqB,OAArB,IAAgC,IAAA,CAAK,WAAL,KAAqB,KAAtD,GACH,IAAA,CAAK,QAAL,CAAc,MAAd,GAAuB,CADpB,GAEH,KAAK,CAAC,GAAN,CAAU,SAAV,CAAoB,IAAA,CAAK,QAAzB,EAAmC,UAAC,UAAD,EAAA;QAAA,OAAgB,UAAU,CAAC,EAAX,KAAkB,SAAlC,CAAA;OAAnC,CAFJ,CAAA;KAGD;;;mCAEe,SAAO;MACrB,OAAO,IAAA,CAAK,QAAL,CAAc,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAd,CAAP,CAAA;KACD;;;kCAEc,SAA+B,OAAkC,aAA0B,MAAc;MACtH,IAAM,EAAE,GAAG,KAAK,CAAC,OAAN,CAAc,YAAd,CAA2B,OAA3B,CAAX,CAAA;MACA,IAAI,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAnB,CAAA;MACA,IAAI,WAAW,GAAG,IAAA,CAAK,QAAL,CAAc,YAAd,CAAlB,CAAA;MAEA,IAAI,GAAG,IAAI,KAAK,KAAT,GACH,KADG,GAEH,IAAI,IAAI,gBAAA,CAAiB,IAAjB,CAAsB,KAAK,CAAC,IAA5B,CAFZ,CAAA;;MAIA,IAAI,CAAC,WAAL,EAAkB;QAChB,WAAW,GAAG,IAAI,YAAA,CAAA,SAAA,CAAJ,CACZ,EADY,EAEZ,OAFY,EAGZ,KAHY,EAIZ,IAJY,EAKZ,IALY,CAAd,CAAA;QAQA,YAAY,GAAG,IAAA,CAAK,QAAL,CAAc,MAA7B,CAAA;QACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,WAAnB,CAAA,CAAA;OAVF,MAYK;QACH,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;OACD;;MAED,IAAI,IAAJ,EAAU;QACR,IAAA,CAAK,aAAL,GAAqB,IAArB,CAAA;;QAEA,IAAI,CAAC,IAAA,CAAK,WAAL,EAAL,EAAyB;UACvB,KAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,IAAA,CAAK,MAAL,CAAY,KAApC,EAA2C,IAAA,CAAK,QAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;YAAA,OAAO,CAAC,CAAC,OAAT,CAAA;WAAlB,CAA3C,EAAgF,IAAA,CAAK,IAAL,EAAhF,CAAA,CAAA;UAEA,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,GAArC,EAA0C,IAAA,CAAK,MAAL,CAAY,KAAtD,CAAA,CAAA;UACA,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,IAArC,EAA2C,IAAA,CAAK,MAAL,CAAY,KAAvD,CAAA,CAAA;UACA,KAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,IAAA,CAAK,WAAjC,EAA8C,OAA9C,CAAA,CAAA;UAEA,IAAA,CAAK,SAAL,GAAiB,KAAjB,CAAA;UACA,WAAW,CAAC,QAAZ,GAAuB,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,SAAvC,CAAA;UACA,WAAW,CAAC,UAAZ,GAAyB,WAAzB,CAAA;UAEA,IAAA,CAAK,eAAL,GAAuB,KAAvB,CAAA;SACD;OACF;;MAED,IAAA,CAAK,oBAAL,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,CAAA,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,gBAAnB,EAAqC;QACnC,OAAO,EAAP,OADmC;QAEnC,KAAK,EAAL,KAFmC;QAGnC,WAAW,EAAX,WAHmC;QAInC,IAAI,EAAJ,IAJmC;QAKnC,WAAW,EAAX,WALmC;QAMnC,YAAY,EAAZ,YANmC;QAOnC,WAAW,EAAE,IAAA;OAPf,CAAA,CAAA;;MAUA,OAAO,YAAP,CAAA;KACD;;;kCAEc,SAAS,OAAK;MAC3B,IAAM,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAArB,CAAA;;MAEA,IAAI,YAAY,KAAK,CAAC,CAAtB,EAAyB;QAAE,OAAA;OAAQ;;MAEnC,IAAM,WAAW,GAAG,IAAA,CAAK,QAAL,CAAc,YAAd,CAApB,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,gBAAnB,EAAqC;QACnC,OAAO,EAAP,OADmC;QAEnC,KAAK,EAAL,KAFmC;QAGnC,YAAY,EAAZ,YAHmC;QAInC,WAAW,EAAX,WAJmC;QAKnC,WAAW,EAAE,IAAA;OALf,CAAA,CAAA;;MAQA,IAAA,CAAK,QAAL,CAAc,MAAd,CAAqB,YAArB,EAAmC,CAAnC,CAAA,CAAA;KACD;;;yCAEqB,SAAS,OAAO,aAAW;MAC/C,IAAA,CAAK,cAAL,CAAoB,OAApB,GAA8B,OAA9B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,KAApB,GAA4B,KAA5B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,WAApB,GAAkC,WAAlC,CAAA;KACD;;;yCAEqB,OAAkC,OAAmB,QAAiB,MAAY;MACtG,IAAM,UAAU,GAAG,IAAA,CAAK,QAAL,CAAc,IAAjC,CAAA;MAEA,OAAO,IAAI,cAAA,CAAA,SAAA,CAAJ,CAAkB,IAAlB,EAAwB,KAAxB,EAA+B,UAA/B,EAA2C,KAA3C,EAAkD,IAAA,CAAK,OAAvD,EAAgE,IAAhE,EAAsE,MAAtE,EAA8E,IAA9E,CAAP,CAAA;KACD;;;+BAEW,QAAM;MAChB,IAAA,CAAK,YAAL,CAAkB,IAAlB,CAAuB,MAAvB,CAAA,CAAA;;MAEA,IAAI,CAAC,IAAA,CAAK,SAAN,IAAmB,MAAM,CAAC,SAAP,IAAoB,IAAA,CAAK,SAAL,CAAe,SAA1D,EAAqE;QACnE,IAAA,CAAK,SAAL,GAAiB,MAAjB,CAAA;OACD;KACF;;;6BAES,WAAsC;MAAA,IACtC,KADsC,GACP,SADO,CACtC,KADsC;UAC/B,KAD+B,GACP,SADO,CAC/B,KAD+B;UACxB,MADwB,GACP,SADO,CACxB,MADwB;UAChB,IADgB,GACP,SADO,CAChB,IADgB,CAAA;;MAG9C,IAAI,CAAC,SAAS,CAAC,QAAf,EAAyB;QACvB,IAAM,YAAY,GAAG,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,gBAAA,CAAA,MAAA,CAAoC,KAApC,CAAA,EAA6C,SAA7C,CAArB,CAAA;;QAEA,IAAI,YAAY,KAAK,KAArB,EAA4B;UAC1B,OAAO,KAAP,CAAA;SACD;OACF;;MAED,IAAM,MAAM,GAAG,SAAS,CAAC,MAAV,GAAmB,IAAA,CAAK,oBAAL,CAA0B,KAA1B,EAAiC,KAAjC,EAAwC,MAAxC,EAAgD,IAAhD,CAAlC,CAAA;;MAX8C,IAYtC,IAZsC,GAY7B,IAZ6B,CAYtC,IAZsC,CAAA;;MAc9C,IAAI,IAAJ,EAAU;;QAER,IAAM,KAAK,GAAG,IAAA,CAAK,KAAL,IAAc,IAAA,CAAK,QAAL,CAAc,KAA5B,IAAqC;UAAE,IAAI,EAAE,IAAR;UAAc,KAAK,EAAE,IAArB;UAA2B,GAAG,EAAE,IAAhC;UAAsC,MAAM,EAAE,IAAA;SAAjG,CAAA;;QAEA,IAAI,KAAK,CAAC,GAAV,EAAkB;UAAE,IAAI,CAAC,GAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,MAAV,EAAkB;UAAE,IAAI,CAAC,MAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,IAAV,EAAkB;UAAE,IAAI,CAAC,IAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,KAAV,EAAkB;UAAE,IAAI,CAAC,KAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;OACpD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,SAAA,CAAA,MAAA,CAA6B,KAA7B,CAAA,EAAsC,SAAtC,CAAA,CAAA;;MAEA,IAAA,CAAK,UAAL,CAAgB,MAAhB,CAAA,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,eAAA,CAAA,MAAA,CAAmC,KAAnC,CAAA,EAA4C,SAA5C,CAAA,CAAA;;MAEA,OAAO,IAAP,CAAA;KACD;;;2BAEG;MAAM,OAAO,IAAI,CAAC,GAAL,EAAP,CAAA;KAAmB;;;wBA3ZL;MACtB,OAAO,CAAP,CAAA;KACD;;;;;;;eA4ZY;;;;;;;;;;;;;;;;;;ACleT,SAAU,QAAV,CAAoB,KAApB,EAA2B,MAA3B,EAAiC;EACrC,OAAO,KAAK,CAAC,OAAN,CAAc,MAAd,CAAA,KAA0B,CAAC,CAAlC,CAAA;CACD;;AAEK,SAAU,MAAV,CAAkB,KAAlB,EAAyB,MAAzB,EAA+B;EACnC,OAAO,KAAK,CAAC,MAAN,CAAa,KAAK,CAAC,OAAN,CAAc,MAAd,CAAb,EAAoC,CAApC,CAAP,CAAA;CACD;;AAEK,SAAU,KAAV,CAAiB,MAAjB,EAAyB,MAAzB,EAA+B;EACnC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAmB,MAAnB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAR,MAAQ,CAAA,EAAA,CAAA,CAAA;IAAA,IAAhB,IAAgB,GAAA,IAAA,CAAA;IACzB,MAAM,CAAC,IAAP,CAAY,IAAZ,CAAA,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAEK,SAAU,IAAV,CAAgB,MAAhB,EAAsB;EAC1B,OAAO,KAAK,CAAC,EAAD,EAAK,MAAL,CAAZ,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,KAArB,EAA4B,IAA5B,EAAgC;EACpC,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;IACrC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAD,CAAN,EAAW,CAAX,EAAc,KAAd,CAAR,EAA8B;MAC5B,OAAO,CAAP,CAAA;KACD;GACF;;EAED,OAAO,CAAC,CAAR,CAAA;CACD;;AAEK,SAAU,IAAV,CAAgB,KAAhB,EAAuB,IAAvB,EAA2B;EAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAD,EAAQ,IAAR,CAAV,CAAZ,CAAA;CACD;;AAEK,SAAU,IAAV,CAAgB,KAAhB,EAAuB,IAAvB,EAA2B;EAC/B,OAAO,SAAS,CAAC,KAAD,EAAQ,IAAR,CAAT,KAA2B,CAAC,CAAnC,CAAA;CACD;;;;;;;;;;ACpCa,SAAU,MAAV,CAA2C,IAA3C,EAAoD,MAApD,EAA6D;EACzE,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACxB,IAAqB,CAAC,IAAD,CAArB,GAA8B,MAAM,CAAC,IAAD,CAApC,CAAA;GACF;;EACD,OAAO,IAAP,CAAA;CACD;;;;;;;;;;eCLc,SAAA,QAAA,CAAC,KAAD,EAAA;EAAA,OAAW,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAjB,CAAD,IAA8B,KAAK,YAAY,KAAK,CAAC,MAAhE,CAAA;;;;;;;;;;;;;;;ACAf,IAAA,SAAA,GAAA,sBAAA,CAAA,aAAA,CAAA,CAAA;;;;AAEA,IAAM,GAAG,GAAG;EACV,UAAU,EAAE,SADF;EAEV,MAAM,EAAE,SAFE;EAGV,SAAS,EAAT,SAHU;EAIV,IAAI,EAAJ,IAAA;CAJF,CAAA;;AAOM,SAAU,IAAV,CAAgB,MAAhB,EAA4D;;EAGhE,GAAG,CAAC,UAAJ,GAAiB,MAAjB,CAHgE;;EAMhE,IAAM,EAAE,GAAG,MAAM,CAAC,QAAP,CAAgB,cAAhB,CAA+B,EAA/B,CAAX,CANgE;;EAShE,IAAI,EAAE,CAAC,aAAH,KAAqB,MAAM,CAAC,QAA5B,IACA,OAAO,MAAM,CAAC,IAAd,KAAuB,UADvB,IAEF,MAAM,CAAC,IAAP,CAAY,EAAZ,CAAA,KAAoB,EAFtB,EAE0B;;IAExB,MAAM,GAAG,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAT,CAAA;GACD;;EAED,GAAG,CAAC,MAAJ,GAAa,MAAb,CAAA;CACD;;AAED,IAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC;EACjC,GAAG,CAAC,MAAJ,GAAiB,SAAjB,CAAA;EACA,GAAG,CAAC,UAAJ,GAAiB,SAAjB,CAAA;CAFF,MAIK;EACH,IAAI,CAAC,MAAD,CAAJ,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,IAArB,EAAyB;EAC7B,IAAI,CAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CAAA,EAAS,IAAT,CAAJ,EAAoB;IAClB,OAAO,IAAP,CAAA;GACD;;EAED,IAAM,QAAQ,GAAI,IAAI,CAAC,aAAL,IAAsB,IAAxC,CAAA;EAEA,OAAO,QAAQ,CAAC,WAAT,IAAwB,GAAG,CAAC,MAAnC,CAAA;CACD;;AAED,GAAG,CAAC,IAAJ,GAAW,IAAX,CAAA;oBAEe;;;;;;;;;;;AC9Cf,IAAA,cAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEO,IAAM,WAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,KAAK,KAAK,QAAA,CAAA,SAAA,CAAA,CAAI,MAAd,IAAwB,CAAA,CAAA,EAAA,cAAA,CAAA,SAAA,CAAA,EAAS,KAAT,CADJ,CAAA;CAAf,CAAA;;;;AAGA,IAAM,OAAO,GAAG,SAAV,OAAU,CAAC,KAAD,EAAA;EAAA,OACrB,MAAM,CAAC,KAAD,CAAN,IAAiB,KAAK,CAAC,QAAN,KAAmB,EADf,CAAA;CAAhB,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,CAAC,CAAC,KAAF,IAAY,OAAA,CAAO,KAAP,CAAA,KAAiB,QADT,CAAA;CAAf,CAAA;;;;AAGA,IAAM,IAAI,GAAG,SAAP,IAAO,CAAC,KAAD,EAAA;EAAA,OAClB,OAAO,KAAP,KAAiB,UADC,CAAA;CAAb,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,OAAO,KAAP,KAAiB,QADG,CAAA;CAAf,CAAA;;;;AAGA,IAAM,IAAI,GAAG,SAAP,IAAO,CAAC,KAAD,EAAA;EAAA,OAClB,OAAO,KAAP,KAAiB,SADC,CAAA;CAAb,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,OAAO,KAAP,KAAiB,QADG,CAAA;CAAf,CAAA;;;;AAGA,IAAM,OAAO,GAAG,SAAV,OAAU,CAAC,KAAD,EAAiC;EACtD,IAAI,CAAC,KAAD,IAAW,OAAA,CAAO,KAAP,CAAA,KAAiB,QAAhC,EAA2C;IAAE,OAAO,KAAP,CAAA;GAAc;;EAE3D,IAAM,OAAO,GAAG,QAAA,CAAA,SAAA,CAAA,CAAI,SAAJ,CAAc,KAAd,CAAA,IAAwB,QAAA,CAAA,SAAA,CAAA,CAAI,MAA5C,CAAA;;EAEA,OAAQ,iBAAA,CAAkB,IAAlB,CAAA,OAAA,CAA8B,OAAO,CAAC,OAAtC,CAAA,CAAA,GACJ,KAAK,YAAY,OAAO,CAAC,OADrB;IAEJ,KAAK,CAAC,QAAN,KAAmB,CAAnB,IAAwB,OAAO,KAAK,CAAC,QAAb,KAA0B,QAFtD,CAAA;CALK,CAAA;;;;AAUA,IAAM,WAAW,GAAkB,SAA7B,WAA6B,CAAC,KAAD,EAAA;EAAA,OACxC,MAAM,CAAC,KAAD,CAAN,IACA,CAAC,CAAC,KAAK,CAAC,WADR,IAEA,mBAAA,CAAoB,IAApB,CAAyB,KAAK,CAAC,WAAN,CAAkB,QAAlB,EAAzB,CAHwC,CAAA;CAAnC,CAAA;;;;AAKA,IAAM,KAAK,GAAG,SAAR,KAAQ,CAAC,KAAD,EAAA;EAAA,OAClB,MAAM,CAAC,KAAD,CAAN,IACA,OAAO,KAAK,CAAC,MAAb,KAAwB,WADxB,IAED,IAAI,CAAC,KAAK,CAAC,MAAP,CAHe,CAAA;CAAd,CAAA;;;;;;;;;;;;ACzCP,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,EAAA,GAAA,uBAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AAMc,SAAU,SAAV,CACZ,IADY,EAEZ,SAFY,EAGZ,MAHY,EAGgB;EAE5B,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;EAEA,IAAI,EAAE,CAAC,MAAH,CAAU,IAAV,CAAA,IAAmB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAA7C,EAAgD;IAC9C,IAAI,GAAG,KAAK,CAAC,IAAD,CAAZ,CAAA;GACD;;EAED,IAAI,EAAE,CAAC,KAAH,CAAS,IAAT,CAAJ,EAAoB;IAClB,OAAO,IAAI,CAAC,MAAL,CACL,UAAC,GAAD,EAAM,CAAN,EAAA;MAAA,OAAY,CAAA,CAAA,EAAA,OAAA,CAAA,SAAA,CAAA,EAAO,GAAP,EAAY,SAAS,CAAC,CAAD,EAAI,SAAJ,EAAe,MAAf,CAArB,CAAZ,CAAA;KADK,EAEL,MAFK,CAAP,CAAA;GAT0B;;;EAgB5B,IAAI,EAAE,CAAC,MAAH,CAAU,IAAV,CAAJ,EAAqB;IACnB,SAAS,GAAG,IAAZ,CAAA;IACA,IAAI,GAAG,EAAP,CAAA;GACD;;EAED,IAAI,EAAE,CAAC,IAAH,CAAQ,SAAR,CAAJ,EAAwB;IACtB,MAAM,CAAC,IAAD,CAAN,GAAe,MAAM,CAAC,IAAD,CAAN,IAAgB,EAA/B,CAAA;IACA,MAAM,CAAC,IAAD,CAAN,CAAa,IAAb,CAAkB,SAAlB,CAAA,CAAA;GAFF,MAIK,IAAI,EAAE,CAAC,KAAH,CAAS,SAAT,CAAJ,EAAyB;IAC5B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAgB,SAAhB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA,CAAA;MAAA,IAAhB,CAAgB,GAAA,IAAA,CAAA;MACzB,SAAS,CAAC,IAAD,EAAO,CAAP,EAAU,MAAV,CAAT,CAAA;KACD;GAHE,MAKA,IAAI,EAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAC7B,KAAK,IAAM,MAAX,IAAqB,SAArB,EAAgC;MAC9B,IAAM,aAAa,GAAG,KAAK,CAAC,MAAD,CAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;QAAA,OAAA,EAAA,CAAA,MAAA,CAAU,IAAV,CAAA,CAAA,MAAA,CAAiB,CAAjB,CAAA,CAAA;OAAlB,CAAtB,CAAA;MAEA,SAAS,CAAC,aAAD,EAAgB,SAAS,CAAC,MAAD,CAAzB,EAAmC,MAAnC,CAAT,CAAA;KACD;GACF;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,KAAT,CAAgB,IAAhB,EAA4B;EAC1B,OAAO,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;CACD;;;;;;;;;;ACrDD,IAAA,GAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,mBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;;;;;;;;;;;AAIA,SAAS,yBAAT,CAGG,KAHH,EAG+B,SAH/B,EAG6D;EAC3D,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,SAAvB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA,CAAA;IAAA,IAAvB,QAAuB,GAAA,IAAA,CAAA;;IAChC,IAAI,KAAK,CAAC,2BAAV,EAAuC;MAAE,MAAA;KAAO;;IAEhD,QAAQ,CAAC,KAAD,CAAR,CAAA;GACD;CACF;;IAEK;;;EAOJ,SAAA,SAAA,CAAa,OAAb,EAA+C;IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IAL/C,IAAA,CAAA,KAAA,GAA6B,EAA7B,CAAA;IACA,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IACA,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;IAIE,IAAA,CAAK,OAAL,GAAe,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,OAAO,IAAI,EAAtB,CAAf,CAAA;GACD;;;;yBAEK,OAAU;MACd,IAAI,SAAJ,CAAA;MACA,IAAM,MAAM,GAAG,IAAA,CAAK,MAApB,CAFc;;;MAMd,IAAK,SAAS,GAAG,IAAA,CAAK,KAAL,CAAW,KAAK,CAAC,IAAjB,CAAjB,EAA0C;QACxC,yBAAyB,CAAC,KAAD,EAAQ,SAAR,CAAzB,CAAA;OAPY;;;MAWd,IAAI,CAAC,KAAK,CAAC,kBAAP,IAA6B,MAA7B,KAAwC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAP,CAA1D,CAAJ,EAA8E;QAC5E,yBAAyB,CAAC,KAAD,EAAQ,SAAR,CAAzB,CAAA;OACD;KACF;;;uBAEG,MAAc,UAA+B;MAC/C,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,mBAAA,CAAA,SAAA,CAAA,EAAU,IAAV,EAAgB,QAAhB,CAAlB,CAAA;;MAEA,KAAK,IAAL,IAAa,SAAb,EAAwB;QACtB,IAAA,CAAK,KAAL,CAAW,IAAX,CAAA,GAAmB,GAAG,CAAC,KAAJ,CAAU,IAAA,CAAK,KAAL,CAAW,IAAX,CAAA,IAAoB,EAA9B,EAAkC,SAAS,CAAC,IAAD,CAA3C,CAAnB,CAAA;OACD;KACF;;;wBAEI,MAAc,UAA+B;MAChD,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,mBAAA,CAAA,SAAA,CAAA,EAAU,IAAV,EAAgB,QAAhB,CAAlB,CAAA;;MAEA,KAAK,IAAL,IAAa,SAAb,EAAwB;QACtB,IAAM,SAAS,GAAG,IAAA,CAAK,KAAL,CAAW,IAAX,CAAlB,CAAA;;QAEA,IAAI,CAAC,SAAD,IAAc,CAAC,SAAS,CAAC,MAA7B,EAAqC;UAAE,SAAA;SAAU;;QAEjD,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,SAAS,CAAC,IAAD,CAAnC,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2C;UAAA,IAAA,KAAA,CAAA;;UAAA,KAAA,GAAjB,SAAS,CAAC,IAAD,CAAQ,CAAA,GAAA,CAAA,CAAA;UAAA,IAAhC,WAAgC,GAAA,KAAA,CAAA;UACzC,IAAM,KAAK,GAAG,SAAS,CAAC,OAAV,CAAkB,WAAlB,CAAd,CAAA;;UAEA,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;YAChB,SAAS,CAAC,MAAV,CAAiB,KAAjB,EAAwB,CAAxB,CAAA,CAAA;WACD;SACF;OACF;KACF;;;;;;oBAGY;;;;;;;;;;;ACpCR,IAAM,QAAQ,GAAa;EAChC,IAAI,EAAE;IACJ,cAAc,EAAE,MADZ;IAEJ,WAAW,EAAE,MAAA;GAHiB;EAMhC,SAAS,EAAE;IACT,OAAO,EAAE,KADA;IAET,MAAM,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAX;GARsB;EAWhC,OAAO,EAAE,EAAA;CAXJ,CAAA;;oBAcQ;;;;;;;;;;ACjDf,IAAM,UAAU,GAahB;EACE,IAAI,EAAJ,SADF;EAEE,QAAQ,EAAE,IAFZ;EAGE,gBAAgB,EAAE,IAHpB;EAIE,UAAU,EAAE,IAJd;EAKE,aAAa,EAAE,IALjB;;EAOE,kBAAkB,EAAE,IAPtB;EAQE,OAAO,EAAE,IARX;EASE,WAAW,EAAE,IATf;EAUE,KAAK,EAAE,IAVT;EAWE,KAAK,EAAE,IAXT;EAYE,YAAY,EAAE,IAAA;CAzBhB,CAAA;;AA4BA,SAAS,KAAT,GAAc,EAAM;;oBAEL;;;AAEf,SAAS,SAAT,CAAe,MAAf,EAA6B;EAC3B,IAAM,GAAG,GAAG,MAAZ,CAAA;EAEA,UAAU,CAAC,QAAX,GAAgC,GAAG,CAAC,QAApC,CAAA;EACA,UAAU,CAAC,gBAAX,GAAgC,GAAG,CAAC,gBAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,UAAX,GAAgC,GAAG,CAAC,UAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,aAAX,GAAgC,GAAG,CAAC,aAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,kBAAX,GAAgC,GAAG,CAAC,kBAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,OAAX,GAAgC,GAAG,CAAC,OAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,WAAX,GAAgC,GAAG,CAAC,WAAJ,IAA0B,UAAU,CAAC,OAArE,CAAA;EAEA,UAAU,CAAC,KAAX,GAA0B,GAAG,CAAC,KAA9B,CAAA;EACA,UAAU,CAAC,KAAX,GAA0B,GAAG,CAAC,KAAJ,IAAa,KAAvC,CAAA;EACA,UAAU,CAAC,YAAX,GAA2B,GAAG,CAAC,YAAJ,IAAoB,GAAG,CAAC,cAAnD,CAAA;CACD;;;;;;;;;;AC9CD,IAAA,WAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEA,IAAM,OAAO,GAAG;EACd,IAAI,EAAJ,SADc;EAEd,aAAa,EAAE,IAFD;EAGd,oBAAoB,EAAE,IAHR;EAId,MAAM,EAAE,IAJM;EAKd,KAAK,EAAE,IALO;EAMd,KAAK,EAAE,IANO;EAOd,aAAa,EAAE,IAPD;EAQd,uBAAuB,EAAE,IARX;EASd,WAAW,EAAE,IATC;EAiBd,UAAU,EAAE,IAAA;CAjBd,CAAA;;AAoBA,SAAS,SAAT,CAAe,MAAf,EAAqB;EACnB,IAAM,OAAO,GAAG,WAAA,CAAA,SAAA,CAAA,CAAW,OAA3B,CAAA;EACA,IAAM,SAAS,GAAI,OAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,SAA9B,CAFmB;;EAKnB,OAAO,CAAC,aAAR,GAAyB,cAAA,IAAkB,MAAnB,IACrB,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,aAAf,CAAA,IAAiC,WAAA,CAAA,SAAA,CAAA,CAAW,QAAX,YAA+B,MAAM,CAAC,aAD1E,CALmB;;EASnB,OAAO,CAAC,oBAAR,GAA+B,SAAS,CAAC,cAAV,KAA6B,KAA7B,IAAsC,CAAC,CAAC,WAAA,CAAA,SAAA,CAAA,CAAW,YAAlF,CAAA;EAEA,OAAO,CAAC,KAAR,GAAiB,gBAAA,CAAiB,IAAjB,CAAsB,SAAS,CAAC,QAAhC,CAAjB,CAXmB;;EAcnB,OAAO,CAAC,MAAR,GAAkB,gBAAA,CAAiB,IAAjB,CAAsB,SAAS,CAAC,QAAhC,CAAA,IACT,WAAA,CAAY,IAAZ,CAAiB,SAAS,CAAC,UAA3B,CADT,CAAA;EAGA,OAAO,CAAC,KAAR,GAAgB,QAAA,CAAS,IAAT,CAAc,SAAS,CAAC,SAAxB,CAAhB,CAjBmB;;EAoBnB,OAAO,CAAC,aAAR,GAAyB,SAAS,CAAC,OAAV,KAAsB,OAAtB,IACvB,OAAO,CAAC,aADe,IAEvB,QAAA,CAAS,IAAT,CAAc,SAAS,CAAC,SAAxB,CAFF,CApBmB;;EAyBnB,OAAO,CAAC,uBAAR,GAAkC,SAAA,IAAa,OAAO,CAAC,SAArB,GAC9B,SAD8B,GAE9B,uBAAA,IAA2B,OAAO,CAAC,SAAnC,GACE,uBADF,GAEE,oBAAA,IAAwB,OAAO,CAAC,SAAhC,GACE,oBADF,GAEE,kBAAA,IAAsB,OAAO,CAAC,SAA9B,GACE,kBADF,GAEE,mBARV,CAAA;EAUA,OAAO,CAAC,WAAR,GAAuB,OAAO,CAAC,oBAAR,GAClB,WAAA,CAAA,SAAA,CAAA,CAAW,YAAX,KAA4B,MAAM,CAAC,cAAnC,GACC;IACA,EAAE,EAAM,aADR;IAEA,IAAI,EAAI,eAFR;IAGA,IAAI,EAAI,WAHR;IAIA,GAAG,EAAK,UAJR;IAKA,IAAI,EAAI,eALR;IAMA,MAAM,EAAE,iBAAA;GAPT,GASC;IACA,EAAE,EAAM,WADR;IAEA,IAAI,EAAI,aAFR;IAGA,IAAI,EAAI,aAHR;IAIA,GAAG,EAAK,YAJR;IAKA,IAAI,EAAI,aALR;IAMA,MAAM,EAAE,eAAA;GAhBS,GAkBnB,IAlBJ,CAnCmB;;EAwDnB,OAAO,CAAC,UAAR,GAAqB,cAAA,IAAkB,WAAA,CAAA,SAAA,CAAA,CAAW,QAA7B,GAAwC,YAAxC,GAAuD,OAA5E,CAAA;CACD;;oBAEc;;;;;;;;;;;;;;;;;;;;;;ACnFf,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEM,SAAU,YAAV,CAAwB,MAAxB,EAAgC,KAAhC,EAAqC;EACzC,OAAO,KAAP,EAAc;IACZ,IAAI,KAAK,KAAK,MAAd,EAAsB;MACpB,OAAO,IAAP,CAAA;KACD;;IAED,KAAK,GAAG,KAAK,CAAC,UAAd,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,OAAV,CAAmB,OAAnB,EAA4B,QAA5B,EAAoC;EACxC,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,IAAI,eAAe,CAAC,OAAD,EAAU,QAAV,CAAnB,EAAwC;MAAE,OAAO,OAAP,CAAA;KAAgB;;IAE1D,OAAO,GAAG,UAAU,CAAC,OAAD,CAApB,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,UAAlB,CAAA;;EAEA,IAAI,OAAE,CAAC,OAAH,CAAW,MAAX,CAAJ,EAAwB;;;IAGtB,OAAO,CAAC,MAAM,GAAI,MAAc,CAAC,IAA1B,KAAmC,OAAE,CAAC,OAAH,CAAW,MAAX,CAA1C,EAA8D;MAC5D,SAAA;KACD;;IAED,OAAO,MAAP,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAEK,SAAU,eAAV,CAA2B,OAA3B,EAAoC,QAApC,EAA4C;;EAEhD,IAAI,YAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,KAAe,YAAA,CAAA,SAAA,CAAA,CAAI,UAAvB,EAAmC;IACjC,QAAQ,GAAG,QAAQ,CAAC,OAAT,CAAiB,WAAjB,EAA8B,GAA9B,CAAX,CAAA;GACD;;EAED,OAAO,OAAO,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,uBAAT,CAAP,CAAyC,QAAzC,CAAP,CAAA;;;;AAII,SAAU,qBAAV,CAAiC,QAAjC,EAAyC;EAC7C,IAAI,kBAAkB,GAAG,EAAzB,CAAA;EACA,IAAI,eAAe,GAAG,EAAtB,CAAA;EACA,IAAI,QAAJ,CAAA;EACA,IAAI,WAAW,GAAG,QAAQ,CAAC,CAAD,CAA1B,CAAA;EACA,IAAI,KAAK,GAAG,WAAW,GAAG,CAAH,GAAO,CAAC,CAA/B,CAAA;EACA,IAAI,MAAJ,CAAA;EACA,IAAI,KAAJ,CAAA;EACA,IAAI,CAAJ,CAAA;EACA,IAAI,CAAJ,CAAA;;EAEA,KAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,QAAQ,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;IACpC,QAAQ,GAAG,QAAQ,CAAC,CAAD,CAAnB,CADoC;;IAIpC,IAAI,CAAC,QAAD,IAAa,QAAQ,KAAK,WAA9B,EAA2C;MACzC,SAAA;KACD;;IAED,IAAI,CAAC,WAAL,EAAkB;MAChB,WAAW,GAAG,QAAd,CAAA;MACA,KAAK,GAAG,CAAR,CAAA;MACA,SAAA;KAXkC;;;;IAgBpC,IAAI,QAAQ,CAAC,UAAT,KAAwB,QAAQ,CAAC,aAArC,EAAoD;MAClD,SAAA;KADF;SAIK,IAAI,WAAW,CAAC,UAAZ,KAA2B,QAAQ,CAAC,aAAxC,EAAuD;QAC1D,WAAW,GAAG,QAAd,CAAA;QACA,KAAK,GAAG,CAAR,CAAA;QACA,SAAA;OACD;;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAxB,EAAgC;MAC9B,MAAM,GAAG,WAAT,CAAA;;MACA,OAAO,MAAM,CAAC,UAAP,IAAqB,MAAM,CAAC,UAAP,KAAsB,MAAM,CAAC,aAAzD,EAAwE;QACtE,kBAAkB,CAAC,OAAnB,CAA2B,MAA3B,CAAA,CAAA;QACA,MAAM,GAAG,MAAM,CAAC,UAAhB,CAAA;OACD;KA/BiC;;;;IAoCpC,IAAI,WAAW,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,WAAlC,IACA,QAAQ,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,UAD/B,IAEA,EAAE,QAAQ,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,aAAjC,CAFJ,EAEqD;MACnD,IAAI,QAAQ,KAAK,WAAW,CAAC,UAA7B,EAAyC;QACvC,SAAA;OACD;;MAED,MAAM,GAAG,QAAQ,CAAC,eAAlB,CAAA;KAPF,MASK;MACH,MAAM,GAAG,QAAT,CAAA;KACD;;IAED,eAAe,GAAG,EAAlB,CAAA;;IAEA,OAAO,MAAM,CAAC,UAAP,KAAsB,MAAM,CAAC,aAApC,EAAmD;MACjD,eAAe,CAAC,OAAhB,CAAwB,MAAxB,CAAA,CAAA;MACA,MAAM,GAAG,MAAM,CAAC,UAAhB,CAAA;KACD;;IAED,CAAC,GAAG,CAAJ,CAxDoC;;IA2DpC,OAAO,eAAe,CAAC,CAAD,CAAf,IAAsB,eAAe,CAAC,CAAD,CAAf,KAAuB,kBAAkB,CAAC,CAAD,CAAtE,EAA2E;MACzE,CAAC,EAAA,CAAA;KACF;;IAED,IAAM,OAAO,GAAG,CACd,eAAe,CAAC,CAAC,GAAG,CAAL,CADD,EAEd,eAAe,CAAC,CAAD,CAFD,EAGd,kBAAkB,CAAC,CAAD,CAHJ,CAAhB,CAAA;IAMA,KAAK,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,SAAnB,CAAA;;IAEA,OAAO,KAAP,EAAc;MACZ,IAAI,KAAK,KAAK,OAAO,CAAC,CAAD,CAArB,EAA0B;QACxB,WAAW,GAAG,QAAd,CAAA;QACA,KAAK,GAAG,CAAR,CAAA;QACA,kBAAkB,GAAG,EAArB,CAAA;QAEA,MAAA;OALF,MAOK,IAAI,KAAK,KAAK,OAAO,CAAC,CAAD,CAArB,EAA0B;QAC7B,MAAA;OACD;;MAED,KAAK,GAAG,KAAK,CAAC,eAAd,CAAA;KACD;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,WAAV,CAAuB,OAAvB,EAAgC,QAAhC,EAA0C,KAA1C,EAA+C;EACnD,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,IAAI,eAAe,CAAC,OAAD,EAAU,QAAV,CAAnB,EAAwC;MACtC,OAAO,IAAP,CAAA;KACD;;IAED,OAAO,GAAG,UAAU,CAAC,OAAD,CAApB,CAAA;;IAEA,IAAI,OAAO,KAAK,KAAhB,EAAuB;MACrB,OAAO,eAAe,CAAC,OAAD,EAAU,QAAV,CAAtB,CAAA;KACD;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,gBAAV,CAA4B,OAA5B,EAAmC;EACvC,OAAQ,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,kBAA9B,GACJ,OAAO,CAAC,uBADJ,GAEJ,OAFJ,CAAA;CAGD;;AAEK,SAAU,WAAV,CAAuB,cAAvB,EAAqC;EACzC,cAAc,GAAG,cAAc,IAAI,YAAA,CAAA,SAAA,CAAA,CAAI,MAAvC,CAAA;EACA,OAAO;IACL,CAAC,EAAE,cAAc,CAAC,OAAf,IAA0B,cAAc,CAAC,QAAf,CAAwB,eAAxB,CAAwC,UADhE;IAEL,CAAC,EAAE,cAAc,CAAC,OAAf,IAA0B,cAAc,CAAC,QAAf,CAAwB,eAAxB,CAAwC,SAAA;GAFvE,CAAA;CAID;;AAEK,SAAU,oBAAV,CAAgC,OAAhC,EAAuC;EAC3C,IAAM,UAAU,GAAI,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,UAA9B,GAChB,OAAO,CAAC,qBAAR,EADgB,GAEhB,OAAO,CAAC,cAAR,EAAA,CAAyB,CAAzB,CAFJ,CAAA;EAIA,OAAO,UAAU,IAAI;IACnB,IAAI,EAAI,UAAU,CAAC,IADA;IAEnB,KAAK,EAAG,UAAU,CAAC,KAFA;IAGnB,GAAG,EAAK,UAAU,CAAC,GAHA;IAInB,MAAM,EAAE,UAAU,CAAC,MAJA;IAKnB,KAAK,EAAG,UAAU,CAAC,KAAX,IAAqB,UAAU,CAAC,KAAX,GAAoB,UAAU,CAAC,IALzC;IAMnB,MAAM,EAAE,UAAU,CAAC,MAAX,IAAqB,UAAU,CAAC,MAAX,GAAoB,UAAU,CAAC,GAAA;GAN9D,CAAA;CAQD;;AAEK,SAAU,cAAV,CAA0B,OAA1B,EAAiC;EACrC,IAAM,UAAU,GAAG,oBAAoB,CAAC,OAAD,CAAvC,CAAA;;EAEA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,MAAT,IAAmB,UAAvB,EAAmC;IACjC,IAAM,MAAM,GAAG,WAAW,CAAC,YAAA,CAAA,SAAA,CAAA,CAAI,SAAJ,CAAc,OAAd,CAAD,CAA1B,CAAA;IAEA,UAAU,CAAC,IAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,KAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,GAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,MAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;GACD;;EAED,OAAO,UAAP,CAAA;CACD;;AAEK,SAAU,OAAV,CAAmB,OAAnB,EAA0B;EAC9B,IAAM,IAAI,GAAG,EAAb,CAAA;;EAEA,OAAO,OAAP,EAAgB;IACd,IAAI,CAAC,IAAL,CAAU,OAAV,CAAA,CAAA;IACA,OAAO,GAAG,UAAU,CAAC,OAAD,CAApB,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,WAAV,CAAuB,KAAvB,EAA4B;EAChC,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,KAAV,CAAL,EAAuB;IAAE,OAAO,KAAP,CAAA;GADO;;;EAIhC,gBAAA,CAAA,SAAA,CAAA,CAAW,QAAX,CAAoB,aAApB,CAAkC,KAAlC,CAAA,CAAA;;EACA,OAAO,IAAP,CAAA;CACD;;;;;;;;;;;;;;;ACvOD,0DAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AAEM,SAAU,qBAAV,CAAiC,KAAjC,EAAwC,YAAxC,EAAsD,OAAtD,EAA6D;EACjE,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,KAAV,CAAL,EAAuB;IACrB,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,KAAK,KAAK,QAAd,EAAwB;IACtB,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,OAAX,CAAR,CAAA;GADF,MAGK,IAAI,KAAK,KAAK,MAAd,EAAsB;IACzB,KAAK,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAR,CAAA;GADG,MAGA;IACH,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,OAAA,EAAQ,OAAR,EAAiB,KAAjB,CAAR,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,eAAV,CAA2B,KAA3B,EAAkC,YAAlC,EAAiD,OAAjD,EAA2D,YAA3D,EAAwE;EAC5E,KAAK,GAAG,qBAAqB,CAAC,KAAD,EAAQ,YAAR,EAAsB,OAAtB,CAArB,IAAuD,KAA/D,CAAA;;EAEA,IAAI,OAAE,CAAC,IAAH,CAAQ,KAAR,CAAJ,EAAoB;IAClB,KAAK,GAAG,KAAK,CAAC,KAAN,CAAY,IAAZ,EAAkB,YAAlB,CAAR,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,OAAH,CAAW,KAAX,CAAJ,EAAuB;IACrB,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,cAAA,EAAe,KAAf,CAAR,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,QAAV,CAAoB,IAApB,EAAwB;EAC5B,OAAQ,IAAI,IAAI;IACd,CAAC,EAAE,GAAA,IAAO,IAAP,GAAc,IAAI,CAAC,CAAnB,GAAuB,IAAI,CAAC,IADjB;IAEd,CAAC,EAAE,GAAA,IAAO,IAAP,GAAc,IAAI,CAAC,CAAnB,GAAuB,IAAI,CAAC,GAAA;GAFjC,CAAA;CAID;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,IAAI,IAAI,EAAE,MAAA,IAAU,IAAV,IAAkB,KAAA,IAAS,IAA7B,CAAZ,EAAgD;IAC9C,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAP,CAAA;IAEA,IAAI,CAAC,IAAL,GAAc,IAAI,CAAC,CAAL,IAAU,CAAxB,CAAA;IACA,IAAI,CAAC,GAAL,GAAc,IAAI,CAAC,CAAL,IAAU,CAAxB,CAAA;IACA,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,IAAiB,IAAI,CAAC,IAAL,GAAY,IAAI,CAAC,KAAhD,CAAA;IACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAiB,IAAI,CAAC,GAAL,GAAW,IAAI,CAAC,MAA/C,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,IAAI,IAAI,EAAE,GAAA,IAAO,IAAP,IAAe,GAAA,IAAO,IAAxB,CAAZ,EAA2C;IACzC,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAP,CAAA;IAEA,IAAI,CAAC,CAAL,GAAc,IAAI,CAAC,IAAL,IAAa,CAA3B,CAAA;IACA,IAAI,CAAC,CAAL,GAAc,IAAI,CAAC,GAAL,IAAa,CAA3B,CAAA;IACA,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,IAAgB,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,CAAjD,CAAA;IACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAgB,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,CAAjD,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;oBAEc;EACb,qBAAqB,EAArB,qBADa;EAEb,eAAe,EAAf,eAFa;EAGb,QAAQ,EAAR,QAHa;EAIb,UAAU,EAAV,UAJa;EAKb,UAAU,EAAV,UAAA;;;;;;;;;;;;AC1EF,kDAAA;;AAEc,SAAA,aAAA,CAAW,MAAX,EAAmB,OAAnB,EAA4B,MAA5B,EAAmC;EAC/C,IAAM,aAAa,GAAG,MAAM,CAAC,OAAP,CAAe,MAAf,CAAtB,CAAA;EACA,IAAM,YAAY,GAAG,aAAa,IAAI,aAAa,CAAC,MAApD,CAAA;EACA,IAAM,MAAM,GAAG,YAAY,IAAI,MAAM,CAAC,OAAP,CAAe,MAA9C,CAAA;EAEA,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,SAAA,CAAA,eAAA,EAAgB,MAAhB,EAAwB,MAAxB,EAAgC,OAAhC,EAAyC,CAAC,MAAM,IAAI,OAAX,CAAzC,CAAnB,CAAA;EAEA,OAAO,CAAA,CAAA,EAAA,SAAA,CAAA,QAAA,EAAS,UAAT,CAAA,IAAwB;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA1C,CAAA;CACD;;;;;;;;;;oBCVc,SAAA,QAAA,CAAC,CAAD,EAAI,CAAJ,EAAA;EAAA,OAAW,IAAI,CAAC,IAAL,CAAU,CAAC,GAAG,CAAJ,GAAQ,CAAC,GAAG,CAAtB,CAAX,CAAA;;;;;;;;;;;;;ACAf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,eAAA,GAAA,2BAAA,CAAA,mBAAA,CAAA,CAAA;;;;;;;;;;AAKA,IAAY,UAAZ,CAAA;;;AAAA,CAAA,UAAY,UAAZ,EAAsB;EACpB,UAAA,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;EACA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;EACA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;EACA,UAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA;CAJF,EAAY,UAAU,KAAA,kBAAA,CAAA,UAAA,GAAV,UAAU,GAAA,EAAA,CAAtB,CAAA,CAAA;;IAOa;;;;EA2CX,SAAA,aAAA,CACE,WADF,EAEE,KAFF,EAGE,UAHF,EAIE,KAJF,EAKE,OALF,EAME,OANF,EAOE,MAPF,EAQE,IARF,EAQe;IAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;IAZf,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;IACA,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IAaE,OAAO,GAAG,OAAO,IAAI,WAAW,CAAC,OAAjC,CAAA;IAEA,IAAM,MAAM,GAAQ,WAAW,CAAC,YAAhC,CAJa;;IAMb,IAAM,WAAW,GAAI,CAAE,MAAM,IAAI,MAAM,CAAC,OAAlB,IAA8B,eAAA,CAAA,SAAA,CAA/B,EAAiD,WAAtE,CAAA;IACA,IAAM,MAAM,GAAQ,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAY,MAAZ,EAAoB,OAApB,EAA6B,UAA7B,CAApB,CAAA;IACA,IAAM,QAAQ,GAAM,KAAK,KAAK,OAA9B,CAAA;IACA,IAAM,MAAM,GAAQ,KAAK,KAAK,KAA9B,CAAA;IACA,IAAM,SAAS,GAAK,QAAQ,GAAG,IAAH,GAAU,WAAW,CAAC,SAAlD,CAAA;IACA,IAAM,MAAM,GAAQ,QAAQ,GACxB,WAAW,CAAC,MAAZ,CAAmB,KADK,GAExB,MAAM,GACJ;MAAE,IAAI,EAAE,SAAS,CAAC,IAAlB;MAAwB,MAAM,EAAE,SAAS,CAAC,MAA1C;MAAkD,SAAS,EAAE,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,SAAA;KADhF,GAEJ,WAAW,CAAC,MAAZ,CAAmB,GAJzB,CAAA;IAMA,IAAA,CAAK,IAAL,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAM,CAAC,IAAlB,CAAjB,CAAA;IACA,IAAA,CAAK,MAAL,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAM,CAAC,MAAlB,CAAjB,CAAA;IACA,IAAA,CAAK,SAAL,GAAiB,MAAM,CAAC,SAAxB,CAAA;;IAEA,IAAI,CAAC,MAAL,EAAa;MACX,IAAA,CAAK,IAAL,CAAU,CAAV,IAAe,MAAM,CAAC,CAAtB,CAAA;MACA,IAAA,CAAK,IAAL,CAAU,CAAV,IAAe,MAAM,CAAC,CAAtB,CAAA;MAEA,IAAA,CAAK,MAAL,CAAY,CAAZ,IAAiB,MAAM,CAAC,CAAxB,CAAA;MACA,IAAA,CAAK,MAAL,CAAY,CAAZ,IAAiB,MAAM,CAAC,CAAxB,CAAA;KACD;;IAED,IAAA,CAAK,OAAL,GAAqB,KAAK,CAAC,OAA3B,CAAA;IACA,IAAA,CAAK,MAAL,GAAqB,KAAK,CAAC,MAA3B,CAAA;IACA,IAAA,CAAK,QAAL,GAAqB,KAAK,CAAC,QAA3B,CAAA;IACA,IAAA,CAAK,OAAL,GAAqB,KAAK,CAAC,OAA3B,CAAA;IACA,IAAA,CAAK,MAAL,GAAsB,KAAoB,CAAC,MAA3C,CAAA;IACA,IAAA,CAAK,OAAL,GAAsB,KAAoB,CAAC,OAA3C,CAAA;IACA,IAAA,CAAK,MAAL,GAAqB,OAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,OAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,OAAO,IAAI,IAAhC,CAAA;IACA,IAAA,CAAK,MAAL,GAAqB,MAArB,CAAA;IACA,IAAA,CAAK,IAAL,GAAqB,IAAI,IAAK,UAAU,IAAI,KAAK,IAAI,EAAb,CAAxC,CAAA;IACA,IAAA,CAAK,WAAL,GAAqB,WAArB,CAAA;IACA,IAAA,CAAK,YAAL,GAAqB,MAArB,CAAA;IAEA,IAAA,CAAK,EAAL,GAAU,QAAQ,GACd,WAAW,CAAC,QAAZ,CAAqB,WAAW,CAAC,QAAZ,CAAqB,MAArB,GAA8B,CAAnD,CAAA,CAAsD,QADxC,GAEd,SAAS,CAAC,EAFd,CAAA;IAIA,IAAA,CAAK,EAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CAAzD,CAAA;IACA,IAAA,CAAK,EAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CAAzD,CAAA;IACA,IAAA,CAAK,QAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAhC,GAAoC,MAAM,CAAC,CAA3D,CAAA;IACA,IAAA,CAAK,QAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAhC,GAAoC,MAAM,CAAC,CAA3D,CAAA;;IAEA,IAAI,QAAQ,IAAI,MAAhB,EAAwB;MACtB,IAAA,CAAK,KAAL,GAAa;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OAAxB,CAAA;KADF,MAGK;MACH,IAAA,CAAK,KAAL,GAAa;QACX,CAAC,EAAE,IAAA,CAAK,WAAL,CAAA,CAAkB,CAAlB,GAAsB,SAAS,CAAC,WAAD,CAAT,CAAuB,CADrC;QAEX,CAAC,EAAE,IAAA,CAAK,WAAL,CAAA,CAAkB,CAAlB,GAAsB,SAAS,CAAC,WAAD,CAAT,CAAuB,CAAA;OAFlD,CAAA;KAID;;IAED,IAAA,CAAK,EAAL,GAAiB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,SAA1C,CAAA;IACA,IAAA,CAAK,QAAL,GAAiB,IAAA,CAAK,SAAL,GAAiB,IAAA,CAAK,EAAvC,CA/Da;;IAkEb,IAAA,CAAK,QAAL,GAAgB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,WAA5B,CAAX,CAAhB,CAAA;IACA,IAAA,CAAK,KAAL,GAAa,CAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAM,IAAA,CAAK,QAAL,CAAc,CAApB,EAAuB,IAAA,CAAK,QAAL,CAAc,CAArC,CAAb,CAAA;IAEA,IAAA,CAAK,KAAL,GAAc,MAAM,IAAI,KAAK,KAAK,cAArB,GAAuC,IAAA,CAAK,QAAL,EAAvC,GAAyD,IAAtE,CAAA;GACD;;;;+BAsBO;MACN,IAAM,WAAW,GAAG,IAAA,CAAK,WAAzB,CAAA;;MAEA,IAAI,WAAW,CAAC,SAAZ,CAAsB,KAAtB,GAA8B,GAA9B,IACA,IAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,SAAZ,CAAsB,SAAvC,GAAmD,GADvD,EAC4D;QAC1D,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,KAAK,GAAG,GAAA,GAAM,IAAI,CAAC,KAAL,CAAW,WAAW,CAAC,SAAZ,CAAsB,SAAjC,EAA4C,WAAW,CAAC,SAAZ,CAAsB,SAAlE,CAAN,GAAqF,IAAI,CAAC,EAAtG,CAAA;MACA,IAAM,OAAO,GAAG,IAAhB,CAAA;;MAEA,IAAI,KAAK,GAAG,CAAZ,EAAe;QACb,KAAK,IAAI,GAAT,CAAA;OACD;;MAED,IAAM,IAAI,GAAG,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAG,GAAA,GAAM,OAArD,CAAA;MACA,IAAM,EAAE,GAAK,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAG,GAAA,GAAM,OAArD,CAAA;MAEA,IAAM,KAAK,GAAG,CAAC,IAAD,KAAU,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAI,EAAA,GAAK,OAAlD,CAAd,CAAA;MACA,IAAM,IAAI,GAAI,CAAC,EAAD,IAAW,EAAA,GAAK,OAAL,IAAgB,KAA3B,IAAoC,KAAK,GAAG,GAAA,GAAM,OAAhE,CAAA;MAEA,OAAO;QACL,EAAE,EAAF,EADK;QAEL,IAAI,EAAJ,IAFK;QAGL,IAAI,EAAJ,IAHK;QAIL,KAAK,EAAL,KAJK;QAKL,KAAK,EAAL,KALK;QAML,KAAK,EAAE,WAAW,CAAC,SAAZ,CAAsB,KANxB;QAOL,QAAQ,EAAE;UACR,CAAC,EAAE,WAAW,CAAC,SAAZ,CAAsB,SADjB;UAER,CAAC,EAAE,WAAW,CAAC,SAAZ,CAAsB,SAAA;SAFjB;OAPZ,CAAA;KAYD;;;qCAEa,EAAM;;;;;;;+CAKI;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;;;;;sCAKc;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;wBArEQ;MAAM,OAAO,IAAA,CAAK,IAAL,CAAU,CAAjB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,IAAL,CAAU,CAAV,GAAc,KAAd,CAAA;KAAqB;;;wBAChC;MAAM,OAAO,IAAA,CAAK,IAAL,CAAU,CAAjB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,IAAL,CAAU,CAAV,GAAc,KAAd,CAAA;KAAqB;;;wBAE9B;MAAM,OAAO,IAAA,CAAK,MAAL,CAAY,CAAnB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,MAAL,CAAY,CAAZ,GAAgB,KAAhB,CAAA;KAAuB;;;wBAClC;MAAM,OAAO,IAAA,CAAK,MAAL,CAAY,CAAnB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,MAAL,CAAY,CAAZ,GAAgB,KAAhB,CAAA;KAAuB;;;wBAEvC;MAAM,OAAO,IAAA,CAAK,KAAL,CAAW,CAAlB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,KAAL,CAAW,CAAX,GAAe,KAAf,CAAA;KAAsB;;;wBACjC;MAAM,OAAO,IAAA,CAAK,KAAL,CAAW,CAAlB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,KAAL,CAAW,CAAX,GAAe,KAAf,CAAA;KAAsB;;;wBAE1B;MAAM,OAAO,IAAA,CAAK,QAAL,CAAc,CAArB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,QAAL,CAAc,CAAd,GAAkB,KAAlB,CAAA;KAAyB;;;wBACpC;MAAM,OAAO,IAAA,CAAK,QAAL,CAAc,CAArB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,QAAL,CAAc,CAAd,GAAkB,KAAlB,CAAA;KAAyB;;;;;;;oBAsDpC;;;;;;;;;;;AClNf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;AAEc,SAAU,KAAV,CAAmD,MAAnD,EAA4D;EACxE,IAAM,IAAI,GAAG,EAAb,CAAA;;EAEA,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACzB,IAAM,KAAK,GAAG,MAAM,CAAC,IAAD,CAApB,CAAA;;IAEA,IAAI,OAAE,CAAC,WAAH,CAAe,KAAf,CAAJ,EAA2B;MACzB,IAAI,CAAC,IAAD,CAAJ,GAAa,KAAK,CAAC,KAAD,CAAlB,CAAA;KADF,MAGK,IAAI,OAAE,CAAC,KAAH,CAAS,KAAT,CAAJ,EAAqB;MACxB,IAAI,CAAC,IAAD,CAAJ,GAAa,QAAG,CAAC,IAAJ,CAAS,KAAT,CAAb,CAAA;KADG,MAGA;MACH,IAAI,CAAC,IAAD,CAAJ,GAAa,KAAb,CAAA;KACD;GACF;;EAED,OAAO,IAAP,CAAA;CACD;;;;;;;;;;;AChBK,SAAU,aAAV,CAAwC,IAAxC,EAA8C,MAA9C,EAAoD;EACxD,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACzB,IAAM,eAAe,GAAG,aAAa,CAAC,eAAtC,CAAA;IACA,IAAI,UAAU,GAAG,KAAjB,CAFyB;;IAKzB,KAAK,IAAM,MAAX,IAAqB,eAArB,EAAsC;MACpC,IAAI,IAAI,CAAC,OAAL,CAAa,MAAb,CAAA,KAAyB,CAAzB,IAA8B,eAAe,CAAC,MAAD,CAAf,CAAwB,IAAxB,CAA6B,IAA7B,CAAlC,EAAsE;QACpE,UAAU,GAAG,IAAb,CAAA;QACA,MAAA;OACD;KACF;;IAED,IAAI,CAAC,UAAD,IAAe,OAAO,MAAM,CAAC,IAAD,CAAb,KAAwB,UAA3C,EAAuD;MACrD,IAAI,CAAC,IAAD,CAAJ,GAAa,MAAM,CAAC,IAAD,CAAnB,CAAA;KACD;GACF;;EACD,OAAO,IAAP,CAAA;CACD;;AAED,aAAa,CAAC,eAAd,GAAgC;EAC9B,MAAM,EAAE,gDAAA;CADV,CAAA;oBAIe;;;;;;;;;;;AC7Bf,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,2BAAA,CAAA,kBAAA,CAAA,CAAA;;;;;;AAEA,IAAM,YAAY,GAAG;EACnB,UADmB,EAAA,SAAA,UAAA,CACP,IADO,EACD,GADC,EACE;IACnB,IAAI,CAAC,IAAL,GAAY,IAAI,CAAC,IAAL,IAAa,EAAzB,CAAA;IACA,IAAI,CAAC,IAAL,CAAU,CAAV,GAAc,GAAG,CAAC,IAAJ,CAAS,CAAvB,CAAA;IACA,IAAI,CAAC,IAAL,CAAU,CAAV,GAAc,GAAG,CAAC,IAAJ,CAAS,CAAvB,CAAA;IAEA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAe,EAA7B,CAAA;IACA,IAAI,CAAC,MAAL,CAAY,CAAZ,GAAgB,GAAG,CAAC,MAAJ,CAAW,CAA3B,CAAA;IACA,IAAI,CAAC,MAAL,CAAY,CAAZ,GAAgB,GAAG,CAAC,MAAJ,CAAW,CAA3B,CAAA;IAEA,IAAI,CAAC,SAAL,GAAiB,GAAG,CAAC,SAArB,CAAA;GAViB;EAanB,cAbmB,EAAA,SAAA,cAAA,CAaH,SAbG,EAaQ,IAbR,EAac,GAbd,EAaiB;IAClC,SAAS,CAAC,IAAV,CAAe,CAAf,GAAsB,GAAG,CAAC,IAAJ,CAAS,CAAT,GAAgB,IAAI,CAAC,IAAL,CAAU,CAAhD,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAsB,GAAG,CAAC,IAAJ,CAAS,CAAT,GAAgB,IAAI,CAAC,IAAL,CAAU,CAAhD,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAsB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAgB,IAAI,CAAC,MAAL,CAAY,CAAlD,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAsB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAgB,IAAI,CAAC,MAAL,CAAY,CAAlD,CAAA;IACA,SAAS,CAAC,SAAV,GAAsB,GAAG,CAAC,SAAJ,GAAgB,IAAI,CAAC,SAA3C,CAAA;GAlBiB;EAqBnB,gBArBmB,EAAA,SAAA,gBAAA,CAqBD,SArBC,EAqBU,KArBV,EAqBe;IAChC,IAAM,EAAE,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,SAAN,GAAkB,IAA3B,EAAiC,KAAjC,CAAX,CAAA;IAEA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAqB,KAAK,CAAC,IAAN,CAAW,CAAX,GAAe,EAApC,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAqB,KAAK,CAAC,IAAN,CAAW,CAAX,GAAe,EAApC,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,MAAN,CAAa,CAAb,GAAiB,EAAtC,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,MAAN,CAAa,CAAb,GAAiB,EAAtC,CAAA;IACA,SAAS,CAAC,SAAV,GAAsB,EAAtB,CAAA;GA5BiB;EA+BnB,eA/BmB,EAAA,SAAA,eAAA,CA+BD,OA/BC,EA+BM;IACvB,OAAQ,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAAvB,IAAgC,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAA/D,CAAA;GAhCiB;;EAoCnB,KApCmB,EAAA,SAAA,KAAA,CAoCZ,IApCY,EAoCN,OApCM,EAoCG,EApCH,EAoCK;IACtB,EAAE,GAAG,EAAE,IAAI,EAAX,CAAA;IACA,IAAI,GAAG,IAAI,IAAI,MAAf,CAAA;IAEA,EAAE,CAAC,CAAH,GAAO,OAAO,CAAC,IAAI,GAAG,GAAR,CAAd,CAAA;IACA,EAAE,CAAC,CAAH,GAAO,OAAO,CAAC,IAAI,GAAG,GAAR,CAAd,CAAA;IAEA,OAAO,EAAP,CAAA;GA3CiB;EA8CnB,SA9CmB,EAAA,SAAA,SAAA,CA8CR,OA9CQ,EA8CgD,IA9ChD,EA8CqE;IACtF,IAAI,GAAG,IAAI,IAAI;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAA1B,CADsF;;IAItF,IAAI,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAR,IAAyB,YAAY,CAAC,eAAb,CAA6B,OAA7B,CAA7B,EAAoE;MAClE,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,IAAtC,CAAA,CAAA;MAEA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,OAAjB,CAAA;MACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,OAAjB,CAAA;KAJF,MAMK;MACH,YAAY,CAAC,KAAb,CAAmB,MAAnB,EAA2B,OAA3B,EAAoC,IAApC,CAAA,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GA5DiB;EA+DnB,WA/DmB,EAAA,SAAA,WAAA,CA+DN,OA/DM,EA+DG,MA/DH,EA+DS;IAC1B,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;IAEA,IAAI,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAR,IAAyB,YAAY,CAAC,eAAb,CAA6B,OAA7B,CAA7B,EAAoE;;MAElE,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,MAAtC,CAAA,CAAA;KAFF,MAIK;MACH,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,MAAtC,CAAA,CAAA;KACD;;IAED,OAAO,MAAP,CAAA;GA1EiB;EA6EnB,YA7EmB,EAAA,SAAA,YAAA,CA6EL,OA7EK,EA6EE;IACnB,OAAO,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,SAAlB,CAAA,GAA+B,OAAO,CAAC,SAAvC,GAAmD,OAAO,CAAC,UAAlE,CAAA;GA9EiB;EAiFnB,SAjFmB,EAAA,SAAA,SAAA,CAiFR,SAjFQ,EAiFG,QAjFH,EAiFoB,SAjFpB,EAiFqC;IACtD,IAAM,OAAO,GAAI,QAAQ,CAAC,MAAT,GAAkB,CAAlB,GACb,YAAY,CAAC,cAAb,CAA4B,QAA5B,CADa,GAEb,QAAQ,CAAC,CAAD,CAFZ,CAAA;IAIA,IAAM,KAAK,GAAG,EAAd,CAAA;IAEA,YAAY,CAAC,SAAb,CAAuB,OAAvB,EAAgC,KAAhC,CAAA,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAmB,KAAK,CAAC,CAAzB,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAmB,KAAK,CAAC,CAAzB,CAAA;IAEA,YAAY,CAAC,WAAb,CAAyB,OAAzB,EAAkC,KAAlC,CAAA,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,CAA3B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,CAA3B,CAAA;IAEA,SAAS,CAAC,SAAV,GAAsB,SAAtB,CAAA;GAhGiB;EAmGnB,aAAa,EAAb,cAAA,CAAA,SAAA,CAnGmB;EAqGnB,YArGmB,EAAA,SAAA,YAAA,CAqGL,KArGK,EAqGA;IACjB,IAAM,OAAO,GAAG,EAAhB,CADiB;;IAIjB,IAAI,OAAE,CAAC,KAAH,CAAS,KAAT,CAAJ,EAAqB;MACnB,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,CAAD,CAAlB,CAAA;MACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,CAAD,CAAlB,CAAA;KAFF;SAKK;QACH,IAAI,KAAK,CAAC,IAAN,KAAe,UAAnB,EAA+B;UAC7B,IAAI,KAAK,CAAC,OAAN,CAAc,MAAd,KAAyB,CAA7B,EAAgC;YAC9B,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;YACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;WAFF,MAIK,IAAI,KAAK,CAAC,OAAN,CAAc,MAAd,KAAyB,CAA7B,EAAgC;YACnC,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;YACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;WACD;SARH,MAUK;UACH,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;UACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;SACD;OACF;;IAED,OAAO,OAAP,CAAA;GA/HiB;EAkInB,cAlImB,EAAA,SAAA,cAAA,CAkIH,QAlIG,EAkI+B;IAChD,IAAM,OAAO,GAAG;MACd,KAAK,EAAI,CADK;MAEd,KAAK,EAAI,CAFK;MAGd,OAAO,EAAE,CAHK;MAId,OAAO,EAAE,CAJK;MAKd,OAAO,EAAE,CALK;MAMd,OAAO,EAAE,CAAA;KANX,CAAA;;IASA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAV,QAAU,CAAA,EAAA,CAAA,CAAA;MAAA,IAArB,OAAqB,GAAA,IAAA,CAAA;;MAC9B,KAAK,IAAM,KAAX,IAAmB,OAAnB,EAA4B;QAC1B,OAAO,CAAC,KAAD,CAAP,IAAiB,OAAO,CAAC,KAAD,CAAxB,CAAA;OACD;KACF;;IACD,KAAK,IAAM,IAAX,IAAmB,OAAnB,EAA4B;MAC1B,OAAO,CAAC,IAAD,CAAP,IAAiB,QAAQ,CAAC,MAA1B,CAAA;KACD;;IAED,OAAO,OAAP,CAAA;GArJiB;EAwJnB,SAxJmB,EAAA,SAAA,SAAA,CAwJR,KAxJQ,EAwJiD;IAClE,IAAI,CAAE,KAAa,CAAC,MAAhB,IACA,EAAG,KAAoB,CAAC,OAArB,IACA,KAAoB,CAAC,OAArB,CAA6B,MAA7B,GAAsC,CADzC,CADJ,EAEiD;MAC/C,OAAO,IAAP,CAAA;KACD;;IAED,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IAEA,OAAO;MACL,CAAC,EAAE,IADE;MAEL,CAAC,EAAE,IAFE;MAGL,IAAI,EAAE,IAHD;MAIL,GAAG,EAAE,IAJA;MAKL,KAAK,EAAE,IALF;MAML,MAAM,EAAE,IANH;MAOL,KAAK,EAAE,IAAI,GAAG,IAPT;MAQL,MAAM,EAAE,IAAI,GAAG,IAAA;KARjB,CAAA;GArKiB;EAiLnB,aAjLmB,EAAA,SAAA,aAAA,CAiLJ,KAjLI,EAiLG,WAjLH,EAiLc;IAC/B,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IAEA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IAEA,OAAO,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,EAAN,EAAU,EAAV,CAAP,CAAA;GAzLiB;EA4LnB,UA5LmB,EAAA,SAAA,UAAA,CA4LP,KA5LO,EA4LA,WA5LA,EA4LW;IAC5B,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,KAAK,GAAG,GAAA,GAAM,IAAI,CAAC,KAAL,CAAW,EAAX,EAAe,EAAf,CAAN,GAA2B,IAAI,CAAC,EAA9C,CAAA;IAEA,OAAQ,KAAR,CAAA;GApMiB;EAuMnB,cAvMmB,EAAA,SAAA,cAAA,CAuMH,OAvMG,EAuMI;IACrB,OAAO,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,WAAlB,CAAA,GACH,OAAO,CAAC,WADL,GAEH,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,WAAlB,CAAA,GACE,CAAC,SAAD,EAAY,SAAZ,EAAuB,OAAvB,EAAgC,KAAhC,EAAuC,OAAvC,CAAA,CAAgD,OAAO,CAAC,WAAxD,CADF;;MAIE,OAAA,CAAQ,IAAR,CAAa,OAAO,CAAC,IAArB,CAAA,IAA8B,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAArD,GACE,OADF,GAEE,OARR,CAAA;GAxMiB;;EAoNnB,eApNmB,EAAA,SAAA,eAAA,CAoNF,KApNE,EAoNG;IACpB,IAAM,IAAI,GAAG,OAAE,CAAC,IAAH,CAAQ,KAAK,CAAC,YAAd,CAAA,GAA8B,KAAK,CAAC,YAAN,EAA9B,GAAqD,KAAK,CAAC,IAAxE,CAAA;IAEA,OAAO,CACL,QAAQ,CAAC,gBAAT,CAA0B,IAAI,GAAG,IAAI,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,MAAjD,CADK,EAEL,QAAQ,CAAC,gBAAT,CAA0B,KAAK,CAAC,aAAhC,CAFK,CAAP,CAAA;GAvNiB;EA6NnB,SA7NmB,EAAA,SAAA,SAAA,GA6NV;IACP,OAAO;MACL,IAAI,EAAO;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OADjB;MAEL,MAAM,EAAK;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OAFjB;MAGL,SAAS,EAAE,CAAA;KAHb,CAAA;GA9NiB;EAqOnB,aArOmB,EAAA,SAAA,aAAA,CAqOJ,MArOI,EA2OlB;IACC,IAAM,KAAK,GAAG;MACZ,MAAM,EAAN,MADY;;MAEZ,IAAI,IAAJ,GAAQ;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAnB,CAAA;OAFF;;MAGZ,IAAI,MAAJ,GAAU;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAnB,CAAA;OAHJ;;MAIZ,IAAI,SAAJ,GAAa;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,SAAnB,CAAA;OAJP;;MAKZ,IAAI,KAAJ,GAAS;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,CAAxB,CAAA;OALH;;MAMZ,IAAI,KAAJ,GAAS;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,CAAxB,CAAA;OANH;;MAOZ,IAAI,OAAJ,GAAW;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1B,CAAA;OAPL;;MAQZ,IAAI,OAAJ,GAAW;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1B,CAAA;OARL;;MASZ,IAAI,SAAJ,GAAa;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,SAAnB,CAAA;OATP;;MAUZ,IAAI,MAAJ,GAAU;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAnB,CAAA;OAA2B;;KAV7C,CAAA;IAaA,OAAO,KAAP,CAAA;GACD;CA1PH,CAAA;oBA6Pe;;;;;;;;;;;ACpQf,gDAAA;;AACA,IAAA,aAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,mBAAA,GAAA,2BAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,QAAQ,GAAkB,EAAhC,CAAA;AACA,IAAM,OAAO,GAGR,EAHL,CAAA;AAKA,IAAM,eAAe,GAMjB,EANJ,CAAA;AAOA,IAAM,SAAS,GAAe,EAA9B,CAAA;;AAEA,SAAS,GAAT,CAAc,OAAd,EAAoC,IAApC,EAAkD,QAAlD,EAAsE,WAAtE,EAAiG;EAC/F,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAT,CAAiB,OAAjB,CAAnB,CAAA;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,YAAD,CAApB,CAAA;;EAEA,IAAI,CAAC,MAAL,EAAa;IACX,MAAM,GAAG;MACP,MAAM,EAAE,EADD;MAEP,SAAS,EAAE,CAAA;KAFb,CAAA;IAKA,YAAY,GAAG,QAAQ,CAAC,IAAT,CAAc,OAAd,CAAA,GAAyB,CAAxC,CAAA;IACA,OAAO,CAAC,IAAR,CAAa,MAAb,CAAA,CAAA;GACD;;EAED,IAAI,CAAC,MAAM,CAAC,MAAP,CAAc,IAAd,CAAL,EAA0B;IACxB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,GAAsB,EAAtB,CAAA;IACA,MAAM,CAAC,SAAP,EAAA,CAAA;GACD;;EAED,IAAI,CAAC,CAAA,CAAA,EAAA,QAAA,CAAA,QAAA,EAAS,MAAM,CAAC,MAAP,CAAc,IAAd,CAAT,EAA8B,QAA9B,CAAL,EAA8C;IAC5C,OAAO,CAAC,gBAAR,CAAyB,IAAzB,EAA+B,QAA/B,EAAgD,MAAM,CAAC,eAAP,GAAyB,OAAzB,GAAmC,CAAC,CAAC,OAAO,CAAC,OAA7F,CAAA,CAAA;IACA,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,IAApB,CAAyB,QAAzB,CAAA,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAiB,OAAjB,EAAuC,IAAvC,EAAqD,QAArD,EAAkF,WAAlF,EAA6G;EAC3G,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,YAAY,GAAG,QAAQ,CAAC,OAAT,CAAiB,OAAjB,CAArB,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,YAAD,CAAtB,CAAA;;EAEA,IAAI,CAAC,MAAD,IAAW,CAAC,MAAM,CAAC,MAAvB,EAA+B;IAC7B,OAAA;GACD;;EAED,IAAI,IAAI,KAAK,KAAb,EAAoB;IAClB,KAAK,IAAL,IAAa,MAAM,CAAC,MAApB,EAA4B;MAC1B,IAAI,MAAM,CAAC,MAAP,CAAc,cAAd,CAA6B,IAA7B,CAAJ,EAAwC;QACtC,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,KAAhB,CAAN,CAAA;OACD;KACF;;IACD,OAAA;GACD;;EAED,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAJ,EAAyB;IACvB,IAAM,GAAG,GAAG,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAAhC,CAAA;;IAEA,IAAI,QAAQ,KAAK,KAAjB,EAAwB;MACtB,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAApB,EAAyB,CAAC,EAA1B,EAA8B;QAC5B,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,CAApB,CAAhB,EAAwC,OAAxC,CAAN,CAAA;OACD;;MACD,OAAA;KAJF,MAMK;MACH,KAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,GAApB,EAAyB,EAAC,EAA1B,EAA8B;QAC5B,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,EAApB,CAAA,KAA2B,QAA/B,EAAyC;UACvC,OAAO,CAAC,mBAAR,CAA4B,IAA5B,EAAkC,QAAlC,EAAmD,MAAM,CAAC,eAAP,GAAyB,OAAzB,GAAmC,CAAC,CAAC,OAAO,CAAC,OAAhG,CAAA,CAAA;UACA,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAApB,CAA2B,EAA3B,EAA8B,CAA9B,CAAA,CAAA;UAEA,MAAA;SACD;OACF;KACF;;IAED,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,IAAuB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAApB,KAA+B,CAA1D,EAA6D;MAC1D,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,GAA8B,IAA9B,CAAA;MACD,MAAM,CAAC,SAAP,EAAA,CAAA;KACD;GACF;;EAED,IAAI,CAAC,MAAM,CAAC,SAAZ,EAAuB;IACrB,OAAO,CAAC,MAAR,CAAe,YAAf,EAA6B,CAA7B,CAAA,CAAA;IACA,QAAQ,CAAC,MAAT,CAAgB,YAAhB,EAA8B,CAA9B,CAAA,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAsB,QAAtB,EAAwC,OAAxC,EAA8D,IAA9D,EAA4E,QAA5E,EAAgG,WAAhG,EAAiH;EAC/G,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;;EACA,IAAI,CAAC,eAAe,CAAC,IAAD,CAApB,EAA4B;IAC1B,eAAe,CAAC,IAAD,CAAf,GAAwB;MACtB,QAAQ,EAAG,EADW;MAEtB,SAAS,EAAE,EAFW;MAGtB,SAAS,EAAE,EAAA;KAHb,CAD0B;;IAQ1B,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkB,SAAlB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA6B;MAAxB,IAAM,GAAG,GAAI,SAAJ,CAAA,GAAA,CAAT,CAAA;MACH,GAAG,CAAC,GAAD,EAAM,IAAN,EAAY,gBAAZ,CAAH,CAAA;MACA,GAAG,CAAC,GAAD,EAAM,IAAN,EAAY,kBAAZ,EAAgC,IAAhC,CAAH,CAAA;KACD;GACF;;EAED,IAAM,SAAS,GAAG,eAAe,CAAC,IAAD,CAAjC,CAAA;EACA,IAAI,KAAJ,CAAA;;EAEA,KAAK,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAApB,GAA6B,CAA1C,EAA6C,KAAK,IAAI,CAAtD,EAAyD,KAAK,EAA9D,EAAkE;IAChE,IAAI,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,KAA+B,QAA/B,IACA,SAAS,CAAC,QAAV,CAAmB,KAAnB,CAAA,KAA8B,OADlC,EAC2C;MACzC,MAAA;KACD;GACF;;EAED,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;IAChB,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAA5B,CAAA;IAEA,SAAS,CAAC,SAAV,CAAoB,IAApB,CAAyB,QAAzB,CAAA,CAAA;IACA,SAAS,CAAC,QAAV,CAAmB,IAAnB,CAAwB,OAAxB,CAAA,CAAA;IACA,SAAS,CAAC,SAAV,CAAoB,IAApB,CAAyB,EAAzB,CAAA,CAAA;GA/B6G;;;EAmC/G,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,CAA2B,IAA3B,CAAgC,CAAC,QAAD,EAAW,CAAC,CAAC,OAAO,CAAC,OAArB,EAA8B,OAAO,CAAC,OAAtC,CAAhC,CAAA,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,QAAzB,EAAmC,OAAnC,EAA4C,IAA5C,EAAkD,QAAlD,EAA6D,WAA7D,EAA8E;EAC5E,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,SAAS,GAAG,eAAe,CAAC,IAAD,CAAjC,CAAA;EACA,IAAI,UAAU,GAAG,KAAjB,CAAA;EACA,IAAI,KAAJ,CAAA;;EAEA,IAAI,CAAC,SAAL,EAAgB;IAAE,OAAA;GAN0D;;;EAS5E,KAAK,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAApB,GAA6B,CAA1C,EAA6C,KAAK,IAAI,CAAtD,EAAyD,KAAK,EAA9D,EAAkE;;IAEhE,IAAI,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,KAA+B,QAA/B,IACA,SAAS,CAAC,QAAV,CAAmB,KAAnB,CAAA,KAA8B,OADlC,EAC2C;MACzC,IAAM,SAAS,GAAG,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAlB,CADyC;;MAIzC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAV,GAAmB,CAAhC,EAAmC,CAAC,IAAI,CAAxC,EAA2C,CAAC,EAA5C,EAAgD;QAAA,IAAA,YAAA,GAAA,cAAA,CACf,SAAS,CAAC,CAAD,CADM,EAAA,CAAA,CAAA;YACvC,EADuC,GAAA,YAAA,CAAA,CAAA,CAAA;YACnC,OADmC,GAAA,YAAA,CAAA,CAAA,CAAA;YAC1B,OAD0B,GAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;QAI9C,IAAI,EAAE,KAAK,QAAP,IAAmB,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAzC,IAAoD,OAAO,KAAK,OAAO,CAAC,OAA5E,EAAqF;;UAEnF,SAAS,CAAC,MAAV,CAAiB,CAAjB,EAAoB,CAApB,CAAA,CAFmF;;;UAMnF,IAAI,CAAC,SAAS,CAAC,MAAf,EAAuB;YACrB,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,KAA3B,EAAkC,CAAlC,CAAA,CAAA;YACA,SAAS,CAAC,QAAV,CAAmB,MAAnB,CAA0B,KAA1B,EAAiC,CAAjC,CAAA,CAAA;YACA,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,KAA3B,EAAkC,CAAlC,CAAA,CAHqB;;YAMrB,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,gBAAhB,CAAN,CAAA;YACA,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,kBAAhB,EAAoC,IAApC,CAAN,CAPqB;;YAUrB,IAAI,CAAC,SAAS,CAAC,SAAV,CAAoB,MAAzB,EAAiC;cAC/B,eAAe,CAAC,IAAD,CAAf,GAAwB,IAAxB,CAAA;aACD;WAlBgF;;;UAsBnF,UAAU,GAAG,IAAb,CAAA;UACA,MAAA;SACD;OACF;;MAED,IAAI,UAAJ,EAAgB;QAAE,MAAA;OAAO;KAC1B;GACF;;;;;AAKH,SAAS,gBAAT,CAA2B,KAA3B,EAAyC,WAAzC,EAA0D;EACxD,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,SAAS,GAAG,IAAI,SAAJ,CAAc,KAAd,CAAlB,CAAA;EACA,IAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAP,CAAjC,CAAA;;EAHwD,IAAA,qBAAA,GAIjC,aAAA,CAAA,SAAA,CAAA,CAAa,eAAb,CAA6B,KAA7B,CAJiC;MAAA,sBAAA,GAAA,cAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;MAIjD,WAJiD,GAAA,sBAAA,CAAA,CAAA,CAAA,CAAA;;EAKxD,IAAI,OAAO,GAAG,WAAd,CALwD;;EAQxD,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,SAAV,CAAoB,MAAxC,EAAgD,CAAC,EAAjD,EAAqD;MACnD,IAAM,QAAQ,GAAG,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAjB,CAAA;MACA,IAAM,OAAO,GAAG,SAAS,CAAC,QAAV,CAAmB,CAAnB,CAAhB,CAAA;;MAEA,IAAI,aAAQ,CAAC,eAAT,CAAyB,OAAzB,EAAkC,QAAlC,CAAA,IACA,aAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,WAA/B,CADA,IAEA,aAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,OAA/B,CAFJ,EAE6C;QAC3C,IAAM,SAAS,GAAG,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAlB,CAAA;QAEA,SAAS,CAAC,aAAV,GAA0B,OAA1B,CAAA;;QAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqC,SAArC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAgD;UAAA,IAAA,IAAA,CAAA;;UAAA,IAAA,GAAX,SAAW,CAAA,GAAA,CAAA,CAAA;;UAAA,IAAA,KAAA,GAAA,IAAA;cAAA,KAAA,GAAA,cAAA,CAAA,KAAA,EAAA,CAAA,CAAA;cAApC,EAAoC,GAAA,KAAA,CAAA,CAAA,CAAA;cAAhC,OAAgC,GAAA,KAAA,CAAA,CAAA,CAAA;cAAvB,OAAuB,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;UAC9C,IAAI,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAtB,IAAiC,OAAO,KAAK,OAAO,CAAC,OAAzD,EAAkE;YAChE,EAAE,CAAC,SAAD,CAAF,CAAA;WACD;SACF;OACF;KACF;;IAED,OAAO,GAAG,aAAQ,CAAC,UAAT,CAAoB,OAApB,CAAV,CAAA;GACD;CACF;;AAED,SAAS,kBAAT,CAA6B,KAA7B,EAAyC;EACvC,OAAO,gBAAgB,CAAC,IAAjB,CAAsB,IAAtB,EAA4B,KAA5B,EAAmC,IAAnC,CAAP,CAAA;CACD;;AAED,SAAS,UAAT,CAAqB,KAArB,EAA0B;EACxB,OAAO,OAAE,CAAC,MAAH,CAAU,KAAV,CAAA,GAAmB,KAAnB,GAA2B;IAAE,OAAO,EAAE,KAAA;GAA7C,CAAA;CACD;;IAEY;;;EAGX,SAAA,SAAA,CAAoB,aAApB,EAAiC;IAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IAAb,IAAA,CAAA,aAAA,GAAA,aAAA,CAAa;;IAE/B,CAAA,CAAA,EAAA,mBAAA,CAAA,SAAA,CAAA,EAAQ,IAAR,EAAc,aAAd,CAAA,CAAA;GACD;;;;6CAEqB;MACpB,IAAA,CAAK,aAAL,CAAmB,cAAnB,EAAA,CAAA;KACD;;;sCAEc;MACb,IAAA,CAAK,aAAL,CAAmB,eAAnB,EAAA,CAAA;KACD;;;+CAEuB;MACtB,IAAA,CAAK,aAAL,CAAmB,wBAAnB,EAAA,CAAA;KACD;;;;;;;AAGH,IAAM,MAAM,GAAG;EACb,GAAG,EAAH,GADa;EAEb,MAAM,EAAN,WAFa;EAIb,WAAW,EAAX,WAJa;EAKb,cAAc,EAAd,cALa;EAOb,gBAAgB,EAAhB,gBAPa;EAQb,kBAAkB,EAAlB,kBARa;EASb,eAAe,EAAf,eATa;EAUb,SAAS,EAAT,SAVa;EAYb,eAAe,EAAE,KAZJ;EAab,eAAe,EAAE,KAbJ;EAeb,SAAS,EAAE,QAfE;EAgBb,QAAQ,EAAE,OAhBG;EAkBb,IAlBa,EAAA,SAAA,IAAA,CAkBP,MAlBO,EAkBO;IAClB,MAAM,CAAC,QAAP,CAAgB,aAAhB,CAA8B,KAA9B,CAAA,CAAqC,gBAArC,CAAsD,MAAtD,EAA8D,IAA9D,EAAoE;MAClE,IAAI,OAAJ,GAAW;QAAM,OAAQ,MAAM,CAAC,eAAP,GAAyB,IAAjC,CAAA;OADiD;;MAElE,IAAI,OAAJ,GAAW;QAAM,OAAQ,MAAM,CAAC,eAAP,GAAyB,IAAjC,CAAA;OAAwC;;KAF3D,CAAA,CAAA;GAID;CAvBH,CAAA;oBA0Be;;;;;;;;;;;ACtRf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,wBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;AACA,sEAAA;;AAEA,IAAA,UAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;;;;;;;;;;;;IAMa;;;;EAkBX,SAAA,YAAA,CAAa,MAAb,EAAsC,OAAtC,EAAoD,cAApD,EAAsF;IAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;IAN7E,IAAA,CAAA,MAAA,GAAS,IAAI,UAAA,CAAA,SAAA,CAAJ,EAAT,CAAA;IAOP,IAAA,CAAK,QAAL,GAAgB,OAAO,CAAC,OAAxB,CAAA;IACA,IAAA,CAAK,MAAL,GAAgB,MAAhB,CAAA;IACA,IAAA,CAAK,QAAL,GAAgB,OAAO,CAAC,OAAR,IAAmB,cAAnC,CAAA;IACA,IAAA,CAAK,IAAL,GAAgB,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,MAAZ,CAAA,GAAsB,IAAA,CAAK,QAA3B,GAAsC,MAAhD,CAAhB,CAAA;IACA,IAAA,CAAK,IAAL,GAAgB,IAAA,CAAK,IAAL,CAAU,QAA1B,CAAA;IAEA,IAAA,CAAK,GAAL,CAAS,OAAT,CAAA,CAAA;GACD;;;;gCAEY,YAAoB,QAAwB;MACvD,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,OAAf,CAAJ,EAA6B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,OAAA,CAAA,EAA8B,MAAM,CAAC,OAArC,CAAA,CAAA;OAA+C;;MAC9E,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,MAAf,CAAJ,EAA4B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,MAAA,CAAA,EAA6B,MAAM,CAAC,MAApC,CAAA,CAAA;OAA6C;;MAC3E,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,KAAf,CAAJ,EAA2B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,KAAA,CAAA,EAA4B,MAAM,CAAC,KAAnC,CAAA,CAAA;OAA2C;;MACxE,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,cAAf,CAAJ,EAAoC;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,cAAA,CAAA,EAAqC,MAAM,CAAC,cAA5C,CAAA,CAAA;OAA6D;;MAEnG,OAAO,IAAP,CAAA;KACD;;;6CAEyB,YAAY,MAAM,KAAG;MAC7C,IAAI,OAAE,CAAC,KAAH,CAAS,IAAT,CAAJ,EAAoB;QAClB,IAAA,CAAK,GAAL,CAAS,UAAT,EAAqB,IAArB,CAAA,CAAA;OACD;;MAED,IAAI,OAAE,CAAC,KAAH,CAAS,GAAT,CAAJ,EAAmB;QACjB,IAAA,CAAK,EAAL,CAAQ,UAAR,EAAoB,GAApB,CAAA,CAAA;OACD;KACF;;;iCAEa,YAAY,SAAoC;MAC5D,IAAM,QAAQ,GAAG,IAAA,CAAK,SAAtB,CAD4D;;MAI5D,KAAK,IAAM,UAAX,IAAyB,OAAzB,EAAkC;QAChC,IAAM,aAAa,GAAG,IAAA,CAAK,OAAL,CAAa,UAAb,CAAtB,CAAA;QACA,IAAM,WAAW,GAAG,OAAO,CAAC,UAAD,CAA3B,CAAA;QACA,IAAM,OAAO,GAAG,OAAE,CAAC,KAAH,CAAS,WAAT,CAAhB,CAHgC;;QAMhC,IAAI,UAAU,KAAK,WAAnB,EAAgC;UAC9B,IAAA,CAAK,wBAAL,CAA8B,UAA9B,EAA0C,aAAa,CAAC,SAAxD,EAAmE,WAAnE,CAAA,CAAA;SAP8B;;;QAWhC,IAAI,OAAJ,EAAa;UACX,aAAa,CAAC,UAAD,CAAb,GAA4B,QAAG,CAAC,IAAJ,CAAS,WAAT,CAA5B,CAAA;SADF;aAIK,IAAI,CAAC,OAAD,IAAY,OAAE,CAAC,WAAH,CAAe,WAAf,CAAhB,EAA6C;;YAEhD,aAAa,CAAC,UAAD,CAAb,GAA4B,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAC1B,aAAa,CAAC,UAAD,CAAb,IAA6B,EADH,EAE1B,CAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAM,WAAN,CAF0B,CAA5B,CAFgD;;YAOhD,IAAI,OAAE,CAAC,MAAH,CAAU,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAAV,CAAA,IAA6C,SAAA,IAAa,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAA9D,EAA8F;cAC5F,aAAa,CAAC,UAAD,CAAb,CAA0B,OAA1B,GAAoC,WAAW,CAAC,OAAZ,KAAwB,KAA5D,CAAA;aACD;WATE;eAYA,IAAI,OAAE,CAAC,IAAH,CAAQ,WAAR,CAAA,IAAwB,OAAE,CAAC,MAAH,CAAU,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAAV,CAA5B,EAAuE;cAC1E,aAAa,CAAC,UAAD,CAAb,CAA0B,OAA1B,GAAoC,WAApC,CAAA;aADG;iBAIA;gBACH,aAAa,CAAC,UAAD,CAAb,GAA4B,WAA5B,CAAA;eACD;OACF;KACF;;;;;;;;;;;4BASQ,SAAgB;MACvB,OAAO,GAAG,OAAO,KAAK,OAAE,CAAC,OAAH,CAAW,IAAA,CAAK,MAAhB,CAAA,GAClB,IAAA,CAAK,MADa,GAElB,IAFa,CAAjB,CAAA;;MAIA,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;QAC1B,OAAO,GAAG,OAAO,IAAI,IAAA,CAAK,QAAL,CAAc,aAAd,CAA4B,IAAA,CAAK,MAAjC,CAArB,CAAA;OACD;;MAED,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,cAAA,EAAe,OAAf,CAAP,CAAA;KACD;;;;;;;;;;;;gCAUY,SAAkC;MAC7C,IAAI,OAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;QACpB,IAAA,CAAK,OAAL,GAAe,OAAf,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,OAAO,KAAK,IAAhB,EAAsB;QACpB,OAAO,IAAA,CAAK,OAAZ,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAZ,CAAA;KACD;;;sCAEkB,YAAY,UAAQ;MACrC,IAAI,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,QAAZ,CAAA,IAAyB,OAAE,CAAC,MAAH,CAAU,QAAV,CAA7B,EAAkD;QAChD,IAAA,CAAK,OAAL,CAAa,UAAb,CAAA,GAA2B,QAA3B,CAAA;;QAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,IAAA,CAAK,QAAL,CAAc,KAAnC,CAAA,MAAA,EAAA,EAAA,EAAA,EAA0C;UAAA,IAAA,IAAA,CAAA;;UAAA,IAAA,GAArB,IAAA,CAAK,QAAL,CAAc,KAAO,CAAA,EAAA,CAAA,CAAA;UAAA,IAA/B,MAA+B,GAAA,IAAA,CAAA;UACxC,IAAA,CAAK,OAAL,CAAa,MAAb,CAAA,CAAqB,UAArB,CAAA,GAAmC,QAAnC,CAAA;SACD;;QAED,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAL,CAAa,UAAb,CAAP,CAAA;KACD;;;;;;;;;;;;;;2BAYO,UAAQ;MACd,OAAO,IAAA,CAAK,iBAAL,CAAuB,QAAvB,EAAiC,QAAjC,CAAP,CAAA;KACD;;;;;;;;;;;;gCAUY,UAAQ;MACnB,IAAI,QAAQ,KAAK,MAAb,IAAuB,QAAQ,KAAK,QAAxC,EAAkD;QAChD,IAAA,CAAK,OAAL,CAAa,WAAb,GAA2B,QAA3B,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;KACD;;;;;;;;;;8BAQM;MACL,OAAO,IAAA,CAAK,QAAZ,CAAA;KACD;;;8BAEU,SAAO;MAChB,OAAQ,IAAA,CAAK,QAAL,KAAkB,OAAO,CAAC,aAA1B,IACA,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,IAAA,CAAK,QAAlB,EAA4B,OAA5B,CADR,CAAA;KAED;;;oCAEoC,SAA8D,qBAA8B,aAAoB;MACnJ,OAAQ,CAAC,IAAA,CAAK,UAAL,CAAgB,OAAO,CAAC,UAAxB,EAAoC,mBAApC,EAAyD,WAAzD,CAAD,IACA,IAAA,CAAK,SAAL,CAAe,OAAO,CAAC,SAAvB,EAAkC,mBAAlC,EAAuD,WAAvD,CADR,CAAA;KAED;;;8BAE8B,WAAwB,qBAA8B,SAAgB;MACnG,IAAI,CAAC,SAAL,EAAgB;QAAE,OAAO,IAAP,CAAA;OAAa;;MAE/B,IAAI,CAAC,OAAE,CAAC,OAAH,CAAW,OAAX,CAAL,EAA0B;QAAE,OAAO,KAAP,CAAA;OAAc;;MAE1C,IAAI,OAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;QACxB,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,OAAZ,EAAqB,SAArB,EAAgC,mBAAhC,CAAP,CAAA;OADF,MAGK,IAAI,OAAE,CAAC,OAAH,CAAW,SAAX,CAAJ,EAA2B;QAC9B,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,SAAb,EAAwB,OAAxB,CAAP,CAAA;OACD;;MAED,OAAO,KAAP,CAAA;KACD;;;+BAE+B,YAAyB,qBAA8B,SAAgB;MACrG,IAAI,CAAC,UAAD,IAAe,CAAC,OAAE,CAAC,OAAH,CAAW,OAAX,CAApB,EAAyC;QAAE,OAAO,KAAP,CAAA;OAAc;;MAEzD,IAAI,OAAE,CAAC,MAAH,CAAU,UAAV,CAAJ,EAA2B;QACzB,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,OAAZ,EAAqB,UAArB,EAAiC,mBAAjC,CAAP,CAAA;OADF,MAGK,IAAI,OAAE,CAAC,OAAH,CAAW,UAAX,CAAJ,EAA4B;QAC/B,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,UAAb,EAAyB,OAAzB,CAAP,CAAA;OACD;;MAED,OAAO,KAAP,CAAA;KACD;;;;;;;;;;;;yBAUK,QAAM;MACV,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAA,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;2BAEO,QAAsB,SAA8B,aAA4C,SAAa;MACnH,IAAI,OAAE,CAAC,MAAH,CAAU,OAAV,CAAA,IAAsB,CAAC,OAAE,CAAC,KAAH,CAAS,OAAT,CAA3B,EAA8C;QAC5C,OAAO,GAAG,WAAV,CAAA;QACA,WAAW,GAAG,IAAd,CAAA;OACD;;MAED,IAAM,SAAS,GAAG,MAAM,KAAK,IAAX,GAAkB,KAAlB,GAA0B,QAA5C,CAAA;MACA,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,wBAAA,CAAA,SAAA,CAAA,EAAmB,OAAnB,EAA4B,WAA5B,CAAlB,CAAA;;MAEA,KAAK,IAAI,IAAT,IAAiB,SAAjB,EAA4B;QAC1B,IAAI,IAAI,KAAK,OAAb,EAAsB;UAAE,IAAI,GAAG,aAAA,CAAA,SAAA,CAAA,CAAQ,UAAf,CAAA;SAA2B;;QAEnD,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAuB,SAAS,CAAC,IAAD,CAAhC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAwC;UAAA,IAAA,KAAA,CAAA;;UAAA,KAAA,GAAjB,SAAS,CAAC,IAAD,CAAQ,CAAA,GAAA,CAAA,CAAA;UAAA,IAA7B,QAA6B,GAAA,KAAA,CAAA;;;UAEtC,IAAI,QAAG,CAAC,QAAJ,CAAa,IAAA,CAAK,QAAL,CAAc,UAA3B,EAAuC,IAAvC,CAAJ,EAAkD;YAChD,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAA,CAAoB,IAApB,EAA0B,QAA1B,CAAA,CAAA;WADF;eAIK,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;cAC/B,OAAA,CAAA,SAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAU,SAAV,EAAA,UAAA,CAAA,CAAA,CAA+B,IAAA,CAAK,MAApC,EAA4C,IAAA,CAAK,QAAjD,EAA2D,IAA3D,EAAiE,QAAjE,EAA2E,OAA3E,CAAA,CAAA;aADG;iBAIA;gBACF,OAAA,CAAA,SAAA,CAAA,CAAO,SAAP,CAAA,CAA2C,IAAA,CAAK,MAAhD,EAAwD,IAAxD,EAA8D,QAA9D,EAAwE,OAAxE,CAAA,CAAA;eACF;SACF;OACF;;MAED,OAAO,IAAP,CAAA;KACD;;;;;;;;;;;;;;uBAYG,OAA4B,UAAkC,SAAa;MAC7E,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,EAAkB,KAAlB,EAAyB,QAAzB,EAAmC,OAAnC,CAAP,CAAA;KACD;;;;;;;;;;;;;;wBAYI,OAAgD,UAAkC,SAAa;MAClG,OAAO,IAAA,CAAK,MAAL,CAAY,KAAZ,EAAmB,KAAnB,EAA0B,QAA1B,EAAoC,OAApC,CAAP,CAAA;KACD;;;;;;;;;;wBAQI,SAA4B;MAC/B,IAAM,QAAQ,GAAG,IAAA,CAAK,SAAtB,CAAA;;MAEA,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,OAAV,CAAL,EAAyB;QACvB,OAAO,GAAG,EAAV,CAAA;OACD;;MAEA,IAAA,CAAK,OAAL,GAAqC,CAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAM,QAAQ,CAAC,IAAf,CAArC,CAAA;;MAED,KAAK,IAAM,UAAX,IAAyB,IAAA,CAAK,QAAL,CAAc,UAAvC,EAAmD;QACjD,IAAM,UAAU,GAAG,IAAA,CAAK,QAAL,CAAc,UAAd,CAAyB,UAAzB,CAAnB,CAAA;QAEA,IAAA,CAAK,OAAL,CAAa,UAAb,CAAA,GAA2B,EAA3B,CAAA;QACA,IAAA,CAAK,YAAL,CAAkB,UAAlB,EAA8B,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,QAAQ,CAAC,SAApB,CAAP,EAAuC,QAAQ,CAAC,OAAT,CAAiB,UAAjB,CAAvC,CAA9B,CAAA,CAAA;QAEA,IAAA,CAAK,UAAL,CAAA,CAAiB,OAAO,CAAC,UAAD,CAAxB,CAAA,CAAA;OACD;;MAED,KAAK,IAAM,OAAX,IAAsB,OAAtB,EAA+B;QAC7B,IAAI,OAAE,CAAC,IAAH,CAAQ,IAAA,CAAK,OAAL,CAAR,CAAJ,EAA4B;UAC1B,IAAA,CAAK,OAAL,CAAA,CAAc,OAAO,CAAC,OAAD,CAArB,CAAA,CAAA;SACD;OACF;;MAED,OAAO,IAAP,CAAA;KACD;;;;;;;;;;4BAQI;MACH,OAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,MAAnB,EAAmC,KAAnC,CAAA,CAAA;;MAEA,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;;QAE1B,KAAK,IAAM,IAAX,IAAmB,OAAA,CAAA,SAAA,CAAA,CAAO,eAA1B,EAA2C;UACzC,IAAM,SAAS,GAAG,OAAA,CAAA,SAAA,CAAA,CAAO,eAAP,CAAuB,IAAvB,CAAlB,CAAA;;UAEA,IAAI,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAA,KAA2B,IAAA,CAAK,MAAhC,IACA,SAAS,CAAC,QAAV,CAAmB,CAAnB,CAAA,KAA0B,IAAA,CAAK,QADnC,EAC6C;YAC3C,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,CAAA,CAAA;YACA,SAAS,CAAC,QAAV,CAAmB,MAAnB,CAA0B,CAA1B,EAA6B,CAA7B,CAAA,CAAA;YACA,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,CAAA,CAH2C;;YAM3C,IAAI,CAAC,SAAS,CAAC,SAAV,CAAoB,MAAzB,EAAiC;cAC/B,SAAS,CAAC,IAAD,CAAT,GAAkB,IAAlB,CAAA;aACD;WACF;;UAED,OAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,QAAnB,EAA6B,IAA7B,EAAmC,OAAA,CAAA,SAAA,CAAA,CAAO,gBAA1C,CAAA,CAAA;;UACA,OAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,QAAnB,EAA6B,IAA7B,EAAmC,OAAA,CAAA,SAAA,CAAA,CAAO,kBAA1C,EAA8D,IAA9D,CAAA,CAAA;SACD;OAnBH,MAqBK;QACH,OAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,MAAnB,EAAmC,KAAnC,CAAA,CAAA;OACD;KACF;;;wBA3WsB;MACrB,OAAO;QACL,IAAI,EAAE,EADD;QAEL,SAAS,EAAE,EAFN;QAGL,OAAO,EAAE,EAAA;OAHX,CAAA;KAKD;;;;;;;oBAwWY;;;;;;;;;;;;;IC/XF,cACX,SAAA,WAAA,CACS,EADT,EAES,OAFT,EAGS,KAHT,EAIS,QAJT,EAKS,UALT,EAKgC;EAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;EAJvB,IAAA,CAAA,EAAA,GAAA,EAAA,CAAA;EACA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;EACA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;EACA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;EACA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;;;;oBAII;;;;;;;;;;;;;;;;;ICKT;;;EAAN,SAAA,OAAA,GAAA;IAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;IACE,IAAA,CAAA,SAAA,GAEI,EAFJ,CAAA;GAkCD;;;;uBA9BK,MAAc,UAAwB;MACxC,IAAI,CAAC,IAAA,CAAK,SAAL,CAAe,IAAf,CAAL,EAA2B;QACzB,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,GAAuB,CAAC,QAAD,CAAvB,CAAA;QACA,OAAA;OACD;;MAED,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,IAArB,CAA0B,QAA1B,CAAA,CAAA;KACD;;;wBAEI,MAAc,UAAwB;MACzC,IAAI,CAAC,IAAA,CAAK,SAAL,CAAe,IAAf,CAAL,EAA2B;QAAE,OAAA;OAAQ;;MAErC,IAAM,KAAK,GAAG,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,OAArB,CAA6B,QAA7B,CAAd,CAAA;;MAEA,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;QAChB,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,MAArB,CAA4B,KAA5B,EAAmC,CAAnC,CAAA,CAAA;OACD;KACF;;;yBAEK,MAAc,KAAuB;MACzC,IAAM,eAAe,GAAG,IAAA,CAAK,SAAL,CAAe,IAAf,CAAxB,CAAA;;MAEA,IAAI,CAAC,eAAL,EAAsB;QAAE,OAAA;OAAQ;;MAEhC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,eAAvB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;QAAA,IAAA,IAAA,CAAA;;QAAA,IAAA,GAAjB,eAAiB,CAAA,EAAA,CAAA,CAAA;QAAA,IAA7B,QAA6B,GAAA,IAAA,CAAA;;QACtC,IAAI,QAAQ,CAAC,GAAD,EAAM,IAAN,CAAR,KAAwB,KAA5B,EAAmC;UACjC,OAAO,KAAP,CAAA;SACD;OACF;KACF;;;;;;oBAGY;;;;;;;;;;ACpDf,IAAI,QAAQ,GAAG,CAAf,CAAA;;AACA,IAAI,QAAJ,CAAA;;AACA,IAAI,OAAJ,CAAA;;AAEA,SAAS,SAAT,CAAe,MAAf,EAAqB;EACnB,QAAO,GAAG,MAAM,CAAC,qBAAjB,CAAA;EACA,OAAM,GAAG,MAAM,CAAC,oBAAhB,CAAA;;EAEA,IAAI,CAAC,QAAL,EAAc;IACZ,IAAM,OAAO,GAAG,CAAC,IAAD,EAAO,KAAP,EAAc,QAAd,EAAwB,GAAxB,CAAhB,CAAA;;IAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;MAAzB,IAAM,MAAM,GAAI,OAAJ,CAAA,EAAA,CAAZ,CAAA;MACH,QAAO,GAAG,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,uBAAA,CAAA,CAAhB,CAAA;MACA,OAAM,GAAG,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,sBAAA,CAAA,CAAN,IAA2C,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,6BAAA,CAAA,CAA1D,CAAA;KACD;GACF;;EAED,IAAI,CAAC,QAAL,EAAc;IACZ,QAAO,GAAG,SAAA,OAAA,CAAC,QAAD,EAAa;MACrB,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAL,EAAjB,CAAA;MACA,IAAM,UAAU,GAAG,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,EAAA,IAAM,QAAQ,GAAG,QAAjB,CAAZ,CAAnB,CAFqB;;MAIrB,IAAM,KAAK,GAAG,UAAU,CAAC,YAAK;QAAG,QAAQ,CAAC,QAAQ,GAAG,UAAZ,CAAR,CAAA;OAAT,EACtB,UADsB,CAAxB,CAAA;MAGA,QAAQ,GAAG,QAAQ,GAAG,UAAtB,CAAA;MACA,OAAO,KAAP,CAAA;KARF,CAAA;;IAWA,OAAM,GAAG,SAAA,MAAA,CAAC,KAAD,EAAA;MAAA,OAAW,YAAY,CAAC,KAAD,CAAvB,CAAA;KAAT,CAAA;GACD;CACF;;oBAEc;EACb,OAAO,EAAE,SAAA,OAAA,CAAC,QAAD,EAAA;IAAA,OAAc,QAAO,CAAC,QAAD,CAArB,CAAA;GADI;EAEb,MAAM,EAAE,SAAA,MAAA,CAAC,KAAD,EAAA;IAAA,OAAW,OAAM,CAAC,KAAD,CAAjB,CAAA;GAFK;EAGb,IAAI,EAAJ,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCF,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;;;AACA,IAAA,GAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AA4CA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,iBAAA,GAAA,2BAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,wBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,IAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;AApDM,SAAU,QAAV,CAAgC,MAAhC,EAA+D,OAA/D,EAA8E;EAClF,IAAI,MAAM,GAAG,KAAb,CADkF;;EAIlF,OAAO,YAAA;IACL,IAAI,CAAC,MAAL,EAAa;MACV,YAAA,CAAA,SAAA,CAAA,CAAY,MAAZ,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,OAAhC,CAAA,CAAA;;MACD,MAAM,GAAG,IAAT,CAAA;KACD;;IAED,OAAO,MAAM,CAAC,KAAP,CAAa,IAAb,EAAmB,SAAnB,CAAP,CAAA;GANF,CAAA;;;;AAWI,SAAU,gBAAV,CAA4B,CAA5B,EAAuC,EAAvC,EAAmD,EAAnD,EAA+D,EAA/D,EAAyE;EAC7E,IAAM,EAAE,GAAG,CAAA,GAAI,CAAf,CAAA;EACA,OAAO,EAAE,GAAG,EAAL,GAAU,EAAV,GAAe,CAAA,GAAI,EAAJ,GAAS,CAAT,GAAa,EAA5B,GAAiC,CAAC,GAAG,CAAJ,GAAQ,EAAhD,CAAA;CACD;;AAEK,SAAU,sBAAV,CACJ,MADI,EACY,MADZ,EAC4B,GAD5B,EACyC,GADzC,EACsD,IADtD,EACoE,IADpE,EACkF,QADlF,EACkG;EACtG,OAAO;IACL,CAAC,EAAG,gBAAgB,CAAC,QAAD,EAAW,MAAX,EAAmB,GAAnB,EAAwB,IAAxB,CADf;IAEL,CAAC,EAAG,gBAAgB,CAAC,QAAD,EAAW,MAAX,EAAmB,GAAnB,EAAwB,IAAxB,CAAA;GAFtB,CAAA;;;;AAOI,SAAU,WAAV,CAAuB,CAAvB,EAAkC,CAAlC,EAA6C,CAA7C,EAAwD,CAAxD,EAAiE;EACrE,CAAC,IAAI,CAAL,CAAA;EACA,OAAO,CAAC,CAAD,GAAK,CAAL,IAAU,CAAC,GAAG,CAAd,CAAA,GAAmB,CAA1B,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAAkD,GAAlD,EAA2E;EAC/E,IAAI,CAAC,IAAL,GAAa,GAAG,CAAC,IAAjB,CAAA;EACA,IAAI,CAAC,IAAL,GAAa,GAAG,CAAC,IAAjB,CAAA;EACA,IAAI,CAAC,KAAL,GAAa,GAAG,CAAC,KAAjB,CAAA;EAEA,OAAO,IAAP,CAAA;CACD;;;;;;;;;;AC7CD,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;;;AAYA,IAAM,MAAM,GAAG;EACb,WAAW,EAAE,CAAE,kBAAF,EAAsB,YAAtB,EAAoC,YAApC,EAAkD,MAAlD,CADA;EAGb,MAHa,EAAA,SAAA,MAAA,CAGL,OAHK,EAGE;IACb,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,MAAM,CAAC,WAA5B,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAApB,MAAM,CAAC,WAAa,CAAA,EAAA,CAAA,CAAA;MAAA,IAA9B,MAA8B,GAAA,IAAA,CAAA;MACvC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAD,CAAN,CAAe,OAAf,CAApB,CAAA;;MAEA,IAAI,WAAJ,EAAiB;QACf,OAAO,WAAP,CAAA;OACD;KACF;GAVU;;EAcb,gBAda,EAAA,SAAA,gBAAA,CAAA,KAAA,EAckE;IAAA,IAA3D,WAA2D,GAAA,KAAA,CAA3D,WAA2D;QAA9C,SAA8C,GAAA,KAAA,CAA9C,SAA8C;QAAnC,WAAmC,GAAA,KAAA,CAAnC,WAAmC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IAC7E,IAAI,CAAC,aAAA,CAAc,IAAd,CAAmB,SAAnB,CAAL,EAAoC;MAClC,OAAO,IAAP,CAAA;KACD;;IAED,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;MACjD,IAAI,OAAO,GAAG,WAAd,CAAA;;MAEA,IAAI,WAAW,CAAC,UAAZ,IAA0B,WAAW,CAAC,UAAZ,CAAuB,WAAjD,IACC,WAAW,CAAC,WAAZ,KAA4B,WADjC,EAC+C;QAC7C,OAAO,OAAP,EAAgB;;UAEd,IAAI,OAAO,KAAK,WAAW,CAAC,OAA5B,EAAqC;YACnC,OAAO,WAAP,CAAA;WACD;;UACD,OAAO,GAAG,UAAK,CAAC,GAAN,CAAU,UAAV,CAAqB,OAArB,CAAV,CAAA;SACD;OACF;KACF;;IAED,OAAO,IAAP,CAAA;GAlCW;;EAsCb,UAtCa,EAAA,SAAA,UAAA,CAAA,KAAA,EAsC0D;IAAA,IAAzD,SAAyD,GAAA,KAAA,CAAzD,SAAyD;QAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,SAAiC,GAAA,KAAA,CAAjC,SAAiC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IACrE,IAAI,WAAW,KAAK,OAAhB,IAA2B,WAAW,KAAK,KAA/C,EAAsD;MACpD,OAAO,IAAP,CAAA;KACD;;IAED,IAAI,cAAJ,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,WAAW,CAAC,WAAZ,KAA4B,WAAhC,EAA6C;;QAE3C,IAAI,WAAW,CAAC,UAAZ,IAA0B,CAAC,YAAY,CAAC,WAAD,EAAc,SAAd,CAA3C,EAAqE;UAAE,SAAA;SAF5B;;;QAK3C,IAAI,WAAW,CAAC,WAAZ,EAAJ,EAA+B;UAC7B,OAAO,WAAP,CAAA;SADF;aAIK,IAAI,CAAC,cAAL,EAAqB;YACxB,cAAc,GAAG,WAAjB,CAAA;WACD;OACF;KApBkE;;;;IAyBrE,IAAI,cAAJ,EAAoB;MAClB,OAAO,cAAP,CAAA;KA1BmE;;;;;IAgCrE,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,YAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,YAAW,CAAC,WAAZ,KAA4B,WAA5B,IAA2C,EAAE,OAAA,CAAQ,IAAR,CAAa,SAAb,CAAA,IAA2B,YAAW,CAAC,UAAzC,CAA/C,EAAqG;QACnG,OAAO,YAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GA5EW;;EAgFb,UAhFa,EAAA,SAAA,UAAA,CAAA,KAAA,EAgFkC;IAAA,IAAjC,SAAiC,GAAA,KAAA,CAAjC,SAAiC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IAC7C,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,YAAY,CAAC,WAAD,EAAc,SAAd,CAAhB,EAA0C;QACxC,OAAO,WAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GAvFW;;EA2Fb,IA3Fa,EAAA,SAAA,IAAA,CAAA,KAAA,EA2F8B;IAAA,IAAnC,WAAmC,GAAA,KAAA,CAAnC,WAAmC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IACzC,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,MAAA,CAAA;;MAAA,MAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,MAAA,CAAA;;;MAEjD,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,KAAgC,CAApC,EAAuC;QACrC,IAAM,MAAM,GAAG,WAAW,CAAC,YAA3B,CADqC;;;QAIrC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAP,CAAe,OAAf,CAAuB,OAAtC,EAA+C;UAC7C,SAAA;SACD;OANH;WASK,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,IAA+B,CAAnC,EAAsC;UACzC,SAAA;SACD;;MAED,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAD,IAA+B,WAAW,KAAK,WAAW,CAAC,WAA/D,EAA6E;QAC3E,OAAO,WAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GACD;CAjHH,CAAA;;AAoHA,SAAS,YAAT,CAAuB,WAAvB,EAAoC,SAApC,EAA6C;EAC3C,OAAO,UAAK,CAAC,GAAN,CAAU,IAAV,CAAe,WAAW,CAAC,QAA3B,EAAqC,UAAA,MAAA,EAAA;IAAA,IAAG,EAAH,GAAA,MAAA,CAAG,EAAH,CAAA;IAAA,OAAY,EAAE,KAAK,SAAnB,CAAA;GAArC,CAAP,CAAA;CACD;;oBAEc;;;;;;;;;;;ACpIf,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;;;AAyBC,UAAA,CAAA,UAAA,CAAmB,IAAnB,GAA0B,MAA1B,CAAA;;AAMD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAMxB,KANwB,CAE1B,OAF0B;MAG1B,YAH0B,GAMxB,KANwB,CAG1B,YAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,QAL0B,GAMxB,KANwB,CAK1B,QAL0B,CAAA;EAQ5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,UAA9C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,eAAxB,EAAyC,UAAzC,CAAA,CAT4B;;EAY5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,IAAvC,CAAA,CAAA;EAEA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,IAAI,CAAC,SAAxC,CAAA;EAEA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,IAAZ,CAAP,GAA2B,IAA3B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,IAA9B,CAAA,CAAA;EACA,OAAG,CAAC,KAAJ,CAAU,OAAO,CAAC,UAAlB,EAA8B,CAC5B,WAD4B,EAE5B,UAF4B,EAG5B,kBAH4B,EAI5B,YAJ4B,EAK5B,SAL4B,CAA9B,CAAA,CAAA;EAOA,OAAO,CAAC,UAAR,CAAmB,IAAnB,GAA0B,WAA1B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,IAAjB,GAAwB,IAAI,CAAC,QAA7B,CAAA;CACD;;AAED,SAAS,UAAT,CAAA,IAAA,EAAoC;EAAA,IAAb,WAAa,GAAA,IAAA,CAAb,WAAa,CAAA;;EAClC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;IAAE,OAAA;GAAQ;;EAEpD,IAAM,IAAI,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAlC,CAAA;;EAEA,IAAI,IAAI,KAAK,GAAb,EAAkB;IAChB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAvB,CAA4B,CAA5B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAAhE,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,MAAvB,CAA8B,CAA9B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAlE,CAAA;IAEA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAAnC,GAAuC,CAAvC,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,IAA5B,CAAiC,CAAjC,GAAuC,CAAvC,CAAA;GALF,MAOK,IAAI,IAAI,KAAK,GAAb,EAAkB;IACrB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAvB,CAA4B,CAA5B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAAhE,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,MAAvB,CAA8B,CAA9B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAlE,CAAA;IAEA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAAnC,GAAuC,CAAvC,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,IAA5B,CAAiC,CAAjC,GAAuC,CAAvC,CAAA;GACD;CACF;;AAED,SAAS,IAAT,CAAA,KAAA,EAAsC;EAAA,IAArB,MAAqB,GAAA,KAAA,CAArB,MAAqB;MAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;EACpC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;IAAE,OAAA;GAAQ;;EAEpD,IAAM,IAAI,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAlC,CAAA;;EAEA,IAAI,IAAI,KAAK,GAAT,IAAgB,IAAI,KAAK,GAA7B,EAAkC;IAChC,IAAM,QAAQ,GAAG,IAAI,KAAK,GAAT,GAAe,GAAf,GAAqB,GAAtC,CAAA;IAEA,MAAM,CAAC,IAAP,CAAY,QAAZ,CAAA,GAA0B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,QAA9B,CAA1B,CAAA;IACA,MAAM,CAAC,MAAP,CAAc,QAAd,CAAA,GAA0B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,QAAhC,CAA1B,CAAA;IACA,MAAM,CAAC,KAAP,CAAa,QAAb,CAAA,GAAyB,CAAzB,CAAA;GACD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCD,IAAM,SAAS,GAAoB,SAAS,SAAT,CAAiD,OAAjD,EAA8F;EAC/H,IAAI,MAAE,CAAC,MAAH,CAAU,OAAV,CAAJ,EAAwB;IACtB,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,OAAlB,GAA4B,OAAO,CAAC,OAAR,KAAoB,KAAhD,CAAA;IACA,IAAA,CAAK,YAAL,CAAkB,MAAlB,EAA0B,OAA1B,CAAA,CAAA;IACA,IAAA,CAAK,WAAL,CAAiB,MAAjB,EAAyB,OAAzB,CAAA,CAAA;;IAEA,IAAI,kBAAA,CAAmB,IAAnB,CAAwB,OAAO,CAAC,QAAhC,CAAJ,EAA+C;MAC7C,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,QAAlB,GAA6B,OAAO,CAAC,QAArC,CAAA;KACD;;IACD,IAAI,YAAA,CAAa,IAAb,CAAkB,OAAO,CAAC,SAA1B,CAAJ,EAA0C;MACxC,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,SAAlB,GAA8B,OAAO,CAAC,SAAtC,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;IACpB,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,OAAlB,GAA4B,OAA5B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,IAApB,CAAA;CAtBF,CAAA;;AAyBA,IAAM,IAAI,GAAoB;EAC5B,EAAE,EAAE,cADwB;EAE5B,OAAO,EAAP,WAF4B;EAG5B,SAAS,EAAT,SAH4B;EAI5B,UAAU,EAAV,UAJ4B;EAK5B,IAAI,EAAJ,IAL4B;EAM5B,QAAQ,EAAE;IACR,SAAS,EAAG,IADJ;IAER,QAAQ,EAAI,IAAA;GARc;EAW5B,OAX4B,EAAA,SAAA,OAAA,CAWnB,QAXmB,EAWT,MAXS,EAWD,YAXC,EAWW;IACrC,IAAM,WAAW,GAAG,YAAY,CAAC,OAAb,CAAqB,IAAzC,CAAA;IAEA,OAAO,WAAW,CAAC,OAAZ,GACH;MACA,IAAI,EAAE,MADN;MAEA,IAAI,EAAG,WAAW,CAAC,QAAZ,KAAyB,OAAzB,GACH,WAAW,CAAC,SADT,GAEH,WAAW,CAAC,QAAA;KALb,GAOH,IAPJ,CAAA;GAd0B;EAwB5B,SAxB4B,EAAA,SAAA,SAAA,GAwBnB;IACP,OAAO,MAAP,CAAA;GACD;CA1BH,CAAA;mBA6Be;;;;;;;;;;;AC3Lf,IAAA,OAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;IAEM;;;;;;EAgBJ,SAAA,SAAA,CAAa,SAAb,EAAkD,SAAlD,EAA6D,IAA7D,EAAiE;IAAA,mBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IANjE,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IACA,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;;IAKiE,IAAA,IAAA,GACjC,IAAI,KAAK,WAAT,GAC1B,SAAS,CAAC,IADgB,GAE1B,SAAS,CAAC,GAHiD;QACvD,OADuD,GAAA,IAAA,CACvD,OADuD;QAC9C,QAD8C,GAAA,IAAA,CAC9C,QAD8C,CAAA;;IAK/D,IAAA,CAAK,IAAL,GAAqB,IAArB,CAAA;IACA,IAAA,CAAK,MAAL,GAAqB,OAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,OAArB,CAAA;IACA,IAAA,CAAK,QAAL,GAAqB,QAArB,CAAA;IACA,IAAA,CAAK,SAAL,GAAqB,SAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,SAAS,CAAC,MAA/B,CAAA;IACA,IAAA,CAAK,WAAL,GAAqB,SAAS,CAAC,WAA/B,CAAA;IACA,IAAA,CAAK,SAAL,GAAqB,SAAS,CAAC,YAA/B,CAAA;IACA,IAAA,CAAK,SAAL,GAAqB,SAAS,CAAC,SAA/B,CAAA;GACD;;;;;;;;;;;;6BASK;MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;MAAA,IACI,SADJ,GACkB,IAAA,CAAK,WADvB,CACI,SADJ,CAAA;;MAGJ,IACG,IAAA,CAAK,IAAL,KAAc,cAAf,KACE,CAAC,IAAA,CAAK,QAAN,IACA,SAAS,CAAC,GAAV,CAAc,QAAd,KAA2B,IAAA,CAAK,QADhC,IAEA,SAAS,CAAC,GAAV,CAAc,OAAd,KAA0B,IAAA,CAAK,MAHjC,CADF,EAI4C;QAC1C,OAAA;OACD;;MAED,SAAS,CAAC,IAAV,CAAe,QAAf,GAA0B,IAAA,CAAK,QAA/B,CAAA;MACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,IAAA,CAAK,MAA9B,CAAA;MAEA,SAAS,CAAC,QAAV,GAAqB,IAArB,CAAA;MACA,SAAS,CAAC,MAAV,CAAiB,KAAjB,GAAyB,IAAzB,CAAA;MAEA,IAAA,CAAK,wBAAL,EAAA,CAAA;;MAEA,IAAI,IAAA,CAAK,IAAL,KAAc,cAAlB,EAAkC;QAChC,IAAM,WAAW,GAAG,SAAS,CAAC,WAA9B,CAAA;QACA,IAAM,KAAK,GAAG,OAAG,CAAC,SAAJ,CAAc,WAAd,EAA2B,UAAA,KAAA,EAAA;UAAA,IAAG,QAAH,GAAA,KAAA,CAAG,QAAH;cAAa,OAAb,GAAA,KAAA,CAAa,OAAb,CAAA;UAAA,OACvC,QAAQ,KAAK,KAAI,CAAC,QAAlB,IAA8B,OAAO,KAAK,KAAI,CAAC,MADR,CAAA;SAA3B,CAAd,CAAA;QAGA,SAAS,CAAC,WAAV,GAAA,EAAA,CAAA,MAAA,CAAA,kBAAA,CACK,WAAW,CAAC,KAAZ,CAAkB,CAAlB,EAAqB,KAArB,CADL,CAAA,EAAA,kBAAA,CAEK,WAAW,CAAC,KAAZ,CAAkB,KAAK,GAAG,CAA1B,CAFL,CAAA,CAAA,CAAA;QAKA,IAAM,eAAe,GAAG,IAAI,SAAJ,CAAc,SAAd,EAAyB,IAAA,CAAK,SAA9B,EAAyC,gBAAzC,CAAxB,CAAA;QAEA,eAAe,CAAC,QAAhB,GAA2B,IAAA,CAAK,QAAhC,CAAA;QACA,eAAe,CAAC,MAAhB,GAAyB,IAAA,CAAK,MAA9B,CAAA;QAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,eAAnB,CAAA,CAAA;OAfF,MAiBK;QACH,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,IAAI,SAAJ,CAAc,SAAd,EAAyB,IAAA,CAAK,SAA9B,EAAyC,WAAzC,CAAnB,CAAA,CAAA;OACD;KACF;;;qCAEa,EAAM;;;sCAEL;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;+CAEuB;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;;;;mBAGY;;;;;;;;;;;AC9Ff,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,0BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;AA6DA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GASxB,KATwB,CAE1B,OAF0B;MAI1B,QAJ0B,GASxB,KATwB,CAI1B,QAJ0B;MAM1B,YAN0B,GASxB,KATwB,CAM1B,YAN0B;MAO1B,YAP0B,GASxB,KATwB,CAO1B,YAP0B;MAQ1B,QAR0B,GASxB,KATwB,CAQ1B,QAR0B,CAAA;EAW5B,KAAK,CAAC,SAAN,CAAgB,KAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;;IACjE,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,WAAW,CAAC,SAAZ,GAAwB;MACtB,GAAG,EAAE;QACH,QAAQ,EAAE,IADP;QAEH,OAAO,EAAE,IAAA;OAHW;MAKtB,IAAI,EAAE;QACJ,QAAQ,EAAE,IADN;QAEJ,OAAO,EAAE,IAAA;OAPW;MAStB,QAAQ,EAAE,IATY;MAUtB,MAAM,EAAE,IAVc;MAWtB,WAAW,EAAE,IAAA;KAXf,CAAA;GAHF,CAAA,CAAA;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,UAAA,KAAA,EAA8C;IAAA,IAA3C,WAA2C,GAAA,KAAA,CAA3C,WAA2C;QAA9B,KAA8B,GAAA,KAAA,CAA9B,KAA8B;QAAf,SAAe,GAAA,KAAA,CAAvB,MAAuB,CAAA;;IAC1F,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IADsC,IAGlF,SAHkF,GAGpE,WAHoE,CAGlF,SAHkF,CAAA;;IAM1F,SAAS,CAAC,WAAV,GAAwB,IAAxB,CAAA;IACA,SAAS,CAAC,MAAV,GAAmB,IAAnB,CAAA;IACA,SAAS,CAAC,WAAV,GAAwB,cAAc,CAAC,KAAD,EAAQ,WAAW,CAAC,OAApB,CAAtC,CAAA;IACA,SAAS,CAAC,MAAV,GAAmB,aAAa,CAAC,WAAD,EAAc,KAAd,EAAqB,SAArB,CAAhC,CAAA;;IAEA,IAAI,SAAS,CAAC,MAAV,CAAiB,QAArB,EAA+B;MAC7B,oBAAoB,CAAC,SAAS,CAAC,WAAX,EAAwB,SAAS,CAAC,MAAV,CAAiB,QAAzC,CAApB,CAAA;KACD;GAbH,CAAA,CA/B4B;;EAgD5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,UAAC,GAAD,EAAA;IAAA,OAAS,cAAc,CAAC,GAAD,EAAa,KAAb,CAAvB,CAAA;GAAvC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,YAAxB,EAAsC,UAAC,GAAD,EAAA;IAAA,OAAS,cAAc,CAAC,GAAD,EAAa,KAAb,CAAvB,CAAA;GAAtC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC/D,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,cAAc,CAAC,WAAD,EAAc,WAAW,CAAC,SAAZ,CAAsB,MAApC,CAAd,CAAA;IACA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,EAA/B,CAAA;GAJF,CAAA,CAAA;EAOA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,kBAAxB,EAA4C,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC9D,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,cAAc,CAAC,WAAD,EAAc,WAAW,CAAC,SAAZ,CAAsB,MAApC,CAAd,CAAA;GAHF,CAAA,CAAA;EAMA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClD,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IADF,IAG1C,SAH0C,GAG5B,WAH4B,CAG1C,SAH0C,CAAA;IAKlD,SAAS,CAAC,WAAV,GAAwB,IAAxB,CAAA;IACA,SAAS,CAAC,MAAV,GAAmB,IAAnB,CAAA;IACA,SAAS,CAAC,GAAV,CAAc,QAAd,GAAyB,IAAzB,CAAA;IACA,SAAS,CAAC,GAAV,CAAc,OAAd,GAAwB,IAAxB,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,QAAf,GAA0B,IAA1B,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,IAAzB,CAAA;IACA,SAAS,CAAC,QAAV,GAAqB,KAArB,CAAA;GAXF,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDA,YAAY,CAAC,SAAb,CAAuB,QAAvB,GAAkC,UAAuC,OAAvC,EAAmF;IACnH,OAAO,cAAc,CAAC,IAAD,EAAO,OAAP,CAArB,CAAA;GADF,CAAA;;;;;;;;;;;;;;;;;;EAmBA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,UAAuC,SAAvC,EAAkD,KAAlD,EAAyD,SAAzD,EAAoE,gBAApE,EAAsF,WAAtF,EAAmG,IAAnG,EAAuG;IACxI,OAAO,eAAe,CAAC,IAAD,EAAO,SAAP,EAAkB,KAAlB,EAAyB,SAAzB,EAAoC,gBAApC,EAAsD,WAAtD,EAAmE,IAAnE,CAAtB,CAAA;GADF,CAAA;;;;;;;;;;;EAYA,QAAQ,CAAC,WAAT,GAAuB,UAAU,QAAV,EAA4B;IACjD,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,QAAd,CAAJ,EAA6B;;;;MAK3B,KAAK,CAAC,WAAN,GAAoB,QAApB,CAAA;MAEA,OAAO,QAAP,CAAA;KACD;;IACD,OAAO,KAAK,CAAC,WAAb,CAAA;GAVF,CAAA;;EAaA,SAAK,CAAC,GAAN,CAAU,KAAV,CAAgB,OAAO,CAAC,UAAxB,EAAoC,CAClC,WADkC,EAElC,WAFkC,EAGlC,cAHkC,EAIlC,gBAJkC,EAKlC,UALkC,EAMlC,MANkC,CAApC,CAAA,CAAA;EAQA,OAAO,CAAC,UAAR,CAAmB,IAAnB,GAA0B,UAA1B,CAAA;EAEA,KAAK,CAAC,WAAN,GAAoB,KAApB,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,IAAjB,GAAwB,IAAI,CAAC,QAA7B,CAAA;CACD;;AAED,SAAS,YAAT,CAAA,KAAA,EAA0C,gBAA1C,EAA0D;EAAA,IAAjC,aAAiC,GAAA,KAAA,CAAjC,aAAiC,CAAA;EACxD,IAAM,KAAK,GAAG,EAAd,CADwD;;EAIxD,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,aAAa,CAAC,IAArC,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2C;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAApB,aAAa,CAAC,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAhC,QAAgC,GAAA,KAAA,CAAA;;IACzC,IAAI,CAAC,QAAQ,CAAC,OAAT,CAAiB,IAAjB,CAAsB,OAA3B,EAAoC;MAAE,SAAA;KAAU;;IAEhD,IAAM,MAAM,GAAG,QAAQ,CAAC,OAAT,CAAiB,IAAjB,CAAsB,MAArC,CAHyC;;IAMzC,IAAK,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,MAAjB,CAAA,IAA4B,MAAM,KAAK,gBAAxC,IACC,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAhB,CAAA,IACD,CAAC,SAAK,CAAC,GAAN,CAAU,eAAV,CAA0B,gBAA1B,EAA4C,MAA5C,CAFD,IAGC,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,MAAd,CAAA,IAAyB,CAAC,MAAM,CAAC;MAAE,QAAQ,EAAR,QAAF;MAAY,gBAAgB,EAAhB,gBAAA;KAAb,CAHrC,EAGwE;MACtE,SAAA;KAVuC;;;IAczC,IAAM,YAAY,GAAG,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAQ,CAAC,MAAzB,CAAA,GACjB,QAAQ,CAAC,QAAT,CAAkB,gBAAlB,CAAmC,QAAQ,CAAC,MAA5C,CADiB,GAEjB,SAAK,CAAC,EAAN,CAAS,KAAT,CAAe,QAAQ,CAAC,MAAxB,CAAA,GAAkC,QAAQ,CAAC,MAA3C,GAAoD,CAAC,QAAQ,CAAC,MAAV,CAFxD,CAAA;;IAIA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA8B,YAA9B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAd,YAAc,CAAA,GAAA,CAAA,CAAA;MAAA,IAAjC,eAAiC,GAAA,KAAA,CAAA;;MAC1C,IAAI,eAAe,KAAK,gBAAxB,EAA0C;QACxC,KAAK,CAAC,IAAN,CAAW;UACT,QAAQ,EAAR,QADS;UAET,OAAO,EAAE,eAAA;SAFX,CAAA,CAAA;OAID;KACF;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAED,SAAS,oBAAT,CAA+B,WAA/B,EAA4C,KAA5C,EAAiD;;EAE/C,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoC,WAApC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAiD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAAA,MAAA,GAAA,KAAA;QAApC,QAAoC,GAAA,MAAA,CAApC,QAAoC;QAA1B,OAA0B,GAAA,MAAA,CAA1B,OAA0B,CAAA;IAC/C,KAAK,CAAC,QAAN,GAAiB,QAAjB,CAD+C;;IAI/C,KAAK,CAAC,MAAN,GAAe,OAAf,CAAA;IACA,QAAQ,CAAC,IAAT,CAAc,KAAd,CAAA,CAAA;IACA,KAAK,CAAC,kBAAN,GAA2B,KAAK,CAAC,2BAAN,GAAoC,KAA/D,CAAA;GACD;;;;;;AAMH,SAAS,cAAT,CAAyB,KAAzB,EAAuC,WAAvC,EAA2D;;EAEzD,IAAM,WAAW,GAAG,YAAY,CAAC,KAAD,EAAQ,WAAR,CAAhC,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAyB,WAAzB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAsC;IAAA,IAAA,MAAA,CAAA;;IAAA,MAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAA3B,UAA2B,GAAA,MAAA,CAAA;IACpC,UAAU,CAAC,IAAX,GAAkB,UAAU,CAAC,QAAX,CAAoB,OAApB,CAA4B,UAAU,CAAC,OAAvC,CAAlB,CAAA;GACD;;EAED,OAAO,WAAP,CAAA;CACD;;AAED,SAAS,OAAT,CAAA,MAAA,EAA+G,SAA/G,EAA0H,YAA1H,EAAsI;EAAA,IAAlH,SAAkH,GAAA,MAAA,CAAlH,SAAkH;MAAzF,SAAyF,GAAA,MAAA,CAAvG,YAAuG;MAArE,WAAqE,GAAA,MAAA,CAA9E,OAA8E,CAAA;EACpI,IAAM,UAAU,GAAG,EAAnB,CADoI;;EAIpI,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2D,SAAS,CAAC,WAArE,CAAA,MAAA,EAAA,GAAA,EAAA,EAAkF;IAAA,IAAA,MAAA,CAAA;;IAAA,MAAA,GAAvB,SAAS,CAAC,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAAA,MAAA,GAAA,MAAA;QAArE,QAAqE,GAAA,MAAA,CAArE,QAAqE;QAAlD,eAAkD,GAAA,MAAA,CAA3D,OAA2D;QAAjC,IAAiC,GAAA,MAAA,CAAjC,IAAiC,CAAA;IAChF,UAAU,CAAC,IAAX,CAAgB,QAAQ,CAAC,SAAT,CAAmB,SAAnB,EAA8B,YAA9B,EAA4C,SAA5C,EAAuD,WAAvD,EAAoE,eAApE,EAAqF,IAArF,CAAA,GACZ,eADY,GAEZ,IAFJ,CAAA,CAAA;GALkI;;;EAWpI,IAAM,SAAS,GAAG,SAAK,CAAC,GAAN,CAAU,qBAAV,CAAgC,UAAhC,CAAlB,CAAA;EAEA,OAAO,SAAS,CAAC,WAAV,CAAsB,SAAtB,CAAA,IAAoC,IAA3C,CAAA;CACD;;AAED,SAAS,aAAT,CAAwB,WAAxB,EAA2D,aAA3D,EAA0E,SAA1E,EAAmF;EAAA,IACzE,SADyE,GAC3D,WAD2D,CACzE,SADyE,CAAA;EAEjF,IAAM,UAAU,GAAG;IACjB,KAAK,EAAO,IADK;IAEjB,KAAK,EAAO,IAFK;IAGjB,QAAQ,EAAI,IAHK;IAIjB,UAAU,EAAE,IAJK;IAKjB,IAAI,EAAQ,IALK;IAMjB,IAAI,EAAQ,IAAA;GANd,CAAA;;EASA,IAAI,SAAS,CAAC,IAAV,KAAmB,WAAvB,EAAoC;IAClC,UAAU,CAAC,QAAX,GAAsB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,cAApC,CAAtB,CAAA;IAEA,UAAU,CAAC,QAAX,CAAoB,MAApB,GAA+B,IAA/B,CAAA;IACA,UAAU,CAAC,QAAX,CAAoB,QAApB,GAA+B,IAA/B,CAAA;GACD;;EACD,IAAI,SAAS,CAAC,IAAV,KAAmB,SAAvB,EAAkC;IAChC,UAAU,CAAC,UAAX,GAAwB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,gBAApC,CAAxB,CAAA;IAEA,UAAU,CAAC,UAAX,CAAsB,MAAtB,GAAiC,IAAjC,CAAA;IACA,UAAU,CAAC,UAAX,CAAsB,QAAtB,GAAiC,IAAjC,CAAA;GACD;;EAED,IAAI,SAAS,CAAC,QAAd,EAAwB;IACtB,OAAO,UAAP,CAAA;GACD;;EAED,IAAI,SAAS,CAAC,GAAV,CAAc,OAAd,KAA0B,SAAS,CAAC,IAAV,CAAe,OAA7C,EAAsD;;IAEpD,IAAI,SAAS,CAAC,IAAV,CAAe,QAAnB,EAA6B;MAC3B,UAAU,CAAC,KAAX,GAAmB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,WAApC,CAAnB,CAAA;MAEA,SAAS,CAAC,SAAV,GAAyB,UAAU,CAAC,KAAX,CAAiB,MAAjB,GAA4B,SAAS,CAAC,IAAV,CAAe,OAApE,CAAA;MACA,SAAS,CAAC,YAAV,GAAyB,UAAU,CAAC,KAAX,CAAiB,QAAjB,GAA4B,SAAS,CAAC,IAAV,CAAe,QAApE,CAAA;KANkD;;;IASpD,IAAI,SAAS,CAAC,GAAV,CAAc,QAAlB,EAA4B;MAC1B,UAAU,CAAC,KAAX,GAAmB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,WAApC,CAAnB,CAAA;MAEA,SAAS,CAAC,SAAV,GAAsB,SAAS,CAAC,GAAV,CAAc,OAApC,CAAA;MACA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;KACD;GACF;;EAED,IAAI,SAAS,CAAC,IAAV,KAAmB,SAAnB,IAAgC,SAAS,CAAC,GAAV,CAAc,QAAlD,EAA4D;IAC1D,UAAU,CAAC,IAAX,GAAkB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,MAApC,CAAlB,CAAA;IAEA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;IACA,SAAS,CAAC,aAAV,GAA0B,SAAS,CAAC,GAAV,CAAc,OAAxC,CAAA;GACD;;EACD,IAAI,SAAS,CAAC,IAAV,KAAmB,UAAnB,IAAiC,SAAS,CAAC,GAAV,CAAc,QAAnD,EAA6D;IAC3D,UAAU,CAAC,IAAX,GAAkB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,UAApC,CAAlB,CAAA;IAEA,UAAU,CAAC,IAAX,CAAgB,QAAhB,GAA2B,SAA3B,CAAA;IACA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;GACD;;EAED,OAAO,UAAP,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,WAAzB,EAA4D,MAA5D,EAAkE;EAAA,IACxD,SADwD,GAC1C,WAD0C,CACxD,SADwD,CAAA;EAAA,IAG9D,WAH8D,GAM5D,SAN4D,CAG9D,WAH8D;MAI9D,GAJ8D,GAM5D,SAN4D,CAI9D,GAJ8D;MAK9D,IAL8D,GAM5D,SAN4D,CAK9D,IAL8D,CAAA;;EAQhE,IAAI,MAAM,CAAC,KAAX,EAAkB;IAAE,IAAI,CAAC,QAAL,CAAc,IAAd,CAAmB,MAAM,CAAC,KAA1B,CAAA,CAAA;GAAkC;;EACtD,IAAI,MAAM,CAAC,IAAX,EAAiB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,IAAzB,CAAA,CAAA;GAAgC;;EACnD,IAAI,MAAM,CAAC,KAAX,EAAkB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,KAAzB,CAAA,CAAA;GAAiC;;EACrD,IAAI,MAAM,CAAC,IAAX,EAAiB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,IAAzB,CAAA,CAAA;GAAgC;;EAEnD,IAAI,MAAM,CAAC,UAAX,EAAuB;IACrB,oBAAoB,CAAC,WAAD,EAAc,MAAM,CAAC,UAArB,CAApB,CAAA;GACD;;EAED,SAAS,CAAC,IAAV,CAAe,QAAf,GAA2B,GAAG,CAAC,QAA/B,CAAA;EACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,GAAG,CAAC,OAA7B,CAAA;CACD;;AAED,SAAS,cAAT,CAAA,MAAA,EAA6E,KAA7E,EAAkF;EAAA,IAAvD,WAAuD,GAAA,MAAA,CAAvD,WAAuD;MAA1C,MAA0C,GAAA,MAAA,CAA1C,MAA0C;MAAlC,KAAkC,GAAA,MAAA,CAAlC,KAAkC,CAAA;;EAChF,IAAI,MAAM,CAAC,IAAP,KAAgB,UAAhB,IAA8B,MAAM,CAAC,IAAP,KAAgB,SAAlD,EAA6D;IAAE,OAAA;GAAQ;;EADS,IAGxE,SAHwE,GAG1D,WAH0D,CAGxE,SAHwE,CAAA;;EAKhF,IAAI,KAAK,CAAC,WAAV,EAAuB;IACrB,SAAS,CAAC,WAAV,GAAwB,cAAc,CAAC,KAAD,EAAQ,WAAW,CAAC,OAApB,CAAtC,CAAA;GACD;;EAED,IAAM,SAAS,GAAG,MAAlB,CAAA;EACA,IAAM,UAAU,GAAG,OAAO,CAAC,WAAD,EAAc,SAAd,EAAyB,KAAzB,CAA1B,CAVgF;;EAahF,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,QAAV,IACnB,CAAC,CAAC,UADiB,IAEnB,UAAU,CAAC,QAAX,KAAwB,SAAS,CAAC,GAAV,CAAc,QAFnB,IAGnB,UAAU,CAAC,OAAX,KAAuB,SAAS,CAAC,GAAV,CAAc,OAHvC,CAAA;EAKA,SAAS,CAAC,GAAV,CAAc,QAAd,GAA0B,UAAU,IAAI,UAAU,CAAC,QAAnD,CAAA;EACA,SAAS,CAAC,GAAV,CAAc,OAAd,GAAwB,UAAU,IAAI,UAAU,CAAC,OAAjD,CAAA;EAEA,SAAS,CAAC,MAAV,GAAmB,aAAa,CAAC,WAAD,EAAc,KAAd,EAAqB,SAArB,CAAhC,CAAA;CACD;;AAID,SAAS,cAAT,CAAyB,YAAzB,EAA8D,OAA9D,EAA0G;EACxG,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAJ,EAA8B;IAC5B,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAAR,KAAoB,KAAxD,CAAA;;IAEA,IAAI,OAAO,CAAC,SAAZ,EAAuB;MACrB,IAAM,UAAU,GAAG,SAAK,CAAC,kBAAN,CAAyB,OAAO,CAAC,SAAjC,CAAnB,CADqB;;MAGrB,IAAM,SAAS,GAAG,MAAM,CAAC,IAAP,CAAY,UAAZ,CAAA,CAAwB,MAAxB,CAA+B,UAAC,GAAD,EAAM,IAAN,EAAc;QAC7D,IAAM,aAAa,GAAG,gBAAA,CAAiB,IAAjB,CAAsB,IAAtB,CAAA,GAAA,MAAA,CAAA,MAAA,CACX,IADW,CAAA,GAElB,6BAAA,CAA8B,IAA9B,CAAmC,IAAnC,CAAA,GAAA,MAAA,CAAA,MAAA,CACS,IADT,CAAA,GAEE,IAJN,CAAA;QAMA,GAAG,CAAC,aAAD,CAAH,GAAqB,UAAU,CAAC,IAAD,CAA/B,CAAA;QAEA,OAAO,GAAP,CAAA;OATgB,EAUf,EAVe,CAAlB,CAAA;MAYA,YAAY,CAAC,GAAb,CAAiB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,SAA3C,CAAA,CAAA;MACA,YAAY,CAAC,EAAb,CAAgB,SAAhB,CAAA,CAAA;MACA,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,SAA1B,GAAsC,SAAtC,CAAA;KACD;;IAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,MAAtB,CAAJ,EAAmC;MAAE,YAAY,CAAC,EAAb,CAAgB,MAAhB,EAAwB,OAAO,CAAC,MAAhC,CAAA,CAAA;KAAyC;;IAC9E,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,cAAtB,CAAJ,EAA2C;MAAE,YAAY,CAAC,EAAb,CAAgB,cAAhB,EAAgC,OAAO,CAAC,cAAxC,CAAA,CAAA;KAAyD;;IACtG,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,gBAAtB,CAAJ,EAA6C;MAAE,YAAY,CAAC,EAAb,CAAgB,gBAAhB,EAAkC,OAAO,CAAC,gBAA1C,CAAA,CAAA;KAA6D;;IAC5G,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,WAAtB,CAAJ,EAAwC;MAAE,YAAY,CAAC,EAAb,CAAgB,WAAhB,EAA6B,OAAO,CAAC,WAArC,CAAA,CAAA;KAAmD;;IAC7F,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,WAAtB,CAAJ,EAAwC;MAAE,YAAY,CAAC,EAAb,CAAgB,WAAhB,EAA6B,OAAO,CAAC,WAArC,CAAA,CAAA;KAAmD;;IAC7F,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,UAAtB,CAAJ,EAAuC;MAAE,YAAY,CAAC,EAAb,CAAgB,UAAhB,EAA4B,OAAO,CAAC,UAApC,CAAA,CAAA;KAAiD;;IAE1F,IAAI,oBAAA,CAAqB,IAArB,CAA0B,OAAO,CAAC,OAAlC,CAAJ,EAA0D;MACxD,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAA5C,CAAA;KADF,MAGK,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAO,CAAC,OAAxB,CAAJ,EAAsC;MACzC,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,OAAO,CAAC,OAApB,CAAT,EAAuC,CAAvC,CAApC,CAAA;KACD;;IACD,IAAI,QAAA,IAAY,OAAhB,EAAyB;MACvB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,MAA1B,GAAmC,OAAO,CAAC,MAA3C,CAAA;KACD;;IACD,IAAI,SAAA,IAAa,OAAjB,EAA0B;MACxB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAA5C,CAAA;KACD;;IAED,OAAO,YAAP,CAAA;GACD;;EAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAd,CAAJ,EAA4B;IAC1B,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAApC,CAAA;IAEA,OAAO,YAAP,CAAA;GACD;;EAED,OAAO,YAAY,CAAC,OAAb,CAAqB,IAA5B,CAAA;CACD;;AAED,SAAS,eAAT,CACE,YADF,EAEE,SAFF,EAGE,KAHF,EAIE,SAJF,EAKE,gBALF,EAME,WANF,EAOE,IAPF,EAOW;EAET,IAAI,OAAO,GAAG,KAAd,CAFS;;;EAMT,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC,OAAb,CAAqB,WAArB,CAAjB,CAAJ,EAAyD;IACvD,OAAQ,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GACJ,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,CAAkC,SAAlC,EAA6C,KAA7C,EAAoD,OAApD,EAA6D,YAA7D,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,gBAAnG,CADI,GAEJ,KAFJ,CAAA;GAGD;;EAED,IAAM,WAAW,GAAG,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA9C,CAAA;;EAEA,IAAI,WAAW,KAAK,SAApB,EAA+B;IAC7B,IAAM,MAAM,GAAG,SAAK,CAAC,WAAN,CAAkB,SAAlB,EAA6B,gBAA7B,EAA+C,MAA/C,CAAf,CAAA;IACA,IAAM,IAAI,GAAG,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,SAAxB,CAAb,CAAA;IAEA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;IACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;IAEA,IAAM,UAAU,GAAI,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,IAAf,IAAyB,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,KAA1D,CAAA;IACA,IAAM,QAAQ,GAAM,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,GAAf,IAAwB,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,MAAzD,CAAA;IAEA,OAAO,GAAG,UAAU,IAAI,QAAxB,CAAA;GACD;;EAED,IAAM,QAAQ,GAAG,SAAS,CAAC,OAAV,CAAkB,gBAAlB,CAAjB,CAAA;;EAEA,IAAI,QAAQ,IAAI,WAAW,KAAK,QAAhC,EAA0C;IACxC,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAAT,GAAkB,CAA7C,CAAA;IACA,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAT,GAAgB,QAAQ,CAAC,MAAT,GAAkB,CAA7C,CAAA;IAEA,OAAO,GAAG,EAAE,IAAI,IAAI,CAAC,IAAX,IAAmB,EAAE,IAAI,IAAI,CAAC,KAA9B,IAAuC,EAAE,IAAI,IAAI,CAAC,GAAlD,IAAyD,EAAE,IAAI,IAAI,CAAC,MAA9E,CAAA;GACD;;EAED,IAAI,QAAQ,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,WAAhB,CAAhB,EAA8C;IAC5C,IAAM,WAAW,GAAK,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,KAAd,EAAqB,QAAQ,CAAC,KAA9B,CAAA,GAAuC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,IAAd,EAAoB,QAAQ,CAAC,IAA7B,CAAnD,CAAA,GACA,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,MAAd,EAAsB,QAAQ,CAAC,MAA/B,CAAA,GAAyC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAd,EAAmB,QAAQ,CAAC,GAA5B,CAArD,CADtB,CAAA;IAGA,IAAM,YAAY,GAAG,WAAW,IAAI,QAAQ,CAAC,KAAT,GAAiB,QAAQ,CAAC,MAA9B,CAAhC,CAAA;IAEA,OAAO,GAAG,YAAY,IAAI,WAA1B,CAAA;GACD;;EAED,IAAI,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA9B,EAAuC;IACrC,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,CAAkC,SAAlC,EAA6C,KAA7C,EAAoD,OAApD,EAA6D,YAA7D,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,gBAAnG,CAAV,CAAA;GACD;;EAED,OAAO,OAAP,CAAA;CACD;;AAED,IAAM,IAAI,GAAG;EACX,EAAE,EAAE,cADO;EAEX,OAAO,EAAP,WAFW;EAGX,cAAc,EAAd,cAHW;EAIX,OAAO,EAAP,OAJW;EAKX,aAAa,EAAb,aALW;EAMX,cAAc,EAAd,cANW;EAOX,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,MAAM,EAAG,IAFD;IAGR,OAAO,EAAE,SAAA;GAHD;CAPZ,CAAA;mBAce;;;;;;;;;;;AC7iBf,IAAA,kBAAA,GAAA,0BAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;;;;;AAuCC,UAAA,CAAA,UAAA,CAAmB,OAAnB,GAA6B,SAA7B,CAAA;;AAkBD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAMxB,KANwB,CAE1B,OAF0B;MAG1B,YAH0B,GAMxB,KANwB,CAG1B,YAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,QAL0B,GAMxB,KANwB,CAK1B,QAL0B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,YAAY,CAAC,SAAb,CAAuB,UAAvB,GAAoC,UAAuC,OAAvC,EAAoF;IACtH,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAJ,EAA8B;MAC5B,IAAA,CAAK,OAAL,CAAa,OAAb,CAAqB,OAArB,GAA+B,OAAO,CAAC,OAAR,KAAoB,KAAnD,CAAA;MACA,IAAA,CAAK,YAAL,CAAkB,SAAlB,EAA6B,OAA7B,CAAA,CAAA;MACA,IAAA,CAAK,WAAL,CAAiB,SAAjB,EAA4B,OAA5B,CAAA,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;IAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAd,CAAJ,EAA4B;MAC1B,IAAA,CAAK,OAAL,CAAa,OAAb,CAAqB,OAArB,GAA+B,OAA/B,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;IAED,OAAO,IAAA,CAAK,OAAL,CAAa,OAApB,CAAA;GAfF,CAAA;;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,kBAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,kBAAvC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,YAAxB,EAAsC,kBAAtC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAsB;MACpB,KAAK,EAAE,CADa;MAEpB,QAAQ,EAAE,CAFU;MAGpB,KAAK,EAAE,CAHa;MAIpB,UAAU,EAAE,CAJQ;MAKpB,aAAa,EAAE,CAAA;KALjB,CAAA;GADF,CAAA,CAAA;EAUA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,OAAZ,CAAP,GAA8B,OAA9B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,OAA9B,CAAA,CAAA;EACA,SAAK,CAAC,GAAN,CAAU,KAAV,CAAgB,OAAO,CAAC,UAAxB,EAAoC,CAClC,cADkC,EAElC,aAFkC,EAGlC,YAHkC,CAApC,CAAA,CAAA;EAKA,OAAO,CAAC,UAAR,CAAmB,OAAnB,GAA6B,YAA7B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,OAAjB,GAA2B,OAAO,CAAC,QAAnC,CAAA;CACD;;AAED,IAAM,OAAO,GAAG;EACd,EAAE,EAAE,iBADU;EAEd,OAAO,EAAP,WAFc;EAGd,QAAQ,EAAE,EAHI;EAMd,OANc,EAAA,SAAA,OAAA,CAML,QANK,EAMK,MANL,EAMa,aANb,EAM4B,QAN5B,EAMsC,WANtC,EAMqF;IACjG,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,IAA+B,CAAnC,EAAsC;MACpC,OAAO;QAAE,IAAI,EAAE,SAAA;OAAf,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GAXY;EAcd,SAdc,EAAA,SAAA,SAAA,GAcL;IACP,OAAO,EAAP,CAAA;GACD;CAhBH,CAAA;;AAmBA,SAAS,kBAAT,CAAA,KAAA,EAAoF;EAAA,IAArD,WAAqD,GAAA,KAAA,CAArD,WAAqD;MAAxC,MAAwC,GAAA,KAAA,CAAxC,MAAwC;MAAhC,KAAgC,GAAA,KAAA,CAAhC,KAAgC;MAAzB,KAAyB,GAAA,KAAA,CAAzB,KAAyB,CAAA;;EAClF,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,SAAlC,EAA6C;IAAE,OAAA;GAAQ;;EAEvD,IAAM,QAAQ,GAAG,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAAyB,UAAC,CAAD,EAAA;IAAA,OAAO,CAAC,CAAC,OAAT,CAAA;GAAzB,CAAjB,CAAA;EACA,IAAM,QAAQ,GAAG,KAAK,KAAK,OAA3B,CAAA;EACA,IAAM,MAAM,GAAG,KAAK,KAAK,KAAzB,CAAA;EACA,IAAM,WAAW,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAArD,CAAA;EAEA,MAAM,CAAC,OAAP,GAAiB,CAAC,QAAQ,CAAC,CAAD,CAAT,EAAc,QAAQ,CAAC,CAAD,CAAtB,CAAjB,CAAA;;EAEA,IAAI,QAAJ,EAAc;IACZ,MAAM,CAAC,QAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,QAA5B,EAAsC,WAAtC,CAAlB,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,QAAxB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,QAAzB,EAAmC,WAAnC,CAAlB,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IAEA,WAAW,CAAC,OAAZ,CAAoB,aAApB,GAAoC,MAAM,CAAC,QAA3C,CAAA;IACA,WAAW,CAAC,OAAZ,CAAoB,UAApB,GAAiC,MAAM,CAAC,KAAxC,CAAA;GATF,MAWK,IAAI,MAAM,IAAI,KAAK,YAAY,kBAAA,CAAA,SAAA,CAA/B,EAA8C;IACjD,IAAM,SAAS,GAAG,WAAW,CAAC,SAA9B,CAAA;IAEA,MAAM,CAAC,QAAP,GAAkB,SAAS,CAAC,QAA5B,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAS,CAAC,GAA5B,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAS,CAAC,KAA5B,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAS,CAAC,KAA5B,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;GARG,MAUA;IACH,MAAM,CAAC,QAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,QAA5B,EAAsC,WAAtC,CAAlB,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,QAAxB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,MAAM,CAAC,QAAP,GAAkB,WAAW,CAAC,OAAZ,CAAoB,aAAxD,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,QAAzB,EAAmC,WAAnC,CAAlB,CAAA;IAEA,MAAM,CAAC,EAAP,GAAY,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,OAAZ,CAAoB,KAA/C,CAAA;IACA,MAAM,CAAC,EAAP,GAAY,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,OAAZ,CAAoB,KAA/C,CAAA;GACD;;EAED,WAAW,CAAC,OAAZ,CAAoB,QAApB,GAA+B,MAAM,CAAC,QAAtC,CAAA;EACA,WAAW,CAAC,OAAZ,CAAoB,KAApB,GAA4B,MAAM,CAAC,KAAnC,CAAA;;EAEA,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,KAAvB,CAAA,IACA,MAAM,CAAC,KAAP,KAAiB,QADjB,IAEA,CAAC,KAAK,CAAC,MAAM,CAAC,KAAR,CAFV,EAE0B;IACxB,WAAW,CAAC,OAAZ,CAAoB,KAApB,GAA4B,MAAM,CAAC,KAAnC,CAAA;GACD;CACF;;mBAEc;;;;;;;;;;;AC3Mf,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;;;AA+CC,UAAA,CAAA,UAAA,CAAmB,MAAnB,GAA4B,QAA5B,CAAA;;AAOD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAQxB,KARwB,CAE1B,OAF0B;MAG1B,OAH0B,GAQxB,KARwB,CAG1B,OAH0B;MAK1B,YAL0B,GAQxB,KARwB,CAK1B,YAL0B;MAM1B,YAN0B,GAQxB,KARwB,CAM1B,YAN0B;MAO1B,QAP0B,GAQxB,KARwB,CAO1B,QAP0B,CAAA;;EAY5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAC,WAAD,EAAgB;IAC7C,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,KAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,QAAvC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,eAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,eAAvC,CAAA,CAAA;EAEA,MAAM,CAAC,OAAP,GAAiB,WAAW,CAAC,OAAD,CAA5B,CAAA;EACA,MAAM,CAAC,aAAP,GAAuB,OAAO,CAAC,aAAR,IAAyB,OAAO,CAAC,oBAAjC,GAAwD,EAAxD,GAA6D,EAApF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,UAAuC,OAAvC,EAAmF;IACpH,OAAO,SAAS,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,CAAhB,CAAA;GADF,CAAA;;EAIA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,MAAZ,CAAP,GAA6B,MAA7B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,MAA9B,CAAA,CAAA;EACA,SAAK,CAAC,GAAN,CAAU,KAAV,CAAgB,OAAO,CAAC,UAAxB,EAAoC,CAClC,aADkC,EAElC,YAFkC,EAGlC,oBAHkC,EAIlC,cAJkC,EAKlC,WALkC,CAApC,CAAA,CAAA;EAOA,OAAO,CAAC,UAAR,CAAmB,MAAnB,GAA4B,WAA5B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,MAAjB,GAA0B,MAAM,CAAC,QAAjC,CAAA;CACD;;AAED,IAAM,MAAM,GAAG;EACb,EAAE,EAAE,gBADS;EAEb,OAAO,EAAP,WAFa;EAGb,QAAQ,EAAE;IACR,MAAM,EAAE,KADA;IAER,mBAAmB,EAAE,KAFb;IAGR,IAAI,EAAE,IAHE;;IAMR,MAAM,EAAE,GANA;;;;;IAYR,KAAK,EAAE,IAZC;;;;;IAkBR,MAAM,EAAE,MAAA;GArBG;EAwBb,OAxBa,EAAA,SAAA,OAAA,CAyBX,QAzBW,EA0BX,MA1BW,EA2BX,YA3BW,EA4BX,OA5BW,EA6BX,WA7BW,EA8BX,IA9BW,EA8BQ;IAEnB,IAAI,CAAC,IAAL,EAAW;MAAE,OAAO,IAAP,CAAA;KAAa;;IAE1B,IAAM,IAAI,GAAG,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAxC,CAAb,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;;IAEA,IAAI,OAAO,CAAC,MAAR,CAAe,OAAnB,EAA4B;MAC1B,IAAM,aAAa,GAAG,OAAO,CAAC,MAA9B,CAAA;MACA,IAAM,WAAW,GAAgC;QAAE,IAAI,EAAE,KAAR;QAAe,KAAK,EAAE,KAAtB;QAA6B,GAAG,EAAE,KAAlC;QAAyC,MAAM,EAAE,KAAA;OAAlG,CAF0B;;MAK1B,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,aAAa,CAAC,KAA9B,CAAJ,EAA0C;QACxC,KAAK,IAAM,IAAX,IAAmB,WAAnB,EAAgC;UAC9B,WAAW,CAAC,IAAD,CAAX,GAAoB,eAAe,CAAC,IAAD,EACjC,aAAa,CAAC,KAAd,CAAoB,IAApB,CADiC,EAEjC,IAFiC,EAGjC,WAAW,CAAC,cAAZ,CAA2B,WAHM,EAIjC,OAJiC,EAKjC,IALiC,EAMjC,aAAa,CAAC,MAAd,IAAwB,IAAA,CAAK,aANI,CAAnC,CAAA;SAOD;;QAED,WAAW,CAAC,IAAZ,GAAmB,WAAW,CAAC,IAAZ,IAAoB,CAAC,WAAW,CAAC,KAApD,CAAA;QACA,WAAW,CAAC,GAAZ,GAAmB,WAAW,CAAC,GAAZ,IAAoB,CAAC,WAAW,CAAC,MAApD,CAAA;;QAEA,IAAI,WAAW,CAAC,IAAZ,IAAoB,WAAW,CAAC,KAAhC,IAAyC,WAAW,CAAC,GAArD,IAA4D,WAAW,CAAC,MAA5E,EAAoF;UAClF,OAAO;YACL,IAAI,EAAE,QADD;YAEL,KAAK,EAAE,WAAA;WAFT,CAAA;SAID;OAnBH,MAqBK;QACH,IAAM,KAAK,GAAI,OAAO,CAAC,MAAR,CAAe,IAAf,KAAwB,GAAxB,IAA+B,IAAI,CAAC,CAAL,GAAU,IAAI,CAAC,KAAL,GAAc,IAAA,CAAK,aAA3E,CAAA;QACA,IAAM,MAAM,GAAG,OAAO,CAAC,MAAR,CAAe,IAAf,KAAwB,GAAxB,IAA+B,IAAI,CAAC,CAAL,GAAU,IAAI,CAAC,MAAL,GAAc,IAAA,CAAK,aAA3E,CAAA;;QAEA,IAAI,KAAK,IAAI,MAAb,EAAqB;UACnB,OAAO;YACL,IAAI,EAAE,QADD;YAEL,IAAI,EAAE,CAAC,KAAK,GAAG,GAAH,GAAS,EAAf,KAAsB,MAAM,GAAG,GAAH,GAAS,EAArC,CAAA;WAFR,CAAA;SAID;OACF;KACF;;IAED,OAAO,IAAP,CAAA;GA5EW;EA+Eb,OAAO,EAAE,IA/EI;EAiFb,SAjFa,EAAA,SAAA,SAAA,CAiFF,MAjFE,EAiFiB;IAC5B,IAAM,OAAO,GAAG,MAAM,CAAC,OAAvB,CAAA;;IACA,IAAI,MAAM,CAAC,IAAX,EAAiB;MACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,IAAtB,CAAd,CAAA;KADF,MAGK,IAAI,MAAM,CAAC,KAAX,EAAkB;MACrB,IAAI,SAAS,GAAG,EAAhB,CAAA;MACA,IAAM,SAAS,GAAG,CAAC,KAAD,EAAQ,QAAR,EAAkB,MAAlB,EAA0B,OAA1B,CAAlB,CAAA;;MAEA,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;QAC1B,IAAI,MAAM,CAAC,KAAP,CAAa,SAAS,CAAC,CAAD,CAAtB,CAAJ,EAAgC;UAC9B,SAAS,IAAI,SAAS,CAAC,CAAD,CAAtB,CAAA;SACD;OACF;;MAED,OAAO,OAAO,CAAC,SAAD,CAAd,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GAnGW;EAsGb,aAAa,EAAE,IAAA;CAtGjB,CAAA;;AAyGA,SAAS,SAAT,CAAoB,YAApB,EAAyD,OAAzD,EAA2H,KAA3H,EAAuI;EACrI,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAJ,EAA8B;IAC5B,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,OAA5B,GAAsC,OAAO,CAAC,OAAR,KAAoB,KAA1D,CAAA;IACA,YAAY,CAAC,YAAb,CAA0B,QAA1B,EAAoC,OAApC,CAAA,CAAA;IACA,YAAY,CAAC,WAAb,CAAyB,QAAzB,EAAmC,OAAnC,CAAA,CAAA;;IAEA,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAO,CAAC,IAAxB,CAAA,IAAiC,cAAA,CAAe,IAAf,CAAoB,OAAO,CAAC,IAA5B,CAArC,EAAwE;MACtE,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,IAA5B,GAAmC,OAAO,CAAC,IAA3C,CAAA;KADF,MAGK,IAAI,OAAO,CAAC,IAAR,KAAiB,IAArB,EAA2B;MAC9B,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,IAA5B,GAAmC,KAAK,CAAC,QAAN,CAAe,OAAf,CAAuB,MAAvB,CAA8B,IAAjE,CAAA;KACD;;IAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,mBAAtB,CAAJ,EAAgD;MAC9C,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,mBAA5B,GAAkD,OAAO,CAAC,mBAA1D,CAAA;KADF,MAGK,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,MAAtB,CAAJ,EAAmC;MACtC,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,MAA5B,GAAqC,OAAO,CAAC,MAA7C,CAAA;KACD;;IAED,OAAO,YAAP,CAAA;GACD;;EACD,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAd,CAAJ,EAA4B;IAC1B,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,OAA5B,GAAsC,OAAtC,CAAA;IAEA,OAAO,YAAP,CAAA;GACD;;EACD,OAAO,YAAY,CAAC,OAAb,CAAqB,MAA5B,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,IAA1B,EAAwC,KAAxC,EAAoD,IAApD,EAA0E,OAA1E,EAAyF,mBAAzF,EAAuH,IAAvH,EAA4I,MAA5I,EAA0J;;EAExJ,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,KAAP,CAAA;GAF0I;;;EAKxJ,IAAI,KAAK,KAAK,IAAd,EAAoB;;IAElB,IAAM,KAAK,GAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAI,CAAC,KAArB,CAAA,GAA8B,IAAI,CAAC,KAAnC,GAA4C,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,IAA9E,CAAA;IACA,IAAM,MAAM,GAAG,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAI,CAAC,MAArB,CAAA,GAA+B,IAAI,CAAC,MAApC,GAA6C,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAA/E,CAHkB;;IAMlB,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,MAAT,EAAiB,CAAC,IAAI,KAAK,MAAT,IAAmB,IAAI,KAAK,OAA5B,GAAsC,KAAtC,GAA8C,MAA/C,IAAyD,CAA1E,CAAT,CAAA;;IAEA,IAAI,KAAK,GAAG,CAAZ,EAAe;MACb,IAAS,IAAI,KAAK,MAAlB,EAA2B;QAAE,IAAI,GAAG,OAAP,CAAA;OAA7B,MACK,IAAI,IAAI,KAAK,OAAb,EAAsB;QAAE,IAAI,GAAG,MAAP,CAAA;OAAgB;KAC9C;;IACD,IAAI,MAAM,GAAG,CAAb,EAAgB;MACd,IAAS,IAAI,KAAK,KAAlB,EAA4B;QAAE,IAAI,GAAG,QAAP,CAAA;OAA9B,MACK,IAAI,IAAI,KAAK,QAAb,EAAuB;QAAE,IAAI,GAAG,KAAP,CAAA;OAAiB;KAChD;;IAED,IAAI,IAAI,KAAK,MAAb,EAAqB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,KAAK,IAAK,CAAV,GAAc,IAAI,CAAC,IAAnB,GAA0B,IAAI,CAAC,KAAhC,IAAyC,MAA1D,CAAA;KAAmE;;IAC1F,IAAI,IAAI,KAAK,KAAb,EAAoB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,MAAM,IAAI,CAAV,GAAc,IAAI,CAAC,GAAnB,GAAyB,IAAI,CAAC,MAA/B,IAAyC,MAA1D,CAAA;KAAmE;;IAEzF,IAAI,IAAI,KAAK,OAAb,EAAsB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,KAAK,IAAK,CAAV,GAAc,IAAI,CAAC,KAAnB,GAA2B,IAAI,CAAC,IAAjC,IAAyC,MAA1D,CAAA;KAAmE;;IAC3F,IAAI,IAAI,KAAK,QAAb,EAAuB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,MAAM,IAAI,CAAV,GAAc,IAAI,CAAC,MAAnB,GAA4B,IAAI,CAAC,GAAlC,IAAyC,MAA1D,CAAA;KAAmE;GA1B0D;;;EA8BxJ,IAAI,CAAC,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAL,EAAgC;IAAE,OAAO,KAAP,CAAA;GAAc;;EAEhD,OAAO,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,KAAjB,CAAA;IAEH,KAAK,KAAK,OAFP;IAIH,SAAK,CAAC,GAAN,CAAU,WAAV,CAAsB,OAAtB,EAA+B,KAA/B,EAAsC,mBAAtC,CAJJ,CAAA;CAKD;;AAED,SAAS,WAAT,CAAsB,OAAtB,EAAkF;EAChF,OAAQ,OAAO,CAAC,KAAR,GAAgB;IACtB,CAAC,EAAG,UADkB;IAEtB,CAAC,EAAG,UAFkB;IAGtB,EAAE,EAAE,WAHkB;IAKtB,GAAG,EAAU,UALS;IAMtB,IAAI,EAAS,UANS;IAOtB,MAAM,EAAO,UAPS;IAQtB,KAAK,EAAQ,UARS;IAStB,OAAO,EAAM,WATS;IAUtB,WAAW,EAAE,WAVS;IAWtB,QAAQ,EAAK,WAXS;IAYtB,UAAU,EAAG,WAAA;GAZP,GAaJ;IACF,CAAC,EAAG,WADF;IAEF,CAAC,EAAG,WAFF;IAGF,EAAE,EAAE,aAHF;IAKF,GAAG,EAAU,WALX;IAMF,IAAI,EAAS,WANX;IAOF,MAAM,EAAO,WAPX;IAQF,KAAK,EAAQ,WARX;IASF,OAAO,EAAM,aATX;IAUF,WAAW,EAAE,aAVX;IAWF,QAAQ,EAAK,aAXX;IAYF,UAAU,EAAG,aAAA;GAzBf,CAAA;CA2BD;;AAED,SAAS,KAAT,CAAA,IAAA,EAA2D;EAAA,IAAzC,MAAyC,GAAA,IAAA,CAAzC,MAAyC;MAAjC,WAAiC,GAAA,IAAA,CAAjC,WAAiC,CAAA;;EACzD,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IAA0C,CAAC,WAAW,CAAC,QAAZ,CAAqB,KAApE,EAA2E;IACzE,OAAA;GACD;;EAED,IAAM,SAAS,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,OAA7C,CAAlB,CAAA;EACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,MAAvD,CAAA;;;;;;;;EAQA,IAAI,aAAa,CAAC,MAAd,IAAwB,aAAa,CAAC,mBAA1C,EAA+D;IAC7D,IAAM,WAAW,GAAG,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,WAAW,CAAC,QAAZ,CAAqB,KAAtC,CAApB,CAAA;IAEA,WAAW,CAAC,GAAZ,GAAqB,WAAW,CAAC,GAAZ,IAAuB,WAAW,CAAC,IAAZ,IAAsB,CAAC,WAAW,CAAC,MAA/E,CAAA;IACA,WAAW,CAAC,IAAZ,GAAqB,WAAW,CAAC,IAAZ,IAAuB,WAAW,CAAC,GAAZ,IAAsB,CAAC,WAAW,CAAC,KAA/E,CAAA;IACA,WAAW,CAAC,MAAZ,GAAqB,WAAW,CAAC,MAAZ,IAAuB,WAAW,CAAC,KAAZ,IAAsB,CAAC,WAAW,CAAC,GAA/E,CAAA;IACA,WAAW,CAAC,KAAZ,GAAqB,WAAW,CAAC,KAAZ,IAAuB,WAAW,CAAC,MAAZ,IAAsB,CAAC,WAAW,CAAC,IAA/E,CAAA;IAEA,WAAW,CAAC,QAAZ,CAAqB,YAArB,GAAoC,WAApC,CAAA;GARF,MAUK;IACH,WAAW,CAAC,QAAZ,CAAqB,YAArB,GAAoC,IAApC,CAAA;GAzBuD;;;EA6BzD,IAAI,aAAa,CAAC,mBAAlB,EAAuC;IACrC,WAAW,CAAC,sBAAZ,GAAqC,SAAS,CAAC,KAAV,GAAkB,SAAS,CAAC,MAAjE,CAAA;GACD;;EAED,WAAW,CAAC,WAAZ,GAA0B;IACxB,KAAK,EAAO,SADY;IAExB,OAAO,EAAK,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,SAAjB,CAFY;IAGxB,QAAQ,EAAI,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,SAAjB,CAHY;IAIxB,QAAQ,EAAI,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,SAAjB,CAJY;IAKxB,KAAK,EAAO;MACV,IAAI,EAAE,CADI;MAEV,KAAK,EAAG,CAFE;MAGV,KAAK,EAAG,CAHE;MAIV,GAAG,EAAG,CAJI;MAKV,MAAM,EAAE,CALE;MAMV,MAAM,EAAE,CAAA;KANE;GALd,CAAA;EAeC,MAAsB,CAAC,IAAvB,GAA8B,WAAW,CAAC,WAAZ,CAAwB,QAAtD,CAAA;EACA,MAAsB,CAAC,SAAvB,GAAmC,WAAW,CAAC,WAAZ,CAAwB,KAA3D,CAAA;CACF;;AAED,SAAS,QAAT,CAAA,KAAA,EAAsC;EAAA,IAArB,MAAqB,GAAA,KAAA,CAArB,MAAqB;MAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;EACpC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IAA0C,CAAC,WAAW,CAAC,QAAZ,CAAqB,KAApE,EAA2E;IAAE,OAAA;GAAQ;;EAErF,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,MAAvD,CAAA;EACA,IAAM,MAAM,GAAG,aAAa,CAAC,MAA7B,CAAA;EACA,IAAM,UAAU,GAAG,MAAM,KAAK,YAAX,IAA2B,MAAM,KAAK,QAAzD,CAAA;EAEA,IAAI,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,KAAjC,CAPoC;;EAUpC,IAAM,KAAK,GAAQ,WAAW,CAAC,WAAZ,CAAwB,KAA3C,CAAA;EACA,IAAM,OAAO,GAAM,WAAW,CAAC,WAAZ,CAAwB,OAA3C,CAAA;EACA,IAAM,QAAQ,GAAK,WAAW,CAAC,WAAZ,CAAwB,QAA3C,CAAA;EACA,IAAM,SAAS,GAAI,WAAW,CAAC,WAAZ,CAAwB,KAA3C,CAAA;EACA,IAAM,QAAQ,GAAK,SAAK,CAAC,MAAN,CAAa,WAAW,CAAC,WAAZ,CAAwB,QAArC,EAA+C,QAA/C,CAAnB,CAAA;EACA,IAAM,aAAa,GAAG,KAAtB,CAAA;EAEA,IAAM,UAAU,GAAG,SAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,MAAM,CAAC,KAAxB,CAAnB,CAAA;;EAEA,IAAI,aAAa,CAAC,mBAAd,IAAqC,aAAa,CAAC,MAAvD,EAA+D;;IAE7D,IAAM,gBAAgB,GAAG,aAAa,CAAC,mBAAd,GACrB,WAAW,CAAC,sBADS,GAErB,CAFJ,CAAA;IAIA,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAA7B,CAAA;;IAEA,IAAK,aAAa,CAAC,IAAd,IAAsB,aAAa,CAAC,MAArC,IACC,aAAa,CAAC,KAAd,IAAuB,aAAa,CAAC,GAD1C,EACgD;MAC9C,UAAU,CAAC,CAAX,GAAe,CAAC,UAAU,CAAC,CAAZ,GAAgB,gBAA/B,CAAA;KAFF,MAIK,IAAI,aAAa,CAAC,IAAd,IAAsB,aAAa,CAAC,KAAxC,EAA+C;MAAE,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,gBAA9B,CAAA;KAAjD,MACA,IAAI,aAAa,CAAC,GAAd,IAAsB,aAAa,CAAC,MAAxC,EAAgD;MAAE,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,gBAA9B,CAAA;KAAgD;GAhCrE;;;EAoCpC,IAAI,KAAK,CAAC,GAAV,EAAe;IAAE,OAAO,CAAC,GAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EACjD,IAAI,KAAK,CAAC,MAAV,EAAkB;IAAE,OAAO,CAAC,MAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EACpD,IAAI,KAAK,CAAC,IAAV,EAAgB;IAAE,OAAO,CAAC,IAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EAClD,IAAI,KAAK,CAAC,KAAV,EAAiB;IAAE,OAAO,CAAC,KAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EAEnD,IAAI,UAAJ,EAAgB;;IAEd,SAAK,CAAC,MAAN,CAAa,QAAb,EAAuB,OAAvB,CAAA,CAAA;;IAEA,IAAI,MAAM,KAAK,YAAf,EAA6B;;MAE3B,IAAI,IAAJ,CAAA;;MAEA,IAAI,QAAQ,CAAC,GAAT,GAAe,QAAQ,CAAC,MAA5B,EAAoC;QAClC,IAAI,GAAG,QAAQ,CAAC,GAAhB,CAAA;QAEA,QAAQ,CAAC,GAAT,GAAe,QAAQ,CAAC,MAAxB,CAAA;QACA,QAAQ,CAAC,MAAT,GAAkB,IAAlB,CAAA;OACD;;MACD,IAAI,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAA7B,EAAoC;QAClC,IAAI,GAAG,QAAQ,CAAC,IAAhB,CAAA;QAEA,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAAzB,CAAA;QACA,QAAQ,CAAC,KAAT,GAAiB,IAAjB,CAAA;OACD;KACF;GApBH,MAsBK;;IAEH,QAAQ,CAAC,GAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,GAAjB,EAAsB,KAAK,CAAC,MAA5B,CAAlB,CAAA;IACA,QAAQ,CAAC,MAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,MAAjB,EAAyB,KAAK,CAAC,GAA/B,CAAlB,CAAA;IACA,QAAQ,CAAC,IAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,IAAjB,EAAuB,KAAK,CAAC,KAA7B,CAAlB,CAAA;IACA,QAAQ,CAAC,KAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,KAAjB,EAAwB,KAAK,CAAC,IAA9B,CAAlB,CAAA;GACD;;EAED,QAAQ,CAAC,KAAT,GAAkB,QAAQ,CAAC,KAAT,GAAkB,QAAQ,CAAC,IAA7C,CAAA;EACA,QAAQ,CAAC,MAAT,GAAkB,QAAQ,CAAC,MAAT,GAAkB,QAAQ,CAAC,GAA7C,CAAA;;EAEA,KAAK,IAAM,IAAX,IAAmB,QAAnB,EAA6B;IAC3B,SAAS,CAAC,IAAD,CAAT,GAAkB,QAAQ,CAAC,IAAD,CAAR,GAAiB,QAAQ,CAAC,IAAD,CAA3C,CAAA;GACD;;EAED,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,QAAZ,CAAqB,KAApC,CAAA;EACA,MAAM,CAAC,IAAP,GAAc,QAAd,CAAA;EACA,MAAM,CAAC,SAAP,GAAmB,SAAnB,CAAA;CACD;;AAED,SAAS,eAAT,CAAA,KAAA,EAAyD;EAAA,IAA7B,WAA6B,GAAA,KAAA,CAA7B,WAA6B;MAAhB,MAAgB,GAAA,KAAA,CAAhB,MAAgB;MAAR,MAAQ,GAAA,KAAA,CAAR,MAAQ,CAAA;;EACvD,IAAI,MAAM,KAAK,QAAX,IAAuB,CAAC,WAAW,CAAC,UAAxC,EAAoD;IAAE,OAAA;GAAQ;;EAE9D,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzC,CAAA;;EAEA,IAAI,OAAO,CAAC,MAAR,CAAe,MAAnB,EAA2B;IACzB,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MAClC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,MAAM,CAAC,KAAP,CAAa,CAA9B,CAAA;KADF,MAGK;MACH,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,MAAM,CAAC,KAAP,CAAa,CAA9B,CAAA;KACD;;IACD,MAAM,CAAC,IAAP,GAAc,IAAd,CAAA;GAPF,MASK;IACH,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC,UAA1B,CAAA;;IAEA,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MAClC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,CAAjB,CAAA;KADF,MAGK,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MACvC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,CAAjB,CAAA;KACD;GACF;CACF;;mBAEc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5ff,IAAA,SAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,0BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,0BAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAC5B,QAAA,CAAA,SAAA,CAAA,CAAQ,OAAR,CAAgB,KAAhB,CAAA,CAAA;;EACA,OAAA,CAAA,SAAA,CAAA,CAAO,OAAP,CAAe,KAAf,CAAA,CAAA;;EACA,SAAA,CAAA,SAAA,CAAA,CAAK,OAAL,CAAa,KAAb,CAAA,CAAA;;EACA,KAAA,CAAA,SAAA,CAAA,CAAK,OAAL,CAAa,KAAb,CAAA,CAAA;CACD;;AAED,IAAM,EAAE,GAAG,SAAX,CAAA;;;;;;;;;;;;;;;ACbA,IAAA,YAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,kEAAA;;AACA,sEAAA;;;;;;AAsBA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAKxB,KALwB,CAE1B,YAF0B;MAG1B,QAH0B,GAKxB,KALwB,CAG1B,QAH0B;MAI1B,OAJ0B,GAKxB,KALwB,CAI1B,OAJ0B,CAAA;EAO5B,KAAK,CAAC,UAAN,GAAmB,UAAnB,CAAA;;EACA,UAAU,CAAC,GAAX,GAAiB,YAAA;IAAA,OAAM,KAAK,CAAC,GAAN,EAAN,CAAA;GAAjB,CAAA;;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAU,CAAC,IAA3C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,UAAC,GAAD,EAAA;IAAA,OAAc,UAAU,CAAC,iBAAX,CAA6B,GAA7B,EAAkC,KAAlC,CAAd,CAAA;GAAvC,CAAA,CAAA;EAEA,OAAO,CAAC,UAAR,CAAmB,IAAnB,CAAwB,YAAxB,CAAA,CAAA;EACA,QAAQ,CAAC,SAAT,CAAmB,UAAnB,GAAgC,UAAU,CAAC,QAA3C,CAAA;CACD;;AAED,IAAM,UAAU,GAAG;EACjB,QAAQ,EAAE;IACR,OAAO,EAAI,KADH;IAER,MAAM,EAAK,EAFH;;IAKR,SAAS,EAAE,IALH;;IAQR,KAAK,EAAM,GAAA;GATI;EAYjB,GAAG,EAAE,IAAI,CAAC,GAZO;EAcjB,WAAW,EAAE,IAdI;EAejB,CAAC,EAAE,IAfc;EAgBjB,CAAC,EAAE,CAhBc;EAiBjB,CAAC,EAAE,CAjBc;EAmBjB,WAAW,EAAE,KAnBI;EAoBjB,QAAQ,EAAE,CApBO;EAqBjB,MAAM,EAAE,CArBS;EAsBjB,KAAK,EAAE,CAtBU;EAwBjB,KAxBiB,EAAA,SAAA,KAAA,CAwBV,WAxBU,EAwByB,KAxBzB,EAwB8C;IAC7D,UAAU,CAAC,WAAX,GAAyB,IAAzB,CAAA;;IACA,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;;IAEA,WAAW,CAAC,UAAZ,GAAyB,UAAzB,CAAA;IACA,UAAU,CAAC,WAAX,GAAyB,WAAzB,CAAA;IACA,UAAU,CAAC,QAAX,GAAsB,KAAK,CAAC,GAAN,EAAtB,CAAA;IACA,UAAU,CAAC,CAAX,GAAe,QAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,UAAU,CAAC,MAAvB,CAAf,CAAA;GA/Be;EAkCjB,IAlCiB,EAAA,SAAA,IAAA,GAkCb;IACF,UAAU,CAAC,WAAX,GAAyB,KAAzB,CAAA;;IACA,IAAI,UAAU,CAAC,WAAf,EAA4B;MAC1B,UAAU,CAAC,WAAX,CAAuB,UAAvB,GAAoC,IAApC,CAAA;KACD;;IACD,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;GAvCe;;EA2CjB,MA3CiB,EAAA,SAAA,MAAA,GA2CX;IAAA,IACI,WADJ,GACoB,UADpB,CACI,WADJ,CAAA;IAAA,IAEI,YAFJ,GAE8B,WAF9B,CAEI,YAFJ;QAEkB,OAFlB,GAE8B,WAF9B,CAEkB,OAFlB,CAAA;IAGJ,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,UAAU,CAAC,WAAX,CAAuB,QAAvB,CAAgC,IAArD,CAAA,CAA2D,UAA3E,CAAA;IACA,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAT,EAAoB,YAApB,EAAkC,OAAlC,CAA9B,CAAA;IACA,IAAM,GAAG,GAAG,IAAA,CAAK,KAAL,CAAW,GAAX,EAAZ,CALI;;IAOJ,IAAM,EAAE,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,QAAlB,IAA8B,IAAzC,CAPI;;IASJ,IAAM,CAAC,GAAG,OAAO,CAAC,KAAR,GAAgB,EAA1B,CAAA;;IAEA,IAAI,CAAC,IAAI,CAAT,EAAY;MACV,IAAM,QAAQ,GAAG;QACf,CAAC,EAAE,UAAU,CAAC,CAAX,GAAe,CADH;QAEf,CAAC,EAAE,UAAU,CAAC,CAAX,GAAe,CAAA;OAFpB,CAAA;;MAKA,IAAI,QAAQ,CAAC,CAAT,IAAc,QAAQ,CAAC,CAA3B,EAA8B;QAC5B,IAAM,UAAU,GAAG,SAAS,CAAC,SAAD,CAA5B,CAAA;;QAEA,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;UACxB,SAAS,CAAC,QAAV,CAAmB,QAAQ,CAAC,CAA5B,EAA+B,QAAQ,CAAC,CAAxC,CAAA,CAAA;SADF,MAGK,IAAI,SAAJ,EAAe;UAClB,SAAS,CAAC,UAAV,IAAwB,QAAQ,CAAC,CAAjC,CAAA;UACA,SAAS,CAAC,SAAV,IAAwB,QAAQ,CAAC,CAAjC,CAAA;SACD;;QAED,IAAM,SAAS,GAAG,SAAS,CAAC,SAAD,CAA3B,CAAA;QACA,IAAM,KAAK,GAAG;UACZ,CAAC,EAAE,SAAS,CAAC,CAAV,GAAc,UAAU,CAAC,CADhB;UAEZ,CAAC,EAAE,SAAS,CAAC,CAAV,GAAc,UAAU,CAAC,CAAA;SAF9B,CAAA;;QAKA,IAAI,KAAK,CAAC,CAAN,IAAW,KAAK,CAAC,CAArB,EAAwB;UACtB,YAAY,CAAC,IAAb,CAAkB;YAChB,IAAI,EAAE,YADU;YAEhB,MAAM,EAAE,OAFQ;YAGhB,YAAY,EAAZ,YAHgB;YAIhB,KAAK,EAAL,KAJgB;YAKhB,WAAW,EAAX,WALgB;YAMhB,SAAS,EAAT,SAAA;WANF,CAAA,CAAA;SAQD;OACF;;MAED,UAAU,CAAC,QAAX,GAAsB,GAAtB,CAAA;KACD;;IAED,IAAI,UAAU,CAAC,WAAf,EAA4B;MAC1B,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;;MACA,UAAU,CAAC,CAAX,GAAe,QAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,UAAU,CAAC,MAAvB,CAAf,CAAA;KACD;GA/Fc;EAiGjB,KAjGiB,EAAA,SAAA,KAAA,CAiGV,YAjGU,EAiGI,UAjGJ,EAiGc;IAC7B,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;IAEA,OAAO,OAAO,CAAC,UAAD,CAAP,CAAoB,UAApB,IAAkC,OAAO,CAAC,UAAD,CAAP,CAAoB,UAApB,CAA+B,OAAxE,CAAA;GApGe;EAsGjB,iBAtGiB,EAAA,SAAA,iBAAA,CAAA,KAAA,EAsG4B,KAtG5B,EAsGiD;IAAA,IAA7C,WAA6C,GAAA,KAAA,CAA7C,WAA6C;QAAhC,OAAgC,GAAA,KAAA,CAAhC,OAAgC,CAAA;;IAChE,IAAI,EAAE,WAAW,CAAC,WAAZ,EAAA,IACA,UAAU,CAAC,KAAX,CAAiB,WAAW,CAAC,YAA7B,EAA2C,WAAW,CAAC,QAAZ,CAAqB,IAAhE,CADF,CAAJ,EAC8E;MAC5E,OAAA;KACD;;IAED,IAAI,WAAW,CAAC,UAAhB,EAA4B;MAC1B,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,CAA9B,CAAA;MACA,OAAA;KACD;;IAED,IAAI,GAAJ,CAAA;IACA,IAAI,KAAJ,CAAA;IACA,IAAI,MAAJ,CAAA;IACA,IAAI,IAAJ,CAAA;IAdgE,IAgBxD,YAhBwD,GAgB9B,WAhB8B,CAgBxD,YAhBwD;QAgB1C,OAhB0C,GAgB9B,WAhB8B,CAgB1C,OAhB0C,CAAA;IAiBhE,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,WAAW,CAAC,QAAZ,CAAqB,IAA1C,CAAA,CAAgD,UAAhE,CAAA;IACA,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAT,EAAoB,YAApB,EAAkC,OAAlC,CAA9B,CAAA;;IAEA,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;MACxB,IAAI,GAAK,OAAO,CAAC,OAAR,GAAkB,UAAU,CAAC,MAAtC,CAAA;MACA,GAAG,GAAM,OAAO,CAAC,OAAR,GAAkB,UAAU,CAAC,MAAtC,CAAA;MACA,KAAK,GAAI,OAAO,CAAC,OAAR,GAAkB,SAAS,CAAC,UAAV,GAAwB,UAAU,CAAC,MAA9D,CAAA;MACA,MAAM,GAAG,OAAO,CAAC,OAAR,GAAkB,SAAS,CAAC,WAAV,GAAwB,UAAU,CAAC,MAA9D,CAAA;KAJF,MAMK;MACH,IAAM,IAAI,GAAG,YAAQ,CAAC,oBAAT,CAA8B,SAA9B,CAAb,CAAA;MAEA,IAAI,GAAK,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,IAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,GAAG,GAAM,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,GAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,KAAK,GAAI,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,KAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,MAAM,GAAG,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,MAAL,GAAc,UAAU,CAAC,MAApD,CAAA;KACD;;IAED,UAAU,CAAC,CAAX,GAAgB,KAAK,GAAG,CAAH,GAAO,IAAI,GAAG,CAAC,CAAJ,GAAQ,CAAxC,CAAA;IACA,UAAU,CAAC,CAAX,GAAgB,MAAM,GAAG,CAAH,GAAQ,GAAG,GAAG,CAAC,CAAJ,GAAQ,CAAzC,CAAA;;IAEA,IAAI,CAAC,UAAU,CAAC,WAAhB,EAA6B;;MAE3B,UAAU,CAAC,MAAX,GAAoB,OAAO,CAAC,MAA5B,CAAA;MACA,UAAU,CAAC,KAAX,GAAoB,OAAO,CAAC,KAA5B,CAAA;MAEA,UAAU,CAAC,KAAX,CAAiB,WAAjB,EAA8B,KAA9B,CAAA,CAAA;KACD;GACF;CAnJH,CAAA;;AAsJM,SAAU,YAAV,CAAwB,KAAxB,EAA+B,YAA/B,EAA6C,OAA7C,EAAoD;EACxD,OAAO,CAAC,MAAE,CAAC,MAAH,CAAU,KAAV,CAAA,GAAmB,CAAA,CAAA,EAAA,SAAA,CAAA,qBAAA,EAAsB,KAAtB,EAA6B,YAA7B,EAA2C,OAA3C,CAAnB,GAAyE,KAA1E,KAAoF,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,OAAV,CAA3F,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,SAArB,EAA8B;EAClC,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAAE,SAAS,GAAG,MAAM,CAAC,QAAP,CAAgB,IAA5B,CAAA;GAAkC;;EAE9D,OAAO;IAAE,CAAC,EAAE,SAAS,CAAC,UAAf;IAA2B,CAAC,EAAE,SAAS,CAAC,SAAA;GAA/C,CAAA;CACD;;AAEK,SAAU,aAAV,CAAyB,SAAzB,EAAkC;EACtC,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAAE,SAAS,GAAG,MAAM,CAAC,QAAP,CAAgB,IAA5B,CAAA;GAAkC;;EAE9D,OAAO;IAAE,CAAC,EAAE,SAAS,CAAC,WAAf;IAA4B,CAAC,EAAE,SAAS,CAAC,YAAA;GAAhD,CAAA;CACD;;AAEK,SAAU,kBAAV,CAAA,KAAA,EAAwD,IAAxD,EAA4D;EAAA,IAA5B,WAA4B,GAAA,KAAA,CAA5B,WAA4B;MAAf,OAAe,GAAA,KAAA,CAAf,OAAe,CAAA;EAChE,IAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,QAAZ,CAAqB,IAAtD,CAAA,CAA4D,UAAjG,CAAA;;EAEA,IAAI,CAAC,aAAD,IAAkB,CAAC,aAAa,CAAC,OAArC,EAA8C;IAC5C,IAAI,EAAA,CAAA;IACJ,OAAO;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAlB,CAAA;GACD;;EAED,IAAM,eAAe,GAAG,YAAY,CAClC,aAAa,CAAC,SADoB,EAElC,WAAW,CAAC,YAFsB,EAGlC,OAHkC,CAApC,CAAA;EAMA,IAAM,QAAQ,GAAG,SAAS,CAAC,eAAD,CAA1B,CAAA;EACA,IAAI,EAAA,CAAA;EACJ,IAAM,OAAO,GAAG,SAAS,CAAC,eAAD,CAAzB,CAAA;EAEA,OAAO;IACL,CAAC,EAAE,OAAO,CAAC,CAAR,GAAY,QAAQ,CAAC,CADnB;IAEL,CAAC,EAAE,OAAO,CAAC,CAAR,GAAY,QAAQ,CAAC,CAAA;GAF1B,CAAA;CAID;;mBAEc;EACb,EAAE,EAAE,aADS;EAEb,OAAO,EAAP,WAAA;;;;;;;;;;;;AChPF,8DAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;;;AA0BA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAG1B,YAH0B,GAKxB,KALwB,CAG1B,YAH0B;MAI1B,OAJ0B,GAKxB,KALwB,CAI1B,OAJ0B,CAAA;EAO5B,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,SAAnC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,YAAY,CAAC,SAAb,CAAuB,UAAvB,GAAoC,CAAA,CAAA,EAAA,UAAA,CAAA,QAAA,EAAS,UAA8B,QAA9B,EAAsC;IACjF,OAAO,IAAA,CAAK,iBAAL,CAAuB,YAAvB,EAAqC,QAArC,CAAP,CAAA;GADkC,EAEjC,mGAFiC,CAApC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,CAAA,CAAA,EAAA,UAAA,CAAA,QAAA,EAAS,UAA8B,QAA9B,EAAsC;IAChF,OAAO,IAAA,CAAK,iBAAL,CAAuB,WAAvB,EAAoC,QAApC,CAAP,CAAA;GADiC,EAEhC,iGAFgC,CAAnC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCA,YAAY,CAAC,SAAb,CAAuB,aAAvB,GAAuC,aAAvC,CAAA;;;;;;;;;EASA,YAAY,CAAC,SAAb,CAAuB,WAAvB,GAAqC,WAArC,CAAA;;EAEA,YAAY,CAAC,SAAb,CAAuB,oBAAvB,GAA8C,UAA8B,OAA9B,EAAuC,KAAvC,EAA8C,WAA9C,EAA2D,OAA3D,EAAkE;IAC9G,OAAO,oBAAoB,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,EAAuB,WAAvB,EAAoC,OAApC,EAA6C,OAA7C,CAA3B,CAAA;GADF,CAAA;CAGD;;AAED,SAAS,SAAT,CAAwC,OAAxC,EAAuE,KAAvE,EAAyG,WAAzG,EAAmI,OAAnI,EAAmJ;EACjJ,IAAM,MAAM,GAAG,IAAA,CAAK,oBAAL,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,EAAuD,OAAvD,CAAf,CAAA;;EAEA,IAAI,IAAA,CAAK,OAAL,CAAa,aAAjB,EAAgC;IAC9B,OAAO,IAAA,CAAK,OAAL,CAAa,aAAb,CAA2B,OAA3B,EAAoC,KAApC,EAA2C,MAA3C,EAAmD,IAAnD,EAAyD,OAAzD,EAAkE,WAAlE,CAAP,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,oBAAT,CAA+B,YAA/B,EAA2D,OAA3D,EAA0F,KAA1F,EAA4H,WAA5H,EAAsJ,OAAtJ,EAAwK,OAAxK,EAAwL;EACtL,IAAM,IAAI,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAb,CAAA;EACA,IAAM,OAAO,GAAI,KAAoB,CAAC,OAArB,IAAiC;IAChD,CAAA,EAAG,CAD6C;IAEhD,CAAA,EAAG,CAF6C;IAGhD,CAAA,EAAG,CAH6C;IAIhD,CAAA,EAAG,EAAA;GAJ4C,CAK7C,KAAoB,CAAC,MALwB,CAAjD,CAAA;EAMA,IAAI,MAAM,GAAG,IAAb,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,OAAO,CAAC,KAAjC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAf,OAAO,CAAC,KAAO,CAAA,EAAA,CAAA,CAAA;IAAA,IAA7B,UAA6B,GAAA,IAAA,CAAA;;;IAEtC,IAAI,WAAW,CAAC,aAAZ,IACA,eAAA,CAAgB,IAAhB,CAAqB,WAAW,CAAC,WAAjC,CADA,IAEF,CAAC,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,UAArB,CAAA,CAAiC,YAA5C,MAA8D,CAFhE,EAEmE;MACjE,SAAA;KACD;;IAED,MAAM,GAAI,OAAO,CAAC,UAAD,CAAP,CAA6C,OAA7C,CAAqD,OAArD,EAA8D,KAA9D,EAAqE,YAArE,EAAmF,OAAnF,EAA4F,WAA5F,EAAyG,IAAzG,CAAV,CAAA;;IAEA,IAAI,MAAJ,EAAY;MACV,OAAO,MAAP,CAAA;KACD;GACF;CACF;;AAED,SAAS,WAAT,CAA0C,QAA1C,EAA4D;EAC1D,IAAI,MAAE,CAAC,IAAH,CAAQ,QAAR,CAAJ,EAAuB;IACrB,IAAA,CAAK,OAAL,CAAa,WAAb,GAA2B,QAA3B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,QAAQ,KAAK,IAAjB,EAAuB;IACrB,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;CACD;;AAED,SAAS,aAAT,CAA4C,OAA5C,EAAwD;EACtD,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;IACpB,IAAA,CAAK,OAAL,CAAa,aAAb,GAA6B,OAA7B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,OAAO,KAAK,IAAhB,EAAsB;IACpB,OAAO,IAAA,CAAK,OAAL,CAAa,aAApB,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,aAApB,CAAA;CACD;;mBAEc;EACb,EAAE,EAAE,gCADS;EAEb,OAAO,EAAP,WAAA;;;;;;;;;;;;ACpNF,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,oBAAA,GAAA,0BAAA,CAAA,uBAAA,CAAA,CAAA;;;;;;AA0CA,SAAS,WAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,QAFmC,GAKjC,KALiC,CAEnC,QAFmC;MAGnC,YAHmC,GAKjC,KALiC,CAGnC,YAHmC;MAInC,QAJmC,GAKjC,KALiC,CAInC,QAJmC,CAAA;;EAOrC,oBAAA,CAAA,SAAA,CAAA,CAAoB,OAApB,CAA4B,KAA5B,CAAA,CAPqC;;;EAUrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,IAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,IAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,IAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,IAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;;IAC/E,IAAI,WAAW,CAAC,WAAZ,EAAJ,EAA+B;MAAE,OAAA;KAAQ;;IAEzC,IAAM,UAAU,GAAG,aAAa,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,WAA9B,EAA2C,KAA3C,CAAhC,CAAA;IACA,OAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,KAA1B,CAAP,CAAA;GAJF,CAAA,CAVqC;;EAkBrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,KAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC/E,IAAI,WAAW,CAAC,WAAZ,KAA4B,OAA5B,IACA,WAAW,CAAC,aADZ,IAEA,WAAW,CAAC,WAAZ,EAFJ,EAE+B;MAAE,OAAA;KAAQ;;IAEzC,IAAM,UAAU,GAAG,aAAa,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,WAA9B,EAA2C,KAA3C,CAAhC,CAAA;IACA,OAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,KAA1B,CAAP,CAAA;GANF,CAAA,CAAA;EASA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAQ;IAAA,IAC9B,WAD8B,GACd,GADc,CAC9B,WAD8B,CAAA;;IAGtC,IAAI,CAAC,WAAW,CAAC,aAAb,IACA,WAAW,CAAC,WAAZ,EADA,IAEA,CAAC,WAAW,CAAC,eAFb,IAGA,CAAC,WAAW,CAAC,QAAZ,CAAqB,IAH1B,EAGgC;MAC9B,OAAA;KACD;;IAED,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,IAAxB,CAA6B,cAA7B,EAA6C,GAA7C,CAAA,CAAA;IAVsC,IAY9B,YAZ8B,GAYb,WAZa,CAY9B,YAZ8B,CAAA;;IActC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,IAA6B,YAAjC,EAA+C;;MAE7C,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAW,CAAC,QAAZ,CAAqB,IAA1C,CAAA,CAAgD,WAAhD,IACA,CAAC,sBAAsB,CAAC,YAAD,EAAe,WAAW,CAAC,OAA3B,EAAoC,WAAW,CAAC,QAAhD,EAA0D,KAA1D,CAD3B,EAC6F;QAC3F,WAAW,CAAC,IAAZ,EAAA,CAAA;OAFF,MAIK;QACH,WAAW,CAAC,KAAZ,CAAkB,WAAW,CAAC,QAA9B,EAAwC,YAAxC,EAAsD,WAAW,CAAC,OAAlE,CAAA,CAAA;OACD;KACF;GAvBH,CAAA,CAAA;EA0BA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IAAA,IAC1C,YAD0C,GACzB,WADyB,CAC1C,YAD0C,CAAA;;IAGlD,IAAI,YAAY,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAzC,EAAsD;MACpD,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,EAArC,EAAyC,KAAzC,CAAT,CAAA;KACD;GALH,CAAA,CAAA;EAQA,QAAQ,CAAC,IAAT,CAAc,aAAd,GAA8B,IAA9B,CAAA;EACA,QAAQ,CAAC,IAAT,CAAc,WAAd,GAA4B,IAA5B,CAAA;EAEA,SAAK,CAAC,MAAN,CAAa,QAAQ,CAAC,SAAtB,EAAiC;IAC/B,WAAW,EAAE,KADkB;IAE/B,GAAG,EAAE,QAF0B;IAG/B,aAAa,EAAE,CAHgB;IAI/B,SAAS,EAAG,IAJmB;IAK/B,UAAU,EAAE,IALmB;;;IAS/B,YAAY,EAAE,CAAA;GAThB,CAAA,CAAA;;;;;;;;;;;;;EAuBA,QAAQ,CAAC,eAAT,GAA2B,UAAC,QAAD,EAAA;IAAA,OAAc,eAAe,CAAC,QAAD,EAAW,KAAX,CAA7B,CAAA;GAA3B,CAAA;;EAEA,KAAK,CAAC,SAAN,GAAkB;;IAEhB,eAAe,EAAE,QAFD;IAGhB,sBAAsB,EAAtB,sBAHgB;IAIhB,aAAa,EAAE,IAJC;IAKhB,OAAO,EAAE,IAAI,SAAK,CAAC,OAAV,EAAA;GALX,CAAA;;;;;AAWF,SAAS,cAAT,CAAyB,MAAzB,EAAiC,YAAjC,EAA+C,OAA/C,EAAwD,WAAxD,EAAqE,KAArE,EAA0E;EACxE,IAAI,YAAY,CAAC,eAAb,CAA6B,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAA7B,EAAgE,OAAhE,EAAyE,WAAzE,CAAA,IACA,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAAA,CAAkC,OADlC,IAEA,sBAAsB,CAAC,YAAD,EAAe,OAAf,EAAwB,MAAxB,EAAgC,KAAhC,CAF1B,EAEkE;IAChE,OAAO,MAAP,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAA6D,OAA7D,EAAsE,KAAtE,EAA6E,OAA7E,EAA+G,aAA/G,EAAyI,WAAzI,EAA+J,KAA/J,EAAoL;EAClL,KAAK,IAAI,CAAC,GAAG,CAAR,EAAW,GAAG,GAAG,OAAO,CAAC,MAA9B,EAAsC,CAAC,GAAG,GAA1C,EAA+C,CAAC,EAAhD,EAAoD;IAClD,IAAM,KAAK,GAAG,OAAO,CAAC,CAAD,CAArB,CAAA;IACA,IAAM,YAAY,GAAG,aAAa,CAAC,CAAD,CAAlC,CAAA;IACA,IAAM,WAAW,GAAG,KAAK,CAAC,SAAN,CAAgB,OAAhB,EAAyB,KAAzB,EAAgC,WAAhC,EAA6C,YAA7C,CAApB,CAAA;;IAEA,IAAI,CAAC,WAAL,EAAkB;MAAE,SAAA;KAAU;;IAE9B,IAAM,MAAM,GAAG,cAAc,CAC3B,WAD2B,EAE3B,KAF2B,EAG3B,YAH2B,EAI3B,WAJ2B,EAK3B,KAL2B,CAA7B,CAAA;;IAOA,IAAI,MAAJ,EAAY;MACV,OAAO;QACL,MAAM,EAAN,MADK;QAEL,YAAY,EAAE,KAFT;QAGL,OAAO,EAAE,YAAA;OAHX,CAAA;KAKD;GACF;;EAED,OAAO;IAAE,MAAM,EAAE,IAAV;IAAgB,YAAY,EAAE,IAA9B;IAAoC,OAAO,EAAE,IAAA;GAApD,CAAA;CACD;;AAED,SAAS,aAAT,CAAwB,WAAxB,EAA2D,OAA3D,EAA0F,KAA1F,EAA4H,WAA5H,EAAkJ,KAAlJ,EAAuK;EACrK,IAAI,OAAO,GAAG,EAAd,CAAA;EACA,IAAI,aAAa,GAAG,EAApB,CAAA;EAEA,IAAI,OAAO,GAAG,WAAd,CAAA;;EAEA,SAAS,WAAT,CAAsB,YAAtB,EAAkC;IAChC,OAAO,CAAC,IAAR,CAAa,YAAb,CAAA,CAAA;IACA,aAAa,CAAC,IAAd,CAAmB,OAAnB,CAAA,CAAA;GACD;;EAED,OAAO,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAP,EAAkC;IAChC,OAAO,GAAG,EAAV,CAAA;IACA,aAAa,GAAG,EAAhB,CAAA;IAEA,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,OAAjC,EAA0C,WAA1C,CAAA,CAAA;IAEA,IAAM,UAAU,GAAG,eAAe,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,OAA9B,EAAuC,aAAvC,EAAsD,WAAtD,EAAmE,KAAnE,CAAlC,CAAA;;IAEA,IAAI,UAAU,CAAC,MAAX,IACF,CAAC,UAAU,CAAC,YAAX,CAAwB,OAAxB,CAAgC,UAAU,CAAC,MAAX,CAAkB,IAAlD,CAAA,CAAwD,WAD3D,EACwE;MACtE,OAAO,UAAP,CAAA;KACD;;IAED,OAAO,GAAG,SAAK,CAAC,GAAN,CAAU,UAAV,CAAqB,OAArB,CAAV,CAAA;GACD;;EAED,OAAO;IAAE,MAAM,EAAE,IAAV;IAAgB,YAAY,EAAE,IAA9B;IAAoC,OAAO,EAAE,IAAA;GAApD,CAAA;CACD;;AAED,SAAS,OAAT,CAAkB,WAAlB,EAAA,KAAA,EAAwF,KAAxF,EAA6G;EAAA,IAAtD,MAAsD,GAAA,KAAA,CAAtD,MAAsD;MAA9C,YAA8C,GAAA,KAAA,CAA9C,YAA8C;MAAhC,OAAgC,GAAA,KAAA,CAAhC,OAAgC,CAAA;EAC3G,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;EAEA,IAAI,WAAW,CAAC,YAAZ,IAA4B,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAjE,EAA8E;IAC5E,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,EAArC,EAAyC,KAAzC,CAAT,CAAA;GACD;;EAED,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;EACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;EACA,SAAK,CAAC,UAAN,CAAiB,WAAW,CAAC,QAA7B,EAAuC,MAAvC,CAAA,CAAA;EAEA,WAAW,CAAC,IAAZ,GAAmB,YAAY,IAAI,MAAM,CAAC,IAAvB,GACf,YAAY,CAAC,OAAb,CAAqB,OAArB,CADe,GAEf,IAFJ,CAAA;;EAIA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAzC,EAAsD;IACpD,IAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAN,CAAc,MAAM,CAAC,IAArB,CAAA,CAA2B,SAA3B,CAAqC,MAArC,CAAH,GAAkD,EAAvE,CAAA;IACA,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,MAArC,EAA6C,KAA7C,CAAT,CAAA;GACD;;EAED,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,IAAxB,CAA6B,UAA7B,EAAyC;IAAE,WAAW,EAAX,WAAA;GAA3C,CAAA,CAAA;CACD;;AAED,SAAS,sBAAT,CAAiC,YAAjC,EAAsE,OAAtE,EAAwF,MAAxF,EAAgG,KAAhG,EAAqH;EACnH,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;EACA,IAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAR,CAAP,CAAqB,GAAxC,CAAA;EACA,IAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,IAAR,CAAP,CAAqB,aAA3C,CAAA;EACA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAN,CAAgB,eAArC,CAAA;EACA,IAAI,kBAAkB,GAAG,CAAzB,CAAA;EACA,IAAI,iBAAiB,GAAG,CAAxB,CAAA;EACA,IAAI,YAAY,GAAG,CAAnB,CAPmH;;EAUnH,IAAI,EAAE,UAAU,IAAI,aAAd,IAA+B,YAAjC,CAAJ,EAAoD;IAAE,OAAO,KAAP,CAAA;GAAc;;EAEpE,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,EAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;IACjD,IAAM,WAAW,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAzC,CAAA;;IAEA,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAL,EAAgC;MAAE,SAAA;KAAU;;IAE5C,kBAAkB,EAAA,CAAA;;IAElB,IAAI,kBAAkB,IAAI,YAA1B,EAAwC;MACtC,OAAO,KAAP,CAAA;KACD;;IAED,IAAI,WAAW,CAAC,YAAZ,KAA6B,YAAjC,EAA+C;MAAE,SAAA;KAAU;;IAE3D,iBAAiB,IAAI,WAAW,KAAK,MAAM,CAAC,IAAvB,GAA8B,CAA9B,GAAkC,CAAvD,CAAA;;IAEA,IAAI,iBAAiB,IAAI,UAAzB,EAAqC;MACnC,OAAO,KAAP,CAAA;KACD;;IAED,IAAI,WAAW,CAAC,OAAZ,KAAwB,OAA5B,EAAqC;MACnC,YAAY,EAAA,CAAA;;MAEZ,IAAI,WAAW,KAAK,MAAM,CAAC,IAAvB,IAA+B,YAAY,IAAI,aAAnD,EAAkE;QAChE,OAAO,KAAP,CAAA;OACD;KACF;GACF;;EAED,OAAO,YAAY,GAAG,CAAtB,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,QAA1B,EAAoC,KAApC,EAAyD;EACvD,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAhB,CAAJ,EAA+B;IAC7B,KAAK,CAAC,SAAN,CAAgB,eAAhB,GAAkC,QAAlC,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,KAAK,CAAC,SAAN,CAAgB,eAAvB,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,OAApB,EAA0C,MAA1C,EAAkD,KAAlD,EAAuE;EACrE,IAAI,KAAK,CAAC,SAAN,CAAgB,aAApB,EAAmC;IACjC,KAAK,CAAC,SAAN,CAAgB,aAAhB,CAA8B,KAA9B,CAAoC,MAApC,GAA6C,EAA7C,CAAA;GACD;;EAED,OAAO,CAAC,aAAR,CAAsB,eAAtB,CAAsC,KAAtC,CAA4C,MAA5C,GAAqD,MAArD,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,MAAvB,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,aAAhB,GAAgC,MAAM,GAAG,OAAH,GAAa,IAAnD,CAAA;CACD;;mBAEc;EACb,EAAE,EAAE,iBADS;EAEb,OAAO,EAAP,WAFa;EAGb,eAAe,EAAf,eAHa;EAIb,sBAAsB,EAAtB,sBAJa;EAKb,cAAc,EAAd,cAAA;;;;;;;;;;;;AC7SF,IAAA,WAAA,GAAA,cAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;AAIA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAC5B,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,EAAxB,CAA2B,cAA3B,EAA4C,UAAA,IAAA,EAAyC;IAAA,IAAtC,WAAsC,GAAA,IAAA,CAAtC,WAAsC;QAAzB,WAAyB,GAAA,IAAA,CAAzB,WAAyB;QAAZ,EAAY,GAAA,IAAA,CAAZ,EAAY;QAAR,EAAQ,GAAA,IAAA,CAAR,EAAQ,CAAA;;IACnF,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KADuC;;;IAInF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,EAAT,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,EAAT,CAAb,CAAA;IACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,IAAvD,CAAA;IACA,IAAM,SAAS,GAAG,aAAa,CAAC,SAAhC,CAAA;IACA,IAAM,WAAW,GAAI,IAAI,GAAG,IAAP,GAAc,GAAd,GAAoB,IAAI,GAAG,IAAP,GAAc,GAAd,GAAoB,IAA7D,CAAA;IAEA,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,aAAa,CAAC,QAAd,KAA2B,OAA3B,GACxB,WAAW,CAAC,CAAD,CADa;MAExB,aAAa,CAAC,QAFlB,CAVmF;;IAenF,IAAI,WAAW,KAAK,IAAhB,IAAwB,SAAS,KAAK,IAAtC,IAA8C,SAAS,KAAK,WAAhE,EAA6E;;MAE3E,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,IAA5B,CAF2E;;MAK3E,IAAI,OAAO,GAAG,WAAd,CAAA;;MAEA,IAAM,YAAY,GAAG,SAAf,YAAe,CAAU,YAAV,EAAsB;QACzC,IAAI,YAAY,KAAK,WAAW,CAAC,YAAjC,EAA+C;UAAE,OAAA;SAAQ;;QAEzD,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,IAAjD,CAAA;;QAEA,IAAI,CAAC,OAAO,CAAC,WAAT,IACA,YAAY,CAAC,eAAb,CAA6B,OAA7B,EAAsC,OAAtC,EAA+C,WAA/C,CADJ,EACiE;UAC/D,IAAM,MAAM,GAAG,YAAY,CAAC,SAAb,CACb,WAAW,CAAC,WADC,EACY,WAAW,CAAC,SADxB,EACmC,WADnC,EACgD,OADhD,CAAf,CAAA;;UAGA,IAAI,MAAM,IACN,MAAM,CAAC,IAAP,KAAgB,WAAA,CAAA,UAAA,CAAW,IAD3B,IAEA,cAAc,CAAC,WAAD,EAAc,YAAd,CAFd,IAGA,KAAA,CAAA,SAAA,CAAA,CAAU,cAAV,CAAyB,MAAzB,EAAiC,YAAjC,EAA+C,OAA/C,EAAwD,WAAxD,EAAqE,KAArE,CAHJ,EAGiF;YAC/E,OAAO,YAAP,CAAA;WACD;SACF;OAhBH,CAP2E;;;MA2B3E,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;QAC1B,IAAM,YAAY,GAAG,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,OAAjC,EAA0C,YAA1C,CAArB,CAAA;;QAEA,IAAI,YAAJ,EAAkB;UAChB,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,WAAA,CAAA,UAAA,CAAW,IAAvC,CAAA;UACA,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;UACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;UACA,MAAA;SACD;;QAED,OAAO,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,OAAX,CAAV,CAAA;OACD;KACF;GAtDH,CAAA,CAAA;;EAyDA,SAAS,cAAT,CAAyB,SAAzB,EAAoC,YAApC,EAAgD;IAC9C,IAAI,CAAC,YAAL,EAAmB;MAAE,OAAO,KAAP,CAAA;KAAc;;IAEnC,IAAM,QAAQ,GAAG,YAAY,CAAC,OAAb,CAAqB,WAAA,CAAA,UAAA,CAAW,IAAhC,CAAA,CAAsC,SAAvD,CAAA;IAEA,OAAQ,SAAS,KAAK,IAAd,IAAsB,QAAQ,KAAK,IAAnC,IAA2C,QAAQ,KAAK,SAAhE,CAAA;GACD;CACF;;oBAEc;EACb,EAAE,EAAE,qBADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AC5EF,IAAA,UAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;AAeA,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,SAFmC,GAKjC,KALiC,CAEnC,SAFmC;MAGnC,YAHmC,GAKjC,KALiC,CAGnC,YAHmC;MAInC,QAJmC,GAKjC,KALiC,CAInC,QAJmC,CAAA;EAOrC,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,QAAQ,CAAC,SAAT,CAAmB,IAAnB,GAA0B,CAA1B,CAAA;EACA,QAAQ,CAAC,SAAT,CAAmB,KAAnB,GAA2B,CAA3B,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAC,WAAD,EAAgB;IAC7C,WAAW,CAAC,kBAAZ,GAAiC,IAAjC,CAAA;GADF,CAAA,CAAA;EAIA,SAAS,CAAC,OAAV,CAAkB,EAAlB,CAAqB,UAArB,EAAiC,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACnD,IAAM,IAAI,GAAG,eAAe,CAAC,WAAD,CAA5B,CAAA;;IAEA,IAAI,IAAI,GAAG,CAAX,EAAc;MACZ,WAAW,CAAC,kBAAZ,GAAiC,UAAU,CAAC,YAAK;QAC/C,WAAW,CAAC,KAAZ,CAAkB,WAAW,CAAC,QAA9B,EAAwC,WAAW,CAAC,YAApD,EAAkE,WAAW,CAAC,OAA9E,CAAA,CAAA;OADyC,EAExC,IAFwC,CAA3C,CAAA;KAGD;GAPH,CAAA,CAAA;EAUA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAA+B;IAAA,IAA5B,WAA4B,GAAA,KAAA,CAA5B,WAA4B;QAAf,SAAe,GAAA,KAAA,CAAf,SAAe,CAAA;;IAC7D,IAAI,WAAW,CAAC,eAAZ,IAA+B,CAAC,SAApC,EAA+C;MAC7C,YAAY,CAAC,WAAW,CAAC,kBAAb,CAAZ,CAAA;KACD;GAHH,CAAA,CA1BqC;;EAiCrC,SAAS,CAAC,OAAV,CAAkB,EAAlB,CAAqB,cAArB,EAAqC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IACvD,IAAM,IAAI,GAAG,eAAe,CAAC,WAAD,CAA5B,CAAA;;IAEA,IAAI,IAAI,GAAG,CAAX,EAAc;MACZ,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,IAA5B,CAAA;KACD;GALH,CAAA,CAAA;CAOD;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAAqC;EACnC,IAAM,UAAU,GAAG,WAAW,CAAC,QAAZ,IAAwB,WAAW,CAAC,QAAZ,CAAqB,IAAhE,CAAA;;EAEA,IAAI,CAAC,UAAL,EAAiB;IAAE,OAAO,IAAP,CAAA;GAAa;;EAEhC,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzC,CAAA;EAEA,OAAO,OAAO,CAAC,UAAD,CAAP,CAAoB,IAApB,IAA4B,OAAO,CAAC,UAAD,CAAP,CAAoB,KAAvD,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,iBADS;EAEb,OAAO,EAAP,YAFa;EAGb,eAAe,EAAf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtEF,IAAA,UAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;AAEA,SAAS,YAAT,CAAkB,KAAlB,EAAuB;EACrB,UAAA,CAAA,SAAA,CAAA,CAAU,OAAV,CAAkB,KAAlB,CAAA,CAAA;;EACA,KAAA,CAAA,SAAA,CAAA,CAAK,OAAL,CAAa,KAAb,CAAA,CAAA;;EACA,SAAA,CAAA,SAAA,CAAA,CAAS,OAAT,CAAiB,KAAjB,CAAA,CAAA;CACD;;AAED,IAAM,OAAE,GAAG,YAAX,CAAA;;;;;;;;;;;;ACVA,0EAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,sEAAA;;;;;;AAEA,SAAS,cAAT,CAAyB,YAAzB,EAAuC,QAAvC,EAA+C;EAC7C,IAAI,uBAAA,CAAwB,IAAxB,CAA6B,QAA7B,CAAJ,EAA4C;IAC1C,YAAY,CAAC,OAAb,CAAqB,cAArB,GAAsC,QAAtC,CAAA;IACA,OAAO,YAAP,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,IAAH,CAAQ,QAAR,CAAJ,EAAuB;IACrB,YAAY,CAAC,OAAb,CAAqB,cAArB,GAAsC,QAAQ,GAAG,QAAH,GAAc,OAA5D,CAAA;IACA,OAAO,YAAP,CAAA;GACD;;EAED,OAAO,YAAY,CAAC,OAAb,CAAqB,cAA5B,CAAA;CACD;;AAED,SAAS,sBAAT,CAAiC,YAAjC,EAA+C,KAA/C,EAAsD,KAAtD,EAA2D;EACzD,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,cAArC,CAAA;;EAEA,IAAI,OAAO,KAAK,OAAhB,EAAyB;IAAE,OAAA;GAAQ;;EAEnC,IAAI,OAAO,KAAK,QAAhB,EAA0B;IACxB,KAAK,CAAC,cAAN,EAAA,CAAA;IACA,OAAA;GAPuD;;;;;;EAezD,IAAI,YAAA,CAAA,SAAA,CAAA,CAAO,eAAP,IAA0B,qBAAA,CAAsB,IAAtB,CAA2B,KAAK,CAAC,IAAjC,CAA9B,EAAsE;IACpE,IAAM,GAAG,GAAG,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,KAAK,CAAC,MAAhB,CAAA,CAAwB,QAApC,CAAA;IACA,IAAM,UAAU,GAAG,KAAK,CAAC,aAAN,CAAoB,GAApB,CAAnB,CAAA;;IAEA,IAAI,EAAE,UAAU,IAAI,UAAU,CAAC,MAA3B,CAAA,IAAsC,UAAU,CAAC,MAAX,CAAkB,OAAlB,KAA8B,KAAxE,EAA+E;MAC7E,OAAA;KACD;GArBsD;;;EAyBzD,IAAI,sCAAA,CAAuC,IAAvC,CAA4C,KAAK,CAAC,IAAlD,CAAJ,EAA6D;IAC3D,OAAA;GA1BuD;;;EA8BzD,IAAI,OAAE,CAAC,OAAH,CAAW,KAAK,CAAC,MAAjB,CAAA,IACA,CAAA,CAAA,EAAA,aAAA,CAAA,eAAA,EAAgB,KAAK,CAAC,MAAtB,EAA8B,uEAA9B,CADJ,EAC4G;IAC1G,OAAA;GACD;;EAED,KAAK,CAAC,cAAN,EAAA,CAAA;CACD;;AAED,SAAS,kBAAT,CAAA,IAAA,EAAmD;EAAA,IAApB,WAAoB,GAAA,IAAA,CAApB,WAAoB;MAAP,KAAO,GAAA,IAAA,CAAP,KAAO,CAAA;;EACjD,IAAI,WAAW,CAAC,YAAhB,EAA8B;IAC5B,WAAW,CAAC,YAAZ,CAAyB,sBAAzB,CAAgD,KAAhD,CAAA,CAAA;GACD;CACF;;AAEK,SAAU,YAAV,CAAmB,KAAnB,EAAwB;;EAE5B,IAAM,YAAY,GAAG,KAAK,CAAC,YAA3B,CAAA;;;;;;;;;;;;EAYA,YAAY,CAAC,SAAb,CAAuB,cAAvB,GAAwC,UAAU,QAAV,EAAkB;IACxD,OAAO,cAAc,CAAC,IAAD,EAAO,QAAP,CAArB,CAAA;GADF,CAAA;;EAIA,YAAY,CAAC,SAAb,CAAuB,sBAAvB,GAAgD,UAAU,KAAV,EAAe;IAC7D,OAAO,sBAAsB,CAAC,IAAD,EAAO,KAAP,EAAc,KAAd,CAA7B,CAAA;GADF,CAAA;;EAlB4B,IAAA,IAAA,GAsBF,CAAC,MAAD,EAAS,MAAT,EAAiB,IAAjB,EAAuB,QAAvB,CAtBE,CAAA;;EAsB5B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAA4D;IAAvD,IAAM,WAAW,GAAA,IAAA,CAAA,EAAA,CAAjB,CAAA;IACH,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,EAA3B,CAA8B,WAA9B,EAA2C,kBAA3C,CAAA,CAAA;GAvB0B;;;EA2B5B,KAAK,CAAC,YAAN,CAAmB,QAAnB,CAA4B,SAA5B,GAAwC,SAAS,iBAAT,CAA4B,KAA5B,EAAiC;IACvE,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,WAAW,CAAC,OAAZ,KACD,WAAW,CAAC,OAAZ,KAAwB,KAAK,CAAC,MAA9B,IACC,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,WAAW,CAAC,OAAzB,EAAkC,KAAK,CAAC,MAAxC,CAFA,CAAJ,EAEsD;QACpD,WAAW,CAAC,YAAZ,CAAyB,sBAAzB,CAAgD,KAAhD,CAAA,CAAA;QACA,OAAA;OACD;KACF;GARH,CAAA;CAUD;;oBAIc;EACb,EAAE,EAAE,iCADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;;;;ACxGF,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;;;AAcO,IAAM,KAAK,GAAG;EACnB,WAAW,EAAE,+DADM;EAEnB,SAAS,EAAE,6DAAA;CAFN,CAAA;;AAKA,IAAM,YAAO,GAAG,SAAQ,KAAI,YAAa,GAAA,YAC5C,EAAA;EAEA,SAAS,OAAT,CAAkB,KAAlB,EAA6E;EAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAF,EAAE;MAAlC,MAAkC,GAAA,IAAA,CAAlC,MAAkC,CAAA;;EAC7E,MAAM,GAAG,MAAM,IAAI,OAAnB,CAAA;;EACA,IAAI,SAAQ,KAAI,YAAa,EAAA;IAC3B,KAAK,CAAC,MAAN,GAAe,MAAf,CAAA;IACA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,EAA3B,CAA8B,cAA9B,EAA8C,UAAA,KAAA,EAAoB;MAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;MAChE,WAAW,CAAC,WAAD,EAAc,KAAK,CAAC,MAApB,CAAX,CAAA;MACA,SAAS,CAAC,WAAD,EAAc,KAAK,CAAC,MAApB,CAAT,CAAA;MACA,WAAW,CAAC,WAAD,EAAc,KAAK,CAAC,MAApB,CAAX,CAAA;KAHF,CAAA,CAAA;GAKD;CAZE,CAAA;;AAeA,IAAM,kBAAkB,GAAG,0EAA3B,CAAA;;AACA,IAAM,gBAAgB,GAAG,sFAAzB,CAAA;;AACA,IAAM,kBAAkB,GAAG,0DAA3B,CAAA;;;AAED,SAAU,WAAV,CAAA,KAAA,EAA0D,MAA1D,EAAwE;EAAA,IAA/C,OAA+C,GAAA,KAAA,CAA/C,OAA+C,CAAA;;EAC5E,IAAI,CAAC,cAAc,CAAC,OAAD,EAAU,aAAV,EAAyB,iBAAzB,CAAnB,EAAgE;IAC9D,MAAM,CAAC,IAAP,CACE,kBADF,EAEE,OAFF,EAGE,KAAK,CAAC,WAHR,CAAA,CAAA;GAID;CACF;;AAEK,SAAU,SAAV,CAAqB,WAArB,EAAwD,MAAxD,EAAsE;EAAA,IAClE,OADkE,GACtD,WADsD,CAClE,OADkE,CAAA;;EAG1E,IACE,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IACA,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,WAD9B,IAEA,CAAC,QAAQ,CAAC,OAAD,EAAU,WAAV,EAAuB,YAAvB,CAHX,EAIE;IACA,MAAM,CAAC,IAAP,CACE,gBADF,EAEE,OAFF,EAGE,KAAK,CAAC,SAHR,CAAA,CAAA;GAID;CACF;;AAEK,SAAU,WAAV,CAAuB,WAAvB,EAA0D,MAA1D,EAAwE;EAC5E,IAAM,UAAU,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAxC,CAAA;EACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,MAAzB,CAAgC,KAAhC,CAAA,EAAA,CAAA,MAAA,CAAyC,UAAzC,EAAA,MAAA,CAAA,CAAA,IAA8D,EAApF,CAAA;;EAEA,IAAI,CAAC,aAAa,CAAC,MAAnB,EAA2B;IACzB,MAAM,CAAC,IAAP,CACE,kBADF,EAEE,UAFF,EAGE,WAAW,CAAC,YAHd,CAAA,CAAA;GAID;CACF;;AAED,SAAS,QAAT,CAAmB,OAAnB,EAAyC,IAAzC,EAA0E,OAA1E,EAAyF;EACvF,OAAO,OAAO,CAAC,IAAR,CAAa,OAAO,CAAC,KAAR,CAAc,IAAd,CAAA,IAAuB,YAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,gBAAX,CAA4B,OAA5B,CAAA,CAAqC,IAArC,CAApC,CAAP,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,OAAzB,EAA2C,IAA3C,EAA4E,OAA5E,EAA2F;EACzF,IAAI,MAAM,GAAG,OAAb,CAAA;;EAEA,OAAO,OAAE,CAAC,OAAH,CAAW,MAAX,CAAP,EAA2B;IACzB,IAAI,QAAQ,CAAC,MAAD,EAAS,IAAT,EAAe,OAAf,CAAZ,EAAqC;MACnC,OAAO,IAAP,CAAA;KACD;;IAED,MAAM,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,MAAX,CAAT,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,WADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AClGF,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;;;;;;AAoBA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAGxB,KAHwB,CAE1B,YAF0B,CAAA;EAK5B,KAAK,CAAC,QAAN,CAAe,SAAf,CAAyB,SAAzB,GAAqC,EAArC,CAAA;EACA,KAAK,CAAC,SAAN,GAAkB,EAAlB,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,SAAZ,GAAwB;MACtB,WAAW,EAAE;QAAE,IAAI,EAAE,CAAR;QAAW,KAAK,EAAE,CAAlB;QAAqB,GAAG,EAAE,CAA1B;QAA6B,MAAM,EAAE,CAAA;OAD5B;MAEtB,OAAO,EAAM,EAFS;MAGtB,MAAM,EAAK,IAHW;MAItB,MAAM,EAAO,IAAA;KAJf,CAAA;GADF,CAAA,CAAA;EASA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,UAAC,GAAD,EAAQ;IACrD,UAAK,CAAC,GAAD,EAAa,GAAG,CAAC,WAAJ,CAAgB,MAAhB,CAAuB,KAAvB,CAA6B,IAA1C,EAAgD,KAAK,CAAC,SAAtD,CAAL,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,eAAxB,EAAyC,UAAC,GAAD,EAAQ;IAC/C,eAAU,CAAC,GAAD,CAAV,CAAA;IACA,UAAK,CAAC,GAAD,EAAa,GAAG,CAAC,WAAJ,CAAgB,MAAhB,CAAuB,GAAvB,CAA2B,IAAxC,EAA8C,KAAK,CAAC,SAApD,CAAL,CAAA;GAFF,CAAA,CAAA;EAKA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,eAA9C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,SAA7C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,SAA/C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,SAA9C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,aAA9C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,aAA7C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,IAAhC,CAAA,CAAA;CACD;;AAED,SAAS,QAAT,CAAmB,GAAnB,EAAsB;EACpB,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAoB,GAAG,CAAC,MAAxB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAZ,GAAG,CAAC,MAAQ,CAAA,EAAA,CAAA,CAAA;IAAA,IAArB,KAAqB,GAAA,KAAA,CAAA;;IAC9B,IAAI,KAAK,CAAC,OAAN,CAAc,KAAlB,EAAyB;MACvB,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;MACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,CAAA,CAAA;KACD;GACF;CACF;;AAED,SAAS,aAAT,CAAwB,IAAxB,EAA8B,MAA9B,EAAoC;EAClC,OAAO,IAAI,GACP;IACA,IAAI,EAAI,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,IADxB;IAEA,GAAG,EAAK,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAFxB;IAGA,KAAK,EAAG,IAAI,CAAC,KAAL,GAAc,MAAM,CAAC,CAH7B;IAIA,MAAM,EAAE,IAAI,CAAC,MAAL,GAAc,MAAM,CAAC,CAAA;GALtB,GAOP;IACA,IAAI,EAAI,CADR;IAEA,GAAG,EAAK,CAFR;IAGA,KAAK,EAAG,CAHR;IAIA,MAAM,EAAE,CAAA;GAXZ,CAAA;CAaD;;AAED,SAAS,UAAT,CAAA,KAAA,EAEE,UAFF,EAGE,mBAHF,EAGqB;EAAA,IAFjB,WAEiB,GAAA,KAAA,CAFjB,WAEiB;MAFJ,KAEI,GAAA,KAAA,CAFJ,KAEI,CAAA;EAAA,IAEX,YAFW,GAEe,WAFf,CAEX,YAFW;MAEG,OAFH,GAEe,WAFf,CAEG,OAFH,CAAA;EAGnB,IAAM,YAAY,GAAG,eAAe,CAAC,WAAD,EAAc,mBAAd,CAApC,CAAA;EACA,IAAM,MAAM,GAAG,aAAa,CAAC,YAAD,CAA5B,CAAA;EAEA,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,IAAvB,CAAb,CAAA;;EAEA,IAAI,EAAE,OAAA,IAAY,IAAd,CAAJ,EAAyB;IAAE,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,IAAjC,CAAA;GAAuC;;EAClE,IAAI,EAAE,QAAA,IAAY,IAAd,CAAJ,EAAyB;IAAE,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAAjC,CAAA;GAAuC;;EAElE,IAAM,WAAW,GAAG,aAAa,CAAC,IAAD,EAAO,UAAP,CAAjC,CAAA;EAEA,WAAW,CAAC,SAAZ,CAAsB,WAAtB,GAAoC,WAApC,CAAA;EACA,WAAW,CAAC,SAAZ,CAAsB,UAAtB,GAAmC;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA9C,CAAA;EAEA,IAAM,GAAG,GAAgC;IACvC,WAAW,EAAX,WADuC;IAEvC,YAAY,EAAZ,YAFuC;IAGvC,OAAO,EAAP,OAHuC;IAIvC,UAAU,EAAV,UAJuC;IAKvC,KAAK,EAAL,KALuC;IAMvC,IAAI,EAAJ,IANuC;IAOvC,WAAW,EAAX,WAPuC;IAQvC,MAAM,EAAN,MARuC;IASvC,MAAM,EAAE,KAT+B;IAUvC,cAAc,EAAE,KAAA;GAVlB,CAAA;EAaA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,MAA/B,CAAA;EACA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,IAA/B,CAAA;EACA,QAAQ,CAAC,GAAD,CAAR,CAAA;EAEA,GAAG,CAAC,UAAJ,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAApC,CAAjB,CAAA;EAEA,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,MAAM,CAAC,GAAD,CAApD,CAAA;EAEA,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,MAAT,CAAiB,GAAjB,EAAiD;EAAA,IAE7C,WAF6C,GAW3C,GAX2C,CAE7C,WAF6C;MAAA,eAAA,GAW3C,GAX2C,CAG7C,UAH6C;MAG7C,UAH6C,GAAA,eAAA,KAAA,KAAA,CAAA,GAGhC,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GACT,WAAW,CAAC,SAAZ,CAAsB,MAAtB,CAA6B,MADpB,GAET,WAAW,CAAC,MAAZ,CAAmB,IAAnB,CAAwB,IALiB,GAAA,eAAA;MAM7C,KAN6C,GAW3C,GAX2C,CAM7C,KAN6C;MAO7C,MAP6C,GAW3C,GAX2C,CAO7C,MAP6C;MAQ7C,cAR6C,GAW3C,GAX2C,CAQ7C,cAR6C;MAS7C,IAT6C,GAW3C,GAX2C,CAS7C,IAT6C;MAU7C,aAV6C,GAW3C,GAX2C,CAU7C,aAV6C,CAAA;EAa/C,IAAM,MAAM,GAAG,aAAa,GACxB,GAAG,CAAC,MAAJ,CAAW,KAAX,CAAiB,WAAW,CAAC,SAAZ,CAAsB,IAAvC,CADwB,GAExB,GAAG,CAAC,MAFR,CAAA;EAIA,GAAG,CAAC,MAAJ,GAAa,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,GAAG,CAAC,UAAf,CAAb,CAAA;EACA,GAAG,CAAC,IAAJ,GAAW,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAX,CAAA;EAEA,IAAM,MAAM,GAAG;IACb,KAAK,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KADL;IAEb,MAAM,EAAE,GAAG,CAAC,MAFC;IAGb,OAAO,EAAE,IAAA;GAHX,CAAA;;EAMA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAAA,IAClB,OADkB,GACN,KADM,CAClB,OADkB,CAAA;;IAG1B,IAAI,CAAC,KAAK,CAAC,OAAN,CAAc,GAAf,IACF,CAAC,QAAQ,CAAC,OAAD,EAAU,MAAV,EAAkB,cAAlB,EAAkC,KAAlC,CADX,EACqD;MAAE,SAAA;KAAU;;IAEjE,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,GAAd,CAAkB,GAAlB,CAAA,CAAA;GACD;;EAED,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAe,GAAG,CAAC,UAAJ,CAAe,CAA/C,CAAA;EACA,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAe,GAAG,CAAC,UAAJ,CAAe,CAA/C,CAAA;EAEA,MAAM,CAAC,OAAP,GAAiB,UAAU,CAAC,CAAX,KAAiB,MAAM,CAAC,MAAP,CAAc,CAA/B,IAAoC,UAAU,CAAC,CAAX,KAAiB,MAAM,CAAC,MAAP,CAAc,CAApF,CAAA;EAEA,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,aAAT,CAAwB,YAAxB,EAAoC;EAClC,IAAM,MAAM,GAAG,EAAf,CAAA;;EAEA,KAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,YAAY,CAAC,MAAzC,EAAiD,KAAK,EAAtD,EAA0D;IAAA,IAAA,mBAAA,GACrB,YAAY,CAAC,KAAD,CADS;QAChD,OADgD,GAAA,mBAAA,CAChD,OADgD;QACvC,OADuC,GAAA,mBAAA,CACvC,OADuC;QAC9B,IAD8B,GAAA,mBAAA,CAC9B,IAD8B,CAAA;;IAGxD,IAAI,OAAO,IAAI,OAAO,CAAC,OAAR,KAAoB,KAAnC,EAA0C;MAAE,SAAA;KAAU;;IAEtD,IAAM,KAAK,GAAG;MACZ,OAAO,EAAP,OADY;MAEZ,OAAO,EAAP,OAFY;MAGZ,KAAK,EAAL,KAHY;MAIZ,IAAI,EAAJ,IAAA;KAJF,CAAA;IAOA,MAAM,CAAC,IAAP,CAAY,KAAZ,CAAA,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,eAAT,CAAA,KAAA,EAAkE;EAAA,IAA3C,WAA2C,GAAA,KAAA,CAA3C,WAA2C;MAA9B,KAA8B,GAAA,KAAA,CAA9B,KAA8B;MAAvB,MAAuB,GAAA,KAAA,CAAvB,MAAuB;MAAf,aAAe,GAAA,KAAA,CAAf,aAAe,CAAA;EAAA,IACxD,YADwD,GAC9B,WAD8B,CACxD,YADwD;MAC1C,OAD0C,GAC9B,WAD8B,CAC1C,OAD0C,CAAA;EAEhE,IAAM,cAAc,GAAG,MAAM,CAC3B;IACE,WAAW,EAAX,WADF;IAEE,YAAY,EAAZ,YAFF;IAGE,OAAO,EAAP,OAHF;IAIE,MAAM,EAAN,MAJF;IAKE,KAAK,EAAL,KALF;IAME,UAAU,EAAE,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IANrC;IAOE,IAAI,EAAE,YAAY,CAAC,OAAb,CAAqB,OAArB,CAPR;IAQE,MAAM,EAAE,WAAW,CAAC,SAAZ,CAAsB,MARhC;IASE,cAAc,EAAE,KATlB;IAUE,aAAa,EAAb,aAAA;GAXyB,CAA7B,CAAA;EAcA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,cAA/B,CAhBgE;;;EAoBhE,IAAI,CAAC,cAAc,CAAC,OAAhB,IAA2B,WAAW,CAAC,WAAZ,EAA/B,EAA0D;IACxD,OAAO,KAAP,CAAA;GACD;CACF;;AAED,SAAS,SAAT,CAAoB,GAApB,EAAuB;EAAA,IACb,WADa,GACoB,GADpB,CACb,WADa;MACA,KADA,GACoB,GADpB,CACA,KADA;MACO,QADP,GACoB,GADpB,CACO,QADP,CAAA;EAErB,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAArC,CAAA;;EAEA,IAAI,QAAQ,IAAI,CAAC,MAAb,IAAuB,CAAC,MAAM,CAAC,MAAnC,EAA2C;IACzC,OAAA;GACD;;EAED,IAAI,SAAS,GAAG,KAAhB,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAC1B,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;IAD0B,IAElB,OAFkB,GAEG,KAFH,CAElB,OAFkB;QAET,OAFS,GAEG,KAFH,CAET,OAFS,CAAA;IAI1B,IAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,OAAO,CAAC,SAAR,CAAkB,GAAlB,CAAvC,CAAA;;IAEA,IAAI,SAAS,KAAK,KAAlB,EAAyB;MACvB,OAAO,KAAP,CAAA;KAPwB;;;IAW1B,IAAI,CAAC,SAAD,IAAc,QAAQ,CAAC,OAAD,EAAU,IAAV,EAAgB,IAAhB,CAA1B,EAAiD;;MAE/C,WAAW,CAAC,IAAZ,CAAiB;QAAE,KAAK,EAAL,KAAF;QAAS,MAAM,EAAE,IAAA;OAAlC,CAAA,CAAA;MACA,SAAS,GAAG,IAAZ,CAAA;KACD;GACF;CACF;;AAED,SAAS,IAAT,CAAe,GAAf,EAAkB;EAAA,IACR,WADQ,GACQ,GADR,CACR,WADQ,CAAA;EAEhB,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAArC,CAAA;;EAEA,IAAI,CAAC,MAAD,IAAW,CAAC,MAAM,CAAC,MAAvB,EAA+B;IAC7B,OAAA;GACD;;EAED,IAAM,WAAW,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO;IACzB,MAAM,EAAN,MADyB;IAEzB,YAAY,EAAE,WAAW,CAAC,YAFD;IAGzB,OAAO,EAAE,WAAW,CAAC,OAAA;GAHH,EAIjB,GAJiB,CAApB,CAAA;EAMA,aAAa,CAAC,GAAD,CAAb,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAC1B,WAAW,CAAC,KAAZ,GAAoB,KAApB,CAAA;;IAEA,IAAI,KAAK,CAAC,OAAN,CAAc,IAAlB,EAAwB;MAAE,KAAK,CAAC,OAAN,CAAc,IAAd,CAAmB,WAAnB,CAAA,CAAA;KAAiC;GAC5D;;EAED,GAAG,CAAC,WAAJ,CAAgB,SAAhB,CAA0B,MAA1B,GAAmC,IAAnC,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,GAApB,EAAuB;EAAA,IACb,WADa,GACU,GADV,CACb,WADa;MACA,KADA,GACU,GADV,CACA,KADA,CAAA;EAErB,IAAM,SAAS,GAAG,GAAG,CAAC,SAAJ,IAAiB,WAAW,CAAC,MAAZ,CAAmB,GAAtD,CAAA;EACA,IAAM,WAAW,GAAG,GAAG,CAAC,WAAJ,IAAmB,WAAW,CAAC,MAAZ,CAAmB,KAA1D,CAAA;EAHqB,IAAA,qBAAA,GAIU,WAAW,CAAC,SAJtB;MAIb,MAJa,GAAA,qBAAA,CAIb,MAJa;MAIL,UAJK,GAAA,qBAAA,CAIL,UAJK,CAAA;EAKrB,IAAM,QAAQ,GAAG,MAAM,CAAC,KAAxB,CAAA;;EAEA,IAAI,KAAK,KAAK,OAAd,EAAuB;IACrB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,WAAW,CAAC,SAAZ,CAAsB,UAA7B,EAAyC,MAAM,CAAC,KAAhD,CAAA,CAAA;GACD;;EAToB,IAAA,IAAA,GAWY,CAAC,CAAC,WAAD,EAAc,UAAd,CAAD,EAA4B,CAAC,SAAD,EAAY,QAAZ,CAA5B,CAXZ,CAAA;;EAWrB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,EAAqF;IAAA,IAAA,OAAA,GAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;QAAzE,SAAyE,GAAA,OAAA,CAAA,CAAA,CAAA;QAA9D,KAA8D,GAAA,OAAA,CAAA,CAAA,CAAA,CAAA;;IACnF,SAAS,CAAC,IAAV,CAAe,CAAf,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;GACD;CACF;;AAED,SAAS,aAAT,CAAA,KAAA,EAA8D;EAAA,IAAA,iBAAA,GAAA,KAAA,CAApC,WAAoC;MAArB,MAAqB,GAAA,iBAAA,CAArB,MAAqB;MAAb,SAAa,GAAA,iBAAA,CAAb,SAAa,CAAA;;EAC5D,IAAI,CAAC,SAAS,CAAC,MAAf,EAAuB;IAAE,OAAA;GAAQ;;EAD2B,IAGpD,UAHoD,GAGrC,SAHqC,CAGpD,UAHoD,CAAA;EAAA,IAI7C,QAJ6C,GAIhC,SAAS,CAAC,MAJsB,CAIpD,KAJoD,CAAA;EAAA,IAAA,KAAA,GAM3B,CAAC,CAAC,MAAM,CAAC,KAAR,EAAe,UAAf,CAAD,EAA6B,CAAC,MAAM,CAAC,GAAR,EAAa,QAAb,CAA7B,CAN2B,CAAA;;EAM5D,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,KAAA,CAAA,MAAA,EAAA,GAAA,EAAA,EAAuF;IAAA,IAAA,QAAA,GAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;QAA3E,SAA2E,GAAA,QAAA,CAAA,CAAA,CAAA;QAAhE,KAAgE,GAAA,QAAA,CAAA,CAAA,CAAA,CAAA;;IACrF,SAAS,CAAC,IAAV,CAAe,CAAf,IAAoB,KAAK,CAAC,CAA1B,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,IAAoB,KAAK,CAAC,CAA1B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;GACD;CACF;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAAuC,mBAAvC,EAA0D;EACxD,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,QAAZ,CAAqB,IAAtD,CAAtB,CAAA;EACA,IAAM,eAAe,GAAG,aAAa,CAAC,SAAtC,CAAA;;EAEA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAvC,EAA+C;IAC7C,OAAO,eAAe,CAAC,GAAhB,CAAoB,UAAC,QAAD,EAAa;MACtC,IAAI,CAAC,QAAQ,CAAC,OAAV,IAAqB,QAAQ,CAAC,IAAlC,EAAwC;QACtC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAV,CAAnB,CAAmC,QAAnC,CAAP,CAAA;OACD;;MAED,OAAO,QAAP,CAAA;KALK,CAAP,CAAA;GAOD;;EAED,OAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,WAArB,EAAkC,UAAlC,EAA8C,eAA9C,EAA+D,cAA/D,CAAA,CACJ,GADI,CACA,UAAC,IAAD,EAAS;IACZ,IAAM,OAAO,GAAG,aAAa,CAAC,IAAD,CAA7B,CAAA;IAEA,OAAO,OAAO,IAAI,OAAO,CAAC,OAAnB,IAA8B;MACnC,OAAO,EAAP,OADmC;MAEnC,OAAO,EAAE,OAAO,CAAC,QAAA;KAFnB,CAAA;GAJG,CAAA,CASJ,MATI,CASG,UAAC,CAAD,EAAA;IAAA,OAAO,CAAC,CAAC,CAAT,CAAA;GATH,CAAP,CAAA;CAUD;;AAED,SAAS,QAAT,CAAmB,OAAnB,EAA4B,MAA5B,EAA8C,cAA9C,EAAwE,KAAxE,EAAsF;EACpF,OAAO,OAAO,GACV,OAAO,CAAC,OAAR,KAAoB,KAApB,KACC,MAAM,IAAI,CAAC,OAAO,CAAC,OADpB,CAAA,KAEC,CAAC,cAAD,IAAmB,OAAO,CAAC,OAF5B,CAAA,KAGC,OAAO,CAAC,QAAR,IAAoB,KAAK,KAAK,OAH/B,CADU,GAKV,CAAC,cALL,CAAA;CAMD;;AAED,SAAS,YAAT,CAAuB,MAAvB,EAA+B,IAA/B,EAA4C;EAAA,IAClC,QADkC,GACrB,MADqB,CAClC,QADkC,CAAA;EAE1C,IAAM,OAAO,GAAG;IACd,KAAK,EAAE,MAAM,CAAC,KADA;IAEd,GAAG,EAAE,MAAM,CAAC,GAFE;IAGd,SAAS,EAAE,MAAM,CAAC,SAHJ;IAId,IAAI,EAAE,MAAM,CAAC,IAAA;GAJf,CAAA;;EAOA,IAAM,QAAQ,GAAG,SAAX,QAAW,CAAC,OAAD,EAAY;IAC3B,OAAO,GAAG,OAAO,IAAI,EAArB,CAD2B;;IAI3B,OAAO,CAAC,OAAR,GAAkB,OAAO,CAAC,OAAR,KAAoB,KAAtC,CAAA;;IAEA,KAAK,IAAM,IAAX,IAAmB,QAAnB,EAA6B;MAC3B,IAAI,EAAE,IAAI,IAAI,OAAV,CAAJ,EAAwB;QACtB,OAAO,CAAC,IAAD,CAAP,GAAgB,QAAQ,CAAC,IAAD,CAAxB,CAAA;OACD;KACF;;IAED,OAAO;MAAE,OAAO,EAAP,OAAF;MAAW,OAAO,EAAP,OAAX;MAAoB,IAAI,EAAJ,IAAA;KAA3B,CAAA;GAZF,CAAA;;EAeA,IAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;IAC5B,MAAM,CAAC,cAAP,CACE,QADF,EAEE,MAFF,EAGE;MAAE,KAAK,EAAE,IAAA;KAHX,CAAA,CAD4B;;IAO5B,QAAQ,CAAC,SAAT,GAAqB,QAArB,CAAA;IACA,QAAQ,CAAC,QAAT,GAAoB,OAApB,CAAA;GACD;;EAED,OAAO,QAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,gBADS;EAEb,OAAO,EAAP,YAFa;EAGb,QAAQ,EAAR,QAHa;EAIb,MAAM,EAAN,MAJa;EAKb,aAAa,EAAb,aALa;EAMb,KAAK,EAAL,UANa;EAOb,UAAU,EAAV,eAPa;EAQb,SAAS,EAAT,SARa;EASb,IAAI,EAAJ,IATa;EAUb,QAAQ,EAAR,QAVa;EAWb,eAAe,EAAf,eAXa;EAYb,aAAa,EAAb,aAZa;EAab,YAAY,EAAZ,YAAA;;;;;;;;;;;;ACrYF,mFAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;AA0DC,kBAAA,CAAA,UAAA,CAAmB,MAAnB,GAA4B,QAA5B,CAAA;AACA,kBAAA,CAAA,UAAA,CAAmB,YAAnB,GAAkC,cAAlC,CAAA;;AAED,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,YAFmC,GAIjC,KAJiC,CAEnC,YAFmC;MAGnC,QAHmC,GAIjC,KAJiC,CAGnC,QAHmC,CAAA;EAMrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAsB;MACpB,MAAM,EAAO,KADO;MAEpB,SAAS,EAAI,KAFO;MAGpB,WAAW,EAAE,KAHO;MAIpB,QAAQ,EAAK,EAJO;MAKpB,OAAO,EAAM,IAAA;KALf,CAAA;GADF,CAAA,CANqC;;EAiBrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,UAAC,GAAD,EAAA;IAAA,OAAS,OAAO,CAAC,GAAD,EAAa,KAAb,CAAhB,CAAA;GAA7C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAA;IAAA,OAAS,MAAM,CAAC,GAAD,EAAa,KAAb,CAAf,CAAA;GAAhC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAA;IAAA,OAAS,SAAI,CAAC,GAAD,CAAb,CAAA;GAAhC,CAAA,CAAA;EAEA,QAAQ,CAAC,SAAT,CAAmB,OAAnB,GAA6B;IAC3B,OAAO,EAAY,KADQ;IAE3B,UAAU,EAAS,EAFQ;IAG3B,QAAQ,EAAW,GAHQ;IAI3B,QAAQ,EAAW,EAJQ;IAK3B,WAAW,EAAQ,IALQ;IAM3B,iBAAiB,EAAE,GAAA;GANrB,CAAA;EASA,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;CACD;;AAED,SAAS,MAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,KACM,GAAA,KAAA,CADN,KACM;MADC,OACD,GAAA,KAAA,CADC,OACD;MADU,WACV,GAAA,KAAA,CADU,WACV,CAAA;EAErB,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAFqB;;EAKrB,IAAI,KAAK,CAAC,MAAV,EAAkB;IAChB,IAAI,OAAO,GAAG,WAAd,CADgB;;IAIhB,OAAO,UAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAP,EAAkC;;MAEhC,IAAI,OAAO,KAAK,WAAW,CAAC,OAA5B,EAAqC;;QAEnC,SAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,OAAjB,CAAA,CAAA;;QACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;QACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAJmC;;QAOnC,WAAW,CAAC,aAAZ,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,EAAuD,IAAvD,CAAA,CAAA;QACA,UAAK,CAAC,OAAN,CAAc,SAAd,CACE,WAAW,CAAC,MAAZ,CAAmB,GADrB,EAEE,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAAyB,UAAC,CAAD,EAAA;UAAA,OAAO,CAAC,CAAC,OAAT,CAAA;SAAzB,CAFF,EAGE,WAAW,CAAC,IAAZ,EAHF,CAAA,CARmC;;QAenC,IAAM,SAAS,GAAG;UAChB,WAAW,EAAX,WAAA;SADF,CAAA;QAIA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,eAAhC,EAAiD,SAAjD,CAAA,CAnBmC;;QAsBnC,IAAM,WAAW,GAAG,IAAI,KAAK,CAAC,aAAV,CAClB,WADkB,EACL,KADK,EACE,WAAW,CAAC,QAAZ,CAAqB,IADvB,EAC6B,kBAAA,CAAA,UAAA,CAAW,MADxC,EACgD,WAAW,CAAC,OAD5D,CAApB,CAAA;;QAGA,WAAW,CAAC,UAAZ,CAAuB,WAAvB,CAAA,CAAA;;QAEA,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,WAAW,CAAC,MAAZ,CAAmB,IAA5C,EAAkD,WAAW,CAAC,MAAZ,CAAmB,GAArE,CAAA,CAAA;QACA,MAAA;OACD;;MAED,OAAO,GAAG,UAAK,CAAC,GAAN,CAAU,UAAV,CAAqB,OAArB,CAAV,CAAA;KACD;GACF;CACF;;AAED,SAAS,OAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,KACM,GAAA,KAAA,CADN,KACM;MADC,QACD,GAAA,KAAA,CADC,QACD,CAAA;EAErB,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;;EAEA,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAD,IACD,WAAW,CAAC,UAAZ,IAA0B,WAAW,CAAC,UAAZ,CAAuB,MADhD,IAEJ,QAFA,EAEU;IACR,OAAO,IAAP,CAAA;GACD;;EAED,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;;EAEA,IAAM,GAAG,GAAG,WAAW,CAAC,IAAZ,EAAZ,CAAA;;EAZqB,IAaL,cAbK,GAac,WAAW,CAAC,MAAZ,CAAmB,QAbjC,CAab,MAba,CAAA;EAcrB,IAAM,YAAY,GAAG,UAAK,CAAC,KAAN,CAAY,cAAc,CAAC,CAA3B,EAA8B,cAAc,CAAC,CAA7C,CAArB,CAAA;EAEA,IAAI,SAAS,GAAG,KAAhB,CAAA;EACA,IAAI,cAAJ,CAjBqB;;EAoBrB,IAAM,eAAe,GAAI,OAAO,IAAI,OAAO,CAAC,OAAnB,IACN,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,SADxB,IAEN,KAAK,KAAK,KAAK,CAAC,UAFnC,CAAA;EAIA,IAAM,OAAO,GAAI,eAAe,IAC7B,GAAG,GAAG,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,SAA9B,GAA2C,EAD5B,IAEf,YAAY,GAAG,OAAO,CAAC,QAFR,IAGf,YAAY,GAAG,OAAO,CAAC,QAHzB,CAAA;EAKA,IAAM,WAAW,GAAG;IAClB,WAAW,EAAX,WADkB;IAElB,UAAU,EAAE,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAxC,CAFM;IAGlB,MAAM,EAAE,eAAe,IAAI,WAAW,CAAC,SAAZ,CAAsB,MAAtB,CAA6B,GAA7B,CACzB,UAAC,cAAD,EAAA;MAAA,OAAoB,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,cAAjB,CAApB,CAAA;KADyB,CAHT;IAMlB,MAAM,EAAE,IANU;IAOlB,UAAU,EAAE,SAPM;IAQlB,cAAc,EAAE,IAAA;GARlB,CA7BqB;;EAyCrB,IAAI,eAAe,IAAI,CAAC,OAAxB,EAAiC;IAC/B,WAAW,CAAC,UAAZ,GAAyB,WAAW,CAAC,SAAZ,CAAsB,IAA/C,CAAA;IACA,WAAW,CAAC,cAAZ,GAA6B,KAA7B,CAAA;IACA,cAAc,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,MAAV,CAAiB,WAAjB,CAAjB,CAAA;;IAEA,IAAI,cAAc,CAAC,OAAnB,EAA4B;MAC1B,SAAS,GAAG,IAAZ,CAAA;KACD;GACF;;EAED,IAAI,EAAE,OAAO,IAAI,SAAb,CAAJ,EAA6B;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE5C,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,KAAK,CAAC,QAA/B,EAAyC,WAAW,CAAC,MAAZ,CAAmB,GAA5D,CAAA,CAAA;EAEA,WAAW,CAAC,QAAZ,CAAqB,CAArB,CAAA,CAAwB,OAAxB,GAAkC,KAAK,CAAC,UAAN,GAAmB,IAAI,KAAK,CAAC,aAAV,CACnD,WADmD,EAEnD,KAFmD;EAInD,WAAW,CAAC,QAAZ,CAAqB,IAJ8B,EAKnD,kBAAA,CAAA,UAAA,CAAW,YALwC,EAMnD,WAAW,CAAC,OANuC,CAArD,CAAA;EASA,KAAK,CAAC,EAAN,GAAW,GAAX,CAAA;EAEA,KAAK,CAAC,MAAN,GAAe,IAAf,CAAA;EACA,KAAK,CAAC,WAAN,GAAoB,OAAO,CAAC,WAA5B,CAAA;EACA,WAAW,CAAC,UAAZ,GAAyB,KAAzB,CAAA;EAEA,WAAW,CAAC,YAAZ,CAAyB,IAAzB,CAA8B,KAAK,CAAC,UAApC,CAAA,CAAA;;EAEA,IAAI,OAAJ,EAAa;IACX,KAAK,CAAC,GAAN,GAAY,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAA/C,CAAA;IACA,KAAK,CAAC,GAAN,GAAY,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAA/C,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,YAAX,CAAA;IAEA,WAAW,CAAC,WAAD,EAAc,KAAd,CAAX,CAAA;IAEA,UAAK,CAAC,MAAN,CAAa,WAAW,CAAC,UAAzB,EAAqC,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAA5D,CAAA,CAAA;IAEA,WAAW,CAAC,UAAZ,CAAuB,CAAvB,IAA4B,KAAK,CAAC,EAAlC,CAAA;IACA,WAAW,CAAC,UAAZ,CAAuB,CAAvB,IAA4B,KAAK,CAAC,EAAlC,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,SAAzB,CAAA;IACA,WAAW,CAAC,cAAZ,GAA6B,IAA7B,CAAA;IAEA,cAAc,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,MAAV,CAAiB,WAAjB,CAAjB,CAAA;IAEA,KAAK,CAAC,UAAN,IAAoB,cAAc,CAAC,KAAf,CAAqB,CAAzC,CAAA;IACA,KAAK,CAAC,UAAN,IAAoB,cAAc,CAAC,KAAf,CAAqB,CAAzC,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,WAAW,CAAC,WAAD,CAAjB,CAAA;KAAZ,CAAhB,CAAA;GAnBF,MAqBK;IACH,KAAK,CAAC,SAAN,GAAkB,IAAlB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,cAAc,CAAC,KAAf,CAAqB,CAAhC,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,cAAc,CAAC,KAAf,CAAqB,CAAhC,CAAA;IAEA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,CAAtB,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,YAAY,CAAC,WAAD,CAAlB,CAAA;KAAZ,CAAhB,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAED,SAAS,SAAT,CAAA,KAAA,EAAkD;EAAA,IAAjC,WAAiC,GAAA,KAAA,CAAjC,WAAiC,CAAA;EAChD,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;;EACA,IAAI,KAAK,CAAC,MAAV,EAAkB;IAChB,SAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,OAAjB,CAAA,CAAA;;IACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAsB,WAAtB,EAAyD,KAAzD,EAA8D;EAC5D,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAvB,CAAA;EACA,IAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,QAAR,GAAmB,KAAK,CAAC,EAAlC,CAAD,GAAyC,MAA5D,CAAA;EAEA,KAAK,CAAC,EAAN,GAAW,WAAW,CAAC,SAAZ,CAAsB,IAAtB,CAA2B,CAAtC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,WAAW,CAAC,SAAZ,CAAsB,IAAtB,CAA2B,CAAtC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAN,CAAiB,SAAjB,GAA6B,IAAxC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,CAAtB,CAAA;EAEA,KAAK,CAAC,UAAN,GAAmB,KAAK,CAAC,EAAN,GAAW,CAAC,KAAK,CAAC,GAAN,GAAY,UAAb,IAA2B,MAAzD,CAAA;EACA,KAAK,CAAC,UAAN,GAAmB,KAAK,CAAC,EAAN,GAAW,CAAC,KAAK,CAAC,GAAN,GAAY,UAAb,IAA2B,MAAzD,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,UAAX,CAAA;EAEA,KAAK,CAAC,SAAN,GAAkB,MAAM,GAAG,KAAK,CAAC,EAAjC,CAAA;EACA,KAAK,CAAC,SAAN,GAAkB,CAAA,GAAI,OAAO,CAAC,QAAR,GAAmB,KAAK,CAAC,EAA/C,CAAA;CACD;;AAED,SAAS,WAAT,CAAsB,WAAtB,EAAuD;EACrD,mBAAmB,CAAC,WAAD,CAAnB,CAAA;EACA,UAAK,CAAC,OAAN,CAAc,cAAd,CAA6B,WAAW,CAAC,MAAZ,CAAmB,KAAhD,EAAuD,WAAW,CAAC,MAAZ,CAAmB,IAA1E,EAAgF,WAAW,CAAC,MAAZ,CAAmB,GAAnG,CAAA,CAAA;EACA,UAAK,CAAC,OAAN,CAAc,gBAAd,CAA+B,WAAW,CAAC,MAAZ,CAAmB,QAAlD,EAA4D,WAAW,CAAC,MAAZ,CAAmB,KAA/E,CAAA,CAAA;EAEA,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;EACA,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAvB,CAAA;EACA,IAAM,CAAC,GAAG,WAAW,CAAC,IAAZ,EAAA,GAAqB,IAArB,GAA4B,KAAK,CAAC,EAA5C,CAAA;;EAEA,IAAI,CAAC,GAAG,KAAK,CAAC,EAAd,EAAkB;IAChB,IAAM,QAAQ,GAAI,CAAA,GAAI,CAAC,IAAI,CAAC,GAAL,CAAS,CAAC,MAAD,GAAU,CAAnB,CAAA,GAAwB,KAAK,CAAC,SAA/B,IAA4C,KAAK,CAAC,SAAxE,CAAA;;IAEA,IAAI,KAAK,CAAC,UAAN,KAAqB,KAAK,CAAC,EAA3B,IAAiC,KAAK,CAAC,UAAN,KAAqB,KAAK,CAAC,EAAhE,EAAoE;MAClE,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,QAAtB,CAAA;MACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,QAAtB,CAAA;KAFF,MAIK;MACH,IAAM,SAAS,GAAG,UAAK,CAAC,sBAAN,CAChB,CADgB,EACb,CADa,EAEhB,KAAK,CAAC,EAFU,EAEN,KAAK,CAAC,EAFA,EAGhB,KAAK,CAAC,UAHU,EAGE,KAAK,CAAC,UAHR,EAIhB,QAJgB,CAAlB,CAAA;MAMA,KAAK,CAAC,EAAN,GAAW,SAAS,CAAC,CAArB,CAAA;MACA,KAAK,CAAC,EAAN,GAAW,SAAS,CAAC,CAArB,CAAA;KACD;;IAED,WAAW,CAAC,IAAZ,EAAA,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,WAAW,CAAC,WAAD,CAAjB,CAAA;KAAZ,CAAhB,CAAA;GApBF,MAsBK;IACH,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAjB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAjB,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAK,CAAC,UAAtB,CAAA,CAAA;IACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;;EAED,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,WAAW,CAAC,MAAZ,CAAmB,IAA5C,EAAkD,WAAW,CAAC,MAAZ,CAAmB,GAArE,CAAA,CAAA;CACD;;AAED,SAAS,YAAT,CAAuB,WAAvB,EAAwD;EACtD,mBAAmB,CAAC,WAAD,CAAnB,CAAA;EAEA,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;EACA,IAAM,CAAC,GAAG,WAAW,CAAC,IAAZ,EAAA,GAAqB,KAAK,CAAC,EAArC,CAAA;;EAJsD,IAAA,WAAA,GAKd,eAAU,CAAC,WAAD,CALI;MAK3B,QAL2B,GAAA,WAAA,CAK9C,iBAL8C,CAAA;;EAOtD,IAAI,CAAC,GAAG,QAAR,EAAkB;IAChB,KAAK,CAAC,EAAN,GAAW,UAAK,CAAC,WAAN,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,KAAK,CAAC,EAA9B,EAAkC,QAAlC,CAAX,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,UAAK,CAAC,WAAN,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,KAAK,CAAC,EAA9B,EAAkC,QAAlC,CAAX,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,YAAY,CAAC,WAAD,CAAlB,CAAA;KAAZ,CAAhB,CAAA;GANF,MAQK;IACH,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAjB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAjB,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAK,CAAC,UAAtB,CAAA,CAAA;IAEA,KAAK,CAAC,SAAN,GACE,KAAK,CAAC,MAAN,GAAe,KADjB,CAAA;IAEA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;CACF;;AAED,SAAS,mBAAT,CAA8B,WAA9B,EAA+D;EAC7D,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAD6D;;EAI7D,IAAI,CAAC,KAAK,CAAC,MAAX,EAAmB;IAAE,OAAA;GAAQ;;EAE7B,IAAM,MAAM,GAAK,KAAK,CAAC,QAAN,CAAe,IAAhC,CAAA;EACA,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAN,CAAe,MAAhC,CAAA;EAEA,UAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,WAAW,CAAC,MAAZ,CAAmB,GAA3C,EAAgD,CAAE;IAChD,KAAK,EAAI,MAAM,CAAC,CAAP,GAAa,KAAK,CAAC,EADoB;IAEhD,KAAK,EAAI,MAAM,CAAC,CAAP,GAAa,KAAK,CAAC,EAFoB;IAGhD,OAAO,EAAE,QAAQ,CAAC,CAAT,GAAa,KAAK,CAAC,EAHoB;IAIhD,OAAO,EAAE,QAAQ,CAAC,CAAT,GAAa,KAAK,CAAC,EAAA;GAJkB,CAAhD,EAKK,WAAW,CAAC,IAAZ,EALL,CAAA,CAAA;CAMD;;AAED,SAAS,eAAT,CAAA,KAAA,EAAqE;EAAA,IAA9C,YAA8C,GAAA,KAAA,CAA9C,YAA8C;MAAhC,QAAgC,GAAA,KAAA,CAAhC,QAAgC,CAAA;EACnE,OAAO,YAAY,IACjB,YAAY,CAAC,OADR,IAEL,QAAQ,CAAC,IAFJ,IAGL,YAAY,CAAC,OAAb,CAAqB,QAAQ,CAAC,IAA9B,CAAA,CAAoC,OAHtC,CAAA;CAID;;oBAEc;EACb,EAAE,EAAE,SADS;EAEb,OAAO,EAAP,YAFa;EAGb,WAAW,EAAX,WAHa;EAIb,WAAW,EAAX,WAJa;EAKb,YAAY,EAAZ,YALa;EAMb,mBAAmB,EAAnB,mBAAA;;;;;;;;;;;;AC5XF,IAAA,WAAA,GAAA,cAAA,CAAA;;AACA,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;AAgCA,IAAM,YAAY,GAAQ,EAA1B,CAAA;AACA,IAAM,KAAK,GAAG,IAAI,WAAA,CAAA,KAAJ,EAAd,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,IAAM,QAAQ,GAAmB,SAAS,QAAT,CAAmB,MAAnB,EAA4C,OAA5C,EAAyD;EAC/F,IAAI,YAAY,GAAG,KAAK,CAAC,aAAN,CAAoB,GAApB,CAAwB,MAAxB,EAAgC,OAAhC,CAAnB,CAAA;;EAEA,IAAI,CAAC,YAAL,EAAmB;IACjB,YAAY,GAAG,KAAK,CAAC,aAAN,CAAA,KAAA,CAAA,CAAwB,MAAxB,EAAgC,OAAhC,CAAf,CAAA;IACA,YAAY,CAAC,MAAb,CAAoB,MAApB,GAA6B,YAA7B,CAAA;GACD;;EAED,OAAO,YAAP,CAAA;CARK,CAAA;;;;;;;;;;;;;AAoBP,QAAQ,CAAC,GAAT,GAAe,GAAf,CAAA;;AACA,SAAS,GAAT,CAAc,MAAd,EAAuC,OAAvC,EAAuE;EACrE,KAAK,CAAC,SAAN,CAAgB,MAAhB,EAAwB,OAAxB,CAAA,CAAA;EAEA,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;;AAYD,QAAQ,CAAC,KAAT,GAAiB,KAAjB,CAAA;;AACA,SAAS,KAAT,CAAgB,OAAhB,EAAkC,OAAlC,EAA+C;EAC7C,OAAO,KAAK,CAAC,aAAN,CAAoB,cAApB,CAAmC,OAAnC,EAA4C,OAAO,IAAI,OAAO,CAAC,OAA/D,CAAA,KAA4E,CAAC,CAApF,CAAA;CACD;;;;;;;;;;;;;;AAaD,QAAQ,CAAC,EAAT,GAAc,EAAd,CAAA;;AACA,SAAS,EAAT,CAAa,IAAb,EAAiD,QAAjD,EAAkF,OAAlF,EAA0F;EACxF,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAA,IAAyB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAAnD,EAAsD;IACpD,IAAI,GAAG,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,KAAT,CAAe,IAAf,CAAJ,EAA0B;IACxB,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,IAAzB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAhB,IAAgB,CAAA,EAAA,CAAA,CAAA;MAAA,IAA9B,SAA8B,GAAA,IAAA,CAAA;MACvC,QAAQ,CAAC,EAAT,CAAY,SAAZ,EAAuB,QAAvB,EAAiC,OAAjC,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAJ,EAA2B;IACzB,KAAK,IAAM,IAAX,IAAmB,IAAnB,EAAyB;MACvB,QAAQ,CAAC,EAAT,CAAY,IAAZ,EAAmB,IAA4B,CAAC,IAAD,CAA/C,EAAuD,QAAvD,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GAlBsF;;;EAsBxF,IAAI,UAAK,CAAC,GAAN,CAAU,QAAV,CAAmB,KAAK,CAAC,OAAN,CAAc,UAAjC,EAA6C,IAA7C,CAAJ,EAAwD;;IAEtD,IAAI,CAAC,YAAY,CAAC,IAAD,CAAjB,EAAyB;MACvB,YAAY,CAAC,IAAD,CAAZ,GAAqB,CAAC,QAAD,CAArB,CAAA;KADF,MAGK;MACH,YAAY,CAAC,IAAD,CAAZ,CAAmB,IAAnB,CAAwB,QAAxB,CAAA,CAAA;KACD;GAPH;OAUK;MACH,YAAA,CAAA,SAAA,CAAA,CAAO,GAAP,CAAW,KAAK,CAAC,QAAjB,EAA2B,IAA3B,EAAiC,QAAjC,EAAgE;QAAE,OAAO,EAAP,OAAA;OAAlE,CAAA,CAAA;KACD;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;;;;AAcD,QAAQ,CAAC,GAAT,GAAe,GAAf,CAAA;;AACA,SAAS,GAAT,CAAc,IAAd,EAAoB,QAApB,EAA8B,OAA9B,EAAqC;EACnC,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAA,IAAyB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAAnD,EAAsD;IACpD,IAAI,GAAG,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,KAAT,CAAe,IAAf,CAAJ,EAA0B;IACxB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAwB,IAAxB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA8B;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAnB,SAAmB,GAAA,KAAA,CAAA;MAC5B,QAAQ,CAAC,GAAT,CAAa,SAAb,EAAwB,QAAxB,EAAkC,OAAlC,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAJ,EAA2B;IACzB,KAAK,IAAM,IAAX,IAAmB,IAAnB,EAAyB;MACvB,QAAQ,CAAC,GAAT,CAAa,IAAb,EAAmB,IAAI,CAAC,IAAD,CAAvB,EAA+B,QAA/B,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,CAAC,UAAK,CAAC,GAAN,CAAU,QAAV,CAAmB,KAAK,CAAC,OAAN,CAAc,UAAjC,EAA6C,IAA7C,CAAL,EAAyD;IACvD,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,KAAK,CAAC,QAApB,EAA8B,IAA9B,EAAoC,QAApC,EAA8C,OAA9C,CAAA,CAAA;GADF,MAGK;IACH,IAAI,KAAJ,CAAA;;IAEA,IAAI,IAAI,IAAI,YAAR,IACA,CAAC,KAAK,GAAG,YAAY,CAAC,IAAD,CAAZ,CAAmB,OAAnB,CAA2B,QAA3B,CAAT,MAAmD,CAAC,CADxD,EAC2D;MACzD,YAAY,CAAC,IAAD,CAAZ,CAAmB,MAAnB,CAA0B,KAA1B,EAAiC,CAAjC,CAAA,CAAA;KACD;GACF;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;AASD,QAAQ,CAAC,KAAT,GAAiB,KAAjB,CAAA;;AACA,SAAS,KAAT,GAAc;EACZ,OAAO,KAAP,CAAA;;;;AAIF,QAAQ,CAAC,iBAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,cAA5C,CAAA;AACA,QAAQ,CAAC,YAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,SAA5C,CAAA;AACA,QAAQ,CAAC,gBAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,aAA5C,CAAA;AACA,QAAQ,CAAC,aAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,UAA5C,CAAA;AAEA,QAAQ,CAAC,cAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,cAA1C,CAAA;AACA,QAAQ,CAAC,oBAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,oBAA1C,CAAA;AACA,QAAQ,CAAC,eAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,eAA1C,CAAA;AACA,QAAQ,CAAC,OAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,OAA1C,CAAA;;;;;;;AAOA,QAAQ,CAAC,aAAT,GAAyB,aAAzB,CAAA;;AACA,SAAS,aAAT,GAAsB;EACpB,OAAO,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAf,CAAA;CACD;;;;;;;;AAOD,QAAQ,CAAC,oBAAT,GAAgC,oBAAhC,CAAA;;AACA,SAAS,oBAAT,GAA6B;EAC3B,OAAO,aAAA,CAAA,SAAA,CAAA,CAAQ,oBAAf,CAAA;CACD;;;;;;;;;;AASD,QAAQ,CAAC,IAAT,GAAgB,SAAhB,CAAA;;AACA,SAAS,SAAT,GAAa;EACX,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;IACjD,WAAW,CAAC,IAAZ,EAAA,CAAA;GACD;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;AAWD,QAAQ,CAAC,oBAAT,GAAgC,oBAAhC,CAAA;;AACA,SAAS,oBAAT,CAA+B,QAA/B,EAAuC;EACrC,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAhB,CAAJ,EAA+B;IAC7B,KAAK,CAAC,YAAN,CAAmB,oBAAnB,GAA0C,QAA1C,CAAA;IAEA,OAAO,QAAP,CAAA;GACD;;EAED,OAAO,KAAK,CAAC,YAAN,CAAmB,oBAA1B,CAAA;CACD;;AAED,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,EAA5B,CAA+B,OAA/B,EAAwC,UAAA,KAAA,EAAqB;EAAA,IAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;EAC3D,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB,MAAzB,CAAgC,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB,OAAzB,CAAiC,YAAjC,CAAhC,EAAgF,CAAhF,CAAA,CAD2D;;EAI3D,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;IACjD,IAAI,WAAW,CAAC,YAAZ,KAA6B,YAA7B,IAA6C,WAAW,CAAC,WAAZ,EAA7C,IAA0E,WAAW,CAAC,OAA1F,EAAmG;MACjG,WAAW,CAAC,IAAZ,EAAA,CAAA;KACD;GACF;CARH,CAAA,CAAA;;AAWA,QAAQ,CAAC,WAAT,GAAuB,UAAC,GAAD,EAAM,OAAN,EAAA;EAAA,OAAkB,KAAK,CAAC,WAAN,CAAkB,GAAlB,EAAuB,OAAvB,CAAlB,CAAA;CAAvB,CAAA;;AACA,QAAQ,CAAC,cAAT,GAA0B,UAAC,GAAD,EAAA;EAAA,OAAS,KAAK,CAAC,cAAN,CAAqB,GAArB,CAAT,CAAA;CAA1B,CAAA;;AAEA,KAAK,CAAC,QAAN,GAAiB,QAAjB,CAAA;oBAGe;;;;;;;;;;;ACjTf,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;AAEA,SAAS,UAAT,CAAA,IAAA,EAA4C;EAAA,IAA1B,IAA0B,GAAA,IAAA,CAA1B,IAA0B;MAApB,WAAoB,GAAA,IAAA,CAApB,WAAoB;MAAP,KAAO,GAAA,IAAA,CAAP,KAAO,CAAA;EAAA,IAClC,OADkC,GACtB,KADsB,CAClC,OADkC,CAAA;EAAA,IAElC,WAFkC,GAElB,OAFkB,CAElC,WAFkC,CAAA;EAG1C,IAAM,MAAM,GAAG,EAAf,CAAA;;EAEA,IAAI,IAAI,IAAI,WAAZ,EAAyB;IACvB,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC,IAAZ,GAAoB,IAAI,CAAC,KAAL,GAAc,WAAW,CAAC,IAA5D,CAAA;IACA,MAAM,CAAC,GAAP,GAAc,WAAW,CAAC,GAAZ,GAAoB,IAAI,CAAC,MAAL,GAAc,WAAW,CAAC,GAA5D,CAAA;IAEA,MAAM,CAAC,KAAP,GAAgB,WAAW,CAAC,KAAZ,GAAsB,IAAI,CAAC,KAAL,IAAe,CAAA,GAAI,WAAW,CAAC,KAA/B,CAAtC,CAAA;IACA,MAAM,CAAC,MAAP,GAAgB,WAAW,CAAC,MAAZ,GAAsB,IAAI,CAAC,MAAL,IAAe,CAAA,GAAI,WAAW,CAAC,MAA/B,CAAtC,CAAA;GALF,MAOK;IACH,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,GAAP,GAAa,MAAM,CAAC,KAAP,GAAe,MAAM,CAAC,MAAP,GAAgB,CAA1D,CAAA;GACD;;EAED,KAAK,CAAC,MAAN,GAAe,MAAf,CAAA;CACD;;AAED,SAAS,GAAT,CAAA,KAAA,EAA4C;EAAA,IAA5B,MAA4B,GAAA,KAAA,CAA5B,MAA4B;MAApB,WAAoB,GAAA,KAAA,CAApB,WAAoB;MAAP,KAAO,GAAA,KAAA,CAAP,KAAO,CAAA;EAAA,IAClC,OADkC,GACd,KADc,CAClC,OADkC;MACzB,MADyB,GACd,KADc,CACzB,MADyB,CAAA;EAG1C,IAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAT,EAAsB,WAAtB,EAAmC,MAAnC,CAAtC,CAAA;;EAEA,IAAI,CAAC,WAAL,EAAkB;IAAE,OAAO,KAAP,CAAA;GAAc;;EAElC,IAAM,IAAI,GAAG,WAAb,CAP0C;;;;EAY1C,IAAI,GAAA,IAAO,WAAP,IAAsB,GAAA,IAAO,WAAjC,EAA8C;IAC5C,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,KAAd,GAAuB,MAAM,CAAC,KAAvC,EAA8C,MAAM,CAAC,CAArD,CAAT,EAAkE,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,IAAlF,CAAX,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,MAAd,GAAuB,MAAM,CAAC,MAAvC,EAA+C,MAAM,CAAC,CAAtD,CAAT,EAAmE,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,GAAnF,CAAX,CAAA;GAFF,MAIK;IACH,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,KAAL,GAAc,MAAM,CAAC,KAA9B,EAAqC,MAAM,CAAC,CAA5C,CAAT,EAAyD,IAAI,CAAC,IAAL,GAAY,MAAM,CAAC,IAA5E,CAAX,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,MAAL,GAAc,MAAM,CAAC,MAA9B,EAAsC,MAAM,CAAC,CAA7C,CAAT,EAA0D,IAAI,CAAC,GAAL,GAAY,MAAM,CAAC,GAA7E,CAAX,CAAA;GACD;CACF;;AAED,SAAS,kBAAT,CAA6B,KAA7B,EAAoC,WAApC,EAAiD,MAAjD,EAAwE;EACtE,IAAI,OAAE,CAAC,IAAH,CAAQ,KAAR,CAAJ,EAAoB;IAClB,OAAO,UAAA,CAAA,SAAA,CAAA,CAAU,eAAV,CAA0B,KAA1B,EAAiC,WAAW,CAAC,YAA7C,EAA2D,WAAW,CAAC,OAAvE,EAAgF,CAAC,MAAM,CAAC,CAAR,EAAW,MAAM,CAAC,CAAlB,EAAqB,WAArB,CAAhF,CAAP,CAAA;GADF,MAEO;IACL,OAAO,UAAA,CAAA,SAAA,CAAA,CAAU,eAAV,CAA0B,KAA1B,EAAiC,WAAW,CAAC,YAA7C,EAA2D,WAAW,CAAC,OAAvE,CAAP,CAAA;GACD;CACF;;AAED,IAAM,QAAQ,GAAG;EACf,KAAK,EAAL,UADe;EAEf,GAAG,EAAH,GAFe;EAGf,kBAAkB,EAAlB,kBAHe;EAIf,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,WAAW,EAAE,IAFL;IAGR,WAAW,EAAE,IAAA;GAHL;CAJZ,CAAA;oBAWe;;;;;;;;;;;ACnDf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;;;IAEQ,0BAAuB,QAAA,CAAA,SAAA,EAAvB;AACR,IAAM,OAAO,GAAG;EAAE,GAAG,EAAE,CAAC,QAAR;EAAkB,IAAI,EAAE,CAAC,QAAzB;EAAmC,MAAM,EAAE,CAAC,QAA5C;EAAsD,KAAK,EAAE,CAAC,QAAA;CAA9E,CAAA;AACA,IAAM,OAAO,GAAG;EAAE,GAAG,EAAE,CAAC,QAAR;EAAkB,IAAI,EAAE,CAAC,QAAzB;EAAmC,MAAM,EAAE,CAAC,QAA5C;EAAsD,KAAK,EAAE,CAAC,QAAA;CAA9E,CAAA;;AAEA,SAAS,UAAT,CAAA,IAAA,EAAgF;EAAA,IAA9D,WAA8D,GAAA,IAAA,CAA9D,WAA8D;MAAjD,KAAiD,GAAA,IAAA,CAAjD,KAAiD,CAAA;EAAA,IACtE,OADsE,GAC1D,KAD0D,CACtE,OADsE,CAAA;EAE9E,IAAM,WAAW,GAAG,WAAW,CAAC,SAAZ,CAAsB,WAA1C,CAAA;EACA,IAAI,MAAJ,CAAA;;EAEA,IAAI,OAAJ,EAAa;IACX,IAAM,UAAU,GAAG,uBAAkB,CAAC,OAAO,CAAC,MAAT,EAAiB,WAAjB,EAA8B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAvD,CAArC,CAAA;IAEA,MAAM,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,QAAV,CAAmB,UAAnB,CAAT,CAAA;GACD;;EAED,MAAM,GAAG,MAAM,IAAI;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA9B,CAAA;EAEA,KAAK,CAAC,MAAN,GAAe;IACb,GAAG,EAAK,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,GADlB;IAEb,IAAI,EAAI,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,IAFlB;IAGb,MAAM,EAAE,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,MAHlB;IAIb,KAAK,EAAG,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,KAAA;GAJjC,CAAA;CAMD;;AAED,SAAS,QAAT,CAAA,KAAA,EAIC;EAAA,IAJe,MAIf,GAAA,KAAA,CAJe,MAIf;MAJuB,WAIvB,GAAA,KAAA,CAJuB,WAIvB;MAJoC,KAIpC,GAAA,KAAA,CAJoC,KAIpC,CAAA;EAAA,IACS,MADT,GAC6B,KAD7B,CACS,MADT;MACiB,OADjB,GAC6B,KAD7B,CACiB,OADjB,CAAA;EAEC,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,IAAqC,WAAW,CAAC,QAAZ,CAAqB,KAAxE,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IACV,OAAA;GACD;;EAED,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAX,CAAb,CAAA;EACA,IAAM,KAAK,GAAG,uBAAkB,CAAC,OAAO,CAAC,KAAT,EAAgB,WAAhB,EAA6B,IAA7B,CAAlB,IAAwD,EAAtE,CAAA;EACA,IAAM,KAAK,GAAG,uBAAkB,CAAC,OAAO,CAAC,KAAT,EAAgB,WAAhB,EAA6B,IAA7B,CAAlB,IAAwD,EAAtE,CAAA;EAEA,OAAO,CAAC,KAAD,EAAQ,OAAR,CAAP,CAAA;EACA,OAAO,CAAC,KAAD,EAAQ,OAAR,CAAP,CAAA;;EAEA,IAAI,KAAK,CAAC,GAAV,EAAe;IACb,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,GAAN,GAAe,MAAM,CAAC,GAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,GAAN,GAAe,MAAM,CAAC,GAA/E,CAAX,CAAA;GADF,MAGK,IAAI,KAAK,CAAC,MAAV,EAAkB;IACrB,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,MAAN,GAAe,MAAM,CAAC,MAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,MAAN,GAAe,MAAM,CAAC,MAA/E,CAAX,CAAA;GACD;;EACD,IAAI,KAAK,CAAC,IAAV,EAAgB;IACd,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,IAAN,GAAe,MAAM,CAAC,IAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,IAAN,GAAe,MAAM,CAAC,IAA/E,CAAX,CAAA;GADF,MAGK,IAAI,KAAK,CAAC,KAAV,EAAiB;IACpB,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,KAAN,GAAe,MAAM,CAAC,KAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,KAAN,GAAe,MAAM,CAAC,KAA/E,CAAX,CAAA;GACD;CACF;;AAED,SAAS,OAAT,CAAkB,IAAlB,EAAwB,QAAxB,EAAgC;EAAA,IAAA,IAAA,GACX,CAAC,KAAD,EAAQ,MAAR,EAAgB,QAAhB,EAA0B,OAA1B,CADW,CAAA;;EAC9B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAuD;IAAlD,IAAM,IAAI,GAAA,IAAA,CAAA,EAAA,CAAV,CAAA;;IACH,IAAI,EAAE,IAAI,IAAI,IAAV,CAAJ,EAAqB;MACnB,IAAI,CAAC,IAAD,CAAJ,GAAa,QAAQ,CAAC,IAAD,CAArB,CAAA;KACD;GACF;;EAED,OAAO,IAAP,CAAA;CACD;;AAED,IAAM,aAAa,GAAG;EACpB,OAAO,EAAP,OADoB;EAEpB,OAAO,EAAP,OAFoB;EAGpB,kBAAkB,EAAlB,uBAHoB;EAIpB,KAAK,EAAL,UAJoB;EAKpB,GAAG,EAAH,QALoB;EAMpB,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAE,IAFC;IAGR,KAAK,EAAE,IAHC;IAIR,MAAM,EAAE,IAAA;GAJA;CANZ,CAAA;oBAce;;;;;;;;;;;ACvFf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;AAEA,IAAM,KAAK,GAAG;EAAE,KAAK,EAAE,CAAC,QAAV;EAAoB,MAAM,EAAE,CAAC,QAAA;CAA3C,CAAA;AACA,IAAM,KAAK,GAAG;EAAE,KAAK,EAAE,CAAC,QAAV;EAAoB,MAAM,EAAE,CAAC,QAAA;CAA3C,CAAA;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EACjB,OAAO,MAAA,CAAA,SAAA,CAAA,CAAc,KAAd,CAAoB,GAApB,CAAP,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EAAA,IACP,WADO,GACgB,GADhB,CACP,WADO;MACM,KADN,GACgB,GADhB,CACM,KADN,CAAA;EAAA,IAEP,OAFO,GAEK,KAFL,CAEP,OAFO,CAAA;EAGf,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,WAArB,IAAoC,WAAW,CAAC,QAAZ,CAAqB,KAAvE,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IACV,OAAA;GACD;;EAED,IAAM,IAAI,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,WAAW,CAAC,WAAZ,CAAwB,QAA7C,CAAb,CAAA;;EAEA,IAAM,OAAO,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,MAAA,CAAA,SAAA,CAAA,CAAc,kBAAd,CAAiC,OAAO,CAAC,GAAzC,EAA8C,WAA9C,CAArB,CAAA,IAAoF,KAApG,CAAA;EACA,IAAM,OAAO,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,MAAA,CAAA,SAAA,CAAA,CAAc,kBAAd,CAAiC,OAAO,CAAC,GAAzC,EAA8C,WAA9C,CAArB,CAAA,IAAoF,KAApG,CAAA;EAEA,KAAK,CAAC,OAAN,GAAgB;IACd,OAAO,EAAE,OAAO,CAAC,OADH;IAEd,OAAO,EAAE,OAAO,CAAC,OAFH;IAGd,KAAK,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAA,CAAA,SAAA,CAAA,CAAc,OAAzB,CAHO;IAId,KAAK,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAA,CAAA,SAAA,CAAA,CAAc,OAAzB,CAAA;GAJT,CAAA;;EAOA,IAAI,KAAK,CAAC,GAAV,EAAe;IACb,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,GAA0B,IAAI,CAAC,MAAL,GAAc,OAAO,CAAC,MAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,GAA0B,IAAI,CAAC,MAAL,GAAc,OAAO,CAAC,MAAhD,CAAA;GAFF,MAIK,IAAI,KAAK,CAAC,MAAV,EAAkB;IACrB,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,MAApB,GAA6B,IAAI,CAAC,GAAL,GAAW,OAAO,CAAC,MAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,MAApB,GAA6B,IAAI,CAAC,GAAL,GAAW,OAAO,CAAC,MAAhD,CAAA;GACD;;EACD,IAAI,KAAK,CAAC,IAAV,EAAgB;IACd,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,IAApB,GAA2B,IAAI,CAAC,KAAL,GAAa,OAAO,CAAC,KAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,IAApB,GAA2B,IAAI,CAAC,KAAL,GAAa,OAAO,CAAC,KAAhD,CAAA;GAFF,MAIK,IAAI,KAAK,CAAC,KAAV,EAAiB;IACpB,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAAI,CAAC,IAAL,GAAY,OAAO,CAAC,KAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAAI,CAAC,IAAL,GAAY,OAAO,CAAC,KAAhD,CAAA;GACD;;EAED,MAAA,CAAA,SAAA,CAAA,CAAc,GAAd,CAAkB,GAAlB,CAAA,CAAA;;EAEA,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,IAAM,YAAY,GAAG;EACnB,KAAK,EAAL,UADmB;EAEnB,GAAG,EAAH,QAFmB;EAGnB,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,GAAG,EAAE,IAFG;IAGR,GAAG,EAAE,IAAA;GAHG;CAHZ,CAAA;oBAUe;;;;;;;;;;;AC3Ef,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEA,SAAS,UAAT,CAAA,IAAA,EAAgF;EAAA,IAA9D,WAA8D,GAAA,IAAA,CAA9D,WAA8D;MAAjD,YAAiD,GAAA,IAAA,CAAjD,YAAiD;MAAnC,OAAmC,GAAA,IAAA,CAAnC,OAAmC;MAA1B,IAA0B,GAAA,IAAA,CAA1B,IAA0B;MAApB,KAAoB,GAAA,IAAA,CAApB,KAAoB;MAAb,WAAa,GAAA,IAAA,CAAb,WAAa,CAAA;EAAA,IACtE,OADsE,GAC1D,KAD0D,CACtE,OADsE,CAAA;EAE9E,IAAM,OAAO,GAAG,EAAhB,CAAA;EACA,IAAM,aAAa,GAAG,UAAK,CAAC,IAAN,CAAW,QAAX,CAAoB,UAAK,CAAC,IAAN,CAAW,eAAX,CAA2B,OAAO,CAAC,MAAnC,CAApB,CAAtB,CAAA;EACA,IAAM,MAAM,GAAG,aAAa,IAAI,UAAK,CAAC,WAAN,CAAkB,YAAlB,EAAgC,OAAhC,EAAyC,WAAW,CAAC,QAAZ,CAAqB,IAA9D,CAAhC,CAAA;EAEA,IAAI,UAAJ,CAAA;;EAEA,IAAI,OAAO,CAAC,MAAR,KAAmB,aAAvB,EAAsC;IACpC,UAAU,GAAG;MACX,CAAC,EAAE,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CADjC;MAEX,CAAC,EAAE,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CAAA;KAF9C,CAAA;GADF,MAMM;IACJ,IAAM,UAAU,GAAG,UAAK,CAAC,IAAN,CAAW,eAAX,CAA2B,OAAO,CAAC,MAAnC,EAA2C,YAA3C,EAAyD,OAAzD,EAAkE,CAAC,WAAD,CAAlE,CAAnB,CAAA;IAEA,UAAU,GAAG,UAAK,CAAC,IAAN,CAAW,QAAX,CAAoB,UAApB,CAAA,IAAmC;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAA3D,CAAA;GACD;;EAED,IAAM,cAAc,GAAG,OAAO,CAAC,cAAR,IAA0B,EAAjD,CAAA;;EAEA,IAAI,IAAI,IAAI,OAAO,CAAC,cAAhB,IAAkC,OAAO,CAAC,cAAR,CAAuB,MAA7D,EAAqE;IACnE,KAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;MAC1D,IAAM,aAAa,GAAG,cAAc,CAAC,KAAD,CAApC,CAAA;MAEA,OAAO,CAAC,IAAR,CAAa;QACX,KAAK,EAAL,KADW;QAEX,aAAa,EAAb,aAFW;QAGX,CAAC,EAAE,WAAW,CAAC,IAAZ,GAAoB,IAAI,CAAC,KAAL,GAAc,aAAa,CAAC,CAAhD,GAAqD,UAAU,CAAC,CAHxD;QAIX,CAAC,EAAE,WAAW,CAAC,GAAZ,GAAoB,IAAI,CAAC,MAAL,GAAc,aAAa,CAAC,CAAhD,GAAqD,UAAU,CAAC,CAAA;OAJrE,CAAA,CAAA;KAMD;GAVH,MAYK;IACH,OAAO,CAAC,IAAR,CAAa,UAAK,CAAC,MAAN,CAAa;MACxB,KAAK,EAAE,CADiB;MAExB,aAAa,EAAE,IAAA;KAFJ,EAGV,UAHU,CAAb,CAAA,CAAA;GAID;;EAED,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,SAAS,QAAT,CAAA,KAAA,EAA4C;EAAA,IAA5B,WAA4B,GAAA,KAAA,CAA5B,WAA4B;MAAf,MAAe,GAAA,KAAA,CAAf,MAAe;MAAP,KAAO,GAAA,KAAA,CAAP,KAAO,CAAA;EAAA,IAClC,OADkC,GACb,KADa,CAClC,OADkC;MACzB,OADyB,GACb,KADa,CACzB,OADyB,CAAA;EAG1C,IAAM,MAAM,GAAG,UAAK,CAAC,WAAN,CAAkB,WAAW,CAAC,YAA9B,EAA4C,WAAW,CAAC,OAAxD,EAAiE,WAAW,CAAC,QAAZ,CAAqB,IAAtF,CAAf,CAAA;EACA,IAAM,IAAI,GAAG,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,MAAjB,CAAb,CAAA;EACA,IAAM,OAAO,GAAG,EAAhB,CAAA;EACA,IAAI,MAAJ,CAAA;EACA,IAAI,CAAJ,CAAA;EAEA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;EACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;EAEA,KAAK,CAAC,KAAN,GAAc,IAAI,CAAC,CAAnB,CAAA;EACA,KAAK,CAAC,KAAN,GAAc,IAAI,CAAC,CAAnB,CAAA;EAEA,IAAI,GAAG,GAAG,OAAO,CAAC,OAAR,GAAkB,OAAO,CAAC,OAAR,CAAgB,MAAlC,GAA2C,CAArD,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAT,OAAS,CAAA,EAAA,CAAA,CAAA;IAAA,IAAnB,MAAmB,GAAA,KAAA,CAAA;IAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,CAAlC,CAAA;IACA,IAAM,SAAS,GAAG,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,CAAlC,CAAA;;IAEA,KAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,OAAO,CAAC,OAAR,CAAgB,MAA5C,EAAoD,KAAK,EAAzD,EAA6D;MAC3D,IAAM,UAAU,GAAG,OAAO,CAAC,OAAR,CAAgB,KAAhB,CAAnB,CAAA;;MACA,IAAI,UAAK,CAAC,EAAN,CAAS,IAAT,CAAc,UAAd,CAAJ,EAA+B;QAC7B,MAAM,GAAG,UAAU,CAAC,SAAD,EAAY,SAAZ,EAAuB,WAAvB,EAAoC,MAApC,EAA4C,KAA5C,CAAnB,CAAA;OADF,MAGK;QACH,MAAM,GAAG,UAAT,CAAA;OACD;;MAED,IAAI,CAAC,MAAL,EAAa;QAAE,SAAA;OAAU;;MAEzB,OAAO,CAAC,IAAR,CAAa;QACX,CAAC,EAAE,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,CAAvB,CAAA,GAA6B,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,CAA/C,GAAoD,SAD5C;QAEX,CAAC,EAAE,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,CAAvB,CAAA,GAA6B,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,CAA/C,GAAoD,SAF5C;QAIX,KAAK,EAAE,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,KAAvB,CAAA,GAAgC,MAAM,CAAC,KAAvC,GAA+C,OAAO,CAAC,KAAA;OAJhE,CAAA,CAAA;KAMD;GACF;;EAED,IAAM,OAAO,GAAG;IACd,MAAM,EAAE,IADM;IAEd,OAAO,EAAE,KAFK;IAGd,QAAQ,EAAE,CAHI;IAId,KAAK,EAAE,CAJO;IAKd,EAAE,EAAE,CALU;IAMd,EAAE,EAAE,CAAA;GANN,CAAA;;EASA,KAAK,CAAC,GAAG,CAAJ,EAAO,GAAG,GAAG,OAAO,CAAC,MAA1B,EAAkC,CAAC,GAAG,GAAtC,EAA2C,CAAC,EAA5C,EAAgD;IAC9C,MAAM,GAAG,OAAO,CAAC,CAAD,CAAhB,CAAA;IAEA,IAAM,KAAK,GAAG,MAAM,CAAC,KAArB,CAAA;IACA,IAAM,EAAE,GAAG,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,CAA3B,CAAA;IACA,IAAM,EAAE,GAAG,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,CAA3B,CAAA;IACA,IAAM,QAAQ,GAAG,UAAK,CAAC,KAAN,CAAY,EAAZ,EAAgB,EAAhB,CAAjB,CAAA;IACA,IAAI,OAAO,GAAG,QAAQ,IAAI,KAA1B,CAP8C;;;IAW9C,IAAI,KAAK,KAAK,QAAV,IAAsB,OAAO,CAAC,OAA9B,IAAyC,OAAO,CAAC,KAAR,KAAkB,QAA/D,EAAyE;MACvE,OAAO,GAAG,KAAV,CAAA;KACD;;IAED,IAAI,CAAC,OAAO,CAAC,MAAT,KAAoB,OAAO;MAE1B,OAAO,CAAC,OAAR,IAAmB,KAAK,KAAK,QAA7B;MAEC,QAAQ,GAAG,KAAX,GAAmB,OAAO,CAAC,QAAR,GAAmB,OAAO,CAAC,KAF/C;MAIE,KAAK,KAAK,QAAV,IAAsB,OAAO,CAAC,KAAR,KAAkB,QAAzC;IAEA,QAAQ,GAAG,OAAO,CAAC,QARM;IAU1B,CAAC,OAAO,CAAC,OAAT,IAAoB,QAAQ,GAAG,OAAO,CAAC,QAVxC,CAAJ,EAUwD;MACtD,OAAO,CAAC,MAAR,GAAiB,MAAjB,CAAA;MACA,OAAO,CAAC,QAAR,GAAmB,QAAnB,CAAA;MACA,OAAO,CAAC,KAAR,GAAgB,KAAhB,CAAA;MACA,OAAO,CAAC,OAAR,GAAkB,OAAlB,CAAA;MACA,OAAO,CAAC,EAAR,GAAa,EAAb,CAAA;MACA,OAAO,CAAC,EAAR,GAAa,EAAb,CAAA;MAEA,KAAK,CAAC,KAAN,GAAc,KAAd,CAAA;KACD;GACF;;EAED,IAAI,OAAO,CAAC,OAAZ,EAAqB;IACnB,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,MAAR,CAAe,CAA1B,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,MAAR,CAAe,CAA1B,CAAA;GACD;;EAED,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,IAAM,IAAI,GAAG;EACX,KAAK,EAAL,UADW;EAEX,GAAG,EAAH,QAFW;EAGX,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAI,QAFD;IAGR,OAAO,EAAE,IAHD;IAIR,MAAM,EAAE,IAJA;IAMR,cAAc,EAAE,IAAA;GANR;CAHZ,CAAA;oBAae;;;;;;;;;;;ACvJf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EAAA,IACT,WADS,GACc,GADd,CACT,WADS;MACI,KADJ,GACc,GADd,CACI,KADJ,CAAA;EAAA,IAET,OAFS,GAEG,KAFH,CAET,OAFS,CAAA;EAGjB,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,KAAnC,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE3B,GAAG,CAAC,KAAJ,GAAY;IACV,OAAO,EAAE;MACP,cAAc,EAAE,CAAC;QACf,CAAC,EAAE,KAAK,CAAC,IAAN,GAAa,CAAb,GAAiB,CADL;QAEf,CAAC,EAAE,KAAK,CAAC,GAAN,GAAY,CAAZ,GAAgB,CAAA;OAFL,CADT;MAKP,MAAM,EAAE;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OALZ;MAMP,MAAM,EAAE,OAAO,CAAC,MAAR,IAAkB,MANnB;MAOP,KAAK,EAAE,OAAO,CAAC,KAAA;KAPR;GADX,CAAA;EAYA,KAAK,CAAC,YAAN,GAAqB,KAAK,CAAC,YAAN,IAAsB,CACzC,CAAC,OAAD,EAAU,QAAV,CADyC,EAEzC,CAAC,GAAD,EAAM,GAAN,CAFyC,CAA3C,CAAA;;EAKA,aAAA,CAAA,SAAA,CAAA,CAAK,KAAL,CAAW,GAAX,CAAA,CAAA;;EACA,KAAK,CAAC,OAAN,GAAgB,GAAG,CAAC,KAAJ,CAAU,OAA1B,CAAA;EAEA,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EAAA,IACP,WADO,GACwB,GADxB,CACP,WADO;MACM,KADN,GACwB,GADxB,CACM,KADN;MACa,MADb,GACwB,GADxB,CACa,MADb,CAAA;EAAA,IAEP,OAFO,GAEc,KAFd,CAEP,OAFO;MAEE,OAFF,GAEc,KAFd,CAEE,OAFF,CAAA;EAGf,IAAM,QAAQ,GAAG;IACf,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,CAAD,CAAP,CAAW,CADV;IAEf,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,CAAD,CAAP,CAAW,CAAA;GAF3B,CAAA;EAKA,KAAK,CAAC,OAAN,GAAgB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,OAAX,CAAhB,CAAA;EACA,KAAK,CAAC,OAAN,CAAc,OAAd,GAAwB,EAAxB,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,CAA0B,OAAO,CAAC,OAAR,IAAmB,EAA7C,EAAA,MAAA,EAAA,EAAA,EAAA,EAAkD;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAA,CAAxB,OAAO,CAAC,OAAR,IAAmB,EAAK,EAAA,EAAA,CAAA,CAAA;IAAA,IAAvC,UAAuC,GAAA,IAAA,CAAA;IAChD,IAAI,MAAM,GAAA,KAAA,CAAV,CAAA;;IAEA,IAAI,OAAE,CAAC,IAAH,CAAQ,UAAR,CAAJ,EAAyB;MACvB,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAV,EAAa,QAAQ,CAAC,CAAtB,EAAyB,WAAzB,CAAnB,CAAA;KADF,MAGK;MACH,MAAM,GAAG,UAAT,CAAA;KACD;;IAED,IAAI,CAAC,MAAL,EAAa;MAAE,SAAA;KAAU;;IAEzB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,KAAK,CAAC,YAArC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAApB,KAAK,CAAC,YAAc,CAAA,GAAA,CAAA,CAAA;;MAAA,IAAA,KAAA,GAAA,KAAA;UAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;UAAvC,MAAuC,GAAA,KAAA,CAAA,CAAA,CAAA;UAA/B,MAA+B,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;MACjD,IAAI,MAAM,IAAI,MAAV,IAAoB,MAAM,IAAI,MAAlC,EAA0C;QACxC,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,MAAD,CAAjB,CAAA;QACA,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,MAAD,CAAjB,CAAA;QAEA,MAAA;OACD;KACF;;IAED,KAAK,CAAC,OAAN,CAAc,OAAd,CAAsB,IAAtB,CAA2B,MAA3B,CAAA,CAAA;GACD;;EAED,aAAA,CAAA,SAAA,CAAA,CAAK,GAAL,CAAS,GAAT,CAAA,CAAA;;EAEA,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,IAAM,QAAQ,GAAG;EACf,KAAK,EAAL,UADe;EAEf,GAAG,EAAH,QAFe;EAGf,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAI,QAFD;IAGR,OAAO,EAAE,IAHD;IAIR,MAAM,EAAE,IAAA;GAJA;CAHZ,CAAA;oBAWe;;;;;;;;;;;AC5Df,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EACjB,IAAM,KAAK,GAAG,GAAG,CAAC,WAAJ,CAAgB,QAAhB,CAAyB,KAAvC,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE3B,GAAG,CAAC,KAAJ,CAAU,YAAV,GAAyB,GAAG,CAAC,KAAJ,CAAU,YAAV,IAA0B,CACjD,CAAC,KAAK,CAAC,IAAN,GAAa,MAAb,GAAsB,OAAvB,EAAgC,KAAK,CAAC,GAAN,GAAY,KAAZ,GAAoB,QAApD,CADiD,CAAnD,CAAA;EAIA,OAAO,KAAA,CAAA,SAAA,CAAA,CAAS,KAAT,CAAe,GAAf,CAAP,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EACf,OAAO,KAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,GAAb,CAAP,CAAA;CACD;;AAED,IAAM,SAAS,GAAG;EAChB,KAAK,EAAL,UADgB;EAEhB,GAAG,EAAH,QAFgB;EAGhB,QAAQ,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,KAAA,CAAA,SAAA,CAAA,CAAS,QAAf,CAAP,EAAiC;IACzC,MAAM,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAX;GADA,CAAA;CAHZ,CAAA;oBAQe;;;;;;;;;;;ACxDf,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;IAEQ,oBAAiB,UAAA,CAAA,SAAA,EAAjB;AAED,IAAM,SAAI,GAAG,iBAAY,CAAC,SAAA,CAAA,SAAA,CAAD,EAAa,MAAb,CAAzB,CAAA;;AACA,IAAM,aAAQ,GAAG,iBAAY,CAAC,MAAA,CAAA,SAAA,CAAD,EAAiB,UAAjB,CAA7B,CAAA;;AACA,IAAM,cAAS,GAAG,iBAAY,CAAC,OAAA,CAAA,SAAA,CAAD,EAAkB,WAAlB,CAA9B,CAAA;;AACA,IAAM,aAAQ,GAAG,iBAAY,CAAC,aAAA,CAAA,SAAA,CAAD,EAAiB,UAAjB,CAA7B,CAAA;;AACA,IAAM,kBAAa,GAAG,iBAAY,CAAC,WAAA,CAAA,SAAA,CAAD,EAAsB,eAAtB,CAAlC,CAAA;;AACA,IAAM,iBAAY,GAAG,iBAAY,CAAC,UAAA,CAAA,SAAA,CAAD,EAAqB,cAArB,CAAjC,CAAA;;;;;;;;;;;ACdP,IAAA,kBAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;;;;;;IAGqB;;;;EAoBnB,SAAA,YAAA,CACE,IADF,EAEE,OAFF,EAGE,KAHF,EAIE,WAJF,EAKE,WALF,EAME,SANF,EAMmB;IAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;IAVnB,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IACA,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;;IAWE,kBAAA,CAAA,SAAA,CAAA,CAAa,aAAb,CAA2B,IAA3B,EAAiC,KAAjC,CAAA,CAAA;;IAEA,IAAI,KAAK,KAAK,OAAd,EAAuB;MACrB,kBAAA,CAAA,SAAA,CAAA,CAAa,aAAb,CAA2B,IAA3B,EAAiC,OAAjC,CAAA,CAAA;KACD;;IAED,IAAA,CAAK,WAAL,GAAmB,WAAnB,CAAA;IAEA,IAAA,CAAK,SAAL,GAAqB,SAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,KAArB,CAAA;IACA,IAAA,CAAK,IAAL,GAAqB,IAArB,CAAA;IACA,IAAA,CAAK,SAAL,GAAqB,kBAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,OAA1B,CAArB,CAAA;IACA,IAAA,CAAK,WAAL,GAAqB,kBAAA,CAAA,SAAA,CAAA,CAAa,cAAb,CAA4B,OAA5B,CAArB,CAAA;IACA,IAAA,CAAK,MAAL,GAAqB,WAArB,CAAA;IACA,IAAA,CAAK,aAAL,GAAqB,IAArB,CAAA;;IAEA,IAAI,IAAI,KAAK,KAAb,EAAoB;MAClB,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;MACA,IAAA,CAAK,EAAL,GAAU,IAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,QAA9D,CAAA;MAEA,IAAM,QAAQ,GAAG,IAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,OAA9C,CAAA;MAEA,IAAA,CAAA,QAAA,CAAA,GAAc,CAAC,EAAE,WAAW,CAAC,OAAZ,IACf,WAAW,CAAC,OAAZ,CAAoB,IAApB,KAA6B,WADd,IAEf,WAAW,CAAC,OAAZ,CAAoB,MAApB,KAA+B,IAAA,CAAK,MAFrB,IAGf,QAAQ,GAAG,GAHE,CAAf,CAAA;KANF,MAWK,IAAI,IAAI,KAAK,WAAb,EAA0B;MAC7B,IAAA,CAAK,EAAL,GAAW,OAA+B,CAAC,SAAhC,GAA4C,WAAW,CAAC,OAAnE,CAAA;KACD;GACF;;;;yCAEyC;MAAA,IAArB,OAAqB,GAAA,IAAA,CAAxB,CAAwB;UAAT,OAAS,GAAA,IAAA,CAAZ,CAAY,CAAA;MACxC,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;qCAEoC;MAAA,IAArB,OAAqB,GAAA,KAAA,CAAxB,CAAwB;UAAT,OAAS,GAAA,KAAA,CAAZ,CAAY,CAAA;MACnC,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;;;;;qCAKa;MACZ,IAAA,CAAK,aAAL,CAAmB,cAAnB,EAAA,CAAA;KACD;;;;;;;sCAKc;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;;;;;+CAKuB;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;;;;;;;;;;;;;;ACjGH,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;AA4CA,IAAM,OAAO,GAAS,IAAI,UAAK,CAAC,OAAV,EAAtB,CAAA;AACA,IAAM,aAAa,GAAG,CAAE,MAAF,EAAU,IAAV,EAAgB,QAAhB,CAAtB,CAAA;AACA,IAAM,YAAY,GAAI,CAAE,MAAF,EAAU,IAAV,EAAgB,QAAhB,CAAtB,CAAA;AAEA,IAAM,aAAQ,GAAwB;EACpC,YAAY,EAAE,GADsB;EAEpC,UAAU,EAAI,IAFsB;EAGpC,SAAS,EAAK,IAHsB;EAIpC,MAAM,EAAQ;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAAX;CAJhB,CAAA;AAOA,IAAM,aAAa,GAAG;EACpB,EAAE,EAAE,qBADgB;EAEpB,OAAO,EAAP,YAFoB;EAGpB,OAAO,EAAP,OAHoB;EAIpB,YAAY,EAAZ,aAAA,CAAA,SAAA,CAJoB;EAKpB,IAAI,EAAJ,IALoB;EAMpB,mBAAmB,EAAnB,mBANoB;EAOpB,oBAAoB,EAApB,oBAPoB;EAQpB,QAAQ,EAAR,aARoB;EASpB,KAAK,EAAE,CACL,MADK,EAEL,MAFK,EAGL,IAHK,EAIL,QAJK,EAKL,KALK,EAML,WANK,EAOL,MAPK,CAAA;CATT,CAAA;;AAoBA,SAAS,IAAT,CAAiC,GAAjC,EAQG,KARH,EAQwB;EAAA,IAEpB,WAFoB,GAKlB,GALkB,CAEpB,WAFoB;MAEP,OAFO,GAKlB,GALkB,CAEP,OAFO;MAEE,KAFF,GAKlB,GALkB,CAEE,KAFF;MAES,WAFT,GAKlB,GALkB,CAES,WAFT;MAAA,SAAA,GAKlB,GALkB,CAGpB,IAHoB;MAGpB,IAHoB,GAAA,SAAA,KAAA,KAAA,CAAA,GAGZ,GAAW,CAAC,YAAZ,CAAyB,IAHb,GAAA,SAAA;MAAA,YAAA,GAKlB,GALkB,CAIpB,OAJoB;MAIpB,OAJoB,GAAA,YAAA,KAAA,KAAA,CAAA,GAIV,mBAAmB,CAAC,GAAD,CAJT,GAAA,YAAA,CAAA;EAAA,IAAA,iBAAA,GASlB,GATkB,CAQpB,YARoB;MAQpB,YARoB,GAAA,iBAAA,KAAA,KAAA,CAAA,GAQL,IAAI,aAAA,CAAA,SAAA,CAAJ,CAAiB,IAAjB,EAAuB,OAAvB,EAAgC,KAAhC,EAAuC,WAAvC,EAAoD,WAApD,EAAiE,KAAK,CAAC,GAAN,EAAjE,CARK,GAAA,iBAAA,CAAA;EAWtB,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,OAAO,EAAP,OAFgB;IAGhB,KAAK,EAAL,KAHgB;IAIhB,WAAW,EAAX,WAJgB;IAKhB,OAAO,EAAP,OALgB;IAMhB,IAAI,EAAJ,IANgB;IAOhB,YAAY,EAAZ,YAAA;GAPF,CAAA;;EAUA,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,OAAO,CAAC,MAA5B,EAAoC,CAAC,EAArC,EAAyC;IACvC,IAAM,MAAM,GAAG,OAAO,CAAC,CAAD,CAAtB,CAAA;;IAEA,KAAK,IAAM,IAAX,IAAmB,MAAM,CAAC,KAAP,IAAgB,EAAnC,EAAuC;MACpC,YAAoB,CAAC,IAAD,CAApB,GAA6B,MAAM,CAAC,KAAP,CAAa,IAAb,CAA7B,CAAA;KACF;;IAED,IAAM,MAAM,GAAG,UAAK,CAAC,WAAN,CAAkB,MAAM,CAAC,SAAzB,EAAoC,MAAM,CAAC,OAA3C,CAAf,CAAA;IAEA,YAAY,CAAC,cAAb,CAA4B,MAA5B,CAAA,CAAA;IACA,YAAY,CAAC,SAAb,GAAyB,MAAM,CAAC,SAAhC,CAAA;IACA,YAAY,CAAC,aAAb,GAA6B,MAAM,CAAC,OAApC,CAAA;IAEA,MAAM,CAAC,SAAP,CAAiB,IAAjB,CAAsB,YAAtB,CAAA,CAAA;IAEA,YAAY,CAAC,SAAb,CAAuB,MAAvB,CAAA,CAAA;;IAEA,IAAI,YAAY,CAAC,2BAAb,IACC,YAAY,CAAC,kBAAb,IACI,CAAC,GAAG,CAAL,GAAU,OAAO,CAAC,MADrB,IAC+B,OAAO,CAAC,CAAC,GAAG,CAAL,CAAP,CAAe,OAAf,KAA2B,YAAY,CAAC,aAF5E,EAE4F;MAC1F,MAAA;KACD;GACF;;EAED,OAAO,CAAC,IAAR,CAAa,OAAb,EAAsB,SAAtB,CAAA,CAAA;;EAEA,IAAI,IAAI,KAAK,KAAb,EAAoB;;;IAGlB,IAAM,OAAO,GAAG,YAAY,CAAA,QAAA,CAAZ,GACZ,IAAI,CAAC;MACL,WAAW,EAAX,WADK;MAEL,OAAO,EAAP,OAFK;MAGL,KAAK,EAAL,KAHK;MAIL,WAAW,EAAX,WAJK;MAKL,IAAI,EAAE,WAAA;KALF,EAMH,KANG,CADQ,GAQZ,YARJ,CAAA;IAUA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;IACA,WAAW,CAAC,OAAZ,GAAsB,OAAO,CAAC,SAA9B,CAAA;GACD;;EAED,OAAO,YAAP,CAAA;CACD;;AAED,SAAS,mBAAT,CAAA,IAAA,EAMC;EAAA,IANiD,WAMjD,GAAA,IAAA,CANiD,WAMjD;MAN8D,OAM9D,GAAA,IAAA,CAN8D,OAM9D;MANuE,KAMvE,GAAA,IAAA,CANuE,KAMvE;MAN8E,WAM9E,GAAA,IAAA,CAN8E,WAM9E;MAN2F,IAM3F,GAAA,IAAA,CAN2F,IAM3F,CAAA;EACC,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;EACA,IAAM,WAAW,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAApB,CAFD;;EAKC,IAAI,IAAI,KAAK,KAAT,KAAmB,WAAW,CAAC,eAAZ;EAEnB,EAAE,WAAW,IAAI,WAAW,CAAC,UAAZ,KAA2B,WAA5C,CAFA,CAAJ,EAE+D;IAC7D,OAAO,EAAP,CAAA;GACD;;EAED,IAAM,IAAI,GAAG,UAAK,CAAC,GAAN,CAAU,OAAV,CAAkB,WAAlB,CAAb,CAAA;EACA,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,OAAO,EAAP,OAFgB;IAGhB,KAAK,EAAL,KAHgB;IAIhB,WAAW,EAAX,WAJgB;IAKhB,IAAI,EAAJ,IALgB;IAMhB,IAAI,EAAJ,IANgB;IAOhB,OAAO,EAAE,EAPO;IAQhB,OAAO,EAAE,IAAA;GARX,CAAA;;EAWA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAsB,IAAtB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAN,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAjB,OAAiB,GAAA,KAAA,CAAA;IAC1B,SAAS,CAAC,OAAV,GAAoB,OAApB,CAAA;IAEA,OAAO,CAAC,IAAR,CAAa,iBAAb,EAAgC,SAAhC,CAAA,CAAA;GACD;;EAED,IAAI,IAAI,KAAK,MAAb,EAAqB;IACnB,SAAS,CAAC,OAAV,GAAoB,SAAS,CAAC,OAAV,CAAkB,MAAlB,CAAyB,UAAC,MAAD,EAAA;MAAA,OAC3C,MAAM,CAAC,SAAP,CAAiB,OAAjB,CAAyB,YAAzB,KAA0C,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,QADvC,CAAA;KAAzB,CAApB,CAAA;GAED;;EAED,OAAO,SAAS,CAAC,OAAjB,CAAA;CACD;;AAED,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAGxB,KAHwB,CAE1B,YAF0B,CAAA;EAK5B,KAAK,CAAC,aAAN,GAAsB,aAAtB,CAAA;EACA,KAAK,CAAC,QAAN,CAAe,OAAf,CAAuB,aAAvB,GAAuC,aAAa,CAAC,QAArD,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAyB,IAAzB,CADiD;;IAEjD,WAAW,CAAC,OAAZ,GAAyB,CAAzB,CAFiD;GAAnD,CAAA,CAAA;EAKA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,gBAAxB,EAA0C,UAAA,KAAA,EAA0B;IAAA,IAAvB,IAAuB,GAAA,KAAA,CAAvB,IAAuB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClE,IAAI,CAAC,IAAD,IAAS,WAAW,CAAC,IAAzB,EAA+B;MAC7B,OAAA;KACD;;IAED,WAAW,CAAC,IAAZ,GAAmB;MAAE,QAAQ,EAAE,QAAZ;MAAsB,OAAO,EAAE,IAAA;KAAlD,CAAA;GALF,CAAA,CAAA;EAQA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAgE;IAAA,IAA7D,WAA6D,GAAA,KAAA,CAA7D,WAA6D;QAAhD,OAAgD,GAAA,KAAA,CAAhD,OAAgD;QAAvC,KAAuC,GAAA,KAAA,CAAvC,KAAuC;QAAhC,WAAgC,GAAA,KAAA,CAAhC,WAAgC;QAAnB,aAAmB,GAAA,KAAA,CAAnB,aAAmB,CAAA;IAC9F,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;;IAEA,IAAI,CAAC,aAAD,KAAmB,CAAC,WAAW,CAAC,aAAb,IAA8B,WAAW,CAAC,eAA7D,CAAJ,EAAmF;MACjF,IAAI,WAAW,CAAC,aAAhB,EAA+B;QAC7B,YAAY,CAAC,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,OAAzC,CAAZ,CAAA;OACD;;MAED,IAAI,CAAC;QACH,WAAW,EAAX,WADG;QAEH,OAAO,EAAP,OAFG;QAGH,KAAK,EAAL,KAHG;QAIH,WAAW,EAAX,WAJG;QAKH,IAAI,EAAE,MAAA;OALJ,EAMD,KANC,CAAJ,CAAA;KAOD;GAfH,CAAA,CAAA;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAA+D;IAAA,IAA5D,WAA4D,GAAA,KAAA,CAA5D,WAA4D;QAA/C,OAA+C,GAAA,KAAA,CAA/C,OAA+C;QAAtC,KAAsC,GAAA,KAAA,CAAtC,KAAsC;QAA/B,WAA+B,GAAA,KAAA,CAA/B,WAA+B;QAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;IAC7F,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAjD,CAAA;IACA,IAAM,IAAI,GAAG,UAAK,CAAC,GAAN,CAAU,OAAV,CAAkB,WAAlB,CAAb,CAAA;IACA,IAAM,SAAS,GAAG;MAChB,WAAW,EAAX,WADgB;MAEhB,OAAO,EAAP,OAFgB;MAGhB,KAAK,EAAL,KAHgB;MAIhB,WAAW,EAAX,WAJgB;MAKhB,IAAI,EAAE,MALU;MAMhB,OAAO,EAAE,EANO;MAOhB,IAAI,EAAJ,IAPgB;MAQhB,OAAO,EAAE,IAAA;KARX,CAAA;;IAWA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAsB,IAAtB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAjB,OAAiB,GAAA,KAAA,CAAA;MAC1B,SAAS,CAAC,OAAV,GAAoB,OAApB,CAAA;MAEA,OAAO,CAAC,IAAR,CAAa,iBAAb,EAAgC,SAAhC,CAAA,CAAA;KACD;;IAED,IAAI,CAAC,SAAS,CAAC,OAAV,CAAkB,MAAvB,EAA+B;MAAE,OAAA;KAAQ;;IAEzC,IAAI,WAAW,GAAG,QAAlB,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqB,SAAS,CAAC,OAA/B,CAAA,MAAA,EAAA,GAAA,EAAA,EAAwC;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAnB,SAAS,CAAC,OAAS,CAAA,GAAA,CAAA,CAAA;MAAA,IAA7B,MAA6B,GAAA,KAAA,CAAA;MACtC,IAAM,YAAY,GAAG,MAAM,CAAC,SAAP,CAAiB,OAAjB,CAAyB,YAA9C,CAAA;;MAEA,IAAI,YAAY,GAAG,WAAnB,EAAgC;QAC9B,WAAW,GAAG,YAAd,CAAA;OACD;KACF;;IAED,KAAK,CAAC,QAAN,GAAiB,WAAjB,CAAA;IACA,KAAK,CAAC,OAAN,GAAgB,UAAU,CAAC,YAAK;MAC9B,IAAI,CAAC;QACH,WAAW,EAAX,WADG;QAEH,WAAW,EAAX,WAFG;QAGH,OAAO,EAAP,OAHG;QAIH,KAAK,EAAL,KAJG;QAKH,IAAI,EAAE,MAAA;OALJ,EAMD,KANC,CAAJ,CAAA;KADwB,EAQvB,WARuB,CAA1B,CAAA;GAjCF,CAAA,CAAA;EAvC4B,IAAA,IAAA,GAmFH,CAAC,IAAD,EAAO,QAAP,CAnFG,CAAA;;EAmF5B,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2C;IAAtC,IAAM,UAAU,GAAA,IAAA,CAAA,GAAA,CAAhB,CAAA;IACH,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,UAAxB,EAAoC,UAAA,MAAA,EAAkC;MAAA,IAA/B,WAA+B,GAAA,MAAA,CAA/B,WAA+B;UAAlB,YAAkB,GAAA,MAAA,CAAlB,YAAkB,CAAA;;MACpE,IAAI,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAvC,EAA6C;QAC3C,YAAY,CAAC,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,OAAzC,CAAZ,CAAA;OACD;KAHH,CAAA,CAAA;GAKD;;EAED,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;IAC7C,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAa,CAAC,CAAD,CAArC,EAA0C,oBAAoB,CAAC,YAAY,CAAC,CAAD,CAAb,EAAkB,KAAlB,CAA9D,CAAA,CAAA;GACD;;EAED,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,IAAxB,EAA8B,UAAA,KAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,KAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC7E,IAAI,CAAC,WAAW,CAAC,eAAjB,EAAkC;MAChC,IAAI,CAAC;QAAE,WAAW,EAAX,WAAF;QAAe,WAAW,EAAX,WAAf;QAA4B,OAAO,EAAP,OAA5B;QAAqC,KAAK,EAAL,KAArC;QAA4C,IAAI,EAAE,KAAA;OAAnD,EAA4D,KAA5D,CAAJ,CAAA;KACD;GAHH,CAAA,CAAA;CAKD;;AAED,SAAS,oBAAT,CAA+B,IAA/B,EAA6C,KAA7C,EAAkD;EAChD,OAAO,UAAA,MAAA,EAA2D;IAAA,IAA/C,WAA+C,GAAA,MAAA,CAA/C,WAA+C;QAAlC,OAAkC,GAAA,MAAA,CAAlC,OAAkC;QAAzB,KAAyB,GAAA,MAAA,CAAzB,KAAyB;QAAlB,WAAkB,GAAA,MAAA,CAAlB,WAAkB,CAAA;IAChE,IAAI,CAAC;MAAE,WAAW,EAAX,WAAF;MAAe,WAAW,EAAX,WAAf;MAA4B,OAAO,EAAP,OAA5B;MAAqC,KAAK,EAAL,KAArC;MAA4C,IAAI,EAAJ,IAAA;KAA7C,EAAqD,KAArD,CAAJ,CAAA;GADF,CAAA;CAGD;;oBAEc;;;;;;;;;;;AClTf,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;AAcA,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,aAFmC,GAIjC,KAJiC,CAEnC,aAFmC;MAGnC,YAHmC,GAIjC,KAJiC,CAGnC,YAHmC,CAAA;EAMrC,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,KAAhC,CAAA,CAAA;EACA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,OAAzB,EAAkC,UAAC,GAAD,EAAA;IAAA,OAAS,OAAO,CAAC,GAAD,EAAa,KAAb,CAAhB,CAAA;GAAlC,CAAA,CAAA;EATqC,IAAA,IAAA,GAWhB,CAAC,MAAD,EAAS,IAAT,EAAe,QAAf,EAAyB,QAAzB,CAXgB,CAAA;;EAWrC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyD;IAApD,IAAM,MAAM,GAAA,IAAA,CAAA,EAAA,CAAZ,CAAA;IACH,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,aAAhC,CAAA,CAAA;GAZmC;;;EAgBrC,aAAa,CAAC,QAAd,CAAuB,kBAAvB,GAA4C,CAA5C,CAAA;EACA,aAAa,CAAC,KAAd,CAAoB,IAApB,CAAyB,YAAzB,CAAA,CAAA;CACD;;AAED,SAAS,KAAT,CAAA,IAAA,EAAgC;EAAA,IAAd,YAAc,GAAA,IAAA,CAAd,YAAc,CAAA;;EAC9B,IAAI,YAAY,CAAC,IAAb,KAAsB,MAA1B,EAAkC;IAAE,OAAA;GAAQ;;EAE5C,YAAY,CAAC,KAAb,GAAqB,CAAC,YAAY,CAAC,KAAb,IAAsB,CAAvB,IAA4B,CAAjD,CAAA;CACD;;AAED,SAAS,OAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,YACM,GAAA,KAAA,CADN,YACM;MADQ,WACR,GAAA,KAAA,CADQ,WACR;MADqB,OACrB,GAAA,KAAA,CADqB,OACrB,CAAA;;EAErB,IAAI,YAAY,CAAC,IAAb,KAAsB,MAAtB,IAAgC,CAAC,OAAO,CAAC,MAA7C,EAAqD;IAAE,OAAA;GAFlC;;;EAKrB,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,SAAX,CAAqB,OAArB,CAA6B,kBAA9C,CALqB;;EAQrB,IAAI,QAAQ,IAAI,CAAhB,EAAmB;IAAE,OAAA;GARA;;;EAWrB,WAAW,CAAC,kBAAZ,GAAiC,UAAU,CAAC,YAAK;IAC/C,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB;MACvB,WAAW,EAAX,WADuB;MAEvB,WAAW,EAAX,WAFuB;MAGvB,IAAI,EAAE,MAHiB;MAIvB,OAAO,EAAE,YAJc;MAKvB,KAAK,EAAE,YAAA;KALT,EAMG,KANH,CAAA,CAAA;GADyC,EAQxC,QARwC,CAA3C,CAAA;CASD;;AAED,SAAS,aAAT,CAAA,KAAA,EAAuC;EAAA,IAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;;;EAGrC,IAAI,WAAW,CAAC,kBAAhB,EAAoC;IAClC,aAAa,CAAC,WAAW,CAAC,kBAAb,CAAb,CAAA;IACA,WAAW,CAAC,kBAAZ,GAAiC,IAAjC,CAAA;GACD;CACF;;oBAEc;EACb,EAAE,EAAE,2BADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AC1EF,gEAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AAUA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,aAF0B,GAMxB,KANwB,CAE1B,aAF0B;MAG1B,OAH0B,GAMxB,KANwB,CAG1B,OAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,aAL0B,GAMxB,KANwB,CAK1B,aAL0B,CAAA;EAQ5B,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,iBAAzB,EAA4C,UAAA,IAAA,EAAiD;IAAA,IAA9C,OAA8C,GAAA,IAAA,CAA9C,OAA8C;QAArC,OAAqC,GAAA,IAAA,CAArC,OAAqC;QAA5B,IAA4B,GAAA,IAAA,CAA5B,IAA4B;QAAtB,WAAsB,GAAA,IAAA,CAAtB,WAAsB,CAAA;IAC3F,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,OAAjC,EAA0C,UAAC,YAAD,EAA+B;MACvE,IAAM,SAAS,GAAG,YAAY,CAAC,MAA/B,CAAA;MACA,IAAM,OAAO,GAAG,SAAS,CAAC,OAA1B,CAAA;;MAEA,IACE,SAAS,CAAC,KAAV,CAAgB,IAAhB,CAAA,IACA,SAAS,CAAC,KAAV,CAAgB,IAAhB,CAAA,CAAsB,MADtB,IAEA,OAAE,CAAC,OAAH,CAAW,OAAX,CAFA,IAGA,YAAY,CAAC,eAAb,CAA6B,OAA7B,EAAsC,OAAtC,EAA+C,WAA/C,CAJF,EAI+D;QAC7D,OAAO,CAAC,IAAR,CAAa;UACX,OAAO,EAAP,OADW;UAEX,SAAS,EAAT,SAFW;UAGX,KAAK,EAAE;YAAE,YAAY,EAAZ,YAAA;WAAF;SAHT,CAAA,CAAA;OAKD;KAdH,CAAA,CAAA;GADF,CAAA,CAAA;EAmBA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,UAAA,KAAA,EAAqB;IAAA,IAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;;IACnD,YAAY,CAAC,MAAb,CAAoB,OAApB,GAA8B,UAAU,OAAV,EAA0B;MACtD,OAAO,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAP,CAAA;KADF,CAAA;GADF,CAAA,CAAA;EAMA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,UAAA,KAAA,EAA8B;IAAA,IAA3B,YAA2B,GAAA,KAAA,CAA3B,YAA2B;QAAb,OAAa,GAAA,KAAA,CAAb,OAAa,CAAA;IAC5D,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,YAAY,CAAC,MAAb,CAAoB,OAA3B,EAAoC,aAAa,CAAC,QAAlD,CAAA,CAAA;IACA,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,YAAY,CAAC,MAAb,CAAoB,OAA3B,EAAoC,OAAO,CAAC,aAAR,IAAyB,EAA7D,CAAA,CAAA;GAFF,CAAA,CAAA;EAKA,CAAA,CAAA,EAAA,QAAA,CAAA,KAAA,EAAM,OAAO,CAAC,UAAd,EAA0B,aAAa,CAAC,KAAxC,CAAA,CAAA;EAEA,YAAY,CAAC,SAAb,CAAuB,aAAvB,GAAuC,mBAAvC,CAAA;EAEA,IAAM,kBAAkB,GAAG,YAAY,CAAC,SAAb,CAAuB,iBAAlD,CAAA;;EAEA,YAAY,CAAC,SAAb,CAAuB,iBAAvB,GAA2C,UAAU,UAAV,EAAsB,QAAtB,EAA8B;IACvE,IAAM,GAAG,GAAG,kBAAkB,CAAC,IAAnB,CAAwB,IAAxB,EAA8B,UAA9B,EAA0C,QAA1C,CAAZ,CAAA;;IAEA,IAAI,GAAG,KAAK,IAAZ,EAAkB;MAChB,IAAA,CAAK,MAAL,CAAY,OAAZ,CAAoB,UAApB,CAAA,GAAkC,QAAlC,CAAA;KACD;;IAED,OAAO,GAAP,CAAA;GAPF,CAAA;CASD;;AAED,SAAS,mBAAT,CAAkD,OAAlD,EAA8D;EAC5D,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,IAAA,CAAK,MAAL,CAAY,OAAnB,EAA4B,OAA5B,CAAA,CAAA;EAEA,OAAO,IAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,oCADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5EF,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,oBAAA,GAAA,2BAAA,CAAA,wBAAA,CAAA,CAAA;;;;AAEA,SAAS,YAAT,CAAkB,KAAlB,EAAuB;EACrB,UAAA,CAAA,SAAA,CAAA,CAAc,OAAd,CAAsB,KAAtB,CAAA,CAAA;;EACA,WAAA,CAAA,SAAA,CAAA,CAAW,OAAX,CAAmB,KAAnB,CAAA,CAAA;;EACA,oBAAA,CAAA,SAAA,CAAA,CAAoB,OAApB,CAA4B,KAA5B,CAAA,CAAA;CACD;;AAED,IAAM,OAAE,GAAG,gBAAX,CAAA;;;;;;;;;;;;ACRA,IAAA,kBAAA,GAAA,qBAAA,CAAA;;AAEA,8DAAA;;AAcM,SAAU,YAAV,CAAmB,KAAnB,EAA+B;EAAA,IAEjC,OAFiC,GAO/B,KAP+B,CAEjC,OAFiC;MAGjC,YAHiC,GAO/B,KAP+B,CAGjC,YAHiC;MAMjC,YANiC,GAO/B,KAP+B,CAMjC,YANiC,CAAA;;EAUnC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,OAAO,CAAC,KAAjC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAf,OAAO,CAAC,KAAO,CAAA,EAAA,CAAA,CAAA;IAAA,IAA7B,UAA6B,GAAA,IAAA,CAAA;IACtC,OAAO,CAAC,UAAR,CAAmB,IAAnB,CAAA,EAAA,CAAA,MAAA,CAA2B,UAA3B,EAAA,QAAA,CAAA,CAAA,CAAA;GAXiC;;;EAenC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClD,IAAI,WAAW,CAAC,WAAZ,KAA4B,QAAhC,EAA0C;MACxC,IAAI,WAAW,CAAC,cAAhB,EAAgC;QAC9B,WAAW,CAAC,cAAZ,EAAA,CAAA;OACD;;MAED,UAAA,CAAA,GAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,YAAN,CAAmB,IAA9B,EAAoC,WAApC,CAAA,CAAA;KACD;GAPH,CAAA,CAAA;;;;;;;;;;;;;;;;;;EA0BA,YAAY,CAAC,SAAb,CAAuB,MAAvB,GAAgC,UAAU,MAAV,EAAgB;IAC9C,OAAO,MAAM,CAAC,IAAD,EAAO,MAAP,EAAe,KAAf,CAAb,CAAA;GADF,CAAA;CAGD;;AAED,SAAS,MAAT,CAAiB,YAAjB,EAA6C,MAA7C,EAAkE,KAAlE,EAA8E;EAC5E,IAAM,QAAQ,GAAG,UAAA,CAAA,EAAA,CAAG,MAAH,CAAU,YAAY,CAAC,MAAvB,CAAA,GACb,UAAA,CAAA,GAAA,CAAI,IAAJ,CAAS,YAAY,CAAC,QAAb,CAAsB,gBAAtB,CAAuC,YAAY,CAAC,MAApD,CAAT,CADa,GAEb,CAAC,YAAY,CAAC,MAAd,CAFJ,CAD4E;;EAM5E,IAAM,OAAO,GAAI,UAAA,CAAA,GAAA,CAAI,MAAJ,CAAmB,OAApC,CAAA;EACA,IAAM,QAAQ,GAAgC,OAAO,GAAG,EAAH,GAAQ,IAA7D,CAAA;;EAP4E,IAAA,KAAA,GAAA,SAAA,KAAA,GAAA;IAAA,KAAA,GAStD,QATsD,CAAA,GAAA,CAAA,CAAA;IAAA,IASjE,OATiE,GAAA,KAAA,CAAA;IAU1E,IAAM,IAAI,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAb,CAAA;;IAEA,IAAI,CAAC,IAAL,EAAW;MAAE,OAAA,OAAA,CAAA;KAAO;;IAEpB,IAAM,kBAAkB,GAAG,UAAA,CAAA,GAAA,CAAI,IAAJ,CACzB,KAAK,CAAC,YAAN,CAAmB,IADM,EAEzB,UAAC,WAAD,EAA6B;MAC3B,OAAO,WAAW,CAAC,WAAZ,EAAA,IACL,WAAW,CAAC,YAAZ,KAA6B,YADxB,IAEL,WAAW,CAAC,OAAZ,KAAwB,OAFnB,IAGL,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAM,CAAC,IAHvC,CAAA;KAHuB,CAA3B,CAAA;;IAQA,IAAI,aAA4B,GAAA,KAAA,CAAhC,CAAA;;IAEA,IAAI,kBAAJ,EAAwB;MACtB,kBAAkB,CAAC,IAAnB,EAAA,CAAA;;MAEA,IAAI,QAAJ,EAAc;QACZ,aAAa,GAAG,kBAAkB,CAAC,cAAnB,IAAqC,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAiB;UAChF,kBAAkB,CAAC,cAAnB,GAAoC,OAApC,CAAA;SADmD,CAArD,CAAA;OAGD;KAPH,MASK;MACH,IAAM,IAAI,GAAG,UAAA,CAAA,IAAA,CAAU,UAAV,CAAqB,IAArB,CAAb,CAAA;;MACA,IAAM,MAAM,GAAG;QACb,IAAI,EAAO;UAAE,CAAC,EAAE,IAAI,CAAC,CAAV;UAAa,CAAC,EAAE,IAAI,CAAC,CAAA;SADnB;QAEb,MAAM,EAAK;UAAE,CAAC,EAAE,IAAI,CAAC,CAAV;UAAa,CAAC,EAAE,IAAI,CAAC,CAAA;SAFnB;QAGb,SAAS,EAAE,KAAK,CAAC,GAAN,EAAA;OAHb,CAAA;;MAMA,IAAM,KAAK,GAAG,UAAA,CAAA,OAAA,CAAa,aAAb,CAA2B,MAA3B,CAAd,CAAA;;MACA,aAAa,GAAG,WAAW,CAAC,KAAD,EAAQ,YAAR,EAAsB,OAAtB,EAA+B,MAA/B,EAAuC,KAAvC,CAA3B,CAAA;KACD;;IAED,IAAI,QAAJ,EAAc;MACZ,QAAQ,CAAC,IAAT,CAAc,aAAd,CAAA,CAAA;KACD;GA/CyE,CAAA;;EAS5E,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAgC;IAAA,IAAA,KAAA,CAAA;;IAAA,IAAA,IAAA,GAAA,KAAA,EAAA,CAAA;;IAAA,IAAA,IAAA,KAAA,OAAA,EAGjB,MAAA;GAoCd;;EAED,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,CAAA,CAAsB,IAAtB,CAA2B,YAAA;IAAA,OAAM,YAAN,CAAA;GAA3B,CAAnB,CAAA;CACD;;AAED,SAAS,WAAT,CAAsB,KAAtB,EAAoC,YAApC,EAAgE,OAAhE,EAAkF,MAAlF,EAAuG,KAAvG,EAAiH;EAC/G,IAAM,WAAW,GAAG,CAAA,CAAA,EAAA,kBAAA,CAAA,cAAA,EAAe;IAAE,WAAW,EAAE,QAAA;GAA9B,EAA0C,KAA1C,CAApB,CAAA;EACA,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,KAAK,EAAL,KAFgB;IAGhB,OAAO,EAAE,KAHO;IAIhB,WAAW,EAAE,OAJG;IAKhB,KAAK,EAAE,QAAA;GALT,CAAA;EAQA,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;EACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;EACA,WAAW,CAAC,QAAZ,GAAuB,CAAA,CAAA,EAAA,UAAA,CAAA,MAAA,EAAO,EAAP,EAAW,MAAX,CAAvB,CAAA;EACA,WAAW,CAAC,SAAZ,GAAwB,KAAxB,CAAA;EACA,WAAW,CAAC,aAAZ,CAA0B,KAA1B,EAAiC,KAAjC,EAAwC,OAAxC,EAAiD,IAAjD,CAAA,CAAA;;EAEA,WAAW,CAAC,QAAZ,CAAqB,SAArB,CAAA,CAAA;;EAEA,IAAM,aAAa,GAAI,UAAA,CAAA,GAAA,CAAI,MAAJ,CAA8B,OAA9B,GACnB,IAAK,UAAA,CAAA,GAAA,CAAI,MAAJ,CAA8B,OAAnC,CAA2C,UAAC,OAAD,EAAiB;IAC5D,WAAW,CAAC,cAAZ,GAA6B,OAA7B,CAAA;GADA,CADmB,GAInB,IAJJ,CAAA;EAMA,WAAW,CAAC,cAAZ,GAA6B,aAA7B,CAAA;EACA,WAAW,CAAC,KAAZ,CAAkB,MAAlB,EAA0B,YAA1B,EAAwC,OAAxC,CAAA,CAAA;;EAEA,IAAI,WAAW,CAAC,YAAhB,EAA8B;IAC5B,WAAW,CAAC,IAAZ,CAAiB,SAAjB,CAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAhB,CAAA,CAAA;GAFF,MAIK;IACH,WAAW,CAAC,IAAZ,EAAA,CAAA;GACD;;EAED,WAAW,CAAC,aAAZ,CAA0B,KAA1B,EAAiC,KAAjC,CAAA,CAAA;EACA,WAAW,CAAC,aAAZ,GAA4B,KAA5B,CAAA;EAEA,OAAO,aAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,QADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChKF,IAAA,OAAA,GAAA,4BAAA,CAAA,WAAA,CAAA,CAAA;;;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,2BAAA,GAAA,2BAAA,CAAA,+BAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,4BAAA,CAAA,kBAAA,CAAA,CAAA;;;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;AAEM,SAAU,SAAV,CAAgB,MAAhB,EAA8B;EAClC,SAAA,CAAA,KAAA,CAAM,IAAN,CAAW,MAAX,CAAA,CAAA;;EAEA,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,2BAAA,CAAA,SAAA,CAAb,CAAA,CAHkC;;;EAMlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,QAAA,CAAA,SAAA,CAAb,CAAA,CANkC;;;EASlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,kBAAb,CAAA,CATkC;;;EAYlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,SAAb,CAAA,CAZkC;;;EAelC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,OAAb,CAAA,CAfkC;;;EAkBlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,UAAA,CAAA,SAAA,CAAb,CAAA,CAlBkC;;;EAqBlC,KAAK,IAAM,IAAX,IAAmB,SAAnB,EAA8B;IAAA,IAAA,eAAA,GACI,SAAS,CAAC,IAAD,CADb;QACpB,SADoB,GAAA,eAAA,CACpB,SADoB;QACT,QADS,GAAA,eAAA,CACT,QADS,CAAA;IAG5B,SAAS,CAAC,QAAV,GAAqB,QAArB,CAAA;IACA,SAAA,CAAA,KAAA,CAAM,QAAN,CAAe,SAAf,CAAyB,IAAzB,CAAA,GAAiC,SAAjC,CAAA;GAzBgC;;;EA6BlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,WAAA,CAAA,SAAA,CAAb,CAAA,CA7BkC;;;EAgClC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,OAAA,CAAA,SAAA,CAAb,CAAA,CAhCkC;;;EAmClC,IAAI,SAAQ,KAAI,YAAa,EAAA;IAC3B,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,SAAA,CAAA,SAAA,CAAb,CAAA,CAAA;GACD;;EAED,OAAO,SAAA,CAAA,SAAA,CAAP,CAAA;;;;AAIF,SAAA,CAAA,SAAA,CAAA,CAAS,OAAT,GAAmB,SAAI,CAAC,OAAL,GAAe,YAAY,CAAA;oBAE/B,SAAA,CAAA,SAAA;;;;ACzDf;;;;;;;;;;;;;;;;;;;ACAA,SAAS,UAAT,CAAqB,IAArB,EAA+H;EAC7H,IAAM,WAAW,GAAG,CAClB,CAAC,GAAD,EAAM,GAAN,CADkB,EAElB,CAAC,MAAD,EAAS,KAAT,CAFkB,EAGlB,CAAC,OAAD,EAAU,QAAV,CAHkB,EAIlB,CAAC,OAAD,EAAU,QAAV,CAJkB,CAAA,CAKlB,MALkB,CAKX,UAAA,IAAA,EAAA;IAAA,IAAA,KAAA,GAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;QAAE,MAAF,GAAA,KAAA,CAAA,CAAA,CAAA;QAAU,MAAV,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IAAA,OAAsB,MAAM,IAAI,IAAV,IAAkB,MAAM,IAAI,IAAlD,CAAA;GALW,CAApB,CAAA;EAOA,OAAO,UAAU,CAAV,EAAa,CAAb,EAAc;IAAA,IAEjB,KAFiB,GAUf,IAVe,CAEjB,KAFiB;QAAA,YAAA,GAUf,IAVe,CAGjB,MAHiB;QAGjB,MAHiB,GAAA,YAAA,KAAA,KAAA,CAAA,GAGR;MACP,IAAI,EAAI,CAAC,QADF;MAEP,KAAK,EAAI,QAFF;MAGP,GAAG,EAAK,CAAC,QAHF;MAIP,MAAM,EAAG,QAAA;KAPM,GAAA,YAAA;QAAA,YAAA,GAUf,IAVe,CASjB,MATiB;QASjB,MATiB,GAAA,YAAA,KAAA,KAAA,CAAA,GASR;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KATH,GAAA,YAAA,CAAA;IAYnB,IAAM,MAAM,GAAG;MAAE,KAAK,EAAL,KAAA;KAAjB,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,WAA/B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;;MAAA,IAAA,KAAA,GAAA,KAAA;UAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;UAAhC,MAAgC,GAAA,KAAA,CAAA,CAAA,CAAA;UAAxB,MAAwB,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;MAC1C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAZ,IAAiB,IAAI,CAAC,MAAD,CAAhC,CAAd,CAAA;MACA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAZ,IAAiB,IAAI,CAAC,MAAD,CAAhC,CAAd,CAAA;MAEA,MAAM,CAAC,MAAD,CAAN,GAAiB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,IAAhB,EAAsB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,KAAhB,EAAuB,KAAK,GAAG,IAAI,CAAC,MAAD,CAAZ,GAAuB,MAAM,CAAC,CAArD,CAAtB,CAAjB,CAAA;MACA,MAAM,CAAC,MAAD,CAAN,GAAiB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,GAAhB,EAAqB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,MAAhB,EAAwB,KAAK,GAAG,IAAI,CAAC,MAAD,CAAZ,GAAuB,MAAM,CAAC,CAAtD,CAArB,CAAjB,CAAA;KACD;;IAED,OAAO,MAAP,CAAA;GAtBF,CAAA;CAwBD;;oBAEc;;;;;;;;;;;;;;;;AClCf,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;;;;;;;;ACAA,IAAA,cAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,UAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;;;AAUA,IAAI,CAAA,OAAO,MAAP,KAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAO,MAAP,CAAA,MAAkB,QAAlB,IAA8B,CAAC,CAAC,MAApC,EAA4C;EAC1C,SAAI,CAAC,MAAD,CAAJ,CAAA;CACD;;AAEM,SAAS,SAAT,CAAe,GAAf,EAA4B;EACjC,CAAA,CAAA,EAAA,cAAA,CAAA,IAAA,EAAa,GAAb,CAAA,CAAA;EAEA,OAAO,cAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa;IAClB,EAAE,EAAE,YADc;IAElB,OAFkB,EAAA,SAAA,OAAA,CAET,KAFS,EAEF;MACd,cAAA,CAAA,SAAA,CAAA,CAAS,SAAT,GAAqB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,KAAK,CAAC,SAAb,EAAwB,cAAxB,CAArB,CAAA;MACA,cAAA,CAAA,SAAA,CAAA,CAAS,QAAT,GAAoB,QAApB,CAAA;MACA,cAAA,CAAA,SAAA,CAAA,CAAS,cAAT,GAA0B,cAAA,CAAA,SAAA,CAAA,CAAS,QAAT,CAAkB,IAA5C,CAAA;KACD;GANI,CAAP,CAAA;CAQD;;oBAEc,cAAA,CAAA,SAAA;;AACf,cAAA,CAAA,SAAA,CAAA,CAAS,SAAT,CAAA,GAAsB,cAAA,CAAA,SAAA,CAAtB;;AACA,cAAA,CAAA,SAAA,CAAA,CAAS,MAAT,CAAA,GAAmB,SAAnB;;AAEA,IAAI,CAAA,QAAA,KAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAO,UAAP,CAAA,MAAkB,QAAlB,IAA8B,CAAC,CAAC,UAApC,EAA4C;EAC1C,kBAAA,GAAiB,cAAA,CAAA,SAAA,CAAjB,CAAA;CACD;;ACrCD;AACA;AACA;AACA;AACA","file":"interact.js","sourceRoot":"","sourcesContent":["/**\n * interact.js 1.4.0-rc.6\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\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;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n // FIXME Signals\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\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: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope;\n\n (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\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) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n 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 events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('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 events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('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 class InteractableSet {\n signals = new utils.Signals()\n\n // all set interactables\n list: InteractableBase[] = []\n\n constructor (protected scope: Scope) {}\n\n new (target: Interact.Target, options?: any): InteractableBase {\n options = utils.extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n indexOfElement (target: Interact.Target, context: Document | Element) {\n context = context || this.scope.document\n\n const list = this.list\n\n for (let i = 0; i < list.length; i++) {\n const interactable = list[i]\n\n if (interactable.target === target && interactable._context === context) {\n return i\n }\n }\n\n return -1\n }\n\n get (element: Interact.Target, options, dontCheckInContext?: boolean) {\n const ret = this.list[this.indexOfElement(element, options && options.context)]\n\n return ret && (utils.is.string(element) || dontCheckInContext || ret.inContext(element)) ? ret : null\n }\n\n forEachMatch (element: Document | Element, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((utils.is.string(interactable.target)\n // target is a selector and the element matches\n ? (utils.is.element(element) && utils.dom.matchesSelector(element, interactable.target))\n // target is the element\n : element === interactable.target) &&\n // the element is in context\n (interactable.inContext(element))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n interactions.install(scope)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport events from '@interactjs/utils/events'\nimport finder, { SearchDetails } from '@interactjs/utils/interactionFinder'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n eventMap: any\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\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 const eventMap = {} as { [key: string]: Interact.Listener }\n\n if (domObjects.PointerEvent) {\n eventMap[pEventTypes.down ] = listeners.pointerDown\n eventMap[pEventTypes.move ] = listeners.pointerMove\n eventMap[pEventTypes.up ] = listeners.pointerUp\n eventMap[pEventTypes.cancel] = listeners.pointerUp\n }\n else {\n eventMap.mousedown = listeners.pointerDown\n eventMap.mousemove = listeners.pointerMove\n eventMap.mouseup = listeners.pointerUp\n\n eventMap.touchstart = listeners.pointerDown\n eventMap.touchmove = listeners.pointerMove\n eventMap.touchend = listeners.pointerUp\n eventMap.touchcancel = listeners.pointerUp\n }\n\n eventMap.blur = (event) => {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n }\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction 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 () { return scope.now() }\n }\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n return new scope.Interaction(options as Required)\n },\n listeners,\n eventMap,\n pointerMoveTolerance: 1,\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (browser.supportsTouch && /touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\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 }\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 = 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,\n pointerId: pointerUtils.getPointerId(event),\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.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || newInteraction({ pointerType }, scope)\n}\n\nexport function newInteraction (options, scope) {\n const interaction = scope.interactions.new(options)\n\n scope.interactions.list.push(interaction)\n return interaction\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { eventMap } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\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 eventType in eventMap) {\n eventMethod(doc, eventType, eventMap[eventType], eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n newInteraction,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\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: Interact.Rect & Interact.Rect3\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\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: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.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\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\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 {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.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 this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n })\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n if (!this.simulation) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (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\n let dy\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 = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.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?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n noBefore: false,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\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?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.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._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.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 : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer, event) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n\n if (!signalArg.noBefore) {\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\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 function find (array, func) {\n return array[findIndex(array, func)]\n}\n\nexport function some (array, func) {\n return findIndex(array, func) !== -1\n}\n","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.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 &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\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\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.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(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\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 }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\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","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass 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: any) {\n let listeners\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: Interact.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: Interact.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) { continue }\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\nexport default Eventable\n","// tslint:disable no-empty-interface\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}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.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\nexport default defaults\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{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\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 * as is from './is'\nimport win from './window'\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 string,\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) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('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) &&\n /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 = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /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'\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 = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent, child) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\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, selector) {\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\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (parent.parentNode && parent.parentNode !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = parent.parentNode\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = parent.parentNode\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element, selector, limit) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\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) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return 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\nexport function getElementRect (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 (element) {\n const path = []\n\n while (element) {\n path.push(element)\n element = parentNode(element)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\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\n}\n\nexport function tlbrToXywh (rect) {\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 - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\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","export default (x, y) => Math.sqrt(x * x + y * y)\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport defaults from './defaultOptions'\nimport Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> {\n type: string\n target: Element\n relatedTarget: Element | null\n currentTarget: Element\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 // added by interact.js\n interactable: Interactable\n interaction: Interaction\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n immediatePropagationStopped = false\n propagationStopped = false\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\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.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.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interaction = interaction\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : 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 }\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 get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this.interaction\n\n if (interaction.prevEvent.speed < 600 ||\n 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\nexport default InteractEvent\n","import * as arr from './arr'\nimport * as is from './is'\n\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 }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nexport function pointerExtend (dest, source) {\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}\n\nexport default pointerExtend\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\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\n setCoordVelocity (targetObj, delta) {\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\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\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 }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.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\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n getPointerType (pointer) {\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 ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: {\n page: Interact.Point,\n client: Interact.Point,\n timeStamp?: number,\n pointerId?: any,\n target?: any,\n }) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] },\n typeCount: number,\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[],\n contexts: EventTarget[],\n listeners: Array>,\n },\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (!contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\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(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: EventTarget, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\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 delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (selector, context, type, listener?, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\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 interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(event))\n let element = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\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\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public 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\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n","import * 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 events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected 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: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\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\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].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].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = 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 {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : 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 (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][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) {\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 (newValue) {\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) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, interactableElement: Element, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, interactableElement, eventTarget) &&\n this.testAllow(options.allowFrom, interactableElement, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, interactableElement)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, interactableElement)\n }\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) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.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') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(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: Interact.EventTypes, listener?: Interact.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[] | Interact.EventTypes, listener?: Interact.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: Interact.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 methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\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 * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: EventTarget,\n ) {}\n}\n\nexport default PointerInfo\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _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\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","import * as utils from './index'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\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\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = utils.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)) { continue }\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.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, pointerId) {\n return utils.arr.some(interaction.pointers, ({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\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 }\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 (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): 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: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent {\n type: string\n target: Element\n currentTarget: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n interaction: Interaction\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: Interaction['dropState'], dragEvent, type) {\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : 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.interaction = dragEvent.interaction\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 ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\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(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\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 }\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\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.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?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\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: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\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 }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\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 *\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 {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\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 (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\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 (utils.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 utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\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) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\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 ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\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(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, 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\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\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 }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\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 = 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: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.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 (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.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 (utils.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: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.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 && utils.is.number(dropOverlap)) {\n const overlapArea = (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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\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: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = 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 (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.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 (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, 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 = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\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 }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.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 (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.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 resizeRects: {\n start: Interact.Rect\n current: Interact.Rect\n inverted: Interact.Rect\n previous: Interact.Rect\n delta: Interact.Rect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.Rect\n rect?: Interact.Rect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\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: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n utils.arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\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 Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = utils.extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (utils.is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\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 return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (utils.is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (utils.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (utils.is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (utils.is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (utils.is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = utils.is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = utils.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, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!utils.is.element(element)) { return false }\n\n return utils.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 : utils.dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\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 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\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.interactable.getRect(interaction.element)\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = utils.extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : utils.extend({}, startRect),\n inverted : utils.extend({}, startRect),\n previous : utils.extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n };\n\n (iEvent as ResizeEvent).rect = interaction.resizeRects.inverted;\n (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = utils.extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = utils.extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n utils.extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n gesture.install(scope)\n resize.install(scope)\n drag.install(scope)\n drop.install(scope)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\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/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg, scope))\n\n actions.eventTypes.push('autoscroll')\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 Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction, scope: Interact.Scope) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = scope.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 options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = this.scope.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 }\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, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }, scope: Interact.Scope) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].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 }\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, scope)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\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(\n scrollOptions.container,\n interaction.interactable,\n element\n )\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\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') });\n * // or\n * interact(element).ignoreFrom('input, textarea, a');\n * ```\n * @deprecated\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 * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\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 * @deprecated\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 * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\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 * Gets 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 Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\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 * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\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?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n InteractableMethods.install(scope)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.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) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\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) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n 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 (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\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)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\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, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.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\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\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 = 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.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\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.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\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: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('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.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n autoStart.install(scope)\n hold.install(scope)\n dragAxis.install(scope)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\nfunction preventDefault (interactable, newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n interactable.options.preventDefault = newValue\n return interactable\n }\n\n if (is.bool(newValue)) {\n interactable.options.preventDefault = newValue ? 'always' : 'never'\n return interactable\n }\n\n return interactable.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable, scope, 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 (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 (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event)\n }\n}\n\nexport function install (scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\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 = function (newValue) {\n return preventDefault(this, newValue)\n }\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.eventMap.dragstart = function preventNativeDrag (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n }\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport const 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\nexport const install = process.env.NODE_ENV === 'production'\n ? () => {}\n // eslint-disable-next-line no-restricted-syntax\n : function install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n logger = logger || console\n if (process.env.NODE_ENV !== 'production') {\n scope.logger = logger\n scope.interactions.signals.on('action-start', ({ interaction }) => {\n touchAction(interaction, scope.logger)\n boxSizing(interaction, scope.logger)\n noListeners(interaction, scope.logger)\n })\n }\n }\n\nexport const touchActionMessage = '[interact.js] Consider adding CSS \"touch-action: none\" to this element\\n'\nexport const boxSizingMessage = '[interact.js] Consider adding CSS \"box-sizing: border-box\" to this resizable element'\nexport const noListenersMessage = '[interact.js] There are no listeners set for this action'\n\nexport function touchAction ({ element }: Interact.Interaction, logger: Logger) {\n if (!parentHasStyle(element, 'touchAction', /pan-|pinch|none/)) {\n logger.warn(\n touchActionMessage,\n element,\n links.touchAction)\n }\n}\n\nexport function boxSizing (interaction: Interact.Interaction, logger: Logger) {\n const { element } = interaction\n\n if (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n ) {\n logger.warn(\n boxSizingMessage,\n element,\n links.boxSizing)\n }\n}\n\nexport function noListeners (interaction: Interact.Interaction, logger: Logger) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n if (!moveListeners.length) {\n logger.warn(\n noListenersMessage,\n actionName,\n interaction.interactable)\n }\n}\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\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)\n }\n\n return false\n}\n\nexport default {\n id: 'dev-tools',\n install,\n}\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: any[]\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets : {},\n states : null,\n result : null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n beforeMove(arg as any)\n start(arg as any, arg.interaction.coords.cur.page, scope.modifiers)\n })\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('before-action-end', beforeEnd)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('before-action-move', setCoords)\n\n interactions.signals.on('after-action-start', restoreCoords as any)\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('stop', stop)\n}\n\nfunction startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nfunction 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\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nfunction setAll (arg: Partial) {\n const {\n interaction,\n prevCoords = interaction.modifiers.result\n ? interaction.modifiers.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(interaction.modifiers.skip)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n result.changed = prevCoords.x !== result.coords.x || prevCoords.y !== result.coords.y\n\n return result\n}\n\nfunction prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction beforeMove ({ interaction, phase, preEnd, skipModifiers }): void | false {\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interactable.getRect(element),\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\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\nfunction restoreCoords ({ interaction: { coords, modifiers } }) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta } = modifiers.result\n\n for (const [coordsSet, delta] of [[coords.start, startDelta], [coords.cur, curDelta]]) {\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\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers.map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction makeModifier (module, name?: string) {\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) => {\n options = options || {}\n\n // add missing defaults to options\n options.enabled = options.enabled !== false\n\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n Object.defineProperty(\n modifier,\n 'name',\n { value: name })\n\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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 } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume';\n(EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\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 scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\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 */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\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 {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (element: Element, options?: any) {\n return scope.interactables.indexOfElement(element, options && options.context) !== -1\n}\n\n/**\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 */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\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 */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\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 */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\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 */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\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 else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\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}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default 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 Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\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, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\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 }\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 }\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, defaults) {\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 restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// });\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\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 }\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 }\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 restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start ({ interaction, interactable, element, rect, state, startOffset }) {\n const { options } = state\n const offsets = []\n const optionsOrigin = utils.rect.rectToXY(utils.rect.resolveRectLike(options.origin))\n const origin = optionsOrigin || utils.getOriginXY(interactable, element, interaction.prepared.name)\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x - origin.x,\n y: interaction.coords.start.page.y - origin.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\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 else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set ({ interaction, coords, state }) {\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n let i\n\n page.x -= origin.x\n page.y -= origin.y\n\n state.realX = page.x\n state.realY = page.y\n\n let len = options.targets ? options.targets.length : 0\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; index < options.targets.length; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: utils.is.number(target.x) ? (target.x + offset.x) : relativeX,\n y: utils.is.number(target.y) ? (target.y + offset.y) : relativeY,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.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 (!closest.target || (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 closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\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}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\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 }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\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 snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\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\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\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\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import Interaction from '@interactjs/core/Interaction'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent {\n interaction: Interaction\n timeStamp: number\n originalEvent: Interact.PointerEventType\n type: T\n pointerId: number\n pointerType: string\n target: Node | Window\n currentTarget: Node | Window\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n propagationStopped = false\n immediatePropagationStopped = false\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.interaction = interaction\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\ntype EventTargetList = Array<{\n eventable: Eventable,\n element: Interact.EventTarget,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.element)\n\n pointerEvent.subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.element\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent.addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({ targets, element, type, eventTarget }: any) => {\n scope.interactables.forEachMatch(element, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n is.element(element) &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n targets.push({\n element,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n pointerEvents.install(scope)\n holdRepeat.install(scope)\n interactableTargets.install(scope)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { newInteraction } from '@interactjs/core/interactions'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowResolve: () => void\n }\n}\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target);\n * const drag = { name: drag, axis: 'x' };\n * const resize = { name: resize, edges: { left: true, bottom: true };\n *\n * interactable.reflow(drag);\n * interactable.reflow(resize);\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = newInteraction({ pointerType: 'reflow' }, scope)\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window): typeof interact {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = init.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","/// \n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (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 = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_26;\n\n});\n"]} \ No newline at end of file diff --git a/packages/interactjs/dist/interact.min.js b/packages/interactjs/dist/interact.min.js index fd2817673..afa15fdd0 100644 --- a/packages/interactjs/dist/interact.min.js +++ b/packages/interactjs/dist/interact.min.js @@ -1,4 +1,4 @@ -/* interact.js 1.4.0-rc.5 | https://raw.github.com/taye/interact.js/master/LICENSE */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).interact=e()}}(function(){var e=function(t){var n;return function(e){return n||t(n={exports:{},parent:e},n.exports),n.exports}},f=e(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Scope=t.ActionName=void 0;var i=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt),n=u(N),r=u(R),o=u(S),a=u(pt),s=u(me),l=u(E({}));function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function d(e,t,n){return(d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=p(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var n=0;nthis.pointerMoveTolerance);var a={pointer:e,pointerIndex:this.getPointerIndex(e),event:t,eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||(s.pointer.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),s.pointer.setCoordVelocity(this.coords.velocity,this.coords.delta)),this._signals.fire("move",a),i||(this.interacting()&&this.move(a),this.pointerWasMoved&&s.pointer.copyCoords(this.coords.prev,this.coords.cur))}},{key:"move",value:function(e){(e=s.extend({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this,noBefore:!1},e||{})).phase=i.EventPhase.Move,this._doPhase(e)}},{key:"pointerUp",value:function(e,t,n,r){var o=this.getPointerIndex(e);-1===o&&(o=this.updatePointer(e,t,n,!1)),this._signals.fire(/cancel$/i.test(t.type)?"cancel":"up",{pointer:e,pointerIndex:o,event:t,eventTarget:n,curEventTarget:r,interaction:this}),this.simulation||this.end(t),this.pointerIsDown=!1,this.removePointer(e,t)}},{key:"documentBlur",value:function(e){this.end(e),this._signals.fire("blur",{event:e,interaction:this})}},{key:"end",value:function(e){var t;this._ending=!0,e=e||this._latestPointer.event,this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:i.EventPhase.End})),!(this._ending=!1)===t&&this.stop()}},{key:"currentAction",value:function(){return this._interacting?this.prepared.name:null}},{key:"interacting",value:function(){return this._interacting}},{key:"stop",value:function(){this._signals.fire("stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this.prepared.name=this.prevEvent=null}},{key:"getPointerIndex",value:function(e){var t=s.pointer.getPointerId(e);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:s.arr.findIndex(this.pointers,function(e){return e.id===t})}},{key:"getPointerInfo",value:function(e){return this.pointers[this.getPointerIndex(e)]}},{key:"updatePointer",value:function(e,t,n,r){var o=s.pointer.getPointerId(e),i=this.getPointerIndex(e),a=this.pointers[i];return r=!1!==r&&(r||/(down|start)$/i.test(t.type)),a?a.pointer=e:(a=new l.default(o,e,t,null,null),i=this.pointers.length,this.pointers.push(a)),r&&(this.pointerIsDown=!0,this.interacting()||(s.pointer.setCoords(this.coords.start,this.pointers.map(function(e){return e.pointer}),this._now()),s.pointer.copyCoords(this.coords.cur,this.coords.start),s.pointer.copyCoords(this.coords.prev,this.coords.start),s.pointer.pointerExtend(this.downPointer,e),this.downEvent=t,a.downTime=this.coords.cur.timeStamp,a.downTarget=n,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,n),this._signals.fire("update-pointer",{pointer:e,event:t,eventTarget:n,down:r,pointerInfo:a,pointerIndex:i,interaction:this}),i}},{key:"removePointer",value:function(e,t){var n=this.getPointerIndex(e);if(-1!==n){var r=this.pointers[n];this._signals.fire("remove-pointer",{pointer:e,event:t,pointerIndex:n,pointerInfo:r,interaction:this}),this.pointers.splice(n,1)}}},{key:"_updateLatestPointer",value:function(e,t,n){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=n}},{key:"_createPreparedEvent",value:function(e,t,n,r){var o=this.prepared.name;return new i.default(this,e,o,t,this.element,null,n,r)}},{key:"_fireEvent",value:function(e){this.interactable.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}},{key:"_doPhase",value:function(e){var t=e.event,n=e.phase,r=e.preEnd,o=e.type;if(!e.noBefore&&!1===this._signals.fire("before-action-".concat(n),e))return!1;var i=e.iEvent=this._createPreparedEvent(t,n,r,o),a=this.rect;if(a){var s=this.edges||this.prepared.edges||{left:!0,right:!0,top:!0,bottom:!0};s.top&&(a.top+=i.delta.y),s.bottom&&(a.bottom+=i.delta.y),s.left&&(a.left+=i.delta.x),s.right&&(a.right+=i.delta.x)}return this._signals.fire("action-".concat(n),e),this._fireEvent(i),this._signals.fire("after-action-".concat(n),e),!0}},{key:"_now",value:function(){return Date.now()}},{key:"pointerMoveTolerance",get:function(){return 1}}]),r}(),c=t.Interaction=u;t.default=c}),s={};function t(e,t){for(var n=0;na.left&&c.xa.top&&c.y=a.left&&v<=a.right&&g>=a.top&&g<=a.bottom}if(p&&_n.is.number(l)){var h=Math.max(0,Math.min(a.right,p.right)-Math.max(a.left,p.left))*Math.max(0,Math.min(a.bottom,p.bottom)-Math.max(a.top,p.top)),y=h/(p.width*p.height);s=l<=y}return e.options.drop.checker&&(s=e.options.drop.checker(t,n,s,e,i,r,o)),s}(this,e,t,n,r,o,i)},t.dynamicDrop=function(e){return _n.is.bool(e)?(o.dynamicDrop=e,t):o.dynamicDrop},_n.arr.merge(e.eventTypes,["dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop"]),e.methodDict.drop="dropzone",o.dynamicDrop=!1,i.actions.drop=An.defaults},getActiveDrops:Tn,getDrop:Dn,getDropEvents:kn,fireDropEvents:zn,defaults:{enabled:!1,accept:null,overlap:"pointer"}},Cn=An;Pn.default=Cn;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.default=void 0;var Xn,Yn=(Xn=me)&&Xn.__esModule?Xn:{default:Xn},Nn=f({}),Fn=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt);Nn.ActionName.Gesture="gesture";var Ln={id:"actions/gesture",install:function(e){var t=e.actions,n=e.Interactable,r=e.interactions,o=e.defaults;n.prototype.gesturable=function(e){return Fn.is.object(e)?(this.options.gesture.enabled=!1!==e.enabled,this.setPerAction("gesture",e),this.setOnEvents("gesture",e),this):Fn.is.bool(e)?(this.options.gesture.enabled=e,this):this.options.gesture},r.signals.on("action-start",Wn),r.signals.on("action-move",Wn),r.signals.on("action-end",Wn),r.signals.on("new",function(e){e.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}}),t[Nn.ActionName.Gesture]=Ln,t.names.push(Nn.ActionName.Gesture),Fn.arr.merge(t.eventTypes,["gesturestart","gesturemove","gestureend"]),t.methodDict.gesture="gesturable",o.actions.gesture=Ln.defaults},defaults:{},checker:function(e,t,n,r,o){return 2<=o.pointers.length?{name:"gesture"}:null},getCursor:function(){return""}};function Wn(e){var t=e.interaction,n=e.iEvent,r=e.event,o=e.phase;if("gesture"===t.prepared.name){var i=t.pointers.map(function(e){return e.pointer}),a="start"===o,s="end"===o,l=t.interactable.options.deltaSource;if(n.touches=[i[0],i[1]],a)n.distance=Fn.pointer.touchDistance(i,l),n.box=Fn.pointer.touchBBox(i),n.scale=1,n.ds=0,n.angle=Fn.pointer.touchAngle(i,l),n.da=0,t.gesture.startDistance=n.distance,t.gesture.startAngle=n.angle;else if(s||r instanceof Yn.default){var u=t.prevEvent;n.distance=u.distance,n.box=u.box,n.scale=u.scale,n.ds=0,n.angle=u.angle,n.da=0}else n.distance=Fn.pointer.touchDistance(i,l),n.box=Fn.pointer.touchBBox(i),n.scale=n.distance/t.gesture.startDistance,n.angle=Fn.pointer.touchAngle(i,l),n.ds=n.scale-t.gesture.scale,n.da=n.angle-t.gesture.angle;t.gesture.distance=n.distance,t.gesture.angle=n.angle,Fn.is.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(t.gesture.scale=n.scale)}}var qn=Ln;Rn.default=qn;var Vn={};Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.default=void 0;var Gn=f({}),Un=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt);var Bn={id:"actions/resize",install:function(t){var e=t.actions,n=t.browser,r=t.Interactable,o=t.interactions,i=t.defaults;o.signals.on("new",function(e){e.resizeAxes="xy"}),o.signals.on("action-start",$n),o.signals.on("action-move",Kn),o.signals.on("action-start",Qn),o.signals.on("action-move",Qn),Bn.cursors=function(e){return e.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}(n),Bn.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,r.prototype.resizable=function(e){return function(e,t,n){return Un.is.object(t)?(e.options.resize.enabled=!1!==t.enabled,e.setPerAction("resize",t),e.setOnEvents("resize",t),Un.is.string(t.axis)&&/^x$|^y$|^xy$/.test(t.axis)?e.options.resize.axis=t.axis:null===t.axis&&(e.options.resize.axis=n.defaults.actions.resize.axis),Un.is.bool(t.preserveAspectRatio)?e.options.resize.preserveAspectRatio=t.preserveAspectRatio:Un.is.bool(t.square)&&(e.options.resize.square=t.square),e):Un.is.bool(t)?(e.options.resize.enabled=t,e):e.options.resize}(this,e,t)},e[Gn.ActionName.Resize]=Bn,e.names.push(Gn.ActionName.Resize),Un.arr.merge(e.eventTypes,["resizestart","resizemove","resizeinertiastart","resizeresume","resizeend"]),e.methodDict.resize="resizable",i.actions.resize=Bn.defaults},defaults:{square:!(Gn.ActionName.Resize="resize"),preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},checker:function(e,t,n,r,o,i){if(!i)return null;var a=Un.extend({},o.coords.cur.page),s=n.options;if(s.resize.enabled){var l=s.resize,u={left:!1,right:!1,top:!1,bottom:!1};if(Un.is.object(l.edges)){for(var c in u)u[c]=Hn(c,l.edges[c],a,o._latestPointer.eventTarget,r,i,l.margin||this.defaultMargin);if(u.left=u.left&&!u.right,u.top=u.top&&!u.bottom,u.left||u.right||u.top||u.bottom)return{name:"resize",edges:u}}else{var f="y"!==s.resize.axis&&a.x>i.right-this.defaultMargin,d="x"!==s.resize.axis&&a.y>i.bottom-this.defaultMargin;if(f||d)return{name:"resize",axes:(f?"x":"")+(d?"y":"")}}}return null},cursors:null,getCursor:function(e){var t=Bn.cursors;if(e.axis)return t[e.name+e.axis];if(e.edges){for(var n="",r=["top","bottom","left","right"],o=0;o<4;o++)e.edges[r[o]]&&(n+=r[o]);return t[n]}return null},defaultMargin:null};function Hn(e,t,n,r,o,i,a){if(!t)return!1;if(!0===t){var s=Un.is.number(i.width)?i.width:i.right-i.left,l=Un.is.number(i.height)?i.height:i.bottom-i.top;if(a=Math.min(a,("left"===e||"right"===e?s:l)/2),s<0&&("left"===e?e="right":"right"===e&&(e="left")),l<0&&("top"===e?e="bottom":"bottom"===e&&(e="top")),"left"===e)return n.x<(0<=s?i.left:i.right)+a;if("top"===e)return n.y<(0<=l?i.top:i.bottom)+a;if("right"===e)return n.x>(0<=s?i.right:i.left)-a;if("bottom"===e)return n.y>(0<=l?i.bottom:i.top)-a}return!!Un.is.element(r)&&(Un.is.element(t)?t===r:Un.dom.matchesUpTo(r,t,o))}function $n(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r=n.interactable.getRect(n.element),o=n.interactable.options.resize;if(o.square||o.preserveAspectRatio){var i=Un.extend({},n.prepared.edges);i.top=i.top||i.left&&!i.bottom,i.left=i.left||i.top&&!i.right,i.bottom=i.bottom||i.right&&!i.top,i.right=i.right||i.bottom&&!i.left,n.prepared._linkedEdges=i}else n.prepared._linkedEdges=null;o.preserveAspectRatio&&(n.resizeStartAspectRatio=r.width/r.height),n.resizeRects={start:r,current:Un.extend({},r),inverted:Un.extend({},r),previous:Un.extend({},r),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},t.rect=n.resizeRects.inverted,t.deltaRect=n.resizeRects.delta}}function Kn(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r,o=n.interactable.options.resize,i=o.invert,a="reposition"===i||"negate"===i,s=n.prepared.edges,l=n.resizeRects.start,u=n.resizeRects.current,c=n.resizeRects.inverted,f=n.resizeRects.delta,d=Un.extend(n.resizeRects.previous,c),p=s,v=Un.extend({},t.delta);if(o.preserveAspectRatio||o.square){var g=o.preserveAspectRatio?n.resizeStartAspectRatio:1;s=n.prepared._linkedEdges,p.left&&p.bottom||p.right&&p.top?v.y=-v.x/g:p.left||p.right?v.y=v.x/g:(p.top||p.bottom)&&(v.x=v.y*g)}if(s.top&&(u.top+=v.y),s.bottom&&(u.bottom+=v.y),s.left&&(u.left+=v.x),s.right&&(u.right+=v.x),a){if(Un.extend(c,u),"reposition"===i)c.top>c.bottom&&(r=c.top,c.top=c.bottom,c.bottom=r),c.left>c.right&&(r=c.left,c.left=c.right,c.right=r)}else c.top=Math.min(u.top,l.bottom),c.bottom=Math.max(u.bottom,l.top),c.left=Math.min(u.left,l.right),c.right=Math.max(u.right,l.left);for(var h in c.width=c.right-c.left,c.height=c.bottom-c.top,c)f[h]=c[h]-d[h];t.edges=n.prepared.edges,t.rect=c,t.deltaRect=f}}function Qn(e){var t=e.interaction,n=e.iEvent;"resize"===e.action&&t.resizeAxes&&(t.interactable.options.resize.square?("y"===t.resizeAxes?n.delta.x=n.delta.y:n.delta.y=n.delta.x,n.axes="xy"):(n.axes=t.resizeAxes,"x"===t.resizeAxes?n.delta.y=0:"y"===t.resizeAxes&&(n.delta.x=0)))}var Jn=Bn;Vn.default=Jn;var Zn={};Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.install=function(e){nr.default.install(e),rr.default.install(e),er.default.install(e),tr.default.install(e)},Object.defineProperty(Zn,"drag",{enumerable:!0,get:function(){return er.default}}),Object.defineProperty(Zn,"drop",{enumerable:!0,get:function(){return tr.default}}),Object.defineProperty(Zn,"gesture",{enumerable:!0,get:function(){return nr.default}}),Object.defineProperty(Zn,"resize",{enumerable:!0,get:function(){return rr.default}}),Zn.id=void 0;var er=or(un),tr=or(Pn),nr=or(Rn),rr=or(Vn);function or(e){return e&&e.__esModule?e:{default:e}}Zn.id="actions";var ir={};Object.defineProperty(ir,"__esModule",{value:!0}),ir.getContainer=dr,ir.getScroll=pr,ir.getScrollSize=function(e){lr.window(e)&&(e=window.document.body);return{x:e.scrollWidth,y:e.scrollHeight}},ir.getScrollSizeDelta=function(e,t){var n=e.interaction,r=e.element,o=n&&n.interactable.options[n.prepared.name].autoScroll;if(!o||!o.enabled)return t(),{x:0,y:0};var i=dr(o.container,n.interactable,r),a=pr(i);t();var s=pr(i);return{x:s.x-a.x,y:s.y-a.y}},ir.default=void 0;var ar,sr=cr(K),lr=cr(v),ur=(ar=It)&&ar.__esModule?ar:{default:ar};function cr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var fr={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:null,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(e,t){fr.isScrolling=!0,ur.default.cancel(fr.i),(e.autoScroll=fr).interaction=e,fr.prevTime=t.now(),fr.i=ur.default.request(fr.scroll)},stop:function(){fr.isScrolling=!1,fr.interaction&&(fr.interaction.autoScroll=null),ur.default.cancel(fr.i)},scroll:function(){var e=fr.interaction,t=e.interactable,n=e.element,r=t.options[fr.interaction.prepared.name].autoScroll,o=dr(r.container,t,n),i=this.scope.now(),a=(i-fr.prevTime)/1e3,s=r.speed*a;if(1<=s){var l={x:fr.x*s,y:fr.y*s};if(l.x||l.y){var u=pr(o);lr.window(o)?o.scrollBy(l.x,l.y):o&&(o.scrollLeft+=l.x,o.scrollTop+=l.y);var c=pr(o),f={x:c.x-u.x,y:c.y-u.y};(f.x||f.y)&&t.fire({type:"autoscroll",target:n,interactable:t,delta:f,interaction:e,container:o})}fr.prevTime=i}fr.isScrolling&&(ur.default.cancel(fr.i),fr.i=ur.default.request(fr.scroll))},check:function(e,t){var n=e.options;return n[t].autoScroll&&n[t].autoScroll.enabled},onInteractionMove:function(e,t){var n=e.interaction,r=e.pointer;if(n.interacting()&&fr.check(n.interactable,n.prepared.name))if(n.simulation)fr.x=fr.y=0;else{var o,i,a,s,l=n.interactable,u=n.element,c=l.options[n.prepared.name].autoScroll,f=dr(c.container,l,u);if(lr.window(f))s=r.clientXf.innerWidth-fr.margin,a=r.clientY>f.innerHeight-fr.margin;else{var d=sr.getElementClientRect(f);s=r.clientXd.right-fr.margin,a=r.clientY>d.bottom-fr.margin}fr.x=i?1:s?-1:0,fr.y=a?1:o?-1:0,fr.isScrolling||(fr.margin=c.margin,fr.speed=c.speed,fr.start(n,t))}}};function dr(e,t,n){return(lr.string(e)?(0,ae.getStringOptionResult)(e,t,n):e)||(0,a.getWindow)(n)}function pr(e){return lr.window(e)&&(e=window.document.body),{x:e.scrollLeft,y:e.scrollTop}}var vr={id:"auto-scroll",install:function(t){var e=t.interactions,n=t.defaults,r=t.actions;(t.autoScroll=fr).now=function(){return t.now()},e.signals.on("new",function(e){e.interaction.autoScroll=null}),e.signals.on("stop",fr.stop),e.signals.on("action-move",function(e){return fr.onInteractionMove(e,t)}),r.eventTypes.push("autoscroll"),n.perAction.autoScroll=fr.defaults}};ir.default=vr;var gr={};Object.defineProperty(gr,"__esModule",{value:!0}),gr.default=void 0;var hr=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(v);function yr(e,t,n,r){var o=this.defaultActionChecker(e,t,n,r);return this.options.actionChecker?this.options.actionChecker(e,t,o,this,r,n):o}function mr(e){return hr.bool(e)?(this.options.styleCursor=e,this):null===e?(delete this.options.styleCursor,this):this.options.styleCursor}function br(e){return hr.func(e)?(this.options.actionChecker=e,this):null===e?(delete this.options.actionChecker,this):this.options.actionChecker}var wr={id:"auto-start/interactableMethods",install:function(e){var t=e.Interactable,o=e.actions;t.prototype.getAction=yr,t.prototype.ignoreFrom=(0,Yt.warnOnce)(function(e){return this._backCompatOption("ignoreFrom",e)},"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),t.prototype.allowFrom=(0,Yt.warnOnce)(function(e){return this._backCompatOption("allowFrom",e)},"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),t.prototype.actionChecker=br,t.prototype.styleCursor=mr,t.prototype.defaultActionChecker=function(e,t,n,r){return function(e,t,n,r,o,i){for(var a=e.getRect(o),s=n.buttons||{0:1,1:4,3:8,4:16}[n.button],l=null,u=0;us.minSpeed&&c>s.endSpeed,v={interaction:n,pageCoords:Xo.extend({},n.coords.cur.page),states:d&&n.modifiers.states.map(function(e){return Xo.extend({},e)}),preEnd:!0,prevCoords:void 0,requireEndOnly:null};return d&&!p&&(v.prevCoords=n.prevEvent.page,v.requireEndOnly=!1,(a=Ro.default.setAll(v)).changed&&(f=!0)),p||f?(Xo.pointer.copyCoords(i.upCoords,n.coords.cur),n.pointers[0].pointer=i.startEvent=new t.InteractEvent(n,r,n.prepared.name,me.EventPhase.InertiaStart,n.element),i.t0=l,i.active=!0,i.allowResume=s.allowResume,n.simulation=i,n.interactable.fire(i.startEvent),p?(i.vx0=n.coords.velocity.client.x,i.vy0=n.coords.velocity.client.y,i.v0=c,Fo(n,i),Xo.extend(v.pageCoords,n.coords.cur.page),v.pageCoords.x+=i.xe,v.pageCoords.y+=i.ye,v.prevCoords=void 0,v.requireEndOnly=!0,a=Ro.default.setAll(v),i.modifiedXe+=a.delta.x,i.modifiedYe+=a.delta.y,i.timeout=Yo.default.request(function(){return Lo(n)})):(i.smoothEnd=!0,i.xe=a.delta.x,i.ye=a.delta.y,i.sx=i.sy=0,i.timeout=Yo.default.request(function(){return Wo(n)})),!1):null}(e,t)}),e.signals.on("down",function(e){return function(e,t){var n=e.interaction,r=e.event,o=e.pointer,i=e.eventTarget,a=n.inertia;if(a.active)for(var s=i;Xo.is.element(s);){if(s===n.element){Yo.default.cancel(a.timeout),a.active=!1,n.simulation=null,n.updatePointer(o,r,i,!0),Xo.pointer.setCoords(n.coords.cur,n.pointers.map(function(e){return e.pointer}),n._now());var l={interaction:n};t.interactions.signals.fire("action-resume",l);var u=new t.InteractEvent(n,r,n.prepared.name,me.EventPhase.Resume,n.element);n._fireEvent(u),Xo.pointer.copyCoords(n.coords.prev,n.coords.cur);break}s=Xo.dom.parentNode(s)}}(e,t)}),e.signals.on("stop",function(e){return function(e){var t=e.interaction,n=t.inertia;n.active&&(Yo.default.cancel(n.timeout),n.active=!1,t.simulation=null)}(e)}),n.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300},t.usePlugin(Ro.default)},calcInertia:Fo,inertiaTick:Lo,smothEndTick:Wo,updateInertiaCoords:qo};Co.default=Go;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.default=Uo.scope=Uo.interact=void 0;var Bo=f({}),Ho=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt),$o=Qo(q),Ko=Qo(Ue);function Qo(e){return e&&e.__esModule?e:{default:e}}var Jo={},Zo=new Bo.Scope;Uo.scope=Zo;var ei=function(e,t){var n=Zo.interactables.get(e,t);return n||((n=Zo.interactables.new(e,t)).events.global=Jo),n};(Uo.interact=ei).use=function(e,t){return Zo.usePlugin(e,t),ei},ei.isSet=function(e,t){return-1!==Zo.interactables.indexOfElement(e,t&&t.context)},ei.on=function(e,t,n){Ho.is.string(e)&&-1!==e.search(" ")&&(e=e.trim().split(/ +/));if(Ho.is.array(e)){for(var r=0;rthis.pointerMoveTolerance);var a={pointer:e,pointerIndex:this.getPointerIndex(e),event:t,eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||(s.pointer.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),s.pointer.setCoordVelocity(this.coords.velocity,this.coords.delta)),this._signals.fire("move",a),i||(this.interacting()&&this.move(a),this.pointerWasMoved&&s.pointer.copyCoords(this.coords.prev,this.coords.cur))}},{key:"move",value:function(e){(e=s.extend({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this,noBefore:!1},e||{})).phase=i.EventPhase.Move,this._doPhase(e)}},{key:"pointerUp",value:function(e,t,n,r){var o=this.getPointerIndex(e);-1===o&&(o=this.updatePointer(e,t,n,!1)),this._signals.fire(/cancel$/i.test(t.type)?"cancel":"up",{pointer:e,pointerIndex:o,event:t,eventTarget:n,curEventTarget:r,interaction:this}),this.simulation||this.end(t),this.pointerIsDown=!1,this.removePointer(e,t)}},{key:"documentBlur",value:function(e){this.end(e),this._signals.fire("blur",{event:e,interaction:this})}},{key:"end",value:function(e){var t;this._ending=!0,e=e||this._latestPointer.event,this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:i.EventPhase.End})),!(this._ending=!1)===t&&this.stop()}},{key:"currentAction",value:function(){return this._interacting?this.prepared.name:null}},{key:"interacting",value:function(){return this._interacting}},{key:"stop",value:function(){this._signals.fire("stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this.prepared.name=this.prevEvent=null}},{key:"getPointerIndex",value:function(e){var t=s.pointer.getPointerId(e);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:s.arr.findIndex(this.pointers,function(e){return e.id===t})}},{key:"getPointerInfo",value:function(e){return this.pointers[this.getPointerIndex(e)]}},{key:"updatePointer",value:function(e,t,n,r){var o=s.pointer.getPointerId(e),i=this.getPointerIndex(e),a=this.pointers[i];return r=!1!==r&&(r||/(down|start)$/i.test(t.type)),a?a.pointer=e:(a=new l.default(o,e,t,null,null),i=this.pointers.length,this.pointers.push(a)),r&&(this.pointerIsDown=!0,this.interacting()||(s.pointer.setCoords(this.coords.start,this.pointers.map(function(e){return e.pointer}),this._now()),s.pointer.copyCoords(this.coords.cur,this.coords.start),s.pointer.copyCoords(this.coords.prev,this.coords.start),s.pointer.pointerExtend(this.downPointer,e),this.downEvent=t,a.downTime=this.coords.cur.timeStamp,a.downTarget=n,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,n),this._signals.fire("update-pointer",{pointer:e,event:t,eventTarget:n,down:r,pointerInfo:a,pointerIndex:i,interaction:this}),i}},{key:"removePointer",value:function(e,t){var n=this.getPointerIndex(e);if(-1!==n){var r=this.pointers[n];this._signals.fire("remove-pointer",{pointer:e,event:t,pointerIndex:n,pointerInfo:r,interaction:this}),this.pointers.splice(n,1)}}},{key:"_updateLatestPointer",value:function(e,t,n){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=n}},{key:"_createPreparedEvent",value:function(e,t,n,r){var o=this.prepared.name;return new i.default(this,e,o,t,this.element,null,n,r)}},{key:"_fireEvent",value:function(e){this.interactable.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}},{key:"_doPhase",value:function(e){var t=e.event,n=e.phase,r=e.preEnd,o=e.type;if(!e.noBefore&&!1===this._signals.fire("before-action-".concat(n),e))return!1;var i=e.iEvent=this._createPreparedEvent(t,n,r,o),a=this.rect;if(a){var s=this.edges||this.prepared.edges||{left:!0,right:!0,top:!0,bottom:!0};s.top&&(a.top+=i.delta.y),s.bottom&&(a.bottom+=i.delta.y),s.left&&(a.left+=i.delta.x),s.right&&(a.right+=i.delta.x)}return this._signals.fire("action-".concat(n),e),this._fireEvent(i),this._signals.fire("after-action-".concat(n),e),!0}},{key:"_now",value:function(){return Date.now()}},{key:"pointerMoveTolerance",get:function(){return 1}}]),r}(),c=t.Interaction=u;t.default=c}),s={};function t(e,t){for(var n=0;na.left&&c.xa.top&&c.y=a.left&&v<=a.right&&g>=a.top&&g<=a.bottom}if(p&&_n.is.number(l)){var h=Math.max(0,Math.min(a.right,p.right)-Math.max(a.left,p.left))*Math.max(0,Math.min(a.bottom,p.bottom)-Math.max(a.top,p.top)),y=h/(p.width*p.height);s=l<=y}return e.options.drop.checker&&(s=e.options.drop.checker(t,n,s,e,i,r,o)),s}(this,e,t,n,r,o,i)},t.dynamicDrop=function(e){return _n.is.bool(e)?(o.dynamicDrop=e,t):o.dynamicDrop},_n.arr.merge(e.eventTypes,["dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop"]),e.methodDict.drop="dropzone",o.dynamicDrop=!1,i.actions.drop=An.defaults},getActiveDrops:Tn,getDrop:Dn,getDropEvents:kn,fireDropEvents:zn,defaults:{enabled:!1,accept:null,overlap:"pointer"}},Cn=An;Pn.default=Cn;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.default=void 0;var Xn,Yn=(Xn=me)&&Xn.__esModule?Xn:{default:Xn},Nn=f({}),Fn=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt);Nn.ActionName.Gesture="gesture";var Ln={id:"actions/gesture",install:function(e){var t=e.actions,n=e.Interactable,r=e.interactions,o=e.defaults;n.prototype.gesturable=function(e){return Fn.is.object(e)?(this.options.gesture.enabled=!1!==e.enabled,this.setPerAction("gesture",e),this.setOnEvents("gesture",e),this):Fn.is.bool(e)?(this.options.gesture.enabled=e,this):this.options.gesture},r.signals.on("action-start",Wn),r.signals.on("action-move",Wn),r.signals.on("action-end",Wn),r.signals.on("new",function(e){e.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}}),t[Nn.ActionName.Gesture]=Ln,t.names.push(Nn.ActionName.Gesture),Fn.arr.merge(t.eventTypes,["gesturestart","gesturemove","gestureend"]),t.methodDict.gesture="gesturable",o.actions.gesture=Ln.defaults},defaults:{},checker:function(e,t,n,r,o){return 2<=o.pointers.length?{name:"gesture"}:null},getCursor:function(){return""}};function Wn(e){var t=e.interaction,n=e.iEvent,r=e.event,o=e.phase;if("gesture"===t.prepared.name){var i=t.pointers.map(function(e){return e.pointer}),a="start"===o,s="end"===o,l=t.interactable.options.deltaSource;if(n.touches=[i[0],i[1]],a)n.distance=Fn.pointer.touchDistance(i,l),n.box=Fn.pointer.touchBBox(i),n.scale=1,n.ds=0,n.angle=Fn.pointer.touchAngle(i,l),n.da=0,t.gesture.startDistance=n.distance,t.gesture.startAngle=n.angle;else if(s||r instanceof Yn.default){var u=t.prevEvent;n.distance=u.distance,n.box=u.box,n.scale=u.scale,n.ds=0,n.angle=u.angle,n.da=0}else n.distance=Fn.pointer.touchDistance(i,l),n.box=Fn.pointer.touchBBox(i),n.scale=n.distance/t.gesture.startDistance,n.angle=Fn.pointer.touchAngle(i,l),n.ds=n.scale-t.gesture.scale,n.da=n.angle-t.gesture.angle;t.gesture.distance=n.distance,t.gesture.angle=n.angle,Fn.is.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(t.gesture.scale=n.scale)}}var qn=Ln;Rn.default=qn;var Vn={};Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.default=void 0;var Gn=f({}),Un=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt);var Bn={id:"actions/resize",install:function(t){var e=t.actions,n=t.browser,r=t.Interactable,o=t.interactions,i=t.defaults;o.signals.on("new",function(e){e.resizeAxes="xy"}),o.signals.on("action-start",$n),o.signals.on("action-move",Kn),o.signals.on("action-start",Qn),o.signals.on("action-move",Qn),Bn.cursors=function(e){return e.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}(n),Bn.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,r.prototype.resizable=function(e){return function(e,t,n){return Un.is.object(t)?(e.options.resize.enabled=!1!==t.enabled,e.setPerAction("resize",t),e.setOnEvents("resize",t),Un.is.string(t.axis)&&/^x$|^y$|^xy$/.test(t.axis)?e.options.resize.axis=t.axis:null===t.axis&&(e.options.resize.axis=n.defaults.actions.resize.axis),Un.is.bool(t.preserveAspectRatio)?e.options.resize.preserveAspectRatio=t.preserveAspectRatio:Un.is.bool(t.square)&&(e.options.resize.square=t.square),e):Un.is.bool(t)?(e.options.resize.enabled=t,e):e.options.resize}(this,e,t)},e[Gn.ActionName.Resize]=Bn,e.names.push(Gn.ActionName.Resize),Un.arr.merge(e.eventTypes,["resizestart","resizemove","resizeinertiastart","resizeresume","resizeend"]),e.methodDict.resize="resizable",i.actions.resize=Bn.defaults},defaults:{square:!(Gn.ActionName.Resize="resize"),preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},checker:function(e,t,n,r,o,i){if(!i)return null;var a=Un.extend({},o.coords.cur.page),s=n.options;if(s.resize.enabled){var l=s.resize,u={left:!1,right:!1,top:!1,bottom:!1};if(Un.is.object(l.edges)){for(var c in u)u[c]=Hn(c,l.edges[c],a,o._latestPointer.eventTarget,r,i,l.margin||this.defaultMargin);if(u.left=u.left&&!u.right,u.top=u.top&&!u.bottom,u.left||u.right||u.top||u.bottom)return{name:"resize",edges:u}}else{var f="y"!==s.resize.axis&&a.x>i.right-this.defaultMargin,d="x"!==s.resize.axis&&a.y>i.bottom-this.defaultMargin;if(f||d)return{name:"resize",axes:(f?"x":"")+(d?"y":"")}}}return null},cursors:null,getCursor:function(e){var t=Bn.cursors;if(e.axis)return t[e.name+e.axis];if(e.edges){for(var n="",r=["top","bottom","left","right"],o=0;o<4;o++)e.edges[r[o]]&&(n+=r[o]);return t[n]}return null},defaultMargin:null};function Hn(e,t,n,r,o,i,a){if(!t)return!1;if(!0===t){var s=Un.is.number(i.width)?i.width:i.right-i.left,l=Un.is.number(i.height)?i.height:i.bottom-i.top;if(a=Math.min(a,("left"===e||"right"===e?s:l)/2),s<0&&("left"===e?e="right":"right"===e&&(e="left")),l<0&&("top"===e?e="bottom":"bottom"===e&&(e="top")),"left"===e)return n.x<(0<=s?i.left:i.right)+a;if("top"===e)return n.y<(0<=l?i.top:i.bottom)+a;if("right"===e)return n.x>(0<=s?i.right:i.left)-a;if("bottom"===e)return n.y>(0<=l?i.bottom:i.top)-a}return!!Un.is.element(r)&&(Un.is.element(t)?t===r:Un.dom.matchesUpTo(r,t,o))}function $n(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r=n.interactable.getRect(n.element),o=n.interactable.options.resize;if(o.square||o.preserveAspectRatio){var i=Un.extend({},n.prepared.edges);i.top=i.top||i.left&&!i.bottom,i.left=i.left||i.top&&!i.right,i.bottom=i.bottom||i.right&&!i.top,i.right=i.right||i.bottom&&!i.left,n.prepared._linkedEdges=i}else n.prepared._linkedEdges=null;o.preserveAspectRatio&&(n.resizeStartAspectRatio=r.width/r.height),n.resizeRects={start:r,current:Un.extend({},r),inverted:Un.extend({},r),previous:Un.extend({},r),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},t.rect=n.resizeRects.inverted,t.deltaRect=n.resizeRects.delta}}function Kn(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r,o=n.interactable.options.resize,i=o.invert,a="reposition"===i||"negate"===i,s=n.prepared.edges,l=n.resizeRects.start,u=n.resizeRects.current,c=n.resizeRects.inverted,f=n.resizeRects.delta,d=Un.extend(n.resizeRects.previous,c),p=s,v=Un.extend({},t.delta);if(o.preserveAspectRatio||o.square){var g=o.preserveAspectRatio?n.resizeStartAspectRatio:1;s=n.prepared._linkedEdges,p.left&&p.bottom||p.right&&p.top?v.y=-v.x/g:p.left||p.right?v.y=v.x/g:(p.top||p.bottom)&&(v.x=v.y*g)}if(s.top&&(u.top+=v.y),s.bottom&&(u.bottom+=v.y),s.left&&(u.left+=v.x),s.right&&(u.right+=v.x),a){if(Un.extend(c,u),"reposition"===i)c.top>c.bottom&&(r=c.top,c.top=c.bottom,c.bottom=r),c.left>c.right&&(r=c.left,c.left=c.right,c.right=r)}else c.top=Math.min(u.top,l.bottom),c.bottom=Math.max(u.bottom,l.top),c.left=Math.min(u.left,l.right),c.right=Math.max(u.right,l.left);for(var h in c.width=c.right-c.left,c.height=c.bottom-c.top,c)f[h]=c[h]-d[h];t.edges=n.prepared.edges,t.rect=c,t.deltaRect=f}}function Qn(e){var t=e.interaction,n=e.iEvent;"resize"===e.action&&t.resizeAxes&&(t.interactable.options.resize.square?("y"===t.resizeAxes?n.delta.x=n.delta.y:n.delta.y=n.delta.x,n.axes="xy"):(n.axes=t.resizeAxes,"x"===t.resizeAxes?n.delta.y=0:"y"===t.resizeAxes&&(n.delta.x=0)))}var Jn=Bn;Vn.default=Jn;var Zn={};Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.install=function(e){nr.default.install(e),rr.default.install(e),er.default.install(e),tr.default.install(e)},Object.defineProperty(Zn,"drag",{enumerable:!0,get:function(){return er.default}}),Object.defineProperty(Zn,"drop",{enumerable:!0,get:function(){return tr.default}}),Object.defineProperty(Zn,"gesture",{enumerable:!0,get:function(){return nr.default}}),Object.defineProperty(Zn,"resize",{enumerable:!0,get:function(){return rr.default}}),Zn.id=void 0;var er=or(un),tr=or(Pn),nr=or(Rn),rr=or(Vn);function or(e){return e&&e.__esModule?e:{default:e}}Zn.id="actions";var ir={};Object.defineProperty(ir,"__esModule",{value:!0}),ir.getContainer=dr,ir.getScroll=pr,ir.getScrollSize=function(e){lr.window(e)&&(e=window.document.body);return{x:e.scrollWidth,y:e.scrollHeight}},ir.getScrollSizeDelta=function(e,t){var n=e.interaction,r=e.element,o=n&&n.interactable.options[n.prepared.name].autoScroll;if(!o||!o.enabled)return t(),{x:0,y:0};var i=dr(o.container,n.interactable,r),a=pr(i);t();var s=pr(i);return{x:s.x-a.x,y:s.y-a.y}},ir.default=void 0;var ar,sr=cr(K),lr=cr(v),ur=(ar=It)&&ar.__esModule?ar:{default:ar};function cr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var fr={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:null,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(e,t){fr.isScrolling=!0,ur.default.cancel(fr.i),(e.autoScroll=fr).interaction=e,fr.prevTime=t.now(),fr.i=ur.default.request(fr.scroll)},stop:function(){fr.isScrolling=!1,fr.interaction&&(fr.interaction.autoScroll=null),ur.default.cancel(fr.i)},scroll:function(){var e=fr.interaction,t=e.interactable,n=e.element,r=t.options[fr.interaction.prepared.name].autoScroll,o=dr(r.container,t,n),i=this.scope.now(),a=(i-fr.prevTime)/1e3,s=r.speed*a;if(1<=s){var l={x:fr.x*s,y:fr.y*s};if(l.x||l.y){var u=pr(o);lr.window(o)?o.scrollBy(l.x,l.y):o&&(o.scrollLeft+=l.x,o.scrollTop+=l.y);var c=pr(o),f={x:c.x-u.x,y:c.y-u.y};(f.x||f.y)&&t.fire({type:"autoscroll",target:n,interactable:t,delta:f,interaction:e,container:o})}fr.prevTime=i}fr.isScrolling&&(ur.default.cancel(fr.i),fr.i=ur.default.request(fr.scroll))},check:function(e,t){var n=e.options;return n[t].autoScroll&&n[t].autoScroll.enabled},onInteractionMove:function(e,t){var n=e.interaction,r=e.pointer;if(n.interacting()&&fr.check(n.interactable,n.prepared.name))if(n.simulation)fr.x=fr.y=0;else{var o,i,a,s,l=n.interactable,u=n.element,c=l.options[n.prepared.name].autoScroll,f=dr(c.container,l,u);if(lr.window(f))s=r.clientXf.innerWidth-fr.margin,a=r.clientY>f.innerHeight-fr.margin;else{var d=sr.getElementClientRect(f);s=r.clientXd.right-fr.margin,a=r.clientY>d.bottom-fr.margin}fr.x=i?1:s?-1:0,fr.y=a?1:o?-1:0,fr.isScrolling||(fr.margin=c.margin,fr.speed=c.speed,fr.start(n,t))}}};function dr(e,t,n){return(lr.string(e)?(0,ae.getStringOptionResult)(e,t,n):e)||(0,a.getWindow)(n)}function pr(e){return lr.window(e)&&(e=window.document.body),{x:e.scrollLeft,y:e.scrollTop}}var vr={id:"auto-scroll",install:function(t){var e=t.interactions,n=t.defaults,r=t.actions;(t.autoScroll=fr).now=function(){return t.now()},e.signals.on("new",function(e){e.interaction.autoScroll=null}),e.signals.on("stop",fr.stop),e.signals.on("action-move",function(e){return fr.onInteractionMove(e,t)}),r.eventTypes.push("autoscroll"),n.perAction.autoScroll=fr.defaults}};ir.default=vr;var gr={};Object.defineProperty(gr,"__esModule",{value:!0}),gr.default=void 0;var hr=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(v);function yr(e,t,n,r){var o=this.defaultActionChecker(e,t,n,r);return this.options.actionChecker?this.options.actionChecker(e,t,o,this,r,n):o}function mr(e){return hr.bool(e)?(this.options.styleCursor=e,this):null===e?(delete this.options.styleCursor,this):this.options.styleCursor}function br(e){return hr.func(e)?(this.options.actionChecker=e,this):null===e?(delete this.options.actionChecker,this):this.options.actionChecker}var wr={id:"auto-start/interactableMethods",install:function(e){var t=e.Interactable,o=e.actions;t.prototype.getAction=yr,t.prototype.ignoreFrom=(0,Yt.warnOnce)(function(e){return this._backCompatOption("ignoreFrom",e)},"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),t.prototype.allowFrom=(0,Yt.warnOnce)(function(e){return this._backCompatOption("allowFrom",e)},"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),t.prototype.actionChecker=br,t.prototype.styleCursor=mr,t.prototype.defaultActionChecker=function(e,t,n,r){return function(e,t,n,r,o,i){for(var a=e.getRect(o),s=n.buttons||{0:1,1:4,3:8,4:16}[n.button],l=null,u=0;us.minSpeed&&c>s.endSpeed,v={interaction:n,pageCoords:Xo.extend({},n.coords.cur.page),states:d&&n.modifiers.states.map(function(e){return Xo.extend({},e)}),preEnd:!0,prevCoords:void 0,requireEndOnly:null};return d&&!p&&(v.prevCoords=n.prevEvent.page,v.requireEndOnly=!1,(a=Ro.default.setAll(v)).changed&&(f=!0)),p||f?(Xo.pointer.copyCoords(i.upCoords,n.coords.cur),n.pointers[0].pointer=i.startEvent=new t.InteractEvent(n,r,n.prepared.name,me.EventPhase.InertiaStart,n.element),i.t0=l,i.active=!0,i.allowResume=s.allowResume,n.simulation=i,n.interactable.fire(i.startEvent),p?(i.vx0=n.coords.velocity.client.x,i.vy0=n.coords.velocity.client.y,i.v0=c,Fo(n,i),Xo.extend(v.pageCoords,n.coords.cur.page),v.pageCoords.x+=i.xe,v.pageCoords.y+=i.ye,v.prevCoords=void 0,v.requireEndOnly=!0,a=Ro.default.setAll(v),i.modifiedXe+=a.delta.x,i.modifiedYe+=a.delta.y,i.timeout=Yo.default.request(function(){return Lo(n)})):(i.smoothEnd=!0,i.xe=a.delta.x,i.ye=a.delta.y,i.sx=i.sy=0,i.timeout=Yo.default.request(function(){return Wo(n)})),!1):null}(e,t)}),e.signals.on("down",function(e){return function(e,t){var n=e.interaction,r=e.event,o=e.pointer,i=e.eventTarget,a=n.inertia;if(a.active)for(var s=i;Xo.is.element(s);){if(s===n.element){Yo.default.cancel(a.timeout),a.active=!1,n.simulation=null,n.updatePointer(o,r,i,!0),Xo.pointer.setCoords(n.coords.cur,n.pointers.map(function(e){return e.pointer}),n._now());var l={interaction:n};t.interactions.signals.fire("action-resume",l);var u=new t.InteractEvent(n,r,n.prepared.name,me.EventPhase.Resume,n.element);n._fireEvent(u),Xo.pointer.copyCoords(n.coords.prev,n.coords.cur);break}s=Xo.dom.parentNode(s)}}(e,t)}),e.signals.on("stop",function(e){return function(e){var t=e.interaction,n=t.inertia;n.active&&(Yo.default.cancel(n.timeout),n.active=!1,t.simulation=null)}(e)}),n.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300},t.usePlugin(Ro.default)},calcInertia:Fo,inertiaTick:Lo,smothEndTick:Wo,updateInertiaCoords:qo};Co.default=Go;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.default=Uo.scope=Uo.interact=void 0;var Bo=f({}),Ho=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(Yt),$o=Qo(q),Ko=Qo(Ue);function Qo(e){return e&&e.__esModule?e:{default:e}}var Jo={},Zo=new Bo.Scope;Uo.scope=Zo;var ei=function(e,t){var n=Zo.interactables.get(e,t);return n||((n=Zo.interactables.new(e,t)).events.global=Jo),n};(Uo.interact=ei).use=function(e,t){return Zo.usePlugin(e,t),ei},ei.isSet=function(e,t){return-1!==Zo.interactables.indexOfElement(e,t&&t.context)},ei.on=function(e,t,n){Ho.is.string(e)&&-1!==e.search(" ")&&(e=e.trim().split(/ +/));if(Ho.is.array(e)){for(var r=0;r\n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\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;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n // FIXME Signals\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\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: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope;\n\n (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\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) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n 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 events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('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 events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('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 class InteractableSet {\n signals = new utils.Signals()\n\n // all set interactables\n list: InteractableBase[] = []\n\n constructor (protected scope: Scope) {}\n\n new (target: Interact.Target, options?: any): InteractableBase {\n options = utils.extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n indexOfElement (target: Interact.Target, context: Document | Element) {\n context = context || this.scope.document\n\n const list = this.list\n\n for (let i = 0; i < list.length; i++) {\n const interactable = list[i]\n\n if (interactable.target === target && interactable._context === context) {\n return i\n }\n }\n\n return -1\n }\n\n get (element: Interact.Target, options, dontCheckInContext?: boolean) {\n const ret = this.list[this.indexOfElement(element, options && options.context)]\n\n return ret && (utils.is.string(element) || dontCheckInContext || ret.inContext(element)) ? ret : null\n }\n\n forEachMatch (element: Document | Element, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((utils.is.string(interactable.target)\n // target is a selector and the element matches\n ? (utils.is.element(element) && utils.dom.matchesSelector(element, interactable.target))\n // target is the element\n : element === interactable.target) &&\n // the element is in context\n (interactable.inContext(element))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n interactions.install(scope)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport events from '@interactjs/utils/events'\nimport finder, { SearchDetails } from '@interactjs/utils/interactionFinder'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n eventMap: any\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\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 const eventMap = {} as { [key: string]: Interact.Listener }\n\n if (domObjects.PointerEvent) {\n eventMap[pEventTypes.down ] = listeners.pointerDown\n eventMap[pEventTypes.move ] = listeners.pointerMove\n eventMap[pEventTypes.up ] = listeners.pointerUp\n eventMap[pEventTypes.cancel] = listeners.pointerUp\n }\n else {\n eventMap.mousedown = listeners.pointerDown\n eventMap.mousemove = listeners.pointerMove\n eventMap.mouseup = listeners.pointerUp\n\n eventMap.touchstart = listeners.pointerDown\n eventMap.touchmove = listeners.pointerMove\n eventMap.touchend = listeners.pointerUp\n eventMap.touchcancel = listeners.pointerUp\n }\n\n eventMap.blur = (event) => {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n }\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction 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 () { return scope.now() }\n }\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n return new scope.Interaction(options as Required)\n },\n listeners,\n eventMap,\n pointerMoveTolerance: 1,\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (browser.supportsTouch && /touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\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 }\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 = 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,\n pointerId: pointerUtils.getPointerId(event),\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.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || newInteraction({ pointerType }, scope)\n}\n\nexport function newInteraction (options, scope) {\n const interaction = scope.interactions.new(options)\n\n scope.interactions.list.push(interaction)\n return interaction\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { eventMap } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\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 eventType in eventMap) {\n eventMethod(doc, eventType, eventMap[eventType], eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n newInteraction,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\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: Interact.Rect & Interact.Rect3\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\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: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.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\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\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 {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.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 this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n })\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n if (!this.simulation) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (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\n let dy\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 = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.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?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n noBefore: false,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\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?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.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._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.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 : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer, event) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n\n if (!signalArg.noBefore) {\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\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 function find (array, func) {\n return array[findIndex(array, func)]\n}\n\nexport function some (array, func) {\n return findIndex(array, func) !== -1\n}\n","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.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 &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\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\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.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(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\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 }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\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","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass 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: any) {\n let listeners\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: Interact.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: Interact.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) { continue }\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\nexport default Eventable\n","// tslint:disable no-empty-interface\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}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.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\nexport default defaults\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{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\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 * as is from './is'\nimport win from './window'\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 string,\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) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('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) &&\n /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 = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /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'\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 = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent, child) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\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, selector) {\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\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (parent.parentNode && parent.parentNode !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = parent.parentNode\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = parent.parentNode\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element, selector, limit) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\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) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return 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\nexport function getElementRect (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 (element) {\n const path = []\n\n while (element) {\n path.push(element)\n element = parentNode(element)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\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\n}\n\nexport function tlbrToXywh (rect) {\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 - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\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","export default (x, y) => Math.sqrt(x * x + y * y)\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport defaults from './defaultOptions'\nimport Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> {\n type: string\n target: Element\n relatedTarget: Element | null\n currentTarget: Element\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 // added by interact.js\n interactable: Interactable\n interaction: Interaction\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n immediatePropagationStopped = false\n propagationStopped = false\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\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.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.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interaction = interaction\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : 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 }\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 get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this.interaction\n\n if (interaction.prevEvent.speed < 600 ||\n 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\nexport default InteractEvent\n","import * as arr from './arr'\nimport * as is from './is'\n\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 }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nexport function pointerExtend (dest, source) {\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}\n\nexport default pointerExtend\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\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\n setCoordVelocity (targetObj, delta) {\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\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\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 }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.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\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n getPointerType (pointer) {\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 ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: {\n page: Interact.Point,\n client: Interact.Point,\n timeStamp?: number,\n pointerId?: any,\n target?: any,\n }) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] },\n typeCount: number,\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[],\n contexts: EventTarget[],\n listeners: Array>,\n },\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (!contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\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(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: EventTarget, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\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 delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (selector, context, type, listener?, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\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 interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(event))\n let element = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\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\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public 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\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n","import * 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 events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected 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: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\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\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].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].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = 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 {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : 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 (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][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) {\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 (newValue) {\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) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, interactableElement: Element, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, interactableElement, eventTarget) &&\n this.testAllow(options.allowFrom, interactableElement, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, interactableElement)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, interactableElement)\n }\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) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.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') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(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: Interact.EventTypes, listener?: Interact.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[] | Interact.EventTypes, listener?: Interact.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: Interact.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 methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\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 * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: EventTarget,\n ) {}\n}\n\nexport default PointerInfo\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _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\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","import * as utils from './index'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\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\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = utils.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)) { continue }\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.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, pointerId) {\n return utils.arr.some(interaction.pointers, ({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\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 }\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 (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): 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: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent {\n type: string\n target: Element\n currentTarget: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n interaction: Interaction\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: Interaction['dropState'], dragEvent, type) {\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : 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.interaction = dragEvent.interaction\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 ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\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(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\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 }\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\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.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?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\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: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\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 }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\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 *\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 {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\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 (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\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 (utils.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 utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\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) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\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 ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\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(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, 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\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\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 }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\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 = 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: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.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 (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.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 (utils.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: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.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 && utils.is.number(dropOverlap)) {\n const overlapArea = (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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\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: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = 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 (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.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 (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, 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 = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\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 }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.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 (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.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 resizeRects: {\n start: Interact.Rect\n current: Interact.Rect\n inverted: Interact.Rect\n previous: Interact.Rect\n delta: Interact.Rect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.Rect\n rect?: Interact.Rect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\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: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n utils.arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\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 Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = utils.extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (utils.is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\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 return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (utils.is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (utils.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (utils.is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (utils.is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (utils.is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = utils.is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = utils.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, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!utils.is.element(element)) { return false }\n\n return utils.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 : utils.dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\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 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\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.interactable.getRect(interaction.element)\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = utils.extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : utils.extend({}, startRect),\n inverted : utils.extend({}, startRect),\n previous : utils.extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n };\n\n (iEvent as ResizeEvent).rect = interaction.resizeRects.inverted;\n (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = utils.extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = utils.extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n utils.extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n gesture.install(scope)\n resize.install(scope)\n drag.install(scope)\n drop.install(scope)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\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/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg, scope))\n\n actions.eventTypes.push('autoscroll')\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 Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction, scope: Interact.Scope) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = scope.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 options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = this.scope.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 }\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, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }, scope: Interact.Scope) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].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 }\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, scope)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\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(\n scrollOptions.container,\n interaction.interactable,\n element\n )\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\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') });\n * // or\n * interact(element).ignoreFrom('input, textarea, a');\n * ```\n * @deprecated\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 * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\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 * @deprecated\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 * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\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 * Gets 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 Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\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 * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\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?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n InteractableMethods.install(scope)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.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) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\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) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n 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 (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\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)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\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, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.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\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\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 = 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.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\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.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\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: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('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.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n autoStart.install(scope)\n hold.install(scope)\n dragAxis.install(scope)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\nfunction preventDefault (interactable, newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n interactable.options.preventDefault = newValue\n return interactable\n }\n\n if (is.bool(newValue)) {\n interactable.options.preventDefault = newValue ? 'always' : 'never'\n return interactable\n }\n\n return interactable.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable, scope, 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 (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 (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event)\n }\n}\n\nexport function install (scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\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 = function (newValue) {\n return preventDefault(this, newValue)\n }\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.eventMap.dragstart = function preventNativeDrag (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n }\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport const 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\nexport const install = process.env.NODE_ENV === 'production'\n ? () => {}\n // eslint-disable-next-line no-restricted-syntax\n : function install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n logger = logger || console\n if (process.env.NODE_ENV !== 'production') {\n scope.logger = logger\n scope.interactions.signals.on('action-start', ({ interaction }) => {\n touchAction(interaction, scope.logger)\n boxSizing(interaction, scope.logger)\n noListeners(interaction, scope.logger)\n })\n }\n }\n\nexport const touchActionMessage = '[interact.js] Consider adding CSS \"touch-action: none\" to this element\\n'\nexport const boxSizingMessage = '[interact.js] Consider adding CSS \"box-sizing: border-box\" to this resizable element'\nexport const noListenersMessage = '[interact.js] There are no listeners set for this action'\n\nexport function touchAction ({ element }: Interact.Interaction, logger: Logger) {\n if (!parentHasStyle(element, 'touchAction', /pan-|pinch|none/)) {\n logger.warn(\n touchActionMessage,\n element,\n links.touchAction)\n }\n}\n\nexport function boxSizing (interaction: Interact.Interaction, logger: Logger) {\n const { element } = interaction\n\n if (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n ) {\n logger.warn(\n boxSizingMessage,\n element,\n links.boxSizing)\n }\n}\n\nexport function noListeners (interaction: Interact.Interaction, logger: Logger) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n if (!moveListeners.length) {\n logger.warn(\n noListenersMessage,\n actionName,\n interaction.interactable)\n }\n}\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\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)\n }\n\n return false\n}\n\nexport default {\n id: 'dev-tools',\n install,\n}\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: any[]\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets : {},\n states : null,\n result : null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n beforeMove(arg as any)\n start(arg as any, arg.interaction.coords.cur.page, scope.modifiers)\n })\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('before-action-end', beforeEnd)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('before-action-move', setCoords)\n\n interactions.signals.on('after-action-start', restoreCoords as any)\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('stop', stop)\n}\n\nfunction startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nfunction 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\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nfunction setAll (arg: Partial) {\n const {\n interaction,\n prevCoords = interaction.modifiers.result\n ? interaction.modifiers.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(interaction.modifiers.skip)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n result.changed = prevCoords.x !== result.coords.x || prevCoords.y !== result.coords.y\n\n return result\n}\n\nfunction prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction beforeMove ({ interaction, phase, preEnd, skipModifiers }): void | false {\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interactable.getRect(element),\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\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\nfunction restoreCoords ({ interaction: { coords, modifiers } }) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta } = modifiers.result\n\n for (const [coordsSet, delta] of [[coords.start, startDelta], [coords.cur, curDelta]]) {\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\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers.map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction makeModifier (module, name?: string) {\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) => {\n options = options || {}\n\n // add missing defaults to options\n options.enabled = options.enabled !== false\n\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n Object.defineProperty(\n modifier,\n 'name',\n { value: name })\n\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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 } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume';\n(EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\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 scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\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 */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\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 {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (element: Element, options?: any) {\n return scope.interactables.indexOfElement(element, options && options.context) !== -1\n}\n\n/**\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 */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\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 */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\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 */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\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 */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\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 else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\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}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default 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 Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\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, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\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 }\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 }\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, defaults) {\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 restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// });\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\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 }\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 }\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 restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start ({ interaction, interactable, element, rect, state, startOffset }) {\n const { options } = state\n const offsets = []\n const optionsOrigin = utils.rect.rectToXY(utils.rect.resolveRectLike(options.origin))\n const origin = optionsOrigin || utils.getOriginXY(interactable, element, interaction.prepared.name)\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x - origin.x,\n y: interaction.coords.start.page.y - origin.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\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 else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set ({ interaction, coords, state }) {\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n let i\n\n page.x -= origin.x\n page.y -= origin.y\n\n state.realX = page.x\n state.realY = page.y\n\n let len = options.targets ? options.targets.length : 0\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; index < options.targets.length; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: utils.is.number(target.x) ? (target.x + offset.x) : relativeX,\n y: utils.is.number(target.y) ? (target.y + offset.y) : relativeY,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.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 (!closest.target || (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 closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\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}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\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 }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\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 snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\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\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\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\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import Interaction from '@interactjs/core/Interaction'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent {\n interaction: Interaction\n timeStamp: number\n originalEvent: Interact.PointerEventType\n type: T\n pointerId: number\n pointerType: string\n target: Node | Window\n currentTarget: Node | Window\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n propagationStopped = false\n immediatePropagationStopped = false\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.interaction = interaction\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\ntype EventTargetList = Array<{\n eventable: Eventable,\n element: Interact.EventTarget,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.element)\n\n pointerEvent.subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.element\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent.addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({ targets, element, type, eventTarget }: any) => {\n scope.interactables.forEachMatch(element, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n is.element(element) &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n targets.push({\n element,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n pointerEvents.install(scope)\n holdRepeat.install(scope)\n interactableTargets.install(scope)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { newInteraction } from '@interactjs/core/interactions'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowResolve: () => void\n }\n}\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target);\n * const drag = { name: drag, axis: 'x' };\n * const resize = { name: resize, edges: { left: true, bottom: true };\n *\n * interactable.reflow(drag);\n * interactable.reflow(resize);\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = newInteraction({ pointerType: 'reflow' }, scope)\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window): typeof interact {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = init.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (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 = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_26;\n\n});\n"]} \ No newline at end of file +{"version":3,"sources":["../../scripts/minHeader.js","../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/extend.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/normalizeListeners.ts","../core/Eventable.ts","../core/defaultOptions.ts","../utils/domObjects.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/hypot.ts","../core/InteractEvent.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/pointerUtils.ts","../utils/events.ts","../core/Interactable.ts","../core/PointerInfo.ts","../utils/Signals.ts","../utils/raf.ts","../utils/index.ts","../utils/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../interact/interact.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":"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","file":"interact.min.js","sourceRoot":"","sourcesContent":["/* interact.js 1.4.0-rc.6 | https://raw.github.com/taye/interact.js/master/LICENSE */\n","/**\n * interact.js 1.4.0-rc.6\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\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;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n // FIXME Signals\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\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: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope;\n\n (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\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) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n 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 events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('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 events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('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 class InteractableSet {\n signals = new utils.Signals()\n\n // all set interactables\n list: InteractableBase[] = []\n\n constructor (protected scope: Scope) {}\n\n new (target: Interact.Target, options?: any): InteractableBase {\n options = utils.extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n indexOfElement (target: Interact.Target, context: Document | Element) {\n context = context || this.scope.document\n\n const list = this.list\n\n for (let i = 0; i < list.length; i++) {\n const interactable = list[i]\n\n if (interactable.target === target && interactable._context === context) {\n return i\n }\n }\n\n return -1\n }\n\n get (element: Interact.Target, options, dontCheckInContext?: boolean) {\n const ret = this.list[this.indexOfElement(element, options && options.context)]\n\n return ret && (utils.is.string(element) || dontCheckInContext || ret.inContext(element)) ? ret : null\n }\n\n forEachMatch (element: Document | Element, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((utils.is.string(interactable.target)\n // target is a selector and the element matches\n ? (utils.is.element(element) && utils.dom.matchesSelector(element, interactable.target))\n // target is the element\n : element === interactable.target) &&\n // the element is in context\n (interactable.inContext(element))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n interactions.install(scope)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport events from '@interactjs/utils/events'\nimport finder, { SearchDetails } from '@interactjs/utils/interactionFinder'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n eventMap: any\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\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 const eventMap = {} as { [key: string]: Interact.Listener }\n\n if (domObjects.PointerEvent) {\n eventMap[pEventTypes.down ] = listeners.pointerDown\n eventMap[pEventTypes.move ] = listeners.pointerMove\n eventMap[pEventTypes.up ] = listeners.pointerUp\n eventMap[pEventTypes.cancel] = listeners.pointerUp\n }\n else {\n eventMap.mousedown = listeners.pointerDown\n eventMap.mousemove = listeners.pointerMove\n eventMap.mouseup = listeners.pointerUp\n\n eventMap.touchstart = listeners.pointerDown\n eventMap.touchmove = listeners.pointerMove\n eventMap.touchend = listeners.pointerUp\n eventMap.touchcancel = listeners.pointerUp\n }\n\n eventMap.blur = (event) => {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n }\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction 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 () { return scope.now() }\n }\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n return new scope.Interaction(options as Required)\n },\n listeners,\n eventMap,\n pointerMoveTolerance: 1,\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (browser.supportsTouch && /touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\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 }\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 = 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,\n pointerId: pointerUtils.getPointerId(event),\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.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || newInteraction({ pointerType }, scope)\n}\n\nexport function newInteraction (options, scope) {\n const interaction = scope.interactions.new(options)\n\n scope.interactions.list.push(interaction)\n return interaction\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { eventMap } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\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 eventType in eventMap) {\n eventMethod(doc, eventType, eventMap[eventType], eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n newInteraction,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\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: Interact.Rect & Interact.Rect3\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\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: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.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\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\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 {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.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 this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n })\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget) {\n if (!this.simulation) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (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\n let dy\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 = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.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?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n noBefore: false,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\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?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.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._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.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 : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: EventTarget, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer, event) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n\n if (!signalArg.noBefore) {\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\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 function find (array, func) {\n return array[findIndex(array, func)]\n}\n\nexport function some (array, func) {\n return findIndex(array, func) !== -1\n}\n","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.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 &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\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\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.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(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\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 }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\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","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass 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: any) {\n let listeners\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: Interact.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: Interact.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) { continue }\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\nexport default Eventable\n","// tslint:disable no-empty-interface\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}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.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\nexport default defaults\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{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\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 * as is from './is'\nimport win from './window'\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 string,\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) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('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) &&\n /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 = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /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'\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 = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent, child) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\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, selector) {\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\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (parent.parentNode && parent.parentNode !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = parent.parentNode\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = parent.parentNode\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element, selector, limit) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\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) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return 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\nexport function getElementRect (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 (element) {\n const path = []\n\n while (element) {\n path.push(element)\n element = parentNode(element)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\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\n}\n\nexport function tlbrToXywh (rect) {\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 - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\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","export default (x, y) => Math.sqrt(x * x + y * y)\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport defaults from './defaultOptions'\nimport Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> {\n type: string\n target: Element\n relatedTarget: Element | null\n currentTarget: Element\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 // added by interact.js\n interactable: Interactable\n interaction: Interaction\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n immediatePropagationStopped = false\n propagationStopped = false\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\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.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.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interaction = interaction\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : 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 }\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 get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this.interaction\n\n if (interaction.prevEvent.speed < 600 ||\n 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\nexport default InteractEvent\n","import * as arr from './arr'\nimport * as is from './is'\n\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 }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nexport function pointerExtend (dest, source) {\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}\n\nexport default pointerExtend\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\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\n setCoordVelocity (targetObj, delta) {\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\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\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 }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.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\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.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\n getPointerType (pointer) {\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 ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: {\n page: Interact.Point,\n client: Interact.Point,\n timeStamp?: number,\n pointerId?: any,\n target?: any,\n }) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] },\n typeCount: number,\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[],\n contexts: EventTarget[],\n listeners: Array>,\n },\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (!contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\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(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: EventTarget, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\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 delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (selector, context, type, listener?, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\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 interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(event))\n let element = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\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\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public 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\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n","import * 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 events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected 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: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\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\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].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].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = 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 {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : 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 (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][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) {\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 (newValue) {\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) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, interactableElement: Element, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, interactableElement, eventTarget) &&\n this.testAllow(options.allowFrom, interactableElement, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, interactableElement)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, interactableElement: Element, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, interactableElement)\n }\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) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.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') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(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: Interact.EventTypes, listener?: Interact.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[] | Interact.EventTypes, listener?: Interact.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: Interact.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 methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\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 * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: EventTarget,\n ) {}\n}\n\nexport default PointerInfo\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _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\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","import * as utils from './index'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\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\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = utils.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)) { continue }\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.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, pointerId) {\n return utils.arr.some(interaction.pointers, ({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\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 }\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 (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): 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: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent {\n type: string\n target: Element\n currentTarget: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n interaction: Interaction\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: Interaction['dropState'], dragEvent, type) {\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : 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.interaction = dragEvent.interaction\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 ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\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(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\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 }\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\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.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?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\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: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\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 }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\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 *\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 {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\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 (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\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 (utils.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 utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\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) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\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 ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\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(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, 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\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\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 }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\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 = 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: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.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 (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.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 (utils.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: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.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 && utils.is.number(dropOverlap)) {\n const overlapArea = (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(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\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: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = 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 (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.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 (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, 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 = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\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 }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.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 (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.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 resizeRects: {\n start: Interact.Rect\n current: Interact.Rect\n inverted: Interact.Rect\n previous: Interact.Rect\n delta: Interact.Rect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.Rect\n rect?: Interact.Rect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\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: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n utils.arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\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 Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = utils.extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (utils.is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\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 return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (utils.is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (utils.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (utils.is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (utils.is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (utils.is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = utils.is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = utils.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, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!utils.is.element(element)) { return false }\n\n return utils.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 : utils.dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\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 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\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.interactable.getRect(interaction.element)\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = utils.extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : utils.extend({}, startRect),\n inverted : utils.extend({}, startRect),\n previous : utils.extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n };\n\n (iEvent as ResizeEvent).rect = interaction.resizeRects.inverted;\n (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = utils.extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = utils.extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n utils.extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n gesture.install(scope)\n resize.install(scope)\n drag.install(scope)\n drop.install(scope)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\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/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg, scope))\n\n actions.eventTypes.push('autoscroll')\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 Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction, scope: Interact.Scope) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = scope.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 options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = this.scope.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 }\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, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }, scope: Interact.Scope) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].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 }\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, scope)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\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(\n scrollOptions.container,\n interaction.interactable,\n element\n )\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\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') });\n * // or\n * interact(element).ignoreFrom('input, textarea, a');\n * ```\n * @deprecated\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 * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\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 * @deprecated\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 * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\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 * Gets 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 Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\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 * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\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?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n InteractableMethods.install(scope)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.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) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\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) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n 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 (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\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)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\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, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.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\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\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 = 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.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\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.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\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: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('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.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n autoStart.install(scope)\n hold.install(scope)\n dragAxis.install(scope)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\nfunction preventDefault (interactable, newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n interactable.options.preventDefault = newValue\n return interactable\n }\n\n if (is.bool(newValue)) {\n interactable.options.preventDefault = newValue ? 'always' : 'never'\n return interactable\n }\n\n return interactable.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable, scope, 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 (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 (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event)\n }\n}\n\nexport function install (scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\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 = function (newValue) {\n return preventDefault(this, newValue)\n }\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.eventMap.dragstart = function preventNativeDrag (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n }\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport const 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\nexport const install = process.env.NODE_ENV === 'production'\n ? () => {}\n // eslint-disable-next-line no-restricted-syntax\n : function install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n logger = logger || console\n if (process.env.NODE_ENV !== 'production') {\n scope.logger = logger\n scope.interactions.signals.on('action-start', ({ interaction }) => {\n touchAction(interaction, scope.logger)\n boxSizing(interaction, scope.logger)\n noListeners(interaction, scope.logger)\n })\n }\n }\n\nexport const touchActionMessage = '[interact.js] Consider adding CSS \"touch-action: none\" to this element\\n'\nexport const boxSizingMessage = '[interact.js] Consider adding CSS \"box-sizing: border-box\" to this resizable element'\nexport const noListenersMessage = '[interact.js] There are no listeners set for this action'\n\nexport function touchAction ({ element }: Interact.Interaction, logger: Logger) {\n if (!parentHasStyle(element, 'touchAction', /pan-|pinch|none/)) {\n logger.warn(\n touchActionMessage,\n element,\n links.touchAction)\n }\n}\n\nexport function boxSizing (interaction: Interact.Interaction, logger: Logger) {\n const { element } = interaction\n\n if (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n ) {\n logger.warn(\n boxSizingMessage,\n element,\n links.boxSizing)\n }\n}\n\nexport function noListeners (interaction: Interact.Interaction, logger: Logger) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n if (!moveListeners.length) {\n logger.warn(\n noListenersMessage,\n actionName,\n interaction.interactable)\n }\n}\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\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)\n }\n\n return false\n}\n\nexport default {\n id: 'dev-tools',\n install,\n}\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: any[]\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets : {},\n states : null,\n result : null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n beforeMove(arg as any)\n start(arg as any, arg.interaction.coords.cur.page, scope.modifiers)\n })\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('before-action-end', beforeEnd)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('before-action-move', setCoords)\n\n interactions.signals.on('after-action-start', restoreCoords as any)\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('stop', stop)\n}\n\nfunction startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nfunction 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\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nfunction setAll (arg: Partial) {\n const {\n interaction,\n prevCoords = interaction.modifiers.result\n ? interaction.modifiers.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(interaction.modifiers.skip)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n result.changed = prevCoords.x !== result.coords.x || prevCoords.y !== result.coords.y\n\n return result\n}\n\nfunction prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction beforeMove ({ interaction, phase, preEnd, skipModifiers }): void | false {\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interactable.getRect(element),\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\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\nfunction restoreCoords ({ interaction: { coords, modifiers } }) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta } = modifiers.result\n\n for (const [coordsSet, delta] of [[coords.start, startDelta], [coords.cur, curDelta]]) {\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\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers.map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction makeModifier (module, name?: string) {\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) => {\n options = options || {}\n\n // add missing defaults to options\n options.enabled = options.enabled !== false\n\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n Object.defineProperty(\n modifier,\n 'name',\n { value: name })\n\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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 } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume';\n(EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\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 scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\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 */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\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 {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (element: Element, options?: any) {\n return scope.interactables.indexOfElement(element, options && options.context) !== -1\n}\n\n/**\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 */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\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 */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\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 */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\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 */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\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 else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\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}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default 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 Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\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, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\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 }\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 }\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, defaults) {\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 restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// });\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\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 }\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 }\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 restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start ({ interaction, interactable, element, rect, state, startOffset }) {\n const { options } = state\n const offsets = []\n const optionsOrigin = utils.rect.rectToXY(utils.rect.resolveRectLike(options.origin))\n const origin = optionsOrigin || utils.getOriginXY(interactable, element, interaction.prepared.name)\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x - origin.x,\n y: interaction.coords.start.page.y - origin.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\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 else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set ({ interaction, coords, state }) {\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n let i\n\n page.x -= origin.x\n page.y -= origin.y\n\n state.realX = page.x\n state.realY = page.y\n\n let len = options.targets ? options.targets.length : 0\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; index < options.targets.length; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: utils.is.number(target.x) ? (target.x + offset.x) : relativeX,\n y: utils.is.number(target.y) ? (target.y + offset.y) : relativeY,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.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 (!closest.target || (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 closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\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}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\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 }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\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 snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\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\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\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\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import Interaction from '@interactjs/core/Interaction'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent {\n interaction: Interaction\n timeStamp: number\n originalEvent: Interact.PointerEventType\n type: T\n pointerId: number\n pointerType: string\n target: Node | Window\n currentTarget: Node | Window\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n propagationStopped = false\n immediatePropagationStopped = false\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.interaction = interaction\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\ntype EventTargetList = Array<{\n eventable: Eventable,\n element: Interact.EventTarget,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.element)\n\n pointerEvent.subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.element\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent.addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n element: null,\n }\n\n for (const element of path) {\n signalArg.element = element\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({ targets, element, type, eventTarget }: any) => {\n scope.interactables.forEachMatch(element, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n is.element(element) &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n targets.push({\n element,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n pointerEvents.install(scope)\n holdRepeat.install(scope)\n interactableTargets.install(scope)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { newInteraction } from '@interactjs/core/interactions'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowResolve: () => void\n }\n}\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target);\n * const drag = { name: drag, axis: 'x' };\n * const resize = { name: resize, edges: { left: true, bottom: true };\n *\n * interactable.reflow(drag);\n * interactable.reflow(resize);\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = newInteraction({ pointerType: 'reflow' }, scope)\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window): typeof interact {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = init.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (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 = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_26;\n\n});\n"]} \ No newline at end of file