@next-bricks/vb-experiment 1.3.16 → 1.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/1469.1099f419.js +2 -0
- package/dist/chunks/1469.1099f419.js.map +1 -0
- package/dist/chunks/{2857.bfd7ab6b.js → 2857.da8e603e.js} +2 -2
- package/dist/chunks/2857.da8e603e.js.map +1 -0
- package/dist/chunks/7131.ed1c7310.js +2 -0
- package/dist/chunks/7131.ed1c7310.js.map +1 -0
- package/dist/chunks/app-playground.57f8b0b2.js +2 -0
- package/dist/chunks/app-playground.57f8b0b2.js.map +1 -0
- package/dist/chunks/{main.5eb0373c.js → main.0ecb65a5.js} +2 -2
- package/dist/chunks/{main.5eb0373c.js.map → main.0ecb65a5.js.map} +1 -1
- package/dist/chunks/tsx-playground.afd56710.js +2 -0
- package/dist/chunks/tsx-playground.afd56710.js.map +1 -0
- package/dist/{index.b762a597.js → index.ab859801.js} +2 -2
- package/dist/{index.b762a597.js.map → index.ab859801.js.map} +1 -1
- package/dist/manifest.json +13 -0
- package/dist/types.json +27 -0
- package/dist-types/tsx-playground/index.d.ts +7 -0
- package/package.json +2 -2
- package/dist/chunks/1469.083be8f8.js +0 -2
- package/dist/chunks/1469.083be8f8.js.map +0 -1
- package/dist/chunks/2857.bfd7ab6b.js.map +0 -1
- package/dist/chunks/4154.371b28c0.js +0 -2
- package/dist/chunks/4154.371b28c0.js.map +0 -1
- package/dist/chunks/app-playground.0745e311.js +0 -2
- package/dist/chunks/app-playground.0745e311.js.map +0 -1
- package/dist/chunks/tsx-playground.edb19559.js +0 -2
- package/dist/chunks/tsx-playground.edb19559.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/tsx-playground.edb19559.js","mappings":"mSAWIA,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IACxBF,EAAQG,OAAS,SAAc,KAAM,QACrCH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKnB,QAAe,KAAW,IAAQM,OAAS,IAAQA,YAASC,C,iBCrB5D,SAASC,EACdC,EACAT,GAEA,MAAO,CACLU,MAAO,MACPC,WAAY,CACVC,MAAOZ,EAAQa,SACX,CACEC,WAAY,2BACZC,eAAgB,aAChBC,aAAc,OACdC,QAAS,QAEX,CACEH,WAAY,oCACZC,eAAgB,yCAChBC,aAAc,6BACdC,QAAS,SAGjBR,WAEJ,C,0SCWA,MAAMS,EAAyBC,IAAAA,MAAWC,UAAY,CACpDC,cAAeC,EAAAA,EAAAA,gBAKb,iBAAkB,CAClBC,aAAc,oBAIZC,EAA2B,CAC/B,CACEC,SAAU,yCACVC,QAASC,EAAqBC,WAAW,mBAAoB,cAE/D,CACEH,SAAU,sCACVC,QAASG,KAAKC,UAAU,CACtBC,KAAM,WACNC,MAAO,kBAGX,CACEP,SAAU,oCACVC,QAASO,KAIP,cAAEC,EAAa,SAAEC,EAAQ,MAAEC,IAAUC,EAAAA,EAAAA,oBAAmB,IAAAC,EAAA,IAAAC,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAAAG,EAAA,IAAAC,QAAAC,EAAA,IAAAL,QAW9D,MAAAM,UAI4BC,EAAAA,iBAA+CC,WAAAA,GAAA,SAAAC,YAAAC,EAAAA,EAAAA,GAAA,KAAAP,IACzEQ,EAAAA,EAAAA,GAAA,KAAAZ,EAAAa,EAAA,QAAAD,EAAAA,EAAAA,GAAA,KAAAV,GAAAY,EAAA,MAAAC,EAAA,SAAAH,EAAAA,EAAAA,GAAA,KAAAT,GAAAa,EAAA,MAAAC,EAAA,SAUAL,EAAAA,EAAAA,GAAA,KAAAN,GAAaY,EAAA,MAAIC,IAAkB,IAAAC,EACrB,QAAZA,GAAAC,EAAAA,EAAAA,GAAAjB,EAAAkB,KAAKC,UAAO,IAAAH,GAAZA,EAAcI,KAAKL,EAAM,GACzB,WAVOM,GAAM,OAAAC,EAAAA,EAAAA,GAAA1B,EAAA,gBAANyB,CAAME,IAAAC,EAAAA,EAAAA,GAAA5B,EAAA,KAAA2B,EAAA,cAGNE,GAAS,OAAAH,EAAAA,EAAAA,GAAAxB,EAAA,mBAAT2B,CAASF,IAAAC,EAAAA,EAAAA,GAAA1B,EAAA,KAAAyB,EAAA,CASlBG,MAAAA,GACE,OACElD,IAAAA,cAACmD,EAAsB,CACrBN,OAAQH,KAAKG,OACbI,UAAWP,KAAKO,UAChBG,UAAUN,EAAAA,EAAAA,GAAKpB,EAALgB,OAGhB,EAOF,SAASW,EACPC,GAEA,OAAQA,GACN,IAAK,SACH,MAAO,OACT,IAAK,UACH,MAAO,UACT,IAAK,QAEL,IAAK,QACH,MAAO,QAEX,OAAOA,CACT,CAEA,SAASH,EAAsBI,GAIC,IAJA,OAC9BV,EAAM,UACNI,EAAS,SACTG,GAC4BG,EAC5B,MAAOC,EAAMC,IAAWC,EAAAA,EAAAA,UAASb,QAAAA,EAAU,IACrCc,GAAeC,EAAAA,EAAAA,kBAAiBJ,IAC/BK,EAASC,IAAcJ,EAAAA,EAAAA,aACvBK,EAAMC,IAAWN,EAAAA,EAAAA,YAElBO,GAAUC,EAAAA,EAAAA,UACd,IAAM,IAAI7D,KAAkB4C,QAAAA,EAAa,KACzC,CAACA,IAGGkB,GAAmBC,EAAAA,EAAAA,cACtBC,IACCZ,EAAQY,EAAEC,QACVlB,EAASiB,EAAEC,OAAO,GAEpB,CAAClB,KAEHmB,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAS,EA8Bb,OA7BA,iBACE,MAAMC,QAAeC,EAAAA,EAAAA,KACrB,GAAIF,EACF,OAEF,MAAMG,QAAeF,EAAOG,UAAUjB,GACtC,GAAIa,EACF,OAEFR,EAAQW,GACR,MAAME,EAAiBF,EAAOG,OAAOC,QAAQC,KAAUA,EAAIC,OACvDJ,EAAeK,OAAS,EAC1BpB,EACEe,EAAeM,KAAKC,IAAK,CACvBC,QAASD,EAAMC,QACf/B,SAAUD,EAAgB+B,EAAM9B,UAChCgC,gBAAiBF,EAAMH,KAAMM,IAAKC,MAAMC,KACxCC,YAAaN,EAAMH,KAAMM,IAAKC,MAAMG,OAAS,EAC7CC,cAAeR,EAAMH,KAAMM,IAAKM,IAAIJ,KACpCK,UAAWV,EAAMH,KAAMM,IAAKM,IAAIF,OAAS,OAI7C7B,OAAW1E,EAKd,CA5BD,GA6BO,KACLoF,GAAS,CAAI,CACd,GACA,CAACb,IAEJ,MAAMoC,GAAS7B,EAAAA,EAAAA,UAAQ,KAAM8B,EAAAA,EAAAA,aAAY,IACnCC,GAAMC,EAAAA,EAAAA,QAAuB,MAC7BC,GAAUD,EAAAA,EAAAA,QAEN,MA8EV,OA5EA3B,EAAAA,EAAAA,YAAU,KACR,MAAM6B,EAAYH,EAAII,QACtB,IAAKD,EACH,OAEF,MAAME,GAASC,EAAAA,EAAAA,GAAaR,GACtBS,GAAOC,EAAAA,EAAAA,qBAAoBL,EAAW,CAC1CE,SACAI,qBAAqB,IAIvB,OAFAP,EAAQE,QAAUG,EAEX,KACLA,EAAKG,UACLL,EAAOM,SACPT,EAAQE,QAAU,IAAI,CACvB,GACA,CAACN,KAIJxB,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAS,EAiDb,MAhDA,WACE,IAAKT,EACH,OAGF,IAAI8C,EACJ,IAAI,IAAAC,EAEF,GADAD,QAAsBE,EAAAA,EAAAA,GAAYhD,EAAM,CAAEgC,SAAQrG,UAAU,IACxD8E,EACF,OAEF,MAAM,MAAEjF,EAAK,QAAEyH,EAAO,UAAEC,EAAS,UAAEC,GAAcL,QAAAA,EAAiB,CAAC,QAC9C,QAArBC,EAAMX,EAAQE,eAAO,IAAAS,OAAA,EAAfA,EAAiB5D,OAAO3D,QAAAA,EAAS,GAAI,CACzCyH,UACAC,YACAC,cAEJ,CAAE,MAAO9B,GAAO,IAAA+B,EAEdC,QAAQhC,MAAM,yBAA0BA,GACzB,QAAf+B,EAAAhB,EAAQE,eAAO,IAAAc,GAAfA,EAAiBjE,OAAO,CACtB3D,MAAO8H,eAAeC,IAAI,yBACtB,wBACA,MACJ9H,WAAY,CACV+H,WAAY,OACZC,QAAS,CACPC,cAAe,IAEjBhI,MAAO,CACLiI,MAAO,uBAGXpI,SAAU,CACR,CACEC,MAAO,MACPC,WAAY,CACVmI,aAAaC,EAAAA,EAAAA,mBAAkBxC,OAKzC,CAID,EA9CD,GAgDO,KACLZ,GAAS,CAAI,CACd,GACA,CAACuB,EAAQhC,IAGV/D,IAAAA,cAAA,OAAK6H,UAAWC,EAAAA,EAAO1B,WACrBpG,IAAAA,cAAA,OAAK6H,UAAWC,EAAAA,EAAOC,QACrB/H,IAAAA,cAACgI,EAAAA,SAAQ,CAACC,SAAS,cACjBjI,IAAAA,cAACD,EAAsB,CACrBwC,MAAOM,EACPzC,aAAc+D,EACd+D,SAAS,aACTC,IAAI,mBACJC,gBAAgB,gBAChBC,MAAM,aACNpF,UAAWgB,EACXqE,aAAczE,EACd,sBAAoB,cAI1B7D,IAAAA,cAAA,OAAK6H,UAAWC,EAAAA,EAAOS,SACrBvI,IAAAA,cAAA,OAAK,eAAc+F,EAAQE,IAAKA,KAIxC,CAxLCuC,EAAA7G,IAAA0C,GAAApC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAM,EAAA8F,EAAAnG,GAAAoG,GAAAvH,EAAAwH,KAAAC,EAAAA,EAAAA,GAAAJ,EAAA,CA5BAzH,EAAc,+BAAgC,CAE7C8H,eAAe,KACf,EAGC7H,EAAS,CAAE8H,WAAW,IAAQ,aAG9B9H,EAAS,CAAE8H,WAAW,IAAQ,gBAG9B7H,EAAM,CAAE8H,KAAM,WAAW,WAAAC,IAAAlG,EAAAA,EAAAA,GAAAvB,EAAAyH,GAAA,CAAAA,EAAAjG,KAAAC,EAAAA,EAAAA,GAAAzB,EAAAyH,EAAAjG,KAAA,GAAAkG,GAAAvH,EAAAwH,KAAAC,EAAAA,EAAAA,GAAAF,KARArH,EAAAA,mBAAgB+G,G,4zDC/DrC1I,eAAe8G,EACpBhD,EACAlF,GAEA,MAAM,MAAEuK,GAAUrF,EAClB,IAAKqF,EACH,MAAM,IAAIC,MAAM,sCAGlB,MAAMC,EAAsB,CAC1BC,YAAa,IAAIC,IACjBC,IAAK1F,GAED2F,QAAuBC,EAAAA,EAAAA,GAAcP,EAAOE,EAAOzK,IAEnD,cAAE+K,EAAa,UAAEC,EAAS,aAAEC,GAAiBJ,EAEnD,IAAKE,EACH,MAAM,IAAIP,MAAM,sCAGlB,MAAMpC,EAAkC,GAClCC,EAA8B,GAEpC,IAAK,MAAM6C,IAAQ,IAAIF,KAAcC,EAAaE,UAC9B,aAAdD,EAAKhB,KACP9B,EAAUgD,KAAKF,EAAKG,UACG,aAAdH,EAAKhB,MACd7B,EAAU+C,KAAK,CACbrJ,MAAMuJ,EAAAA,EAAAA,GAAeJ,EAAKnJ,KAAO/B,EAAQkH,QACzCqE,OAAQL,EAAKK,OACbd,MAAOS,EAAK/C,UAKlB,MAAMqD,EAAUC,MAAMC,KAAKjB,EAAMC,aAAapE,KAC3CvE,IACC,MAAMiC,GAAS2H,EAAAA,EAAAA,KAAqBlD,IAAI1G,GACxC,IAAKiC,EACH,MAAM,IAAIwG,MAAM,mBAAmBzI,eAErC,MAAO,CACLA,OACAiC,SACA4H,YAAY,EACb,KAIC,MAAEC,EAAK,OAAEN,EAAM,QAAEpD,GAAY4C,EAMnC,MAAO,CACLc,QACAnL,MAAO,CACLA,MAAO,oBACPD,SARY8K,EAAOO,OAAOpL,GAC5B,CAAC,UAAW,kBAAmB,aAAaqL,SAASrL,EAAMA,SAOrC,EAACF,EAAAA,EAAAA,GAAQ+K,EAAQvL,IAAYuL,GAEnDpD,QAAS,IACJA,KACCnI,EAAQgM,aACRC,OAAOC,QAAQlM,EAAQgM,cAAc1F,KAAI5B,IAAA,IAAE3C,EAAM2B,GAAMgB,EAAA,MAAM,CAC3D3C,OACA2B,QACD,IACD,IAEN0E,UAAW,IAAIA,KAAcoD,GAC7BnD,YAEJ,C,skBCtFA,IAAI8D,EAEG,SAASR,IAad,OAZKQ,IACHA,EAAkB,IAAIC,IAAI,CACxB,CAAC,qBAAsBC,EAAkBC,IACzC,CAAC,+BAAgCD,EAAkBE,IACnD,CAAC,sBAAuBF,EAAkBG,IAC1C,CAAC,0BAA2BH,EAAkBI,IAC9C,CACE,gCACAJ,EAAkBK,OAIjBP,CACT,CAEA,SAASE,EAAkBrI,GACzB,OAAOA,EAAO2I,QAAQ,YAAa,IAAIA,QAAQ,qBAAsB,GACvE,C,kECvBIC,E,MAA0B,GAA4B,KAE1DA,EAAwBxB,KAAK,CAACyB,EAAOC,GAAI,wJAC6C,KAEtFF,EAAwBtM,OAAS,CAChC,UAAa,sBACb,OAAU,mBACV,QAAW,qBAEZ,S,iBCbO,SAASoH,EAAaR,GAC3B,MAAMO,EAASsF,SAASC,cAAc,OAKtC,OAJAvF,EAAOkB,QAAQzB,OAASA,EACxBO,EAAO7G,MAAMqM,SAAW,WACxBxF,EAAO7G,MAAMsM,MAAQzF,EAAO7G,MAAMuM,OAAS,IAC3CJ,SAASK,KAAKC,OAAO5F,GACdA,CACT,C","sources":["webpack:///./src/tsx-playground/styles.module.css?e933","webpack:///../../src/withBox.ts","webpack:///./src/tsx-playground/index.tsx","webpack:///../../../src/modules/convertView.ts","webpack:///../../../src/helpers/index.ts","webpack:///./src/tsx-playground/styles.module.css","webpack:///./src/tsx-playground/createPortal.ts"],"sourcesContent":["\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { BrickConf } from \"@next-core/types\";\nimport type { ConvertOptions } from \"./interfaces.js\";\n\nexport function withBox(\n children: BrickConf[] | undefined,\n options: ConvertOptions\n): BrickConf {\n return {\n brick: \"div\",\n properties: {\n style: options.expanded\n ? {\n background: \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(10px)\",\n borderRadius: \"16px\",\n padding: \"24px\",\n }\n : {\n background: \"var(--elevo-component-background)\",\n backdropFilter: \"var(--elevo-component-backdrop-filter)\",\n borderRadius: \"var(--elevo-border-radius)\",\n padding: \"16px\",\n },\n },\n children,\n };\n}\n","import React, {\n Suspense,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { httpErrorToString, unstable_createRoot } from \"@next-core/runtime\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\nimport { uniqueId } from \"lodash\";\nimport type {\n CodeEditor,\n CodeEditorProps,\n ExtraLib,\n ExtraMarker,\n} from \"@next-bricks/vs/code-editor\";\nimport nextTsxDefinition from \"@next-shared/tsx-parser/lib/next-tsx.d.ts?raw\";\nimport componentsDefinition from \"@next-shared/tsx-converter/lib/components.d.ts?raw\";\nimport { convertView, type ConvertResult } from \"@next-shared/tsx-converter\";\nimport type { ParsedApp } from \"@next-shared/tsx-parser\";\nimport \"@next-core/theme\";\nimport styles from \"./styles.module.css\";\nimport { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport { createPortal } from \"./createPortal.js\";\n\ninterface CodeEditorEvents {\n \"code.change\": CustomEvent<string>;\n}\n\ninterface CodeEditorMapEvents {\n onCodeChange: \"code.change\";\n}\n\nconst AsyncWrappedCodeEditor = React.lazy(async () => ({\n default: await asyncWrapBrick<\n CodeEditor,\n CodeEditorProps,\n CodeEditorEvents,\n CodeEditorMapEvents\n >(\"vs.code-editor\", {\n onCodeChange: \"code.change\",\n }),\n}));\n\nconst BUILTIN_LIBS: ExtraLib[] = [\n {\n filePath: \"/node_modules/next-tsx/components.d.ts\",\n content: componentsDefinition.replaceAll(\"export interface\", \"interface\"),\n },\n {\n filePath: \"/node_modules/next-tsx/package.json\",\n content: JSON.stringify({\n name: \"next-tsx\",\n types: \"./index.d.ts\",\n }),\n },\n {\n filePath: \"/node_modules/next-tsx/index.d.ts\",\n content: nextTsxDefinition,\n },\n];\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface TsxPlaygroundProps {\n source?: string;\n extraLibs?: ExtraLib[];\n}\n\n/**\n * 构件 `vb-experiment.tsx-playground`\n */\nexport\n@defineElement(\"vb-experiment.tsx-playground\", {\n // Monaco editor does not work well with shadow DOM\n shadowOptions: false,\n})\nclass TsxPlayground extends ReactNextElement implements TsxPlaygroundProps {\n /** 仅初始有效 */\n @property({ attribute: false })\n accessor source: string | undefined;\n\n @property({ attribute: false })\n accessor extraLibs: ExtraLib[] | undefined;\n\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<string>;\n\n #handleChange = (value: string) => {\n this.#change?.emit(value);\n };\n\n render() {\n return (\n <TsxPlaygroundComponent\n source={this.source}\n extraLibs={this.extraLibs}\n onChange={this.#handleChange}\n />\n );\n }\n}\n\ninterface TsxPlaygroundComponentProps extends TsxPlaygroundProps {\n onChange: (value: string) => void;\n}\n\nfunction convertSeverity(\n severity: \"notice\" | \"warning\" | \"error\" | \"fatal\"\n): \"Hint\" | \"Info\" | \"Warning\" | \"Error\" {\n switch (severity) {\n case \"notice\":\n return \"Hint\";\n case \"warning\":\n return \"Warning\";\n case \"error\":\n return \"Error\";\n case \"fatal\":\n return \"Error\";\n }\n return severity;\n}\n\nfunction TsxPlaygroundComponent({\n source,\n extraLibs,\n onChange,\n}: TsxPlaygroundComponentProps) {\n const [code, setCode] = useState(source ?? \"\");\n const deferredCode = useDeferredValue(code);\n const [markers, setMarkers] = useState<ExtraMarker[] | undefined>();\n const [view, setView] = useState<ParsedApp | undefined>();\n\n const allLibs = useMemo(\n () => [...BUILTIN_LIBS, ...(extraLibs ?? [])],\n [extraLibs]\n );\n\n const handleCodeChange = useCallback(\n (e: CustomEvent<string>) => {\n setCode(e.detail);\n onChange(e.detail);\n },\n [onChange]\n );\n useEffect(() => {\n let ignore = false;\n (async function run() {\n const worker = await getRemoteTsxParserWorker();\n if (ignore) {\n return;\n }\n const result = await worker.parseView(deferredCode);\n if (ignore) {\n return;\n }\n setView(result);\n const withNodeErrors = result.errors.filter((err) => !!err.node);\n if (withNodeErrors.length > 0) {\n setMarkers(\n withNodeErrors.map((error) => ({\n message: error.message,\n severity: convertSeverity(error.severity),\n startLineNumber: error.node!.loc!.start.line,\n startColumn: error.node!.loc!.start.column + 1,\n endLineNumber: error.node!.loc!.end.line,\n endColumn: error.node!.loc!.end.column + 1,\n }))\n );\n } else {\n setMarkers(undefined);\n }\n if (ignore) {\n return;\n }\n })();\n return () => {\n ignore = true;\n };\n }, [deferredCode]);\n\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n // const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n if (!view) {\n return;\n }\n // setLoading(true);\n let convertedView: ConvertResult | undefined;\n try {\n convertedView = await convertView(view, { rootId, expanded: true });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView ?? {};\n await rootRef.current?.render(brick ?? [], {\n context,\n functions,\n templates,\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n rootRef.current?.render({\n brick: customElements.get(\"easyops-default-error\")\n ? \"easyops-default-error\"\n : \"div\",\n properties: {\n errorTitle: \"解析失败\",\n dataset: {\n errorBoundary: \"\",\n },\n style: {\n color: \"var(--color-error)\",\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n },\n ],\n });\n }\n // if (!ignore) {\n // setLoading(false);\n // }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, view]);\n\n return (\n <div className={styles.container}>\n <div className={styles.editor}>\n <Suspense fallback=\"Loading...\">\n <AsyncWrappedCodeEditor\n value={source}\n onCodeChange={handleCodeChange}\n language=\"typescript\"\n uri=\"file:///view.tsx\"\n automaticLayout=\"fit-container\"\n theme=\"tm-vs-dark\"\n extraLibs={allLibs}\n extraMarkers={markers}\n data-override-theme=\"dark-v2\"\n />\n </Suspense>\n </div>\n <div className={styles.preview}>\n <div data-root-id={rootId} ref={ref} />\n </div>\n </div>\n );\n}\n","import type {\n BrickConfInTemplate,\n CustomTemplate,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport type { ParsedApp } from \"@next-shared/tsx-parser\";\nimport convertModule, {\n type ConvertedPartOfComponent,\n} from \"./convertModule.js\";\nimport type {\n ConvertState,\n ConvertOptions,\n ConvertResult,\n} from \"../interfaces.js\";\nimport { getHelperFunctions } from \"../helpers/index.js\";\nimport { getViewTplName } from \"./getTplName.js\";\nimport { withBox } from \"../withBox.js\";\n\nexport async function convertView(\n view: ParsedApp,\n options: ConvertOptions\n): Promise<ConvertResult> {\n const { entry } = view;\n if (!entry) {\n throw new Error(\"No entry module found in the view.\");\n }\n\n const state: ConvertState = {\n usedHelpers: new Set(),\n app: view,\n };\n const convertedEntry = await convertModule(entry, state, options);\n\n const { defaultExport, internals, namedExports } = convertedEntry;\n\n if (!defaultExport) {\n throw new Error(\"No view found in the entry module.\");\n }\n\n const functions: StoryboardFunction[] = [];\n const templates: CustomTemplate[] = [];\n\n for (const part of [...internals, ...namedExports.values()]) {\n if (part.type === \"function\") {\n functions.push(part.function);\n } else if (part.type === \"template\") {\n templates.push({\n name: getViewTplName(part.name!, options.rootId),\n bricks: part.bricks as BrickConfInTemplate[],\n state: part.context,\n });\n }\n }\n\n const helpers = Array.from(state.usedHelpers).map<StoryboardFunction>(\n (name) => {\n const source = getHelperFunctions().get(name);\n if (!source) {\n throw new Error(`Helper function ${name} not found`);\n }\n return {\n name,\n source,\n typescript: true,\n };\n }\n );\n\n const { title, bricks, context } = defaultExport as ConvertedPartOfComponent;\n\n const needBox = bricks.every((brick) =>\n [\"eo-form\", \"eo-descriptions\", \"eo-button\"].includes(brick.brick)\n );\n\n return {\n title,\n brick: {\n brick: \"eo-content-layout\",\n children: needBox ? [withBox(bricks, options)] : bricks,\n },\n context: [\n ...context,\n ...(options.withContexts\n ? Object.entries(options.withContexts).map(([name, value]) => ({\n name,\n value,\n }))\n : []),\n ],\n functions: [...functions, ...helpers],\n templates,\n };\n}\n","import mergeTexts from \"../../../src/helpers/mergeTexts.ts?raw\";\nimport getLatestMetricValue from \"../../../src/helpers/getLatestMetricValue.ts?raw\";\nimport extractList from \"../../../src/helpers/extractList.ts?raw\";\nimport groupMetricData from \"../../../src/helpers/groupMetricData.ts?raw\";\nimport getMetricDisplayNames from \"../../../src/helpers/getMetricDisplayNames.ts?raw\";\n\nlet helperFunctions: Map<string, string> | undefined;\n\nexport function getHelperFunctions() {\n if (!helperFunctions) {\n helperFunctions = new Map([\n [\"_helper_mergeTexts\", fixFunctionSource(mergeTexts)],\n [\"_helper_getLatestMetricValue\", fixFunctionSource(getLatestMetricValue)],\n [\"_helper_extractList\", fixFunctionSource(extractList)],\n [\"_helper_groupMetricData\", fixFunctionSource(groupMetricData)],\n [\n \"_helper_getMetricDisplayNames\",\n fixFunctionSource(getMetricDisplayNames),\n ],\n ]);\n }\n return helperFunctions;\n}\n\nfunction fixFunctionSource(source: string): string {\n return source.replace(/^export /m, \"\").replace(/^import [^\\n]+\\n/gm, \"\");\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--M22i1CYq{display:flex;height:100%}.editor--kF8SUoBP,\n.preview--gu5OlS2X{flex:1;min-width:0}.preview--gu5OlS2X{padding:1em;overflow:auto}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--M22i1CYq`,\n\t\"editor\": `editor--kF8SUoBP`,\n\t\"preview\": `preview--gu5OlS2X`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export function createPortal(rootId: string) {\n const portal = document.createElement(\"div\");\n portal.dataset.rootId = rootId;\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n}\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","withBox","children","brick","properties","style","expanded","background","backdropFilter","borderRadius","padding","AsyncWrappedCodeEditor","React","async","default","asyncWrapBrick","onCodeChange","BUILTIN_LIBS","filePath","content","componentsDefinition","replaceAll","JSON","stringify","name","types","nextTsxDefinition","defineElement","property","event","createDecorators","_TsxPlayground","_A","WeakMap","_B","_C","_TsxPlayground_brand","WeakSet","_handleChange","TsxPlayground","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_source","_init_extra_source","_init_extraLibs","_init_extra_extraLibs","_init_change","_init_extra_change","value","_classPrivateGetter2","_classPrivateGetter","this","_get_change","emit","source","_classPrivateFieldGet","v","_classPrivateFieldSet","extraLibs","render","TsxPlaygroundComponent","onChange","convertSeverity","severity","_ref","code","setCode","useState","deferredCode","useDeferredValue","markers","setMarkers","view","setView","allLibs","useMemo","handleCodeChange","useCallback","e","detail","useEffect","ignore","worker","getRemoteTsxParserWorker","result","parseView","withNodeErrors","errors","filter","err","node","length","map","error","message","startLineNumber","loc","start","line","startColumn","column","endLineNumber","end","endColumn","rootId","uniqueId","ref","useRef","rootRef","container","current","portal","createPortal","root","unstable_createRoot","supportsUseChildren","unmount","remove","convertedView","_rootRef$current","convertView","context","functions","templates","_rootRef$current2","console","customElements","get","errorTitle","dataset","errorBoundary","color","textContent","httpErrorToString","className","styles","editor","Suspense","fallback","language","uri","automaticLayout","theme","extraMarkers","preview","_TsxPlayground2","_set_change","c","_initClass","_applyDecs","shadowOptions","attribute","type","o","_","has","_checkInRHS","entry","Error","state","usedHelpers","Set","app","convertedEntry","convertModule","defaultExport","internals","namedExports","part","values","push","function","getViewTplName","bricks","helpers","Array","from","getHelperFunctions","typescript","title","every","includes","withContexts","Object","entries","helperFunctions","Map","fixFunctionSource","mergeTexts","getLatestMetricValue","extractList","groupMetricData","getMetricDisplayNames","replace","___CSS_LOADER_EXPORT___","module","id","document","createElement","position","width","height","body","append"],"sourceRoot":""}
|