@owp/core 2.5.34 → 2.5.35

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 (108) hide show
  1. package/dist/_virtual/index3.js +2 -2
  2. package/dist/_virtual/index4.js +2 -2
  3. package/dist/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.js +68 -62
  4. package/dist/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.js.map +1 -1
  5. package/dist/components/OwpDialog/OwpAlertDialog.js +19 -18
  6. package/dist/components/OwpDialog/OwpAlertDialog.js.map +1 -1
  7. package/dist/components/OwpDialog/OwpDialog.js +34 -31
  8. package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
  9. package/dist/components/OwpDialog/internal/useDialogOpenFocusCleanup.js +18 -0
  10. package/dist/components/OwpDialog/internal/useDialogOpenFocusCleanup.js.map +1 -0
  11. package/dist/components/OwpErrorBoundary/OwpErrorBoundary.js +25 -15
  12. package/dist/components/OwpErrorBoundary/OwpErrorBoundary.js.map +1 -1
  13. package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
  14. package/dist/components/OwpNumberField/OwpNumberField.js +45 -24
  15. package/dist/components/OwpNumberField/OwpNumberField.js.map +1 -1
  16. package/dist/components/OwpScrollbars/OwpScrollbars.js +79 -52
  17. package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
  18. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +157 -157
  19. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  20. package/dist/components/OwpTable/OwpDataTable.js +377 -342
  21. package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
  22. package/dist/components/OwpTable/OwpTable.js +20 -19
  23. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  24. package/dist/components/OwpTable/internal/OwpTableBase.js +81 -78
  25. package/dist/components/OwpTable/internal/OwpTableBase.js.map +1 -1
  26. package/dist/components/OwpTable/internal/treeGridTableStyle.js +88 -31
  27. package/dist/components/OwpTable/internal/treeGridTableStyle.js.map +1 -1
  28. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +304 -262
  29. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  30. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +282 -277
  31. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  32. package/dist/configs/layoutConfig.js +0 -6
  33. package/dist/configs/layoutConfig.js.map +1 -1
  34. package/dist/constants/treeGrid.js +59 -46
  35. package/dist/constants/treeGrid.js.map +1 -1
  36. package/dist/constants.js +18 -18
  37. package/dist/constants.js.map +1 -1
  38. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +15 -15
  39. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
  40. package/dist/hooks/internal/useNavbar.js +4 -4
  41. package/dist/hooks/useConfirm.js +1 -1
  42. package/dist/hooks/useConfirm.js.map +1 -1
  43. package/dist/hooks/useOwpDialogs.js +19 -0
  44. package/dist/hooks/useOwpDialogs.js.map +1 -0
  45. package/dist/hooks.js +34 -32
  46. package/dist/hooks.js.map +1 -1
  47. package/dist/index.js +69 -71
  48. package/dist/index.js.map +1 -1
  49. package/dist/layout/Layout.js +23 -27
  50. package/dist/layout/Layout.js.map +1 -1
  51. package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
  52. package/dist/layout/components/menus/PasswordChangeMenu.js +25 -25
  53. package/dist/layout/components/menus/PasswordChangeMenu.js.map +1 -1
  54. package/dist/layout/components/toggles/NavigationSearchToggle.js +1 -1
  55. package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
  56. package/dist/layout/components/toggles/NavigationShortcutsToggle.js +1 -1
  57. package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
  58. package/dist/layout/components/toggles/ThemePreviewToggle.js +14 -14
  59. package/dist/layout/components/toggles/ThemePreviewToggle.js.map +1 -1
  60. package/dist/node_modules/.pnpm/inko@1.1.1/node_modules/inko/index.js +1 -1
  61. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/index.js +1 -1
  62. package/dist/owp-app.css +1 -1
  63. package/dist/types/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.d.ts +5 -3
  64. package/dist/types/components/OwpDialog/OwpAlertDialog.d.ts +1 -1
  65. package/dist/types/components/OwpDialog/internal/useDialogOpenFocusCleanup.d.ts +5 -0
  66. package/dist/types/components/OwpErrorBoundary/OwpErrorBoundary.d.ts +8 -14
  67. package/dist/types/components/OwpNumberField/OwpNumberField.d.ts +18 -4
  68. package/dist/types/components/OwpScrollbars/OwpScrollbars.d.ts +28 -14
  69. package/dist/types/components/OwpTable/internal/OwpTableBase.d.ts +3 -1
  70. package/dist/types/components/OwpTable/internal/treeGridTableStyle.d.ts +61 -2
  71. package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +2 -1
  72. package/dist/types/configs/layoutConfig.d.ts +0 -6
  73. package/dist/types/constants/index.d.ts +0 -1
  74. package/dist/types/constants/treeGrid.d.ts +9 -0
  75. package/dist/types/features/themePreview/dialogs/ThemePreviewDialog.d.ts +1 -1
  76. package/dist/types/hooks/index.d.ts +1 -0
  77. package/dist/types/hooks/useOwpDialogs.d.ts +5 -0
  78. package/dist/types/hooks/useOwpSettings.d.ts +0 -6
  79. package/dist/types/index.d.ts +0 -1
  80. package/dist/types/store/atoms/owpSettingsAtoms.d.ts +0 -6
  81. package/dist/types/types/OwpDialogTypes.d.ts +1 -0
  82. package/dist/types/types/OwpRouteTypes.d.ts +25 -0
  83. package/dist/types/types/index.d.ts +2 -0
  84. package/dist/types/utils/index.d.ts +0 -1
  85. package/dist/types/utils/internal/blurActiveElement.d.ts +4 -0
  86. package/dist/utils/internal/blurActiveElement.js +12 -0
  87. package/dist/utils/internal/blurActiveElement.js.map +1 -0
  88. package/dist/utils/{navigationUtils.js → internal/navigationUtils.js} +3 -3
  89. package/dist/utils/internal/navigationUtils.js.map +1 -0
  90. package/dist/utils.js +23 -25
  91. package/dist/utils.js.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/components/OwpEventEmitter/OwpEventEmitter.js +0 -51
  94. package/dist/components/OwpEventEmitter/OwpEventEmitter.js.map +0 -1
  95. package/dist/layout/components/layouts/LeftSideLayout.js +0 -13
  96. package/dist/layout/components/layouts/LeftSideLayout.js.map +0 -1
  97. package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/some.js +0 -66
  98. package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/some.js.map +0 -1
  99. package/dist/node_modules/.pnpm/perfect-scrollbar@1.5.6/node_modules/perfect-scrollbar/css/perfect-scrollbar.css +0 -1
  100. package/dist/types/components/OwpEventEmitter/OwpEventEmitter.d.ts +0 -27
  101. package/dist/types/components/OwpEventEmitter/index.d.ts +0 -1
  102. package/dist/types/layout/components/layouts/LeftSideLayout.d.ts +0 -6
  103. package/dist/types/utils/common/OwpUtils.d.ts +0 -119
  104. package/dist/types/utils/common/index.d.ts +0 -1
  105. package/dist/utils/common/OwpUtils.js +0 -196
  106. package/dist/utils/common/OwpUtils.js.map +0 -1
  107. package/dist/utils/navigationUtils.js.map +0 -1
  108. /package/dist/types/utils/{navigationUtils.d.ts → internal/navigationUtils.d.ts} +0 -0
