diff --git a/example.html b/example.html index 7d2d506..2b68379 100644 --- a/example.html +++ b/example.html @@ -15,6 +15,7 @@ padding: 16px; font-family: Roboto, Noto, sans-serif; font-size: 14px; + vertical-align: top; } code { display: block; @@ -34,6 +35,8 @@
diff --git a/src/main.js b/src/main.js
index 904208b..9afd901 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,6 +2,9 @@ import {demoConfig} from "./demo-config";
import "@vanillawc/wc-codemirror";
import "./script-graph";
+import "./script-graph2";
+
+import { mdiAsterisk, mdiArrowUp, mdiArrowDown } from "@mdi/js";
let index_counter = 0;
let nodes = [];
@@ -47,6 +50,70 @@ const structure_tree = (inp) => {
}
+const structure_tree2 = () => {
+ return [
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 1"),
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 2"),
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 3"),
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 4"),
+ children: [
+ [
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number A1"),
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number A2"),
+ },
+ ],
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number B"),
+ end: false,
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number B"),
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number B"),
+ },
+ ]
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 4"),
+ children: [
+ {
+ icon: mdiArrowUp,
+ clickCallback: () => console.log("Return"),
+ },
+ {
+ icon: mdiArrowDown,
+ clickCallback: () => console.log("Return"),
+ },
+ ],
+ },
+ {
+ icon: mdiAsterisk,
+ clickCallback: () => console.log("Number 1"),
+ },
+ ];
+}
+
window.onload = () => {
let src = demoConfig;
@@ -65,6 +132,11 @@ window.onload = () => {
const graph = document.createElement("script-graph");
graph.tree = structure_tree(src);
+
+ const graph2 = document.createElement("script-graph2");
+ graph2.tree = structure_tree2(src);
+ document.querySelector("#graph2").appendChild(graph2);
+
graph.addEventListener("selected", (ev) => {
const idx = ev.detail;
const code = document.querySelector("code");
diff --git a/src/script-graph.ts b/src/script-graph.ts
index 74af505..afddb62 100644
--- a/src/script-graph.ts
+++ b/src/script-graph.ts
@@ -50,6 +50,7 @@ class ScriptGraph extends LitElement {
* Tree Node Structure
* {
* icon: svg,
+ * styles:
* end: false
* children: [[TreeNode],...]
* click: callback,undefined
diff --git a/src/script-graph2.ts b/src/script-graph2.ts
new file mode 100644
index 0000000..c318d84
--- /dev/null
+++ b/src/script-graph2.ts
@@ -0,0 +1,169 @@
+import {
+ LitElement,
+ html,
+ css,
+ svg,
+ property
+} from "lit-element";
+
+const SIZE = 35;
+const DIST = 20;
+
+interface TreeNode {
+ icon: String;
+ styles: String;
+ end?: Boolean;
+ children?: (TreeNode | TreeNode[])[];
+ clickCallback?: any;
+ addCallback?: any;
+}
+
+class ScriptGraph2 extends LitElement {
+ @property() selected = null;
+ @property() tree: [TreeNode];
+ @property() nodeSize = SIZE;
+ @property() nodeSeparation = DIST;
+
+ private _draw_node(x, y, node) {
+ return svg`
+