@salesforce/metadata-visualizer-web 1.1.0 → 1.2.0
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/README.md +20 -9
- package/dist/WebVisualizationEngine.d.ts +26 -2
- package/dist/WebVisualizationEngine.d.ts.map +1 -1
- package/dist/WebVisualizationEngine.js +40 -9
- package/dist/WebVisualizationEngine.js.map +1 -1
- package/dist/design-system/light-design-system.css +724 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pluginAssets/BundledPluginAssetReader.d.ts +2 -1
- package/dist/pluginAssets/BundledPluginAssetReader.d.ts.map +1 -1
- package/dist/pluginAssets/BundledPluginAssetReader.js +7 -3
- package/dist/pluginAssets/BundledPluginAssetReader.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -45,13 +45,13 @@ After implementing `IFileSystem` and constructing the engine via `createWebVisua
|
|
|
45
45
|
|
|
46
46
|
### Core API Methods
|
|
47
47
|
|
|
48
|
-
| Method | Returns | Use Case
|
|
49
|
-
| -------------------------------------------- | ------------------------------------------------------------------- |
|
|
50
|
-
| `getPlugin(metadataFilePath)` | `PluginInfo \| null` | Resolve a metadata file path to its registered plugin (returns `id`, `displayName`, etc.)
|
|
51
|
-
| `visualizeMetadata(pluginId)`
|
|
52
|
-
| `getParsedMetadata(metadataFilePath)` | `VisualizeOutcome` — `{ result, error }` | Parse metadata and return structured data without generating HTML
|
|
53
|
-
| `getUpdatedParsedMetadata(metadataFilePath)` | `{ error, pluginDataUpdateMessage }` | Generate update message for posting to existing plugin iframe (live updates)
|
|
54
|
-
| `dispose()` | `void` | Release all resources (call on shutdown)
|
|
48
|
+
| Method | Returns | Use Case |
|
|
49
|
+
| -------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
50
|
+
| `getPlugin(metadataFilePath)` | `PluginInfo \| null` | Resolve a metadata file path to its registered plugin (returns `id`, `displayName`, etc.) |
|
|
51
|
+
| `visualizeMetadata(pluginId, options?)` | `{ bundle: HttpAsset<string> \| null, error: PluginError \| null }` | Generate a fully self-contained HTML shell for the plugin's UI (no parsing — UI only); `options.theme` selects a design-system theme |
|
|
52
|
+
| `getParsedMetadata(metadataFilePath)` | `VisualizeOutcome` — `{ result, error }` | Parse metadata and return structured data without generating HTML |
|
|
53
|
+
| `getUpdatedParsedMetadata(metadataFilePath)` | `{ error, pluginDataUpdateMessage }` | Generate update message for posting to existing plugin iframe (live updates) |
|
|
54
|
+
| `dispose()` | `void` | Release all resources (call on shutdown) |
|
|
55
55
|
|
|
56
56
|
### Method Details
|
|
57
57
|
|
|
@@ -63,7 +63,7 @@ After implementing `IFileSystem` and constructing the engine via `createWebVisua
|
|
|
63
63
|
- Returns `PluginInfo` (with `id`) on match, `null` otherwise
|
|
64
64
|
- Synchronous and side-effect-free
|
|
65
65
|
|
|
66
|
-
**`visualizeMetadata(pluginId)`** — Generate UI shell:
|
|
66
|
+
**`visualizeMetadata(pluginId, options?)`** — Generate UI shell:
|
|
67
67
|
|
|
68
68
|
- Returns fully self-contained HTML with all assets (JS, CSS, platform styles) inlined
|
|
69
69
|
- **No metadata parsing occurs** — this generates the static plugin UI only
|
|
@@ -71,6 +71,15 @@ After implementing `IFileSystem` and constructing the engine via `createWebVisua
|
|
|
71
71
|
- Perfect for iframe embedding: `<iframe srcdoc="..."></iframe>`
|
|
72
72
|
- The loaded plugin iframe requests its data separately via postMessage
|
|
73
73
|
- Error handling: Check `error` field first, then use `bundle`
|
|
74
|
+
- **Theming:** Pass `{ theme: 'light' }` to inline the light design-system sheet. Omitting `options` (or `options.theme`) yields the default dark-fallback bundle, byte-for-byte identical to the pre-theme behavior. An unknown theme returns a `Validation` error (no silent fallback), reported before any asset read. Valid theme names come from `DESIGN_SYSTEM_THEMES` / `isDesignSystemTheme` (re-exported from `@salesforce/metadata-core-sdk/design-system`).
|
|
75
|
+
- **Caching:** The bundle body varies by `(pluginId, theme)` at a stable URL, so its `cacheControl` is `public, max-age=86400` (no `immutable`). Multi-theme callers should vary their own cache key by theme.
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
// Light theme bundle
|
|
79
|
+
const { bundle, error } = await engine.visualizeMetadata(pluginInfo.id, { theme: 'light' });
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> **Known limitation:** React Flow chrome elements (canvas dots, minimap, attribution) in plugin UIs remain dark-mode styled. Those elements are rendered by the external `@salesforce/metadata-plugins` package and are not reached by the design-system theme layer. Closing this gap requires a separate plugins-repo change.
|
|
74
83
|
|
|
75
84
|
**`getParsedMetadata(metadataFilePath)`** — Parse metadata only:
|
|
76
85
|
|
|
@@ -250,7 +259,7 @@ Build runs from the workspace root — `@salesforce/metadata-plugins` lives in t
|
|
|
250
259
|
|
|
251
260
|
- `WebVisualizationEngine` — Main class with five methods:
|
|
252
261
|
- `getPlugin(metadataFilePath)` — Resolve a file path to its registered plugin
|
|
253
|
-
- `visualizeMetadata(pluginId)` — Generate the plugin UI shell (HTML bundle, no parsing)
|
|
262
|
+
- `visualizeMetadata(pluginId, options?)` — Generate the plugin UI shell (HTML bundle, no parsing); `options.theme` selects a design-system theme
|
|
254
263
|
- `getParsedMetadata(metadataFilePath)` — Parse metadata only
|
|
255
264
|
- `getUpdatedParsedMetadata(metadataFilePath)` — Generate update message for live updates
|
|
256
265
|
- `dispose()` — Release resources
|
|
@@ -263,6 +272,8 @@ Build runs from the workspace root — `@salesforce/metadata-plugins` lives in t
|
|
|
263
272
|
- `VisualizeOutcome` — Parse result: `{ result, error }`. The `error` field is a `PluginError` from `@salesforce/metadata-core-sdk`.
|
|
264
273
|
- `PluginDataUpdateMessage<T = unknown>` — Update message for postMessage: `{ type: 'PLUGIN_DATA_UPDATE', payload: PluginDataResponse<T> }`. Generic `T` lets plugin code with a known data shape opt into type-safety; consumers can narrow on `message.type` in a discriminated-union switch.
|
|
265
274
|
- `WebAdapterOptions` — Engine constructor options: `{ fileSystem, telemetry? }`
|
|
275
|
+
- `VisualizeMetadataOptions` — `visualizeMetadata` options: `{ theme?: DesignSystemTheme }`
|
|
276
|
+
- `DesignSystemTheme` / `DESIGN_SYSTEM_THEMES` / `isDesignSystemTheme` — Theme catalog re-exported from `@salesforce/metadata-core-sdk/design-system`
|
|
266
277
|
|
|
267
278
|
## License
|
|
268
279
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
6
|
**/
|
|
7
7
|
import type { PluginError } from '@salesforce/metadata-core-sdk';
|
|
8
|
+
import { type DesignSystemTheme } from '@salesforce/metadata-core-sdk/design-system';
|
|
8
9
|
import type { PluginManager, VisualizationEngine } from '@salesforce/metadata-visualizer-core';
|
|
9
10
|
import { BundledPluginAssetReader } from './pluginAssets/BundledPluginAssetReader.js';
|
|
10
11
|
import type { HttpAsset } from './types/HttpAsset.js';
|
|
@@ -22,6 +23,18 @@ export interface WebVisualizationEngineDeps {
|
|
|
22
23
|
pluginManager: PluginManager;
|
|
23
24
|
pluginAssetReader: BundledPluginAssetReader;
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Options for {@link WebVisualizationEngine.visualizeMetadata}.
|
|
28
|
+
*/
|
|
29
|
+
export interface VisualizeMetadataOptions {
|
|
30
|
+
/**
|
|
31
|
+
* Optional theme name. If omitted, returns the default (dark-fallback)
|
|
32
|
+
* bundle — byte-for-byte identical to the pre-theme behavior. A value that
|
|
33
|
+
* is not a known theme is rejected with a `Validation` error rather than
|
|
34
|
+
* silently falling back.
|
|
35
|
+
*/
|
|
36
|
+
theme?: DesignSystemTheme;
|
|
37
|
+
}
|
|
25
38
|
/**
|
|
26
39
|
* Browser/HTTP platform adapter for the visualization framework.
|
|
27
40
|
* Provides methods to generate self-contained HTML bundles and parse metadata
|
|
@@ -59,20 +72,31 @@ export declare class WebVisualizationEngine {
|
|
|
59
72
|
* ready to be embedded in an iframe. No metadata parsing occurs — this generates the static UI shell.
|
|
60
73
|
*
|
|
61
74
|
* @param pluginId - ID of the registered plugin to generate bundle for
|
|
75
|
+
* @param options - Optional bundle options. `theme` selects a design-system
|
|
76
|
+
* theme (e.g. `'light'`); omitting it yields the default dark-fallback bundle.
|
|
62
77
|
* @returns Object containing the bundle (null if failed) and error (null if successful)
|
|
63
78
|
*
|
|
64
79
|
* @example
|
|
65
80
|
* ```typescript
|
|
81
|
+
* // Default (dark-fallback) bundle
|
|
66
82
|
* const { bundle, error } = await engine.visualizeMetadata('flexipage-visualizer');
|
|
83
|
+
*
|
|
84
|
+
* // Light theme bundle
|
|
85
|
+
* const { bundle, error } = await engine.visualizeMetadata('flexipage-visualizer', { theme: 'light' });
|
|
86
|
+
*
|
|
67
87
|
* if (error) {
|
|
68
88
|
* console.error('Bundle generation failed:', error.message);
|
|
69
|
-
* res
|
|
89
|
+
* res
|
|
90
|
+
* .status(
|
|
91
|
+
* error.category === 'Validation' ? 400 : error.category === 'Configuration' ? 404 : 500
|
|
92
|
+
* )
|
|
93
|
+
* .json({ error: error.message });
|
|
70
94
|
* } else if (bundle) {
|
|
71
95
|
* res.type(bundle.contentType).send(bundle.body);
|
|
72
96
|
* }
|
|
73
97
|
* ```
|
|
74
98
|
*/
|
|
75
|
-
visualizeMetadata(pluginId: string): Promise<{
|
|
99
|
+
visualizeMetadata(pluginId: string, options?: VisualizeMetadataOptions): Promise<{
|
|
76
100
|
bundle: HttpAsset<string> | null;
|
|
77
101
|
error: PluginError | null;
|
|
78
102
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebVisualizationEngine.d.ts","sourceRoot":"","sources":["../src/WebVisualizationEngine.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,wBAAwB,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAS;IACzB,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAE5D;;;;;;;;;;;;;;;;OAgBG;gBACS,IAAI,EAAE,0BAA0B;IAM5C
|
|
1
|
+
{"version":3,"file":"WebVisualizationEngine.d.ts","sourceRoot":"","sources":["../src/WebVisualizationEngine.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,wBAAwB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAS;IACzB,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAE5D;;;;;;;;;;;;;;;;OAgBG;gBACS,IAAI,EAAE,0BAA0B;IAM5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC;QACT,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACjC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;IA8EF;;;;;;;;;;;;;;;;;OAiBG;IACG,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyC5E;;;;;;;;;;;;;;;;;;OAkBG;IACG,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;QAChE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAC1B,uBAAuB,EAAE,uBAAuB,GAAG,IAAI,CAAC;KACzD,CAAC;IASF;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,IAAI,IAAI;IAUf;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKlD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAI1B,4DAA4D;IAC5D,OAAO,CAAC,iBAAiB;CAK1B"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
6
|
**/
|
|
7
7
|
import { WebviewMessageType, ErrorCategory } from '@salesforce/metadata-core-sdk';
|
|
8
|
+
import { isDesignSystemTheme, } from '@salesforce/metadata-core-sdk/design-system';
|
|
8
9
|
import { injectBootstrap } from './internal/htmlPipeline.js';
|
|
9
10
|
import { inlineAssets } from './internal/assetInliner.js';
|
|
10
11
|
import { BROWSER_IFRAME_BOOTSTRAP } from './internal/constants.js';
|
|
@@ -46,20 +47,31 @@ export class WebVisualizationEngine {
|
|
|
46
47
|
* ready to be embedded in an iframe. No metadata parsing occurs — this generates the static UI shell.
|
|
47
48
|
*
|
|
48
49
|
* @param pluginId - ID of the registered plugin to generate bundle for
|
|
50
|
+
* @param options - Optional bundle options. `theme` selects a design-system
|
|
51
|
+
* theme (e.g. `'light'`); omitting it yields the default dark-fallback bundle.
|
|
49
52
|
* @returns Object containing the bundle (null if failed) and error (null if successful)
|
|
50
53
|
*
|
|
51
54
|
* @example
|
|
52
55
|
* ```typescript
|
|
56
|
+
* // Default (dark-fallback) bundle
|
|
53
57
|
* const { bundle, error } = await engine.visualizeMetadata('flexipage-visualizer');
|
|
58
|
+
*
|
|
59
|
+
* // Light theme bundle
|
|
60
|
+
* const { bundle, error } = await engine.visualizeMetadata('flexipage-visualizer', { theme: 'light' });
|
|
61
|
+
*
|
|
54
62
|
* if (error) {
|
|
55
63
|
* console.error('Bundle generation failed:', error.message);
|
|
56
|
-
* res
|
|
64
|
+
* res
|
|
65
|
+
* .status(
|
|
66
|
+
* error.category === 'Validation' ? 400 : error.category === 'Configuration' ? 404 : 500
|
|
67
|
+
* )
|
|
68
|
+
* .json({ error: error.message });
|
|
57
69
|
* } else if (bundle) {
|
|
58
70
|
* res.type(bundle.contentType).send(bundle.body);
|
|
59
71
|
* }
|
|
60
72
|
* ```
|
|
61
73
|
*/
|
|
62
|
-
async visualizeMetadata(pluginId) {
|
|
74
|
+
async visualizeMetadata(pluginId, options) {
|
|
63
75
|
this.assertNotDisposed();
|
|
64
76
|
// Fail fast on invalid plugin IDs to avoid downstream errors
|
|
65
77
|
if (!pluginId || pluginId.trim().length === 0) {
|
|
@@ -71,6 +83,18 @@ export class WebVisualizationEngine {
|
|
|
71
83
|
},
|
|
72
84
|
};
|
|
73
85
|
}
|
|
86
|
+
// Reject an unknown theme up front — before any plugin verification or asset
|
|
87
|
+
// read — so a bad theme never touches the filesystem. No silent fallback:
|
|
88
|
+
// an invalid theme is a caller error, consistent with the error-first boundary.
|
|
89
|
+
if (options?.theme !== undefined && !isDesignSystemTheme(options.theme)) {
|
|
90
|
+
return {
|
|
91
|
+
bundle: null,
|
|
92
|
+
error: {
|
|
93
|
+
message: `Invalid theme: ${options.theme}`,
|
|
94
|
+
category: ErrorCategory.Validation,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
74
98
|
// Verify plugin is registered before attempting asset read
|
|
75
99
|
if (!this.requireKnownPlugin(pluginId)) {
|
|
76
100
|
return {
|
|
@@ -84,7 +108,7 @@ export class WebVisualizationEngine {
|
|
|
84
108
|
try {
|
|
85
109
|
// Build self-contained HTML bundle: inline all assets to eliminate external requests
|
|
86
110
|
let html = await this.assetReader.readPluginIndexHtml(pluginId);
|
|
87
|
-
const platformCss = await this.assetReader.readDesignSystemCss();
|
|
111
|
+
const platformCss = await this.assetReader.readDesignSystemCss(options?.theme);
|
|
88
112
|
html = await inlineAssets(html, pluginId, this.assetReader, platformCss);
|
|
89
113
|
// Bootstrap script enables host-plugin postMessage communication
|
|
90
114
|
html = injectBootstrap(html, BROWSER_IFRAME_BOOTSTRAP);
|
|
@@ -92,11 +116,16 @@ export class WebVisualizationEngine {
|
|
|
92
116
|
bundle: {
|
|
93
117
|
contentType: 'text/html; charset=utf-8',
|
|
94
118
|
body: html,
|
|
95
|
-
// Bundle is the static plugin UI shell
|
|
96
|
-
// that flows separately via getParsedMetadata + postMessage). The
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
|
|
119
|
+
// Bundle is the static plugin UI shell + themed CSS (no per-user / per-org
|
|
120
|
+
// data — that flows separately via getParsedMetadata + postMessage). The
|
|
121
|
+
// shell is keyed by (pluginId, theme), but the theme is chosen via the
|
|
122
|
+
// options parameter, not the URL — so the same URL can yield different
|
|
123
|
+
// bodies. We therefore drop `immutable`: with it, a client that fetched the
|
|
124
|
+
// default bundle and later requests light for the same plugin would be
|
|
125
|
+
// served the stale cached copy. `public, max-age=86400` still allows a day
|
|
126
|
+
// of caching but lets the client revalidate after that or on hard refresh.
|
|
127
|
+
// Multi-theme callers should vary their own cache key by theme.
|
|
128
|
+
cacheControl: 'public, max-age=86400',
|
|
100
129
|
},
|
|
101
130
|
error: null,
|
|
102
131
|
};
|
|
@@ -108,7 +137,9 @@ export class WebVisualizationEngine {
|
|
|
108
137
|
error: {
|
|
109
138
|
message: err instanceof Error ? err.message : 'Failed to generate bundle',
|
|
110
139
|
category: ErrorCategory.Runtime,
|
|
111
|
-
|
|
140
|
+
// Include the theme so a themed-read failure (e.g. a missing theme
|
|
141
|
+
// sheet) is distinguishable from a default-read failure by context.
|
|
142
|
+
context: { pluginId: pluginId, theme: options?.theme ?? 'default' },
|
|
112
143
|
stackTrace: err instanceof Error ? err.stack : undefined,
|
|
113
144
|
},
|
|
114
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebVisualizationEngine.js","sourceRoot":"","sources":["../src/WebVisualizationEngine.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAGJ,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"WebVisualizationEngine.js","sourceRoot":"","sources":["../src/WebVisualizationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,724 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026, Salesforce, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
**/
|
|
7
|
+
|
|
8
|
+
/* Light theme — VS Code "Light Modern" aligned, tuned so every meaningful
|
|
9
|
+
color clears its WCAG floor on a light canvas. This sheet declares the full
|
|
10
|
+
`--vscode-*` layer that vscode-design-system.css reads for its `--mv-*`
|
|
11
|
+
tokens; without it, a plain browser iframe falls to the base sheet's dark
|
|
12
|
+
fallbacks. Body text clears WCAG-AA (4.5:1) and every graphical color clears
|
|
13
|
+
WCAG 1.4.11 (3:1) on white. Ratios in the trailing comments are measured
|
|
14
|
+
with the WCAG 2.x relative-luminance formula (the same math the parity test
|
|
15
|
+
uses). Dark is NOT re-authored here — dark remains the base sheet's inline
|
|
16
|
+
fallbacks, so the default (no-theme) bundle stays byte-identical. */
|
|
17
|
+
:root {
|
|
18
|
+
/* ===== Canvas / shell ===== */
|
|
19
|
+
--vscode-editor-background: #ffffff;
|
|
20
|
+
--vscode-foreground: #3b3b3b; /* 11.2:1 on white — deliberately not pure black */
|
|
21
|
+
--vscode-descriptionForeground: #5f6368; /* 6.05:1 on white */
|
|
22
|
+
--vscode-disabledForeground: #a1a1a1; /* 2.58:1 — disabled text is WCAG-exempt, not asserted */
|
|
23
|
+
|
|
24
|
+
/* ===== Node / surface backgrounds (near-white so foreground stays >= 4.5:1) ===== */
|
|
25
|
+
--vscode-editorWidget-background: #f8f8f8;
|
|
26
|
+
--vscode-sideBar-background: #f8f8f8;
|
|
27
|
+
--vscode-panel-background: #ffffff;
|
|
28
|
+
--vscode-dropdown-background: #ffffff;
|
|
29
|
+
--vscode-input-background: #ffffff;
|
|
30
|
+
--vscode-minimap-background: #f8f8f8;
|
|
31
|
+
--vscode-widget-background: rgba(255, 255, 255, 0.9);
|
|
32
|
+
|
|
33
|
+
/* ===== Interactive / chrome (text pairs >= 4.5:1) ===== */
|
|
34
|
+
--vscode-textLink-foreground: #005fb8; /* 6.31:1 on white */
|
|
35
|
+
--vscode-textLink-activeForeground: #005fb8; /* 6.31:1 on white */
|
|
36
|
+
--vscode-button-background: #005fb8;
|
|
37
|
+
--vscode-button-foreground: #ffffff; /* 6.31:1 on the button background */
|
|
38
|
+
--vscode-button-secondaryBackground: #e5e5e5;
|
|
39
|
+
--vscode-button-secondaryForeground: #3b3b3b; /* 8.89:1 on the secondary background */
|
|
40
|
+
--vscode-badge-background: #005fb8;
|
|
41
|
+
--vscode-badge-foreground: #ffffff;
|
|
42
|
+
--vscode-list-activeSelectionBackground: #0060c0;
|
|
43
|
+
--vscode-list-activeSelectionForeground: #ffffff; /* 6.11:1 on the selection background */
|
|
44
|
+
--vscode-textPreformat-foreground: #0a5c79; /* 7.45:1 on white */
|
|
45
|
+
--vscode-focusBorder: #005fb8;
|
|
46
|
+
|
|
47
|
+
/* ===== Borders / separators (structural, visible on white) ===== */
|
|
48
|
+
--vscode-editorGroup-border: #d4d4d4;
|
|
49
|
+
--vscode-widget-border: #d4d4d4;
|
|
50
|
+
--vscode-panel-border: #d4d4d4;
|
|
51
|
+
--vscode-input-border: #d4d4d4;
|
|
52
|
+
--vscode-dropdown-border: #d4d4d4;
|
|
53
|
+
--vscode-editorRuler-foreground: #d4d4d4;
|
|
54
|
+
--vscode-contrastBorder: transparent; /* High-contrast mode only; stays transparent otherwise */
|
|
55
|
+
|
|
56
|
+
/* ===== Charts / accents / edges (>= 3:1 on white) =====
|
|
57
|
+
Darkened from the SLDS bright hues so they clear the non-text floor on a
|
|
58
|
+
light canvas. The bright #4bca81 / #fe9339 / #e4a201 fail 3:1 on white and
|
|
59
|
+
are intentionally NOT used. These feed accent, status, and ERD-edge tokens
|
|
60
|
+
that color meaningful non-text graphics. */
|
|
61
|
+
--vscode-charts-blue: #0b66c2; /* 5.69:1 on white */
|
|
62
|
+
--vscode-charts-green: #137a3c; /* 5.42:1 on white — darkened from the bright green */
|
|
63
|
+
--vscode-charts-red: #d13438; /* 4.93:1 on white */
|
|
64
|
+
--vscode-charts-orange: #b5620a; /* 4.45:1 on white — darkened from the bright orange */
|
|
65
|
+
--vscode-charts-yellow: #946a00; /* 4.86:1 on white — a dark amber; bright yellow cannot clear 3:1 */
|
|
66
|
+
--vscode-charts-purple: #8250df; /* 5.05:1 on white */
|
|
67
|
+
--vscode-charts-lines: #767676; /* 4.54:1 on white — edges are meaningful; a faint ruler line fails */
|
|
68
|
+
|
|
69
|
+
/* ===== Status / ANSI (graphical >= 3:1, error text >= 4.5:1) ===== */
|
|
70
|
+
--vscode-terminal-ansiGreen: #137a3c; /* 5.42:1 on white */
|
|
71
|
+
--vscode-terminal-ansiCyan: #0a7c8c; /* 4.91:1 on white */
|
|
72
|
+
--vscode-terminal-ansiYellow: #946a00; /* 4.86:1 on white */
|
|
73
|
+
--vscode-errorForeground: #c4291c; /* 5.70:1 on white */
|
|
74
|
+
--vscode-inputValidation-errorBackground: #fdedeb;
|
|
75
|
+
--vscode-inputValidation-errorBorder: #c4291c;
|
|
76
|
+
|
|
77
|
+
/* ===== Syntax primitives (rendered as text inside nodes on #f8f8f8) ===== */
|
|
78
|
+
--vscode-debugTokenExpression-string: #a31515; /* 7.39:1 on #f8f8f8 */
|
|
79
|
+
--vscode-debugTokenExpression-number: #0a7d33; /* 4.95:1 on #f8f8f8 */
|
|
80
|
+
--vscode-debugTokenExpression-boolean: #0000ff; /* 8.09:1 on #f8f8f8 */
|
|
81
|
+
--vscode-debugTokenExpression-name: #001080; /* 14.27:1 on #f8f8f8 */
|
|
82
|
+
--vscode-symbolIcon-propertyForeground: #3b3b3b;
|
|
83
|
+
--vscode-symbolIcon-classForeground: #9a6700; /* 4.58:1 on #f8f8f8 — class icon is graphical */
|
|
84
|
+
|
|
85
|
+
/* ===== Selection / hover tints ===== */
|
|
86
|
+
--vscode-editor-selectionBackground: rgba(0, 95, 184, 0.15);
|
|
87
|
+
--vscode-list-hoverBackground: #f0f0f0;
|
|
88
|
+
--vscode-scrollbarSlider-background: rgba(100, 100, 100, 0.4);
|
|
89
|
+
--vscode-scrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7);
|
|
90
|
+
--vscode-widget-shadow: rgba(0, 0, 0, 0.16);
|
|
91
|
+
|
|
92
|
+
/* ===== Fonts (environmental, not color — carried over from the base sheet's
|
|
93
|
+
own fallbacks so the light bundle stays self-contained and all vars are
|
|
94
|
+
declared for parity) ===== */
|
|
95
|
+
--vscode-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
96
|
+
--vscode-editor-font-family: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;
|
|
97
|
+
--vscode-editor-font-size: 13px;
|
|
98
|
+
--vscode-editor-font-weight: 400;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/* ===== RESET & BASE STYLES ===== */
|
|
103
|
+
|
|
104
|
+
*,
|
|
105
|
+
*::before,
|
|
106
|
+
*::after {
|
|
107
|
+
box-sizing: border-box;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
html,
|
|
111
|
+
body {
|
|
112
|
+
margin: 0;
|
|
113
|
+
padding: 0;
|
|
114
|
+
width: 100%;
|
|
115
|
+
height: 100%;
|
|
116
|
+
overflow-x: hidden;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
body {
|
|
120
|
+
font-family: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
|
|
121
|
+
font-size: var(--vscode-editor-font-size, 13px);
|
|
122
|
+
font-weight: var(--vscode-editor-font-weight, 400);
|
|
123
|
+
line-height: 1.4;
|
|
124
|
+
color: var(--vscode-foreground, #cccccc);
|
|
125
|
+
background: var(--vscode-editor-background, #1e1e1e);
|
|
126
|
+
-webkit-font-smoothing: antialiased;
|
|
127
|
+
-moz-osx-font-smoothing: grayscale;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
h1, h2, h3, h4, h5, h6,
|
|
131
|
+
p, blockquote, pre,
|
|
132
|
+
dl, dd, ol, ul,
|
|
133
|
+
figure, hr {
|
|
134
|
+
margin: 0;
|
|
135
|
+
padding: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
ol, ul {
|
|
139
|
+
list-style: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
img {
|
|
143
|
+
max-width: 100%;
|
|
144
|
+
height: auto;
|
|
145
|
+
display: block;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
button, input, select, textarea {
|
|
149
|
+
font-family: inherit;
|
|
150
|
+
font-size: inherit;
|
|
151
|
+
line-height: inherit;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
button {
|
|
155
|
+
background: transparent;
|
|
156
|
+
border: none;
|
|
157
|
+
cursor: pointer;
|
|
158
|
+
padding: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
a {
|
|
162
|
+
color: var(--vscode-textLink-foreground, #3794ff);
|
|
163
|
+
text-decoration: none;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
a:hover {
|
|
167
|
+
color: var(--vscode-textLink-activeForeground, #3794ff);
|
|
168
|
+
text-decoration: underline;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
:focus-visible {
|
|
172
|
+
outline: 2px solid var(--vscode-focusBorder, #007fd4);
|
|
173
|
+
outline-offset: 2px;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
::-webkit-scrollbar {
|
|
177
|
+
width: 10px;
|
|
178
|
+
height: 10px;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
::-webkit-scrollbar-track {
|
|
182
|
+
background: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
::-webkit-scrollbar-thumb {
|
|
186
|
+
background: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4));
|
|
187
|
+
border-radius: 10px;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
::-webkit-scrollbar-thumb:hover {
|
|
191
|
+
background: var(--vscode-scrollbarSlider-hoverBackground, rgba(100, 100, 100, 0.7));
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* ===== DESIGN TOKENS ===== */
|
|
195
|
+
|
|
196
|
+
:root {
|
|
197
|
+
/* ===== 1. CANVAS & SHELL (Global Environment) ===== */
|
|
198
|
+
/* The immutable stage - ensures every visualization looks native to VS Code */
|
|
199
|
+
|
|
200
|
+
/* Canvas */
|
|
201
|
+
--mv-canvas-bg: var(--vscode-editor-background, #1e1e1e);
|
|
202
|
+
--mv-canvas-grid: var(--vscode-editorRuler-foreground, #e5e5e5);
|
|
203
|
+
--mv-minimap-bg: var(--vscode-minimap-background, #f0f0f0);
|
|
204
|
+
|
|
205
|
+
/* Chrome / Shell */
|
|
206
|
+
--mv-panel-bg: var(--vscode-editorWidget-background, #252526);
|
|
207
|
+
--mv-panel-border: var(--vscode-editorGroup-border, #454545);
|
|
208
|
+
--mv-panel-shadow: 0 4px 16px var(--vscode-widget-shadow, rgba(0, 0, 0, 0.36));
|
|
209
|
+
|
|
210
|
+
/* ===== 2. CORE ENTITIES (Node Contract) ===== */
|
|
211
|
+
/* Base tokens for all entity cards - ensures consistent elevation and behavior */
|
|
212
|
+
|
|
213
|
+
/* Node Base */
|
|
214
|
+
--mv-node-bg: var(--vscode-editorWidget-background, #252526);
|
|
215
|
+
--mv-node-border: var(--vscode-widget-border, #454545);
|
|
216
|
+
--mv-node-border-focus: var(--vscode-focusBorder, #007fd4);
|
|
217
|
+
|
|
218
|
+
--mv-node-bg-hover: var(--vscode-list-hoverBackground, #2a2d2e);
|
|
219
|
+
--mv-node-bg-selected: var(--vscode-list-activeSelectionBackground, #094771);
|
|
220
|
+
--mv-node-fg: var(--vscode-foreground, #cccccc);
|
|
221
|
+
--mv-node-fg-secondary: var(--vscode-descriptionForeground, #cccccc99);
|
|
222
|
+
--mv-node-fg-selected: var(--vscode-list-activeSelectionForeground, #ffffff);
|
|
223
|
+
|
|
224
|
+
--mv-edge-neutral: var(--vscode-charts-lines, #cccccc);
|
|
225
|
+
--mv-edge-active: var(--vscode-textLink-activeForeground, #3794ff);
|
|
226
|
+
|
|
227
|
+
/* ===== 3. SEMANTIC VARIANTS & SYNTAX ===== */
|
|
228
|
+
|
|
229
|
+
/* 3A. Functional Accents - The "Four Pillars" */
|
|
230
|
+
/* Teams must map their metadata concepts to these four categories */
|
|
231
|
+
--mv-accent-data: var(--vscode-charts-purple, #b180d7);
|
|
232
|
+
--mv-accent-logic: var(--vscode-charts-blue, #3794ff);
|
|
233
|
+
--mv-accent-ui: var(--vscode-charts-yellow, #ffb454);
|
|
234
|
+
--mv-accent-system: var(--vscode-charts-orange, #d18616);
|
|
235
|
+
|
|
236
|
+
/* Syntax Primitives */
|
|
237
|
+
--mv-syntax-string: var(--vscode-debugTokenExpression-string, #ce9178);
|
|
238
|
+
--mv-syntax-number: var(--vscode-debugTokenExpression-number, #b5cea8);
|
|
239
|
+
--mv-syntax-boolean: var(--vscode-debugTokenExpression-boolean, #569cd6);
|
|
240
|
+
--mv-syntax-property: var(--vscode-symbolIcon-propertyForeground, #cccccc);
|
|
241
|
+
--mv-syntax-class: var(--vscode-symbolIcon-classForeground, #ee9d28);
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
/* 3B. State Indicators - Universal Status */
|
|
245
|
+
/* Teams must use these for state indication - custom colors forbidden */
|
|
246
|
+
--mv-status-positive: var(--vscode-charts-green, #23d18b);
|
|
247
|
+
--mv-status-negative: var(--vscode-charts-red, #f14c4c);
|
|
248
|
+
--mv-status-warning: var(--vscode-charts-orange, #d18616);
|
|
249
|
+
--mv-status-info: var(--vscode-charts-blue, #3794ff);
|
|
250
|
+
--mv-status-neutral: var(--vscode-disabledForeground, #656565);
|
|
251
|
+
|
|
252
|
+
/* ===== 4. INTERNAL COMPONENT TOKENS ===== */
|
|
253
|
+
/* Standardized internal elements for within nodes */
|
|
254
|
+
--mv-marker-primary: var(--vscode-foreground, #cccccc);
|
|
255
|
+
--mv-marker-muted: var(--vscode-disabledForeground, #656565);
|
|
256
|
+
--mv-separator: var(--vscode-editorRuler-foreground, #e5e5ee);
|
|
257
|
+
--mv-region-zone: var(--vscode-editor-selectionBackground, rgba(38, 79, 120, 0.4));
|
|
258
|
+
|
|
259
|
+
/* ===== 5. ACCESSIBILITY (High Contrast) ===== */
|
|
260
|
+
/* Platform-enforced overrides for High Contrast mode */
|
|
261
|
+
--mv-hc-border: var(--vscode-contrastBorder, transparent);
|
|
262
|
+
--mv-hc-selection: var(--vscode-focusBorder, #007fd4);
|
|
263
|
+
|
|
264
|
+
/* ===== GENERAL PURPOSE TOKENS ===== */
|
|
265
|
+
|
|
266
|
+
/* Background Colors */
|
|
267
|
+
--mv-bg-primary: var(--vscode-editor-background, #1e1e1e);
|
|
268
|
+
--mv-bg-secondary: var(--vscode-sideBar-background, #252526);
|
|
269
|
+
--mv-bg-elevated: var(--vscode-dropdown-background, #3c3c3c);
|
|
270
|
+
--mv-bg-surface: var(--vscode-panel-background, #1e1e1e);
|
|
271
|
+
--mv-bg-surface-hover: var(--vscode-list-hoverBackground, #2a2d2e);
|
|
272
|
+
--mv-bg-input: var(--vscode-input-background, #3c3c3c);
|
|
273
|
+
--mv-bg-badge: var(--vscode-badge-background, #4d4d4d);
|
|
274
|
+
--mv-fg-badge: var(--vscode-badge-foreground, #ffffff);
|
|
275
|
+
|
|
276
|
+
/* Text Colors */
|
|
277
|
+
--mv-text-primary: var(--vscode-foreground, #cccccc);
|
|
278
|
+
--mv-text-secondary: var(--vscode-descriptionForeground, #999999);
|
|
279
|
+
--mv-text-muted: var(--vscode-disabledForeground, #656565);
|
|
280
|
+
--mv-text-inverse: var(--vscode-list-activeSelectionForeground, #ffffff);
|
|
281
|
+
|
|
282
|
+
/* Interactive Colors */
|
|
283
|
+
--mv-interactive-primary: var(--vscode-textLink-foreground, #3794ff);
|
|
284
|
+
--mv-interactive-primary-hover: var(--vscode-textLink-activeForeground, #3794ff);
|
|
285
|
+
--mv-interactive-secondary: var(--vscode-textPreformat-foreground, #d7ba7d);
|
|
286
|
+
--mv-interactive-focus: var(--vscode-button-background, #0e639c);
|
|
287
|
+
--mv-interactive-focus-border: var(--vscode-focusBorder, #007fd4);
|
|
288
|
+
--mv-button-primary-bg: var(--vscode-button-background, #0e639c);
|
|
289
|
+
--mv-button-primary-fg: var(--vscode-button-foreground, #ffffff);
|
|
290
|
+
--mv-button-secondary-bg: var(--vscode-button-secondaryBackground, #5f6a79);
|
|
291
|
+
--mv-button-secondary-fg: var(--vscode-button-secondaryForeground, #ffffff);
|
|
292
|
+
|
|
293
|
+
/* Border Colors */
|
|
294
|
+
--mv-border-default: var(--vscode-panel-border, #454545);
|
|
295
|
+
--mv-border-primary: var(--vscode-editorGroup-border, #454545);
|
|
296
|
+
--mv-border-hover: var(--vscode-list-hoverBackground, #2a2d2e);
|
|
297
|
+
--mv-border-input: var(--vscode-input-border, #454545);
|
|
298
|
+
--mv-border-focus: var(--vscode-focusBorder, #007fd4);
|
|
299
|
+
--mv-border-dropdown: var(--vscode-dropdown-border, #454545);
|
|
300
|
+
|
|
301
|
+
/* Status Colors */
|
|
302
|
+
--mv-status-error: var(--vscode-errorForeground, #f14c4c);
|
|
303
|
+
--mv-status-error-bg: var(--vscode-inputValidation-errorBackground, #5a1d1d);
|
|
304
|
+
--mv-status-error-border: var(--vscode-inputValidation-errorBorder, #be1100);
|
|
305
|
+
--mv-status-success: var(--vscode-terminal-ansiGreen, #23d18b);
|
|
306
|
+
|
|
307
|
+
/* Accent Colors */
|
|
308
|
+
--mv-accent-cyan: var(--vscode-terminal-ansiCyan, #11b7ee);
|
|
309
|
+
--mv-accent-cyan-light: var(--vscode-debugTokenExpression-name, #9cdcfe);
|
|
310
|
+
--mv-accent-yellow: var(--vscode-terminal-ansiYellow, #ffb454);
|
|
311
|
+
|
|
312
|
+
/* Shadows & Effects */
|
|
313
|
+
--mv-shadow-light: rgba(0, 0, 0, 0.1);
|
|
314
|
+
--mv-shadow-medium: rgba(0, 0, 0, 0.15);
|
|
315
|
+
--mv-shadow-heavy: rgba(0, 0, 0, 0.3);
|
|
316
|
+
--mv-shadow-text: rgba(0, 0, 0, 0.4);
|
|
317
|
+
--mv-bg-overlay: var(--vscode-widget-background, rgba(37, 37, 38, 0.8));
|
|
318
|
+
|
|
319
|
+
/* Typography */
|
|
320
|
+
--mv-font-family: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
|
|
321
|
+
--mv-font-family-mono: var(--vscode-editor-font-family, 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace);
|
|
322
|
+
--mv-font-size-xs: 0.75rem;
|
|
323
|
+
--mv-font-size-sm: 0.875rem;
|
|
324
|
+
--mv-font-size-base: 1rem;
|
|
325
|
+
--mv-font-size-lg: 1.125rem;
|
|
326
|
+
--mv-font-size-xl: 1.25rem;
|
|
327
|
+
--mv-font-size-2xl: 1.5rem;
|
|
328
|
+
--mv-font-size-3xl: 1.875rem;
|
|
329
|
+
--mv-font-weight-normal: 400;
|
|
330
|
+
--mv-font-weight-medium: 500;
|
|
331
|
+
--mv-font-weight-semibold: 600;
|
|
332
|
+
--mv-font-weight-bold: 700;
|
|
333
|
+
--mv-line-height-tight: 1.25;
|
|
334
|
+
--mv-line-height-normal: 1.5;
|
|
335
|
+
--mv-line-height-relaxed: 1.75;
|
|
336
|
+
|
|
337
|
+
/* Spacing */
|
|
338
|
+
--mv-spacing-xs: 0.25rem;
|
|
339
|
+
--mv-spacing-sm: 0.5rem;
|
|
340
|
+
--mv-spacing-md: 1rem;
|
|
341
|
+
--mv-spacing-lg: 1.5rem;
|
|
342
|
+
--mv-spacing-xl: 2rem;
|
|
343
|
+
--mv-spacing-2xl: 3rem;
|
|
344
|
+
--mv-spacing-3xl: 4rem;
|
|
345
|
+
|
|
346
|
+
/* Shadows */
|
|
347
|
+
--mv-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
348
|
+
--mv-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
349
|
+
--mv-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
350
|
+
--mv-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
351
|
+
|
|
352
|
+
/* Border Radius */
|
|
353
|
+
--mv-radius-none: 0;
|
|
354
|
+
--mv-radius-sm: 0.125rem;
|
|
355
|
+
--mv-radius-md: 0.25rem;
|
|
356
|
+
--mv-radius-lg: 0.5rem;
|
|
357
|
+
--mv-radius-xl: 0.75rem;
|
|
358
|
+
--mv-radius-full: 9999px;
|
|
359
|
+
|
|
360
|
+
/* Transitions */
|
|
361
|
+
--mv-transition-fast: 150ms ease;
|
|
362
|
+
--mv-transition-base: 250ms ease;
|
|
363
|
+
--mv-transition-slow: 350ms ease;
|
|
364
|
+
|
|
365
|
+
/* Layout */
|
|
366
|
+
--mv-container-max-width: 1200px;
|
|
367
|
+
--mv-content-max-width: 65ch;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* ===== UTILITY CLASSES ===== */
|
|
371
|
+
|
|
372
|
+
/* Layout */
|
|
373
|
+
.mv-container {
|
|
374
|
+
width: 100%;
|
|
375
|
+
max-width: var(--mv-container-max-width);
|
|
376
|
+
margin: 0 auto;
|
|
377
|
+
padding: var(--mv-spacing-lg);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.mv-container-full {
|
|
381
|
+
width: 100%;
|
|
382
|
+
padding: var(--mv-spacing-lg);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.mv-flex {
|
|
386
|
+
display: flex;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.mv-flex-col {
|
|
390
|
+
display: flex;
|
|
391
|
+
flex-direction: column;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.mv-items-center {
|
|
395
|
+
align-items: center;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.mv-justify-between {
|
|
399
|
+
justify-content: space-between;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.mv-justify-center {
|
|
403
|
+
justify-content: center;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.mv-grid {
|
|
407
|
+
display: grid;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.mv-grid-cols-2 {
|
|
411
|
+
grid-template-columns: repeat(2, 1fr);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.mv-grid-cols-3 {
|
|
415
|
+
grid-template-columns: repeat(3, 1fr);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.mv-grid-cols-4 {
|
|
419
|
+
grid-template-columns: repeat(4, 1fr);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/* Gap */
|
|
423
|
+
.mv-gap-xs { gap: var(--mv-spacing-xs); }
|
|
424
|
+
.mv-gap-sm { gap: var(--mv-spacing-sm); }
|
|
425
|
+
.mv-gap-md { gap: var(--mv-spacing-md); }
|
|
426
|
+
.mv-gap-lg { gap: var(--mv-spacing-lg); }
|
|
427
|
+
|
|
428
|
+
/* Padding */
|
|
429
|
+
.mv-p-xs { padding: var(--mv-spacing-xs); }
|
|
430
|
+
.mv-p-sm { padding: var(--mv-spacing-sm); }
|
|
431
|
+
.mv-p-md { padding: var(--mv-spacing-md); }
|
|
432
|
+
.mv-p-lg { padding: var(--mv-spacing-lg); }
|
|
433
|
+
.mv-px-sm { padding-left: var(--mv-spacing-sm); padding-right: var(--mv-spacing-sm); }
|
|
434
|
+
.mv-px-md { padding-left: var(--mv-spacing-md); padding-right: var(--mv-spacing-md); }
|
|
435
|
+
.mv-py-sm { padding-top: var(--mv-spacing-sm); padding-bottom: var(--mv-spacing-sm); }
|
|
436
|
+
.mv-py-md { padding-top: var(--mv-spacing-md); padding-bottom: var(--mv-spacing-md); }
|
|
437
|
+
|
|
438
|
+
/* Margins */
|
|
439
|
+
.mv-mb-sm { margin-bottom: var(--mv-spacing-sm); }
|
|
440
|
+
.mv-mb-md { margin-bottom: var(--mv-spacing-md); }
|
|
441
|
+
.mv-mb-lg { margin-bottom: var(--mv-spacing-lg); }
|
|
442
|
+
.mv-mt-sm { margin-top: var(--mv-spacing-sm); }
|
|
443
|
+
.mv-mt-md { margin-top: var(--mv-spacing-md); }
|
|
444
|
+
|
|
445
|
+
/* Typography */
|
|
446
|
+
.mv-text-xs {
|
|
447
|
+
font-size: var(--mv-font-size-xs);
|
|
448
|
+
line-height: var(--mv-line-height-normal);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.mv-text-sm {
|
|
452
|
+
font-size: var(--mv-font-size-sm);
|
|
453
|
+
line-height: var(--mv-line-height-normal);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.mv-text-base {
|
|
457
|
+
font-size: var(--mv-font-size-base);
|
|
458
|
+
line-height: var(--mv-line-height-normal);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.mv-text-lg {
|
|
462
|
+
font-size: var(--mv-font-size-lg);
|
|
463
|
+
line-height: var(--mv-line-height-normal);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.mv-text-xl {
|
|
467
|
+
font-size: var(--mv-font-size-xl);
|
|
468
|
+
line-height: var(--mv-line-height-tight);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.mv-text-2xl {
|
|
472
|
+
font-size: var(--mv-font-size-2xl);
|
|
473
|
+
line-height: var(--mv-line-height-tight);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.mv-font-medium { font-weight: var(--mv-font-weight-medium); }
|
|
477
|
+
.mv-font-semibold { font-weight: var(--mv-font-weight-semibold); }
|
|
478
|
+
.mv-font-bold { font-weight: var(--mv-font-weight-bold); }
|
|
479
|
+
|
|
480
|
+
.mv-text-primary { color: var(--mv-text-primary); }
|
|
481
|
+
.mv-text-secondary { color: var(--mv-text-secondary); }
|
|
482
|
+
.mv-text-muted { color: var(--mv-text-muted); }
|
|
483
|
+
.mv-text-error { color: var(--mv-status-error); }
|
|
484
|
+
.mv-text-warning { color: var(--mv-status-warning); }
|
|
485
|
+
.mv-text-success { color: var(--mv-status-success); }
|
|
486
|
+
.mv-text-info { color: var(--mv-status-info); }
|
|
487
|
+
|
|
488
|
+
.mv-text-center { text-align: center; }
|
|
489
|
+
|
|
490
|
+
/* ===== COMPONENTS ===== */
|
|
491
|
+
|
|
492
|
+
/* Cards */
|
|
493
|
+
.mv-card {
|
|
494
|
+
background: var(--mv-bg-surface);
|
|
495
|
+
border: 1px solid var(--mv-border-default);
|
|
496
|
+
border-radius: var(--mv-radius-lg);
|
|
497
|
+
padding: var(--mv-spacing-lg);
|
|
498
|
+
box-shadow: var(--mv-shadow-sm);
|
|
499
|
+
transition: box-shadow var(--mv-transition-base);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.mv-card:hover {
|
|
503
|
+
box-shadow: var(--mv-shadow-md);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
.mv-card-elevated {
|
|
507
|
+
background: var(--mv-bg-elevated);
|
|
508
|
+
box-shadow: var(--mv-shadow-lg);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/* Headers */
|
|
512
|
+
.mv-header {
|
|
513
|
+
display: flex;
|
|
514
|
+
align-items: center;
|
|
515
|
+
justify-content: space-between;
|
|
516
|
+
padding: var(--mv-spacing-lg);
|
|
517
|
+
border-bottom: 1px solid var(--mv-border-default);
|
|
518
|
+
margin-bottom: var(--mv-spacing-lg);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.mv-header-title {
|
|
522
|
+
font-size: var(--mv-font-size-xl);
|
|
523
|
+
font-weight: var(--mv-font-weight-semibold);
|
|
524
|
+
color: var(--mv-text-primary);
|
|
525
|
+
margin: 0;
|
|
526
|
+
display: flex;
|
|
527
|
+
align-items: center;
|
|
528
|
+
gap: var(--mv-spacing-sm);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.mv-header-subtitle {
|
|
532
|
+
font-size: var(--mv-font-size-sm);
|
|
533
|
+
color: var(--mv-text-secondary);
|
|
534
|
+
margin-top: var(--mv-spacing-xs);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/* Buttons */
|
|
538
|
+
.mv-button {
|
|
539
|
+
display: inline-flex;
|
|
540
|
+
align-items: center;
|
|
541
|
+
justify-content: center;
|
|
542
|
+
gap: var(--mv-spacing-xs);
|
|
543
|
+
padding: var(--mv-spacing-sm) var(--mv-spacing-md);
|
|
544
|
+
border: none;
|
|
545
|
+
border-radius: var(--mv-radius-md);
|
|
546
|
+
font-family: var(--mv-font-family);
|
|
547
|
+
font-size: var(--mv-font-size-sm);
|
|
548
|
+
font-weight: var(--mv-font-weight-medium);
|
|
549
|
+
cursor: pointer;
|
|
550
|
+
transition: all var(--mv-transition-fast);
|
|
551
|
+
text-decoration: none;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.mv-button:focus-visible {
|
|
555
|
+
outline: 2px solid var(--mv-border-focus);
|
|
556
|
+
outline-offset: 2px;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
.mv-button-primary {
|
|
560
|
+
background: var(--mv-button-primary-bg);
|
|
561
|
+
color: var(--mv-button-primary-fg);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.mv-button-primary:hover {
|
|
565
|
+
filter: brightness(1.1);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
.mv-button-secondary {
|
|
569
|
+
background: var(--mv-button-secondary-bg);
|
|
570
|
+
color: var(--mv-button-secondary-fg);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.mv-button-outline {
|
|
574
|
+
background: transparent;
|
|
575
|
+
color: var(--mv-interactive-primary);
|
|
576
|
+
border: 1px solid var(--mv-border-default);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
.mv-button-outline:hover {
|
|
580
|
+
background: var(--mv-bg-elevated);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
.mv-button-sm {
|
|
584
|
+
padding: var(--mv-spacing-xs) var(--mv-spacing-sm);
|
|
585
|
+
font-size: var(--mv-font-size-xs);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/* Badges */
|
|
589
|
+
.mv-badge {
|
|
590
|
+
display: inline-flex;
|
|
591
|
+
align-items: center;
|
|
592
|
+
padding: var(--mv-spacing-xs) var(--mv-spacing-sm);
|
|
593
|
+
background: var(--mv-bg-elevated);
|
|
594
|
+
color: var(--mv-text-primary);
|
|
595
|
+
font-size: var(--mv-font-size-xs);
|
|
596
|
+
font-weight: var(--mv-font-weight-medium);
|
|
597
|
+
border-radius: var(--mv-radius-full);
|
|
598
|
+
border: 1px solid var(--mv-border-default);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.mv-badge-primary {
|
|
602
|
+
background: var(--mv-interactive-primary);
|
|
603
|
+
color: var(--mv-text-inverse);
|
|
604
|
+
border-color: var(--mv-interactive-primary);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.mv-badge-error {
|
|
608
|
+
background: var(--mv-status-error);
|
|
609
|
+
color: var(--mv-text-inverse);
|
|
610
|
+
border-color: var(--mv-status-error);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
.mv-badge-warning {
|
|
614
|
+
background: var(--mv-status-warning);
|
|
615
|
+
color: var(--mv-text-inverse);
|
|
616
|
+
border-color: var(--mv-status-warning);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
.mv-badge-success {
|
|
620
|
+
background: var(--mv-status-success);
|
|
621
|
+
color: var(--mv-text-inverse);
|
|
622
|
+
border-color: var(--mv-status-success);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.mv-badge-info {
|
|
626
|
+
background: var(--mv-status-info);
|
|
627
|
+
color: var(--mv-text-inverse);
|
|
628
|
+
border-color: var(--mv-status-info);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
/* Status dots */
|
|
632
|
+
.mv-status-dot {
|
|
633
|
+
display: inline-block;
|
|
634
|
+
width: 8px;
|
|
635
|
+
height: 8px;
|
|
636
|
+
border-radius: var(--mv-radius-full);
|
|
637
|
+
background: var(--mv-text-muted);
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.mv-status-dot-error { background: var(--mv-status-error); }
|
|
641
|
+
.mv-status-dot-warning { background: var(--mv-status-warning); }
|
|
642
|
+
.mv-status-dot-success { background: var(--mv-status-success); }
|
|
643
|
+
.mv-status-dot-info { background: var(--mv-status-info); }
|
|
644
|
+
|
|
645
|
+
/* Form elements */
|
|
646
|
+
.mv-input {
|
|
647
|
+
width: 100%;
|
|
648
|
+
padding: var(--mv-spacing-sm) var(--mv-spacing-md);
|
|
649
|
+
background: var(--mv-bg-input);
|
|
650
|
+
border: 1px solid var(--mv-border-input);
|
|
651
|
+
border-radius: var(--mv-radius-md);
|
|
652
|
+
color: var(--mv-text-primary);
|
|
653
|
+
font-family: var(--mv-font-family);
|
|
654
|
+
font-size: var(--mv-font-size-sm);
|
|
655
|
+
transition: border-color var(--mv-transition-fast);
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
.mv-input:focus {
|
|
659
|
+
outline: none;
|
|
660
|
+
border-color: var(--mv-border-focus);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.mv-input::placeholder {
|
|
664
|
+
color: var(--mv-text-muted);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/* Lists */
|
|
668
|
+
.mv-list {
|
|
669
|
+
display: flex;
|
|
670
|
+
flex-direction: column;
|
|
671
|
+
gap: var(--mv-spacing-xs);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
.mv-list-item {
|
|
675
|
+
display: flex;
|
|
676
|
+
align-items: center;
|
|
677
|
+
gap: var(--mv-spacing-sm);
|
|
678
|
+
padding: var(--mv-spacing-sm);
|
|
679
|
+
border-radius: var(--mv-radius-md);
|
|
680
|
+
transition: background-color var(--mv-transition-fast);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
.mv-list-item:hover {
|
|
684
|
+
background: var(--mv-bg-elevated);
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/* Utilities */
|
|
688
|
+
.mv-hidden {
|
|
689
|
+
display: none !important;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.mv-truncate {
|
|
693
|
+
overflow: hidden;
|
|
694
|
+
text-overflow: ellipsis;
|
|
695
|
+
white-space: nowrap;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/* Loading spinner */
|
|
699
|
+
.mv-spinner {
|
|
700
|
+
display: inline-block;
|
|
701
|
+
width: 20px;
|
|
702
|
+
height: 20px;
|
|
703
|
+
border: 2px solid var(--mv-text-muted);
|
|
704
|
+
border-radius: 50%;
|
|
705
|
+
border-top-color: var(--mv-interactive-primary);
|
|
706
|
+
animation: mv-spin 1s ease-in-out infinite;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
@keyframes mv-spin {
|
|
710
|
+
to { transform: rotate(360deg); }
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/* Responsive */
|
|
714
|
+
@media (max-width: 768px) {
|
|
715
|
+
.mv-container {
|
|
716
|
+
padding: var(--mv-spacing-md);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.mv-grid-cols-2,
|
|
720
|
+
.mv-grid-cols-3,
|
|
721
|
+
.mv-grid-cols-4 {
|
|
722
|
+
grid-template-columns: 1fr;
|
|
723
|
+
}
|
|
724
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,4 +19,7 @@ export type { PluginInfo } from './types/PluginInfo.js';
|
|
|
19
19
|
export type { PluginDataUpdateMessage } from './types/PluginDataUpdateMessage.js';
|
|
20
20
|
export type { VisualizeOutcome } from './types/VisualizeOutcome.js';
|
|
21
21
|
export type { WebAdapterOptions } from './types/WebAdapterOptions.js';
|
|
22
|
+
export type { VisualizeMetadataOptions } from './WebVisualizationEngine.js';
|
|
23
|
+
export { DESIGN_SYSTEM_THEMES, isDesignSystemTheme, } from '@salesforce/metadata-core-sdk/design-system';
|
|
24
|
+
export type { DesignSystemTheme } from '@salesforce/metadata-core-sdk/design-system';
|
|
22
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;;;;GAOG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;;;;GAOG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,4 +15,5 @@
|
|
|
15
15
|
// Factory + engine.
|
|
16
16
|
export { createWebVisualizationEngine } from './createWebVisualizationEngine.js';
|
|
17
17
|
export { WebVisualizationEngine } from './WebVisualizationEngine.js';
|
|
18
|
+
export { DESIGN_SYSTEM_THEMES, isDesignSystemTheme, } from '@salesforce/metadata-core-sdk/design-system';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;;;;GAOG;AAEH,oBAAoB;AACpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;;;;GAOG;AAEH,oBAAoB;AACpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAWrE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Licensed under the BSD 3-Clause license.
|
|
5
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
6
|
**/
|
|
7
|
+
import { type DesignSystemTheme } from '@salesforce/metadata-core-sdk/design-system';
|
|
7
8
|
/**
|
|
8
9
|
* Plugin asset reader for the web adapter.
|
|
9
10
|
*
|
|
@@ -29,6 +30,6 @@ export declare class BundledPluginAssetReader {
|
|
|
29
30
|
constructor(bundledRoot: string);
|
|
30
31
|
readPluginIndexHtml(pluginId: string): Promise<string>;
|
|
31
32
|
readPluginAsset(pluginId: string, relativePath: string): Promise<Uint8Array>;
|
|
32
|
-
readDesignSystemCss(): Promise<string>;
|
|
33
|
+
readDesignSystemCss(theme?: DesignSystemTheme): Promise<string>;
|
|
33
34
|
}
|
|
34
35
|
//# sourceMappingURL=BundledPluginAssetReader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundledPluginAssetReader.d.ts","sourceRoot":"","sources":["../../src/pluginAssets/BundledPluginAssetReader.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;
|
|
1
|
+
{"version":3,"file":"BundledPluginAssetReader.d.ts","sourceRoot":"","sources":["../../src/pluginAssets/BundledPluginAssetReader.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAKJ,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6CAA6C,CAAC;AAGrD;;;;;;;;;;;;;GAaG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC;;;;;OAKG;gBACS,WAAW,EAAE,MAAM;IAIzB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAetD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAe5E,mBAAmB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBtE"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import * as fs from 'node:fs/promises';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { REACT_UI_DIR_NAME } from '@salesforce/metadata-core-sdk';
|
|
10
|
+
import { designSystemCssFileName, } from '@salesforce/metadata-core-sdk/design-system';
|
|
10
11
|
import { AssetNotFoundError, PluginNotFoundError } from '../errors/index.js';
|
|
11
12
|
/**
|
|
12
13
|
* Plugin asset reader for the web adapter.
|
|
@@ -50,13 +51,16 @@ export class BundledPluginAssetReader {
|
|
|
50
51
|
throw mapEnoent(err, () => new AssetNotFoundError(pluginId, relativePath));
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
async readDesignSystemCss() {
|
|
54
|
-
|
|
54
|
+
async readDesignSystemCss(theme) {
|
|
55
|
+
// Default (no theme) resolves to platform.css (the dark-fallback sheet);
|
|
56
|
+
// a named theme resolves to its composed sheet (e.g. light-design-system.css).
|
|
57
|
+
const fileName = designSystemCssFileName(theme);
|
|
58
|
+
const cssPath = path.join(this.bundledRoot, 'design-system', fileName);
|
|
55
59
|
try {
|
|
56
60
|
return await fs.readFile(cssPath, 'utf-8');
|
|
57
61
|
}
|
|
58
62
|
catch (err) {
|
|
59
|
-
throw mapEnoent(err, () => new Error(`Platform CSS not found in bundled dist (looked at ${cssPath})`));
|
|
63
|
+
throw mapEnoent(err, () => new Error(`Platform CSS for theme '${theme ?? 'default'}' not found in bundled dist (looked at ${cssPath})`));
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundledPluginAssetReader.js","sourceRoot":"","sources":["../../src/pluginAssets/BundledPluginAssetReader.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,wBAAwB;IAGnC;;;;;OAKG;IACH,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,YAAoB;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"BundledPluginAssetReader.js","sourceRoot":"","sources":["../../src/pluginAssets/BundledPluginAssetReader.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,uBAAuB,GAExB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,wBAAwB;IAGnC;;;;;OAKG;IACH,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,YAAoB;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAyB;QACjD,yEAAyE;QACzE,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CACb,GAAG,EACH,GAAG,EAAE,CACH,IAAI,KAAK,CACP,2BAA2B,KAAK,IAAI,SAAS,0CAA0C,OAAO,GAAG,CAClG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,KAAkB;IACjD,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,IAAI,GAAI,GAAoC,EAAE,IAAI,CAAC;IACzD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QACvD,OAAO,GAAY,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/metadata-visualizer-web",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Web/HTTP SDK for the Salesforce Metadata Visualizer framework. Lets any HTTP server plug a host-supplied IFileSystem into the framework and serve plugin visualizations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"verify": "npm run lint && npm run typecheck && npm run build && npm run test"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@salesforce/metadata-core-sdk": "^1.
|
|
58
|
+
"@salesforce/metadata-core-sdk": "^1.5.0",
|
|
59
59
|
"@salesforce/metadata-visualizer-core": "^1.4.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|