@opentiny/genui-sdk-vue 1.3.0 → 1.3.1-alpha.2

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.
Files changed (47) hide show
  1. package/README.md +11 -2
  2. package/dist/ConfigProvider-B_1dX_dv.js +131 -0
  3. package/dist/ConfigProvider-B_1dX_dv.js.map +1 -0
  4. package/dist/{GenuiChatWithMaterials.vue_vue_type_script_setup_true_lang-CxcSUrjG.js → GenuiChatWithMaterials.vue_vue_type_script_setup_true_lang-zsZgFWJw.js} +3 -3
  5. package/dist/{GenuiChatWithMaterials.vue_vue_type_script_setup_true_lang-CxcSUrjG.js.map → GenuiChatWithMaterials.vue_vue_type_script_setup_true_lang-zsZgFWJw.js.map} +1 -1
  6. package/dist/GenuiRenderer-f2_6u1TA.js +141 -0
  7. package/dist/GenuiRenderer-f2_6u1TA.js.map +1 -0
  8. package/dist/{GenuiRendererWithMaterials.vue_vue_type_script_setup_true_lang-o5SS6BG6.js → GenuiRendererWithMaterials.vue_vue_type_script_setup_true_lang-CMjFQe5i.js} +3 -3
  9. package/dist/{GenuiRendererWithMaterials.vue_vue_type_script_setup_true_lang-o5SS6BG6.js.map → GenuiRendererWithMaterials.vue_vue_type_script_setup_true_lang-CMjFQe5i.js.map} +1 -1
  10. package/dist/chat.d.ts +6 -0
  11. package/dist/chat.js +17 -15
  12. package/dist/chat.js.map +1 -1
  13. package/dist/chat.types-DEDNSs5o.js +1817 -0
  14. package/dist/chat.types-DEDNSs5o.js.map +1 -0
  15. package/dist/code-generator.d.ts +139 -0
  16. package/dist/code-generator.js +6 -0
  17. package/dist/code-generator.js.map +1 -0
  18. package/dist/config-provider.d.ts +24 -12
  19. package/dist/config-provider.js +2 -2
  20. package/dist/index.d.ts +168 -16
  21. package/dist/index.js +37 -31
  22. package/dist/index.js.map +1 -1
  23. package/dist/injection-tokens-DDgspg4x.js +9067 -0
  24. package/dist/injection-tokens-DDgspg4x.js.map +1 -0
  25. package/dist/legacy-chat.d.ts +9 -1
  26. package/dist/legacy-chat.js +3 -3
  27. package/dist/legacy-renderer.js +2 -2
  28. package/dist/picocolors.browser-nFqgZww8.js +50 -0
  29. package/dist/picocolors.browser-nFqgZww8.js.map +1 -0
  30. package/dist/renderer.d.ts +2 -2
  31. package/dist/renderer.js +1 -1
  32. package/dist/transform-jsx.d.ts +2 -3
  33. package/dist/transform-jsx.js +147312 -66873
  34. package/dist/transform-jsx.js.map +1 -1
  35. package/dist/vue-code-generator-CwPQ3GDh.js +573 -0
  36. package/dist/vue-code-generator-CwPQ3GDh.js.map +1 -0
  37. package/package.json +12 -5
  38. package/dist/ConfigProvider-BzxW9L3f.js +0 -95
  39. package/dist/ConfigProvider-BzxW9L3f.js.map +0 -1
  40. package/dist/GenuiRenderer-BVwM5pRp.js +0 -15163
  41. package/dist/GenuiRenderer-BVwM5pRp.js.map +0 -1
  42. package/dist/___vite-browser-external_commonjs-proxy-4gYZYw55.js +0 -57
  43. package/dist/___vite-browser-external_commonjs-proxy-4gYZYw55.js.map +0 -1
  44. package/dist/chat.types-DsoAmslj.js +0 -1794
  45. package/dist/chat.types-DsoAmslj.js.map +0 -1
  46. package/dist/injection-tokens-CuDQs1ne.js +0 -114
  47. package/dist/injection-tokens-CuDQs1ne.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-code-generator-CwPQ3GDh.js","sources":["../src/code-generator/constants.ts","../src/code-generator/utils.ts","../src/code-generator/vue-sfc-validator.ts","../src/code-generator/vue-code-generator.ts"],"sourcesContent":["export const UNWRAP_QUOTES = {\n start: '#QUOTES_START#',\n end: '#QUOTES_END#',\n};\n\nexport const [JS_EXPRESSION, JS_FUNCTION, JS_I18N, JS_RESOURCE, JS_SLOT] = [\n 'JSExpression',\n 'JSFunction',\n 'i18n',\n 'JSResource',\n 'JSSlot',\n];\n","import { UNWRAP_QUOTES } from './constants';\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst onRE = /^on([A-Z]\\w*)/;\nconst onUpdateRE = /^on(Update:\\w+)/;\nconst { start, end } = UNWRAP_QUOTES;\n\nexport const capitalize = (str = ''): string => (str ? str.charAt(0).toUpperCase() + str.slice(1) : '');\n\nexport const hyphenate = (str: string): string => str.replace(hyphenateRE, '-$1').toLowerCase();\n\nexport const toEventKey = (str: string): string => {\n const strRemovedPrefix = str.replace(onRE, '$1');\n const isOnUpdate = onUpdateRE.test(str);\n return isOnUpdate\n ? strRemovedPrefix.charAt(0).toLowerCase() + strRemovedPrefix.slice(1)\n : hyphenate(strRemovedPrefix);\n};\n\nexport const unwrapExpression = (value: string): string =>\n value.replace(new RegExp(`\"${start}(.*?)${end}\"`, 'g'), (match, p1) =>\n p1.replace(/\\\\\"/g, '\"').replace(/\\\\r\\\\n|\\\\r|\\\\n/g, ''),\n );\n\nexport const escapeDoubleQuotedAttr = (value: string): string => value.replace(/\"/g, '&quot;');\n\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { parse as parseSFC, compileScript, compileStyle, compileTemplate } from '@vue/compiler-sfc';\nimport { generateCodeFrame } from '@vue/shared';\n\nconst randomString = () => Math.random().toString(36).slice(2, 10);\n\nexport const validateByCompile = (filename: string, code: string): { message: string }[] => {\n const { errors, descriptor } = parseSFC(code, {\n filename,\n sourceMap: false,\n });\n\n if (errors.length) {\n return errors.map((error) => locateErrorMessage(code, error));\n }\n\n const id = randomString();\n\n let bindingMetadata;\n try {\n const scriptResult = compileScript(descriptor, { id });\n bindingMetadata = scriptResult.bindings;\n } catch (error) {\n const scriptError = unify(error);\n const loc =\n scriptError && typeof scriptError === 'object' && 'loc' in scriptError ? (scriptError as { loc?: { start?: unknown; line?: number; column?: number } }).loc : undefined;\n\n if (loc && !loc.start && loc.line != null) {\n const message = scriptError.message.match(/.*/)[0];\n const { line, column } = loc;\n\n return [locateErrorMessage(code, { message, loc: { start: { line, column } } })];\n }\n\n return [{ message: scriptError.message }];\n }\n\n const { styles, template, slotted } = descriptor;\n const scoped = styles.some((s) => s.scoped);\n\n if (template) {\n const templateResult = compileTemplate({\n source: template.content,\n filename,\n id,\n scoped,\n slotted,\n compilerOptions: { bindingMetadata },\n });\n\n if (templateResult.errors.length) {\n return templateResult.errors.map(unify).map((error) => locateErrorMessage(code, error));\n }\n }\n\n const stylesResult = styles.map(({ content }) => compileStyle({ source: content, filename, id, scoped }));\n const errorsInStyles = stylesResult\n .filter(({ errors }) => errors.length)\n .map(({ errors }) => errors)\n .flat();\n\n return errorsInStyles;\n};\n\nconst unify = (error: string | Error): Error | { message: string; loc?: any } => {\n if (typeof error === 'string') {\n return { message: error };\n }\n\n return error;\n};\n\nconst locateErrorMessage = (originalSource: string, error: { loc?: any; message: string }) => {\n let { loc, message } = error;\n\n if (loc?.start) {\n const { line, column } = loc.start;\n const lines = originalSource.split(/\\r?\\n/);\n const errorLineCode = lines[line - 1];\n\n if (typeof errorLineCode !== 'string') {\n return { message };\n }\n\n const SCOPE = 50;\n const scopeStartIndex = Math.max(0, column - SCOPE);\n const scopeCode = errorLineCode.slice(scopeStartIndex, column + SCOPE);\n\n message = `${message} \\n ${generateCodeFrame(scopeCode, column - scopeStartIndex)}`;\n }\n\n return { message };\n};\n","import type { CardSchema, NodeSchema } from '@opentiny/genui-sdk-core';\nimport { JS_EXPRESSION, JS_FUNCTION, JS_I18N, JS_RESOURCE, JS_SLOT, UNWRAP_QUOTES } from './constants';\nimport type {\n ICodeGeneratorParams,\n ICodegenDescription,\n IComponentMapItem,\n ICodePanel,\n IScriptSetupBuildContext,\n IScriptSetupSectionDefinition,\n IFrameworkCodeGenerator,\n IVueCodeGeneratorOptions,\n} from './types';\nimport { capitalize, escapeDoubleQuotedAttr, hyphenate, toEventKey, unwrapExpression } from './utils';\nimport { validateByCompile } from './vue-sfc-validator';\n\nexport type ICodeGeneratorResult = ICodePanel & { errors: { message: string }[] };\n\nconst DEFAULT_PRETTIER_OPTS: Record<string, unknown> = {\n semi: false,\n singleQuote: true,\n printWidth: 120,\n trailingComma: 'none',\n endOfLine: 'auto',\n tabWidth: 2,\n parser: 'vue',\n htmlWhitespaceSensitivity: 'ignore',\n};\n\nexport class VueCodeGenerator implements IFrameworkCodeGenerator<ICodeGeneratorParams, ICodeGeneratorResult> {\n private readonly prettierOpts: Record<string, unknown>;\n private readonly enableCompileValidation: boolean;\n\n constructor(private readonly generatorOptions: IVueCodeGeneratorOptions = {}) {\n this.prettierOpts = {\n ...DEFAULT_PRETTIER_OPTS,\n ...(generatorOptions.prettierOpts ?? {}),\n };\n this.enableCompileValidation = generatorOptions.enableCompileValidation !== false;\n }\n\n protected replaceThis(value: string, inTemplate = false): string {\n const refsReplacement = inTemplate ? '$1' : '$1.value';\n return value.replace(/this\\.refs\\.(\\w+)/g, refsReplacement).replace(/this\\.(props\\.)?/g, '');\n }\n\n protected buildScriptSetupStateAccessors(ctx: IScriptSetupBuildContext): string {\n return ctx.description.stateAccessors\n .map(({ name, getterExpr, setterExpr }) => {\n if (setterExpr) {\n return `const ${name} = computed({ get: ${getterExpr}, set: ${setterExpr} })`;\n }\n return `const ${name} = computed(${getterExpr})`;\n })\n .join('\\n\\n');\n }\n\n protected buildScriptSetupImports(ctx: IScriptSetupBuildContext): string {\n const { componentSet } = ctx.description;\n const refs = (ctx.schema as CardSchema & { refs?: Record<string, unknown> }).refs;\n const hasRefs = !!refs && typeof refs === 'object' && Object.keys(refs).length > 0;\n const vueImports = [\n 'reactive',\n ...(ctx.description.needsComputed ? ['computed'] : []),\n ...(hasRefs ? ['ref'] : []),\n ];\n const importLines: string[] = [`import { ${vueImports.join(', ')} } from \"vue\"`];\n const componentsInSFC = [...componentSet];\n const componentDeps = ctx.componentsMap.filter((item) => componentsInSFC.includes(item.componentName));\n const componentPacks: Record<string, IComponentMapItem[]> = {};\n\n componentDeps.forEach((item) => {\n const { package: pkg } = item;\n if (!componentPacks[pkg]) {\n componentPacks[pkg] = [];\n }\n componentPacks[pkg].push(item);\n });\n\n Object.entries(componentPacks).forEach(([pkgName, deps]) => {\n const items = deps.map((dep) => {\n const { componentName, exportName } = dep;\n return exportName && exportName !== componentName ? `${exportName} as ${componentName}` : `${componentName}`;\n });\n importLines.push(`import { ${items.join(',')} } from '${pkgName}'`);\n });\n\n return importLines.join('\\n');\n }\n\n protected buildScriptSetupRefs(ctx: IScriptSetupBuildContext): string {\n const refs = (ctx.schema as CardSchema & { refs?: Record<string, unknown> }).refs;\n if (!refs || typeof refs !== 'object') {\n return '';\n }\n\n const entries = Object.entries(refs);\n if (!entries.length) {\n return '';\n }\n\n return entries\n .map(([name, initial]) => {\n const initExpr = initial === undefined ? 'null' : unwrapExpression(JSON.stringify(initial));\n return `const ${name} = ref(${initExpr})`;\n })\n .join('\\n');\n }\n\n protected buildScriptSetupDefineProps(ctx: IScriptSetupBuildContext): string {\n const { schema: innerSchema } = ctx.schema;\n if (!innerSchema) {\n return '';\n }\n const { properties = [] } = innerSchema;\n const propsArr: string[] = [];\n properties.forEach(({ content = [] }) => {\n content.forEach(({ property, type, defaultValue }) => {\n const propType = capitalize(type);\n let propValue: unknown = defaultValue;\n\n if (propType === 'String') {\n propValue = JSON.stringify(defaultValue);\n } else if (['Array', 'Object'].includes(propType)) {\n propValue = `() => (${JSON.stringify(defaultValue)})`;\n } else if (propType === 'Function') {\n propValue = (defaultValue as { value?: string } | undefined)?.value ?? 'undefined';\n }\n\n propsArr.push(`${property}: { type: ${propType}, default: ${propValue} }`);\n });\n });\n\n return propsArr.length ? `const props = defineProps({${propsArr.join(',\\n')}})` : '';\n }\n\n protected buildScriptSetupDefineEmits(ctx: IScriptSetupBuildContext): string {\n const { schema: innerSchema } = ctx.schema;\n if (!innerSchema) {\n return '';\n }\n const { events = {} } = innerSchema;\n const emitsArr = Object.keys(events).map(toEventKey);\n return emitsArr.length ? `const emit = defineEmits(${JSON.stringify(emitsArr)})` : '';\n }\n\n protected buildScriptSetupIconStatement(ctx: IScriptSetupBuildContext): string {\n const { componentNames, exportNames } = ctx.description.iconComponents;\n return componentNames.length\n ? `const [${componentNames.join(',')}] = [${exportNames.map((name) => `${name}()`).join(',')}]`\n : '';\n }\n\n protected buildScriptSetupReactiveState(ctx: IScriptSetupBuildContext): string {\n const { state = {} } = ctx.schema as CardSchema & { state?: Record<string, unknown> };\n return `const state = reactive(${unwrapExpression(JSON.stringify(state, null, 2))})`;\n }\n\n protected buildScriptSetupMethods(ctx: IScriptSetupBuildContext): string {\n const { methods = {} } = ctx.schema as CardSchema & { methods?: Record<string, { value: string }> };\n const methodLines = Object.entries(methods).map(([key, item]) => {\n const info = this.getFunctionInfo(item.value);\n if (!info) {\n return `const ${key} = ${this.replaceThis(item.value)}`;\n }\n const asyncPrefix = info.type ? `${info.type} ` : '';\n const body = this.replaceThis(info.body);\n return `${asyncPrefix}function ${key}(${info.params.join(', ')}) {${body}}`;\n });\n return methodLines.join('\\n\\n');\n }\n\n protected buildScriptSetupCallAction(ctx: IScriptSetupBuildContext): string {\n if (!ctx.description.needsCallAction) {\n return '';\n }\n return `function callAction(name, params) {\n console.warn(\\`[GenUI] callAction(\"\\${name}\") is available at runtime via customActions; implement it for exported code.\\`, params)\n}`;\n }\n\n protected buildScriptSetupBody(\n ctx: IScriptSetupBuildContext,\n sections: readonly IScriptSetupSectionDefinition[],\n ): string {\n const groupOrder: string[] = [];\n const byGroup = new Map<string, string[]>();\n\n for (const sec of sections) {\n if (!byGroup.has(sec.group)) {\n byGroup.set(sec.group, []);\n groupOrder.push(sec.group);\n }\n byGroup.get(sec.group)!.push(sec.build(ctx));\n }\n\n return groupOrder\n .map((g) => byGroup.get(g)!.filter(Boolean).join('\\n'))\n .filter(Boolean)\n .join('\\n\\n');\n }\n\n protected buildSfcTemplateSection(template: string): string {\n return `<template>\n ${template}\n</template>`;\n }\n\n protected buildSfcScriptSetupSection(scriptSetup: string, needsJsx = false): string {\n const langAttr = needsJsx ? ' lang=\"jsx\"' : '';\n return `<script setup${langAttr}>\n${scriptSetup}\n</script>`;\n }\n\n protected buildSfcStyleSection(style: string): string {\n return `<style scoped>\n ${style}\n</style>`;\n }\n\n protected getScriptSetupSections(): readonly IScriptSetupSectionDefinition[] {\n return [\n {\n id: 'imports',\n group: 'imports',\n build: (ctx) => this.buildScriptSetupImports(ctx),\n },\n {\n id: 'defineProps',\n group: 'macro',\n build: (ctx) => this.buildScriptSetupDefineProps(ctx),\n },\n {\n id: 'defineEmits',\n group: 'macro',\n build: (ctx) => this.buildScriptSetupDefineEmits(ctx),\n },\n {\n id: 'icons',\n group: 'icons',\n build: (ctx) => this.buildScriptSetupIconStatement(ctx),\n },\n {\n id: 'refs',\n group: 'refs',\n build: (ctx) => this.buildScriptSetupRefs(ctx),\n },\n {\n id: 'reactive',\n group: 'state',\n build: (ctx) => this.buildScriptSetupReactiveState(ctx),\n },\n {\n id: 'stateAccessors',\n group: 'state',\n build: (ctx) => this.buildScriptSetupStateAccessors(ctx),\n },\n {\n id: 'callAction',\n group: 'actions',\n build: (ctx) => this.buildScriptSetupCallAction(ctx),\n },\n {\n id: 'methods',\n group: 'methods',\n build: (ctx) => this.buildScriptSetupMethods(ctx),\n },\n ];\n }\n\n protected createCodegenMeta(): ICodegenDescription {\n return {\n componentSet: new Set(),\n iconComponents: { componentNames: [], exportNames: [] },\n internalTypes: new Set(),\n stateAccessors: [],\n needsJsx: false,\n needsComputed: false,\n needsCallAction: false,\n };\n }\n\n protected resolveRefAttr(value: string | undefined, asJsx: boolean): string | null {\n if (!value) {\n return null;\n }\n const trimmed = value.trim();\n const simple = trimmed.match(/^(?:this\\.)?refs\\.(\\w+)$/);\n if (simple) {\n return asJsx ? `ref={${simple[1]}}` : `ref=\"${simple[1]}\"`;\n }\n const indexed = trimmed.match(/^(?:this\\.)?refs\\.(\\w+)(\\[[\\s\\S]+\\])$/);\n if (indexed) {\n const [, name, indexExpr] = indexed;\n const inTemplate = !asJsx;\n const target = inTemplate ? name : `${name}.value`;\n const index = this.replaceThis(indexExpr, inTemplate);\n const assign = `(instance) => (${target}${index} = instance)`;\n return asJsx ? `ref={${assign}}` : `:ref=\"${escapeDoubleQuotedAttr(assign)}\"`;\n }\n return null;\n }\n\n protected resolvePropValueType(value: unknown): string {\n const builtInTypes = [JS_EXPRESSION, JS_FUNCTION, JS_I18N, JS_RESOURCE, JS_SLOT];\n if (value && typeof value === 'object' && 'type' in value) {\n const protocolType = (value as { type?: string }).type;\n if (typeof protocolType === 'string' && builtInTypes.includes(protocolType)) {\n return protocolType;\n }\n }\n return 'literal';\n }\n\n protected buildJSFunctionExpression(value: string, inTemplate = false): string {\n const info = this.getFunctionInfo(value);\n if (!info) {\n return this.replaceThis(value, inTemplate);\n }\n const asyncPrefix = info.type ? `${info.type} ` : '';\n return `${asyncPrefix}(${info.params.join(',')}) => { ${this.replaceThis(info.body, inTemplate)} }`;\n }\n\n protected hoistPropToState(\n key: string,\n item: unknown,\n attrsArr: string[],\n state: Record<string, unknown>,\n asJsx = false,\n ): void {\n const valueKey = this.avoidDuplicateString(Object.keys(state), key);\n state[valueKey] = item;\n attrsArr.push(asJsx ? `${key}={state.${valueKey}}` : `:${key}=\"state.${valueKey}\"`);\n }\n\n protected isOnEventKey(key: string): boolean {\n return /^on([A-Z]\\w*)/.test(key);\n }\n\n protected handleSlotBinding(item: Record<string, unknown> | string): string {\n const { name, params } = (item as { name?: string; params?: string[] | string }) ?? {};\n let slot = `#${name || item}`;\n if (Array.isArray(params)) {\n slot = `#${name}=\"{ ${params.join(',')} }\"`;\n } else if (typeof params === 'string') {\n slot = `#${name}=\"${params}\"`;\n }\n return slot;\n }\n\n protected handleEventBinding(\n key: string,\n item: { type?: string; value?: string; params?: string[] },\n asJsx = false,\n ): string {\n const eventKey = asJsx ? key : toEventKey(key);\n const inTemplate = !asJsx;\n const toTemplateEventAttr = (expr: string) => `@${eventKey}=\"${escapeDoubleQuotedAttr(expr)}\"`;\n\n if (item?.type === JS_FUNCTION) {\n const handler = this.buildJSFunctionExpression(item.value ?? '', inTemplate);\n if (item.params?.length) {\n const expr = `(...eventArgs) => (${handler})(...eventArgs, ${item.params.join(',')})`;\n return asJsx ? `${eventKey}={${expr}}` : toTemplateEventAttr(expr);\n }\n return asJsx ? `${eventKey}={${handler}}` : toTemplateEventAttr(handler);\n }\n\n if (item?.type !== JS_EXPRESSION) {\n return '';\n }\n const eventHandler = this.replaceThis(item.value ?? '', inTemplate);\n if (item.params?.length) {\n const expr = `(...eventArgs) => ${eventHandler}(eventArgs, ${item.params.join(',')})`;\n return asJsx ? `${eventKey}={${expr}}` : toTemplateEventAttr(expr);\n }\n return asJsx ? `${eventKey}={${eventHandler}}` : toTemplateEventAttr(eventHandler);\n }\n\n protected avoidDuplicateString(existings: string[], baseName: string): string {\n let result = baseName;\n let suffix = 1;\n while (existings.includes(result)) {\n result = `${baseName}${suffix}`;\n suffix++;\n }\n return result;\n }\n\n protected handleLiteralBinding(\n key: string,\n item: unknown,\n attrsArr: string[],\n description: ICodegenDescription,\n state: Record<string, unknown>,\n asJsx = false,\n ): void {\n if (typeof item === 'string') {\n attrsArr.push(`${key}=\"${item.replace(/\"/g, '&quot;')}\"`);\n return;\n }\n\n if (item && typeof item === 'object') {\n const prevInternalTypes = description.internalTypes;\n const localInternalTypes = new Set(prevInternalTypes);\n description.internalTypes = localInternalTypes;\n\n this.traverseState(item as Record<string, unknown>, description);\n const requiresStateHoist =\n localInternalTypes.has('JSFunction') ||\n localInternalTypes.has('JSResource') ||\n localInternalTypes.has('JSSlot');\n\n if (requiresStateHoist) {\n description.internalTypes = prevInternalTypes;\n this.hoistPropToState(key, item, attrsArr, state, asJsx);\n return;\n }\n\n description.internalTypes = prevInternalTypes;\n const parsedValue = unwrapExpression(JSON.stringify(item)).replace(/props\\./g, '');\n if (asJsx) {\n attrsArr.push(`${key}={${parsedValue}}`);\n return;\n }\n const safeExpr = parsedValue.replace(/'/g, '&#39;');\n attrsArr.push(`:${key}='${safeExpr}'`);\n return;\n }\n\n attrsArr.push(asJsx ? `${key}={${item}}` : `:${key}=\"${item}\"`);\n }\n\n protected handleBinding(\n props: Record<string, unknown>,\n attrsArr: string[],\n description: ICodegenDescription,\n state: Record<string, unknown>,\n asJsx = false,\n ): void {\n Object.entries(props).forEach(([rawKey, rawItem]) => {\n let key = rawKey === 'className' ? 'class' : rawKey;\n\n if (key === 'slot') {\n attrsArr.push(this.handleSlotBinding(rawItem as Record<string, unknown> | string));\n return;\n }\n\n const item = rawItem as { type?: string; value?: string; model?: { prop?: string }; params?: string[] };\n const propType = this.resolvePropValueType(rawItem);\n\n if (key === 'ref' && propType === JS_EXPRESSION) {\n const refAttr = this.resolveRefAttr(item.value, asJsx);\n if (refAttr) {\n attrsArr.push(refAttr);\n return;\n }\n }\n\n if (this.isOnEventKey(key)) {\n const eventBinding = this.handleEventBinding(key, item, asJsx);\n if (eventBinding) {\n attrsArr.push(eventBinding);\n }\n return;\n }\n\n if (propType === 'literal') {\n this.handleLiteralBinding(key, rawItem, attrsArr, description, state, asJsx);\n return;\n }\n\n if (propType === JS_FUNCTION || propType === JS_SLOT) {\n this.hoistPropToState(key, rawItem, attrsArr, state, asJsx);\n return;\n }\n\n if (propType === JS_EXPRESSION) {\n const expr = this.replaceThis(item.value ?? '', !asJsx);\n if (item.model) {\n const modelArgs = item.model?.prop ? `:${item.model.prop}` : '';\n attrsArr.push(asJsx ? `v-model${modelArgs}={${expr}}` : `v-model${modelArgs}=\"${expr}\"`);\n return;\n }\n attrsArr.push(asJsx ? `${key}={${expr}}` : `:${key}=\"${expr}\"`);\n }\n });\n }\n\n protected recurseChildren(\n children: NodeSchema[] | NodeSchema | string | undefined,\n state: Record<string, unknown>,\n description: ICodegenDescription,\n result: string[],\n ): void {\n if (Array.isArray(children)) {\n result.push(\n children.map((child) => this.generateTemplate(child as CardSchema, state, description, false)).join(''),\n );\n return;\n }\n result.push((children as string) || '');\n }\n\n protected isEmptySlotNode(componentName: string | undefined, children: unknown): boolean {\n return (\n componentName === 'template' &&\n !(children as { length?: number; type?: string })?.length &&\n !(children as { length?: number; type?: string })?.type\n );\n }\n\n protected generateTemplate(\n schema: CardSchema,\n state: Record<string, any>,\n description: ICodegenDescription,\n isRootNode = true,\n ): string {\n const result: string[] = [];\n const { componentName, loop, loopArgs = ['item'], condition, props = {}, children } = schema;\n\n if (this.isEmptySlotNode(componentName, children)) {\n return '';\n }\n\n const component = isRootNode ? 'div' : hyphenate(componentName || 'div');\n if (!isRootNode && componentName) {\n description.componentSet.add(componentName);\n }\n\n result.push(`\\n<${component} `);\n const attrsArr: string[] = [];\n\n if (loop) {\n const loopData = (loop as { type?: string; value?: string }).type\n ? this.replaceThis((loop as { value?: string }).value ?? '', true)\n : JSON.stringify(loop).replace(/\"/g, '&quot;');\n attrsArr.push(`v-for=\"(${loopArgs.join(',')}) in ${loopData}\"`);\n }\n\n if (typeof condition === 'object' || typeof condition === 'boolean') {\n const isObjectCondition = typeof condition === 'object' && condition !== null;\n const conditionObj = condition as { type?: string; value?: string; kind?: string };\n const conditionValue =\n isObjectCondition && conditionObj.type\n ? this.replaceThis(conditionObj.value ?? '', true)\n : condition;\n const directive = isObjectCondition ? conditionObj.kind || 'if' : 'if';\n attrsArr.push(directive === 'else' ? 'v-else' : `v-${directive}=\"${conditionValue}\"`);\n }\n\n this.handleBinding(props as Record<string, unknown>, attrsArr, description, state);\n result.push(attrsArr.join(' '));\n\n const VOID_ELEMENTS = ['img', 'input', 'br', 'hr', 'link'];\n if (VOID_ELEMENTS.includes(component)) {\n result.push(' />');\n } else {\n result.push('>');\n this.recurseChildren(children as NodeSchema[] | NodeSchema | string | undefined, state, description, result);\n result.push(`</${component}>`);\n }\n\n return result.join('');\n }\n\n protected generateSlotTemplate(\n item: Record<string, any>,\n description: ICodegenDescription,\n state: Record<string, unknown> = {},\n ): string {\n const result: string[] = [];\n const { componentName, component: componentAlias, props = {}, children, condition } = item;\n const component = componentName || componentAlias || 'div';\n description.componentSet.add(component);\n const attrsArr: string[] = [];\n\n if (condition) {\n const conditionValue = condition?.type ? this.replaceThis(condition.value) : condition;\n result.push(`{ ${conditionValue} && `);\n }\n\n result.push(`<${component} `);\n this.handleBinding(props, attrsArr, description, state, true);\n result.push(attrsArr.join(' '));\n\n const VOID_ELEMENTS = ['img', 'input', 'br', 'hr', 'link'];\n if (VOID_ELEMENTS.includes(component)) {\n result.push(' />');\n } else {\n result.push('>');\n if (Array.isArray(children)) {\n result.push(children.map((child) => this.generateSlotTemplate(child, description, state)).join(''));\n } else if (children?.type === 'JSExpression') {\n result.push(`{ ${this.replaceThis(children.value)} }`);\n } else if (children?.type === 'i18n') {\n result.push(`{t('${children.key}')}`);\n } else {\n result.push(children || '');\n }\n result.push(`</${component}>`);\n }\n\n if (condition) {\n result.push(' }');\n }\n\n return result.join('');\n }\n\n protected getFunctionInfo(fnStr: string): { type: string; params: string[]; body: string } | null {\n const fnRegexp = /(async)?.*?(\\w+) *\\(([\\s\\S]*?)\\) *\\{([\\s\\S]*)\\}/;\n const result = fnRegexp.exec(fnStr);\n if (!result) {\n return null;\n }\n return {\n type: result[1] || '',\n params: result[3]\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean),\n body: result[4],\n };\n }\n\n protected transformStateType(\n current: Record<string, any>,\n prop: string,\n description: ICodegenDescription,\n rootState: Record<string, any>,\n ): void {\n const stateEntry = current[prop];\n if (stateEntry?.accessor) {\n const getterValue = stateEntry.accessor.getter?.value ?? 'function() {}';\n const setterValue = stateEntry.accessor.setter?.value;\n const getterInfo = this.getFunctionInfo(getterValue);\n const setterInfo = setterValue ? this.getFunctionInfo(setterValue) : null;\n\n description.stateAccessors.push({\n name: prop,\n getterExpr: getterInfo\n ? `() => { ${this.replaceThis(getterInfo.body)} }`\n : `() => (${this.replaceThis(getterValue)})()`,\n setterExpr: setterInfo\n ? `(${setterInfo.params.join(',')}) => { ${this.replaceThis(setterInfo.body)} }`\n : undefined,\n });\n description.needsComputed = true;\n\n if (stateEntry.defaultValue !== undefined) {\n current[prop] = stateEntry.defaultValue;\n } else {\n delete current[prop];\n }\n return;\n }\n\n const builtInTypes = [JS_EXPRESSION, JS_FUNCTION, JS_I18N, JS_RESOURCE, JS_SLOT];\n const { type } = current[prop] || {};\n if (!builtInTypes.includes(type)) {\n return;\n }\n\n description.internalTypes.add(type);\n const { start, end } = UNWRAP_QUOTES;\n\n if (type === JS_EXPRESSION) {\n const { value = '', computed = false } = current[prop] || {};\n if (computed) {\n description.needsComputed = true;\n }\n current[prop] = computed\n ? `${start}computed(${this.replaceThis(value)})${end}`\n : `${start}${this.replaceThis(value)}${end}`;\n return;\n }\n\n if (type === JS_FUNCTION) {\n const { value = '' } = current[prop] || {};\n const info = this.getFunctionInfo(value);\n if (!info) {\n current[prop] = `${start}${typeof value === 'string' ? this.replaceThis(value) : ''}${end}`;\n return;\n }\n const inlineFunc = `${info.type} (${info.params.join(',')}) => { ${this.replaceThis(info.body)} }`;\n current[prop] = `${start}${inlineFunc}${end}`;\n return;\n }\n\n if (type === JS_I18N) {\n const { key = '' } = current[prop] || {};\n current[prop] = `${start}t(\"${key}\")${end}`;\n return;\n }\n\n if (type === JS_RESOURCE) {\n const { value = '' } = current[prop] || {};\n current[prop] = `${start}${this.replaceThis(value)}${end}`;\n return;\n }\n\n const { value = [], params = ['row'] } = current[prop] || {};\n description.needsJsx = true;\n const slotValues = (value as any[]).map((item) => this.generateSlotTemplate(item, description, rootState)).join('');\n current[prop] = `${start}({ ${params.join(',')} }) => ${slotValues || 'null'}${end}`;\n }\n\n protected traverseState(\n state: Record<string, any>,\n description: ICodegenDescription,\n rootState: Record<string, any> = state,\n ): void {\n if (typeof state !== 'object' || state === null) {\n return;\n }\n if (Array.isArray(state)) {\n state.forEach((item) => this.traverseState(item, description, rootState));\n return;\n }\n Object.keys(state).forEach((prop) => {\n if (Object.prototype.hasOwnProperty.call(state, prop)) {\n this.transformStateType(state, prop, description, rootState);\n this.traverseState(state[prop], description, rootState);\n }\n });\n }\n\n protected buildVueSfcSource({\n schema,\n componentsMap,\n }: {\n schema: CardSchema;\n name?: string;\n componentsMap: IComponentMapItem[];\n }): string {\n const codegenMeta = this.createCodegenMeta();\n codegenMeta.needsCallAction = /\\bthis\\.callAction\\b/.test(JSON.stringify(schema));\n const rootState = (schema.state ??= {}) as Record<string, any>;\n const template = this.generateTemplate(schema, rootState, codegenMeta);\n this.traverseState(rootState, codegenMeta);\n const scriptSetupCtx: IScriptSetupBuildContext = { schema, componentsMap, description: codegenMeta };\n const script = this.buildScriptSetupBody(scriptSetupCtx, this.getScriptSetupSections());\n\n return [\n this.buildSfcTemplateSection(template),\n this.buildSfcScriptSetupSection(script, codegenMeta.needsJsx),\n this.buildSfcStyleSection(schema.css || ''),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n }\n\n protected normalizeIncomingSchema(origin: CardSchema | string | null | undefined): CardSchema {\n if (origin == null) {\n return { componentName: 'Page', children: [] } as CardSchema;\n }\n if (typeof origin === 'string') {\n const trimmed = origin.trim();\n if (!trimmed) {\n return { componentName: 'Page', children: [] } as CardSchema;\n }\n try {\n return JSON.parse(trimmed) as CardSchema;\n } catch {\n return { componentName: 'Page', children: [] } as CardSchema;\n }\n }\n return origin as CardSchema;\n }\n\n protected async generatePageCode({\n pageInfo,\n componentsMap,\n formatWithPrettier = false,\n }: {\n pageInfo: ICodeGeneratorParams['pageInfo'];\n componentsMap: IComponentMapItem[];\n formatWithPrettier?: boolean;\n }): Promise<ICodeGeneratorResult> {\n const { schema: originSchema, name = 'SchemaCard' } = pageInfo;\n\n const schema = JSON.parse(JSON.stringify(this.normalizeIncomingSchema(originSchema))) as CardSchema;\n const vueCode = this.buildVueSfcSource({ schema, name, componentsMap });\n const panelName = `${name}.vue`;\n const compileErrors = this.enableCompileValidation ? validateByCompile(panelName, vueCode) : [];\n const type = 'page';\n const panelValue = vueCode;\n\n const panel: ICodePanel = {\n panelName,\n panelValue,\n panelType: 'vue',\n prettierOpts: { ...this.prettierOpts },\n type,\n };\n const result: ICodeGeneratorResult = { ...panel, errors: compileErrors };\n if (formatWithPrettier) {\n result.panelValue = await this.formatWithPrettier(result.panelValue, result.prettierOpts);\n }\n return result;\n }\n\n protected normalizeComponentsMap(componentsMap: IComponentMapItem[] | undefined): IComponentMapItem[] {\n const validComponents = (componentsMap ?? []).filter(({ componentName, package: pkg }) => componentName && pkg);\n const allComponentsMap = new Map<string, IComponentMapItem>();\n validComponents.forEach(\n (item) => !allComponentsMap.has(item.componentName) && allComponentsMap.set(item.componentName, item),\n );\n return [...allComponentsMap.values()];\n }\n\n protected async formatWithPrettier(source: string, prettierOpts: Record<string, unknown>): Promise<string> {\n try {\n const [\n { format },\n { default: htmlPlugin },\n { default: babelPlugin },\n { default: estreePlugin },\n { default: postcssPlugin },\n { default: typescriptPlugin },\n ] = await Promise.all([\n import('prettier/standalone'),\n import('prettier/plugins/html'),\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n import('prettier/plugins/postcss'),\n import('prettier/plugins/typescript'),\n ]);\n\n return await format(source, {\n ...prettierOpts,\n plugins: [htmlPlugin, babelPlugin, estreePlugin, postcssPlugin, typescriptPlugin],\n });\n } catch {\n return source;\n }\n }\n\n async generate({\n pageInfo,\n componentsMap = [],\n formatWithPrettier = false,\n }: ICodeGeneratorParams): Promise<ICodeGeneratorResult> {\n const normalizedComponentsMap = this.normalizeComponentsMap(componentsMap);\n return this.generatePageCode({\n pageInfo,\n componentsMap: normalizedComponentsMap,\n formatWithPrettier,\n });\n }\n}\n\nexport const generateCode = (params: ICodeGeneratorParams): Promise<ICodeGeneratorResult> =>\n new VueCodeGenerator().generate(params);\n"],"names":["UNWRAP_QUOTES","JS_EXPRESSION","JS_FUNCTION","JS_I18N","JS_RESOURCE","JS_SLOT","hyphenateRE","onRE","onUpdateRE","start","end","capitalize","str","hyphenate","toEventKey","strRemovedPrefix","unwrapExpression","value","match","p1","escapeDoubleQuotedAttr","randomString","validateByCompile","filename","code","errors","descriptor","parseSFC","error","locateErrorMessage","id","bindingMetadata","compileScript","scriptError","unify","loc","message","line","column","styles","template","slotted","scoped","s","templateResult","compileTemplate","content","compileStyle","originalSource","errorLineCode","SCOPE","scopeStartIndex","scopeCode","generateCodeFrame","DEFAULT_PRETTIER_OPTS","VueCodeGenerator","generatorOptions","inTemplate","refsReplacement","ctx","name","getterExpr","setterExpr","componentSet","refs","hasRefs","importLines","componentsInSFC","componentDeps","item","componentPacks","pkg","pkgName","deps","items","dep","componentName","exportName","entries","initial","initExpr","innerSchema","properties","propsArr","property","type","defaultValue","propType","propValue","events","emitsArr","componentNames","exportNames","state","methods","key","info","asyncPrefix","body","sections","groupOrder","byGroup","sec","g","scriptSetup","needsJsx","style","asJsx","trimmed","simple","indexed","indexExpr","target","index","assign","builtInTypes","protocolType","attrsArr","valueKey","params","slot","eventKey","toTemplateEventAttr","expr","handler","_a","eventHandler","_b","existings","baseName","result","suffix","description","prevInternalTypes","localInternalTypes","parsedValue","safeExpr","props","rawKey","rawItem","refAttr","eventBinding","modelArgs","children","child","schema","isRootNode","loop","loopArgs","condition","component","loopData","isObjectCondition","conditionObj","conditionValue","directive","componentAlias","fnStr","current","prop","rootState","stateEntry","getterValue","setterValue","getterInfo","setterInfo","computed","inlineFunc","slotValues","componentsMap","codegenMeta","scriptSetupCtx","script","origin","pageInfo","formatWithPrettier","originSchema","vueCode","panelName","compileErrors","validComponents","allComponentsMap","source","prettierOpts","format","htmlPlugin","babelPlugin","estreePlugin","postcssPlugin","typescriptPlugin","normalizedComponentsMap","generateCode"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentiny/genui-sdk-vue",
3
- "version": "1.3.0",
3
+ "version": "1.3.1-alpha.2",
4
4
  "description": "A Vue3 component library for enhanced LLM display and interaction",
5
5
  "author": "OpenTiny Team",
6
6
  "license": "MIT",
@@ -50,6 +50,10 @@
50
50
  "./transform-jsx": {
51
51
  "types": "./dist/transform-jsx.d.ts",
52
52
  "import": "./dist/transform-jsx.js"
53
+ },
54
+ "./code-generator": {
55
+ "types": "./dist/code-generator.d.ts",
56
+ "import": "./dist/code-generator.js"
53
57
  }
54
58
  },
55
59
  "type": "module",
@@ -63,10 +67,13 @@
63
67
  "@opentiny/tiny-robot": "0.3.3",
64
68
  "@opentiny/tiny-robot-kit": "0.3.3",
65
69
  "@opentiny/tiny-robot-svgs": "0.3.3",
66
- "@opentiny/vue": "~3.28.0",
67
- "@opentiny/vue-renderless": "~3.28.2",
68
- "@opentiny/vue-icon": "~3.28.0",
69
- "@opentiny/vue-theme": "~3.28.0",
70
+ "@opentiny/vue": "~3.31.0",
71
+ "@opentiny/vue-renderless": "~3.31.0",
72
+ "@opentiny/vue-icon": "~3.31.0",
73
+ "@opentiny/vue-theme": "~3.31.0",
74
+ "@vue/compiler-sfc": "^3.5.13",
75
+ "@vue/shared": "^3.5.13",
76
+ "prettier": "^3.5.0",
70
77
  "uuid": "^11.1.0",
71
78
  "vue": "^3.5.13",
72
79
  "@opentiny/tiny-engine-builtin-component": "^2.6.0"
@@ -1,95 +0,0 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode(".tg-config-provider[data-v-da2763bd]{--tr-sender-bg-color: var(--tr-container-bg-default);--tr-sender-text-color: var(--tr-text-primary);--tr-sender-action-buttons-icon-color: var(--tr-text-secondary);--tr-sender-action-buttons-send-bg-color: var(--tr-color-primary);height:100%}")),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
- import { ref as v, readonly as y, defineComponent as P, provide as n, computed as s, watch as d, onMounted as I, createBlock as N, openBlock as E, unref as f, withCtx as p, createVNode as G, normalizeProps as b, guardReactiveProps as A, renderSlot as L } from "vue";
3
- import { TinyConfigProvider as R } from "@opentiny/vue";
4
- import { ThemeProvider as $ } from "@opentiny/tiny-robot";
5
- import x, { tinyOldTheme as O, tinyDarkTheme as U } from "@opentiny/vue-theme/theme-tool";
6
- import { G as z, u as B, a as Q, b as S, _ as j } from "./injection-tokens-CuDQs1ne.js";
7
- const g = () => typeof window < "u" && window.matchMedia, T = () => g() && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", _ = v(T());
8
- let c = null;
9
- const D = () => {
10
- _.value = T();
11
- }, F = () => {
12
- g() && !c && (c = window.matchMedia("(prefers-color-scheme: dark)"), c.addEventListener("change", D));
13
- }, V = () => (F(), {
14
- theme: y(_)
15
- }), W = /* @__PURE__ */ P({
16
- __name: "ConfigProvider",
17
- props: {
18
- theme: {},
19
- id: { default: "tiny-genui-config-provider" },
20
- locale: { default: "zh_CN" },
21
- i18n: {},
22
- materials: {}
23
- },
24
- setup(M) {
25
- const e = M, a = B();
26
- n(z, a);
27
- const l = (t) => {
28
- const r = structuredClone(t);
29
- return r.css = r.css.replaceAll(":host", `#${e.id}`).replaceAll(":root", `#${e.id}`), r;
30
- }, m = {
31
- dark: l(U),
32
- lite: l(O),
33
- light: { css: " " }
34
- }, w = new x(), { theme: C } = V(), i = s(() => e.theme === "auto" ? C.value : e.theme), o = s(() => ({
35
- theme: i.value,
36
- id: e.id
37
- }));
38
- n(Q, o);
39
- const u = {};
40
- d(() => e.materials, (t) => {
41
- Object.assign(u, t);
42
- }, { immediate: !0 }), n(
43
- S,
44
- u
45
- ), d(
46
- () => [e.locale, e.i18n],
47
- () => {
48
- e.locale && e.locale !== a.locale.value && a.setLocale(e.locale), e.i18n && a.mergeMessages(e.i18n);
49
- },
50
- { immediate: !0 }
51
- ), d(
52
- () => i.value,
53
- (t) => {
54
- const r = m[t] || m.light;
55
- w.changeTheme(r);
56
- },
57
- {
58
- immediate: !0
59
- }
60
- );
61
- const h = v();
62
- I(() => {
63
- var t;
64
- (t = h.value) == null || t.$el.classList.remove("tiny-config-provider");
65
- });
66
- const k = s(() => {
67
- var r;
68
- const t = {
69
- colorMode: i.value === "dark" ? "dark" : "light"
70
- };
71
- return (r = o == null ? void 0 : o.value) != null && r.id && (t.targetElement = "#" + o.value.id), t;
72
- });
73
- return (t, r) => (E(), N(f(R), {
74
- ref_key: "providerRef",
75
- ref: h,
76
- class: "tg-config-provider",
77
- id: e.id
78
- }, {
79
- default: p(() => [
80
- G(f($), b(A(k.value)), {
81
- default: p(() => [
82
- L(t.$slots, "default", {}, void 0, !0)
83
- ]),
84
- _: 3
85
- }, 16)
86
- ]),
87
- _: 3
88
- }, 8, ["id"]));
89
- }
90
- }), Y = /* @__PURE__ */ j(W, [["__scopeId", "data-v-da2763bd"]]);
91
- export {
92
- Y as C,
93
- V as u
94
- };
95
- //# sourceMappingURL=ConfigProvider-BzxW9L3f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigProvider-BzxW9L3f.js","sources":["../src/config-provider/use-media-theme.ts","../src/config-provider/ConfigProvider.vue"],"sourcesContent":["import { ref, readonly } from 'vue';\n\nconst hasMediaQuery = () => typeof window !== 'undefined' && window.matchMedia;\n\nconst getMediaTheme = (): 'light' | 'dark' => {\n if (hasMediaQuery()) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return 'light';\n};\n\nconst theme = ref<'light' | 'dark'>(getMediaTheme());\nlet mediaQuery: MediaQueryList | null = null;\n\nconst handleThemeChange = () => {\n theme.value = getMediaTheme();\n};\n\nconst startWatchMediaTheme = () => {\n if (hasMediaQuery() && !mediaQuery) {\n mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQuery.addEventListener('change', handleThemeChange);\n }\n};\n\nexport const useMediaTheme = () => {\n startWatchMediaTheme();\n return {\n theme: readonly(theme),\n }\n}\n","<script setup lang=\"ts\">\nimport { TinyConfigProvider } from '@opentiny/vue';\nimport { ThemeProvider } from '@opentiny/tiny-robot';\nimport ThemeTool, { tinyDarkTheme, tinyOldTheme } from '@opentiny/vue-theme/theme-tool';\nimport { watch, provide, computed, onMounted, ref } from 'vue';\nimport type { IMaterials } from '@opentiny/genui-sdk-core';\nimport { I18nMessages, useI18n } from '../chat/i18n';\nimport { GENUI_I18N, GENUI_CONFIG, GENUI_MATERIALS } from './injection-tokens';\nimport { useMediaTheme } from './use-media-theme';\n\nexport interface ConfigProviderProps {\n theme?: 'light' | 'dark' | 'lite' | 'auto';\n id?: string;\n locale?: string;\n i18n?: I18nMessages;\n materials?: IMaterials;\n}\n\ninterface IRobotProviderProps {\n colorMode: 'dark' | 'light';\n targetElement?: string;\n}\n\nconst props = withDefaults(defineProps<ConfigProviderProps>(), {\n id: 'tiny-genui-config-provider',\n locale: 'zh_CN',\n});\n\nconst i18n = useI18n();\nprovide(GENUI_I18N, i18n);\n\nconst transformTheme = (themeConfig: any) => {\n const newThemeConfig = structuredClone(themeConfig);\n newThemeConfig.css = newThemeConfig.css.replaceAll(':host', `#${props.id}`).replaceAll(':root', `#${props.id}`);\n return newThemeConfig;\n};\n\nconst themeMap: Record<string, any> = {\n dark: transformTheme(tinyDarkTheme),\n lite: transformTheme(tinyOldTheme),\n light: { css: ' ' },\n};\n\nconst themeTool = new ThemeTool();\n\nconst { theme: mediaTheme } = useMediaTheme();\n\nconst actualTheme = computed(() => {\n if (props.theme === 'auto') {\n return mediaTheme.value;\n }\n return props.theme;\n});\n\nconst genuiConfig = computed(() => {\n return {\n theme: actualTheme.value,\n id: props.id,\n };\n});\n\nprovide(GENUI_CONFIG, genuiConfig);\n\nconst internalMaterials = {};\nwatch(() => props.materials, (newVal) => {\n Object.assign(internalMaterials, newVal);\n}, { immediate: true });\n\nprovide(\n GENUI_MATERIALS,\n internalMaterials,\n);\n\nwatch(\n () => [props.locale, props.i18n] as const,\n () => {\n if (props.locale && props.locale !== i18n.locale.value) {\n i18n.setLocale(props.locale);\n }\n props.i18n && i18n.mergeMessages(props.i18n);\n },\n { immediate: true },\n);\n\nwatch(\n () => actualTheme.value,\n (newVal) => {\n const themeConfig = themeMap[newVal] || themeMap.light;\n themeTool.changeTheme(themeConfig);\n },\n {\n immediate: true,\n },\n);\n\nconst providerRef = ref();\nonMounted(() => {\n providerRef.value?.$el.classList.remove('tiny-config-provider');\n});\n\nconst robotProviderProps = computed(() => {\n const providerProps: IRobotProviderProps = {\n colorMode: actualTheme.value === 'dark' ? 'dark' : 'light',\n };\n if (genuiConfig?.value?.id) {\n providerProps.targetElement = '#' + genuiConfig.value.id;\n }\n return providerProps;\n});\n</script>\n\n<template>\n <TinyConfigProvider ref=\"providerRef\" class=\"tg-config-provider\" :id=\"props.id\">\n <ThemeProvider v-bind=\"robotProviderProps\">\n <slot />\n </ThemeProvider>\n </TinyConfigProvider>\n</template>\n\n<style scoped>\n.tg-config-provider {\n --tr-sender-bg-color: var(--tr-container-bg-default);\n --tr-sender-text-color: var(--tr-text-primary);\n --tr-sender-action-buttons-icon-color: var(--tr-text-secondary);\n --tr-sender-action-buttons-send-bg-color: var(--tr-color-primary);\n height: 100%;\n}\n</style>\n"],"names":["hasMediaQuery","getMediaTheme","theme","ref","mediaQuery","handleThemeChange","startWatchMediaTheme","useMediaTheme","readonly","props","__props","i18n","useI18n","provide","GENUI_I18N","transformTheme","themeConfig","newThemeConfig","themeMap","tinyDarkTheme","tinyOldTheme","themeTool","ThemeTool","mediaTheme","actualTheme","computed","genuiConfig","GENUI_CONFIG","internalMaterials","watch","newVal","GENUI_MATERIALS","providerRef","onMounted","_a","robotProviderProps","providerProps","_createBlock","_unref","TinyConfigProvider","_createVNode","_renderSlot","_ctx"],"mappings":"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"}