UNPKG

@ark-ui/solid

Version:

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

105 lines (98 loc) 3.88 kB
import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './YO2MCGXO.js'; import { createContext } from './TROPIN4C.js'; import { runIfFn } from './DT73WLR4.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 * as timer from '@zag-js/timer'; export { anatomy } from '@zag-js/timer'; import { createUniqueId, createMemo } from 'solid-js'; // src/components/timer/use-timer-context.ts var [TimerProvider, useTimerContext] = createContext({ hookName: "useTimerContext", providerName: "<TimerProvider />" }); // src/components/timer/timer-action-trigger.tsx var TimerActionTrigger = (props) => { const [actionTriggerProps, localProps] = createSplitProps()(props, ["action"]); const timer2 = useTimerContext(); const mergedProps = mergeProps(() => timer2().getActionTriggerProps(actionTriggerProps), localProps); return createComponent(ark.button, mergedProps); }; var TimerArea = (props) => { const timer2 = useTimerContext(); const mergedProps = mergeProps(() => timer2().getAreaProps(), props); return createComponent(ark.div, mergedProps); }; // src/components/timer/timer-context.tsx var TimerContext = (props) => props.children(useTimerContext()); var TimerControl = (props) => { const timer2 = useTimerContext(); const mergedProps = mergeProps(() => timer2().getControlProps(), props); return createComponent(ark.div, mergedProps); }; var TimerItem = (props) => { const [itemProps, localProps] = createSplitProps()(props, ["type"]); const timer2 = useTimerContext(); const mergedProps = mergeProps(() => timer2().getItemProps(itemProps), localProps); return createComponent(ark.div, mergeProps$1(mergedProps, { get children() { return timer2().formattedTime[itemProps.type]; } })); }; var useTimer = (props) => { const id = createUniqueId(); const environment = useEnvironmentContext(); const machineProps = createMemo(() => ({ id, getRootNode: environment().getRootNode, ...runIfFn(props) })); const service = useMachine(timer.machine, machineProps); return createMemo(() => timer.connect(service, normalizeProps)); }; // src/components/timer/timer-root.tsx var TimerRoot = (props) => { const [useTimerProps, localProps] = createSplitProps()(props, ["id", "ids", "autoStart", "interval", "countdown", "startMs", "targetMs", "onComplete", "onTick"]); const timer2 = useTimer(useTimerProps); const mergedProps = mergeProps(() => timer2().getRootProps(), localProps); return createComponent(TimerProvider, { value: timer2, get children() { return createComponent(ark.div, mergedProps); } }); }; var TimerRootProvider = (props) => { const [{ value: timer2 }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => timer2().getRootProps(), localProps); return createComponent(TimerProvider, { value: timer2, get children() { return createComponent(ark.div, mergedProps); } }); }; var TimerSeparator = (props) => { const timer2 = useTimerContext(); const mergedProps = mergeProps(() => timer2().getSeparatorProps(), props); return createComponent(ark.div, mergedProps); }; // src/components/timer/timer.ts var timer_exports = {}; __export(timer_exports, { ActionTrigger: () => TimerActionTrigger, Area: () => TimerArea, Context: () => TimerContext, Control: () => TimerControl, Item: () => TimerItem, Root: () => TimerRoot, RootProvider: () => TimerRootProvider, Separator: () => TimerSeparator }); export { TimerActionTrigger, TimerArea, TimerContext, TimerControl, TimerItem, TimerRoot, TimerRootProvider, TimerSeparator, timer_exports, useTimer, useTimerContext };