Skip to content

Commit e8e553f

Browse files
committed
feat(repl): optionally enable preloader
1 parent 6ab8be0 commit e8e553f

File tree

7 files changed

+21
-0
lines changed

7 files changed

+21
-0
lines changed

packages/docs/src/repl/repl-options.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const ReplOptions = ({ input, versions, qwikVersion }: ReplOptionsProps)
2222
/>
2323

2424
<StoreBoolean label="Debug" inputProp="debug" input={input} />
25+
<StoreBoolean label="Preloader" inputProp="preloader" input={input} />
2526
</div>
2627
);
2728
};

packages/docs/src/repl/repl-share-url.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const dataDefaults: PlaygroundShareUrl = {
77
buildMode: 'development',
88
entryStrategy: 'segment',
99
files: [],
10+
preloader: false,
1011
};
1112
export const parsePlaygroundShareUrl = (shareable: string) => {
1213
if (typeof shareable === 'string' && shareable.length > 0) {
@@ -27,6 +28,10 @@ export const parsePlaygroundShareUrl = (shareable: string) => {
2728
if (ENTRY_STRATEGY_OPTIONS.includes(entryStrategy)) {
2829
data.entryStrategy = entryStrategy;
2930
}
31+
const preloader = params.get('preloader')!;
32+
if (preloader !== null) {
33+
data.preloader = true;
34+
}
3035

3136
if (params.has('files')) {
3237
// Old URLs that didn't compress
@@ -129,6 +134,13 @@ export const createPlaygroundShareUrl = (data: PlaygroundShareUrl, pathname = '/
129134
if (data.entryStrategy !== dataDefaults.entryStrategy) {
130135
params.set('entryStrategy', data.entryStrategy);
131136
}
137+
if (data.preloader !== dataDefaults.preloader) {
138+
if (data.preloader) {
139+
params.set('preloader', '');
140+
} else {
141+
params.delete('preloader');
142+
}
143+
}
132144

133145
params.set('f', compressFiles(data.files));
134146

@@ -184,4 +196,5 @@ interface PlaygroundShareUrl {
184196
buildMode: any;
185197
entryStrategy: any;
186198
files: any[];
199+
preloader?: boolean;
187200
}

packages/docs/src/repl/repl-share-url.unit.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const data = {
2424
code: 'console.log("bar");',
2525
},
2626
],
27+
preloader: false,
2728
};
2829
test('filesToStr', () => {
2930
assert.equal(

packages/docs/src/repl/repl.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export const Repl = component$((props: ReplProps) => {
108108
track(() => input.files);
109109
track(() => input.version);
110110
track(() => input.debug);
111+
track(() => input.preloader);
111112
track(() => store.serverWindow);
112113

113114
sendUserUpdateToReplServer(input, store);
@@ -210,6 +211,7 @@ export const sendUserUpdateToReplServer = (input: ReplAppInput, store: ReplStore
210211
version: input.version,
211212
serverUrl: store.serverUrl,
212213
deps: getDependencies(input),
214+
preloader: !!input.preloader,
213215
},
214216
};
215217

packages/docs/src/repl/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface ReplAppInput {
1313
buildMode: 'development' | 'production';
1414
entryStrategy: string;
1515
debug?: boolean;
16+
preloader?: boolean;
1617
}
1718

1819
export type PkgUrls = { [pkgName: string]: { [path: string]: string; version: string } };
@@ -23,6 +24,7 @@ export interface ReplInputOptions extends Omit<QwikRollupPluginOptions, 'srcDir'
2324
buildMode: 'development' | 'production';
2425
serverUrl: string | undefined;
2526
deps: PkgUrls;
27+
preloader: boolean;
2628
}
2729

2830
export interface ReplStore {

packages/docs/src/repl/worker/app-ssr-html.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export const appSsrHtml = async (options: ReplInputOptions, cache: Cache, result
7171
base: baseUrl,
7272
manifest: result.manifest,
7373
prefetchStrategy: null as any,
74+
preloader: options.preloader ? { debug: true } : false,
7475
}).catch((e) => {
7576
console.error('SSR failed', e);
7677
return {

packages/docs/src/routes/examples/[...id]/index!.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export default component$(() => {
7777
track(() => store.entryStrategy);
7878
track(() => store.files);
7979
track(() => store.version);
80+
track(() => store.preloader);
8081

8182
if (isBrowser) {
8283
if (store.version) {

0 commit comments

Comments
 (0)