namespace formgen.input { /** */ export function from_raw( raw : any ) : interface_input { switch (raw.type) { case "checkbox": { return ( new class_input_checkbox( { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } case "number": { return ( new class_input_number( { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } case "text": { return ( new class_input_text( { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } case "color": { return ( new class_input_color( { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } case "list": { return ( new class_input_list( () => from_raw(raw.element), { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } case "group": { return ( new class_input_group( formgen.helpers.list.transform( formgen.helpers.map.to_pairs(raw.members), (pair) => ({ "name": pair.key, "input": from_raw(pair.value), }) ), { "label": formgen.helpers.map.read<(null | string)>(raw, "label", null), } ) ); break; } default: { throw (new Error("unhandled type: " + raw.type)); break; } } } }