import { PrimitiveData } from '@cyklang/core'; import loglevel from 'loglevel'; import { ComponentModel } from './cykLang' import { computed } from 'vue'; const logger = loglevel.getLogger('QImgComponent.vue'); logger.setLevel('debug'); export function useCykAvatar(props: { componentArg: ComponentModel | undefined, stringArg: string | undefined }) { logger.debug('/// AvatarComponent BEGIN'); const model = computed({ get() { let stringValue = ''; if (props.stringArg !== undefined) { stringValue = String(props.stringArg); } else if (props.componentArg !== undefined) { const variable = props.componentArg.model; if ( variable !== undefined && variable.data !== null && variable.data !== undefined ) { const data = variable.data; if (data.type.isPrimitive() == false) { throw ( 'avata model of type ' + data.type.name + ' is not supported' ); } const value = (variable.data as PrimitiveData).value; if ( value === undefined || value === null || typeof value !== 'string' ) { throw 'avatar value type ' + data.type.name + ' is not supported'; } stringValue = value; } } else { throw 'avatar without componentArg nor stringArg'; } let result; if (stringValue.toLowerCase().startsWith('http')) { result = 'img:' + stringValue; } else { result = stringValue; } return result; }, set(nval) { logger.debug('set(' + nval + ')'); throw 'setter unsupported'; }, }); return { model }; }