From 16ad412fb5470b6177cc682350f23e029d06a534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ya=C3=ABl=20Guilloux?= Date: Tue, 17 Oct 2023 03:40:28 +0200 Subject: [PATCH] feat(playground): wip playground & browser build; needs a release --- build/base.config.ts | 68 ----- build/base.ts | 11 - integrations/astro/build.config.ts | 2 +- integrations/browser/build.ts | 18 +- integrations/browser/package.json | 4 + integrations/browser/src/core.ts | 41 ++- integrations/browser/src/theme.ts | 23 +- integrations/language-server/build.config.ts | 2 - integrations/language-server/package.json | 8 +- integrations/nuxt/build.config.ts | 2 +- integrations/pinceau/build.config.ts | 2 +- integrations/react/build.config.ts | 6 +- integrations/react/package.json | 5 + integrations/react/src/plugin.ts | 2 +- integrations/react/src/types/index.ts | 2 +- .../react/src/{utils => }/unplugin.ts | 8 +- integrations/react/src/utils.ts | 2 - .../react/src/utils/runtime-exports.ts | 3 - integrations/react/src/utils/virtual.ts | 7 +- integrations/repl/package.json | 4 + .../repl/public/react-plugin-proxy.js | 20 ++ .../repl/public/svelte-plugin-proxy.js | 20 ++ integrations/repl/public/vue-plugin-proxy.js | 17 ++ integrations/repl/src/components/Repl.vue | 4 +- integrations/repl/src/components/TopBar.vue | 12 +- .../src/components/editor/EditorContainer.vue | 4 +- .../repl/src/components/monaco/Monaco.vue | 1 + .../repl/src/components/monaco/cdn.ts | 3 + .../repl/src/components/monaco/env.ts | 48 +++- .../repl/src/components/monaco/utils.ts | 1 + .../src/components/monaco/volar.worker.ts | 4 +- .../repl/src/components/output/Output.vue | 5 +- .../repl/src/components/output/Preview.vue | 21 +- .../repl/src/components/output/srcdoc.html | 2 + integrations/repl/src/jiti-proxy.ts | 1 + integrations/repl/src/store/index.ts | 36 ++- integrations/repl/src/store/pinceau.ts | 194 ++++++++++++++ integrations/repl/src/store/react.ts | 53 ++-- integrations/repl/src/store/svelte.ts | 38 ++- integrations/repl/src/store/vue.ts | 59 ++++- integrations/repl/src/transforms/index.ts | 4 +- integrations/repl/src/transforms/vue.ts | 39 ++- integrations/repl/test/App.vue | 2 +- integrations/repl/vite.config.ts | 18 +- integrations/svelte/build.config.ts | 7 +- integrations/svelte/package.json | 5 + integrations/svelte/src/plugin.ts | 2 +- integrations/svelte/src/types/index.ts | 2 +- .../svelte/src/{utils => }/unplugin.ts | 10 +- integrations/svelte/src/utils.ts | 3 - .../svelte/src/utils/runtime-exports.ts | 3 - integrations/svelte/src/utils/virtual.ts | 7 +- integrations/volar/build.config.ts | 2 +- integrations/vscode/build.config.ts | 2 +- integrations/vscode/package.json | 8 +- integrations/vue/build.config.ts | 6 +- integrations/vue/package.json | 5 + integrations/vue/src/plugin.ts | 2 +- integrations/vue/src/types/index.ts | 2 +- integrations/vue/src/{utils => }/unplugin.ts | 10 +- integrations/vue/src/utils.ts | 2 - integrations/vue/src/utils/runtime-exports.ts | 3 - integrations/vue/src/utils/virtual.ts | 7 +- package.json | 1 + packages/core/build.config.ts | 3 +- packages/core/package.json | 3 +- packages/core/src/plugin.ts | 6 + packages/core/src/types/core-context.ts | 13 + packages/core/src/types/virtual-context.ts | 4 - packages/core/src/utils.ts | 1 + packages/core/src/utils/core-context.ts | 3 + packages/core/src/utils/fs.ts | 17 ++ packages/core/src/utils/load.ts | 13 +- packages/core/src/utils/transform-context.ts | 3 + packages/core/src/utils/unplugin.ts | 2 +- packages/core/src/utils/virtual-context.ts | 13 - packages/integration/build.config.ts | 2 +- packages/palette/output/pinceau.d.ts | 3 +- packages/palette/package.json | 5 + packages/runtime/build.config.ts | 2 +- packages/stringify/build.config.ts | 2 +- packages/style/build.config.ts | 2 +- packages/theme/build.config.ts | 13 +- packages/theme/package.json | 1 - packages/theme/src/utils.ts | 2 + packages/theme/src/utils/config-content.ts | 51 ++++ packages/theme/src/utils/config-context.ts | 2 +- .../theme/src/utils/config-definitions.ts | 4 +- packages/theme/src/utils/config-file.ts | 37 +-- packages/theme/src/utils/config-layers.ts | 36 ++- packages/theme/src/utils/media-queries.ts | 14 + pnpm-lock.yaml | 247 +++++++++++------- tests/aliases.ts | 3 + tests/package.json | 3 +- tests/unit/core.test.ts | 12 +- tests/unit/react.test.ts | 5 +- tests/unit/style.test.ts | 3 + tests/unit/svelte.test.ts | 8 +- tests/unit/theme.test.ts | 39 ++- tests/unit/vue.test.ts | 5 +- 100 files changed, 1056 insertions(+), 441 deletions(-) delete mode 100644 build/base.config.ts delete mode 100644 build/base.ts rename integrations/react/src/{utils => }/unplugin.ts (80%) delete mode 100644 integrations/react/src/utils/runtime-exports.ts create mode 100644 integrations/repl/public/react-plugin-proxy.js create mode 100644 integrations/repl/public/svelte-plugin-proxy.js create mode 100644 integrations/repl/public/vue-plugin-proxy.js create mode 100644 integrations/repl/src/jiti-proxy.ts create mode 100644 integrations/repl/src/store/pinceau.ts rename integrations/svelte/src/{utils => }/unplugin.ts (85%) delete mode 100644 integrations/svelte/src/utils/runtime-exports.ts rename integrations/vue/src/{utils => }/unplugin.ts (87%) delete mode 100644 integrations/vue/src/utils/runtime-exports.ts create mode 100644 packages/core/src/utils/fs.ts create mode 100644 packages/theme/src/utils/config-content.ts create mode 100644 packages/theme/src/utils/media-queries.ts diff --git a/build/base.config.ts b/build/base.config.ts deleted file mode 100644 index 61f72c1a..00000000 --- a/build/base.config.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { copyFile, mkdir } from 'node:fs/promises' -import { createResolver } from '@nuxt/kit' -import { defineBuildConfig } from 'unbuild' - -// @ts-expect-error -const { resolve } = createResolver(import.meta.url) - -export default defineBuildConfig({ - entries: [ - 'src/index', - 'src/vite', - 'src/nuxt', - 'src/utils', - 'src/runtime', - 'src/nitro', - 'src/volar', - ], - hooks: { - 'build:done': async () => { - await mkdir(resolve('../dist/runtime'), { recursive: true }) - await copyFile(resolve('../src/runtime/schema.server.mjs'), resolve('../dist/runtime/schema.server.mjs')) - }, - }, - failOnWarn: false, - clean: true, - declaration: true, - rollup: { - emitCJS: true, - }, - externals: [ - 'chalk', - 'ohash', - 'vite', - 'pathe', - 'fast-glob', - 'ufo', - '@nuxt/kit', - 'vue', - '@vue', - 'vue/compiler-sfc', - '@vue/compiler-sfc', - 'style-dictionary-esm', - 'jiti', - 'tinycolor2', - 'pinceau', - 'pinceau/types', - '$pinceau', - '$pinceau/theme', - '$pinceau/utils', - 'pinceau.css', - '#imports', - '#internal', - '#internal/nitro', - '#build', - '#build/pinceau', - '#build/pinceau/index', - '#build/pinceau/utils', - 'nitropack', - 'nanoid', - 'untyped', - '@volar/language-core', - '@volar/source-map', - 'muggle-string', - '@babel/types', - 'ast-types', - 'rollup', - ], -}) diff --git a/build/base.ts b/build/base.ts deleted file mode 100644 index e7115732..00000000 --- a/build/base.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { resolve } from 'node:path' -import { build } from 'unbuild' -import baseBuildConfig from './base.config' - -const root = resolve(__dirname, '..') - -async function buildTargets() { - return await build(root, false, baseBuildConfig) -} - -buildTargets().then(() => console.log('Build completed.')) diff --git a/integrations/astro/build.config.ts b/integrations/astro/build.config.ts index 4372661a..33d5d1d9 100644 --- a/integrations/astro/build.config.ts +++ b/integrations/astro/build.config.ts @@ -19,7 +19,7 @@ export default defineBuildConfig({ name: 'utils', }, ], - failOnWarn: false, + clean: true, declaration: true, rollup: { diff --git a/integrations/browser/build.ts b/integrations/browser/build.ts index 3ceafbef..6a7263dc 100644 --- a/integrations/browser/build.ts +++ b/integrations/browser/build.ts @@ -1,10 +1,10 @@ import { build } from 'tsup' -import { env, node, nodeless } from 'unenv' +import { env, nodeless } from 'unenv' -const { external, alias } = env(nodeless, node) +const { external, alias } = env(nodeless) build({ - minify: true, + // minify: true, treeshake: true, dts: true, platform: 'browser', @@ -28,7 +28,11 @@ build({ options.external = options.external ?? [] options.external.push('@vue/*') options.external.push('vue') - options.external.push('jiti') + options.external.push('svelte') + options.external.push('svelte/*') + options.external.push('@sveltejs/*') + options.external.push('react') + options.external.push('react-dom') options.external.push('@volar/*') options.external.push(...external) options.external.push('$pinceau/*') @@ -36,15 +40,11 @@ build({ options.alias = { ...options.alias, ...alias, - 'fs': 'fs', - 'node:fs': 'fs', - 'fs/promises': 'fs/promises', - 'node:fs/promises': 'fs/promises', 'fast-glob': 'unenv/runtime/mock/noop', } options.define = { 'process.env': '0', - 'process.cwd': '0', + 'pathToFileURL': '0', 'process.platform': '0', } options.splitting = true diff --git a/integrations/browser/package.json b/integrations/browser/package.json index 309f1ea7..04f63f17 100644 --- a/integrations/browser/package.json +++ b/integrations/browser/package.json @@ -81,5 +81,9 @@ "@pinceau/vue": "workspace:*", "jiti": "^1.20.0", "tsup": "^7.2.0" + }, + "dependencies": { + "esbuild-plugin-pipe": "^0.2.0", + "esbuild-plugin-text-replace": "^1.3.0" } } diff --git a/integrations/browser/src/core.ts b/integrations/browser/src/core.ts index 89ccd86a..5852d9ea 100644 --- a/integrations/browser/src/core.ts +++ b/integrations/browser/src/core.ts @@ -1,2 +1,41 @@ -export * from '@pinceau/core/utils' +export { + PINCEAU_SCRIPTS_EXTENSIONS, + PINCEAU_SFC_EXTENSIONS, + PINCEAU_STYLES_EXTENSIONS, + PINCEAU_SUPPORTED_EXTENSIONS, + PINCEAU_TEMPLATE_EXTENSIONS, + REFERENCES_REGEX, + astTypes, + debugMarker, + errorMessage, + evalDeclaration, + expressionToAst, + fileLink, + findCallees, + findDefaultExport, + get, + getCharAfterLastImport, + getDefaultOptions, + isPathIncluded, + isRawTokenLike, + isResponsiveTokenObjectLike, + merger, + normalizeOptions, + parsePinceauQuery, + parseAst, + parseTemplate, + pathToVarName, + printAst, + set, + toHash, + tokensPaths, + transform, + usePinceauContext, + usePinceauTransformContext, + usePinceauVirtualContext, + walkTemplate, + visitAst, + typeToAst, + resolveId, +} from '@pinceau/core/utils' export type * from '@pinceau/core' diff --git a/integrations/browser/src/theme.ts b/integrations/browser/src/theme.ts index 6ece3ad0..0bf82a93 100644 --- a/integrations/browser/src/theme.ts +++ b/integrations/browser/src/theme.ts @@ -1,3 +1,24 @@ -export * from '@pinceau/theme/utils' +export { + cssFormat, + declarationFormat, + definitionsFormat, + generateTheme, + helperRegex, + hmrFormat, + javascriptFormat, + isDesignTokenLike, + isResponsiveToken, + isSafeConstName, + isTokenNode, + pinceauNameTransformer, + pinceauVariableTransformer, + transformIndexHtml, + utilsTypesFormat, + utilsFormat, + schemaFormat, + typescriptFormat, + resolveMediaQueriesKeys, + resolveNodePath, +} from '@pinceau/theme/utils' export * from '@pinceau/theme/transforms' export type * from '@pinceau/theme' diff --git a/integrations/language-server/build.config.ts b/integrations/language-server/build.config.ts index 990da20d..fe288a52 100644 --- a/integrations/language-server/build.config.ts +++ b/integrations/language-server/build.config.ts @@ -5,10 +5,8 @@ export default defineBuildConfig({ { input: 'src/index.ts', name: 'index', - format: 'esm', }, ], - failOnWarn: false, clean: true, declaration: false, rollup: { diff --git a/integrations/language-server/package.json b/integrations/language-server/package.json index 177bb00d..7b342e51 100644 --- a/integrations/language-server/package.json +++ b/integrations/language-server/package.json @@ -13,7 +13,13 @@ "license": "MIT", "author": "Tahul ", "type": "module", - "main": "dist/index.js", + "main": "dist/index.cjs", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, "scripts": { "build": "unbuild", "clean": "rm -rf dist", diff --git a/integrations/nuxt/build.config.ts b/integrations/nuxt/build.config.ts index 4f14c17f..1f5ff8bd 100644 --- a/integrations/nuxt/build.config.ts +++ b/integrations/nuxt/build.config.ts @@ -7,7 +7,7 @@ export default defineBuildConfig({ name: 'index', }, ], - failOnWarn: false, + clean: true, declaration: true, rollup: { diff --git a/integrations/pinceau/build.config.ts b/integrations/pinceau/build.config.ts index 765c1b68..a655afa5 100644 --- a/integrations/pinceau/build.config.ts +++ b/integrations/pinceau/build.config.ts @@ -11,7 +11,7 @@ export default defineBuildConfig({ name: 'plugin', }, ], - failOnWarn: false, + clean: true, declaration: true, rollup: { diff --git a/integrations/react/build.config.ts b/integrations/react/build.config.ts index efc3d4c4..eadd7c6e 100644 --- a/integrations/react/build.config.ts +++ b/integrations/react/build.config.ts @@ -22,8 +22,12 @@ export default defineBuildConfig({ input: 'src/utils.ts', name: 'utils', }, + { + input: 'src/unplugin.ts', + name: 'unplugin', + }, ], - failOnWarn: false, + clean: true, declaration: true, rollup: { diff --git a/integrations/react/package.json b/integrations/react/package.json index 7c4a9b18..753de5fb 100644 --- a/integrations/react/package.json +++ b/integrations/react/package.json @@ -35,6 +35,11 @@ "types": "./dist/utils.d.ts", "import": "./dist/utils.mjs", "require": "./dist/utils.cjs" + }, + "./unplugin": { + "types": "./dist/unplugin.d.ts", + "import": "./dist/unplugin.mjs", + "require": "./dist/unplugin.cjs" } }, "main": "./dist/index.cjs", diff --git a/integrations/react/src/plugin.ts b/integrations/react/src/plugin.ts index cafcf26a..fb30cb48 100644 --- a/integrations/react/src/plugin.ts +++ b/integrations/react/src/plugin.ts @@ -1,6 +1,6 @@ import { createPinceauIntegration } from '@pinceau/integration' import type { PinceauIntegration } from '@pinceau/integration' -import { PinceauReactPlugin } from './utils/unplugin' +import { PinceauReactPlugin } from './unplugin' const pinceauPlugin: PinceauIntegration = createPinceauIntegration( [ diff --git a/integrations/react/src/types/index.ts b/integrations/react/src/types/index.ts index a7892492..0b789f91 100644 --- a/integrations/react/src/types/index.ts +++ b/integrations/react/src/types/index.ts @@ -9,7 +9,7 @@ export type PinceauStyledComponent< Attrs extends {} = {}, > = React.FunctionComponent & React.PropsWithChildren & Attrs> -export interface StyledComponentFactory< +export interface VueStyledComponentFactory< Type extends SupportedHTMLElements, OuterProps extends {} = {}, OuterAttrs extends {} = {}, diff --git a/integrations/react/src/utils/unplugin.ts b/integrations/react/src/unplugin.ts similarity index 80% rename from integrations/react/src/utils/unplugin.ts rename to integrations/react/src/unplugin.ts index d9637ec2..475a7c55 100644 --- a/integrations/react/src/utils/unplugin.ts +++ b/integrations/react/src/unplugin.ts @@ -2,8 +2,10 @@ import { getPinceauContext, transform, transformInclude } from '@pinceau/core/ut import type { PinceauContext } from '@pinceau/core' import { createUnplugin } from 'unplugin' import type { UnpluginInstance } from 'unplugin' -import { suite } from '../transforms/suite' -import { registerVirtualOutputs } from './virtual' +import { suite } from './transforms/suite' +import { registerVirtualOutputs } from './utils/virtual' + +export { registerVirtualOutputs } export const PinceauReactPlugin: UnpluginInstance = createUnplugin(() => { let ctx: PinceauContext @@ -21,7 +23,7 @@ export const PinceauReactPlugin: UnpluginInstance = createUnplugin(() ctx.addTypes({ imports: [ - 'import type { StyledComponentFactory as ReactStyledComponentFactory } from \'@pinceau/react\'', + 'import type { ReactStyledComponentFactory } from \'@pinceau/react\'', ], global: [ 'export const $styled: { [Type in SupportedHTMLElements]: ReactStyledComponentFactory }', diff --git a/integrations/react/src/utils.ts b/integrations/react/src/utils.ts index 02dd9582..0f13749d 100644 --- a/integrations/react/src/utils.ts +++ b/integrations/react/src/utils.ts @@ -1,4 +1,2 @@ -export * from './utils/runtime-exports' export * from './utils/runtime-plugin' -export * from './utils/unplugin' export * from './utils/virtual' diff --git a/integrations/react/src/utils/runtime-exports.ts b/integrations/react/src/utils/runtime-exports.ts deleted file mode 100644 index 4140431d..00000000 --- a/integrations/react/src/utils/runtime-exports.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function createRuntimeExports() { - return 'export { usePinceauRuntime } from \'@pinceau/svelte/runtime\'' -} diff --git a/integrations/react/src/utils/virtual.ts b/integrations/react/src/utils/virtual.ts index 0f15eb01..04b9fe03 100644 --- a/integrations/react/src/utils/virtual.ts +++ b/integrations/react/src/utils/virtual.ts @@ -1,14 +1,14 @@ +import fs from 'node:fs' import { join } from 'pathe' import type { PinceauContext } from '@pinceau/core' +import { writeOutput } from '@pinceau/core/utils' import { createReactPlugin } from './runtime-plugin' -import { createRuntimeExports } from './runtime-exports' /** * These target needs to be written. */ export function registerVirtualOutputs(ctx: PinceauContext) { const outputs: [string, string, string][] = [ - ['$pinceau', '/__pinceau_runtime.js', createRuntimeExports()], ['$pinceau/react-plugin', '/__pinceau_react_plugin.js', createReactPlugin(ctx)], ] @@ -16,7 +16,6 @@ export function registerVirtualOutputs(ctx: PinceauContext) { // Write plugin & runtime exports outputs if (ctx.options.theme.buildDir) { - ctx.writeOutput('$pinceau', join(ctx.options.theme.buildDir, 'runtime.js')) - ctx.writeOutput('$pinceau/react-plugin', join(ctx.options.theme.buildDir, 'react-plugin.js')) + writeOutput('$pinceau/react-plugin', join(ctx.options.theme.buildDir, 'react-plugin.js'), ctx.outputs, fs) } } diff --git a/integrations/repl/package.json b/integrations/repl/package.json index d3e38482..2e8d1feb 100644 --- a/integrations/repl/package.json +++ b/integrations/repl/package.json @@ -43,6 +43,7 @@ }, "dependencies": { "@iconify/json": "^2.2.128", + "import-mapper": "^0.0.4", "monaco-jsx-syntax-highlight": "^1.2.0", "splitpanes": "^3.1.5", "unplugin-icons": "^0.17.0", @@ -51,9 +52,12 @@ "devDependencies": { "@babel/types": "^7.23.0", "@microsoft/api-extractor": "^7.38.0", + "@pinceau/browser": "workspace:*", "@pinceau/configs": "workspace:*", "@pinceau/palette": "workspace:*", "@pinceau/vue": "workspace:*", + "@pinceau/svelte": "workspace:*", + "@pinceau/react": "workspace:*", "@rollup/plugin-replace": "^5.0.3", "@types/node": "^20.8.5", "@vitejs/plugin-vue": "^4.4.0", diff --git a/integrations/repl/public/react-plugin-proxy.js b/integrations/repl/public/react-plugin-proxy.js new file mode 100644 index 00000000..c305d9d1 --- /dev/null +++ b/integrations/repl/public/react-plugin-proxy.js @@ -0,0 +1,20 @@ +import { useRuntimeSheet, useThemeSheet } from '@pinceau/runtime' + +export const PinceauReactOptions = { dev: false, colorSchemeMode: 'media', computedStyles: true, variants: true, ssr: { theme: true, runtime: true }, appId: false } + +export const PinceauContext = React.createContext() + +export const usePinceauContext = () => React.useContext(PinceauContext) + +export function PinceauProvider({ options, children, cb }) { + const userOptions = { ...PinceauReactOptions, ...options } + + const themeSheet = useThemeSheet(userOptions) + const runtimeSheet = useRuntimeSheet({ themeSheet, ...userOptions }) + + const ssr = { toString: () => runtimeSheet.toString() } + + if (cb) { cb(ssr) } + + return React.createElement(PinceauContext.Provider, { value: { themeSheet, runtimeSheet, ssr }, children }) +} diff --git a/integrations/repl/public/svelte-plugin-proxy.js b/integrations/repl/public/svelte-plugin-proxy.js new file mode 100644 index 00000000..21f189b5 --- /dev/null +++ b/integrations/repl/public/svelte-plugin-proxy.js @@ -0,0 +1,20 @@ +import { useThemeSheet, useRuntimeSheet } from '@pinceau/runtime' + + export const PinceauSvelteOptions = {"dev":false,"colorSchemeMode":"media","computedStyles":true,"variants":true,"ssr":{"theme":true,"runtime":true},"appId":false} + + let userOptions + + let themeSheet +export const getRuntimeSheet = () => runtimeSheet + + let runtimeSheet +export const getThemeSheet = () => themeSheet + + export const pinceauPlugin = (options) => { + userOptions = { ...PinceauSvelteOptions, ...options } + + themeSheet = useThemeSheet(userOptions) + runtimeSheet = useRuntimeSheet({ themeSheet, ...userOptions }) + } + + export const ssr = { toString: () => runtimeSheet.toString() } diff --git a/integrations/repl/public/vue-plugin-proxy.js b/integrations/repl/public/vue-plugin-proxy.js new file mode 100644 index 00000000..efa85eed --- /dev/null +++ b/integrations/repl/public/vue-plugin-proxy.js @@ -0,0 +1,17 @@ +import { useThemeSheet, useRuntimeSheet } from '@pinceau/runtime' + +export const PinceauVueOptions = {"dev":false,"colorSchemeMode":"media","computedStyles":true,"variants":true,"ssr":{"theme":true,"runtime":true},"appId":false} + +export const PinceauVue = { + install(app, options = {}) { + const _options = { ...PinceauVueOptions, ...options } + + const themeSheet = useThemeSheet(_options) + app.provide('pinceauThemeSheet', themeSheet) + + const runtimeSheet = useRuntimeSheet({ themeSheet, ..._options }) + app.provide('pinceauRuntimeSheet', runtimeSheet) + + app.config.globalProperties.$pinceauSSR = { toString: () => runtimeSheet.toString() } + } +} \ No newline at end of file diff --git a/integrations/repl/src/components/Repl.vue b/integrations/repl/src/components/Repl.vue index d2d0db7a..c50ae542 100644 --- a/integrations/repl/src/components/Repl.vue +++ b/integrations/repl/src/components/Repl.vue @@ -44,7 +44,7 @@ const props = withDefaults(defineProps(), { showTsConfig: true, showTheme: true, clearConsole: true, - ssr: false, + ssr: true, compilerOptions: () => ({}), previewOptions: () => ({ headHTML: '', @@ -77,6 +77,8 @@ compilerOptions.script.fs = { store.init() +store.pinceauProvider.init() + provide('store', store) provide('autoresize', props.autoResize) provide('import-map', toRef(props, 'showImportMap')) diff --git a/integrations/repl/src/components/TopBar.vue b/integrations/repl/src/components/TopBar.vue index e9a61938..fa4cc9f8 100644 --- a/integrations/repl/src/components/TopBar.vue +++ b/integrations/repl/src/components/TopBar.vue @@ -35,6 +35,15 @@ const frameworkVersion = computed({ store.transformer.setVersion(v) }, }) + +const pinceauVersion = computed({ + get() { + return store.transformer.targetVersion || store.transformer.defaultVersion + }, + set(v) { + // + }, +})