@wavemaker/react-codegen 11.14.2-rc.6311 → 11.14.4-rc.647538

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 (73) hide show
  1. package/build-react-web.js +3 -8
  2. package/build-react-web.js.map +1 -1
  3. package/command.js +1 -1
  4. package/command.js.map +1 -1
  5. package/index.js +0 -2
  6. package/index.js.map +1 -1
  7. package/package-lock.json +364 -257
  8. package/package.json +1 -1
  9. package/src/app.generator.js +7 -16
  10. package/src/app.generator.js.map +1 -1
  11. package/src/gen-app-override-css.js +245 -316
  12. package/src/gen-app-override-css.js.map +1 -1
  13. package/src/handlebar-helpers.js +0 -186
  14. package/src/handlebar-helpers.js.map +1 -1
  15. package/src/transpile/bind.ex.transformer.js +0 -30
  16. package/src/transpile/bind.ex.transformer.js.map +1 -1
  17. package/src/transpile/components/container/panel.transformer.js +1 -0
  18. package/src/transpile/components/container/panel.transformer.js.map +1 -1
  19. package/src/transpile/components/container/wizardaction.transformer.js +19 -34
  20. package/src/transpile/components/container/wizardaction.transformer.js.map +1 -1
  21. package/src/transpile/components/container/wizardstep.transformer.js +5 -62
  22. package/src/transpile/components/container/wizardstep.transformer.js.map +1 -1
  23. package/src/transpile/components/data/form/form-field.transformer.js +1 -27
  24. package/src/transpile/components/data/form/form-field.transformer.js.map +1 -1
  25. package/src/transpile/components/data/list/list-transformer.js +2 -29
  26. package/src/transpile/components/data/list/list-transformer.js.map +1 -1
  27. package/src/transpile/components/data/live-filter-field.transformer.js +1 -13
  28. package/src/transpile/components/data/live-filter-field.transformer.js.map +1 -1
  29. package/src/transpile/components/data/liveform.transformer.js +4 -15
  30. package/src/transpile/components/data/liveform.transformer.js.map +1 -1
  31. package/src/transpile/components/data/table/table-column.transformer.js +3 -40
  32. package/src/transpile/components/data/table/table-column.transformer.js.map +1 -1
  33. package/src/transpile/components/data/table/table-row-action.transformer.js +1 -1
  34. package/src/transpile/components/dialogs/dialog-actions.transformer.js +0 -19
  35. package/src/transpile/components/dialogs/dialog-actions.transformer.js.map +1 -1
  36. package/src/transpile/components/dialogs/dialog.transformer.js +11 -0
  37. package/src/transpile/components/dialogs/dialog.transformer.js.map +1 -1
  38. package/src/transpile/components/input/checkbox-set.transformer.js +1 -1
  39. package/src/transpile/components/input/checkbox-set.transformer.js.map +1 -1
  40. package/src/transpile/components/input/checkbox.transformer.js +1 -29
  41. package/src/transpile/components/input/checkbox.transformer.js.map +1 -1
  42. package/src/transpile/components/input/currency.transformer.js +1 -1
  43. package/src/transpile/components/input/currency.transformer.js.map +1 -1
  44. package/src/transpile/components/input/radio-set.transformer.js +1 -1
  45. package/src/transpile/components/input/radio-set.transformer.js.map +1 -1
  46. package/src/transpile/components/input/switch.transformer.js.map +1 -1
  47. package/src/transpile/components/nav/nav.transformer.js +1 -33
  48. package/src/transpile/components/nav/nav.transformer.js.map +1 -1
  49. package/src/transpile/components/navigation/menu.transformer.js.map +1 -1
  50. package/src/transpile/components/navigation/popover.transformer.js +1 -1
  51. package/src/transpile/components/navigation/popover.transformer.js.map +1 -1
  52. package/src/transpile/components/utils.js +6 -19
  53. package/src/transpile/components/utils.js.map +1 -1
  54. package/src/transpile/style/dimension-style.parser.js +2 -13
  55. package/src/transpile/style/dimension-style.parser.js.map +1 -1
  56. package/src/transpile/style/style.parser.js +1 -1
  57. package/src/transpile/style/style.parser.js.map +1 -1
  58. package/src/transpile/style.transformer.js +1 -1
  59. package/src/transpile/style.transformer.js.map +1 -1
  60. package/src/transpile/transpile.js +20 -42
  61. package/src/transpile/transpile.js.map +1 -1
  62. package/src/utils.js +2 -6
  63. package/src/utils.js.map +1 -1
  64. package/src/variables/variable.transformer.js +7 -165
  65. package/src/variables/variable.transformer.js.map +1 -1
  66. package/templates/component/component.hbs +10 -0
  67. package/templates/component/partial.hbs +3 -0
  68. package/templates/project/app/components.css +0 -5
  69. package/templates/project/package.json +3 -3
  70. package/src/download-packages.js +0 -193
  71. package/src/download-packages.js.map +0 -1
  72. package/src/genappoverridecssold-file.js +0 -311
  73. package/src/genappoverridecssold-file.js.map +0 -1
