/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable no-param-reassign */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // eslint-disable-next-line import/no-extraneous-dependencies import { expectType } from 'tsd-lite' import * as glassEasel from '../../src' const componentSpace = glassEasel.getDefaultComponentSpace() /** * Definition createElement */ const definitionInstance = glassEasel.createElement( 'comp', glassEasel.registerElement({ properties: { propStr: String, }, data: { foo: { foo: 'foo' }, }, methods: { func() { return this.data.propStr + this.data.foo.foo }, }, }), ) expectType(definitionInstance.data.propStr) expectType<{ foo: string }>(definitionInstance.data.foo) expectType(definitionInstance.func()) const definitionGeneralInstance = glassEasel.createElement( 'comp', glassEasel .registerElement({ properties: { propStr: String, }, data: { foo: { foo: 'foo' }, }, }) .general(), ) expectType<{ [x: string]: any }>(definitionGeneralInstance.data) /** * Chaining createElement */ const chainingInstance = glassEasel.createElement( 'comp', componentSpace .define() .property('propStr', String) .data(() => ({ foo: { foo: 'foo' }, })) .init(({ data, method }) => { const func = method(() => data.propStr + data.foo.foo) return { func } }) .registerComponent(), ) expectType(chainingInstance.data.propStr) expectType<{ foo: string }>(chainingInstance.data.foo) expectType(chainingInstance.func()) const chainingGeneralInstance = glassEasel.createElement( 'comp', componentSpace .define() .property('propStr', String) .data(() => ({ foo: { foo: 'foo' }, })) .registerComponent() .general(), ) expectType<{ [x: string]: any }>(chainingGeneralInstance.data)