open BsReform; open Antd.Grid; type shape = (array(float), array(float)); [@bs.module "./editor/main.js"] external getPdfFromUserInput: string => shape = "get_pdf_from_user_input"; module FormConfig = [%lenses type state = {guesstimatorString: string}]; module Form = ReForm.Make(FormConfig); let schema = Form.Validation.Schema([||]); module FieldString = { [@react.component] let make = (~field, ~label) => { E.ste}> validate()} /> } />; }; }; module Styles = { open Css; let rows = style([ selector( ">.ant-col:first-child", [paddingLeft(em(0.25)), paddingRight(em(0.125))], ), selector( ">.ant-col:last-child", [paddingLeft(em(0.125)), paddingRight(em(0.25))], ), selector( ">.ant-col:not(:first-child):not(:last-child)", [paddingLeft(em(0.125)), paddingRight(em(0.125))], ), ]); let parent = style([ selector(".ant-input-number", [width(`percent(100.))]), selector(".anticon", [verticalAlign(`zero)]), ]); let form = style([backgroundColor(hex("eee")), padding(em(1.))]); let dist = style([padding(em(1.))]); let spacer = style([marginTop(em(1.))]); let groupA = style([ selector( ".ant-input-number-input", [backgroundColor(hex("fff7db"))], ), ]); let groupB = style([ selector( ".ant-input-number-input", [backgroundColor(hex("eaf4ff"))], ), ]); }; module DemoDist = { [@react.component] let make = (~guesstimatorString: string) => { let (ys, xs) = getPdfFromUserInput("normal(1, 1) / normal(10, 1)"); let continuous: DistTypes.xyShape = {xs, ys}; E.ste}>
; }; }; [@react.component] let make = () => { let (reloader, setRealoader) = React.useState(() => 1); let reform = Form.use( ~validationStrategy=OnDemand, ~schema, ~onSubmit=({state}) => {None}, ~initialState={guesstimatorString: "normal(1, 1) / normal(10, 1)"}, (), ); let onSubmit = e => { e->ReactEvent.Synthetic.preventDefault; reform.submit(); }; let demoDist = React.useMemo1( () => { }, [|reform.state.values.guesstimatorString|], ); let onRealod = _ => { setRealoader(_ => reloader + 1); };
demoDist
E.ste} extra={ }> {"Update Distribution" |> E.ste}
; };