File tree Expand file tree Collapse file tree 8 files changed +28
-37
lines changed
lib/tutorial/adapters/rollup
routes/(authed)/playground/[id] Expand file tree Collapse file tree 8 files changed +28
-37
lines changed Original file line number Diff line number Diff line change 1
1
// REPL props
2
2
3
- export const svelteUrl = `https://unpkg.com/svelte@4` ;
4
3
export const mapbox_setup = `window.MAPBOX_ACCESS_TOKEN = '${
5
4
import . meta. env . VITE_MAPBOX_ACCESS_TOKEN
6
5
} ';`;
Original file line number Diff line number Diff line change @@ -24,8 +24,7 @@ export async function create(): Promise<Adapter> {
24
24
25
25
bundler = new Bundler ( {
26
26
packages_url : 'https://unpkg.com' ,
27
- svelte_url : `https://unpkg.com/svelte` ,
28
- // svelte_url: `${browser ? location.origin : ''}/svelte`, // TODO think about bringing back main-build for Playground?
27
+ svelte_version : 'latest' ,
29
28
onstatus ( val ) {
30
29
if ( ! done && val === null ) {
31
30
done = true ;
Original file line number Diff line number Diff line change 19
19
let modified = $state (false );
20
20
let setting_hash: any = null ;
21
21
22
+ // svelte-ignore non_reactive_update
22
23
let version = $page .url .searchParams .get (' version' ) || ' latest' ;
23
24
let is_pr_or_commit_version = version .startsWith (' pr-' ) || version .startsWith (' commit-' );
24
25
149
150
}
150
151
}
151
152
152
- const svelteUrl =
153
- browser && version === ' local'
154
- ? ` ${location .origin }/playground/local `
155
- : is_pr_or_commit_version
156
- ? version
157
- : ` https://unpkg.com/svelte@${version } ` ;
158
-
159
153
const relaxed = $derived (data .gist .relaxed || (data .user && data .user .id === data .gist .owner ));
160
154
</script >
161
155
201
195
<div style ="display: contents" onfocusout ={update_hash }>
202
196
<Repl
203
197
bind:this ={repl }
204
- { svelteUrl }
198
+ svelteVersion ={ version }
205
199
{relaxed }
206
200
{can_escape }
207
201
injectedJS ={mapbox_setup }
Original file line number Diff line number Diff line change 4
4
import { theme } from ' @sveltejs/site-kit/stores' ;
5
5
import { Repl } from ' @sveltejs/repl' ;
6
6
import { mapbox_setup } from ' ../../../../../config.js' ;
7
- import { onMount } from ' svelte ' ;
7
+ import { page } from ' $app/stores ' ;
8
8
9
9
let { data } = $props ();
10
10
11
11
let repl = $state () as ReturnType <typeof Repl >;
12
12
13
- onMount (() => {
14
- if (data .version !== ' local' ) {
15
- fetch (` https://unpkg.com/svelte@${data .version }/package.json ` )
13
+ // svelte-ignore non_reactive_update
14
+ let version = $page .url .searchParams .get (' version' ) || ' latest' ;
15
+ let is_pr_or_commit_version = version .startsWith (' pr-' ) || version .startsWith (' commit-' );
16
+
17
+ if (version !== ' local' && ! is_pr_or_commit_version ) {
18
+ $effect (() => {
19
+ fetch (` https://unpkg.com/svelte@${version }/package.json ` )
16
20
.then ((r ) => r .json ())
17
21
.then ((pkg ) => {
18
22
if (pkg .version !== data .version ) {
19
23
replaceState (` /playground/${data .gist .id }/embed?version=${pkg .version } ` , {});
20
24
}
21
25
});
22
- }
23
- });
26
+ });
27
+ }
24
28
25
29
afterNavigate (() => {
26
30
repl ?.set ({
27
31
files: data .gist .components
28
32
});
29
33
});
30
34
31
- const svelteUrl =
32
- browser && data .version === ' local'
33
- ? ` ${location .origin }/playground/local `
34
- : ` https://unpkg.com/svelte@${data .version } ` ;
35
-
36
35
const relaxed = $derived (data .gist .relaxed || (data .user && data .user .id === data .gist .owner ));
37
36
</script >
38
37
48
47
{#if browser }
49
48
<Repl
50
49
bind:this ={repl }
51
- { svelteUrl }
50
+ svelteVersion ={ version }
52
51
{relaxed }
53
52
can _escape
54
53
injectedJS ={mapbox_setup }
Original file line number Diff line number Diff line change @@ -15,20 +15,20 @@ export default class Bundler {
15
15
16
16
constructor ( {
17
17
packages_url,
18
- svelte_url ,
18
+ svelte_version ,
19
19
onstatus,
20
20
onerror
21
21
} : {
22
22
packages_url : string ;
23
- svelte_url : string ;
23
+ svelte_version : string ;
24
24
onstatus : ( val : string | null ) => void ;
25
25
onerror ?: ( message : string ) => void ;
26
26
} ) {
27
- this . hash = `${ packages_url } :${ svelte_url } ` ;
27
+ this . hash = `${ packages_url } :${ svelte_version } ` ;
28
28
29
29
if ( ! workers . has ( this . hash ) ) {
30
30
const worker = new Worker ( ) ;
31
- worker . postMessage ( { type : 'init' , packages_url, svelte_url } ) ;
31
+ worker . postMessage ( { type : 'init' , packages_url, svelte_version } ) ;
32
32
workers . set ( this . hash , worker ) ;
33
33
}
34
34
Original file line number Diff line number Diff line change 12
12
13
13
interface Props {
14
14
packagesUrl? : string ;
15
- svelteUrl ? : any ;
15
+ svelteVersion ? : string ;
16
16
embedded? : boolean ;
17
17
orientation? : ' columns' | ' rows' ;
18
18
relaxed? : boolean ;
27
27
28
28
let {
29
29
packagesUrl = ' https://unpkg.com' ,
30
- svelteUrl = ` ${ BROWSER ? location . origin : ' ' }/svelte ` ,
30
+ svelteVersion = ' latest ' ,
31
31
embedded = false ,
32
32
orientation = ' columns' ,
33
33
relaxed = false ,
51
51
52
52
const workspace = new Workspace ([dummy ], {
53
53
initial: ' App.svelte' ,
54
- svelte_version:
55
- svelteUrl .startsWith (' pr-' ) || svelteUrl .startsWith (' commit-' )
56
- ? svelteUrl
57
- : svelteUrl .split (' @' )[1 ],
54
+ svelte_version: svelteVersion ,
58
55
onupdate() {
59
56
rebundle ();
60
57
onchange ?.();
123
120
const bundler = BROWSER
124
121
? new Bundler ({
125
122
packages_url: packagesUrl ,
126
- svelte_url: svelteUrl ,
123
+ svelte_version: svelteVersion ,
127
124
onstatus : (message ) => {
128
125
if (message ) {
129
126
// show bundler status, but only after time has elapsed, to
Original file line number Diff line number Diff line change @@ -40,8 +40,11 @@ let package_json: any;
40
40
self . addEventListener ( 'message' , async ( event : MessageEvent < BundleMessageData > ) => {
41
41
switch ( event . data . type ) {
42
42
case 'init' : {
43
- ( { packages_url, svelte_url } = event . data ) ;
44
- const match = / ^ ( p r | c o m m i t ) - ( .+ ) / . exec ( svelte_url ) ;
43
+ const svelte_version = event . data . svelte_version ;
44
+ packages_url = event . data . packages_url ;
45
+
46
+ svelte_url = `${ packages_url } /svelte@${ svelte_version } ` ;
47
+ const match = / ^ ( p r | c o m m i t ) - ( .+ ) / . exec ( svelte_version ) ;
45
48
46
49
let tarball : FileDescription [ ] | undefined ;
47
50
Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ export type BundleMessageData = {
53
53
type : 'init' | 'bundle' | 'status' | 'error' ;
54
54
message : string ;
55
55
packages_url : string ;
56
- svelte_url : string ;
56
+ svelte_version : string ;
57
57
files : File [ ] ;
58
58
options : CompileOptions ;
59
59
} ;
You can’t perform that action at this time.
0 commit comments