@c-rex/utils 0.0.6 → 0.0.8
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.
- package/dist/index.d.mts +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +102 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +7 -13
- package/src/__tests__/breadcrumbs.test.ts +0 -57
- package/src/__tests__/classMerge.test.ts +0 -9
- package/src/__tests__/utils.test.ts +0 -61
- package/src/breadcrumbs.ts +0 -16
- package/src/classMerge.ts +0 -6
- package/src/index.ts +0 -4
- package/src/treeOfContent.ts +0 -83
- package/src/utils.ts +0 -45
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { QueryParams } from '@c-rex/types';
|
|
2
|
+
import { TreeOfContent } from '@c-rex/interfaces';
|
|
3
|
+
import { ClassValue } from 'clsx';
|
|
4
|
+
|
|
5
|
+
declare const createParams: (fieldsList: string[], key?: string) => {
|
|
6
|
+
key: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}[];
|
|
9
|
+
declare const updateUrlWithParams: (router: any, params: QueryParams[]) => void;
|
|
10
|
+
declare const generateQueryParams: (params: QueryParams[]) => string;
|
|
11
|
+
|
|
12
|
+
declare function saveInMemory(value: any, key: string): void;
|
|
13
|
+
declare function getFromMemory(key: string): any;
|
|
14
|
+
|
|
15
|
+
declare const generateBreadcrumbItems: (treeOfContent: TreeOfContent[]) => TreeOfContent[];
|
|
16
|
+
|
|
17
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
18
|
+
|
|
19
|
+
export { cn, createParams, generateBreadcrumbItems, generateQueryParams, getFromMemory, saveInMemory, updateUrlWithParams };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { QueryParams } from '@c-rex/types';
|
|
2
|
+
import { TreeOfContent } from '@c-rex/interfaces';
|
|
3
|
+
import { ClassValue } from 'clsx';
|
|
4
|
+
|
|
5
|
+
declare const createParams: (fieldsList: string[], key?: string) => {
|
|
6
|
+
key: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}[];
|
|
9
|
+
declare const updateUrlWithParams: (router: any, params: QueryParams[]) => void;
|
|
10
|
+
declare const generateQueryParams: (params: QueryParams[]) => string;
|
|
11
|
+
|
|
12
|
+
declare function saveInMemory(value: any, key: string): void;
|
|
13
|
+
declare function getFromMemory(key: string): any;
|
|
14
|
+
|
|
15
|
+
declare const generateBreadcrumbItems: (treeOfContent: TreeOfContent[]) => TreeOfContent[];
|
|
16
|
+
|
|
17
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
18
|
+
|
|
19
|
+
export { cn, createParams, generateBreadcrumbItems, generateQueryParams, getFromMemory, saveInMemory, updateUrlWithParams };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
cn: () => cn,
|
|
24
|
+
createParams: () => createParams,
|
|
25
|
+
generateBreadcrumbItems: () => generateBreadcrumbItems,
|
|
26
|
+
generateQueryParams: () => generateQueryParams,
|
|
27
|
+
getFromMemory: () => getFromMemory,
|
|
28
|
+
saveInMemory: () => saveInMemory,
|
|
29
|
+
updateUrlWithParams: () => updateUrlWithParams
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(index_exports);
|
|
32
|
+
|
|
33
|
+
// src/utils.ts
|
|
34
|
+
var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
|
|
35
|
+
key,
|
|
36
|
+
value: item
|
|
37
|
+
}));
|
|
38
|
+
var updateUrlWithParams = (router, params) => {
|
|
39
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
40
|
+
params.forEach((param) => {
|
|
41
|
+
searchParams.set(param.key, param.value.toString());
|
|
42
|
+
});
|
|
43
|
+
const queryString = searchParams.toString();
|
|
44
|
+
router.push(`${window.location.pathname}?${queryString}`);
|
|
45
|
+
};
|
|
46
|
+
var generateQueryParams = (params) => {
|
|
47
|
+
const queryParams = params.map(
|
|
48
|
+
(param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
|
|
49
|
+
).join("&");
|
|
50
|
+
return queryParams;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// src/memory.ts
|
|
54
|
+
function isBrowser() {
|
|
55
|
+
return typeof window !== "undefined" && typeof document !== "undefined";
|
|
56
|
+
}
|
|
57
|
+
function parseCookies() {
|
|
58
|
+
const cookies = {};
|
|
59
|
+
if (typeof document === "undefined") {
|
|
60
|
+
return cookies;
|
|
61
|
+
}
|
|
62
|
+
document.cookie.split(";").forEach((cookie) => {
|
|
63
|
+
const [key, value] = cookie.split("=");
|
|
64
|
+
if (key && value) {
|
|
65
|
+
cookies[key.trim()] = decodeURIComponent(value.trim());
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return cookies;
|
|
69
|
+
}
|
|
70
|
+
function setCookie(name, value, days = 30) {
|
|
71
|
+
if (typeof document === "undefined") return;
|
|
72
|
+
const expires = new Date(Date.now() + days * 86400 * 1e3).toUTCString();
|
|
73
|
+
document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;
|
|
74
|
+
}
|
|
75
|
+
function saveInMemory(value, key) {
|
|
76
|
+
if (isBrowser()) {
|
|
77
|
+
setCookie(key, JSON.stringify(value));
|
|
78
|
+
} else {
|
|
79
|
+
if (typeof global !== "undefined" && !(key in global)) {
|
|
80
|
+
global[key] = null;
|
|
81
|
+
}
|
|
82
|
+
const globalConfig = global[key];
|
|
83
|
+
if (globalConfig === null) {
|
|
84
|
+
global[key] = value;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function getFromMemory(key) {
|
|
89
|
+
let returnValue;
|
|
90
|
+
if (isBrowser()) {
|
|
91
|
+
const cookies = parseCookies();
|
|
92
|
+
const configStr = cookies[key];
|
|
93
|
+
if (configStr) {
|
|
94
|
+
try {
|
|
95
|
+
return JSON.parse(configStr);
|
|
96
|
+
} catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
} else {
|
|
102
|
+
returnValue = global[key];
|
|
103
|
+
}
|
|
104
|
+
return returnValue;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/breadcrumbs.ts
|
|
108
|
+
var generateBreadcrumbItems = (treeOfContent) => {
|
|
109
|
+
const result = [];
|
|
110
|
+
treeOfContent.forEach((item) => {
|
|
111
|
+
if (item.active) {
|
|
112
|
+
const filteredChildren = generateBreadcrumbItems(item.children);
|
|
113
|
+
result.push(item, ...filteredChildren);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return result;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// src/classMerge.ts
|
|
120
|
+
var import_clsx = require("clsx");
|
|
121
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
122
|
+
function cn(...inputs) {
|
|
123
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
124
|
+
}
|
|
125
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
126
|
+
0 && (module.exports = {
|
|
127
|
+
cn,
|
|
128
|
+
createParams,
|
|
129
|
+
generateBreadcrumbItems,
|
|
130
|
+
generateQueryParams,
|
|
131
|
+
getFromMemory,
|
|
132
|
+
saveInMemory,
|
|
133
|
+
updateUrlWithParams
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/memory.ts","../src/breadcrumbs.ts","../src/classMerge.ts"],"sourcesContent":["export * from './utils';\nexport * from './memory';\nexport * from './breadcrumbs';\nexport * from './classMerge';","\nimport { QueryParams } from '@c-rex/types';\n//import * as Flags from 'country-flag-icons/react/3x2';\n//import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';\n\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\nexport const updateUrlWithParams = (\n //router: AppRouterInstance,\n router: any,\n params: QueryParams[],\n) => {\n const searchParams = new URLSearchParams(window.location.search);\n\n params.forEach((param) => {\n searchParams.set(param.key, param.value.toString());\n });\n\n const queryString = searchParams.toString();\n router.push(`${window.location.pathname}?${queryString}`);\n};\n\nexport const generateQueryParams = (params: QueryParams[]): string => {\n const queryParams = params\n .map(\n (param) =>\n `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`,\n )\n .join(\"&\");\n return queryParams;\n};\n\n/*\nexport const getFlagIcon = (countryCode: string): JSX.Element | null => {\n if (countryCode === undefined) return null;\n \n return Flags[countryCode] || null;\n};\n\n\n*/","//Manage global state from NODE.JS\n//If doesn't have access to global save values on cookies\n\nfunction isBrowser() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction parseCookies(): Record<string, string> {\n const cookies: Record<string, string> = {};\n\n if (typeof document === 'undefined') {\n return cookies;\n }\n\n document.cookie.split(';').forEach(cookie => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n cookies[key.trim()] = decodeURIComponent(value.trim());\n }\n });\n\n return cookies;\n}\n\nfunction setCookie(name: string, value: string, days = 30) {\n if (typeof document === 'undefined') return;\n\n const expires = new Date(Date.now() + days * 86400 * 1000).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;\n}\n\nexport function saveInMemory(value: any, key: string) {\n\n if (isBrowser()) {\n setCookie(key, JSON.stringify(value));\n } else {\n if (typeof global !== 'undefined' && !(key in global)) {\n (global as any)[key] = null;\n }\n\n const globalConfig = (global as any)[key] as any;\n\n if (globalConfig === null) {\n (global as any)[key] = value;\n }\n }\n}\n\nexport function getFromMemory(key: string): any {\n let returnValue\n\n if (isBrowser()) {\n const cookies = parseCookies();\n const configStr = cookies[key];\n if (configStr) {\n try {\n return JSON.parse(configStr);\n } catch {\n return null;\n }\n }\n return null;\n\n } else {\n returnValue = (global as any)[key];\n }\n\n return returnValue\n}\n","import { TreeOfContent } from \"@c-rex/interfaces\";\n\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,eAAe,CAAC,YAAsB,MAAc,aAC7D,WAAW,IAAI,CAAC,UAAU;AAAA,EACtB;AAAA,EACA,OAAO;AACX,EAAE;AAEC,IAAM,sBAAsB,CAE/B,QACA,WACC;AACD,QAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAE/D,SAAO,QAAQ,CAAC,UAAU;AACtB,iBAAa,IAAI,MAAM,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACtD,CAAC;AAED,QAAM,cAAc,aAAa,SAAS;AAC1C,SAAO,KAAK,GAAG,OAAO,SAAS,QAAQ,IAAI,WAAW,EAAE;AAC5D;AAEO,IAAM,sBAAsB,CAAC,WAAkC;AAClE,QAAM,cAAc,OACf;AAAA,IACG,CAAC,UACG,GAAG,mBAAmB,MAAM,GAAG,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,EAC3E,EACC,KAAK,GAAG;AACb,SAAO;AACX;;;AC/BA,SAAS,YAAY;AACjB,SAAO,OAAO,WAAW,eAAe,OAAO,aAAa;AAChE;AAEA,SAAS,eAAuC;AAC5C,QAAM,UAAkC,CAAC;AAEzC,MAAI,OAAO,aAAa,aAAa;AACjC,WAAO;AAAA,EACX;AAEA,WAAS,OAAO,MAAM,GAAG,EAAE,QAAQ,YAAU;AACzC,UAAM,CAAC,KAAK,KAAK,IAAI,OAAO,MAAM,GAAG;AACrC,QAAI,OAAO,OAAO;AACd,cAAQ,IAAI,KAAK,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,IACzD;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAEA,SAAS,UAAU,MAAc,OAAe,OAAO,IAAI;AACvD,MAAI,OAAO,aAAa,YAAa;AAErC,QAAM,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAI,EAAE,YAAY;AACvE,WAAS,SAAS,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC,qBAAqB,OAAO;AACtF;AAEO,SAAS,aAAa,OAAY,KAAa;AAElD,MAAI,UAAU,GAAG;AACb,cAAU,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACxC,OAAO;AACH,QAAI,OAAO,WAAW,eAAe,EAAE,OAAO,SAAS;AACnD,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAEA,UAAM,eAAgB,OAAe,GAAG;AAExC,QAAI,iBAAiB,MAAM;AACvB,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAAA,EACJ;AACJ;AAEO,SAAS,cAAc,KAAkB;AAC5C,MAAI;AAEJ,MAAI,UAAU,GAAG;AACb,UAAM,UAAU,aAAa;AAC7B,UAAM,YAAY,QAAQ,GAAG;AAC7B,QAAI,WAAW;AACX,UAAI;AACA,eAAO,KAAK,MAAM,SAAS;AAAA,MAC/B,QAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EAEX,OAAO;AACH,kBAAe,OAAe,GAAG;AAAA,EACrC;AAEA,SAAO;AACX;;;AClEO,IAAM,0BAA0B,CACnC,kBACkB;AAClB,QAAM,SAA0B,CAAC;AAEjC,gBAAc,QAAQ,CAAC,SAAS;AAC5B,QAAI,KAAK,QAAQ;AACb,YAAM,mBAAmB,wBAAwB,KAAK,QAAQ;AAC9D,aAAO,KAAK,MAAM,GAAG,gBAAgB;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,SAAO;AACX;;;ACfA,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AACxC,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC/B;","names":[]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// src/utils.ts
|
|
2
|
+
var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
|
|
3
|
+
key,
|
|
4
|
+
value: item
|
|
5
|
+
}));
|
|
6
|
+
var updateUrlWithParams = (router, params) => {
|
|
7
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
8
|
+
params.forEach((param) => {
|
|
9
|
+
searchParams.set(param.key, param.value.toString());
|
|
10
|
+
});
|
|
11
|
+
const queryString = searchParams.toString();
|
|
12
|
+
router.push(`${window.location.pathname}?${queryString}`);
|
|
13
|
+
};
|
|
14
|
+
var generateQueryParams = (params) => {
|
|
15
|
+
const queryParams = params.map(
|
|
16
|
+
(param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
|
|
17
|
+
).join("&");
|
|
18
|
+
return queryParams;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// src/memory.ts
|
|
22
|
+
function isBrowser() {
|
|
23
|
+
return typeof window !== "undefined" && typeof document !== "undefined";
|
|
24
|
+
}
|
|
25
|
+
function parseCookies() {
|
|
26
|
+
const cookies = {};
|
|
27
|
+
if (typeof document === "undefined") {
|
|
28
|
+
return cookies;
|
|
29
|
+
}
|
|
30
|
+
document.cookie.split(";").forEach((cookie) => {
|
|
31
|
+
const [key, value] = cookie.split("=");
|
|
32
|
+
if (key && value) {
|
|
33
|
+
cookies[key.trim()] = decodeURIComponent(value.trim());
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return cookies;
|
|
37
|
+
}
|
|
38
|
+
function setCookie(name, value, days = 30) {
|
|
39
|
+
if (typeof document === "undefined") return;
|
|
40
|
+
const expires = new Date(Date.now() + days * 86400 * 1e3).toUTCString();
|
|
41
|
+
document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;
|
|
42
|
+
}
|
|
43
|
+
function saveInMemory(value, key) {
|
|
44
|
+
if (isBrowser()) {
|
|
45
|
+
setCookie(key, JSON.stringify(value));
|
|
46
|
+
} else {
|
|
47
|
+
if (typeof global !== "undefined" && !(key in global)) {
|
|
48
|
+
global[key] = null;
|
|
49
|
+
}
|
|
50
|
+
const globalConfig = global[key];
|
|
51
|
+
if (globalConfig === null) {
|
|
52
|
+
global[key] = value;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function getFromMemory(key) {
|
|
57
|
+
let returnValue;
|
|
58
|
+
if (isBrowser()) {
|
|
59
|
+
const cookies = parseCookies();
|
|
60
|
+
const configStr = cookies[key];
|
|
61
|
+
if (configStr) {
|
|
62
|
+
try {
|
|
63
|
+
return JSON.parse(configStr);
|
|
64
|
+
} catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
} else {
|
|
70
|
+
returnValue = global[key];
|
|
71
|
+
}
|
|
72
|
+
return returnValue;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// src/breadcrumbs.ts
|
|
76
|
+
var generateBreadcrumbItems = (treeOfContent) => {
|
|
77
|
+
const result = [];
|
|
78
|
+
treeOfContent.forEach((item) => {
|
|
79
|
+
if (item.active) {
|
|
80
|
+
const filteredChildren = generateBreadcrumbItems(item.children);
|
|
81
|
+
result.push(item, ...filteredChildren);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return result;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// src/classMerge.ts
|
|
88
|
+
import { clsx } from "clsx";
|
|
89
|
+
import { twMerge } from "tailwind-merge";
|
|
90
|
+
function cn(...inputs) {
|
|
91
|
+
return twMerge(clsx(inputs));
|
|
92
|
+
}
|
|
93
|
+
export {
|
|
94
|
+
cn,
|
|
95
|
+
createParams,
|
|
96
|
+
generateBreadcrumbItems,
|
|
97
|
+
generateQueryParams,
|
|
98
|
+
getFromMemory,
|
|
99
|
+
saveInMemory,
|
|
100
|
+
updateUrlWithParams
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/memory.ts","../src/breadcrumbs.ts","../src/classMerge.ts"],"sourcesContent":["\nimport { QueryParams } from '@c-rex/types';\n//import * as Flags from 'country-flag-icons/react/3x2';\n//import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';\n\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\nexport const updateUrlWithParams = (\n //router: AppRouterInstance,\n router: any,\n params: QueryParams[],\n) => {\n const searchParams = new URLSearchParams(window.location.search);\n\n params.forEach((param) => {\n searchParams.set(param.key, param.value.toString());\n });\n\n const queryString = searchParams.toString();\n router.push(`${window.location.pathname}?${queryString}`);\n};\n\nexport const generateQueryParams = (params: QueryParams[]): string => {\n const queryParams = params\n .map(\n (param) =>\n `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`,\n )\n .join(\"&\");\n return queryParams;\n};\n\n/*\nexport const getFlagIcon = (countryCode: string): JSX.Element | null => {\n if (countryCode === undefined) return null;\n \n return Flags[countryCode] || null;\n};\n\n\n*/","//Manage global state from NODE.JS\n//If doesn't have access to global save values on cookies\n\nfunction isBrowser() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction parseCookies(): Record<string, string> {\n const cookies: Record<string, string> = {};\n\n if (typeof document === 'undefined') {\n return cookies;\n }\n\n document.cookie.split(';').forEach(cookie => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n cookies[key.trim()] = decodeURIComponent(value.trim());\n }\n });\n\n return cookies;\n}\n\nfunction setCookie(name: string, value: string, days = 30) {\n if (typeof document === 'undefined') return;\n\n const expires = new Date(Date.now() + days * 86400 * 1000).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;\n}\n\nexport function saveInMemory(value: any, key: string) {\n\n if (isBrowser()) {\n setCookie(key, JSON.stringify(value));\n } else {\n if (typeof global !== 'undefined' && !(key in global)) {\n (global as any)[key] = null;\n }\n\n const globalConfig = (global as any)[key] as any;\n\n if (globalConfig === null) {\n (global as any)[key] = value;\n }\n }\n}\n\nexport function getFromMemory(key: string): any {\n let returnValue\n\n if (isBrowser()) {\n const cookies = parseCookies();\n const configStr = cookies[key];\n if (configStr) {\n try {\n return JSON.parse(configStr);\n } catch {\n return null;\n }\n }\n return null;\n\n } else {\n returnValue = (global as any)[key];\n }\n\n return returnValue\n}\n","import { TreeOfContent } from \"@c-rex/interfaces\";\n\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";AAKO,IAAM,eAAe,CAAC,YAAsB,MAAc,aAC7D,WAAW,IAAI,CAAC,UAAU;AAAA,EACtB;AAAA,EACA,OAAO;AACX,EAAE;AAEC,IAAM,sBAAsB,CAE/B,QACA,WACC;AACD,QAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAE/D,SAAO,QAAQ,CAAC,UAAU;AACtB,iBAAa,IAAI,MAAM,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACtD,CAAC;AAED,QAAM,cAAc,aAAa,SAAS;AAC1C,SAAO,KAAK,GAAG,OAAO,SAAS,QAAQ,IAAI,WAAW,EAAE;AAC5D;AAEO,IAAM,sBAAsB,CAAC,WAAkC;AAClE,QAAM,cAAc,OACf;AAAA,IACG,CAAC,UACG,GAAG,mBAAmB,MAAM,GAAG,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,EAC3E,EACC,KAAK,GAAG;AACb,SAAO;AACX;;;AC/BA,SAAS,YAAY;AACjB,SAAO,OAAO,WAAW,eAAe,OAAO,aAAa;AAChE;AAEA,SAAS,eAAuC;AAC5C,QAAM,UAAkC,CAAC;AAEzC,MAAI,OAAO,aAAa,aAAa;AACjC,WAAO;AAAA,EACX;AAEA,WAAS,OAAO,MAAM,GAAG,EAAE,QAAQ,YAAU;AACzC,UAAM,CAAC,KAAK,KAAK,IAAI,OAAO,MAAM,GAAG;AACrC,QAAI,OAAO,OAAO;AACd,cAAQ,IAAI,KAAK,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,IACzD;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAEA,SAAS,UAAU,MAAc,OAAe,OAAO,IAAI;AACvD,MAAI,OAAO,aAAa,YAAa;AAErC,QAAM,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAI,EAAE,YAAY;AACvE,WAAS,SAAS,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC,qBAAqB,OAAO;AACtF;AAEO,SAAS,aAAa,OAAY,KAAa;AAElD,MAAI,UAAU,GAAG;AACb,cAAU,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACxC,OAAO;AACH,QAAI,OAAO,WAAW,eAAe,EAAE,OAAO,SAAS;AACnD,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAEA,UAAM,eAAgB,OAAe,GAAG;AAExC,QAAI,iBAAiB,MAAM;AACvB,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAAA,EACJ;AACJ;AAEO,SAAS,cAAc,KAAkB;AAC5C,MAAI;AAEJ,MAAI,UAAU,GAAG;AACb,UAAM,UAAU,aAAa;AAC7B,UAAM,YAAY,QAAQ,GAAG;AAC7B,QAAI,WAAW;AACX,UAAI;AACA,eAAO,KAAK,MAAM,SAAS;AAAA,MAC/B,QAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EAEX,OAAO;AACH,kBAAe,OAAe,GAAG;AAAA,EACrC;AAEA,SAAO;AACX;;;AClEO,IAAM,0BAA0B,CACnC,kBACkB;AAClB,QAAM,SAA0B,CAAC;AAEjC,gBAAc,QAAQ,CAAC,SAAS;AAC5B,QAAI,KAAK,QAAQ;AACb,YAAM,mBAAmB,wBAAwB,KAAK,QAAQ;AAC9D,aAAO,KAAK,MAAM,GAAG,gBAAgB;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,SAAO;AACX;;;ACfA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AACxC,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC/B;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c-rex/utils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"types": "./dist/index.d.ts",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
4
7
|
"files": [
|
|
5
|
-
"
|
|
8
|
+
"dist"
|
|
6
9
|
],
|
|
7
10
|
"publishConfig": {
|
|
8
11
|
"access": "public"
|
|
9
12
|
},
|
|
10
|
-
"exports": {
|
|
11
|
-
".": {
|
|
12
|
-
"types": "./src/index.ts",
|
|
13
|
-
"import": "./src/index.ts",
|
|
14
|
-
"require": "./src/index.ts",
|
|
15
|
-
"default": "./src/index.ts"
|
|
16
|
-
},
|
|
17
|
-
"./package.json": "./package.json"
|
|
18
|
-
},
|
|
19
13
|
"scripts": {
|
|
20
|
-
"dev": "
|
|
21
|
-
"build": "
|
|
14
|
+
"dev": "tsup --watch",
|
|
15
|
+
"build": "tsup",
|
|
22
16
|
"test:watch": "jest --watch",
|
|
23
17
|
"test": "jest"
|
|
24
18
|
},
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { TreeOfContent } from "@c-rex/interfaces";
|
|
2
|
-
import { generateBreadcrumbItems } from "../breadcrumbs";
|
|
3
|
-
|
|
4
|
-
describe("generateBreadcrumbItems", () => {
|
|
5
|
-
const treeOfContent: TreeOfContent[] = [
|
|
6
|
-
{
|
|
7
|
-
label: "Test",
|
|
8
|
-
id: "test",
|
|
9
|
-
link: "/test",
|
|
10
|
-
active: true,
|
|
11
|
-
children: [
|
|
12
|
-
{
|
|
13
|
-
label: "Value1",
|
|
14
|
-
id: "value1",
|
|
15
|
-
link: "/test/value1",
|
|
16
|
-
active: true,
|
|
17
|
-
children: []
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
label: "Test2",
|
|
23
|
-
id: "test2",
|
|
24
|
-
link: "/test2",
|
|
25
|
-
active: false,
|
|
26
|
-
children: []
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
it("should generate breadcrumb items", () => {
|
|
31
|
-
const result = generateBreadcrumbItems(treeOfContent);
|
|
32
|
-
expect(result).toEqual([
|
|
33
|
-
{
|
|
34
|
-
label: "Test",
|
|
35
|
-
id: "test",
|
|
36
|
-
link: "/test",
|
|
37
|
-
active: true,
|
|
38
|
-
children: [
|
|
39
|
-
{
|
|
40
|
-
label: "Value1",
|
|
41
|
-
id: "value1",
|
|
42
|
-
link: "/test/value1",
|
|
43
|
-
active: true,
|
|
44
|
-
children: []
|
|
45
|
-
}
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
label: "Value1",
|
|
50
|
-
id: "value1",
|
|
51
|
-
link: "/test/value1",
|
|
52
|
-
active: true,
|
|
53
|
-
children: []
|
|
54
|
-
}
|
|
55
|
-
])
|
|
56
|
-
})
|
|
57
|
-
})
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { TreeOfContent } from "@c-rex/interfaces";
|
|
2
|
-
import { cn } from "../classMerge";
|
|
3
|
-
|
|
4
|
-
describe("cn", () => {
|
|
5
|
-
it("should generate merged class names", () => {
|
|
6
|
-
const result = cn("test", "test2", "test3");
|
|
7
|
-
expect(result).toEqual("test test2 test3");
|
|
8
|
-
})
|
|
9
|
-
})
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { updateUrlWithParams, generateQueryParams, createParams } from "../";
|
|
2
|
-
import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
|
|
3
|
-
|
|
4
|
-
describe("createParams", () => {
|
|
5
|
-
it("should create parameters", () => {
|
|
6
|
-
const params = ["value1", "value2"];
|
|
7
|
-
const result = createParams(params, "key");
|
|
8
|
-
expect(result).toEqual([
|
|
9
|
-
{ key: "key", value: "value1" },
|
|
10
|
-
{ key: "key", value: "value2" },
|
|
11
|
-
]);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
describe("updateUrlWithParams", () => {
|
|
16
|
-
it("should update the URL with given parameters", () => {
|
|
17
|
-
const mockRouter = {
|
|
18
|
-
push: jest.fn(),
|
|
19
|
-
pathname: "test",
|
|
20
|
-
query: {},
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const params = [{ key: "page", value: "1" }];
|
|
24
|
-
updateUrlWithParams(mockRouter as unknown as AppRouterInstance, params);
|
|
25
|
-
|
|
26
|
-
expect(mockRouter.push).toHaveBeenCalledWith("/?page=1");
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
describe("generateQueryParams", () => {
|
|
31
|
-
it("should generate query parameters from an object", () => {
|
|
32
|
-
const params = [
|
|
33
|
-
{ key: "key1", value: "value1" },
|
|
34
|
-
{ key: "key2", value: "value2" },
|
|
35
|
-
];
|
|
36
|
-
const queryParams = generateQueryParams(params);
|
|
37
|
-
expect(queryParams).toBe("key1=value1&key2=value2");
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("should generate query parameters with only one object", () => {
|
|
41
|
-
const params = [{ key: "key1", value: "value1" }];
|
|
42
|
-
const queryParams = generateQueryParams(params);
|
|
43
|
-
expect(queryParams).toBe("key1=value1");
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
/*
|
|
48
|
-
describe("getFlagIcon", () => {
|
|
49
|
-
it("should return the flag icon", () => {
|
|
50
|
-
const flag = "US";
|
|
51
|
-
const result = getFlagIcon(flag);
|
|
52
|
-
expect(result).not.toBeNull();
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
it("should return null", () => {
|
|
56
|
-
const flag = "ABC";
|
|
57
|
-
const result = getFlagIcon(flag);
|
|
58
|
-
expect(result).toBeNull();
|
|
59
|
-
})
|
|
60
|
-
})
|
|
61
|
-
*/
|
package/src/breadcrumbs.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { TreeOfContent } from "@c-rex/interfaces";
|
|
2
|
-
|
|
3
|
-
export const generateBreadcrumbItems = (
|
|
4
|
-
treeOfContent: TreeOfContent[],
|
|
5
|
-
): TreeOfContent[] => {
|
|
6
|
-
const result: TreeOfContent[] = [];
|
|
7
|
-
|
|
8
|
-
treeOfContent.forEach((item) => {
|
|
9
|
-
if (item.active) {
|
|
10
|
-
const filteredChildren = generateBreadcrumbItems(item.children);
|
|
11
|
-
result.push(item, ...filteredChildren);
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
return result;
|
|
16
|
-
};
|
package/src/classMerge.ts
DELETED
package/src/index.ts
DELETED
package/src/treeOfContent.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
import { DirectoryNodesService } from "@c-rex/services";
|
|
3
|
-
|
|
4
|
-
import { DirectoryNodes } from "@c-rex/interfaces";
|
|
5
|
-
import { informationUnitsDirectories } from "@c-rex/interfaces";
|
|
6
|
-
import { TreeOfContent } from "@c-rex/interfaces";
|
|
7
|
-
|
|
8
|
-
export const generateTreeOfContent = async (
|
|
9
|
-
directoryNodes: DirectoryNodes[],
|
|
10
|
-
): Promise<TreeOfContent[]> => {
|
|
11
|
-
|
|
12
|
-
const service = new DirectoryNodesService();
|
|
13
|
-
|
|
14
|
-
if (directoryNodes.length == 0) return [];
|
|
15
|
-
if (directoryNodes[0] == undefined) return [];
|
|
16
|
-
|
|
17
|
-
let id = directoryNodes[0].shortId;
|
|
18
|
-
let response = await service.getItem(id);
|
|
19
|
-
const childList = await getChildrenInfo(response.childNodes);
|
|
20
|
-
let result: TreeOfContent[] = childList;
|
|
21
|
-
|
|
22
|
-
while (response.parents != undefined) {
|
|
23
|
-
if (response.informationUnits[0] == undefined) return result;
|
|
24
|
-
if (response.labels[0] == undefined) return result;
|
|
25
|
-
if (response.parents[0] == undefined) return result;
|
|
26
|
-
|
|
27
|
-
const infoId = response.informationUnits[0].shortId;
|
|
28
|
-
const aux = {
|
|
29
|
-
active: true,
|
|
30
|
-
label: response.labels[0].value,
|
|
31
|
-
id: response.shortId,
|
|
32
|
-
link: `/info/${infoId}`,
|
|
33
|
-
children: [...result],
|
|
34
|
-
};
|
|
35
|
-
id = response.parents[0].shortId;
|
|
36
|
-
response = await service.getItem(id);
|
|
37
|
-
|
|
38
|
-
const tree = await getChildrenInfo(response.childNodes, aux);
|
|
39
|
-
|
|
40
|
-
result = [...tree];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const getChildrenInfo = async (
|
|
47
|
-
childNodes: informationUnitsDirectories[],
|
|
48
|
-
childItem?: TreeOfContent,
|
|
49
|
-
): Promise<TreeOfContent[]> => {
|
|
50
|
-
const result: TreeOfContent[] = [];
|
|
51
|
-
if (childNodes == undefined) return result;
|
|
52
|
-
|
|
53
|
-
for (const item of childNodes) {
|
|
54
|
-
if (item.labels[0] == undefined) break;
|
|
55
|
-
|
|
56
|
-
const infoId = await getLink(item.shortId);
|
|
57
|
-
let resultItem: TreeOfContent = {
|
|
58
|
-
active: false,
|
|
59
|
-
label: item.labels[0].value,
|
|
60
|
-
link: `/info/${infoId}`,
|
|
61
|
-
id: item.shortId,
|
|
62
|
-
children: [],
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
if (childItem?.id == item.shortId) {
|
|
66
|
-
resultItem = childItem;
|
|
67
|
-
}
|
|
68
|
-
result.push(resultItem);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return result;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
const getLink = async (id: string): Promise<string> => {
|
|
75
|
-
|
|
76
|
-
const service = new DirectoryNodesService();
|
|
77
|
-
const response = await service.getItem(id);
|
|
78
|
-
if (response.informationUnits == undefined) return "";
|
|
79
|
-
if (response.informationUnits[0] == undefined) return "";
|
|
80
|
-
|
|
81
|
-
return response.informationUnits[0].shortId;
|
|
82
|
-
};
|
|
83
|
-
*/
|
package/src/utils.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { QueryParams } from '@c-rex/types';
|
|
3
|
-
//import * as Flags from 'country-flag-icons/react/3x2';
|
|
4
|
-
//import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';
|
|
5
|
-
|
|
6
|
-
export const createParams = (fieldsList: string[], key: string = "Fields") =>
|
|
7
|
-
fieldsList.map((item) => ({
|
|
8
|
-
key: key,
|
|
9
|
-
value: item,
|
|
10
|
-
}));
|
|
11
|
-
|
|
12
|
-
export const updateUrlWithParams = (
|
|
13
|
-
//router: AppRouterInstance,
|
|
14
|
-
router: any,
|
|
15
|
-
params: QueryParams[],
|
|
16
|
-
) => {
|
|
17
|
-
const searchParams = new URLSearchParams(window.location.search);
|
|
18
|
-
|
|
19
|
-
params.forEach((param) => {
|
|
20
|
-
searchParams.set(param.key, param.value.toString());
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const queryString = searchParams.toString();
|
|
24
|
-
router.push(`${window.location.pathname}?${queryString}`);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const generateQueryParams = (params: QueryParams[]): string => {
|
|
28
|
-
const queryParams = params
|
|
29
|
-
.map(
|
|
30
|
-
(param) =>
|
|
31
|
-
`${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`,
|
|
32
|
-
)
|
|
33
|
-
.join("&");
|
|
34
|
-
return queryParams;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/*
|
|
38
|
-
export const getFlagIcon = (countryCode: string): JSX.Element | null => {
|
|
39
|
-
if (countryCode === undefined) return null;
|
|
40
|
-
|
|
41
|
-
return Flags[countryCode] || null;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|