@admin-layout/tailwind-design-pro 12.0.16-alpha.63 → 12.0.16-alpha.66
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/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/TailwindLayout.js +7 -10
- package/lib/components/Layout/TailwindLayout.js.map +1 -1
- package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.d.ts +2 -0
- package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.d.ts.map +1 -1
- package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.js +18 -160
- package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.js.map +1 -1
- package/lib/compute.js +1 -1
- package/lib/machines/settingsMachine.d.ts.map +1 -1
- package/lib/machines/settingsMachine.js +10 -52
- package/lib/machines/settingsMachine.js.map +1 -1
- package/lib/routes.json +1 -1
- package/package.json +5 -5
- package/lib/config/analytics-config.js +0 -9
- package/lib/config/analytics-config.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,sBAAsB,CAAC;AAK3E,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAuIvF,KAAK,cAAc,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,QAAA,MAAM,SAAS;;;0EAAoB,CAAC;AAEpC,KAAK,+BAA+B,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzE,QAAA,MAAM,mBAAmB,EAAE,kBAAkB,CACzC,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,+BAA+B,KAAK,GAAG,CAAC,OAAO,CAAC,EAClF,GAAG,CAC8C,CAAC;AAEtD,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx}from'react/jsx-runtime';import {useLayoutSettings
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import {useLayoutSettings}from'@admin-layout/client';import {TailwindThemeProvider}from'@admin-layout/tailwind-ui';import {userSelector}from'@adminide-stack/user-auth0-client';import {useLocation,useRouteLoaderData,useMatches}from'@remix-run/react';import {useMachine}from'@xstate/react';import React__default,{useMemo,useCallback}from'react';import {connect,useSelector}from'react-redux';import {settingsMachine}from'../../machines/settingsMachine.js';import {BasicLayout}from'./BasicLayout/index.js';function BasicLayoutWithAuthorities(props) {
|
|
2
2
|
const userData = useSelector(userSelector);
|
|
3
3
|
const location = useLocation();
|
|
4
4
|
const {
|
|
@@ -9,7 +9,6 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings,CHANGE_SETTINGS_AC
|
|
|
9
9
|
setSettings
|
|
10
10
|
} = useLayoutSettings();
|
|
11
11
|
const matches = useMatches();
|
|
12
|
-
const dispatch = useDispatch();
|
|
13
12
|
const current = matches[matches.length - 1];
|
|
14
13
|
// Use settingsFromLoader if available, fallback to Redux settings
|
|
15
14
|
// This ensures the machine always has valid settings input
|
|
@@ -44,14 +43,6 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings,CHANGE_SETTINGS_AC
|
|
|
44
43
|
hasPublic: !!context.public,
|
|
45
44
|
hasInternal: !!context.internal
|
|
46
45
|
});
|
|
47
|
-
const publicSettings = context.public;
|
|
48
|
-
if (event?.type === 'UISETTING_ROUTE_CHANGE') {
|
|
49
|
-
dispatch({
|
|
50
|
-
type: CHANGE_SETTINGS_ACTION,
|
|
51
|
-
payload: publicSettings
|
|
52
|
-
});
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
46
|
// REVOLUTIONARY APPROACH: No filtering needed!
|
|
56
47
|
// The context is already separated into public and internal namespaces.
|
|
57
48
|
// We simply sync context.public to Redux - that's it!
|
|
@@ -61,6 +52,7 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings,CHANGE_SETTINGS_AC
|
|
|
61
52
|
// - context.internal.configModel changes don't affect context.public
|
|
62
53
|
// - No manual filtering means no chance of mistakes
|
|
63
54
|
// - Type system enforces the separation at compile time
|
|
55
|
+
const publicSettings = context.public;
|
|
64
56
|
console.log('🔥 Sending PUBLIC settings to Redux:', {
|
|
65
57
|
publicKeys: Object.keys(publicSettings).slice(0, 10),
|
|
66
58
|
navTheme: publicSettings.navTheme,
|
|
@@ -92,6 +84,10 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings,CHANGE_SETTINGS_AC
|
|
|
92
84
|
const mainHeaderProps = useMemo(() => ({
|
|
93
85
|
picture: userData?.profile?.picture || null
|
|
94
86
|
}), [userData?.profile?.picture]);
|
|
87
|
+
const onSettingChange = useCallback(config => {
|
|
88
|
+
// Update Redux first
|
|
89
|
+
setSettings(config);
|
|
90
|
+
}, [setSettings]);
|
|
95
91
|
//@ts-ignore
|
|
96
92
|
const {
|
|
97
93
|
routeParams: {
|
|
@@ -106,6 +102,7 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings,CHANGE_SETTINGS_AC
|
|
|
106
102
|
children: jsx(BasicLayout, {
|
|
107
103
|
routeParams: orgName,
|
|
108
104
|
authorities: permissions?.resolveConfiguration ?? permissions,
|
|
105
|
+
onSettingChange: onSettingChange,
|
|
109
106
|
mainHeaderProps: mainHeaderProps,
|
|
110
107
|
actor: settingsActor,
|
|
111
108
|
...props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindLayout.js","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TailwindLayout.js","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -11,5 +11,7 @@ export declare const loader: ({ request, context, params, }: {
|
|
|
11
11
|
params?: IResourceParams;
|
|
12
12
|
}) => Promise<import("@remix-run/server-runtime").TypedResponse<{
|
|
13
13
|
settings: any;
|
|
14
|
+
}> | import("@remix-run/server-runtime").TypedResponse<{
|
|
15
|
+
error: string;
|
|
14
16
|
}>>;
|
|
15
17
|
//# sourceMappingURL=UpdateSettingsResource.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateSettingsResource.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettingsResource/UpdateSettingsResource.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"UpdateSettingsResource.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettingsResource/UpdateSettingsResource.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAOrD,eAAO,MAAM,MAAM,GAAU,+BAI1B;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B,oEAyCA,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,+BAI1B;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;;;;GAmBA,CAAC"}
|
|
@@ -1,34 +1,5 @@
|
|
|
1
1
|
import { json } from '@remix-run/node';
|
|
2
|
-
import {
|
|
3
|
-
import { compareAndSaveSettingsDifferences } from '@admin-layout/client';
|
|
4
|
-
import { settingsCookie, fetchPageSettingsWithFetch, settingsLoaderUtil } from '@admin-layout/client/lib/components/UpdateSettings/UpdateSettings.server';
|
|
5
|
-
import { config } from '../../config/env-config.js';
|
|
6
|
-
import '../../config/analytics-config.js'; /**
|
|
7
|
-
* Parse LAYOUT_SETTINGS from config (which may be a JSON string from env variable)
|
|
8
|
-
* This is the single place where we handle the parsing logic
|
|
9
|
-
*/
|
|
10
|
-
function parseLayoutSettings() {
|
|
11
|
-
try {
|
|
12
|
-
if (!config.LAYOUT_SETTINGS) {
|
|
13
|
-
return {};
|
|
14
|
-
}
|
|
15
|
-
// If it's already an object (parsed by envalid json validator), return it
|
|
16
|
-
if (typeof config.LAYOUT_SETTINGS === 'object' && !Array.isArray(config.LAYOUT_SETTINGS)) {
|
|
17
|
-
return config.LAYOUT_SETTINGS;
|
|
18
|
-
}
|
|
19
|
-
// If it's a string, parse it (this happens when envalid uses str validator)
|
|
20
|
-
if (typeof config.LAYOUT_SETTINGS === 'string') {
|
|
21
|
-
const parsed = JSON.parse(config.LAYOUT_SETTINGS);
|
|
22
|
-
return parsed || {};
|
|
23
|
-
}
|
|
24
|
-
console.warn('⚠️ config.LAYOUT_SETTINGS is unexpected type:', typeof config.LAYOUT_SETTINGS);
|
|
25
|
-
return {};
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error('❌ Error parsing LAYOUT_SETTINGS:', error);
|
|
28
|
-
console.error('❌ Value was:', config.LAYOUT_SETTINGS);
|
|
29
|
-
return {};
|
|
30
|
-
}
|
|
31
|
-
}
|
|
2
|
+
import { settingsCookie, settingsLoaderUtil } from '@admin-layout/client/lib/components/UpdateSettings/UpdateSettings.server';
|
|
32
3
|
const action = async ({
|
|
33
4
|
request,
|
|
34
5
|
context,
|
|
@@ -61,102 +32,19 @@ const action = async ({
|
|
|
61
32
|
});
|
|
62
33
|
}
|
|
63
34
|
}
|
|
64
|
-
// Handle POST request - Update settings
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
//
|
|
74
|
-
|
|
75
|
-
let pageDefaultSettings = pageSettings || layoutSettings;
|
|
76
|
-
// 2 TEMPORARY: Manually add hiddenMenuKeys to defaults until GraphQL schema is updated
|
|
77
|
-
pageDefaultSettings = {
|
|
78
|
-
...pageDefaultSettings,
|
|
79
|
-
hiddenMenuKeys: [],
|
|
80
|
-
hiddenMenuCategories: []
|
|
81
|
-
};
|
|
82
|
-
// 3. Parse the incoming settings update from the client (usually only changed keys)
|
|
83
|
-
const jsonData = await request.json();
|
|
84
|
-
const payload = jsonData?.config || {};
|
|
85
|
-
// 4. Fill in any missing default keys in the payload (does not overwrite user values)
|
|
86
|
-
// assignDefaults(payload, pageDefaultSettings);
|
|
87
|
-
// 5. Parse existing settings from the cookie (if present)
|
|
88
|
-
const cookieHeader = request.headers.get('Cookie');
|
|
89
|
-
let existingSettings;
|
|
90
|
-
let mergedSettings;
|
|
91
|
-
try {
|
|
92
|
-
existingSettings = await settingsCookie.parse(cookieHeader);
|
|
93
|
-
// DEFENSIVE: Remove any invalid numeric string keys that shouldn't be there
|
|
94
|
-
if (existingSettings && typeof existingSettings === 'object') {
|
|
95
|
-
const invalidKeys = [];
|
|
96
|
-
Object.keys(existingSettings).forEach(key => {
|
|
97
|
-
// Remove keys that are numeric strings (like "0", "1", etc.)
|
|
98
|
-
if (/^\d+$/.test(key)) {
|
|
99
|
-
invalidKeys.push(key);
|
|
100
|
-
console.warn(`⚠️ Removing invalid numeric key from cookie settings: "${key}" = ${JSON.stringify(existingSettings[key])}`);
|
|
101
|
-
delete existingSettings[key];
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
// 6. Merge existing settings with the new payload from the client
|
|
106
|
-
mergedSettings = merge({}, existingSettings, payload);
|
|
107
|
-
// Check if numeric keys appeared after merge
|
|
108
|
-
const numericKeysAfterMerge = Object.keys(mergedSettings).filter(k => /^\d+$/.test(k));
|
|
109
|
-
if (numericKeysAfterMerge.length > 0) {
|
|
110
|
-
console.error('❌ NUMERIC KEYS APPEARED AFTER MERGE!', numericKeysAfterMerge);
|
|
111
|
-
console.error('❌ Values:', numericKeysAfterMerge.map(k => `${k}: ${JSON.stringify(mergedSettings[k])}`));
|
|
112
|
-
}
|
|
113
|
-
// 7. Ensure merged settings have all default keys (again, does not overwrite user values)
|
|
114
|
-
// assignDefaults(mergedSettings, pageDefaultSettings);
|
|
115
|
-
} catch (error) {
|
|
116
|
-
// If cookie parsing fails, fall back to just the payload
|
|
117
|
-
console.error('Error parsing settings cookie in action:', error);
|
|
118
|
-
existingSettings = null;
|
|
119
|
-
mergedSettings = payload;
|
|
120
|
-
}
|
|
121
|
-
// Fix merge order: layoutSettings (base) → pageDefaultSettings (GraphQL) → mergedSettings (cookies)
|
|
122
|
-
const fullSettings = merge({}, layoutSettings, pageDefaultSettings, mergedSettings);
|
|
123
|
-
// Check if numeric keys appeared after final merge
|
|
124
|
-
const numericKeysAfterFinalMerge = Object.keys(fullSettings).filter(k => /^\d+$/.test(k));
|
|
125
|
-
if (numericKeysAfterFinalMerge.length > 0) {
|
|
126
|
-
console.error('❌ NUMERIC KEYS APPEARED AFTER FINAL MERGE!', numericKeysAfterFinalMerge);
|
|
127
|
-
console.error('❌ Values:', numericKeysAfterFinalMerge.map(k => `${k}: ${JSON.stringify(fullSettings[k])}`));
|
|
128
|
-
}
|
|
129
|
-
// TEMPORARY FIX: Manually override hiddenMenuKeys with payload value
|
|
130
|
-
// This ensures payload array replaces the prev array values
|
|
131
|
-
if (payload.hiddenMenuKeys !== undefined) {
|
|
132
|
-
fullSettings.hiddenMenuKeys = [...payload.hiddenMenuKeys];
|
|
133
|
-
}
|
|
134
|
-
// 9. Store only the differences from the defaults in the cookie (to minimize cookie size)
|
|
135
|
-
// DEFENSIVE: Remove any invalid numeric string keys before comparison
|
|
136
|
-
if (fullSettings && typeof fullSettings === 'object') {
|
|
137
|
-
Object.keys(fullSettings).forEach(key => {
|
|
138
|
-
if (/^\d+$/.test(key)) {
|
|
139
|
-
console.warn(`⚠️ Removing invalid numeric key from fullSettings: "${key}"`);
|
|
140
|
-
delete fullSettings[key];
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
const diffSettings = await compareAndSaveSettingsDifferences(fullSettings, pageDefaultSettings);
|
|
145
|
-
// DEFENSIVE: Final check - remove any invalid keys from diffSettings before saving
|
|
146
|
-
if (diffSettings && typeof diffSettings === 'object') {
|
|
147
|
-
Object.keys(diffSettings).forEach(key => {
|
|
148
|
-
if (/^\d+$/.test(key)) {
|
|
149
|
-
console.warn(`⚠️ Removing invalid numeric key from diffSettings: "${key}"`);
|
|
150
|
-
delete diffSettings[key];
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
// 10. Serialize the diff settings into a cookie string
|
|
155
|
-
const newCookie = await settingsCookie.serialize(payload);
|
|
156
|
-
// 11. Return the full settings as JSON, and set the new cookie in the response headers
|
|
157
|
-
return json(fullSettings, {
|
|
35
|
+
// Handle POST request - Update settings using the utility
|
|
36
|
+
const {
|
|
37
|
+
settings,
|
|
38
|
+
setCookie
|
|
39
|
+
} = await settingsLoaderUtil({
|
|
40
|
+
request,
|
|
41
|
+
context,
|
|
42
|
+
params
|
|
43
|
+
});
|
|
44
|
+
// Return the full settings as JSON, and set the new cookie in the response headers
|
|
45
|
+
return json(settings, {
|
|
158
46
|
headers: {
|
|
159
|
-
'Set-Cookie':
|
|
47
|
+
'Set-Cookie': setCookie
|
|
160
48
|
}
|
|
161
49
|
});
|
|
162
50
|
} catch (error) {
|
|
@@ -175,7 +63,6 @@ const loader = async ({
|
|
|
175
63
|
params
|
|
176
64
|
}) => {
|
|
177
65
|
try {
|
|
178
|
-
const USE_FETCH_METHOD = config.USE_FETCH_SETTINGS === 'true';
|
|
179
66
|
const {
|
|
180
67
|
settings,
|
|
181
68
|
setCookie
|
|
@@ -184,19 +71,6 @@ const loader = async ({
|
|
|
184
71
|
context,
|
|
185
72
|
params
|
|
186
73
|
});
|
|
187
|
-
// Check for numeric keys in the settings returned by loader
|
|
188
|
-
if (settings && typeof settings === 'object') {
|
|
189
|
-
const numericKeys = Object.keys(settings).filter(k => /^\d+$/.test(k));
|
|
190
|
-
if (numericKeys.length > 0) {
|
|
191
|
-
console.error('❌ LOADER - NUMERIC KEYS IN SETTINGS!', numericKeys);
|
|
192
|
-
console.error('❌ LOADER - Values:', numericKeys.map(k => `${k}: ${JSON.stringify(settings[k])}`));
|
|
193
|
-
// DEFENSIVE: Remove them
|
|
194
|
-
numericKeys.forEach(key => {
|
|
195
|
-
console.warn(`⚠️ LOADER - Removing invalid numeric key: "${key}"`);
|
|
196
|
-
delete settings[key];
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
74
|
// Always include headers, but only set cookie if provided
|
|
201
75
|
const headers = {};
|
|
202
76
|
if (setCookie) {
|
|
@@ -211,28 +85,12 @@ const loader = async ({
|
|
|
211
85
|
};
|
|
212
86
|
} catch (error) {
|
|
213
87
|
console.error('Error in settings loader:', error);
|
|
214
|
-
//
|
|
215
|
-
const userAgent = request.headers.get('User-Agent') || '';
|
|
216
|
-
const isMobile = /mobile|android|iphone|ipad|ipod/i.test(userAgent);
|
|
217
|
-
const deviceType = isMobile ? 'mobile' : 'desktop';
|
|
218
|
-
const overrideIdentifier = `[${deviceType}]`;
|
|
219
|
-
// Fall back to default settings
|
|
220
|
-
const result = await fetchPageSettingsWithFetch(request, overrideIdentifier);
|
|
221
|
-
const pageSettings = result?.data?.pageSettings?.settings ? JSON.parse(JSON.stringify(result.data.pageSettings.settings)) : null;
|
|
222
|
-
// pageSettings is now flat (no uilayout wrapper) - use it directly
|
|
223
|
-
const layoutSettings = parseLayoutSettings();
|
|
224
|
-
let pageDefaultSettings = pageSettings || layoutSettings;
|
|
225
|
-
// TEMPORARY: Manually add hiddenMenuKeys to defaults until GraphQL schema is updated
|
|
226
|
-
pageDefaultSettings = {
|
|
227
|
-
...pageDefaultSettings,
|
|
228
|
-
hiddenMenuKeys: [],
|
|
229
|
-
// Array format for menu visibility
|
|
230
|
-
hiddenMenuCategories: [] // Array format for category visibility
|
|
231
|
-
};
|
|
232
|
-
// Fix merge order: layoutSettings (base) → pageDefaultSettings (GraphQL)
|
|
233
|
-
// returnInfo: {"returnType":"json","keys":["settings","settings"],"hasOptions":true}
|
|
88
|
+
// returnInfo: {"returnType":"json","keys":["settings","error"],"hasOptions":true}
|
|
234
89
|
return {
|
|
235
|
-
data: [
|
|
90
|
+
data: ['Failed to load settings'],
|
|
91
|
+
options: {
|
|
92
|
+
status: 500
|
|
93
|
+
}
|
|
236
94
|
};
|
|
237
95
|
}
|
|
238
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateSettingsResource.server.js","sources":["../../../src/components/UpdateSettingsResource/UpdateSettingsResource.server.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UpdateSettingsResource.server.js","sources":["../../../src/components/UpdateSettingsResource/UpdateSettingsResource.server.ts"],"sourcesContent":[null],"names":[],"mappings":"4JAQO,MAAM,MAAM,GAAG,OAAO;AASzB,EAAA,OAAK;SACD;;AAEA,CAAA,KAAA;AACI,EAAA,IAAA;;AAEI;gBAEA,MAAA,KAAW,QACL,EAAO;AAEL,MAAA,IAAA;AACI;AACH,QAAA,MAAA,MAAA,GAAA,MAAA,cAAA,CAAA,SAAA,CAAA,EAAA,EAAA;AACJ,UAAA,MAAA,EACJ;;eACH,IAAO,CAAA;AACL,UAAA,OAAA,EAAA,IAAO;AACP,UAAA,OAAA,EAAA;;UAEP,OAAA,EAAA;YAED,YAAA,EAAA;;;eAGI,KAAO,EAAA;eACP,CAAA,KAAM,CAAA,2BAAA,EAAA,KAAA,CAAA;AACT,QAAA,OAAE,IAAA,CAAA;UAEH,OAAA,EAAA,KAAA;UACA,KAAO,EAAA;AACH,SAAA,EAAA;AACI,UAAA,MAAA,EAAA;AACH,SAAA,CAAA;AACJ,MAAA;IACL;;UACI;AACA,MAAA,QAAA;AACA,MAAA;KACH,GAAA,MAAA,kBAAA,CAAA;AACL,MAAE,OAAA;AAEF,MAAM,OAAO;AAST,MAAA;;;eAGQ,CAAA,QAAO,EAAA;aACP,EAAA;AACH,QAAA,YAAE,EAAA;;;WAIH,KAAI,EAAA;AACA;WACH,CAAA,KAAA,CAAA,kBAAA,EAAA,KAAA,CAAA;WAED,IAAO,CAAA;MACV,KAAA,EAAA;KAAC,EAAA;AACE,MAAA,MAAA,EAAA;AACA,KAAA,CAAA;;AAER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/compute.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settingsMachine.d.ts","sourceRoot":"","sources":["../../src/machines/settingsMachine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAoC,MAAM,SAAS,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,eAAe;cAMN,GAAG;mBACE,MAAM;mBACN,MAAM;
|
|
1
|
+
{"version":3,"file":"settingsMachine.d.ts","sourceRoot":"","sources":["../../src/machines/settingsMachine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAoC,MAAM,SAAS,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,eAAe;cAMN,GAAG;mBACE,MAAM;mBACN,MAAM;sEA0O/B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {cloneDeep,set}from'lodash-es';import {createMachine,assign}from'xstate';import {
|
|
1
|
+
import {cloneDeep,set}from'lodash-es';import {createMachine,assign}from'xstate';import {extractConfigurationWithModel}from'@adminide-stack/core';/**
|
|
2
2
|
* SETTINGS MACHINE - COMPLETELY REFACTORED
|
|
3
3
|
*
|
|
4
4
|
* DESIGN PHILOSOPHY:
|
|
@@ -33,38 +33,10 @@ const settingsMachine = createMachine({
|
|
|
33
33
|
hasRawSettings: !!rawSettings,
|
|
34
34
|
rawSettingsKeys: rawSettings ? Object.keys(rawSettings).slice(0, 15) : []
|
|
35
35
|
});
|
|
36
|
-
// Settings are flat - no uilayout wrapper to handle
|
|
37
|
-
// Just separate base settings from bracket overrides
|
|
38
|
-
const cleanedSettings = rawSettings;
|
|
39
|
-
console.log('🔍 Context Init - Settings keys:', {
|
|
40
|
-
totalKeys: Object.keys(cleanedSettings).length,
|
|
41
|
-
bracketKeys: Object.keys(cleanedSettings).filter(k => k.startsWith('[') && k.endsWith(']'))
|
|
42
|
-
});
|
|
43
|
-
// Transform loader data into ConfigurationModel format
|
|
44
|
-
// Separate base settings from bracket overrides
|
|
45
|
-
const baseContents = {};
|
|
46
|
-
const overrides = [];
|
|
47
|
-
Object.keys(cleanedSettings).forEach(key => {
|
|
48
|
-
if (key.startsWith('[') && key.endsWith(']')) {
|
|
49
|
-
// This is a bracket override: [device] or [/route][device]
|
|
50
|
-
const overrideData = cleanedSettings[key];
|
|
51
|
-
overrides.push({
|
|
52
|
-
identifiers: [key],
|
|
53
|
-
contents: overrideData,
|
|
54
|
-
keys: Object.keys(overrideData)
|
|
55
|
-
});
|
|
56
|
-
} else {
|
|
57
|
-
// Base settings (flat, no wrapper)
|
|
58
|
-
baseContents[key] = cleanedSettings[key];
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
console.log('🔍 ConfigurationModel input:', {
|
|
62
|
-
baseKeys: Object.keys(baseContents),
|
|
63
|
-
overridesCount: overrides.length,
|
|
64
|
-
overrideIdentifiers: overrides.map(o => o.identifiers[0])
|
|
65
|
-
});
|
|
66
36
|
// ConfigurationModel handles ALL bracket patterns automatically
|
|
67
|
-
const
|
|
37
|
+
const {
|
|
38
|
+
model: configModel
|
|
39
|
+
} = extractConfigurationWithModel(rawSettings);
|
|
68
40
|
// Get current route from input (passed from component) or default to '/'
|
|
69
41
|
const currentRoute = input?.currentRoute || '/';
|
|
70
42
|
const routePattern = input?.routePattern;
|
|
@@ -75,7 +47,9 @@ const settingsMachine = createMachine({
|
|
|
75
47
|
const deviceKey = `[${deviceType}]`;
|
|
76
48
|
// Apply overrides by chaining: base -> global -> route-specific
|
|
77
49
|
// First apply global override to base
|
|
78
|
-
const globalOverride = configModel.override(deviceKey
|
|
50
|
+
const globalOverride = configModel.override(deviceKey, {
|
|
51
|
+
strict: true
|
|
52
|
+
});
|
|
79
53
|
// Then apply route-specific override on top of global
|
|
80
54
|
const routeOverride = globalOverride.override(routeDeviceKey);
|
|
81
55
|
// Extract final merged settings (already flat, no uilayout wrapper)
|
|
@@ -83,13 +57,7 @@ const settingsMachine = createMachine({
|
|
|
83
57
|
const effectiveSettings = mergedContents;
|
|
84
58
|
// Build PUBLIC settings (exposed to consumers)
|
|
85
59
|
// Build the UI settings object from all potential sources
|
|
86
|
-
const publicSettings =
|
|
87
|
-
// Apply merged settings first
|
|
88
|
-
...effectiveSettings,
|
|
89
|
-
components: effectiveSettings.components || [],
|
|
90
|
-
hiddenMenuKeys: effectiveSettings.hiddenMenuKeys || [],
|
|
91
|
-
hiddenMenuCategories: effectiveSettings.hiddenMenuCategories || []
|
|
92
|
-
};
|
|
60
|
+
const publicSettings = effectiveSettings;
|
|
93
61
|
// Build INTERNAL state (machine only, never exposed)
|
|
94
62
|
const internalState = {
|
|
95
63
|
configModel,
|
|
@@ -182,12 +150,7 @@ const settingsMachine = createMachine({
|
|
|
182
150
|
const mergedContents = routeOverride?.contents || context.internal.configModel.contents;
|
|
183
151
|
const effectiveSettings = mergedContents;
|
|
184
152
|
// Rebuild PUBLIC settings from scratch (no leakage from old route)
|
|
185
|
-
newContext.public =
|
|
186
|
-
...effectiveSettings,
|
|
187
|
-
components: effectiveSettings.components || [],
|
|
188
|
-
hiddenMenuKeys: effectiveSettings.hiddenMenuKeys || [],
|
|
189
|
-
hiddenMenuCategories: effectiveSettings.hiddenMenuCategories || []
|
|
190
|
-
};
|
|
153
|
+
newContext.public = effectiveSettings;
|
|
191
154
|
return newContext;
|
|
192
155
|
}), 'updateReduxSettings']
|
|
193
156
|
},
|
|
@@ -244,12 +207,7 @@ const settingsMachine = createMachine({
|
|
|
244
207
|
const mergedContents = routeOverride?.contents || context.internal.configModel.contents;
|
|
245
208
|
const effectiveSettings = mergedContents;
|
|
246
209
|
// Rebuild PUBLIC settings with new device overrides
|
|
247
|
-
newContext.public =
|
|
248
|
-
...effectiveSettings,
|
|
249
|
-
components: effectiveSettings.components || [],
|
|
250
|
-
hiddenMenuKeys: effectiveSettings.hiddenMenuKeys || [],
|
|
251
|
-
hiddenMenuCategories: effectiveSettings.hiddenMenuCategories || []
|
|
252
|
-
};
|
|
210
|
+
newContext.public = effectiveSettings;
|
|
253
211
|
return newContext;
|
|
254
212
|
}), 'updateReduxSettings']
|
|
255
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settingsMachine.js","sources":["../../src/machines/settingsMachine.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settingsMachine.js","sources":["../../src/machines/settingsMachine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/lib/routes.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/tailwind-design-pro",
|
|
3
|
-
"version": "12.0.16-alpha.
|
|
3
|
+
"version": "12.0.16-alpha.66",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@admin-layout/assets": "12.0.16-alpha.36",
|
|
25
|
-
"@admin-layout/client": "12.0.16-alpha.
|
|
26
|
-
"@admin-layout/tailwind-ui": "12.0.16-alpha.
|
|
25
|
+
"@admin-layout/client": "12.0.16-alpha.64",
|
|
26
|
+
"@admin-layout/tailwind-ui": "12.0.16-alpha.66",
|
|
27
27
|
"react-favicon": "^0.0.23",
|
|
28
28
|
"react-intl": "^6.1.1",
|
|
29
29
|
"react-responsive": "^10.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@adminide-stack/extension-api": "^12.0.4-alpha.
|
|
32
|
+
"@adminide-stack/extension-api": "^12.0.4-alpha.326",
|
|
33
33
|
"@tailwindcss/aspect-ratio": "^0.4.2",
|
|
34
34
|
"@tailwindcss/forms": "^0.5.4",
|
|
35
35
|
"@tailwindcss/typography": "^0.5.9",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"typescript": {
|
|
54
54
|
"definition": "lib/index.d.ts"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "2d21372367f7570e8abf1af99e502a895527db20"
|
|
57
57
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import {config}from'./env-config.js';/**
|
|
2
|
-
* Google Analytics Configuration
|
|
3
|
-
*/
|
|
4
|
-
// Configuration for analytics tracking
|
|
5
|
-
({
|
|
6
|
-
// Enable or disable debugging messages in console
|
|
7
|
-
debug: process.env.NODE_ENV === 'development',
|
|
8
|
-
// GA4 Measurement ID
|
|
9
|
-
GA4_MEASUREMENT_ID: config.GOOGLE_ANALYTICS_ID});//# sourceMappingURL=analytics-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-config.js","sources":["../../src/config/analytics-config.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAAA;;AAEG;AAIH;CACgC;;AAK5B,EAAA,KAAA,EAAK,OAAE,CAAA,YAAY,kBAAa;;oBAGhC,EAAkB,MAAE,CAAA"}
|