@@ -1 +0,0 @@
1
- export * from './OwpUtils';
@@ -1,196 +0,0 @@
1
- var d = Object.defineProperty;
2
- var I = (f, t, n) => t in f ? d(f, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : f[t] = n;
3
- var u = (f, t) => d(f, "name", { value: t, configurable: !0 });
4
- var a = (f, t, n) => I(f, typeof t != "symbol" ? t + "" : t, n);
5
- import * as h from "@mui/material/colors";
6
- import { find as C } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/find.js";
7
- import { some as S } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/some.js";
8
- import { OwpEventEmitter as E } from "../../components/OwpEventEmitter/OwpEventEmitter.js";
9
- import { merge as O } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/merge.js";
10
- import { isEqual as B } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
11
- import { isObject as g } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isObject.js";
12
- const c = class c {
13
- /**
14
- * The filterArrayByString function filters an array of objects by a search string.
15
- * It takes in an array of objects and a search string as parameters and returns a filtered array of objects.
16
- *
17
- */
18
- static filterArrayByString(t, n) {
19
- if (!n || (n == null ? void 0 : n.length) === 0 || !n)
20
- return t;
21
- n = n == null ? void 0 : n.toLowerCase();
22
- const r = t.filter((e) => this.searchInObj(e, n));
23
- return r.length === t.length ? t : r;
24
- }
25
- static filterArrayByString2(t, n) {
26
- return typeof n != "string" || n === "" ? t : (n = n == null ? void 0 : n.toLowerCase(), t.filter((r) => this.searchInObj(r, n)));
27
- }
28
- /**
29
- * The searchInObj function searches an object for a given search string.
30
- * It takes in an object and a search string as parameters and returns a boolean indicating whether the search string was found in the object.
31
- *
32
- */
33
- static searchInObj(t, n) {
34
- if (!e(t))
35
- return !1;
36
- const r = Object.keys(t);
37
- function e(i) {
38
- return !!(i && typeof i == "object" && !Array.isArray(i) && typeof i != "function");
39
- }
40
- u(e, "isRecord");
41
- for (let i = 0; i < r.length; i += 1) {
42
- const s = r[i], o = t[s];
43
- if (typeof o == "string") {
44
- if (this.searchInString(o, n))
45
- return !0;
46
- } else if (Array.isArray(o) && this.searchInArray(o, n))
47
- return !0;
48
- if (typeof o == "object" && this.searchInObj(o, n))
49
- return !0;
50
- }
51
- return !1;
52
- }
53
- /**
54
- * The searchInArray function searches an array for a given search string.
55
- * It takes in an array and a search string as parameters and returns a boolean indicating whether the search string was found in the array.
56
- *
57
- */
58
- static searchInArray(t, n) {
59
- return t.forEach((r) => !!(typeof r == "string" && this.searchInString(r, n) || r && typeof r == "object" && this.searchInObj(r, n))), !1;
60
- }
61
- /**
62
- * The searchInString function searches a string for a given search string.
63
- * It takes in a string and a search string as parameters and returns a boolean indicating whether the search string was found in the string.
64
- *
65
- */
66
- static searchInString(t, n) {
67
- return t.toLowerCase().includes(n);
68
- }
69
- /**
70
- * The generateGUID function generates a globally unique identifier.
71
- * It returns a string representing the GUID.
72
- *
73
- */
74
- static generateGUID() {
75
- function t() {
76
- return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
77
- }
78
- return u(t, "S4"), t() + t();
79
- }
80
- /**
81
- * The toggleInArray function toggles an item in an array.
82
- */
83
- static toggleInArray(t, n) {
84
- n.indexOf(t) === -1 ? n.push(t) : n.splice(n.indexOf(t), 1);
85
- }
86
- /**
87
- * The handleize function converts a string to a handle.
88
- */
89
- static handleize(t) {
90
- return t.toString().toLowerCase().replace(/\s+/g, "-").replace(/\W+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
91
- }
92
- /**
93
- * The setRoutes function sets the routes for the Owp project.
94
- */
95
- static setRoutes(t, n = void 0) {
96
- let r = [];
97
- t != null && t.routes && (r = [...t.routes]);
98
- const e = /* @__PURE__ */ u((i, s) => {
99
- const o = i.auth || i.auth === null ? i.auth : s, l = O({}, t.settings, i.settings), p = {
100
- ...i,
101
- settings: l,
102
- auth: o
103
- };
104
- return i.children && (p.children = i.children.map((m) => e(m, o))), p;
105
- }, "applyAuth");
106
- return r = r.map((i) => {
107
- const s = t.auth || t.auth === null ? t.auth : n || null;
108
- return e(i, s);
109
- }), [...r];
110
- }
111
- /**
112
- * The generateRoutesFromConfigs function generates routes from a set of route configurations.
113
- * It takes in an array of route configurations as a parameter and returns an array of routes.
114
- *
115
- */
116
- static generateRoutesFromConfigs(t, n) {
117
- let r = [];
118
- return t.forEach((e) => {
119
- r = [...r, ...this.setRoutes(e, n)];
120
- }), r;
121
- }
122
- /**
123
- * The findById function finds an object by its id.
124
- */
125
- static findById(t, n) {
126
- const r = C(t, { id: n });
127
- if (r)
128
- return r;
129
- let e;
130
- return S(t, (i) => i.children ? (e = this.findById(i.children, n), e) : !1), e;
131
- }
132
- /**
133
- * The randomMatColor function generates a random material color.
134
- */
135
- static randomMatColor(t = "400") {
136
- var e;
137
- const n = [
138
- "red",
139
- "pink",
140
- "purple",
141
- "deepPurple",
142
- "indigo",
143
- "blue",
144
- "lightBlue",
145
- "cyan",
146
- "teal",
147
- "green",
148
- "lightGreen",
149
- "lime",
150
- "yellow",
151
- "amber",
152
- "orange",
153
- "deepOrange"
154
- ], r = n[Math.floor(Math.random() * n.length)];
155
- return (e = h[r]) == null ? void 0 : e[t];
156
- }
157
- /**
158
- * The findNavItemById function finds a navigation item by its id.
159
- */
160
- static difference(t, n) {
161
- function r(e, i) {
162
- return e == null ? void 0 : e.reduce((s, o, l) => (B(o, i[l]) || (s[l] = g(o) && g(i[l]) ? r(o, i[l]) : o), s), {});
163
- }
164
- return u(r, "changes"), r(t, n);
165
- }
166
- /**
167
- * The hasPermission function checks if a user has permission to access a resource.
168
- */
169
- // @ts-expect-error
170
- static hasPermission(t, n) {
171
- var r;
172
- return t == null ? !0 : Array.isArray(t) && (t == null ? void 0 : t.length) === 0 ? !n || n.length === 0 : n && Array.isArray(t) && Array.isArray(n) ? t.some((e) => n.indexOf(e) >= 0) : typeof n == "string" && Array.isArray(t) ? (r = t == null ? void 0 : t.includes) == null ? void 0 : r.call(t, n) : !1;
173
- }
174
- /**
175
- * The filterArrayByString function filters an array of objects by a search string.
176
- */
177
- static filterRecursive(t, n) {
178
- return t ? t.reduce((r, e) => {
179
- let i = null;
180
- if (n(e) && (i = { ...e }), e.children != null) {
181
- const s = this.filterRecursive(e.children, n);
182
- s && (s == null ? void 0 : s.length) > 0 && (i = { ...e, children: s });
183
- }
184
- return i && r.push(i), r;
185
- }, []) : null;
186
- }
187
- };
188
- u(c, "OwpUtils"), /**
189
- * OwpEventEmitter class reference
190
- */
191
- a(c, "EventEmitter", E);
192
- let y = c;
193
- export {
194
- y as OwpUtils
195
- };
196
- //# sourceMappingURL=OwpUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OwpUtils.js","sources":["../../../src/utils/common/OwpUtils.ts"],"sourcesContent":["import { OwpEventEmitter } from '@/components/OwpEventEmitter';\nimport type { OwpSettingsConfigType } from '@/types/OwpSettingsTypes';\nimport * as colors from '@mui/material/colors';\nimport { find, isEqual, isObject, merge, some } from 'es-toolkit/compat';\nimport { DeepPartial } from 'react-hook-form';\nimport { RouteObject } from 'react-router-dom';\nimport { PartialDeep } from 'type-fest';\n\ntype TreeNode = {\n id: string;\n children?: TreeNode[];\n};\n/**\n * The OwpRouteItemType type is a custom type that extends the RouteObject type from react-router-dom.\n * It adds an optional auth property and an optional settings property.\n */\nexport type OwpRouteItemType = RouteObject & {\n auth?: string[] | [] | null;\n settings?: DeepPartial<OwpSettingsConfigType>;\n children?: OwpRouteItemType[];\n};\n\n/**\n * The OwpRoutesType type is a custom type that is an array of OwpRouteItemType objects.\n */\nexport type OwpRoutesType = OwpRouteItemType[];\n\n/**\n * The OwpRouteConfigType type is a custom type that defines the configuration for a set of routes.\n * It includes an optional routes property, an optional settings property, and an optional auth property.\n */\nexport type OwpRouteConfigType = {\n routes: OwpRoutesType;\n settings?: PartialDeep<OwpSettingsConfigType>;\n auth?: string[] | [];\n path?: string;\n};\n\n/**\n * The OwpRouteConfigsType type is a custom type that is an array of OwpRouteConfigType objects.\n */\nexport type OwpRouteConfigsType = OwpRouteConfigType[] | [];\n\n/**\n * The hueTypes type is a custom type that defines the possible values for a hue.\n */\ntype hueTypes =\n | '50'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900'\n | 'A100'\n | 'A200'\n | 'A400'\n | 'A700';\n\ntype Color = {\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n A100?: string;\n A200?: string;\n A400?: string;\n A700?: string;\n [key: string]: string | undefined;\n};\n\n/**\n * The OwpUtils class provides utility functions for the Owp project.\n */\nexport class OwpUtils {\n /**\n * The filterArrayByString function filters an array of objects by a search string.\n * It takes in an array of objects and a search string as parameters and returns a filtered array of objects.\n *\n */\n\n static filterArrayByString<T>(mainArr: T[], searchText: string): T[] {\n if (!searchText || searchText?.length === 0 || !searchText) {\n return mainArr; \n }\n\n searchText = searchText?.toLowerCase();\n const filtered = mainArr.filter((itemObj) => this.searchInObj(itemObj, searchText));\n\n if (filtered.length === mainArr.length) {\n return mainArr; \n }\n\n return filtered;\n }\n\n static filterArrayByString2<T>(mainArr: T[], searchText: string): T[] {\n if (typeof searchText !== 'string' || searchText === '') {\n return mainArr;\n }\n\n searchText = searchText?.toLowerCase();\n\n return mainArr.filter((itemObj: unknown) => this.searchInObj(itemObj, searchText));\n }\n\n /**\n * The searchInObj function searches an object for a given search string.\n * It takes in an object and a search string as parameters and returns a boolean indicating whether the search string was found in the object.\n *\n */\n static searchInObj(itemObj: unknown, searchText: string) {\n if (!isRecord(itemObj)) {\n return false;\n }\n\n const propArray = Object.keys(itemObj);\n\n function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(\n value && typeof value === 'object' && !Array.isArray(value) && typeof value !== 'function',\n );\n }\n\n for (let i = 0; i < propArray.length; i += 1) {\n const prop = propArray[i];\n\n const value = itemObj[prop!];\n\n if (typeof value === 'string') {\n if (this.searchInString(value, searchText)) {\n return true;\n }\n } else if (Array.isArray(value)) {\n if (this.searchInArray(value, searchText)) {\n return true;\n }\n }\n\n if (typeof value === 'object') {\n if (this.searchInObj(value, searchText)) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * The searchInArray function searches an array for a given search string.\n * It takes in an array and a search string as parameters and returns a boolean indicating whether the search string was found in the array.\n *\n */\n static searchInArray(arr: unknown[], searchText: string) {\n arr.forEach((value) => {\n if (typeof value === 'string') {\n if (this.searchInString(value, searchText)) {\n return true;\n }\n }\n\n if (value && typeof value === 'object') {\n if (this.searchInObj(value, searchText)) {\n return true;\n }\n }\n\n return false;\n });\n return false;\n }\n\n /**\n * The searchInString function searches a string for a given search string.\n * It takes in a string and a search string as parameters and returns a boolean indicating whether the search string was found in the string.\n *\n */\n static searchInString(value: string, searchText: string) {\n return value.toLowerCase().includes(searchText);\n }\n\n /**\n * The generateGUID function generates a globally unique identifier.\n * It returns a string representing the GUID.\n *\n */\n static generateGUID(): string {\n function S4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n\n return S4() + S4();\n }\n\n /**\n * The toggleInArray function toggles an item in an array.\n */\n static toggleInArray(item: unknown, array: unknown[]) {\n if (array.indexOf(item) === -1) {\n array.push(item);\n } else {\n array.splice(array.indexOf(item), 1);\n }\n }\n\n /**\n * The handleize function converts a string to a handle.\n */\n static handleize(text: string) {\n return text\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') \n .replace(/\\W+/g, '') \n .replace(/--+/g, '-') \n .replace(/^-+/, '') \n .replace(/-+$/, ''); \n }\n\n /**\n * The setRoutes function sets the routes for the Owp project.\n */\n static setRoutes(\n config: OwpRouteConfigType,\n defaultAuth: OwpSettingsConfigType['defaultAuth'] = undefined,\n ): OwpRouteItemType[] {\n let routes: OwpRouteItemType[] = [];\n\n if (config?.routes) {\n routes = [...config.routes];\n }\n\n const applyAuth = (route: OwpRouteItemType, parentAuth: string[] | null) => {\n const auth = route.auth || route.auth === null ? route.auth : parentAuth;\n const settings = merge({}, config.settings, route.settings);\n\n const newRoute = {\n ...route,\n settings,\n auth,\n };\n\n if (route.children) {\n newRoute.children = route.children.map((childRoute) => applyAuth(childRoute, auth));\n }\n\n return newRoute;\n };\n\n routes = routes.map((route) => {\n const auth = config.auth || config.auth === null ? config.auth : defaultAuth || null;\n return applyAuth(route, auth);\n }) as OwpRouteItemType[];\n\n return [...routes];\n }\n\n /**\n * The generateRoutesFromConfigs function generates routes from a set of route configurations.\n * It takes in an array of route configurations as a parameter and returns an array of routes.\n *\n */\n static generateRoutesFromConfigs(\n configs: OwpRouteConfigsType,\n defaultAuth: OwpSettingsConfigType['defaultAuth'],\n ) {\n let allRoutes: OwpRouteItemType[] = [];\n configs.forEach((config: OwpRouteConfigType) => {\n allRoutes = [...allRoutes, ...this.setRoutes(config, defaultAuth)];\n });\n return allRoutes;\n }\n\n /**\n * The findById function finds an object by its id.\n */\n static findById(tree: TreeNode[], idToFind: string): TreeNode | undefined {\n \n const node = find(tree, { id: idToFind });\n\n if (node) {\n return node;\n }\n\n let foundNode: TreeNode | undefined;\n\n \n some(tree, (item) => {\n if (item.children) {\n foundNode = this.findById(item.children, idToFind);\n return foundNode; \n }\n\n return false; \n });\n\n return foundNode;\n }\n\n /**\n * The randomMatColor function generates a random material color.\n */\n static randomMatColor(hue: hueTypes = '400') {\n const mainColors = [\n 'red',\n 'pink',\n 'purple',\n 'deepPurple',\n 'indigo',\n 'blue',\n 'lightBlue',\n 'cyan',\n 'teal',\n 'green',\n 'lightGreen',\n 'lime',\n 'yellow',\n 'amber',\n 'orange',\n 'deepOrange',\n ];\n\n const randomColor = mainColors[Math.floor(Math.random() * mainColors.length)];\n\n return (colors as { [key: string]: Color })[randomColor!]?.[hue];\n }\n\n /**\n * The findNavItemById function finds a navigation item by its id.\n */\n static difference(\n object: Record<string, unknown>,\n base: Record<string, unknown>,\n ): Record<string, unknown> {\n function changes(\n _object: Record<string, unknown>,\n _base: Record<string, unknown>,\n ): Record<string, unknown> {\n // @ts-expect-error\n return _object?.reduce((result: Record<string, unknown>, value: unknown, key: string) => {\n if (!isEqual(value, _base[key])) {\n result[key] =\n isObject(value) && isObject(_base[key])\n ? changes(value as Record<string, unknown>, _base[key] as Record<string, unknown>)\n : value;\n }\n\n return result;\n }, {});\n }\n\n return changes(object, base);\n }\n\n /**\n * OwpEventEmitter class reference\n */\n static EventEmitter = OwpEventEmitter;\n\n /**\n * The hasPermission function checks if a user has permission to access a resource.\n */\n // @ts-expect-error\n static hasPermission(authArr: string[] | string | undefined, userRole: User['role']): boolean {\n \n if (authArr === null || authArr === undefined) {\n return true;\n }\n\n if (Array.isArray(authArr) && authArr?.length === 0) {\n \n return !userRole || userRole.length === 0;\n }\n\n \n \n if (userRole && Array.isArray(authArr) && Array.isArray(userRole)) {\n return authArr.some((r: string) => userRole.indexOf(r) >= 0);\n }\n\n if (typeof userRole === 'string' && Array.isArray(authArr)) {\n return authArr?.includes?.(userRole);\n }\n\n return false;\n }\n\n /**\n * The filterArrayByString function filters an array of objects by a search string.\n */\n static filterRecursive(data: [] | null, predicate: (arg0: unknown) => boolean) {\n \n return !data\n ? null\n : data.reduce((list: unknown[], entry: { children?: [] }) => {\n let clone: unknown = null;\n\n if (predicate(entry)) {\n \n clone = { ...entry };\n }\n\n if (entry.children != null) {\n \n const children = this.filterRecursive(entry.children, predicate);\n\n if (children && children?.length > 0) {\n \n \n clone = { ...entry, children };\n }\n }\n\n \n if (clone) {\n list.push(clone);\n }\n\n return list;\n }, []);\n }\n}\n"],"names":["_OwpUtils","mainArr","searchText","filtered","itemObj","isRecord","propArray","value","__name","prop","arr","S4","item","array","text","config","defaultAuth","routes","applyAuth","route","parentAuth","auth","settings","merge","newRoute","childRoute","configs","allRoutes","tree","idToFind","node","find","foundNode","some","hue","mainColors","randomColor","_a","colors","object","base","changes","_object","_base","result","key","isEqual","isObject","authArr","userRole","r","data","predicate","list","entry","clone","children","__publicField","OwpEventEmitter","OwpUtils"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigationUtils.js","sources":["../../src/utils/navigationUtils.ts"],"sourcesContent":["import type {\n OwpFlatNavItemType,\n OwpNavItemType,\n OwpNavPermission,\n} from '@/types/OwpNavigationTypes';\nimport { merge } from 'es-toolkit/compat';\nimport { defaults, uniqueId } from 'es-toolkit/compat';\nimport type { Pathname } from 'history';\nimport type { PartialDeep } from 'type-fest';\n\ntype OwpNavItemModelInput = PartialDeep<Omit<OwpNavItemType, 'permission'>> & {\n permission?: OwpNavPermission;\n};\n\n/**\n * Navigation item model factory\n */\nexport function OwpNavItemModel(data?: OwpNavItemModelInput): OwpNavItemType {\n return defaults(data || {}, {\n id: uniqueId(),\n title: '',\n translate: '',\n auth: null,\n subtitle: '',\n icon: '',\n iconClass: '',\n url: '',\n target: '',\n type: 'item',\n sx: {},\n disabled: false,\n active: false,\n exact: false,\n end: false,\n badge: null,\n children: [],\n });\n}\n\n/**\n * Navigation child URL matcher\n */\nexport function isUrlInChildren(parent: OwpNavItemType, url: Pathname) {\n if (!parent.children) {\n return false;\n }\n\n for (let i = 0; i < parent.children.length; i += 1) {\n const child = parent.children[i];\n\n if (child.children && isUrlInChildren(child, url)) {\n return true;\n }\n\n if (child.url && (child.url === url || url.includes(child.url))) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Navigation structure helper\n */\nexport class OwpNavigationHelper {\n static selectById(nav: OwpNavItemType[], id: string): OwpNavItemType | undefined {\n for (let i = 0; i < nav.length; i += 1) {\n const item = nav[i];\n\n if (item.id === id) {\n return item;\n }\n\n if (item.children) {\n const childItem = this.selectById(item.children, id);\n\n if (childItem) {\n return childItem;\n }\n }\n }\n\n return undefined;\n }\n\n static appendNavItem(\n nav: OwpNavItemType[],\n item: OwpNavItemType,\n parentId: string | null = null,\n ): OwpNavItemType[] {\n if (!parentId) {\n return [...nav, item];\n }\n\n return nav.map((node) => {\n if (node.id === parentId) {\n const newNode = { ...node };\n newNode.children = [...(node.children || []), item];\n return newNode;\n }\n\n if (node.children) {\n return { ...node, children: this.appendNavItem(node.children, item, parentId) };\n }\n\n return { ...node };\n });\n }\n\n static prependNavItem(\n nav: OwpNavItemType[],\n item: OwpNavItemType,\n parentId: string | null = null,\n ): OwpNavItemType[] {\n if (!parentId) {\n return [item, ...nav];\n }\n\n return nav.map((node) => {\n if (node.id === parentId) {\n const newNode = { ...node };\n newNode.children = [item, ...(node.children || [])];\n return newNode;\n }\n\n if (node.children) {\n return { ...node, children: this.prependNavItem(node.children, item, parentId) };\n }\n\n return { ...node };\n });\n }\n\n static filterNavigationByPermission(\n nav: OwpNavItemType[],\n // @ts-expect-error legacy user role contract\n userRole: User['role'],\n ): OwpNavItemType[] {\n return nav.reduce((acc: OwpNavItemType[], item) => {\n const children = item.children\n ? this.filterNavigationByPermission(item.children, userRole)\n : [];\n\n if (this.hasPermission(item.auth, userRole) || children.length) {\n const newItem = { ...item };\n newItem.children = children.length ? children : undefined;\n acc.push(newItem);\n }\n\n return acc;\n }, []);\n }\n\n /**\n * Navigation item removal\n */\n static removeNavItem(nav: OwpNavItemType[], id: string): OwpNavItemType[] {\n return nav.reduce((acc, node) => {\n if (node.id !== id) {\n if (node.children) {\n acc.push({\n ...node,\n children: this.removeNavItem(node.children, id),\n });\n } else {\n acc.push(node);\n }\n }\n\n return acc;\n }, [] as OwpNavItemType[]);\n }\n\n /**\n * Navigation item update\n */\n static updateNavItem(\n nav: OwpNavItemType[],\n id: string,\n item: PartialDeep<OwpNavItemType>,\n ): OwpNavItemType[] {\n return nav.map((node) => {\n if (node.id === id) {\n return merge({}, node, item);\n }\n\n if (node.children) {\n return {\n ...node,\n children: this.updateNavItem(node.children, id, item),\n };\n }\n\n return node;\n });\n }\n\n /**\n * Flat navigation list extraction\n */\n static getFlatNavigation(navigationItems: OwpNavItemType[] = [], flatNavigation = []) {\n for (let i = 0; i < navigationItems.length; i += 1) {\n const navItem = navigationItems[i];\n\n if (navItem.type === 'item') {\n flatNavigation.push(OwpNavItemModel(navItem));\n }\n\n if ((navItem.type === 'collapse' || navItem.type === 'group') && navItem.children) {\n this.getFlatNavigation(navItem.children, flatNavigation);\n }\n }\n\n return flatNavigation as OwpNavItemType[] | [];\n }\n\n // @ts-expect-error legacy user role contract\n static hasPermission(authArr: string[] | string | undefined, userRole: User['role']): boolean {\n if (authArr === null || authArr === undefined) {\n return true;\n }\n\n if (authArr.length === 0) {\n return !userRole || userRole.length === 0;\n }\n\n if (userRole && Array.isArray(authArr) && Array.isArray(userRole)) {\n return authArr.some((role) => userRole.indexOf(role) >= 0);\n }\n\n return authArr.includes(userRole as string);\n }\n\n static flattenNavigation(\n navigation: OwpNavItemType[],\n parentOrder: string = '',\n ): OwpFlatNavItemType[] {\n return navigation.flatMap((item, index) => {\n const order = parentOrder ? `${parentOrder}.${index + 1}` : `${index + 1}`;\n let flattened: OwpFlatNavItemType[] = [\n { ...item, order, children: item.children?.map((child) => child.id) },\n ];\n\n if (item.children) {\n flattened = flattened.concat(this.flattenNavigation(item.children, order));\n }\n\n return flattened;\n });\n }\n\n static unflattenNavigation(navigation: OwpFlatNavItemType[]): OwpNavItemType[] {\n const itemMap: { [id: string]: OwpNavItemType } = {};\n\n navigation.forEach((item) => {\n itemMap[item.id] = { ...item, children: [] };\n });\n\n const rootItems: OwpNavItemType[] = [];\n\n navigation.forEach((item) => {\n if (item.order.includes('.')) {\n const parentOrder = item.order.substring(0, item.order.lastIndexOf('.'));\n const parent = navigation.find((navItem) => navItem.order === parentOrder);\n\n if (parent) {\n itemMap[parent.id].children!.push(itemMap[item.id]);\n }\n } else {\n rootItems.push(itemMap[item.id]);\n }\n });\n\n return rootItems.map((item) => ({ ...item }));\n }\n}\n"],"names":["OwpNavItemModel","data","defaults","uniqueId","__name","_OwpNavigationHelper","nav","id","i","item","childItem","parentId","node","newNode","userRole","acc","children","newItem","merge","navigationItems","flatNavigation","navItem","authArr","role","navigation","parentOrder","index","order","flattened","_a","child","itemMap","rootItems","parent","OwpNavigationHelper"],"mappings":"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"}