@gorilla-engine-sdk/gorilla-engine-react 1.6.1
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/LICENSE.md +64 -0
- package/README.md +345 -0
- package/dist/ComponentFactory.d.ts +180 -0
- package/dist/ComponentFactory.js +118 -0
- package/dist/GEReact.d.ts +53 -0
- package/dist/GEReact.js +237 -0
- package/dist/Root.d.ts +15 -0
- package/dist/Root.js +52 -0
- package/dist/hooks/useInstrument.d.ts +27 -0
- package/dist/hooks/useInstrument.js +109 -0
- package/dist/hooks/useInstrumentProperty.d.ts +47 -0
- package/dist/hooks/useInstrumentProperty.js +113 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +67 -0
- package/dist/instance.d.ts +18 -0
- package/dist/instance.js +16 -0
- package/dist/nativeWrappers/GEAmpEnv.d.ts +9 -0
- package/dist/nativeWrappers/GEAmpEnv.js +12 -0
- package/dist/nativeWrappers/GEBarStepEditor.d.ts +12 -0
- package/dist/nativeWrappers/GEBarStepEditor.js +16 -0
- package/dist/nativeWrappers/GEButton.d.ts +17 -0
- package/dist/nativeWrappers/GEButton.js +21 -0
- package/dist/nativeWrappers/GEComboBox.d.ts +18 -0
- package/dist/nativeWrappers/GEComboBox.js +16 -0
- package/dist/nativeWrappers/GECurve.d.ts +9 -0
- package/dist/nativeWrappers/GECurve.js +12 -0
- package/dist/nativeWrappers/GEDragContainer.d.ts +24 -0
- package/dist/nativeWrappers/GEDragContainer.js +22 -0
- package/dist/nativeWrappers/GEDragTarget.d.ts +20 -0
- package/dist/nativeWrappers/GEDragTarget.js +20 -0
- package/dist/nativeWrappers/GEDropZone.d.ts +22 -0
- package/dist/nativeWrappers/GEDropZone.js +20 -0
- package/dist/nativeWrappers/GEKnob.d.ts +18 -0
- package/dist/nativeWrappers/GEKnob.js +19 -0
- package/dist/nativeWrappers/GELabel.d.ts +16 -0
- package/dist/nativeWrappers/GELabel.js +20 -0
- package/dist/nativeWrappers/GELevelMeter.d.ts +8 -0
- package/dist/nativeWrappers/GELevelMeter.js +12 -0
- package/dist/nativeWrappers/GEListBox.d.ts +17 -0
- package/dist/nativeWrappers/GEListBox.js +15 -0
- package/dist/nativeWrappers/GELottieAnimation.d.ts +16 -0
- package/dist/nativeWrappers/GELottieAnimation.js +17 -0
- package/dist/nativeWrappers/GEMappingEditor.d.ts +24 -0
- package/dist/nativeWrappers/GEMappingEditor.js +22 -0
- package/dist/nativeWrappers/GEMidiKeyboard.d.ts +8 -0
- package/dist/nativeWrappers/GEMidiKeyboard.js +12 -0
- package/dist/nativeWrappers/GEPad.d.ts +15 -0
- package/dist/nativeWrappers/GEPad.js +16 -0
- package/dist/nativeWrappers/GERubberband.d.ts +16 -0
- package/dist/nativeWrappers/GERubberband.js +17 -0
- package/dist/nativeWrappers/GEScrollView.d.ts +26 -0
- package/dist/nativeWrappers/GEScrollView.js +21 -0
- package/dist/nativeWrappers/GESliceEditor.d.ts +30 -0
- package/dist/nativeWrappers/GESliceEditor.js +23 -0
- package/dist/nativeWrappers/GESlider.d.ts +20 -0
- package/dist/nativeWrappers/GESlider.js +20 -0
- package/dist/nativeWrappers/GEStepEditor.d.ts +12 -0
- package/dist/nativeWrappers/GEStepEditor.js +16 -0
- package/dist/nativeWrappers/GETagBrowser.d.ts +15 -0
- package/dist/nativeWrappers/GETagBrowser.js +16 -0
- package/dist/nativeWrappers/GETagEditor.d.ts +15 -0
- package/dist/nativeWrappers/GETagEditor.js +16 -0
- package/dist/nativeWrappers/GETextBox.d.ts +22 -0
- package/dist/nativeWrappers/GETextBox.js +20 -0
- package/dist/nativeWrappers/GEToggle.d.ts +18 -0
- package/dist/nativeWrappers/GEToggle.js +16 -0
- package/dist/nativeWrappers/GEWaveform.d.ts +17 -0
- package/dist/nativeWrappers/GEWaveform.js +17 -0
- package/dist/nativeWrappers/GEXYPad.d.ts +16 -0
- package/dist/nativeWrappers/GEXYPad.js +17 -0
- package/dist/nativeWrappers/common/GEComponent.d.ts +104 -0
- package/dist/nativeWrappers/common/GEComponent.js +226 -0
- package/dist/nativeWrappers/common/ReactElementProps.d.ts +20 -0
- package/dist/nativeWrappers/common/ReactElementProps.js +3 -0
- package/dist/nativeWrappers/common/clickableHandlerMappings.d.ts +40 -0
- package/dist/nativeWrappers/common/clickableHandlerMappings.js +21 -0
- package/dist/nativeWrappers/common/keyableHandlerMappings.d.ts +16 -0
- package/dist/nativeWrappers/common/keyableHandlerMappings.js +13 -0
- package/package.json +59 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { GEComponent } from './common/GEComponent';
|
|
2
|
+
import { ClickableHandlers } from './common/clickableHandlerMappings';
|
|
3
|
+
import { ReactElementProps } from './common/ReactElementProps';
|
|
4
|
+
/**
|
|
5
|
+
* Props for {@link GEToggle}.
|
|
6
|
+
* Combines native ToggleProps with React element props, click handlers, and a value change callback.
|
|
7
|
+
* @property onChange - Fires when the toggle value changes (maps to native `value` event).
|
|
8
|
+
*/
|
|
9
|
+
export declare type GEToggleProps = GorillaEngine.UI.ToggleProps & ReactElementProps & ClickableHandlers & {
|
|
10
|
+
onChange?: (value: boolean) => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Wraps the native `GorillaEngine.UI.Toggle` component.
|
|
14
|
+
* Maps `onChange` to the native `value` event. Supports clickable handler mappings.
|
|
15
|
+
*/
|
|
16
|
+
export declare class GEToggle extends GEComponent<GorillaEngine.UI.Toggle> {
|
|
17
|
+
constructor(props: GEToggleProps);
|
|
18
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GEToggle = void 0;
|
|
4
|
+
const GEComponent_1 = require("./common/GEComponent");
|
|
5
|
+
const clickableHandlerMappings_1 = require("./common/clickableHandlerMappings");
|
|
6
|
+
/**
|
|
7
|
+
* Wraps the native `GorillaEngine.UI.Toggle` component.
|
|
8
|
+
* Maps `onChange` to the native `value` event. Supports clickable handler mappings.
|
|
9
|
+
*/
|
|
10
|
+
class GEToggle extends GEComponent_1.GEComponent {
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super(GorillaEngine.UI.Toggle, props, { ...clickableHandlerMappings_1.clickableHandlerMappings, onChange: 'value' });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.GEToggle = GEToggle;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR0VUb2dnbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlV3JhcHBlcnMvR0VUb2dnbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0RBQW1EO0FBQ25ELGdGQUFnRztBQWFoRzs7O0dBR0c7QUFDSCxNQUFhLFFBQVMsU0FBUSx5QkFBb0M7SUFDaEUsWUFBWSxLQUFvQjtRQUM5QixLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxtREFBd0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0NBQ0Y7QUFKRCw0QkFJQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactElementProps } from './common/ReactElementProps';
|
|
2
|
+
import { GEComponent } from './common/GEComponent';
|
|
3
|
+
/**
|
|
4
|
+
* Props for {@link GEWaveform}, combining native WaveformProps with React element props
|
|
5
|
+
* and a custom drag-zone position change handler.
|
|
6
|
+
*/
|
|
7
|
+
export type GEWaveformProps = GorillaEngine.UI.WaveformProps & ReactElementProps & {
|
|
8
|
+
/** Handler called when the drag-zone position changes. Mapped to the native `dragzonePosition` event. */
|
|
9
|
+
onDragzonePositionChanged?: any;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* React wrapper for the native {@link GorillaEngine.UI.Waveform} component.
|
|
13
|
+
* Maps `onDragzonePositionChanged` to the native `dragzonePosition` event.
|
|
14
|
+
*/
|
|
15
|
+
export declare class GEWaveform extends GEComponent<GorillaEngine.UI.Waveform> {
|
|
16
|
+
constructor(props: GEWaveformProps);
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GEWaveform = void 0;
|
|
4
|
+
const GEComponent_1 = require("./common/GEComponent");
|
|
5
|
+
/**
|
|
6
|
+
* React wrapper for the native {@link GorillaEngine.UI.Waveform} component.
|
|
7
|
+
* Maps `onDragzonePositionChanged` to the native `dragzonePosition` event.
|
|
8
|
+
*/
|
|
9
|
+
class GEWaveform extends GEComponent_1.GEComponent {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(GorillaEngine.UI.Waveform, props, {
|
|
12
|
+
onDragzonePositionChanged: 'dragzonePosition'
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.GEWaveform = GEWaveform;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR0VXYXZlZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uYXRpdmVXcmFwcGVycy9HRVdhdmVmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNEQUFtRDtBQVduRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSx5QkFBc0M7SUFDcEUsWUFBWSxLQUFzQjtRQUNoQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFDO1lBQ3JDLHlCQUF5QixFQUFFLGtCQUFrQjtTQUM5QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFORCxnQ0FNQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactElementProps } from './common/ReactElementProps';
|
|
2
|
+
import { GEComponent } from './common/GEComponent';
|
|
3
|
+
import { ClickableHandlers } from './common/clickableHandlerMappings';
|
|
4
|
+
/**
|
|
5
|
+
* Props for the {@link GEXYPad} component.
|
|
6
|
+
* Combines native XYPad props with React element props and clickable handlers.
|
|
7
|
+
*/
|
|
8
|
+
export type GEXYPadProps = GorillaEngine.UI.XYPadProps & ReactElementProps & ClickableHandlers;
|
|
9
|
+
/**
|
|
10
|
+
* React wrapper for the Gorilla Engine XYPad component.
|
|
11
|
+
* Provides a 2D control surface for adjusting two parameters simultaneously.
|
|
12
|
+
*/
|
|
13
|
+
export declare class GEXYPad extends GEComponent<GorillaEngine.UI.XYPad> {
|
|
14
|
+
/** @param props - Partial XY pad configuration and click handlers. */
|
|
15
|
+
constructor(props: Partial<GEXYPadProps>);
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GEXYPad = void 0;
|
|
4
|
+
const GEComponent_1 = require("./common/GEComponent");
|
|
5
|
+
const clickableHandlerMappings_1 = require("./common/clickableHandlerMappings");
|
|
6
|
+
/**
|
|
7
|
+
* React wrapper for the Gorilla Engine XYPad component.
|
|
8
|
+
* Provides a 2D control surface for adjusting two parameters simultaneously.
|
|
9
|
+
*/
|
|
10
|
+
class GEXYPad extends GEComponent_1.GEComponent {
|
|
11
|
+
/** @param props - Partial XY pad configuration and click handlers. */
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(GorillaEngine.UI.XYPad, props, clickableHandlerMappings_1.clickableHandlerMappings);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.GEXYPad = GEXYPad;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR0VYWVBhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uYXRpdmVXcmFwcGVycy9HRVhZUGFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUFtRDtBQUNuRCxnRkFBZ0c7QUFRaEc7OztHQUdHO0FBQ0gsTUFBYSxPQUFRLFNBQVEseUJBQW1DO0lBQzlELHNFQUFzRTtJQUN0RSxZQUFZLEtBQTRCO1FBQ3RDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsbURBQXdCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUFMRCwwQkFLQyJ9
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes a mapping between a React event handler prop and its native Gorilla Engine event name.
|
|
3
|
+
*/
|
|
4
|
+
interface ComponentEvent {
|
|
5
|
+
/** The React-side prop name (e.g. `onClick`). */
|
|
6
|
+
geReactName: any;
|
|
7
|
+
/** The corresponding native Gorilla Engine event name (e.g. `click`). */
|
|
8
|
+
nativeName: any;
|
|
9
|
+
/** The callback function provided via React props. */
|
|
10
|
+
handler?: any;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Base wrapper class that bridges a React component to a native Gorilla Engine UI component.
|
|
14
|
+
*
|
|
15
|
+
* Responsibilities:
|
|
16
|
+
* - Instantiates the native handle from React props, expanding binding syntax
|
|
17
|
+
* (e.g. `{ bindings: { x: 'vm.x' } }` becomes `{ 'x&': 'vm.x' }`).
|
|
18
|
+
* - Manages a list of child components.
|
|
19
|
+
* - Maps React event handler prop names to native event names and wires them up.
|
|
20
|
+
* - Provides `prepareUpdate` / `commitUpdate` for the React reconciler diff cycle.
|
|
21
|
+
*
|
|
22
|
+
* @typeParam T - The specific `GorillaEngine.UI.Component` subtype this wrapper manages.
|
|
23
|
+
*/
|
|
24
|
+
export declare class GEComponent<T extends GorillaEngine.UI.Component> {
|
|
25
|
+
/** The underlying native Gorilla Engine component instance. */
|
|
26
|
+
_nativeHandle: T;
|
|
27
|
+
/** Ordered list of child wrapper components. */
|
|
28
|
+
children: GEComponent<any>[];
|
|
29
|
+
/** Whether debug logging is enabled for this component. */
|
|
30
|
+
loggingEnabled: boolean;
|
|
31
|
+
/** Map of React event prop names to their {@link ComponentEvent} descriptors. */
|
|
32
|
+
events: {
|
|
33
|
+
[key: string]: ComponentEvent;
|
|
34
|
+
};
|
|
35
|
+
/** The native constructor function used to create the handle (e.g. `GorillaEngine.UI.Label`). */
|
|
36
|
+
nativeCtor: any;
|
|
37
|
+
/** The React `key` prop associated with this component instance. */
|
|
38
|
+
reactKey: any;
|
|
39
|
+
/** The unique identifier of the underlying native component. */
|
|
40
|
+
get id(): string;
|
|
41
|
+
/** The underlying native Gorilla Engine component instance. */
|
|
42
|
+
get nativeHandle(): T;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new GEComponent, instantiating the native handle and wiring up event handlers.
|
|
45
|
+
*
|
|
46
|
+
* @param nativeCtor - The native Gorilla Engine constructor (e.g. `GorillaEngine.UI.Slider`).
|
|
47
|
+
* @param props - The React element props, including bindings and event handlers.
|
|
48
|
+
* @param handlerMappings - A map of React event prop names to native event names
|
|
49
|
+
* (e.g. `{ onClick: 'click' }`).
|
|
50
|
+
*/
|
|
51
|
+
constructor(nativeCtor: any, props: any, handlerMappings?: {});
|
|
52
|
+
/**
|
|
53
|
+
* Creates the native Gorilla Engine component instance from the given props.
|
|
54
|
+
*
|
|
55
|
+
* Expands binding syntax at both the top level and within nested object props,
|
|
56
|
+
* converting `{ bindings: { prop: 'path' } }` into `{ 'prop&': 'path' }`.
|
|
57
|
+
* Skips React-internal props (`children`, `ref`, `key`) and undefined values.
|
|
58
|
+
*
|
|
59
|
+
* @param ctor - The native constructor function.
|
|
60
|
+
* @param externalProps - The processed React props (with event handlers already removed).
|
|
61
|
+
* @returns A new native component instance with a generated id.
|
|
62
|
+
*/
|
|
63
|
+
private createNativeHandle;
|
|
64
|
+
/**
|
|
65
|
+
* Appends a child component to this component's native handle and internal child list.
|
|
66
|
+
* @param child - The child wrapper to append.
|
|
67
|
+
*/
|
|
68
|
+
appendChild(child: GEComponent<any>): void;
|
|
69
|
+
/**
|
|
70
|
+
* Removes a child component from this component's native handle and internal child list.
|
|
71
|
+
* @param child - The child wrapper to remove.
|
|
72
|
+
*/
|
|
73
|
+
removeChild(child: GEComponent<any>): void;
|
|
74
|
+
/**
|
|
75
|
+
* Inserts a child component before another child in both the native handle and internal list.
|
|
76
|
+
* @param child - The child wrapper to insert.
|
|
77
|
+
* @param beforeChild - The existing child to insert before.
|
|
78
|
+
*/
|
|
79
|
+
insertBefore(child: GEComponent<any>, beforeChild: GEComponent<any>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Diffs previous and next props to produce an update payload for the React reconciler.
|
|
82
|
+
*
|
|
83
|
+
* @param prevProps - The previous set of props.
|
|
84
|
+
* @param nextProps - The incoming set of props.
|
|
85
|
+
* @returns An object containing only the changed key/value pairs, or `null` if nothing changed.
|
|
86
|
+
*/
|
|
87
|
+
prepareUpdate(prevProps: any, nextProps: any): any;
|
|
88
|
+
/**
|
|
89
|
+
* Applies a previously prepared update payload to the native handle.
|
|
90
|
+
*
|
|
91
|
+
* Processes changes in three categories:
|
|
92
|
+
* 1. Event handlers -- updates the stored callback reference.
|
|
93
|
+
* 2. Bindings -- delegates to the native `setBindings` method when available.
|
|
94
|
+
* 3. Regular props -- recursively assigns values to the native handle.
|
|
95
|
+
*
|
|
96
|
+
* @param updatePayload - The changed props object produced by {@link prepareUpdate}.
|
|
97
|
+
*/
|
|
98
|
+
commitUpdate(updatePayload: any): void;
|
|
99
|
+
/** Shortcut to the global Gorilla Engine logger. */
|
|
100
|
+
get log(): import("../../instance").Logger;
|
|
101
|
+
/** Returns a formatted string of all native handle properties for debugging. */
|
|
102
|
+
get propsString(): string;
|
|
103
|
+
}
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GEComponent = void 0;
|
|
4
|
+
const instance_1 = require("../../instance");
|
|
5
|
+
const node_util_1 = require("node:util");
|
|
6
|
+
/**
|
|
7
|
+
* Base wrapper class that bridges a React component to a native Gorilla Engine UI component.
|
|
8
|
+
*
|
|
9
|
+
* Responsibilities:
|
|
10
|
+
* - Instantiates the native handle from React props, expanding binding syntax
|
|
11
|
+
* (e.g. `{ bindings: { x: 'vm.x' } }` becomes `{ 'x&': 'vm.x' }`).
|
|
12
|
+
* - Manages a list of child components.
|
|
13
|
+
* - Maps React event handler prop names to native event names and wires them up.
|
|
14
|
+
* - Provides `prepareUpdate` / `commitUpdate` for the React reconciler diff cycle.
|
|
15
|
+
*
|
|
16
|
+
* @typeParam T - The specific `GorillaEngine.UI.Component` subtype this wrapper manages.
|
|
17
|
+
*/
|
|
18
|
+
class GEComponent {
|
|
19
|
+
/** The underlying native Gorilla Engine component instance. */
|
|
20
|
+
_nativeHandle;
|
|
21
|
+
/** Ordered list of child wrapper components. */
|
|
22
|
+
children = [];
|
|
23
|
+
/** Whether debug logging is enabled for this component. */
|
|
24
|
+
loggingEnabled = false;
|
|
25
|
+
/** Map of React event prop names to their {@link ComponentEvent} descriptors. */
|
|
26
|
+
events = {};
|
|
27
|
+
/** The native constructor function used to create the handle (e.g. `GorillaEngine.UI.Label`). */
|
|
28
|
+
nativeCtor;
|
|
29
|
+
/** The React `key` prop associated with this component instance. */
|
|
30
|
+
reactKey;
|
|
31
|
+
/** The unique identifier of the underlying native component. */
|
|
32
|
+
get id() {
|
|
33
|
+
return this.nativeHandle.id;
|
|
34
|
+
}
|
|
35
|
+
/** The underlying native Gorilla Engine component instance. */
|
|
36
|
+
get nativeHandle() {
|
|
37
|
+
return this._nativeHandle;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Creates a new GEComponent, instantiating the native handle and wiring up event handlers.
|
|
41
|
+
*
|
|
42
|
+
* @param nativeCtor - The native Gorilla Engine constructor (e.g. `GorillaEngine.UI.Slider`).
|
|
43
|
+
* @param props - The React element props, including bindings and event handlers.
|
|
44
|
+
* @param handlerMappings - A map of React event prop names to native event names
|
|
45
|
+
* (e.g. `{ onClick: 'click' }`).
|
|
46
|
+
*/
|
|
47
|
+
constructor(nativeCtor, props, handlerMappings = {}) {
|
|
48
|
+
this.nativeCtor = nativeCtor;
|
|
49
|
+
const propsWithoutEvents = {};
|
|
50
|
+
for (const key in props) {
|
|
51
|
+
if (!(key in handlerMappings)) {
|
|
52
|
+
propsWithoutEvents[key] = props[key];
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.events[key] = {
|
|
56
|
+
geReactName: key,
|
|
57
|
+
nativeName: handlerMappings[key],
|
|
58
|
+
handler: props[key]
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this._nativeHandle = this.createNativeHandle(nativeCtor, propsWithoutEvents);
|
|
63
|
+
const handleEvent = (key, eventArg) => {
|
|
64
|
+
const event = this.events[key];
|
|
65
|
+
if (event.handler) {
|
|
66
|
+
event.handler(eventArg);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
for (const key in this.events) {
|
|
71
|
+
this._nativeHandle.on(this.events[key].nativeName, e => handleEvent(key, e));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
instance_1.instance.log.error('error setting event handler', e);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Creates the native Gorilla Engine component instance from the given props.
|
|
80
|
+
*
|
|
81
|
+
* Expands binding syntax at both the top level and within nested object props,
|
|
82
|
+
* converting `{ bindings: { prop: 'path' } }` into `{ 'prop&': 'path' }`.
|
|
83
|
+
* Skips React-internal props (`children`, `ref`, `key`) and undefined values.
|
|
84
|
+
*
|
|
85
|
+
* @param ctor - The native constructor function.
|
|
86
|
+
* @param externalProps - The processed React props (with event handlers already removed).
|
|
87
|
+
* @returns A new native component instance with a generated id.
|
|
88
|
+
*/
|
|
89
|
+
createNativeHandle(ctor, externalProps) {
|
|
90
|
+
const props = {};
|
|
91
|
+
for (const key in externalProps) {
|
|
92
|
+
if (key === 'bindings') {
|
|
93
|
+
for (const bindingKey in externalProps.bindings) {
|
|
94
|
+
props[bindingKey + '&'] = externalProps.bindings[bindingKey];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (key === 'children' || key === 'ref' || key === 'key') {
|
|
98
|
+
//ignore
|
|
99
|
+
}
|
|
100
|
+
else if (externalProps[key] !== undefined) { // avoid undefined values
|
|
101
|
+
props[key] = externalProps[key];
|
|
102
|
+
if (externalProps[key] !== null && typeof externalProps[key] === 'object' &&
|
|
103
|
+
'bindings' in externalProps[key]) {
|
|
104
|
+
for (const bindingKey in externalProps[key].bindings) {
|
|
105
|
+
instance_1.instance.log.info('add sub binding', key, bindingKey + '&', externalProps[key].bindings[bindingKey]);
|
|
106
|
+
props[key][bindingKey + '&'] = externalProps[key].bindings[bindingKey];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// This calls e.g. new GorillaEngine.UI.Label({ ... }) and therefore the C++ constructor
|
|
112
|
+
return new ctor({
|
|
113
|
+
id: `${Math.random() * 1e6}-` + ctor.name,
|
|
114
|
+
...props
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Appends a child component to this component's native handle and internal child list.
|
|
119
|
+
* @param child - The child wrapper to append.
|
|
120
|
+
*/
|
|
121
|
+
appendChild(child) {
|
|
122
|
+
this.nativeHandle.appendChild(child.nativeHandle);
|
|
123
|
+
this.children.push(child);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Removes a child component from this component's native handle and internal child list.
|
|
127
|
+
* @param child - The child wrapper to remove.
|
|
128
|
+
*/
|
|
129
|
+
removeChild(child) {
|
|
130
|
+
this.nativeHandle.removeChild(child.nativeHandle);
|
|
131
|
+
this.children = this.children.filter(c => c !== child);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Inserts a child component before another child in both the native handle and internal list.
|
|
135
|
+
* @param child - The child wrapper to insert.
|
|
136
|
+
* @param beforeChild - The existing child to insert before.
|
|
137
|
+
*/
|
|
138
|
+
insertBefore(child, beforeChild) {
|
|
139
|
+
this.nativeHandle.insertBefore(child.nativeHandle, beforeChild.nativeHandle);
|
|
140
|
+
this.children.splice(this.children.findIndex(c => c === beforeChild), 0, child);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Diffs previous and next props to produce an update payload for the React reconciler.
|
|
144
|
+
*
|
|
145
|
+
* @param prevProps - The previous set of props.
|
|
146
|
+
* @param nextProps - The incoming set of props.
|
|
147
|
+
* @returns An object containing only the changed key/value pairs, or `null` if nothing changed.
|
|
148
|
+
*/
|
|
149
|
+
prepareUpdate(prevProps, nextProps) {
|
|
150
|
+
const changedKeys = Array.from(new Set(Object.keys(nextProps).concat(Object.keys(prevProps))))
|
|
151
|
+
.filter(key => key !== 'children' && nextProps[key] !== undefined)
|
|
152
|
+
.filter(key => !(0, node_util_1.isDeepStrictEqual)(prevProps[key], nextProps[key]));
|
|
153
|
+
if (!changedKeys.length) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return changedKeys.reduce((acc, key) => Object.assign(acc, { [key]: nextProps[key] }), {});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Applies a previously prepared update payload to the native handle.
|
|
162
|
+
*
|
|
163
|
+
* Processes changes in three categories:
|
|
164
|
+
* 1. Event handlers -- updates the stored callback reference.
|
|
165
|
+
* 2. Bindings -- delegates to the native `setBindings` method when available.
|
|
166
|
+
* 3. Regular props -- recursively assigns values to the native handle.
|
|
167
|
+
*
|
|
168
|
+
* @param updatePayload - The changed props object produced by {@link prepareUpdate}.
|
|
169
|
+
*/
|
|
170
|
+
commitUpdate(updatePayload) {
|
|
171
|
+
const props = [];
|
|
172
|
+
let bindings;
|
|
173
|
+
// event handlers first
|
|
174
|
+
for (const [k, v] of Object.entries(updatePayload)) {
|
|
175
|
+
if (k in this.events) {
|
|
176
|
+
this.events[k].handler = v;
|
|
177
|
+
}
|
|
178
|
+
else if (k === 'bindings') {
|
|
179
|
+
bindings = v;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
props.push([k, v]);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (bindings) {
|
|
186
|
+
if ('setBindings' in this.nativeHandle) {
|
|
187
|
+
this.nativeHandle.setBindings(bindings);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
instance_1.instance.log.info('Binding updates not supported in the version of ge-shell.');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const assignPropValue = (target, k, v) => {
|
|
194
|
+
if (!Array.isArray(v) && typeof v === 'object') {
|
|
195
|
+
for (const subkey in v) {
|
|
196
|
+
try {
|
|
197
|
+
assignPropValue(target[k], subkey, v[subkey]);
|
|
198
|
+
}
|
|
199
|
+
catch (e) {
|
|
200
|
+
instance_1.instance.log.info('error assigning prop', e);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
target[k] = v;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
for (const [k, v] of props) {
|
|
209
|
+
assignPropValue(this.nativeHandle, k, v);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Shortcut to the global Gorilla Engine logger. */
|
|
213
|
+
get log() {
|
|
214
|
+
return instance_1.instance.log;
|
|
215
|
+
}
|
|
216
|
+
/** Returns a formatted string of all native handle properties for debugging. */
|
|
217
|
+
get propsString() {
|
|
218
|
+
let out = '';
|
|
219
|
+
for (const key in this.nativeHandle) {
|
|
220
|
+
out += key + '=' + this.nativeHandle[key] + '\n';
|
|
221
|
+
}
|
|
222
|
+
return out;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.GEComponent = GEComponent;
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR0VDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmF0aXZlV3JhcHBlcnMvY29tbW9uL0dFQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUEwQztBQUMxQyx5Q0FBOEM7QUFjOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLFdBQVc7SUFFdEIsK0RBQStEO0lBQy9ELGFBQWEsQ0FBSTtJQUNqQixnREFBZ0Q7SUFDaEQsUUFBUSxHQUF1QixFQUFFLENBQUM7SUFDbEMsMkRBQTJEO0lBQzNELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsaUZBQWlGO0lBQ2pGLE1BQU0sR0FBc0MsRUFBRSxDQUFBO0lBQzlDLGlHQUFpRztJQUNqRyxVQUFVLENBQUM7SUFDWCxvRUFBb0U7SUFDcEUsUUFBUSxDQUFDO0lBRVQsZ0VBQWdFO0lBQ2hFLElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLFVBQVUsRUFBRSxLQUFLLEVBQUUsZUFBZSxHQUFHLEVBQUU7UUFFakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUE7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFH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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Base props shared by all Gorilla Engine React elements.
|
|
4
|
+
*
|
|
5
|
+
* Extends the standard React intrinsic props (`key`, `children`, `ref`)
|
|
6
|
+
* with a `bindings` map for declarative view-model binding.
|
|
7
|
+
*/
|
|
8
|
+
export interface ReactElementProps {
|
|
9
|
+
/** React key for list reconciliation. */
|
|
10
|
+
key?: string | number;
|
|
11
|
+
/** Nested React child elements. */
|
|
12
|
+
children?: any;
|
|
13
|
+
/** React ref for accessing the underlying {@link GEComponent} wrapper. */
|
|
14
|
+
ref?: React.RefObject<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Declarative bindings map. Keys are native property names and values are
|
|
17
|
+
* view-model paths (e.g. `{ value: 'vm.sliderValue' }`).
|
|
18
|
+
*/
|
|
19
|
+
bindings?: any;
|
|
20
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVhY3RFbGVtZW50UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmF0aXZlV3JhcHBlcnMvY29tbW9uL1JlYWN0RWxlbWVudFByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps React click/mouse event handler prop names to their corresponding
|
|
3
|
+
* native Gorilla Engine event names.
|
|
4
|
+
*
|
|
5
|
+
* Used by {@link GEComponent} to wire React callbacks to native events.
|
|
6
|
+
*/
|
|
7
|
+
export declare const clickableHandlerMappings: {
|
|
8
|
+
onClick: string;
|
|
9
|
+
onClickWithInfo: string;
|
|
10
|
+
onDoubleClick: string;
|
|
11
|
+
onMouseUp: string;
|
|
12
|
+
onMouseDown: string;
|
|
13
|
+
onMouseDownWithInfo: string;
|
|
14
|
+
onMouseDrag: string;
|
|
15
|
+
onMouseEnter: string;
|
|
16
|
+
onMouseExit: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Optional React event handler props available on clickable Gorilla Engine components.
|
|
20
|
+
*/
|
|
21
|
+
export interface ClickableHandlers {
|
|
22
|
+
/** Fired on a single click. */
|
|
23
|
+
onClick: (args: any) => void;
|
|
24
|
+
/** Fired on click, providing additional hit-test info. */
|
|
25
|
+
onClickWithInfo: (args: any) => void;
|
|
26
|
+
/** Fired on a double click. */
|
|
27
|
+
onDoubleClick: (args: any) => void;
|
|
28
|
+
/** Fired when the mouse button is released. */
|
|
29
|
+
onMouseUp: (args: any) => void;
|
|
30
|
+
/** Fired when the mouse button is pressed. */
|
|
31
|
+
onMouseDown: (args: any) => void;
|
|
32
|
+
/** Fired when the mouse button is pressed, providing additional hit-test info. */
|
|
33
|
+
onMouseDownWithInfo: (args: any) => void;
|
|
34
|
+
/** Fired while the mouse is dragged over the component. */
|
|
35
|
+
onMouseDrag: (args: any) => void;
|
|
36
|
+
/** Fired when the mouse cursor enters the component bounds. */
|
|
37
|
+
onMouseEnter: (args: any) => void;
|
|
38
|
+
/** Fired when the mouse cursor exits the component bounds. */
|
|
39
|
+
onMouseExit: (args: any) => void;
|
|
40
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clickableHandlerMappings = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Maps React click/mouse event handler prop names to their corresponding
|
|
6
|
+
* native Gorilla Engine event names.
|
|
7
|
+
*
|
|
8
|
+
* Used by {@link GEComponent} to wire React callbacks to native events.
|
|
9
|
+
*/
|
|
10
|
+
exports.clickableHandlerMappings = {
|
|
11
|
+
onClick: 'click',
|
|
12
|
+
onClickWithInfo: 'clickWithInfo',
|
|
13
|
+
onDoubleClick: 'doubleClick',
|
|
14
|
+
onMouseUp: 'mouseUp',
|
|
15
|
+
onMouseDown: 'mouseDown',
|
|
16
|
+
onMouseDownWithInfo: 'mouseDownWithInfo',
|
|
17
|
+
onMouseDrag: 'mouseDrag',
|
|
18
|
+
onMouseEnter: 'mouseEnter',
|
|
19
|
+
onMouseExit: 'mouseExit',
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2thYmxlSGFuZGxlck1hcHBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hdGl2ZVdyYXBwZXJzL2NvbW1vbi9jbGlja2FibGVIYW5kbGVyTWFwcGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7O0dBS0c7QUFDVSxRQUFBLHdCQUF3QixHQUFHO0lBQ3RDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLGVBQWUsRUFBRSxlQUFlO0lBQ2hDLGFBQWEsRUFBRSxhQUFhO0lBQzVCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLG1CQUFtQixFQUFFLG1CQUFtQjtJQUN4QyxXQUFXLEVBQUUsV0FBVztJQUN4QixZQUFZLEVBQUUsWUFBWTtJQUMxQixXQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps React keyboard event handler prop names to their corresponding
|
|
3
|
+
* native Gorilla Engine event names.
|
|
4
|
+
*
|
|
5
|
+
* Used by {@link GEComponent} to wire React callbacks to native events.
|
|
6
|
+
*/
|
|
7
|
+
export declare const keyableHandlerMappings: {
|
|
8
|
+
onKeyPressed: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Optional React event handler props available on keyboard-interactive Gorilla Engine components.
|
|
12
|
+
*/
|
|
13
|
+
export interface KeyableHandlers {
|
|
14
|
+
/** Fired when a key is pressed while the component has focus. */
|
|
15
|
+
onKeyPressed: (args: any) => void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.keyableHandlerMappings = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Maps React keyboard event handler prop names to their corresponding
|
|
6
|
+
* native Gorilla Engine event names.
|
|
7
|
+
*
|
|
8
|
+
* Used by {@link GEComponent} to wire React callbacks to native events.
|
|
9
|
+
*/
|
|
10
|
+
exports.keyableHandlerMappings = {
|
|
11
|
+
onKeyPressed: 'keyPressed',
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5YWJsZUhhbmRsZXJNYXBwaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uYXRpdmVXcmFwcGVycy9jb21tb24va2V5YWJsZUhhbmRsZXJNYXBwaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7R0FLRztBQUNVLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFLFlBQVk7Q0FDM0IsQ0FBQyJ9
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gorilla-engine-sdk/gorilla-engine-react",
|
|
3
|
+
"version": "1.6.1",
|
|
4
|
+
"description": "React bindings for Gorilla Engine, providing a simple and efficient way to create plugins using React.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "npm run watch",
|
|
9
|
+
"build": "npx tsc --preserveWatchOutput",
|
|
10
|
+
"watch": "npx tsc-watch --preserveWatchOutput",
|
|
11
|
+
"prepack": "npm run build",
|
|
12
|
+
"test": "npx jest",
|
|
13
|
+
"docs": "npx typedoc ./src/index.ts --theme default --out ./docs",
|
|
14
|
+
"lint": "eslint src",
|
|
15
|
+
"ci:publish": "node ../../scripts/ci-publish.js"
|
|
16
|
+
},
|
|
17
|
+
"author": "UJAM Music Technology GmbH",
|
|
18
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md",
|
|
22
|
+
"LICENSE.md"
|
|
23
|
+
],
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"react": "^19.0.0"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"registry": "https://registry.npmjs.org/"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@types/gorilla-engine": "^1.1.33",
|
|
33
|
+
"@types/node": "^18.11.9",
|
|
34
|
+
"react-reconciler": "^0.33.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"react": "^19.0.0",
|
|
38
|
+
"@eslint-react/eslint-plugin": "^5.8.10",
|
|
39
|
+
"@eslint/js": "^10.0.1",
|
|
40
|
+
"@types/jest": "^30.0.0",
|
|
41
|
+
"@types/react": "^19.2.16",
|
|
42
|
+
"@types/react-reconciler": "^0.33.0",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "^8.60.1",
|
|
44
|
+
"@typescript-eslint/parser": "^8.60.1",
|
|
45
|
+
"eslint": "^10.4.1",
|
|
46
|
+
"eslint-config-prettier": "^10.1.8",
|
|
47
|
+
"globals": "^17.6.0",
|
|
48
|
+
"jest": "^30.4.2",
|
|
49
|
+
"ts-jest": "^29.4.11",
|
|
50
|
+
"tsc-watch": "^7.2.0",
|
|
51
|
+
"typedoc": "^0.28.19",
|
|
52
|
+
"typescript": "^6.0.3"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://www.gorilla-engine.com/",
|
|
55
|
+
"keywords": [
|
|
56
|
+
"gorilla-engine",
|
|
57
|
+
"UJAM"
|
|
58
|
+
]
|
|
59
|
+
}
|