mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-09 18:02:50 +01:00
plugin system refactoring
This commit is contained in:
parent
c7fda1ac27
commit
1161d39ac7
6 changed files with 18 additions and 22 deletions
|
|
@ -1,6 +1,3 @@
|
|||
import {WizardSelectionContext} from "cad/craft/wizard/wizardSelectionPlugin";
|
||||
|
||||
|
||||
type BagOfPlugins = Set<Plugin<any, any>>;
|
||||
|
||||
export class PluginSystem {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ export interface PickControlService {
|
|||
simulatePickFromRay()
|
||||
}
|
||||
|
||||
export interface PickControlOutputContext {
|
||||
export interface PickControlPluginContext {
|
||||
pickControlService: PickControlService;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export interface MarkerService {
|
|||
$markedEntities: Stream<MObject>
|
||||
}
|
||||
|
||||
export interface MarkerPluginOutputContext {
|
||||
export interface MarkerPluginContext {
|
||||
markerService: MarkerService;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue