mirror of
https://github.com/langchain-ai/docs.git
synced 2026-07-22 20:35:34 -04:00
320 lines
8.6 KiB
HTML
320 lines
8.6 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block analytics %}
|
|
<!-- Google Tag Manager -->
|
|
<script>(function (w, d, s, l, i) {
|
|
w[l] = w[l] || []; w[l].push({
|
|
'gtm.start':
|
|
new Date().getTime(), event: 'gtm.js'
|
|
}); var f = d.getElementsByTagName(s)[0],
|
|
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
|
|
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
|
|
})(window, document, 'script', 'dataLayer', 'GTM-MBBX68ST');</script>
|
|
<!-- End Google Tag Manager -->
|
|
<!-- CookieYes Banner -->
|
|
<!-- (Added functionality for instant nav support) -->
|
|
<script>
|
|
(function() {
|
|
// === DEBUG MODE ===
|
|
var CKY_DEBUG = false;
|
|
|
|
function log(msg, data) {
|
|
if (CKY_DEBUG) {
|
|
var prefix = '[CookieYes Debug]';
|
|
if (data !== undefined) {
|
|
console.log(prefix, msg, data);
|
|
} else {
|
|
console.log(prefix, msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
var ckyStylesBackup = null;
|
|
|
|
// Load CookieYes script on initial page load
|
|
function loadCookieYes() {
|
|
if (!document.getElementById('cookieyes')) {
|
|
log('Loading CookieYes script...');
|
|
var script = document.createElement('script');
|
|
script.id = 'cookieyes';
|
|
script.type = 'text/javascript';
|
|
script.src = 'https://cdn-cookieyes.com/client_data/d2e859934c4309be824ea8bb/script.js';
|
|
document.head.appendChild(script);
|
|
} else {
|
|
log('CookieYes script already exists, skipping load');
|
|
}
|
|
}
|
|
|
|
// Watch for CookieYes styles to be added and back them up
|
|
var observer = new MutationObserver(function(mutations) {
|
|
var ckyStyle = document.getElementById('cky-style');
|
|
if (ckyStyle && !ckyStylesBackup) {
|
|
ckyStylesBackup = ckyStyle.innerHTML;
|
|
log('Captured CookieYes styles, length:', ckyStylesBackup.length + ' chars');
|
|
}
|
|
});
|
|
observer.observe(document.head, { childList: true });
|
|
|
|
// Restore CookieYes styles after instant navigation if missing
|
|
function restoreCkyStyles() {
|
|
var ckyStyle = document.getElementById('cky-style');
|
|
var bannerExists = document.querySelector('.cky-consent-container, .cky-btn-revisit-wrapper');
|
|
|
|
log('Navigation detected - checking styles...', {
|
|
stylesExist: !!ckyStyle,
|
|
bannerExists: !!bannerExists,
|
|
backupAvailable: !!ckyStylesBackup
|
|
});
|
|
|
|
if (!ckyStyle && ckyStylesBackup) {
|
|
var style = document.createElement('style');
|
|
style.id = 'cky-style';
|
|
style.innerHTML = ckyStylesBackup;
|
|
document.head.appendChild(style);
|
|
log('Restored CookieYes styles successfully');
|
|
} else if (ckyStyle) {
|
|
log('Styles already present, no restore needed');
|
|
} else if (!ckyStylesBackup) {
|
|
log('WARNING: No backup available to restore!');
|
|
}
|
|
}
|
|
|
|
// Initial load
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
log('DOMContentLoaded fired');
|
|
loadCookieYes();
|
|
});
|
|
|
|
// Subscribe to MkDocs Material's document$ observable for instant navigation
|
|
// document$ is available after the theme's JS loads
|
|
var checkCount = 0;
|
|
var checkInterval = setInterval(function() {
|
|
checkCount++;
|
|
if (typeof document$ !== 'undefined') {
|
|
clearInterval(checkInterval);
|
|
log('Found document$ observable after ' + checkCount + ' checks');
|
|
document$.subscribe(function() {
|
|
log('document$ emitted (page navigation/load)');
|
|
restoreCkyStyles();
|
|
});
|
|
}
|
|
}, 100);
|
|
|
|
// Fallback: stop checking after 10 seconds
|
|
setTimeout(function() {
|
|
if (checkInterval) {
|
|
clearInterval(checkInterval);
|
|
log('WARNING: document$ not found after 10 seconds - instant nav support disabled');
|
|
}
|
|
}, 10000);
|
|
|
|
// Expose debug helpers to window for console access
|
|
window.__ckyDebug = {
|
|
getBackup: function() { return ckyStylesBackup; },
|
|
getBackupLength: function() { return ckyStylesBackup ? ckyStylesBackup.length : 0; },
|
|
checkStyles: function() {
|
|
var ckyStyle = document.getElementById('cky-style');
|
|
var banner = document.querySelector('.cky-consent-container, .cky-btn-revisit-wrapper');
|
|
return {
|
|
stylesInDOM: !!ckyStyle,
|
|
stylesLength: ckyStyle ? ckyStyle.innerHTML.length : 0,
|
|
bannerInDOM: !!banner,
|
|
backupLength: ckyStylesBackup ? ckyStylesBackup.length : 0
|
|
};
|
|
},
|
|
forceRestore: function() {
|
|
restoreCkyStyles();
|
|
}
|
|
};
|
|
log('Debug helpers available at window.__ckyDebug');
|
|
})();
|
|
</script>
|
|
{% endblock %}
|
|
|
|
{# {% block announce %}
|
|
x
|
|
{% endblock %} #}
|
|
|
|
{% block extrahead %}
|
|
<style>
|
|
@import url("https://fonts.googleapis.com/css2?family=Public+Sans&display=swap");
|
|
:root {
|
|
--md-primary-fg-color: #333333;
|
|
--md-accent-fg-color: #1E88E5;
|
|
--md-default-bg-color: #FFFFFF;
|
|
--md-default-fg-color: #333333;
|
|
--md-text-font-family: "Public Sans", sans-serif;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--md-text-font-family);
|
|
background-color: var(--md-default-bg-color);
|
|
color: var(--md-default-fg-color);
|
|
}
|
|
|
|
.md-main {
|
|
background-color: #FFFFFF;
|
|
}
|
|
|
|
.md-footer {
|
|
background-color: #F5F5F5;
|
|
color: #666666;
|
|
}
|
|
|
|
.md-footer-meta {
|
|
background-color: #4d4d4d;
|
|
}
|
|
|
|
.md-typeset a {
|
|
color: #1E88E5;
|
|
}
|
|
|
|
.md-typeset a:hover {
|
|
color: #1565C0;
|
|
}
|
|
|
|
.md-nav__link--active,
|
|
.md-nav__link:active {
|
|
color: #1E88E5;
|
|
}
|
|
|
|
.md-search__input {
|
|
background-color: #F5F5F5;
|
|
color: #333333;
|
|
}
|
|
|
|
.md-search__input:hover,
|
|
.md-search__input:focus {
|
|
background-color: #EEEEEE;
|
|
}
|
|
/* Table of contents styles */
|
|
.md-nav--secondary .md-nav__item--active > .md-nav__link {
|
|
font-weight: bold;
|
|
color: var(--md-primary-fg-color);
|
|
}
|
|
|
|
.md-nav--secondary .md-nav__item--nested > .md-nav__link {
|
|
font-weight: normal;
|
|
color: var(--md-default-fg-color);
|
|
}
|
|
|
|
.md-nav--secondary .md-nav__item--nested > .md-nav__link::before {
|
|
content: "";
|
|
display: inline-block;
|
|
width: 6px;
|
|
height: 6px;
|
|
background-color: var(--md-default-fg-color);
|
|
border-radius: 50%;
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] {
|
|
--md-default-bg-color: #1E1E1E;
|
|
--md-default-fg-color: #FFFFFF;
|
|
--md-accent-fg-color: #64B5F6;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-main {
|
|
background-color: #1E1E1E;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .navbar {
|
|
background-color: #1E1E1E;
|
|
color: #FFFFFF;
|
|
box-shadow: none;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-footer {
|
|
background-color: #1E1E1E;
|
|
color: #BDBDBD;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-header {
|
|
background-color: #1E1E1E;
|
|
color: #BDBDBD;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-tabs {
|
|
background-color: #1E1E1E;
|
|
color: #BDBDBD;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-search__input {
|
|
background-color: #F5F5F5;
|
|
color: #333333;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-search__icon {
|
|
color: #333333;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-search__input::placeholder {
|
|
color: #333333;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-footer-meta {
|
|
background-color: #4d4d4d;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-typeset a {
|
|
color: #64B5F6;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-typeset a:hover {
|
|
color: #90CAF9;
|
|
}
|
|
|
|
[data-md-color-scheme=default] .logo-dark {
|
|
display: none !important;
|
|
}
|
|
|
|
[data-md-color-scheme=slate] .logo-light {
|
|
display: none !important;
|
|
}
|
|
|
|
.md-banner {
|
|
background-color: #FFAE42;
|
|
color: #000000;
|
|
}
|
|
|
|
.md-banner a {
|
|
color: #000000;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.md-banner a:hover {
|
|
color: #000000;
|
|
}
|
|
|
|
.md-header__title {
|
|
visibility: hidden;
|
|
}
|
|
|
|
/* Dark mode banner styling */
|
|
[data-md-color-scheme="slate"] .md-banner {
|
|
background-color: #CFC9FA; /* Same light purple for both modes */
|
|
color: #000000;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-banner a {
|
|
color: #000000;
|
|
}
|
|
|
|
[data-md-color-scheme="slate"] .md-banner a:hover {
|
|
color: #000000;
|
|
}
|
|
|
|
</style>
|
|
{% endblock %}
|
|
|
|
|
|
{% block htmltitle %}
|
|
{% if page.meta and page.meta.title %}
|
|
<title>{{ page.meta.title }} | {{ config.site_name }}</title>
|
|
{% elif page.title and not page.is_homepage %}
|
|
<title>{{ page.title | striptags }} | {{ config.site_name }}</title>
|
|
{% else %}
|
|
<title>{{ config.site_name }}</title>
|
|
{% endif %}
|
|
{% endblock %}
|