@arbidocs/blocks 0.5.34 → 0.5.36
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/README.md +30 -0
- package/dist/{ConnectedNativeDocxComparison-4R5WW7IU.cjs → ConnectedNativeDocxComparison-H2OZMWHT.cjs} +7 -7
- package/dist/{ConnectedNativeDocxComparison-4R5WW7IU.cjs.map → ConnectedNativeDocxComparison-H2OZMWHT.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-AH6KR4CZ.js → ConnectedNativeDocxComparison-RWKFPJPJ.js} +6 -6
- package/dist/{ConnectedStreamedWordArtifact-JJI3HR7U.js.map → ConnectedNativeDocxComparison-RWKFPJPJ.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-ETEJM7GN.js → ConnectedNativeDocxEditor-43BI5LN6.js} +5 -5
- package/dist/{ConnectedNativeDocxEditor-ETEJM7GN.js.map → ConnectedNativeDocxEditor-43BI5LN6.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-MJVE2I33.cjs → ConnectedNativeDocxEditor-6DQEM6SD.cjs} +7 -7
- package/dist/{ConnectedNativeDocxEditor-MJVE2I33.cjs.map → ConnectedNativeDocxEditor-6DQEM6SD.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-S7EQ4FM2.cjs → ConnectedStreamedWordArtifact-3VKYIG6C.cjs} +7 -7
- package/dist/ConnectedStreamedWordArtifact-3VKYIG6C.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-JJI3HR7U.js → ConnectedStreamedWordArtifact-TEB332E3.js} +6 -6
- package/dist/{ConnectedNativeDocxComparison-AH6KR4CZ.js.map → ConnectedStreamedWordArtifact-TEB332E3.js.map} +1 -1
- package/dist/agents/index.cjs +326 -326
- package/dist/agents/index.js +4 -4
- package/dist/calls/index.cjs +1 -1
- package/dist/calls/index.js +1 -1
- package/dist/{chunk-SSYRPBL5.cjs → chunk-2QDNQM63.cjs} +3 -3
- package/dist/{chunk-SSYRPBL5.cjs.map → chunk-2QDNQM63.cjs.map} +1 -1
- package/dist/{chunk-H7L43DIE.js → chunk-46WCQ4F3.js} +8 -3
- package/dist/chunk-46WCQ4F3.js.map +1 -0
- package/dist/{chunk-UWXCT3ON.js → chunk-4DKI37QQ.js} +3 -3
- package/dist/{chunk-UWXCT3ON.js.map → chunk-4DKI37QQ.js.map} +1 -1
- package/dist/{chunk-FSEZEVWZ.cjs → chunk-5NTSJV5H.cjs} +219 -2
- package/dist/chunk-5NTSJV5H.cjs.map +1 -0
- package/dist/{chunk-WUG24K7P.cjs → chunk-5V4HH7EH.cjs} +7 -2
- package/dist/chunk-5V4HH7EH.cjs.map +1 -0
- package/dist/{chunk-J6U6DIZK.cjs → chunk-6EQSP77K.cjs} +5 -5
- package/dist/{chunk-J6U6DIZK.cjs.map → chunk-6EQSP77K.cjs.map} +1 -1
- package/dist/{chunk-OPK6GYYR.js → chunk-7CHI36EP.js} +3 -3
- package/dist/{chunk-OPK6GYYR.js.map → chunk-7CHI36EP.js.map} +1 -1
- package/dist/{chunk-KBISVJPU.cjs → chunk-BRYRZOS3.cjs} +4 -4
- package/dist/{chunk-KBISVJPU.cjs.map → chunk-BRYRZOS3.cjs.map} +1 -1
- package/dist/{chunk-O76V2TUY.js → chunk-EZSYYENN.js} +5 -5
- package/dist/{chunk-O76V2TUY.js.map → chunk-EZSYYENN.js.map} +1 -1
- package/dist/{chunk-G5ISXB5I.js → chunk-FHB4G77H.js} +3 -3
- package/dist/{chunk-G5ISXB5I.js.map → chunk-FHB4G77H.js.map} +1 -1
- package/dist/{chunk-POU4O4D7.cjs → chunk-FY4C7HU5.cjs} +9 -9
- package/dist/{chunk-POU4O4D7.cjs.map → chunk-FY4C7HU5.cjs.map} +1 -1
- package/dist/{chunk-AL4GAWD3.js → chunk-MLHOG7YH.js} +3 -3
- package/dist/{chunk-AL4GAWD3.js.map → chunk-MLHOG7YH.js.map} +1 -1
- package/dist/{chunk-RFQ2FGL4.js → chunk-NUV5F6MM.js} +3 -3
- package/dist/{chunk-RFQ2FGL4.js.map → chunk-NUV5F6MM.js.map} +1 -1
- package/dist/{chunk-B426HYRI.cjs → chunk-PUX4M22Q.cjs} +49 -49
- package/dist/{chunk-B426HYRI.cjs.map → chunk-PUX4M22Q.cjs.map} +1 -1
- package/dist/{chunk-LTEDORG3.js → chunk-QFYRXQTD.js} +220 -5
- package/dist/chunk-QFYRXQTD.js.map +1 -0
- package/dist/{chunk-SXYXFCHN.js → chunk-VKY4SQMH.js} +3 -3
- package/dist/{chunk-SXYXFCHN.js.map → chunk-VKY4SQMH.js.map} +1 -1
- package/dist/{chunk-QU77RRZP.cjs → chunk-VMLEISRZ.cjs} +8 -8
- package/dist/{chunk-QU77RRZP.cjs.map → chunk-VMLEISRZ.cjs.map} +1 -1
- package/dist/{chunk-R3QNE46Z.cjs → chunk-XFSEPGF7.cjs} +4 -4
- package/dist/{chunk-R3QNE46Z.cjs.map → chunk-XFSEPGF7.cjs.map} +1 -1
- package/dist/collaboration/index.cjs +67 -67
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/docx.cjs +9 -9
- package/dist/connect/docx.js +5 -5
- package/dist/connect/index.cjs +301 -301
- package/dist/connect/index.js +9 -9
- package/dist/connect/viewer.cjs +5 -5
- package/dist/connect/viewer.js +5 -5
- package/dist/index.cjs +552 -501
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +51 -10
- package/dist/index.js.map +1 -1
- package/dist/nav/actions.d.ts +24 -0
- package/dist/nav/manifest.d.ts +16 -0
- package/dist/nav/types.d.ts +2 -0
- package/dist/shell/DockZone.d.ts +27 -0
- package/dist/shell/PanelModeSwitcher.d.ts +30 -0
- package/dist/shell/index.cjs +47 -39
- package/dist/shell/index.d.ts +2 -0
- package/dist/shell/index.js +1 -1
- package/dist/workflow-canvas/index.cjs +17 -17
- package/dist/workflow-canvas/index.js +4 -4
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-S7EQ4FM2.cjs.map +0 -1
- package/dist/chunk-FSEZEVWZ.cjs.map +0 -1
- package/dist/chunk-H7L43DIE.js.map +0 -1
- package/dist/chunk-LTEDORG3.js.map +0 -1
- package/dist/chunk-WUG24K7P.cjs.map +0 -1
|
@@ -1685,6 +1685,221 @@ function SplitLayout({
|
|
|
1685
1685
|
}
|
|
1686
1686
|
);
|
|
1687
1687
|
}
|
|
1688
|
+
var MIN_DOCK_PX = 200;
|
|
1689
|
+
var MIN_MAIN_PX = 300;
|
|
1690
|
+
var DEFAULT_DOCK_PX = 544;
|
|
1691
|
+
var MOBILE_BREAKPOINT_PX = 640;
|
|
1692
|
+
function DockZone({ children, ...props }) {
|
|
1693
|
+
const [hasDockedContent, setHasDockedContent] = react.useState(false);
|
|
1694
|
+
const [dockWidth, setDockWidth] = react.useState(null);
|
|
1695
|
+
const [isResizing, setIsResizing] = react.useState(false);
|
|
1696
|
+
const [dragPosition, setDragPosition] = react.useState(null);
|
|
1697
|
+
const [containerWidth, setContainerWidth] = react.useState(0);
|
|
1698
|
+
const containerRef = react.useRef(null);
|
|
1699
|
+
const dockZoneRef = react.useRef(null);
|
|
1700
|
+
react.useEffect(() => {
|
|
1701
|
+
const el = containerRef.current;
|
|
1702
|
+
if (!el) return;
|
|
1703
|
+
const observer = new ResizeObserver((entries) => {
|
|
1704
|
+
const width = entries[0]?.contentRect.width;
|
|
1705
|
+
if (width !== void 0) setContainerWidth(width);
|
|
1706
|
+
});
|
|
1707
|
+
observer.observe(el);
|
|
1708
|
+
return () => observer.disconnect();
|
|
1709
|
+
}, []);
|
|
1710
|
+
const isMobile = containerWidth > 0 && containerWidth < MOBILE_BREAKPOINT_PX;
|
|
1711
|
+
react.useEffect(() => {
|
|
1712
|
+
const el = dockZoneRef.current;
|
|
1713
|
+
if (!el) return;
|
|
1714
|
+
const update = () => {
|
|
1715
|
+
const hasChildren = el.children.length > 0;
|
|
1716
|
+
setHasDockedContent(hasChildren);
|
|
1717
|
+
if (hasChildren) {
|
|
1718
|
+
const requestedWidth = el.firstElementChild?.getAttribute("data-dock-width");
|
|
1719
|
+
if (requestedWidth) {
|
|
1720
|
+
setDockWidth(parseInt(requestedWidth, 10));
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
};
|
|
1724
|
+
const observer = new MutationObserver(update);
|
|
1725
|
+
update();
|
|
1726
|
+
observer.observe(el, { childList: true });
|
|
1727
|
+
return () => observer.disconnect();
|
|
1728
|
+
}, []);
|
|
1729
|
+
const handleMouseDown = react.useCallback(() => {
|
|
1730
|
+
setIsResizing(true);
|
|
1731
|
+
setDragPosition(null);
|
|
1732
|
+
}, []);
|
|
1733
|
+
const handleMouseMove = react.useCallback(
|
|
1734
|
+
(e) => {
|
|
1735
|
+
if (!isResizing || !containerRef.current) return;
|
|
1736
|
+
const rect = containerRef.current.getBoundingClientRect();
|
|
1737
|
+
const x = e.clientX - rect.left;
|
|
1738
|
+
const clamped = Math.min(Math.max(x, MIN_MAIN_PX), rect.width - MIN_DOCK_PX);
|
|
1739
|
+
setDragPosition(clamped);
|
|
1740
|
+
},
|
|
1741
|
+
[isResizing]
|
|
1742
|
+
);
|
|
1743
|
+
const handleMouseUp = react.useCallback(() => {
|
|
1744
|
+
if (dragPosition !== null && containerRef.current) {
|
|
1745
|
+
const containerWidth2 = containerRef.current.getBoundingClientRect().width;
|
|
1746
|
+
setDockWidth(containerWidth2 - dragPosition);
|
|
1747
|
+
}
|
|
1748
|
+
setIsResizing(false);
|
|
1749
|
+
setDragPosition(null);
|
|
1750
|
+
}, [dragPosition]);
|
|
1751
|
+
react.useEffect(() => {
|
|
1752
|
+
if (!isResizing) return;
|
|
1753
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
1754
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
1755
|
+
document.body.style.cursor = "col-resize";
|
|
1756
|
+
document.body.style.userSelect = "none";
|
|
1757
|
+
return () => {
|
|
1758
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
1759
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
1760
|
+
document.body.style.cursor = "";
|
|
1761
|
+
document.body.style.userSelect = "";
|
|
1762
|
+
};
|
|
1763
|
+
}, [isResizing, handleMouseMove, handleMouseUp]);
|
|
1764
|
+
const effectiveDockWidth = hasDockedContent && containerWidth > 0 ? isMobile ? containerWidth : Math.min(
|
|
1765
|
+
Math.max(dockWidth ?? DEFAULT_DOCK_PX, MIN_DOCK_PX),
|
|
1766
|
+
containerWidth - MIN_MAIN_PX
|
|
1767
|
+
) : 0;
|
|
1768
|
+
const mainHidden = isMobile && hasDockedContent;
|
|
1769
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: "h-full relative flex", "data-testid": props["data-testid"], children: [
|
|
1770
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1771
|
+
"div",
|
|
1772
|
+
{
|
|
1773
|
+
style: {
|
|
1774
|
+
width: mainHidden ? 0 : `calc(100% - ${effectiveDockWidth}px)`,
|
|
1775
|
+
// Reserve gutter space so the vertical scrollbar doesn't appear and
|
|
1776
|
+
// disappear as streaming content crosses the viewport boundary —
|
|
1777
|
+
// that toggle reflows the layout and reads as a screen-wide flicker.
|
|
1778
|
+
scrollbarGutter: "stable"
|
|
1779
|
+
},
|
|
1780
|
+
className: ui.cn(
|
|
1781
|
+
// The CSS container for the page's @-variants (PageContainer must not be one; see there).
|
|
1782
|
+
"@container h-full overflow-auto",
|
|
1783
|
+
hasDockedContent && !isMobile && "border-r",
|
|
1784
|
+
mainHidden && "overflow-hidden",
|
|
1785
|
+
// Animate opening only. On close the portaled content has already
|
|
1786
|
+
// unmounted, so animating leaves an empty strip shrinking while the
|
|
1787
|
+
// page behind reflows — reads as flicker over heavy content like the
|
|
1788
|
+
// documents grid. Snap closed instead. Resizing is also instant so
|
|
1789
|
+
// the divider doesn't lag the cursor.
|
|
1790
|
+
hasDockedContent && !isResizing && "transition-[width] duration-300 ease-in-out"
|
|
1791
|
+
),
|
|
1792
|
+
"aria-hidden": mainHidden,
|
|
1793
|
+
inert: mainHidden,
|
|
1794
|
+
"data-scroll-container": true,
|
|
1795
|
+
children
|
|
1796
|
+
}
|
|
1797
|
+
),
|
|
1798
|
+
hasDockedContent && !isMobile && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1799
|
+
"div",
|
|
1800
|
+
{
|
|
1801
|
+
className: "group flex w-2 flex-shrink-0 cursor-col-resize items-center justify-center",
|
|
1802
|
+
onMouseDown: handleMouseDown,
|
|
1803
|
+
"data-testid": "dock-resize-handle",
|
|
1804
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-1 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-primary" })
|
|
1805
|
+
}
|
|
1806
|
+
),
|
|
1807
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1808
|
+
"div",
|
|
1809
|
+
{
|
|
1810
|
+
ref: dockZoneRef,
|
|
1811
|
+
id: "dock-zone",
|
|
1812
|
+
style: { width: effectiveDockWidth },
|
|
1813
|
+
className: ui.cn(
|
|
1814
|
+
"h-full overflow-hidden flex-shrink-0",
|
|
1815
|
+
hasDockedContent && !isResizing && "transition-[width] duration-300 ease-in-out"
|
|
1816
|
+
)
|
|
1817
|
+
}
|
|
1818
|
+
),
|
|
1819
|
+
isResizing && dragPosition !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1820
|
+
"div",
|
|
1821
|
+
{
|
|
1822
|
+
className: "absolute top-0 bottom-0 w-0.5 bg-primary z-50 pointer-events-none",
|
|
1823
|
+
style: { left: dragPosition }
|
|
1824
|
+
}
|
|
1825
|
+
),
|
|
1826
|
+
isResizing && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 z-40 cursor-col-resize" })
|
|
1827
|
+
] });
|
|
1828
|
+
}
|
|
1829
|
+
var btnClass = "h-7 w-7 p-0 text-muted-foreground hover:text-foreground";
|
|
1830
|
+
function SwitcherButton({
|
|
1831
|
+
label,
|
|
1832
|
+
inPopout = false,
|
|
1833
|
+
onClick,
|
|
1834
|
+
testId,
|
|
1835
|
+
children
|
|
1836
|
+
}) {
|
|
1837
|
+
const button = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1838
|
+
ui.Button,
|
|
1839
|
+
{
|
|
1840
|
+
variant: "ghost",
|
|
1841
|
+
size: "sm",
|
|
1842
|
+
className: btnClass,
|
|
1843
|
+
"aria-label": label,
|
|
1844
|
+
title: inPopout ? label : void 0,
|
|
1845
|
+
onClick,
|
|
1846
|
+
"data-testid": testId,
|
|
1847
|
+
children
|
|
1848
|
+
}
|
|
1849
|
+
);
|
|
1850
|
+
if (inPopout) return button;
|
|
1851
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
|
|
1852
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: button }),
|
|
1853
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { children: label })
|
|
1854
|
+
] });
|
|
1855
|
+
}
|
|
1856
|
+
var TABLET_AND_BELOW_QUERY = "(max-width: 1024px)";
|
|
1857
|
+
function PanelModeSwitcher({
|
|
1858
|
+
mode,
|
|
1859
|
+
onModeChange,
|
|
1860
|
+
onClose,
|
|
1861
|
+
disablePopout,
|
|
1862
|
+
closeTestId = "dialog-close-button"
|
|
1863
|
+
}) {
|
|
1864
|
+
const isPopout = mode === "popout";
|
|
1865
|
+
const isSmallScreen = chunkFX3K6LNZ_cjs.useIsPhone();
|
|
1866
|
+
const isTabletAndBelow = chunkFX3K6LNZ_cjs.useMediaQuery(TABLET_AND_BELOW_QUERY);
|
|
1867
|
+
const closeButton = onClose && /* @__PURE__ */ jsxRuntime.jsx(SwitcherButton, { label: "Close (Esc)", onClick: onClose, testId: closeTestId, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "w-3.5 h-3.5" }) });
|
|
1868
|
+
if (isSmallScreen) {
|
|
1869
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5 flex-shrink-0", children: closeButton });
|
|
1870
|
+
}
|
|
1871
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-0.5 flex-shrink-0", children: [
|
|
1872
|
+
!disablePopout && !isTabletAndBelow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1873
|
+
SwitcherButton,
|
|
1874
|
+
{
|
|
1875
|
+
label: isPopout ? "Pop back in" : "Open in new window",
|
|
1876
|
+
inPopout: isPopout,
|
|
1877
|
+
onClick: () => onModeChange(isPopout ? "docked" : "popout"),
|
|
1878
|
+
testId: isPopout ? "pop-into-main-window-button" : "open-in-new-window-button",
|
|
1879
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "w-3.5 h-3.5" })
|
|
1880
|
+
}
|
|
1881
|
+
),
|
|
1882
|
+
!isPopout && mode !== "docked" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1883
|
+
SwitcherButton,
|
|
1884
|
+
{
|
|
1885
|
+
label: "Split screen",
|
|
1886
|
+
onClick: () => onModeChange("docked"),
|
|
1887
|
+
testId: "dock-panel-button",
|
|
1888
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelRight, { className: "w-3.5 h-3.5" })
|
|
1889
|
+
}
|
|
1890
|
+
),
|
|
1891
|
+
!isPopout && mode !== "overlay" && !isTabletAndBelow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1892
|
+
SwitcherButton,
|
|
1893
|
+
{
|
|
1894
|
+
label: "Float as overlay",
|
|
1895
|
+
onClick: () => onModeChange("overlay"),
|
|
1896
|
+
testId: "overlay-panel-button",
|
|
1897
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PictureInPicture2, { className: "w-3.5 h-3.5" })
|
|
1898
|
+
}
|
|
1899
|
+
),
|
|
1900
|
+
!isPopout && closeButton
|
|
1901
|
+
] });
|
|
1902
|
+
}
|
|
1688
1903
|
|
|
1689
1904
|
Object.defineProperty(exports, "UserMenu", {
|
|
1690
1905
|
enumerable: true,
|
|
@@ -1703,12 +1918,14 @@ exports.DEFAULT_MOBILE_BARS_LABELS = DEFAULT_MOBILE_BARS_LABELS;
|
|
|
1703
1918
|
exports.DEFAULT_OFFLINE_PILL_LABELS = DEFAULT_OFFLINE_PILL_LABELS;
|
|
1704
1919
|
exports.DEFAULT_REMOTE_CONTROL_PILL_LABELS = DEFAULT_REMOTE_CONTROL_PILL_LABELS;
|
|
1705
1920
|
exports.DEFAULT_TIP_CARD_LABELS = DEFAULT_TIP_CARD_LABELS;
|
|
1921
|
+
exports.DockZone = DockZone;
|
|
1706
1922
|
exports.INSTALL_PROMPT_DISMISSED_KEY = INSTALL_PROMPT_DISMISSED_KEY;
|
|
1707
1923
|
exports.InfoBar = InfoBar;
|
|
1708
1924
|
exports.InstallPrompt = InstallPrompt;
|
|
1709
1925
|
exports.MobileAppBar = MobileAppBar;
|
|
1710
1926
|
exports.MobileTabBar = MobileTabBar;
|
|
1711
1927
|
exports.OfflinePill = OfflinePill;
|
|
1928
|
+
exports.PanelModeSwitcher = PanelModeSwitcher;
|
|
1712
1929
|
exports.RemoteControlPill = RemoteControlPill;
|
|
1713
1930
|
exports.SHELL_START_INSET_VAR = SHELL_START_INSET_VAR;
|
|
1714
1931
|
exports.STATUS_ROW_BASE_CLASS = STATUS_ROW_BASE_CLASS;
|
|
@@ -1730,5 +1947,5 @@ exports.useInstallPrompt = useInstallPrompt;
|
|
|
1730
1947
|
exports.useShellStartInset = useShellStartInset;
|
|
1731
1948
|
exports.useSidebarController = useSidebarController;
|
|
1732
1949
|
exports.useSidebarSettle = useSidebarSettle;
|
|
1733
|
-
//# sourceMappingURL=chunk-
|
|
1734
|
-
//# sourceMappingURL=chunk-
|
|
1950
|
+
//# sourceMappingURL=chunk-5NTSJV5H.cjs.map
|
|
1951
|
+
//# sourceMappingURL=chunk-5NTSJV5H.cjs.map
|