MCPcopy Create free account
hub / github.com/composify-js/composify / setSpecDefault

Method setSpecDefault

packages/react/src/renderer/Block/Block.ts:65–103  ·  view source on GitHub ↗
(spec: PropertySpec<any>)

Source from the content-addressed store, hash-verified

63 }
64
65 private setSpecDefault(spec: PropertySpec<any>) {
66 spec.hasDefault = typeof spec.default !== 'undefined';
67
68 switch (spec.type) {
69 case 'array':
70 spec.default ??= [];
71 this.setSpecDefault(spec.item);
72 break;
73 case 'boolean':
74 spec.default ??= false;
75 break;
76 case 'node':
77 spec.default ??= null;
78 break;
79 case 'number':
80 spec.default ??= 0;
81 break;
82 case 'object':
83 for (const field of Object.values(spec.fields)) {
84 this.setSpecDefault(field);
85 }
86 spec.default ??= Object.fromEntries(Object.entries(spec.fields).map(([key, field]) => [key, field.default]));
87 break;
88 case 'custom':
89 break;
90 case 'radio':
91 spec.default ??= 'value' in spec.options[0] ? spec.options[0].value : spec.options[0];
92 break;
93 case 'select':
94 spec.default ??= spec.options[0]?.value;
95 break;
96 case 'text':
97 case 'textarea':
98 spec.default ??= '';
99 break;
100 default:
101 throw new Error('Unknown property spec');
102 }
103 }
104}

Callers 1

populateDefaultsMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected