{"ast":null,"code":"import { useConstant } from '../../utils/use-constant.js';\nimport { createScrollUpdater, createScrollMotionValues } from './utils.js';\nimport { addDomEvent } from '../../events/use-dom-event.js';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.js';\nimport { invariant } from 'hey-listen';\nvar getElementScrollOffsets = function getElementScrollOffsets(element) {\n  return function () {\n    return {\n      xOffset: element.scrollLeft,\n      yOffset: element.scrollTop,\n      xMaxOffset: element.scrollWidth - element.offsetWidth,\n      yMaxOffset: element.scrollHeight - element.offsetHeight\n    };\n  };\n};\n/**\n * Returns MotionValues that update when the provided element scrolls:\n *\n * - `scrollX` — Horizontal scroll distance in pixels.\n * - `scrollY` — Vertical scroll distance in pixels.\n * - `scrollXProgress` — Horizontal scroll progress between `0` and `1`.\n * - `scrollYProgress` — Vertical scroll progress between `0` and `1`.\n *\n * This element must be set to `overflow: scroll` on either or both axes to report scroll offset.\n *\n * @library\n *\n * ```jsx\n * import * as React from \"react\"\n * import {\n *   Frame,\n *   useElementScroll,\n *   useTransform\n * } from \"framer\"\n *\n * export function MyComponent() {\n *   const ref = React.useRef()\n *   const { scrollYProgress } = useElementScroll(ref)\n *\n *   return (\n *     <Frame ref={ref}>\n *       <Frame scaleX={scrollYProgress} />\n *     </Frame>\n *   )\n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * export const MyComponent = () => {\n *   const ref = useRef()\n *   const { scrollYProgress } = useElementScroll(ref)\n *\n *   return (\n *     <div ref={ref}>\n *       <motion.div style={{ scaleX: scrollYProgress }} />\n *     </div>\n *   )\n * }\n * ```\n *\n * @public\n */\nfunction useElementScroll(ref) {\n  var values = useConstant(createScrollMotionValues);\n  useIsomorphicLayoutEffect(function () {\n    var element = ref.current;\n    invariant(!!element, \"ref provided to useScroll must be passed into a HTML element.\");\n    if (!element) return;\n    var updateScrollValues = createScrollUpdater(values, getElementScrollOffsets(element));\n    var scrollListener = addDomEvent(element, \"scroll\", updateScrollValues, {\n      passive: true\n    });\n    var resizeListener = addDomEvent(element, \"resize\", updateScrollValues);\n    return function () {\n      scrollListener && scrollListener();\n      resizeListener && resizeListener();\n    };\n  }, []);\n  return values;\n}\nexport { useElementScroll };","map":{"version":3,"names":["useConstant","createScrollUpdater","createScrollMotionValues","addDomEvent","useIsomorphicLayoutEffect","invariant","getElementScrollOffsets","element","xOffset","scrollLeft","yOffset","scrollTop","xMaxOffset","scrollWidth","offsetWidth","yMaxOffset","scrollHeight","offsetHeight","useElementScroll","ref","values","current","updateScrollValues","scrollListener","passive","resizeListener"],"sources":["D:/DSP_Management/node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.js"],"sourcesContent":["import { useConstant } from '../../utils/use-constant.js';\nimport { createScrollUpdater, createScrollMotionValues } from './utils.js';\nimport { addDomEvent } from '../../events/use-dom-event.js';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.js';\nimport { invariant } from 'hey-listen';\n\nvar getElementScrollOffsets = function (element) { return function () {\n    return {\n        xOffset: element.scrollLeft,\n        yOffset: element.scrollTop,\n        xMaxOffset: element.scrollWidth - element.offsetWidth,\n        yMaxOffset: element.scrollHeight - element.offsetHeight,\n    };\n}; };\n/**\n * Returns MotionValues that update when the provided element scrolls:\n *\n * - `scrollX` — Horizontal scroll distance in pixels.\n * - `scrollY` — Vertical scroll distance in pixels.\n * - `scrollXProgress` — Horizontal scroll progress between `0` and `1`.\n * - `scrollYProgress` — Vertical scroll progress between `0` and `1`.\n *\n * This element must be set to `overflow: scroll` on either or both axes to report scroll offset.\n *\n * @library\n *\n * ```jsx\n * import * as React from \"react\"\n * import {\n *   Frame,\n *   useElementScroll,\n *   useTransform\n * } from \"framer\"\n *\n * export function MyComponent() {\n *   const ref = React.useRef()\n *   const { scrollYProgress } = useElementScroll(ref)\n *\n *   return (\n *     <Frame ref={ref}>\n *       <Frame scaleX={scrollYProgress} />\n *     </Frame>\n *   )\n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * export const MyComponent = () => {\n *   const ref = useRef()\n *   const { scrollYProgress } = useElementScroll(ref)\n *\n *   return (\n *     <div ref={ref}>\n *       <motion.div style={{ scaleX: scrollYProgress }} />\n *     </div>\n *   )\n * }\n * ```\n *\n * @public\n */\nfunction useElementScroll(ref) {\n    var values = useConstant(createScrollMotionValues);\n    useIsomorphicLayoutEffect(function () {\n        var element = ref.current;\n        invariant(!!element, \"ref provided to useScroll must be passed into a HTML element.\");\n        if (!element)\n            return;\n        var updateScrollValues = createScrollUpdater(values, getElementScrollOffsets(element));\n        var scrollListener = addDomEvent(element, \"scroll\", updateScrollValues, { passive: true });\n        var resizeListener = addDomEvent(element, \"resize\", updateScrollValues);\n        return function () {\n            scrollListener && scrollListener();\n            resizeListener && resizeListener();\n        };\n    }, []);\n    return values;\n}\n\nexport { useElementScroll };\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,6BAA6B;AACzD,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,YAAY;AAC1E,SAASC,WAAW,QAAQ,+BAA+B;AAC3D,SAASC,yBAAyB,QAAQ,sCAAsC;AAChF,SAASC,SAAS,QAAQ,YAAY;AAEtC,IAAIC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAaC,OAAO,EAAE;EAAE,OAAO,YAAY;IAClE,OAAO;MACHC,OAAO,EAAED,OAAO,CAACE,UAAU;MAC3BC,OAAO,EAAEH,OAAO,CAACI,SAAS;MAC1BC,UAAU,EAAEL,OAAO,CAACM,WAAW,GAAGN,OAAO,CAACO,WAAW;MACrDC,UAAU,EAAER,OAAO,CAACS,YAAY,GAAGT,OAAO,CAACU;IAC/C,CAAC;EACL,CAAC;AAAE,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACC,GAAG,EAAE;EAC3B,IAAIC,MAAM,GAAGpB,WAAW,CAACE,wBAAwB,CAAC;EAClDE,yBAAyB,CAAC,YAAY;IAClC,IAAIG,OAAO,GAAGY,GAAG,CAACE,OAAO;IACzBhB,SAAS,CAAC,CAAC,CAACE,OAAO,EAAE,+DAA+D,CAAC;IACrF,IAAI,CAACA,OAAO,EACR;IACJ,IAAIe,kBAAkB,GAAGrB,mBAAmB,CAACmB,MAAM,EAAEd,uBAAuB,CAACC,OAAO,CAAC,CAAC;IACtF,IAAIgB,cAAc,GAAGpB,WAAW,CAACI,OAAO,EAAE,QAAQ,EAAEe,kBAAkB,EAAE;MAAEE,OAAO,EAAE;IAAK,CAAC,CAAC;IAC1F,IAAIC,cAAc,GAAGtB,WAAW,CAACI,OAAO,EAAE,QAAQ,EAAEe,kBAAkB,CAAC;IACvE,OAAO,YAAY;MACfC,cAAc,IAAIA,cAAc,CAAC,CAAC;MAClCE,cAAc,IAAIA,cAAc,CAAC,CAAC;IACtC,CAAC;EACL,CAAC,EAAE,EAAE,CAAC;EACN,OAAOL,MAAM;AACjB;AAEA,SAASF,gBAAgB","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}