| 1234567891011121314151617181920212223242526272829303132333435363738 | class CustomField {  constructor(definition) {    this.definition = definition;  }}export class CustomFieldStringTemplate extends CustomField {  constructor(definition) {    super(definition);    this.format = definition.settings.stringtemplateFormat;    this.separator = definition.settings.stringtemplateSeparator;  }  getFormattedValue(rawValue) {    const ret = (rawValue ?? [])      .filter(value => !!value.trim())      .map(value => {        let _ret = this.format.replace(/[%$]\{.+?[^0-9]\}/g, function(_match) {          let __ret;          if (_match.match(/%\{value\}/i)) {            __ret = value;          } else {            _match = _match.replace(/^\$/, "");            try {              const _json = JSON.parse(_match);              __ret =  value.replace(new RegExp(_json.regex, _json.flags), _json.replace);            } catch (err) {              console.error(err);            }          }          return __ret;        });        return _ret;      })      .join(this.separator ?? '');    return ret;  }}
 |