1
1
import { EditorState , EditorView , basicSetup } from "@codemirror/basic-setup"
2
2
import { python } from "@codemirror/lang-python"
3
+ // @ts -ignore
3
4
import { StateCommand } from '@codemirror/state' ;
4
5
import { keymap , ViewUpdate } from "@codemirror/view" ;
5
6
import { defaultKeymap } from "@codemirror/commands" ;
6
7
import { oneDarkTheme } from "@codemirror/theme-one-dark" ;
7
8
8
-
9
- import { pyodideLoaded , loadedEnvironments } from '../stores' ;
9
+ import { pyodideLoaded , loadedEnvironments , componentDetailsNavOpen , currentComponentDetails } from '../stores' ;
10
10
import { addClasses } from '../utils' ;
11
- import { debug } from "svelte/internal" ;
12
11
13
12
// Premise used to connect to the first available pyodide interpreter
14
13
let pyodideReadyPromise ;
@@ -20,6 +19,11 @@ loadedEnvironments.subscribe(value => {
20
19
environments = value ;
21
20
} ) ;
22
21
22
+ let propertiesNavOpen ;
23
+ componentDetailsNavOpen . subscribe ( value => {
24
+ propertiesNavOpen = value ;
25
+ } ) ;
26
+
23
27
function createCmdHandler ( el ) {
24
28
// Creates a codemirror cmd handler that calls the el.evaluate when an event
25
29
// triggers that specific cmd
@@ -52,6 +56,7 @@ export class PyScript extends HTMLElement {
52
56
53
57
// add an extra div where we can attach the codemirror editor
54
58
this . editorNode = document . createElement ( 'div' ) ;
59
+ addClasses ( this . editorNode , [ "editor-box" ] )
55
60
this . shadow . appendChild ( this . wrapper ) ;
56
61
}
57
62
@@ -84,13 +89,12 @@ export class PyScript extends HTMLElement {
84
89
} )
85
90
86
91
let mainDiv = document . createElement ( 'div' ) ;
87
- addClasses ( mainDiv , [ "flex" , "flex-col" , "border-4" , "border-dashed" , "border-gray-200" , "rounded-lg" ] )
88
-
89
- mainDiv . appendChild ( this . editorNode ) ;
92
+ addClasses ( mainDiv , [ "parentBox" , "flex" , "flex-col" , "border-4" , "border-dashed" , "border-gray-200" , "rounded-lg" ] )
93
+ // add Editor to main PyScript div
90
94
91
95
// Butons DIV
92
96
var eDiv = document . createElement ( 'div' ) ;
93
- addClasses ( eDiv , "flex flex-row-reverse space-x-reverse space-x-4 font-mono text-white text-sm font-bold leading-6 dev-buttons-group" . split ( " " ) )
97
+ addClasses ( eDiv , "buttons-box relative top-0 right-0 flex flex-row-reverse space-x-reverse space-x-4 font-mono text-white text-sm font-bold leading-6 dev-buttons-group" . split ( " " ) )
94
98
eDiv . setAttribute ( "role" , "group" ) ;
95
99
96
100
// Play Button
@@ -113,6 +117,17 @@ export class PyScript extends HTMLElement {
113
117
// Settings button
114
118
this . btnConfig = document . createElement ( 'button' ) ;
115
119
this . btnConfig . innerHTML = '<svg id="" class="svelte-fa svelte-ps5qeg" style="height:1em;vertical-align:-.125em;transform-origin:center;overflow:visible" viewBox="0 0 512 512" aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg"><g transform="translate(256 256)" transform-origin="128 0"><g transform="translate(0,0) scale(1,1)"><path d="M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z" fill="currentColor" transform="translate(-256 -256)"></path></g></g></svg>' ;
120
+ this . btnConfig . onclick = function toggleNavBar ( evt ) {
121
+ console . log ( 'clicked' ) ;
122
+ componentDetailsNavOpen . set ( ! propertiesNavOpen ) ;
123
+
124
+ currentComponentDetails . set ( [
125
+ { key : "auto-generate" , value : true } ,
126
+ { key :"target" , value : "default" } ,
127
+ { key : "source" , value : "self" }
128
+ ] )
129
+ }
130
+
116
131
addClasses ( this . btnConfig , buttonClasses ) ;
117
132
addClasses ( this . btnConfig , [ "bg-blue-500" ] )
118
133
eDiv . appendChild ( this . btnConfig ) ;
@@ -122,8 +137,8 @@ export class PyScript extends HTMLElement {
122
137
this . editorOut . classList . add ( "output" ) ;
123
138
this . editorOut . hidden = true ;
124
139
125
-
126
140
mainDiv . appendChild ( eDiv ) ;
141
+ mainDiv . appendChild ( this . editorNode ) ;
127
142
mainDiv . appendChild ( this . editorOut ) ;
128
143
this . appendChild ( mainDiv ) ;
129
144
@@ -140,7 +155,6 @@ export class PyScript extends HTMLElement {
140
155
let pyodide = await pyodideReadyPromise ;
141
156
// debugger
142
157
try {
143
-
144
158
// @ts -ignore
145
159
let output = pyodide . runPython ( this . editor . state . doc . toString ( ) ) ;
146
160
if ( output !== undefined ) {
0 commit comments