{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react-intersection-observer@9.4.3/react-intersection-observer.modern.mjs", "ssg:https://framerusercontent.com/modules/uMzfpsMOU6P38Wgktwfv/WpYaNJs5Uup2sIxcpuqa/AnimatedImage.js"],
  "sourcesContent": ["import*as e from\"react\";function _extends(){_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};return _extends.apply(this,arguments)}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var i={};var n=Object.keys(e);var r,o;for(o=0;o<n.length;o++){r=n[o];t.indexOf(r)>=0||(i[r]=e[r])}return i}const t=new Map;const i=new WeakMap;let n=0;let r;function defaultFallbackInView(e){r=e}\n/**\n * Generate a unique ID for the root element\n * @param root\n */function getRootId(e){if(!e)return\"0\";if(i.has(e))return i.get(e);n+=1;i.set(e,n.toString());return i.get(e)}\n/**\n * Convert the options to a string Id, based on the values.\n * Ensures we can reuse the same observer when observing elements with the same options.\n * @param options\n */function optionsToId(e){return Object.keys(e).sort().filter((t=>void 0!==e[t])).map((t=>`${t}_${\"root\"===t?getRootId(e.root):e[t]}`)).toString()}function createObserver(e){let i=optionsToId(e);let n=t.get(i);if(!n){const r=new Map;let o;const s=new IntersectionObserver((t=>{t.forEach((t=>{var i;const n=t.isIntersecting&&o.some((e=>t.intersectionRatio>=e));e.trackVisibility&&\"undefined\"===typeof t.isVisible&&(t.isVisible=n);null==(i=r.get(t.target))?void 0:i.forEach((e=>{e(n,t)}))}))}),e);o=s.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]);n={id:i,observer:s,elements:r};t.set(i,n)}return n}\n/**\n * @param element - DOM Element to observe\n * @param callback - Callback function to trigger when intersection status changes\n * @param options - Intersection Observer options\n * @param fallbackInView - Fallback inView value.\n * @return Function - Cleanup function that should be triggered to unregister the observer\n */function observe(e,i,n={},o=r){if(\"undefined\"===typeof window.IntersectionObserver&&void 0!==o){const t=e.getBoundingClientRect();i(o,{isIntersecting:o,target:e,intersectionRatio:\"number\"===typeof n.threshold?n.threshold:0,time:0,boundingClientRect:t,intersectionRect:t,rootBounds:t});return()=>{}}const{id:s,observer:l,elements:h}=createObserver(n);let a=h.get(e)||[];h.has(e)||h.set(e,a);a.push(i);l.observe(e);return function unobserve(){a.splice(a.indexOf(i),1);if(0===a.length){h.delete(e);l.unobserve(e)}if(0===h.size){l.disconnect();t.delete(s)}}}const o=[\"children\",\"as\",\"triggerOnce\",\"threshold\",\"root\",\"rootMargin\",\"onChange\",\"skip\",\"trackVisibility\",\"delay\",\"initialInView\",\"fallbackInView\"];function isPlainChildren(e){return\"function\"!==typeof e.children}class InView extends e.Component{constructor(e){super(e);this.node=null;this._unobserveCb=null;this.handleNode=e=>{if(this.node){this.unobserve();e||this.props.triggerOnce||this.props.skip||this.setState({inView:!!this.props.initialInView,entry:void 0})}this.node=e||null;this.observeNode()};this.handleChange=(e,t)=>{e&&this.props.triggerOnce&&this.unobserve();isPlainChildren(this.props)||this.setState({inView:e,entry:t});this.props.onChange&&this.props.onChange(e,t)};this.state={inView:!!e.initialInView,entry:void 0}}componentDidUpdate(e){if(e.rootMargin!==this.props.rootMargin||e.root!==this.props.root||e.threshold!==this.props.threshold||e.skip!==this.props.skip||e.trackVisibility!==this.props.trackVisibility||e.delay!==this.props.delay){this.unobserve();this.observeNode()}}componentWillUnmount(){this.unobserve();this.node=null}observeNode(){if(!this.node||this.props.skip)return;const{threshold:e,root:t,rootMargin:i,trackVisibility:n,delay:r,fallbackInView:o}=this.props;this._unobserveCb=observe(this.node,this.handleChange,{threshold:e,root:t,rootMargin:i,trackVisibility:n,delay:r},o)}unobserve(){if(this._unobserveCb){this._unobserveCb();this._unobserveCb=null}}render(){if(!isPlainChildren(this.props)){const{inView:e,entry:t}=this.state;return this.props.children({inView:e,entry:t,ref:this.handleNode})}const t=this.props,{children:i,as:n}=t,r=_objectWithoutPropertiesLoose(t,o);return e.createElement(n||\"div\",_extends({ref:this.handleNode},r),i)}}function useInView({threshold:t,delay:i,trackVisibility:n,rootMargin:r,root:o,triggerOnce:s,skip:l,initialInView:h,fallbackInView:a,onChange:c}={}){var d;const[u,p]=e.useState(null);const b=e.useRef();const[f,g]=e.useState({inView:!!h,entry:void 0});b.current=c;e.useEffect((()=>{if(l||!u)return;let e;e=observe(u,((t,i)=>{g({inView:t,entry:i});b.current&&b.current(t,i);if(i.isIntersecting&&s&&e){e();e=void 0}}),{root:o,rootMargin:r,threshold:t,trackVisibility:n,delay:i},a);return()=>{e&&e()}}),[Array.isArray(t)?t.toString():t,u,o,r,s,l,n,a,i]);const v=null==(d=f.entry)?void 0:d.target;const y=e.useRef();if(!u&&v&&!s&&!l&&y.current!==v){y.current=v;g({inView:!!h,entry:void 0})}const V=[p,f.inView,f.entry];V.ref=V[0];V.inView=V[1];V.entry=V[2];return V}export{InView,defaultFallbackInView,observe,useInView};\n\n//# sourceMappingURL=react-intersection-observer.modern.mjs.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,motion}from\"framer\";import{useInView}from\"react-intersection-observer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function AnimatedImage(props){const{image}=props;const[ref,inView]=useInView({triggerOnce:true,threshold:.5});return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",position:\"relative\",...props.style},children:/*#__PURE__*/_jsx(motion.img,{src:image,alt:(image===null||image===void 0?void 0:image.alt)||\"Animated image\",initial:{height:\"50%\",objectPosition:\"bottom center\"},animate:inView?{height:\"100%\"}:undefined,transition:{type:\"spring\",stiffness:400,damping:50},style:{width:\"101%\",objectFit:\"cover\",position:\"absolute\",bottom:0}})});}AnimatedImage.displayName=\"Animated Image\";addPropertyControls(AnimatedImage,{image:{type:ControlType.Image,title:\"Image\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedImage\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedImage.map"],
  "mappings": "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",
  "names": ["t", "i", "n", "r", "getRootId", "e", "i", "n", "optionsToId", "t", "createObserver", "r", "o", "observe", "window", "s", "l", "h", "a", "useInView", "i", "n", "r", "o", "l", "h", "c", "u", "p", "ye", "b", "pe", "f", "g", "ue", "e", "observe", "t", "v", "y", "V", "AnimatedImage", "props", "image", "ref", "inView", "useInView", "p", "motion", "addPropertyControls", "ControlType"]
}
