@umami/shiso 1.16.0 → 1.18.0
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.
- package/bin/shiso.mjs +0 -0
- package/dist/chunks/App.js +310 -205
- package/dist/chunks/architectureDiagram-5GKGNRK7.js +1 -1
- package/dist/chunks/chunk-GMAD6QVW.js +1 -1
- package/dist/chunks/cose-bilkent-JH36ORCC.js +1 -1
- package/dist/chunks/dist.js +1 -1
- package/dist/chunks/docs.js +848 -202
- package/dist/chunks/ganttDiagram-EL5Y4UJY.js +1 -1
- package/dist/chunks/src.js +1 -1
- package/dist/entry-client.js +1 -1
- package/dist/entry-server.js +2 -2
- package/docs.schema.json +1135 -1003
- package/package.json +1 -1
- package/scripts/check-content.mjs +2 -0
- package/scripts/load-shiso-config.mjs +30 -1
- package/src/App.tsx +41 -23
- package/src/components/CodeBlock.tsx +3 -1
- package/src/components/DocContent.tsx +15 -6
- package/src/components/Docs.tsx +3 -1
- package/src/components/Footer.tsx +3 -1
- package/src/components/Header.tsx +4 -3
- package/src/components/LanguageSwitcher.tsx +27 -7
- package/src/components/OpenApiOperation.tsx +22 -15
- package/src/components/PageActions.tsx +135 -0
- package/src/components/docs/Changelog.tsx +27 -13
- package/src/components/docs/CodeGroup.tsx +3 -1
- package/src/components/docs/Mermaid.tsx +8 -6
- package/src/components/docs/PropertiesTable.tsx +11 -6
- package/src/components/docs/Tabs.tsx +3 -1
- package/src/components/docs/Tree.tsx +3 -1
- package/src/components/docs/ZoomableImage.tsx +4 -2
- package/src/components/ui/dialog.tsx +7 -2
- package/src/components/ui/sheet.tsx +5 -2
- package/src/lib/label-context.tsx +7 -0
- package/src/lib/labels.ts +37 -0
- package/src/lib/locale.ts +25 -0
- package/src/lib/openapi.ts +21 -8
- package/src/lib/site-config.ts +66 -2
- package/src/lib/site-model.ts +4 -32
- package/src/lib/standalone-pages.ts +15 -1
- package/src/lib/translations/de.json +74 -0
- package/src/lib/translations/en.json +74 -0
- package/src/lib/translations/es.json +74 -0
- package/src/lib/translations/fr.json +74 -0
- package/src/lib/translations/ja.json +74 -0
- package/src/lib/translations/zh-Hans.json +74 -0
- package/src/lib/translations/zh-Hant.json +74 -0
- package/src/lib/types.ts +44 -32
- package/src/styles/global.css +1 -1
- package/types/config.d.ts +7 -1
- package/types/labels.d.ts +76 -0
package/dist/chunks/App.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as useFloatingNodeId, $n as
|
|
1
|
+
import { $ as useFloatingNodeId, $n as jsdom, $t as resolveIcon, A as safePolygon, An as useDirection, Ar as Route, B as attachPreventUnmountOnClose, Bn as isListIndexDisabled, Cn as englishLabels, Cr as X$1, D as useAnchorPositioning, Dn as isValidLocale, Dt as Collapsible, E as getDisabledMountTransitionStyles, En as getTextDirection, Er as createLucideIcon, Et as Expandable, F as createInitialPopupStoreState, Fn as findNonDisabledListIndex, Ft as useCompositeItem, G as useTriggerDataForwarding, Gn as isTypeableCombobox, H as useImplicitActiveTrigger, Hn as isVirtualPointerEvent, I as popupStoreSelectors, In as getMaxListIndex, J as useDismiss, Jn as getTarget, K as useSyncedFloatingRootContext, Kn as activeElement, L as PopupTriggerMap, Ln as getMinListIndex, M as useHoverFloatingInteraction, Mn as getTabbableAfterElement, Mr as Routes, Mt as CodeGroup, N as useFocus, Nn as getTabbableBeforeElement, Nr as useLocation, Nt as COMPOSITE_KEYS, O as popupTransitionStateMapping, On as resolveLocale, Or as Link, Ot as CollapsibleContent, P as usePopupHandleStore, Pn as isOutsideEvent, Pr as useNavigate, Pt as inertValue, Q as FloatingTree, Qn as ARROW_UP, R as FOCUSABLE_POPUP_PROPS, Rn as isElementVisible, Sn as useLabels, Sr as isLastTraversableNode, T as usePositioner, Tn as getLanguageName, Tr as Check, Tt as renderInlineMarkdown, U as useOpenStateTransitions, Un as stopEvent, V as setPopupOpenState, Vn as isVirtualClick, W as usePopupInteractionProps, Wn as getFloatingFocusElement, X as FloatingFocusManager, Xn as ARROW_LEFT, Xt as Badge$1, Y as useClick, Yn as ARROW_DOWN, Yt as Badge, Z as FloatingNode, Zn as ARROW_RIGHT, _n as triggerPress, _r as useStableCallback, a as DialogTitle, an as useAnimationFrame, ar as Button, at as POPUP_COLLISION_AVOIDANCE, br as getWindow, bt as usePanelContent, c as useOpenInteractionType, cn as escapeKey, cr as EMPTY_ARRAY, ct as fastComponent, d as useScrollLock, dn as itemPress, dr as useButton, en as getIcon, er as webkit, et as useFloatingParentNodeId, f as DialogPortal$1, fn as listNavigation, fr as dispatchClickWithModifiers, g as DialogBackdrop, gn as triggerHover, gr as useIsoLayoutEffect, gt as PropertiesTable, h as DialogClose, hn as triggerFocus, hr as mergeProps$1, i as DialogContent$1, in as useCompositeListItem, ir as useTimeout, it as DROPDOWN_COLLISION_AVOIDANCE, j as useHoverReferenceInteraction, jn as getNextTabbable, k as pressableTriggerOpenStateMapping, kn as addEventListener, kr as Navigate, kt as CollapsibleTrigger, l as DialogTitle$1, ln as focusOut, lr as EMPTY_OBJECT, lt as fastComponentRef, m as DialogPopup, mn as siblingOpen, mr as useCompositeRootContext, n as ZoomableImage, nn as useAnimationsFinished, nr as useBaseUiId, nt as FloatingTreeStore, o as DialogTrigger, on as createChangeEventDetails, or as cn, ot as enqueueFocus, p as InternalBackdrop, pn as outsidePress, pr as ownerDocument, q as ReactStore, qn as contains, r as Dialog$1, rn as useValueAsRef, rr as useId$2, rt as FloatingPortal, s as DialogTrigger$1, sn as cancelOpen, sr as useRenderElement, st as FocusGuard, t as docs_exports, tn as useOpenChangeComplete, tr as mac, tt as useFloatingTree, u as DialogRoot, un as imperativeAction, ur as useMergedRefs, vn as CompositeList, vr as useRefWithInit, w as TooltipProvider, wn as resolveLabels, wr as ChevronRight, xn as LabelContext, xr as isHTMLElement, yn as Mermaid, yr as getParentNode, yt as PanelProvider, z as PopupHandleAttachment, zn as isIndexOutOfListBounds } from "./docs.js";
|
|
2
2
|
import { n as highlightTerms } from "./search.js";
|
|
3
3
|
import { resolveSearchProvider } from "../search.js";
|
|
4
4
|
import * as React from "react";
|
|
@@ -303,7 +303,7 @@ const __iconNode = [
|
|
|
303
303
|
const Sun = createLucideIcon("sun", __iconNode);
|
|
304
304
|
|
|
305
305
|
//#endregion
|
|
306
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
306
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/root/ScrollAreaRootContext.mjs
|
|
307
307
|
const ScrollAreaRootContext = /*#__PURE__*/ React.createContext(void 0);
|
|
308
308
|
ScrollAreaRootContext.displayName = "ScrollAreaRootContext";
|
|
309
309
|
function useScrollAreaRootContext() {
|
|
@@ -313,7 +313,7 @@ function useScrollAreaRootContext() {
|
|
|
313
313
|
}
|
|
314
314
|
|
|
315
315
|
//#endregion
|
|
316
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
316
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/utils/getOffset.mjs
|
|
317
317
|
function getOffset$1(element, prop, axis) {
|
|
318
318
|
if (!element) return 0;
|
|
319
319
|
const styles = getComputedStyle(element);
|
|
@@ -324,7 +324,7 @@ function getOffset$1(element, prop, axis) {
|
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
//#endregion
|
|
327
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
327
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/styles.mjs
|
|
328
328
|
const DISABLE_SCROLLBAR_CLASS_NAME = "base-ui-disable-scrollbar";
|
|
329
329
|
const styleDisableScrollbar = {
|
|
330
330
|
className: DISABLE_SCROLLBAR_CLASS_NAME,
|
|
@@ -340,7 +340,7 @@ const styleDisableScrollbar = {
|
|
|
340
340
|
styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement";
|
|
341
341
|
|
|
342
342
|
//#endregion
|
|
343
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
343
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/root/stateAttributes.mjs
|
|
344
344
|
const attr = (name) => (value) => value ? { [name]: "" } : null;
|
|
345
345
|
const scrollAreaStateAttributesMapping = {
|
|
346
346
|
hasOverflowX: attr("data-has-overflow-x"),
|
|
@@ -353,7 +353,7 @@ const scrollAreaStateAttributesMapping = {
|
|
|
353
353
|
};
|
|
354
354
|
|
|
355
355
|
//#endregion
|
|
356
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
356
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs
|
|
357
357
|
const CSPContext = /*#__PURE__*/ React.createContext(void 0);
|
|
358
358
|
CSPContext.displayName = "CSPContext";
|
|
359
359
|
const DEFAULT_CSP_CONTEXT_VALUE = { disableStyleElements: false };
|
|
@@ -362,7 +362,7 @@ function useCSPContext() {
|
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
//#endregion
|
|
365
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
365
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/root/ScrollAreaRoot.mjs
|
|
366
366
|
const DEFAULT_COORDS = {
|
|
367
367
|
x: 0,
|
|
368
368
|
y: 0
|
|
@@ -622,7 +622,7 @@ function normalizeOverflowEdgeThreshold(threshold) {
|
|
|
622
622
|
}
|
|
623
623
|
|
|
624
624
|
//#endregion
|
|
625
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
625
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/viewport/ScrollAreaViewportContext.mjs
|
|
626
626
|
const ScrollAreaViewportContext = /*#__PURE__*/ React.createContext(void 0);
|
|
627
627
|
ScrollAreaViewportContext.displayName = "ScrollAreaViewportContext";
|
|
628
628
|
function useScrollAreaViewportContext() {
|
|
@@ -632,13 +632,13 @@ function useScrollAreaViewportContext() {
|
|
|
632
632
|
}
|
|
633
633
|
|
|
634
634
|
//#endregion
|
|
635
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
635
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/internals/clamp.mjs
|
|
636
636
|
function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
|
|
637
637
|
return Math.max(min, Math.min(val, max));
|
|
638
638
|
}
|
|
639
639
|
|
|
640
640
|
//#endregion
|
|
641
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
641
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/scrollEdges.mjs
|
|
642
642
|
const SCROLL_EDGE_TOLERANCE_PX = 1;
|
|
643
643
|
function normalizeScrollOffset(value, max) {
|
|
644
644
|
if (max <= 0) return 0;
|
|
@@ -654,7 +654,7 @@ function normalizeScrollOffset(value, max) {
|
|
|
654
654
|
}
|
|
655
655
|
|
|
656
656
|
//#endregion
|
|
657
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
657
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/viewport/ScrollAreaViewport.mjs
|
|
658
658
|
const OVERFLOW_EDGE_VARS = [
|
|
659
659
|
"--scroll-area-overflow-x-start",
|
|
660
660
|
"--scroll-area-overflow-x-end",
|
|
@@ -909,7 +909,7 @@ function applyOverscrollThumb(thumbEl, sizeVar, scrollFromStart, maxScroll, cont
|
|
|
909
909
|
}
|
|
910
910
|
|
|
911
911
|
//#endregion
|
|
912
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
912
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/scrollbar/ScrollAreaScrollbarContext.mjs
|
|
913
913
|
const ScrollAreaScrollbarContext = /*#__PURE__*/ React.createContext(void 0);
|
|
914
914
|
ScrollAreaScrollbarContext.displayName = "ScrollAreaScrollbarContext";
|
|
915
915
|
function useScrollAreaScrollbarContext() {
|
|
@@ -919,7 +919,7 @@ function useScrollAreaScrollbarContext() {
|
|
|
919
919
|
}
|
|
920
920
|
|
|
921
921
|
//#endregion
|
|
922
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
922
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/scrollbar/ScrollAreaScrollbar.mjs
|
|
923
923
|
/**
|
|
924
924
|
* A vertical or horizontal scrollbar for the scroll area.
|
|
925
925
|
* Renders a `<div>` element.
|
|
@@ -1042,7 +1042,7 @@ const ScrollAreaScrollbar = /*#__PURE__*/ React.forwardRef(function ScrollAreaSc
|
|
|
1042
1042
|
ScrollAreaScrollbar.displayName = "ScrollAreaScrollbar";
|
|
1043
1043
|
|
|
1044
1044
|
//#endregion
|
|
1045
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
1045
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/content/ScrollAreaContent.mjs
|
|
1046
1046
|
/**
|
|
1047
1047
|
* A container for the content of the scroll area.
|
|
1048
1048
|
* Renders a `<div>` element.
|
|
@@ -1083,7 +1083,7 @@ const ScrollAreaContent = /*#__PURE__*/ React.forwardRef(function ScrollAreaCont
|
|
|
1083
1083
|
ScrollAreaContent.displayName = "ScrollAreaContent";
|
|
1084
1084
|
|
|
1085
1085
|
//#endregion
|
|
1086
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
1086
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/thumb/ScrollAreaThumb.mjs
|
|
1087
1087
|
/**
|
|
1088
1088
|
* The draggable part of the scrollbar that indicates the current scroll position.
|
|
1089
1089
|
* Renders a `<div>` element.
|
|
@@ -1116,7 +1116,7 @@ const ScrollAreaThumb = /*#__PURE__*/ React.forwardRef(function ScrollAreaThumb(
|
|
|
1116
1116
|
ScrollAreaThumb.displayName = "ScrollAreaThumb";
|
|
1117
1117
|
|
|
1118
1118
|
//#endregion
|
|
1119
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
1119
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/scroll-area/corner/ScrollAreaCorner.mjs
|
|
1120
1120
|
/**
|
|
1121
1121
|
* A small rectangular area that appears at the intersection of horizontal and vertical scrollbars.
|
|
1122
1122
|
* Renders a `<div>` element.
|
|
@@ -1203,6 +1203,7 @@ function copyText(pre, language) {
|
|
|
1203
1203
|
return lines.filter((line) => language === "diff" || line.dataset.diff !== "remove").map((line) => line.textContent || "").join("\n");
|
|
1204
1204
|
}
|
|
1205
1205
|
function CodeBlock({ children, className, style, ...rest }) {
|
|
1206
|
+
const labels = useLabels();
|
|
1206
1207
|
const { "data-title": title, "data-language": language, "data-line-start": lineStart, "data-line-count": lineCount, "data-placement": placement, "data-actions": actions, ...preProps } = rest;
|
|
1207
1208
|
const textInput = useRef(null);
|
|
1208
1209
|
const [copied, setCopied] = useState(false);
|
|
@@ -1253,7 +1254,7 @@ function CodeBlock({ children, className, style, ...rest }) {
|
|
|
1253
1254
|
size: "icon-sm",
|
|
1254
1255
|
className: cn("absolute right-3 inline-flex size-7 items-center justify-center rounded-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground", title ? "top-1" : "top-2.5"),
|
|
1255
1256
|
onClick: handleCopy,
|
|
1256
|
-
"aria-label":
|
|
1257
|
+
"aria-label": copied ? labels.copied : labels.copyCode,
|
|
1257
1258
|
children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3.5 text-primary" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3.5" })
|
|
1258
1259
|
})
|
|
1259
1260
|
]
|
|
@@ -1261,7 +1262,7 @@ function CodeBlock({ children, className, style, ...rest }) {
|
|
|
1261
1262
|
}
|
|
1262
1263
|
|
|
1263
1264
|
//#endregion
|
|
1264
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
1265
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs
|
|
1265
1266
|
const ESCAPE = "Escape";
|
|
1266
1267
|
function isStationaryWebKitPointer(event) {
|
|
1267
1268
|
return webkit && event.movementX === 0 && event.movementY === 0;
|
|
@@ -1702,7 +1703,7 @@ function useListNavigation(context, props) {
|
|
|
1702
1703
|
}
|
|
1703
1704
|
|
|
1704
1705
|
//#endregion
|
|
1705
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
1706
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs
|
|
1706
1707
|
/**
|
|
1707
1708
|
* Provides a matching callback that can be used to focus an item as the user
|
|
1708
1709
|
* types, often used in tandem with `useListNavigation()`.
|
|
@@ -2043,7 +2044,7 @@ function ConfiguredIcon({ icon, size = 14 }) {
|
|
|
2043
2044
|
}
|
|
2044
2045
|
|
|
2045
2046
|
//#endregion
|
|
2046
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2047
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/positioner/MenuPositionerContext.mjs
|
|
2047
2048
|
const MenuPositionerContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2048
2049
|
MenuPositionerContext.displayName = "MenuPositionerContext";
|
|
2049
2050
|
function useMenuPositionerContext(optional) {
|
|
@@ -2053,7 +2054,7 @@ function useMenuPositionerContext(optional) {
|
|
|
2053
2054
|
}
|
|
2054
2055
|
|
|
2055
2056
|
//#endregion
|
|
2056
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2057
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/root/MenuRootContext.mjs
|
|
2057
2058
|
const MenuRootContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2058
2059
|
MenuRootContext.displayName = "MenuRootContext";
|
|
2059
2060
|
function useMenuRootContext(optional) {
|
|
@@ -2063,7 +2064,7 @@ function useMenuRootContext(optional) {
|
|
|
2063
2064
|
}
|
|
2064
2065
|
|
|
2065
2066
|
//#endregion
|
|
2066
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2067
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/context-menu/root/ContextMenuRootContext.mjs
|
|
2067
2068
|
const ContextMenuRootContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2068
2069
|
ContextMenuRootContext.displayName = "ContextMenuRootContext";
|
|
2069
2070
|
function useContextMenuRootContext(optional = true) {
|
|
@@ -2073,7 +2074,7 @@ function useContextMenuRootContext(optional = true) {
|
|
|
2073
2074
|
}
|
|
2074
2075
|
|
|
2075
2076
|
//#endregion
|
|
2076
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2077
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/item/useMenuItemCommonProps.mjs
|
|
2077
2078
|
/**
|
|
2078
2079
|
* Returns common props shared by all menu item types.
|
|
2079
2080
|
* This hook extracts the shared logic for id, role, tabIndex, onKeyDown,
|
|
@@ -2133,7 +2134,7 @@ function useMenuItemCommonProps(params) {
|
|
|
2133
2134
|
}
|
|
2134
2135
|
|
|
2135
2136
|
//#endregion
|
|
2136
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2137
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/item/useMenuItem.mjs
|
|
2137
2138
|
const REGULAR_ITEM = { type: "regular-item" };
|
|
2138
2139
|
function useMenuItem(params) {
|
|
2139
2140
|
const { closeOnClick, disabled, highlighted, id, store, typingRef = store.context.typingRef, nativeButton, itemMetadata, nodeId } = params;
|
|
@@ -2172,7 +2173,7 @@ function useMenuItem(params) {
|
|
|
2172
2173
|
}
|
|
2173
2174
|
|
|
2174
2175
|
//#endregion
|
|
2175
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2176
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/item/MenuItem.mjs
|
|
2176
2177
|
/**
|
|
2177
2178
|
* An individual interactive item in the menu.
|
|
2178
2179
|
* Renders a `<div>` element.
|
|
@@ -2222,7 +2223,7 @@ const MenuItem = /*#__PURE__*/ React.forwardRef(function MenuItem(componentProps
|
|
|
2222
2223
|
MenuItem.displayName = "MenuItem";
|
|
2223
2224
|
|
|
2224
2225
|
//#endregion
|
|
2225
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2226
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs
|
|
2226
2227
|
const ToolbarRootContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2227
2228
|
ToolbarRootContext.displayName = "ToolbarRootContext";
|
|
2228
2229
|
function useToolbarRootContext(optional) {
|
|
@@ -2232,7 +2233,7 @@ function useToolbarRootContext(optional) {
|
|
|
2232
2233
|
}
|
|
2233
2234
|
|
|
2234
2235
|
//#endregion
|
|
2235
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2236
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/popup/MenuPopup.mjs
|
|
2236
2237
|
/**
|
|
2237
2238
|
* A container for the menu items.
|
|
2238
2239
|
* Renders a `<div>` element.
|
|
@@ -2327,7 +2328,7 @@ const MenuPopup = /*#__PURE__*/ React.forwardRef(function MenuPopup(componentPro
|
|
|
2327
2328
|
MenuPopup.displayName = "MenuPopup";
|
|
2328
2329
|
|
|
2329
2330
|
//#endregion
|
|
2330
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2331
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/portal/MenuPortalContext.mjs
|
|
2331
2332
|
const MenuPortalContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2332
2333
|
MenuPortalContext.displayName = "MenuPortalContext";
|
|
2333
2334
|
function useMenuPortalContext() {
|
|
@@ -2337,7 +2338,7 @@ function useMenuPortalContext() {
|
|
|
2337
2338
|
}
|
|
2338
2339
|
|
|
2339
2340
|
//#endregion
|
|
2340
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2341
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/portal/MenuPortal.mjs
|
|
2341
2342
|
/**
|
|
2342
2343
|
* A portal element that moves the popup to a different part of the DOM.
|
|
2343
2344
|
* By default, the portal element is appended to `<body>`.
|
|
@@ -2360,7 +2361,7 @@ const MenuPortal = /*#__PURE__*/ React.forwardRef(function MenuPortal(props, for
|
|
|
2360
2361
|
MenuPortal.displayName = "MenuPortal";
|
|
2361
2362
|
|
|
2362
2363
|
//#endregion
|
|
2363
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2364
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs
|
|
2364
2365
|
const VIEWPORT_WIDTH_TOLERANCE_PX = 20;
|
|
2365
2366
|
/**
|
|
2366
2367
|
* Manages scroll lock for anchored popups. For non-touch opens, scroll lock is applied when
|
|
@@ -2386,7 +2387,7 @@ function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, refer
|
|
|
2386
2387
|
}
|
|
2387
2388
|
|
|
2388
2389
|
//#endregion
|
|
2389
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2390
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/positioner/MenuPositioner.mjs
|
|
2390
2391
|
/**
|
|
2391
2392
|
* Positions the menu popup against the trigger.
|
|
2392
2393
|
* Renders a `<div>` element.
|
|
@@ -2595,7 +2596,7 @@ const MenuPositioner = /*#__PURE__*/ React.forwardRef(function MenuPositioner(co
|
|
|
2595
2596
|
MenuPositioner.displayName = "MenuPositioner";
|
|
2596
2597
|
|
|
2597
2598
|
//#endregion
|
|
2598
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2599
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menubar/MenubarContext.mjs
|
|
2599
2600
|
const MenubarContext = /*#__PURE__*/ React.createContext(null);
|
|
2600
2601
|
MenubarContext.displayName = "MenubarContext";
|
|
2601
2602
|
function useMenubarContext(optional) {
|
|
@@ -2605,7 +2606,7 @@ function useMenubarContext(optional) {
|
|
|
2605
2606
|
}
|
|
2606
2607
|
|
|
2607
2608
|
//#endregion
|
|
2608
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2609
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/store/MenuStore.mjs
|
|
2609
2610
|
const selectors = {
|
|
2610
2611
|
...popupStoreSelectors,
|
|
2611
2612
|
disabled: (state) => state.parent.type === "menubar" ? state.parent.context.disabled || state.disabled : state.disabled,
|
|
@@ -2720,7 +2721,7 @@ function createInitialState() {
|
|
|
2720
2721
|
}
|
|
2721
2722
|
|
|
2722
2723
|
//#endregion
|
|
2723
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2724
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRootContext.mjs
|
|
2724
2725
|
const MenuSubmenuRootContext = /*#__PURE__*/ React.createContext(void 0);
|
|
2725
2726
|
MenuSubmenuRootContext.displayName = "MenuSubmenuRootContext";
|
|
2726
2727
|
function useMenuSubmenuRootContext() {
|
|
@@ -2728,7 +2729,7 @@ function useMenuSubmenuRootContext() {
|
|
|
2728
2729
|
}
|
|
2729
2730
|
|
|
2730
2731
|
//#endregion
|
|
2731
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
2732
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/root/MenuRoot.mjs
|
|
2732
2733
|
/**
|
|
2733
2734
|
* Groups all parts of the menu.
|
|
2734
2735
|
* Doesn't render its own HTML element.
|
|
@@ -3029,7 +3030,7 @@ function useMenuRootStore(initialState) {
|
|
|
3029
3030
|
}
|
|
3030
3031
|
|
|
3031
3032
|
//#endregion
|
|
3032
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3033
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs
|
|
3033
3034
|
const BOUNDARY_OFFSET = 5;
|
|
3034
3035
|
/**
|
|
3035
3036
|
* Determines if a mouse event occurred within the bounds of an element
|
|
@@ -3063,7 +3064,7 @@ function getPseudoElementBounds(element) {
|
|
|
3063
3064
|
}
|
|
3064
3065
|
|
|
3065
3066
|
//#endregion
|
|
3066
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3067
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs
|
|
3067
3068
|
function CompositeItem(componentProps) {
|
|
3068
3069
|
const { render, className, style, state = EMPTY_OBJECT, props = EMPTY_ARRAY, refs = EMPTY_ARRAY, metadata, stateAttributesMapping, tag = "div", ...elementProps } = componentProps;
|
|
3069
3070
|
const { compositeProps, compositeRef } = useCompositeItem({ metadata });
|
|
@@ -3080,7 +3081,7 @@ function CompositeItem(componentProps) {
|
|
|
3080
3081
|
}
|
|
3081
3082
|
|
|
3082
3083
|
//#endregion
|
|
3083
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3084
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs
|
|
3084
3085
|
function findRootOwnerId(node) {
|
|
3085
3086
|
if (isHTMLElement(node) && node.hasAttribute("data-rootownerid")) return node.getAttribute("data-rootownerid");
|
|
3086
3087
|
if (isLastTraversableNode(node)) return;
|
|
@@ -3088,7 +3089,7 @@ function findRootOwnerId(node) {
|
|
|
3088
3089
|
}
|
|
3089
3090
|
|
|
3090
3091
|
//#endregion
|
|
3091
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3092
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/popups/useTriggerFocusGuards.mjs
|
|
3092
3093
|
/**
|
|
3093
3094
|
* Minimal store interface required by the focus guard hook.
|
|
3094
3095
|
* Both PopoverStore and MenuStore satisfy this interface.
|
|
@@ -3132,7 +3133,7 @@ function useTriggerFocusGuards(store, triggerElementRef) {
|
|
|
3132
3133
|
}
|
|
3133
3134
|
|
|
3134
3135
|
//#endregion
|
|
3135
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3136
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs
|
|
3136
3137
|
/**
|
|
3137
3138
|
* Returns `click` and `mousedown` handlers that fix the behavior of triggers of popups that are toggled by different events.
|
|
3138
3139
|
* For example, a button that opens a popup on mousedown and closes it on click.
|
|
@@ -3167,7 +3168,7 @@ function useMixedToggleClickHandler(params) {
|
|
|
3167
3168
|
}
|
|
3168
3169
|
|
|
3169
3170
|
//#endregion
|
|
3170
|
-
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@
|
|
3171
|
+
//#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs
|
|
3171
3172
|
/**
|
|
3172
3173
|
* A button that opens the menu.
|
|
3173
3174
|
* Renders a `<button>` element.
|
|
@@ -4123,47 +4124,6 @@ function getLastModified(filePath) {
|
|
|
4123
4124
|
return LAST_MODIFIED[filePath];
|
|
4124
4125
|
}
|
|
4125
4126
|
|
|
4126
|
-
//#endregion
|
|
4127
|
-
//#region src/lib/locale.ts
|
|
4128
|
-
/** Primary language subtags written right-to-left. */
|
|
4129
|
-
const RTL_LANGUAGES = /* @__PURE__ */ new Set([
|
|
4130
|
-
"ar",
|
|
4131
|
-
"ckb",
|
|
4132
|
-
"dv",
|
|
4133
|
-
"fa",
|
|
4134
|
-
"he",
|
|
4135
|
-
"iw",
|
|
4136
|
-
"ps",
|
|
4137
|
-
"sd",
|
|
4138
|
-
"ug",
|
|
4139
|
-
"ur",
|
|
4140
|
-
"yi"
|
|
4141
|
-
]);
|
|
4142
|
-
/** BCP 47-shaped tags with a 2-3 letter primary subtag, e.g. "es" or "pt-BR". */
|
|
4143
|
-
const LOCALE_PATTERN = /^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i;
|
|
4144
|
-
function isValidLocale(value) {
|
|
4145
|
-
if (!value || !LOCALE_PATTERN.test(value)) return false;
|
|
4146
|
-
try {
|
|
4147
|
-
return Intl.getCanonicalLocales(value).length > 0;
|
|
4148
|
-
} catch {
|
|
4149
|
-
return false;
|
|
4150
|
-
}
|
|
4151
|
-
}
|
|
4152
|
-
/**
|
|
4153
|
-
* Locale for a page: its scope's language code when valid, then the
|
|
4154
|
-
* site-wide shiso.config `locale`, then en-US.
|
|
4155
|
-
*/
|
|
4156
|
-
function resolveLocale(language, fallback) {
|
|
4157
|
-
if (isValidLocale(language)) return Intl.getCanonicalLocales(language)[0];
|
|
4158
|
-
if (isValidLocale(fallback)) return Intl.getCanonicalLocales(fallback)[0];
|
|
4159
|
-
return "en-US";
|
|
4160
|
-
}
|
|
4161
|
-
/** Document direction for a locale, e.g. "ar" and "he" read right-to-left. */
|
|
4162
|
-
function getTextDirection(locale) {
|
|
4163
|
-
const primary = locale.split("-")[0]?.toLowerCase() || "";
|
|
4164
|
-
return RTL_LANGUAGES.has(primary) ? "rtl" : "ltr";
|
|
4165
|
-
}
|
|
4166
|
-
|
|
4167
4127
|
//#endregion
|
|
4168
4128
|
//#region src/lib/code-blocks.ts
|
|
4169
4129
|
const DEFAULT_CODE_THEME = {
|
|
@@ -4224,36 +4184,6 @@ function resolveSearchConfig(config) {
|
|
|
4224
4184
|
|
|
4225
4185
|
//#endregion
|
|
4226
4186
|
//#region src/lib/site-model.ts
|
|
4227
|
-
const SHISO_THEME_LABELS = {
|
|
4228
|
-
menu: "Menu",
|
|
4229
|
-
documentationNavigation: "Documentation navigation",
|
|
4230
|
-
sections: "Sections",
|
|
4231
|
-
tableOfContents: "On this page",
|
|
4232
|
-
tableOfContentsNavigation: "Table of contents",
|
|
4233
|
-
searchTitle: "Search",
|
|
4234
|
-
searching: "Searching...",
|
|
4235
|
-
searchUnavailable: "Search unavailable",
|
|
4236
|
-
noResults: "No results",
|
|
4237
|
-
lastUpdated: "Last updated on",
|
|
4238
|
-
relatedTopics: "Related topics",
|
|
4239
|
-
previousPage: "Previous",
|
|
4240
|
-
nextPage: "Next",
|
|
4241
|
-
notFound: "Page not found",
|
|
4242
|
-
dismissBanner: "Dismiss banner",
|
|
4243
|
-
toggleTheme: "Toggle theme",
|
|
4244
|
-
moreOptions: "More options",
|
|
4245
|
-
copied: "Copied",
|
|
4246
|
-
expand: "Expand",
|
|
4247
|
-
collapse: "Collapse",
|
|
4248
|
-
copyPage: "Copy page",
|
|
4249
|
-
copyPageDescription: "Copy this page as Markdown",
|
|
4250
|
-
viewMarkdown: "View as Markdown",
|
|
4251
|
-
viewMarkdownDescription: "Open this page as plain Markdown",
|
|
4252
|
-
openInChatGPT: "Open in ChatGPT",
|
|
4253
|
-
openInClaude: "Open in Claude",
|
|
4254
|
-
openInPerplexity: "Open in Perplexity",
|
|
4255
|
-
askQuestionsAboutPage: "Ask questions about this page"
|
|
4256
|
-
};
|
|
4257
4187
|
function isInternalHref(href) {
|
|
4258
4188
|
return /^(?:#|\/|\.\.?\/)/.test(href);
|
|
4259
4189
|
}
|
|
@@ -4329,17 +4259,19 @@ function resolveSiteModel(config, docs, shiso) {
|
|
|
4329
4259
|
...config.errors?.["404"],
|
|
4330
4260
|
redirect: config.errors?.["404"]?.redirect !== false
|
|
4331
4261
|
},
|
|
4262
|
+
editLink: config.editLink || null,
|
|
4263
|
+
feedback: config.feedback || null,
|
|
4332
4264
|
showTimestamp: config.metadata?.timestamp === true,
|
|
4333
4265
|
drilldown: config.interaction?.drilldown,
|
|
4334
4266
|
locale: shiso?.locale || "en-US",
|
|
4335
|
-
labels:
|
|
4267
|
+
labels: resolveLabels(shiso?.locale || "en-US", shiso?.translations),
|
|
4336
4268
|
docs
|
|
4337
4269
|
};
|
|
4338
4270
|
}
|
|
4339
4271
|
function aiPrompt(mdUrl) {
|
|
4340
4272
|
return `Read ${mdUrl} so I can ask questions about it.`;
|
|
4341
4273
|
}
|
|
4342
|
-
function resolveContextualOptions(options, page, labels =
|
|
4274
|
+
function resolveContextualOptions(options, page, labels = englishLabels) {
|
|
4343
4275
|
const mdHref = `${toHref(page.url)}.md`;
|
|
4344
4276
|
const absolutePageUrl = toAbsoluteUrl(page.url);
|
|
4345
4277
|
const mdUrl = absolutePageUrl ? `${absolutePageUrl}.md` : void 0;
|
|
@@ -4442,10 +4374,15 @@ function normalizeStandalonePages(config, resolvePageFile, site, options = {}) {
|
|
|
4442
4374
|
const fileSlug = normalizePageSlug(item?.page);
|
|
4443
4375
|
const filePath = resolvePageFile(fileSlug);
|
|
4444
4376
|
if (!filePath) throw new Error(`Missing standalone page file for "${fileSlug}": expected "content/pages/${fileSlug}.tsx", ".mdx", or ".md".`);
|
|
4377
|
+
const language = item?.language?.trim() || void 0;
|
|
4378
|
+
if (language && !site.scopes.some((scope) => scope.language === language)) throw invalid(`standalone page "${path}" uses language "${language}", which is not declared in navigation.languages.`);
|
|
4379
|
+
const key = language && fileSlug.startsWith(`${language}/`) ? fileSlug.slice(language.length + 1) : fileSlug;
|
|
4445
4380
|
pages.push({
|
|
4446
4381
|
path,
|
|
4447
4382
|
filePath,
|
|
4448
|
-
title: item?.title?.trim() || void 0
|
|
4383
|
+
title: item?.title?.trim() || void 0,
|
|
4384
|
+
language,
|
|
4385
|
+
key
|
|
4449
4386
|
});
|
|
4450
4387
|
}
|
|
4451
4388
|
return pages;
|
|
@@ -4478,10 +4415,38 @@ const hasRootStandalonePage = standalonePages.some((page) => page.path === "/");
|
|
|
4478
4415
|
function getStandalonePage(pathname) {
|
|
4479
4416
|
return getStandalonePageByPathname(standalonePages, stripBase(pathname));
|
|
4480
4417
|
}
|
|
4481
|
-
/**
|
|
4418
|
+
/** Landing scope of a language: its default version. */
|
|
4419
|
+
function getLanguageScope(language) {
|
|
4420
|
+
return docsSite.scopes.find((scope) => scope.language === language && scope.isLanguageDefault);
|
|
4421
|
+
}
|
|
4422
|
+
/**
|
|
4423
|
+
* Scope that owns the current pathname. A standalone page tagged with a
|
|
4424
|
+
* `language` belongs to that language's landing scope; unknown paths and
|
|
4425
|
+
* untagged standalone pages belong to the default scope.
|
|
4426
|
+
*/
|
|
4482
4427
|
function getScopeByPathname(pathname) {
|
|
4483
4428
|
const page = getPageByPathname(pathname);
|
|
4484
|
-
|
|
4429
|
+
if (page) return getScopeForPage(docsSite, page);
|
|
4430
|
+
const standalone = getStandalonePage(pathname);
|
|
4431
|
+
return (standalone?.language ? getLanguageScope(standalone.language) : void 0) || getDefaultScope(docsSite);
|
|
4432
|
+
}
|
|
4433
|
+
/**
|
|
4434
|
+
* The same standalone page in another language, matched by `key`. Untagged
|
|
4435
|
+
* pages count as the default scope's language.
|
|
4436
|
+
*/
|
|
4437
|
+
function getStandaloneCounterpart(page, language) {
|
|
4438
|
+
const defaultLanguage = getDefaultScope(docsSite).language;
|
|
4439
|
+
return standalonePages.find((candidate) => candidate.key === page.key && (candidate.language || defaultLanguage) === language) || null;
|
|
4440
|
+
}
|
|
4441
|
+
/**
|
|
4442
|
+
* Home link for the current pathname: the "/" standalone page in the current
|
|
4443
|
+
* language when one exists, else "/", else the docs home when nothing owns "/".
|
|
4444
|
+
*/
|
|
4445
|
+
function getHomeHref(pathname) {
|
|
4446
|
+
const root = standalonePages.find((page) => page.path === "/");
|
|
4447
|
+
if (!root) return docsHomeUrl;
|
|
4448
|
+
const language = getScopeByPathname(pathname).language;
|
|
4449
|
+
return language && getStandaloneCounterpart(root, language)?.path || "/";
|
|
4485
4450
|
}
|
|
4486
4451
|
/** Document language and direction for a pathname, from its scope's language. */
|
|
4487
4452
|
function getLocaleByPathname(pathname) {
|
|
@@ -4491,6 +4456,20 @@ function getLocaleByPathname(pathname) {
|
|
|
4491
4456
|
dir: getTextDirection(lang)
|
|
4492
4457
|
};
|
|
4493
4458
|
}
|
|
4459
|
+
/** Resolve UI text on every route, including standalone pages and language switches. */
|
|
4460
|
+
function getSiteModelByPathname(pathname) {
|
|
4461
|
+
const { lang } = getLocaleByPathname(pathname);
|
|
4462
|
+
const labels = resolveLabels(lang, shiso.translations);
|
|
4463
|
+
const customPrompt = typeof siteConfig.search === "object" ? siteConfig.search.prompt?.trim() : void 0;
|
|
4464
|
+
return {
|
|
4465
|
+
...siteModel,
|
|
4466
|
+
labels,
|
|
4467
|
+
search: {
|
|
4468
|
+
...siteModel.search,
|
|
4469
|
+
prompt: customPrompt || labels.searchPlaceholder
|
|
4470
|
+
}
|
|
4471
|
+
};
|
|
4472
|
+
}
|
|
4494
4473
|
const siteName = siteModel.name;
|
|
4495
4474
|
/** Trailing-slash-insensitive route key for redirect matching. */
|
|
4496
4475
|
function toRouteKey(routePath) {
|
|
@@ -4544,39 +4523,47 @@ function getPageTitle(pageTitle) {
|
|
|
4544
4523
|
//#region src/components/LanguageSwitcher.tsx
|
|
4545
4524
|
/**
|
|
4546
4525
|
* Language selector for multi-language sites. Each option is a language's
|
|
4547
|
-
* landing scope — its default version — so switching languages
|
|
4548
|
-
*
|
|
4549
|
-
*
|
|
4526
|
+
* landing scope — its default version — so switching languages lands on that
|
|
4527
|
+
* language's default-version first page. On a standalone page (e.g. a home
|
|
4528
|
+
* page) it lands on the same page in the chosen language when one exists.
|
|
4529
|
+
* Hidden languages never
|
|
4530
|
+
* appear as options. Each language is shown by its native name, e.g. "ja"
|
|
4531
|
+
* as "日本語".
|
|
4550
4532
|
*/
|
|
4551
4533
|
function LanguageSwitcher() {
|
|
4552
4534
|
const { pathname } = useLocation();
|
|
4553
4535
|
const navigate = useNavigate();
|
|
4554
4536
|
const current = getScopeByPathname(pathname);
|
|
4555
4537
|
const options = getLanguageScopes(docsSite);
|
|
4538
|
+
const standalone = getStandalonePage(pathname);
|
|
4556
4539
|
if (!current.language || options.length < 2 && !current.hidden) return null;
|
|
4557
4540
|
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsxs(DropdownMenuTrigger, {
|
|
4558
4541
|
render: /* @__PURE__ */ jsx(Button, {
|
|
4559
4542
|
variant: "outline",
|
|
4560
4543
|
className: "h-auto gap-1.5 rounded-md bg-card px-2.5 py-1.5 text-sm font-medium text-foreground"
|
|
4561
4544
|
}),
|
|
4562
|
-
children: [current.language, /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5 rotate-90 text-muted-foreground" })]
|
|
4545
|
+
children: [getLanguageName(current.language), /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5 rotate-90 text-muted-foreground" })]
|
|
4563
4546
|
}), /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
4564
4547
|
align: "start",
|
|
4565
4548
|
className: "min-w-32",
|
|
4566
4549
|
children: options.map((scope) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
4567
4550
|
onClick: () => {
|
|
4568
|
-
if (scope.language !== current.language)
|
|
4551
|
+
if (scope.language !== current.language) {
|
|
4552
|
+
const counterpart = standalone && scope.language ? getStandaloneCounterpart(standalone, scope.language) : null;
|
|
4553
|
+
navigate(counterpart?.path || scope.firstPageUrl);
|
|
4554
|
+
}
|
|
4569
4555
|
},
|
|
4570
4556
|
children: [/* @__PURE__ */ jsx("span", {
|
|
4571
4557
|
className: "grow",
|
|
4572
|
-
|
|
4558
|
+
lang: isValidLocale(scope.language) ? scope.language : void 0,
|
|
4559
|
+
children: scope.language ? getLanguageName(scope.language) : null
|
|
4573
4560
|
}), scope.language === current.language ? /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) : null]
|
|
4574
4561
|
}, scope.id))
|
|
4575
4562
|
})] });
|
|
4576
4563
|
}
|
|
4577
4564
|
|
|
4578
4565
|
//#endregion
|
|
4579
|
-
//#region ../../node_modules/.pnpm/cmdk@1.1.1_@types+react-
|
|
4566
|
+
//#region ../../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom_b7833f22e642c0a58838e454e2cd1ba9/node_modules/cmdk/dist/chunk-NZJY6EH4.mjs
|
|
4580
4567
|
var U = 1;
|
|
4581
4568
|
var Y$1 = .9;
|
|
4582
4569
|
var H = .8;
|
|
@@ -4648,7 +4635,7 @@ function isFrame(element) {
|
|
|
4648
4635
|
__name$14(isFrame, "isFrame");
|
|
4649
4636
|
|
|
4650
4637
|
//#endregion
|
|
4651
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-compose-
|
|
4638
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-compose-ref_60a8f511f5a953d1cc58e5040847ca1c/node_modules/@radix-ui/react-compose-refs/dist/index.mjs
|
|
4652
4639
|
var __defProp$13 = Object.defineProperty;
|
|
4653
4640
|
var __name$13 = (target, value) => __defProp$13(target, "name", {
|
|
4654
4641
|
value,
|
|
@@ -4683,7 +4670,7 @@ function useComposedRefs(...refs) {
|
|
|
4683
4670
|
__name$13(useComposedRefs, "useComposedRefs");
|
|
4684
4671
|
|
|
4685
4672
|
//#endregion
|
|
4686
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-context@1.
|
|
4673
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-context@1.2_dc174a77f999d3bc0470f0b9c664f7ff/node_modules/@radix-ui/react-context/dist/index.mjs
|
|
4687
4674
|
var __defProp$12 = Object.defineProperty;
|
|
4688
4675
|
var __name$12 = (target, value) => __defProp$12(target, "name", {
|
|
4689
4676
|
value,
|
|
@@ -4786,7 +4773,7 @@ function composeContextScopes(...scopes) {
|
|
|
4786
4773
|
__name$12(composeContextScopes, "composeContextScopes");
|
|
4787
4774
|
|
|
4788
4775
|
//#endregion
|
|
4789
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-use-layout-
|
|
4776
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-use-layout-_c99e7a4bfc0168fd072fc8506ded8cde/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
|
|
4790
4777
|
var useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {};
|
|
4791
4778
|
|
|
4792
4779
|
//#endregion
|
|
@@ -4808,7 +4795,7 @@ function useId$1(deterministicId) {
|
|
|
4808
4795
|
__name$11(useId$1, "useId");
|
|
4809
4796
|
|
|
4810
4797
|
//#endregion
|
|
4811
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-use-effect-
|
|
4798
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-use-effect-_e8d5e8242c04825bf34212c7f6280f14/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs
|
|
4812
4799
|
var __defProp$10 = Object.defineProperty;
|
|
4813
4800
|
var __name$10 = (target, value) => __defProp$10(target, "name", {
|
|
4814
4801
|
value,
|
|
@@ -4832,7 +4819,7 @@ function useEffectEvent(callback) {
|
|
|
4832
4819
|
__name$10(useEffectEvent, "useEffectEvent");
|
|
4833
4820
|
|
|
4834
4821
|
//#endregion
|
|
4835
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-use-
|
|
4822
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-use-control_22187853d61b94632003c277d0370b10/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
|
|
4836
4823
|
var __defProp$9 = Object.defineProperty;
|
|
4837
4824
|
var __name$9 = (target, value) => __defProp$9(target, "name", {
|
|
4838
4825
|
value,
|
|
@@ -5065,7 +5052,7 @@ var createSlottableError = /* @__PURE__ */ __name$8((ownerName) => {
|
|
|
5065
5052
|
var use = React[" use ".trim().toString()];
|
|
5066
5053
|
|
|
5067
5054
|
//#endregion
|
|
5068
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-primitive@
|
|
5055
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-primitive@2_89d529a1bae70a6b01b956c8b2bdbce1/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
5069
5056
|
var __defProp$7 = Object.defineProperty;
|
|
5070
5057
|
var __name$7 = (target, value) => __defProp$7(target, "name", {
|
|
5071
5058
|
value,
|
|
@@ -5112,7 +5099,7 @@ function dispatchDiscreteCustomEvent(target, event) {
|
|
|
5112
5099
|
__name$7(dispatchDiscreteCustomEvent, "dispatchDiscreteCustomEvent");
|
|
5113
5100
|
|
|
5114
5101
|
//#endregion
|
|
5115
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-use-
|
|
5102
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-use-callbac_b03f33a0fc5867b4ab17368fb2aecc43/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs
|
|
5116
5103
|
var __defProp$6 = Object.defineProperty;
|
|
5117
5104
|
var __name$6 = (target, value) => __defProp$6(target, "name", {
|
|
5118
5105
|
value,
|
|
@@ -5128,7 +5115,7 @@ function useCallbackRef$1(callback) {
|
|
|
5128
5115
|
__name$6(useCallbackRef$1, "useCallbackRef");
|
|
5129
5116
|
|
|
5130
5117
|
//#endregion
|
|
5131
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-
|
|
5118
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-dismissable_40e495cae3a960f65f80435c18b02650/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
|
|
5132
5119
|
var __defProp$5 = Object.defineProperty;
|
|
5133
5120
|
var __name$5 = (target, value) => __defProp$5(target, "name", {
|
|
5134
5121
|
value,
|
|
@@ -5393,7 +5380,7 @@ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
|
|
|
5393
5380
|
__name$5(handleAndDispatchCustomEvent, "handleAndDispatchCustomEvent");
|
|
5394
5381
|
|
|
5395
5382
|
//#endregion
|
|
5396
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-focus-
|
|
5383
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-focus-scope_3b4e29b84c639c7da7ed6c275ef9f34b/node_modules/@radix-ui/react-focus-scope/dist/index.mjs
|
|
5397
5384
|
var __defProp$4 = Object.defineProperty;
|
|
5398
5385
|
var __name$4 = (target, value) => __defProp$4(target, "name", {
|
|
5399
5386
|
value,
|
|
@@ -5600,7 +5587,7 @@ function removeLinks(items) {
|
|
|
5600
5587
|
__name$4(removeLinks, "removeLinks");
|
|
5601
5588
|
|
|
5602
5589
|
//#endregion
|
|
5603
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-portal@1.1.
|
|
5590
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-portal@1.1._7d49bbd59f67da7ea06e84940374bb40/node_modules/@radix-ui/react-portal/dist/index.mjs
|
|
5604
5591
|
var __defProp$3 = Object.defineProperty;
|
|
5605
5592
|
var __name$3 = (target, value) => __defProp$3(target, "name", {
|
|
5606
5593
|
value,
|
|
@@ -5618,7 +5605,7 @@ var Portal = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name$3(function
|
|
|
5618
5605
|
}, "Portal"));
|
|
5619
5606
|
|
|
5620
5607
|
//#endregion
|
|
5621
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-presence@1.
|
|
5608
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-presence@1._c16522d094fa2977c5a9a5cd628ab890/node_modules/@radix-ui/react-presence/dist/index.mjs
|
|
5622
5609
|
var __defProp$2 = Object.defineProperty;
|
|
5623
5610
|
var __name$2 = (target, value) => __defProp$2(target, "name", {
|
|
5624
5611
|
value,
|
|
@@ -5761,7 +5748,7 @@ function getElementRef(element) {
|
|
|
5761
5748
|
__name$2(getElementRef, "getElementRef");
|
|
5762
5749
|
|
|
5763
5750
|
//#endregion
|
|
5764
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-focus-
|
|
5751
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-focus-guard_0b6dc35411495c11d7017f4d480bfd1d/node_modules/@radix-ui/react-focus-guards/dist/index.mjs
|
|
5765
5752
|
var __defProp$1 = Object.defineProperty;
|
|
5766
5753
|
var __name$1 = (target, value) => __defProp$1(target, "name", {
|
|
5767
5754
|
value,
|
|
@@ -5838,7 +5825,7 @@ function __spreadArray(to, from, pack) {
|
|
|
5838
5825
|
}
|
|
5839
5826
|
|
|
5840
5827
|
//#endregion
|
|
5841
|
-
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.
|
|
5828
|
+
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.3_6765803d5ca9f56610f613c0cdac7218/node_modules/react-remove-scroll-bar/dist/es2015/constants.js
|
|
5842
5829
|
var zeroRightClassName = "right-scroll-bar-position";
|
|
5843
5830
|
var fullWidthClassName = "width-before-scroll-bar";
|
|
5844
5831
|
var noScrollbarsClassName = "with-scroll-bars-hidden";
|
|
@@ -6116,7 +6103,7 @@ var getNonce = function() {
|
|
|
6116
6103
|
};
|
|
6117
6104
|
|
|
6118
6105
|
//#endregion
|
|
6119
|
-
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.
|
|
6106
|
+
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.3_b6136bc3c152300a6c842c4b9688e211/node_modules/react-style-singleton/dist/es2015/singleton.js
|
|
6120
6107
|
function makeStyleTag() {
|
|
6121
6108
|
if (!document) return null;
|
|
6122
6109
|
var tag = document.createElement("style");
|
|
@@ -6156,7 +6143,7 @@ var stylesheetSingleton = function() {
|
|
|
6156
6143
|
};
|
|
6157
6144
|
|
|
6158
6145
|
//#endregion
|
|
6159
|
-
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.
|
|
6146
|
+
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.3_b6136bc3c152300a6c842c4b9688e211/node_modules/react-style-singleton/dist/es2015/hook.js
|
|
6160
6147
|
/**
|
|
6161
6148
|
* creates a hook to control style singleton
|
|
6162
6149
|
* @see {@link styleSingleton} for a safer component version
|
|
@@ -6179,7 +6166,7 @@ var styleHookSingleton = function() {
|
|
|
6179
6166
|
};
|
|
6180
6167
|
|
|
6181
6168
|
//#endregion
|
|
6182
|
-
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.
|
|
6169
|
+
//#region ../../node_modules/.pnpm/react-style-singleton@2.2.3_b6136bc3c152300a6c842c4b9688e211/node_modules/react-style-singleton/dist/es2015/component.js
|
|
6183
6170
|
/**
|
|
6184
6171
|
* create a Component to add styles on demand
|
|
6185
6172
|
* - styles are added when first instance is mounted
|
|
@@ -6197,7 +6184,7 @@ var styleSingleton = function() {
|
|
|
6197
6184
|
};
|
|
6198
6185
|
|
|
6199
6186
|
//#endregion
|
|
6200
|
-
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.
|
|
6187
|
+
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.3_6765803d5ca9f56610f613c0cdac7218/node_modules/react-remove-scroll-bar/dist/es2015/utils.js
|
|
6201
6188
|
var zeroGap = {
|
|
6202
6189
|
left: 0,
|
|
6203
6190
|
top: 0,
|
|
@@ -6233,7 +6220,7 @@ var getGapWidth = function(gapMode) {
|
|
|
6233
6220
|
};
|
|
6234
6221
|
|
|
6235
6222
|
//#endregion
|
|
6236
|
-
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.
|
|
6223
|
+
//#region ../../node_modules/.pnpm/react-remove-scroll-bar@2.3_6765803d5ca9f56610f613c0cdac7218/node_modules/react-remove-scroll-bar/dist/es2015/component.js
|
|
6237
6224
|
var Style = styleSingleton();
|
|
6238
6225
|
var lockAttribute = "data-scroll-locked";
|
|
6239
6226
|
var getStyles = function(_a, allowRelative, gapMode, important) {
|
|
@@ -6648,7 +6635,7 @@ var hideOthers = function(originalTarget, parentNode, markerName) {
|
|
|
6648
6635
|
};
|
|
6649
6636
|
|
|
6650
6637
|
//#endregion
|
|
6651
|
-
//#region ../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.
|
|
6638
|
+
//#region ../../node_modules/.pnpm/@radix-ui+react-dialog@1.1._f43cda4f5f60c6fd8f384ced683c6d90/node_modules/@radix-ui/react-dialog/dist/index.mjs
|
|
6652
6639
|
var __defProp = Object.defineProperty;
|
|
6653
6640
|
var __name = (target, value) => __defProp(target, "name", {
|
|
6654
6641
|
value,
|
|
@@ -6839,7 +6826,7 @@ function getState(open) {
|
|
|
6839
6826
|
__name(getState, "getState");
|
|
6840
6827
|
|
|
6841
6828
|
//#endregion
|
|
6842
|
-
//#region ../../node_modules/.pnpm/cmdk@1.1.1_@types+react-
|
|
6829
|
+
//#region ../../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom_b7833f22e642c0a58838e454e2cd1ba9/node_modules/cmdk/dist/index.mjs
|
|
6843
6830
|
var N = "[cmdk-group=\"\"]";
|
|
6844
6831
|
var Y = "[cmdk-group-items=\"\"]";
|
|
6845
6832
|
var be = "[cmdk-group-heading=\"\"]";
|
|
@@ -7726,7 +7713,7 @@ function Header({ site }) {
|
|
|
7726
7713
|
const { logo, navbar, name, appearance, labels } = site;
|
|
7727
7714
|
const { pathname } = useLocation();
|
|
7728
7715
|
const docs = getScopeByPathname(pathname).docs;
|
|
7729
|
-
const brandHref = logo?.href || (
|
|
7716
|
+
const brandHref = logo?.href || getHomeHref(pathname);
|
|
7730
7717
|
const hasBrand = !!name || !!logo?.light || !!logo?.dark;
|
|
7731
7718
|
const brandClassName = "inline-flex items-center gap-2 text-xl font-bold text-foreground tracking-[-0.03em]";
|
|
7732
7719
|
const brandContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [logo?.invert && logo.light ? /* @__PURE__ */ jsx("img", {
|
|
@@ -8109,23 +8096,23 @@ function getOperation(key) {
|
|
|
8109
8096
|
return OPENAPI_OPERATIONS[`${method.toUpperCase()} ${rest.join(" ")}`];
|
|
8110
8097
|
}
|
|
8111
8098
|
/** Parameter groups shared by the renderer and table of contents. */
|
|
8112
|
-
function operationParameterSections(operation) {
|
|
8099
|
+
function operationParameterSections(operation, labels = englishLabels) {
|
|
8113
8100
|
return [
|
|
8114
8101
|
{
|
|
8115
8102
|
location: "header",
|
|
8116
|
-
name:
|
|
8103
|
+
name: labels.apiHeaders
|
|
8117
8104
|
},
|
|
8118
8105
|
{
|
|
8119
8106
|
location: "path",
|
|
8120
|
-
name:
|
|
8107
|
+
name: labels.apiPathParameters
|
|
8121
8108
|
},
|
|
8122
8109
|
{
|
|
8123
8110
|
location: "query",
|
|
8124
|
-
name:
|
|
8111
|
+
name: labels.apiQueryParameters
|
|
8125
8112
|
},
|
|
8126
8113
|
{
|
|
8127
8114
|
location: "cookie",
|
|
8128
|
-
name:
|
|
8115
|
+
name: labels.apiCookieParameters
|
|
8129
8116
|
}
|
|
8130
8117
|
].filter(({ location }) => operation.parameters[location].length > 0 || location === "header" && operation.security.length > 0);
|
|
8131
8118
|
}
|
|
@@ -8134,15 +8121,22 @@ function operationParameterSections(operation) {
|
|
|
8134
8121
|
* truth for section ids: the component, the table of contents, the content
|
|
8135
8122
|
* checker, and the search indexer all derive their anchors from these labels.
|
|
8136
8123
|
*/
|
|
8137
|
-
function operationSections(operation) {
|
|
8124
|
+
function operationSections(operation, labels = englishLabels) {
|
|
8138
8125
|
const slugger = createSlugger();
|
|
8139
|
-
|
|
8126
|
+
const names = [
|
|
8140
8127
|
...operationParameterSections(operation).map((section) => section.name),
|
|
8141
8128
|
operation.requestBody ? "Request body" : void 0,
|
|
8142
8129
|
operation.responses.length ? "Responses" : void 0,
|
|
8143
8130
|
operation.samples.length ? "Code samples" : void 0
|
|
8144
|
-
].filter((name) => Boolean(name))
|
|
8145
|
-
|
|
8131
|
+
].filter((name) => Boolean(name));
|
|
8132
|
+
const translated = [
|
|
8133
|
+
...operationParameterSections(operation, labels).map((section) => section.name),
|
|
8134
|
+
...operation.requestBody ? [labels.apiRequestBody] : [],
|
|
8135
|
+
...operation.responses.length ? [labels.apiResponses] : [],
|
|
8136
|
+
...operation.samples.length ? [labels.apiCodeSamples] : []
|
|
8137
|
+
];
|
|
8138
|
+
return names.map((name, index) => ({
|
|
8139
|
+
name: translated[index],
|
|
8146
8140
|
id: slugger.slug(name),
|
|
8147
8141
|
size: 2
|
|
8148
8142
|
}));
|
|
@@ -8151,30 +8145,32 @@ function operationSections(operation) {
|
|
|
8151
8145
|
//#endregion
|
|
8152
8146
|
//#region src/components/OpenApiOperation.tsx
|
|
8153
8147
|
function FieldChildren({ node }) {
|
|
8148
|
+
const labels = useLabels();
|
|
8154
8149
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [node.description, node.enum && node.enum.length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
8155
8150
|
className: "mt-1",
|
|
8156
8151
|
children: [
|
|
8157
|
-
|
|
8152
|
+
labels.fieldOptions,
|
|
8158
8153
|
" ",
|
|
8159
8154
|
node.enum.map((value, index) => /* @__PURE__ */ jsxs("span", { children: [index > 0 && ", ", /* @__PURE__ */ jsx("code", { children: value })] }, value))
|
|
8160
8155
|
]
|
|
8161
8156
|
})] });
|
|
8162
8157
|
}
|
|
8163
|
-
function schemaDetails(node) {
|
|
8158
|
+
function schemaDetails(node, labels) {
|
|
8164
8159
|
if (!node.children?.length) return void 0;
|
|
8165
8160
|
return /* @__PURE__ */ jsx(Expandable, {
|
|
8166
|
-
title: node.type === "oneOf" || node.type === "anyOf" ?
|
|
8161
|
+
title: node.type === "oneOf" || node.type === "anyOf" ? labels.allowedTypes : labels.properties,
|
|
8167
8162
|
children: /* @__PURE__ */ jsx(SchemaTable, { nodes: node.children })
|
|
8168
8163
|
});
|
|
8169
8164
|
}
|
|
8170
8165
|
function SchemaTable({ nodes }) {
|
|
8166
|
+
const labels = useLabels();
|
|
8171
8167
|
return /* @__PURE__ */ jsx(PropertiesTable, { children: nodes.map((node) => /* @__PURE__ */ jsx(PropertiesTable.Row, {
|
|
8172
8168
|
name: node.name || node.type,
|
|
8173
8169
|
type: node.type,
|
|
8174
8170
|
required: node.required,
|
|
8175
8171
|
deprecated: node.deprecated,
|
|
8176
8172
|
default: node.default,
|
|
8177
|
-
details: schemaDetails(node),
|
|
8173
|
+
details: schemaDetails(node, labels),
|
|
8178
8174
|
children: /* @__PURE__ */ jsx(FieldChildren, { node })
|
|
8179
8175
|
}, node.name || node.type)) });
|
|
8180
8176
|
}
|
|
@@ -8199,19 +8195,22 @@ function HighlightedCode({ language, title, html, source, lineCount }) {
|
|
|
8199
8195
|
}
|
|
8200
8196
|
/** The generated reference for one API operation, rendered under the page body. */
|
|
8201
8197
|
function OpenApiOperation({ operation }) {
|
|
8202
|
-
const
|
|
8198
|
+
const labels = useLabels();
|
|
8199
|
+
const sectionEntries = operationSections(operation);
|
|
8200
|
+
const sections = new Map(sectionEntries.map((entry) => [entry.name, entry.id]));
|
|
8203
8201
|
return /* @__PURE__ */ jsxs("div", {
|
|
8204
8202
|
className: "docs-markdown",
|
|
8205
8203
|
children: [
|
|
8206
|
-
operationParameterSections(operation).map(({ location, name }) => /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsx("h2", {
|
|
8207
|
-
id:
|
|
8204
|
+
operationParameterSections(operation, labels).map(({ location, name }, index) => /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsx("h2", {
|
|
8205
|
+
id: sectionEntries[index].id,
|
|
8208
8206
|
children: name
|
|
8209
8207
|
}), /* @__PURE__ */ jsxs(PropertiesTable, { children: [location === "header" && operation.security.length > 0 && /* @__PURE__ */ jsxs(PropertiesTable.Row, {
|
|
8210
8208
|
name: "Authorization",
|
|
8211
8209
|
type: "string",
|
|
8212
8210
|
required: true,
|
|
8213
8211
|
children: [
|
|
8214
|
-
|
|
8212
|
+
labels.apiCredentials,
|
|
8213
|
+
" ",
|
|
8215
8214
|
/* @__PURE__ */ jsx("code", { children: "Bearer <token>" }),
|
|
8216
8215
|
"."
|
|
8217
8216
|
]
|
|
@@ -8221,25 +8220,25 @@ function OpenApiOperation({ operation }) {
|
|
|
8221
8220
|
required: parameter.required,
|
|
8222
8221
|
deprecated: parameter.deprecated,
|
|
8223
8222
|
default: parameter.default,
|
|
8224
|
-
details: schemaDetails(parameter),
|
|
8223
|
+
details: schemaDetails(parameter, labels),
|
|
8225
8224
|
children: /* @__PURE__ */ jsx(FieldChildren, { node: parameter })
|
|
8226
8225
|
}, parameter.name))] })] }, location)),
|
|
8227
8226
|
operation.requestBody && /* @__PURE__ */ jsxs("section", { children: [
|
|
8228
8227
|
/* @__PURE__ */ jsx("h2", {
|
|
8229
8228
|
id: sections.get("Request body"),
|
|
8230
|
-
children:
|
|
8229
|
+
children: labels.apiRequestBody
|
|
8231
8230
|
}),
|
|
8232
8231
|
/* @__PURE__ */ jsx(SchemaFields, { node: operation.requestBody.schema }),
|
|
8233
8232
|
operation.requestBody.example && /* @__PURE__ */ jsx(HighlightedCode, {
|
|
8234
8233
|
language: "json",
|
|
8235
|
-
title:
|
|
8234
|
+
title: labels.apiExampleRequest,
|
|
8236
8235
|
html: operation.requestBody.exampleHtml,
|
|
8237
8236
|
source: operation.requestBody.example
|
|
8238
8237
|
})
|
|
8239
8238
|
] }),
|
|
8240
8239
|
operation.responses.length > 0 && /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsx("h2", {
|
|
8241
8240
|
id: sections.get("Responses"),
|
|
8242
|
-
children:
|
|
8241
|
+
children: labels.apiResponses
|
|
8243
8242
|
}), operation.responses.map((response) => /* @__PURE__ */ jsxs("div", {
|
|
8244
8243
|
className: "mt-6 first:mt-0",
|
|
8245
8244
|
children: [
|
|
@@ -8257,7 +8256,7 @@ function OpenApiOperation({ operation }) {
|
|
|
8257
8256
|
response.schema && /* @__PURE__ */ jsx(SchemaFields, { node: response.schema }),
|
|
8258
8257
|
response.example && /* @__PURE__ */ jsx(HighlightedCode, {
|
|
8259
8258
|
language: "json",
|
|
8260
|
-
title:
|
|
8259
|
+
title: labels.apiExampleResponse.replace("{status}", () => response.status),
|
|
8261
8260
|
html: response.exampleHtml,
|
|
8262
8261
|
source: response.example
|
|
8263
8262
|
})
|
|
@@ -8265,7 +8264,7 @@ function OpenApiOperation({ operation }) {
|
|
|
8265
8264
|
}, response.status))] }),
|
|
8266
8265
|
operation.samples.length > 0 && /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsx("h2", {
|
|
8267
8266
|
id: sections.get("Code samples"),
|
|
8268
|
-
children:
|
|
8267
|
+
children: labels.apiCodeSamples
|
|
8269
8268
|
}), /* @__PURE__ */ jsx(CodeGroup, { children: operation.samples.map((sample) => /* @__PURE__ */ jsx(HighlightedCode, {
|
|
8270
8269
|
language: sample.language,
|
|
8271
8270
|
title: sample.label,
|
|
@@ -8277,6 +8276,98 @@ function OpenApiOperation({ operation }) {
|
|
|
8277
8276
|
});
|
|
8278
8277
|
}
|
|
8279
8278
|
|
|
8279
|
+
//#endregion
|
|
8280
|
+
//#region src/components/PageActions.tsx
|
|
8281
|
+
function editHref(template, filePath) {
|
|
8282
|
+
if (!template) return void 0;
|
|
8283
|
+
const file = filePath.replace(/^\/+/, "").split("/").map(encodeURIComponent).join("/");
|
|
8284
|
+
const href = template.replaceAll("$file", file);
|
|
8285
|
+
try {
|
|
8286
|
+
const url = new URL(href);
|
|
8287
|
+
if (url.protocol === "https:" || url.protocol === "http:") return url.href;
|
|
8288
|
+
} catch {}
|
|
8289
|
+
}
|
|
8290
|
+
function PageActions({ page, frontmatter, site, lastUpdated }) {
|
|
8291
|
+
const [status, setStatus] = useState("idle");
|
|
8292
|
+
const [rating, setRating] = useState();
|
|
8293
|
+
const request = useRef(null);
|
|
8294
|
+
useEffect(() => () => request.current?.abort(), []);
|
|
8295
|
+
const feedback = frontmatter?.feedback === false ? null : site.feedback;
|
|
8296
|
+
const href = frontmatter?.editLink === false ? void 0 : editHref(typeof frontmatter?.editLink === "string" ? frontmatter.editLink : site.editLink?.url, page.filePath);
|
|
8297
|
+
async function submit(helpful) {
|
|
8298
|
+
if (!feedback || request.current || status === "success") return;
|
|
8299
|
+
const controller = new AbortController();
|
|
8300
|
+
request.current = controller;
|
|
8301
|
+
setRating(helpful);
|
|
8302
|
+
setStatus("pending");
|
|
8303
|
+
const timeout = window.setTimeout(() => controller.abort(), 15e3);
|
|
8304
|
+
try {
|
|
8305
|
+
const endpoint = new URL(toHref(feedback.endpoint), window.location.origin);
|
|
8306
|
+
if (!["https:", "http:"].includes(endpoint.protocol)) throw new Error("Invalid endpoint");
|
|
8307
|
+
if (!(await fetch(endpoint.href, {
|
|
8308
|
+
method: "POST",
|
|
8309
|
+
headers: { "Content-Type": "application/json" },
|
|
8310
|
+
body: JSON.stringify({
|
|
8311
|
+
helpful,
|
|
8312
|
+
path: toHref(page.url),
|
|
8313
|
+
title: frontmatter?.title || page.label,
|
|
8314
|
+
language: page.language,
|
|
8315
|
+
version: page.version
|
|
8316
|
+
}),
|
|
8317
|
+
signal: controller.signal
|
|
8318
|
+
})).ok) throw new Error("Feedback submission failed");
|
|
8319
|
+
setStatus("success");
|
|
8320
|
+
} catch {
|
|
8321
|
+
setStatus("error");
|
|
8322
|
+
} finally {
|
|
8323
|
+
window.clearTimeout(timeout);
|
|
8324
|
+
request.current = null;
|
|
8325
|
+
}
|
|
8326
|
+
}
|
|
8327
|
+
if (!href && !feedback && !lastUpdated) return null;
|
|
8328
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [(lastUpdated || href) && /* @__PURE__ */ jsxs("div", {
|
|
8329
|
+
className: "mt-8 flex items-baseline gap-4 text-sm text-muted-foreground",
|
|
8330
|
+
"data-pagefind-ignore": true,
|
|
8331
|
+
children: [lastUpdated && /* @__PURE__ */ jsx("div", {
|
|
8332
|
+
className: "min-w-0",
|
|
8333
|
+
children: lastUpdated
|
|
8334
|
+
}), href && /* @__PURE__ */ jsxs("a", {
|
|
8335
|
+
href,
|
|
8336
|
+
target: "_blank",
|
|
8337
|
+
rel: "noopener noreferrer",
|
|
8338
|
+
className: "ml-auto inline-flex shrink-0 items-center gap-1.5 text-right no-underline hover:text-primary",
|
|
8339
|
+
children: [site.editLink?.label || site.labels.editPage, /* @__PURE__ */ jsx(ExternalLink, {
|
|
8340
|
+
size: 14,
|
|
8341
|
+
"aria-hidden": "true"
|
|
8342
|
+
})]
|
|
8343
|
+
})]
|
|
8344
|
+
}), feedback && /* @__PURE__ */ jsxs("div", {
|
|
8345
|
+
className: "mt-8 flex flex-col gap-2 border-t border-border pt-6 text-sm",
|
|
8346
|
+
"aria-busy": status === "pending",
|
|
8347
|
+
"data-pagefind-ignore": true,
|
|
8348
|
+
children: [/* @__PURE__ */ jsxs("fieldset", {
|
|
8349
|
+
"aria-label": feedback.prompt || site.labels.feedbackPrompt,
|
|
8350
|
+
className: "flex flex-wrap items-center gap-2",
|
|
8351
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
8352
|
+
className: "mr-2 text-muted-foreground",
|
|
8353
|
+
children: feedback.prompt || site.labels.feedbackPrompt
|
|
8354
|
+
}), [true, false].map((helpful) => /* @__PURE__ */ jsx("button", {
|
|
8355
|
+
type: "button",
|
|
8356
|
+
"aria-pressed": rating === helpful,
|
|
8357
|
+
disabled: status === "pending" || status === "success",
|
|
8358
|
+
onClick: () => void submit(helpful),
|
|
8359
|
+
className: "rounded-md border border-border px-3 py-1.5 text-foreground hover:bg-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:cursor-default disabled:opacity-60 aria-pressed:border-primary aria-pressed:text-primary",
|
|
8360
|
+
children: helpful ? feedback.helpfulLabel || site.labels.feedbackYes : feedback.unhelpfulLabel || site.labels.feedbackNo
|
|
8361
|
+
}, String(helpful)))]
|
|
8362
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
8363
|
+
role: "status",
|
|
8364
|
+
"aria-live": "polite",
|
|
8365
|
+
className: "text-muted-foreground",
|
|
8366
|
+
children: [status === "success" && (feedback.successMessage || site.labels.feedbackSuccess), status === "error" && (feedback.errorMessage || site.labels.feedbackError)]
|
|
8367
|
+
})]
|
|
8368
|
+
})] });
|
|
8369
|
+
}
|
|
8370
|
+
|
|
8280
8371
|
//#endregion
|
|
8281
8372
|
//#region src/components/DocContent.tsx
|
|
8282
8373
|
/**
|
|
@@ -8377,17 +8468,19 @@ function DocContent({ page, doc, site }) {
|
|
|
8377
8468
|
children: /* @__PURE__ */ jsx(Content, {})
|
|
8378
8469
|
}),
|
|
8379
8470
|
operation && /* @__PURE__ */ jsx(OpenApiOperation, { operation }),
|
|
8380
|
-
|
|
8381
|
-
|
|
8382
|
-
|
|
8471
|
+
/* @__PURE__ */ jsx(PageActions, {
|
|
8472
|
+
page,
|
|
8473
|
+
frontmatter: doc.frontmatter,
|
|
8474
|
+
site,
|
|
8475
|
+
lastUpdated: lastModified ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
8383
8476
|
site.labels.lastUpdated,
|
|
8384
8477
|
" ",
|
|
8385
8478
|
/* @__PURE__ */ jsx("time", {
|
|
8386
8479
|
dateTime: lastModified,
|
|
8387
8480
|
children: dateFormat.format(new Date(lastModified))
|
|
8388
8481
|
})
|
|
8389
|
-
]
|
|
8390
|
-
}),
|
|
8482
|
+
] }) : void 0
|
|
8483
|
+
}, page.url),
|
|
8391
8484
|
related.length > 0 && /* @__PURE__ */ jsxs("nav", {
|
|
8392
8485
|
className: "mt-8",
|
|
8393
8486
|
"aria-label": site.labels.relatedTopics,
|
|
@@ -8463,6 +8556,7 @@ const NavigationButton = ({ label, url, eyebrow, isPrev }) => {
|
|
|
8463
8556
|
//#endregion
|
|
8464
8557
|
//#region src/components/Footer.tsx
|
|
8465
8558
|
function Footer({ footer, className = "" }) {
|
|
8559
|
+
const labels = useLabels();
|
|
8466
8560
|
if (!footer) return null;
|
|
8467
8561
|
const { socials, links: columns, attribution } = footer;
|
|
8468
8562
|
return /* @__PURE__ */ jsxs("footer", {
|
|
@@ -8487,10 +8581,14 @@ function Footer({ footer, className = "" }) {
|
|
|
8487
8581
|
children: [attribution ? /* @__PURE__ */ jsxs("a", {
|
|
8488
8582
|
href: "https://shiso.umami.is?ref=docs-footer",
|
|
8489
8583
|
className: "text-sm hover:text-foreground",
|
|
8490
|
-
children: [
|
|
8491
|
-
|
|
8492
|
-
|
|
8493
|
-
|
|
8584
|
+
children: [
|
|
8585
|
+
labels.poweredBy,
|
|
8586
|
+
" ",
|
|
8587
|
+
/* @__PURE__ */ jsx("span", {
|
|
8588
|
+
className: "font-bold",
|
|
8589
|
+
children: "shiso"
|
|
8590
|
+
})
|
|
8591
|
+
]
|
|
8494
8592
|
}) : /* @__PURE__ */ jsx("span", {}), socials.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
8495
8593
|
className: "flex items-center gap-1",
|
|
8496
8594
|
children: socials.map((link) => {
|
|
@@ -8794,6 +8892,7 @@ function SheetOverlay({ className, ...props }) {
|
|
|
8794
8892
|
});
|
|
8795
8893
|
}
|
|
8796
8894
|
function SheetContent({ className, children, side = "right", showCloseButton = true, ...props }) {
|
|
8895
|
+
const labels = useLabels();
|
|
8797
8896
|
return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(DialogPopup, {
|
|
8798
8897
|
"data-slot": "sheet-content",
|
|
8799
8898
|
"data-side": side,
|
|
@@ -8808,7 +8907,7 @@ function SheetContent({ className, children, side = "right", showCloseButton = t
|
|
|
8808
8907
|
}),
|
|
8809
8908
|
children: [/* @__PURE__ */ jsx(X$1, {}), /* @__PURE__ */ jsx("span", {
|
|
8810
8909
|
className: "sr-only",
|
|
8811
|
-
children:
|
|
8910
|
+
children: labels.close
|
|
8812
8911
|
})]
|
|
8813
8912
|
})]
|
|
8814
8913
|
})] });
|
|
@@ -8849,7 +8948,7 @@ function Docs({ page, doc, site }) {
|
|
|
8849
8948
|
}), /* @__PURE__ */ jsx(Footer, { footer: site.footer })]
|
|
8850
8949
|
});
|
|
8851
8950
|
const operation = getOperation(doc.frontmatter?.openapi);
|
|
8852
|
-
const toc = operation ? [...doc.toc || [], ...operationSections(operation)] : doc.toc;
|
|
8951
|
+
const toc = operation ? [...doc.toc || [], ...operationSections(operation, site.labels)] : doc.toc;
|
|
8853
8952
|
return /* @__PURE__ */ jsx(PanelProvider, { children: /* @__PURE__ */ jsx(DocsBody, {
|
|
8854
8953
|
page,
|
|
8855
8954
|
doc,
|
|
@@ -9014,38 +9113,44 @@ function StandalonePageView({ page, site }) {
|
|
|
9014
9113
|
|
|
9015
9114
|
//#endregion
|
|
9016
9115
|
//#region src/App.tsx
|
|
9116
|
+
const { mermaidSource: _mermaidSource, usePanelContent: _usePanelContent, useSetPanelContent: _useSetPanelContent, ...mdxDocsComponents } = docs_exports;
|
|
9017
9117
|
const mdxComponents = {
|
|
9018
|
-
...
|
|
9118
|
+
...mdxDocsComponents,
|
|
9019
9119
|
img: ZoomableImage,
|
|
9020
9120
|
pre: CodeBlock
|
|
9021
9121
|
};
|
|
9022
9122
|
function App() {
|
|
9023
|
-
|
|
9024
|
-
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
|
|
9028
|
-
|
|
9029
|
-
|
|
9030
|
-
|
|
9031
|
-
|
|
9032
|
-
|
|
9033
|
-
|
|
9034
|
-
|
|
9035
|
-
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
9039
|
-
|
|
9123
|
+
const { pathname } = useLocation();
|
|
9124
|
+
const siteModel = getSiteModelByPathname(pathname);
|
|
9125
|
+
return /* @__PURE__ */ jsx(LabelContext.Provider, {
|
|
9126
|
+
value: siteModel.labels,
|
|
9127
|
+
children: /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(MDXProvider, {
|
|
9128
|
+
components: mdxComponents,
|
|
9129
|
+
children: /* @__PURE__ */ jsx(Layout, {
|
|
9130
|
+
site: siteModel,
|
|
9131
|
+
children: /* @__PURE__ */ jsxs(Routes, { children: [
|
|
9132
|
+
standalonePages.map((page) => /* @__PURE__ */ jsx(Route, {
|
|
9133
|
+
path: page.path,
|
|
9134
|
+
element: /* @__PURE__ */ jsx(StandalonePageView, {
|
|
9135
|
+
page,
|
|
9136
|
+
site: siteModel
|
|
9137
|
+
})
|
|
9138
|
+
}, page.path)),
|
|
9139
|
+
docsHomeUrl !== "/" && !hasRootStandalonePage ? /* @__PURE__ */ jsx(Route, {
|
|
9140
|
+
path: "/",
|
|
9141
|
+
element: /* @__PURE__ */ jsx(Navigate, {
|
|
9142
|
+
to: docsHomeUrl,
|
|
9143
|
+
replace: true
|
|
9144
|
+
})
|
|
9145
|
+
}) : null,
|
|
9146
|
+
/* @__PURE__ */ jsx(Route, {
|
|
9147
|
+
path: "*",
|
|
9148
|
+
element: /* @__PURE__ */ jsx(DocPage, { site: siteModel })
|
|
9040
9149
|
})
|
|
9041
|
-
})
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
})
|
|
9046
|
-
] })
|
|
9047
|
-
})
|
|
9048
|
-
}) });
|
|
9150
|
+
] })
|
|
9151
|
+
})
|
|
9152
|
+
}) })
|
|
9153
|
+
});
|
|
9049
9154
|
}
|
|
9050
9155
|
|
|
9051
9156
|
//#endregion
|