@natoora-libs/core 0.0.2 → 0.0.31

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.
@@ -0,0 +1,49 @@
1
+ import * as prop_types from 'prop-types';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ declare const useError: () => {
5
+ setError: (error: any) => void;
6
+ };
7
+ declare const ErrorProvider: {
8
+ ({ children }: {
9
+ children: any;
10
+ }): react_jsx_runtime.JSX.Element;
11
+ propTypes: {
12
+ children: prop_types.Validator<NonNullable<prop_types.ReactNodeLike>>;
13
+ };
14
+ };
15
+
16
+ declare const useFeeback: () => {
17
+ /**
18
+ * @param {object} arguments
19
+ * @param {string} arguments.message - Content of the feedback
20
+ * @param {string} arguments.type - Type of the feedback. Can be either: success | error
21
+ */
22
+ setFeedback: ({ message, type }: {
23
+ message: any;
24
+ type: any;
25
+ }) => void;
26
+ };
27
+ declare const FeedbackProvider: {
28
+ ({ children }: {
29
+ children: any;
30
+ }): react_jsx_runtime.JSX.Element;
31
+ propTypes: {
32
+ children: prop_types.Validator<NonNullable<prop_types.ReactNodeLike>>;
33
+ };
34
+ };
35
+
36
+ declare const useLoading: () => {
37
+ isLoading: boolean;
38
+ setLoading: (isLoading: any) => void;
39
+ };
40
+ declare const LoadingProvider: {
41
+ ({ children }: {
42
+ children: any;
43
+ }): react_jsx_runtime.JSX.Element;
44
+ propTypes: {
45
+ children: prop_types.Validator<NonNullable<prop_types.ReactNodeLike>>;
46
+ };
47
+ };
48
+
49
+ export { ErrorProvider, FeedbackProvider, LoadingProvider, useError, useFeeback, useLoading };
@@ -0,0 +1,165 @@
1
+ import {
2
+ Loading_default
3
+ } from "../chunk-RHG2EMI3.js";
4
+
5
+ // src/providers/ErrorProvider/ErrorProvider.tsx
6
+ import { createContext as createContext2, useContext as useContext2, useMemo as useMemo2 } from "react";
7
+ import { node as node2 } from "prop-types";
8
+
9
+ // src/providers/FeedbackProvider/FeedbackProvider.tsx
10
+ import { createContext, useContext, useMemo, useState } from "react";
11
+ import { Alert as MuiAlert, Snackbar } from "@mui/material";
12
+ import { node } from "prop-types";
13
+ import { makeStyles } from "tss-react/mui";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ var DefaultValue = {
16
+ /**
17
+ * @param {object} arguments
18
+ * @param {string} arguments.message - Content of the feedback
19
+ * @param {string} arguments.type - Type of the feedback. Can be either: success | error
20
+ */
21
+ // eslint-disable-next-line no-unused-vars
22
+ setFeedback: ({ message, type }) => {
23
+ }
24
+ };
25
+ var FeedbackContent = createContext(DefaultValue);
26
+ var useFeeback = () => useContext(FeedbackContent);
27
+ var useStyles = makeStyles()(() => ({
28
+ alert: {
29
+ /**
30
+ * To avoid changing the success color directly from palette
31
+ * I decided to override the color only here, just to not create design issues
32
+ */
33
+ "&.MuiAlert-filled.MuiAlert-colorSuccess": {
34
+ backgroundColor: "#2E7D32;"
35
+ }
36
+ }
37
+ }));
38
+ var FeedbackProvider = ({ children }) => {
39
+ const [isOpen, setIsOpen] = useState(false);
40
+ const [message, setMessage] = useState("");
41
+ const [type, setType] = useState("");
42
+ const handleFeedbackChange = (feedback) => {
43
+ setMessage(feedback.message);
44
+ setType(feedback.type);
45
+ setIsOpen(true);
46
+ };
47
+ const handleClose = () => {
48
+ setIsOpen(false);
49
+ };
50
+ const { classes } = useStyles();
51
+ const providerValue = useMemo(
52
+ () => ({
53
+ setFeedback: handleFeedbackChange
54
+ }),
55
+ []
56
+ );
57
+ return /* @__PURE__ */ jsxs(FeedbackContent.Provider, { value: providerValue, children: [
58
+ children,
59
+ /* @__PURE__ */ jsx(
60
+ Snackbar,
61
+ {
62
+ anchorOrigin: { vertical: "top", horizontal: "right" },
63
+ autoHideDuration: 5e3,
64
+ onClose: handleClose,
65
+ open: isOpen,
66
+ children: /* @__PURE__ */ jsx(
67
+ MuiAlert,
68
+ {
69
+ className: classes.alert,
70
+ onClose: handleClose,
71
+ severity: type,
72
+ variant: "filled",
73
+ children: message
74
+ }
75
+ )
76
+ }
77
+ )
78
+ ] });
79
+ };
80
+ FeedbackProvider.propTypes = {
81
+ children: node.isRequired
82
+ };
83
+
84
+ // src/providers/ErrorProvider/ErrorProvider.tsx
85
+ import { jsx as jsx2 } from "react/jsx-runtime";
86
+ var DefaultValue2 = {
87
+ // eslint-disable-next-line no-unused-vars
88
+ setError: (error) => {
89
+ }
90
+ };
91
+ var ErrorContent = createContext2(DefaultValue2);
92
+ var useError = () => useContext2(ErrorContent);
93
+ var ErrorProvider = ({ children }) => {
94
+ const { setFeedback } = useFeeback();
95
+ const handleErrorChange = (error) => {
96
+ if (error?.message) {
97
+ setFeedback({
98
+ message: error.message,
99
+ type: "error"
100
+ });
101
+ return;
102
+ }
103
+ if (error?.response) {
104
+ setFeedback({
105
+ message: `${error.response.status}: ${error.response.data.detail}`,
106
+ type: "error"
107
+ });
108
+ return;
109
+ }
110
+ if (typeof error === "string") {
111
+ setFeedback({
112
+ message: error,
113
+ type: "error"
114
+ });
115
+ }
116
+ };
117
+ const providerValue = useMemo2(
118
+ () => ({
119
+ setError: handleErrorChange
120
+ }),
121
+ []
122
+ );
123
+ return /* @__PURE__ */ jsx2(ErrorContent.Provider, { value: providerValue, children });
124
+ };
125
+ ErrorProvider.propTypes = {
126
+ children: node2.isRequired
127
+ };
128
+
129
+ // src/providers/LoadingProvider/LoadingProvider.tsx
130
+ import { createContext as createContext3, useContext as useContext3, useMemo as useMemo3, useState as useState2 } from "react";
131
+ import { node as node3 } from "prop-types";
132
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
133
+ var DefaultValue3 = {
134
+ isLoading: false,
135
+ setLoading: (isLoading) => {
136
+ }
137
+ };
138
+ var LoadingContext = createContext3(DefaultValue3);
139
+ var useLoading = () => useContext3(LoadingContext);
140
+ var LoadingProvider = ({ children }) => {
141
+ const [isLoading, setIsLoading] = useState2(false);
142
+ const providerValue = useMemo3(
143
+ () => ({
144
+ isLoading,
145
+ setLoading: setIsLoading
146
+ }),
147
+ []
148
+ );
149
+ return /* @__PURE__ */ jsxs2(LoadingContext.Provider, { value: providerValue, children: [
150
+ children,
151
+ /* @__PURE__ */ jsx3(Loading_default, { isLoading })
152
+ ] });
153
+ };
154
+ LoadingProvider.propTypes = {
155
+ children: node3.isRequired
156
+ };
157
+ export {
158
+ ErrorProvider,
159
+ FeedbackProvider,
160
+ LoadingProvider,
161
+ useError,
162
+ useFeeback,
163
+ useLoading
164
+ };
165
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/providers/ErrorProvider/ErrorProvider.tsx","../../src/providers/FeedbackProvider/FeedbackProvider.tsx","../../src/providers/LoadingProvider/LoadingProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\n\nimport { node } from 'prop-types';\n\nimport { useFeeback } from '../FeedbackProvider/FeedbackProvider';\n\nconst DefaultValue = {\n // eslint-disable-next-line no-unused-vars\n setError: (error) => {},\n};\n\nconst ErrorContent = createContext(DefaultValue);\n\nconst useError = () => useContext(ErrorContent);\n\nconst ErrorProvider = ({ children }) => {\n const { setFeedback } = useFeeback();\n\n /**\n * Usually, errors will come as an AxiosResponse\n * Sometimes error will have a message property\n * @see https://axios-http.com/docs/res_schema\n */\n const handleErrorChange = (error) => {\n if (error?.message) {\n setFeedback({\n message: error.message,\n type: 'error',\n });\n return;\n }\n\n if (error?.response) {\n setFeedback({\n message: `${error.response.status}: ${error.response.data.detail}`,\n type: 'error',\n });\n return;\n }\n\n if (typeof error === 'string') {\n setFeedback({\n message: error,\n type: 'error',\n });\n }\n };\n\n const providerValue = useMemo(\n () => ({\n setError: handleErrorChange,\n }),\n [],\n );\n\n return (\n <ErrorContent.Provider value={providerValue}>\n {children}\n </ErrorContent.Provider>\n );\n};\n\nErrorProvider.propTypes = {\n children: node.isRequired,\n};\n\nexport { ErrorProvider, useError };\n","import React, { createContext, useContext, useMemo, useState } from 'react';\n\nimport { Alert as MuiAlert, Snackbar } from '@mui/material';\nimport { node } from 'prop-types';\nimport { makeStyles } from 'tss-react/mui';\n\nconst DefaultValue = {\n /**\n * @param {object} arguments\n * @param {string} arguments.message - Content of the feedback\n * @param {string} arguments.type - Type of the feedback. Can be either: success | error\n */\n // eslint-disable-next-line no-unused-vars\n setFeedback: ({ message, type }) => {},\n};\n\nconst FeedbackContent = createContext(DefaultValue);\n\nconst useFeeback = () => useContext(FeedbackContent);\n\nconst useStyles = makeStyles()(() => ({\n alert: {\n /**\n * To avoid changing the success color directly from palette\n * I decided to override the color only here, just to not create design issues\n */\n '&.MuiAlert-filled.MuiAlert-colorSuccess': {\n backgroundColor: '#2E7D32;',\n },\n },\n}));\n\nconst FeedbackProvider = ({ children }) => {\n const [isOpen, setIsOpen] = useState(false);\n const [message, setMessage] = useState('');\n const [type, setType] = useState('');\n\n const handleFeedbackChange = (feedback) => {\n setMessage(feedback.message);\n setType(feedback.type);\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n const { classes } = useStyles();\n\n const providerValue = useMemo(\n () => ({\n setFeedback: handleFeedbackChange,\n }),\n [],\n );\n\n return (\n <FeedbackContent.Provider value={providerValue}>\n {children}\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n autoHideDuration={5000}\n onClose={handleClose}\n open={isOpen}\n >\n <MuiAlert\n className={classes.alert}\n onClose={handleClose}\n severity={type as any}\n variant=\"filled\"\n >\n {message}\n </MuiAlert>\n </Snackbar>\n </FeedbackContent.Provider>\n );\n};\n\nFeedbackProvider.propTypes = {\n children: node.isRequired,\n};\n\nexport { FeedbackProvider, useFeeback };\n","/* eslint-disable no-unused-vars */\nimport React, { createContext, useContext, useMemo, useState } from 'react';\n\nimport { node } from 'prop-types';\n\nimport Loading from 'components/Loading/Loading';\n\nconst DefaultValue = {\n isLoading: false,\n setLoading: (isLoading) => {},\n};\n\nconst LoadingContext = createContext(DefaultValue);\n\nconst useLoading = () => useContext(LoadingContext);\n\nconst LoadingProvider = ({ children }) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const providerValue = useMemo(\n () => ({\n isLoading,\n setLoading: setIsLoading,\n }),\n [],\n );\n\n return (\n <LoadingContext.Provider value={providerValue}>\n {children}\n <Loading isLoading={isLoading} />\n </LoadingContext.Provider>\n );\n};\n\nLoadingProvider.propTypes = {\n children: node.isRequired,\n};\n\nexport { LoadingProvider, useLoading };\n"],"mappings":"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","names":["createContext","useContext","useMemo","node","jsx","DefaultValue","createContext","useContext","useMemo","node","createContext","useContext","useMemo","useState","node","jsx","jsxs","DefaultValue","createContext","useContext","useState","useMemo","node"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@natoora-libs/core",
3
- "version": "0.0.2",
3
+ "version": "0.0.31",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -10,6 +10,10 @@
10
10
  "dist"
11
11
  ],
12
12
  "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ },
13
17
  "./components": {
14
18
  "import": "./dist/components/index.js",
15
19
  "types": "./dist/components/index.d.ts"
@@ -93,10 +97,8 @@
93
97
  "@types/redux": "^3.6.0",
94
98
  "@types/uuid": "^9.0.8",
95
99
  "@typescript-eslint/parser": "^7.6.0",
96
- "@vitejs/plugin-react": "^4.3.4",
97
100
  "babel-jest": "^29.7.0",
98
101
  "babel-plugin-named-exports-order": "^0.0.2",
99
- "babel-plugin-transform-vite-meta-env": "^1.0.3",
100
102
  "eslint": "^7.32.0 || ^8.2.0",
101
103
  "eslint-config-airbnb": "^19.0.4",
102
104
  "eslint-config-prettier": "^8.8.0",