motion 12.18.0 → 12.18.2
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/cjs/mini.js +7 -1063
- package/dist/es/debug.mjs +1 -0
- package/dist/es/index.mjs +1 -0
- package/dist/es/mini.mjs +1 -0
- package/dist/es/react-client.mjs +2 -0
- package/dist/es/react-m.mjs +2 -0
- package/dist/es/react-mini.mjs +2 -0
- package/dist/es/react.mjs +2 -0
- package/dist/motion.js +1 -1
- package/mini/package.json +1 -1
- package/package.json +11 -11
- package/react/package.json +1 -1
- package/react-client/package.json +1 -1
- package/react-m/package.json +1 -1
- package/dist/es/framer-motion/dist/es/animation/animate/index.mjs +0 -34
- package/dist/es/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +0 -19
- package/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs +0 -14
- package/dist/es/framer-motion/dist/es/animation/animate/single-value.mjs +0 -11
- package/dist/es/framer-motion/dist/es/animation/animate/subject.mjs +0 -52
- package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +0 -112
- package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-sequence.mjs +0 -13
- package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +0 -12
- package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +0 -12
- package/dist/es/framer-motion/dist/es/animation/hooks/animation-controls.mjs +0 -80
- package/dist/es/framer-motion/dist/es/animation/hooks/use-animate-style.mjs +0 -17
- package/dist/es/framer-motion/dist/es/animation/hooks/use-animate.mjs +0 -17
- package/dist/es/framer-motion/dist/es/animation/hooks/use-animated-state.mjs +0 -64
- package/dist/es/framer-motion/dist/es/animation/hooks/use-animation.mjs +0 -41
- package/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs +0 -102
- package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +0 -85
- package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs +0 -65
- package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element.mjs +0 -26
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +0 -6
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +0 -7
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/handoff.mjs +0 -38
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/start.mjs +0 -171
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/store-id.mjs +0 -8
- package/dist/es/framer-motion/dist/es/animation/optimized-appear/store.mjs +0 -4
- package/dist/es/framer-motion/dist/es/animation/sequence/create.mjs +0 -256
- package/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs +0 -5
- package/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +0 -23
- package/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs +0 -31
- package/dist/es/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs +0 -13
- package/dist/es/framer-motion/dist/es/animation/sequence/utils/sort.mjs +0 -14
- package/dist/es/framer-motion/dist/es/animation/utils/create-visual-element.mjs +0 -45
- package/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs +0 -40
- package/dist/es/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +0 -7
- package/dist/es/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +0 -5
- package/dist/es/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +0 -5
- package/dist/es/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +0 -10
- package/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs +0 -26
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs +0 -87
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs +0 -64
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/index.mjs +0 -166
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence-data.mjs +0 -9
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs +0 -70
- package/dist/es/framer-motion/dist/es/components/AnimatePresence/utils.mjs +0 -14
- package/dist/es/framer-motion/dist/es/components/AnimateSharedLayout.mjs +0 -15
- package/dist/es/framer-motion/dist/es/components/LayoutGroup/index.mjs +0 -32
- package/dist/es/framer-motion/dist/es/components/LazyMotion/index.mjs +0 -68
- package/dist/es/framer-motion/dist/es/components/MotionConfig/index.mjs +0 -48
- package/dist/es/framer-motion/dist/es/components/Reorder/Group.mjs +0 -53
- package/dist/es/framer-motion/dist/es/components/Reorder/Item.mjs +0 -34
- package/dist/es/framer-motion/dist/es/components/Reorder/namespace.mjs +0 -2
- package/dist/es/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs +0 -24
- package/dist/es/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs +0 -10
- package/dist/es/framer-motion/dist/es/context/LayoutGroupContext.mjs +0 -6
- package/dist/es/framer-motion/dist/es/context/LazyContext.mjs +0 -6
- package/dist/es/framer-motion/dist/es/context/MotionConfigContext.mjs +0 -13
- package/dist/es/framer-motion/dist/es/context/MotionContext/create.mjs +0 -13
- package/dist/es/framer-motion/dist/es/context/MotionContext/index.mjs +0 -6
- package/dist/es/framer-motion/dist/es/context/MotionContext/utils.mjs +0 -17
- package/dist/es/framer-motion/dist/es/context/PresenceContext.mjs +0 -10
- package/dist/es/framer-motion/dist/es/context/ReorderContext.mjs +0 -6
- package/dist/es/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs +0 -9
- package/dist/es/framer-motion/dist/es/events/add-dom-event.mjs +0 -6
- package/dist/es/framer-motion/dist/es/events/add-pointer-event.mjs +0 -8
- package/dist/es/framer-motion/dist/es/events/event-info.mjs +0 -15
- package/dist/es/framer-motion/dist/es/events/use-dom-event.mjs +0 -34
- package/dist/es/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +0 -479
- package/dist/es/framer-motion/dist/es/gestures/drag/index.mjs +0 -27
- package/dist/es/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs +0 -88
- package/dist/es/framer-motion/dist/es/gestures/drag/utils/constraints.mjs +0 -129
- package/dist/es/framer-motion/dist/es/gestures/focus.mjs +0 -41
- package/dist/es/framer-motion/dist/es/gestures/hover.mjs +0 -30
- package/dist/es/framer-motion/dist/es/gestures/pan/PanSession.mjs +0 -156
- package/dist/es/framer-motion/dist/es/gestures/pan/index.mjs +0 -50
- package/dist/es/framer-motion/dist/es/gestures/press.mjs +0 -33
- package/dist/es/framer-motion/dist/es/motion/features/Feature.mjs +0 -9
- package/dist/es/framer-motion/dist/es/motion/features/animation/exit.mjs +0 -36
- package/dist/es/framer-motion/dist/es/motion/features/animation/index.mjs +0 -40
- package/dist/es/framer-motion/dist/es/motion/features/animations.mjs +0 -13
- package/dist/es/framer-motion/dist/es/motion/features/definitions.mjs +0 -28
- package/dist/es/framer-motion/dist/es/motion/features/drag.mjs +0 -17
- package/dist/es/framer-motion/dist/es/motion/features/gestures.mjs +0 -21
- package/dist/es/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs +0 -135
- package/dist/es/framer-motion/dist/es/motion/features/layout.mjs +0 -11
- package/dist/es/framer-motion/dist/es/motion/features/load-features.mjs +0 -12
- package/dist/es/framer-motion/dist/es/motion/features/viewport/index.mjs +0 -72
- package/dist/es/framer-motion/dist/es/motion/features/viewport/observers.mjs +0 -49
- package/dist/es/framer-motion/dist/es/motion/index.mjs +0 -101
- package/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +0 -11
- package/dist/es/framer-motion/dist/es/motion/utils/is-motion-component.mjs +0 -12
- package/dist/es/framer-motion/dist/es/motion/utils/symbol.mjs +0 -3
- package/dist/es/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs +0 -17
- package/dist/es/framer-motion/dist/es/motion/utils/use-motion-ref.mjs +0 -38
- package/dist/es/framer-motion/dist/es/motion/utils/use-visual-element.mjs +0 -133
- package/dist/es/framer-motion/dist/es/motion/utils/use-visual-state.mjs +0 -79
- package/dist/es/framer-motion/dist/es/motion/utils/valid-prop.mjs +0 -57
- package/dist/es/framer-motion/dist/es/projection/animation/mix-values.mjs +0 -91
- package/dist/es/framer-motion/dist/es/projection/geometry/conversion.mjs +0 -33
- package/dist/es/framer-motion/dist/es/projection/geometry/copy.mjs +0 -31
- package/dist/es/framer-motion/dist/es/projection/geometry/delta-apply.mjs +0 -119
- package/dist/es/framer-motion/dist/es/projection/geometry/delta-calc.mjs +0 -52
- package/dist/es/framer-motion/dist/es/projection/geometry/delta-remove.mjs +0 -54
- package/dist/es/framer-motion/dist/es/projection/geometry/models.mjs +0 -17
- package/dist/es/framer-motion/dist/es/projection/geometry/utils.mjs +0 -31
- package/dist/es/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +0 -13
- package/dist/es/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +0 -27
- package/dist/es/framer-motion/dist/es/projection/node/create-projection-node.mjs +0 -1605
- package/dist/es/framer-motion/dist/es/projection/node/group.mjs +0 -24
- package/dist/es/framer-motion/dist/es/projection/node/state.mjs +0 -19
- package/dist/es/framer-motion/dist/es/projection/shared/stack.mjs +0 -112
- package/dist/es/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +0 -41
- package/dist/es/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +0 -35
- package/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs +0 -13
- package/dist/es/framer-motion/dist/es/projection/styles/transform.mjs +0 -49
- package/dist/es/framer-motion/dist/es/projection/use-instant-layout-transition.mjs +0 -14
- package/dist/es/framer-motion/dist/es/projection/use-reset-projection.mjs +0 -14
- package/dist/es/framer-motion/dist/es/projection/utils/each-axis.mjs +0 -5
- package/dist/es/framer-motion/dist/es/projection/utils/has-transform.mjs +0 -26
- package/dist/es/framer-motion/dist/es/projection/utils/measure.mjs +0 -17
- package/dist/es/framer-motion/dist/es/render/VisualElement.mjs +0 -478
- package/dist/es/framer-motion/dist/es/render/components/create-factory.mjs +0 -23
- package/dist/es/framer-motion/dist/es/render/components/create-proxy.mjs +0 -38
- package/dist/es/framer-motion/dist/es/render/components/m/create.mjs +0 -6
- package/dist/es/framer-motion/dist/es/render/components/m/elements.mjs +0 -227
- package/dist/es/framer-motion/dist/es/render/components/m/proxy.mjs +0 -6
- package/dist/es/framer-motion/dist/es/render/components/motion/create.mjs +0 -15
- package/dist/es/framer-motion/dist/es/render/components/motion/elements.mjs +0 -194
- package/dist/es/framer-motion/dist/es/render/components/motion/proxy.mjs +0 -6
- package/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +0 -43
- package/dist/es/framer-motion/dist/es/render/dom/create-visual-element.mjs +0 -14
- package/dist/es/framer-motion/dist/es/render/dom/features-animation.mjs +0 -14
- package/dist/es/framer-motion/dist/es/render/dom/features-max.mjs +0 -14
- package/dist/es/framer-motion/dist/es/render/dom/features-min.mjs +0 -12
- package/dist/es/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs +0 -17
- package/dist/es/framer-motion/dist/es/render/dom/scroll/attach-function.mjs +0 -23
- package/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs +0 -14
- package/dist/es/framer-motion/dist/es/render/dom/scroll/info.mjs +0 -56
- package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +0 -45
- package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +0 -60
- package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +0 -47
- package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +0 -35
- package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +0 -20
- package/dist/es/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +0 -48
- package/dist/es/framer-motion/dist/es/render/dom/scroll/track.mjs +0 -81
- package/dist/es/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs +0 -30
- package/dist/es/framer-motion/dist/es/render/dom/use-render.mjs +0 -33
- package/dist/es/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +0 -6
- package/dist/es/framer-motion/dist/es/render/dom/utils/filter-props.mjs +0 -59
- package/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs +0 -30
- package/dist/es/framer-motion/dist/es/render/dom/viewport/index.mjs +0 -43
- package/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +0 -44
- package/dist/es/framer-motion/dist/es/render/html/config-motion.mjs +0 -12
- package/dist/es/framer-motion/dist/es/render/html/use-props.mjs +0 -57
- package/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs +0 -65
- package/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs +0 -62
- package/dist/es/framer-motion/dist/es/render/html/utils/create-render-state.mjs +0 -8
- package/dist/es/framer-motion/dist/es/render/html/utils/render.mjs +0 -9
- package/dist/es/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +0 -19
- package/dist/es/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +0 -41
- package/dist/es/framer-motion/dist/es/render/store.mjs +0 -3
- package/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +0 -45
- package/dist/es/framer-motion/dist/es/render/svg/config-motion.mjs +0 -12
- package/dist/es/framer-motion/dist/es/render/svg/lowercase-elements.mjs +0 -33
- package/dist/es/framer-motion/dist/es/render/svg/use-props.mjs +0 -24
- package/dist/es/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +0 -57
- package/dist/es/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +0 -30
- package/dist/es/framer-motion/dist/es/render/svg/utils/create-render-state.mjs +0 -8
- package/dist/es/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +0 -3
- package/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs +0 -32
- package/dist/es/framer-motion/dist/es/render/svg/utils/render.mjs +0 -12
- package/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +0 -19
- package/dist/es/framer-motion/dist/es/render/utils/animation-state.mjs +0 -342
- package/dist/es/framer-motion/dist/es/render/utils/compare-by-depth.mjs +0 -3
- package/dist/es/framer-motion/dist/es/render/utils/flat-tree.mjs +0 -24
- package/dist/es/framer-motion/dist/es/render/utils/get-variant-context.mjs +0 -28
- package/dist/es/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +0 -13
- package/dist/es/framer-motion/dist/es/render/utils/is-variant-label.mjs +0 -8
- package/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs +0 -51
- package/dist/es/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +0 -8
- package/dist/es/framer-motion/dist/es/render/utils/resolve-variants.mjs +0 -36
- package/dist/es/framer-motion/dist/es/render/utils/setters.mjs +0 -31
- package/dist/es/framer-motion/dist/es/render/utils/variant-props.mjs +0 -12
- package/dist/es/framer-motion/dist/es/utils/delay.mjs +0 -24
- package/dist/es/framer-motion/dist/es/utils/distance.mjs +0 -9
- package/dist/es/framer-motion/dist/es/utils/get-context-window.mjs +0 -6
- package/dist/es/framer-motion/dist/es/utils/is-browser.mjs +0 -3
- package/dist/es/framer-motion/dist/es/utils/is-ref-object.mjs +0 -7
- package/dist/es/framer-motion/dist/es/utils/reduced-motion/index.mjs +0 -19
- package/dist/es/framer-motion/dist/es/utils/reduced-motion/state.mjs +0 -5
- package/dist/es/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs +0 -19
- package/dist/es/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs +0 -47
- package/dist/es/framer-motion/dist/es/utils/shallow-compare.mjs +0 -14
- package/dist/es/framer-motion/dist/es/utils/use-animation-frame.mjs +0 -21
- package/dist/es/framer-motion/dist/es/utils/use-constant.mjs +0 -18
- package/dist/es/framer-motion/dist/es/utils/use-cycle.mjs +0 -47
- package/dist/es/framer-motion/dist/es/utils/use-force-update.mjs +0 -19
- package/dist/es/framer-motion/dist/es/utils/use-in-view.mjs +0 -23
- package/dist/es/framer-motion/dist/es/utils/use-instant-transition.mjs +0 -41
- package/dist/es/framer-motion/dist/es/utils/use-is-mounted.mjs +0 -15
- package/dist/es/framer-motion/dist/es/utils/use-isomorphic-effect.mjs +0 -6
- package/dist/es/framer-motion/dist/es/utils/use-motion-value-event.mjs +0 -13
- package/dist/es/framer-motion/dist/es/utils/use-unmount-effect.mjs +0 -7
- package/dist/es/framer-motion/dist/es/value/scroll/use-element-scroll.mjs +0 -14
- package/dist/es/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs +0 -14
- package/dist/es/framer-motion/dist/es/value/use-combine-values.mjs +0 -37
- package/dist/es/framer-motion/dist/es/value/use-computed.mjs +0 -19
- package/dist/es/framer-motion/dist/es/value/use-inverted-scale.mjs +0 -52
- package/dist/es/framer-motion/dist/es/value/use-motion-template.mjs +0 -45
- package/dist/es/framer-motion/dist/es/value/use-motion-value.mjs +0 -38
- package/dist/es/framer-motion/dist/es/value/use-scroll.mjs +0 -39
- package/dist/es/framer-motion/dist/es/value/use-spring.mjs +0 -22
- package/dist/es/framer-motion/dist/es/value/use-time.mjs +0 -10
- package/dist/es/framer-motion/dist/es/value/use-transform.mjs +0 -29
- package/dist/es/framer-motion/dist/es/value/use-velocity.mjs +0 -35
- package/dist/es/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs +0 -21
- package/dist/es/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +0 -20
- package/dist/es/framer-motion/dist/es/value/use-will-change/index.mjs +0 -8
- package/dist/es/framer-motion/dist/es/value/use-will-change/is.mjs +0 -7
- package/dist/es/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +0 -12
- package/dist/es/motion/lib/debug.mjs +0 -1
- package/dist/es/motion/lib/index.mjs +0 -131
- package/dist/es/motion/lib/mini.mjs +0 -2
- package/dist/es/motion/lib/react-client.mjs +0 -3
- package/dist/es/motion/lib/react-m.mjs +0 -3
- package/dist/es/motion/lib/react-mini.mjs +0 -2
- package/dist/es/motion/lib/react.mjs +0 -204
- package/dist/es/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs +0 -175
- package/dist/es/motion-dom/dist/es/animation/GroupAnimation.mjs +0 -72
- package/dist/es/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs +0 -9
- package/dist/es/motion-dom/dist/es/animation/JSAnimation.mjs +0 -348
- package/dist/es/motion-dom/dist/es/animation/NativeAnimation.mjs +0 -158
- package/dist/es/motion-dom/dist/es/animation/NativeAnimationExtended.mjs +0 -65
- package/dist/es/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs +0 -14
- package/dist/es/motion-dom/dist/es/animation/drivers/frame.mjs +0 -17
- package/dist/es/motion-dom/dist/es/animation/generators/inertia.mjs +0 -87
- package/dist/es/motion-dom/dist/es/animation/generators/keyframes.mjs +0 -51
- package/dist/es/motion-dom/dist/es/animation/generators/spring/defaults.mjs +0 -27
- package/dist/es/motion-dom/dist/es/animation/generators/spring/find.mjs +0 -86
- package/dist/es/motion-dom/dist/es/animation/generators/spring/index.mjs +0 -176
- package/dist/es/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs +0 -17
- package/dist/es/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs +0 -19
- package/dist/es/motion-dom/dist/es/animation/generators/utils/is-generator.mjs +0 -5
- package/dist/es/motion-dom/dist/es/animation/generators/utils/velocity.mjs +0 -9
- package/dist/es/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs +0 -131
- package/dist/es/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs +0 -147
- package/dist/es/motion-dom/dist/es/animation/keyframes/get-final.mjs +0 -11
- package/dist/es/motion-dom/dist/es/animation/keyframes/offsets/default.mjs +0 -9
- package/dist/es/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs +0 -12
- package/dist/es/motion-dom/dist/es/animation/keyframes/offsets/time.mjs +0 -5
- package/dist/es/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs +0 -11
- package/dist/es/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs +0 -7
- package/dist/es/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs +0 -15
- package/dist/es/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs +0 -30
- package/dist/es/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs +0 -36
- package/dist/es/motion-dom/dist/es/animation/utils/WithPromise.mjs +0 -26
- package/dist/es/motion-dom/dist/es/animation/utils/active-animations.mjs +0 -9
- package/dist/es/motion-dom/dist/es/animation/utils/can-animate.mjs +0 -42
- package/dist/es/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs +0 -42
- package/dist/es/motion-dom/dist/es/animation/utils/get-value-transition.mjs +0 -7
- package/dist/es/motion-dom/dist/es/animation/utils/is-animatable.mjs +0 -30
- package/dist/es/motion-dom/dist/es/animation/utils/is-css-variable.mjs +0 -15
- package/dist/es/motion-dom/dist/es/animation/utils/replace-transition-type.mjs +0 -18
- package/dist/es/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs +0 -3
- package/dist/es/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs +0 -14
- package/dist/es/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs +0 -28
- package/dist/es/motion-dom/dist/es/animation/waapi/easing/supported.mjs +0 -15
- package/dist/es/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs +0 -39
- package/dist/es/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs +0 -13
- package/dist/es/motion-dom/dist/es/animation/waapi/supports/waapi.mjs +0 -37
- package/dist/es/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs +0 -14
- package/dist/es/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs +0 -15
- package/dist/es/motion-dom/dist/es/animation/waapi/utils/linear.mjs +0 -12
- package/dist/es/motion-dom/dist/es/animation/waapi/utils/px-values.mjs +0 -39
- package/dist/es/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs +0 -20
- package/dist/es/motion-dom/dist/es/effects/MotionValueState.mjs +0 -47
- package/dist/es/motion-dom/dist/es/effects/attr/index.mjs +0 -41
- package/dist/es/motion-dom/dist/es/effects/prop/index.mjs +0 -9
- package/dist/es/motion-dom/dist/es/effects/style/index.mjs +0 -52
- package/dist/es/motion-dom/dist/es/effects/style/transform.mjs +0 -38
- package/dist/es/motion-dom/dist/es/effects/svg/index.mjs +0 -41
- package/dist/es/motion-dom/dist/es/effects/utils/create-dom-effect.mjs +0 -18
- package/dist/es/motion-dom/dist/es/effects/utils/create-effect.mjs +0 -21
- package/dist/es/motion-dom/dist/es/frameloop/batcher.mjs +0 -71
- package/dist/es/motion-dom/dist/es/frameloop/frame.mjs +0 -6
- package/dist/es/motion-dom/dist/es/frameloop/index-legacy.mjs +0 -20
- package/dist/es/motion-dom/dist/es/frameloop/microtask.mjs +0 -6
- package/dist/es/motion-dom/dist/es/frameloop/order.mjs +0 -12
- package/dist/es/motion-dom/dist/es/frameloop/render-step.mjs +0 -92
- package/dist/es/motion-dom/dist/es/frameloop/sync-time.mjs +0 -31
- package/dist/es/motion-dom/dist/es/gestures/drag/state/is-active.mjs +0 -9
- package/dist/es/motion-dom/dist/es/gestures/drag/state/set-active.mjs +0 -28
- package/dist/es/motion-dom/dist/es/gestures/hover.mjs +0 -37
- package/dist/es/motion-dom/dist/es/gestures/press/index.mjs +0 -83
- package/dist/es/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs +0 -13
- package/dist/es/motion-dom/dist/es/gestures/press/utils/keyboard.mjs +0 -38
- package/dist/es/motion-dom/dist/es/gestures/press/utils/state.mjs +0 -3
- package/dist/es/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs +0 -20
- package/dist/es/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs +0 -18
- package/dist/es/motion-dom/dist/es/gestures/utils/setup.mjs +0 -15
- package/dist/es/motion-dom/dist/es/render/dom/is-css-var.mjs +0 -3
- package/dist/es/motion-dom/dist/es/render/dom/parse-transform.mjs +0 -83
- package/dist/es/motion-dom/dist/es/render/dom/style-computed.mjs +0 -10
- package/dist/es/motion-dom/dist/es/render/dom/style-set.mjs +0 -9
- package/dist/es/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs +0 -5
- package/dist/es/motion-dom/dist/es/render/utils/keys-position.mjs +0 -13
- package/dist/es/motion-dom/dist/es/render/utils/keys-transform.mjs +0 -28
- package/dist/es/motion-dom/dist/es/resize/handle-element.mjs +0 -63
- package/dist/es/motion-dom/dist/es/resize/handle-window.mjs +0 -31
- package/dist/es/motion-dom/dist/es/resize/index.mjs +0 -8
- package/dist/es/motion-dom/dist/es/scroll/observe.mjs +0 -18
- package/dist/es/motion-dom/dist/es/stats/animation-count.mjs +0 -7
- package/dist/es/motion-dom/dist/es/stats/buffer.mjs +0 -6
- package/dist/es/motion-dom/dist/es/stats/index.mjs +0 -117
- package/dist/es/motion-dom/dist/es/utils/interpolate.mjs +0 -79
- package/dist/es/motion-dom/dist/es/utils/is-html-element.mjs +0 -11
- package/dist/es/motion-dom/dist/es/utils/is-svg-element.mjs +0 -11
- package/dist/es/motion-dom/dist/es/utils/is-svg-svg-element.mjs +0 -11
- package/dist/es/motion-dom/dist/es/utils/mix/color.mjs +0 -47
- package/dist/es/motion-dom/dist/es/utils/mix/complex.mjs +0 -93
- package/dist/es/motion-dom/dist/es/utils/mix/immediate.mjs +0 -5
- package/dist/es/motion-dom/dist/es/utils/mix/index.mjs +0 -14
- package/dist/es/motion-dom/dist/es/utils/mix/number.mjs +0 -26
- package/dist/es/motion-dom/dist/es/utils/mix/visibility.mjs +0 -16
- package/dist/es/motion-dom/dist/es/utils/resolve-elements.mjs +0 -17
- package/dist/es/motion-dom/dist/es/utils/supports/flags.mjs +0 -7
- package/dist/es/motion-dom/dist/es/utils/supports/linear-easing.mjs +0 -15
- package/dist/es/motion-dom/dist/es/utils/supports/memo.mjs +0 -9
- package/dist/es/motion-dom/dist/es/utils/supports/scroll-timeline.mjs +0 -5
- package/dist/es/motion-dom/dist/es/utils/transform.mjs +0 -14
- package/dist/es/motion-dom/dist/es/value/index.mjs +0 -329
- package/dist/es/motion-dom/dist/es/value/map-value.mjs +0 -46
- package/dist/es/motion-dom/dist/es/value/spring-value.mjs +0 -72
- package/dist/es/motion-dom/dist/es/value/subscribe-value.mjs +0 -13
- package/dist/es/motion-dom/dist/es/value/transform-value.mjs +0 -35
- package/dist/es/motion-dom/dist/es/value/types/auto.mjs +0 -9
- package/dist/es/motion-dom/dist/es/value/types/color/hex.mjs +0 -40
- package/dist/es/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs +0 -42
- package/dist/es/motion-dom/dist/es/value/types/color/hsla.mjs +0 -22
- package/dist/es/motion-dom/dist/es/value/types/color/index.mjs +0 -32
- package/dist/es/motion-dom/dist/es/value/types/color/rgba.mjs +0 -25
- package/dist/es/motion-dom/dist/es/value/types/color/utils.mjs +0 -29
- package/dist/es/motion-dom/dist/es/value/types/complex/filter.mjs +0 -30
- package/dist/es/motion-dom/dist/es/value/types/complex/index.mjs +0 -91
- package/dist/es/motion-dom/dist/es/value/types/dimensions.mjs +0 -15
- package/dist/es/motion-dom/dist/es/value/types/int.mjs +0 -8
- package/dist/es/motion-dom/dist/es/value/types/maps/defaults.mjs +0 -30
- package/dist/es/motion-dom/dist/es/value/types/maps/number.mjs +0 -50
- package/dist/es/motion-dom/dist/es/value/types/maps/transform.mjs +0 -31
- package/dist/es/motion-dom/dist/es/value/types/numbers/index.mjs +0 -17
- package/dist/es/motion-dom/dist/es/value/types/numbers/units.mjs +0 -18
- package/dist/es/motion-dom/dist/es/value/types/test.mjs +0 -6
- package/dist/es/motion-dom/dist/es/value/types/utils/animatable-none.mjs +0 -15
- package/dist/es/motion-dom/dist/es/value/types/utils/color-regex.mjs +0 -3
- package/dist/es/motion-dom/dist/es/value/types/utils/find.mjs +0 -15
- package/dist/es/motion-dom/dist/es/value/types/utils/float-regex.mjs +0 -3
- package/dist/es/motion-dom/dist/es/value/types/utils/get-as-type.mjs +0 -10
- package/dist/es/motion-dom/dist/es/value/types/utils/is-nullish.mjs +0 -5
- package/dist/es/motion-dom/dist/es/value/types/utils/sanitize.mjs +0 -5
- package/dist/es/motion-dom/dist/es/value/types/utils/single-color-regex.mjs +0 -3
- package/dist/es/motion-dom/dist/es/value/utils/is-motion-value.mjs +0 -3
- package/dist/es/motion-dom/dist/es/view/index.mjs +0 -64
- package/dist/es/motion-dom/dist/es/view/queue.mjs +0 -52
- package/dist/es/motion-dom/dist/es/view/start.mjs +0 -155
- package/dist/es/motion-dom/dist/es/view/utils/choose-layer-type.mjs +0 -11
- package/dist/es/motion-dom/dist/es/view/utils/css.mjs +0 -32
- package/dist/es/motion-dom/dist/es/view/utils/get-layer-name.mjs +0 -8
- package/dist/es/motion-dom/dist/es/view/utils/get-view-animations.mjs +0 -12
- package/dist/es/motion-dom/dist/es/view/utils/has-target.mjs +0 -5
- package/dist/es/motion-utils/dist/es/array.mjs +0 -21
- package/dist/es/motion-utils/dist/es/clamp.mjs +0 -9
- package/dist/es/motion-utils/dist/es/easing/anticipate.mjs +0 -5
- package/dist/es/motion-utils/dist/es/easing/back.mjs +0 -9
- package/dist/es/motion-utils/dist/es/easing/circ.mjs +0 -8
- package/dist/es/motion-utils/dist/es/easing/cubic-bezier.mjs +0 -51
- package/dist/es/motion-utils/dist/es/easing/ease.mjs +0 -7
- package/dist/es/motion-utils/dist/es/easing/modifiers/mirror.mjs +0 -5
- package/dist/es/motion-utils/dist/es/easing/modifiers/reverse.mjs +0 -5
- package/dist/es/motion-utils/dist/es/easing/steps.mjs +0 -15
- package/dist/es/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs +0 -8
- package/dist/es/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs +0 -3
- package/dist/es/motion-utils/dist/es/easing/utils/is-easing-array.mjs +0 -5
- package/dist/es/motion-utils/dist/es/easing/utils/map.mjs +0 -41
- package/dist/es/motion-utils/dist/es/errors.mjs +0 -16
- package/dist/es/motion-utils/dist/es/global-config.mjs +0 -3
- package/dist/es/motion-utils/dist/es/is-numerical-string.mjs +0 -6
- package/dist/es/motion-utils/dist/es/is-object.mjs +0 -5
- package/dist/es/motion-utils/dist/es/is-zero-value-string.mjs +0 -6
- package/dist/es/motion-utils/dist/es/memo.mjs +0 -11
- package/dist/es/motion-utils/dist/es/noop.mjs +0 -4
- package/dist/es/motion-utils/dist/es/pipe.mjs +0 -11
- package/dist/es/motion-utils/dist/es/progress.mjs +0 -19
- package/dist/es/motion-utils/dist/es/subscription-manager.mjs +0 -40
- package/dist/es/motion-utils/dist/es/time-conversion.mjs +0 -12
- package/dist/es/motion-utils/dist/es/velocity-per-second.mjs +0 -11
- package/dist/es/motion-utils/dist/es/warn-once.mjs +0 -14
- package/dist/es/motion-utils/dist/es/wrap.mjs +0 -6
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Implement a practical max duration for keyframe generation
|
|
3
|
-
* to prevent infinite loops
|
|
4
|
-
*/
|
|
5
|
-
const maxGeneratorDuration = 20000;
|
|
6
|
-
function calcGeneratorDuration(generator) {
|
|
7
|
-
let duration = 0;
|
|
8
|
-
const timeStep = 50;
|
|
9
|
-
let state = generator.next(duration);
|
|
10
|
-
while (!state.done && duration < maxGeneratorDuration) {
|
|
11
|
-
duration += timeStep;
|
|
12
|
-
state = generator.next(duration);
|
|
13
|
-
}
|
|
14
|
-
return duration >= maxGeneratorDuration ? Infinity : duration;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export { calcGeneratorDuration, maxGeneratorDuration };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { calcGeneratorDuration, maxGeneratorDuration } from './calc-duration.mjs';
|
|
2
|
-
import { millisecondsToSeconds } from '../../../../../../motion-utils/dist/es/time-conversion.mjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Create a progress => progress easing function from a generator.
|
|
6
|
-
*/
|
|
7
|
-
function createGeneratorEasing(options, scale = 100, createGenerator) {
|
|
8
|
-
const generator = createGenerator({ ...options, keyframes: [0, scale] });
|
|
9
|
-
const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
|
|
10
|
-
return {
|
|
11
|
-
type: "keyframes",
|
|
12
|
-
ease: (progress) => {
|
|
13
|
-
return generator.next(duration * progress).value / scale;
|
|
14
|
-
},
|
|
15
|
-
duration: millisecondsToSeconds(duration),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { createGeneratorEasing };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { velocityPerSecond } from '../../../../../../motion-utils/dist/es/velocity-per-second.mjs';
|
|
2
|
-
|
|
3
|
-
const velocitySampleDuration = 5; // ms
|
|
4
|
-
function calcGeneratorVelocity(resolveValue, t, current) {
|
|
5
|
-
const prevT = Math.max(t - velocitySampleDuration, 0);
|
|
6
|
-
return velocityPerSecond(current - resolveValue(prevT), t - prevT);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { calcGeneratorVelocity };
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { positionalKeys } from '../../render/utils/keys-position.mjs';
|
|
2
|
-
import { findDimensionValueType } from '../../value/types/dimensions.mjs';
|
|
3
|
-
import { getVariableValue } from '../utils/css-variables-conversion.mjs';
|
|
4
|
-
import { isCSSVariableToken } from '../utils/is-css-variable.mjs';
|
|
5
|
-
import { KeyframeResolver } from './KeyframesResolver.mjs';
|
|
6
|
-
import { isNone } from './utils/is-none.mjs';
|
|
7
|
-
import { makeNoneKeyframesAnimatable } from './utils/make-none-animatable.mjs';
|
|
8
|
-
import { isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';
|
|
9
|
-
|
|
10
|
-
class DOMKeyframesResolver extends KeyframeResolver {
|
|
11
|
-
constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {
|
|
12
|
-
super(unresolvedKeyframes, onComplete, name, motionValue, element, true);
|
|
13
|
-
}
|
|
14
|
-
readKeyframes() {
|
|
15
|
-
const { unresolvedKeyframes, element, name } = this;
|
|
16
|
-
if (!element || !element.current)
|
|
17
|
-
return;
|
|
18
|
-
super.readKeyframes();
|
|
19
|
-
/**
|
|
20
|
-
* If any keyframe is a CSS variable, we need to find its value by sampling the element
|
|
21
|
-
*/
|
|
22
|
-
for (let i = 0; i < unresolvedKeyframes.length; i++) {
|
|
23
|
-
let keyframe = unresolvedKeyframes[i];
|
|
24
|
-
if (typeof keyframe === "string") {
|
|
25
|
-
keyframe = keyframe.trim();
|
|
26
|
-
if (isCSSVariableToken(keyframe)) {
|
|
27
|
-
const resolved = getVariableValue(keyframe, element.current);
|
|
28
|
-
if (resolved !== undefined) {
|
|
29
|
-
unresolvedKeyframes[i] = resolved;
|
|
30
|
-
}
|
|
31
|
-
if (i === unresolvedKeyframes.length - 1) {
|
|
32
|
-
this.finalKeyframe = keyframe;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Resolve "none" values. We do this potentially twice - once before and once after measuring keyframes.
|
|
39
|
-
* This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which
|
|
40
|
-
* have a far bigger performance impact.
|
|
41
|
-
*/
|
|
42
|
-
this.resolveNoneKeyframes();
|
|
43
|
-
/**
|
|
44
|
-
* Check to see if unit type has changed. If so schedule jobs that will
|
|
45
|
-
* temporarily set styles to the destination keyframes.
|
|
46
|
-
* Skip if we have more than two keyframes or this isn't a positional value.
|
|
47
|
-
* TODO: We can throw if there are multiple keyframes and the value type changes.
|
|
48
|
-
*/
|
|
49
|
-
if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const [origin, target] = unresolvedKeyframes;
|
|
53
|
-
const originType = findDimensionValueType(origin);
|
|
54
|
-
const targetType = findDimensionValueType(target);
|
|
55
|
-
/**
|
|
56
|
-
* Either we don't recognise these value types or we can animate between them.
|
|
57
|
-
*/
|
|
58
|
-
if (originType === targetType)
|
|
59
|
-
return;
|
|
60
|
-
/**
|
|
61
|
-
* If both values are numbers or pixels, we can animate between them by
|
|
62
|
-
* converting them to numbers.
|
|
63
|
-
*/
|
|
64
|
-
if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {
|
|
65
|
-
for (let i = 0; i < unresolvedKeyframes.length; i++) {
|
|
66
|
-
const value = unresolvedKeyframes[i];
|
|
67
|
-
if (typeof value === "string") {
|
|
68
|
-
unresolvedKeyframes[i] = parseFloat(value);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (positionalValues[name]) {
|
|
73
|
-
/**
|
|
74
|
-
* Else, the only way to resolve this is by measuring the element.
|
|
75
|
-
*/
|
|
76
|
-
this.needsMeasurement = true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
resolveNoneKeyframes() {
|
|
80
|
-
const { unresolvedKeyframes, name } = this;
|
|
81
|
-
const noneKeyframeIndexes = [];
|
|
82
|
-
for (let i = 0; i < unresolvedKeyframes.length; i++) {
|
|
83
|
-
if (unresolvedKeyframes[i] === null ||
|
|
84
|
-
isNone(unresolvedKeyframes[i])) {
|
|
85
|
-
noneKeyframeIndexes.push(i);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (noneKeyframeIndexes.length) {
|
|
89
|
-
makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
measureInitialState() {
|
|
93
|
-
const { element, unresolvedKeyframes, name } = this;
|
|
94
|
-
if (!element || !element.current)
|
|
95
|
-
return;
|
|
96
|
-
if (name === "height") {
|
|
97
|
-
this.suspendedScrollY = window.pageYOffset;
|
|
98
|
-
}
|
|
99
|
-
this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
|
|
100
|
-
unresolvedKeyframes[0] = this.measuredOrigin;
|
|
101
|
-
// Set final key frame to measure after next render
|
|
102
|
-
const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
103
|
-
if (measureKeyframe !== undefined) {
|
|
104
|
-
element.getValue(name, measureKeyframe).jump(measureKeyframe, false);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
measureEndState() {
|
|
108
|
-
const { element, name, unresolvedKeyframes } = this;
|
|
109
|
-
if (!element || !element.current)
|
|
110
|
-
return;
|
|
111
|
-
const value = element.getValue(name);
|
|
112
|
-
value && value.jump(this.measuredOrigin, false);
|
|
113
|
-
const finalKeyframeIndex = unresolvedKeyframes.length - 1;
|
|
114
|
-
const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
|
|
115
|
-
unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
|
|
116
|
-
if (finalKeyframe !== null && this.finalKeyframe === undefined) {
|
|
117
|
-
this.finalKeyframe = finalKeyframe;
|
|
118
|
-
}
|
|
119
|
-
// If we removed transform values, reapply them before the next render
|
|
120
|
-
if (this.removedTransforms?.length) {
|
|
121
|
-
this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
|
|
122
|
-
element
|
|
123
|
-
.getValue(unsetTransformName)
|
|
124
|
-
.set(unsetTransformValue);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
this.resolveNoneKeyframes();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export { DOMKeyframesResolver };
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { fillWildcards } from './utils/fill-wildcards.mjs';
|
|
2
|
-
import { removeNonTranslationalTransform } from './utils/unit-conversion.mjs';
|
|
3
|
-
import { frame } from '../../frameloop/frame.mjs';
|
|
4
|
-
|
|
5
|
-
const toResolve = new Set();
|
|
6
|
-
let isScheduled = false;
|
|
7
|
-
let anyNeedsMeasurement = false;
|
|
8
|
-
let isForced = false;
|
|
9
|
-
function measureAllKeyframes() {
|
|
10
|
-
if (anyNeedsMeasurement) {
|
|
11
|
-
const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);
|
|
12
|
-
const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));
|
|
13
|
-
const transformsToRestore = new Map();
|
|
14
|
-
/**
|
|
15
|
-
* Write pass
|
|
16
|
-
* If we're measuring elements we want to remove bounding box-changing transforms.
|
|
17
|
-
*/
|
|
18
|
-
elementsToMeasure.forEach((element) => {
|
|
19
|
-
const removedTransforms = removeNonTranslationalTransform(element);
|
|
20
|
-
if (!removedTransforms.length)
|
|
21
|
-
return;
|
|
22
|
-
transformsToRestore.set(element, removedTransforms);
|
|
23
|
-
element.render();
|
|
24
|
-
});
|
|
25
|
-
// Read
|
|
26
|
-
resolversToMeasure.forEach((resolver) => resolver.measureInitialState());
|
|
27
|
-
// Write
|
|
28
|
-
elementsToMeasure.forEach((element) => {
|
|
29
|
-
element.render();
|
|
30
|
-
const restore = transformsToRestore.get(element);
|
|
31
|
-
if (restore) {
|
|
32
|
-
restore.forEach(([key, value]) => {
|
|
33
|
-
element.getValue(key)?.set(value);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
// Read
|
|
38
|
-
resolversToMeasure.forEach((resolver) => resolver.measureEndState());
|
|
39
|
-
// Write
|
|
40
|
-
resolversToMeasure.forEach((resolver) => {
|
|
41
|
-
if (resolver.suspendedScrollY !== undefined) {
|
|
42
|
-
window.scrollTo(0, resolver.suspendedScrollY);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
anyNeedsMeasurement = false;
|
|
47
|
-
isScheduled = false;
|
|
48
|
-
toResolve.forEach((resolver) => resolver.complete(isForced));
|
|
49
|
-
toResolve.clear();
|
|
50
|
-
}
|
|
51
|
-
function readAllKeyframes() {
|
|
52
|
-
toResolve.forEach((resolver) => {
|
|
53
|
-
resolver.readKeyframes();
|
|
54
|
-
if (resolver.needsMeasurement) {
|
|
55
|
-
anyNeedsMeasurement = true;
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
function flushKeyframeResolvers() {
|
|
60
|
-
isForced = true;
|
|
61
|
-
readAllKeyframes();
|
|
62
|
-
measureAllKeyframes();
|
|
63
|
-
isForced = false;
|
|
64
|
-
}
|
|
65
|
-
class KeyframeResolver {
|
|
66
|
-
constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {
|
|
67
|
-
this.state = "pending";
|
|
68
|
-
/**
|
|
69
|
-
* Track whether this resolver is async. If it is, it'll be added to the
|
|
70
|
-
* resolver queue and flushed in the next frame. Resolvers that aren't going
|
|
71
|
-
* to trigger read/write thrashing don't need to be async.
|
|
72
|
-
*/
|
|
73
|
-
this.isAsync = false;
|
|
74
|
-
/**
|
|
75
|
-
* Track whether this resolver needs to perform a measurement
|
|
76
|
-
* to resolve its keyframes.
|
|
77
|
-
*/
|
|
78
|
-
this.needsMeasurement = false;
|
|
79
|
-
this.unresolvedKeyframes = [...unresolvedKeyframes];
|
|
80
|
-
this.onComplete = onComplete;
|
|
81
|
-
this.name = name;
|
|
82
|
-
this.motionValue = motionValue;
|
|
83
|
-
this.element = element;
|
|
84
|
-
this.isAsync = isAsync;
|
|
85
|
-
}
|
|
86
|
-
scheduleResolve() {
|
|
87
|
-
this.state = "scheduled";
|
|
88
|
-
if (this.isAsync) {
|
|
89
|
-
toResolve.add(this);
|
|
90
|
-
if (!isScheduled) {
|
|
91
|
-
isScheduled = true;
|
|
92
|
-
frame.read(readAllKeyframes);
|
|
93
|
-
frame.resolveKeyframes(measureAllKeyframes);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.readKeyframes();
|
|
98
|
-
this.complete();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
readKeyframes() {
|
|
102
|
-
const { unresolvedKeyframes, name, element, motionValue } = this;
|
|
103
|
-
// If initial keyframe is null we need to read it from the DOM
|
|
104
|
-
if (unresolvedKeyframes[0] === null) {
|
|
105
|
-
const currentValue = motionValue?.get();
|
|
106
|
-
// TODO: This doesn't work if the final keyframe is a wildcard
|
|
107
|
-
const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
108
|
-
if (currentValue !== undefined) {
|
|
109
|
-
unresolvedKeyframes[0] = currentValue;
|
|
110
|
-
}
|
|
111
|
-
else if (element && name) {
|
|
112
|
-
const valueAsRead = element.readValue(name, finalKeyframe);
|
|
113
|
-
if (valueAsRead !== undefined && valueAsRead !== null) {
|
|
114
|
-
unresolvedKeyframes[0] = valueAsRead;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (unresolvedKeyframes[0] === undefined) {
|
|
118
|
-
unresolvedKeyframes[0] = finalKeyframe;
|
|
119
|
-
}
|
|
120
|
-
if (motionValue && currentValue === undefined) {
|
|
121
|
-
motionValue.set(unresolvedKeyframes[0]);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
fillWildcards(unresolvedKeyframes);
|
|
125
|
-
}
|
|
126
|
-
setFinalKeyframe() { }
|
|
127
|
-
measureInitialState() { }
|
|
128
|
-
renderEndStyles() { }
|
|
129
|
-
measureEndState() { }
|
|
130
|
-
complete(isForcedComplete = false) {
|
|
131
|
-
this.state = "complete";
|
|
132
|
-
this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);
|
|
133
|
-
toResolve.delete(this);
|
|
134
|
-
}
|
|
135
|
-
cancel() {
|
|
136
|
-
if (this.state === "scheduled") {
|
|
137
|
-
toResolve.delete(this);
|
|
138
|
-
this.state = "pending";
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
resume() {
|
|
142
|
-
if (this.state === "pending")
|
|
143
|
-
this.scheduleResolve();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export { KeyframeResolver, flushKeyframeResolvers };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
const isNotNull = (value) => value !== null;
|
|
2
|
-
function getFinalKeyframe(keyframes, { repeat, repeatType = "loop" }, finalKeyframe, speed = 1) {
|
|
3
|
-
const resolvedKeyframes = keyframes.filter(isNotNull);
|
|
4
|
-
const useFirstKeyframe = speed < 0 || (repeat && repeatType !== "loop" && repeat % 2 === 1);
|
|
5
|
-
const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1;
|
|
6
|
-
return !index || finalKeyframe === undefined
|
|
7
|
-
? resolvedKeyframes[index]
|
|
8
|
-
: finalKeyframe;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { getFinalKeyframe };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { mixNumber } from '../../../utils/mix/number.mjs';
|
|
2
|
-
import { progress } from '../../../../../../motion-utils/dist/es/progress.mjs';
|
|
3
|
-
|
|
4
|
-
function fillOffset(offset, remaining) {
|
|
5
|
-
const min = offset[offset.length - 1];
|
|
6
|
-
for (let i = 1; i <= remaining; i++) {
|
|
7
|
-
const offsetProgress = progress(0, remaining, i);
|
|
8
|
-
offset.push(mixNumber(min, 1, offsetProgress));
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export { fillOffset };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { pxValues } from '../../waapi/utils/px-values.mjs';
|
|
2
|
-
|
|
3
|
-
function applyPxDefaults(keyframes, name) {
|
|
4
|
-
for (let i = 0; i < keyframes.length; i++) {
|
|
5
|
-
if (typeof keyframes[i] === "number" && pxValues.has(name)) {
|
|
6
|
-
keyframes[i] = keyframes[i] + "px";
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { applyPxDefaults };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { isZeroValueString } from '../../../../../../motion-utils/dist/es/is-zero-value-string.mjs';
|
|
2
|
-
|
|
3
|
-
function isNone(value) {
|
|
4
|
-
if (typeof value === "number") {
|
|
5
|
-
return value === 0;
|
|
6
|
-
}
|
|
7
|
-
else if (value !== null) {
|
|
8
|
-
return value === "none" || value === "0" || isZeroValueString(value);
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { isNone };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { analyseComplexValue } from '../../../value/types/complex/index.mjs';
|
|
2
|
-
import { getAnimatableNone } from '../../../value/types/utils/animatable-none.mjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* If we encounter keyframes like "none" or "0" and we also have keyframes like
|
|
6
|
-
* "#fff" or "200px 200px" we want to find a keyframe to serve as a template for
|
|
7
|
-
* the "none" keyframes. In this case "#fff" or "200px 200px" - then these get turned into
|
|
8
|
-
* zero equivalents, i.e. "#fff0" or "0px 0px".
|
|
9
|
-
*/
|
|
10
|
-
const invalidTemplates = new Set(["auto", "none", "0"]);
|
|
11
|
-
function makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {
|
|
12
|
-
let i = 0;
|
|
13
|
-
let animatableTemplate = undefined;
|
|
14
|
-
while (i < unresolvedKeyframes.length && !animatableTemplate) {
|
|
15
|
-
const keyframe = unresolvedKeyframes[i];
|
|
16
|
-
if (typeof keyframe === "string" &&
|
|
17
|
-
!invalidTemplates.has(keyframe) &&
|
|
18
|
-
analyseComplexValue(keyframe).values.length) {
|
|
19
|
-
animatableTemplate = unresolvedKeyframes[i];
|
|
20
|
-
}
|
|
21
|
-
i++;
|
|
22
|
-
}
|
|
23
|
-
if (animatableTemplate && name) {
|
|
24
|
-
for (const noneIndex of noneKeyframeIndexes) {
|
|
25
|
-
unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export { makeNoneKeyframesAnimatable };
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { parseValueFromTransform } from '../../../render/dom/parse-transform.mjs';
|
|
2
|
-
import { transformPropOrder } from '../../../render/utils/keys-transform.mjs';
|
|
3
|
-
import { number } from '../../../value/types/numbers/index.mjs';
|
|
4
|
-
import { px } from '../../../value/types/numbers/units.mjs';
|
|
5
|
-
|
|
6
|
-
const isNumOrPxType = (v) => v === number || v === px;
|
|
7
|
-
const transformKeys = new Set(["x", "y", "z"]);
|
|
8
|
-
const nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
|
|
9
|
-
function removeNonTranslationalTransform(visualElement) {
|
|
10
|
-
const removedTransforms = [];
|
|
11
|
-
nonTranslationalTransformKeys.forEach((key) => {
|
|
12
|
-
const value = visualElement.getValue(key);
|
|
13
|
-
if (value !== undefined) {
|
|
14
|
-
removedTransforms.push([key, value.get()]);
|
|
15
|
-
value.set(key.startsWith("scale") ? 1 : 0);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
return removedTransforms;
|
|
19
|
-
}
|
|
20
|
-
const positionalValues = {
|
|
21
|
-
// Dimensions
|
|
22
|
-
width: ({ x }, { paddingLeft = "0", paddingRight = "0" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),
|
|
23
|
-
height: ({ y }, { paddingTop = "0", paddingBottom = "0" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),
|
|
24
|
-
top: (_bbox, { top }) => parseFloat(top),
|
|
25
|
-
left: (_bbox, { left }) => parseFloat(left),
|
|
26
|
-
bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
|
|
27
|
-
right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
|
|
28
|
-
// Transform
|
|
29
|
-
x: (_bbox, { transform }) => parseValueFromTransform(transform, "x"),
|
|
30
|
-
y: (_bbox, { transform }) => parseValueFromTransform(transform, "y"),
|
|
31
|
-
};
|
|
32
|
-
// Alias translate longform names
|
|
33
|
-
positionalValues.translateX = positionalValues.x;
|
|
34
|
-
positionalValues.translateY = positionalValues.y;
|
|
35
|
-
|
|
36
|
-
export { isNumOrPxType, positionalValues, removeNonTranslationalTransform };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
class WithPromise {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.updateFinished();
|
|
4
|
-
}
|
|
5
|
-
get finished() {
|
|
6
|
-
return this._finished;
|
|
7
|
-
}
|
|
8
|
-
updateFinished() {
|
|
9
|
-
this._finished = new Promise((resolve) => {
|
|
10
|
-
this.resolve = resolve;
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
notifyFinished() {
|
|
14
|
-
this.resolve();
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Allows the animation to be awaited.
|
|
18
|
-
*
|
|
19
|
-
* @deprecated Use `finished` instead.
|
|
20
|
-
*/
|
|
21
|
-
then(onResolve, onReject) {
|
|
22
|
-
return this.finished.then(onResolve, onReject);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { WithPromise };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const animationMaps = new WeakMap();
|
|
2
|
-
const animationMapKey = (name, pseudoElement = "") => `${name}:${pseudoElement}`;
|
|
3
|
-
function getAnimationMap(element) {
|
|
4
|
-
const map = animationMaps.get(element) || new Map();
|
|
5
|
-
animationMaps.set(element, map);
|
|
6
|
-
return map;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { animationMapKey, getAnimationMap };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { isGenerator } from '../generators/utils/is-generator.mjs';
|
|
2
|
-
import { isAnimatable } from './is-animatable.mjs';
|
|
3
|
-
import { warning } from '../../../../../motion-utils/dist/es/errors.mjs';
|
|
4
|
-
|
|
5
|
-
function hasKeyframesChanged(keyframes) {
|
|
6
|
-
const current = keyframes[0];
|
|
7
|
-
if (keyframes.length === 1)
|
|
8
|
-
return true;
|
|
9
|
-
for (let i = 0; i < keyframes.length; i++) {
|
|
10
|
-
if (keyframes[i] !== current)
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
function canAnimate(keyframes, name, type, velocity) {
|
|
15
|
-
/**
|
|
16
|
-
* Check if we're able to animate between the start and end keyframes,
|
|
17
|
-
* and throw a warning if we're attempting to animate between one that's
|
|
18
|
-
* animatable and another that isn't.
|
|
19
|
-
*/
|
|
20
|
-
const originKeyframe = keyframes[0];
|
|
21
|
-
if (originKeyframe === null)
|
|
22
|
-
return false;
|
|
23
|
-
/**
|
|
24
|
-
* These aren't traditionally animatable but we do support them.
|
|
25
|
-
* In future we could look into making this more generic or replacing
|
|
26
|
-
* this function with mix() === mixImmediate
|
|
27
|
-
*/
|
|
28
|
-
if (name === "display" || name === "visibility")
|
|
29
|
-
return true;
|
|
30
|
-
const targetKeyframe = keyframes[keyframes.length - 1];
|
|
31
|
-
const isOriginAnimatable = isAnimatable(originKeyframe, name);
|
|
32
|
-
const isTargetAnimatable = isAnimatable(targetKeyframe, name);
|
|
33
|
-
warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from "${originKeyframe}" to "${targetKeyframe}". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \`style\` property.`);
|
|
34
|
-
// Always skip if any of these are true
|
|
35
|
-
if (!isOriginAnimatable || !isTargetAnimatable) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
return (hasKeyframesChanged(keyframes) ||
|
|
39
|
-
((type === "spring" || isGenerator(type)) && velocity));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export { canAnimate };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { isCSSVariableToken } from './is-css-variable.mjs';
|
|
2
|
-
import { invariant } from '../../../../../motion-utils/dist/es/errors.mjs';
|
|
3
|
-
import { isNumericalString } from '../../../../../motion-utils/dist/es/is-numerical-string.mjs';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Parse Framer's special CSS variable format into a CSS token and a fallback.
|
|
7
|
-
*
|
|
8
|
-
* ```
|
|
9
|
-
* `var(--foo, #fff)` => [`--foo`, '#fff']
|
|
10
|
-
* ```
|
|
11
|
-
*
|
|
12
|
-
* @param current
|
|
13
|
-
*/
|
|
14
|
-
const splitCSSVariableRegex =
|
|
15
|
-
// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words
|
|
16
|
-
/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;
|
|
17
|
-
function parseCSSVariable(current) {
|
|
18
|
-
const match = splitCSSVariableRegex.exec(current);
|
|
19
|
-
if (!match)
|
|
20
|
-
return [,];
|
|
21
|
-
const [, token1, token2, fallback] = match;
|
|
22
|
-
return [`--${token1 ?? token2}`, fallback];
|
|
23
|
-
}
|
|
24
|
-
const maxDepth = 4;
|
|
25
|
-
function getVariableValue(current, element, depth = 1) {
|
|
26
|
-
invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property "${current}". This may indicate a circular fallback dependency.`);
|
|
27
|
-
const [token, fallback] = parseCSSVariable(current);
|
|
28
|
-
// No CSS variable detected
|
|
29
|
-
if (!token)
|
|
30
|
-
return;
|
|
31
|
-
// Attempt to read this CSS variable off the element
|
|
32
|
-
const resolved = window.getComputedStyle(element).getPropertyValue(token);
|
|
33
|
-
if (resolved) {
|
|
34
|
-
const trimmed = resolved.trim();
|
|
35
|
-
return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;
|
|
36
|
-
}
|
|
37
|
-
return isCSSVariableToken(fallback)
|
|
38
|
-
? getVariableValue(fallback, element, depth + 1)
|
|
39
|
-
: fallback;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export { getVariableValue, parseCSSVariable };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { complex } from '../../value/types/complex/index.mjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Check if a value is animatable. Examples:
|
|
5
|
-
*
|
|
6
|
-
* ✅: 100, "100px", "#fff"
|
|
7
|
-
* ❌: "block", "url(2.jpg)"
|
|
8
|
-
* @param value
|
|
9
|
-
*
|
|
10
|
-
* @internal
|
|
11
|
-
*/
|
|
12
|
-
const isAnimatable = (value, name) => {
|
|
13
|
-
// If the list of keys tat might be non-animatable grows, replace with Set
|
|
14
|
-
if (name === "zIndex")
|
|
15
|
-
return false;
|
|
16
|
-
// If it's a number or a keyframes array, we can animate it. We might at some point
|
|
17
|
-
// need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,
|
|
18
|
-
// but for now lets leave it like this for performance reasons
|
|
19
|
-
if (typeof value === "number" || Array.isArray(value))
|
|
20
|
-
return true;
|
|
21
|
-
if (typeof value === "string" && // It's animatable if we have a string
|
|
22
|
-
(complex.test(value) || value === "0") && // And it contains numbers and/or colors
|
|
23
|
-
!value.startsWith("url(") // Unless it starts with "url("
|
|
24
|
-
) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
return false;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export { isAnimatable };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
|
|
2
|
-
const isCSSVariableName =
|
|
3
|
-
/*@__PURE__*/ checkStringStartsWith("--");
|
|
4
|
-
const startsAsVariableToken =
|
|
5
|
-
/*@__PURE__*/ checkStringStartsWith("var(--");
|
|
6
|
-
const isCSSVariableToken = (value) => {
|
|
7
|
-
const startsWithToken = startsAsVariableToken(value);
|
|
8
|
-
if (!startsWithToken)
|
|
9
|
-
return false;
|
|
10
|
-
// Ensure any comments are stripped from the value as this can harm performance of the regex.
|
|
11
|
-
return singleCssVariableRegex.test(value.split("/*")[0].trim());
|
|
12
|
-
};
|
|
13
|
-
const singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
|
|
14
|
-
|
|
15
|
-
export { isCSSVariableName, isCSSVariableToken };
|