const path = require('path') const Package = require('./package') module.exports = class ThemePackage extends Package { getType () { return 'theme' } getStyleSheetPriority () { return 1 } enable () { this.config.unshiftAtKeyPath('core.themes', this.name) } disable () { this.config.removeAtKeyPath('core.themes', this.name) } preload () { this.loadTime = 0 this.configSchemaRegisteredOnLoad = this.registerConfigSchemaFromMetadata() } finishLoading () { this.path = path.join(this.packageManager.resourcePath, this.path) } load () { this.loadTime = 0 this.configSchemaRegisteredOnLoad = this.registerConfigSchemaFromMetadata() return this } activate () { if (this.activationPromise == null) { this.activationPromise = new Promise((resolve, reject) => { this.resolveActivationPromise = resolve this.rejectActivationPromise = reject this.measure('activateTime', () => { try { this.loadStylesheets() this.activateNow() } catch (error) { this.handleError(`Failed to activate the ${this.name} theme`, error) } }) }) } return this.activationPromise } }