Skip to content

Commit 908370a

Browse files
author
michaelsboost
committed
minor bug fixes, hashes now work as intended
1 parent d3bff84 commit 908370a

File tree

7 files changed

+176
-165
lines changed

7 files changed

+176
-165
lines changed

.DS_Store

2 KB
Binary file not shown.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ If you've ever used jsfiddle, jsbin, dabblet, liveweave, codepen, cssdeck, cssde
1010
Version
1111
-------------
1212

13-
1.2.2
13+
1.2.3
1414

1515
License
1616
-------------

go/.DS_Store

2 KB
Binary file not shown.

go/dist/App.min.js

+139-135
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/dist/App.min.js.map

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kodeweave",
3-
"version": "1.2.2",
3+
"version": "1.2.3",
44
"type": "module",
55
"scripts": {
66
"build:css": "postcss src/bundle.css -o dist/style.css",

go/src/App.js

+32-25
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ let app = {
3838
href: 'https://michaelsboost.com/',
3939
src: 'imgs/author.jpg'
4040
},
41-
version: '1.2.2',
41+
version: '1.2.3',
4242
url: 'https://github.com/michaelsboost/kodeWeave/',
4343
license: 'https://github.com/michaelsboost/kodeWeave/blob/main/LICENSE'
4444
}
@@ -295,22 +295,24 @@ const icons = (function() {
295295
})();
296296

297297
// Reactive objects
298-
window.project = onChange(p, (property, oldValue, newValue) => {
298+
window.project = onChange(p, async (property, oldValue, newValue) => {
299299
const iframe = document.getElementById('iframe');
300-
const doc = iframe.contentWindow.document;
300+
const doc = iframe ? iframe.contentWindow.document : null;
301301
if (oldValue !== newValue) {
302302
localStorage.setItem('kodeWeave', JSON.stringify(project));
303303
App.render('#app');
304+
304305
if (property.toString() === 'activePanel') {
305306
getIFrameClientSize();
306307
if (!window.editorManager) return;
307308
if (project.activePanel === 'html') setActiveEditor(editorManager.htmlEditor)
308309
if (project.activePanel === 'css') setActiveEditor(editorManager.cssEditor)
309310
if (project.activePanel === 'javascript') setActiveEditor(editorManager.javascriptEditor)
310311
}
312+
311313
if (!App.initialRender) {
312314
let string = property.toString();
313-
// diff nodes
315+
314316
if (string === 'css' || string === 'console') {
315317
let consoleCSS = `
316318
[data-zwj=zwjkonsole] {
@@ -327,7 +329,7 @@ window.project = onChange(p, (property, oldValue, newValue) => {
327329
doc.getElementById('cuxjju3ew').textContent = consoleCSS;
328330
}
329331
}
330-
// render right away
332+
331333
if (string === 'html') {
332334
renderPreview(project.autorun);
333335
if (!window.editorManager) return;
@@ -347,9 +349,13 @@ window.project = onChange(p, (property, oldValue, newValue) => {
347349
if (string === 'module' || string === 'meta' || string === 'libraries' || string === 'html_pre_processor' || string === 'css_pre_processor' || string === 'javascript_pre_processor') {
348350
renderPreview(project.autorun);
349351
}
352+
350353
if (string === "previewDark") {
351-
doc.documentElement.setAttribute('data-theme', project.previewDark ? 'dark' : 'light');
354+
if (doc) {
355+
doc.documentElement.setAttribute('data-theme', project.previewDark ? 'dark' : 'light');
356+
}
352357
}
358+
353359
if (string === "dark") {
354360
App.render('#app');
355361
document.documentElement.setAttribute('data-theme', project.dark ? 'dark' : 'light');
@@ -2893,9 +2899,7 @@ window.importProject = () => {
28932899
reader.onload = event => {
28942900
try {
28952901
importJSON(JSON.parse(event.target.result));
2896-
setTimeout(function() {
2897-
renderPreview(true);
2898-
}, 100);
2902+
renderPreview(true);
28992903
} catch (error) {
29002904
console.error('Error parsing JSON file:', error);
29012905
}
@@ -3939,6 +3943,10 @@ window.screenshot = async () => {
39393943
removeScript("../libraries/jszip/FileSaver.min.js");
39403944
}
39413945
}
3946+
window.createBlobURL = (content, type) => {
3947+
const blob = new Blob([content], { type });
3948+
return URL.createObjectURL(blob);
3949+
}
39423950
window.renderPreview = async (forceRun = false) => {
39433951
const iframe = document.getElementById('iframe');
39443952
if (!iframe) return;
@@ -3957,10 +3965,14 @@ window.renderPreview = async (forceRun = false) => {
39573965

39583966
const javascriptCode = await compileCode('javascript');
39593967
const cssCode = await compileCode('css');
3960-
const consoleCSS = `
3961-
[data-zwj=zwjkonsole] {
3962-
display: ${project.console ? 'flex' : 'none'};
3963-
}`
3968+
const consoleCSS = `[data-zwj=zwjkonsole] {
3969+
display: ${project.console ? 'flex' : 'none'};
3970+
}
3971+
3972+
`
3973+
3974+
const domconsoleContent = await fetch('libraries/domconsole/dom-console-mod.min.js').then(response => response.text());
3975+
let jsLink = createBlobURL(javascriptCode, 'application/javascript');
39643976
const iframeSrc = `<html data-theme="${project.previewDark ? 'dark' : 'light'}">
39653977
<head>
39663978
<title>${project.title}</title>
@@ -3973,24 +3985,21 @@ window.renderPreview = async (forceRun = false) => {
39733985
<style id="cuxjju3ew" type="text/${project.css_pre_processor === 'css' || project.css_pre_processor === 'stylus' || project.css_pre_processor === 'sass' ? 'css' : project.css_pre_processor}">
39743986
${consoleCSS + cssCode}
39753987
</style>
3976-
<script type="module" src="libraries/domconsole/dom-console-mod.min.js" defer></script>
3988+
<script type="module">
3989+
${domconsoleContent}
3990+
</script>
39773991
</head>
39783992
<body>
39793993
${await compileCode('html')}
39803994
${scriptTags ? scriptTags : ''}
39813995
${project.css_pre_processor === 'less' ? '<script src="libraries/preprocessors/less.js"></script>' : ''}
3996+
<script type="${project.module ? 'module' : 'text/javascript'}" src="${jsLink}"></script>
39823997
</body>
39833998
</html>`;
3999+
const newHtmlBlobURL = createBlobURL(iframeSrc, 'text/html');
39844000

39854001
if (forceRun) {
3986-
iframe.setAttribute('srcdoc', iframeSrc);
3987-
iframe.onload = () => {
3988-
const doc = iframe.contentWindow.document;
3989-
const script = doc.createElement('script');
3990-
script.type = project.module ? 'module' : 'text/javascript';
3991-
script.textContent = javascriptCode;
3992-
doc.body.appendChild(script);
3993-
}
4002+
iframe.setAttribute('src', newHtmlBlobURL);
39944003
}
39954004
}
39964005

@@ -4084,9 +4093,7 @@ document.addEventListener('DOMContentLoaded', function() {
40844093

40854094
if (localStorage.getItem('kodeWeave')) {
40864095
importJSON(JSON.parse(localStorage.getItem('kodeWeave')));
4087-
setTimeout(function() {
4088-
renderPreview(true);
4089-
}, 100);
4096+
renderPreview(true);
40904097
}
40914098
}
40924099
window.onresize = () => getIFrameClientSize();

0 commit comments

Comments
 (0)