const graphHelper = require('../../helpers/graph') const _ = require('lodash') const CleanCSS = require('clean-css') /* global WIKI */ module.exports = { Query: { async theming() { return {} } }, Mutation: { async theming() { return {} } }, ThemingQuery: { async themes(obj, args, context, info) { return [{ // TODO key: 'default', title: 'Default', author: 'requarks.io' }] }, async config(obj, args, context, info) { return { theme: WIKI.config.theming.theme, iconset: WIKI.config.theming.iconset, darkMode: WIKI.config.theming.darkMode, minTocLevel: WIKI.config.theming.minTocLevel, tocLevel: WIKI.config.theming.tocLevel, tocCollapseLevel: WIKI.config.theming.tocCollapseLevel, injectCSS: new CleanCSS({ format: 'beautify' }).minify(WIKI.config.theming.injectCSS).styles, injectHead: WIKI.config.theming.injectHead, injectBody: WIKI.config.theming.injectBody } } }, ThemingMutation: { async setConfig(obj, args, context, info) { try { if (!_.isEmpty(args.injectCSS)) { args.injectCSS = new CleanCSS({ inline: false }).minify(args.injectCSS).styles } WIKI.config.theming = { ...WIKI.config.theming, theme: args.theme, iconset: args.iconset, darkMode: args.darkMode, minTocLevel: args.minTocLevel, tocLevel: args.tocLevel, tocCollapseLevel: args.tocCollapseLevel, injectCSS: args.injectCSS || '', injectHead: args.injectHead || '', injectBody: args.injectBody || '' } await WIKI.configSvc.saveToDb(['theming']) return { responseResult: graphHelper.generateSuccess('Theme config updated') } } catch (err) { return graphHelper.generateError(err) } } } }