@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
84 lines (78 loc) • 3.29 kB
JavaScript
import { createSplitProps } from './ZMHI4GDJ.js';
import { ark } from './EPLBB4QN.js';
import { useEnvironmentContext } from './YO2MCGXO.js';
import { useLocaleContext } from './OKZ64GSY.js';
import { createContext } from './TROPIN4C.js';
import { runIfFn } from './DT73WLR4.js';
import { __export } from './ESLJRKWD.js';
import { createComponent } from 'solid-js/web';
import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid';
import * as splitter from '@zag-js/splitter';
export { anatomy } from '@zag-js/splitter';
import { createUniqueId, createMemo } from 'solid-js';
// src/components/splitter/use-splitter-context.ts
var [SplitterProvider, useSplitterContext] = createContext({
hookName: "useSplitterContext",
providerName: "<SplitterProvider />"
});
// src/components/splitter/splitter-context.tsx
var SplitterContext = (props) => props.children(useSplitterContext());
var SplitterPanel = (props) => {
const [panelProps, restProps] = createSplitProps()(props, ["id"]);
const api = useSplitterContext();
const mergedProps = mergeProps(() => api().getPanelProps(panelProps), restProps);
return createComponent(ark.div, mergedProps);
};
var SplitterResizeTrigger = (props) => {
const [resizeTriggerProps, restProps] = createSplitProps()(props, ["disabled", "id"]);
const api = useSplitterContext();
const mergedProps = mergeProps(() => api().getResizeTriggerProps(resizeTriggerProps), restProps);
return createComponent(ark.button, mergedProps);
};
var useSplitter = (props) => {
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const id = createUniqueId();
const machineProps = createMemo(() => ({
id,
dir: locale().dir,
getRootNode: environment().getRootNode,
...runIfFn(props)
}));
const service = useMachine(splitter.machine, machineProps);
return createMemo(() => splitter.connect(service, normalizeProps));
};
// src/components/splitter/splitter-root.tsx
var SplitterRoot = (props) => {
const [useSplitterProps, localProps] = createSplitProps()(props, ["defaultSize", "id", "ids", "keyboardResizeBy", "nonce", "onCollapse", "onExpand", "onResize", "onResizeEnd", "onResizeStart", "orientation", "panels", "size"]);
const api = useSplitter(useSplitterProps);
const mergedProps = mergeProps(() => api().getRootProps(), localProps);
return createComponent(SplitterProvider, {
value: api,
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
var SplitterRootProvider = (props) => {
const [{
value: splitter2
}, localProps] = createSplitProps()(props, ["value"]);
const mergedProps = mergeProps(() => splitter2().getRootProps(), localProps);
return createComponent(SplitterProvider, {
value: splitter2,
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
// src/components/splitter/splitter.ts
var splitter_exports = {};
__export(splitter_exports, {
Context: () => SplitterContext,
Panel: () => SplitterPanel,
ResizeTrigger: () => SplitterResizeTrigger,
Root: () => SplitterRoot,
RootProvider: () => SplitterRootProvider
});
export { SplitterContext, SplitterPanel, SplitterResizeTrigger, SplitterRoot, SplitterRootProvider, splitter_exports, useSplitter, useSplitterContext };