@itk-viewer/element
Version:
Web Component for multi-dimensional viewer
80 lines • 2.9 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { view3d } from '@itk-viewer/viewer/view-3d.js';
import { LitElement, css, html } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { SelectorController } from 'xstate-lit';
import { dispatchSpawn, handleLogic } from './spawn-controller.js';
import './itk-view-3d-vtkjs.js';
import './itk-camera.js';
let ItkView3d = class ItkView3d extends LitElement {
constructor() {
super(...arguments);
this.renderer = 'slot';
this.dispatched = false;
}
setActor(actor) {
this.actor = actor;
this.scale = new SelectorController(this, this.actor, (state) => state.context.scale);
this.scaleCount = new SelectorController(this, this.actor, (state) => {
const image = state.context.image;
if (!image)
return 1;
return image.coarsestScale + 1;
});
this.cameraActor = new SelectorController(this, this.actor, (state) => state.context.camera);
}
getActor() {
return this.actor;
}
onScale(event) {
const target = event.target;
const scale = Number(target.value);
this.actor.send({ type: 'setScale', scale });
}
getRenderer() {
if (this.renderer === 'vtkjs') {
return html `<itk-view-3d-vtkjs></itk-view-3d-vtkjs>`;
}
else if (this.renderer === 'slot') {
return html `<slot></slot>`;
}
const _exhaustiveCheck = this.renderer;
throw new Error(`Invalid renderer ${_exhaustiveCheck}`);
}
render() {
if (!this.dispatched) {
dispatchSpawn(this, 'view', view3d, (actor) => this.setActor(actor));
this.dispatched = true;
}
return html `
<itk-camera
class="fill"
.actor=${this.cameraActor?.value}
=${handleLogic(this.actor)}
>
${this.getRenderer()}
</itk-camera>
`;
}
static { this.styles = css `
.fill {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
}
`; }
};
__decorate([
property({ type: String })
], ItkView3d.prototype, "renderer", void 0);
ItkView3d = __decorate([
customElement('itk-view-3d')
], ItkView3d);
export { ItkView3d };
//# sourceMappingURL=itk-view-3d.js.map