import { ExternalApi } from '@seamly/web-ui' import { Config } from 'config.types' import StyleGuideEngine from './style-guide-engine' class StyleGuideExternalApi extends ExternalApi { styleGuideConfig: Record // extend the WindowApi constructor to allow for styleGuideConfig constructor(appConfig, styleGuideConfig) { super(appConfig) this.styleGuideConfig = styleGuideConfig } // override createInstance to create a StyleGuideInstance instead // and allow for passing userStyleGuideConfig createInstance(args) { const { userStyleGuideConfig, ...config } = args return new StyleGuideEngine( { styleGuideConfig: { ...this.styleGuideConfig, ...userStyleGuideConfig, }, ...config, }, this, ) } // @ts-ignore getUserConfig( userConfig: Partial = {}, userStyleGuideConfig: Partial, ) { return super.getUserConfig({ ...userConfig, ...userStyleGuideConfig, }) } } export default StyleGuideExternalApi