mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 06:02:24 +08:00

* 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
57 lines
1.2 KiB
TypeScript
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>
|
|
);
|
|
}
|
|
}
|