{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/b88S5n10JWdoaQXWxWyG/JIBImKyYzhB3dn4UtpqH/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (20caf11)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:\"<style>\\n    /* Hide all arrows initially */\\n    .scroll-btn {\\n        opacity: 0;\\n        transition: opacity 0.3s ease-in-out;\\n    }\\n\\n    .hidden {\\n        display: none;\\n        pointer-events: none;\\n    }\\n\\n    .visible {\\n        opacity: 1;\\n        pointer-events: auto;\\n    }\\n</style>\\n\\n<script>\\n    document.addEventListener(\\\"DOMContentLoaded\\\", function () {\\n        // Function to initialize horizontal scrolling and UP/DOWN buttons\\n        function initScrollingForElement(element) {\\n            // Check screen resolution\\n            const mediaQuery = window.matchMedia(\\\"(min-width: 1200px)\\\");\\n            \\n            // If the resolution is equal to or greater than 1200px\\n            if (mediaQuery.matches) {\\n                // Initialize horizontal scrolling\\n                const containers = element.querySelectorAll('.container');\\n                containers.forEach(container => {\\n                    container.addEventListener('wheel', function (event) {\\n                        event.preventDefault();\\n                        // Adjust the speed of horizontal scrolling\\n                        container.scrollLeft += event.deltaY * 0.22; // Multiplier (0.5) controls the speed\\n                    });\\n\\n                    // Handling scrolling using keyboard arrows\\n                    container.setAttribute('tabindex', '0'); // Add focusability\\n                    container.addEventListener('keydown', function (event) {\\n                        if (event.key === 'ArrowLeft') {\\n                            container.scrollLeft -= 10; // Scroll left\\n                        } else if (event.key === 'ArrowRight') {\\n                            container.scrollLeft += 10; // Scroll right\\n                        }\\n                    });\\n                });\\n\\n                // Initialize vertical scrolling and UP/DOWN buttons for each column\\n                const columns = element.querySelectorAll('.column');\\n                columns.forEach(column => {\\n                    const content = column.querySelector('.column-content');\\n                    const upButton = column.querySelector('.scroll-btn.up');\\n                    const downButton = column.querySelector('.scroll-btn.down');\\n\\n                    // Function to update the visibility of UP/DOWN buttons\\n                    function updateButtonVisibility() {\\n                        setTimeout(function () {\\n                            if (content.scrollHeight > content.clientHeight && content.scrollTop > 0) {\\n                                upButton.classList.remove('hidden'); // Remove the \\\"hidden\\\" class - Show the \\\"Up\\\" button\\n                                upButton.classList.add('visible'); // Add the \\\"visible\\\" class - Show the \\\"Up\\\" button with animation\\n                            } else {\\n                                upButton.classList.remove('visible'); // Remove the \\\"visible\\\" class - Hide the \\\"Up\\\" button with animation\\n                                upButton.classList.add('hidden'); // Add the \\\"hidden\\\" class - Hide the \\\"Up\\\" button\\n                            }\\n\\n                            if (content.scrollHeight > content.clientHeight && content.scrollTop < content.scrollHeight - content.clientHeight) {\\n                                downButton.classList.remove('hidden'); // Remove the \\\"hidden\\\" class - Show the \\\"Down\\\" button\\n                                downButton.classList.add('visible'); // Add the \\\"visible\\\" class - Show the \\\"Down\\\" button with animation\\n                            } else {\\n                                downButton.classList.remove('visible'); // Remove the \\\"visible\\\" class - Hide the \\\"Down\\\" button with animation\\n                                downButton.classList.add('hidden'); // Add the \\\"hidden\\\" class - Hide the \\\"Down\\\" button\\n                            }\\n                        }, 350); // Delay 150 ms before checking button visibility\\n                    }\\n\\n                    // Function for scrolling up\\n                    upButton.addEventListener('click', function () {\\n                        content.scrollTop -= 100;\\n                    });\\n\\n                    // Function for scrolling down\\n                    downButton.addEventListener('click', function () {\\n                        content.scrollTop += 100;\\n                    });\\n\\n                    // Smooth scrolling handling when hovering over the up arrow\\n                    let upIntervalId;\\n                    upButton.addEventListener('mouseenter', function () {\\n                        upIntervalId = setInterval(function () {\\n                            content.scrollTop -= 10; // Smooth scrolling up\\n                        }, 20);\\n                    });\\n\\n                    upButton.addEventListener('mouseleave', function () {\\n                        clearInterval(upIntervalId);\\n                    });\\n\\n                    // Smooth scrolling handling when hovering over the down arrow\\n                    let downIntervalId;\\n                    downButton.addEventListener('mouseenter', function () {\\n                        downIntervalId = setInterval(function () {\\n                            content.scrollTop += 10; // Smooth scrolling down\\n                        }, 20);\\n                    });\\n\\n                    downButton.addEventListener('mouseleave', function () {\\n                        clearInterval(downIntervalId);\\n                    });\\n\\n                    // Check if the column content requires scrolling when the page loads\\n                    updateButtonVisibility();\\n\\n                    // Add scroll listener to update button visibility\\n                    content.addEventListener('scroll', function () {\\n                        updateButtonVisibility();\\n                    });\\n                });\\n\\n                // Initialize horizontal scrolling and LEFT/RIGHT buttons for .container\\n                containers.forEach(container => {\\n                    const leftButtonContainer = container.parentElement.querySelector('.scroll-btn.left-container');\\n                    const rightButtonContainer = container.parentElement.querySelector('.scroll-btn.right-container');\\n\\n                    // Function for scrolling left for .container\\n                    leftButtonContainer.addEventListener('click', function () {\\n                        container.scrollLeft -= 100;\\n                    });\\n\\n                    // Function for scrolling right for .container\\n                    rightButtonContainer.addEventListener('click', function () {\\n                        container.scrollLeft += 100;\\n                    });\\n\\n                    // Smooth scrolling handling when hovering over the left arrow\\n                    let leftIntervalId;\\n                    leftButtonContainer.addEventListener('mouseenter', function () {\\n                        leftIntervalId = setInterval(function () {\\n                            container.scrollLeft -= 10; // Smooth scrolling left\\n                        }, 20);\\n                    });\\n\\n                    leftButtonContainer.addEventListener('mouseleave', function () {\\n                        clearInterval(leftIntervalId);\\n                    });\\n\\n                    // Smooth scrolling handling when hovering over the right arrow\\n                    let rightIntervalId;\\n                    rightButtonContainer.addEventListener('mouseenter', function () {\\n                        rightIntervalId = setInterval(function () {\\n                            container.scrollLeft += 4; // Smooth scrolling right\\n                        }, 20);\\n                    });\\n\\n                    rightButtonContainer.addEventListener('mouseleave', function () {\\n                        clearInterval(rightIntervalId);\\n                    });\\n\\n                    // Function to update the visibility of LEFT/RIGHT buttons\\n                    function updateButtonVisibility() {\\n                        // Check if scrolling left is possible\\n                        if (container.scrollLeft > 0) {\\n                            leftButtonContainer.classList.remove('hidden'); // Remove the \\\"hidden\\\" class - Show the \\\"Left\\\" button\\n                            leftButtonContainer.classList.add('visible'); // Add the \\\"visible\\\" class - Show the \\\"Left\\\" button with animation\\n                        } else {\\n                            leftButtonContainer.classList.remove('visible'); // Remove the \\\"visible\\\" class - Hide the \\\"Left\\\" button with animation\\n                            leftButtonContainer.classList.add('hidden'); // Add the \\\"hidden\\\" class - Hide the \\\"Left\\\" button\\n                        }\\n\\n                        // Check if scrolling right is possible\\n                        if (container.scrollWidth > container.clientWidth && container.scrollLeft < container.scrollWidth - container.clientWidth) {\\n                            rightButtonContainer.classList.remove('hidden'); // Remove the \\\"hidden\\\" class - Show the \\\"Right\\\" button\\n                            rightButtonContainer.classList.add('visible'); // Add the \\\"visible\\\" class - Show the \\\"Right\\\" button with animation\\n                        } else {\\n                            rightButtonContainer.classList.remove('visible'); // Remove the \\\"visible\\\" class - Hide the \\\"Right\\\" button with animation\\n                            rightButtonContainer.classList.add('hidden'); // Add the \\\"hidden\\\" class - Hide the \\\"Right\\\" button\\n                        }\\n                    }\\n\\n                    // Check if the .container content requires scrolling when the page loads\\n                    updateButtonVisibility();\\n\\n                    // Add scroll listener to update the visibility of LEFT/RIGHT buttons\\n                    container.addEventListener('scroll', function () {\\n                        updateButtonVisibility();\\n                    });\\n                });\\n\\n                // Initialize vertical scrolling for .yearly-content\\n                const yearlyContent = element.querySelector('.yearly-content');\\n                if (yearlyContent) {\\n                    yearlyContent.addEventListener('wheel', function (event) {\\n                        event.preventDefault();\\n                        yearlyContent.scrollTop += event.deltaY * 0.18; // Multiplier (0.5) controls the scrolling speed\\n                    });\\n                }\\n            } else {\\n                console.log(\\\"Screen resolution is less than 1200px. Not initializing scrolling.\\\");\\n            }\\n        }\\n\\n        // Initialize scrolling for existing elements after page load\\n        initScrollingForElement(document);\\n\\n        // Automatically focus on the first .container\\n        const firstContainer = document.querySelector('.container');\\n        if (firstContainer) {\\n            firstContainer.focus();\\n        }\\n\\n        // Create a mutation observer to react to changes in the DOM structure\\n        const observer = new MutationObserver(function (mutationsList, observer) {\\n            mutationsList.forEach(mutation => {\\n                // For each added node, check if it contains new elements to initialize scrolling\\n                mutation.addedNodes.forEach(addedNode => {\\n                    if (addedNode.nodeType === Node.ELEMENT_NODE) {\\n                        initScrollingForElement(addedNode);\\n                    }\\n                });\\n            });\\n        });\\n\\n        // Configure and start mutation observer for the entire document\\n        observer.observe(document.documentElement, { childList: true, subtree: true });\\n    });\\n</script>\\n\",description:\"Calendiary is a revolutionary Framer template designed to tell your story in a creative way. There's nothing stopping you from using it for portfolio, blogging, photo stories or updates. The possibilities are limited only by your imagination.\",favicon:\"https://framerusercontent.com/assets/rDeypQpWq7CKCy3QjpS4AMMtMc.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/zQQbJfeWM06JbnwVKu7nijk5Ou8.png\",title:\"Calendiary\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "AACe,SAARA,EAA0BC,EAAOC,EAAa,CAAC,MAAM,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAgkX,YAAY,qPAAqP,QAAQ,sEAAsE,OAAO,0BAA0B,YAAY,uEAAuE,MAAM,YAAY,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
