@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
134 lines (127 loc) • 5.29 kB
JavaScript
import { useFieldContext } from './GBGTOFYC.js';
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 { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid';
import * as editable from '@zag-js/editable';
import { createUniqueId, createMemo } from 'solid-js';
// src/components/editable/use-editable-context.ts
var [EditableProvider, useEditableContext] = createContext({
hookName: "useEditableContext",
providerName: "<EditableProvider />"
});
// src/components/editable/editable-area.tsx
var EditableArea = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getAreaProps(), props);
return createComponent(ark.div, mergedProps);
};
var EditableCancelTrigger = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getCancelTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
// src/components/editable/editable-context.tsx
var EditableContext = (props) => props.children(useEditableContext());
var EditableControl = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getControlProps(), props);
return createComponent(ark.div, mergedProps);
};
var EditableEditTrigger = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getEditTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
var EditableInput = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getInputProps(), props);
const field = useFieldContext();
return createComponent(ark.input, mergeProps$1({
get ["aria-describedby"]() {
return field?.().ariaDescribedby;
}
}, mergedProps));
};
var EditableLabel = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getLabelProps(), props);
return createComponent(ark.label, mergedProps);
};
var EditablePreview = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getPreviewProps(), props);
return createComponent(ark.span, mergedProps);
};
var useEditable = (props) => {
const id = createUniqueId();
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const field = useFieldContext();
const machineProps = createMemo(() => ({
id,
ids: {
label: field?.().ids.label,
input: field?.().ids.control
},
dir: locale().dir,
disabled: field?.().disabled,
invalid: field?.().invalid,
readOnly: field?.().readOnly,
required: field?.().required,
getRootNode: environment().getRootNode,
...runIfFn(props)
}));
const service = useMachine(editable.machine, machineProps);
return createMemo(() => editable.connect(service, normalizeProps));
};
// src/components/editable/editable-root.tsx
var EditableRoot = (props) => {
const [useEditableProps, localProps] = createSplitProps()(props, ["activationMode", "autoResize", "defaultEdit", "defaultValue", "disabled", "edit", "finalFocusEl", "form", "id", "ids", "invalid", "maxLength", "name", "onEditChange", "onFocusOutside", "onInteractOutside", "onPointerDownOutside", "onValueChange", "onValueCommit", "onValueRevert", "placeholder", "readOnly", "required", "selectOnFocus", "submitMode", "translations", "value"]);
const api = useEditable(useEditableProps);
const mergedProps = mergeProps(() => api().getRootProps(), localProps);
return createComponent(EditableProvider, {
value: api,
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
var EditableRootProvider = (props) => {
const [{
value: editable2
}, localProps] = createSplitProps()(props, ["value"]);
const mergedProps = mergeProps(() => editable2().getRootProps(), localProps);
return createComponent(EditableProvider, {
value: editable2,
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
var EditableSubmitTrigger = (props) => {
const api = useEditableContext();
const mergedProps = mergeProps(() => api().getSubmitTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
// src/components/editable/editable.ts
var editable_exports = {};
__export(editable_exports, {
Area: () => EditableArea,
CancelTrigger: () => EditableCancelTrigger,
Context: () => EditableContext,
Control: () => EditableControl,
EditTrigger: () => EditableEditTrigger,
Input: () => EditableInput,
Label: () => EditableLabel,
Preview: () => EditablePreview,
Root: () => EditableRoot,
RootProvider: () => EditableRootProvider,
SubmitTrigger: () => EditableSubmitTrigger
});
export { EditableArea, EditableCancelTrigger, EditableContext, EditableControl, EditableEditTrigger, EditableInput, EditableLabel, EditablePreview, EditableRoot, EditableRootProvider, EditableSubmitTrigger, editable_exports, useEditable, useEditableContext };