go-xcel-interpret 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/go-xcel-interpret.cjs +839 -0
  2. package/dist/go-xcel-interpret.css +59 -0
  3. package/dist/go-xcel-interpret.esm.mjs +63430 -0
  4. package/dist/go-xcel-interpret.umd.js +839 -0
  5. package/dist/src/components/BodyCssVar.d.ts +5 -0
  6. package/dist/src/components/GoXcelInterpret.d.ts +4 -0
  7. package/dist/src/components/constants.d.ts +1 -0
  8. package/dist/src/components/interpret/InterpretForm.d.ts +2 -0
  9. package/dist/src/components/interpret/InterpretTable.d.ts +2 -0
  10. package/dist/src/components/interpret/TabsInterpret.d.ts +24 -0
  11. package/dist/src/components/interpret/interpret.d.ts +14 -0
  12. package/dist/src/components/ui/Card.d.ts +7 -0
  13. package/dist/src/components/ui/Form.d.ts +23 -0
  14. package/dist/src/components/ui/FormOptions.d.ts +14 -0
  15. package/dist/src/components/ui/Layout.d.ts +19 -0
  16. package/dist/src/components/ui/Loading.d.ts +9 -0
  17. package/dist/src/components/ui/Tabs.d.ts +19 -0
  18. package/dist/src/components/ui/Typography.d.ts +25 -0
  19. package/dist/src/components/ui/form/Checkbox.d.ts +23 -0
  20. package/dist/src/components/ui/form/DatePicker.d.ts +15 -0
  21. package/dist/src/components/ui/form/Input.d.ts +21 -0
  22. package/dist/src/components/ui/form/InputNumber.d.ts +19 -0
  23. package/dist/src/components/ui/form/Radio.d.ts +30 -0
  24. package/dist/src/components/ui/form/Select.d.ts +18 -0
  25. package/dist/src/error.d.ts +5 -0
  26. package/dist/src/hook/useBounce.d.ts +1 -0
  27. package/dist/src/hook/useTemplateTabs.d.ts +12 -0
  28. package/dist/src/index.d.ts +2 -0
  29. package/dist/src/services.d.ts +11 -0
  30. package/dist/src/types/config.d.ts +62 -0
  31. package/dist/src/types/index.d.ts +3 -0
  32. package/dist/src/types/services.d.ts +6 -0
  33. package/dist/src/types/template.d.ts +75 -0
  34. package/dist/src/utils/base64.d.ts +7 -0
  35. package/dist/src/utils/theme.d.ts +8 -0
  36. package/dist/src/utils/websocket.d.ts +9 -0
  37. package/dist/vite.config.d.ts +2 -0
  38. package/package.json +63 -0
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ declare const BodyCssVar: React.FC<{
3
+ primary?: string;
4
+ }>;
5
+ export default BodyCssVar;
@@ -0,0 +1,4 @@
1
+ import { ComponentPropsWithRef } from 'react';
2
+ import { default as Interpret } from './interpret/interpret';
3
+ export type GoXcelInterpretProps = ComponentPropsWithRef<typeof Interpret>;
4
+ export default function GoXcelInterpret(props: GoXcelInterpretProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const PRIMARY_COLOR = "#25cc89";
@@ -0,0 +1,2 @@
1
+ import { InterpretFormTable } from '../../types';
2
+ export default function InterpretForm({ config, itemOptions, ...props }: InterpretFormTable): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { InterpretFormTable } from '../../types';
2
+ export default function InterpretTable({ onUpdateItemData, ...props }: InterpretFormTable): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { ComponentPropsWithRef } from 'react';
2
+ import { ActionMode, GoXcelConfig, InterpretFormTable, TemplateSheet } from '../../types';
3
+ declare const TabContentInterpret: ({ tab, mode, onUpdate, config, activeItemOptions, onItemOptions, itemOptions, }: {
4
+ tab: TemplateSheet;
5
+ mode: ActionMode;
6
+ onUpdate: (updatedTab: Partial<TemplateSheet>) => void;
7
+ config?: GoXcelConfig;
8
+ activeItemOptions: boolean;
9
+ onItemOptions: (itemOptions: Required<InterpretFormTable>["itemOptions"]) => void;
10
+ itemOptions: Required<InterpretFormTable>["itemOptions"];
11
+ }) => import("react/jsx-runtime").JSX.Element;
12
+ interface TabsInterpretFormProps {
13
+ activeKey?: string;
14
+ tabs: TemplateSheet[];
15
+ mode?: ActionMode;
16
+ setActiveKey?: (key: string) => void;
17
+ addTab?: () => void;
18
+ removeTab?: (key: string) => void;
19
+ updateTab?: (index: number, updatedTab: Partial<TemplateSheet>) => void;
20
+ config?: GoXcelConfig;
21
+ activeOptions?: ComponentPropsWithRef<typeof TabContentInterpret>['activeItemOptions'];
22
+ }
23
+ export default function TabsInterpret({ activeKey, tabs, mode, setActiveKey, updateTab, config, activeOptions, }: TabsInterpretFormProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -0,0 +1,14 @@
1
+ import { ComponentPropsWithRef } from 'react';
2
+ import { GoXcelConfig } from '../../types';
3
+ import { OptionHostConnect } from '../../utils/websocket';
4
+ import { default as TabsInterpret } from './TabsInterpret';
5
+ type InterpretProps = {
6
+ token: string;
7
+ identity: string;
8
+ waitKeyboard?: number;
9
+ config?: GoXcelConfig;
10
+ activeOptions?: ComponentPropsWithRef<typeof TabsInterpret>['activeOptions'];
11
+ textLoading?: string;
12
+ };
13
+ export default function Interpret({ token, identity, apiBaseUrl, protocol, waitKeyboard, config, activeOptions, textLoading, }: InterpretProps & OptionHostConnect): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ interface CardProps {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ }
6
+ declare const Card: React.FC<CardProps>;
7
+ export default Card;
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+ interface FormProps {
3
+ children: React.ReactNode;
4
+ layout?: 'horizontal' | 'vertical' | 'inline';
5
+ initialValues?: Record<string, any>;
6
+ onValuesChange?: (changedValues: Record<string, any>, allValues: Record<string, any>) => void;
7
+ size?: 'small' | 'middle' | 'large';
8
+ className?: string;
9
+ autoComplete?: string;
10
+ }
11
+ interface FormItemProps {
12
+ label?: React.ReactNode;
13
+ labelProps?: React.LabelHTMLAttributes<HTMLLabelElement>;
14
+ name?: string;
15
+ children: React.ReactNode;
16
+ valuePropName?: string;
17
+ className?: string;
18
+ }
19
+ interface FormType extends React.FC<FormProps> {
20
+ Item: React.FC<FormItemProps>;
21
+ }
22
+ declare const Form: FormType;
23
+ export default Form;
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { GoXcelConfig } from '../../types';
3
+ export type FormSize = 'small' | 'middle' | 'large';
4
+ export type FieldSpan = 8 | 12 | 16 | 24;
5
+ interface FormOptionsProps {
6
+ config?: Omit<GoXcelConfig, 'formOptions'>;
7
+ size: FormSize;
8
+ onSizeChange: (value: FormSize) => void;
9
+ span: FieldSpan;
10
+ onSpanChange: (value: FieldSpan) => void;
11
+ languageConfig?: GoXcelConfig['formOptions'];
12
+ }
13
+ declare const FormOptions: React.FC<FormOptionsProps>;
14
+ export default FormOptions;
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ interface RowProps {
3
+ children: React.ReactNode;
4
+ gutter?: [number, number];
5
+ className?: string;
6
+ }
7
+ export declare const Row: React.FC<RowProps>;
8
+ interface ColProps {
9
+ children: React.ReactNode;
10
+ span?: number;
11
+ sm?: number;
12
+ md?: number;
13
+ lg?: number;
14
+ xl?: number;
15
+ className?: string;
16
+ style?: React.CSSProperties;
17
+ }
18
+ export declare const Col: React.FC<ColProps>;
19
+ export {};
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { GoXcelTheme } from '../../types';
3
+ interface LoadingProps {
4
+ text?: string;
5
+ className?: string;
6
+ theme?: GoXcelTheme;
7
+ }
8
+ export declare const Loading: React.FC<LoadingProps>;
9
+ export default Loading;
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../types';
3
+ type TabPropsBase = ComponentStyleConfig['Tabs'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ export interface TabItem {
7
+ key: string;
8
+ label: React.ReactNode;
9
+ children: React.ReactNode;
10
+ }
11
+ interface TabsProps extends TabPropsBase {
12
+ items: TabItem[];
13
+ activeKey?: string;
14
+ onChange?: (key: string) => void;
15
+ tabPosition?: 'top' | 'bottom';
16
+ type?: 'line' | 'card';
17
+ }
18
+ declare const Tabs: React.FC<TabsProps>;
19
+ export default Tabs;
@@ -0,0 +1,25 @@
1
+ import { default as React } from 'react';
2
+ import { GoXcelTheme } from '../../types';
3
+ interface PropBase {
4
+ theme?: GoXcelTheme;
5
+ }
6
+ interface TitleProps extends PropBase {
7
+ level?: 1 | 2 | 3 | 4 | 5;
8
+ children: React.ReactNode;
9
+ className?: string;
10
+ }
11
+ interface TextProps extends PropBase {
12
+ children: React.ReactNode;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ }
16
+ interface ParagraphProps extends PropBase {
17
+ children: React.ReactNode;
18
+ className?: string;
19
+ }
20
+ declare const Typography: {
21
+ Title: React.FC<TitleProps>;
22
+ Text: React.FC<TextProps>;
23
+ Paragraph: React.FC<ParagraphProps>;
24
+ };
25
+ export default Typography;
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
3
+ type CheckboxPropsBase = ComponentStyleConfig['Checkbox'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ export interface CheckboxProps {
7
+ id?: string;
8
+ checked?: boolean;
9
+ disabled?: boolean;
10
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
11
+ children?: React.ReactNode;
12
+ }
13
+ export declare const Checkbox: React.FC<CheckboxProps & CheckboxPropsBase>;
14
+ interface CheckboxGroupProps {
15
+ id?: string;
16
+ value?: string[];
17
+ disabled?: boolean;
18
+ onChange?: (checkedValues: string[]) => void;
19
+ children?: React.ReactNode;
20
+ style?: React.CSSProperties;
21
+ }
22
+ export declare const CheckboxGroup: React.FC<CheckboxGroupProps>;
23
+ export {};
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ import { default as dayjs } from 'dayjs';
3
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
4
+ type DatePickerPropsBase = ComponentStyleConfig['DataPicker'] & {
5
+ theme?: GoXcelTheme;
6
+ };
7
+ interface DatePickerProps {
8
+ value?: string | dayjs.Dayjs;
9
+ disabled?: boolean;
10
+ showTime?: boolean;
11
+ onChange?: (date: dayjs.Dayjs) => void;
12
+ size?: 'small' | 'middle' | 'large';
13
+ }
14
+ export declare const DatePicker: React.FC<DatePickerProps & DatePickerPropsBase>;
15
+ export {};
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
3
+ type InputPropsBase = ComponentStyleConfig['Input'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ interface InputProps extends InputPropsBase {
7
+ id?: string;
8
+ value?: string;
9
+ readOnly?: boolean;
10
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
11
+ size?: InputPropsBase['size'];
12
+ }
13
+ export declare const Input: React.FC<InputProps>;
14
+ interface TextAreaProps extends InputPropsBase {
15
+ id?: string;
16
+ value?: string;
17
+ readOnly?: boolean;
18
+ onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
19
+ }
20
+ export declare const TextArea: React.FC<TextAreaProps>;
21
+ export {};
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
3
+ type InputNumberPropsBase = ComponentStyleConfig['InputNumber'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ interface InputNumberProps {
7
+ id?: string;
8
+ value?: number;
9
+ defaultValue?: number;
10
+ min?: number;
11
+ max?: number;
12
+ step?: number;
13
+ disabled?: boolean;
14
+ size?: InputNumberPropsBase['size'];
15
+ onChange?: (value: number) => void;
16
+ className?: string;
17
+ }
18
+ declare const InputNumber: React.FC<InputNumberProps & InputNumberPropsBase>;
19
+ export default InputNumber;
@@ -0,0 +1,30 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
3
+ type RadioPropsBase = ComponentStyleConfig['Radio'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ interface RadioProps {
7
+ id?: string;
8
+ value?: string;
9
+ checked?: boolean;
10
+ disabled?: boolean;
11
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
12
+ children?: React.ReactNode;
13
+ }
14
+ export declare const Radio: React.FC<RadioProps & RadioPropsBase>;
15
+ interface RadioGroupProps {
16
+ id?: string;
17
+ value?: string;
18
+ disabled?: boolean;
19
+ onChange?: (e: {
20
+ target: {
21
+ value: string;
22
+ };
23
+ }) => void;
24
+ options?: {
25
+ value: string;
26
+ label: string;
27
+ }[];
28
+ }
29
+ export declare const RadioGroup: React.FC<RadioGroupProps & RadioPropsBase>;
30
+ export {};
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentStyleConfig, GoXcelTheme } from '../../../types';
3
+ type SelectPropsBase = ComponentStyleConfig['Select'] & {
4
+ theme?: GoXcelTheme;
5
+ };
6
+ interface SelectProps extends SelectPropsBase {
7
+ id?: string;
8
+ value?: string;
9
+ disabled?: boolean;
10
+ onChange?: (value: string) => void;
11
+ options?: {
12
+ value: string;
13
+ label: string;
14
+ }[];
15
+ size?: SelectPropsBase['size'];
16
+ }
17
+ export declare const Select: React.FC<SelectProps>;
18
+ export {};
@@ -0,0 +1,5 @@
1
+ declare class ResponseError extends Error {
2
+ response: Response;
3
+ constructor(message: string, response: Response);
4
+ }
5
+ export default ResponseError;
@@ -0,0 +1 @@
1
+ export default function useBounce<Args extends unknown[]>(callback: (...args: Args) => void, wait: number): readonly [(...args: Args) => void, () => void];
@@ -0,0 +1,12 @@
1
+ import { TemplateConfig, TemplateItem, TemplateSheet } from '../types';
2
+ export declare const ITEM_DEFAULT: TemplateItem[];
3
+ declare const useTemplateTabs: () => {
4
+ tabs: TemplateSheet[];
5
+ activeKey: string;
6
+ setActiveKey: import('react').Dispatch<import('react').SetStateAction<string>>;
7
+ addTab: () => void;
8
+ setTabs: (tabs: TemplateConfig["configuration"]) => void;
9
+ removeTab: (targetKey: string) => void;
10
+ updateTab: (index: number, updatedTab: Partial<TemplateSheet>) => TemplateSheet[];
11
+ };
12
+ export default useTemplateTabs;
@@ -0,0 +1,2 @@
1
+ export { default as GoXcelInterpret } from './components/GoXcelInterpret';
2
+ export type { GoXcelInterpretProps } from './components/GoXcelInterpret';
@@ -0,0 +1,11 @@
1
+ import { Template, TemplateSheet, BackendResponse } from './types';
2
+ export type TemplateResponse = BackendResponse<Template>;
3
+ declare const GoXcelService: {
4
+ API_GO_XCEL_HOST: string | null;
5
+ readTemplateIdentity(token: string, identity: string): Promise<Template>;
6
+ applyAction(token: string, templateAction: {
7
+ template__uuid: string;
8
+ actions: TemplateSheet[];
9
+ }): Promise<TemplateResponse>;
10
+ };
11
+ export default GoXcelService;
@@ -0,0 +1,62 @@
1
+ export interface GoXcelTheme {
2
+ primaryColor?: string;
3
+ }
4
+ type Select = {
5
+ borderRadius?: string;
6
+ focusShadowColor?: string;
7
+ size?: 'small' | 'middle' | 'large';
8
+ };
9
+ type Input = {
10
+ borderRadius?: Select['borderRadius'];
11
+ focusShadowColor?: Select['focusShadowColor'];
12
+ size?: Select['size'];
13
+ };
14
+ type DataPicker = {
15
+ borderRadius?: Select['borderRadius'];
16
+ focusShadowColor?: Select['focusShadowColor'];
17
+ size?: Select['size'];
18
+ };
19
+ export interface ComponentStyleConfig {
20
+ Select?: Select;
21
+ Typography?: {
22
+ titleHoverColor?: string;
23
+ };
24
+ Tabs?: {
25
+ tabPosition?: 'top' | 'bottom';
26
+ size?: Select['size'];
27
+ };
28
+ Input?: Input;
29
+ TextArea?: Input;
30
+ InputNumber?: Input;
31
+ DataPicker?: DataPicker;
32
+ Checkbox?: {
33
+ size?: Select['size'];
34
+ };
35
+ Radio?: {
36
+ size?: Select['size'];
37
+ };
38
+ }
39
+ export interface GoXcelConfig {
40
+ theme?: GoXcelTheme;
41
+ formOptions?: {
42
+ language?: string;
43
+ languageOptions?: Record<string, {
44
+ small: string;
45
+ middle: string;
46
+ large: string;
47
+ fieldWidthPerRow: string;
48
+ formSize: string;
49
+ fullRow: string;
50
+ halfRow: string;
51
+ oneThirdRow: string;
52
+ twoThirdsRow: string;
53
+ }>;
54
+ };
55
+ components?: ComponentStyleConfig;
56
+ }
57
+ declare global {
58
+ interface Window {
59
+ GOXCEL_CONFIG?: GoXcelConfig;
60
+ }
61
+ }
62
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './template';
2
+ export * from './services';
3
+ export * from './config';
@@ -0,0 +1,6 @@
1
+ export interface BackendResponse<T> {
2
+ count: number;
3
+ next: null | string;
4
+ previous: null | string;
5
+ results: T[];
6
+ }
@@ -0,0 +1,75 @@
1
+ import { FieldSpan, FormSize } from '../components/ui/FormOptions';
2
+ import { GoXcelConfig } from './config';
3
+ export declare enum TemplateType {
4
+ form = "form",
5
+ table = "table"
6
+ }
7
+ export declare enum TemplateItemTypes {
8
+ input = "input",
9
+ check = "check",
10
+ radio = "radio",
11
+ textarea = "textarea",
12
+ datetime = "datetime",
13
+ select = "select",
14
+ number = "number"
15
+ }
16
+ export type OptionItemData = {
17
+ alias: string;
18
+ value?: string;
19
+ cell?: string;
20
+ };
21
+ export type ValueOptionData = Omit<OptionItemData, 'alias'>;
22
+ export interface ItemData {
23
+ cell_type?: boolean;
24
+ alias: string;
25
+ type: keyof typeof TemplateItemTypes;
26
+ cell?: string;
27
+ column?: string;
28
+ action_type: string[];
29
+ value?: string | number | boolean | ValueOptionData[];
30
+ option?: OptionItemData[];
31
+ }
32
+ export interface TemplateSheet {
33
+ sheet: string;
34
+ items: TemplateItem[];
35
+ }
36
+ export interface TemplateItem {
37
+ alias: string;
38
+ type: 'form' | 'table';
39
+ row_num?: number;
40
+ row_start?: number;
41
+ items: ItemData[];
42
+ }
43
+ export type ItemSheet = TemplateItem;
44
+ export interface Sheet {
45
+ sheet: string;
46
+ items: ItemSheet[];
47
+ }
48
+ export interface TemplateConfig {
49
+ uuid: string;
50
+ configuration: Sheet[] | null;
51
+ name: string;
52
+ }
53
+ export interface Template {
54
+ uuid: string;
55
+ account: string;
56
+ identity: string;
57
+ template_configuration: TemplateConfig;
58
+ values?: TemplateConfig['configuration'];
59
+ }
60
+ export declare enum ActionMode {
61
+ ADD = "ADD",
62
+ READ = "READ",
63
+ EDIT = "EDIT"
64
+ }
65
+ export interface InterpretFormTable {
66
+ item: TemplateItem;
67
+ mode: ActionMode;
68
+ onUpdate: (updatedTab: Partial<TemplateItem>) => void;
69
+ onUpdateItemData?: (index: number, itemData: ItemData) => void;
70
+ config?: GoXcelConfig;
71
+ itemOptions?: {
72
+ size: FormSize;
73
+ span: FieldSpan;
74
+ };
75
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts a given string to its Base64 encoded representation.
3
+ *
4
+ * @param {string} input - The input string to be converted to Base64.
5
+ * @return {string} The Base64 encoded string.
6
+ */
7
+ export declare function toBase64(input: string): string;
@@ -0,0 +1,8 @@
1
+ export declare const hexToRgba: (hex: string, alpha: number) => string;
2
+ export declare const getPrimaryColor: (theme?: {
3
+ primaryColor?: string;
4
+ }) => string;
5
+ export declare const getFocusShadowColor: (props?: {
6
+ primaryColor?: string;
7
+ focusShadowColor?: string;
8
+ }) => string;
@@ -0,0 +1,9 @@
1
+ export declare const urlWebsocket: (apiBaseUrl: string) => URL;
2
+ export declare enum EnumPathNotification {
3
+ applyActions = "ws/apply-actions/"
4
+ }
5
+ export type OptionHostConnect = {
6
+ apiBaseUrl: string;
7
+ protocol?: 'wss' | 'ws';
8
+ };
9
+ export declare const getHostConnect: (path: EnumPathNotification, options: OptionHostConnect) => string;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vite').UserConfig;
2
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "go-xcel-interpret",
3
+ "version": "1.1.0",
4
+ "description": "",
5
+ "main": "dist/go-xcel-interpret.cjs",
6
+ "module": "dist/go-xcel-interpret.esM.mjs",
7
+ "types": "dist/src/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "scripts": {
15
+ "dev": "vite",
16
+ "build": "vite build",
17
+ "preview": "vite preview",
18
+ "release": "tsx scripts/release.ts",
19
+ "lint": "eslint .",
20
+ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\""
21
+ },
22
+ "dependencies": {
23
+ "@handsontable/react-wrapper": "^15.3.0",
24
+ "dayjs": "^1.11.13",
25
+ "handsontable": "^15.3.0",
26
+ "react": "^19.1.0",
27
+ "react-dom": "^19.1.0",
28
+ "react-use-websocket": "^4.13.0",
29
+ "styled-components": "^6.1.18"
30
+ },
31
+ "devDependencies": {
32
+ "@eslint/js": "^9.28.0",
33
+ "@octokit/rest": "^22.0.0",
34
+ "@trivago/prettier-plugin-sort-imports": "^5.2.2",
35
+ "@types/mime-types": "^3.0.0",
36
+ "@types/node": "^22.15.29",
37
+ "@types/react": "^19.1.6",
38
+ "@types/react-dom": "^19.1.6",
39
+ "@vitejs/plugin-react": "^4.5.1",
40
+ "eslint": "^9.28.0",
41
+ "eslint-config-prettier": "^10.1.5",
42
+ "eslint-plugin-prettier": "^5.5.1",
43
+ "eslint-plugin-react": "^7.37.5",
44
+ "globals": "^16.2.0",
45
+ "mime-types": "^3.0.1",
46
+ "prettier": "^3.6.2",
47
+ "prettier-plugin-organize-imports": "^4.1.0",
48
+ "simple-git": "^3.27.0",
49
+ "typescript": "^5.8.3",
50
+ "typescript-eslint": "^8.33.1",
51
+ "vite": "^6.3.5",
52
+ "vite-plugin-dts": "^4.5.4"
53
+ },
54
+ "private": false,
55
+ "unpkg": "dist/go-xcel-interpret.umd.js",
56
+ "jsdelivr": "dist/go-xcel-interpret.umd.js",
57
+ "exports": {
58
+ ".": {
59
+ "import": "./dist/go-xcel-interpret.esm.mjs",
60
+ "require": "./dist/go-xcel-interpret.cjs"
61
+ }
62
+ }
63
+ }