{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/w6ELTl5ysrWMMcHohvwN/4wy6uTwg7qRDvmyjZH3p/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (ad88b1a)\nexport default function metadata(params,activeLocale){return{customHTMLHeadEnd:'<!-- Fathom - beautiful, simple website analytics --> <script src=\"https://cdn.usefathom.com/script.js\" data-site=\"TARHCJWP\" defer=\"\"></script> <!-- / Fathom -->\\n\\n<script type=\"text/javascript\">window.$crisp=[];window.CRISP_WEBSITE_ID=\"b2b796c3-5a4b-4de3-9e28-3a30e588e5e0\";(function(){d=document;s=d.createElement(\"script\");s.src=\"https://client.crisp.chat/l.js\";s.async=1;d.getElementsByTagName(\"head\")[0].appendChild(s);})();</script>\\n\\n<script src=\"https://cdn.paddle.com/paddle/v2/paddle.js\"></script>\\n<script type=\"text/javascript\">\\n  Paddle.Initialize({\\n    token: \\'live_8b96aff4edec7ce98bb2bd14c1a\\',\\n    checkout: {\\n      settings: {\\n        allowLogout: false,\\n        successUrl: \"https://chartdb.io/thank-you\"\\n      }\\n    },\\n    eventCallback: function (data) {\\n      if (data.name == \"checkout.loaded\") {\\n        Paddle.Spinner.hide();\\n      };\\n    }\\n  });\\n\\n  function getQueryParams() {\\n    const params = new URLSearchParams(window.location.search);\\n    return {\\n      plan: params.get(\\'plan\\'),\\n      email: params.get(\\'email\\'),\\n      countryCode: params.get(\\'country_code\\'),\\n      discountCode: params.get(\\'discount_code\\'),\\n      quantity: params.get(\\'quantity\\')\\n    };\\n  }\\n\\n  const queryParams = getQueryParams();\\n  if ((queryParams.plan && queryParams.email) || queryParams.discountCode) {\\n    Paddle.Spinner.show();\\n  }\\n\\n  function defineCustomerInfo(email, countryCode) {\\n    const customerInfo = { email: email };\\n    if (countryCode) {\\n      customerInfo.address = { countryCode: countryCode };\\n    }\\n    return customerInfo;\\n  }\\n\\n  function openCheckout(planType, email, countryCode, discountCode) {\\n    const priceIds = {\\n      pro: \"pri_01jmexaa0vm6tx5wvayz82hq6m\",\\n      lite_monthly: \"pri_01js2bge7gz176b723vyg24tmv\",\\n      lite_yearly: \"pri_01js2bh110r7zhpgek00w5enjb\",\\n      pro_monthly: \"pri_01jmexaa0vm6tx5wvayz82hq6m\",\\n      pro_yearly: \"pri_01jmex94b223bfcrtcqe0b1qx8\",\\n      team_monthly: \"pri_01jmexd552fj32pteqdz3cw5n6\",\\n      team_yearly: \"pri_01jmexc4ty222hscrb4qfvwndt\",\\n      team_yearly_unlimited: \"pri_01jq6dtbeqtat9bhznzjp9xvmb\",\\n    };\\n\\n    const priceId = priceIds[planType];\\n\\n    if (!priceId) {\\n      return;\\n    }\\n\\n    let discountCodeToShow = discountCode;\\n    if (planType === \"team_monthly\" || planType === \"team\") {\\n      discountCodeToShow = \\'LIMITEDTIME\\';\\n    } if (planType === \"lite_monthly\") {\\n      discountCodeToShow = \\'FIRST100\\';\\n    }\\n\\n    const customerInfo = email ? defineCustomerInfo(email, countryCode) : undefined;\\n    const quantity = queryParams.quantity ? parseInt(queryParams.quantity) : 1;\\n    Paddle.Checkout.open({\\n      items: [{ priceId, quantity: quantity }],\\n      customer: customerInfo,\\n      discountCode: discountCodeToShow ? discountCodeToShow : undefined,\\n    });\\n  }\\n\\n  function addButtonListener(selector, planType, email, countryCode, discountCode) {\\n    const button = document.querySelector(selector);\\n    if (button && !button.dataset.listenerAdded) {\\n      const handleEvent = () => {\\n        openCheckout(planType, email, countryCode, discountCode);\\n      };\\n\\n      button.addEventListener(\"click\", handleEvent);\\n      button.addEventListener(\"touchstart\", handleEvent, { passive: true });\\n      button.dataset.listenerAdded = true;\\n    }\\n  }\\n\\n  function retryAddingListeners(queryParams, attempts = 10, interval = 500) {\\n    const plans = [\\'lite_monthly\\', \\'lite_yearly\\', \\'pro_monthly\\', \\'pro_yearly\\', \\'team_monthly\\', \\'team_yearly\\'];\\n    const selectors = [];\\n\\n    plans.forEach(plan => {\\n      selectors.push({ selector: `[data-framer-name=\"${plan}\"]`, planType: plan });\\n    });\\n\\n    const intervalId = setInterval(() => {\\n      selectors.forEach(({ selector, planType }) => {\\n        addButtonListener(selector, planType, queryParams.email, queryParams.countryCode, queryParams.discountCode);\\n      });\\n\\n      attempts--;\\n      if (attempts <= 0) {\\n        clearInterval(intervalId);\\n      }\\n    }, interval);\\n  }\\n\\n  function monitorButtons(queryParams) {\\n    const observer = new MutationObserver((mutations) => {\\n      mutations.forEach((mutation) => {\\n        const addedNodes = Array.from(mutation.addedNodes);\\n        addedNodes.forEach((node) => {\\n          if (node.nodeType === Node.ELEMENT_NODE) {\\n            const plans = [\\'lite_monthly\\', \\'lite_yearly\\', \\'pro_monthly\\', \\'pro_yearly\\', \\'team_monthly\\', \\'team_yearly\\'];\\n            plans.forEach(plan => {\\n              addButtonListener(`[data-framer-name=\"${plan}\"]`, plan, queryParams.email, queryParams.countryCode, queryParams.discountCode);\\n            });\\n          }\\n        });\\n      });\\n    });\\n\\n    observer.observe(document.body, { childList: true, subtree: true });\\n  }\\n\\n  document.addEventListener(\"DOMContentLoaded\", function () {\\n    const queryParams = getQueryParams();\\n    if (queryParams.plan && queryParams.email) {\\n      Paddle.Spinner.show();\\n\\n      openCheckout(queryParams.plan, queryParams.email, queryParams.countryCode, queryParams.discountCode);\\n    } else if (queryParams.discountCode) {\\n      openCheckout(\\'team_monthly\\', null, null, queryParams.discountCode);\\n    } else {\\n      console.log(\"No valid plan or email.\");\\n    }\\n\\n    retryAddingListeners(queryParams);\\n    monitorButtons(queryParams);\\n  });\\n</script>',description:\"Free and Open-source database diagrams editor, visualize and design your database with a single query. \\nTool to help you draw your DB relationship diagrams and export DDL scripts.\",favicon:\"https://framerusercontent.com/assets/SSN4pchODCTPuA94fNGU6D6o.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/Y0yymofljzoYgBpihcLcPmlpVw.png\",title:\"ChartDB - Database schema diagrams visualizer\"};}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,YAAuwK,YAAY;AAAA,6EAAuL,QAAQ,oEAAoE,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,+CAA+C,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
