@airplane/views
Version:
A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.
82 lines (81 loc) • 3.06 kB
JavaScript
import { createContext, useContext, useEffect } from "react";
import { DefaultBooleanState } from "../components/boolean/state.js";
import { DefaultButtonState } from "../components/button/state.js";
import { DefaultChartState } from "../components/chart/state.js";
import { DefaultDatePickerState } from "../components/datepicker/state.js";
import { DefaultDialogState } from "../components/dialog/state.js";
import { DefaultFileInputState } from "../components/file-input/state.js";
import { DefaultFormState } from "../components/form/state.js";
import { DefaultMultiSelectState } from "../components/multiselect/state.js";
import { DefaultNumberInputState } from "../components/number-input/state.js";
import { DefaultRadioGroupState } from "../components/radio-group/state.js";
import { DefaultSelectState } from "../components/select/state.js";
import { DefaultTableState } from "../components/table/state.js";
import { DefaultTabsState } from "../components/tabs/state.js";
import { DefaultTextInputState } from "../components/text-input/state.js";
var ComponentType = /* @__PURE__ */ ((ComponentType2) => {
ComponentType2["Table"] = "Table";
ComponentType2["NumberInput"] = "NumberInput";
ComponentType2["Slider"] = "Slider";
ComponentType2["TextInput"] = "TextInput";
ComponentType2["Textarea"] = "Textarea";
ComponentType2["CodeInput"] = "CodeInput";
ComponentType2["Select"] = "Select";
ComponentType2["MultiSelect"] = "MultiSelect";
ComponentType2["Button"] = "Button";
ComponentType2["DatePicker"] = "DatePicker";
ComponentType2["DateTimePicker"] = "DateTimePicker";
ComponentType2["FileInput"] = "FileInput";
ComponentType2["Dialog"] = "Dialog";
ComponentType2["Form"] = "Form";
ComponentType2["RadioGroup"] = "RadioGroup";
ComponentType2["Chart"] = "Chart";
ComponentType2["Tabs"] = "Tabs";
ComponentType2["Checkbox"] = "Checkbox";
ComponentType2["Switch"] = "Switch";
ComponentType2["MultiInput"] = "MultiInput";
return ComponentType2;
})(ComponentType || {});
const DefaultComponentState = {
...DefaultTableState,
...DefaultNumberInputState,
...DefaultTextInputState,
...DefaultSelectState,
...DefaultMultiSelectState,
...DefaultBooleanState,
...DefaultButtonState,
...DefaultDatePickerState,
...DefaultFileInputState,
...DefaultDialogState,
...DefaultFormState,
...DefaultRadioGroupState,
...DefaultChartState,
...DefaultTabsState
};
const defaultContext = {
components: {},
updateComponent: () => {
},
removeComponent: () => {
}
};
const ComponentStateContext = /* @__PURE__ */ createContext(defaultContext);
const useSyncComponentState = (id, state) => {
const {
updateComponent,
removeComponent
} = useContext(ComponentStateContext);
useEffect(() => {
updateComponent(id, state);
}, [updateComponent, id, state]);
useEffect(() => {
return () => removeComponent(id);
}, [removeComponent, id]);
};
export {
ComponentStateContext,
ComponentType,
DefaultComponentState,
useSyncComponentState
};
//# sourceMappingURL=context.js.map