Files
Ashley Harrison 47f8717149 React: Use new JSX transform (#88802)
* update eslint, tsconfig + esbuild to handle new jsx transform

* remove thing that breaks the new jsx transform

* remove react imports

* adjust grafana-icons build

* is this the correct syntax?

* try this

* well this was much easier than expected...

* change grafana-plugin-configs webpack config

* fixes

* fix lockfile

* fix 2 more violations

* use path.resolve instead of require.resolve

* remove react import

* fix react imports

* more fixes

* remove React import

* remove import React from docs

* remove another react import
2024-06-25 12:43:47 +01:00

57 lines
1.2 KiB
TypeScript

import { CanvasFrameOptions } from '../frame';
import { FrameState } from './frame';
import { Scene } from './scene';
export class RootElement extends FrameState {
constructor(
public options: CanvasFrameOptions,
public scene: Scene,
private changeCallback: () => void
) {
super(options, scene);
this.sizeStyle = {
height: '100%',
width: '100%',
};
}
isRoot(): this is RootElement {
return true;
}
// root type can not change
onChange(options: CanvasFrameOptions) {
this.revId++;
this.options = { ...options };
this.changeCallback();
}
getSaveModel(): CanvasFrameOptions {
const { placement, constraint, ...rest } = this.options;
return {
...rest, // everything except placement & constraint
elements: this.elements.map((v) => v.getSaveModel()),
};
}
setRootRef = (target: HTMLDivElement) => {
this.div = target;
};
render() {
return (
<div
onContextMenu={(event) => event.preventDefault()}
key={this.UID}
ref={this.setRootRef}
style={{ ...this.sizeStyle, ...this.dataStyle }}
>
{this.elements.map((v) => v.render())}
</div>
);
}
}