plugin system refactoring

This commit is contained in:
Val Erastov 2022-03-05 00:07:50 -08:00
parent c7fda1ac27
commit 1161d39ac7
6 changed files with 18 additions and 22 deletions

View file

@ -1,6 +1,3 @@
import {WizardSelectionContext} from "cad/craft/wizard/wizardSelectionPlugin";
type BagOfPlugins = Set<Plugin<any, any>>;
export class PluginSystem {

View file

@ -163,12 +163,12 @@ export function activate(ctx: ApplicationContext) {
ctx.wizardService = services.wizard = wizardService;
}
export interface WizardOutputContext {
export interface WizardPluginContext {
wizardService: WizardService
}
declare module 'context' {
interface ApplicationContext extends WizardOutputContext {
interface ApplicationContext extends WizardPluginContext {
}
}

View file

@ -4,18 +4,18 @@ import {FlattenPath, ParamsPath, WizardService} from "cad/craft/wizard/wizardTyp
import {OperationParamValue} from "cad/craft/schema/schema";
import {EntityReference} from "cad/craft/operationPlugin";
import {ContextSpec, Plugin, Spec} from "plugable/pluginSystem";
import {MarkerPluginOutputContext} from "cad/scene/selectionMarker/markerPlugin";
import {WizardOutputContext} from "cad/craft/wizard/wizardPlugin";
import {PickControlOutputContext} from "cad/scene/controls/pickControlPlugin";
import {MarkerPluginContext} from "cad/scene/selectionMarker/markerPlugin";
import {WizardPluginContext} from "cad/craft/wizard/wizardPlugin";
import {PickControlPluginContext} from "cad/scene/controls/pickControlPlugin";
export type WizardSelectionInputContext = MarkerPluginOutputContext & WizardOutputContext & PickControlOutputContext;
export type WizardSelectionPluginInputContext = MarkerPluginContext & WizardPluginContext & PickControlPluginContext;
export interface WizardSelectionOutputContext {
export interface WizardSelectionPluginContext {
}
export type WizardSelectionContext = WizardSelectionInputContext & WizardSelectionOutputContext;
export type WizardSelectionWorkingContext = WizardSelectionPluginInputContext & WizardSelectionPluginContext;
export const WizardSelectionPlugin: Plugin<WizardSelectionInputContext, WizardSelectionOutputContext, WizardSelectionContext> = {
export const WizardSelectionPlugin: Plugin<WizardSelectionPluginInputContext, WizardSelectionPluginContext, WizardSelectionWorkingContext> = {
inputContextSpec: {
markerService: 'required',
@ -26,7 +26,7 @@ export const WizardSelectionPlugin: Plugin<WizardSelectionInputContext, WizardSe
outputContextSpec: {
},
activate(ctx: WizardSelectionContext) {
activate(ctx: WizardSelectionWorkingContext) {
const wizardService = ctx.wizardService;
wizardService.workingRequest$.attach((opRequest: OperationRequest) => {
ctx.markerService.clear();

View file

@ -10,23 +10,22 @@ export interface DomService {
}
export interface DomInputContext {
interface DomPluginInputContext {
appTabsService: AppTabsService;
services: any;
}
export interface DomOutputContext {
export interface DomPluginContext {
domService: DomService;
}
export type DomContext = DomInputContext&DomOutputContext;
type DomPluginWorkingContext = DomPluginInputContext&DomPluginContext;
declare module 'context' {
interface ApplicationContext extends DomOutputContext {}
interface ApplicationContext extends DomPluginContext {}
}
export const DomPlugin: Plugin<DomInputContext, DomOutputContext, DomContext> = {
export const DomPlugin: Plugin<DomPluginInputContext, DomPluginContext, DomPluginWorkingContext> = {
inputContextSpec: {
appTabsService: 'required',
@ -37,7 +36,7 @@ export const DomPlugin: Plugin<DomInputContext, DomOutputContext, DomContext> =
domService: 'required',
},
activate(ctx: DomInputContext&DomOutputContext) {
activate(ctx: DomPluginInputContext&DomPluginContext) {
ctx.domService = {
viewerContainer: document.getElementById('viewer-container'),
contributeComponent

View file

@ -17,7 +17,7 @@ export interface PickControlService {
simulatePickFromRay()
}
export interface PickControlOutputContext {
export interface PickControlPluginContext {
pickControlService: PickControlService;
}

View file

@ -22,7 +22,7 @@ export interface MarkerService {
$markedEntities: Stream<MObject>
}
export interface MarkerPluginOutputContext {
export interface MarkerPluginContext {
markerService: MarkerService;
}