configuration/DefaultPenStyle.js

import JsonCSS from 'json-css'
import merge from 'lodash.merge'
import { editorLogger as logger } from './LoggerConfig'

/**
 * @typedef {Object} PenStyle
 * @property {String} color=#000000 Color (supported formats rgb() rgba() hsl() hsla() #rgb #rgba #rrggbb #rrggbbaa)
 * @property {String} -myscript-pen-width=1 Width of strokes and primitives in mm (no other unit is supported yet)
 * @property {String} -myscript-pen-fill-style=none
 * @property {String} -myscript-pen-fill-color=#FFFFFF00 Color filled inside the area delimited by strokes and primitives
 */

/**
 * Default style
 * @type {PenStyle}
 */
const defaultPenStyle = undefined
const parser = new JsonCSS()

/**
 * Generate style
 * @param {PenStyle} style Custom style to be applied
 * @return {PenStyle} Overridden style
 */
export function overrideDefaultPenStyle (style) {
  const currentStyle = merge({}, defaultPenStyle, style === undefined ? {} : style)
  logger.debug('Override default pen style', currentStyle)
  return currentStyle
}

export function toCSS (penStyle) { // FIXME Ugly hack to parse JSON to CSS inline
  const css = parser.toCSS({ css: penStyle })
  return css.substring(6, css.length - 3)
}

export function toJSON (penStyle) { // FIXME Ugly hack to parse CSS inline to JSON
  return parser.toJSON(`css {${penStyle}}`).css
}

export default defaultPenStyle