@@ -21,6 +21,21 @@ import { resolveImportPath, stringifyMarkdownTokens, toAtFS } from '../utils'
2121const regexId = / ^ \/ \@ s l i d e v \/ s l i d e \/ ( \d + ) \. ( m d | j s o n ) (?: \? i m p o r t ) ? $ /
2222const regexIdQuery = / ( \d + ?) \. ( m d | j s o n ) $ /
2323
24+ const vueContextImports = [
25+ 'import { inject as _vueInject, toRef as _vueToRef } from "vue"' ,
26+ `import {
27+ injectionSlidevContext as _injectionSlidevContext,
28+ injectionClicks as _injectionClicks,
29+ injectionCurrentPage as _injectionCurrentPage,
30+ injectionSlideContext as _injectionSlideContext,
31+ } from "@slidev/client/constants.ts"` . replace ( / \n \s + / g, '\n' ) ,
32+ 'const $slidev = _vueInject(_injectionSlidevContext)' ,
33+ 'const $nav = _vueToRef($slidev, "nav")' ,
34+ 'const $clicks = _vueInject(_injectionClicks)' ,
35+ 'const $page = _vueInject(_injectionCurrentPage)' ,
36+ 'const $renderContext = _vueInject(_injectionSlideContext)' ,
37+ ]
38+
2439export function getBodyJson ( req : Connect . IncomingMessage ) {
2540 return new Promise < any > ( ( resolve , reject ) => {
2641 let body = ''
@@ -345,14 +360,10 @@ ${title}
345360
346361 delete frontmatter . title
347362 const imports = [
348- 'import { inject as _vueInject, toRef as _vueToRef } from "vue"' ,
363+ ... vueContextImports ,
349364 `import InjectedLayout from "${ toAtFS ( layouts [ layoutName ] ) } "` ,
350- 'import { injectionSlidevContext as _injectionSlidevContext, injectionClicks as _injectionClicks } from "@slidev/client/constants.ts"' ,
351365 `const frontmatter = ${ JSON . stringify ( frontmatter ) } ` ,
352366 'const $frontmatter = frontmatter' ,
353- 'const $slidev = _vueInject(_injectionSlidevContext)' ,
354- 'const $nav = _vueToRef($slidev, "nav")' ,
355- 'const $clicks = _vueInject(_injectionClicks)' ,
356367 ]
357368
358369 code = code . replace ( / ( < s c r i p t s e t u p .* > ) / g, `$1\n${ imports . join ( '\n' ) } \n` )
@@ -370,11 +381,7 @@ ${title}
370381 if ( code . includes ( 'injectionSlidevContext' ) || code . includes ( 'injectionClicks' ) || code . includes ( 'const $slidev' ) )
371382 return code // Assume that the context is already imported and used
372383 const imports = [
373- 'import { inject as _vueInject, toRef as _vueToRef } from "vue"' ,
374- 'import { injectionSlidevContext as _injectionSlidevContext, injectionClicks as _injectionClicks } from "@slidev/client/constants.ts"' ,
375- 'const $slidev = _vueInject(_injectionSlidevContext)' ,
376- 'const $nav = _vueToRef($slidev, "nav")' ,
377- 'const $clicks = _vueInject(_injectionClicks)' ,
384+ ...vueContextImports ,
378385 ]
379386 const matchScript = code . match ( / < s c r i p t ( (? ! s e t u p ) .) * ( s e t u p ) ? .* > / )
380387 if ( matchScript && matchScript [ 2 ] ) {
0 commit comments