@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
106 lines (98 loc) • 4.23 kB
JavaScript
import { createSplitProps } from './ZMHI4GDJ.js';
import { ark } from './EPLBB4QN.js';
import { useEnvironmentContext } from './5QLLQM7E.js';
import { useLocaleContext } from './RVOPDSQY.js';
import { runIfFn } from './DT73WLR4.js';
import { createContext } from './THN5C4U6.js';
import { __export } from './ESLJRKWD.js';
import * as splitter from '@zag-js/splitter';
import { layout } from '@zag-js/splitter';
export { layout } from '@zag-js/splitter';
import { createComponent } from 'solid-js/web';
import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid';
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);
};
// src/components/splitter/use-splitter-resize-trigger-props-context.ts
var [SplitterResizeTriggerPropsProvider, useSplitterResizeTriggerPropsContext] = createContext({
hookName: "useSplitterResizeTriggerPropsContext",
providerName: "<SplitterResizeTriggerPropsProvider />"
});
// src/components/splitter/splitter-resize-trigger.tsx
var SplitterResizeTrigger = (props) => {
const [resizeTriggerProps, restProps] = createSplitProps()(props, ["disabled", "id"]);
const api = useSplitterContext();
const mergedProps = mergeProps(() => api().getResizeTriggerProps(resizeTriggerProps), restProps);
return createComponent(SplitterResizeTriggerPropsProvider, {
value: resizeTriggerProps,
get children() {
return createComponent(ark.button, mergedProps);
}
});
};
var SplitterResizeTriggerIndicator = (props) => {
const splitter2 = useSplitterContext();
const triggerProps = useSplitterResizeTriggerPropsContext();
const mergedProps = mergeProps(() => splitter2().getResizeTriggerIndicator(triggerProps), props);
return createComponent(ark.div, 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,
ResizeTriggerIndicator: () => SplitterResizeTriggerIndicator,
Root: () => SplitterRoot,
RootProvider: () => SplitterRootProvider,
getLayout: () => layout
});
export { SplitterContext, SplitterPanel, SplitterResizeTrigger, SplitterResizeTriggerIndicator, SplitterRoot, SplitterRootProvider, splitter_exports, useSplitter, useSplitterContext };