zhongrj
2025-11-25 b89962006164a462404b79a738bee8cbb6d7fe7e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import Utils from './Utils';
import { _, interpolate } from './gettext';
 
class PresetUtils{
 
  // Merge a set of options specified in a preset with
  // those available from a processing node, while populating
  // an extra "defaultValue" field as appropriate
  // @return available options.
  static getAvailableOptions(presetOptions, nodeOptions){
    let result = Utils.clone(nodeOptions);
 
    result.forEach(opt => {
        if (!opt.defaultValue){
            let presetOpt;
            if (Array.isArray(presetOptions)){
              presetOpt = presetOptions.find(to => to.name == opt.name);
            }
 
            if (presetOpt){
              opt.defaultValue = opt.value;
              opt.value = presetOpt.value;
            }else{
              opt.defaultValue = opt.value !== undefined ? opt.value : "";
              delete(opt.value);
            }
        }
 
        if (typeof opt.help === "string"){
            opt.help = interpolate(_(opt.help), {
                choices: Array.isArray(opt.domain) ? opt.domain.join(", ") : opt.domain,
                'default': opt.defaultValue === "" ? "\"\"" : opt.defaultValue
            });
        }
    });
 
    // Sort by name ascending
    result.sort((a, b) => a.name < b.name ? -1 : 1);
 
    return result;
  }
}
 
export default PresetUtils;