import { PresEffect, PresMovement } from './PresEnums'; // the type of slide effect timing (spring-driven) export enum SpringType { DEFAULT = 'default', GENTLE = 'gentle', BOUNCY = 'bouncy', CUSTOM = 'custom', QUICK = 'quick', } // settings that control slide effect spring settings export interface SpringSettings { type: SpringType; stiffness: number; damping: number; mass: number; } export const easeItems = [ { text: 'Ease', val: 'ease', }, { text: 'Ease In', val: 'ease-in', }, { text: 'Ease Out', val: 'ease-out', }, { text: 'Ease In Out', val: 'ease-in-out', }, { text: 'Linear', val: 'linear', }, { text: 'Custom', val: 'custom', }, ]; export const movementItems = [ { text: 'None', val: PresMovement.None }, { text: 'Center', val: PresMovement.Center }, { text: 'Zoom', val: PresMovement.Zoom }, { text: 'Pan', val: PresMovement.Pan }, { text: 'Jump', val: PresMovement.Jump }, ]; export const effectItems = Object.values(PresEffect) .filter(v => isNaN(Number(v))) .map(effect => ({ text: effect, val: effect, })); export const effectTimings = [ { text: 'Default', val: SpringType.DEFAULT }, { text: 'Gentle', val: SpringType.GENTLE, }, { text: 'Quick', val: SpringType.QUICK, }, { text: 'Bouncy', val: SpringType.BOUNCY, }, { text: 'Custom', val: SpringType.CUSTOM, }, ]; // Maps spring names to spring parameters export const springMappings: { [key: string]: { stiffness: number; damping: number; mass: number }; } = { default: { stiffness: 600, damping: 15, mass: 1, }, gentle: { stiffness: 100, damping: 15, mass: 1, }, quick: { stiffness: 300, damping: 20, mass: 1, }, bouncy: { stiffness: 600, damping: 15, mass: 1, }, custom: { stiffness: 100, damping: 10, mass: 1, }, };