UNPKG

peepee

Version:

Visual Programming Language Where You Connect Ports Of One EventEmitter to Ports Of Another EventEmitter

124 lines (93 loc) 4.62 kB
// SubwayBuilder.js import { Application } from "./Application.js"; import { PolyfillManagerPlugin } from "./plug-ins/polyfills/PolyfillManagerPlugin.js"; import { ColorManagerPlugin } from "./plug-ins/theme/ColorManagerPlugin.js"; import { WidgetManagerPlugin } from "./plug-ins/widget/WidgetManagerPlugin.js"; import { MenuPlugin } from "./plug-ins/menu/MenuPlugin.js"; import { ToolboxPlugin } from "./plug-ins/toolbox/ToolboxPlugin.js"; import { PropertiesPlugin } from "./plug-ins/properties/PropertiesPlugin.js"; import { PalettePlugin } from "./plug-ins/palette/PalettePlugin.js"; import { DatabasePlugin } from "./plug-ins/database/DatabasePlugin.js"; import { WorkbenchPlugin } from "./plug-ins/workbench/WorkbenchPlugin.js"; import { StationManagerPlugin } from "./plug-ins/station/StationManagerPlugin.js"; import { StationRenderPlugin } from "./plug-ins/station/StationRenderPlugin.js"; import { StationMovePlugin } from "./plug-ins/station/StationMovePlugin.js"; import { StationDeletePlugin } from "./plug-ins/station/StationDeletePlugin.js"; import { StationCreatePlugin } from "./plug-ins/station/StationCreatePlugin.js"; import { ManifestManagerPlugin } from "./plug-ins/manifests/ManifestManagerPlugin.js"; import { AgentManagerPlugin } from "./plug-ins/agent/AgentManagerPlugin.js"; import { GadgetManagerPlugin } from "./plug-ins/gadget/GadgetManagerPlugin.js"; import { PortManagerPlugin } from "./plug-ins/ports/PortManagerPlugin.js"; import { GhostLinePlugin } from "./plug-ins/connection/GhostLinePlugin.js"; import { ConnectionManagerPlugin } from "./plug-ins/connection/ConnectionManagerPlugin.js"; import { ConnectionRenderPlugin } from "./plug-ins/connection/ConnectionRenderPlugin.js"; import { ConnectionDeletePlugin } from "./plug-ins/connection/ConnectionDeletePlugin.js"; import { ConnectionCreatePlugin } from "./plug-ins/connection/ConnectionCreatePlugin.js"; import { RecordsManagerPlugin } from "./plug-ins/records/RecordsManagerPlugin.js"; export class SubwayBuilder extends HTMLElement { constructor() { super(); } connectedCallback() { this.innerHTML = ` <div id="ui-container" class="ui-container"> <div class="start-side snapped-top snapped-start"> </div> <div class="end-side snapped-top snapped-end"> </div> <div class="toolbox snapped-bottom snapped-center rounded" tabindex="-1" style="min-height: 3rem;"> <div class="toolbox-body p-3"> <small class="text-info" id="tool-info">Tool: (?)</small> <small class="text-info" id="pan-info">Pan: (0, 0)</small> <small class="text-info" id="scale-info">Scale: 1.00</small> <small class="text-info" id="mouse-info1">Mouse: (0, 0)</small> <small class="text-info" id="mouse-info2">Mouse: (0, 0)</small> </div> </div> <div class="svg-container"> <svg id="main-svg"> <defs> </defs> <g id="viewport"> </g> </svg> </div> </div> `; // const svg = this.querySelector('#svg-container'); const svg = this.querySelector("#main-svg"); const app = new Application(svg); app.actions = {}; globalThis.app = app; Object.freeze(app); app.use(new PolyfillManagerPlugin()); app.use(new ColorManagerPlugin()); app.use(new WidgetManagerPlugin()); app.use(new MenuPlugin()); app.use(new ToolboxPlugin()); app.use(new WorkbenchPlugin()); app.use(new PalettePlugin()); app.use(new PropertiesPlugin()); // Station System - respond to click on canvas create stations app.use(new StationManagerPlugin()); app.use(new StationRenderPlugin()); app.use(new StationMovePlugin()); app.use(new StationDeletePlugin()); app.use(new StationCreatePlugin()); // listen for stations being created, load agent manifests, and create agents app.use(new ManifestManagerPlugin()); app.use(new AgentManagerPlugin()); // listen for agents being created, use their manifest to draw ports app.use(new GadgetManagerPlugin()); app.use(new PortManagerPlugin()); // Connection System app.use(new GhostLinePlugin()); app.use(new ConnectionManagerPlugin()); app.use(new ConnectionRenderPlugin()); app.use(new ConnectionDeletePlugin()); app.use(new ConnectionCreatePlugin()); app.use(new RecordsManagerPlugin()); app.use(new DatabasePlugin()); app.init(); } }