more app fixes

This commit is contained in:
Ruben Fiszel
2023-04-10 21:57:07 +02:00
parent 5fc72ea2e6
commit 23e374b10d
10 changed files with 24 additions and 16 deletions
@@ -59,7 +59,7 @@
title="sandbox"
srcdoc={result
? '<scr' + `ipt type="application/javascript" src="/tailwind.js"></script>` + result
: 'No html'}
: ''}
/>
{/key}
<!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -226,7 +226,7 @@
)}
>
{String(result)}
{#if resolvedConfig.tooltip != ''}
{#if resolvedConfig.tooltip && resolvedConfig.tooltip != ''}
<Tooltip>{resolvedConfig.tooltip}</Tooltip>
{/if}
{#if resolvedConfig.copyButton && result}
@@ -3,15 +3,15 @@
import type { AppViewerContext } from '../../types'
export let id: string
const { worldStore } = getContext<AppViewerContext>('AppViewerContext')
const { initialized } = getContext<AppViewerContext>('AppViewerContext')
onMount(() => {
if (!$worldStore.initializedComponents.includes(id)) {
$worldStore.initializedComponents = [...$worldStore.initializedComponents, id]
if (!$initialized.initializedComponents.includes(id)) {
$initialized.initializedComponents = [...$initialized.initializedComponents, id]
}
})
onDestroy(() => {
$worldStore.initializedComponents = $worldStore.initializedComponents.filter((c) => c !== id)
$initialized.initializedComponents = $initialized.initializedComponents.filter((c) => c !== id)
})
</script>
@@ -48,6 +48,7 @@
if (firstDebounce) {
firstDebounce = false
cb()
return
}
if (timeout) {
clearTimeout(timeout)
@@ -48,7 +48,8 @@
mode,
stateId,
state,
componentControl
componentControl,
initialized
} = getContext<AppViewerContext>('AppViewerContext')
const dispatch = createEventDispatcher()
@@ -61,12 +62,12 @@
}
}
if (!$worldStore.initializedComponents.includes(id)) {
$worldStore.initializedComponents = [...$worldStore.initializedComponents, id]
if (!$initialized.initializedComponents.includes(id)) {
$initialized.initializedComponents = [...$initialized.initializedComponents, id]
}
onDestroy(() => {
$worldStore.initializedComponents = $worldStore.initializedComponents.filter((c) => c !== id)
$initialized.initializedComponents = $initialized.initializedComponents.filter((c) => c !== id)
})
$runnableComponents = $runnableComponents
@@ -112,7 +113,7 @@
function refreshIfAutoRefresh(_src: string) {
const refreshEnabled =
autoRefresh && ((recomputeOnInputChanged ?? true) || refreshOn?.length > 0)
if (refreshEnabled && $worldStore.initialized) {
if (refreshEnabled && $initialized.initialized) {
setDebouncedExecute()
}
}
@@ -80,6 +80,7 @@
worldStore,
app: appStore,
summary: summaryStore,
initialized: writable({ initialized: false, initializedComponents: [] }),
selectedComponent,
mode,
connectingInput,
@@ -48,6 +48,7 @@
const parentWidth = writable(0)
setContext<AppViewerContext>('AppViewerContext', {
worldStore: buildWorld(context),
initialized: writable({ initialized: false, initializedComponents: [] }),
app: appStore,
summary: writable(summary),
selectedComponent,
@@ -6,7 +6,7 @@
import type { AppViewerContext } from '../types'
import { allItems } from '../utils'
const { runnableComponents, app, worldStore } = getContext<AppViewerContext>('AppViewerContext')
const { runnableComponents, app, initialized } = getContext<AppViewerContext>('AppViewerContext')
let loading: boolean = false
let timeout: NodeJS.Timer | undefined = undefined
let interval: number | undefined = undefined
@@ -14,7 +14,7 @@
let firstLoad = false
$: !firstLoad &&
$worldStore.initializedComponents?.length ==
$initialized.initializedComponents?.length ==
allItems($app.grid, $app.subgrids).length + $app.hiddenInlineScripts.length &&
refresh()
$: componentNumber = Object.values($runnableComponents).filter((x) => x.autoRefresh).length
@@ -41,7 +41,7 @@
function refresh() {
let isFirstLoad = false
if (!firstLoad) {
$worldStore.initialized = true
$initialized.initialized = true
firstLoad = true
isFirstLoad = true
}
@@ -21,9 +21,9 @@
input: undefined,
hoveredComponent: undefined
}
$app = $app
$worldStore = $worldStore
}
$app = $app
$worldStore = $worldStore
}
$: $connectingInput && applyConnection()
@@ -133,6 +133,10 @@ export type AppViewerContext = {
worldStore: Writable<World>
app: Writable<App>
summary: Writable<string>
initialized: Writable<{
initializedComponents: string[]
initialized: boolean
}>
selectedComponent: Writable<string[] | undefined>
mode: Writable<EditorMode>
connectingInput: Writable<ConnectingInput>