UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

124 lines (118 loc) 4.47 kB
import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './5QLLQM7E.js'; import { runIfFn } from './DT73WLR4.js'; import { createContext } from './THN5C4U6.js'; import { __export } from './ESLJRKWD.js'; import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web'; import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid'; import { children, Show, createUniqueId, createMemo } from 'solid-js'; import * as clipboard from '@zag-js/clipboard'; // src/components/clipboard/use-clipboard-context.ts var [ClipboardProvider, useClipboardContext] = createContext({ hookName: "useClipboardContext", providerName: "<ClipboardProvider />" }); // src/components/clipboard/clipboard-context.tsx var ClipboardContext = (props) => props.children(useClipboardContext()); var ClipboardControl = (props) => { const api = useClipboardContext(); const mergedProps = mergeProps(() => api().getControlProps(), props); return createComponent(ark.div, mergedProps); }; var ClipboardIndicator = (props) => { const [indicatorProps, localProps] = createSplitProps()(props, ["copied"]); const api = useClipboardContext(); const mergedProps = mergeProps(api().getIndicatorProps({ copied: api().copied }), localProps); const getChildren = children(() => localProps.children); return createComponent(ark.div, mergeProps$1(mergedProps, { get children() { return createComponent(Show, { get when() { return api().copied; }, get fallback() { return getChildren(); }, get children() { return indicatorProps.copied; } }); } })); }; var ClipboardInput = (props) => { const api = useClipboardContext(); const mergedProps = mergeProps(() => api().getInputProps(), props); return createComponent(ark.input, mergedProps); }; var ClipboardLabel = (props) => { const api = useClipboardContext(); const mergedProps = mergeProps(() => api().getLabelProps(), props); return createComponent(ark.label, mergedProps); }; var useClipboard = (props) => { const id = createUniqueId(); const environment = useEnvironmentContext(); const machineProps = createMemo(() => ({ id, getRootNode: environment().getRootNode, ...runIfFn(props) })); const service = useMachine(clipboard.machine, machineProps); return createMemo(() => clipboard.connect(service, normalizeProps)); }; // src/components/clipboard/clipboard-root.tsx var ClipboardRoot = (props) => { const [useClipboardProps, localProps] = createSplitProps()(props, ["defaultValue", "id", "ids", "onStatusChange", "onValueChange", "timeout", "value"]); const api = useClipboard(useClipboardProps); const mergedProps = mergeProps(() => api().getRootProps(), localProps); return createComponent(ClipboardProvider, { value: api, get children() { return createComponent(ark.div, mergedProps); } }); }; var ClipboardRootProvider = (props) => { const [{ value: clipboard2 }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => clipboard2().getRootProps(), localProps); return createComponent(ClipboardProvider, { value: clipboard2, get children() { return createComponent(ark.div, mergedProps); } }); }; var ClipboardTrigger = (props) => { const api = useClipboardContext(); const mergedProps = mergeProps(() => api().getTriggerProps(), props); return createComponent(ark.button, mergedProps); }; var ClipboardValueText = (props) => { const api = useClipboardContext(); const mergedProps = mergeProps(props); return createComponent(ark.span, mergeProps$1(mergedProps, { get children() { return props.children || api().value; } })); }; // src/components/clipboard/clipboard.ts var clipboard_exports = {}; __export(clipboard_exports, { Context: () => ClipboardContext, Control: () => ClipboardControl, Indicator: () => ClipboardIndicator, Input: () => ClipboardInput, Label: () => ClipboardLabel, Root: () => ClipboardRoot, RootProvider: () => ClipboardRootProvider, Trigger: () => ClipboardTrigger, ValueText: () => ClipboardValueText }); export { ClipboardContext, ClipboardControl, ClipboardIndicator, ClipboardInput, ClipboardLabel, ClipboardRoot, ClipboardRootProvider, ClipboardTrigger, ClipboardValueText, clipboard_exports, useClipboard, useClipboardContext };