mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-20 02:37:41 -05:00
Moves Python code out of interpreter file (#207)
* make copy of .py files part of build process * move code out ofinterpreter file and make it download and load code during initialization * fix double ; in interpreter * remove debugging print * update dependencies * fix project name and version * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * lint * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * change fmt-py * lint * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * remove extra content * define missing strict type * create build folder if doesn't exist Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -50,7 +50,7 @@ export class PyRepl extends BaseEvalElement {
|
||||
|
||||
// add an extra div where we can attach the codemirror editor
|
||||
this.editorNode = document.createElement('div');
|
||||
addClasses(this.editorNode, ["editor-box", "border", "border-gray-300", "group", "relative"]);
|
||||
addClasses(this.editorNode, ['editor-box', 'border', 'border-gray-300', 'group', 'relative']);
|
||||
this.shadow.appendChild(this.wrapper);
|
||||
}
|
||||
|
||||
@@ -64,60 +64,61 @@ export class PyRepl extends BaseEvalElement {
|
||||
languageConf.of(python()),
|
||||
keymap.of([
|
||||
...defaultKeymap,
|
||||
{ key: "Ctrl-Enter", run: createCmdHandler(this) },
|
||||
{ key: "Shift-Enter", run: createCmdHandler(this) }
|
||||
])
|
||||
{ key: 'Ctrl-Enter', run: createCmdHandler(this) },
|
||||
{ key: 'Shift-Enter', run: createCmdHandler(this) },
|
||||
]),
|
||||
];
|
||||
const customTheme = EditorView.theme({
|
||||
'&.cm-focused .cm-editor': { outline: '0px' },
|
||||
'.cm-scroller': { lineHeight: 2.5 },
|
||||
'.cm-activeLine': { backgroundColor: '#fff' },
|
||||
'.cm-content': { padding: 0, backgroundColor: '#f5f5f5' },
|
||||
'&.cm-focused .cm-content': { border: '1px solid #1876d2' }
|
||||
'&.cm-focused .cm-editor': { outline: '0px' },
|
||||
'.cm-scroller': { lineHeight: 2.5 },
|
||||
'.cm-activeLine': { backgroundColor: '#fff' },
|
||||
'.cm-content': { padding: 0, backgroundColor: '#f5f5f5' },
|
||||
'&.cm-focused .cm-content': { border: '1px solid #1876d2' },
|
||||
});
|
||||
|
||||
|
||||
if (!this.hasAttribute('theme')) {
|
||||
this.theme = this.getAttribute('theme');
|
||||
if (this.theme == 'dark'){
|
||||
extensions.push(oneDarkTheme);
|
||||
}
|
||||
extensions.push(customTheme);
|
||||
this.theme = this.getAttribute('theme');
|
||||
if (this.theme == 'dark') {
|
||||
extensions.push(oneDarkTheme);
|
||||
}
|
||||
extensions.push(customTheme);
|
||||
}
|
||||
|
||||
|
||||
const startState = EditorState.create({
|
||||
doc: this.code.trim(),
|
||||
extensions: extensions
|
||||
doc: this.code.trim(),
|
||||
extensions: extensions,
|
||||
});
|
||||
|
||||
|
||||
this.editor = new EditorView({
|
||||
state: startState,
|
||||
parent: this.editorNode
|
||||
state: startState,
|
||||
parent: this.editorNode,
|
||||
});
|
||||
|
||||
|
||||
const mainDiv = document.createElement('div');
|
||||
addClasses(mainDiv, ["parentBox", "flex", "flex-col", "mt-2", "mx-8", "relative"])
|
||||
addClasses(mainDiv, ['parentBox', 'flex', 'flex-col', 'mt-2', 'mx-8', 'relative']);
|
||||
|
||||
// add Editor to main PyScript div
|
||||
mainDiv.appendChild(this.editorNode);
|
||||
|
||||
|
||||
// Play Button
|
||||
this.btnRun = document.createElement('button');
|
||||
this.btnRun.innerHTML = '<svg id="" class="svelte-fa svelte-ps5qeg" style="height:20px;width:20px;vertical-align:-.125em;transform-origin:center;overflow:visible;color:green" viewBox="0 0 384 512" aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg"><g transform="translate(192 256)" transform-origin="96 0"><g transform="translate(0,0) scale(1,1)"><path d="M361 215C375.3 223.8 384 239.3 384 256C384 272.7 375.3 288.2 361 296.1L73.03 472.1C58.21 482 39.66 482.4 24.52 473.9C9.377 465.4 0 449.4 0 432V80C0 62.64 9.377 46.63 24.52 38.13C39.66 29.64 58.21 29.99 73.03 39.04L361 215z" fill="currentColor" transform="translate(-192 -256)"></path></g></g></svg>';
|
||||
addClasses(this.btnRun, ["absolute", "right-1", "bottom-3", "opacity-0", "group-hover:opacity-100"]);
|
||||
this.btnRun.innerHTML =
|
||||
'<svg id="" class="svelte-fa svelte-ps5qeg" style="height:20px;width:20px;vertical-align:-.125em;transform-origin:center;overflow:visible;color:green" viewBox="0 0 384 512" aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg"><g transform="translate(192 256)" transform-origin="96 0"><g transform="translate(0,0) scale(1,1)"><path d="M361 215C375.3 223.8 384 239.3 384 256C384 272.7 375.3 288.2 361 296.1L73.03 472.1C58.21 482 39.66 482.4 24.52 473.9C9.377 465.4 0 449.4 0 432V80C0 62.64 9.377 46.63 24.52 38.13C39.66 29.64 58.21 29.99 73.03 39.04L361 215z" fill="currentColor" transform="translate(-192 -256)"></path></g></g></svg>';
|
||||
addClasses(this.btnRun, ['absolute', 'right-1', 'bottom-3', 'opacity-0', 'group-hover:opacity-100']);
|
||||
this.editorNode.appendChild(this.btnRun);
|
||||
|
||||
this.btnRun.onclick = wrap(this);
|
||||
|
||||
function wrap(el: any){
|
||||
function evaluatePython() {
|
||||
el.evaluate();
|
||||
}
|
||||
return evaluatePython;
|
||||
|
||||
function wrap(el: any) {
|
||||
function evaluatePython() {
|
||||
el.evaluate();
|
||||
}
|
||||
return evaluatePython;
|
||||
}
|
||||
|
||||
if (!this.id) {
|
||||
console.log(
|
||||
'WARNING: <pyrepl> define with an id. <pyrepl> should always have an id. More than one <pyrepl> on a page won\'t work otherwise!',
|
||||
"WARNING: <pyrepl> define with an id. <pyrepl> should always have an id. More than one <pyrepl> on a page won't work otherwise!",
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user