@teamturing/react-kit 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Button/index.d.ts +1 -1
- package/dist/core/Dialog/index.d.ts +16 -0
- package/dist/core/DialogHandler/index.d.ts +13 -0
- package/dist/core/GradientText/index.d.ts +11 -12
- package/dist/core/Grid/index.d.ts +2 -2
- package/dist/core/IconButton/index.d.ts +1 -1
- package/dist/core/ItemList/index.d.ts +2 -2
- package/dist/core/MotionView/index.d.ts +3 -0
- package/dist/core/Spinner/index.d.ts +116 -116
- package/dist/core/Stack/index.d.ts +2 -2
- package/dist/core/TextInput/index.d.ts +39 -0
- package/dist/core/Textarea/index.d.ts +9 -0
- package/dist/hook/useDialogHandler.d.ts +6 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +10732 -593
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/isFunction.d.ts +1 -0
- package/esm/_virtual/index.js +3 -0
- package/esm/_virtual/react-is.development.js +3 -0
- package/esm/_virtual/react-is.production.min.js +3 -0
- package/esm/core/Dialog/index.js +188 -0
- package/esm/core/DialogHandler/index.js +33 -0
- package/esm/core/MotionView/index.js +6 -0
- package/esm/core/TextInput/index.js +220 -0
- package/esm/core/Textarea/index.js +158 -0
- package/esm/hook/useDialogHandler.js +14 -0
- package/esm/index.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/instant.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/js/driver-frameloop.js +16 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/js/index.js +303 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.js +199 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/waapi/easing.js +31 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/waapi/index.js +23 -0
- package/esm/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/inertia.js +87 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/keyframes.js +51 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/spring/find.js +89 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/spring/index.js +129 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/animation/generators/utils/velocity.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.js +101 -0
- package/esm/node_modules/framer-motion/dist/es/animation/interfaces/single-value.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.js +71 -0
- package/esm/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.js +63 -0
- package/esm/node_modules/framer-motion/dist/es/animation/interfaces/visual-element.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/default-transitions.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/is-animatable.js +30 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/is-none.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/keyframes.js +45 -0
- package/esm/node_modules/framer-motion/dist/es/animation/utils/transitions.js +13 -0
- package/esm/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js +71 -0
- package/esm/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js +56 -0
- package/esm/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js +158 -0
- package/esm/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/context/LazyContext.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/context/MotionContext/create.js +13 -0
- package/esm/node_modules/framer-motion/dist/es/context/MotionContext/index.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/context/PresenceContext.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/debug/record.js +7 -0
- package/esm/node_modules/framer-motion/dist/es/easing/anticipate.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/easing/back.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/easing/circ.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/easing/cubic-bezier.js +51 -0
- package/esm/node_modules/framer-motion/dist/es/easing/ease.js +7 -0
- package/esm/node_modules/framer-motion/dist/es/easing/modifiers/mirror.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/easing/modifiers/reverse.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/easing/utils/is-easing-array.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/easing/utils/map.js +37 -0
- package/esm/node_modules/framer-motion/dist/es/events/add-dom-event.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/events/add-pointer-event.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/events/event-info.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/frameloop/batcher.js +60 -0
- package/esm/node_modules/framer-motion/dist/es/frameloop/frame.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/frameloop/render-step.js +104 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +457 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/drag/index.js +27 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +125 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/drag/utils/lock.js +53 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/focus.js +41 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/hover.js +32 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +148 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/pan/index.js +46 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/press.js +120 -0
- package/esm/node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.js +20 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/Feature.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +31 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/animation/index.js +38 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/animations.js +13 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/definitions.js +28 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/drag.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/gestures.js +21 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +131 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/layout.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/load-features.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +72 -0
- package/esm/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +49 -0
- package/esm/node_modules/framer-motion/dist/es/motion/index.js +79 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/symbol.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +33 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +75 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +81 -0
- package/esm/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +59 -0
- package/esm/node_modules/framer-motion/dist/es/projection/animation/mix-values.js +93 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/conversion.js +33 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/copy.js +20 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.js +122 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.js +41 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.js +54 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/models.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/projection/geometry/utils.js +25 -0
- package/esm/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.js +13 -0
- package/esm/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.js +27 -0
- package/esm/node_modules/framer-motion/dist/es/projection/node/create-projection-node.js +1494 -0
- package/esm/node_modules/framer-motion/dist/es/projection/node/state.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/projection/shared/stack.js +112 -0
- package/esm/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.js +41 -0
- package/esm/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.js +35 -0
- package/esm/node_modules/framer-motion/dist/es/projection/styles/scale-correction.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/projection/styles/transform.js +42 -0
- package/esm/node_modules/framer-motion/dist/es/projection/utils/each-axis.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/projection/utils/has-transform.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/projection/utils/measure.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/render/VisualElement.js +507 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.js +48 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/motion-proxy.js +47 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/motion.js +23 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/use-render.js +35 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/create-config.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.js +89 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +57 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +30 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.js +230 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/defaults.js +30 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/find.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.js +10 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/number.js +72 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/test.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/render/dom/value-types/type-int.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.js +55 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/config-motion.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/use-props.js +57 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/build-styles.js +74 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/build-transform.js +45 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/render.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/render/html/utils/transform.js +28 -0
- package/esm/node_modules/framer-motion/dist/es/render/store.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.js +46 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/config-motion.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +33 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/use-props.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.js +52 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.js +30 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/path.js +32 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/render.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/animation-state.js +319 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/flat-tree.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.js +13 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/is-variant-label.js +8 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/motion-values.js +63 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/resolve-variants.js +26 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/setters.js +101 -0
- package/esm/node_modules/framer-motion/dist/es/render/utils/variant-props.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/utils/array.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/utils/clamp.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/utils/delay.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/utils/distance.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/utils/errors.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.js +42 -0
- package/esm/node_modules/framer-motion/dist/es/utils/interpolate.js +92 -0
- package/esm/node_modules/framer-motion/dist/es/utils/is-browser.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/utils/is-numerical-string.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/utils/is-ref-object.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/utils/is-zero-value-string.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/utils/memo.js +10 -0
- package/esm/node_modules/framer-motion/dist/es/utils/mix-color.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/utils/mix-complex.js +64 -0
- package/esm/node_modules/framer-motion/dist/es/utils/mix.js +24 -0
- package/esm/node_modules/framer-motion/dist/es/utils/noop.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/utils/offsets/default.js +9 -0
- package/esm/node_modules/framer-motion/dist/es/utils/offsets/fill.js +12 -0
- package/esm/node_modules/framer-motion/dist/es/utils/offsets/time.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/utils/pipe.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/utils/progress.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/utils/reduced-motion/index.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/utils/reduced-motion/state.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/utils/resolve-value.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/utils/shallow-compare.js +14 -0
- package/esm/node_modules/framer-motion/dist/es/utils/subscription-manager.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/utils/time-conversion.js +10 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-constant.js +18 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-force-update.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-instant-transition-state.js +5 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-is-mounted.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +6 -0
- package/esm/node_modules/framer-motion/dist/es/utils/use-unmount-effect.js +7 -0
- package/esm/node_modules/framer-motion/dist/es/utils/velocity-per-second.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/utils/warn-once.js +11 -0
- package/esm/node_modules/framer-motion/dist/es/value/index.js +331 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/color/hex.js +40 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/color/hsla.js +22 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/color/index.js +28 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/color/rgba.js +25 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/color/utils.js +23 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/complex/filter.js +30 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/complex/index.js +92 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/numbers/index.js +17 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/numbers/units.js +19 -0
- package/esm/node_modules/framer-motion/dist/es/value/types/utils.js +15 -0
- package/esm/node_modules/framer-motion/dist/es/value/use-will-change/is.js +7 -0
- package/esm/node_modules/framer-motion/dist/es/value/utils/is-motion-value.js +3 -0
- package/esm/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.js +16 -0
- package/esm/node_modules/react-is/cjs/react-is.development.js +211 -0
- package/esm/node_modules/react-is/cjs/react-is.production.min.js +123 -0
- package/esm/node_modules/react-is/index.js +12 -0
- package/esm/packages/icons/esm/Close.js +17 -0
- package/esm/packages/token-studio/esm/token/elevation/index.js +5 -1
- package/esm/utils/isFunction.js +3 -0
- package/package.json +5 -3
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Accepts an easing function and returns a new one that outputs mirrored values for
|
|
2
|
+
// the second half of the animation. Turns easeIn into easeInOut.
|
|
3
|
+
const mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
|
|
4
|
+
|
|
5
|
+
export { mirrorEasing };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { invariant } from '../../utils/errors.js';
|
|
2
|
+
import { cubicBezier } from '../cubic-bezier.js';
|
|
3
|
+
import { noop } from '../../utils/noop.js';
|
|
4
|
+
import { easeIn, easeInOut, easeOut } from '../ease.js';
|
|
5
|
+
import { circIn, circInOut, circOut } from '../circ.js';
|
|
6
|
+
import { backIn, backInOut, backOut } from '../back.js';
|
|
7
|
+
import { anticipate } from '../anticipate.js';
|
|
8
|
+
|
|
9
|
+
const easingLookup = {
|
|
10
|
+
linear: noop,
|
|
11
|
+
easeIn,
|
|
12
|
+
easeInOut,
|
|
13
|
+
easeOut,
|
|
14
|
+
circIn,
|
|
15
|
+
circInOut,
|
|
16
|
+
circOut,
|
|
17
|
+
backIn,
|
|
18
|
+
backInOut,
|
|
19
|
+
backOut,
|
|
20
|
+
anticipate,
|
|
21
|
+
};
|
|
22
|
+
const easingDefinitionToFunction = (definition) => {
|
|
23
|
+
if (Array.isArray(definition)) {
|
|
24
|
+
// If cubic bezier definition, create bezier curve
|
|
25
|
+
invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);
|
|
26
|
+
const [x1, y1, x2, y2] = definition;
|
|
27
|
+
return cubicBezier(x1, y1, x2, y2);
|
|
28
|
+
}
|
|
29
|
+
else if (typeof definition === "string") {
|
|
30
|
+
// Else lookup from table
|
|
31
|
+
invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);
|
|
32
|
+
return easingLookup[definition];
|
|
33
|
+
}
|
|
34
|
+
return definition;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { easingDefinitionToFunction };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { addDomEvent } from './add-dom-event.js';
|
|
2
|
+
import { addPointerInfo } from './event-info.js';
|
|
3
|
+
|
|
4
|
+
function addPointerEvent(target, eventName, handler, options) {
|
|
5
|
+
return addDomEvent(target, eventName, addPointerInfo(handler), options);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export { addPointerEvent };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isPrimaryPointer } from './utils/is-primary-pointer.js';
|
|
2
|
+
|
|
3
|
+
function extractEventInfo(event, pointType = "page") {
|
|
4
|
+
return {
|
|
5
|
+
point: {
|
|
6
|
+
x: event[pointType + "X"],
|
|
7
|
+
y: event[pointType + "Y"],
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const addPointerInfo = (handler) => {
|
|
12
|
+
return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { addPointerInfo, extractEventInfo };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const isPrimaryPointer = (event) => {
|
|
2
|
+
if (event.pointerType === "mouse") {
|
|
3
|
+
return typeof event.button !== "number" || event.button <= 0;
|
|
4
|
+
}
|
|
5
|
+
else {
|
|
6
|
+
/**
|
|
7
|
+
* isPrimary is true for all mice buttons, whereas every touch point
|
|
8
|
+
* is regarded as its own input. So subsequent concurrent touch points
|
|
9
|
+
* will be false.
|
|
10
|
+
*
|
|
11
|
+
* Specifically match against false here as incomplete versions of
|
|
12
|
+
* PointerEvents in very old browser might have it set as undefined.
|
|
13
|
+
*/
|
|
14
|
+
return event.isPrimary !== false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { isPrimaryPointer };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createRenderStep } from './render-step.js';
|
|
2
|
+
|
|
3
|
+
const stepsOrder = [
|
|
4
|
+
"prepare",
|
|
5
|
+
"read",
|
|
6
|
+
"update",
|
|
7
|
+
"preRender",
|
|
8
|
+
"render",
|
|
9
|
+
"postRender",
|
|
10
|
+
];
|
|
11
|
+
const maxElapsed = 40;
|
|
12
|
+
function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
|
|
13
|
+
let runNextFrame = false;
|
|
14
|
+
let useDefaultElapsed = true;
|
|
15
|
+
const state = {
|
|
16
|
+
delta: 0,
|
|
17
|
+
timestamp: 0,
|
|
18
|
+
isProcessing: false,
|
|
19
|
+
};
|
|
20
|
+
const steps = stepsOrder.reduce((acc, key) => {
|
|
21
|
+
acc[key] = createRenderStep(() => (runNextFrame = true));
|
|
22
|
+
return acc;
|
|
23
|
+
}, {});
|
|
24
|
+
const processStep = (stepId) => steps[stepId].process(state);
|
|
25
|
+
const processBatch = () => {
|
|
26
|
+
const timestamp = performance.now();
|
|
27
|
+
runNextFrame = false;
|
|
28
|
+
state.delta = useDefaultElapsed
|
|
29
|
+
? 1000 / 60
|
|
30
|
+
: Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);
|
|
31
|
+
state.timestamp = timestamp;
|
|
32
|
+
state.isProcessing = true;
|
|
33
|
+
stepsOrder.forEach(processStep);
|
|
34
|
+
state.isProcessing = false;
|
|
35
|
+
if (runNextFrame && allowKeepAlive) {
|
|
36
|
+
useDefaultElapsed = false;
|
|
37
|
+
scheduleNextBatch(processBatch);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const wake = () => {
|
|
41
|
+
runNextFrame = true;
|
|
42
|
+
useDefaultElapsed = true;
|
|
43
|
+
if (!state.isProcessing) {
|
|
44
|
+
scheduleNextBatch(processBatch);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const schedule = stepsOrder.reduce((acc, key) => {
|
|
48
|
+
const step = steps[key];
|
|
49
|
+
acc[key] = (process, keepAlive = false, immediate = false) => {
|
|
50
|
+
if (!runNextFrame)
|
|
51
|
+
wake();
|
|
52
|
+
return step.schedule(process, keepAlive, immediate);
|
|
53
|
+
};
|
|
54
|
+
return acc;
|
|
55
|
+
}, {});
|
|
56
|
+
const cancel = (process) => stepsOrder.forEach((key) => steps[key].cancel(process));
|
|
57
|
+
return { schedule, cancel, state, steps };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { createRenderBatcher, stepsOrder };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { noop } from '../utils/noop.js';
|
|
2
|
+
import { createRenderBatcher } from './batcher.js';
|
|
3
|
+
|
|
4
|
+
const { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
|
|
5
|
+
|
|
6
|
+
export { cancelFrame, frame, frameData, steps };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
class Queue {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.order = [];
|
|
4
|
+
this.scheduled = new Set();
|
|
5
|
+
}
|
|
6
|
+
add(process) {
|
|
7
|
+
if (!this.scheduled.has(process)) {
|
|
8
|
+
this.scheduled.add(process);
|
|
9
|
+
this.order.push(process);
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
remove(process) {
|
|
14
|
+
const index = this.order.indexOf(process);
|
|
15
|
+
if (index !== -1) {
|
|
16
|
+
this.order.splice(index, 1);
|
|
17
|
+
this.scheduled.delete(process);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
clear() {
|
|
21
|
+
this.order.length = 0;
|
|
22
|
+
this.scheduled.clear();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function createRenderStep(runNextFrame) {
|
|
26
|
+
/**
|
|
27
|
+
* We create and reuse two queues, one to queue jobs for the current frame
|
|
28
|
+
* and one for the next. We reuse to avoid triggering GC after x frames.
|
|
29
|
+
*/
|
|
30
|
+
let thisFrame = new Queue();
|
|
31
|
+
let nextFrame = new Queue();
|
|
32
|
+
let numToRun = 0;
|
|
33
|
+
/**
|
|
34
|
+
* Track whether we're currently processing jobs in this step. This way
|
|
35
|
+
* we can decide whether to schedule new jobs for this frame or next.
|
|
36
|
+
*/
|
|
37
|
+
let isProcessing = false;
|
|
38
|
+
let flushNextFrame = false;
|
|
39
|
+
/**
|
|
40
|
+
* A set of processes which were marked keepAlive when scheduled.
|
|
41
|
+
*/
|
|
42
|
+
const toKeepAlive = new WeakSet();
|
|
43
|
+
const step = {
|
|
44
|
+
/**
|
|
45
|
+
* Schedule a process to run on the next frame.
|
|
46
|
+
*/
|
|
47
|
+
schedule: (callback, keepAlive = false, immediate = false) => {
|
|
48
|
+
const addToCurrentFrame = immediate && isProcessing;
|
|
49
|
+
const queue = addToCurrentFrame ? thisFrame : nextFrame;
|
|
50
|
+
if (keepAlive)
|
|
51
|
+
toKeepAlive.add(callback);
|
|
52
|
+
if (queue.add(callback) && addToCurrentFrame && isProcessing) {
|
|
53
|
+
// If we're adding it to the currently running queue, update its measured size
|
|
54
|
+
numToRun = thisFrame.order.length;
|
|
55
|
+
}
|
|
56
|
+
return callback;
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Cancel the provided callback from running on the next frame.
|
|
60
|
+
*/
|
|
61
|
+
cancel: (callback) => {
|
|
62
|
+
nextFrame.remove(callback);
|
|
63
|
+
toKeepAlive.delete(callback);
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* Execute all schedule callbacks.
|
|
67
|
+
*/
|
|
68
|
+
process: (frameData) => {
|
|
69
|
+
/**
|
|
70
|
+
* If we're already processing we've probably been triggered by a flushSync
|
|
71
|
+
* inside an existing process. Instead of executing, mark flushNextFrame
|
|
72
|
+
* as true and ensure we flush the following frame at the end of this one.
|
|
73
|
+
*/
|
|
74
|
+
if (isProcessing) {
|
|
75
|
+
flushNextFrame = true;
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
isProcessing = true;
|
|
79
|
+
[thisFrame, nextFrame] = [nextFrame, thisFrame];
|
|
80
|
+
// Clear the next frame queue
|
|
81
|
+
nextFrame.clear();
|
|
82
|
+
// Execute this frame
|
|
83
|
+
numToRun = thisFrame.order.length;
|
|
84
|
+
if (numToRun) {
|
|
85
|
+
for (let i = 0; i < numToRun; i++) {
|
|
86
|
+
const callback = thisFrame.order[i];
|
|
87
|
+
callback(frameData);
|
|
88
|
+
if (toKeepAlive.has(callback)) {
|
|
89
|
+
step.schedule(callback);
|
|
90
|
+
runNextFrame();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
isProcessing = false;
|
|
95
|
+
if (flushNextFrame) {
|
|
96
|
+
flushNextFrame = false;
|
|
97
|
+
step.process(frameData);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
return step;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export { createRenderStep };
|