sourcey 3.6.3 → 3.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,15 +11,15 @@
11
11
  // ── Language Dropdown ──────────────────────────────────────────────
12
12
 
13
13
  // Toggle dropdown open/close
14
- document.addEventListener('click', function (e) {
15
- var trigger = e.target.closest('.code-lang-trigger');
14
+ document.addEventListener("click", function (e) {
15
+ var trigger = e.target.closest(".code-lang-trigger");
16
16
 
17
17
  // Close all open dropdowns first
18
- document.querySelectorAll('.code-lang-menu').forEach(function (menu) {
18
+ document.querySelectorAll(".code-lang-menu").forEach(function (menu) {
19
19
  if (!trigger || !menu.parentElement.contains(trigger)) {
20
- menu.classList.add('hidden');
21
- var btn = menu.parentElement.querySelector('.code-lang-trigger');
22
- if (btn) btn.setAttribute('aria-expanded', 'false');
20
+ closeMenu(menu);
21
+ var btn = menu.parentElement.querySelector(".code-lang-trigger");
22
+ if (btn) btn.setAttribute("aria-expanded", "false");
23
23
  }
24
24
  });
25
25
 
@@ -29,26 +29,31 @@
29
29
  var menu = trigger.nextElementSibling;
30
30
  if (!menu) return;
31
31
 
32
- var isOpen = !menu.classList.contains('hidden');
33
- menu.classList.toggle('hidden', isOpen);
34
- trigger.setAttribute('aria-expanded', isOpen ? 'false' : 'true');
32
+ var isOpen = !menu.classList.contains("hidden");
33
+ if (isOpen) {
34
+ closeMenu(menu);
35
+ } else {
36
+ menu.classList.remove("hidden");
37
+ positionMenu(trigger, menu);
38
+ }
39
+ trigger.setAttribute("aria-expanded", isOpen ? "false" : "true");
35
40
  });
36
41
 
37
42
  // Select a language / example variant from the dropdown
38
- document.addEventListener('click', function (e) {
39
- var option = e.target.closest('.code-lang-option');
43
+ document.addEventListener("click", function (e) {
44
+ var option = e.target.closest(".code-lang-option");
40
45
  if (!option) return;
41
46
 
42
- var dropdown = option.closest('.code-lang-dropdown');
43
- var canSync = !!(dropdown && dropdown.hasAttribute('data-lang-sync'));
47
+ var dropdown = option.closest(".code-lang-dropdown");
48
+ var canSync = !!(dropdown && dropdown.hasAttribute("data-lang-sync"));
44
49
  var lang = option.textContent.trim();
45
50
 
46
51
  // Close the menu
47
- var menu = option.closest('.code-lang-menu');
52
+ var menu = option.closest(".code-lang-menu");
48
53
  if (menu) {
49
- menu.classList.add('hidden');
50
- var trigger = menu.parentElement.querySelector('.code-lang-trigger');
51
- if (trigger) trigger.setAttribute('aria-expanded', 'false');
54
+ closeMenu(menu);
55
+ var trigger = menu.parentElement.querySelector(".code-lang-trigger");
56
+ if (trigger) trigger.setAttribute("aria-expanded", "false");
52
57
  }
53
58
 
54
59
  var scrollY = window.scrollY;
@@ -57,10 +62,11 @@
57
62
  // Sync language across code-sample groups only (not example variants).
58
63
  if (canSync && lang !== selectedLang) {
59
64
  selectedLang = lang;
60
- var ownGroup = option.closest('.code-group');
61
- document.querySelectorAll('.code-group').forEach(function (group) {
62
- if (group === ownGroup || !group.querySelector('.code-lang-dropdown[data-lang-sync]')) return;
63
- group.querySelectorAll('.code-lang-option').forEach(function (opt) {
65
+ var ownGroup = option.closest(".code-group");
66
+ document.querySelectorAll(".code-group").forEach(function (group) {
67
+ if (group === ownGroup || !group.querySelector(".code-lang-dropdown[data-lang-sync]"))
68
+ return;
69
+ group.querySelectorAll(".code-lang-option").forEach(function (opt) {
64
70
  if (opt.textContent.trim() === lang) activateLang(opt);
65
71
  });
66
72
  });
@@ -69,78 +75,115 @@
69
75
  window.scrollTo(0, scrollY);
70
76
  });
71
77
 
78
+ function closeMenu(menu) {
79
+ menu.classList.add("hidden");
80
+ menu.style.position = "";
81
+ menu.style.top = "";
82
+ menu.style.right = "";
83
+ menu.style.bottom = "";
84
+ menu.style.maxHeight = "";
85
+ }
86
+
87
+ function positionMenu(trigger, menu) {
88
+ var rect = trigger.getBoundingClientRect();
89
+ var gap = 4;
90
+ var viewportPadding = 8;
91
+ var below = window.innerHeight - rect.bottom - viewportPadding;
92
+ var above = rect.top - viewportPadding;
93
+ var openUp = below < 160 && above > below;
94
+
95
+ menu.style.position = "fixed";
96
+ menu.style.right = Math.max(viewportPadding, window.innerWidth - rect.right) + "px";
97
+ menu.style.maxHeight = Math.max(96, Math.floor((openUp ? above : below) - gap)) + "px";
98
+
99
+ if (openUp) {
100
+ menu.style.top = "";
101
+ menu.style.bottom = Math.max(viewportPadding, window.innerHeight - rect.top + gap) + "px";
102
+ } else {
103
+ menu.style.bottom = "";
104
+ menu.style.top = Math.min(window.innerHeight - viewportPadding, rect.bottom + gap) + "px";
105
+ }
106
+ }
107
+
72
108
  // The panels a dropdown controls. A header variant dropdown (in the shared
73
109
  // card header) drives the matching response status panel; otherwise panels
74
110
  // live in the dropdown's own `.code-lang-scope` or `.code-group`.
75
111
  function panelScopeForOption(option) {
76
- var headerWrap = option.closest('[data-response-dropdown]');
112
+ var headerWrap = option.closest("[data-response-dropdown]");
77
113
  if (headerWrap) {
78
- var idx = headerWrap.getAttribute('data-response-dropdown');
79
- var group = headerWrap.closest('.code-group');
80
- var panel = group && group.querySelector('.response-panel[data-response-panel="' + idx + '"]');
114
+ var idx = headerWrap.getAttribute("data-response-dropdown");
115
+ var group = headerWrap.closest(".code-group");
116
+ var panel =
117
+ group && group.querySelector('.response-panel[data-response-panel="' + idx + '"]');
81
118
  if (panel) return panel;
82
119
  }
83
- return option.closest('.code-lang-scope') || option.closest('.code-group');
120
+ return option.closest(".code-lang-scope") || option.closest(".code-group");
84
121
  }
85
122
 
86
123
  function activateLang(option) {
87
- var dropdown = option.closest('.code-lang-dropdown');
124
+ var dropdown = option.closest(".code-lang-dropdown");
88
125
  var scope = panelScopeForOption(option);
89
- var index = option.getAttribute('data-lang-index');
126
+ var index = option.getAttribute("data-lang-index");
90
127
 
91
128
  // Update the dropdown label + options (label/trigger live in the dropdown,
92
129
  // which for a header variant switcher is separate from the panel scope).
93
130
  if (dropdown) {
94
- var label = dropdown.querySelector('.code-lang-label');
95
- dropdown.querySelectorAll('.code-lang-option').forEach(function (opt) {
96
- var isActive = opt.getAttribute('data-lang-index') === index;
97
- opt.setAttribute('aria-selected', isActive ? 'true' : 'false');
98
- opt.className = opt.className.replace(/(dark:)?text-\[rgb\([^\]]+\)\]/g, '').trim();
131
+ var label = dropdown.querySelector(".code-lang-label");
132
+ dropdown.querySelectorAll(".code-lang-option").forEach(function (opt) {
133
+ var isActive = opt.getAttribute("data-lang-index") === index;
134
+ opt.setAttribute("aria-selected", isActive ? "true" : "false");
135
+ opt.className = opt.className.replace(/(dark:)?text-\[rgb\([^\]]+\)\]/g, "").trim();
99
136
  if (isActive) {
100
- opt.classList.add('text-[rgb(var(--color-primary))]', 'dark:text-[rgb(var(--color-primary-light))]');
137
+ opt.classList.add(
138
+ "text-[rgb(var(--color-primary))]",
139
+ "dark:text-[rgb(var(--color-primary-light))]",
140
+ );
101
141
  if (label) label.textContent = opt.textContent.trim();
102
- var triggerIcon = dropdown.querySelector('.code-lang-trigger .code-lang-icon');
103
- var optIcon = opt.querySelector('.lang-icon');
142
+ var triggerIcon = dropdown.querySelector(".code-lang-trigger .code-lang-icon");
143
+ var optIcon = opt.querySelector(".lang-icon");
104
144
  if (triggerIcon && optIcon) triggerIcon.innerHTML = optIcon.outerHTML;
105
145
  } else {
106
- opt.classList.add('text-[rgb(var(--color-stone-600))]', 'dark:text-[rgb(var(--color-stone-400))]');
146
+ opt.classList.add(
147
+ "text-[rgb(var(--color-stone-600))]",
148
+ "dark:text-[rgb(var(--color-stone-400))]",
149
+ );
107
150
  }
108
151
  });
109
152
  }
110
153
 
111
154
  // Update panels within the controlled scope.
112
155
  if (scope) {
113
- scope.querySelectorAll('.code-lang-panel').forEach(function (p) {
114
- p.classList.toggle('active', p.getAttribute('data-lang-panel') === index);
156
+ scope.querySelectorAll(".code-lang-panel").forEach(function (p) {
157
+ p.classList.toggle("active", p.getAttribute("data-lang-panel") === index);
115
158
  });
116
159
  }
117
160
  }
118
161
 
119
162
  // ── Response Tabs ──────────────────────────────────────────────────
120
163
 
121
- document.addEventListener('click', function (e) {
122
- var tab = e.target.closest('.response-tab');
164
+ document.addEventListener("click", function (e) {
165
+ var tab = e.target.closest(".response-tab");
123
166
  if (!tab) return;
124
167
 
125
- var container = tab.closest('.response-tabs');
126
- var index = tab.getAttribute('data-response-index');
168
+ var container = tab.closest(".response-tabs");
169
+ var index = tab.getAttribute("data-response-index");
127
170
  var scrollY = window.scrollY;
128
171
 
129
172
  // Update tabs
130
- container.querySelectorAll('.response-tab').forEach(function (t) {
131
- var isActive = t.getAttribute('data-response-index') === index;
132
- t.classList.toggle('active', isActive);
133
- t.setAttribute('aria-selected', isActive ? 'true' : 'false');
173
+ container.querySelectorAll(".response-tab").forEach(function (t) {
174
+ var isActive = t.getAttribute("data-response-index") === index;
175
+ t.classList.toggle("active", isActive);
176
+ t.setAttribute("aria-selected", isActive ? "true" : "false");
134
177
  });
135
178
 
136
179
  // Update panels
137
- container.querySelectorAll('.response-panel').forEach(function (p) {
138
- p.classList.toggle('active', p.getAttribute('data-response-panel') === index);
180
+ container.querySelectorAll(".response-panel").forEach(function (p) {
181
+ p.classList.toggle("active", p.getAttribute("data-response-panel") === index);
139
182
  });
140
183
 
141
184
  // Show only the active status's variant switcher in the header.
142
- container.querySelectorAll('[data-response-dropdown]').forEach(function (d) {
143
- d.classList.toggle('hidden', d.getAttribute('data-response-dropdown') !== index);
185
+ container.querySelectorAll("[data-response-dropdown]").forEach(function (d) {
186
+ d.classList.toggle("hidden", d.getAttribute("data-response-dropdown") !== index);
144
187
  });
145
188
 
146
189
  window.scrollTo(0, scrollY);
@@ -148,35 +191,37 @@
148
191
 
149
192
  // ── Copy Button ────────────────────────────────────────────────────
150
193
 
151
- document.addEventListener('click', function (e) {
152
- var btn = e.target.closest('.copy-btn');
194
+ document.addEventListener("click", function (e) {
195
+ var btn = e.target.closest(".copy-btn");
153
196
  if (!btn) return;
154
197
 
155
- var container = btn.closest('.code-group') || btn.closest('.prose-code-block');
198
+ var container = btn.closest(".code-group") || btn.closest(".prose-code-block");
156
199
  if (!container) return;
157
200
 
158
201
  // Find the active panel's code, or the nearest code element. With nested
159
202
  // panels (a variant switcher inside a response tab), prefer the deepest
160
203
  // active panel, which is last in document order.
161
- var activePanels = container.querySelectorAll('.code-lang-panel.active, .response-panel.active');
204
+ var activePanels = container.querySelectorAll(
205
+ ".code-lang-panel.active, .response-panel.active",
206
+ );
162
207
  var activePanel = activePanels.length ? activePanels[activePanels.length - 1] : null;
163
208
  var codeEl = activePanel
164
- ? activePanel.querySelector('code, .code-block, .font-mono')
165
- : container.querySelector('code, .code-block, .font-mono');
209
+ ? activePanel.querySelector("code, .code-block, .font-mono")
210
+ : container.querySelector("code, .code-block, .font-mono");
166
211
 
167
212
  if (!codeEl) return;
168
213
 
169
- var text = codeEl.textContent || '';
214
+ var text = codeEl.textContent || "";
170
215
  navigator.clipboard.writeText(text).then(function () {
171
- btn.classList.add('copied');
216
+ btn.classList.add("copied");
172
217
  var tooltip = btn.nextElementSibling;
173
- if (tooltip && tooltip.classList.contains('copy-tooltip')) {
174
- tooltip.textContent = 'Copied!';
218
+ if (tooltip && tooltip.classList.contains("copy-tooltip")) {
219
+ tooltip.textContent = "Copied!";
175
220
  }
176
221
  setTimeout(function () {
177
- btn.classList.remove('copied');
178
- if (tooltip && tooltip.classList.contains('copy-tooltip')) {
179
- tooltip.textContent = 'Copy';
222
+ btn.classList.remove("copied");
223
+ if (tooltip && tooltip.classList.contains("copy-tooltip")) {
224
+ tooltip.textContent = "Copy";
180
225
  }
181
226
  }, 2000);
182
227
  });
@@ -185,64 +230,68 @@
185
230
  // ── Rust Doctest Hidden-Line Toggle ──────────────────────────────
186
231
  // (Copy is handled by the shared .copy-btn inside each code block.)
187
232
 
188
- document.addEventListener('click', function (e) {
189
- var toggleBtn = e.target.closest('.rust-doctest-toggle-hidden');
233
+ document.addEventListener("click", function (e) {
234
+ var toggleBtn = e.target.closest(".rust-doctest-toggle-hidden");
190
235
  if (!toggleBtn) return;
191
- var fullSel = toggleBtn.getAttribute('data-target');
192
- var displaySel = toggleBtn.getAttribute('data-display');
193
- var fullEl = fullSel ? document.getElementById(fullSel.replace(/^#/, '')) : null;
194
- var displayEl = displaySel ? document.getElementById(displaySel.replace(/^#/, '')) : null;
236
+ var fullSel = toggleBtn.getAttribute("data-target");
237
+ var displaySel = toggleBtn.getAttribute("data-display");
238
+ var fullEl = fullSel ? document.getElementById(fullSel.replace(/^#/, "")) : null;
239
+ var displayEl = displaySel ? document.getElementById(displaySel.replace(/^#/, "")) : null;
195
240
  if (!fullEl || !displayEl) return;
196
- var fullHidden = fullEl.hasAttribute('hidden');
241
+ var fullHidden = fullEl.hasAttribute("hidden");
197
242
  if (fullHidden) {
198
- fullEl.removeAttribute('hidden');
199
- displayEl.setAttribute('hidden', '');
200
- toggleBtn.textContent = 'Hide hidden lines';
243
+ fullEl.removeAttribute("hidden");
244
+ displayEl.setAttribute("hidden", "");
245
+ toggleBtn.textContent = "Hide hidden lines";
201
246
  } else {
202
- fullEl.setAttribute('hidden', '');
203
- displayEl.removeAttribute('hidden');
204
- toggleBtn.textContent = 'Show hidden lines';
247
+ fullEl.setAttribute("hidden", "");
248
+ displayEl.removeAttribute("hidden");
249
+ toggleBtn.textContent = "Show hidden lines";
205
250
  }
206
251
  });
207
252
 
208
253
  // Close dropdowns on Escape
209
- document.addEventListener('keydown', function (e) {
210
- if (e.key === 'Escape') {
211
- document.querySelectorAll('.code-lang-menu').forEach(function (menu) {
212
- menu.classList.add('hidden');
213
- var btn = menu.parentElement.querySelector('.code-lang-trigger');
214
- if (btn) btn.setAttribute('aria-expanded', 'false');
254
+ document.addEventListener("keydown", function (e) {
255
+ if (e.key === "Escape") {
256
+ document.querySelectorAll(".code-lang-menu").forEach(function (menu) {
257
+ menu.classList.add("hidden");
258
+ var btn = menu.parentElement.querySelector(".code-lang-trigger");
259
+ if (btn) btn.setAttribute("aria-expanded", "false");
215
260
  });
216
261
  }
217
262
  });
218
263
 
219
264
  // ── Directive Tabs (:::tabs and :::code-group) ────────────────────
220
265
 
221
- document.addEventListener('click', function (e) {
222
- var tab = e.target.closest('.directive-tab');
266
+ document.addEventListener("click", function (e) {
267
+ var tab = e.target.closest(".directive-tab");
223
268
  if (!tab) return;
224
269
 
225
- var group = tab.getAttribute('data-tab-group');
226
- var index = tab.getAttribute('data-tab-index');
270
+ var group = tab.getAttribute("data-tab-group");
271
+ var index = tab.getAttribute("data-tab-index");
227
272
  var scrollY = window.scrollY;
228
273
 
229
274
  // Update tab buttons
230
- document.querySelectorAll('.directive-tab[data-tab-group="' + group + '"]').forEach(function (t) {
231
- t.classList.toggle('active', t.getAttribute('data-tab-index') === index);
232
- });
275
+ document
276
+ .querySelectorAll('.directive-tab[data-tab-group="' + group + '"]')
277
+ .forEach(function (t) {
278
+ t.classList.toggle("active", t.getAttribute("data-tab-index") === index);
279
+ });
233
280
 
234
281
  // Update panels
235
- document.querySelectorAll('.directive-tab-panel[data-tab-group="' + group + '"]').forEach(function (p) {
236
- p.classList.toggle('active', p.getAttribute('data-tab-index') === index);
237
- });
282
+ document
283
+ .querySelectorAll('.directive-tab-panel[data-tab-group="' + group + '"]')
284
+ .forEach(function (p) {
285
+ p.classList.toggle("active", p.getAttribute("data-tab-index") === index);
286
+ });
238
287
 
239
288
  window.scrollTo(0, scrollY);
240
289
  });
241
290
  }
242
291
 
243
- if ('requestIdleCallback' in window) {
292
+ if ("requestIdleCallback" in window) {
244
293
  window.requestIdleCallback(init, { timeout: 250 });
245
294
  } else {
246
- window.addEventListener('load', init, { once: true });
295
+ window.addEventListener("load", init, { once: true });
247
296
  }
248
297
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Sidebar.tsx"],"names":[],"mappings":"AA+FA;;GAEG;AACH,wBAAgB,OAAO,wCA2GtB"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Sidebar.tsx"],"names":[],"mappings":"AAsGA;;GAEG;AACH,wBAAgB,OAAO,wCA2GtB"}
@@ -32,7 +32,7 @@ function MethodPill({ method }) {
32
32
  * Shared nav group rendering used by both desktop sidebar and mobile drawer.
33
33
  */
34
34
  function NavGroups({ groups, activePageSlug, base }) {
35
- return (_jsx(_Fragment, { children: groups.map((group, gi) => (_jsxs("div", { class: gi > 0 ? "mt-6 lg:mt-8" : "", children: [group.label && (_jsx("h5", { class: "nav-group-label", children: group.label })), _jsx("ul", { class: "space-y-px", children: group.items.map((item) => {
35
+ return (_jsx(_Fragment, { children: groups.map((group, gi) => (_jsxs("div", { class: gi > 0 ? "mt-6 lg:mt-8" : "", children: [group.label && (group.href ? (_jsx("a", { href: `${base}${group.href}`, class: `nav-group-label nav-group-link${group.id === activePageSlug ? " active" : ""}`, children: group.label })) : (_jsx("h5", { class: "nav-group-label", children: group.label }))), _jsx("ul", { class: "space-y-px", children: group.items.map((item) => {
36
36
  const isActive = item.id === activePageSlug;
37
37
  return (_jsx("li", { children: _jsxs("a", { href: `${base}${item.href}`, class: `nav-link${isActive ? " active" : ""}`, children: [item.method && _jsx(MethodPill, { method: item.method }), _jsx("span", { class: "flex-1 break-words [word-break:break-word]", children: item.label })] }) }, item.id));
38
38
  }) })] }, group.label))) }));
@@ -26,7 +26,7 @@ export function Operation({ operation: op, serverUrl }) {
26
26
  const hasParams = op.parameters.length > 0;
27
27
  const hasBody = !!op.requestBody;
28
28
  const mcp = op.mcpExtras;
29
- return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description && (_jsx(Markdown, { content: op.description, class: "mb-6" })), hasBody && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { meta: bodyMediaType(op.requestBody), children: "Body" }), _jsx(RequestBody, { body: op.requestBody })] })), hasParams && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Parameters" }), _jsx(Parameters, { parameters: op.parameters })] })), mcp ? (_jsx(McpReturnsCopy, { schema: mcp.outputSchema })) : (op.responses.length > 0 && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Response" }), _jsx(ResponsesCopy, { responses: op.responses })] }))), !mcp && _jsx(SecurityCopy, { security: op.security })] }), _jsxs("aside", { class: `hidden ${apiFirst ? "lg:block" : "xl:block"} w-[28rem] shrink-0 sticky self-start overflow-y-auto space-y-4`, style: "top: calc(var(--header-height) + 2.5rem); max-height: calc(100vh - var(--header-height) - 5rem)", children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }), _jsxs("div", { class: `${apiFirst ? "lg:hidden" : "xl:hidden"} mt-8 space-y-4`, children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }));
29
+ return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description && (_jsx(Markdown, { content: op.description, class: "mb-6 max-w-none" })), hasBody && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { meta: bodyMediaType(op.requestBody), children: "Body" }), _jsx(RequestBody, { body: op.requestBody })] })), hasParams && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Parameters" }), _jsx(Parameters, { parameters: op.parameters })] })), mcp ? (_jsx(McpReturnsCopy, { schema: mcp.outputSchema })) : (op.responses.length > 0 && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Response" }), _jsx(ResponsesCopy, { responses: op.responses })] }))), !mcp && _jsx(SecurityCopy, { security: op.security })] }), _jsxs("aside", { class: `hidden ${apiFirst ? "lg:block" : "xl:block"} w-[28rem] shrink-0 sticky self-start overflow-y-auto space-y-4`, style: "top: calc(var(--header-height) + 2.5rem); max-height: calc(100vh - var(--header-height) - 5rem)", children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }), _jsxs("div", { class: `${apiFirst ? "lg:hidden" : "xl:hidden"} mt-8 space-y-4`, children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }));
30
30
  }
31
31
  function bodyMediaType(body) {
32
32
  const types = Object.keys(body.content);
@@ -11,6 +11,6 @@ export function Tags({ tags, serverUrl }) {
11
11
  .map((tag) => {
12
12
  const parents = tagLineage(tag, tagsByName);
13
13
  const displayName = tagDisplayName(tag);
14
- return (_jsxs("div", { class: tag.parent ? "mt-8" : "mt-12", children: [_jsxs("div", { id: `tag-${htmlId(tag.name)}`, "data-traverse-target": `tag-${htmlId(tag.name)}`, class: "mb-6", children: [parents.length > 0 && (_jsx("div", { class: "mb-2 text-xs font-medium uppercase tracking-[0.12em] text-[rgb(var(--color-gray-500))]", children: parents.map(tagDisplayName).join(" / ") })), _jsxs("div", { class: "mb-2 flex flex-wrap items-center gap-2", children: [_jsx("h1", { class: "text-xl font-bold text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))]", children: displayName }), tag.summary && tag.summary !== tag.name && (_jsx(Badge, { children: _jsx("code", { children: tag.name }) })), tag.kind && _jsx(Badge, { children: tag.kind })] }), tag.description && (_jsx(Markdown, { content: tag.description, class: "text-sm max-w-none" }))] }), tag.operations.map((op) => (_jsx(Operation, { operation: op, serverUrl: serverUrl }, `${op.method}-${op.path}`)))] }, tag.name));
14
+ return (_jsxs("div", { class: tag.parent ? "mt-8" : "mt-12", children: [_jsxs("div", { id: `tag-${htmlId(tag.name)}`, "data-traverse-target": `tag-${htmlId(tag.name)}`, class: "mb-6", children: [parents.length > 0 && (_jsx("div", { class: "mb-2 text-xs font-medium uppercase tracking-[0.12em] text-[rgb(var(--color-gray-500))]", children: parents.map(tagDisplayName).join(" / ") })), _jsxs("div", { class: "mb-2 flex flex-wrap items-center gap-2", children: [_jsx("h1", { class: "text-2xl sm:text-3xl font-bold tracking-tight text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))]", children: displayName }), tag.summary && tag.summary !== tag.name && (_jsx(Badge, { children: _jsx("code", { children: tag.name }) })), tag.kind && _jsx(Badge, { children: tag.kind })] }), tag.description && (_jsx(Markdown, { content: tag.description, class: "text-sm max-w-none" }))] }), tag.operations.map((op) => (_jsx(Operation, { operation: op, serverUrl: serverUrl }, `${op.method}-${op.path}`)))] }, tag.name));
15
15
  }) }));
16
16
  }
@@ -17,6 +17,10 @@ export interface SiteTab {
17
17
  }
18
18
  export interface SiteNavGroup {
19
19
  label: string;
20
+ /** Optional section link for generated groups such as OpenAPI tag intros. */
21
+ href?: string;
22
+ /** Unique ID for section-level active-state matching. */
23
+ id?: string;
20
24
  items: SiteNavItem[];
21
25
  }
22
26
  export interface SiteNavItem {
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,UAAkB,GAC7B,OAAO,CAiDT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,UAAU,GAAE,UAAkB,GAC7B,OAAO,CA8BT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CASnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,CAEhB"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,UAAkB,GAC7B,OAAO,CAuDT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,UAAU,GAAE,UAAkB,GAC7B,OAAO,CA8BT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CASnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,CAEhB"}
@@ -40,6 +40,7 @@ export function buildNavFromSpec(spec, tabSlug, prettyUrls = false) {
40
40
  for (const tag of spec.tags) {
41
41
  if (tag.hidden)
42
42
  continue;
43
+ const tagId = `tag-${htmlId(tag.name)}`;
43
44
  const items = tag.operations.map((op) => ({
44
45
  label: op.summary ?? `${op.method.toUpperCase()} ${op.path}`,
45
46
  href: `${basePath}#operation-${htmlId(op.path)}-${htmlId(op.method)}`,
@@ -48,7 +49,12 @@ export function buildNavFromSpec(spec, tabSlug, prettyUrls = false) {
48
49
  }));
49
50
  if (!items.length)
50
51
  continue;
51
- groups.push({ label: tagNavigationLabel(tag, tagsByName), items });
52
+ groups.push({
53
+ label: tagNavigationLabel(tag, tagsByName),
54
+ href: `${basePath}#${tagId}`,
55
+ id: tagId,
56
+ items,
57
+ });
52
58
  }
53
59
  // Models group
54
60
  const schemaNames = Object.keys(spec.schemas);
@@ -66,15 +66,15 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
66
66
 
67
67
  [[package]]
68
68
  name = "bitflags"
69
- version = "2.11.1"
69
+ version = "2.13.0"
70
70
  source = "registry+https://github.com/rust-lang/crates.io-index"
71
- checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
71
+ checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
72
72
 
73
73
  [[package]]
74
74
  name = "camino"
75
- version = "1.2.2"
75
+ version = "1.2.3"
76
76
  source = "registry+https://github.com/rust-lang/crates.io-index"
77
- checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
77
+ checksum = "b4ce8d3bd5823c7504d3f579f13e7b2f3da252fcb938c594d5680ee508bf846f"
78
78
  dependencies = [
79
79
  "serde_core",
80
80
  ]
@@ -180,9 +180,6 @@ name = "deranged"
180
180
  version = "0.5.8"
181
181
  source = "registry+https://github.com/rust-lang/crates.io-index"
182
182
  checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
183
- dependencies = [
184
- "powerfmt",
185
- ]
186
183
 
187
184
  [[package]]
188
185
  name = "equivalent"
@@ -245,9 +242,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
245
242
 
246
243
  [[package]]
247
244
  name = "memchr"
248
- version = "2.8.1"
245
+ version = "2.8.2"
249
246
  source = "registry+https://github.com/rust-lang/crates.io-index"
250
- checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
247
+ checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
251
248
 
252
249
  [[package]]
253
250
  name = "miniz_oxide"
@@ -452,9 +449,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
452
449
 
453
450
  [[package]]
454
451
  name = "syn"
455
- version = "2.0.117"
452
+ version = "2.0.118"
456
453
  source = "registry+https://github.com/rust-lang/crates.io-index"
457
- checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
454
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
458
455
  dependencies = [
459
456
  "proc-macro2",
460
457
  "quote",
@@ -503,12 +500,11 @@ dependencies = [
503
500
 
504
501
  [[package]]
505
502
  name = "time"
506
- version = "0.3.47"
503
+ version = "0.3.49"
507
504
  source = "registry+https://github.com/rust-lang/crates.io-index"
508
- checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
505
+ checksum = "711a53c2d47bbd818258c498c8dbfe186a2526c631495cfe7e078567f86b8469"
509
506
  dependencies = [
510
507
  "deranged",
511
- "itoa",
512
508
  "num-conv",
513
509
  "powerfmt",
514
510
  "serde_core",
@@ -518,15 +514,15 @@ dependencies = [
518
514
 
519
515
  [[package]]
520
516
  name = "time-core"
521
- version = "0.1.8"
517
+ version = "0.1.9"
522
518
  source = "registry+https://github.com/rust-lang/crates.io-index"
523
- checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
519
+ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
524
520
 
525
521
  [[package]]
526
522
  name = "time-macros"
527
- version = "0.2.27"
523
+ version = "0.2.29"
528
524
  source = "registry+https://github.com/rust-lang/crates.io-index"
529
- checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
525
+ checksum = "71c652a3727a9cbb9a02f707f530b618ce00d0ccd762009c8c23bd191df3c17d"
530
526
  dependencies = [
531
527
  "num-conv",
532
528
  "time-core",
@@ -6,7 +6,7 @@ description = "Convert nightly rustdoc JSON into a stable RustdocSpec snapshot.
6
6
  license = "AGPL-3.0-only"
7
7
  repository = "https://github.com/sourcey/sourcey"
8
8
  homepage = "https://sourcey.com"
9
- documentation = "https://sourcey.com/docs/adapters/rustdoc"
9
+ documentation = "https://sourcey.com/docs/rustdoc-integration"
10
10
  readme = "README.md"
11
11
  keywords = ["rustdoc", "documentation", "json", "rust-api"]
12
12
  categories = ["development-tools", "command-line-utilities"]
@@ -16,7 +16,7 @@ this crate directly. It is published for:
16
16
  - CI tools that drive snapshot generation from Rust
17
17
 
18
18
  If you just want sourcey for your project, see
19
- [sourcey.com/docs/adapters/rustdoc](https://sourcey.com/docs/adapters/rustdoc).
19
+ [sourcey.com/docs/rustdoc-integration](https://sourcey.com/docs/rustdoc-integration).
20
20
 
21
21
  ## CLI
22
22
 
package/dist/index.d.ts CHANGED
@@ -25,6 +25,7 @@ export interface SiteBuildOptions {
25
25
  skipWrite?: boolean;
26
26
  embeddable?: boolean;
27
27
  strictChangelog?: boolean;
28
+ generateOgImages?: boolean;
28
29
  }
29
30
  export interface SiteBuildResult {
30
31
  outputDir: string;
@@ -39,6 +40,8 @@ export declare function buildSiteDocs(options?: SiteBuildOptions): Promise<SiteB
39
40
  export { defineConfig } from "./config.js";
40
41
  export { doxygen, godoc, markdown, mcp, mkdocs, openapi, rustdoc } from "./adapters/index.js";
41
42
  export { resolveInternalLinks } from "./site-assembly.js";
43
+ export { buildSourceySite, collectSourceyWatchPaths, writeSourceySite } from "./site.js";
44
+ export type { SourceySiteArtifacts, SourceySiteOptions, SourceySiteWriteOptions } from "./site.js";
42
45
  export type { NormalizedSpec, NormalizedOperation, NormalizedTag, NormalizedSchema, NormalizedParameter, NormalizedRequestBody, NormalizedResponse, } from "./core/types.js";
43
46
  export type { DoxygenSourceOptions, GodocSourceOptions, MarkdownSourceOptions, McpSourceOptions, MkDocsSourceOptions, OpenApiSourceOptions, ResolvedTabSource, RustdocSourceOptions, SourceAdapter, SourceAdapterContext, } from "./adapters/index.js";
44
47
  export type { RustdocConfig, ResolvedRustdocConfig, RustdocMode, RustdocFeatures, } from "./config.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmBlD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB3E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAC3E,kBAAkB,EAAE,OAAO,0BAA0B,EAAE,uBAAuB,EAAE,CAAC;IACjF,wDAAwD;IACxD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgG5F;AA8CD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB3E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAC3E,kBAAkB,EAAE,OAAO,0BAA0B,EAAE,uBAAuB,EAAE,CAAC;IACjF,wDAAwD;IACxD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsB5F;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAGnG,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC"}