@monbolc/lowcode-renderer-core 2.0.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/es/adapter.js +124 -0
- package/es/adapter.js.map +1 -0
- package/es/base.js +53 -0
- package/es/base.js.map +1 -0
- package/es/index.js +10 -0
- package/es/index.js.map +1 -0
- package/es/renderer.js +74 -0
- package/es/renderer.js.map +1 -0
- package/es/types.js +8 -0
- package/es/types.js.map +1 -0
- package/lib/adapter.d.ts +51 -0
- package/lib/adapter.js +127 -0
- package/lib/adapter.js.map +1 -0
- package/lib/base.d.ts +44 -0
- package/lib/base.js +58 -0
- package/lib/base.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +28 -0
- package/lib/index.js.map +1 -0
- package/lib/renderer.d.ts +49 -0
- package/lib/renderer.js +89 -0
- package/lib/renderer.js.map +1 -0
- package/lib/types.d.ts +74 -0
- package/lib/types.js +9 -0
- package/lib/types.js.map +1 -0
- package/package.json +52 -0
package/es/adapter.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — Adapter
|
|
3
|
+
*
|
|
4
|
+
* Singleton that holds the injected framework runtime. Renderers read
|
|
5
|
+
* from here instead of importing React directly. This keeps
|
|
6
|
+
* renderer-core framework-agnostic — a Vue or Solid adapter could be
|
|
7
|
+
* plugged in by setting a different runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { uid } from '@monbolc/lowcode-utils';
|
|
10
|
+
/**
|
|
11
|
+
* The names of runtime fields that must be present for a runtime to
|
|
12
|
+
* be considered valid. `findDOMNode` is optional because React 19
|
|
13
|
+
* removed it.
|
|
14
|
+
*/
|
|
15
|
+
const REQUIRED_RUNTIME_MODULES = [
|
|
16
|
+
'Component',
|
|
17
|
+
'PureComponent',
|
|
18
|
+
'createElement',
|
|
19
|
+
'createContext',
|
|
20
|
+
'forwardRef',
|
|
21
|
+
];
|
|
22
|
+
class Adapter {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.id = uid('adapter');
|
|
25
|
+
this.renderers = {};
|
|
26
|
+
this.env = 'unknown';
|
|
27
|
+
this.runtime = this.makeStubRuntime();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Install a real runtime. Throws if required modules are missing.
|
|
31
|
+
*/
|
|
32
|
+
setRuntime(runtime) {
|
|
33
|
+
if (!this.isValidRuntime(runtime)) {
|
|
34
|
+
throw new Error(`[adapter:${this.id}] runtime is invalid — missing one of ${REQUIRED_RUNTIME_MODULES.join(', ')}`);
|
|
35
|
+
}
|
|
36
|
+
this.runtime = runtime;
|
|
37
|
+
this.env = 'react'; // best guess; concrete adapter overrides if needed
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reset the runtime to the no-op stub. Useful in tests.
|
|
41
|
+
*/
|
|
42
|
+
initRuntime() {
|
|
43
|
+
this.runtime = this.makeStubRuntime();
|
|
44
|
+
this.env = 'unknown';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check that all required runtime modules are present (and not null).
|
|
48
|
+
*/
|
|
49
|
+
isValidRuntime(runtime) {
|
|
50
|
+
if (!runtime || typeof runtime !== 'object')
|
|
51
|
+
return false;
|
|
52
|
+
for (const key of REQUIRED_RUNTIME_MODULES) {
|
|
53
|
+
if (runtime[key] === undefined || runtime[key] === null) {
|
|
54
|
+
throw new Error(`[adapter] runtime is missing required module "${key}"`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
getRuntime() {
|
|
60
|
+
return this.runtime;
|
|
61
|
+
}
|
|
62
|
+
setEnv(env) {
|
|
63
|
+
this.env = env;
|
|
64
|
+
}
|
|
65
|
+
isReact() {
|
|
66
|
+
return this.env === 'react';
|
|
67
|
+
}
|
|
68
|
+
setRenderers(renderers) {
|
|
69
|
+
this.renderers = renderers;
|
|
70
|
+
}
|
|
71
|
+
getRenderers() {
|
|
72
|
+
return this.renderers;
|
|
73
|
+
}
|
|
74
|
+
setConfigProvider(component) {
|
|
75
|
+
this.configProvider = component;
|
|
76
|
+
}
|
|
77
|
+
getConfigProvider() {
|
|
78
|
+
return this.configProvider;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Walk the configured renderers and find one whose name matches the
|
|
82
|
+
* provided schema's `componentName`. Returns `undefined` if no match.
|
|
83
|
+
*/
|
|
84
|
+
pickRenderer(schema) {
|
|
85
|
+
const name = schema.componentName ?? '';
|
|
86
|
+
// Convention: schema.componentName === 'Page' → PageRenderer; etc.
|
|
87
|
+
if (name === 'Page' || name === 'PageRenderer')
|
|
88
|
+
return this.renderers.PageRenderer;
|
|
89
|
+
if (name === 'Block' || name === 'BlockRenderer')
|
|
90
|
+
return this.renderers.BlockRenderer;
|
|
91
|
+
if (name === 'Addon' || name === 'AddonRenderer')
|
|
92
|
+
return this.renderers.AddonRenderer;
|
|
93
|
+
if (name === 'Temp' || name === 'TempRenderer')
|
|
94
|
+
return this.renderers.TempRenderer;
|
|
95
|
+
if (name === 'Div' || name === 'DivRenderer')
|
|
96
|
+
return this.renderers.DivRenderer;
|
|
97
|
+
return this.renderers.ComponentRenderer;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A no-op runtime for environments that have not yet injected one
|
|
101
|
+
* (e.g. during tests, or before the React adapter loads).
|
|
102
|
+
*/
|
|
103
|
+
makeStubRuntime() {
|
|
104
|
+
return {
|
|
105
|
+
Component: class Stub {
|
|
106
|
+
setState() { }
|
|
107
|
+
forceUpdate() { }
|
|
108
|
+
render() { return null; }
|
|
109
|
+
},
|
|
110
|
+
PureComponent: class Stub {
|
|
111
|
+
setState() { }
|
|
112
|
+
forceUpdate() { }
|
|
113
|
+
render() { return null; }
|
|
114
|
+
},
|
|
115
|
+
createElement: () => null,
|
|
116
|
+
createContext: () => ({ Provider: () => null, Consumer: () => null }),
|
|
117
|
+
forwardRef: (fn) => fn,
|
|
118
|
+
findDOMNode: () => null,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Process-wide singleton. */
|
|
123
|
+
export const adapter = new Adapter();
|
|
124
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/es/base.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — BaseRenderer
|
|
3
|
+
*
|
|
4
|
+
* A thin wrapper around the runtime's `Component` class that handles
|
|
5
|
+
* common renderer concerns: ref capture, error boundary, child
|
|
6
|
+
* dispatch. Renderers built on top of this class remain framework-
|
|
7
|
+
* agnostic because they call `createElement(...)` from the runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { adapter } from './adapter.js';
|
|
10
|
+
/**
|
|
11
|
+
* Base class for all renderers. Holds the runtime-provided Component
|
|
12
|
+
* and provides a `render()` that subclasses override.
|
|
13
|
+
*
|
|
14
|
+
* Concrete renderers (Page, Component, Block, ...) extend this class
|
|
15
|
+
* and use the `createElement` from the runtime — they never import
|
|
16
|
+
* React directly.
|
|
17
|
+
*/
|
|
18
|
+
export class BaseRenderer {
|
|
19
|
+
constructor(props) {
|
|
20
|
+
this.state = {};
|
|
21
|
+
// Lifecycle methods below are typed as plain functions; the runtime
|
|
22
|
+
// wrapper (React 19, etc.) is responsible for invoking them. This
|
|
23
|
+
// keeps the base class framework-agnostic.
|
|
24
|
+
this.setState = () => undefined;
|
|
25
|
+
this.forceUpdate = () => undefined;
|
|
26
|
+
/** Capture a ref to this renderer instance, e.g. for editor selection. */
|
|
27
|
+
this.__getRef = (ref) => {
|
|
28
|
+
this.__ref = ref;
|
|
29
|
+
if (ref && this.props.onCompGetRef) {
|
|
30
|
+
this.props.onCompGetRef(this.props.schema, ref);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
this.props = props;
|
|
34
|
+
}
|
|
35
|
+
/** Subclass-overridable render method. */
|
|
36
|
+
render() {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Factory helper: ensure the adapter's runtime is loaded before any
|
|
42
|
+
* renderer factory is called. Concrete renderers are responsible for
|
|
43
|
+
* using `createElement` to wrap their render output — they should
|
|
44
|
+
* NOT subclass the runtime's Component.
|
|
45
|
+
*/
|
|
46
|
+
export function ensureRuntimeLoaded() {
|
|
47
|
+
const runtime = adapter.getRuntime();
|
|
48
|
+
if (!runtime.Component) {
|
|
49
|
+
throw new Error('[renderer-core] no Component in adapter runtime. ' +
|
|
50
|
+
'Did you forget to call adapter.setRuntime({...})?');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=base.js.map
|
package/es/base.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IAWvB,YAAY,KAAqB;QATjC,UAAK,GAAmB,EAAE,CAAC;QAG3B,oEAAoE;QACpE,kEAAkE;QAClE,2CAA2C;QAC3C,aAAQ,GAAoE,GAAG,EAAE,CAAC,SAAS,CAAC;QAC5F,gBAAW,GAAoC,GAAG,EAAE,CAAC,SAAS,CAAC;QAoB/D,0EAA0E;QAC1E,aAAQ,GAAG,CAAC,GAAY,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QAvBA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,0CAA0C;IAC1C,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;CAkBF;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/es/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — barrel export
|
|
3
|
+
*
|
|
4
|
+
* SapuLowcodeEngine renderer abstractions (L2). Framework-agnostic — the
|
|
5
|
+
* concrete React implementation is in @monbolc/lowcode-react-renderer.
|
|
6
|
+
*/
|
|
7
|
+
export { adapter } from './adapter.js';
|
|
8
|
+
export { BaseRenderer, ensureRuntimeLoaded } from './base.js';
|
|
9
|
+
export { PageRenderer, ComponentRenderer, BlockRenderer, AddonRenderer, TempRenderer, DivRenderer, pageRendererFactory, componentRendererFactory, blockRendererFactory, addonRendererFactory, tempRendererFactory, divRendererFactory, } from './renderer.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
package/es/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/es/renderer.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — renderer factory functions
|
|
3
|
+
*
|
|
4
|
+
* Each factory returns a class that, when instantiated, renders a
|
|
5
|
+
* particular kind of node from the schema:
|
|
6
|
+
* - PageRenderer — root schema
|
|
7
|
+
* - ComponentRenderer — any non-special node
|
|
8
|
+
* - BlockRenderer — block of components
|
|
9
|
+
* - AddonRenderer — read-only "add-on" node (e.g. comments)
|
|
10
|
+
* - TempRenderer — placeholder / loading
|
|
11
|
+
*
|
|
12
|
+
* For now the renderers are minimal stubs that return null. The
|
|
13
|
+
* concrete React-based implementations live in
|
|
14
|
+
* @monbolc/lowcode-react-renderer, which calls `adapter.setRenderers(...)`
|
|
15
|
+
* at boot to install richer versions.
|
|
16
|
+
*/
|
|
17
|
+
import { BaseRenderer } from './base.js';
|
|
18
|
+
/** Renderer for a Page node (root schema). */
|
|
19
|
+
export class PageRenderer extends BaseRenderer {
|
|
20
|
+
render() {
|
|
21
|
+
// Real implementation is plugged in by @monbolc/lowcode-react-renderer.
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Renderer for an arbitrary component. */
|
|
26
|
+
export class ComponentRenderer extends BaseRenderer {
|
|
27
|
+
render() {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Renderer for a Block (a static block of components, no per-component meta). */
|
|
32
|
+
export class BlockRenderer extends BaseRenderer {
|
|
33
|
+
render() {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Renderer for an Addon (a UI overlay, like a comment indicator). */
|
|
38
|
+
export class AddonRenderer extends BaseRenderer {
|
|
39
|
+
render() {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Renderer for a Temp placeholder (used while data is loading). */
|
|
44
|
+
export class TempRenderer extends BaseRenderer {
|
|
45
|
+
render() {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Renderer for an inert Div fallback. */
|
|
50
|
+
export class DivRenderer extends BaseRenderer {
|
|
51
|
+
render() {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Factory form: returns a class. Mostly here for API symmetry. */
|
|
56
|
+
export function pageRendererFactory() {
|
|
57
|
+
return PageRenderer;
|
|
58
|
+
}
|
|
59
|
+
export function componentRendererFactory() {
|
|
60
|
+
return ComponentRenderer;
|
|
61
|
+
}
|
|
62
|
+
export function blockRendererFactory() {
|
|
63
|
+
return BlockRenderer;
|
|
64
|
+
}
|
|
65
|
+
export function addonRendererFactory() {
|
|
66
|
+
return AddonRenderer;
|
|
67
|
+
}
|
|
68
|
+
export function tempRendererFactory() {
|
|
69
|
+
return TempRenderer;
|
|
70
|
+
}
|
|
71
|
+
export function divRendererFactory() {
|
|
72
|
+
return DivRenderer;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,8CAA8C;AAC9C,MAAM,OAAO,YAAa,SAAQ,YAAY;IACnC,MAAM;QACb,wEAAwE;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,2CAA2C;AAC3C,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACxC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,OAAO,aAAc,SAAQ,YAAY;IACpC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,OAAO,aAAc,SAAQ,YAAY;IACpC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,OAAO,YAAa,SAAQ,YAAY;IACnC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,WAAY,SAAQ,YAAY;IAClC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAA2C,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,wBAAwB;IACtC,OAAO,iBAAgD,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,oBAAoB;IAClC,OAAO,aAA4C,CAAC;AACtD,CAAC;AACD,MAAM,UAAU,oBAAoB;IAClC,OAAO,aAA4C,CAAC;AACtD,CAAC;AACD,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAA2C,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,kBAAkB;IAChC,OAAO,WAA0C,CAAC;AACpD,CAAC"}
|
package/es/types.js
ADDED
package/es/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/lib/adapter.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — Adapter
|
|
3
|
+
*
|
|
4
|
+
* Singleton that holds the injected framework runtime. Renderers read
|
|
5
|
+
* from here instead of importing React directly. This keeps
|
|
6
|
+
* renderer-core framework-agnostic — a Vue or Solid adapter could be
|
|
7
|
+
* plugged in by setting a different runtime.
|
|
8
|
+
*/
|
|
9
|
+
import type { IConfigProvider, IRenderComponent, IRendererModules, IRuntime } from './types';
|
|
10
|
+
declare class Adapter {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
runtime: IRuntime;
|
|
13
|
+
renderers: Partial<IRendererModules>;
|
|
14
|
+
configProvider?: IConfigProvider;
|
|
15
|
+
env: 'react' | 'unknown';
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Install a real runtime. Throws if required modules are missing.
|
|
19
|
+
*/
|
|
20
|
+
setRuntime(runtime: IRuntime): void;
|
|
21
|
+
/**
|
|
22
|
+
* Reset the runtime to the no-op stub. Useful in tests.
|
|
23
|
+
*/
|
|
24
|
+
initRuntime(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Check that all required runtime modules are present (and not null).
|
|
27
|
+
*/
|
|
28
|
+
isValidRuntime(runtime: IRuntime): boolean;
|
|
29
|
+
getRuntime(): IRuntime;
|
|
30
|
+
setEnv(env: 'react' | 'unknown'): void;
|
|
31
|
+
isReact(): boolean;
|
|
32
|
+
setRenderers(renderers: Partial<IRendererModules>): void;
|
|
33
|
+
getRenderers(): Partial<IRendererModules>;
|
|
34
|
+
setConfigProvider(component: IConfigProvider): void;
|
|
35
|
+
getConfigProvider(): IConfigProvider | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Walk the configured renderers and find one whose name matches the
|
|
38
|
+
* provided schema's `componentName`. Returns `undefined` if no match.
|
|
39
|
+
*/
|
|
40
|
+
pickRenderer(schema: {
|
|
41
|
+
componentName?: string;
|
|
42
|
+
}): IRenderComponent | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* A no-op runtime for environments that have not yet injected one
|
|
45
|
+
* (e.g. during tests, or before the React adapter loads).
|
|
46
|
+
*/
|
|
47
|
+
private makeStubRuntime;
|
|
48
|
+
}
|
|
49
|
+
/** Process-wide singleton. */
|
|
50
|
+
export declare const adapter: Adapter;
|
|
51
|
+
export {};
|
package/lib/adapter.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @monbolc/lowcode-renderer-core — Adapter
|
|
4
|
+
*
|
|
5
|
+
* Singleton that holds the injected framework runtime. Renderers read
|
|
6
|
+
* from here instead of importing React directly. This keeps
|
|
7
|
+
* renderer-core framework-agnostic — a Vue or Solid adapter could be
|
|
8
|
+
* plugged in by setting a different runtime.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.adapter = void 0;
|
|
12
|
+
const lowcode_utils_1 = require("@monbolc/lowcode-utils");
|
|
13
|
+
/**
|
|
14
|
+
* The names of runtime fields that must be present for a runtime to
|
|
15
|
+
* be considered valid. `findDOMNode` is optional because React 19
|
|
16
|
+
* removed it.
|
|
17
|
+
*/
|
|
18
|
+
const REQUIRED_RUNTIME_MODULES = [
|
|
19
|
+
'Component',
|
|
20
|
+
'PureComponent',
|
|
21
|
+
'createElement',
|
|
22
|
+
'createContext',
|
|
23
|
+
'forwardRef',
|
|
24
|
+
];
|
|
25
|
+
class Adapter {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.id = (0, lowcode_utils_1.uid)('adapter');
|
|
28
|
+
this.renderers = {};
|
|
29
|
+
this.env = 'unknown';
|
|
30
|
+
this.runtime = this.makeStubRuntime();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Install a real runtime. Throws if required modules are missing.
|
|
34
|
+
*/
|
|
35
|
+
setRuntime(runtime) {
|
|
36
|
+
if (!this.isValidRuntime(runtime)) {
|
|
37
|
+
throw new Error(`[adapter:${this.id}] runtime is invalid — missing one of ${REQUIRED_RUNTIME_MODULES.join(', ')}`);
|
|
38
|
+
}
|
|
39
|
+
this.runtime = runtime;
|
|
40
|
+
this.env = 'react'; // best guess; concrete adapter overrides if needed
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Reset the runtime to the no-op stub. Useful in tests.
|
|
44
|
+
*/
|
|
45
|
+
initRuntime() {
|
|
46
|
+
this.runtime = this.makeStubRuntime();
|
|
47
|
+
this.env = 'unknown';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check that all required runtime modules are present (and not null).
|
|
51
|
+
*/
|
|
52
|
+
isValidRuntime(runtime) {
|
|
53
|
+
if (!runtime || typeof runtime !== 'object')
|
|
54
|
+
return false;
|
|
55
|
+
for (const key of REQUIRED_RUNTIME_MODULES) {
|
|
56
|
+
if (runtime[key] === undefined || runtime[key] === null) {
|
|
57
|
+
throw new Error(`[adapter] runtime is missing required module "${key}"`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
getRuntime() {
|
|
63
|
+
return this.runtime;
|
|
64
|
+
}
|
|
65
|
+
setEnv(env) {
|
|
66
|
+
this.env = env;
|
|
67
|
+
}
|
|
68
|
+
isReact() {
|
|
69
|
+
return this.env === 'react';
|
|
70
|
+
}
|
|
71
|
+
setRenderers(renderers) {
|
|
72
|
+
this.renderers = renderers;
|
|
73
|
+
}
|
|
74
|
+
getRenderers() {
|
|
75
|
+
return this.renderers;
|
|
76
|
+
}
|
|
77
|
+
setConfigProvider(component) {
|
|
78
|
+
this.configProvider = component;
|
|
79
|
+
}
|
|
80
|
+
getConfigProvider() {
|
|
81
|
+
return this.configProvider;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Walk the configured renderers and find one whose name matches the
|
|
85
|
+
* provided schema's `componentName`. Returns `undefined` if no match.
|
|
86
|
+
*/
|
|
87
|
+
pickRenderer(schema) {
|
|
88
|
+
const name = schema.componentName ?? '';
|
|
89
|
+
// Convention: schema.componentName === 'Page' → PageRenderer; etc.
|
|
90
|
+
if (name === 'Page' || name === 'PageRenderer')
|
|
91
|
+
return this.renderers.PageRenderer;
|
|
92
|
+
if (name === 'Block' || name === 'BlockRenderer')
|
|
93
|
+
return this.renderers.BlockRenderer;
|
|
94
|
+
if (name === 'Addon' || name === 'AddonRenderer')
|
|
95
|
+
return this.renderers.AddonRenderer;
|
|
96
|
+
if (name === 'Temp' || name === 'TempRenderer')
|
|
97
|
+
return this.renderers.TempRenderer;
|
|
98
|
+
if (name === 'Div' || name === 'DivRenderer')
|
|
99
|
+
return this.renderers.DivRenderer;
|
|
100
|
+
return this.renderers.ComponentRenderer;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A no-op runtime for environments that have not yet injected one
|
|
104
|
+
* (e.g. during tests, or before the React adapter loads).
|
|
105
|
+
*/
|
|
106
|
+
makeStubRuntime() {
|
|
107
|
+
return {
|
|
108
|
+
Component: class Stub {
|
|
109
|
+
setState() { }
|
|
110
|
+
forceUpdate() { }
|
|
111
|
+
render() { return null; }
|
|
112
|
+
},
|
|
113
|
+
PureComponent: class Stub {
|
|
114
|
+
setState() { }
|
|
115
|
+
forceUpdate() { }
|
|
116
|
+
render() { return null; }
|
|
117
|
+
},
|
|
118
|
+
createElement: () => null,
|
|
119
|
+
createContext: () => ({ Provider: () => null, Consumer: () => null }),
|
|
120
|
+
forwardRef: (fn) => fn,
|
|
121
|
+
findDOMNode: () => null,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Process-wide singleton. */
|
|
126
|
+
exports.adapter = new Adapter();
|
|
127
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/base.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — BaseRenderer
|
|
3
|
+
*
|
|
4
|
+
* A thin wrapper around the runtime's `Component` class that handles
|
|
5
|
+
* common renderer concerns: ref capture, error boundary, child
|
|
6
|
+
* dispatch. Renderers built on top of this class remain framework-
|
|
7
|
+
* agnostic because they call `createElement(...)` from the runtime.
|
|
8
|
+
*/
|
|
9
|
+
import type { IRendererProps, IRendererState } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Base class for all renderers. Holds the runtime-provided Component
|
|
12
|
+
* and provides a `render()` that subclasses override.
|
|
13
|
+
*
|
|
14
|
+
* Concrete renderers (Page, Component, Block, ...) extend this class
|
|
15
|
+
* and use the `createElement` from the runtime — they never import
|
|
16
|
+
* React directly.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BaseRenderer {
|
|
19
|
+
props: IRendererProps;
|
|
20
|
+
state: IRendererState;
|
|
21
|
+
__ref: unknown;
|
|
22
|
+
setState: (state: Partial<IRendererState>, callback?: () => void) => void;
|
|
23
|
+
forceUpdate: (callback?: () => void) => void;
|
|
24
|
+
constructor(props: IRendererProps);
|
|
25
|
+
/** Subclass-overridable render method. */
|
|
26
|
+
render(): unknown;
|
|
27
|
+
/** Called when the renderer is about to mount. */
|
|
28
|
+
componentDidMount?(): void | Promise<void>;
|
|
29
|
+
/** Called after every re-render. */
|
|
30
|
+
componentDidUpdate?(prevProps: IRendererProps): void | Promise<void>;
|
|
31
|
+
/** Called before unmount. */
|
|
32
|
+
componentWillUnmount?(): void | Promise<void>;
|
|
33
|
+
/** Error boundary hook. */
|
|
34
|
+
componentDidCatch?(error: unknown): void;
|
|
35
|
+
/** Capture a ref to this renderer instance, e.g. for editor selection. */
|
|
36
|
+
__getRef: (ref: unknown) => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Factory helper: ensure the adapter's runtime is loaded before any
|
|
40
|
+
* renderer factory is called. Concrete renderers are responsible for
|
|
41
|
+
* using `createElement` to wrap their render output — they should
|
|
42
|
+
* NOT subclass the runtime's Component.
|
|
43
|
+
*/
|
|
44
|
+
export declare function ensureRuntimeLoaded(): void;
|
package/lib/base.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @monbolc/lowcode-renderer-core — BaseRenderer
|
|
4
|
+
*
|
|
5
|
+
* A thin wrapper around the runtime's `Component` class that handles
|
|
6
|
+
* common renderer concerns: ref capture, error boundary, child
|
|
7
|
+
* dispatch. Renderers built on top of this class remain framework-
|
|
8
|
+
* agnostic because they call `createElement(...)` from the runtime.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BaseRenderer = void 0;
|
|
12
|
+
exports.ensureRuntimeLoaded = ensureRuntimeLoaded;
|
|
13
|
+
const adapter_1 = require("./adapter");
|
|
14
|
+
/**
|
|
15
|
+
* Base class for all renderers. Holds the runtime-provided Component
|
|
16
|
+
* and provides a `render()` that subclasses override.
|
|
17
|
+
*
|
|
18
|
+
* Concrete renderers (Page, Component, Block, ...) extend this class
|
|
19
|
+
* and use the `createElement` from the runtime — they never import
|
|
20
|
+
* React directly.
|
|
21
|
+
*/
|
|
22
|
+
class BaseRenderer {
|
|
23
|
+
constructor(props) {
|
|
24
|
+
this.state = {};
|
|
25
|
+
// Lifecycle methods below are typed as plain functions; the runtime
|
|
26
|
+
// wrapper (React 19, etc.) is responsible for invoking them. This
|
|
27
|
+
// keeps the base class framework-agnostic.
|
|
28
|
+
this.setState = () => undefined;
|
|
29
|
+
this.forceUpdate = () => undefined;
|
|
30
|
+
/** Capture a ref to this renderer instance, e.g. for editor selection. */
|
|
31
|
+
this.__getRef = (ref) => {
|
|
32
|
+
this.__ref = ref;
|
|
33
|
+
if (ref && this.props.onCompGetRef) {
|
|
34
|
+
this.props.onCompGetRef(this.props.schema, ref);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
this.props = props;
|
|
38
|
+
}
|
|
39
|
+
/** Subclass-overridable render method. */
|
|
40
|
+
render() {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.BaseRenderer = BaseRenderer;
|
|
45
|
+
/**
|
|
46
|
+
* Factory helper: ensure the adapter's runtime is loaded before any
|
|
47
|
+
* renderer factory is called. Concrete renderers are responsible for
|
|
48
|
+
* using `createElement` to wrap their render output — they should
|
|
49
|
+
* NOT subclass the runtime's Component.
|
|
50
|
+
*/
|
|
51
|
+
function ensureRuntimeLoaded() {
|
|
52
|
+
const runtime = adapter_1.adapter.getRuntime();
|
|
53
|
+
if (!runtime.Component) {
|
|
54
|
+
throw new Error('[renderer-core] no Component in adapter runtime. ' +
|
|
55
|
+
'Did you forget to call adapter.setRuntime({...})?');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=base.js.map
|
package/lib/base.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA6DH,kDAQC;AAnED,uCAAoC;AAOpC;;;;;;;GAOG;AACH,MAAa,YAAY;IAWvB,YAAY,KAAqB;QATjC,UAAK,GAAmB,EAAE,CAAC;QAG3B,oEAAoE;QACpE,kEAAkE;QAClE,2CAA2C;QAC3C,aAAQ,GAAoE,GAAG,EAAE,CAAC,SAAS,CAAC;QAC5F,gBAAW,GAAoC,GAAG,EAAE,CAAC,SAAS,CAAC;QAoB/D,0EAA0E;QAC1E,aAAQ,GAAG,CAAC,GAAY,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QAvBA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,0CAA0C;IAC1C,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;CAkBF;AApCD,oCAoCC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB;IACjC,MAAM,OAAO,GAAG,iBAAO,CAAC,UAAU,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — barrel export
|
|
3
|
+
*
|
|
4
|
+
* SapuLowcodeEngine renderer abstractions (L2). Framework-agnostic — the
|
|
5
|
+
* concrete React implementation is in @monbolc/lowcode-react-renderer.
|
|
6
|
+
*/
|
|
7
|
+
export { adapter } from './adapter';
|
|
8
|
+
export { BaseRenderer, ensureRuntimeLoaded } from './base';
|
|
9
|
+
export { PageRenderer, ComponentRenderer, BlockRenderer, AddonRenderer, TempRenderer, DivRenderer, pageRendererFactory, componentRendererFactory, blockRendererFactory, addonRendererFactory, tempRendererFactory, divRendererFactory, } from './renderer';
|
|
10
|
+
export type { IConfigProvider, IRenderComponent, IRendererModules, IRendererProps, IRendererState, IRuntime, } from './types';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @monbolc/lowcode-renderer-core — barrel export
|
|
4
|
+
*
|
|
5
|
+
* SapuLowcodeEngine renderer abstractions (L2). Framework-agnostic — the
|
|
6
|
+
* concrete React implementation is in @monbolc/lowcode-react-renderer.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.divRendererFactory = exports.tempRendererFactory = exports.addonRendererFactory = exports.blockRendererFactory = exports.componentRendererFactory = exports.pageRendererFactory = exports.DivRenderer = exports.TempRenderer = exports.AddonRenderer = exports.BlockRenderer = exports.ComponentRenderer = exports.PageRenderer = exports.ensureRuntimeLoaded = exports.BaseRenderer = exports.adapter = void 0;
|
|
10
|
+
var adapter_1 = require("./adapter");
|
|
11
|
+
Object.defineProperty(exports, "adapter", { enumerable: true, get: function () { return adapter_1.adapter; } });
|
|
12
|
+
var base_1 = require("./base");
|
|
13
|
+
Object.defineProperty(exports, "BaseRenderer", { enumerable: true, get: function () { return base_1.BaseRenderer; } });
|
|
14
|
+
Object.defineProperty(exports, "ensureRuntimeLoaded", { enumerable: true, get: function () { return base_1.ensureRuntimeLoaded; } });
|
|
15
|
+
var renderer_1 = require("./renderer");
|
|
16
|
+
Object.defineProperty(exports, "PageRenderer", { enumerable: true, get: function () { return renderer_1.PageRenderer; } });
|
|
17
|
+
Object.defineProperty(exports, "ComponentRenderer", { enumerable: true, get: function () { return renderer_1.ComponentRenderer; } });
|
|
18
|
+
Object.defineProperty(exports, "BlockRenderer", { enumerable: true, get: function () { return renderer_1.BlockRenderer; } });
|
|
19
|
+
Object.defineProperty(exports, "AddonRenderer", { enumerable: true, get: function () { return renderer_1.AddonRenderer; } });
|
|
20
|
+
Object.defineProperty(exports, "TempRenderer", { enumerable: true, get: function () { return renderer_1.TempRenderer; } });
|
|
21
|
+
Object.defineProperty(exports, "DivRenderer", { enumerable: true, get: function () { return renderer_1.DivRenderer; } });
|
|
22
|
+
Object.defineProperty(exports, "pageRendererFactory", { enumerable: true, get: function () { return renderer_1.pageRendererFactory; } });
|
|
23
|
+
Object.defineProperty(exports, "componentRendererFactory", { enumerable: true, get: function () { return renderer_1.componentRendererFactory; } });
|
|
24
|
+
Object.defineProperty(exports, "blockRendererFactory", { enumerable: true, get: function () { return renderer_1.blockRendererFactory; } });
|
|
25
|
+
Object.defineProperty(exports, "addonRendererFactory", { enumerable: true, get: function () { return renderer_1.addonRendererFactory; } });
|
|
26
|
+
Object.defineProperty(exports, "tempRendererFactory", { enumerable: true, get: function () { return renderer_1.tempRendererFactory; } });
|
|
27
|
+
Object.defineProperty(exports, "divRendererFactory", { enumerable: true, get: function () { return renderer_1.divRendererFactory; } });
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+BAA2D;AAAlD,oGAAA,YAAY,OAAA;AAAE,2GAAA,mBAAmB,OAAA;AAC1C,uCAaoB;AAZlB,wGAAA,YAAY,OAAA;AACZ,6GAAA,iBAAiB,OAAA;AACjB,yGAAA,aAAa,OAAA;AACb,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,+GAAA,mBAAmB,OAAA;AACnB,oHAAA,wBAAwB,OAAA;AACxB,gHAAA,oBAAoB,OAAA;AACpB,gHAAA,oBAAoB,OAAA;AACpB,+GAAA,mBAAmB,OAAA;AACnB,8GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — renderer factory functions
|
|
3
|
+
*
|
|
4
|
+
* Each factory returns a class that, when instantiated, renders a
|
|
5
|
+
* particular kind of node from the schema:
|
|
6
|
+
* - PageRenderer — root schema
|
|
7
|
+
* - ComponentRenderer — any non-special node
|
|
8
|
+
* - BlockRenderer — block of components
|
|
9
|
+
* - AddonRenderer — read-only "add-on" node (e.g. comments)
|
|
10
|
+
* - TempRenderer — placeholder / loading
|
|
11
|
+
*
|
|
12
|
+
* For now the renderers are minimal stubs that return null. The
|
|
13
|
+
* concrete React-based implementations live in
|
|
14
|
+
* @monbolc/lowcode-react-renderer, which calls `adapter.setRenderers(...)`
|
|
15
|
+
* at boot to install richer versions.
|
|
16
|
+
*/
|
|
17
|
+
import { BaseRenderer } from './base';
|
|
18
|
+
import type { IRenderComponent } from './types';
|
|
19
|
+
/** Renderer for a Page node (root schema). */
|
|
20
|
+
export declare class PageRenderer extends BaseRenderer {
|
|
21
|
+
render(): null;
|
|
22
|
+
}
|
|
23
|
+
/** Renderer for an arbitrary component. */
|
|
24
|
+
export declare class ComponentRenderer extends BaseRenderer {
|
|
25
|
+
render(): null;
|
|
26
|
+
}
|
|
27
|
+
/** Renderer for a Block (a static block of components, no per-component meta). */
|
|
28
|
+
export declare class BlockRenderer extends BaseRenderer {
|
|
29
|
+
render(): null;
|
|
30
|
+
}
|
|
31
|
+
/** Renderer for an Addon (a UI overlay, like a comment indicator). */
|
|
32
|
+
export declare class AddonRenderer extends BaseRenderer {
|
|
33
|
+
render(): null;
|
|
34
|
+
}
|
|
35
|
+
/** Renderer for a Temp placeholder (used while data is loading). */
|
|
36
|
+
export declare class TempRenderer extends BaseRenderer {
|
|
37
|
+
render(): null;
|
|
38
|
+
}
|
|
39
|
+
/** Renderer for an inert Div fallback. */
|
|
40
|
+
export declare class DivRenderer extends BaseRenderer {
|
|
41
|
+
render(): null;
|
|
42
|
+
}
|
|
43
|
+
/** Factory form: returns a class. Mostly here for API symmetry. */
|
|
44
|
+
export declare function pageRendererFactory(): IRenderComponent;
|
|
45
|
+
export declare function componentRendererFactory(): IRenderComponent;
|
|
46
|
+
export declare function blockRendererFactory(): IRenderComponent;
|
|
47
|
+
export declare function addonRendererFactory(): IRenderComponent;
|
|
48
|
+
export declare function tempRendererFactory(): IRenderComponent;
|
|
49
|
+
export declare function divRendererFactory(): IRenderComponent;
|
package/lib/renderer.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @monbolc/lowcode-renderer-core — renderer factory functions
|
|
4
|
+
*
|
|
5
|
+
* Each factory returns a class that, when instantiated, renders a
|
|
6
|
+
* particular kind of node from the schema:
|
|
7
|
+
* - PageRenderer — root schema
|
|
8
|
+
* - ComponentRenderer — any non-special node
|
|
9
|
+
* - BlockRenderer — block of components
|
|
10
|
+
* - AddonRenderer — read-only "add-on" node (e.g. comments)
|
|
11
|
+
* - TempRenderer — placeholder / loading
|
|
12
|
+
*
|
|
13
|
+
* For now the renderers are minimal stubs that return null. The
|
|
14
|
+
* concrete React-based implementations live in
|
|
15
|
+
* @monbolc/lowcode-react-renderer, which calls `adapter.setRenderers(...)`
|
|
16
|
+
* at boot to install richer versions.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.DivRenderer = exports.TempRenderer = exports.AddonRenderer = exports.BlockRenderer = exports.ComponentRenderer = exports.PageRenderer = void 0;
|
|
20
|
+
exports.pageRendererFactory = pageRendererFactory;
|
|
21
|
+
exports.componentRendererFactory = componentRendererFactory;
|
|
22
|
+
exports.blockRendererFactory = blockRendererFactory;
|
|
23
|
+
exports.addonRendererFactory = addonRendererFactory;
|
|
24
|
+
exports.tempRendererFactory = tempRendererFactory;
|
|
25
|
+
exports.divRendererFactory = divRendererFactory;
|
|
26
|
+
const base_1 = require("./base");
|
|
27
|
+
/** Renderer for a Page node (root schema). */
|
|
28
|
+
class PageRenderer extends base_1.BaseRenderer {
|
|
29
|
+
render() {
|
|
30
|
+
// Real implementation is plugged in by @monbolc/lowcode-react-renderer.
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.PageRenderer = PageRenderer;
|
|
35
|
+
/** Renderer for an arbitrary component. */
|
|
36
|
+
class ComponentRenderer extends base_1.BaseRenderer {
|
|
37
|
+
render() {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ComponentRenderer = ComponentRenderer;
|
|
42
|
+
/** Renderer for a Block (a static block of components, no per-component meta). */
|
|
43
|
+
class BlockRenderer extends base_1.BaseRenderer {
|
|
44
|
+
render() {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.BlockRenderer = BlockRenderer;
|
|
49
|
+
/** Renderer for an Addon (a UI overlay, like a comment indicator). */
|
|
50
|
+
class AddonRenderer extends base_1.BaseRenderer {
|
|
51
|
+
render() {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.AddonRenderer = AddonRenderer;
|
|
56
|
+
/** Renderer for a Temp placeholder (used while data is loading). */
|
|
57
|
+
class TempRenderer extends base_1.BaseRenderer {
|
|
58
|
+
render() {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.TempRenderer = TempRenderer;
|
|
63
|
+
/** Renderer for an inert Div fallback. */
|
|
64
|
+
class DivRenderer extends base_1.BaseRenderer {
|
|
65
|
+
render() {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.DivRenderer = DivRenderer;
|
|
70
|
+
/** Factory form: returns a class. Mostly here for API symmetry. */
|
|
71
|
+
function pageRendererFactory() {
|
|
72
|
+
return PageRenderer;
|
|
73
|
+
}
|
|
74
|
+
function componentRendererFactory() {
|
|
75
|
+
return ComponentRenderer;
|
|
76
|
+
}
|
|
77
|
+
function blockRendererFactory() {
|
|
78
|
+
return BlockRenderer;
|
|
79
|
+
}
|
|
80
|
+
function addonRendererFactory() {
|
|
81
|
+
return AddonRenderer;
|
|
82
|
+
}
|
|
83
|
+
function tempRendererFactory() {
|
|
84
|
+
return TempRenderer;
|
|
85
|
+
}
|
|
86
|
+
function divRendererFactory() {
|
|
87
|
+
return DivRenderer;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAiDH,kDAEC;AACD,4DAEC;AACD,oDAEC;AACD,oDAEC;AACD,kDAEC;AACD,gDAEC;AAhED,iCAAsC;AAGtC,8CAA8C;AAC9C,MAAa,YAAa,SAAQ,mBAAY;IACnC,MAAM;QACb,wEAAwE;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AALD,oCAKC;AAED,2CAA2C;AAC3C,MAAa,iBAAkB,SAAQ,mBAAY;IACxC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,8CAIC;AAED,kFAAkF;AAClF,MAAa,aAAc,SAAQ,mBAAY;IACpC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,sCAIC;AAED,sEAAsE;AACtE,MAAa,aAAc,SAAQ,mBAAY;IACpC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,sCAIC;AAED,oEAAoE;AACpE,MAAa,YAAa,SAAQ,mBAAY;IACnC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,oCAIC;AAED,0CAA0C;AAC1C,MAAa,WAAY,SAAQ,mBAAY;IAClC,MAAM;QACb,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,kCAIC;AAED,mEAAmE;AACnE,SAAgB,mBAAmB;IACjC,OAAO,YAA2C,CAAC;AACrD,CAAC;AACD,SAAgB,wBAAwB;IACtC,OAAO,iBAAgD,CAAC;AAC1D,CAAC;AACD,SAAgB,oBAAoB;IAClC,OAAO,aAA4C,CAAC;AACtD,CAAC;AACD,SAAgB,oBAAoB;IAClC,OAAO,aAA4C,CAAC;AACtD,CAAC;AACD,SAAgB,mBAAmB;IACjC,OAAO,YAA2C,CAAC;AACrD,CAAC;AACD,SAAgB,kBAAkB;IAChC,OAAO,WAA0C,CAAC;AACpD,CAAC"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @monbolc/lowcode-renderer-core — public types
|
|
3
|
+
*
|
|
4
|
+
* Framework-agnostic renderer surface. The actual React (or other
|
|
5
|
+
* framework) primitives are injected at runtime via `adapter.setRuntime()`.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The slice of React (or any compatible framework) that the renderer
|
|
9
|
+
* needs. The adapter is initialized with this at app boot.
|
|
10
|
+
*
|
|
11
|
+
* The fields are typed as `any` to keep the renderer-core source
|
|
12
|
+
* framework-agnostic. Concrete type narrowing happens in
|
|
13
|
+
* @monbolc/lowcode-react-renderer.
|
|
14
|
+
*/
|
|
15
|
+
export interface IRuntime {
|
|
16
|
+
/** Base class component. Must support `setState`, `forceUpdate`, lifecycle. */
|
|
17
|
+
Component: any;
|
|
18
|
+
/** Like Component but does shallow-prop / shallow-state equality. */
|
|
19
|
+
PureComponent: any;
|
|
20
|
+
/** Function form: `createElement(type, props, ...children)`. */
|
|
21
|
+
createElement: any;
|
|
22
|
+
/** Creates a Context object with Provider / Consumer. */
|
|
23
|
+
createContext: any;
|
|
24
|
+
/** Forwards refs to inner components. */
|
|
25
|
+
forwardRef: any;
|
|
26
|
+
/**
|
|
27
|
+
* Optional — React 19 has removed `findDOMNode`. Provided as a stub
|
|
28
|
+
* by the React adapter for back-compat; returns `null` always.
|
|
29
|
+
*/
|
|
30
|
+
findDOMNode?: (instance: any) => any;
|
|
31
|
+
}
|
|
32
|
+
/** A renderer constructor. Returned by the factory functions. */
|
|
33
|
+
export type IRenderComponent = new (props: IRendererProps) => any;
|
|
34
|
+
/** What gets passed to every renderer component as props. */
|
|
35
|
+
export interface IRendererProps {
|
|
36
|
+
/** Per-render helper object (logger, i18n, etc). Optional. */
|
|
37
|
+
appHelper?: unknown;
|
|
38
|
+
/** Component implementations, keyed by `IPublicTypeNodeSchema.componentName`. */
|
|
39
|
+
components?: Record<string, unknown>;
|
|
40
|
+
/** Design mode: 'design' | 'live' | 'preview' — drives error boundaries etc. */
|
|
41
|
+
designMode?: 'design' | 'live' | 'preview' | string;
|
|
42
|
+
/** If true, the renderer skips rendering children. */
|
|
43
|
+
suspended?: boolean;
|
|
44
|
+
/** The schema to render. */
|
|
45
|
+
schema: any;
|
|
46
|
+
/** Called when a child renderer grabs a ref to its instance. */
|
|
47
|
+
onCompGetRef?: (schema: any, ref: unknown) => void;
|
|
48
|
+
/** Called when a child renderer provides a context value. */
|
|
49
|
+
onCompGetCtx?: (schema: any, ctx: unknown) => void;
|
|
50
|
+
/** Force the renderer to render even if props suggest otherwise. */
|
|
51
|
+
thisRequiredInJSE?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/** A bag of named renderer factories. Set via `adapter.setRenderers(...)`. */
|
|
54
|
+
export interface IRendererModules {
|
|
55
|
+
PageRenderer: IRenderComponent;
|
|
56
|
+
ComponentRenderer: IRenderComponent;
|
|
57
|
+
BlockRenderer: IRenderComponent;
|
|
58
|
+
AddonRenderer: IRenderComponent;
|
|
59
|
+
TempRenderer: IRenderComponent;
|
|
60
|
+
DivRenderer?: IRenderComponent;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Optional theme / locale / i18n provider component. The runtime may
|
|
64
|
+
* pass a React component (or any framework's component) that wraps the
|
|
65
|
+
* renderer tree.
|
|
66
|
+
*/
|
|
67
|
+
export type IConfigProvider = unknown;
|
|
68
|
+
/** Internal state shape. Kept loose on purpose — renderers are free
|
|
69
|
+
* to extend it. */
|
|
70
|
+
export interface IRendererState {
|
|
71
|
+
/** Last error caught by the renderer's error boundary, if any. */
|
|
72
|
+
engineRenderError?: boolean;
|
|
73
|
+
error?: unknown;
|
|
74
|
+
}
|
package/lib/types.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @monbolc/lowcode-renderer-core — public types
|
|
4
|
+
*
|
|
5
|
+
* Framework-agnostic renderer surface. The actual React (or other
|
|
6
|
+
* framework) primitives are injected at runtime via `adapter.setRuntime()`.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@monbolc/lowcode-renderer-core",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Framework-agnostic renderer core with React-runtime adapter for SapuLowcodeEngine (L2)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"module": "es/index.js",
|
|
8
|
+
"types": "lib/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./lib/index.d.ts",
|
|
12
|
+
"import": "./es/index.js",
|
|
13
|
+
"require": "./lib/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": ["lib", "es"],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -p tsconfig.json",
|
|
19
|
+
"build:es": "tsc -p tsconfig.esm.json && node ../../scripts/add-js-extensions.mjs es",
|
|
20
|
+
"clean": "rimraf lib es"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@monbolc/lowcode-types": "^2.0.0",
|
|
24
|
+
"@monbolc/lowcode-utils": "^2.0.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"react": "^19.2.0",
|
|
28
|
+
"react-dom": "^19.2.0"
|
|
29
|
+
},
|
|
30
|
+
"peerDependenciesMeta": {
|
|
31
|
+
"react": { "optional": true },
|
|
32
|
+
"react-dom": { "optional": true }
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/react": "^19.0.0",
|
|
36
|
+
"@types/react-dom": "^19.0.0",
|
|
37
|
+
"react": "^19.2.7",
|
|
38
|
+
"react-dom": "^19.2.7",
|
|
39
|
+
"rimraf": "^5.0.5",
|
|
40
|
+
"typescript": "^5.4.5"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public",
|
|
44
|
+
"registry": "https://registry.npmjs.org/"
|
|
45
|
+
},
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git@github.com:monbolc/sapu-lowcode-engine.git",
|
|
49
|
+
"directory": "packages/renderer-core"
|
|
50
|
+
},
|
|
51
|
+
"keywords": ["lowcode", "engine", "renderer", "react"]
|
|
52
|
+
}
|