@@ -1,311 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.OVERRIDE_TOKENS_PATH = exports.APP_OVERRIDE_CSS_PATH = exports.DESIGN_TOKENS_DIR_NAME = void 0;
37
- exports.generateOverrideCSS = generateOverrideCSS;
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- const project_service_1 = require("./project.service");
41
- const utils_1 = require("./utils");
42
- // Constants
43
- exports.DESIGN_TOKENS_DIR_NAME = "design-tokens";
44
- exports.APP_OVERRIDE_CSS_PATH = `${exports.DESIGN_TOKENS_DIR_NAME}/app.override.css`;
45
- exports.OVERRIDE_TOKENS_PATH = `${exports.DESIGN_TOKENS_DIR_NAME}/overrides`;
46
- /**
47
- * Install a package if it's not already installed
48
- * @param projectRoot project root directory
49
- * @param packageName name of the package to install
50
- * @param version version of the package
51
- */
52
- async function installPackageIfNeeded(projectRoot, packageName, version) {
53
- const packagePath = path.join(projectRoot, "node_modules", packageName);
54
- if (!fs.existsSync(packagePath)) {
55
- console.log(`Installing ${packageName}@${version}...`);
56
- const installCmd = `npm install -g ${packageName}@${version} --save-dev --legacy-peer-deps`;
57
- (0, utils_1.executeSyncCmd)(`cd ${projectRoot} && ${installCmd}`, (errMsg) => {
58
- console.log(`Error installing ${packageName}:`, errMsg);
59
- throw Error(errMsg);
60
- }, `Installing ${packageName}: `);
61
- console.log(`Successfully installed ${packageName}@${version}`);
62
- }
63
- else {
64
- console.log(`${packageName} already installed`);
65
- }
66
- }
67
- /**
68
- * Process a single override JSON file to generate CSS variables
69
- * @param jsonFilePath path to the override JSON file
70
- * @param foundationTokensDir path to foundation tokens
71
- * @param baseDir base directory
72
- * @returns map of token name to value
73
- */
74
- async function processOverrideFile(jsonFilePath, foundationTokensDir, baseDir) {
75
- const tokens = new Map();
76
- try {
77
- // Read override file
78
- const content = JSON.parse(fs.readFileSync(jsonFilePath, "utf-8"));
79
- // Read foundation tokens for reference resolution
80
- const foundationTokens = new Map();
81
- function loadFoundationTokens(dir, prefix = "") {
82
- if (!fs.existsSync(dir))
83
- return;
84
- const items = fs.readdirSync(dir);
85
- items.forEach(item => {
86
- const itemPath = path.join(dir, item);
87
- const stat = fs.statSync(itemPath);
88
- if (stat.isDirectory()) {
89
- loadFoundationTokens(itemPath, prefix ? `${prefix}-${item}` : item);
90
- }
91
- else if (item.endsWith(".json") && !item.includes(".dark") && !item.includes(".light")) {
92
- try {
93
- const tokenContent = JSON.parse(fs.readFileSync(itemPath, "utf-8"));
94
- flattenTokens(tokenContent, foundationTokens, prefix ? `${prefix}-${path.basename(item, ".json")}` : path.basename(item, ".json"));
95
- }
96
- catch (error) {
97
- // Skip invalid JSON files
98
- }
99
- }
100
- });
101
- }
102
- function flattenTokens(obj, tokenMap, prefix = "") {
103
- for (const [key, value] of Object.entries(obj)) {
104
- if (value && typeof value === "object" && !Array.isArray(value)) {
105
- if (value.value !== undefined) {
106
- // This is a token definition
107
- const tokenName = prefix ? `${prefix}.${key}` : key;
108
- tokenMap.set(tokenName, value.value);
109
- }
110
- else {
111
- // Continue traversing
112
- const newPrefix = prefix ? `${prefix}.${key}` : key;
113
- flattenTokens(value, tokenMap, newPrefix);
114
- }
115
- }
116
- }
117
- }
118
- // Load foundation tokens
119
- loadFoundationTokens(foundationTokensDir);
120
- // Process override tokens
121
- function processTokens(obj, prefix = "") {
122
- for (const [key, value] of Object.entries(obj)) {
123
- if (value && typeof value === "object" && !Array.isArray(value)) {
124
- if (value.value !== undefined) {
125
- // This is a token definition - skip @ keys for token names
126
- const cleanKey = key === "@" ? "" : key;
127
- const tokenName = cleanKey
128
- ? `--wm-${prefix ? `${prefix}-${cleanKey}` : cleanKey}`
129
- : `--wm-${prefix}`;
130
- let tokenValue = value.value;
131
- // Resolve references like {color.white.@.value} to CSS variables
132
- if (typeof tokenValue === "string" &&
133
- tokenValue.includes("{") &&
134
- tokenValue.includes("}")) {
135
- const referenceMatch = tokenValue.match(/\{([^}]+)\}/g);
136
- if (referenceMatch) {
137
- referenceMatch.forEach(ref => {
138
- const refKey = ref.slice(1, -1); // Remove { }
139
- // Convert foundation token path to CSS variable name
140
- let cssVarName = refKey
141
- .replace(".@.value", "")
142
- .replace(".value", "")
143
- .replace(/\./g, "-");
144
- // Convert to CSS variable format
145
- const cssVariable = `var(--wm-${cssVarName})`;
146
- tokenValue = tokenValue.replace(ref, cssVariable);
147
- });
148
- }
149
- }
150
- tokens.set(tokenName, tokenValue);
151
- }
152
- else {
153
- // Continue traversing - skip @ keys in paths
154
- const cleanKey = key === "@" ? "" : key;
155
- const newPrefix = prefix && cleanKey ? `${prefix}-${cleanKey}` : cleanKey || prefix;
156
- processTokens(value, newPrefix);
157
- }
158
- }
159
- }
160
- }
161
- processTokens(content);
162
- }
163
- catch (error) {
164
- console.error(`Error processing ${jsonFilePath}:`, error);
165
- }
166
- return tokens;
167
- }
168
- async function generateOverrideCSS(runtimeUIVersion, sourceDir, appTarget) {
169
- // Use existing LocalProjectService to check if this is a Prism project
170
- const projectService = new project_service_1.LocalProjectService(sourceDir + "/src/main/webapp");
171
- const isPrismProject = await projectService.getWmProjectType();
172
- if (isPrismProject) {
173
- const overridesDir = path.join(sourceDir + `/src/main/webapp/`, exports.OVERRIDE_TOKENS_PATH);
174
- const overrideCssFile = sourceDir + `/src/main/webapp/${exports.APP_OVERRIDE_CSS_PATH}`;
175
- if (fs.existsSync(overridesDir)) {
176
- console.log("CODEGEN REACT APP: generating override css...");
177
- // Use the react-codegen package directory as baseDir
178
- // __dirname will be the 'build/src' directory after compilation,
179
- // so we go up one level to get the react-codegen root
180
- const baseDir = path.resolve(__dirname, "..");
181
- console.log("baseDir for npm packages (react-codegen path):", baseDir);
182
- // Install required packages
183
- // await installPackageIfNeeded(baseDir, "style-dictionary", "4.1.0");
184
- await installPackageIfNeeded(baseDir, "@wavemaker/foundation-css", runtimeUIVersion || "latest");
185
- const foundationTokensDir = path.join(baseDir, "node_modules", "@wavemaker", "foundation-css", "tokens");
186
- // Find all override JSON files
187
- const overrideFiles = [];
188
- function findOverrideFiles(dir) {
189
- if (!fs.existsSync(dir))
190
- return;
191
- const items = fs.readdirSync(dir);
192
- items.forEach(item => {
193
- const itemPath = path.join(dir, item);
194
- const stat = fs.statSync(itemPath);
195
- if (stat.isDirectory()) {
196
- findOverrideFiles(itemPath);
197
- }
198
- else if (item.endsWith(".json")) {
199
- overrideFiles.push(itemPath);
200
- }
201
- });
202
- }
203
- findOverrideFiles(overridesDir);
204
- console.log(`Processing ${overrideFiles.length} override files...`);
205
- // Collect all tokens with source tracking
206
- const defaultTokens = new Map();
207
- const lightTokens = new Map();
208
- const darkTokens = new Map();
209
- for (const overrideFile of overrideFiles) {
210
- const fileName = path.basename(overrideFile);
211
- if (fileName === "space.json") {
212
- console.log("called space.json");
213
- }
214
- const fileTokens = await processOverrideFile(overrideFile, foundationTokensDir, baseDir);
215
- // Sort tokens by mode
216
- if (fileName.includes(".light.")) {
217
- fileTokens.forEach((value, name) => {
218
- lightTokens.set(name, value);
219
- });
220
- }
221
- else if (fileName.includes(".dark.")) {
222
- fileTokens.forEach((value, name) => {
223
- darkTokens.set(name, value);
224
- });
225
- }
226
- else {
227
- fileTokens.forEach((value, name) => {
228
- defaultTokens.set(name, value);
229
- });
230
- }
231
- }
232
- // Generate final CSS with mode-specific attribute selectors like Angular
233
- const cssLines = [];
234
- // Add default tokens
235
- if (defaultTokens.size > 0) {
236
- cssLines.push(":root {");
237
- defaultTokens.forEach((value, name) => {
238
- cssLines.push(`${name}: ${value};`);
239
- });
240
- cssLines.push("}");
241
- }
242
- // Add light mode tokens with attribute selectors (like Angular does)
243
- if (lightTokens.size > 0) {
244
- if (cssLines.length > 0)
245
- cssLines.push("");
246
- cssLines.push(":root[color='light'] {");
247
- lightTokens.forEach((value, name) => {
248
- cssLines.push(`${name}: ${value};`);
249
- });
250
- cssLines.push("}");
251
- }
252
- // Add dark mode tokens with attribute selectors (like Angular does)
253
- if (darkTokens.size > 0) {
254
- if (cssLines.length > 0)
255
- cssLines.push("");
256
- cssLines.push(":root[color='dark'] {");
257
- darkTokens.forEach((value, name) => {
258
- cssLines.push(`${name}: ${value};`);
259
- });
260
- cssLines.push("}");
261
- }
262
- const totalTokens = defaultTokens.size + lightTokens.size + darkTokens.size;
263
- // Only generate CSS files if there are actual tokens
264
- if (totalTokens > 0) {
265
- const finalCSS = cssLines.join("\n");
266
- fs.writeFileSync(overrideCssFile, finalCSS);
267
- // Also copy to public directory for React app if appTarget is provided
268
- if (appTarget) {
269
- const publicCssPath = path.join(appTarget, "public", exports.APP_OVERRIDE_CSS_PATH);
270
- const publicDir = path.dirname(publicCssPath);
271
- const globalCSSPath = path.join(appTarget, "app", "globals.css");
272
- if (!fs.existsSync(publicDir)) {
273
- fs.mkdirSync(publicDir, { recursive: true });
274
- }
275
- fs.writeFileSync(publicCssPath, finalCSS);
276
- console.log(`✅ CSS copied to React app public directory`);
277
- // Now that we've generated the override CSS, add its import to globals.css
278
- if (fs.existsSync(globalCSSPath)) {
279
- const content = fs.readFileSync(globalCSSPath, "utf-8");
280
- // Check if the import is already present
281
- if (!content.includes("public/design-tokens/app.override.css")) {
282
- // Add the import after the existing imports
283
- const lines = content.split("\n");
284
- let insertIndex = 0;
285
- // Find the last import line
286
- for (let i = 0; i < lines.length; i++) {
287
- if (lines[i].startsWith("@import")) {
288
- insertIndex = i + 1;
289
- }
290
- else if (lines[i].trim() === "" && insertIndex > 0) {
291
- insertIndex = i;
292
- break;
293
- }
294
- }
295
- // Insert the override CSS import
296
- lines.splice(insertIndex, 0, '@import "../public/design-tokens/app.override.css";');
297
- fs.writeFileSync(globalCSSPath, lines.join("\n"), "utf-8");
298
- console.log("✅ Added CSS override import to globals.css");
299
- }
300
- }
301
- }
302
- console.log(`✅ Generated CSS with ${totalTokens} override tokens`);
303
- console.log("CODEGEN REACT APP: generating overrides success!");
304
- }
305
- else {
306
- console.log("ℹ️ No design tokens found, skipping CSS generation");
307
- }
308
- }
309
- }
310
- }
311
- //# sourceMappingURL=genappoverridecssold-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genappoverridecssold-file.js","sourceRoot":"","sources":["../../src/genappoverridecssold-file.ts"],"names":[],"mappings":"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"}