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