sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
85 lines (84 loc) • 3.06 kB
JavaScript
"use strict";
var jsxRuntime = require("react/jsx-runtime"), React = require("react"), reactIs = require("react-is"), sanity = require("sanity"), ui = require("@sanity/ui"), getJsonStream = require("./getJsonStream.js"), StructureToolProvider = require("./StructureToolProvider.js"), icons = require("@sanity/icons");
require("sanity/router");
require("@sanity/types");
require("@sanity/util/paths");
require("lodash/omit.js");
require("lodash/isNumber.js");
require("lodash/isString.js");
require("react-rx");
var styled = require("styled-components");
function _interopDefaultCompat(e) {
return e && typeof e == "object" && "default" in e ? e : { default: e };
}
var styled__default = /* @__PURE__ */ _interopDefaultCompat(styled);
const Root = styled__default.default(ui.Box)`
position: relative;
`;
function UserComponentPaneContent(props) {
const { children } = props, { collapsed } = StructureToolProvider.usePane();
return /* @__PURE__ */ jsxRuntime.jsx(Root, { hidden: collapsed, height: "fill", overflow: "auto", children });
}
function UserComponentPaneHeader(props) {
const { actionHandlers, index, menuItems, menuItemGroups, title } = props, { features } = StructureToolProvider.useStructureTool();
return !(menuItems != null && menuItems.length) && !title ? null : /* @__PURE__ */ jsxRuntime.jsx(
StructureToolProvider.PaneHeader,
{
actions: /* @__PURE__ */ jsxRuntime.jsx(
StructureToolProvider.PaneHeaderActions,
{
menuItems,
menuItemGroups,
actionHandlers
}
),
backButton: features.backButton && index > 0 && /* @__PURE__ */ jsxRuntime.jsx(
getJsonStream.Button,
{
as: StructureToolProvider.BackLink,
"data-as": "a",
icon: icons.ArrowLeftIcon,
mode: "bleed",
tooltipProps: { content: "Back" }
}
),
title
}
);
}
function UserComponentPane(props) {
const { index, pane, paneKey, ...restProps } = props, {
child,
component,
menuItems,
menuItemGroups,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
type: _unused,
...restPane
} = pane, [ref, setRef] = React.useState(null), { title = "" } = sanity.useI18nText(pane);
return /* @__PURE__ */ jsxRuntime.jsxs(StructureToolProvider.Pane, { id: paneKey, minWidth: 320, selected: restProps.isSelected, children: [
/* @__PURE__ */ jsxRuntime.jsx(
UserComponentPaneHeader,
{
actionHandlers: ref == null ? void 0 : ref.actionHandlers,
index,
menuItems,
menuItemGroups,
title
}
),
/* @__PURE__ */ jsxRuntime.jsxs(UserComponentPaneContent, { children: [
reactIs.isValidElementType(component) && React.createElement(component, {
...restProps,
...restPane,
ref: setRef,
child,
// @todo: Fix typings
paneKey
}),
React.isValidElement(component) && component
] })
] });
}
exports.default = UserComponentPane;
//# sourceMappingURL=index.js.map