11import { createDefaultServiceContainer , MiniatureView , NpmPackageLoader , BaseCustomWebcomponentBindingsService , JsonFileElementsService , DocumentContainer , CopyPasteAsJsonService , DebugView , UnkownElementsPropertiesService , sleep , RefactorView , BindingsRefactorService , TextRefactorService , SeperatorContextMenu , IDesignItem , DomConverter , PropertyGridWithHeader , DesignItem , ValueType , ObservedCustomElementsRegistry , IElementsJson , PreDefinedElementsService } from '@node-projects/web-component-designer' ;
2+ import type * as webllmType from "@mlc-ai/web-llm" ;
23
34import { NodeHtmlParserService } from '@node-projects/web-component-designer-htmlparserservice-nodehtmlparser' ;
45import { CodeViewMonaco } from '@node-projects/web-component-designer-codeview-monaco' ;
@@ -7,13 +8,6 @@ import { CssParserStylesheetService } from '@node-projects/web-component-designe
78import '@node-projects/web-component-designer-widgets-wunderbaum' ;
89import { PaletteTreeView , BindableObjectsBrowser , TreeViewExtended , ExpandCollapseContextMenu } from '@node-projects/web-component-designer-widgets-wunderbaum' ;
910
10- import * as webllm from "@mlc-ai/web-llm" ;
11- type EditResult = {
12- answer : string ;
13- html : string ;
14- css : string ;
15- } ;
16-
1711let serviceContainer = createDefaultServiceContainer ( ) ;
1812serviceContainer . register ( "bindingService" , new BaseCustomWebcomponentBindingsService ( ) ) ;
1913let rootDir = "/web-component-designer-demo" ;
@@ -26,6 +20,30 @@ serviceContainer.registerLast("propertyService", new UnkownElementsPropertiesSer
2620serviceContainer . register ( "refactorService" , new BindingsRefactorService ( ) ) ;
2721serviceContainer . register ( "refactorService" , new TextRefactorService ( ) ) ;
2822
23+ /*
24+ globalThis.MonacoEnvironment = {
25+ getWorker: (_moduleId, label) => {
26+ switch (label) {
27+ case 'json':
28+ return new Worker(new URL('monaco-editor/esm/vs/language/json/json.worker', import.meta.url), { type: 'module' });
29+ case 'css':
30+ case 'scss':
31+ case 'less':
32+ return new Worker(new URL('monaco-editor/esm/vs/language/css/css.worker', import.meta.url), { type: 'module' });
33+ case 'html':
34+ case 'handlebars':
35+ case 'razor':
36+ return new Worker(new URL('monaco-editor/esm/vs/language/html/html.worker', import.meta.url), { type: 'module' });
37+ case 'typescript':
38+ case 'javascript':
39+ return new Worker(new URL('monaco-editor/esm/vs/language/typescript/ts.worker', import.meta.url), { type: 'module' });
40+ default:
41+ return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url), { type: 'module' });
42+ }
43+ }
44+ };
45+ */
46+
2947serviceContainer . config . codeViewWidget = CodeViewMonaco ;
3048
3149serviceContainer . designerContextMenuExtensions . push ( new ExpandCollapseContextMenu ( ) ) ;
@@ -512,7 +530,7 @@ export class AppShell extends BaseCustomWebComponentConstructorAppend {
512530 nd . parent . container . setActiveChild ( nd . container ) ;
513531 }
514532
515- engine : webllm . MLCEngine ;
533+ engine : webllmType . MLCEngine ;
516534 async LLM ( ) {
517535 let op = this . _getDomElement < HTMLTextAreaElement > ( 'llmOutput' ) ;
518536 let btn = this . _getDomElement < HTMLTextAreaElement > ( 'llmEnable' ) ;
@@ -522,6 +540,8 @@ export class AppShell extends BaseCustomWebComponentConstructorAppend {
522540 }
523541 }
524542 async initLLM ( ) {
543+ const webllm : typeof webllmType = await import ( "@mlc-ai/web-llm" ) ;
544+
525545 let op = this . _getDomElement < HTMLTextAreaElement > ( 'llmOutput' ) ;
526546 // Initialize with a progress callback
527547 const initProgressCallback = ( progress ) => {
@@ -575,11 +595,16 @@ export class AppShell extends BaseCustomWebComponentConstructorAppend {
575595 } ) ;
576596 }
577597
598+
578599 async editHtmlCss (
579600 prompt : string ,
580601 html : string ,
581602 css : string
582- ) : Promise < EditResult > {
603+ ) : Promise < {
604+ answer : string ;
605+ html : string ;
606+ css : string ;
607+ } > {
583608
584609 const systemPrompt = `
585610You are an expert HTML and CSS editor inside a visual designer tool.
0 commit comments