3.1.0 • Published 5 days ago

dock-spawn-ts v3.1.0

Weekly downloads
21
License
MIT
Repository
-
Last release
5 days ago

dock-spawn-ts

A TypeScript Version of dock-spawn (see https://github.com/coderespawn/dock-spawn)

Homepage at https://node-projects.github.io/dock-spawn-ts/

NPM version Downloads

info

Dock Spawn TS is a Typescript Docking Framework to create a Visual Studio like IDE in HTML

Logo

es5 version

There is an ES5 Version in the lib/es5 directory Usage Example is in page/demo/demo_simple_es5.html

differences to original dockspawn

  • typescript
  • bugfixes / preformance optimations
  • save/restore fixed and saveing/restoring of dialogs
  • touch support (works on ipad/iphone and android devices)
  • performance fixes (unnessecary removeing and adding to dom reduced, not needed elements are hidden, not removed from dom)
  • multiple dockspawn's in one page
  • removed font-awesome dependency
  • settings (dockManger.config)
  • ContextMenu to close all docks (Document Docks only)
  • wip webcomponent support

testing

how to use:

   dockspawn div container needs position absolute or relative 

<div id="dock_div" style="height: calc(100% - 45px);">
    <div id="my_dock_manager" class="my-dock-manager" style="position: relative;"></div>
    <div id="solution_window" data-panel-caption="Solution Explorer" data-panel-icon="test.png" class="solution-window" hidden></div>
    <div id="properties_window" data-panel-caption="Properties" class="properties-window" hidden></div>
    <div id="state_window" data-panel-caption="state" class="state-window" hidden></div>
    <div id="editor1_window" data-panel-caption="Steering.h" class="editor1-window editor-host" hidden></div>
    <div id="editor2_window" data-panel-caption="Steering.cpp" class="editor2-window editor-host" hidden></div>
    <div id="infovis" data-panel-caption="Dock Tree Visualizer" class="editor2-window editor-host" hidden></div>
    <div id="output_window" data-panel-caption="Output" class="output-window editor-host" hidden></div>
    <div id="outline_window" data-panel-caption="Outline" class="outline-window" hidden></div>
    <div id="toolbox_window" data-panel-caption="Toolbox" class="toolbox-window" hidden></div>
</div>
    import { DockManager } from "../DockManager.js";
    import { PanelContainer } from "../PanelContainer.js";

    // Convert a div to a dock manager.  Panels can then be docked on to it
    let divDockManager = document.getElementById('dock_div');
    let dockManager = new DockManager(document.getElementById('my_dock_manager'));
    dockManager.initialize();

    // Let the dock manager element fill in the entire screen
    window.onresize = function () {
        dockManager.resize(
            window.innerWidth - (divDockManager.clientLeft + divDockManager.offsetLeft),
            window.innerHeight - (divDockManager.clientTop + divDockManager.offsetTop)
        );
    };
    window.onresize(null);

    // Convert existing elements on the page into "Panels". 
    // They can then be docked on to the dock manager 
    // Panels get a titlebar and a close button, and can also be 
    // converted to a floatingdialog box which can be dragged / resized 
    let solution = new PanelContainer(document.getElementById("#solution_window"), dockManager);
    let output = new PanelContainer(document.getElementById("#output_window"), dockManager);
    let properties = new PanelContainer(document.getElementById("#properties_window"), dockManager);
    let toolbox = new PanelContainer(document.getElementById("#toolbox_window"), dockManager);
    let outline = new PanelContainer(document.getElementById("#outline_window"), dockManager);
    let state = new PanelContainer(document.getElementById("#state_window"), dockManager);
    let editor1 = new PanelContainer(document.getElementById("#editor1_window"), dockManager);
    let editor2 = new PanelContainer(document.getElementById("#editor2_window"), dockManager);
    let infovis = new PanelContainer(document.getElementById("infovis"), dockManager);

    // Dock the panels on the dock manager
    let documentNode = dockManager.context.model.documentManagerNode;
    let solutionNode = dockManager.dockLeft(documentNode, solution, 0.20);
    let outlineNode = dockManager.dockFill(solutionNode, outline);
    let propertiesNode = dockManager.dockDown(outlineNode, properties, 0.6);
    let outputNode = dockManager.dockDown(documentNode, output, 0.4);
    let stateNode = dockManager.dockRight(outputNode, state, 0.40);
    let toolboxNode = dockManager.dockRight(documentNode, toolbox, 0.20);
    let editor1Node = dockManager.dockFill(documentNode, editor1);
    let editor2Node = dockManager.dockFill(documentNode, editor2);
    dockManager.floatDialog(infovis, 50, 50);

    // You could listen to callbacks of DockManager like this, there are more event's then close available see ILayoutEventListener
      dockManager.addLayoutListener({
         onClosePanel: (dockManager, panel) => {
            console.log('onClosePanel: ', dockManager, panel);
            localStorage.setItem(storeKey, dockManager.saveState());
        }
    });

other html docking frameworks in comparison

UrlLicenceTouch supportDialogsDialogs in new Browserwindows
dock-spawn-tsMITYesYesNo
https://github.com/golden-layout/golden-layoutMITNoNoYes
https://github.com/WebCabin/wcDockerMITYesYesNo
https://jspanel.deMITYesYesNo
http://www.htmldockfloat.comCommerical/freeNoYesNo
http://phosphorjs.github.io/BSD 3??No
https://github.com/tupilabs/vue-luminoApache2?NoNo
https://github.com/mathuo/dockviewMIT?NoNo
3.1.0

5 days ago

3.0.2

12 days ago

3.0.1

12 days ago

3.0.0

12 days ago

2.535.3

2 months ago

2.535.1

2 months ago

2.535.2

2 months ago

2.535.0

2 months ago

2.531.0

2 months ago

2.534.0

2 months ago

2.530.0

2 months ago

2.533.0

2 months ago

2.532.0

2 months ago

2.526.0

3 months ago

2.525.0

4 months ago

2.524.0

4 months ago

2.516.0

9 months ago

2.523.2

6 months ago

2.523.1

6 months ago

2.523.0

7 months ago

2.515.0

9 months ago

2.519.0

8 months ago

2.522.0

7 months ago

2.518.0

9 months ago

2.521.0

8 months ago

2.517.0

9 months ago

2.520.0

8 months ago

2.514.0

1 year ago

2.512.0

1 year ago

2.513.1

1 year ago

2.513.0

1 year ago

2.511.0

1 year ago

2.509.0

1 year ago

2.507.0

2 years ago

2.505.0

2 years ago

2.510.0

1 year ago

2.500.0

2 years ago

2.502.0

2 years ago

2.504.0

2 years ago

2.508.0

1 year ago

2.506.0

2 years ago

2.501.0

2 years ago

2.503.0

2 years ago

2.402.0

2 years ago

2.400.0

2 years ago

2.301.0

2 years ago

2.403.0

2 years ago

2.401.0

2 years ago

2.300.0

3 years ago

2.280.0

3 years ago

2.290.0

3 years ago

2.270.0

3 years ago

2.240.0

3 years ago

2.250.0

3 years ago

2.260.0

3 years ago

2.230.0

3 years ago

2.220.0

3 years ago

2.200.0

3 years ago

2.91.0

3 years ago

2.210.0

3 years ago

2.101.0

3 years ago

2.90.0

3 years ago

2.100.0

3 years ago

2.80.0

3 years ago

2.70.0

3 years ago

2.60.0

4 years ago

2.53.0

4 years ago

2.54.0

4 years ago

2.52.0

4 years ago

2.51.0

4 years ago

2.50.0

4 years ago

2.49.0

4 years ago

2.48.0

4 years ago

2.47.0

4 years ago

2.46.0

4 years ago

2.45.0

4 years ago

2.44.0

4 years ago

2.43.0

4 years ago

2.42.0

4 years ago

2.39.0

4 years ago

2.41.0

4 years ago

2.40.0

4 years ago

2.38.0

4 years ago

2.37.0

4 years ago

2.36.0

4 years ago

2.35.0

4 years ago

2.34.0

4 years ago

2.33.0

4 years ago

2.32.0

4 years ago

2.31.0

4 years ago

2.30.0

4 years ago

2.29.0

4 years ago

2.28.0

5 years ago

2.27.0

5 years ago

2.26.0

5 years ago

2.25.0

5 years ago

2.24.0

5 years ago

2.23.0

5 years ago

2.22.0

5 years ago

2.21.0

5 years ago

2.20.0

5 years ago

2.19.0

5 years ago

2.18.0

5 years ago

2.17.0

5 years ago

2.16.0

5 years ago

2.15.0

5 years ago

2.14.0

5 years ago

2.13.0

5 years ago

2.12.0

5 years ago

2.11.0

5 years ago

2.10.0

5 years ago

2.9.0

5 years ago

2.8.0

5 years ago

2.7.0

5 years ago

2.6.0

5 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.3.0

5 years ago

2.2.0

5 years ago

2.1.0

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago