UNPKG

@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
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 };