{"version":3,"file":"index.cjs","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Flap.tsx","../src/ticker.ts","../src/components/FlapDigit.tsx","../src/components/FlapBoard.tsx","../src/components/FlapStack.tsx","../src/presets.ts","../src/SplitFlap.tsx","../src/LongFlap.tsx"],"sourcesContent":["function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","import React, { forwardRef } from 'react'\nimport { FlapProps } from '../types'\n\nconst Flap = forwardRef<HTMLDivElement, FlapProps>(({ bottom, animated, final, phase = 0, idle, children }, ref) => {\n  const classes = [\n    'split-flap-part',\n    bottom ? 'bottom' : 'top',\n    animated ? 'animated' : '',\n    final ? 'final' : '',\n    idle ? 'idle' : '',\n    animated && final ? `phase-${phase === 0 ? 'a' : 'b'}` : '',\n  ]\n    .filter(Boolean)\n    .join(' ')\n\n  return (\n    <div ref={ref} className={classes}>\n      <span className=\"split-flap-char\">{children}</span>\n    </div>\n  )\n})\n\nFlap.displayName = 'Flap'\n\nexport default Flap\n","import { unstable_batchedUpdates } from 'react-dom'\n\ninterface Subscriber {\n  callback: () => void\n  interval: number\n  next: number\n}\n\n// Shared rAF-driven clock so all digits tick in the same frame,\n// letting React batch every flip into a single commit\nconst subscribers = new Set<Subscriber>()\nlet rafId: number | null = null\nlet timerId: ReturnType<typeof setTimeout> | null = null\n\n// rAF stops in hidden tabs; fall back to a coarse timer so displays\n// still reach their target value while backgrounded\nconst HIDDEN_TICK = 250\n\nconst schedule = () => {\n  if (subscribers.size === 0 || rafId !== null || timerId !== null) return\n\n  if (typeof document !== 'undefined' && document.hidden) {\n    timerId = setTimeout(() => {\n      timerId = null\n      loop(performance.now())\n    }, HIDDEN_TICK)\n  } else {\n    rafId = requestAnimationFrame(loop)\n  }\n}\n\nconst loop = (now: number) => {\n  rafId = null\n\n  unstable_batchedUpdates(() => {\n    subscribers.forEach((sub) => {\n      if (now >= sub.next) {\n        sub.next = now + sub.interval\n        sub.callback()\n      }\n    })\n  })\n\n  schedule()\n}\n\nexport const subscribeTick = (callback: () => void, interval: number): (() => void) => {\n  const sub: Subscriber = { callback, interval, next: performance.now() + interval }\n  subscribers.add(sub)\n  schedule()\n\n  return () => {\n    subscribers.delete(sub)\n    if (subscribers.size === 0) {\n      if (rafId !== null) {\n        cancelAnimationFrame(rafId)\n        rafId = null\n      }\n      if (timerId !== null) {\n        clearTimeout(timerId)\n        timerId = null\n      }\n    }\n  }\n}\n","import React from 'react'\nimport { FlapDigitProps } from '../types'\nimport Flap from './Flap'\n\nconst FlapDigit: React.FC<FlapDigitProps> = ({ value, prevValue, final, revision, mode, hinge, digitWidth }) => {\n  const digitStyle = digitWidth ? { width: `${digitWidth}px` } : {}\n  const hasTransition = revision > 0 && value !== prevValue\n  const shouldAnimate = final && hasTransition\n  const phase = (revision % 2) as 0 | 1\n\n  return (\n    <div className=\"split-flap-digit\" data-kind=\"digit\" data-mode={mode} style={digitStyle}>\n      {/* Static top half showing current value */}\n      <Flap>{value}</Flap>\n\n      {/* Static bottom half showing previous value */}\n      <Flap bottom>\n        {prevValue}\n      </Flap>\n\n      {/* Animated top half flipping from previous to current */}\n      <Flap animated final={shouldAnimate} phase={phase} idle={!hasTransition}>\n        {prevValue}\n      </Flap>\n\n      {/* Animated bottom half appearing after top half flips (hidden via CSS until final) */}\n      <Flap bottom animated final={shouldAnimate} phase={phase} idle={!hasTransition}>\n        {value}\n      </Flap>\n\n      {/* All four flap faces meet at the same hinge, so one overlay is enough. */}\n      {hinge && <div className=\"split-flap-hinge\" data-kind=\"hinge\" />}\n    </div>\n  )\n}\n\nexport default React.memo(FlapDigit)\n","import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { subscribeTick } from '../ticker'\nimport FlapDigit from './FlapDigit'\n\nexport interface FlapBoardDigit {\n  stack: string[]\n  stackKey: string\n  value: number\n}\n\ninterface FlapBoardProps {\n  digits: FlapBoardDigit[]\n  timing: number\n  duration: number\n  mode: 'num' | 'alpha'\n  hinge: boolean\n  digitWidth?: number\n  animateOnMount?: boolean\n}\n\ninterface Cursor {\n  current: number\n  previous: number\n  target: number\n  stackKey: string\n  revision: number\n  settleAt: number | null\n}\n\nconst STRUCTURE_SEPARATOR = '\\u0001'\nconst TARGET_SEPARATOR = '\\u0002'\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nconst createCursor = (digit: FlapBoardDigit, animate: boolean): Cursor => ({\n  current: animate ? -1 : digit.value,\n  previous: animate ? -1 : digit.value,\n  target: digit.value,\n  stackKey: digit.stackKey,\n  revision: 0,\n  settleAt: null,\n})\n\n// Character displays share one cursor array and one ticker subscription. A\n// 400-digit board therefore performs at most one React state update per tick,\n// while memoized FlapDigit children only render when their own cursor changes.\nconst FlapBoard: React.FC<FlapBoardProps> = ({\n  digits,\n  timing,\n  duration,\n  mode,\n  hinge,\n  digitWidth,\n  animateOnMount = true,\n}) => {\n  const [cursors, setCursors] = useState<Cursor[]>(() =>\n    digits.map((digit) => createCursor(digit, animateOnMount)),\n  )\n  const cursorRef = useRef(cursors)\n  const digitsRef = useRef(digits)\n  digitsRef.current = digits\n\n  const structureKey = useMemo(\n    () => digits.map((digit) => digit.stackKey).join(STRUCTURE_SEPARATOR),\n    [digits],\n  )\n  const targetsKey = useMemo(\n    () => digits.map((digit) => digit.value).join(TARGET_SEPARATOR),\n    [digits],\n  )\n\n  // Reconcile added digits and physical stack changes before paint. Existing\n  // cursors keep their position so a new target can continue an in-flight roll.\n  useIsomorphicLayoutEffect(() => {\n    const currentDigits = digitsRef.current\n    const previous = cursorRef.current\n    let changed = previous.length !== currentDigits.length\n    const next = currentDigits.map((digit, index) => {\n      const cursor = previous[index]\n      if (!cursor) {\n        changed = true\n        return createCursor(digit, animateOnMount)\n      }\n      if (cursor.stackKey !== digit.stackKey) {\n        changed = true\n        return createCursor(digit, true)\n      }\n      return cursor\n    })\n\n    if (changed) {\n      cursorRef.current = next\n      setCursors(next)\n    }\n  }, [animateOnMount, digits.length, structureKey])\n\n  useEffect(() => {\n    const hasPendingDigit = digitsRef.current.some((digit, index) => {\n      const cursor = cursorRef.current[index]\n      return !cursor || cursor.stackKey !== digit.stackKey || cursor.current !== digit.value\n    })\n    if (!hasPendingDigit) return\n\n    let unsubscribe = () => {}\n    unsubscribe = subscribeTick(() => {\n      const currentDigits = digitsRef.current\n      const previous = cursorRef.current\n      let changed = previous.length !== currentDigits.length\n      let hasPendingAfterTick = false\n\n      const next = currentDigits.map((digit, index) => {\n        let cursor = previous[index]\n        if (!cursor) {\n          cursor = createCursor(digit, animateOnMount)\n          changed = true\n        } else if (cursor.stackKey !== digit.stackKey) {\n          cursor = createCursor(digit, true)\n          changed = true\n        }\n\n        if (cursor.current === digit.value) {\n          if (cursor.target === digit.value) return cursor\n          changed = true\n          return { ...cursor, target: digit.value }\n        }\n\n        const newCurrent = cursor.current >= digit.stack.length - 1 ? 0 : cursor.current + 1\n        if (newCurrent !== digit.value) hasPendingAfterTick = true\n        changed = true\n        return {\n          current: newCurrent,\n          previous: cursor.current,\n          target: digit.value,\n          stackKey: digit.stackKey,\n          revision: cursor.revision + 1,\n          settleAt: newCurrent === digit.value ? performance.now() + duration : null,\n        }\n      })\n\n      if (changed) {\n        cursorRef.current = next\n        setCursors(next)\n      }\n      if (!hasPendingAfterTick) unsubscribe()\n    }, timing)\n\n    return unsubscribe\n  }, [animateOnMount, duration, structureKey, targetsKey, timing])\n\n  const settleKey = useMemo(\n    () => cursors.map((cursor) => cursor.settleAt ?? '').join(TARGET_SEPARATOR),\n    [cursors],\n  )\n\n  // Once the compositor animation has finished, promote the current face to\n  // the static bottom layer. This prevents Safari from briefly revealing the\n  // previous transition's stale underlay while preparing the next flip.\n  useEffect(() => {\n    const deadlines = cursors\n      .map((cursor) => cursor.settleAt)\n      .filter((deadline): deadline is number => deadline !== null)\n    if (deadlines.length === 0) return\n\n    const earliest = Math.min(...deadlines)\n    const timer = setTimeout(() => {\n      const previous = cursorRef.current\n      let changed = false\n      const next = previous.map((cursor) => {\n        if (cursor.settleAt === null || cursor.settleAt > earliest + 1) return cursor\n        changed = true\n        return { ...cursor, previous: cursor.current, settleAt: null }\n      })\n\n      if (changed) {\n        cursorRef.current = next\n        setCursors(next)\n      }\n    }, Math.max(0, Math.ceil(earliest - performance.now()) + 1))\n\n    return () => clearTimeout(timer)\n  }, [cursors, settleKey])\n\n  return (\n    <>\n      {digits.map((digit, index) => {\n        const storedCursor = cursors[index]\n        const cursor =\n          storedCursor?.stackKey === digit.stackKey\n            ? storedCursor\n            : createCursor(digit, storedCursor ? true : animateOnMount)\n\n        return (\n          <FlapDigit\n            key={index}\n            value={digit.stack[cursor.current] || ''}\n            prevValue={digit.stack[cursor.previous] || ''}\n            final={cursor.current === digit.value}\n            revision={cursor.revision}\n            mode={mode}\n            hinge={hinge}\n            digitWidth={digitWidth}\n          />\n        )\n      })}\n    </>\n  )\n}\n\nexport default FlapBoard\n","import React, { useState, useEffect, useRef } from 'react'\nimport { FlapStackProps } from '../types'\nimport FlapDigit from './FlapDigit'\nimport { subscribeTick } from '../ticker'\n\nconst FlapStack: React.FC<FlapStackProps> = ({\n  stack,\n  stackKey,\n  value,\n  timing,\n  duration,\n  mode,\n  hinge,\n  digitWidth,\n  animateOnMount = true,\n}) => {\n  const stackLength = stack.length\n\n  const [cursor, setCursor] = useState(() => {\n    if (animateOnMount) {\n      return { current: -1, previous: -1, target: 0, revision: 0 }\n    }\n    const target = Math.max(0, Math.min(value, stackLength - 1))\n    return { current: target, previous: target, target, revision: 0 }\n  })\n\n  // Reset cursor when the flap set changes (identity via stackKey, not array reference)\n  const mountedRef = useRef(false)\n  useEffect(() => {\n    if (!mountedRef.current) {\n      mountedRef.current = true\n      return\n    }\n    setCursor({ current: -1, previous: -1, target: 0, revision: 0 })\n  }, [stackKey])\n\n  // Animation sequence when value changes\n  useEffect(() => {\n    const target = Math.max(0, Math.min(value, stackLength - 1))\n\n    const unsubscribe = subscribeTick(() => {\n      setCursor((prevCursor) => {\n        if (prevCursor.current === target) {\n          unsubscribe()\n          return prevCursor.target === target ? prevCursor : { ...prevCursor, target }\n        }\n\n        const newCurrent = prevCursor.current >= stackLength - 1 ? 0 : prevCursor.current + 1\n\n        if (newCurrent === target) {\n          unsubscribe()\n        }\n        return {\n          current: newCurrent,\n          previous: prevCursor.current,\n          target,\n          revision: prevCursor.revision + 1,\n        }\n      })\n    }, timing)\n\n    return unsubscribe\n  }, [stackKey, stackLength, value, timing])\n\n  useEffect(() => {\n    if (cursor.current !== cursor.target || cursor.previous === cursor.current) return\n    const revision = cursor.revision\n    const timer = setTimeout(() => {\n      setCursor((current) =>\n        current.revision === revision && current.current === current.target\n          ? { ...current, previous: current.current }\n          : current,\n      )\n    }, duration)\n    return () => clearTimeout(timer)\n  }, [cursor.current, cursor.previous, cursor.revision, cursor.target, duration])\n\n  const { current, previous, target, revision } = cursor\n\n  return (\n    <FlapDigit\n      value={stack[current] || ''}\n      prevValue={stack[previous] || ''}\n      final={current === target}\n      revision={revision}\n      mode={mode}\n      hinge={hinge}\n      digitWidth={digitWidth}\n    />\n  )\n}\n\n// Parent displays often update one row or digit at a time. stackKey is the\n// declared identity of the physical flap set, so comparing it avoids walking\n// every unchanged digit while still allowing local cursor state to animate.\nexport default React.memo(\n  FlapStack,\n  (previous, next) =>\n    previous.stackKey === next.stackKey &&\n    // Words mode may contain React nodes whose content changes while ids stay stable.\n    (previous.mode !== 'words' || previous.stack === next.stack) &&\n    previous.value === next.value &&\n    previous.timing === next.timing &&\n    previous.duration === next.duration &&\n    previous.mode === next.mode &&\n    previous.hinge === next.hinge &&\n    previous.digitWidth === next.digitWidth &&\n    previous.animateOnMount === next.animateOnMount,\n)\n","export const Presets = {\n  NUM: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n  ALPHANUM: [\n    ' ',\n    'A',\n    'B',\n    'C',\n    'D',\n    'E',\n    'F',\n    'G',\n    'H',\n    'I',\n    'J',\n    'K',\n    'L',\n    'M',\n    'N',\n    'O',\n    'P',\n    'Q',\n    'R',\n    'S',\n    'T',\n    'U',\n    'V',\n    'W',\n    'X',\n    'Y',\n    'Z',\n    '0',\n    '1',\n    '2',\n    '3',\n    '4',\n    '5',\n    '6',\n    '7',\n    '8',\n    '9',\n  ],\n  SPECIAL: [\n    ' ',\n    'A',\n    'B',\n    'C',\n    'D',\n    'E',\n    'F',\n    'G',\n    'H',\n    'I',\n    'J',\n    'K',\n    'L',\n    'M',\n    'N',\n    'O',\n    'P',\n    'Q',\n    'R',\n    'S',\n    'T',\n    'U',\n    'V',\n    'W',\n    'X',\n    'Y',\n    'Z',\n    '0',\n    '1',\n    '2',\n    '3',\n    '4',\n    '5',\n    '6',\n    '7',\n    '8',\n    '9',\n    '!',\n    '@',\n    '#',\n    '$',\n    '%',\n    '^',\n    '&',\n    '*',\n    '(',\n    ')',\n    '.',\n    ',',\n    '?',\n    '-',\n    '_',\n  ],\n}\n\n// Type for preset keys\nexport type PresetKey = keyof typeof Presets\n","import React, { useMemo } from 'react'\nimport { SplitFlapProps } from './types'\nimport { FlapBoard, FlapBoardDigit, FlapStack } from './components'\nimport { Presets } from './presets'\n\n// Joiner unlikely to appear in user-provided chars\nconst KEY_SEPARATOR = '\\u0000'\n\nconst SplitFlap: React.FC<SplitFlapProps> = ({\n  value,\n  chars = Presets.NUM,\n  length,\n  mode,\n  padChar = ' ',\n  align,\n  padMode,\n  animateOnMount = true,\n  digitWidth,\n  timing = 60,\n  duration,\n  hinge = true,\n  theme = 'default',\n  size = 'medium',\n  className = '',\n  style,\n  background,\n  fontColor,\n  render,\n}) => {\n  const effectiveDuration = duration ?? (className.split(/\\s+/).includes('performance-mode') ? 160 : 300)\n  // Legacy: length === 1 used to mean words mode\n  const wordsMode = mode === 'words' || (mode === undefined && length === 1)\n  const displayLength = length ?? value.length\n\n  const charsKey = useMemo(() => chars.join(KEY_SEPARATOR), [chars])\n\n  // Only uppercase the value when the char set itself is uppercase,\n  // so lowercase char sets stay matchable\n  const uppercase = useMemo(() => chars.every((char) => char === char.toUpperCase()), [chars])\n\n  const digitMode = useMemo(() => (chars.every((char) => /^[\\s0-9]$/.test(char)) ? 'num' : 'alpha'), [chars])\n\n  const displayValue = useMemo(() => {\n    let processedValue = uppercase ? value.toUpperCase() : value\n\n    if (wordsMode) return processedValue\n\n    if (processedValue.length < displayLength) {\n      const padding = padChar.repeat(displayLength - processedValue.length)\n      const effectiveAlign = align ?? (padMode === 'start' ? 'left' : padMode === 'end' ? 'right' : 'auto')\n      const padStart = effectiveAlign === 'right' || (effectiveAlign === 'auto' && /^[0-9.,+-]*$/.test(processedValue))\n\n      processedValue = padStart ? padding + processedValue : processedValue + padding\n    } else if (processedValue.length > displayLength) {\n      processedValue = processedValue.substring(0, displayLength)\n    }\n\n    return processedValue\n  }, [value, uppercase, wordsMode, displayLength, padChar, align, padMode])\n\n  // Chars missing from the set get an extended stack: a full rotation\n  // through all chars before landing on the fallback\n  const findCharInStack = (char: string): { index: number; stack: string[]; key: string } => {\n    const index = chars.indexOf(char)\n\n    if (index !== -1) {\n      return { index, stack: chars, key: charsKey }\n    }\n\n    const extendedStack = [...chars, char]\n    return { index: extendedStack.length - 1, stack: extendedStack, key: charsKey + KEY_SEPARATOR + char }\n  }\n\n  const digits = useMemo<FlapBoardDigit[]>(() => {\n    if (wordsMode) return []\n\n    const result: FlapBoardDigit[] = []\n    for (let i = 0; i < displayLength; i++) {\n      const char = displayValue[i] || padChar\n      const { index, stack, key } = findCharInStack(char)\n\n      result.push({ stack, stackKey: key, value: index })\n    }\n    return result\n  }, [chars, charsKey, displayLength, displayValue, padChar, wordsMode])\n\n  const renderDigits = () => {\n    if (wordsMode) {\n      const { index, stack, key } = findCharInStack(displayValue)\n      return (\n        <FlapStack\n          key={0}\n          stack={stack}\n          stackKey={key}\n          value={index}\n          mode=\"words\"\n          timing={timing}\n          duration={effectiveDuration}\n          hinge={hinge}\n          digitWidth={digitWidth}\n          animateOnMount={animateOnMount}\n        />\n      )\n    }\n\n    return (\n      <FlapBoard\n        digits={digits}\n        timing={timing}\n        duration={effectiveDuration}\n        mode={digitMode}\n        hinge={hinge}\n        digitWidth={digitWidth}\n        animateOnMount={animateOnMount}\n      />\n    )\n  }\n\n  const displayClasses = [\n    'split-flap-display',\n    theme !== 'default' ? theme : '',\n    size,\n    wordsMode ? 'words-mode' : '',\n    className,\n  ]\n    .filter(Boolean)\n    .join(' ')\n\n  const combinedStyle = {\n    ...style,\n    '--flap-animation-duration': `${effectiveDuration}ms`,\n    ...(background && { '--flap-background': background }),\n    ...(fontColor && { '--flap-font-color': fontColor }),\n  } as React.CSSProperties & {\n    '--flap-animation-duration': string\n    '--flap-background'?: string\n    '--flap-font-color'?: string\n  }\n\n  // role=\"img\" exposes the label while keeping the flap internals out of the a11y tree\n  const content = (\n    <div className={displayClasses} style={combinedStyle} role=\"img\" aria-label={value}>\n      {renderDigits()}\n    </div>\n  )\n\n  return render ? render(content) : content\n}\n\nexport default React.memo(SplitFlap)\n","import React, { Fragment, useMemo } from 'react'\nimport { LongFlapProps } from './types'\nimport { FlapStack } from './components'\n\nconst LongFlap: React.FC<LongFlapProps> = ({\n  flaps,\n  displayId,\n  animateOnMount = true,\n  digitWidth,\n  digitHeight = 50,\n  timing = 60,\n  duration,\n  hinge = true,\n  theme = 'default',\n  size = 'medium',\n  className = '',\n  style,\n  background,\n  fontColor,\n  render,\n}) => {\n  const effectiveDuration = duration ?? (className.split(/\\s+/).includes('performance-mode') ? 160 : 300)\n  const flapStack = useMemo(() => flaps.map((f) => <Fragment key={f.id}>{f.component}</Fragment>), [flaps])\n\n  // Cursor identity follows the id list, so inline-defined flaps arrays are safe\n  const stackKey = useMemo(() => flaps.map((f) => String(f.id)).join('\\u0000'), [flaps])\n\n  const currentIndex = useMemo(() => {\n    const flapIndex = flaps.findIndex((f) => f.id === displayId)\n    return flapIndex !== -1 ? flapIndex : 0\n  }, [flaps, displayId])\n\n  const displayClasses = ['split-flap-display', theme !== 'default' ? theme : '', size, 'long-flap-mode', className]\n    .filter(Boolean)\n    .join(' ')\n\n  const longFlapStyle = {\n    ...style,\n    '--digit-width': digitWidth ? `${digitWidth}px` : 'auto',\n    '--digit-height': digitHeight ? `${digitHeight}px` : 'auto',\n    '--flap-animation-duration': `${effectiveDuration}ms`,\n    ...(background && { '--flap-background': background }),\n    ...(fontColor && { '--flap-font-color': fontColor }),\n  } as React.CSSProperties & {\n    '--digit-width': string\n    '--digit-height': string\n    '--flap-animation-duration': string\n    '--flap-background'?: string\n    '--flap-font-color'?: string\n  }\n\n  const content = (\n    <div className={displayClasses} style={longFlapStyle} aria-hidden=\"true\">\n      <FlapStack\n        stack={flapStack}\n        stackKey={stackKey}\n        value={currentIndex}\n        timing={timing}\n        duration={effectiveDuration}\n        mode=\"words\"\n        hinge={hinge}\n        digitWidth={digitWidth}\n        animateOnMount={animateOnMount}\n      />\n    </div>\n  )\n\n  return render ? render(content) : content\n}\n\nexport default LongFlap\n"],"names":["forwardRef","_jsx","unstable_batchedUpdates","_jsxs","useLayoutEffect","useEffect","useState","useRef","useMemo","_Fragment","FlapDigit","FlapStack","Fragment"],"mappings":"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","x_google_ignoreList":[0]}