### Initialize and Use Configurator Context Source: https://github.com/elfsquad/configurator/blob/main/README.md Demonstrates initializing the ConfiguratorContext with a tenant ID and fetching settings and configuration models. It also shows how to create, open, and update a configuration, including feature requirements, text, language changes, and retrieving images and PDFs. Finally, it shows how to get the 3D layout. ```javascript const TENANT_ID = 'ff0a9727-ced1-4b99-9f8a-2087a1f79ba4'; const configuratorContext = new ConfiguratorContext({ tenantId: TENANT_ID }); configuratorContext.getSettings().then((settings) => { console.log('settings', settings); }); configuratorContext.getConfigurationModels().then((models) => { console.log('models', models); let model = models.features[0]; configuratorContext.newConfiguration(model.name).then((configuration) => { console.log('newConfiguration', configuration); configuratorContext.openConfiguration(configuration.id).then((configuration) => { console.log('openedConfiguration', configuration); const feature = configuration.steps[0].features[0]; configuration.updateRequirement(feature.id, true, 1).then((updateResult) => { console.log('updateResult', updateResult); }); configuration.updateText(feature.id, 'test 123').then((updateResult) => { console.log('updateTextResult', updateResult); }); configuration.changeLanguage(Object.keys(models.languages)[2]).then((updateResult) => { console.log('changeLanguage', updateResult); }); configuration.getStepImage(configuration.steps[0].id).then((image) => { console.log('image', image); }); configuration.getPdf().then((pdf) => { console.log('pdf', pdf); }); configuratorContext.getLayout3d().then((layout) => { console.log('layout', layout); }); }); }); }); ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.