You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5289 lines
163 KiB
5289 lines
163 KiB
(self["webpackChunk"] = self["webpackChunk"] || []).push([[50262],{
|
|
|
|
/***/ 10402:
|
|
/*!*******************************************************************************************************!*\
|
|
!*** ./node_modules/_@ant-design_icons@5.5.2@@ant-design/icons/es/icons/CheckOutlined.js + 1 modules ***!
|
|
\*******************************************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
Z: function() { return /* binding */ icons_CheckOutlined; }
|
|
});
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.26.0@@babel/runtime/helpers/esm/extends.js
|
|
var esm_extends = __webpack_require__(5891);
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
;// CONCATENATED MODULE: ./node_modules/_@ant-design_icons-svg@4.4.2@@ant-design/icons-svg/es/asn/CheckOutlined.js
|
|
// This icon file is generated automatically.
|
|
var CheckOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" } }] }, "name": "check", "theme": "outlined" };
|
|
/* harmony default export */ var asn_CheckOutlined = (CheckOutlined);
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.5.2@@ant-design/icons/es/components/AntdIcon.js + 3 modules
|
|
var AntdIcon = __webpack_require__(88853);
|
|
;// CONCATENATED MODULE: ./node_modules/_@ant-design_icons@5.5.2@@ant-design/icons/es/icons/CheckOutlined.js
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
var CheckOutlined_CheckOutlined = function CheckOutlined(props, ref) {
|
|
return /*#__PURE__*/_react_17_0_2_react.createElement(AntdIcon/* default */.Z, (0,esm_extends/* default */.Z)({}, props, {
|
|
ref: ref,
|
|
icon: asn_CheckOutlined
|
|
}));
|
|
};
|
|
|
|
/** */
|
|
var RefIcon = /*#__PURE__*/_react_17_0_2_react.forwardRef(CheckOutlined_CheckOutlined);
|
|
if (false) {}
|
|
/* harmony default export */ var icons_CheckOutlined = (RefIcon);
|
|
|
|
/***/ }),
|
|
|
|
/***/ 61445:
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/construct.js ***!
|
|
\*********************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 35745);
|
|
var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 74716);
|
|
function _construct(Parent, args, Class) {
|
|
if (isNativeReflectConstruct()) {
|
|
module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
} else {
|
|
module.exports = _construct = function _construct(Parent, args, Class) {
|
|
var a = [null];
|
|
a.push.apply(a, args);
|
|
var Constructor = Function.bind.apply(Parent, a);
|
|
var instance = new Constructor();
|
|
if (Class) setPrototypeOf(instance, Class.prototype);
|
|
return instance;
|
|
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
}
|
|
return _construct.apply(null, arguments);
|
|
}
|
|
module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 4811:
|
|
/*!***************************************************************************!*\
|
|
!*** ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/get.js ***!
|
|
\***************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var superPropBase = __webpack_require__(/*! ./superPropBase.js */ 22652);
|
|
function _get() {
|
|
if (typeof Reflect !== "undefined" && Reflect.get) {
|
|
module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
} else {
|
|
module.exports = _get = function _get(target, property, receiver) {
|
|
var base = superPropBase(target, property);
|
|
if (!base) return;
|
|
var desc = Object.getOwnPropertyDescriptor(base, property);
|
|
if (desc.get) {
|
|
return desc.get.call(arguments.length < 3 ? target : receiver);
|
|
}
|
|
return desc.value;
|
|
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
}
|
|
return _get.apply(this, arguments);
|
|
}
|
|
module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 92866:
|
|
/*!****************************************************************************************!*\
|
|
!*** ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/isNativeFunction.js ***!
|
|
\****************************************************************************************/
|
|
/***/ (function(module) {
|
|
|
|
function _isNativeFunction(fn) {
|
|
try {
|
|
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
} catch (e) {
|
|
return typeof fn === "function";
|
|
}
|
|
}
|
|
module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 22652:
|
|
/*!*************************************************************************************!*\
|
|
!*** ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/superPropBase.js ***!
|
|
\*************************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 34577);
|
|
function _superPropBase(object, property) {
|
|
while (!Object.prototype.hasOwnProperty.call(object, property)) {
|
|
object = getPrototypeOf(object);
|
|
if (object === null) break;
|
|
}
|
|
return object;
|
|
}
|
|
module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 9464:
|
|
/*!***************************************************************************************!*\
|
|
!*** ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/wrapNativeSuper.js ***!
|
|
\***************************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 34577);
|
|
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 35745);
|
|
var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 92866);
|
|
var construct = __webpack_require__(/*! ./construct.js */ 61445);
|
|
function _wrapNativeSuper(Class) {
|
|
var _cache = typeof Map === "function" ? new Map() : undefined;
|
|
module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
|
|
if (Class === null || !isNativeFunction(Class)) return Class;
|
|
if (typeof Class !== "function") {
|
|
throw new TypeError("Super expression must either be null or a function");
|
|
}
|
|
if (typeof _cache !== "undefined") {
|
|
if (_cache.has(Class)) return _cache.get(Class);
|
|
_cache.set(Class, Wrapper);
|
|
}
|
|
function Wrapper() {
|
|
return construct(Class, arguments, getPrototypeOf(this).constructor);
|
|
}
|
|
Wrapper.prototype = Object.create(Class.prototype, {
|
|
constructor: {
|
|
value: Wrapper,
|
|
enumerable: false,
|
|
writable: true,
|
|
configurable: true
|
|
}
|
|
});
|
|
return setPrototypeOf(Wrapper, Class);
|
|
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
return _wrapNativeSuper(Class);
|
|
}
|
|
module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
|
|
/***/ }),
|
|
|
|
/***/ 42237:
|
|
/*!**************************************************************************************************************!*\
|
|
!*** ./node_modules/_@react-spring_web@9.7.5@@react-spring/web/dist/react-spring_web.modern.mjs + 4 modules ***!
|
|
\**************************************************************************************************************/
|
|
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
q: function() { return /* binding */ animated; },
|
|
q_: function() { return /* reexport */ useSpring; },
|
|
Yz: function() { return /* reexport */ useTransition; }
|
|
});
|
|
|
|
// UNUSED EXPORTS: Any, BailSignal, Controller, FrameValue, Globals, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, a, config, createInterpolator, easings, inferTo, interpolate, to, update, useChain, useInView, useIsomorphicLayoutEffect, useReducedMotion, useResize, useScroll, useSpringRef, useSpringValue, useSprings, useTrail
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
|
|
var slicedToArray = __webpack_require__(79800);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createClass.js
|
|
var createClass = __webpack_require__(29186);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/classCallCheck.js
|
|
var classCallCheck = __webpack_require__(82100);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/inherits.js
|
|
var inherits = __webpack_require__(80619);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createSuper.js
|
|
var createSuper = __webpack_require__(47074);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectWithoutProperties.js
|
|
var objectWithoutProperties = __webpack_require__(39647);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/assertThisInitialized.js
|
|
var assertThisInitialized = __webpack_require__(13720);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/toConsumableArray.js
|
|
var toConsumableArray = __webpack_require__(37205);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectDestructuringEmpty.js
|
|
var objectDestructuringEmpty = __webpack_require__(70236);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/get.js
|
|
var get = __webpack_require__(4811);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/getPrototypeOf.js
|
|
var getPrototypeOf = __webpack_require__(34577);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/wrapNativeSuper.js
|
|
var wrapNativeSuper = __webpack_require__(9464);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
|
|
var regeneratorRuntime = __webpack_require__(7557);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
|
|
var asyncToGenerator = __webpack_require__(41498);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
|
|
var objectSpread2 = __webpack_require__(82242);
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
var createForOfIteratorHelper = __webpack_require__(91232);
|
|
;// CONCATENATED MODULE: ./node_modules/_@react-spring_rafz@9.7.5@@react-spring/rafz/dist/react-spring_rafz.modern.mjs
|
|
|
|
// src/index.ts
|
|
var updateQueue = makeQueue();
|
|
var raf = function raf(fn) {
|
|
return schedule(fn, updateQueue);
|
|
};
|
|
var writeQueue = makeQueue();
|
|
raf.write = function (fn) {
|
|
return schedule(fn, writeQueue);
|
|
};
|
|
var onStartQueue = makeQueue();
|
|
raf.onStart = function (fn) {
|
|
return schedule(fn, onStartQueue);
|
|
};
|
|
var onFrameQueue = makeQueue();
|
|
raf.onFrame = function (fn) {
|
|
return schedule(fn, onFrameQueue);
|
|
};
|
|
var onFinishQueue = makeQueue();
|
|
raf.onFinish = function (fn) {
|
|
return schedule(fn, onFinishQueue);
|
|
};
|
|
var timeouts = [];
|
|
raf.setTimeout = function (handler, ms) {
|
|
var time = raf.now() + ms;
|
|
var cancel = function cancel() {
|
|
var i = timeouts.findIndex(function (t) {
|
|
return t.cancel == cancel;
|
|
});
|
|
if (~i) timeouts.splice(i, 1);
|
|
pendingCount -= ~i ? 1 : 0;
|
|
};
|
|
var timeout = {
|
|
time: time,
|
|
handler: handler,
|
|
cancel: cancel
|
|
};
|
|
timeouts.splice(findTimeout(time), 0, timeout);
|
|
pendingCount += 1;
|
|
start();
|
|
return timeout;
|
|
};
|
|
var findTimeout = function findTimeout(time) {
|
|
return ~(~timeouts.findIndex(function (t) {
|
|
return t.time > time;
|
|
}) || ~timeouts.length);
|
|
};
|
|
raf.cancel = function (fn) {
|
|
onStartQueue["delete"](fn);
|
|
onFrameQueue["delete"](fn);
|
|
onFinishQueue["delete"](fn);
|
|
updateQueue["delete"](fn);
|
|
writeQueue["delete"](fn);
|
|
};
|
|
raf.sync = function (fn) {
|
|
sync = true;
|
|
raf.batchedUpdates(fn);
|
|
sync = false;
|
|
};
|
|
raf.throttle = function (fn) {
|
|
var lastArgs;
|
|
function queuedFn() {
|
|
try {
|
|
fn.apply(void 0, toConsumableArray(lastArgs));
|
|
} finally {
|
|
lastArgs = null;
|
|
}
|
|
}
|
|
function throttled() {
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
lastArgs = args;
|
|
raf.onStart(queuedFn);
|
|
}
|
|
throttled.handler = fn;
|
|
throttled.cancel = function () {
|
|
onStartQueue["delete"](queuedFn);
|
|
lastArgs = null;
|
|
};
|
|
return throttled;
|
|
};
|
|
var nativeRaf = typeof window != "undefined" ? window.requestAnimationFrame :
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
function () {};
|
|
raf.use = function (impl) {
|
|
return nativeRaf = impl;
|
|
};
|
|
raf.now = typeof performance != "undefined" ? function () {
|
|
return performance.now();
|
|
} : Date.now;
|
|
raf.batchedUpdates = function (fn) {
|
|
return fn();
|
|
};
|
|
raf["catch"] = console.error;
|
|
raf.frameLoop = "always";
|
|
raf.advance = function () {
|
|
if (raf.frameLoop !== "demand") {
|
|
console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand");
|
|
} else {
|
|
update();
|
|
}
|
|
};
|
|
var ts = -1;
|
|
var pendingCount = 0;
|
|
var sync = false;
|
|
function schedule(fn, queue) {
|
|
if (sync) {
|
|
queue["delete"](fn);
|
|
fn(0);
|
|
} else {
|
|
queue.add(fn);
|
|
start();
|
|
}
|
|
}
|
|
function start() {
|
|
if (ts < 0) {
|
|
ts = 0;
|
|
if (raf.frameLoop !== "demand") {
|
|
nativeRaf(loop);
|
|
}
|
|
}
|
|
}
|
|
function stop() {
|
|
ts = -1;
|
|
}
|
|
function loop() {
|
|
if (~ts) {
|
|
nativeRaf(loop);
|
|
raf.batchedUpdates(update);
|
|
}
|
|
}
|
|
function update() {
|
|
var prevTs = ts;
|
|
ts = raf.now();
|
|
var count = findTimeout(ts);
|
|
if (count) {
|
|
eachSafely(timeouts.splice(0, count), function (t) {
|
|
return t.handler();
|
|
});
|
|
pendingCount -= count;
|
|
}
|
|
if (!pendingCount) {
|
|
stop();
|
|
return;
|
|
}
|
|
onStartQueue.flush();
|
|
updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);
|
|
onFrameQueue.flush();
|
|
writeQueue.flush();
|
|
onFinishQueue.flush();
|
|
}
|
|
function makeQueue() {
|
|
var next = /* @__PURE__ */new Set();
|
|
var current = next;
|
|
return {
|
|
add: function add(fn) {
|
|
pendingCount += current == next && !next.has(fn) ? 1 : 0;
|
|
next.add(fn);
|
|
},
|
|
"delete": function _delete(fn) {
|
|
pendingCount -= current == next && next.has(fn) ? 1 : 0;
|
|
return next["delete"](fn);
|
|
},
|
|
flush: function flush(arg) {
|
|
if (current.size) {
|
|
next = /* @__PURE__ */new Set();
|
|
pendingCount -= current.size;
|
|
eachSafely(current, function (fn) {
|
|
return fn(arg) && next.add(fn);
|
|
});
|
|
pendingCount += next.size;
|
|
current = next;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
function eachSafely(values, each) {
|
|
values.forEach(function (value) {
|
|
try {
|
|
each(value);
|
|
} catch (e) {
|
|
raf["catch"](e);
|
|
}
|
|
});
|
|
}
|
|
var __raf = {
|
|
/** The number of pending tasks */count: function count() {
|
|
return pendingCount;
|
|
},
|
|
/** Whether there's a raf update loop running */isRunning: function isRunning() {
|
|
return ts >= 0;
|
|
},
|
|
/** Clear internal state. Never call from update loop! */clear: function clear() {
|
|
ts = -1;
|
|
timeouts = [];
|
|
onStartQueue = makeQueue();
|
|
updateQueue = makeQueue();
|
|
onFrameQueue = makeQueue();
|
|
writeQueue = makeQueue();
|
|
onFinishQueue = makeQueue();
|
|
pendingCount = 0;
|
|
}
|
|
};
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
;// CONCATENATED MODULE: ./node_modules/_@react-spring_shared@9.7.5@@react-spring/shared/dist/react-spring_shared.modern.mjs
|
|
|
|
|
|
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __export = function __export(target, all) {
|
|
for (var name in all) __defProp(target, name, {
|
|
get: all[name],
|
|
enumerable: true
|
|
});
|
|
};
|
|
|
|
// src/globals.ts
|
|
var globals_exports = {};
|
|
__export(globals_exports, {
|
|
assign: function assign() {
|
|
return _assign;
|
|
},
|
|
colors: function colors() {
|
|
return _colors;
|
|
},
|
|
createStringInterpolator: function createStringInterpolator() {
|
|
return _createStringInterpolator;
|
|
},
|
|
skipAnimation: function skipAnimation() {
|
|
return _skipAnimation;
|
|
},
|
|
to: function to() {
|
|
return _to;
|
|
},
|
|
willAdvance: function willAdvance() {
|
|
return _willAdvance;
|
|
}
|
|
});
|
|
|
|
|
|
// src/helpers.ts
|
|
function noop() {}
|
|
var defineHidden = function defineHidden(obj, key, value) {
|
|
return Object.defineProperty(obj, key, {
|
|
value: value,
|
|
writable: true,
|
|
configurable: true
|
|
});
|
|
};
|
|
var is = {
|
|
arr: Array.isArray,
|
|
obj: function obj(a) {
|
|
return !!a && a.constructor.name === "Object";
|
|
},
|
|
fun: function fun(a) {
|
|
return typeof a === "function";
|
|
},
|
|
str: function str(a) {
|
|
return typeof a === "string";
|
|
},
|
|
num: function num(a) {
|
|
return typeof a === "number";
|
|
},
|
|
und: function und(a) {
|
|
return a === void 0;
|
|
}
|
|
};
|
|
function isEqual(a, b) {
|
|
if (is.arr(a)) {
|
|
if (!is.arr(b) || a.length !== b.length) return false;
|
|
for (var i = 0; i < a.length; i++) {
|
|
if (a[i] !== b[i]) return false;
|
|
}
|
|
return true;
|
|
}
|
|
return a === b;
|
|
}
|
|
var react_spring_shared_modern_each = function each(obj, fn) {
|
|
return obj.forEach(fn);
|
|
};
|
|
function eachProp(obj, fn, ctx) {
|
|
if (is.arr(obj)) {
|
|
for (var i = 0; i < obj.length; i++) {
|
|
fn.call(ctx, obj[i], "".concat(i));
|
|
}
|
|
return;
|
|
}
|
|
for (var key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
fn.call(ctx, obj[key], key);
|
|
}
|
|
}
|
|
}
|
|
var toArray = function toArray(a) {
|
|
return is.und(a) ? [] : is.arr(a) ? a : [a];
|
|
};
|
|
function flush(queue, iterator) {
|
|
if (queue.size) {
|
|
var items = Array.from(queue);
|
|
queue.clear();
|
|
react_spring_shared_modern_each(items, iterator);
|
|
}
|
|
}
|
|
var flushCalls = function flushCalls(queue) {
|
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
args[_key - 1] = arguments[_key];
|
|
}
|
|
return flush(queue, function (fn) {
|
|
return fn.apply(void 0, args);
|
|
});
|
|
};
|
|
var isSSR = function isSSR() {
|
|
return typeof window === "undefined" || !window.navigator || /ServerSideRendering|^Deno\//.test(window.navigator.userAgent);
|
|
};
|
|
|
|
// src/globals.ts
|
|
var _createStringInterpolator;
|
|
var _to;
|
|
var _colors = null;
|
|
var _skipAnimation = false;
|
|
var _willAdvance = noop;
|
|
var _assign = function _assign(globals) {
|
|
if (globals.to) _to = globals.to;
|
|
if (globals.now) raf.now = globals.now;
|
|
if (globals.colors !== void 0) _colors = globals.colors;
|
|
if (globals.skipAnimation != null) _skipAnimation = globals.skipAnimation;
|
|
if (globals.createStringInterpolator) _createStringInterpolator = globals.createStringInterpolator;
|
|
if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);
|
|
if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;
|
|
if (globals.willAdvance) _willAdvance = globals.willAdvance;
|
|
if (globals.frameLoop) raf.frameLoop = globals.frameLoop;
|
|
};
|
|
|
|
// src/FrameLoop.ts
|
|
|
|
var startQueue = /* @__PURE__ */new Set();
|
|
var currentFrame = [];
|
|
var prevFrame = [];
|
|
var priority = 0;
|
|
var frameLoop = {
|
|
get idle() {
|
|
return !startQueue.size && !currentFrame.length;
|
|
},
|
|
/** Advance the given animation on every frame until idle. */start: function start(animation) {
|
|
if (priority > animation.priority) {
|
|
startQueue.add(animation);
|
|
raf.onStart(flushStartQueue);
|
|
} else {
|
|
startSafely(animation);
|
|
raf(advance);
|
|
}
|
|
},
|
|
/** Advance all animations by the given time. */
|
|
advance: advance,
|
|
/** Call this when an animation's priority changes. */sort: function sort(animation) {
|
|
if (priority) {
|
|
raf.onFrame(function () {
|
|
return frameLoop.sort(animation);
|
|
});
|
|
} else {
|
|
var prevIndex = currentFrame.indexOf(animation);
|
|
if (~prevIndex) {
|
|
currentFrame.splice(prevIndex, 1);
|
|
startUnsafely(animation);
|
|
}
|
|
}
|
|
},
|
|
/**
|
|
* Clear all animations. For testing purposes.
|
|
*
|
|
* ☠️ Never call this from within the frameloop.
|
|
*/
|
|
clear: function clear() {
|
|
currentFrame = [];
|
|
startQueue.clear();
|
|
}
|
|
};
|
|
function flushStartQueue() {
|
|
startQueue.forEach(startSafely);
|
|
startQueue.clear();
|
|
raf(advance);
|
|
}
|
|
function startSafely(animation) {
|
|
if (!currentFrame.includes(animation)) startUnsafely(animation);
|
|
}
|
|
function startUnsafely(animation) {
|
|
currentFrame.splice(findIndex(currentFrame, function (other) {
|
|
return other.priority > animation.priority;
|
|
}), 0, animation);
|
|
}
|
|
function advance(dt) {
|
|
var nextFrame = prevFrame;
|
|
for (var i = 0; i < currentFrame.length; i++) {
|
|
var animation = currentFrame[i];
|
|
priority = animation.priority;
|
|
if (!animation.idle) {
|
|
_willAdvance(animation);
|
|
animation.advance(dt);
|
|
if (!animation.idle) {
|
|
nextFrame.push(animation);
|
|
}
|
|
}
|
|
}
|
|
priority = 0;
|
|
prevFrame = currentFrame;
|
|
prevFrame.length = 0;
|
|
currentFrame = nextFrame;
|
|
return currentFrame.length > 0;
|
|
}
|
|
function findIndex(arr, test) {
|
|
var index = arr.findIndex(test);
|
|
return index < 0 ? arr.length : index;
|
|
}
|
|
|
|
// src/clamp.ts
|
|
var clamp = function clamp(min, max, v) {
|
|
return Math.min(Math.max(v, min), max);
|
|
};
|
|
|
|
// src/colors.ts
|
|
var colors2 = {
|
|
transparent: 0,
|
|
aliceblue: 4042850303,
|
|
antiquewhite: 4209760255,
|
|
aqua: 16777215,
|
|
aquamarine: 2147472639,
|
|
azure: 4043309055,
|
|
beige: 4126530815,
|
|
bisque: 4293182719,
|
|
black: 255,
|
|
blanchedalmond: 4293643775,
|
|
blue: 65535,
|
|
blueviolet: 2318131967,
|
|
brown: 2771004159,
|
|
burlywood: 3736635391,
|
|
burntsienna: 3934150143,
|
|
cadetblue: 1604231423,
|
|
chartreuse: 2147418367,
|
|
chocolate: 3530104575,
|
|
coral: 4286533887,
|
|
cornflowerblue: 1687547391,
|
|
cornsilk: 4294499583,
|
|
crimson: 3692313855,
|
|
cyan: 16777215,
|
|
darkblue: 35839,
|
|
darkcyan: 9145343,
|
|
darkgoldenrod: 3095792639,
|
|
darkgray: 2846468607,
|
|
darkgreen: 6553855,
|
|
darkgrey: 2846468607,
|
|
darkkhaki: 3182914559,
|
|
darkmagenta: 2332068863,
|
|
darkolivegreen: 1433087999,
|
|
darkorange: 4287365375,
|
|
darkorchid: 2570243327,
|
|
darkred: 2332033279,
|
|
darksalmon: 3918953215,
|
|
darkseagreen: 2411499519,
|
|
darkslateblue: 1211993087,
|
|
darkslategray: 793726975,
|
|
darkslategrey: 793726975,
|
|
darkturquoise: 13554175,
|
|
darkviolet: 2483082239,
|
|
deeppink: 4279538687,
|
|
deepskyblue: 12582911,
|
|
dimgray: 1768516095,
|
|
dimgrey: 1768516095,
|
|
dodgerblue: 512819199,
|
|
firebrick: 2988581631,
|
|
floralwhite: 4294635775,
|
|
forestgreen: 579543807,
|
|
fuchsia: 4278255615,
|
|
gainsboro: 3705462015,
|
|
ghostwhite: 4177068031,
|
|
gold: 4292280575,
|
|
goldenrod: 3668254975,
|
|
gray: 2155905279,
|
|
green: 8388863,
|
|
greenyellow: 2919182335,
|
|
grey: 2155905279,
|
|
honeydew: 4043305215,
|
|
hotpink: 4285117695,
|
|
indianred: 3445382399,
|
|
indigo: 1258324735,
|
|
ivory: 4294963455,
|
|
khaki: 4041641215,
|
|
lavender: 3873897215,
|
|
lavenderblush: 4293981695,
|
|
lawngreen: 2096890111,
|
|
lemonchiffon: 4294626815,
|
|
lightblue: 2916673279,
|
|
lightcoral: 4034953471,
|
|
lightcyan: 3774873599,
|
|
lightgoldenrodyellow: 4210742015,
|
|
lightgray: 3553874943,
|
|
lightgreen: 2431553791,
|
|
lightgrey: 3553874943,
|
|
lightpink: 4290167295,
|
|
lightsalmon: 4288707327,
|
|
lightseagreen: 548580095,
|
|
lightskyblue: 2278488831,
|
|
lightslategray: 2005441023,
|
|
lightslategrey: 2005441023,
|
|
lightsteelblue: 2965692159,
|
|
lightyellow: 4294959359,
|
|
lime: 16711935,
|
|
limegreen: 852308735,
|
|
linen: 4210091775,
|
|
magenta: 4278255615,
|
|
maroon: 2147483903,
|
|
mediumaquamarine: 1724754687,
|
|
mediumblue: 52735,
|
|
mediumorchid: 3126187007,
|
|
mediumpurple: 2473647103,
|
|
mediumseagreen: 1018393087,
|
|
mediumslateblue: 2070474495,
|
|
mediumspringgreen: 16423679,
|
|
mediumturquoise: 1221709055,
|
|
mediumvioletred: 3340076543,
|
|
midnightblue: 421097727,
|
|
mintcream: 4127193855,
|
|
mistyrose: 4293190143,
|
|
moccasin: 4293178879,
|
|
navajowhite: 4292783615,
|
|
navy: 33023,
|
|
oldlace: 4260751103,
|
|
olive: 2155872511,
|
|
olivedrab: 1804477439,
|
|
orange: 4289003775,
|
|
orangered: 4282712319,
|
|
orchid: 3664828159,
|
|
palegoldenrod: 4008225535,
|
|
palegreen: 2566625535,
|
|
paleturquoise: 2951671551,
|
|
palevioletred: 3681588223,
|
|
papayawhip: 4293907967,
|
|
peachpuff: 4292524543,
|
|
peru: 3448061951,
|
|
pink: 4290825215,
|
|
plum: 3718307327,
|
|
powderblue: 2967529215,
|
|
purple: 2147516671,
|
|
rebeccapurple: 1714657791,
|
|
red: 4278190335,
|
|
rosybrown: 3163525119,
|
|
royalblue: 1097458175,
|
|
saddlebrown: 2336560127,
|
|
salmon: 4202722047,
|
|
sandybrown: 4104413439,
|
|
seagreen: 780883967,
|
|
seashell: 4294307583,
|
|
sienna: 2689740287,
|
|
silver: 3233857791,
|
|
skyblue: 2278484991,
|
|
slateblue: 1784335871,
|
|
slategray: 1887473919,
|
|
slategrey: 1887473919,
|
|
snow: 4294638335,
|
|
springgreen: 16744447,
|
|
steelblue: 1182971135,
|
|
tan: 3535047935,
|
|
teal: 8421631,
|
|
thistle: 3636451583,
|
|
tomato: 4284696575,
|
|
turquoise: 1088475391,
|
|
violet: 4001558271,
|
|
wheat: 4125012991,
|
|
white: 4294967295,
|
|
whitesmoke: 4126537215,
|
|
yellow: 4294902015,
|
|
yellowgreen: 2597139199
|
|
};
|
|
|
|
// src/colorMatchers.ts
|
|
var NUMBER = "[-+]?\\d*\\.?\\d+";
|
|
var PERCENTAGE = NUMBER + "%";
|
|
function call() {
|
|
for (var _len2 = arguments.length, parts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
parts[_key2] = arguments[_key2];
|
|
}
|
|
return "\\(\\s*(" + parts.join(")\\s*,\\s*(") + ")\\s*\\)";
|
|
}
|
|
var rgb = new RegExp("rgb" + call(NUMBER, NUMBER, NUMBER));
|
|
var rgba = new RegExp("rgba" + call(NUMBER, NUMBER, NUMBER, NUMBER));
|
|
var hsl = new RegExp("hsl" + call(NUMBER, PERCENTAGE, PERCENTAGE));
|
|
var hsla = new RegExp("hsla" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));
|
|
var hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
|
|
var hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
|
|
var hex6 = /^#([0-9a-fA-F]{6})$/;
|
|
var hex8 = /^#([0-9a-fA-F]{8})$/;
|
|
|
|
// src/normalizeColor.ts
|
|
function normalizeColor(color) {
|
|
var match;
|
|
if (typeof color === "number") {
|
|
return color >>> 0 === color && color >= 0 && color <= 4294967295 ? color : null;
|
|
}
|
|
if (match = hex6.exec(color)) return parseInt(match[1] + "ff", 16) >>> 0;
|
|
if (_colors && _colors[color] !== void 0) {
|
|
return _colors[color];
|
|
}
|
|
if (match = rgb.exec(color)) {
|
|
return (parse255(match[1]) << 24 |
|
|
// r
|
|
parse255(match[2]) << 16 |
|
|
// g
|
|
parse255(match[3]) << 8 |
|
|
// b
|
|
255) >>>
|
|
// a
|
|
0;
|
|
}
|
|
if (match = rgba.exec(color)) {
|
|
return (parse255(match[1]) << 24 |
|
|
// r
|
|
parse255(match[2]) << 16 |
|
|
// g
|
|
parse255(match[3]) << 8 |
|
|
// b
|
|
parse1(match[4])) >>>
|
|
// a
|
|
0;
|
|
}
|
|
if (match = hex3.exec(color)) {
|
|
return parseInt(match[1] + match[1] +
|
|
// r
|
|
match[2] + match[2] +
|
|
// g
|
|
match[3] + match[3] +
|
|
// b
|
|
"ff",
|
|
// a
|
|
16) >>> 0;
|
|
}
|
|
if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;
|
|
if (match = hex4.exec(color)) {
|
|
return parseInt(match[1] + match[1] +
|
|
// r
|
|
match[2] + match[2] +
|
|
// g
|
|
match[3] + match[3] +
|
|
// b
|
|
match[4] + match[4],
|
|
// a
|
|
16) >>> 0;
|
|
}
|
|
if (match = hsl.exec(color)) {
|
|
return (hslToRgb(parse360(match[1]),
|
|
// h
|
|
parsePercentage(match[2]),
|
|
// s
|
|
parsePercentage(match[3])
|
|
// l
|
|
) | 255) >>>
|
|
// a
|
|
0;
|
|
}
|
|
if (match = hsla.exec(color)) {
|
|
return (hslToRgb(parse360(match[1]),
|
|
// h
|
|
parsePercentage(match[2]),
|
|
// s
|
|
parsePercentage(match[3])
|
|
// l
|
|
) | parse1(match[4])) >>>
|
|
// a
|
|
0;
|
|
}
|
|
return null;
|
|
}
|
|
function hue2rgb(p, q, t) {
|
|
if (t < 0) t += 1;
|
|
if (t > 1) t -= 1;
|
|
if (t < 1 / 6) return p + (q - p) * 6 * t;
|
|
if (t < 1 / 2) return q;
|
|
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
|
|
return p;
|
|
}
|
|
function hslToRgb(h, s, l) {
|
|
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
var p = 2 * l - q;
|
|
var r = hue2rgb(p, q, h + 1 / 3);
|
|
var g = hue2rgb(p, q, h);
|
|
var b = hue2rgb(p, q, h - 1 / 3);
|
|
return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;
|
|
}
|
|
function parse255(str) {
|
|
var _int = parseInt(str, 10);
|
|
if (_int < 0) return 0;
|
|
if (_int > 255) return 255;
|
|
return _int;
|
|
}
|
|
function parse360(str) {
|
|
var _int2 = parseFloat(str);
|
|
return (_int2 % 360 + 360) % 360 / 360;
|
|
}
|
|
function parse1(str) {
|
|
var num = parseFloat(str);
|
|
if (num < 0) return 0;
|
|
if (num > 1) return 255;
|
|
return Math.round(num * 255);
|
|
}
|
|
function parsePercentage(str) {
|
|
var _int3 = parseFloat(str);
|
|
if (_int3 < 0) return 0;
|
|
if (_int3 > 100) return 1;
|
|
return _int3 / 100;
|
|
}
|
|
|
|
// src/colorToRgba.ts
|
|
function colorToRgba(input) {
|
|
var int32Color = normalizeColor(input);
|
|
if (int32Color === null) return input;
|
|
int32Color = int32Color || 0;
|
|
var r = (int32Color & 4278190080) >>> 24;
|
|
var g = (int32Color & 16711680) >>> 16;
|
|
var b = (int32Color & 65280) >>> 8;
|
|
var a = (int32Color & 255) / 255;
|
|
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
|
|
}
|
|
|
|
// src/createInterpolator.ts
|
|
var createInterpolator = function createInterpolator(range, output, extrapolate) {
|
|
if (is.fun(range)) {
|
|
return range;
|
|
}
|
|
if (is.arr(range)) {
|
|
return createInterpolator({
|
|
range: range,
|
|
output: output,
|
|
extrapolate: extrapolate
|
|
});
|
|
}
|
|
if (is.str(range.output[0])) {
|
|
return _createStringInterpolator(range);
|
|
}
|
|
var config = range;
|
|
var outputRange = config.output;
|
|
var inputRange = config.range || [0, 1];
|
|
var extrapolateLeft = config.extrapolateLeft || config.extrapolate || "extend";
|
|
var extrapolateRight = config.extrapolateRight || config.extrapolate || "extend";
|
|
var easing = config.easing || function (t) {
|
|
return t;
|
|
};
|
|
return function (input) {
|
|
var range2 = findRange(input, inputRange);
|
|
return interpolate(input, inputRange[range2], inputRange[range2 + 1], outputRange[range2], outputRange[range2 + 1], easing, extrapolateLeft, extrapolateRight, config.map);
|
|
};
|
|
};
|
|
function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {
|
|
var result = map ? map(input) : input;
|
|
if (result < inputMin) {
|
|
if (extrapolateLeft === "identity") return result;else if (extrapolateLeft === "clamp") result = inputMin;
|
|
}
|
|
if (result > inputMax) {
|
|
if (extrapolateRight === "identity") return result;else if (extrapolateRight === "clamp") result = inputMax;
|
|
}
|
|
if (outputMin === outputMax) return outputMin;
|
|
if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;
|
|
if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);
|
|
result = easing(result);
|
|
if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;
|
|
return result;
|
|
}
|
|
function findRange(input, inputRange) {
|
|
for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;
|
|
return i - 1;
|
|
}
|
|
|
|
// src/easings.ts
|
|
var steps = function steps(steps2) {
|
|
var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "end";
|
|
return function (progress2) {
|
|
progress2 = direction === "end" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);
|
|
var expanded = progress2 * steps2;
|
|
var rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
|
|
return clamp(0, 1, rounded / steps2);
|
|
};
|
|
};
|
|
var c1 = 1.70158;
|
|
var c2 = c1 * 1.525;
|
|
var c3 = c1 + 1;
|
|
var c4 = 2 * Math.PI / 3;
|
|
var c5 = 2 * Math.PI / 4.5;
|
|
var bounceOut = function bounceOut(x) {
|
|
var n1 = 7.5625;
|
|
var d1 = 2.75;
|
|
if (x < 1 / d1) {
|
|
return n1 * x * x;
|
|
} else if (x < 2 / d1) {
|
|
return n1 * (x -= 1.5 / d1) * x + 0.75;
|
|
} else if (x < 2.5 / d1) {
|
|
return n1 * (x -= 2.25 / d1) * x + 0.9375;
|
|
} else {
|
|
return n1 * (x -= 2.625 / d1) * x + 0.984375;
|
|
}
|
|
};
|
|
var easings = {
|
|
linear: function linear(x) {
|
|
return x;
|
|
},
|
|
easeInQuad: function easeInQuad(x) {
|
|
return x * x;
|
|
},
|
|
easeOutQuad: function easeOutQuad(x) {
|
|
return 1 - (1 - x) * (1 - x);
|
|
},
|
|
easeInOutQuad: function easeInOutQuad(x) {
|
|
return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;
|
|
},
|
|
easeInCubic: function easeInCubic(x) {
|
|
return x * x * x;
|
|
},
|
|
easeOutCubic: function easeOutCubic(x) {
|
|
return 1 - Math.pow(1 - x, 3);
|
|
},
|
|
easeInOutCubic: function easeInOutCubic(x) {
|
|
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
|
|
},
|
|
easeInQuart: function easeInQuart(x) {
|
|
return x * x * x * x;
|
|
},
|
|
easeOutQuart: function easeOutQuart(x) {
|
|
return 1 - Math.pow(1 - x, 4);
|
|
},
|
|
easeInOutQuart: function easeInOutQuart(x) {
|
|
return x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2;
|
|
},
|
|
easeInQuint: function easeInQuint(x) {
|
|
return x * x * x * x * x;
|
|
},
|
|
easeOutQuint: function easeOutQuint(x) {
|
|
return 1 - Math.pow(1 - x, 5);
|
|
},
|
|
easeInOutQuint: function easeInOutQuint(x) {
|
|
return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;
|
|
},
|
|
easeInSine: function easeInSine(x) {
|
|
return 1 - Math.cos(x * Math.PI / 2);
|
|
},
|
|
easeOutSine: function easeOutSine(x) {
|
|
return Math.sin(x * Math.PI / 2);
|
|
},
|
|
easeInOutSine: function easeInOutSine(x) {
|
|
return -(Math.cos(Math.PI * x) - 1) / 2;
|
|
},
|
|
easeInExpo: function easeInExpo(x) {
|
|
return x === 0 ? 0 : Math.pow(2, 10 * x - 10);
|
|
},
|
|
easeOutExpo: function easeOutExpo(x) {
|
|
return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);
|
|
},
|
|
easeInOutExpo: function easeInOutExpo(x) {
|
|
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2;
|
|
},
|
|
easeInCirc: function easeInCirc(x) {
|
|
return 1 - Math.sqrt(1 - Math.pow(x, 2));
|
|
},
|
|
easeOutCirc: function easeOutCirc(x) {
|
|
return Math.sqrt(1 - Math.pow(x - 1, 2));
|
|
},
|
|
easeInOutCirc: function easeInOutCirc(x) {
|
|
return x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;
|
|
},
|
|
easeInBack: function easeInBack(x) {
|
|
return c3 * x * x * x - c1 * x * x;
|
|
},
|
|
easeOutBack: function easeOutBack(x) {
|
|
return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);
|
|
},
|
|
easeInOutBack: function easeInOutBack(x) {
|
|
return x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;
|
|
},
|
|
easeInElastic: function easeInElastic(x) {
|
|
return x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);
|
|
},
|
|
easeOutElastic: function easeOutElastic(x) {
|
|
return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;
|
|
},
|
|
easeInOutElastic: function easeInOutElastic(x) {
|
|
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1;
|
|
},
|
|
easeInBounce: function easeInBounce(x) {
|
|
return 1 - bounceOut(1 - x);
|
|
},
|
|
easeOutBounce: bounceOut,
|
|
easeInOutBounce: function easeInOutBounce(x) {
|
|
return x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2;
|
|
},
|
|
steps: steps
|
|
};
|
|
|
|
// src/fluids.ts
|
|
var $get = Symbol["for"]("FluidValue.get");
|
|
var $observers = Symbol["for"]("FluidValue.observers");
|
|
var hasFluidValue = function hasFluidValue(arg) {
|
|
return Boolean(arg && arg[$get]);
|
|
};
|
|
var getFluidValue = function getFluidValue(arg) {
|
|
return arg && arg[$get] ? arg[$get]() : arg;
|
|
};
|
|
var getFluidObservers = function getFluidObservers(target) {
|
|
return target[$observers] || null;
|
|
};
|
|
function callFluidObserver(observer2, event) {
|
|
if (observer2.eventObserved) {
|
|
observer2.eventObserved(event);
|
|
} else {
|
|
observer2(event);
|
|
}
|
|
}
|
|
function callFluidObservers(target, event) {
|
|
var observers = target[$observers];
|
|
if (observers) {
|
|
observers.forEach(function (observer2) {
|
|
callFluidObserver(observer2, event);
|
|
});
|
|
}
|
|
}
|
|
var FluidValue = /*#__PURE__*/createClass(function FluidValue(get) {
|
|
classCallCheck(this, FluidValue);
|
|
if (!get && !(get = this.get)) {
|
|
throw Error("Unknown getter");
|
|
}
|
|
setFluidGetter(this, get);
|
|
});
|
|
$get, $observers;
|
|
var setFluidGetter = function setFluidGetter(target, get) {
|
|
return setHidden(target, $get, get);
|
|
};
|
|
function addFluidObserver(target, observer2) {
|
|
if (target[$get]) {
|
|
var observers = target[$observers];
|
|
if (!observers) {
|
|
setHidden(target, $observers, observers = /* @__PURE__ */new Set());
|
|
}
|
|
if (!observers.has(observer2)) {
|
|
observers.add(observer2);
|
|
if (target.observerAdded) {
|
|
target.observerAdded(observers.size, observer2);
|
|
}
|
|
}
|
|
}
|
|
return observer2;
|
|
}
|
|
function removeFluidObserver(target, observer2) {
|
|
var observers = target[$observers];
|
|
if (observers && observers.has(observer2)) {
|
|
var count = observers.size - 1;
|
|
if (count) {
|
|
observers["delete"](observer2);
|
|
} else {
|
|
target[$observers] = null;
|
|
}
|
|
if (target.observerRemoved) {
|
|
target.observerRemoved(count, observer2);
|
|
}
|
|
}
|
|
}
|
|
var setHidden = function setHidden(target, key, value) {
|
|
return Object.defineProperty(target, key, {
|
|
value: value,
|
|
writable: true,
|
|
configurable: true
|
|
});
|
|
};
|
|
|
|
// src/regexs.ts
|
|
var numberRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
|
|
var colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi;
|
|
var unitRegex = new RegExp("(".concat(numberRegex.source, ")(%|[a-z]+)"), "i");
|
|
var rgbaRegex = /rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi;
|
|
var cssVariableRegex = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;
|
|
|
|
// src/variableToRgba.ts
|
|
var variableToRgba = function variableToRgba(input) {
|
|
var _parseCSSVariable = parseCSSVariable(input),
|
|
_parseCSSVariable2 = slicedToArray(_parseCSSVariable, 2),
|
|
token = _parseCSSVariable2[0],
|
|
fallback = _parseCSSVariable2[1];
|
|
if (!token || isSSR()) {
|
|
return input;
|
|
}
|
|
var value = window.getComputedStyle(document.documentElement).getPropertyValue(token);
|
|
if (value) {
|
|
return value.trim();
|
|
} else if (fallback && fallback.startsWith("--")) {
|
|
var value2 = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);
|
|
if (value2) {
|
|
return value2;
|
|
} else {
|
|
return input;
|
|
}
|
|
} else if (fallback && cssVariableRegex.test(fallback)) {
|
|
return variableToRgba(fallback);
|
|
} else if (fallback) {
|
|
return fallback;
|
|
}
|
|
return input;
|
|
};
|
|
var parseCSSVariable = function parseCSSVariable(current) {
|
|
var match = cssVariableRegex.exec(current);
|
|
if (!match) return [,];
|
|
var _match = slicedToArray(match, 3),
|
|
token = _match[1],
|
|
fallback = _match[2];
|
|
return [token, fallback];
|
|
};
|
|
|
|
// src/stringInterpolation.ts
|
|
var namedColorRegex;
|
|
var rgbaRound = function rgbaRound(_, p1, p2, p3, p4) {
|
|
return "rgba(".concat(Math.round(p1), ", ").concat(Math.round(p2), ", ").concat(Math.round(p3), ", ").concat(p4, ")");
|
|
};
|
|
var createStringInterpolator2 = function createStringInterpolator2(config) {
|
|
if (!namedColorRegex) namedColorRegex = _colors ?
|
|
// match color names, ignore partial matches
|
|
new RegExp("(".concat(Object.keys(_colors).join("|"), ")(?!\\w)"), "g") :
|
|
// never match
|
|
/^\b$/;
|
|
var output = config.output.map(function (value) {
|
|
return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);
|
|
});
|
|
var keyframes = output.map(function (value) {
|
|
return value.match(numberRegex).map(Number);
|
|
});
|
|
var outputRanges = keyframes[0].map(function (_, i) {
|
|
return keyframes.map(function (values) {
|
|
if (!(i in values)) {
|
|
throw Error('The arity of each "output" value must be equal');
|
|
}
|
|
return values[i];
|
|
});
|
|
});
|
|
var interpolators = outputRanges.map(function (output2) {
|
|
return createInterpolator(objectSpread2(objectSpread2({}, config), {}, {
|
|
output: output2
|
|
}));
|
|
});
|
|
return function (input) {
|
|
var _output$find;
|
|
var missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(function (value) {
|
|
return unitRegex.test(value);
|
|
})) === null || _output$find === void 0 ? void 0 : _output$find.replace(numberRegex, ""));
|
|
var i = 0;
|
|
return output[0].replace(numberRegex, function () {
|
|
return "".concat(interpolators[i++](input)).concat(missingUnit || "");
|
|
}).replace(rgbaRegex, rgbaRound);
|
|
};
|
|
};
|
|
|
|
// src/deprecations.ts
|
|
var prefix = "react-spring: ";
|
|
var once = function once(fn) {
|
|
var func = fn;
|
|
var called = false;
|
|
if (typeof func != "function") {
|
|
throw new TypeError("".concat(prefix, "once requires a function parameter"));
|
|
}
|
|
return function () {
|
|
if (!called) {
|
|
func.apply(void 0, arguments);
|
|
called = true;
|
|
}
|
|
};
|
|
};
|
|
var warnInterpolate = once(console.warn);
|
|
function deprecateInterpolate() {
|
|
warnInterpolate("".concat(prefix, "The \"interpolate\" function is deprecated in v9 (use \"to\" instead)"));
|
|
}
|
|
var warnDirectCall = once(console.warn);
|
|
function deprecateDirectCall() {
|
|
warnDirectCall("".concat(prefix, "Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions"));
|
|
}
|
|
|
|
// src/isAnimatedString.ts
|
|
function isAnimatedString(value) {
|
|
return is.str(value) && (value[0] == "#" || /\d/.test(value) ||
|
|
// Do not identify a CSS variable as an AnimatedString if its SSR
|
|
!isSSR() && cssVariableRegex.test(value) || value in (_colors || {}));
|
|
}
|
|
|
|
// src/dom-events/scroll/index.ts
|
|
|
|
|
|
// src/dom-events/resize/resizeElement.ts
|
|
var observer;
|
|
var resizeHandlers = /* @__PURE__ */new WeakMap();
|
|
var handleObservation = function handleObservation(entries) {
|
|
return entries.forEach(function (_ref) {
|
|
var _resizeHandlers$get;
|
|
var target = _ref.target,
|
|
contentRect = _ref.contentRect;
|
|
return (_resizeHandlers$get = resizeHandlers.get(target)) === null || _resizeHandlers$get === void 0 ? void 0 : _resizeHandlers$get.forEach(function (handler) {
|
|
return handler(contentRect);
|
|
});
|
|
});
|
|
};
|
|
function resizeElement(handler, target) {
|
|
if (!observer) {
|
|
if (typeof ResizeObserver !== "undefined") {
|
|
observer = new ResizeObserver(handleObservation);
|
|
}
|
|
}
|
|
var elementHandlers = resizeHandlers.get(target);
|
|
if (!elementHandlers) {
|
|
elementHandlers = /* @__PURE__ */new Set();
|
|
resizeHandlers.set(target, elementHandlers);
|
|
}
|
|
elementHandlers.add(handler);
|
|
if (observer) {
|
|
observer.observe(target);
|
|
}
|
|
return function () {
|
|
var elementHandlers2 = resizeHandlers.get(target);
|
|
if (!elementHandlers2) return;
|
|
elementHandlers2["delete"](handler);
|
|
if (!elementHandlers2.size && observer) {
|
|
observer.unobserve(target);
|
|
}
|
|
};
|
|
}
|
|
|
|
// src/dom-events/resize/resizeWindow.ts
|
|
var listeners = /* @__PURE__ */new Set();
|
|
var cleanupWindowResizeHandler;
|
|
var createResizeHandler = function createResizeHandler() {
|
|
var handleResize = function handleResize() {
|
|
listeners.forEach(function (callback) {
|
|
return callback({
|
|
width: window.innerWidth,
|
|
height: window.innerHeight
|
|
});
|
|
});
|
|
};
|
|
window.addEventListener("resize", handleResize);
|
|
return function () {
|
|
window.removeEventListener("resize", handleResize);
|
|
};
|
|
};
|
|
var resizeWindow = function resizeWindow(callback) {
|
|
listeners.add(callback);
|
|
if (!cleanupWindowResizeHandler) {
|
|
cleanupWindowResizeHandler = createResizeHandler();
|
|
}
|
|
return function () {
|
|
listeners["delete"](callback);
|
|
if (!listeners.size && cleanupWindowResizeHandler) {
|
|
cleanupWindowResizeHandler();
|
|
cleanupWindowResizeHandler = void 0;
|
|
}
|
|
};
|
|
};
|
|
|
|
// src/dom-events/resize/index.ts
|
|
var react_spring_shared_modern_onResize = function onResize(callback) {
|
|
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
_ref2$container = _ref2.container,
|
|
container = _ref2$container === void 0 ? document.documentElement : _ref2$container;
|
|
if (container === document.documentElement) {
|
|
return resizeWindow(callback);
|
|
} else {
|
|
return resizeElement(callback, container);
|
|
}
|
|
};
|
|
|
|
// src/progress.ts
|
|
var progress = function progress(min, max, value) {
|
|
return max - min === 0 ? 1 : (value - min) / (max - min);
|
|
};
|
|
|
|
// src/dom-events/scroll/ScrollHandler.ts
|
|
var SCROLL_KEYS = {
|
|
x: {
|
|
length: "Width",
|
|
position: "Left"
|
|
},
|
|
y: {
|
|
length: "Height",
|
|
position: "Top"
|
|
}
|
|
};
|
|
var ScrollHandler = /*#__PURE__*/(/* unused pure expression or super */ null && (_createClass(function ScrollHandler(callback, container) {
|
|
var _this = this;
|
|
_classCallCheck(this, ScrollHandler);
|
|
this.createAxis = function () {
|
|
return {
|
|
current: 0,
|
|
progress: 0,
|
|
scrollLength: 0
|
|
};
|
|
};
|
|
this.updateAxis = function (axisName) {
|
|
var axis = _this.info[axisName];
|
|
var _SCROLL_KEYS$axisName = SCROLL_KEYS[axisName],
|
|
length = _SCROLL_KEYS$axisName.length,
|
|
position = _SCROLL_KEYS$axisName.position;
|
|
axis.current = _this.container["scroll".concat(position)];
|
|
axis.scrollLength = _this.container["scroll".concat(length)] - _this.container["client".concat(length)];
|
|
axis.progress = progress(0, axis.scrollLength, axis.current);
|
|
};
|
|
this.update = function () {
|
|
_this.updateAxis("x");
|
|
_this.updateAxis("y");
|
|
};
|
|
this.sendEvent = function () {
|
|
_this.callback(_this.info);
|
|
};
|
|
this.advance = function () {
|
|
_this.update();
|
|
_this.sendEvent();
|
|
};
|
|
this.callback = callback;
|
|
this.container = container;
|
|
this.info = {
|
|
time: 0,
|
|
x: this.createAxis(),
|
|
y: this.createAxis()
|
|
};
|
|
})));
|
|
|
|
// src/dom-events/scroll/index.ts
|
|
var scrollListeners = /* @__PURE__ */new WeakMap();
|
|
var resizeListeners = /* @__PURE__ */new WeakMap();
|
|
var onScrollHandlers = /* @__PURE__ */new WeakMap();
|
|
var getTarget = function getTarget(container) {
|
|
return container === document.documentElement ? window : container;
|
|
};
|
|
var react_spring_shared_modern_onScroll = function onScroll(callback) {
|
|
var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
_ref3$container = _ref3.container,
|
|
container = _ref3$container === void 0 ? document.documentElement : _ref3$container;
|
|
var containerHandlers = onScrollHandlers.get(container);
|
|
if (!containerHandlers) {
|
|
containerHandlers = /* @__PURE__ */new Set();
|
|
onScrollHandlers.set(container, containerHandlers);
|
|
}
|
|
var containerHandler = new ScrollHandler(callback, container);
|
|
containerHandlers.add(containerHandler);
|
|
if (!scrollListeners.has(container)) {
|
|
var listener = function listener() {
|
|
var _containerHandlers;
|
|
(_containerHandlers = containerHandlers) === null || _containerHandlers === void 0 || _containerHandlers.forEach(function (handler) {
|
|
return handler.advance();
|
|
});
|
|
return true;
|
|
};
|
|
scrollListeners.set(container, listener);
|
|
var target = getTarget(container);
|
|
window.addEventListener("resize", listener, {
|
|
passive: true
|
|
});
|
|
if (container !== document.documentElement) {
|
|
resizeListeners.set(container, react_spring_shared_modern_onResize(listener, {
|
|
container: container
|
|
}));
|
|
}
|
|
target.addEventListener("scroll", listener, {
|
|
passive: true
|
|
});
|
|
}
|
|
var animateScroll = scrollListeners.get(container);
|
|
raf3(animateScroll);
|
|
return function () {
|
|
raf3.cancel(animateScroll);
|
|
var containerHandlers2 = onScrollHandlers.get(container);
|
|
if (!containerHandlers2) return;
|
|
containerHandlers2["delete"](containerHandler);
|
|
if (containerHandlers2.size) return;
|
|
var listener = scrollListeners.get(container);
|
|
scrollListeners["delete"](container);
|
|
if (listener) {
|
|
var _resizeListeners$get;
|
|
getTarget(container).removeEventListener("scroll", listener);
|
|
window.removeEventListener("resize", listener);
|
|
(_resizeListeners$get = resizeListeners.get(container)) === null || _resizeListeners$get === void 0 || _resizeListeners$get();
|
|
}
|
|
};
|
|
};
|
|
|
|
// src/hooks/useConstant.ts
|
|
|
|
function react_spring_shared_modern_useConstant(init) {
|
|
var ref = useRef(null);
|
|
if (ref.current === null) {
|
|
ref.current = init();
|
|
}
|
|
return ref.current;
|
|
}
|
|
|
|
// src/hooks/useForceUpdate.ts
|
|
|
|
|
|
// src/hooks/useIsMounted.ts
|
|
|
|
|
|
// src/hooks/useIsomorphicLayoutEffect.ts
|
|
|
|
var react_spring_shared_modern_useIsomorphicLayoutEffect = isSSR() ? _react_17_0_2_react.useEffect : _react_17_0_2_react.useLayoutEffect;
|
|
|
|
// src/hooks/useIsMounted.ts
|
|
var useIsMounted = function useIsMounted() {
|
|
var isMounted = (0,_react_17_0_2_react.useRef)(false);
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
isMounted.current = true;
|
|
return function () {
|
|
isMounted.current = false;
|
|
};
|
|
}, []);
|
|
return isMounted;
|
|
};
|
|
|
|
// src/hooks/useForceUpdate.ts
|
|
function useForceUpdate() {
|
|
var update = (0,_react_17_0_2_react.useState)()[1];
|
|
var isMounted = useIsMounted();
|
|
return function () {
|
|
if (isMounted.current) {
|
|
update(Math.random());
|
|
}
|
|
};
|
|
}
|
|
|
|
// src/hooks/useMemoOne.ts
|
|
|
|
function useMemoOne(getResult, inputs) {
|
|
var _useState = (0,_react_17_0_2_react.useState)(function () {
|
|
return {
|
|
inputs: inputs,
|
|
result: getResult()
|
|
};
|
|
}),
|
|
_useState2 = slicedToArray(_useState, 1),
|
|
initial = _useState2[0];
|
|
var committed = (0,_react_17_0_2_react.useRef)();
|
|
var prevCache = committed.current;
|
|
var cache = prevCache;
|
|
if (cache) {
|
|
var useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));
|
|
if (!useCache) {
|
|
cache = {
|
|
inputs: inputs,
|
|
result: getResult()
|
|
};
|
|
}
|
|
} else {
|
|
cache = initial;
|
|
}
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
committed.current = cache;
|
|
if (prevCache == initial) {
|
|
initial.inputs = initial.result = void 0;
|
|
}
|
|
}, [cache]);
|
|
return cache.result;
|
|
}
|
|
function areInputsEqual(next, prev) {
|
|
if (next.length !== prev.length) {
|
|
return false;
|
|
}
|
|
for (var i = 0; i < next.length; i++) {
|
|
if (next[i] !== prev[i]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// src/hooks/useOnce.ts
|
|
|
|
var useOnce = function useOnce(effect) {
|
|
return (0,_react_17_0_2_react.useEffect)(effect, emptyDeps);
|
|
};
|
|
var emptyDeps = [];
|
|
|
|
// src/hooks/usePrev.ts
|
|
|
|
function usePrev(value) {
|
|
var prevRef = (0,_react_17_0_2_react.useRef)();
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
prevRef.current = value;
|
|
});
|
|
return prevRef.current;
|
|
}
|
|
|
|
// src/hooks/useReducedMotion.ts
|
|
|
|
var useReducedMotion = function useReducedMotion() {
|
|
var _useState3 = useState3(null),
|
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
reducedMotion = _useState4[0],
|
|
setReducedMotion = _useState4[1];
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
var mql = window.matchMedia("(prefers-reduced-motion)");
|
|
var handleMediaChange = function handleMediaChange(e) {
|
|
setReducedMotion(e.matches);
|
|
_assign({
|
|
skipAnimation: e.matches
|
|
});
|
|
};
|
|
handleMediaChange(mql);
|
|
if (mql.addEventListener) {
|
|
mql.addEventListener("change", handleMediaChange);
|
|
} else {
|
|
mql.addListener(handleMediaChange);
|
|
}
|
|
return function () {
|
|
if (mql.removeEventListener) {
|
|
mql.removeEventListener("change", handleMediaChange);
|
|
} else {
|
|
mql.removeListener(handleMediaChange);
|
|
}
|
|
};
|
|
}, []);
|
|
return reducedMotion;
|
|
};
|
|
|
|
// src/index.ts
|
|
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/_@react-spring_animated@9.7.5@@react-spring/animated/dist/react-spring_animated.modern.mjs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// src/Animated.ts
|
|
|
|
var $node = Symbol["for"]("Animated:node");
|
|
var isAnimated = function isAnimated(value) {
|
|
return !!value && value[$node] === value;
|
|
};
|
|
var getAnimated = function getAnimated(owner) {
|
|
return owner && owner[$node];
|
|
};
|
|
var setAnimated = function setAnimated(owner, node) {
|
|
return defineHidden(owner, $node, node);
|
|
};
|
|
var getPayload = function getPayload(owner) {
|
|
return owner && owner[$node] && owner[$node].getPayload();
|
|
};
|
|
var Animated = /*#__PURE__*/function () {
|
|
function Animated() {
|
|
classCallCheck(this, Animated);
|
|
setAnimated(this, this);
|
|
}
|
|
/** Get every `AnimatedValue` used by this node. */
|
|
createClass(Animated, [{
|
|
key: "getPayload",
|
|
value: function getPayload() {
|
|
return this.payload || [];
|
|
}
|
|
}]);
|
|
return Animated;
|
|
}();
|
|
|
|
// src/AnimatedValue.ts
|
|
|
|
var AnimatedValue = /*#__PURE__*/function (_Animated) {
|
|
inherits(AnimatedValue, _Animated);
|
|
var _super = createSuper(AnimatedValue);
|
|
function AnimatedValue(_value) {
|
|
var _this;
|
|
classCallCheck(this, AnimatedValue);
|
|
_this = _super.call(this);
|
|
_this._value = _value;
|
|
_this.done = true;
|
|
_this.durationProgress = 0;
|
|
if (is.num(_this._value)) {
|
|
_this.lastPosition = _this._value;
|
|
}
|
|
return _this;
|
|
}
|
|
/** @internal */
|
|
createClass(AnimatedValue, [{
|
|
key: "getPayload",
|
|
value: function getPayload() {
|
|
return [this];
|
|
}
|
|
}, {
|
|
key: "getValue",
|
|
value: function getValue() {
|
|
return this._value;
|
|
}
|
|
}, {
|
|
key: "setValue",
|
|
value: function setValue(value, step) {
|
|
if (is.num(value)) {
|
|
this.lastPosition = value;
|
|
if (step) {
|
|
value = Math.round(value / step) * step;
|
|
if (this.done) {
|
|
this.lastPosition = value;
|
|
}
|
|
}
|
|
}
|
|
if (this._value === value) {
|
|
return false;
|
|
}
|
|
this._value = value;
|
|
return true;
|
|
}
|
|
}, {
|
|
key: "reset",
|
|
value: function reset() {
|
|
var done = this.done;
|
|
this.done = false;
|
|
if (is.num(this._value)) {
|
|
this.elapsedTime = 0;
|
|
this.durationProgress = 0;
|
|
this.lastPosition = this._value;
|
|
if (done) this.lastVelocity = null;
|
|
this.v0 = null;
|
|
}
|
|
}
|
|
}], [{
|
|
key: "create",
|
|
value: function create(value) {
|
|
return new AnimatedValue(value);
|
|
}
|
|
}]);
|
|
return AnimatedValue;
|
|
}(Animated);
|
|
|
|
// src/AnimatedString.ts
|
|
|
|
var AnimatedString = /*#__PURE__*/function (_AnimatedValue) {
|
|
inherits(AnimatedString, _AnimatedValue);
|
|
var _super2 = createSuper(AnimatedString);
|
|
function AnimatedString(value) {
|
|
var _this2;
|
|
classCallCheck(this, AnimatedString);
|
|
_this2 = _super2.call(this, 0);
|
|
_this2._string = null;
|
|
_this2._toString = createInterpolator({
|
|
output: [value, value]
|
|
});
|
|
return _this2;
|
|
}
|
|
/** @internal */
|
|
createClass(AnimatedString, [{
|
|
key: "getValue",
|
|
value: function getValue() {
|
|
var value = this._string;
|
|
return value == null ? this._string = this._toString(this._value) : value;
|
|
}
|
|
}, {
|
|
key: "setValue",
|
|
value: function setValue(value) {
|
|
if (is.str(value)) {
|
|
if (value == this._string) {
|
|
return false;
|
|
}
|
|
this._string = value;
|
|
this._value = 1;
|
|
} else if (get(getPrototypeOf(AnimatedString.prototype), "setValue", this).call(this, value)) {
|
|
this._string = null;
|
|
} else {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}, {
|
|
key: "reset",
|
|
value: function reset(goal) {
|
|
if (goal) {
|
|
this._toString = createInterpolator({
|
|
output: [this.getValue(), goal]
|
|
});
|
|
}
|
|
this._value = 0;
|
|
get(getPrototypeOf(AnimatedString.prototype), "reset", this).call(this);
|
|
}
|
|
}], [{
|
|
key: "create",
|
|
value: function create(value) {
|
|
return new AnimatedString(value);
|
|
}
|
|
}]);
|
|
return AnimatedString;
|
|
}(AnimatedValue);
|
|
|
|
// src/AnimatedArray.ts
|
|
|
|
|
|
// src/AnimatedObject.ts
|
|
|
|
|
|
// src/context.ts
|
|
var TreeContext = {
|
|
dependencies: null
|
|
};
|
|
|
|
// src/AnimatedObject.ts
|
|
var AnimatedObject = /*#__PURE__*/function (_Animated2) {
|
|
inherits(AnimatedObject, _Animated2);
|
|
var _super3 = createSuper(AnimatedObject);
|
|
function AnimatedObject(source) {
|
|
var _this3;
|
|
classCallCheck(this, AnimatedObject);
|
|
_this3 = _super3.call(this);
|
|
_this3.source = source;
|
|
_this3.setValue(source);
|
|
return _this3;
|
|
}
|
|
createClass(AnimatedObject, [{
|
|
key: "getValue",
|
|
value: function getValue(animated) {
|
|
var values = {};
|
|
eachProp(this.source, function (source, key) {
|
|
if (isAnimated(source)) {
|
|
values[key] = source.getValue(animated);
|
|
} else if (hasFluidValue(source)) {
|
|
values[key] = getFluidValue(source);
|
|
} else if (!animated) {
|
|
values[key] = source;
|
|
}
|
|
});
|
|
return values;
|
|
}
|
|
/** Replace the raw object data */
|
|
}, {
|
|
key: "setValue",
|
|
value: function setValue(source) {
|
|
this.source = source;
|
|
this.payload = this._makePayload(source);
|
|
}
|
|
}, {
|
|
key: "reset",
|
|
value: function reset() {
|
|
if (this.payload) {
|
|
react_spring_shared_modern_each(this.payload, function (node) {
|
|
return node.reset();
|
|
});
|
|
}
|
|
}
|
|
/** Create a payload set. */
|
|
}, {
|
|
key: "_makePayload",
|
|
value: function _makePayload(source) {
|
|
if (source) {
|
|
var payload = /* @__PURE__ */new Set();
|
|
eachProp(source, this._addToPayload, payload);
|
|
return Array.from(payload);
|
|
}
|
|
}
|
|
/** Add to a payload set. */
|
|
}, {
|
|
key: "_addToPayload",
|
|
value: function _addToPayload(source) {
|
|
var _this4 = this;
|
|
if (TreeContext.dependencies && hasFluidValue(source)) {
|
|
TreeContext.dependencies.add(source);
|
|
}
|
|
var payload = getPayload(source);
|
|
if (payload) {
|
|
react_spring_shared_modern_each(payload, function (node) {
|
|
return _this4.add(node);
|
|
});
|
|
}
|
|
}
|
|
}]);
|
|
return AnimatedObject;
|
|
}(Animated);
|
|
|
|
// src/AnimatedArray.ts
|
|
var AnimatedArray = /*#__PURE__*/function (_AnimatedObject) {
|
|
inherits(AnimatedArray, _AnimatedObject);
|
|
var _super4 = createSuper(AnimatedArray);
|
|
function AnimatedArray(source) {
|
|
classCallCheck(this, AnimatedArray);
|
|
return _super4.call(this, source);
|
|
}
|
|
/** @internal */
|
|
createClass(AnimatedArray, [{
|
|
key: "getValue",
|
|
value: function getValue() {
|
|
return this.source.map(function (node) {
|
|
return node.getValue();
|
|
});
|
|
}
|
|
}, {
|
|
key: "setValue",
|
|
value: function setValue(source) {
|
|
var payload = this.getPayload();
|
|
if (source.length == payload.length) {
|
|
return payload.map(function (node, i) {
|
|
return node.setValue(source[i]);
|
|
}).some(Boolean);
|
|
}
|
|
get(getPrototypeOf(AnimatedArray.prototype), "setValue", this).call(this, source.map(makeAnimated));
|
|
return true;
|
|
}
|
|
}], [{
|
|
key: "create",
|
|
value: function create(source) {
|
|
return new AnimatedArray(source);
|
|
}
|
|
}]);
|
|
return AnimatedArray;
|
|
}(AnimatedObject);
|
|
function makeAnimated(value) {
|
|
var nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;
|
|
return nodeType.create(value);
|
|
}
|
|
|
|
// src/getAnimatedType.ts
|
|
|
|
function getAnimatedType(value) {
|
|
var parentNode = getAnimated(value);
|
|
return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;
|
|
}
|
|
|
|
// src/createHost.ts
|
|
|
|
|
|
// src/withAnimated.tsx
|
|
|
|
|
|
|
|
var withAnimated = function withAnimated(Component, host) {
|
|
var hasInstance =
|
|
// Function components must use "forwardRef" to avoid being
|
|
// re-rendered on every animation frame.
|
|
!is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;
|
|
return /*#__PURE__*/(0,_react_17_0_2_react.forwardRef)(function (givenProps, givenRef) {
|
|
var instanceRef = (0,_react_17_0_2_react.useRef)(null);
|
|
var ref = hasInstance &&
|
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
(0,_react_17_0_2_react.useCallback)(function (value) {
|
|
instanceRef.current = updateRef(givenRef, value);
|
|
}, [givenRef]);
|
|
var _getAnimatedState = getAnimatedState(givenProps, host),
|
|
_getAnimatedState2 = slicedToArray(_getAnimatedState, 2),
|
|
props = _getAnimatedState2[0],
|
|
deps = _getAnimatedState2[1];
|
|
var forceUpdate = useForceUpdate();
|
|
var callback = function callback() {
|
|
var instance = instanceRef.current;
|
|
if (hasInstance && !instance) {
|
|
return;
|
|
}
|
|
var didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;
|
|
if (didUpdate === false) {
|
|
forceUpdate();
|
|
}
|
|
};
|
|
var observer = new PropsObserver(callback, deps);
|
|
var observerRef = (0,_react_17_0_2_react.useRef)();
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
observerRef.current = observer;
|
|
react_spring_shared_modern_each(deps, function (dep) {
|
|
return addFluidObserver(dep, observer);
|
|
});
|
|
return function () {
|
|
if (observerRef.current) {
|
|
react_spring_shared_modern_each(observerRef.current.deps, function (dep) {
|
|
return removeFluidObserver(dep, observerRef.current);
|
|
});
|
|
raf.cancel(observerRef.current.update);
|
|
}
|
|
};
|
|
});
|
|
(0,_react_17_0_2_react.useEffect)(callback, []);
|
|
useOnce(function () {
|
|
return function () {
|
|
var observer2 = observerRef.current;
|
|
react_spring_shared_modern_each(observer2.deps, function (dep) {
|
|
return removeFluidObserver(dep, observer2);
|
|
});
|
|
};
|
|
});
|
|
var usedProps = host.getComponentProps(props.getValue());
|
|
return /* @__PURE__ */_react_17_0_2_react.createElement(Component, objectSpread2(objectSpread2({}, usedProps), {}, {
|
|
ref: ref
|
|
}));
|
|
});
|
|
};
|
|
var PropsObserver = /*#__PURE__*/function () {
|
|
function PropsObserver(update, deps) {
|
|
classCallCheck(this, PropsObserver);
|
|
this.update = update;
|
|
this.deps = deps;
|
|
}
|
|
createClass(PropsObserver, [{
|
|
key: "eventObserved",
|
|
value: function eventObserved(event) {
|
|
if (event.type == "change") {
|
|
raf.write(this.update);
|
|
}
|
|
}
|
|
}]);
|
|
return PropsObserver;
|
|
}();
|
|
function getAnimatedState(props, host) {
|
|
var dependencies = /* @__PURE__ */new Set();
|
|
TreeContext.dependencies = dependencies;
|
|
if (props.style) props = objectSpread2(objectSpread2({}, props), {}, {
|
|
style: host.createAnimatedStyle(props.style)
|
|
});
|
|
props = new AnimatedObject(props);
|
|
TreeContext.dependencies = null;
|
|
return [props, dependencies];
|
|
}
|
|
function updateRef(ref, value) {
|
|
if (ref) {
|
|
if (is.fun(ref)) ref(value);else ref.current = value;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
// src/createHost.ts
|
|
var cacheKey = Symbol["for"]("AnimatedComponent");
|
|
var createHost = function createHost(components) {
|
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
_ref$applyAnimatedVal = _ref.applyAnimatedValues,
|
|
applyAnimatedValues = _ref$applyAnimatedVal === void 0 ? function () {
|
|
return false;
|
|
} : _ref$applyAnimatedVal,
|
|
_ref$createAnimatedSt = _ref.createAnimatedStyle,
|
|
createAnimatedStyle = _ref$createAnimatedSt === void 0 ? function (style) {
|
|
return new AnimatedObject(style);
|
|
} : _ref$createAnimatedSt,
|
|
_ref$getComponentProp = _ref.getComponentProps,
|
|
getComponentProps = _ref$getComponentProp === void 0 ? function (props) {
|
|
return props;
|
|
} : _ref$getComponentProp;
|
|
var hostConfig = {
|
|
applyAnimatedValues: applyAnimatedValues,
|
|
createAnimatedStyle: createAnimatedStyle,
|
|
getComponentProps: getComponentProps
|
|
};
|
|
var animated = function animated(Component) {
|
|
var displayName = getDisplayName(Component) || "Anonymous";
|
|
if (is.str(Component)) {
|
|
Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));
|
|
} else {
|
|
Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));
|
|
}
|
|
Component.displayName = "Animated(".concat(displayName, ")");
|
|
return Component;
|
|
};
|
|
eachProp(components, function (Component, key) {
|
|
if (is.arr(components)) {
|
|
key = getDisplayName(Component);
|
|
}
|
|
animated[key] = animated(Component);
|
|
});
|
|
return {
|
|
animated: animated
|
|
};
|
|
};
|
|
var getDisplayName = function getDisplayName(arg) {
|
|
return is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;
|
|
};
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/_@react-spring_core@9.7.5@@react-spring/core/dist/react-spring_core.modern.mjs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["children"],
|
|
_excluded2 = (/* unused pure expression or super */ null && (["container"])),
|
|
_excluded3 = (/* unused pure expression or super */ null && (["container"])),
|
|
_excluded4 = (/* unused pure expression or super */ null && (["to", "from"])),
|
|
_excluded5 = (/* unused pure expression or super */ null && (["root", "once", "amount"])),
|
|
_excluded6 = (/* unused pure expression or super */ null && (["children"])),
|
|
_excluded7 = (/* unused pure expression or super */ null && (["items", "children"])),
|
|
_excluded8 = (/* unused pure expression or super */ null && (["items", "children"]));
|
|
// src/hooks/useChain.ts
|
|
|
|
|
|
// src/helpers.ts
|
|
|
|
function callProp(value) {
|
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
args[_key - 1] = arguments[_key];
|
|
}
|
|
return is.fun(value) ? value.apply(void 0, args) : value;
|
|
}
|
|
var matchProp = function matchProp(value, key) {
|
|
return value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));
|
|
};
|
|
var resolveProp = function resolveProp(prop, key) {
|
|
return is.obj(prop) ? key && prop[key] : prop;
|
|
};
|
|
var getDefaultProp = function getDefaultProp(props, key) {
|
|
return props["default"] === true ? props[key] : props["default"] ? props["default"][key] : void 0;
|
|
};
|
|
var noopTransform = function noopTransform(value) {
|
|
return value;
|
|
};
|
|
var getDefaultProps = function getDefaultProps(props) {
|
|
var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noopTransform;
|
|
var keys = DEFAULT_PROPS;
|
|
if (props["default"] && props["default"] !== true) {
|
|
props = props["default"];
|
|
keys = Object.keys(props);
|
|
}
|
|
var defaults2 = {};
|
|
var _iterator = createForOfIteratorHelper(keys),
|
|
_step;
|
|
try {
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
var key = _step.value;
|
|
var value = transform(props[key], key);
|
|
if (!is.und(value)) {
|
|
defaults2[key] = value;
|
|
}
|
|
}
|
|
} catch (err) {
|
|
_iterator.e(err);
|
|
} finally {
|
|
_iterator.f();
|
|
}
|
|
return defaults2;
|
|
};
|
|
var DEFAULT_PROPS = ["config", "onProps", "onStart", "onChange", "onPause", "onResume", "onRest"];
|
|
var RESERVED_PROPS = {
|
|
config: 1,
|
|
from: 1,
|
|
to: 1,
|
|
ref: 1,
|
|
loop: 1,
|
|
reset: 1,
|
|
pause: 1,
|
|
cancel: 1,
|
|
reverse: 1,
|
|
immediate: 1,
|
|
"default": 1,
|
|
delay: 1,
|
|
onProps: 1,
|
|
onStart: 1,
|
|
onChange: 1,
|
|
onPause: 1,
|
|
onResume: 1,
|
|
onRest: 1,
|
|
onResolve: 1,
|
|
// Transition props
|
|
items: 1,
|
|
trail: 1,
|
|
sort: 1,
|
|
expires: 1,
|
|
initial: 1,
|
|
enter: 1,
|
|
update: 1,
|
|
leave: 1,
|
|
children: 1,
|
|
onDestroyed: 1,
|
|
// Internal props
|
|
keys: 1,
|
|
callId: 1,
|
|
parentId: 1
|
|
};
|
|
function getForwardProps(props) {
|
|
var forward = {};
|
|
var count = 0;
|
|
eachProp(props, function (value, prop) {
|
|
if (!RESERVED_PROPS[prop]) {
|
|
forward[prop] = value;
|
|
count++;
|
|
}
|
|
});
|
|
if (count) {
|
|
return forward;
|
|
}
|
|
}
|
|
function inferTo(props) {
|
|
var to2 = getForwardProps(props);
|
|
if (to2) {
|
|
var out = {
|
|
to: to2
|
|
};
|
|
eachProp(props, function (val, key) {
|
|
return key in to2 || (out[key] = val);
|
|
});
|
|
return out;
|
|
}
|
|
return objectSpread2({}, props);
|
|
}
|
|
function computeGoal(value) {
|
|
value = getFluidValue(value);
|
|
return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? globals_exports.createStringInterpolator({
|
|
range: [0, 1],
|
|
output: [value, value]
|
|
})(1) : value;
|
|
}
|
|
function hasProps(props) {
|
|
for (var _ in props) return true;
|
|
return false;
|
|
}
|
|
function isAsyncTo(to2) {
|
|
return is.fun(to2) || is.arr(to2) && is.obj(to2[0]);
|
|
}
|
|
function detachRefs(ctrl, ref) {
|
|
var _ctrl$ref;
|
|
(_ctrl$ref = ctrl.ref) === null || _ctrl$ref === void 0 || _ctrl$ref["delete"](ctrl);
|
|
ref === null || ref === void 0 || ref["delete"](ctrl);
|
|
}
|
|
function replaceRef(ctrl, ref) {
|
|
if (ref && ctrl.ref !== ref) {
|
|
var _ctrl$ref2;
|
|
(_ctrl$ref2 = ctrl.ref) === null || _ctrl$ref2 === void 0 || _ctrl$ref2["delete"](ctrl);
|
|
ref.add(ctrl);
|
|
ctrl.ref = ref;
|
|
}
|
|
}
|
|
|
|
// src/hooks/useChain.ts
|
|
function useChain(refs, timeSteps) {
|
|
var timeFrame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e3;
|
|
useIsomorphicLayoutEffect(function () {
|
|
if (timeSteps) {
|
|
var prevDelay = 0;
|
|
each(refs, function (ref, i) {
|
|
var controllers = ref.current;
|
|
if (controllers.length) {
|
|
var delay = timeFrame * timeSteps[i];
|
|
if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;
|
|
each(controllers, function (ctrl) {
|
|
each(ctrl.queue, function (props) {
|
|
var memoizedDelayProp = props.delay;
|
|
props.delay = function (key) {
|
|
return delay + callProp(memoizedDelayProp || 0, key);
|
|
};
|
|
});
|
|
});
|
|
ref.start();
|
|
}
|
|
});
|
|
} else {
|
|
var p = Promise.resolve();
|
|
each(refs, function (ref) {
|
|
var controllers = ref.current;
|
|
if (controllers.length) {
|
|
var queues = controllers.map(function (ctrl) {
|
|
var q = ctrl.queue;
|
|
ctrl.queue = [];
|
|
return q;
|
|
});
|
|
p = p.then(function () {
|
|
each(controllers, function (ctrl, i) {
|
|
return each(queues[i] || [], function (update2) {
|
|
return ctrl.queue.push(update2);
|
|
});
|
|
});
|
|
return Promise.all(ref.start());
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
// src/hooks/useSpring.ts
|
|
|
|
|
|
// src/hooks/useSprings.ts
|
|
|
|
|
|
|
|
// src/SpringValue.ts
|
|
|
|
|
|
|
|
// src/AnimationConfig.ts
|
|
|
|
|
|
// src/constants.ts
|
|
var config = {
|
|
"default": {
|
|
tension: 170,
|
|
friction: 26
|
|
},
|
|
gentle: {
|
|
tension: 120,
|
|
friction: 14
|
|
},
|
|
wobbly: {
|
|
tension: 180,
|
|
friction: 12
|
|
},
|
|
stiff: {
|
|
tension: 210,
|
|
friction: 20
|
|
},
|
|
slow: {
|
|
tension: 280,
|
|
friction: 60
|
|
},
|
|
molasses: {
|
|
tension: 280,
|
|
friction: 120
|
|
}
|
|
};
|
|
|
|
// src/AnimationConfig.ts
|
|
var defaults = objectSpread2(objectSpread2({}, config["default"]), {}, {
|
|
mass: 1,
|
|
damping: 1,
|
|
easing: easings.linear,
|
|
clamp: false
|
|
});
|
|
var AnimationConfig = /*#__PURE__*/createClass(function AnimationConfig() {
|
|
classCallCheck(this, AnimationConfig);
|
|
/**
|
|
* The initial velocity of one or more values.
|
|
*
|
|
* @default 0
|
|
*/
|
|
this.velocity = 0;
|
|
Object.assign(this, defaults);
|
|
});
|
|
function mergeConfig(config2, newConfig, defaultConfig) {
|
|
if (defaultConfig) {
|
|
defaultConfig = objectSpread2({}, defaultConfig);
|
|
sanitizeConfig(defaultConfig, newConfig);
|
|
newConfig = objectSpread2(objectSpread2({}, defaultConfig), newConfig);
|
|
}
|
|
sanitizeConfig(config2, newConfig);
|
|
Object.assign(config2, newConfig);
|
|
for (var key in defaults) {
|
|
if (config2[key] == null) {
|
|
config2[key] = defaults[key];
|
|
}
|
|
}
|
|
var frequency = config2.frequency,
|
|
damping = config2.damping;
|
|
var mass = config2.mass;
|
|
if (!is.und(frequency)) {
|
|
if (frequency < 0.01) frequency = 0.01;
|
|
if (damping < 0) damping = 0;
|
|
config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;
|
|
config2.friction = 4 * Math.PI * damping * mass / frequency;
|
|
}
|
|
return config2;
|
|
}
|
|
function sanitizeConfig(config2, props) {
|
|
if (!is.und(props.decay)) {
|
|
config2.duration = void 0;
|
|
} else {
|
|
var isTensionConfig = !is.und(props.tension) || !is.und(props.friction);
|
|
if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {
|
|
config2.duration = void 0;
|
|
config2.decay = void 0;
|
|
}
|
|
if (isTensionConfig) {
|
|
config2.frequency = void 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// src/Animation.ts
|
|
var emptyArray = [];
|
|
var Animation = /*#__PURE__*/createClass(function Animation() {
|
|
classCallCheck(this, Animation);
|
|
this.changed = false;
|
|
this.values = emptyArray;
|
|
this.toValues = null;
|
|
this.fromValues = emptyArray;
|
|
this.config = new AnimationConfig();
|
|
this.immediate = false;
|
|
});
|
|
|
|
// src/scheduleProps.ts
|
|
|
|
function scheduleProps(callId, _ref) {
|
|
var key = _ref.key,
|
|
props = _ref.props,
|
|
defaultProps = _ref.defaultProps,
|
|
state = _ref.state,
|
|
actions = _ref.actions;
|
|
return new Promise(function (resolve, reject) {
|
|
var _props$cancel;
|
|
var delay;
|
|
var timeout;
|
|
var cancel = matchProp((_props$cancel = props.cancel) !== null && _props$cancel !== void 0 ? _props$cancel : defaultProps === null || defaultProps === void 0 ? void 0 : defaultProps.cancel, key);
|
|
if (cancel) {
|
|
onStart();
|
|
} else {
|
|
if (!is.und(props.pause)) {
|
|
state.paused = matchProp(props.pause, key);
|
|
}
|
|
var pause = defaultProps === null || defaultProps === void 0 ? void 0 : defaultProps.pause;
|
|
if (pause !== true) {
|
|
pause = state.paused || matchProp(pause, key);
|
|
}
|
|
delay = callProp(props.delay || 0, key);
|
|
if (pause) {
|
|
state.resumeQueue.add(onResume);
|
|
actions.pause();
|
|
} else {
|
|
actions.resume();
|
|
onResume();
|
|
}
|
|
}
|
|
function onPause() {
|
|
state.resumeQueue.add(onResume);
|
|
state.timeouts["delete"](timeout);
|
|
timeout.cancel();
|
|
delay = timeout.time - raf.now();
|
|
}
|
|
function onResume() {
|
|
if (delay > 0 && !globals_exports.skipAnimation) {
|
|
state.delayed = true;
|
|
timeout = raf.setTimeout(onStart, delay);
|
|
state.pauseQueue.add(onPause);
|
|
state.timeouts.add(timeout);
|
|
} else {
|
|
onStart();
|
|
}
|
|
}
|
|
function onStart() {
|
|
if (state.delayed) {
|
|
state.delayed = false;
|
|
}
|
|
state.pauseQueue["delete"](onPause);
|
|
state.timeouts["delete"](timeout);
|
|
if (callId <= (state.cancelId || 0)) {
|
|
cancel = true;
|
|
}
|
|
try {
|
|
actions.start(objectSpread2(objectSpread2({}, props), {}, {
|
|
callId: callId,
|
|
cancel: cancel
|
|
}), resolve);
|
|
} catch (err) {
|
|
reject(err);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// src/runAsync.ts
|
|
|
|
|
|
// src/AnimationResult.ts
|
|
var getCombinedResult = function getCombinedResult(target, results) {
|
|
return results.length == 1 ? results[0] : results.some(function (result) {
|
|
return result.cancelled;
|
|
}) ? getCancelledResult(target.get()) : results.every(function (result) {
|
|
return result.noop;
|
|
}) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(function (result) {
|
|
return result.finished;
|
|
}));
|
|
};
|
|
var getNoopResult = function getNoopResult(value) {
|
|
return {
|
|
value: value,
|
|
noop: true,
|
|
finished: true,
|
|
cancelled: false
|
|
};
|
|
};
|
|
var getFinishedResult = function getFinishedResult(value, finished) {
|
|
var cancelled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
return {
|
|
value: value,
|
|
finished: finished,
|
|
cancelled: cancelled
|
|
};
|
|
};
|
|
var getCancelledResult = function getCancelledResult(value) {
|
|
return {
|
|
value: value,
|
|
cancelled: true,
|
|
finished: false
|
|
};
|
|
};
|
|
|
|
// src/runAsync.ts
|
|
function runAsync(to2, props, state, target) {
|
|
var callId = props.callId,
|
|
parentId = props.parentId,
|
|
onRest = props.onRest;
|
|
var prevTo = state.asyncTo,
|
|
prevPromise = state.promise;
|
|
if (!parentId && to2 === prevTo && !props.reset) {
|
|
return prevPromise;
|
|
}
|
|
return state.promise = asyncToGenerator( /*#__PURE__*/regeneratorRuntime().mark(function _callee3() {
|
|
var defaultProps, preventBail, bail, bailPromise, bailIfEnded, animate, result, animating;
|
|
return regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
case 0:
|
|
state.asyncId = callId;
|
|
state.asyncTo = to2;
|
|
defaultProps = getDefaultProps(props, function (value, key) {
|
|
return (
|
|
// The `onRest` prop is only called when the `runAsync` promise is resolved.
|
|
key === "onRest" ? void 0 : value
|
|
);
|
|
});
|
|
bailPromise = new Promise(function (resolve, reject) {
|
|
return preventBail = resolve, bail = reject;
|
|
});
|
|
bailIfEnded = function bailIfEnded(bailSignal) {
|
|
var bailResult =
|
|
// The `cancel` prop or `stop` method was used.
|
|
callId <= (state.cancelId || 0) && getCancelledResult(target) ||
|
|
// The async `to` prop was replaced.
|
|
callId !== state.asyncId && getFinishedResult(target, false);
|
|
if (bailResult) {
|
|
bailSignal.result = bailResult;
|
|
bail(bailSignal);
|
|
throw bailSignal;
|
|
}
|
|
};
|
|
animate = function animate(arg1, arg2) {
|
|
var bailSignal = new BailSignal();
|
|
var skipAnimationSignal = new SkipAnimationSignal();
|
|
return asyncToGenerator( /*#__PURE__*/regeneratorRuntime().mark(function _callee() {
|
|
var props2, result2;
|
|
return regeneratorRuntime().wrap(function _callee$(_context) {
|
|
while (1) switch (_context.prev = _context.next) {
|
|
case 0:
|
|
if (!globals_exports.skipAnimation) {
|
|
_context.next = 5;
|
|
break;
|
|
}
|
|
stopAsync(state);
|
|
skipAnimationSignal.result = getFinishedResult(target, false);
|
|
bail(skipAnimationSignal);
|
|
throw skipAnimationSignal;
|
|
case 5:
|
|
bailIfEnded(bailSignal);
|
|
props2 = is.obj(arg1) ? objectSpread2({}, arg1) : objectSpread2(objectSpread2({}, arg2), {}, {
|
|
to: arg1
|
|
});
|
|
props2.parentId = callId;
|
|
eachProp(defaultProps, function (value, key) {
|
|
if (is.und(props2[key])) {
|
|
props2[key] = value;
|
|
}
|
|
});
|
|
_context.next = 11;
|
|
return target.start(props2);
|
|
case 11:
|
|
result2 = _context.sent;
|
|
bailIfEnded(bailSignal);
|
|
if (!state.paused) {
|
|
_context.next = 16;
|
|
break;
|
|
}
|
|
_context.next = 16;
|
|
return new Promise(function (resume) {
|
|
state.resumeQueue.add(resume);
|
|
});
|
|
case 16:
|
|
return _context.abrupt("return", result2);
|
|
case 17:
|
|
case "end":
|
|
return _context.stop();
|
|
}
|
|
}, _callee);
|
|
}))();
|
|
};
|
|
if (!globals_exports.skipAnimation) {
|
|
_context3.next = 9;
|
|
break;
|
|
}
|
|
stopAsync(state);
|
|
return _context3.abrupt("return", getFinishedResult(target, false));
|
|
case 9:
|
|
_context3.prev = 9;
|
|
if (is.arr(to2)) {
|
|
animating = function () {
|
|
var _ref4 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime().mark(function _callee2(queue) {
|
|
var _iterator2, _step2, props2;
|
|
return regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
case 0:
|
|
_iterator2 = createForOfIteratorHelper(queue);
|
|
_context2.prev = 1;
|
|
_iterator2.s();
|
|
case 3:
|
|
if ((_step2 = _iterator2.n()).done) {
|
|
_context2.next = 9;
|
|
break;
|
|
}
|
|
props2 = _step2.value;
|
|
_context2.next = 7;
|
|
return animate(props2);
|
|
case 7:
|
|
_context2.next = 3;
|
|
break;
|
|
case 9:
|
|
_context2.next = 14;
|
|
break;
|
|
case 11:
|
|
_context2.prev = 11;
|
|
_context2.t0 = _context2["catch"](1);
|
|
_iterator2.e(_context2.t0);
|
|
case 14:
|
|
_context2.prev = 14;
|
|
_iterator2.f();
|
|
return _context2.finish(14);
|
|
case 17:
|
|
case "end":
|
|
return _context2.stop();
|
|
}
|
|
}, _callee2, null, [[1, 11, 14, 17]]);
|
|
}));
|
|
return function (_x) {
|
|
return _ref4.apply(this, arguments);
|
|
};
|
|
}()(to2);
|
|
} else {
|
|
animating = Promise.resolve(to2(animate, target.stop.bind(target)));
|
|
}
|
|
_context3.next = 13;
|
|
return Promise.all([animating.then(preventBail), bailPromise]);
|
|
case 13:
|
|
result = getFinishedResult(target.get(), true, false);
|
|
_context3.next = 27;
|
|
break;
|
|
case 16:
|
|
_context3.prev = 16;
|
|
_context3.t0 = _context3["catch"](9);
|
|
if (!(_context3.t0 instanceof BailSignal)) {
|
|
_context3.next = 22;
|
|
break;
|
|
}
|
|
result = _context3.t0.result;
|
|
_context3.next = 27;
|
|
break;
|
|
case 22:
|
|
if (!(_context3.t0 instanceof SkipAnimationSignal)) {
|
|
_context3.next = 26;
|
|
break;
|
|
}
|
|
result = _context3.t0.result;
|
|
_context3.next = 27;
|
|
break;
|
|
case 26:
|
|
throw _context3.t0;
|
|
case 27:
|
|
_context3.prev = 27;
|
|
if (callId == state.asyncId) {
|
|
state.asyncId = parentId;
|
|
state.asyncTo = parentId ? prevTo : void 0;
|
|
state.promise = parentId ? prevPromise : void 0;
|
|
}
|
|
return _context3.finish(27);
|
|
case 30:
|
|
if (is.fun(onRest)) {
|
|
raf.batchedUpdates(function () {
|
|
onRest(result, target, target.item);
|
|
});
|
|
}
|
|
return _context3.abrupt("return", result);
|
|
case 32:
|
|
case "end":
|
|
return _context3.stop();
|
|
}
|
|
}, _callee3, null, [[9, 16, 27, 30]]);
|
|
}))();
|
|
}
|
|
function stopAsync(state, cancelId) {
|
|
flush(state.timeouts, function (t) {
|
|
return t.cancel();
|
|
});
|
|
state.pauseQueue.clear();
|
|
state.resumeQueue.clear();
|
|
state.asyncId = state.asyncTo = state.promise = void 0;
|
|
if (cancelId) state.cancelId = cancelId;
|
|
}
|
|
var BailSignal = /*#__PURE__*/function (_Error) {
|
|
inherits(BailSignal, _Error);
|
|
var _super = createSuper(BailSignal);
|
|
function BailSignal() {
|
|
classCallCheck(this, BailSignal);
|
|
return _super.call(this, "An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.");
|
|
}
|
|
return createClass(BailSignal);
|
|
}( /*#__PURE__*/wrapNativeSuper(Error));
|
|
var SkipAnimationSignal = /*#__PURE__*/function (_Error2) {
|
|
inherits(SkipAnimationSignal, _Error2);
|
|
var _super2 = createSuper(SkipAnimationSignal);
|
|
function SkipAnimationSignal() {
|
|
classCallCheck(this, SkipAnimationSignal);
|
|
return _super2.call(this, "SkipAnimationSignal");
|
|
}
|
|
return createClass(SkipAnimationSignal);
|
|
}( /*#__PURE__*/wrapNativeSuper(Error));
|
|
|
|
// src/FrameValue.ts
|
|
|
|
|
|
var isFrameValue = function isFrameValue(value) {
|
|
return value instanceof FrameValue;
|
|
};
|
|
var nextId = 1;
|
|
var FrameValue = /*#__PURE__*/function (_FluidValue) {
|
|
inherits(FrameValue, _FluidValue);
|
|
var _super3 = createSuper(FrameValue);
|
|
function FrameValue() {
|
|
var _this;
|
|
classCallCheck(this, FrameValue);
|
|
_this = _super3.apply(this, arguments);
|
|
_this.id = nextId++;
|
|
_this._priority = 0;
|
|
return _this;
|
|
}
|
|
createClass(FrameValue, [{
|
|
key: "priority",
|
|
get: function get() {
|
|
return this._priority;
|
|
},
|
|
set: function set(priority) {
|
|
if (this._priority != priority) {
|
|
this._priority = priority;
|
|
this._onPriorityChange(priority);
|
|
}
|
|
}
|
|
/** Get the current value */
|
|
}, {
|
|
key: "get",
|
|
value: function get() {
|
|
var node = getAnimated(this);
|
|
return node && node.getValue();
|
|
}
|
|
/** Create a spring that maps our value to another value */
|
|
}, {
|
|
key: "to",
|
|
value: function to() {
|
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
args[_key2] = arguments[_key2];
|
|
}
|
|
return globals_exports.to(this, args);
|
|
}
|
|
/** @deprecated Use the `to` method instead. */
|
|
}, {
|
|
key: "interpolate",
|
|
value: function interpolate() {
|
|
deprecateInterpolate();
|
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
args[_key3] = arguments[_key3];
|
|
}
|
|
return globals_exports.to(this, args);
|
|
}
|
|
}, {
|
|
key: "toJSON",
|
|
value: function toJSON() {
|
|
return this.get();
|
|
}
|
|
}, {
|
|
key: "observerAdded",
|
|
value: function observerAdded(count) {
|
|
if (count == 1) this._attach();
|
|
}
|
|
}, {
|
|
key: "observerRemoved",
|
|
value: function observerRemoved(count) {
|
|
if (count == 0) this._detach();
|
|
}
|
|
/** Called when the first child is added. */
|
|
}, {
|
|
key: "_attach",
|
|
value: function _attach() {}
|
|
/** Called when the last child is removed. */
|
|
}, {
|
|
key: "_detach",
|
|
value: function _detach() {}
|
|
/** Tell our children about our new value */
|
|
}, {
|
|
key: "_onChange",
|
|
value: function _onChange(value) {
|
|
var idle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
callFluidObservers(this, {
|
|
type: "change",
|
|
parent: this,
|
|
value: value,
|
|
idle: idle
|
|
});
|
|
}
|
|
/** Tell our children about our new priority */
|
|
}, {
|
|
key: "_onPriorityChange",
|
|
value: function _onPriorityChange(priority) {
|
|
if (!this.idle) {
|
|
frameLoop.sort(this);
|
|
}
|
|
callFluidObservers(this, {
|
|
type: "priority",
|
|
parent: this,
|
|
priority: priority
|
|
});
|
|
}
|
|
}]);
|
|
return FrameValue;
|
|
}(FluidValue);
|
|
|
|
// src/SpringPhase.ts
|
|
var $P = Symbol["for"]("SpringPhase");
|
|
var HAS_ANIMATED = 1;
|
|
var IS_ANIMATING = 2;
|
|
var IS_PAUSED = 4;
|
|
var hasAnimated = function hasAnimated(target) {
|
|
return (target[$P] & HAS_ANIMATED) > 0;
|
|
};
|
|
var isAnimating = function isAnimating(target) {
|
|
return (target[$P] & IS_ANIMATING) > 0;
|
|
};
|
|
var isPaused = function isPaused(target) {
|
|
return (target[$P] & IS_PAUSED) > 0;
|
|
};
|
|
var setActiveBit = function setActiveBit(target, active) {
|
|
return active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;
|
|
};
|
|
var setPausedBit = function setPausedBit(target, paused) {
|
|
return paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;
|
|
};
|
|
|
|
// src/SpringValue.ts
|
|
var SpringValue = /*#__PURE__*/function (_FrameValue) {
|
|
inherits(SpringValue, _FrameValue);
|
|
var _super4 = createSuper(SpringValue);
|
|
function SpringValue(arg1, arg2) {
|
|
var _this2;
|
|
classCallCheck(this, SpringValue);
|
|
_this2 = _super4.call(this);
|
|
/** The animation state */
|
|
_this2.animation = new Animation();
|
|
/** Some props have customizable default values */
|
|
_this2.defaultProps = {};
|
|
/** The state for `runAsync` calls */
|
|
_this2._state = {
|
|
paused: false,
|
|
delayed: false,
|
|
pauseQueue: /* @__PURE__ */new Set(),
|
|
resumeQueue: /* @__PURE__ */new Set(),
|
|
timeouts: /* @__PURE__ */new Set()
|
|
};
|
|
/** The promise resolvers of pending `start` calls */
|
|
_this2._pendingCalls = /* @__PURE__ */new Set();
|
|
/** The counter for tracking `scheduleProps` calls */
|
|
_this2._lastCallId = 0;
|
|
/** The last `scheduleProps` call that changed the `to` prop */
|
|
_this2._lastToId = 0;
|
|
_this2._memoizedDuration = 0;
|
|
if (!is.und(arg1) || !is.und(arg2)) {
|
|
var props = is.obj(arg1) ? objectSpread2({}, arg1) : objectSpread2(objectSpread2({}, arg2), {}, {
|
|
from: arg1
|
|
});
|
|
if (is.und(props["default"])) {
|
|
props["default"] = true;
|
|
}
|
|
_this2.start(props);
|
|
}
|
|
return _this2;
|
|
}
|
|
/** Equals true when not advancing on each frame. */
|
|
createClass(SpringValue, [{
|
|
key: "idle",
|
|
get: function get() {
|
|
return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);
|
|
}
|
|
}, {
|
|
key: "goal",
|
|
get: function get() {
|
|
return getFluidValue(this.animation.to);
|
|
}
|
|
}, {
|
|
key: "velocity",
|
|
get: function get() {
|
|
var node = getAnimated(this);
|
|
return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(function (node2) {
|
|
return node2.lastVelocity || 0;
|
|
});
|
|
}
|
|
/**
|
|
* When true, this value has been animated at least once.
|
|
*/
|
|
}, {
|
|
key: "hasAnimated",
|
|
get: function get() {
|
|
return hasAnimated(this);
|
|
}
|
|
/**
|
|
* When true, this value has an unfinished animation,
|
|
* which is either active or paused.
|
|
*/
|
|
}, {
|
|
key: "isAnimating",
|
|
get: function get() {
|
|
return isAnimating(this);
|
|
}
|
|
/**
|
|
* When true, all current and future animations are paused.
|
|
*/
|
|
}, {
|
|
key: "isPaused",
|
|
get: function get() {
|
|
return isPaused(this);
|
|
}
|
|
/**
|
|
*
|
|
*
|
|
*/
|
|
}, {
|
|
key: "isDelayed",
|
|
get: function get() {
|
|
return this._state.delayed;
|
|
}
|
|
/** Advance the current animation by a number of milliseconds */
|
|
}, {
|
|
key: "advance",
|
|
value: function advance(dt) {
|
|
var _this3 = this;
|
|
var idle = true;
|
|
var changed = false;
|
|
var anim = this.animation;
|
|
var toValues = anim.toValues;
|
|
var config2 = anim.config;
|
|
var payload = getPayload(anim.to);
|
|
if (!payload && hasFluidValue(anim.to)) {
|
|
toValues = toArray(getFluidValue(anim.to));
|
|
}
|
|
anim.values.forEach(function (node2, i) {
|
|
if (node2.done) return;
|
|
var to2 =
|
|
// Animated strings always go from 0 to 1.
|
|
node2.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];
|
|
var finished = anim.immediate;
|
|
var position = to2;
|
|
if (!finished) {
|
|
position = node2.lastPosition;
|
|
if (config2.tension <= 0) {
|
|
node2.done = true;
|
|
return;
|
|
}
|
|
var elapsed = node2.elapsedTime += dt;
|
|
var from = anim.fromValues[i];
|
|
var v0 = node2.v0 != null ? node2.v0 : node2.v0 = is.arr(config2.velocity) ? config2.velocity[i] : config2.velocity;
|
|
var velocity;
|
|
var precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3));
|
|
if (!is.und(config2.duration)) {
|
|
var p = 1;
|
|
if (config2.duration > 0) {
|
|
if (_this3._memoizedDuration !== config2.duration) {
|
|
_this3._memoizedDuration = config2.duration;
|
|
if (node2.durationProgress > 0) {
|
|
node2.elapsedTime = config2.duration * node2.durationProgress;
|
|
elapsed = node2.elapsedTime += dt;
|
|
}
|
|
}
|
|
p = (config2.progress || 0) + elapsed / _this3._memoizedDuration;
|
|
p = p > 1 ? 1 : p < 0 ? 0 : p;
|
|
node2.durationProgress = p;
|
|
}
|
|
position = from + config2.easing(p) * (to2 - from);
|
|
velocity = (position - node2.lastPosition) / dt;
|
|
finished = p == 1;
|
|
} else if (config2.decay) {
|
|
var decay = config2.decay === true ? 0.998 : config2.decay;
|
|
var e = Math.exp(-(1 - decay) * elapsed);
|
|
position = from + v0 / (1 - decay) * (1 - e);
|
|
finished = Math.abs(node2.lastPosition - position) <= precision;
|
|
velocity = v0 * e;
|
|
} else {
|
|
velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity;
|
|
var restVelocity = config2.restVelocity || precision / 10;
|
|
var bounceFactor = config2.clamp ? 0 : config2.bounce;
|
|
var canBounce = !is.und(bounceFactor);
|
|
var isGrowing = from == to2 ? node2.v0 > 0 : from < to2;
|
|
var isMoving;
|
|
var isBouncing = false;
|
|
var step = 1;
|
|
var numSteps = Math.ceil(dt / step);
|
|
for (var n = 0; n < numSteps; ++n) {
|
|
isMoving = Math.abs(velocity) > restVelocity;
|
|
if (!isMoving) {
|
|
finished = Math.abs(to2 - position) <= precision;
|
|
if (finished) {
|
|
break;
|
|
}
|
|
}
|
|
if (canBounce) {
|
|
isBouncing = position == to2 || position > to2 == isGrowing;
|
|
if (isBouncing) {
|
|
velocity = -velocity * bounceFactor;
|
|
position = to2;
|
|
}
|
|
}
|
|
var springForce = -config2.tension * 1e-6 * (position - to2);
|
|
var dampingForce = -config2.friction * 1e-3 * velocity;
|
|
var acceleration = (springForce + dampingForce) / config2.mass;
|
|
velocity = velocity + acceleration * step;
|
|
position = position + velocity * step;
|
|
}
|
|
}
|
|
node2.lastVelocity = velocity;
|
|
if (Number.isNaN(position)) {
|
|
console.warn("Got NaN while animating:", _this3);
|
|
finished = true;
|
|
}
|
|
}
|
|
if (payload && !payload[i].done) {
|
|
finished = false;
|
|
}
|
|
if (finished) {
|
|
node2.done = true;
|
|
} else {
|
|
idle = false;
|
|
}
|
|
if (node2.setValue(position, config2.round)) {
|
|
changed = true;
|
|
}
|
|
});
|
|
var node = getAnimated(this);
|
|
var currVal = node.getValue();
|
|
if (idle) {
|
|
var finalVal = getFluidValue(anim.to);
|
|
if ((currVal !== finalVal || changed) && !config2.decay) {
|
|
node.setValue(finalVal);
|
|
this._onChange(finalVal);
|
|
} else if (changed && config2.decay) {
|
|
this._onChange(currVal);
|
|
}
|
|
this._stop();
|
|
} else if (changed) {
|
|
this._onChange(currVal);
|
|
}
|
|
}
|
|
/** Set the current value, while stopping the current animation */
|
|
}, {
|
|
key: "set",
|
|
value: function set(value) {
|
|
var _this4 = this;
|
|
raf.batchedUpdates(function () {
|
|
_this4._stop();
|
|
_this4._focus(value);
|
|
_this4._set(value);
|
|
});
|
|
return this;
|
|
}
|
|
/**
|
|
* Freeze the active animation in time, as well as any updates merged
|
|
* before `resume` is called.
|
|
*/
|
|
}, {
|
|
key: "pause",
|
|
value: function pause() {
|
|
this._update({
|
|
pause: true
|
|
});
|
|
}
|
|
/** Resume the animation if paused. */
|
|
}, {
|
|
key: "resume",
|
|
value: function resume() {
|
|
this._update({
|
|
pause: false
|
|
});
|
|
}
|
|
/** Skip to the end of the current animation. */
|
|
}, {
|
|
key: "finish",
|
|
value: function finish() {
|
|
var _this5 = this;
|
|
if (isAnimating(this)) {
|
|
var _this$animation = this.animation,
|
|
to2 = _this$animation.to,
|
|
config2 = _this$animation.config;
|
|
raf.batchedUpdates(function () {
|
|
_this5._onStart();
|
|
if (!config2.decay) {
|
|
_this5._set(to2, false);
|
|
}
|
|
_this5._stop();
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
/** Push props into the pending queue. */
|
|
}, {
|
|
key: "update",
|
|
value: function update(props) {
|
|
var queue = this.queue || (this.queue = []);
|
|
queue.push(props);
|
|
return this;
|
|
}
|
|
}, {
|
|
key: "start",
|
|
value: function start(to2, arg2) {
|
|
var _this6 = this;
|
|
var queue;
|
|
if (!is.und(to2)) {
|
|
queue = [is.obj(to2) ? to2 : objectSpread2(objectSpread2({}, arg2), {}, {
|
|
to: to2
|
|
})];
|
|
} else {
|
|
queue = this.queue || [];
|
|
this.queue = [];
|
|
}
|
|
return Promise.all(queue.map(function (props) {
|
|
var up = _this6._update(props);
|
|
return up;
|
|
})).then(function (results) {
|
|
return getCombinedResult(_this6, results);
|
|
});
|
|
}
|
|
/**
|
|
* Stop the current animation, and cancel any delayed updates.
|
|
*
|
|
* Pass `true` to call `onRest` with `cancelled: true`.
|
|
*/
|
|
}, {
|
|
key: "stop",
|
|
value: function stop(cancel) {
|
|
var _this7 = this;
|
|
var to2 = this.animation.to;
|
|
this._focus(this.get());
|
|
stopAsync(this._state, cancel && this._lastCallId);
|
|
raf.batchedUpdates(function () {
|
|
return _this7._stop(to2, cancel);
|
|
});
|
|
return this;
|
|
}
|
|
/** Restart the animation. */
|
|
}, {
|
|
key: "reset",
|
|
value: function reset() {
|
|
this._update({
|
|
reset: true
|
|
});
|
|
}
|
|
/** @internal */
|
|
}, {
|
|
key: "eventObserved",
|
|
value: function eventObserved(event) {
|
|
if (event.type == "change") {
|
|
this._start();
|
|
} else if (event.type == "priority") {
|
|
this.priority = event.priority + 1;
|
|
}
|
|
}
|
|
/**
|
|
* Parse the `to` and `from` range from the given `props` object.
|
|
*
|
|
* This also ensures the initial value is available to animated components
|
|
* during the render phase.
|
|
*/
|
|
}, {
|
|
key: "_prepareNode",
|
|
value: function _prepareNode(props) {
|
|
var key = this.key || "";
|
|
var to2 = props.to,
|
|
from = props.from;
|
|
to2 = is.obj(to2) ? to2[key] : to2;
|
|
if (to2 == null || isAsyncTo(to2)) {
|
|
to2 = void 0;
|
|
}
|
|
from = is.obj(from) ? from[key] : from;
|
|
if (from == null) {
|
|
from = void 0;
|
|
}
|
|
var range = {
|
|
to: to2,
|
|
from: from
|
|
};
|
|
if (!hasAnimated(this)) {
|
|
if (props.reverse) {
|
|
var _ref5 = [from, to2];
|
|
to2 = _ref5[0];
|
|
from = _ref5[1];
|
|
}
|
|
from = getFluidValue(from);
|
|
if (!is.und(from)) {
|
|
this._set(from);
|
|
} else if (!getAnimated(this)) {
|
|
this._set(to2);
|
|
}
|
|
}
|
|
return range;
|
|
}
|
|
/** Every update is processed by this method before merging. */
|
|
}, {
|
|
key: "_update",
|
|
value: function _update(_ref6, isLoop) {
|
|
var _this8 = this;
|
|
var props = Object.assign({}, (objectDestructuringEmpty(_ref6), _ref6));
|
|
var key = this.key,
|
|
defaultProps = this.defaultProps;
|
|
if (props["default"]) Object.assign(defaultProps, getDefaultProps(props, function (value, prop) {
|
|
return /^on/.test(prop) ? resolveProp(value, key) : value;
|
|
}));
|
|
mergeActiveFn(this, props, "onProps");
|
|
sendEvent(this, "onProps", props, this);
|
|
var range = this._prepareNode(props);
|
|
if (Object.isFrozen(this)) {
|
|
throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?");
|
|
}
|
|
var state = this._state;
|
|
return scheduleProps(++this._lastCallId, {
|
|
key: key,
|
|
props: props,
|
|
defaultProps: defaultProps,
|
|
state: state,
|
|
actions: {
|
|
pause: function pause() {
|
|
if (!isPaused(_this8)) {
|
|
setPausedBit(_this8, true);
|
|
flushCalls(state.pauseQueue);
|
|
sendEvent(_this8, "onPause", getFinishedResult(_this8, checkFinished(_this8, _this8.animation.to)), _this8);
|
|
}
|
|
},
|
|
resume: function resume() {
|
|
if (isPaused(_this8)) {
|
|
setPausedBit(_this8, false);
|
|
if (isAnimating(_this8)) {
|
|
_this8._resume();
|
|
}
|
|
flushCalls(state.resumeQueue);
|
|
sendEvent(_this8, "onResume", getFinishedResult(_this8, checkFinished(_this8, _this8.animation.to)), _this8);
|
|
}
|
|
},
|
|
start: this._merge.bind(this, range)
|
|
}
|
|
}).then(function (result) {
|
|
if (props.loop && result.finished && !(isLoop && result.noop)) {
|
|
var nextProps = createLoopUpdate(props);
|
|
if (nextProps) {
|
|
return _this8._update(nextProps, true);
|
|
}
|
|
}
|
|
return result;
|
|
});
|
|
}
|
|
/** Merge props into the current animation */
|
|
}, {
|
|
key: "_merge",
|
|
value: function _merge(range, props, resolve) {
|
|
var _this9 = this;
|
|
if (props.cancel) {
|
|
this.stop(true);
|
|
return resolve(getCancelledResult(this));
|
|
}
|
|
var hasToProp = !is.und(range.to);
|
|
var hasFromProp = !is.und(range.from);
|
|
if (hasToProp || hasFromProp) {
|
|
if (props.callId > this._lastToId) {
|
|
this._lastToId = props.callId;
|
|
} else {
|
|
return resolve(getCancelledResult(this));
|
|
}
|
|
}
|
|
var key = this.key,
|
|
defaultProps = this.defaultProps,
|
|
anim = this.animation;
|
|
var prevTo = anim.to,
|
|
prevFrom = anim.from;
|
|
var _range$to = range.to,
|
|
to2 = _range$to === void 0 ? prevTo : _range$to,
|
|
_range$from = range.from,
|
|
from = _range$from === void 0 ? prevFrom : _range$from;
|
|
if (hasFromProp && !hasToProp && (!props["default"] || is.und(to2))) {
|
|
to2 = from;
|
|
}
|
|
if (props.reverse) {
|
|
var _ref7 = [from, to2];
|
|
to2 = _ref7[0];
|
|
from = _ref7[1];
|
|
}
|
|
var hasFromChanged = !isEqual(from, prevFrom);
|
|
if (hasFromChanged) {
|
|
anim.from = from;
|
|
}
|
|
from = getFluidValue(from);
|
|
var hasToChanged = !isEqual(to2, prevTo);
|
|
if (hasToChanged) {
|
|
this._focus(to2);
|
|
}
|
|
var hasAsyncTo = isAsyncTo(props.to);
|
|
var config2 = anim.config;
|
|
var decay = config2.decay,
|
|
velocity = config2.velocity;
|
|
if (hasToProp || hasFromProp) {
|
|
config2.velocity = 0;
|
|
}
|
|
if (props.config && !hasAsyncTo) {
|
|
mergeConfig(config2, callProp(props.config, key),
|
|
// Avoid calling the same "config" prop twice.
|
|
props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);
|
|
}
|
|
var node = getAnimated(this);
|
|
if (!node || is.und(to2)) {
|
|
return resolve(getFinishedResult(this, true));
|
|
}
|
|
var reset =
|
|
// When `reset` is undefined, the `from` prop implies `reset: true`,
|
|
// except for declarative updates. When `reset` is defined, there
|
|
// must exist a value to animate from.
|
|
is.und(props.reset) ? hasFromProp && !props["default"] : !is.und(from) && matchProp(props.reset, key);
|
|
var value = reset ? from : this.get();
|
|
var goal = computeGoal(to2);
|
|
var isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);
|
|
var immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));
|
|
if (hasToChanged) {
|
|
var nodeType = getAnimatedType(to2);
|
|
if (nodeType !== node.constructor) {
|
|
if (immediate) {
|
|
node = this._set(goal);
|
|
} else throw Error("Cannot animate between ".concat(node.constructor.name, " and ").concat(nodeType.name, ", as the \"to\" prop suggests"));
|
|
}
|
|
}
|
|
var goalType = node.constructor;
|
|
var started = hasFluidValue(to2);
|
|
var finished = false;
|
|
if (!started) {
|
|
var hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;
|
|
if (hasToChanged || hasValueChanged) {
|
|
finished = isEqual(computeGoal(value), goal);
|
|
started = !finished;
|
|
}
|
|
if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) {
|
|
started = true;
|
|
}
|
|
}
|
|
if (finished && isAnimating(this)) {
|
|
if (anim.changed && !reset) {
|
|
started = true;
|
|
} else if (!started) {
|
|
this._stop(prevTo);
|
|
}
|
|
}
|
|
if (!hasAsyncTo) {
|
|
if (started || hasFluidValue(prevTo)) {
|
|
anim.values = node.getPayload();
|
|
anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray(goal);
|
|
}
|
|
if (anim.immediate != immediate) {
|
|
anim.immediate = immediate;
|
|
if (!immediate && !reset) {
|
|
this._set(prevTo);
|
|
}
|
|
}
|
|
if (started) {
|
|
var onRest = anim.onRest;
|
|
react_spring_shared_modern_each(ACTIVE_EVENTS, function (type) {
|
|
return mergeActiveFn(_this9, props, type);
|
|
});
|
|
var result = getFinishedResult(this, checkFinished(this, prevTo));
|
|
flushCalls(this._pendingCalls, result);
|
|
this._pendingCalls.add(resolve);
|
|
if (anim.changed) raf.batchedUpdates(function () {
|
|
anim.changed = !reset;
|
|
onRest === null || onRest === void 0 || onRest(result, _this9);
|
|
if (reset) {
|
|
callProp(defaultProps.onRest, result);
|
|
} else {
|
|
var _anim$onStart;
|
|
(_anim$onStart = anim.onStart) === null || _anim$onStart === void 0 || _anim$onStart.call(anim, result, _this9);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
if (reset) {
|
|
this._set(value);
|
|
}
|
|
if (hasAsyncTo) {
|
|
resolve(runAsync(props.to, props, this._state, this));
|
|
} else if (started) {
|
|
this._start();
|
|
} else if (isAnimating(this) && !hasToChanged) {
|
|
this._pendingCalls.add(resolve);
|
|
} else {
|
|
resolve(getNoopResult(value));
|
|
}
|
|
}
|
|
/** Update the `animation.to` value, which might be a `FluidValue` */
|
|
}, {
|
|
key: "_focus",
|
|
value: function _focus(value) {
|
|
var anim = this.animation;
|
|
if (value !== anim.to) {
|
|
if (getFluidObservers(this)) {
|
|
this._detach();
|
|
}
|
|
anim.to = value;
|
|
if (getFluidObservers(this)) {
|
|
this._attach();
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
key: "_attach",
|
|
value: function _attach() {
|
|
var priority = 0;
|
|
var to2 = this.animation.to;
|
|
if (hasFluidValue(to2)) {
|
|
addFluidObserver(to2, this);
|
|
if (isFrameValue(to2)) {
|
|
priority = to2.priority + 1;
|
|
}
|
|
}
|
|
this.priority = priority;
|
|
}
|
|
}, {
|
|
key: "_detach",
|
|
value: function _detach() {
|
|
var to2 = this.animation.to;
|
|
if (hasFluidValue(to2)) {
|
|
removeFluidObserver(to2, this);
|
|
}
|
|
}
|
|
/**
|
|
* Update the current value from outside the frameloop,
|
|
* and return the `Animated` node.
|
|
*/
|
|
}, {
|
|
key: "_set",
|
|
value: function _set(arg) {
|
|
var _this10 = this;
|
|
var idle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
var value = getFluidValue(arg);
|
|
if (!is.und(value)) {
|
|
var oldNode = getAnimated(this);
|
|
if (!oldNode || !isEqual(value, oldNode.getValue())) {
|
|
var nodeType = getAnimatedType(value);
|
|
if (!oldNode || oldNode.constructor != nodeType) {
|
|
setAnimated(this, nodeType.create(value));
|
|
} else {
|
|
oldNode.setValue(value);
|
|
}
|
|
if (oldNode) {
|
|
raf.batchedUpdates(function () {
|
|
_this10._onChange(value, idle);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
return getAnimated(this);
|
|
}
|
|
}, {
|
|
key: "_onStart",
|
|
value: function _onStart() {
|
|
var anim = this.animation;
|
|
if (!anim.changed) {
|
|
anim.changed = true;
|
|
sendEvent(this, "onStart", getFinishedResult(this, checkFinished(this, anim.to)), this);
|
|
}
|
|
}
|
|
}, {
|
|
key: "_onChange",
|
|
value: function _onChange(value, idle) {
|
|
if (!idle) {
|
|
this._onStart();
|
|
callProp(this.animation.onChange, value, this);
|
|
}
|
|
callProp(this.defaultProps.onChange, value, this);
|
|
get(getPrototypeOf(SpringValue.prototype), "_onChange", this).call(this, value, idle);
|
|
}
|
|
// This method resets the animation state (even if already animating) to
|
|
// ensure the latest from/to range is used, and it also ensures this spring
|
|
// is added to the frameloop.
|
|
}, {
|
|
key: "_start",
|
|
value: function _start() {
|
|
var anim = this.animation;
|
|
getAnimated(this).reset(getFluidValue(anim.to));
|
|
if (!anim.immediate) {
|
|
anim.fromValues = anim.values.map(function (node) {
|
|
return node.lastPosition;
|
|
});
|
|
}
|
|
if (!isAnimating(this)) {
|
|
setActiveBit(this, true);
|
|
if (!isPaused(this)) {
|
|
this._resume();
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
key: "_resume",
|
|
value: function _resume() {
|
|
if (globals_exports.skipAnimation) {
|
|
this.finish();
|
|
} else {
|
|
frameLoop.start(this);
|
|
}
|
|
}
|
|
/**
|
|
* Exit the frameloop and notify `onRest` listeners.
|
|
*
|
|
* Always wrap `_stop` calls with `batchedUpdates`.
|
|
*/
|
|
}, {
|
|
key: "_stop",
|
|
value: function _stop(goal, cancel) {
|
|
if (isAnimating(this)) {
|
|
setActiveBit(this, false);
|
|
var anim = this.animation;
|
|
react_spring_shared_modern_each(anim.values, function (node) {
|
|
node.done = true;
|
|
});
|
|
if (anim.toValues) {
|
|
anim.onChange = anim.onPause = anim.onResume = void 0;
|
|
}
|
|
callFluidObservers(this, {
|
|
type: "idle",
|
|
parent: this
|
|
});
|
|
var result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal !== null && goal !== void 0 ? goal : anim.to));
|
|
flushCalls(this._pendingCalls, result);
|
|
if (anim.changed) {
|
|
anim.changed = false;
|
|
sendEvent(this, "onRest", result, this);
|
|
}
|
|
}
|
|
}
|
|
}]);
|
|
return SpringValue;
|
|
}(FrameValue);
|
|
function checkFinished(target, to2) {
|
|
var goal = computeGoal(to2);
|
|
var value = computeGoal(target.get());
|
|
return isEqual(value, goal);
|
|
}
|
|
function createLoopUpdate(props) {
|
|
var loop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.loop;
|
|
var to2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : props.to;
|
|
var loopRet = callProp(loop);
|
|
if (loopRet) {
|
|
var overrides = loopRet !== true && inferTo(loopRet);
|
|
var reverse = (overrides || props).reverse;
|
|
var reset = !overrides || overrides.reset;
|
|
return createUpdate(objectSpread2(objectSpread2({}, props), {}, {
|
|
loop: loop,
|
|
// Avoid updating default props when looping.
|
|
"default": false,
|
|
// Never loop the `pause` prop.
|
|
pause: void 0,
|
|
// For the "reverse" prop to loop as expected, the "to" prop
|
|
// must be undefined. The "reverse" prop is ignored when the
|
|
// "to" prop is an array or function.
|
|
to: !reverse || isAsyncTo(to2) ? to2 : void 0,
|
|
// Ignore the "from" prop except on reset.
|
|
from: reset ? props.from : void 0,
|
|
reset: reset
|
|
}, overrides));
|
|
}
|
|
}
|
|
function createUpdate(props) {
|
|
var _props = props = inferTo(props),
|
|
to2 = _props.to,
|
|
from = _props.from;
|
|
var keys = /* @__PURE__ */new Set();
|
|
if (is.obj(to2)) findDefined(to2, keys);
|
|
if (is.obj(from)) findDefined(from, keys);
|
|
props.keys = keys.size ? Array.from(keys) : null;
|
|
return props;
|
|
}
|
|
function declareUpdate(props) {
|
|
var update2 = createUpdate(props);
|
|
if (is.und(update2["default"])) {
|
|
update2["default"] = getDefaultProps(update2);
|
|
}
|
|
return update2;
|
|
}
|
|
function findDefined(values, keys) {
|
|
eachProp(values, function (value, key) {
|
|
return value != null && keys.add(key);
|
|
});
|
|
}
|
|
var ACTIVE_EVENTS = ["onStart", "onRest", "onChange", "onPause", "onResume"];
|
|
function mergeActiveFn(target, props, type) {
|
|
target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0;
|
|
}
|
|
function sendEvent(target, type) {
|
|
var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;
|
|
for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
args[_key4 - 2] = arguments[_key4];
|
|
}
|
|
(_target$animation$typ = (_target$animation = target.animation)[type]) === null || _target$animation$typ === void 0 || _target$animation$typ.call.apply(_target$animation$typ, [_target$animation].concat(args));
|
|
(_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) === null || _target$defaultProps$ === void 0 || _target$defaultProps$.call.apply(_target$defaultProps$, [_target$defaultProps].concat(args));
|
|
}
|
|
|
|
// src/Controller.ts
|
|
|
|
var BATCHED_EVENTS = ["onStart", "onChange", "onRest"];
|
|
var nextId2 = 1;
|
|
var Controller = /*#__PURE__*/function () {
|
|
function Controller(props, flush3) {
|
|
classCallCheck(this, Controller);
|
|
this.id = nextId2++;
|
|
/** The animated values */
|
|
this.springs = {};
|
|
/** The queue of props passed to the `update` method. */
|
|
this.queue = [];
|
|
/** The counter for tracking `scheduleProps` calls */
|
|
this._lastAsyncId = 0;
|
|
/** The values currently being animated */
|
|
this._active = /* @__PURE__ */new Set();
|
|
/** The values that changed recently */
|
|
this._changed = /* @__PURE__ */new Set();
|
|
/** Equals false when `onStart` listeners can be called */
|
|
this._started = false;
|
|
/** State used by the `runAsync` function */
|
|
this._state = {
|
|
paused: false,
|
|
pauseQueue: /* @__PURE__ */new Set(),
|
|
resumeQueue: /* @__PURE__ */new Set(),
|
|
timeouts: /* @__PURE__ */new Set()
|
|
};
|
|
/** The event queues that are flushed once per frame maximum */
|
|
this._events = {
|
|
onStart: /* @__PURE__ */new Map(),
|
|
onChange: /* @__PURE__ */new Map(),
|
|
onRest: /* @__PURE__ */new Map()
|
|
};
|
|
this._onFrame = this._onFrame.bind(this);
|
|
if (flush3) {
|
|
this._flush = flush3;
|
|
}
|
|
if (props) {
|
|
this.start(objectSpread2({
|
|
"default": true
|
|
}, props));
|
|
}
|
|
}
|
|
/**
|
|
* Equals `true` when no spring values are in the frameloop, and
|
|
* no async animation is currently active.
|
|
*/
|
|
createClass(Controller, [{
|
|
key: "idle",
|
|
get: function get() {
|
|
return !this._state.asyncTo && Object.values(this.springs).every(function (spring) {
|
|
return spring.idle && !spring.isDelayed && !spring.isPaused;
|
|
});
|
|
}
|
|
}, {
|
|
key: "item",
|
|
get: function get() {
|
|
return this._item;
|
|
},
|
|
set: function set(item) {
|
|
this._item = item;
|
|
}
|
|
/** Get the current values of our springs */
|
|
}, {
|
|
key: "get",
|
|
value: function get() {
|
|
var values = {};
|
|
this.each(function (spring, key) {
|
|
return values[key] = spring.get();
|
|
});
|
|
return values;
|
|
}
|
|
/** Set the current values without animating. */
|
|
}, {
|
|
key: "set",
|
|
value: function set(values) {
|
|
for (var key in values) {
|
|
var value = values[key];
|
|
if (!is.und(value)) {
|
|
this.springs[key].set(value);
|
|
}
|
|
}
|
|
}
|
|
/** Push an update onto the queue of each value. */
|
|
}, {
|
|
key: "update",
|
|
value: function update(props) {
|
|
if (props) {
|
|
this.queue.push(createUpdate(props));
|
|
}
|
|
return this;
|
|
}
|
|
/**
|
|
* Start the queued animations for every spring, and resolve the returned
|
|
* promise once all queued animations have finished or been cancelled.
|
|
*
|
|
* When you pass a queue (instead of nothing), that queue is used instead of
|
|
* the queued animations added with the `update` method, which are left alone.
|
|
*/
|
|
}, {
|
|
key: "start",
|
|
value: function start(props) {
|
|
var queue = this.queue;
|
|
if (props) {
|
|
queue = toArray(props).map(createUpdate);
|
|
} else {
|
|
this.queue = [];
|
|
}
|
|
if (this._flush) {
|
|
return this._flush(this, queue);
|
|
}
|
|
prepareKeys(this, queue);
|
|
return flushUpdateQueue(this, queue);
|
|
}
|
|
/** @internal */
|
|
}, {
|
|
key: "stop",
|
|
value: function stop(arg, keys) {
|
|
if (arg !== !!arg) {
|
|
keys = arg;
|
|
}
|
|
if (keys) {
|
|
var springs = this.springs;
|
|
react_spring_shared_modern_each(toArray(keys), function (key) {
|
|
return springs[key].stop(!!arg);
|
|
});
|
|
} else {
|
|
stopAsync(this._state, this._lastAsyncId);
|
|
this.each(function (spring) {
|
|
return spring.stop(!!arg);
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
/** Freeze the active animation in time */
|
|
}, {
|
|
key: "pause",
|
|
value: function pause(keys) {
|
|
if (is.und(keys)) {
|
|
this.start({
|
|
pause: true
|
|
});
|
|
} else {
|
|
var springs = this.springs;
|
|
react_spring_shared_modern_each(toArray(keys), function (key) {
|
|
return springs[key].pause();
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
/** Resume the animation if paused. */
|
|
}, {
|
|
key: "resume",
|
|
value: function resume(keys) {
|
|
if (is.und(keys)) {
|
|
this.start({
|
|
pause: false
|
|
});
|
|
} else {
|
|
var springs = this.springs;
|
|
react_spring_shared_modern_each(toArray(keys), function (key) {
|
|
return springs[key].resume();
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
/** Call a function once per spring value */
|
|
}, {
|
|
key: "each",
|
|
value: function each(iterator) {
|
|
eachProp(this.springs, iterator);
|
|
}
|
|
/** @internal Called at the end of every animation frame */
|
|
}, {
|
|
key: "_onFrame",
|
|
value: function _onFrame() {
|
|
var _this11 = this;
|
|
var _this$_events = this._events,
|
|
onStart = _this$_events.onStart,
|
|
onChange = _this$_events.onChange,
|
|
onRest = _this$_events.onRest;
|
|
var active = this._active.size > 0;
|
|
var changed = this._changed.size > 0;
|
|
if (active && !this._started || changed && !this._started) {
|
|
this._started = true;
|
|
flush(onStart, function (_ref8) {
|
|
var _ref9 = slicedToArray(_ref8, 2),
|
|
onStart2 = _ref9[0],
|
|
result = _ref9[1];
|
|
result.value = _this11.get();
|
|
onStart2(result, _this11, _this11._item);
|
|
});
|
|
}
|
|
var idle = !active && this._started;
|
|
var values = changed || idle && onRest.size ? this.get() : null;
|
|
if (changed && onChange.size) {
|
|
flush(onChange, function (_ref10) {
|
|
var _ref11 = slicedToArray(_ref10, 2),
|
|
onChange2 = _ref11[0],
|
|
result = _ref11[1];
|
|
result.value = values;
|
|
onChange2(result, _this11, _this11._item);
|
|
});
|
|
}
|
|
if (idle) {
|
|
this._started = false;
|
|
flush(onRest, function (_ref12) {
|
|
var _ref13 = slicedToArray(_ref12, 2),
|
|
onRest2 = _ref13[0],
|
|
result = _ref13[1];
|
|
result.value = values;
|
|
onRest2(result, _this11, _this11._item);
|
|
});
|
|
}
|
|
}
|
|
/** @internal */
|
|
}, {
|
|
key: "eventObserved",
|
|
value: function eventObserved(event) {
|
|
if (event.type == "change") {
|
|
this._changed.add(event.parent);
|
|
if (!event.idle) {
|
|
this._active.add(event.parent);
|
|
}
|
|
} else if (event.type == "idle") {
|
|
this._active["delete"](event.parent);
|
|
} else return;
|
|
raf.onFrame(this._onFrame);
|
|
}
|
|
}]);
|
|
return Controller;
|
|
}();
|
|
function flushUpdateQueue(ctrl, queue) {
|
|
return Promise.all(queue.map(function (props) {
|
|
return flushUpdate(ctrl, props);
|
|
})).then(function (results) {
|
|
return getCombinedResult(ctrl, results);
|
|
});
|
|
}
|
|
function flushUpdate(_x2, _x3, _x4) {
|
|
return _flushUpdate.apply(this, arguments);
|
|
}
|
|
function _flushUpdate() {
|
|
_flushUpdate = asyncToGenerator( /*#__PURE__*/regeneratorRuntime().mark(function _callee4(ctrl, props, isLoop) {
|
|
var keys, to2, from, loop, onRest, onResolve, defaults2, asyncTo, state, promises, cancel, result, nextProps;
|
|
return regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
case 0:
|
|
keys = props.keys, to2 = props.to, from = props.from, loop = props.loop, onRest = props.onRest, onResolve = props.onResolve;
|
|
defaults2 = is.obj(props["default"]) && props["default"];
|
|
if (loop) {
|
|
props.loop = false;
|
|
}
|
|
if (to2 === false) props.to = null;
|
|
if (from === false) props.from = null;
|
|
asyncTo = is.arr(to2) || is.fun(to2) ? to2 : void 0;
|
|
if (asyncTo) {
|
|
props.to = void 0;
|
|
props.onRest = void 0;
|
|
if (defaults2) {
|
|
defaults2.onRest = void 0;
|
|
}
|
|
} else {
|
|
react_spring_shared_modern_each(BATCHED_EVENTS, function (key) {
|
|
var handler = props[key];
|
|
if (is.fun(handler)) {
|
|
var queue = ctrl["_events"][key];
|
|
props[key] = function (_ref29) {
|
|
var finished = _ref29.finished,
|
|
cancelled = _ref29.cancelled;
|
|
var result2 = queue.get(handler);
|
|
if (result2) {
|
|
if (!finished) result2.finished = false;
|
|
if (cancelled) result2.cancelled = true;
|
|
} else {
|
|
queue.set(handler, {
|
|
value: null,
|
|
finished: finished || false,
|
|
cancelled: cancelled || false
|
|
});
|
|
}
|
|
};
|
|
if (defaults2) {
|
|
defaults2[key] = props[key];
|
|
}
|
|
}
|
|
});
|
|
}
|
|
state = ctrl["_state"];
|
|
if (props.pause === !state.paused) {
|
|
state.paused = props.pause;
|
|
flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);
|
|
} else if (state.paused) {
|
|
props.pause = true;
|
|
}
|
|
promises = (keys || Object.keys(ctrl.springs)).map(function (key) {
|
|
return ctrl.springs[key].start(props);
|
|
});
|
|
cancel = props.cancel === true || getDefaultProp(props, "cancel") === true;
|
|
if (asyncTo || cancel && state.asyncId) {
|
|
promises.push(scheduleProps(++ctrl["_lastAsyncId"], {
|
|
props: props,
|
|
state: state,
|
|
actions: {
|
|
pause: noop,
|
|
resume: noop,
|
|
start: function start(props2, resolve) {
|
|
if (cancel) {
|
|
stopAsync(state, ctrl["_lastAsyncId"]);
|
|
resolve(getCancelledResult(ctrl));
|
|
} else {
|
|
props2.onRest = onRest;
|
|
resolve(runAsync(asyncTo, props2, state, ctrl));
|
|
}
|
|
}
|
|
}
|
|
}));
|
|
}
|
|
if (!state.paused) {
|
|
_context4.next = 15;
|
|
break;
|
|
}
|
|
_context4.next = 15;
|
|
return new Promise(function (resume) {
|
|
state.resumeQueue.add(resume);
|
|
});
|
|
case 15:
|
|
_context4.t0 = getCombinedResult;
|
|
_context4.t1 = ctrl;
|
|
_context4.next = 19;
|
|
return Promise.all(promises);
|
|
case 19:
|
|
_context4.t2 = _context4.sent;
|
|
result = (0, _context4.t0)(_context4.t1, _context4.t2);
|
|
if (!(loop && result.finished && !(isLoop && result.noop))) {
|
|
_context4.next = 26;
|
|
break;
|
|
}
|
|
nextProps = createLoopUpdate(props, loop, to2);
|
|
if (!nextProps) {
|
|
_context4.next = 26;
|
|
break;
|
|
}
|
|
prepareKeys(ctrl, [nextProps]);
|
|
return _context4.abrupt("return", flushUpdate(ctrl, nextProps, true));
|
|
case 26:
|
|
if (onResolve) {
|
|
raf.batchedUpdates(function () {
|
|
return onResolve(result, ctrl, ctrl.item);
|
|
});
|
|
}
|
|
return _context4.abrupt("return", result);
|
|
case 28:
|
|
case "end":
|
|
return _context4.stop();
|
|
}
|
|
}, _callee4);
|
|
}));
|
|
return _flushUpdate.apply(this, arguments);
|
|
}
|
|
function getSprings(ctrl, props) {
|
|
var springs = objectSpread2({}, ctrl.springs);
|
|
if (props) {
|
|
react_spring_shared_modern_each(toArray(props), function (props2) {
|
|
if (is.und(props2.keys)) {
|
|
props2 = createUpdate(props2);
|
|
}
|
|
if (!is.obj(props2.to)) {
|
|
props2 = objectSpread2(objectSpread2({}, props2), {}, {
|
|
to: void 0
|
|
});
|
|
}
|
|
prepareSprings(springs, props2, function (key) {
|
|
return createSpring(key);
|
|
});
|
|
});
|
|
}
|
|
setSprings(ctrl, springs);
|
|
return springs;
|
|
}
|
|
function setSprings(ctrl, springs) {
|
|
eachProp(springs, function (spring, key) {
|
|
if (!ctrl.springs[key]) {
|
|
ctrl.springs[key] = spring;
|
|
addFluidObserver(spring, ctrl);
|
|
}
|
|
});
|
|
}
|
|
function createSpring(key, observer) {
|
|
var spring = new SpringValue();
|
|
spring.key = key;
|
|
if (observer) {
|
|
addFluidObserver(spring, observer);
|
|
}
|
|
return spring;
|
|
}
|
|
function prepareSprings(springs, props, create) {
|
|
if (props.keys) {
|
|
react_spring_shared_modern_each(props.keys, function (key) {
|
|
var spring = springs[key] || (springs[key] = create(key));
|
|
spring["_prepareNode"](props);
|
|
});
|
|
}
|
|
}
|
|
function prepareKeys(ctrl, queue) {
|
|
react_spring_shared_modern_each(queue, function (props) {
|
|
prepareSprings(ctrl.springs, props, function (key) {
|
|
return createSpring(key, ctrl);
|
|
});
|
|
});
|
|
}
|
|
|
|
// src/SpringContext.tsx
|
|
|
|
|
|
|
|
var SpringContext = function SpringContext(_ref14) {
|
|
var children = _ref14.children,
|
|
props = objectWithoutProperties(_ref14, _excluded);
|
|
var inherited = (0,_react_17_0_2_react.useContext)(ctx);
|
|
var pause = props.pause || !!inherited.pause,
|
|
immediate = props.immediate || !!inherited.immediate;
|
|
props = useMemoOne(function () {
|
|
return {
|
|
pause: pause,
|
|
immediate: immediate
|
|
};
|
|
}, [pause, immediate]);
|
|
var Provider = ctx.Provider;
|
|
return /* @__PURE__ */_react_17_0_2_react.createElement(Provider, {
|
|
value: props
|
|
}, children);
|
|
};
|
|
var ctx = makeContext(SpringContext, {});
|
|
SpringContext.Provider = ctx.Provider;
|
|
SpringContext.Consumer = ctx.Consumer;
|
|
function makeContext(target, init) {
|
|
Object.assign(target, /*#__PURE__*/_react_17_0_2_react.createContext(init));
|
|
target.Provider._context = target;
|
|
target.Consumer._context = target;
|
|
return target;
|
|
}
|
|
|
|
// src/SpringRef.ts
|
|
|
|
var SpringRef = function SpringRef() {
|
|
var current = [];
|
|
var SpringRef2 = function SpringRef2(props) {
|
|
deprecateDirectCall();
|
|
var results = [];
|
|
react_spring_shared_modern_each(current, function (ctrl, i) {
|
|
if (is.und(props)) {
|
|
results.push(ctrl.start());
|
|
} else {
|
|
var update2 = _getProps(props, ctrl, i);
|
|
if (update2) {
|
|
results.push(ctrl.start(update2));
|
|
}
|
|
}
|
|
});
|
|
return results;
|
|
};
|
|
SpringRef2.current = current;
|
|
SpringRef2.add = function (ctrl) {
|
|
if (!current.includes(ctrl)) {
|
|
current.push(ctrl);
|
|
}
|
|
};
|
|
SpringRef2["delete"] = function (ctrl) {
|
|
var i = current.indexOf(ctrl);
|
|
if (~i) current.splice(i, 1);
|
|
};
|
|
SpringRef2.pause = function () {
|
|
var _arguments = arguments;
|
|
react_spring_shared_modern_each(current, function (ctrl) {
|
|
return ctrl.pause.apply(ctrl, toConsumableArray(_arguments));
|
|
});
|
|
return this;
|
|
};
|
|
SpringRef2.resume = function () {
|
|
var _arguments2 = arguments;
|
|
react_spring_shared_modern_each(current, function (ctrl) {
|
|
return ctrl.resume.apply(ctrl, toConsumableArray(_arguments2));
|
|
});
|
|
return this;
|
|
};
|
|
SpringRef2.set = function (values) {
|
|
react_spring_shared_modern_each(current, function (ctrl, i) {
|
|
var update2 = is.fun(values) ? values(i, ctrl) : values;
|
|
if (update2) {
|
|
ctrl.set(update2);
|
|
}
|
|
});
|
|
};
|
|
SpringRef2.start = function (props) {
|
|
var _this12 = this;
|
|
var results = [];
|
|
react_spring_shared_modern_each(current, function (ctrl, i) {
|
|
if (is.und(props)) {
|
|
results.push(ctrl.start());
|
|
} else {
|
|
var update2 = _this12._getProps(props, ctrl, i);
|
|
if (update2) {
|
|
results.push(ctrl.start(update2));
|
|
}
|
|
}
|
|
});
|
|
return results;
|
|
};
|
|
SpringRef2.stop = function () {
|
|
var _arguments3 = arguments;
|
|
react_spring_shared_modern_each(current, function (ctrl) {
|
|
return ctrl.stop.apply(ctrl, toConsumableArray(_arguments3));
|
|
});
|
|
return this;
|
|
};
|
|
SpringRef2.update = function (props) {
|
|
var _this13 = this;
|
|
react_spring_shared_modern_each(current, function (ctrl, i) {
|
|
return ctrl.update(_this13._getProps(props, ctrl, i));
|
|
});
|
|
return this;
|
|
};
|
|
var _getProps = function _getProps(arg, ctrl, index) {
|
|
return is.fun(arg) ? arg(index, ctrl) : arg;
|
|
};
|
|
SpringRef2._getProps = _getProps;
|
|
return SpringRef2;
|
|
};
|
|
|
|
// src/hooks/useSprings.ts
|
|
function useSprings(length, props, deps) {
|
|
var _arguments4 = arguments;
|
|
var propsFn = is.fun(props) && props;
|
|
if (propsFn && !deps) deps = [];
|
|
var ref = (0,_react_17_0_2_react.useMemo)(function () {
|
|
return propsFn || _arguments4.length == 3 ? SpringRef() : void 0;
|
|
}, []);
|
|
var layoutId = (0,_react_17_0_2_react.useRef)(0);
|
|
var forceUpdate = useForceUpdate();
|
|
var state = (0,_react_17_0_2_react.useMemo)(function () {
|
|
return {
|
|
ctrls: [],
|
|
queue: [],
|
|
flush: function flush(ctrl, updates2) {
|
|
var springs2 = getSprings(ctrl, updates2);
|
|
var canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs2).some(function (key) {
|
|
return !ctrl.springs[key];
|
|
});
|
|
return canFlushSync ? flushUpdateQueue(ctrl, updates2) : new Promise(function (resolve) {
|
|
setSprings(ctrl, springs2);
|
|
state.queue.push(function () {
|
|
resolve(flushUpdateQueue(ctrl, updates2));
|
|
});
|
|
forceUpdate();
|
|
});
|
|
}
|
|
};
|
|
}, []);
|
|
var ctrls = (0,_react_17_0_2_react.useRef)(toConsumableArray(state.ctrls));
|
|
var updates = [];
|
|
var prevLength = usePrev(length) || 0;
|
|
(0,_react_17_0_2_react.useMemo)(function () {
|
|
react_spring_shared_modern_each(ctrls.current.slice(length, prevLength), function (ctrl) {
|
|
detachRefs(ctrl, ref);
|
|
ctrl.stop(true);
|
|
});
|
|
ctrls.current.length = length;
|
|
declareUpdates(prevLength, length);
|
|
}, [length]);
|
|
(0,_react_17_0_2_react.useMemo)(function () {
|
|
declareUpdates(0, Math.min(prevLength, length));
|
|
}, deps);
|
|
function declareUpdates(startIndex, endIndex) {
|
|
for (var i = startIndex; i < endIndex; i++) {
|
|
var ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));
|
|
var update2 = propsFn ? propsFn(i, ctrl) : props[i];
|
|
if (update2) {
|
|
updates[i] = declareUpdate(update2);
|
|
}
|
|
}
|
|
}
|
|
var springs = ctrls.current.map(function (ctrl, i) {
|
|
return getSprings(ctrl, updates[i]);
|
|
});
|
|
var context = (0,_react_17_0_2_react.useContext)(SpringContext);
|
|
var prevContext = usePrev(context);
|
|
var hasContext = context !== prevContext && hasProps(context);
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
layoutId.current++;
|
|
state.ctrls = ctrls.current;
|
|
var queue = state.queue;
|
|
if (queue.length) {
|
|
state.queue = [];
|
|
react_spring_shared_modern_each(queue, function (cb) {
|
|
return cb();
|
|
});
|
|
}
|
|
react_spring_shared_modern_each(ctrls.current, function (ctrl, i) {
|
|
ref === null || ref === void 0 || ref.add(ctrl);
|
|
if (hasContext) {
|
|
ctrl.start({
|
|
"default": context
|
|
});
|
|
}
|
|
var update2 = updates[i];
|
|
if (update2) {
|
|
replaceRef(ctrl, update2.ref);
|
|
if (ctrl.ref) {
|
|
ctrl.queue.push(update2);
|
|
} else {
|
|
ctrl.start(update2);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
useOnce(function () {
|
|
return function () {
|
|
react_spring_shared_modern_each(state.ctrls, function (ctrl) {
|
|
return ctrl.stop(true);
|
|
});
|
|
};
|
|
});
|
|
var values = springs.map(function (x) {
|
|
return objectSpread2({}, x);
|
|
});
|
|
return ref ? [values, ref] : values;
|
|
}
|
|
|
|
// src/hooks/useSpring.ts
|
|
function useSpring(props, deps) {
|
|
var isFn = is.fun(props);
|
|
var _useSprings = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps),
|
|
_useSprings2 = slicedToArray(_useSprings, 2),
|
|
_useSprings2$ = slicedToArray(_useSprings2[0], 1),
|
|
values = _useSprings2$[0],
|
|
ref = _useSprings2[1];
|
|
return isFn || arguments.length == 2 ? [values, ref] : values;
|
|
}
|
|
|
|
// src/hooks/useSpringRef.ts
|
|
|
|
var initSpringRef = function initSpringRef() {
|
|
return SpringRef();
|
|
};
|
|
var useSpringRef = function useSpringRef() {
|
|
return useState(initSpringRef)[0];
|
|
};
|
|
|
|
// src/hooks/useSpringValue.ts
|
|
|
|
var useSpringValue = function useSpringValue(initial, props) {
|
|
var springValue = useConstant(function () {
|
|
return new SpringValue(initial, props);
|
|
});
|
|
useOnce2(function () {
|
|
return function () {
|
|
springValue.stop();
|
|
};
|
|
});
|
|
return springValue;
|
|
};
|
|
|
|
// src/hooks/useTrail.ts
|
|
|
|
function useTrail(length, propsArg, deps) {
|
|
var propsFn = is10.fun(propsArg) && propsArg;
|
|
if (propsFn && !deps) deps = [];
|
|
var reverse = true;
|
|
var passedRef = void 0;
|
|
var result = useSprings(length, function (i, ctrl) {
|
|
var props = propsFn ? propsFn(i, ctrl) : propsArg;
|
|
passedRef = props.ref;
|
|
reverse = reverse && props.reverse;
|
|
return props;
|
|
},
|
|
// Ensure the props function is called when no deps exist.
|
|
// This works around the 3 argument rule.
|
|
deps || [{}]);
|
|
useIsomorphicLayoutEffect3(function () {
|
|
each6(result[1].current, function (ctrl, i) {
|
|
var parent = result[1].current[i + (reverse ? 1 : -1)];
|
|
replaceRef(ctrl, passedRef);
|
|
if (ctrl.ref) {
|
|
if (parent) {
|
|
ctrl.update({
|
|
to: parent.springs
|
|
});
|
|
}
|
|
return;
|
|
}
|
|
if (parent) {
|
|
ctrl.start({
|
|
to: parent.springs
|
|
});
|
|
} else {
|
|
ctrl.start();
|
|
}
|
|
});
|
|
}, deps);
|
|
if (propsFn || arguments.length == 3) {
|
|
var _passedRef;
|
|
var ref = (_passedRef = passedRef) !== null && _passedRef !== void 0 ? _passedRef : result[1];
|
|
ref["_getProps"] = function (propsArg2, ctrl, i) {
|
|
var props = is10.fun(propsArg2) ? propsArg2(i, ctrl) : propsArg2;
|
|
if (props) {
|
|
var parent = ref.current[i + (props.reverse ? 1 : -1)];
|
|
if (parent) props.to = parent.springs;
|
|
return props;
|
|
}
|
|
};
|
|
return result;
|
|
}
|
|
return result[0];
|
|
}
|
|
|
|
// src/hooks/useTransition.tsx
|
|
|
|
|
|
|
|
function useTransition(data, props, deps) {
|
|
var _arguments5 = arguments;
|
|
var propsFn = is.fun(props) && props;
|
|
var _ref15 = propsFn ? propsFn() : props,
|
|
reset = _ref15.reset,
|
|
sort = _ref15.sort,
|
|
_ref15$trail = _ref15.trail,
|
|
trail = _ref15$trail === void 0 ? 0 : _ref15$trail,
|
|
_ref15$expires = _ref15.expires,
|
|
expires = _ref15$expires === void 0 ? true : _ref15$expires,
|
|
_ref15$exitBeforeEnte = _ref15.exitBeforeEnter,
|
|
exitBeforeEnter = _ref15$exitBeforeEnte === void 0 ? false : _ref15$exitBeforeEnte,
|
|
onDestroyed = _ref15.onDestroyed,
|
|
propsRef = _ref15.ref,
|
|
propsConfig = _ref15.config;
|
|
var ref = (0,_react_17_0_2_react.useMemo)(function () {
|
|
return propsFn || _arguments5.length == 3 ? SpringRef() : void 0;
|
|
}, []);
|
|
var items = toArray(data);
|
|
var transitions = [];
|
|
var usedTransitions = (0,_react_17_0_2_react.useRef)(null);
|
|
var prevTransitions = reset ? null : usedTransitions.current;
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
usedTransitions.current = transitions;
|
|
});
|
|
useOnce(function () {
|
|
react_spring_shared_modern_each(transitions, function (t) {
|
|
ref === null || ref === void 0 || ref.add(t.ctrl);
|
|
t.ctrl.ref = ref;
|
|
});
|
|
return function () {
|
|
react_spring_shared_modern_each(usedTransitions.current, function (t) {
|
|
if (t.expired) {
|
|
clearTimeout(t.expirationId);
|
|
}
|
|
detachRefs(t.ctrl, ref);
|
|
t.ctrl.stop(true);
|
|
});
|
|
};
|
|
});
|
|
var keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);
|
|
var expired = reset && usedTransitions.current || [];
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
return react_spring_shared_modern_each(expired, function (_ref16) {
|
|
var ctrl = _ref16.ctrl,
|
|
item = _ref16.item,
|
|
key = _ref16.key;
|
|
detachRefs(ctrl, ref);
|
|
callProp(onDestroyed, item, key);
|
|
});
|
|
});
|
|
var reused = [];
|
|
if (prevTransitions) react_spring_shared_modern_each(prevTransitions, function (t, i) {
|
|
if (t.expired) {
|
|
clearTimeout(t.expirationId);
|
|
expired.push(t);
|
|
} else {
|
|
i = reused[i] = keys.indexOf(t.key);
|
|
if (~i) transitions[i] = t;
|
|
}
|
|
});
|
|
react_spring_shared_modern_each(items, function (item, i) {
|
|
if (!transitions[i]) {
|
|
transitions[i] = {
|
|
key: keys[i],
|
|
item: item,
|
|
phase: "mount" /* MOUNT */,
|
|
ctrl: new Controller()
|
|
};
|
|
transitions[i].ctrl.item = item;
|
|
}
|
|
});
|
|
if (reused.length) {
|
|
var i = -1;
|
|
var _ref17 = propsFn ? propsFn() : props,
|
|
leave = _ref17.leave;
|
|
react_spring_shared_modern_each(reused, function (keyIndex, prevIndex) {
|
|
var t = prevTransitions[prevIndex];
|
|
if (~keyIndex) {
|
|
i = transitions.indexOf(t);
|
|
transitions[i] = objectSpread2(objectSpread2({}, t), {}, {
|
|
item: items[keyIndex]
|
|
});
|
|
} else if (leave) {
|
|
transitions.splice(++i, 0, t);
|
|
}
|
|
});
|
|
}
|
|
if (is.fun(sort)) {
|
|
transitions.sort(function (a, b) {
|
|
return sort(a.item, b.item);
|
|
});
|
|
}
|
|
var delay = -trail;
|
|
var forceUpdate = useForceUpdate();
|
|
var defaultProps = getDefaultProps(props);
|
|
var changes = /* @__PURE__ */new Map();
|
|
var exitingTransitions = (0,_react_17_0_2_react.useRef)( /* @__PURE__ */new Map());
|
|
var forceChange = (0,_react_17_0_2_react.useRef)(false);
|
|
react_spring_shared_modern_each(transitions, function (t, i) {
|
|
var key = t.key;
|
|
var prevPhase = t.phase;
|
|
var p = propsFn ? propsFn() : props;
|
|
var to2;
|
|
var phase;
|
|
var propsDelay = callProp(p.delay || 0, key);
|
|
if (prevPhase == "mount" /* MOUNT */) {
|
|
to2 = p.enter;
|
|
phase = "enter" /* ENTER */;
|
|
} else {
|
|
var isLeave = keys.indexOf(key) < 0;
|
|
if (prevPhase != "leave" /* LEAVE */) {
|
|
if (isLeave) {
|
|
to2 = p.leave;
|
|
phase = "leave" /* LEAVE */;
|
|
} else if (to2 = p.update) {
|
|
phase = "update" /* UPDATE */;
|
|
} else return;
|
|
} else if (!isLeave) {
|
|
to2 = p.enter;
|
|
phase = "enter" /* ENTER */;
|
|
} else return;
|
|
}
|
|
to2 = callProp(to2, t.item, i);
|
|
to2 = is.obj(to2) ? inferTo(to2) : {
|
|
to: to2
|
|
};
|
|
if (!to2.config) {
|
|
var config2 = propsConfig || defaultProps.config;
|
|
to2.config = callProp(config2, t.item, i, phase);
|
|
}
|
|
delay += trail;
|
|
var payload = objectSpread2(objectSpread2({}, defaultProps), {}, {
|
|
// we need to add our props.delay value you here.
|
|
delay: propsDelay + delay,
|
|
ref: propsRef,
|
|
immediate: p.immediate,
|
|
// This prevents implied resets.
|
|
reset: false
|
|
}, to2);
|
|
if (phase == "enter" /* ENTER */ && is.und(payload.from)) {
|
|
var p2 = propsFn ? propsFn() : props;
|
|
var from = is.und(p2.initial) || prevTransitions ? p2.from : p2.initial;
|
|
payload.from = callProp(from, t.item, i);
|
|
}
|
|
var onResolve = payload.onResolve;
|
|
payload.onResolve = function (result) {
|
|
callProp(onResolve, result);
|
|
var transitions2 = usedTransitions.current;
|
|
var t2 = transitions2.find(function (t3) {
|
|
return t3.key === key;
|
|
});
|
|
if (!t2) return;
|
|
if (result.cancelled && t2.phase != "update" /* UPDATE */) {
|
|
return;
|
|
}
|
|
if (t2.ctrl.idle) {
|
|
var idle = transitions2.every(function (t3) {
|
|
return t3.ctrl.idle;
|
|
});
|
|
if (t2.phase == "leave" /* LEAVE */) {
|
|
var expiry = callProp(expires, t2.item);
|
|
if (expiry !== false) {
|
|
var expiryMs = expiry === true ? 0 : expiry;
|
|
t2.expired = true;
|
|
if (!idle && expiryMs > 0) {
|
|
if (expiryMs <= 2147483647) t2.expirationId = setTimeout(forceUpdate, expiryMs);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (idle && transitions2.some(function (t3) {
|
|
return t3.expired;
|
|
})) {
|
|
exitingTransitions.current["delete"](t2);
|
|
if (exitBeforeEnter) {
|
|
forceChange.current = true;
|
|
}
|
|
forceUpdate();
|
|
}
|
|
}
|
|
};
|
|
var springs = getSprings(t.ctrl, payload);
|
|
if (phase === "leave" /* LEAVE */ && exitBeforeEnter) {
|
|
exitingTransitions.current.set(t, {
|
|
phase: phase,
|
|
springs: springs,
|
|
payload: payload
|
|
});
|
|
} else {
|
|
changes.set(t, {
|
|
phase: phase,
|
|
springs: springs,
|
|
payload: payload
|
|
});
|
|
}
|
|
});
|
|
var context = (0,_react_17_0_2_react.useContext)(SpringContext);
|
|
var prevContext = usePrev(context);
|
|
var hasContext = context !== prevContext && hasProps(context);
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
if (hasContext) {
|
|
react_spring_shared_modern_each(transitions, function (t) {
|
|
t.ctrl.start({
|
|
"default": context
|
|
});
|
|
});
|
|
}
|
|
}, [context]);
|
|
react_spring_shared_modern_each(changes, function (_, t) {
|
|
if (exitingTransitions.current.size) {
|
|
var ind = transitions.findIndex(function (state) {
|
|
return state.key === t.key;
|
|
});
|
|
transitions.splice(ind, 1);
|
|
}
|
|
});
|
|
react_spring_shared_modern_useIsomorphicLayoutEffect(function () {
|
|
react_spring_shared_modern_each(exitingTransitions.current.size ? exitingTransitions.current : changes, function (_ref18, t) {
|
|
var phase = _ref18.phase,
|
|
payload = _ref18.payload;
|
|
var ctrl = t.ctrl;
|
|
t.phase = phase;
|
|
ref === null || ref === void 0 || ref.add(ctrl);
|
|
if (hasContext && phase == "enter" /* ENTER */) {
|
|
ctrl.start({
|
|
"default": context
|
|
});
|
|
}
|
|
if (payload) {
|
|
replaceRef(ctrl, payload.ref);
|
|
if ((ctrl.ref || ref) && !forceChange.current) {
|
|
ctrl.update(payload);
|
|
} else {
|
|
ctrl.start(payload);
|
|
if (forceChange.current) {
|
|
forceChange.current = false;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}, reset ? void 0 : deps);
|
|
var renderTransitions = function renderTransitions(render) {
|
|
return /* @__PURE__ */_react_17_0_2_react.createElement(_react_17_0_2_react.Fragment, null, transitions.map(function (t, i) {
|
|
var _ref19 = changes.get(t) || t.ctrl,
|
|
springs = _ref19.springs;
|
|
var elem = render(objectSpread2({}, springs), t.item, t, i);
|
|
return elem && elem.type ? /* @__PURE__ */_react_17_0_2_react.createElement(elem.type, objectSpread2(objectSpread2({}, elem.props), {}, {
|
|
key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,
|
|
ref: elem.ref
|
|
})) : elem;
|
|
}));
|
|
};
|
|
return ref ? [renderTransitions, ref] : renderTransitions;
|
|
}
|
|
var nextKey = 1;
|
|
function getKeys(items, _ref20, prevTransitions) {
|
|
var key = _ref20.key,
|
|
_ref20$keys = _ref20.keys,
|
|
keys = _ref20$keys === void 0 ? key : _ref20$keys;
|
|
if (keys === null) {
|
|
var reused = /* @__PURE__ */new Set();
|
|
return items.map(function (item) {
|
|
var t = prevTransitions && prevTransitions.find(function (t2) {
|
|
return t2.item === item && t2.phase !== "leave" /* LEAVE */ && !reused.has(t2);
|
|
});
|
|
if (t) {
|
|
reused.add(t);
|
|
return t.key;
|
|
}
|
|
return nextKey++;
|
|
});
|
|
}
|
|
return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);
|
|
}
|
|
|
|
// src/hooks/useScroll.ts
|
|
|
|
var useScroll = function useScroll() {
|
|
var _ref21 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
container = _ref21.container,
|
|
springOptions = _objectWithoutProperties(_ref21, _excluded2);
|
|
var _useSpring = useSpring(function () {
|
|
return _objectSpread({
|
|
scrollX: 0,
|
|
scrollY: 0,
|
|
scrollXProgress: 0,
|
|
scrollYProgress: 0
|
|
}, springOptions);
|
|
}, []),
|
|
_useSpring2 = _slicedToArray(_useSpring, 2),
|
|
scrollValues = _useSpring2[0],
|
|
api = _useSpring2[1];
|
|
useIsomorphicLayoutEffect5(function () {
|
|
var cleanupScroll = onScroll(function (_ref22) {
|
|
var x = _ref22.x,
|
|
y = _ref22.y;
|
|
api.start({
|
|
scrollX: x.current,
|
|
scrollXProgress: x.progress,
|
|
scrollY: y.current,
|
|
scrollYProgress: y.progress
|
|
});
|
|
}, {
|
|
container: (container === null || container === void 0 ? void 0 : container.current) || void 0
|
|
});
|
|
return function () {
|
|
each8(Object.values(scrollValues), function (value) {
|
|
return value.stop();
|
|
});
|
|
cleanupScroll();
|
|
};
|
|
}, []);
|
|
return scrollValues;
|
|
};
|
|
|
|
// src/hooks/useResize.ts
|
|
|
|
var useResize = function useResize(_ref23) {
|
|
var container = _ref23.container,
|
|
springOptions = _objectWithoutProperties(_ref23, _excluded3);
|
|
var _useSpring3 = useSpring(function () {
|
|
return _objectSpread({
|
|
width: 0,
|
|
height: 0
|
|
}, springOptions);
|
|
}, []),
|
|
_useSpring4 = _slicedToArray(_useSpring3, 2),
|
|
sizeValues = _useSpring4[0],
|
|
api = _useSpring4[1];
|
|
useIsomorphicLayoutEffect6(function () {
|
|
var cleanupScroll = onResize(function (_ref24) {
|
|
var width = _ref24.width,
|
|
height = _ref24.height;
|
|
api.start({
|
|
width: width,
|
|
height: height,
|
|
immediate: sizeValues.width.get() === 0 || sizeValues.height.get() === 0
|
|
});
|
|
}, {
|
|
container: (container === null || container === void 0 ? void 0 : container.current) || void 0
|
|
});
|
|
return function () {
|
|
each9(Object.values(sizeValues), function (value) {
|
|
return value.stop();
|
|
});
|
|
cleanupScroll();
|
|
};
|
|
}, []);
|
|
return sizeValues;
|
|
};
|
|
|
|
// src/hooks/useInView.ts
|
|
|
|
|
|
var defaultThresholdOptions = {
|
|
any: 0,
|
|
all: 1
|
|
};
|
|
function useInView(props, args) {
|
|
var _useState = useState2(false),
|
|
_useState2 = _slicedToArray(_useState, 2),
|
|
isInView = _useState2[0],
|
|
setIsInView = _useState2[1];
|
|
var ref = useRef3();
|
|
var propsFn = is12.fun(props) && props;
|
|
var springsProps = propsFn ? propsFn() : {};
|
|
var _springsProps$to = springsProps.to,
|
|
to2 = _springsProps$to === void 0 ? {} : _springsProps$to,
|
|
_springsProps$from = springsProps.from,
|
|
from = _springsProps$from === void 0 ? {} : _springsProps$from,
|
|
restSpringProps = _objectWithoutProperties(springsProps, _excluded4);
|
|
var intersectionArguments = propsFn ? args : props;
|
|
var _useSpring5 = useSpring(function () {
|
|
return _objectSpread({
|
|
from: from
|
|
}, restSpringProps);
|
|
}, []),
|
|
_useSpring6 = _slicedToArray(_useSpring5, 2),
|
|
springs = _useSpring6[0],
|
|
api = _useSpring6[1];
|
|
useIsomorphicLayoutEffect7(function () {
|
|
var element = ref.current;
|
|
var _ref25 = intersectionArguments !== null && intersectionArguments !== void 0 ? intersectionArguments : {},
|
|
root = _ref25.root,
|
|
once = _ref25.once,
|
|
_ref25$amount = _ref25.amount,
|
|
amount = _ref25$amount === void 0 ? "any" : _ref25$amount,
|
|
restArgs = _objectWithoutProperties(_ref25, _excluded5);
|
|
if (!element || once && isInView || typeof IntersectionObserver === "undefined") return;
|
|
var activeIntersections = /* @__PURE__ */new WeakMap();
|
|
var onEnter = function onEnter() {
|
|
if (to2) {
|
|
api.start(to2);
|
|
}
|
|
setIsInView(true);
|
|
var cleanup = function cleanup() {
|
|
if (from) {
|
|
api.start(from);
|
|
}
|
|
setIsInView(false);
|
|
};
|
|
return once ? void 0 : cleanup;
|
|
};
|
|
var handleIntersection = function handleIntersection(entries) {
|
|
entries.forEach(function (entry) {
|
|
var onLeave = activeIntersections.get(entry.target);
|
|
if (entry.isIntersecting === Boolean(onLeave)) {
|
|
return;
|
|
}
|
|
if (entry.isIntersecting) {
|
|
var newOnLeave = onEnter();
|
|
if (is12.fun(newOnLeave)) {
|
|
activeIntersections.set(entry.target, newOnLeave);
|
|
} else {
|
|
observer.unobserve(entry.target);
|
|
}
|
|
} else if (onLeave) {
|
|
onLeave();
|
|
activeIntersections["delete"](entry.target);
|
|
}
|
|
});
|
|
};
|
|
var observer = new IntersectionObserver(handleIntersection, _objectSpread({
|
|
root: root && root.current || void 0,
|
|
threshold: typeof amount === "number" || Array.isArray(amount) ? amount : defaultThresholdOptions[amount]
|
|
}, restArgs));
|
|
observer.observe(element);
|
|
return function () {
|
|
return observer.unobserve(element);
|
|
};
|
|
}, [intersectionArguments]);
|
|
if (propsFn) {
|
|
return [ref, springs];
|
|
}
|
|
return [ref, isInView];
|
|
}
|
|
|
|
// src/components/Spring.tsx
|
|
function Spring(_ref26) {
|
|
var children = _ref26.children,
|
|
props = _objectWithoutProperties(_ref26, _excluded6);
|
|
return children(useSpring(props));
|
|
}
|
|
|
|
// src/components/Trail.tsx
|
|
|
|
function Trail(_ref27) {
|
|
var items = _ref27.items,
|
|
children = _ref27.children,
|
|
props = _objectWithoutProperties(_ref27, _excluded7);
|
|
var trails = useTrail(items.length, props);
|
|
return items.map(function (item, index) {
|
|
var result = children(item, index);
|
|
return is13.fun(result) ? result(trails[index]) : result;
|
|
});
|
|
}
|
|
|
|
// src/components/Transition.tsx
|
|
function Transition(_ref28) {
|
|
var items = _ref28.items,
|
|
children = _ref28.children,
|
|
props = _objectWithoutProperties(_ref28, _excluded8);
|
|
return useTransition(items, props)(children);
|
|
}
|
|
|
|
// src/interpolate.ts
|
|
|
|
|
|
// src/Interpolation.ts
|
|
|
|
|
|
var Interpolation = /*#__PURE__*/function (_FrameValue2) {
|
|
inherits(Interpolation, _FrameValue2);
|
|
var _super5 = createSuper(Interpolation);
|
|
function Interpolation(source, args) {
|
|
var _this14;
|
|
classCallCheck(this, Interpolation);
|
|
_this14 = _super5.call(this);
|
|
_this14.source = source;
|
|
/** Equals false when in the frameloop */
|
|
_this14.idle = true;
|
|
/** The inputs which are currently animating */
|
|
_this14._active = /* @__PURE__ */new Set();
|
|
_this14.calc = createInterpolator.apply(void 0, toConsumableArray(args));
|
|
var value = _this14._get();
|
|
var nodeType = getAnimatedType(value);
|
|
setAnimated(assertThisInitialized(_this14), nodeType.create(value));
|
|
return _this14;
|
|
}
|
|
createClass(Interpolation, [{
|
|
key: "advance",
|
|
value: function advance(_dt) {
|
|
var value = this._get();
|
|
var oldValue = this.get();
|
|
if (!isEqual(value, oldValue)) {
|
|
getAnimated(this).setValue(value);
|
|
this._onChange(value, this.idle);
|
|
}
|
|
if (!this.idle && checkIdle(this._active)) {
|
|
becomeIdle(this);
|
|
}
|
|
}
|
|
}, {
|
|
key: "_get",
|
|
value: function _get() {
|
|
var inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));
|
|
return this.calc.apply(this, toConsumableArray(inputs));
|
|
}
|
|
}, {
|
|
key: "_start",
|
|
value: function _start() {
|
|
var _this15 = this;
|
|
if (this.idle && !checkIdle(this._active)) {
|
|
this.idle = false;
|
|
react_spring_shared_modern_each(getPayload(this), function (node) {
|
|
node.done = false;
|
|
});
|
|
if (globals_exports.skipAnimation) {
|
|
raf.batchedUpdates(function () {
|
|
return _this15.advance();
|
|
});
|
|
becomeIdle(this);
|
|
} else {
|
|
frameLoop.start(this);
|
|
}
|
|
}
|
|
}
|
|
// Observe our sources only when we're observed.
|
|
}, {
|
|
key: "_attach",
|
|
value: function _attach() {
|
|
var _this16 = this;
|
|
var priority = 1;
|
|
react_spring_shared_modern_each(toArray(this.source), function (source) {
|
|
if (hasFluidValue(source)) {
|
|
addFluidObserver(source, _this16);
|
|
}
|
|
if (isFrameValue(source)) {
|
|
if (!source.idle) {
|
|
_this16._active.add(source);
|
|
}
|
|
priority = Math.max(priority, source.priority + 1);
|
|
}
|
|
});
|
|
this.priority = priority;
|
|
this._start();
|
|
}
|
|
// Stop observing our sources once we have no observers.
|
|
}, {
|
|
key: "_detach",
|
|
value: function _detach() {
|
|
var _this17 = this;
|
|
react_spring_shared_modern_each(toArray(this.source), function (source) {
|
|
if (hasFluidValue(source)) {
|
|
removeFluidObserver(source, _this17);
|
|
}
|
|
});
|
|
this._active.clear();
|
|
becomeIdle(this);
|
|
}
|
|
/** @internal */
|
|
}, {
|
|
key: "eventObserved",
|
|
value: function eventObserved(event) {
|
|
if (event.type == "change") {
|
|
if (event.idle) {
|
|
this.advance();
|
|
} else {
|
|
this._active.add(event.parent);
|
|
this._start();
|
|
}
|
|
} else if (event.type == "idle") {
|
|
this._active["delete"](event.parent);
|
|
} else if (event.type == "priority") {
|
|
this.priority = toArray(this.source).reduce(function (highest, parent) {
|
|
return Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1);
|
|
}, 0);
|
|
}
|
|
}
|
|
}]);
|
|
return Interpolation;
|
|
}(FrameValue);
|
|
function isIdle(source) {
|
|
return source.idle !== false;
|
|
}
|
|
function checkIdle(active) {
|
|
return !active.size || Array.from(active).every(isIdle);
|
|
}
|
|
function becomeIdle(self) {
|
|
if (!self.idle) {
|
|
self.idle = true;
|
|
react_spring_shared_modern_each(getPayload(self), function (node) {
|
|
node.done = true;
|
|
});
|
|
callFluidObservers(self, {
|
|
type: "idle",
|
|
parent: self
|
|
});
|
|
}
|
|
}
|
|
|
|
// src/interpolate.ts
|
|
var to = function to(source) {
|
|
for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
|
args[_key5 - 1] = arguments[_key5];
|
|
}
|
|
return new Interpolation(source, args);
|
|
};
|
|
var react_spring_core_modern_interpolate = function interpolate(source) {
|
|
for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
|
|
args[_key6 - 1] = arguments[_key6];
|
|
}
|
|
return deprecateInterpolate2(), new Interpolation(source, args);
|
|
};
|
|
|
|
// src/globals.ts
|
|
|
|
globals_exports.assign({
|
|
createStringInterpolator: createStringInterpolator2,
|
|
to: function to(source, args) {
|
|
return new Interpolation(source, args);
|
|
}
|
|
});
|
|
var react_spring_core_modern_update = frameLoop.advance;
|
|
|
|
// src/index.ts
|
|
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react-dom@17.0.2@react-dom/index.js
|
|
var _react_dom_17_0_2_react_dom = __webpack_require__(4676);
|
|
;// CONCATENATED MODULE: ./node_modules/_@react-spring_web@9.7.5@@react-spring/web/dist/react-spring_web.modern.mjs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var react_spring_web_modern_excluded = ["className", "style", "children", "scrollTop", "scrollLeft", "viewBox"],
|
|
react_spring_web_modern_excluded2 = ["x", "y", "z"],
|
|
react_spring_web_modern_excluded3 = ["scrollTop", "scrollLeft"];
|
|
// src/index.ts
|
|
|
|
|
|
|
|
|
|
|
|
// src/applyAnimatedValues.ts
|
|
var isCustomPropRE = /^--/;
|
|
function dangerousStyleValue(name, value) {
|
|
if (value == null || typeof value === "boolean" || value === "") return "";
|
|
if (typeof value === "number" && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + "px";
|
|
return ("" + value).trim();
|
|
}
|
|
var attributeCache = {};
|
|
function applyAnimatedValues(instance, props) {
|
|
if (!instance.nodeType || !instance.setAttribute) {
|
|
return false;
|
|
}
|
|
var isFilterElement = instance.nodeName === "filter" || instance.parentNode && instance.parentNode.nodeName === "filter";
|
|
var className = props.className,
|
|
style = props.style,
|
|
children = props.children,
|
|
scrollTop = props.scrollTop,
|
|
scrollLeft = props.scrollLeft,
|
|
viewBox = props.viewBox,
|
|
attributes = objectWithoutProperties(props, react_spring_web_modern_excluded);
|
|
var values = Object.values(attributes);
|
|
var names = Object.keys(attributes).map(function (name) {
|
|
return isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g,
|
|
// Attributes are written in dash case
|
|
function (n) {
|
|
return "-" + n.toLowerCase();
|
|
}));
|
|
});
|
|
if (children !== void 0) {
|
|
instance.textContent = children;
|
|
}
|
|
for (var name in style) {
|
|
if (style.hasOwnProperty(name)) {
|
|
var value = dangerousStyleValue(name, style[name]);
|
|
if (isCustomPropRE.test(name)) {
|
|
instance.style.setProperty(name, value);
|
|
} else {
|
|
instance.style[name] = value;
|
|
}
|
|
}
|
|
}
|
|
names.forEach(function (name, i) {
|
|
instance.setAttribute(name, values[i]);
|
|
});
|
|
if (className !== void 0) {
|
|
instance.className = className;
|
|
}
|
|
if (scrollTop !== void 0) {
|
|
instance.scrollTop = scrollTop;
|
|
}
|
|
if (scrollLeft !== void 0) {
|
|
instance.scrollLeft = scrollLeft;
|
|
}
|
|
if (viewBox !== void 0) {
|
|
instance.setAttribute("viewBox", viewBox);
|
|
}
|
|
}
|
|
var isUnitlessNumber = {
|
|
animationIterationCount: true,
|
|
borderImageOutset: true,
|
|
borderImageSlice: true,
|
|
borderImageWidth: true,
|
|
boxFlex: true,
|
|
boxFlexGroup: true,
|
|
boxOrdinalGroup: true,
|
|
columnCount: true,
|
|
columns: true,
|
|
flex: true,
|
|
flexGrow: true,
|
|
flexPositive: true,
|
|
flexShrink: true,
|
|
flexNegative: true,
|
|
flexOrder: true,
|
|
gridRow: true,
|
|
gridRowEnd: true,
|
|
gridRowSpan: true,
|
|
gridRowStart: true,
|
|
gridColumn: true,
|
|
gridColumnEnd: true,
|
|
gridColumnSpan: true,
|
|
gridColumnStart: true,
|
|
fontWeight: true,
|
|
lineClamp: true,
|
|
lineHeight: true,
|
|
opacity: true,
|
|
order: true,
|
|
orphans: true,
|
|
tabSize: true,
|
|
widows: true,
|
|
zIndex: true,
|
|
zoom: true,
|
|
// SVG-related properties
|
|
fillOpacity: true,
|
|
floodOpacity: true,
|
|
stopOpacity: true,
|
|
strokeDasharray: true,
|
|
strokeDashoffset: true,
|
|
strokeMiterlimit: true,
|
|
strokeOpacity: true,
|
|
strokeWidth: true
|
|
};
|
|
var prefixKey = function prefixKey(prefix, key) {
|
|
return prefix + key.charAt(0).toUpperCase() + key.substring(1);
|
|
};
|
|
var prefixes = ["Webkit", "Ms", "Moz", "O"];
|
|
isUnitlessNumber = Object.keys(isUnitlessNumber).reduce(function (acc, prop) {
|
|
prefixes.forEach(function (prefix) {
|
|
return acc[prefixKey(prefix, prop)] = acc[prop];
|
|
});
|
|
return acc;
|
|
}, isUnitlessNumber);
|
|
|
|
// src/AnimatedStyle.ts
|
|
|
|
|
|
var domTransforms = /^(matrix|translate|scale|rotate|skew)/;
|
|
var pxTransforms = /^(translate)/;
|
|
var degTransforms = /^(rotate|skew)/;
|
|
var addUnit = function addUnit(value, unit) {
|
|
return is.num(value) && value !== 0 ? value + unit : value;
|
|
};
|
|
var isValueIdentity = function isValueIdentity(value, id) {
|
|
return is.arr(value) ? value.every(function (v) {
|
|
return isValueIdentity(v, id);
|
|
}) : is.num(value) ? value === id : parseFloat(value) === id;
|
|
};
|
|
var AnimatedStyle = /*#__PURE__*/function (_AnimatedObject) {
|
|
inherits(AnimatedStyle, _AnimatedObject);
|
|
var _super = createSuper(AnimatedStyle);
|
|
function AnimatedStyle(_ref) {
|
|
var x = _ref.x,
|
|
y = _ref.y,
|
|
z = _ref.z,
|
|
style = objectWithoutProperties(_ref, react_spring_web_modern_excluded2);
|
|
classCallCheck(this, AnimatedStyle);
|
|
var inputs = [];
|
|
var transforms = [];
|
|
if (x || y || z) {
|
|
inputs.push([x || 0, y || 0, z || 0]);
|
|
transforms.push(function (xyz) {
|
|
return ["translate3d(".concat(xyz.map(function (v) {
|
|
return addUnit(v, "px");
|
|
}).join(","), ")"),
|
|
// prettier-ignore
|
|
isValueIdentity(xyz, 0)];
|
|
});
|
|
}
|
|
eachProp(style, function (value, key) {
|
|
if (key === "transform") {
|
|
inputs.push([value || ""]);
|
|
transforms.push(function (transform) {
|
|
return [transform, transform === ""];
|
|
});
|
|
} else if (domTransforms.test(key)) {
|
|
delete style[key];
|
|
if (is.und(value)) return;
|
|
var unit = pxTransforms.test(key) ? "px" : degTransforms.test(key) ? "deg" : "";
|
|
inputs.push(toArray(value));
|
|
transforms.push(key === "rotate3d" ? function (_ref2) {
|
|
var _ref3 = slicedToArray(_ref2, 4),
|
|
x2 = _ref3[0],
|
|
y2 = _ref3[1],
|
|
z2 = _ref3[2],
|
|
deg = _ref3[3];
|
|
return ["rotate3d(".concat(x2, ",").concat(y2, ",").concat(z2, ",").concat(addUnit(deg, unit), ")"), isValueIdentity(deg, 0)];
|
|
} : function (input) {
|
|
return ["".concat(key, "(").concat(input.map(function (v) {
|
|
return addUnit(v, unit);
|
|
}).join(","), ")"), isValueIdentity(input, key.startsWith("scale") ? 1 : 0)];
|
|
});
|
|
}
|
|
});
|
|
if (inputs.length) {
|
|
style.transform = new FluidTransform(inputs, transforms);
|
|
}
|
|
return _super.call(this, style);
|
|
}
|
|
return createClass(AnimatedStyle);
|
|
}(AnimatedObject);
|
|
var FluidTransform = /*#__PURE__*/function (_FluidValue) {
|
|
inherits(FluidTransform, _FluidValue);
|
|
var _super2 = createSuper(FluidTransform);
|
|
function FluidTransform(inputs, transforms) {
|
|
var _this;
|
|
classCallCheck(this, FluidTransform);
|
|
_this = _super2.call(this);
|
|
_this.inputs = inputs;
|
|
_this.transforms = transforms;
|
|
_this._value = null;
|
|
return _this;
|
|
}
|
|
createClass(FluidTransform, [{
|
|
key: "get",
|
|
value: function get() {
|
|
return this._value || (this._value = this._get());
|
|
}
|
|
}, {
|
|
key: "_get",
|
|
value: function _get() {
|
|
var _this2 = this;
|
|
var transform = "";
|
|
var identity = true;
|
|
react_spring_shared_modern_each(this.inputs, function (input, i) {
|
|
var arg1 = getFluidValue(input[0]);
|
|
var _this2$transforms$i = _this2.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue)),
|
|
_this2$transforms$i2 = slicedToArray(_this2$transforms$i, 2),
|
|
t = _this2$transforms$i2[0],
|
|
id = _this2$transforms$i2[1];
|
|
transform += " " + t;
|
|
identity = identity && id;
|
|
});
|
|
return identity ? "none" : transform;
|
|
}
|
|
// Start observing our inputs once we have an observer.
|
|
}, {
|
|
key: "observerAdded",
|
|
value: function observerAdded(count) {
|
|
var _this3 = this;
|
|
if (count == 1) react_spring_shared_modern_each(this.inputs, function (input) {
|
|
return react_spring_shared_modern_each(input, function (value) {
|
|
return hasFluidValue(value) && addFluidObserver(value, _this3);
|
|
});
|
|
});
|
|
}
|
|
// Stop observing our inputs once we have no observers.
|
|
}, {
|
|
key: "observerRemoved",
|
|
value: function observerRemoved(count) {
|
|
var _this4 = this;
|
|
if (count == 0) react_spring_shared_modern_each(this.inputs, function (input) {
|
|
return react_spring_shared_modern_each(input, function (value) {
|
|
return hasFluidValue(value) && removeFluidObserver(value, _this4);
|
|
});
|
|
});
|
|
}
|
|
}, {
|
|
key: "eventObserved",
|
|
value: function eventObserved(event) {
|
|
if (event.type == "change") {
|
|
this._value = null;
|
|
}
|
|
callFluidObservers(this, event);
|
|
}
|
|
}]);
|
|
return FluidTransform;
|
|
}(FluidValue);
|
|
|
|
// src/primitives.ts
|
|
var primitives = ["a", "abbr", "address", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "u", "ul", "var", "video", "wbr",
|
|
// SVG
|
|
"circle", "clipPath", "defs", "ellipse", "foreignObject", "g", "image", "line", "linearGradient", "mask", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "text", "tspan"];
|
|
|
|
// src/index.ts
|
|
|
|
globals_exports.assign({
|
|
batchedUpdates: _react_dom_17_0_2_react_dom.unstable_batchedUpdates,
|
|
createStringInterpolator: createStringInterpolator2,
|
|
colors: colors2
|
|
});
|
|
var host = createHost(primitives, {
|
|
applyAnimatedValues: applyAnimatedValues,
|
|
createAnimatedStyle: function createAnimatedStyle(style) {
|
|
return new AnimatedStyle(style);
|
|
},
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
getComponentProps: function getComponentProps(_ref4) {
|
|
var scrollTop = _ref4.scrollTop,
|
|
scrollLeft = _ref4.scrollLeft,
|
|
props = objectWithoutProperties(_ref4, react_spring_web_modern_excluded3);
|
|
return props;
|
|
}
|
|
});
|
|
var animated = host.animated;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ 28105:
|
|
/*!************************************************************************************!*\
|
|
!*** ./node_modules/_react-spring@9.7.5@react-spring/dist/react-spring.modern.mjs ***!
|
|
\************************************************************************************/
|
|
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ Yz: function() { return /* reexport safe */ _react_spring_web__WEBPACK_IMPORTED_MODULE_0__.Yz; },
|
|
/* harmony export */ q: function() { return /* reexport safe */ _react_spring_web__WEBPACK_IMPORTED_MODULE_0__.q; }
|
|
/* harmony export */ });
|
|
/* harmony import */ var _react_spring_web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @react-spring/web */ 42237);
|
|
// src/index.ts
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
}]); |